NONE
文字列と文字列のリストを取り、文字列リストに文字列がない場合は返す関数を作成したい、そうでない場合SOME
は、含まれていないことを除いて文字列の元のリストと同じ文字列のリストを返します最初の文字列 (パターン):
fun my_function (pattern, source_list) =
case source_list
of [] => NONE
| [x] => if pattern = x then SOME [] else NONE
| x::xs =>
if pattern = x
then SOME (xs)
else SOME (x) :: my_function (pattern, xs) (* this is wrong, what to do here?*)
val a = my_function ("haha", ["12", "aaa", "bbb", "haha", "ccc", "ddd"]) (* should be SOME ["12", "aaa", "bbb", "ccc", "ddd"]*)
val a2 = my_function ("haha2", ["123", "aaa", "bbb", "haha", "ccc"]) (*should be NONE*)
val a3 = my_function ("haha3", ["haha3"]) (* should be SOME []*)
3番目のケースで混乱しています:x::xs => ....
そこで何をすべきですか? sml ライブラリ関数を使用したくないことに注意してください。