我需要一个函数,它接受任意数量的参数(都是相同类型的) ,对它们进行处理,然后返回结果。在我的特殊情况下,列出一系列论点是不切实际的。
在查看 haskell 库时,我发现函数 printf
(来自模块 Text.Printf
)使用了类似的技巧。不幸的是,我无法通过观察源头来理解这种魔法。
谁能解释一下如何做到这一点,或者至少给我一些网页/报纸/其他什么地方,我可以找到一个很好的描述这一点?
动机:
我需要这个的原因很简单。对于学校(计算机科学课) ,我们被要求编写一个能够“记录”数学表达式的模块,将其表示为字符串(通过为自己的数据类型编写一个 Num/Real/etc 实例) ,并对其执行各种操作。
此数据类型包含一个变量的特殊构造函数,该变量可以由一个值或任何东西替换为指定的函数。其中一个目标是编写一个函数,该函数使用具有一定数量变量(类型为 (Char,Rational)
的对)的表达式并计算表达式的结果。我们应该着眼于如何最好地表达函数的目标。(我的想法是: 这个函数返回另一个函数,它接受的参数和函数中定义的 var 一样多——这似乎是不可能的)。