Haskell(プログラミング言語)

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

Haskell
Haskellのロゴ
パラダイム純粋関数型
によって設計されたレナート・オーガストソン、デイブ・バートン、ブライアン・ブーテル、ウォーレン・バートン、ジョセフ・ファセル、ケビン・ハモンド、ラルフ・ヒンツェ、ポール・ヒューダックジョン・ヒューズ、トーマス・ジョンソン、マーク・ジョーンズ、サイモン・ペイトン・ジョーンズジョン・ラウンチベリーエリック・メイジャー、ジョン・ピーターソン、アラステア・リード、コリンランシマン、フィリップ・ワドラー
初登場1990 ; 32年前[1] (1990
安定リリース
Haskell 2010 [2] / 2010年7月; 11年前 (2010-07
プレビューリリース
Haskell2020が発表されました[3]
規律の入力推測静的強い
OSクロスプラットフォーム
ファイル名拡張子.hs、.lhs
Webサイトwww .haskell .org
主な実装
GHCハグ、NHC、JHC、Yhc、UHC
方言
ヘリウムゴーファー
に影響を受けた
Clean[4] FP[4] Gofer[4] Hope and Hope +[4] Id[4] ISWIM[4] KRC[4] Lisp[4] Miranda[4] ML and標準ML[4] OrwellSASL[4] スキーム[4] SISAL [4]
影響を受け
Agda[5] Bluespec[6] C ++ 11 / Concepts[7] C# / LINQ[8] [9] [10] [11] CAL、[要出典] Cayenne[8] Clean[ 8] Clojure[12] CoffeeScript[13] Curry[8] ElmEpigram[要出典] Escher[14] F#[15] Frege[16] Hack[17] Idris[18] Isabelle[8] Java / Generics[8] LiveScript[19] Mercury[8] ΩmegaPureScript[20] Python[8] [ 21] Raku[22] Rust[23] Scala[8] [24] Swift[25] Timber[26] Visual Basic 9.0 [8] [9]

Haskell/ ˈhæskəl / [ 27] は、型推論遅延評価備えた、静的に型付けされた純粋に関数型汎用プログラミング言語です。[28] [29]教育、研究、産業用アプリケーション向けに設計されたHaskellは、型クラスなどの高度なプログラミング言語機能のパイオニアであり、型セーフな演算子のオーバーロードを可能にします。Haskellの主な実装はGlasgowHaskellコンパイラです (GHC)。論理学者の ハスケル・カリーにちなんで名付けられました[1]

Haskellのセマンティクスは、歴史的に、最初のHaskellワーキンググループの取り組みに焦点を当てるのに役立ったMirandaプログラミング言語のセマンティクスに基づいています。[30]言語の最後の正式な仕様は2010年7月に作成されましたが、GHCの開発は言語拡張を介してHaskellを拡張しました。次の正式な仕様は2020年に計画されました[3] 2021年10月29日、GHC2021はGHCバージョン9.2.1でリリースされました。[31]

Haskellは学界や産業界で使用されています。[32] [33] [34] 2021年5月の時点で、HaskellはGoogleがチュートリアルを検索する際に28番目に人気のあるプログラミング言語であり[35] 、 GitHubソースコードリポジトリ のアクティブユーザーの1%未満を占めていました。[36]

歴史

1985年にResearchSoftware Ltd.がMirandaをリリースした後、怠惰な関数型言語への関心が高まりました。1987年までに、12を超える、厳密ではない、純粋に関数型のプログラミング言語が存在していました。ミランダが最も広く使用されていましたが、それはプロプライエタリソフトウェアでした。オレゴン州ポートランドで開催された機能プログラミング言語とコンピュータアーキテクチャに関する会議(FPCA '87)では、そのような言語のオープンスタンダードを定義するための委員会が結成されるという強いコンセンサスがありました。委員会の目的は、既存の関数型言語を共通のものに統合して、関数型言語設計の将来の研究の基礎として機能させることでした。[37]

Haskell1.0から1.4

タイプセーフな 演算子のオーバーロードを可能にするタイプクラスは、 PhilipWadlerとStephenBlottによってStandardMLに最初に提案されましたが、1987年からバージョン1.0の間にHaskellで最初に実装されました。[38] [39]

Haskellの最初のバージョン(「Haskell1.0」)は1990年に定義されました。[1]委員会の努力の結果、一連の言語定義(1.0、1.1、1.2、1.3、1.4)が生まれました。

GHC7.10以降のHaskellプレリュードの型クラスの階層。FoldableとTraversable(一部の関数の型シグネチャに対応する変更を含む)、およびFunctorとMonadの中間としてのApplicativeを含めることは、Haskell2010標準からの逸脱です。

Haskell 98

1997年後半、このシリーズはHaskell 98で最高潮に達し、言語の安定した、最小限の、ポータブルなバージョンと、それに付随する教育用の標準ライブラリを指定し、将来の拡張のベースとして使用することを目的としていました。委員会は、実験的な機能を追加および組み込むことにより、Haskell98の拡張機能およびバリアントを作成することを明確に歓迎しました。[37]

1999年2月、Haskell98言語標準は元々TheHaskell 98Reportとして公開されました。[37] 2003年1月、改訂版がHaskell 98 Language and Libraries:The RevisedReportとして公開されました。[29]言語は急速に進化し続けており、Glasgow Haskellコンパイラ(GHC)の実装は現在の事実上の標準を表しています。[40]

Haskell 2010

2006年の初めに、Haskell98標準の後継を定義するプロセスが開始されました。これは非公式にHaskellPrimeと名付けられました。[41]これは、言語定義を改訂するための継続的な段階的プロセスであり、年に1回までの新しい改訂を作成することを目的としていました。Haskell 2010という名前の最初のリビジョンは、2009年11月に発表され[2]、2010年7月に公開されました。

Haskell 2010は、言語の段階的な更新であり、ほとんどの場合、コンパイラ固有のフラグを介して以前に有効にされた、よく使用され、議論の余地のないいくつかの機能が組み込まれています。

  • 階層モジュール名。モジュール名は、そのような識別子を1つだけではなく、ドットで区切られた大文字の識別子のシーケンスで構成できます。これにより、モジュールに階層的な名前を付けることができます(たとえば、のData.List代わりにList)。ただし、技術的には、モジュールは単一のモノリシック名前空間にあります。この拡張機能は、Haskell 98の補遺で指定されており、実際には広く使用されていました。
  • 外部関数インターフェース(FFI)を使用すると、他のプログラミング言語にバインドできますレポートではCへのバインディングのみが指定されていますが、設計では他の言語のバインディングが許可されています。これをサポートするために、データ型宣言にコンストラクターを含めることは許可されておらず、Haskellでは構築できなかった外部データに対して堅牢なナンス型を有効にしています。この拡張機能は、Haskell 98レポートの補遺でも以前に指定されており、広く使用されています。
  • いわゆるn + kパターン(形式の定義fact (n+1) = (n+1) * fact n)は許可されなくなりました。このシンタックスシュガーには誤解を招くセマンティクスがあり、コードは(+)演算子を使用しているように見えましたが、実際にはとを使用してコードにデシュガーされてい(-)ます(>=)
  • より多くのプログラムが型チェックを行えるように、型推論の規則が緩和されました。
  • いくつかの構文の問題(正式な文法の変更)が修正されました。パターンガードが追加され、ガード内でのパターンマッチングが可能になりました。オペレーターの固定性の解決は、実際の慣行を反映したより単純な方法で指定されました。言語の演算子とコメントの字句構文の相互作用のエッジケースに対処し、do-notationとif-then-elseの相互作用を調整して、予期しない構文エラーを排除しました。
  • LANGUAGE プラグマが指定されました2010年までに、この言語の数十の拡張機能が広く使用され、GHC(他のコンパイラーの中でも)は、LANGUAGE識別子のリストを使用して個々の拡張機能を指定するプラグマを提供しました。Haskell 2010コンパイラは拡張機能をサポートする必要がありHaskell2010、Haskell2010で追加された拡張機能に対応する他のいくつかのコンパイラをサポートすることをお勧めします。

機能

Haskellは、遅延評価ラムダ式パターンマッチングリスト内包表記、型クラス型多型を特徴としています。これは純粋に関数型言語です。つまり、関数には通常、副作用はありません。関数のタイプに直交する、副作用を表すための別個の構成が存在します。純粋関数は、他の言語 の不純な関数をモデル化して、後で実行される副作用を返す可能性があります。

Haskellには、Hindley-Milner型推論に基づく強力な静的システムがあります。この分野での主な革新は型クラスであり、元々は言語にオーバーロードを追加するための原則的な方法として考えられていましたが[42]、さらに多くの用途が見つかりました。[43]

副作用を表す構成は、モナドの例です。エラー処理、非決定性解析ソフトウェアトランザクショナルメモリなどのさまざまな計算をモデル化できる一般的なフレームワークです。それらは通常のデータ型として定義されていますが、Haskellはそれらを使用するための構文糖衣を提供しています。

Haskellにはオープンで公開された仕様があり[29]複数の実装が存在します。その主な実装であるGlasgowHaskellコンパイラ(GHC)は、ほとんどのプラットフォームで実行されるインタプリタネイティブコード コンパイラの両方です。GHCは、一般化された代数的データ型や型族などの最近の革新を取り入れた豊富な型システムで有名です。Computer Language Benchmarks Gameは、並行性並列性の高性能実装も強調しています。[44]

この言語の周りには活発で成長しているコミュニティが存在し、5,400を超えるサードパーティのオープンソースライブラリとツールがオンラインパッケージリポジトリHackageで利用できます。[45]

コード例

Hello、World!」Haskellの プログラム(最後の行だけが厳密に必要です):

module  Main  main  ここで、          -インタプリタでは不要、モジュールファイルのデフォルトです

main  ::  IO  ()                     -コンパイラはこの型定義を推測できます
main  =  putStrLn  "Hello、World!"

Haskellの階乗関数。いくつかの異なる方法で定義されています。

-[[型シグネチャ|型注釈]](オプション、実装ごとに同じ)
階乗  :(積分 a  =>  a- > a  

-再帰の使用(「ifthenelse」式を使用
階乗 n  =  if  n  <  2 
              then  1 
              else  n  * 階乗 n  --1  

-再帰の使用(パターンマッチングあり)
階乗 0  =  1
階乗 n  =  n  * 階乗 n  -  1 

-再帰の使用(ガード付き)
階乗 n 
   |  n  <  2      =  1 
   |  それ以外 の場合=  n  * 階乗 n  --1  

-リストと「積」関数を使用する
階乗 n  =  product  [ 1 .. n ]

--foldの使用(「product」を実装)
階乗 n  =  foldl  *  1  [ 1 .. n ]

-ポイントフリースタイルの
階乗 =  foldr  *  1   enumFromTo  1

整数型は任意精度であるため、このコードは精度factorial 100000を損なうことなく(456,574桁の数値)などの値を計算します。

リストのクイックソートに似たアルゴリズムの実装。最初の要素がピボットとして使用されます。

-タイプアノテーション(オプション、実装ごとに同じ)
quickSort  ::  Ord  a  =>  [ a ]  ->  [ a ]

-リスト内包表記の使用
quickSort  []      =  []                                -空のリストはすでにソートされてい
ますquickSort  x xs  =  quickSort  [ a  |  a  <  -xs  a  <  x ]    -リストの左側の部分を並べ替えます
                   ++  [ x ]  ++                         -2つの並べ替えられた部分の間にピボットを挿入します
                   quickSort  [ a  |  a  <  -xs  a  > =  x ]   -リストの右側を並べ替えます

-フィルターの使用
quickSort  []      =  [] 
quickSort  x xs  =  quickSort  filter  < x  xs 
                   ++  [ x ]  ++ 
                   quickSort  filter  > = x  xs 

実装

リストされているすべての実装は、オープンソースライセンスの下で配布されています。[46]

Haskell 98標準に完全にまたはほぼ準拠する実装には、次のものがあります。

  • Glasgow Haskellコンパイラ(GHC)は、多くの異なるプロセッサアーキテクチャ上のネイティブコードと、 2つの中間言語の1つであるC-- 、または最近のバージョンではLLVM(以前の低レベル仮想マシン)ビットコードを介してANSICにコンパイルされます。[47] [48] GHCは事実上の標準のHaskell方言になりました。[49] GHCでのみ機能するライブラリ(OpenGLへのバインディングなど)があります。GHCはHaskellプラットフォームでも配布されています。
  • John Meachamによって書かれたHaskellコンパイラであるJhcは、生成されたプログラムの速度と効率を強調し、新しいプログラム変換を模索しています。
    • AjhcはJhcのフォークです。
  • Utrecht Haskellコンパイラ(UHC)は、ユトレヒト大学のHaskell実装です。[50]ほぼすべてのHaskell98機能に加えて、多くの実験的な拡張機能をサポートしています。これは属性文法を使用して実装され、現在、生成された型システムと言語拡張の研究に主に使用されています。

積極的に維持されなくなった実装には、次のものがあります。

  • Haskell User's Gofer System(Hugs)はバイトコードインタープリターです。かつてはGHCコンパイラと並んで最も広く使用されていた実装の1つでしたが[51]、現在はほとんどがGHCiに置き換えられています。グラフィックライブラリも付属しています。
  • HBCは、Haskell1.4をサポートする初期の実装です。これは、 Lazy MLに基づいて、LennartAugustssonによって実装されましたそれはしばらくの間活発に開発されていません。
  • nhc98は、メモリ使用量の最小化に重点を置いたバイトコードコンパイラです。
    • York Haskellコンパイラ(Yhc)はnhc98のフォークであり、よりシンプルで、よりポータブルで効率的であり、HaskellトレーサーであるHatのサポートを統合することを目的としていました。また、JavaScriptバックエンドがあり、ユーザーはWebブラウザーでHaskellプログラムを実行できます。

Haskell 98に完全に準拠しておらず、Haskell言語のバリアントを使用している実装には、次のものがあります。

  • EtaとFregeは、Java仮想マシンをターゲットとするHaskellの方言です。
  • GoferはHaskellの教育方言であり、 MarkJonesによって開発されたコンストラクタークラスと呼ばれる機能を備えていました。Hugs(Haskell User's Gofer System)に取って代わられました。
  • Haskellの新しい方言であるヘリウム。焦点は、より明確なエラーメッセージを介して学習を容易にすることにあります。現在、型クラスの完全なサポートが不足しているため、多くのHaskellプログラムと互換性がありません。

注目すべきアプリケーション

業界

Web

Haskell用に作成された注目すべきWebフレームワークは次のとおりです。[63]

批評

Jan-Willem Maessen(2002年)とSimon Peyton Jones(2003年)は、遅延評価に関連する問題について議論し、その理論的動機も認めました。[64] [65]パフォーマンスの向上などの純粋に実用的な考慮事項に加えて、[66]パフォーマンスのオーバーヘッドを追加することに加えて、遅延評価により、プログラマーがコードのパフォーマンスについて推論することがより困難になることに注意してください(特にそのスペース使用)。

2003年のBastiaanHeeren、Daan Leijen、Arjan van IJzendoornも、Haskellの学習者にとっていくつかの障害を観察しました。 、Haskellの一般性はしばしば不可解なエラーメッセージにつながるからです。」[67]これらに対処するために、ユトレヒト大学の研究者は、ヘリウムと呼ばれる高度なインタープリターを開発しました。これは、一部のHaskell機能の一般性を制限し、特に型クラスのサポートを削除することで、エラーメッセージの使いやすさを向上させました。

Ben Lippmeierは、Disciple [68]を、タイプアンドエフェクトシステムを備えたHaskellのデフォルトの厳密な(明示的な注釈による怠惰な)方言として設計し、遅延評価について推論したり、可変などの従来のデータ構造を使用したりする際のHaskellの困難に対処しましたアレイ。[69]彼は、「破壊的な更新は、プログラマーに2つの重要で強力なツールを提供します...オブジェクトのコレクションを管理するための効率的な配列のようなデータ構造のセットと...プログラマーの負担を最小限に抑えながら、プログラムのすべての部分に新しい価値をもたらします。」

StandardMLの作者の1人であるRobertHarperは、Haskellを使用して入門プログラミングを教えない理由を説明しました。これらの中には、非厳密な評価によるリソースの使用についての推論の難しさ、遅延評価がデータ型と帰納的推論の定義を複雑にし[70]、MLのモジュールシステムと比較したHaskell(古い)クラスシステムの「劣等性」があります。[71]

HaskellのビルドツールであるCabalは、歴史的に、同じライブラリの複数のバージョンの処理が不十分であると批判されてきました。これは「Cabalhell」として知られる問題です。StackageサーバーとStackビルドツールは、これらの批判に応えて作成されました。[72] Cabal自体は、バージョン3.0でデフォルトになった Nix [73]大きく影響を受けた、はるかに洗練されたビルドシステムを備えています。

関連言語

Cleanは、Haskellに近い、少し古い親戚です。Haskellとの最大の違いは、I / Oと副作用にモナドの代わりに 一意性タイプを使用することです。

Haskellに触発された一連の言語が開発されましたが、タイプシステムは異なります。

その他の関連言語は次のとおりです。

  • カレー、Haskellに基づく関数型/論理プログラミング言語。

注目すべきHaskellの亜種は次のとおりです。

会議やワークショップ

Haskellコミュニティは、研究開発活動のために定期的に会合しています。主なイベントは次のとおりです。

2006年以降、プログラミング言語ツールとライブラリの改善を目的とした一連の組織化されたハッカソン、Hacシリーズが発生しました[74]

参考文献

  1. ^ a b c Hudak etal。2007
  2. ^ a b マーロウ、サイモン(2009年11月24日)。「Haskell2010の発表」Haskell(メーリングリスト)2011年3月12日取得
  3. ^ a b リーデル、ハーバート(2016年4月28日)。「ANN:Haskell Prime2020委員会が結成されました」Haskell-prime(メーリングリスト)2017年5月6日取得
  4. ^ a b c d e f g h i j k l m Peyton Jones 2003、p。xi
  5. ^ Norell、Ulf(2008)。「Agdaでの依存型プログラミング」(PDF)ヨーテボリ:チャルマース大学2012年2月9日取得
  6. ^ Hudak etal。2007年、12〜38ページ、43ページ。
  7. ^ Stroustrup、Bjarne ; サットン、アンドリュー(2011)。「C ++用のコンセプトライブラリの設計」(PDF)2012年2月10日にオリジナル(PDF)からアーカイブされました。 {{cite journal}}引用ジャーナルには|journal=ヘルプ)が必要です
  8. ^ a b c d e f g h i j Hudak etal。2007年、12〜45〜46ページ。
  9. ^ a b Meijer、Erik(2006)。「使用されたプログラミング言語のセールスマンの告白:大衆をハスケルに夢中にさせる」。Oopsla2007CiteSeerX10.1.1.72.868_ 
  10. ^ Meijer、Erik(2009年10月1日)。「C9講義:Dr。ErikMeijer –関数型プログラミングの基礎、第1章13」チャネル9Microsoft 2012年2月9日取得
  11. ^ Drobi、Sadek(2009年3月4日)。「LINQのErikMeijer」InfoQQCon SF 2008:C4MediaInc 2012年2月9日取得{{cite news}}:CS1 maint:場所(リンク
  12. ^ ヒッキー、リッチ。「Clojure本棚」リストマニア!2017年10月3日にオリジナルからアーカイブされました2017年10月3日取得
  13. ^ ヘラー、マーティン(2011年10月18日)。「ダートで鼻を上げて、CoffeeScriptの匂いをかいでください」InfoWorld2020年7月15日取得
  14. ^ 「エッシャーの宣言型プログラミング」(PDF)2015年10月7日取得
  15. ^ サイム、ドン; Granicz、Adam; Cisternino、Antonio(2007)。エキスパートF#押してください。p。2. F#は、特にシーケンス式ワークフローと呼ばれる2つの高度な言語機能に関して、Haskellからも引用しています
  16. ^ ウェクソン、インゴ。「フレーゲプログラミング言語」(PDF)2014年2月26日取得
  17. ^ 「Facebookは「ハック」、未来のプログラミング言語を紹介します」有線2014年3月20日。
  18. ^ 「Idris、依存型言語」2014年10月26日取得
  19. ^ 「LiveScriptのインスピレーション」2014年2月4日取得
  20. ^ フリーマン、フィル(2016)。「例によるPureScript」Leanpub 2017年4月23日取得
  21. ^ Kuchling、AM 「関数型プログラミングHOWTO」Pythonv2.7.2のドキュメントPython SoftwareFoundation 2012年2月9日取得
  22. ^ 「用語集と専門用語」Perl Foundation Perl 6WikiPerlFoundation2012年1月21日にオリジナルからアーカイブされました2012年2月9日取得
  23. ^ 「Rustリファレンス:付録:影響」2016年2月3日取得
  24. ^ Fogus、Michael(2010年8月6日)。"MartinOdersky take(5)toList"より多くのパラメディックを送信します。2012年2月9日取得
  25. ^ ラトナー、クリス(2014年6月3日)。「クリス・ラトナーのホームページ」クリス・ラトナー2014年6月3日取得Swift言語は、言語の専門家、ドキュメンテーションの達人、コンパイラ最適化の忍者、そしてアイデアの洗練とバトルテストに役立つフィードバックを提供した非常に重要な社内ドッグフーディンググループのチームによるたゆまぬ努力の産物です。もちろん、Objective-C、Rust、Haskell、Ruby、Python、C#、CLUなど、他の多くの言語からアイデアを引き出して、この分野で苦労して獲得した経験からも大きな恩恵を受けました。
  26. ^ 「材木/歴史」2015年10月7日取得
  27. ^ Chevalier、Tim(2008年1月28日)。「誰でも「haskell」の発音を教えてもらえますか?」Haskell-cafe(メーリングリスト)2011年3月12日取得
  28. ^ 元々 Hindley-Milner型推論を使用した型推論
  29. ^ a b c Peyton Jones2003
  30. ^ Edward Kmett、 Edward Kmett –型クラスと世界
  31. ^ GHC 2020チーム(2021年10月29日) GHC9.2.1がリリースされました
  32. ^ Mossberg、Erik(2020年6月8日)、erkmos / haskell-companies 、 2020年6月22日取得
  33. ^ オサリバン、ブライアン; ゲルゼン、ジョン; スチュワート、ドナルドブルース(2008年11月15日)。実世界のハスケル:あなたが信じることができるコード「O'ReillyMedia、Inc。」。pp。xxviii–xxxi。ISBN 978-0-596-55430-9
  34. ^ 「HaskellinProduction:Riskbook」Serokellソフトウェア開発会社2021年9月7日取得
  35. ^ 「プログラミング言語インデックスのPYPL人気」pypl.github.io2021年5月。2021年5月7日のオリジナルからアーカイブ2021年5月16日取得
  36. ^ フレデリクソン、ベン。「GitHubユーザーによるプログラミング言語のランキング」www.benfrederickson.com 2019年9月6日取得
  37. ^ a b c Peyton Jones 2003、序文。
  38. ^ 「型クラス、Haskellプログラミング言語の設計中に最初に提案された...」— John Garrett Morris(2013)、「型クラスとインスタンスチェーン:リレーショナルアプローチ」
  39. ^ ワドラー、フィリップ(1988年10月)。「アドホック多相性をアドホックより少なくする方法」
  40. ^ 「HaskellWiki:実装」2012年12月18日取得
  41. ^ 「Haskellへようこそ」" 。HaskellのWiki
  42. ^ Wadler、P。; Blott、S。(1989)。「アドホック多相性をアドホックより少なくする方法」。プログラミング言語の原理に関する第16回ACMSIGPLAN-SIGACTシンポジウムの議事録ACM:60〜76。土井10.1145 /75277.75283ISBN 978-0-89791-294-5S2CID15327197 _
  43. ^ Hallgren、T。(2001年1月)。「関数従属性、またはHaskellの静的計算の値としての型を楽しむ」CS / CE合同冬季会議の議事録スウェーデン、バールベリ。
  44. ^ コンピュータ言語ベンチマークゲーム
  45. ^ 「HackageDB統計」Hackage.haskell.org。2013年5月3日にオリジナルからアーカイブされました2013年6月26日取得
  46. ^ HaskellWiki 「実装」
  47. ^ 「LLVMバックエンド」GHCTrac
  48. ^ Terei、David A。; Chakravarty、Manuel MT(2010)。「GHC用のLLVMバックエンド」ACM SIGPLAN Haskell Symposium2010の議事録ACMプレス。
  49. ^ C. Ryder and S. Thompson(2005)。「HaReをGHCAPIに移植する」
  50. ^ ユトレヒトHaskellコンパイラ
  51. ^ Hudak etal。2007年、12〜22ページ。
  52. ^ Agda 2、Agda Githubコミュニティ、2021年10月15日、2021年10月16日取得
  53. ^ 「ハスケル陰謀団」2015年4月8日取得
  54. ^ 「Linspire / FreespireコアOSチームとHaskell」DebianHaskellメーリングリスト2006年5月。
  55. ^ 「潮汐サイクルを伴うライブコード|潮汐サイクル」doc.tidalcycles.org 2022年1月19日取得
  56. ^ xmonad.org
  57. ^ 「Haskellとのスパムとの戦い」Facebookコード2015年6月26日2019年8月11日取得
  58. ^ 「オープンソーシングHaxl、Haskellのライブラリ」Facebookコード2014年6月10日2019年8月11日取得
  59. ^ https://github.com/input-output-hk/cardano-node
  60. ^ 多くの言語にわたるソースコードの解析、分析、比較:github / semantic、GitHub、2019年6月7日、2019年6月7日取得
  61. ^ a b c d 機能の正当性の正式な証明は2009年に完了しました 。Klein、Gerwin; エルフィンストーン、ケビン; ハイザー、ゲルノート; アンドロニック、6月; コック、デビッド; デリン、フィリップ; Elkaduwe、Dhammika; エンゲルハルト、カイ; コランスキー、ラファル; Norrish、Michael; シューエル、トーマス; Tuch、Harvey; ウィンウッド、サイモン(2009年10月)。「seL4:OSカーネルのフォーマル検証」(PDF)オペレーティングシステムの原則に関する第22回ACMシンポジウムビッグスカイ、モンタナ州、米国。
  62. ^ YulaGavrilovaとGintsDreimanis。Haskellで書かれたトップ6のソフトウェアプロジェクト。Serokellブログ。2019年10月17日。( https://serokell.io/blog/top-software-written-in-haskell)。2021年11月4日にアクセス
  63. ^ 「Web /フレームワーク–HaskellWiki」wiki.haskell.org 2019年8月11日取得
  64. ^ Jan-Willem Maessen Eager Haskell:リソースに制限のある実行により、効率的な反復が実現しますHaskellに関する2002年のAssociationfor Computing Machinery(ACM)SIGPLANワークショップの議事録。
  65. ^ サイモンペイトンジョーンズ。ヘアシャツの着用:Haskellの回顧展POPL2003での招待講演
  66. ^ 「遅延評価は、コンピュータ言語ベンチマークゲームなどの優れたパフォーマンスにつながる可能性があります」
  67. ^ ヒーレン、バスティアーン; Leijen、Daan; van IJzendoorn、Arjan(2003)。「ヘリウム、Haskellを学ぶために」(PDF)Haskellに関する2003ACM SIGPLANワークショップの議事録:62–71。土井10.1145 /871895.871902ISBN  1581137583S2CID11986908 _
  68. ^ 「DDC–HaskellWiki」Haskell.org。2010年12月3日2013年6月26日取得
  69. ^ Ben Lippmeier、不純な世界のための型推論と最適化オーストラリア国立大学(2010)博士論文、第1章
  70. ^ ロバートハーパー。「怠惰のポイント」 クローズドアクセス
  71. ^ ロバートハーパー。「モジュールが最も重要です」 クローズドアクセス
  72. ^ 「カバール地獄を解決する」www.yesodweb.com 2019年8月11日取得
  73. ^ 「カバールの新しいビルドの発表:Nixスタイルのローカルビルド」2019年10月1日取得
  74. ^ 「ハッカソン–HaskellWiki」

さらに読む

レポート
教科書
チュートリアル
歴史

外部リンク