0

標準 ML を学習していますが、このエラーが何度も発生しますが、その理由がわかりません。

コードとエラーは次のとおりです。

> fun in_list(element, list) = 
    if hd(list) = element then true
    else val tempList = List.drop(list, 1);
    in_list(element, tempList);
# # Error-Expression expected but val was found
Static Errors

私が試みている構文に何か問題があるに違いないことはわかっています。

4

1 に答える 1

3

val値をlet..in..endブロックにラップする必要があります。

fun in_list(element, list) = 
    if hd(list) = element then true
    else 
        let
           val tempList = List.drop(list, 1)
        in
           in_list(element, tempList)
        end

さらに、リストを分解することはお勧めしませんhddrop代わりにパターン マッチングを使用する必要があります。

fun in_list(element, x::xs) = 
    if x = element then true
    else in_list(element, xs)

空のリストが欠落している基本ケースがあり、 を使用orelseして置き換えることができますif x = element then true ...。それらを提案として残します。

于 2012-10-23T07:39:05.087 に答える