根本的な質問:
ラムダ計算は、中学校の代数で一般に学んだ基本的な関数のプロパティと表記法ではできないことを私たちに何をしますか?
まず、ラムダ計算の文脈で抽象とはどういう意味ですか?抽象という言葉の私の理解は、概念の概念的な要約である機械から離婚したものです。
ただし、ラムダ関数は、関数名を廃止することにより、特定のレベルの抽象化を防ぎます。例えば:
f(x) = x + 2
h(x, y) = x + 5 y
しかし、これらの機能の仕組みを定義しなくても、その構成について簡単に話すことができます。例えば:
1. h(x, y) . f(x) . f(x) . h(x, y) or
2. h . f . f . h
必要に応じて引数を含めることも、完全に抽象化して何が起きているのかを概観することもできます。そして、それらをすぐに単一の機能に減らすことができます。構成2を見てみましょう。強調に応じて、学生の詳細なレイヤーを書くことができます。
g = h . f . f . h
g(x, y) = h(x, y) . f(x) . f(x) . h(x, y)
g(x, y) = h . f . f . h = x + 10 y + 4
上記をラムダ計算で実行するか、少なくとも関数を定義しましょう。これが正しいかどうかはわかりませんが、最初と2番目の式は2ずつ増加すると考えています。
(λuv.u(u(uv)))(λwyx.y(wyx))x
そして、5年を掛けます。
(λz.y(5z))
抽象的というよりは、これは加算、乗算などの意味のまさにその仕組みに入っているようです。私の考えでは、抽象化は低レベルではなく高レベルを意味します。
さらに、ラムダ計算がなぜなのかを理解するのに苦労しています。の利点は何ですか
(λuv.u(u(uv)))(λwyx.y(wyx))x
以上
h(x) = x + 5 y
または組み合わせ表記
Hxy.x+5y
またはHaskellの表記法でさえ
h x y = x + 5 * y
繰り返しになりますが、ラムダ計算はf(x)スタイルの関数プロパティと多くの人が知っている表記法では処理できないということを、私たちのために何をしますか。