だから私はsmlが初めてで、そのイン/アウトを理解しようとしています。最近、関数 (ブール値を返す) と関数に対して実行する値のリストの 2 つのパラメーターを取るフィルターを作成しようとしました。フィルターが行うことは、関数に対して true を返す値のリストを返すことです。
コード:
fun filter f [] = [] |
filter f (x::xs) =
if (f x)
then x::(filter f xs)
else (filter f xs);
それでうまくいきます。しかし、私が今やろうとしているのは、真の値と偽のリストを含むタプルを返すことです。私は条件付きで立ち往生しており、別の方法が本当にわかりません。これを解決する方法について何か考えはありますか?
コード:
fun filter2 f [] = ([],[]) |
filter2 f (x::xs) =
if (f x)
then (x::(filter2 f xs), []) (* error *)
else ([], x::(filter2 f xs)); (* error *)