【发布时间】:2015-03-29 17:15:04
【问题描述】:
我正在寻找一个类似这样的函数:
withSelf :: (a -> b) -> a -> (a, b)
withSelf f x = (x, f x)
我已经用 Hoogle 搜索过这样的功能;我搜索了(a -> b) -> a -> (a, b) 和a -> (a -> b) -> (a, b),这两个都不是结论性的。 Hackage page on Data.Tuple 也没有我要找的东西。
我知道写起来很简单,但我想尽可能地编写惯用的 Haskell,并避免重新发明轮子。
【问题讨论】:
-
Hayoo 会找到一些:hayoo.fh-wedel.de/?query=%28a+-%3E+b%29+-%3E+a+-%3E+%28a%2Cb%29 但我怀疑这些比重新定义它更符合地道(如果您必须为此获取这些库)而不是快速轻松地重新定义它
-
在像 Haskell 这样的语言中,像这样的多态函数的一个好处是,基本上只有一种方法可以定义类型为
(a -> b) -> a -> (a, b)的函数。所以从某种意义上说,你不必担心像这样重新发明轮子;类型系统强制你的轮子和其他人的一样好! ;)