2011-12-19 78 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