在Elm中重新排序函数参数

时间:2016-09-17 18:40:49

标签: elm

我正在寻找Declare @Reps table (Name varchar(50)) Insert Into @Reps Select Distinct Name From Representatives Select * From OtherTable Where RepName not in (Select * From @Reps) 类型的函数。换句话说,一个可以将第三个参数部分应用于函数的函数。

是否有具有此类功能的库?对我来说,为一个榆树社区图书馆(也许是elm-function-extra)创建一个或添加这样的函数是否有用?

2 个答案:

答案 0 :(得分:4)

我不相信存在具有该功能的库,但定义它是微不足道的:

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的大部分都会吸取它的灵感,这可能不太好适合核心的榆树社区图书馆,但您可以随时在社区论坛中提出您的观点!

答案 1 :(得分:3)

Elm包网站现在链接到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,但说实话,这很难理解。