类型级程序的分层模块名称

时间:2013-03-08 01:30:06

标签: haskell module type-families data-kinds

所以我想说我在Haskell中写了一些type-level program

type family NAryFn (n::Nat) (dom::*) (cod::*) :: *
type instance NAryFn Ze dom cod = cod
type instance NAryFn (Su n) dom cod = dom -> NAryFn n dom cod

我认为这很有用,我想在我的项目中使用它。所以我把它放在一个模块中。

模块的分层名称是什么? (c.f。Haskell Hierarchical Modules

许多数据结构存在于DataData.TextData.List等)中,各种结构效果的方式都在Control中,例如Control.MonadControl.Applicative

类型级程序应该在哪里生活? TypeTypeFamily?是否已达成共识?

1 个答案:

答案 0 :(得分:1)

我查看了hackage,大多数提供类型级别功能的软件包都位于Data层次结构中,位于Data.TypeData.TypeLevel之下,或者有时Data.Number.Etc.TypeLevel。但也有一些例外。

type-level-natural-number包位于TypeLevel:http://hackage.haskell.org/package/type-level-natural-number

tfp包位于“类型:http://hackage.haskell.org/package/tfp

”下

许多nicolas frisby的软件包位于Type:http://hackage.haskell.org/package/type-booleanshttp://hackage.haskell.org/package/type-cereal下。

显然,目前还没有达成共识。我个人认为Types是适合所有这些事情的地方,但与Haskell社区一样,一切都以Data结束。

几乎所有东西都是头等舱的语言的风险,我想: - )

您可以在hackage的“Type System”类别中看到部分(但不是全部)类型级别的包:http://hackage.haskell.org/packages/archive/pkg-list.html#cat:type%20system