定义了两个包含相同函数的类,但是当在语言环境中使用这两个类时会出现统一错误:
class c2 =
fixes getName_b :: "'a ⇒ string"
通过将(getName b)重命名为(getName_b b)并使用类定义来解决统一错误
{{1}}
如果没有重命名,是否存在解决方案?
Here当数据类型为参数时需要重载时,会给出解决方案。
答案 0 :(得分:1)
可以使用完全或部分限定的标识符。我使用find_consts
,如下所示,找到类型类常量的限定名称。
类型推断仅要求我使用c1_class.getName a
来消除错误。
theory Scratch
imports Complex_Main
begin
class c1 =
fixes getName :: "'a => string"
class c2 =
fixes getName :: "'a => string"
find_consts name: getName (*
find_consts
name: "getName"
found 2 constant(s):
Scratch.c1_class.getName :: "'a => char list"
Scratch.c2_class.getName :: "'a => char list"
*)
declare[[show_sorts]]
locale c12 =
fixes match :: "('a::c1) => ('b::c2) => bool"
assumes as : "match a b --> (c1_class.getName a) = (getName b)"
end