3
我是新來的Haskell和它的語義。我瞭解到,並不是每個函數都可以映射到一個對象。例如:哈斯克爾語義不定值
square :: Int -> Int
square x = x*x
將square的值映射到數學對象。但是,對於任何非終止函數,我們將其映射到一個特殊的數學值⊥
。我想知道如果我必須用這個未定義的值進行計算會發生什麼。例如,我有一組數字Z⊥ ={⊥, 1,0,-1}
。如果我將⊥
與1相乘,輸出是多少?因爲,⊥
的類型將是未定義的,我可以用定義好的類型進行乘法運算嗎?因爲,⊥
是在Z⊥
的域名,我想我可以做乘法。但是,那麼它將不得不返回⊥
!我想就此有一些指導!
作爲進一步的說明,'˚F⊥≠⊥'允許當且僅當對於所有的x,'˚FX = F⊥'。 –
是的,這就是我所說的「任何依賴於'⊥'值的計算',這是上面用俗語表示的:如果'f'不依賴於'x',函數可以產生一個具體的值當應用於最低值時。在另一個說明中,'⊥≠⊥',這就是爲什麼我在上面發明了模糊的「等價」操作符的原因;) – dflemstr
@DietrichEpp:不正確;考慮'f x =(x,x)'。對於所有'x',正確的規則是'f⊥⊑f x'。 – ehird