Questions tagged «polyvariadic»

1
Haskell printf如何工作?
Haskell的类型安全是第二首屈一指只依赖类型语言。但是Text.Printf有一些深层的魔力,似乎很打字。 > printf "%d\n" 3 3 > printf "%s %f %d" "foo" 3.3 3 foo 3.3 3 这背后的深层魔力是什么?Text.Printf.printf函数如何接受像这样的可变参数? Haskell中允许可变参数使用的一般技术是什么,它是如何工作的? (附带说明:使用此技术时,某些类型的安全性显然丢失了。) > :t printf "%d\n" "foo" printf "%d\n" "foo" :: (PrintfType ([Char] -> t)) => t

5
如何创建多变量haskell函数?
我需要一个函数,该函数接受任意数量的参数(所有类型相同),对它们执行某些操作,然后返回结果。在我的具体情况下,参数列表是不可行的。 当我浏览haskell库时,我看到该函数printf(来自module Text.Printf)使用了类似的技巧。不幸的是,通过查看源代码我无法理解这种魔力。 有人可以解释如何实现这一目标,或者至少可以解释一些网页/论文/无论我能在哪里找到合适的描述吗? 动机: 我需要这个的原因确实很简单。对于学校(计算机科学班),我们需要编写一个模块,该模块能够“记录”数学表达式,将其表示为字符串(通过为自己的数据类型编写Num / Real / etc实例),然后执行各种操作就可以了。 此数据类型包含变量的特殊构造函数,可以用值或指定函数替换任何值。目标之一就是编写一个函数,该函数采用带有一些变量(成对的type (Char,Rational))的表达式,并计算表达式的结果。我们应该看看如何最好地表达功能的目标。(我的想法:该函数返回另一个函数,该函数接受与该函数中定义的var一样多的参数-似乎是不可能的)。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.