2
下面是一個簡單的功能:如何在函數中使用複雜模式?
fun divide :: "enat option ⇒ enat option ⇒ real option" where
"divide (Some ∞) _ = None"
| "divide _ (Some ∞) = None"
| "divide _ (Some 0) = None"
| "divide (Some a) (Some b) = Some (a/b)"
| "divide _ _ = None"
伊莎貝爾HOL顯示我下面的錯誤:
Malformed definition:
Non-constructor pattern not allowed in sequential mode.
⋀uw_. divide uw_ (Some 0) = None
爲什麼模式匹配工作正常Some ∞
和Some 0
不起作用? ∞
是類別infinity
的常量,0
是類別zero
的常數。這些常量之間有什麼區別?