haskell - 如何创建 polyvariadic haskell函数?

  显示原文与译文双语对照的内容
106 1

我需要一个函数,该函数采用任意数量的参数( 所有相同类型),然后使用它们,然后给出一个结果。在具体情况下,参数列表是不可行的。

当我浏览haskell库时,我看到 function printf (from module Text.Printf ) 使用了类似的技巧。不幸的是,我无法通过查看源代码来理解魔术。

有人能解释如何实现这一点,或者者至少有一些 webpage/paper/whatever 可以以在这里找到这个?

动力:

我需要这个的原因非常简单。对于学校( 计算机科学类),需要编写能够将数学表达式表达为字符串,并将它的表示为字符串的模块,并对它的执行各种操作。

这里数据类型包含一个变量的特殊构造函数,可以以由值或者指定函数替换。它的中一个目标是编写一个函数,它带有一些变量( 。(Char,Rational) 类型的对)的表达式,并计算表达式的结果。我们应该看看如何表达函数的最佳目标。( 我的想法是:函数返回另一个函数,它的参数与函数中定义的函数一样多。

时间:原作者:0个回答

78 2

很多人告诉你如何创建可变的函数,但是在这种情况下,你实际上最好使用一个类型为 [(Char,Rational)]的列表。

原作者:
76 0

在variadic函数的维基文章中,本文引用了 我想这就是printf所做的,但我不理解它。无论如何,这确实是,尤其是因为你的参数都是相同类型。把它们都放在一个列表里。这就是列表对于一个类型相同的事物的好处。很好,不是很漂亮,但它不会比完整的polyvariadic函数更糟糕。

原作者:
...