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
的常数。这些常量之间有什么区别?