在Scheme中只传递一个参数而不是两个参数

时间:2015-03-08 05:21:15

标签: scheme guile

我在方案(extract-disjunct word nodes)中有一个函数,它有两个参数:wordnodes

我有一句话:"这是一个测试句"。对于这句话中的每个单词,我想应用上面给出的函数。

这可以通过简单的地图操作来完成。

然而,问题是: 第二个参数nodes本身就是一个嵌套列表,并且参数对于给定的句子保持相同,即对于我打算应用映射的单词列表,它将保持不变。它不会改变。

我想像这样应用地图: (map extract-disjunct word nodes)

但是,我收到错误。有什么解决方案吗?我可以在地图常量中保留一个参数吗?

1 个答案:

答案 0 :(得分:3)

只需定义另一个带有word参数的函数并将其传递给nodes的常量extract-disjunct参数。使用currying,您可以使其适用于任何常量nodes

(define ((curried-extract-disjunct nodes) word) (extract-disjunct word nodes))

(map (curried-extract-disjunct nodes) words)