我正在寻找一个(a -> b -> c -> d) -> c -> a -> b -> d
类型的函数。换句话说,可以将第三个参数部分应用于函数的函数。
有没有库有这样的函数?在其中一个elm社区库中创建一个或添加这样的函数(也许是elm-function-extra)对我有用吗?
发布于 2016-09-17 20:04:30
我不相信有一个包含这个函数的库,但它的定义很简单:
f : (a -> b -> c -> d) -> c -> a -> b -> d
f fn c a b =
fn a b c
它是否属于社区库的问题最好在mailing list or other contribution channels中作为讨论来处理。
我在Hoogle上找不到等效的Haskell函数,所以我的直觉是,如果它还不够有用,不足以在Haskell生态系统中推广,而Elm的大部分内容都是从Haskell生态系统中获得灵感的,那么它可能不太适合核心Elm社区库,但您总是可以在社区论坛上提出自己的观点!
发布于 2016-09-18 15:33:33
榆树包网站现在链接到a utility to search functions by type signature。
我用它来查找你的函数,发现:
swirlr : (a -> b -> c -> d) -> c -> a -> b -> d
它位于Fresheyeball/elm-function-extra中。
您似乎已经知道(或有直觉),但请注意,仅通过查看类型,您就可以知道这就是您正在寻找的函数。实际上,这种类型的函数只存在一个是定理(除非您使用Debug.crash
来实现它!)。这是the 1989 article which described this result,但老实说,它很难读懂。
https://stackoverflow.com/questions/39550428
复制