所以我是新來的sml,並且試圖理解ins/out。最近我嘗試創建一個帶兩個參數的過濾器:一個函數(返回一個布爾值)以及一個針對該函數運行的值列表。過濾器所做的是返回對該函數返回true的值列表。將值過濾到兩個列表中
代碼:
fun filter f [] = [] |
filter f (x::xs) =
if (f x)
then x::(filter f xs)
else (filter f xs);
使作品。但是我現在想要做的僅僅是返回一個包含真值列表的元組,以及false。我被困在我的條件上,我真的不能看到另一種方式。有關如何解決這個問題的任何想法?
代碼:
fun filter2 f [] = ([],[]) |
filter2 f (x::xs) =
if (f x)
then (x::(filter2 f xs), []) (* error *)
else ([], x::(filter2 f xs)); (* error *)