目次
型システム
型システム(かたシステム、type system)は、コンピュータプログラミングの数々の構成要素および値に対して、型(type)と呼ばれる特性を付与するための数々の規則群から成立している形式体系である。型の付与は、型付け(typing)と言われる。例えば、変数・式・関数・モジュール・オブジェクトなどが型の付与対象になり、それらの型付け要素を規則的な関係でまとめたデータ構造にも型は付与されてカテゴライズされる。 型システムの目的は、プログラムエラーとバグの発生を抑止することである。そのための型安全性とは、各計算および各オペレーションでの型エラー(不正計算、ロジックエラー、バッファオーバーフロー、不正ポインタなど)の発生を防止することと同義になる。
見る Curryと型システム
宣言型プログラミング
宣言型プログラミング(Declarative programming)は、数理論理学的な性質を表わしている総称的なプログラミングパラダイムである。式の計算構造を、主に表示的意味論下のロジックで表現する構文にされることが多く、式枠外の副作用を伴なう制御フローや自由変数の多用などは排除されるようになる。計算構造は演繹的に組み立てられることが多い。命令型プログラミングと対をなしてのプログラミング言語の分類用語としても扱われている。 宣言型言語は、what the program must accomplish(何をなすべきか)方針で、副作用を排除した式や純粋関数の実装に努める"what declarative programming is.
ポータブル
ポータブル(portable)。
見る Curryとポータブル
モジュール
モジュール(module)とは、工学などにおける設計上の概念で、システムを構成する要素となるもの。いくつかの部品的機能を集め、まとまりのある機能を持った部品のこと。モジュールに従っているものをモジュラー(modular)という。 入出力を絞り込んで標準化することにより、システム開発を「すり合わせ」から「モジュールの組み合わせ」に変更できる。
見る Curryとモジュール
プログラミング言語
プログラミング言語(プログラミングげんご、)とは、プログラムを記述するための人工言語。コンピュータプログラムを書くために考案された、正確に定義された記号と規則のしくみ。以前は、しばしばプログラム言語と表記された。
静的型付け
静的型付け(せいてきかたづけ、static typing)は、値やオブジェクトの型安全性を、コンパイル時に検証するというコンピュータプログラミングの型システムの方法である。型の検査はソースコードの解析によって行われる。変数代入、変数束縛、関数適用、型変換といったプログラム記述箇所での型安全性がチェックされる。型エラーの場合は、コンパイルエラーに繋げられることが多い。 対義語は動的型付けであり、こちらでは値やオブジェクトの型安全性を実行時に検証する。型の検査はランタイムシステムの実行時型情報(RTTI)の照会などによる実行時プロセス上の解析で行われる。
見る Curryと静的型付け
論理学
論理学では、モーダスポネンスのような形式的に妥当な推論を研究する。 論理学 (ろんりがく、) は、正しい推論の研究である。形式論理学および非形式論理学が含まれる。形式論理学は、演繹的に妥当な推論あるいは論理的真理の研究である。論証の議題や内容とは無関係に、論証の構造のみにより、前提からどのように結論が導かれるかを研究する。非形式論理学は、非形式的誤謬、批判的思考、議論学と関わりがある。非形式論理学は自然言語で記述される論証を研究する一方、形式論理学は形式言語を用いる。各形式論理体系は、を表現する。論理学は、哲学、数学、計算機科学、言語学を含む多くの分野で中核をなす。 論理学は、前提の集合および結論からなる論証を研究する。論証の例には、前提「今日は日曜日である」および「今日が日曜日であれば、私は働かなくて良い」から結論「私は働かなくて良い」を導くものがある。前提および結論は、命題あるいは真理適合的な言明を表現する。命題の重要な側面は、その内部構造にある。例えば、複合命題は、land (かつ) や to (...ならば...) のような論理語彙で接続された単純命題から構成される。単純命題も、「日曜日」や「働く」のような各部分に分解できる。命題の真偽は、通常、その各部分すべての意味に依存する。ただし、論理的に真の命題は、その各部分の具体的な意味とは無関係に、その論理的構造のみによって真であるため、これに当てはまらない。
見る Curryと論理学
関数型プログラミング
関数型プログラミング(かんすうがたプログラミング、functional programming)とは、数学的な意味での関数を主に使うプログラミングのスタイルである。 functional programming は、関数プログラミング(かんすうプログラミング)などと訳されることもある。 (functional programming language)とは、関数型プログラミングを推奨しているプログラミング言語である。略して関数型言語(functional language)ともいう。
Haskell
Haskell(ハスケル)は非正格な評価を特徴とする純粋関数型プログラミング言語である。名称は数学者であり論理学者であるハスケル・カリーに由来する。
Prolog
Prolog(プロログ)は論理プログラミング言語の一つであり、該当分野で最もよく知られている論理型言語の代表格である。主に人工知能研究や計算言語学との関連性を持つ。定理証明、エキスパートシステム、自動計画、自然言語処理とも繋がりが深い。形式論理である一階述語論理を基礎にして、事実群と規則群の表現および関係の観点に立った宣言型パラダイムに準拠しており、その関係に則った質問によって計算が開始されるという性質を持つ。 Prologは、1972年にマルセイユ大学のアラン・カルメラウアーとフィリップ・ラッセルによって開発された。フランス語の「programmation en logique」がその名の由来である。Prologの誕生にはエディンバラ大学のロバート・コワルスキが考案したホーン節が大きく寄与している。カルメラウアーによる元祖版はマルセイユPrologと呼ばれている。その後、コワルスキの門弟のデヴィッド・ワーレンが1977年に改訂開発したエディンバラProlog(DEC-10 Prolog)が標準になってPrologは広く普及したRobert Kowalski.
見る CurryとProlog
推論
推論(すいろん、inference)とは、既知の事柄を元にして未知の事柄について予想し、論じる事である。
見る Curryと推論

