看板 PLT 關於我們 聯絡資訊
※ 引述《godfat (godfat 真常)》之銘言: : 一般而言是把 void 當成 bottom, 不過當然性質上應該是差滿多的... : 至少這件事是沒辦法做的: : void undef(){} : int i = undef(); // type error : 而就像 Haskell 可以: : undef = undef : f :: Int : f = undef 這倒是沒關係啦。前面的討論是說是否每個 type 都能寫出一個 term, 但不一定要是同一個。 : 這樣程式會立即有 exception, 而不是卡住。不過改成 while(true); 也行.. : (Haskell 的 undefined 大概就類似這邊的 None 吧?) 似乎是有點像呢。None 是... 任何 type 的 subtype 嗎? 所以 undef 可以放到任何上下文裡面。即使我宣告一個 沒有 constructor 的 type (有這個東西嗎?),undef 也可以當作他的成員? : 另一方面則是關於 ternary operator, 像是: : int i = condition ? something() : undef(); : 或是更激進的: : int i = something() || undef(); 啊,這個很有趣~ : noreturn_t/None 那篇看日期是三年前的討論,那時我只隱隱約約覺得 : 好像看到什麼地圖可以畫出來,但又不知道是什麼,看來現在多懂很多了 @@ 以後你可以去多教別人囉~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 133.11.138.164