【发布时间】:2021-02-22 04:12:57
【问题描述】:
所以我有两种自定义数据类型:
datatype ('a, 't) action = ACTION (name: "'a") (args: "'t list") ("⌈_ _⌋")
和
datatype ('a, 't) multiaction = MULTIACTION "('a, 't) action multiset" ("⟨(_)⟩")
它们都使用给定的符号,但是每当我想以它们漂亮的打印格式使用这些数据结构时,它看起来有点多余。例如:
value "⟨{#⌈a b⌋, ⌈c d⌋#}⟩"
我想要做的是没有多组括号的上述类型,所以它看起来像这样:
value "⟨⌈a b⌋, ⌈c d⌋⟩"
我尝试过的是使用语法:
syntax
"_maction" :: "args ⇒ ('a, 't) multiaction" ("⟨_⟩" [0] 60)
translations
"⟨x⟩" == "CONST MULTIACTION {#x#}"
但是当我尝试使用一些数据类型时:
value "⟨⌈''x'' [1,2,3::int]⌋⟩"
但是我得到了一个很好的排序错误,我不知道它为什么会发生。我可以帮忙吗?
提前致谢!
【问题讨论】:
-
pt类型是什么? -
另外,
multiaction类型的用途是什么?您可以将其作为类型同义词引入。 -
另外,'wellsortedness error' 通常意味着没有正确设置代码生成。它不应该与语法有关。
-
@ManuelEberl 抱歉,这是一个多动作,而不是 pt。我会解决的。在实际代码中,该数据类型(最初称为“pt”)中不仅仅是多操作,所以我认为我不能使用类型同义词。
标签: functional-programming isabelle algebraic-data-types