Haskell前奏曲函数是否可以简化为一组核心函数?

Haskell前奏曲函数是否可以简化为一组核心函数?,haskell,functional-programming,Haskell,Functional Programming,Haskell前奏曲函数是否可以简化为一组核心函数,以便可以根据核心集定义所有其他函数?如果是这样的话,核心功能是什么?我刚刚浏览了有关黑客攻击的前奏文档。我无法想象在“Unadanned”Haskell中实现的仅有两个操作是error和seq。在error的情况下,我甚至可以想象在朴素的Haskell中实现一些具有正确的表示语义的东西,但它不共享打印到控制台的操作语义 当然,IO操作的执行引擎与IO操作的实现之间需要一些合作,但是操作本身可以在未经修饰的Haskell中合理地实现,例如,在前奏

Haskell前奏曲函数是否可以简化为一组核心函数,以便可以根据核心集定义所有其他函数?如果是这样的话,核心功能是什么?

我刚刚浏览了有关黑客攻击的
前奏
文档。我无法想象在“Unadanned”Haskell中实现的仅有两个操作是
error
seq
。在
error
的情况下,我甚至可以想象在朴素的Haskell中实现一些具有正确的表示语义的东西,但它不共享打印到控制台的操作语义

当然,
IO
操作的执行引擎与
IO
操作的实现之间需要一些合作,但是操作本身可以在未经修饰的Haskell中合理地实现,例如,在前奏曲中可用的操作上使用一个自由单子


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

关于列表的前奏函数中,除了许多外,并非所有函数都可以用
Foldable.foldr
编写。例如:
map
filter
concat
all
maximum
length
…我想你要找的是像
GHC.Prim
这样的模块,或者基本上定义了内置数据类型的实现接口。前奏曲中的其他一切都是从它们中引导出来的,是根据哈斯克尔本身定义的。