6

假设我在 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

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

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

很多数据结构都存在于Data( Data.Text,Data.List等) 中,各种结构化效果的方式都存在于Control诸如Control.MonadorControl.Applicative中。

类型级程序应该放在哪里? Type? TypeFamily? 达成共识了吗?

4

1 回答 1

1

我检查了hackage ,大多数提供类型级别功能的包都存在于Data层次结构中,Data.Type在. 不过也有一些例外。Data.TypeLevelData.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 的“类型系统”类别中看到一些(但不是全部)类型级包:http://hackage.haskell.org/packages/archive/pkg-list.html#cat:type% 20system

于 2013-03-08T17:13:48.390 回答