ラムダ計算単語

2件
ラムダケイサン
1.5千文字の記事
  • 1
  • 0pt
掲示板へ

ラムダ計算(lambda calculus)とは、何でも関数を用いて計算してしまう方法である。

概要

ラムダ計算とは、関数についての3つの操作だけであらゆる計算が可、すなわちチューリング完全を実現できるという理論である。LISPをはじめとする関数型言語理論的根拠となっている。1930年代Alonzo Churchという数学者が提唱したが、最初に思いついたのはAlonzo Churchではないらしい。

ラムダ計算は以下の3つの操作からなる。きちんと説明しようとするとよくわからない記号だらけになるので、おおざっぱにだけ記載しておく。

  • α変換: 関数名前をつけて置き換えることができる。
  • β変換: 関数には実際に代入して計算することができる。簡約ともいう。
  • η変換: 2つの関数がすべての引数について同じ値を返すとき、2つの関数は同値であるとみなす。

η変換は何を当たり前のことを言っているんだと思うかもしれないが、たとえば1からnまでの整数の和をめるのに、1から順番に数を足していく方法でも、等差数列の和の公式を使う方法でも、計算方法は違えど同値であるということである。

ラムダ式

上記操作においては、関数も数値と同じように引数にしたり戻り値にしたりできる、高階関数が前提となっている。このため、数値がx = 1というような書き方ができるように、関数名前をつけて置き換えられる必要がある。

Alonzo Church自身は、たとえば f(x) = x2+ x + 1 のときに、関数 f 自体を f = λx.(x2+ x + 1) といった書き方をしており、これをラムダ式(lambda expression)と呼んだ。

プログラミングにおいては使用できる文字の制約などにより上記とは少し異なる記法を採用していることがほとんどだが、実質的には同じことなのでそれらもラムダ式と呼ばれている。

名前の由来

ラムダ式に用いられる記号 λ に由来するわけだが、この λ 自身の由来については2説あり、偽についてはあまりはっきりしていない。

由来がある説

Rosserという人が1984年に以下のように報告している。

Russell と Whiteheadが、関数を抽化するときの記号に「x̂(結合文字非対応環境用に書くと、âのaをxにしたもの)」を用いていた。Alonzo Churchは、この表記法にちなんで、「∧x」という記号を使用するようになった。その後印刷しやすいように「∧」の代わりに「λ」を使用するようになった(ちなみにλの大文字Λ(≠∧)である)。

由来なんかない説

Alonzo Church自身は後年「とにかく記号が必要だったからたまたまλを選んだ」とっており、この話を信じるなら特に由来はないということになる。一般には面で報告された「由来がある説」の方が信頼性が高いということになるが、面とはいえ他人がした報告である。一方こちらはAlonzo Church本人の言葉であり、そう聞いた人が1人だけというわけでなく2人いるということなので、こちらもそれなりに信憑性が高い。

関連項目

関連商品

【スポンサーリンク】

  • 1
  • 0pt
記事編集 編集履歴を閲覧

ニコニ広告で宣伝された記事

紲星あかり (単) 記事と一緒に動画もおすすめ!
提供: Kefi_Ades͏͏͏͏͏͏͏
もっと見る

この記事の掲示板に最近描かれたお絵カキコ

お絵カキコがありません

この記事の掲示板に最近投稿されたピコカキコ

ピコカキコがありません

ラムダ計算

1 nの3乗
2016/10/22(土) 11:00:30 ID: PaZm/OxuT3
数学は難しい
👍
高評価
0
👎
低評価
0
2 ななしのよっしん
2017/06/18(日) 01:26:25 ID: YJ/SL4gRYd
👍
高評価
0
👎
低評価
0
3 ななしのよっしん
2017/08/12(土) 23:00:18 ID: xYgUf+yVRT
ですが、

untypedなら高橋さんの『計算論』がベターかと
単純や高階なら日本語ではあまり見当たらない、Barendregtが定番かな
👍
高評価
0
👎
低評価
0
4 ななしのよっしん
2020/06/18(木) 14:11:20 ID: UrOm+NnnhP
この記事によれば「ラムダ」自体に名前の由来はいのかもだが、この「ラムダ計算」という名を由来にしたサービスや技術は最近良くにしたので参考になった。

プログラミング言語で、引数を与えると事前に書いておいた複数の計算を経て処理結果を返すlambdaメソッドとか、AWSアプリケーションを動かすためのアプリケーション省略して核心的な処理だけ書けば動くサーバーレスアーキテクチャが実現できるサービスAWS Lambdaとか、いままで命名の由来が「ギリシャ文字のL」だけじゃ意味が分からなかったが、これで正体がつかめた気分。

だが字面を見ると未だに曲のランバダが頭の中で流れ出す。
👍
高評価
0
👎
低評価
0
5 ななしのよっしん
2020/12/12(土) 18:45:56 ID: l/dIRKrGyj
ま、とりあえず一度ぐらいLisp触っとけって話よ。
👍
高評価
0
👎
低評価
0
6 ななしのよっしん
2021/02/19(金) 23:05:35 ID: jCh+L6vA5Y
大学情報工学科出ても理解できるようには全然ならない
👍
高評価
0
👎
低評価
0
7 ななしのよっしん
2021/04/25(日) 15:44:23 ID: 5ABKNLEaHl
プログラミングラムダ式から来たけど記事の意味がわからんちん

例えばソートしたいとして、
ソート関数高階関数実装されてて、
昇順降順や絶対値などの処理を関数として書いて
それを引数としてソート関数にわたす、

みたいなのをラムダ式と言う、という理解でええのん?
👍
高評価
0
👎
低評価
0
8 ななしのよっしん
2022/01/22(土) 15:32:45 ID: WuxxWRKph6
関数を値として扱える概念って事でいいのか?
👍
高評価
0
👎
低評価
0
9 ななしのよっしん
2022/01/22(土) 15:37:05 ID: HN8AB4phi2
ぷろぐらむが実行中に書き換わるってことや!!!
👍
高評価
0
👎
低評価
0
10 ななしのよっしん
2023/02/18(土) 17:04:53 ID: vlMZeyUx78
Aを100回繰り返すって関数にAとしていろんな処理(関数)渡せるって考えから発展していくと理解はしやすい
本質があってるのかは知らん
👍
高評価
0
👎
低評価
0