我与别人的堆栈溢出的问题,一个简单的函数玩耍,并写下了表达(与应用型((>)T),也许?):删除重复数据删除 -
f a x ++ f a y
显然,这是在现实生活中编写这个表达式的最好方法,因为我已经有了所有这些变量,但是我看到了f a
的重复,并且认为“嘿,也许你可以用Applicative实例去除那些函数”。我结束了:
liftA2 (++) (flip f x) (flip f y) a
这只是可怕的。是否有更好的方法来消除这种重复?显然,我也可以通过将f a
绑定到where
子句中的某些东西来删除重复内容,但这是为了使用内置函数的练习。
我喜欢这个答案,虽然!我想我并没有真正在寻找Applicative的答案,以至于如何使用标准库去除重复。 – amalloy