2015-12-02 7 views
6

Haskell Prelude関数をコア関数のセットに減らすことができます。これにより、他のすべての関数をコアセットで定義できますか?もしそうなら、コア機能は何ですか?Haskell prelude関数を一連のコア関数に減らすことはできますか?

+1

リストに関連する多くのプレリュード機能は、「Foldable.foldr」という言葉で書くことができます。例: 'map'、' filter'、 'concat'、' and'、 'all'、' maximum'、 'length' ... – cdk

+9

あなたが探しているのは' GHC.Prim'や基本的に組み込みデータ型の実装インターフェースを定義する['GHC.Base'](http://hackage.haskell.org/package/base-4.8.1.0/docs/src/GHC.Base.html)。プレリュードの他のすべては、ハスケル自体の観点から定義された、それらからブートストラップされています。 – Bergi

答えて

5

私はちょうどHackageに関するPreludeのドキュメントを歩いています。私が "未知の"ハスケルで実装すると想像できない唯一の2つの操作はerrorseqです。 errorの場合、私は、正しい宣言的セマンティクスをもって無造作のHaskellに何かを実装することを想像することさえできますが、コンソールへの印刷の操作上のセマンティクスを共有しませんでした。

IOアクションの実行エンジンとIO操作の実装との間にはいくらかの協力が必要であることはもちろんですが、操作そのものは未完成のHaskellで合理的に実装できます。プレリュードで利用可能なアクションの無料のモナドと。

このような小さなコアが可能であることは驚くべきことではありません。結局のところ、退屈な古いラムダ計算でも、すべての面白いデータ型をエミュレートすることができます。

関連する問題