関数型言語に関するmitsuyoshi4のブックマーク (3)

  • プログラミングの基礎理論 第4回 自由に生成された集合と再帰的関数、暗黙に型付けられたラムダ計算

    はじめに 帰納的閉包のさらなる理解のために、 自由に生成された集合 再帰的関数定義 について理解するのが良いので概要のみ紹介する。 自由に生成された集合 帰納的閉包 X = Ind(C, F)が以下の条件を満たすとき、「自由に生成された集合である」と言う。 任意の異なる関数fr(n),gr(m) ∈ Fに対して、fr(n)(X) ∩ gr(m)(X) = ∅ である。 1.1 つまり異なる関数を適用した結果の共通集合はなく、すなわち異なる関数を適用した結果はそれぞれ異なることを意味する 任意の関数fr(n) ∈ Fについて、fr(n)(X) ∩ C = ∅ である 2.1 つまり関数を適用した場合、定数Cを生成することはないことを意味する 任意の関数fr(n) ∈ Fについて、fr(n)|xn は単射関数である 3.1 fのXへの制限すなわち定義域をXに制限した集合{(a, b) | (a

    プログラミングの基礎理論 第4回 自由に生成された集合と再帰的関数、暗黙に型付けられたラムダ計算
  • プログラミングの基礎理論 第2回 言語の帰納的な定義

    はじめに Twitterにてこのようなツイートを見かけたので、内容を確認してみた。 これまでインターネットや書籍で軽く触れられてきた内容に切り込んでいくものだったので、理解を深めることができた。 その内容をまとめていく。 概要 言語は文法で定義される。 例えば、MLの一部の式は以下のように定義される。 <exp> ::= <id> // 変数 | <n> | <S> | true | false // 自然数(n), 文字列(S) その他定数 | fn <id> => <exp> // 関数式 | <exp> <exp> // 関数適用 | ... プログラミング言語の理論ではより抽象的な定義を行うため、変数や定数を「与えられた集合」とし、これを代表するものをメタ変数と呼ぶ。 ラムダ式では以下の集合とメタ変数を導入する。 変数(Var)に対するメタ変数をxとする 定数(Const)に対する

    プログラミングの基礎理論 第2回 言語の帰納的な定義
  • 「関数型言語で学ぶプログラミングの基本」という同人誌を書いてみて

    はじめに 2022/11/20に開催された第七回 技術書同人誌博覧会に出展する同人誌を執筆した。 目的は色々あるが、一番は自身の知識の整理が大きい。 ここでは、書籍内で重要だと(個人的に思う)概念及び執筆にあたって気をつけた点をピックアップする。 なぜ型が必要なのか Chapter 2 の序文のとおりであるが、「1 + “ほげ”」のような無意味な計算を未然に防ぐためである。 このようにデータの種類を確認することを 型チェック と言う。 また、無意味な計算によって発生するエラーを 型エラー と言う。 基的データとして、整数(int)、実数(float)、文字(char)、文字列(string)、真偽値(bool)が存在する他、 戻り値を返す必要がない場合に用いるユニット値(unit)が存在する。 いくつかのプログラミング言語では、副作用を引き起こす関数の戻り値としてユニット型を返したり、

    「関数型言語で学ぶプログラミングの基本」という同人誌を書いてみて
  • 1