abstract sig S {}
one sig S1, S2 in S {}
fact {S1 != S2}
run {-1 < S1.(S2 -> 1)}
當我打開情況下,我得到了合金奇怪的行爲?
integers={-8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7}
univ={-1, -2, -3, -4, -5, -6, -7, -8, 0, 1, 2, 3, 4, 5, 6, 7, S$0, S$1}
Int={-1, -2, -3, -4, -5, -6, -7, -8, 0, 1, 2, 3, 4, 5, 6, 7}
seq/Int={0, 1, 2, 3}
String={}
none={}
this/S={S$0, S$1}
this/S1={S$1}
this/S2={S$0}
從評價者,
(1)S1(S2 - > 1),計算結果爲{}
( 2)none = S1(S2 - > 1)求值爲真
(3)-1 < S1。(S2 - > 1)求值爲真//爲什麼整數少 比空集?
(4)-1 < none給出類型錯誤//這看起來不錯,但給(3),爲什麼 這給出類型錯誤?
(5)0 < = S1。(S2-> 1)評估爲true
(6)0> = S1。(S2-> 1)評估爲true
(7)0 = S1。(S2-> 1)評估爲假//給定(5)(6),似乎 S1。(S2-> 1)評估爲0,但事實並非如此。
(8)0 =無評估爲假
(9)0 < =無給類型錯誤//(8)(9)似乎是有趣的,因爲 「=」 不被解釋爲整數比較。
任何人都可以解釋爲什麼(1) - (9)發生?有錯誤嗎?