[心得] Fixed-points, Curry-Howard, etc.
Ruby 板在聊 Y combinator. 蠻巧的,昨天發現四月七日也有人在
Haskell mailing list 上面提起 fixed-point.
http://www.mail-archive.com/haskell@haskell.org/msg20045.html
在 untyped lambda calculus 裡頭,我們可以這樣定義 Y combinator,
fixed-point combinator 的一例:
Y = \f -> (\x -> f (x x)) (\x -> f (x x))
但是這個式子在 simply typed 或是 polymorphic typed lambda
calculus 都是無法給 type 的。
比如說,如果我們用 Haskell, 想要讓上面的式子 type check
過,必須要改寫一下,並且會用到這樣的一個 recursive type:
data C a = C (C a -> a)
有了它之後,我們可以稍微改寫 Y。 Y 的 type 會成為 (a -> a) -> a.
根據 Curry/Howard isomorphism, type 就是 proposition.
如果把 -> 讀做邏輯上的 implication, 那麼 (a -> a) -> a 的
意思就是
對任何 a, 如果 a -> a, 那麼 a 就是正確的
但這個陳述直覺上就不太對。也難怪 Y 沒有 type, 因為 (a -> a) -> a
這個事情是證不出來的。
如果我們在一個語言裡面硬是加了一個 fixed-point operator
(也就是允許使用遞迴),這等於是在語言中讓 (a -> a) -> a
成為一個公設。不過,一個邏輯系統裡面如果有這個公設,任何東西
都證得出來了。甚至連 false 都證得出來。
比如說, (\a -> a) 的 type 可以是 false -> false,
那麼 Y (\a -> a) 的 type 就是 false.
Y (\a -> a) 就是 false 的一個證明。
另一個觀點的讀解是,只要我們允許遞迴,我們就允許了 programmer
寫出不會中斷的程式。(確實 Y (\a -> a) 是一個不會中斷的程式)
同時,data C a = C (C a -> a) 這個東西把 Haskell 的語法拿掉
之後,意思就是在宣告 C a 和 C a -> a 這兩個 type 是一樣的。
也就是說
C a = (((.. -> a) -> a) -> a) -> a
這個 type (或 proposition)被用在 Curry's paradox 裡面。
同樣的,如果 C a 成立,那麼任何東西都成立。
程式語言的研究剛開始時,Christopher Strachey 當時提出了想用
數學方式給程式語言 semantics 的計畫。 Dana Scott 本來想把這
個現象當作一個例子,說服 Strachey:untyped lambda calculus
根本是沒有數學意義的。不過他接下來繼續做呀做的,就發明了
Scott domain, 後來變成 domain theory 的基礎...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.109.20.217
推
04/25 22:24, , 1F
04/25 22:24, 1F
推
04/26 06:34, , 2F
04/26 06:34, 2F
→
04/26 06:35, , 3F
04/26 06:35, 3F
→
04/26 06:35, , 4F
04/26 06:35, 4F
→
04/26 06:36, , 5F
04/26 06:36, 5F
推
04/26 06:40, , 6F
04/26 06:40, 6F
→
04/26 06:40, , 7F
04/26 06:40, 7F
→
04/26 06:41, , 8F
04/26 06:41, 8F
→
04/26 06:42, , 9F
04/26 06:42, 9F
→
04/26 06:42, , 10F
04/26 06:42, 10F
→
04/26 06:42, , 11F
04/26 06:42, 11F
→
04/26 09:07, , 12F
04/26 09:07, 12F
推
04/26 09:09, , 13F
04/26 09:09, 13F
→
04/26 09:10, , 14F
04/26 09:10, 14F
→
04/26 09:12, , 15F
04/26 09:12, 15F
→
04/26 09:13, , 16F
04/26 09:13, 16F
→
04/26 09:13, , 17F
04/26 09:13, 17F
→
04/26 09:14, , 18F
04/26 09:14, 18F
→
04/26 09:15, , 19F
04/26 09:15, 19F
→
04/26 09:15, , 20F
04/26 09:15, 20F
→
04/26 09:16, , 21F
04/26 09:16, 21F
→
04/26 09:16, , 22F
04/26 09:16, 22F
→
04/26 09:18, , 23F
04/26 09:18, 23F
→
04/26 09:19, , 24F
04/26 09:19, 24F
→
04/26 09:19, , 25F
04/26 09:19, 25F
→
04/26 09:20, , 26F
04/26 09:20, 26F
→
04/26 09:21, , 27F
04/26 09:21, 27F
→
04/26 09:21, , 28F
04/26 09:21, 28F
→
04/26 09:22, , 29F
04/26 09:22, 29F
→
04/26 09:23, , 30F
04/26 09:23, 30F
→
04/26 09:24, , 31F
04/26 09:24, 31F
→
04/26 09:24, , 32F
04/26 09:24, 32F
→
04/26 09:25, , 33F
04/26 09:25, 33F
→
04/26 09:26, , 34F
04/26 09:26, 34F
推
04/26 09:33, , 35F
04/26 09:33, 35F
推
04/26 09:40, , 36F
04/26 09:40, 36F
推
04/26 09:42, , 37F
04/26 09:42, 37F
推
04/26 09:48, , 38F
04/26 09:48, 38F
→
04/26 09:50, , 39F
04/26 09:50, 39F
→
04/26 09:50, , 40F
04/26 09:50, 40F
→
04/26 09:51, , 41F
04/26 09:51, 41F
→
04/26 09:52, , 42F
04/26 09:52, 42F
→
04/26 09:52, , 43F
04/26 09:52, 43F
→
04/26 09:53, , 44F
04/26 09:53, 44F
→
04/26 09:54, , 45F
04/26 09:54, 45F
→
04/26 09:54, , 46F
04/26 09:54, 46F
→
04/26 09:56, , 47F
04/26 09:56, 47F
討論串 (同標題文章)
PLT 近期熱門文章
PTT數位生活區 即時熱門文章