Haskell PrintF格式

时间:2014-02-27 17:46:58

标签: haskell

我有一个函数fnAvg生成一个浮点数,我希望show,直到我尝试使用printf格式化它。我想得到1dp,环顾四周我用“%.1f”和printf来到那里:

show ( printf "%.1f" fnAvg film)

我没有(PrintFArg电影)的实例。

我尝试移动方括号,或者将其show (printf "%.1f" (fnAvg Film))移动,但这也导致show也没有出现实例错误。我犯了错误还是简单的格式化问题?

编辑:

该节目的原因是它是一个更大的列表的一部分:

[... ++ printf "%.1f" (show (fnAvg film)) ]

我想出了上面的语法,但它输出了一个PrintF.printf错误的参数错误。

2 个答案:

答案 0 :(得分:3)

您的原始版本有一个无关的show,并且正在将fnArgfilm作为两个单独的参数传递给printfprintf有一个奇怪的系统来支持变量参数,这就是你得到奇怪错误的原因。

您的第二个版本尝试show float,这导致将String类型的变量传递为0.1f格式,这也不起作用。

答案 1 :(得分:2)

printf期待一个论点,但你已经给了它两个。此外,此处不需要show

也许你想要printf "%.1f" (fnAvg film)