私は Haskell の初心者で、ポイントフリー関数で遊んでいます。私は2つの関数に問題があります.ラムダボットのソリューションは完全に判読できず、コードが難読化されていたため、関数を簡素化する方法がある場合に備えてここで質問しています.
最初の関数は、リストから重複を削除します。
func1 :: Eq a => [a] -> [a]
func1 [] = []
func1 (x:xs) = x : (func1 . filter (/=x) $ xs)
この関数のポイントフリー バージョンをfoldr
andで作成しようとしまし>>=
たが、成功しませんでした。
2 番目の関数は、リストを元の要素を含むタプルのリストにマップし、それらがリスト内でどのくらいの頻度で発生したかを示します。
func2 :: Eq a => [a] -> [(a, Int)]
func2 xs = map ( \f -> (f, count f xs) ) xs
どこでcount a = length.filter(==a)
。読みやすさを維持しながら、この関数のポイントフリー バージョンを作成できるかどうかはわかりませんが、確認したいと思います。
2 つの機能をポイントフリーにするための助けをいただければ幸いです。