【发布时间】:2013-03-20 20:13:13
【问题描述】:
我正在寻找一种实用的方法来实现它:
list = [a b c d e f]
foo(list, 3) = [[a d] [b e] [c f]]
一个潜在的解决方案是:
foo(list,spacing) = zip(goo(list,spacing))
例如在哪里
goo([a b c d e f],3) = [[a b c] [d e f]]
foo 和 goo 通常叫什么,所以我可以寻找现有的解决方案而不是重新发明轮子?
注意:我只是展示了一些希望更容易获得的示例,而不是试图用文字来解释。用于更广泛理解的任意语法。
【问题讨论】:
-
我认为您正在寻找的术语是“高阶函数”或“组合子”。
-
在您的第一个示例中是否切换了
c和d?如果输入列表的长度是输入数字的两倍以上怎么办? -
@DanielWagner 这是非常错误的,抱歉。
foo相当于zip(partition(list,spacing)),正如 mobyte 所指出的,但它可能没有名字。 -
我不认为这些是高阶函数,因为它们不将函数作为参数。
-
Hoogle (haskell.org/hoogle) 允许您通过 type 搜索 Haskell 标准库,而不仅仅是名称。因此,如果您想要的功能看起来应该是“显而易见的”,但您不确定它会被调用什么,并且您可以弄清楚它应该具有的 Haskell 类型,您可以尝试 Hoogle。它并不总是完美的,但它通常会有所帮助。即使您想查找其他语言的函数,它至少可以为您提供一个通用名称。
标签: function haskell clojure functional-programming lisp