pfds 9 2_2
TRANSCRIPT
PFDS chap.9.2.2Zeroless Representations@shtaag
2012年9月23日日曜日
RList in 9.2.1
cons, head, tail がO(log n)
9.2.2では
headをO(1)にする
2012年9月23日日曜日
9.2.1でheadがO(log n)かかっていた理由
unconsTreeではじめの要素Zeroの時,再帰が走る
2012年9月23日日曜日
Zero | One構造をOne | Two構造に変えればいい
headで取り出す対象を常に保持している
fun head (One Leaf x) :: _) = x | head (Two (Leaf x, Leaf y) :: _) = x
2012年9月23日日曜日
[]
1 : []
0 : 1 : []
1 : 1 : [] (2^0 + 2^1 = 3)
0 : 0 : 1 : []
1 : 0 : 1 : []
0 : 1 : 1 : []
1 : 1 : 1 : [] (2^0 + 2^1 + 2^2 = 7)
0 : 0 : 0 : 1 : []
1 : 0 : 0 : 1 : []
1 : 1 : 0 : 1 : []
....
1 : 1 : 1 : 1 : [] (2^0 + 2^1 + 2^2 + 2^3 = 15)
0 : 0 : 0 : 0 : 1 : [] (2^4 = 16)
Zero | One構造
2012年9月23日日曜日
[]
1 : [] (1)
2 : [] (2^1 = 2)
1 : 1 : []
2 : 1 : []
1 : 2 : []
2 : 2 : [] (2^2 + 2^1 = 6)
1 : 1 : 1 : []
2 : 1 : 1 : []
...
2 : 2 : 2 : [] (2^3 + 2^2 + 2^1 = 14)
1 : 1 : 1 : 1 : []
2 : 1 : 1 : 1 : [] (2^4 = 16)
One | Two構造
2012年9月23日日曜日