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

probenはここでは動作しません。どうして?私が理解する限り、check1とcheck2はBOOL値を返すべきです。私はローカル変数を宣言しようとしましたが、これは問題を解決するのに役立たなかった。

答えて

1

check1およびcheck2は、boolの値ではありません。おそらく、あなたは何かにそれらを適用したいでしょうか?

+0

関数'check 'は、check1とcheck2の論理ANDの結果に応じて、0または1だけを返します。この関数は、 の check1 endでのみコンパイルできます。しかし、これは私が必要なものではありません。 –

+0

私は問題を理解しました。この機能の論理は、私が考えていたものとはまったく異なっています。 –