Re: [問題] 程式語言大部分是 Turing Complete 的嗎?

看板PLT (程式語言與理論)作者 (XOO)時間15年前 (2009/07/06 23:24), 編輯推噓2(204)
留言6則, 3人參與, 最新討論串6/6 (看更多)
※ 引述《godfat (godfat 真常)》之銘言: : fixed typo : ※ 引述《noctem (noctem)》之銘言: : : 似乎是有點像呢。None 是... 任何 type 的 subtype 嗎? : : 所以 undef 可以放到任何上下文裡面。即使我宣告一個 : : 沒有 constructor 的 type (有這個東西嗎?),undef : : 也可以當作他的成員? : 我不是很確定 subtype 的確切定義,不過這邊的 None 是可以 : implicitly cast 成任何的 type, 因此可以放到任何上下文沒錯。 根據 Pierce 書上的定義,或是 wikipedia 上的解釋, 都是在 typing rule 上加上這條 subsumption: Γ├ t : S , S ≦ T ------------------- Γ├ t : T 以及滿足 S ≦ S (reflexive) S ≦ U , U ≦ T --------------- (transitive) S ≦ T 也就是在 type 上有 preorder relation。 至於引入 subtype 之後的系統,通常會把 bottom type (也就是 empty type, none) 當作所有 type 的 subtype;而另外還有 top type,所有 type 都會是 top 的 subtype 不過這個在沒有 subtype 的系統下,似乎沒有意義? : 至於沒有 constructor 的 type 嘛... 就我所知,C++ 即使沒有定義 : constructor, compiler 也會自動幫你生一個,所以... : 是可以把 constructor 宣告成 private, 然後不去定義他。 : 這種狀況下可以確保絕對不會產生這個 type 的 value, : 因為任何可能會產生 value 的情況都會導致 compile error. : (i.e. cannot access private constructor) : 說是這樣說啦... XD : 剛剛測試卻很奇怪,在有 return type 卻沒有真正 return value 的 : function 裡,像是前面提到的: : None undef(){} : 這樣似乎仍然會產生一個 None 的 temporary value 出來, : 就算 constructor 不存在,也確實沒有呼叫到... : 這邊可能要看看 spec 是怎麼寫,還有 compiler 是怎麼做的了, : 我不是很清楚 @@ 或許跟 stack 有關... 因為產生的 value 滿怪的 O_o : 我想 C++ 大概還是不適合玩這些吧... XD : 只是正好有一些地方似乎有點神似? : : 以後你可以去多教別人囉~ : 如果有人想聽,也不介意可能會講錯的話... XD -- 寫完上面這個就忘記原本要說什麼了 Q"Q -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.109.23.218

07/07 00:18, , 1F
看起來物件導向的 subclass 是合,但 c++ 這邊是 type cast
07/07 00:18, 1F

07/07 00:18, , 2F
這樣可以算嗎..? 感覺不算,但用起來是差不多..?
07/07 00:18, 2F

07/07 00:19, , 3F
又想想可是不能畫成一顆樹,我想大概就不算吧 @@
07/07 00:19, 3F

07/07 01:49, , 4F
我 ...我忘記 C++ type casting 到底有作哪些事了 (汗
07/07 01:49, 4F

07/09 09:51, , 5F
Turing completeness can be shown by using it to
07/09 09:51, 5F

07/09 09:51, , 6F
simulate a Turing machine <- 這句就是定義??
07/09 09:51, 6F
文章代碼(AID): #1AKXSsUe (PLT)
討論串 (同標題文章)
文章代碼(AID): #1AKXSsUe (PLT)