2015-12-02 32 views
6

Haskell序幕函数可以简化为一组核心函数,这样所有其他函数都可以用核心集合来定义吗?如果是这样,核心功能是什么?Haskell前奏功能可以简化为一组核心功能吗?

+1

不是_all_,但许多关于列表的前奏功能可以用'Foldable.foldr'来编写。例如:'map','filter','concat','和','all','maximum','length' ... – cdk

+9

我觉得你要找的是像GHC.Prim这样的模块或者['GHC.Base'](http://hackage.haskell.org/package/base-4.8.1.0/docs/src/GHC.Base.html),基本上定义了内置数据类型的实现接口。前奏中的其他一切都是从它们中引导出来的,按照Haskell本身来定义。 – Bergi

回答

5

我刚刚通过了关于Hackage的Prelude文档。我无法想象在“未加工”的Haskell中实施的两项操作是errorseq。在error的情况下,我甚至可以想象用正确的指示语义在Haskell中实现一些东西,但是它并没有将打印的操作语义分享给控制台。

也就当然需要是执行引擎之间的IO行动和IO操作的实现本身可以合理地缦哈斯克尔来实现的操作有一些合作,但是,例如在Prelude中提供的动作上有免费的monad。

这样一个微小的核心是可能的并不奇怪,毕竟,即使是枯燥的旧lambda演算,也可以模拟各种有趣的数据类型。