関数 かんすう 型 がた プログラミング (かんすうがたプログラミング、英 えい : functional programming )とは、数学 すうがく 的 てき な意味 いみ での関数 かんすう を主 おも に使 つか うプログラミングのスタイルである[1] 。 functional programming は、関数 かんすう プログラミング (かんすうプログラミング)などと訳 やく されることもある[2] 。
関数 かんすう 型 がた プログラミング言語 げんご (英 えい : functional programming language )とは、関数 かんすう 型 がた プログラミングを推奨 すいしょう しているプログラミング言語 げんご である[1] 。略 りゃく して関数 かんすう 型 がた 言語 げんご (英 えい : functional language )ともいう[1] 。
関数 かんすう 型 がた プログラミングは、関数 かんすう を主軸 しゅじく にしたプログラミングを行 おこな うスタイルである[1] 。ここでの関数 かんすう は、数学 すうがく 的 てき なものを指 さ し、引数 ひきすう の値 ね が定 さだ まれば結果 けっか も定 さだ まるという参照 さんしょう 透過 とうか 性 せい を持 も つものである[1] 。
参照 さんしょう 透過 とうか 性 せい とは、数学 すうがく 的 てき な関数 かんすう と同 おな じように同 おな じ値 ち を返 かえ す式 しき を与 あた えたら必 かなら ず同 おな じ値 ち を返 かえ すような性質 せいしつ である[1] 。次 つぎ の square
関数 かんすう は、 2
となるような式 しき を与 あた えれば必 かなら ず 4
を返 かえ し、 3
となるような式 しき を与 あた えれば必 かなら ず 9
を返 かえ し、いかなる状況 じょうきょう でも別 べつ の値 ね を返 かえ すということはなく、これが参照 さんしょう 透過 とうか 性 せい を持 も つ関数 かんすう の一 いち 例 れい となる[1] 。
def square ( n ):
return n ** 2
次 つぎ の countup
関数 かんすう は、同 おな じ 1
を渡 わた しても、それまでに countup
関数 かんすう がどのような引数 ひきすう で呼 よ ばれていたかによって、返 がえ り値 ち が 1
, 2
, 3
, ... と変化 へんか するため、引数 ひきすう の値 ね だけで結果 けっか の値 ね が定 さだ まらないような参照 さんしょう 透過 とうか 性 せい のない関数 かんすう であり、数学 すうがく 的 てき な関数 かんすう とはいえない[1] 。
counter = 0
def countup ( n ):
global counter
counter += n
return counter
関数 かんすう 型 がた プログラミングは、参照 さんしょう 透過 とうか 性 せい を持 も つような数学 すうがく 的 てき な関数 かんすう を使 つか って組 く み立 た てた式 しき が主役 しゅやく となる[1] 。別 べつ の箇所 かしょ に定義 ていぎ されている処理 しょり を利用 りよう することを、手続 てつづ き型 がた プログラミング言語 げんご では「関数 かんすう を実行 じっこう する」や「関数 かんすう を呼 よ び出 だ す」などと表現 ひょうげん するが、関数 かんすう 型 がた プログラミング言語 げんご では「式 しき を評価 ひょうか する」という表現 ひょうげん も良 よ く使 つか われる[3] 。
参照 さんしょう 透過 とうか 性 せい とは、同 おな じ値 ち を与 あた えたら返 がえ り値 ち も必 かなら ず同 おな じになるような性質 せいしつ である[1] 。参照 さんしょう 透過 とうか 性 せい を持 も つことは、その関数 かんすう が状態 じょうたい を持 も たない ことを保証 ほしょう する[4] 。状態 じょうたい を持 も たない数学 すうがく 的 てき な関数 かんすう は、並列 へいれつ 処理 しょり を実現 じつげん するのに適 てき している[4] 。関数 かんすう 型 がた プログラミング言語 げんご の内 うち で、全 すべ ての関数 かんすう が参照 さんしょう 透過 とうか 性 せい を持 も つようなものを純粋 じゅんすい 関数 かんすう 型 がた プログラミング言語 げんご という[4] 。
関数 かんすう 型 がた プログラミングでは、数学 すうがく 的 てき な関数 かんすう を組 く み合 あ わせて計算 けいさん を表現 ひょうげん するが、それだけではファイルの読 よ み書 か きのような外界 がいかい とのやり取 と りを要 よう する処理 しょり を直接的 ちょくせつてき に表現 ひょうげん できない[5] 。このような外界 がいかい とのやり取 と りを I/O (入出力 にゅうしゅつりょく ) と呼 よ ぶ[5] 。数学 すうがく 的 てき な計算 けいさん をするだけ、つまり 1 + 1
のようなプログラム内 ない で完結 かんけつ する処理 しょり ならば、入出力 にゅうしゅつりょく を記述 きじゅつ できなくても問題 もんだい ないが、現実 げんじつ 的 てき なプログラムにおいてはそうでない[5] 。
非 ひ 純粋 じゅんすい な関数 かんすう 型 がた プログラミング言語 げんご においては、式 しき を評価 ひょうか すると同時 どうじ に I/O が発生 はっせい する関数 かんすう を用意 ようい することで入出力 にゅうしゅつりょく を実現 じつげん する[5] 。たとえば、 F# 言語 げんご では、printfn "Hi."
が評価 ひょうか されると、 ()
という値 ね が戻 もど ってくると同時 どうじ に、画面 がめん に Hi.
と表示 ひょうじ される I/O が発生 はっせい する[5] 。
Haskell では、評価 ひょうか と同時 どうじ に I/O が行 おこな われる関数 かんすう は存在 そんざい しない[5] 。たとえば、 putStrLn "Hi."
という式 しき が評価 ひょうか されると IO ()
型 かた を持 も つ値 ね が返 かえ されるが画面 がめん には何 なに も表示 ひょうじ されず、この値 ね が Haskell の処理 しょり 系 けい によって解釈 かいしゃく されて初 はじ めて画面 がめん に Hi.
と表示 ひょうじ される[5] 。 I/O アクション とは、ファイルの読 よ み書 か きやディスプレイへの表示 ひょうじ などのような I/O を表現 ひょうげん する式 しき のことである[5] [6] 。 IO a
という型 かた は、コンピュータへの指示 しじ を表 あらわ す I/O アクションを表現 ひょうげん している[5] [7] 。ここでの IO
はモナド と呼 よ ばれるものの一 ひと つである[8] 。
Clean では、一意 いちい 型 がた を用 もち いて入出力 にゅうしゅつりょく を表 あらわ す。
この
節 ふし の
加筆 かひつ が
望 のぞ まれています。
主 おも に: モナド ・永続 えいぞく データ構造 こうぞう (2021年 ねん 3月 がつ )
最初 さいしょ に解 かい の集合 しゅうごう となる候補 こうほ を生成 せいせい し、それらの要素 ようそ に対 たい して1つ(もしくは複数 ふくすう )の解 かい にたどり着 つ くまで関数 かんすう の適用 てきよう とフィルタリングを繰 く り返 かえ す手法 しゅほう は、関数 かんすう 型 がた プログラミングでよく用 もち いられるパターンである[9] 。
Haskell では、関数 かんすう 合成 ごうせい の二 に 項 こう 演算 えんざん 子 こ を使 つか ってポイントフリースタイル で関数 かんすう を定義 ていぎ することができる[9] 。関数 かんすう をポイントフリースタイルで定義 ていぎ すると、データより関数 かんすう に目 め が行 い くようになり、どのようにデータが移 うつ り変 か わっていくかではなく、どんな関数 かんすう を合成 ごうせい して何 なに になっているかということへ意識 いしき が向 む くため、定義 ていぎ が読 よ みやすく簡潔 かんけつ になることがある[9] 。関数 かんすう が複雑 ふくざつ になりすぎると、ポイントフリースタイルでは逆 ぎゃく に可読 かどく 性 せい が悪 わる くなることもある[9] 。
関数 かんすう 型 がた プログラミング言語 げんご とは、関数 かんすう 型 がた プログラミングを推奨 すいしょう しているプログラミング言語 げんご である[1] 。略 りゃく して関数 かんすう 型 がた 言語 げんご ともいう[1] 。全 すべ ての関数 かんすう が参照 さんしょう 透過 とうか 性 せい を持 も つようなものを、特 とく に純粋 じゅんすい 関数 かんすう 型 がた プログラミング言語 げんご (英語 えいご 版 ばん ) という[4] 。そうでないものを非 ひ 純粋 じゅんすい であるという[5] 。
関数 かんすう 型 がた プログラミング言語 げんご の多 おお くは、言語 げんご の設計 せっけい において何 なん らかの形 かたち でラムダ計算 けいさん が関 かか わっている[3] 。ラムダ計算 けいさん はコンピュータの計算 けいさん をモデル化 か する体系 たいけい の一 ひと つであり、記号 きごう の列 れつ を規則 きそく に基 もと づいて変換 へんかん していくことで計算 けいさん が行 おこな われるものである[3] 。
関数 かんすう 型 がた プログラミング言語 げんご
名前 なまえ
型付 かたつ け
純粋 じゅんすい 性 せい
評価 ひょうか 戦略 せんりゃく
理論 りろん 的 てき 背景 はいけい
Clean
静的 せいてき 型付 かたつ け
純粋 じゅんすい
遅延 ちえん 評価 ひょうか
Erlang
動的 どうてき 型付 かたつ け
非 ひ 純粋 じゅんすい
正格 せいかく 評価 ひょうか
F#
静的 せいてき 型付 かたつ け
非 ひ 純粋 じゅんすい
正格 せいかく 評価 ひょうか
Haskell [2]
静的 せいてき 型付 かたつ け[2]
純粋 じゅんすい [2]
遅延 ちえん 評価 ひょうか [2]
型付 かたつ きラムダ計算 けいさん [3]
Idris
静的 せいてき 型付 かたつ け
純粋 じゅんすい
正格 せいかく 評価 ひょうか
型付 かたつ きラムダ計算 けいさん
Lazy K
型 かた なし
純粋 じゅんすい
遅延 ちえん 評価 ひょうか
コンビネータ論理 ろんり
LISP 1.5 Scheme Common Lisp Clojure
動的 どうてき 型付 かたつ け
非 ひ 純粋 じゅんすい
正格 せいかく 評価 ひょうか
型 かた 無 な しラムダ計算 けいさん [3]
LISP の各種 かくしゅ 方言 ほうげん [3]
方言 ほうげん による
方言 ほうげん による
方言 ほうげん による
Miranda
静的 せいてき 型付 かたつ け
純粋 じゅんすい
遅延 ちえん 評価 ひょうか
ML Standard ML OCaml
静的 せいてき 型付 かたつ け
非 ひ 純粋 じゅんすい
正格 せいかく 評価 ひょうか
Scala
静的 せいてき 型付 かたつ け
非 ひ 純粋 じゅんすい
正格 せいかく 評価 ひょうか
Unlambda
型 かた なし
非 ひ 純粋 じゅんすい
正格 せいかく 評価 ひょうか
コンビネータ論理 ろんり
Lean
静的 せいてき 型付 かたつ け
純粋 じゅんすい
正格 せいかく 評価 ひょうか
型付 かたつ きラムダ計算 けいさん
C 言語 げんご や Java 、 JavaScript 、 Python 、 Ruby などの2017年 ねん 現在 げんざい に使 つか われている言語 げんご の多 おお くは、手続 てつづ き型 がた の文法 ぶんぽう を持 も っている[10] 。そのような言語 げんご では、文法 ぶんぽう として式 しき (expression) と文 ぶん (statement) を持 も つ[10] 。ここでの式 しき は、計算 けいさん を実行 じっこう して結果 けっか を得 え るような処理 しょり を記述 きじゅつ するための文法 ぶんぽう 要素 ようそ であり、加減乗除 かげんじょうじょ や関数 かんすう 呼 よ び出 だ しなどから構成 こうせい されている[10] 。ここでの文 ぶん は、何 なん らかの動作 どうさ を行 おこな うようにコンピュータへ指示 しじ するための文法 ぶんぽう 要素 ようそ であり、条件 じょうけん 分岐 ぶんき の if 文 ぶん やループの for 文 ぶん と while 文 ぶん などから構成 こうせい されている[10] 。手続 てつづ き型 がた の文法 ぶんぽう では、式 しき で必要 ひつよう な計算 けいさん を進 すす め、その結果 けっか を元 もと にして文 ぶん でコンピュータ命令 めいれい を行 おこな うという形 かたち で、プログラムを記述 きじゅつ する[10] 。このように、手続 てつづ き型 がた 言語 げんご で重要 じゅうよう なのは文 ぶん である[10] 。
それに対 たい して、関数 かんすう 型 がた 言語 げんご で重要 じゅうよう なのは式 しき である[10] 。関数 かんすう 型 がた 言語 げんご のプログラムはたくさんの式 しき で構成 こうせい され、プログラムそのものも一 ひと つの式 しき である[10] 。たとえば、 Haskell では、プログラムの処理 しょり の記述 きじゅつ において文 ぶん は使 つか われず、外部 がいぶ の定義 ていぎ を取 と り込 こ む import 宣言 せんげん も処理 しょり の一部 いちぶ として扱 あつか えない[10] 。関数 かんすう 型 がた 言語 げんご におけるプログラムの実行 じっこう とは、プログラムを表 あらわ す式 しき の計算 けいさん を進 すす めて、その結果 けっか として値 ね (value) を得 え ることである[10] 。式 しき を計算 けいさん することを、評価 ひょうか する (evaluate) という[10] 。
手続 てつづ き型 がた 言語 げんご ではコンピュータへの指示 しじ を文 ぶん として上 うえ から順 じゅん に並 なら べて書 か くのに対 たい して、関数 かんすう 型 がた 言語 げんご では数多 かずおお く定義 ていぎ した細 こま かい式 しき を組 く み合 あ わせてプログラムを作 つく る[10] 。手続 てつづ き型 がた 言語 げんご では文 ぶん が重要 じゅうよう であり、関数 かんすう 型 がた 言語 げんご では式 しき が重要 じゅうよう である[11] 。
式 しき と文 ぶん の違 ちが いとして、型 かた が付 つ いているかどうかというのがある[11] 。式 しき は型 かた を持 も つが、文 ぶん は型 かた を持 も たない[11] 。プログラム全 すべ てが式 しき から構成 こうせい されていて、強 つよ い静的 せいてき 型付 かたつ けがされているのならば、プログラムの全体 ぜんたい が細部 さいぶ まで型付 かたつ けされることになる[11] 。このように細部 さいぶ まで型付 かたつ けされているようなプログラムは堅固 けんご なものになる[11] 。
関数 かんすう 型 がた 言語 げんご の開発 かいはつ において、アロンゾ・チャーチ が1932年 ねん [注釈 ちゅうしゃく 1] と1941年 ねん [注釈 ちゅうしゃく 2] に発表 はっぴょう したラムダ計算 けいさん の研究 けんきゅう ほど基本 きほん 的 てき で重要 じゅうよう な影響 えいきょう を与 あた えたものはない[12] 。ラムダ計算 けいさん は、それが考 かんが え出 だ された当時 とうじ はプログラム を実行 じっこう するようなコンピュータ が存在 そんざい しなかったためにプログラミング言語 げんご として見 み なされなかったにもかかわらず、今 いま では最初 さいしょ の関数 かんすう 型 がた 言語 げんご とされている[12] 。1989年 ねん 現在 げんざい の関数 かんすう 型 がた 言語 げんご は、そのほとんどがラムダ計算 けいさん に装飾 そうしょく を加 くわ えたものとして見 み なせる[12] 。
1960年 ねん にジョン・マッカーシー 等 ひとし が発表 はっぴょう した LISP は関数 かんすう 型 がた 言語 げんご の歴史 れきし において重要 じゅうよう である[13] 。ラムダ計算 けいさん は LISP の基礎 きそ であると言 い われるが、マッカーシー自身 じしん が1978年 ねん [注釈 ちゅうしゃく 3] に説明 せつめい したところによると、匿名 とくめい 関数 かんすう を表現 ひょうげん したいというのが最初 さいしょ にあって、その手段 しゅだん としてマッカーシーはチャーチのラムダ計算 けいさん を選択 せんたく したに過 す ぎない[14] 。
歴史 れきし 的 てき に言 い えば、 LISP に続 つづ いて関数 かんすう 型 がた プログラミングパラダイムへ刺激 しげき を与 あた えたのは、1960年代 ねんだい 半 なか ばのピーター・ランディン (英語 えいご 版 ばん ) の成果 せいか である[15] 。ランディンの成果 せいか はハスケル・カリー とアロンゾ・チャーチ に大 おお きな影響 えいきょう を受 う けていた[15] 。ランディンの初期 しょき の論文 ろんぶん は、ラムダ計算 けいさん と、機械 きかい および高級 こうきゅう 言語 げんご (ALGOL 60 ) との関係 かんけい について議論 ぎろん している[15] 。ランディンは、1964年 ねん [注釈 ちゅうしゃく 4] に、 SECD マシン と呼 よ ばれる抽象 ちゅうしょう 的 てき な機械 きかい を使 つか って機械 きかい 的 てき に式 しき を評価 ひょうか する方法 ほうほう を論 ろん じ、1965年 ねん [注釈 ちゅうしゃく 5] に、ラムダ計算 けいさん で ALGOL 60 の非 ひ 自明 じめい なサブセットを形式 けいしき 化 か した[15] 。1966年 ねん [注釈 ちゅうしゃく 6] にランディンが発表 はっぴょう した ISWIM (If You See What I Mean の略 りゃく )という言語 げんご (群 ぐん )は、間違 まちが いなく、これらの研究 けんきゅう の成果 せいか であり、構文 こうぶん や意味 いみ 論 ろん において多 おお くの重要 じゅうよう なアイデアを含 ふく んでいた[15] 。 ISWIM は、ランディン本人 ほんにん によれば、「 LISP を、その名前 なまえ にも表 あらわ れたリスト へのこだわり、手作業 てさぎょう のメモリ割 わ り当 あ て、ハードウェアに依存 いぞん した教育 きょういく 方法 ほうほう 、重 おも い括弧 かっこ 、伝統 でんとう への妥協 だきょう 、から解放 かいほう しようとする試 こころ みとして見 み ることができる」[15] 。関数 かんすう 型 がた 言語 げんご の歴史 れきし において ISWIM は次 つぎ のような貢献 こうけん を果 は たした[16] 。
構文 こうぶん についての革新 かくしん [15]
演算 えんざん 子 こ を前 まえ 置 おけ 記法 きほう で記述 きじゅつ するのをやめて中置 ちゅうち 記法 きほう を導入 どうにゅう した[15] 。
let 節 ぶし と where 節 ぶし を導入 どうにゅう して、さらに、関数 かんすう を順序 じゅんじょ なく同時 どうじ に定義 ていぎ でき、相互 そうご 再帰 さいき も可能 かのう なようにした[15] 。
宣言 せんげん などを記述 きじゅつ する構文 こうぶん に、インデントに基 もと づいたオフサイドルールを使用 しよう した[15] 。
意味 いみ 論 ろん についての革新 かくしん [16]
非常 ひじょう に小 ちい さいが表現 ひょうげん 力 りょく があるコア言語 げんご を使 つか って、構文 こうぶん 的 てき に豊 ゆた かな言語 げんご を定義 ていぎ するという戦略 せんりゃく を導入 どうにゅう した[15] 。
等式 とうしき 推論 すいろん (equational reasoning) を重視 じゅうし した[15] 。
関数 かんすう によるプログラムを実行 じっこう するための単純 たんじゅん な抽象 ちゅうしょう 機械 きかい としての SECD マシンを導入 どうにゅう した[16] 。
ランディンは「それをどうやって行 おこな うか」ではなく「それの望 のぞ ましい結果 けっか とは何 なに か」を表現 ひょうげん することに重点 じゅうてん を置 お いており、そして、 ISWIM の宣言 せんげん 的 てき なプログラミング・スタイルは命令 めいれい 的 てき なプログラミング・スタイルよりも優 すぐ れているというランディンの主張 しゅちょう は、今日 きょう まで関数 かんすう 型 がた プログラミングの賛同 さんどう 者 しゃ たちから支持 しじ されてきた[17] 。その一方 いっぽう で、関数 かんすう 型 がた 言語 げんご への関心 かんしん が高 たか まるまでは、さらに10年 ねん を要 よう した[17] 。その理由 りゆう の一 ひと つは、 ISWIM ライクな言語 げんご の実用 じつよう 的 てき な実装 じっそう がなかったことであり、実 み のところ、この状況 じょうきょう は1980年代 ねんだい になるまで変 か わらなかった[17] 。
ケネス・アイバーソン が1962年 ねん [注釈 ちゅうしゃく 7] に発表 はっぴょう した APL は、純粋 じゅんすい な関数 かんすう 型 がた プログラミング言語 げんご ではないが、その関数 かんすう 型 がた 的 てき な部分 ぶぶん を取 と り出 だ したサブセットがラムダ式 しき に頼 たよ らずに関数 かんすう 型 がた プログラミングを実現 じつげん する方法 ほうほう の一 いち 例 れい であるという点 てん で、関数 かんすう 型 がた プログラミング言語 げんご の歴史 れきし を考察 こうさつ する際 さい に言及 げんきゅう する価値 かち はある[17] 。実際 じっさい に、アイバーソンが APL を設計 せっけい した動機 どうき は、配列 はいれつ のための代数 だいすう 的 てき なプログラミング言語 げんご を開発 かいはつ したいというものであり、アイバーソンのオリジナル版 ばん は基本 きほん 的 てき に関数 かんすう 型 がた 的 てき な記法 きほう を用 もち いていた[17] 。その後 ご の APL では、いくつかの命令 めいれい 型 がた 的 てき な機能 きのう が追加 ついか されている[17] 。
^ a b c d e f g h i j k l 本間 ほんま , 類 るい 地 ち & 逢坂 おうさか 2017 , p. 3
^ a b c d e 本間 ほんま , 類 るい 地 ち & 逢坂 おうさか 2017 , p. 2
^ a b c d e f 本間 ほんま , 類 るい 地 ち & 逢坂 おうさか 2017 , p. 4
^ a b c d 本間 ほんま , 類 るい 地 ち & 逢坂 おうさか 2017 , p. 5
^ a b c d e f g h i j 本間 ほんま , 類 るい 地 ち & 逢坂 おうさか 2017 , p. 6
^ 本間 ほんま , 類 るい 地 ち & 逢坂 おうさか 2017 , p. 23
^ 本間 ほんま , 類 るい 地 ち & 逢坂 おうさか 2017 , p. 31
^ 本間 ほんま , 類 るい 地 ち & 逢坂 おうさか 2017 , p. 32
^ a b c d Lipovača 2012 , p. 22
^ a b c d e f g h i j k l 本間 ほんま , 類 るい 地 ち & 逢坂 おうさか 2017 , p. 22
^ a b c d e 本間 ほんま , 類 るい 地 ち & 逢坂 おうさか 2017 , pp. 22–23
^ a b c Hudak 1989 , p. 363
^ Hudak 1989 , p. 367
^ Hudak 1989 , pp. 367–368
^ a b c d e f g h i j k l Hudak 1989 , p. 371
^ a b c Hudak 1989 , pp. 371–372
^ a b c d e f Hudak 1989 , p. 372
Church, Alonzo (1932年 ねん 4月 がつ ), “A Set of Postulates for the Foundation of Logic” (英語 えいご ), Annals of Mathematics 33 (2): 346, doi :10.2307/1968337 , ISSN 0003-486X , JSTOR 1968337 , https://jstor.org/stable/1968337 , Wikidata Q55890017
Church, Alonzo (1941年 ねん ) (英語 えいご ), The Calculi of Lambda Conversion , プリンストン大学 ぷりんすとんだいがく 出版 しゅっぱん 局 きょく , Wikidata Q105884272
Hudak, Paul (1989年 ねん 9月 がつ 1日 にち ), “Conception, evolution, and application of functional programming languages” (英語 えいご ), ACM Computing Surveys 21 (3): 359–411, doi :10.1145/72551.72554 , ISSN 0360-0300 , Wikidata Q55871443
Iverson, Kenneth (1962年 ねん 12月1日 にち ) (英語 えいご ), A Programming Language , ジョン・ワイリー・アンド・サンズ , ISBN 978-0-471-43014-8 , OL 26792153M , Wikidata Q105954505
McCarthy, John (1978年 ねん ), History of LISP , doi :10.1145/800025.808387 , Wikidata Q56048080
Landin, Peter (1964年 ねん 1月 がつ 1日 にち ), “The Mechanical Evaluation of Expressions” (英語 えいご ), The Computer Journal 6 (4): 308-320, doi :10.1093/COMJNL/6.4.308 , ISSN 0010-4620 , Wikidata Q30040385
Landin, Peter (1965年 ねん ), “Correspondence between ALGOL 60 and Church's Lambda-notation” (英語 えいご ), Communications of the ACM 8 , ISSN 0001-0782 , Wikidata Q105941120
Landin, Peter (1966年 ねん 3月 がつ 1日 にち ), “The next 700 programming languages” (英語 えいご ), Communications of the ACM 9 (3): 157-166, doi :10.1145/365230.365257 , ISSN 0001-0782 , Wikidata Q54002422
Lipovača, Miran 田中 たなか 英行 ひでゆき , 村主 むらぬし 崇 たかし 行 ぎょう 訳 やく (2012年 ねん 5月 がつ 25日 にち ), すごいHaskellたのしく学 まな ぼう! (1st (1st printing) ed.), オ お ーム社 むしゃ , ISBN 978-4-274-06885-0 , Wikidata Q105845956
本間 ほんま 雅洋 まさひろ ; 類 るい 地 ち 孝介 こうすけ ; 逢坂 おうさか 時 じ 響 ひびき 『Haskell入門 にゅうもん 関数 かんすう 型 がた プログラミング言語 げんご の基礎 きそ と実践 じっせん 』(1st (1st printing))技術評論社 ぎじゅつひょうろんしゃ 、2017年 ねん 10月 がつ 10日 とおか 。ISBN 978-4-7741-9237-6 。 , Wikidata Q105833610
言語 げんご 水準 すいじゅん 言語 げんご 処理 しょり 系 けい 言語 げんご 分類 ぶんるい その他 た 関連 かんれん 項目 こうもく