在Elm中,是否有一个高阶函数来转换一个函数,该函数将两个相同类型的参数转换为一个函数,该函数接受一个参数并将其作为两个参数传递给原始函数?
这样的功能会有以下签名:
twiceTo: (a -> a -> b) -> (a -> b)
它可以用来定义,例如,这些函数。
square = twiceTo (*)
tuplize = twiceTo (,)
square 4 -- returns 16
tuplize 1 -- returns (1, 1)
将函数定义为twiceTo func a = func a a
会很容易,但是这个函数是否存在于核心库或任何其他库中?更重要的是,有没有办法从核心库中的高阶帮助程序中编写此函数,如always
,identity
,>>
,|>
和朋友?在不必声明额外函数或使用匿名函数的情况下使用它是很好的。