2011-12-19 121 views
1

在学习SML时,我想出了以下问题。看看这个例子:SML:布尔函数

fun check (elem,myList) = 
let 
    fun check1 elem [] = fn (x,_,_) => elem > x 
    fun check2 elem [] = fn (_,y,_) => elem < y 
in 
    if check1 andalso check2 then 1 else 0 
end 

探针是如果那么规则在这里不起作用。为什么?据我了解,check1和check2应该返回BOOL值,它允许使用IF THEN。我试图声明局部变量,但这并没有帮助解决问题。

回答

1

check1check2是函数,而不是bool的值。据推测,你会想将它们应用于某些东西?

+0

函数'check'应该只返回0或1,这取决于check1和check2的逻辑AND的结果。此功能只能在 的 check1 结束时编译。但这不是我所需要的。 – 2011-12-19 13:51:41

+0

好吧,我明白了这个问题。这个功能的逻辑与我所考虑的完全不同。 – 2011-12-19 14:04:51