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

Lam*_*eek 6 haskell module type-families data-kinds

所以我想说我在Haskell中编写了一些类型级程序:

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
Run Code Online (Sandbox Code Playgroud)

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

什么是模块的良好分层名称?(参见Haskell Hierarchical Modules)

很多数据结构的住在Data(Data.Text,Data.List,等),结构化影响各种方式在ControlControl.MonadControl.Applicative.

类型级程序应该在哪里生活? TypeTypeFamily?已经达成共识了吗?

scl*_*clv 1

我检查了 hackage,大多数提供类型级功能的包都存在于层次Data结构中,在或类似的目录下,有时甚至在. 但也有一些例外。Data.TypeData.TypeLevelData.Number.Etc.TypeLevel

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

tfp 包位于 Types 下: 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 的“类型系统”类别中看到一些(但不是全部)类型级包:http://hackage.haskell.org/packages/archive/pkg-list.html#cat :type%20system