Idris で次のような関数を作成しようとしました。
strSplit : String -> Maybe (Char, String)
Char
これは、文字列を最初の文字列と残りの文字列に「un-cons」し、Nothing
空の場合は戻ります。
だから私はこれを書きましたが、失敗しました:
strSplit x = case strM of
StrNil => Nothing
StrCons c cd => Just (c, cs)
それで、私はこれを試しましたPrelude.Strings
。
strSplit x with (strM x)
strSplit "" | StrNil = Nothing
strSplit (strCons c cs) | (StrCons c cs) = Just (c, cs)
これは問題なくコンパイルおよび実行されました。
私の質問は、なぜwith
このように文字列を分割するためにその規則を使用しなければならないのですか? また、元の方法が失敗するのはなぜですか?
注: 申し訳ありませんが、現時点ではインタープリターにアクセスできないため、エラー メッセージをここに書き込むことはまだできません。