私はハスケルの初心者です。私はポイントフリーの関数で遊んでいます。私は2つの機能に問題があります。lambdabotのソリューションは完全に読めなくなり、コードが難読化されてしまったので、機能を単純化する方法がある場合はここで尋ねています。ハスケル関数をポイントフリーにする
最初の機能は、リストから重複を削除します。
func1 :: Eq a => [a] -> [a]
func1 [] = []
func1 (x:xs) = x : (func1 . filter (/=x) $ xs)
私はfoldr
と>>=
で、この関数のポイント・無料版を作ってみましたが、成功しませんでした。
第2の関数は、リストを元の要素を含むタプルのリストとリスト内で発生した頻度にマップします。
func2 :: Eq a => [a] -> [(a, Int)]
func2 xs = map (\f -> (f, count f xs)) xs
ここで、count a = length.filter(==a)
である。私は可読性を維持しながらこの関数の無点バージョンを作ることさえ可能であるかどうかはわかりませんが、私は確信しています。
2つの機能をポイントフリーにするための助けがあれば幸いです。