プロが教える店舗&オフィスのセキュリティ対策術

リストの中から入力した名前と一致するものだけを抜き出して新たにリストを作る関数を作成したのですが

Warning: match nonexhaustive
(S,nil)=>...
(S,(x,a,k) :: nil) => ...

というエラーが出て、その原因がわからず困っています。
以下関数のソースです。
どなたかお願いします。

fun andname S nil = nil
| andname S [(x,a,k)] =
let val (X,A,K) = hd[(x,a,k)]
val [(X',A',K')] =tl[(x,a,k)]
in
if ssearch S X = true then [(X,A,K)]@(andname S [(X',A',K')]) else nil@andname S [(X',A',K')]
end;

A 回答 (1件)

このワーニングは、パターンが全てを網羅していないことを警告しています。



示されている関数の場合は以下のようになるため、長さ2以上のリストについて
定義されていないことになります。
andname S nil    ⇒ 空リストのパターン
andname S [(x,a,k)] ⇒ 長さ1のリストのパターン
    • good
    • 0
この回答へのお礼

こちらでもありがとうございます
リストの表し方を勘違いしていました

お礼日時:2009/02/06 08:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!