あなたはそれでプログラムします!教会のエンコーディングを見てください。すべての算術演算がどれだけ実行できるかを見ることができ、おそらく非常に強力であることを確信させるはずです。ただし、リストの操作を見るのが好きです。最も重要な操作を行う関数に関して、ほとんどのデータ構造を定義できます。
たとえば、リストのエンコードは、リストを折り返す折り畳み関数です。これは教会のエンコーディングではなく、パーシーのタイプとプログラミング言語から得たものです。教会のペアエンコーディングは再帰を提供しません。何らかの再帰コンビネータを使用して、自分でそれを追加し直す必要があります。
そのため、リストは2つの引数を取ります。折りたたみを行う関数と、ある時点で折りたたみにプラグインする初期値です。
cons x xs = lam f. lam a. f x (xs f a)
nil = lam f. lam a. a
これで、add関数を指定して合計を定義できます(上記の教会エンコーディングを参照)
sum xs = xs add 0
さらに機能を追加して、マップ関数を定義できます
consApply f x xs = cons (f x) xs
map f xs = xs (consApply f) nil
ここで進行中の計算があると確信していない場合、計算を実行できることを確認したい場合は、固定小数点コンビネーターをチェックアウトします。しかし、時々考えるのは頭が少し痛いので、直感的に呼び出すかどうかはわかりませんが、いくつかの引数で手動で評価すると、何が起こっているのかを見ることができます。