【发布时间】:2015-07-29 01:11:35
【问题描述】:
简单的任务:我想要的只是一个将参数列表应用于柯里化函数的函数。
假设我们的函数是著名的add one:
fun add a b = a + b;
现在我想要的只是一个将列表(比如[1, 5])应用到add 的函数。这看起来像:
apply add [1, 5];
这似乎比我想象的要难。我的尝试:
fun apply f ps = foldl (fn (p, f') => f' p) f ps;
但这会得到这个有趣的可读错误消息:
Error: operator and operand don't agree [circularity]
operator domain: 'Z * ('Z -> 'Y) -> 'Z -> 'Y
operand: 'Z * ('Z -> 'Y) -> 'Y
in expression:
foldl (fn (p,f') => f' p)
现在,我的实现有什么问题?在 SML/NJ 甚至有可能吗?
干杯并感谢您的提示和答案。
【问题讨论】:
标签: functional-programming sml currying