我是一名Haskell初學者,我一直在玩無點功能。我有兩個函數的問題 - lambdabot的解決方案是絕對不可讀的,並且使代碼變得混亂,所以我在這裏問,以便有方法來簡化函數。使Haskell函數免於點
第一個函數從列表中刪除重複項。
func1 :: Eq a => [a] -> [a]
func1 [] = []
func1 (x:xs) = x : (func1 . filter (/=x) $ xs)
我試圖使這一功能的免費點版本foldr
和>>=
,但沒有成功。
第二個函數將列表映射到包含原始元素的元組列表以及它們在列表中發生的頻率。
func2 :: Eq a => [a] -> [(a, Int)]
func2 xs = map (\f -> (f, count f xs)) xs
其中count a = length.filter(==a)
。我不確定是否可以在保持可讀性的同時製作此函數的免費版本,但我想確保。
任何幫助使這兩個功能點免費將不勝感激。