我是 Haskell 初学者,我一直在玩无点函数。我有两个函数的问题 - lambdabot 的解决方案绝对不可读并且使代码混淆,所以我在这里询问是否有办法简化函数。
第一个函数从列表中删除重复项。
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)
。我不确定是否可以在保持可读性的同时制作此功能的无点版本,但我想确定一下。
任何有关使这两个功能无点的帮助将不胜感激。