我想创建一个以元组为参数的定义。
definition my_def :: "('a × 'a) ⇒ bool" where
"my_def (a, b) ⟷ a = b"
然而,这是不被接受的。错误消息是
Bad arguments on lhs: "(a, b)"
The error(s) above occurred in definition:
"my_def (a, b) ≡ a = b"
使用fun
代替definition
有效,但这不是我想要的。以下符号也有效,但有点难看:
definition my_def :: "('a × 'a) ⇒ bool" where
"my_def t ⟷ fst t = snd t"
在definition
中使用元组作为参数的最佳方法是什么?
答案 0 :(得分:2)
使用fun
可能是最不痛苦的方法,定义包无法识别左侧的模式。
另一种选择是使用lambda表达式的元组模式:
my_def ≡ %(a,b). a = b