【发布时间】:2012-04-14 22:01:09
【问题描述】:
我是一名 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)。我不确定是否可以在保持可读性的同时制作此函数的无点版本,但我想确定一下。
任何有关使这两个功能无点的帮助将不胜感激。
【问题讨论】: