使用Prolog进行类型检查

时间:2019-03-26 14:24:55

标签: types prolog typechecking

我试图用Prolog编写类型检查器,但是我是Prolog的菜鸟,我的规则不起作用,我不明白为什么?

(我已经为bool等定义了事实)

类型是列表,例如int * int -> int[int,int,int],因此“ add”的类型是lastOf([int,int,int])

我的规则:if e1:bool, if e2:t and if e3:t, so (if e1 e2 e3):t

我的Prolog规则:

type( iF(Cond, Cons, Alter), Env, Y) :- 
    type( Cond, Env, T1) , 
    type( Cons, Env, T2), 
    type( Alter, Env, T2), 
    lastOf( X, T1), 
    X == bool, 
    lastOf( Y, T2).

0 个答案:

没有答案