我需要一个函数,它接受任意数量的参数(所有相同类型),对它们做一些事情,然后返回结果。在我的具体情况下,论点列表是不切实际的。
当我查看 haskell 库时,我看到该函数printf
(来自 module Text.Printf
)使用了类似的技巧。不幸的是,我无法通过查看源代码来理解这种魔力。
有人可以解释如何实现这一点,或者至少是一些网页/论文/我可以在哪里找到一个很好的描述吗?
动机:
我需要这个的原因真的很简单。对于学校(计算机科学课),我们需要编写一个能够“记录”数学表达式的模块,将其表示为字符串(通过为自己的数据类型编写 Num/Real/etc 的实例),并执行对其进行各种操作。
此数据类型包含一个变量的特殊构造函数,它可以被一个值或任何指定函数替换。目标之一是编写一个函数,该函数接受这样一个带有一些变量(类型对(Char,Rational)
)的表达式并计算表达式的结果。我们应该看看如何最好地表达函数的目标。(我的想法:该函数返回另一个函数,该函数采用与函数中定义的变量完全相同的参数 - 似乎是不可能的)。