Chat (Lingr.com)
Informaiton
Daily
Column
- MySQL日本語の旅(5/1)
- アクセス向上秘伝(5/9)
- 一風変ったHaskellλ門(6/13)
- SICP Answer Book (5/31) 問題3.26追加
Zope Solution
Extra
アーカイブ
OSS案内所
Site Info
関連リンク
問題 1.20
正規順序
gcd 206 40
==> if 40 == 0 then 206 else gcd 40 (rem 206 40)
==> if False then 206 else gcd 40 (rem 206 40)
==> gcd 40 (rem 206 40)
==> if rem 206 40 == 0
then 40
else gcd (rem 206 40) (rem 40 (rem 206 40))
r=> if 6 == 0
then 40
else gcd (rem 206 40) (rem 40 (rem 206 40))
==> if False
then 40
else gcd (rem 206 40) (rem 40 (rem 206 40))
==> gcd (rem 206 40) (rem 40 (rem 206 40))
==> if rem 40 (rem 206 40) == 0
then rem 206 40
else gcd (rem 40 (rem 206 40)) (rem (rem 206 40) (rem 40 (rem 206 40)))
r=> if rem 40 6 == 0
then rem 206 40
else gcd (rem 40 (rem 206 40)) (rem (rem 206 40) (rem 40 (rem 206 40)))
r=> if 4 == 0
then rem 206 40
else gcd (rem 40 (rem 206 40)) (rem (rem 206 40) (rem 40 (rem 206 40)))
==> if False
then rem 206 40
else gcd (rem 40 (rem 206 40)) (rem (rem 206 40) (rem 40 (rem 206 40)))
==> gcd (rem 40 (rem 206 40)) (rem (rem 206 40) (rem 40 (rem 206 40)))
==> if rem (rem 206 40) (rem 40 (rem 206 40)) == 0
then rem 40 (rem 206 40)
else gcd (rem (rem 206 40) (rem 40 (rem 206 40)))
(rem (rem 40 (rem 206 40))
(rem (rem 206 40) (rem 40 (rem 206 40))))
r=> if rem 6 (rem 40 (rem 206 40)) == 0
then rem 40 (rem 206 40)
else gcd (rem (rem 206 40) (rem 40 (rem 206 40)))
(rem (rem 40 (rem 206 40))
(rem (rem 206 40) (rem 40 (rem 206 40))))
r=> if rem 6 (rem 40 6) == 0
then rem 40 (rem 206 40)
else gcd (rem (rem 206 40) (rem 40 (rem 206 40)))
(rem (rem 40 (rem 206 40))
(rem (rem 206 40) (rem 40 (rem 206 40))))
r=> if rem 6 4 == 0
then rem 40 (rem 206 40)
else gcd (rem (rem 206 40) (rem 40 (rem 206 40)))
(rem (rem 40 (rem 206 40))
(rem (rem 206 40) (rem 40 (rem 206 40))))
r=> if 2 == 0
then rem 40 (rem 206 40)
else gcd (rem (rem 206 40) (rem 40 (rem 206 40)))
(rem (rem 40 (rem 206 40))
(rem (rem 206 40) (rem 40 (rem 206 40))))
==> if False
then rem 40 (rem 206 40)
else gcd (rem (rem 206 40) (rem 40 (rem 206 40)))
(rem (rem 40 (rem 206 40))
(rem (rem 206 40) (rem 40 (rem 206 40))))
==> gcd (rem (rem 206 40) (rem 40 (rem 206 40)))
(rem (rem 40 (rem 206 40)) (rem (rem 206 40) (rem 40 (rem 206 40))))
==> if rem (rem 40 (rem 206 40)) (rem (rem 206 40) (rem 40 (rem 206 40))) == 0
then rem (rem 206 40) (rem 40 (rem 206 40))
else gcd (rem (rem 40 (rem 206 40))
(rem (rem 206 40) (rem 40 (rem 206 40))))
(rem (rem (rem 206 40) (rem 40 (rem 206 40)))
(rem (rem 40 (rem 206 40))
(rem (rem 206 40) (rem 40 (rem 206 40)))))
r=> if rem (rem 40 6) (rem (rem 206 40) (rem 40 (rem 206 40))) == 0
then rem (rem 206 40) (rem 40 (rem 206 40))
else gcd (rem (rem 40 (rem 206 40))
(rem (rem 206 40) (rem 40 (rem 206 40))))
(rem (rem (rem 206 40) (rem 40 (rem 206 40)))
(rem (rem 40 (rem 206 40))
(rem (rem 206 40) (rem 40 (rem 206 40)))))
r=> if rem 4 (rem (rem 206 40) (rem 40 (rem 206 40))) == 0
then rem (rem 206 40) (rem 40 (rem 206 40))
else gcd (rem (rem 40 (rem 206 40))
(rem (rem 206 40) (rem 40 (rem 206 40))))
(rem (rem (rem 206 40) (rem 40 (rem 206 40)))
(rem (rem 40 (rem 206 40))
(rem (rem 206 40) (rem 40 (rem 206 40)))))
r=> if rem 4 (rem 6 (rem 40 (rem 206 40))) == 0
then rem (rem 206 40) (rem 40 (rem 206 40))
else gcd (rem (rem 40 (rem 206 40))
(rem (rem 206 40) (rem 40 (rem 206 40))))
(rem (rem (rem 206 40) (rem 40 (rem 206 40)))
(rem (rem 40 (rem 206 40))
(rem (rem 206 40) (rem 40 (rem 206 40)))))
r=> if rem 4 (rem 6 (rem 40 6)) == 0
then rem (rem 206 40) (rem 40 (rem 206 40))
else gcd (rem (rem 40 (rem 206 40))
(rem (rem 206 40) (rem 40 (rem 206 40))))
(rem (rem (rem 206 40) (rem 40 (rem 206 40)))
(rem (rem 40 (rem 206 40))
(rem (rem 206 40) (rem 40 (rem 206 40)))))
r=> if rem 4 (rem 6 4) == 0
then rem (rem 206 40) (rem 40 (rem 206 40))
else gcd (rem (rem 40 (rem 206 40))
(rem (rem 206 40) (rem 40 (rem 206 40))))
(rem (rem (rem 206 40) (rem 40 (rem 206 40)))
(rem (rem 40 (rem 206 40))
(rem (rem 206 40) (rem 40 (rem 206 40)))))
r=> if rem 4 2 == 0
then rem (rem 206 40) (rem 40 (rem 206 40))
else gcd (rem (rem 40 (rem 206 40))
(rem (rem 206 40) (rem 40 (rem 206 40))))
(rem (rem (rem 206 40) (rem 40 (rem 206 40)))
(rem (rem 40 (rem 206 40))
(rem (rem 206 40) (rem 40 (rem 206 40)))))
r=> if 0 == 0
then rem (rem 206 40) (rem 40 (rem 206 40))
else gcd (rem (rem 40 (rem 206 40))
(rem (rem 206 40) (rem 40 (rem 206 40))))
(rem (rem (rem 206 40) (rem 40 (rem 206 40)))
(rem (rem 40 (rem 206 40))
(rem (rem 206 40) (rem 40 (rem 206 40)))))
==> if True
then rem (rem 206 40) (rem 40 (rem 206 40))
else gcd (rem (rem 40 (rem 206 40))
(rem (rem 206 40) (rem 40 (rem 206 40))))
(rem (rem (rem 206 40) (rem 40 (rem 206 40)))
(rem (rem 40 (rem 206 40))
(rem (rem 206 40) (rem 40 (rem 206 40)))))
==> rem (rem 206 40) (rem 40 (rem 206 40))
r=> rem 6 (rem 40 (rem 206 40))
r=> rem 6 (rem 40 6)
r=> rem 6 4
r=> 2
r=> が rem の適用を簡約した箇所.18回
作用順序
gcd 206 40 ==> if 40 == 0 then 206 else gcd 40 (rem 206 40) ==> if False then 206 else gcd 40 (rem 206 40) ==> gcd 40 (rem 206 40) r=> gcd 40 6 ==> if 6 == 0 then 40 else gcd 6 (rem 40 6) ==> if False then 40 else gcd 6 (rem 40 6) ==> gcd 6 (rem 40 6) r=> gcd 6 4 ==> if 4 == 0 then 6 else gcd 4 (rem 6 4) ==> if False then 6 else gcd 4 (rem 6 4) ==> gcd 4 (rem 6 4) r=> gcd 4 2 ==> if 2 == 0 then 4 else gcd 2 (rem 4 2) ==> if False then 4 else gcd 2 (rem 4 2) ==> gcd 2 (rem 4 2) r=> gcd 2 0 ==> if 0 == 0 then 2 else gcd 0 (rem 2 0) ==> if True then 2 else gcd 0 (rem 2 0) ==> 2
rem の簡約回数は.4回
Haskellの簡約はグラフ簡約なので,
gcd x y where x = 206; y = 40 ==> if (y == 0) then 206 else gcd 40 (rem 206 40) ==> if False then 206 else gcd 40 (rem 206 40) ==> gcd x y where x = 40; y = rem 206 40 ==> if y == 0 then x else gcd y (rem x y) where x = 40; y = rem 206 40 r=> if 6 == 0 then 40 else gcd 6 (rem 40 6) ==> if False then 40 else gcd 6 (rem 40 6) ==> gcd x y where x == 6 ; y = rem 40 6 ==> if y == 0 then x else gcd y (rem x y) where x = 6; y = rem 40 6 r=> if 4 == 0 then 6 else gcd 4 (rem 6 4) ==> if False then 6 else gcd 4 (rem 6 4) ==> gcd x y where x = 4; y = rem 6 4 ==> if y == 0 then x else gcd y (rem x y) where x = 4; y = rem 6 4 r=> if 2 == 0 then 4 else gcd 2 (rem 4 2) ==> if False then 4 else gcd 2 (rem 4 2) ==> gcd x y where x = 2; y = rem 4 2 ==> if y == 0 then x else gcd y (rem x y) where x = 2; y = rem 4 2 r=> if 0 == 0 then 2 else gcd 0 (rem 2 0) ==> if True then 2 else gcd 0 (rem 2 0) ==> 2
というわけで,rem の適用の簡約回数は作用順序簡約と同じ 4回.
コメントをどうぞ!
There is no comment.