小编WuH*_*ted的帖子

使用core.logic查询族树时消除重复结果

我正在用core.logic建模一个家谱.我想run*查询并让他们返回所有结果而不重复.更换所有defndef tabled给我我所期望的结果(至少目前),我知道conduonceo能减少结果的数量,但我不知道如果任这些都是消除重复的最佳途径.

我特别担心我目前的做法,因为宣布关系和功能似乎是重复的工作.我知道我的一些关系是"相互递归"(mothero并互相womano引用),但我这样做是因为将来我可能会添加一个新的(defrel mother*),这应该可以让它推断出母亲既是父母又是女人.

(defrel man* person)
(defrel woman* person)
(defrel parent* child father)

(fact man* :Father)
(fact woman* :Mother)
(fact man* :Son)
(fact woman* :Daughter)
(fact parent* :Son :Father)
(fact parent* :Son :Mother)
(fact parent* :Daughter :Father)
(fact parent* :Daughter :Mother)

(defn mano [person]
(conde 
    [(man* person)]
    [(fresh [c]
        (fathero c person))]))

(defn womano [person]
(conde
    [(woman* person)]
    [(fresh [c]
        (mothero …
Run Code Online (Sandbox Code Playgroud)

clojure clojure-core.logic

11
推荐指数
1
解决办法
1153
查看次数

Haskell无法创建TypeClass的实例

我是Haskell的新手,并且正在尝试使用实例创建一个类.

我有以下代码,我试图说:1)分支可以在其第一个位置保持任何类型,2)创建一个类线性,它取线性的东西,并返回一个数字3)使分支成为线性的实例,如果分支持有的第一件事是Num类的一部分.

data Branch a = Branch a Integer deriving (Show, Eq)

class Linear l where
    length :: (Num a) => l -> a

instance (Num a) => Linear (Branch a) where
    length (Branch len _) = len
Run Code Online (Sandbox Code Playgroud)

我得到错误:无法推断(a~a1)来自实例声明绑定的上下文(Num a).....

有谁知道如何在Haskell中表达我想说的是什么?

haskell types instance typeclass

3
推荐指数
1
解决办法
198
查看次数