我想在HOLCF中创建一个列表数据类型来自Porder.thy的poset实例。我的尝试如下:
theory Scratch
imports Porder Representable
begin
datatype 'a myList =
Nil |
Cons 'a "'a myList"
instantiation myList :: (below) below
begin
definition below_list_def:
"(x ⊑ y) = (case x of Nil ⇒ True |
Cons a xs ⇒ (case y of Nil ⇒ False |
Cons b ys ⇒ a ⊑ b ∧ xs ⊑ ys))"
instance ..
end
我意识到"定义"不支持我正在使用的递归定义,我应该使用" fun"或" fixrec"。但是,我不知道如何在这种情况下使用这些命令。我在网上找到的用于创建po实例的每个示例都使用非递归数据类型。将递归数据类型作为下面的实例和po?
的最佳方法是什么?答案 0 :(得分:1)
您可以在此本地上下文中使用fun
,您只需为其指定正确的名称,即以“_”为后缀的函数名称和实例化的类型名称,在本例中为{{1} }。
然后您的示例将重写为:
below_myList