pfds 9 2_2

6
PFDS chap.9.2.2 Zeroless Representations @shtaag 2012923日日曜日

Upload: shigekazu-takei

Post on 31-May-2015

304 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Pfds 9 2_2

PFDS chap.9.2.2Zeroless Representations@shtaag

2012年9月23日日曜日

Page 2: Pfds 9 2_2

RList in 9.2.1

cons, head, tail がO(log n)

9.2.2では

headをO(1)にする

2012年9月23日日曜日

Page 3: Pfds 9 2_2

9.2.1でheadがO(log n)かかっていた理由

unconsTreeではじめの要素Zeroの時,再帰が走る

2012年9月23日日曜日

Page 4: Pfds 9 2_2

Zero | One構造をOne | Two構造に変えればいい

headで取り出す対象を常に保持している

fun head (One Leaf x) :: _) = x | head (Two (Leaf x, Leaf y) :: _) = x

2012年9月23日日曜日

Page 5: Pfds 9 2_2

[]

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日日曜日

Page 6: Pfds 9 2_2

[]

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日日曜日