Haskell的types安全性对于依赖types语言来说是首屈一指的 。 但是, Text.Printf有一些非常神奇的东西 ,看起来相当不可思议 。 > printf "%d\n" 3 3 > printf "%s %f %d" "foo" 3.3 3 foo 3.3 3 这背后有什么深奥的魔力? Text.Printf.printf函数如何使用像这样的可变参数? 什么是用于允许在Haskell中可变参数的一般技术,它是如何工作的? (注意:使用这种技术时,某些types的安全性显然已经丢失。) > :t printf "%d\n" "foo" printf "%d\n" "foo" :: (PrintfType ([Char] -> t)) => t