Voici une fonction exemple:Comment utiliser des motifs complexes dans les fonctions?
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"
Isabelle HOL me montre l'erreur suivante:
Malformed definition:
Non-constructor pattern not allowed in sequential mode.
⋀uw_. divide uw_ (Some 0) = None
Pourquoi pattern-matching fonctionne bien pour Some ∞
et ne fonctionne pas pour Some 0
? ∞
est une constante pour la classe infinity
et 0
est une constante pour la classe zero
. Quelle est la différence entre ces constantes?