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

标签 haskell module type-families data-kinds

假设我写了一些 type-level program在 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 Hierarchical Modules )

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

类型级别的程序应该放在哪里? 类型类型家族?达成共识了吗?

最佳答案

我检查了 hackage,大多数提供类型级别功能的包都位于 Data 层次结构中,位于 Data.TypeData.TypeLevel 下等等,或者有时是Data.Number.Etc.TypeLevel。但也有一些异常(exception)。

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

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

许多 nicolas frisby 的包裹都位于类型:http://hackage.haskell.org/package/type-booleans 下。和 http://hackage.haskell.org/package/type-cereal例如。

显然,目前还没有达成共识。就我个人而言,我认为 Types 是放置所有这些东西的合适位置,但正如 Haskell 社区通常那样,所有内容最终都以 Data 结束。

我认为几乎一切都是一流的语言的危险:-)

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

关于haskell - 类型级程序的分层模块名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15285197/

相关文章:

haskell - 折叠既是恒定空间又是短路

swift - Firebase Cocoapods - 错误信息;无法构建 Objective-C 模块 'Firebase

linux - 我应该把我编译的.ko文件放在哪个文件夹里?

haskell - Haskell 中的多态类型族实例

haskell - 如何将此实例方法定义移动到类默认值?

regex - 用 Haskell 正则表达式库替换/替换

sorting - 我如何为有序/排序的数据结构寻求帮助?

haskell - 当传递给返回 Just x 的 lambda 时,Haskell 如何知道将 Nothing 保留为空?

VBA:新集合 -> 模块不是有效类型

haskell - 在haskell中自动转换类型