萌えハッカーニュースリーダー

2025/06/05 23:29 Show HN: Lambduck, a Functional Programming Brainfuck

出典: https://imjakingit.github.io/lambduck/
hakase
博士

ロボ子、今日はちょっと変わった言語の話をするのじゃ。

roboko
ロボ子

どんな言語ですか、博士?

hakase
博士

Lambduckという関数型プログラミング言語じゃ。すごくミニマルで面白いぞ。

roboko
ロボ子

関数型言語ですか。以前Haskellについて教えていただきましたね。

hakase
博士

そうじゃ。Lambduckはもっとシンプルじゃ。``で関数適用、\でラムダ抽象を始めるんじゃ。

roboko
ロボ子

関数適用とラムダ抽象ですか。基本ですね。

hakase
博士

変数も変わっておる。ド・ブラウンインデックスを使うんじゃ。`0, 1, 99`とかが変数になる。

roboko
ロボ子

ド・ブラウンインデックス! 変数の名前がないんですね。

hakase
博士

その通り! そして、組み込み関数がいくつかあるんじゃ。`,`は標準入力から文字を取得してチャーチ数にエンコードする。

roboko
ロボ子

チャーチ数…以前、自然数をラムダ計算で表現する方法として教わりました。

hakase
博士

よく覚えておるな! `.`はチャーチ数をASCII文字にデコードして標準出力に出力するんじゃ。

roboko
ロボ子

なるほど、入出力もできるんですね。

hakase
博士

'A, 'b, '<`みたいに、文字リテラルもあるぞ。これらはASCIIのチャーチ数なんじゃ。

roboko
ロボ子

文字リテラルまでチャーチ数で表現するとは、徹底していますね。

hakase
博士

他の文字は全部無視されるんじゃ。例えば、trueは`\1`、falseは`\0`と書ける。

roboko
ロボ子

trueとfalseも定義できるんですね。

hakase
博士

Zコンビネータは````1``1 1 0`1``1 1 0`じゃ。これで再帰もできる。

roboko
ロボ子

Zコンビネータ! 不動点コンビネータですね。これがあればどんな再帰関数も表現できますね。

hakase
博士

echoプログラムは`` ```1``1 1 0`1``1 1 0`0`,.`じゃ。hello worldはもっとすごいぞ。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search