作者xcycl (XOO)
看板PLT
标题Re: [问题] 程式语言大部分是 Turing Complete 的吗?
时间Mon Jul 6 23:24:35 2009
※ 引述《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
1F:推 godfat:看起来物件导向的 subclass 是合,但 c++ 这边是 type cast 07/07 00:18
2F:→ godfat:这样可以算吗..? 感觉不算,但用起来是差不多..? 07/07 00:18
3F:→ godfat:又想想可是不能画成一颗树,我想大概就不算吧 @@ 07/07 00:19
4F:→ xcycl:我 ...我忘记 C++ type casting 到底有作哪些事了 (汗 07/07 01:49
5F:推 Schelfaniel:Turing completeness can be shown by using it to 07/09 09:51
6F:→ Schelfaniel:simulate a Turing machine <- 这句就是定义?? 07/09 09:51