『関数プログラミング』その2
前回の続きです。またもや練習問題を解いてみました。
練習問題
(P.7)
1.2.1
式 square (square (3 + 7)) を標準形に簡約する方法をすべて示せ。
square (square (3 + 7)) => square (square (10)) <+> => square (10 × 10) <square> => square (100) <×> => 100 × 100 <square> => 10000 <×>
square (square (3 + 7)) => square ((3 + 7) × (3 + 7)) <square> => ((3 + 7) × (3 + 7)) × ((3 + 7) × (3 + 7)) <square> => 10 × 10 × 10 × 10 <+> => 10000 <×>
square (square (3 + 7)) => square ((3 + 7) × (3 + 7)) <square> => square (10 × 10) <+> => 100 × 100 <square> => 10000 <×>
これだけしか分からなかった。もっと、ありそうだけど。
1.2.2
定義
three x = 3
について、three(3+4) を標準形に簡約する方法はいくつあるか。
three(3+4) => three(7) <+> => 3 <three>
three(3+4) => 3 <three>
答えは2かな?
1.1.3
分かりませんでした。
1.1.4
有限個の0と1の並びからなる言語を考えよう。この言語で表される文字列の簡単化の規則を次のように定める。
1??x => x1101
0??x => x00
これらの規則では、変数xは0と1の任意の列を表し、記号'?'は単一の0または1を表す。つぎの式を標準形に簡約せよ。
1110
10
1110100
分かりませんでした。
どなたか、回答例を教えていただけませんでしょうか。