有没有办法在Haskell中使用printf格式的print?

Xze*_*non 8 haskell functional-programming

在我寻求获得Haskell的进一步经验的过程中,我开始使用print和printf.

我想尝试打印一个数组(好吧,几个,但它只是一个开始),我想使用这种格式"%+.4f",这意味着我会得到:

+2.1234 or -1.2345
Run Code Online (Sandbox Code Playgroud)

但是我注意到使用printf打印数组非常困难,所以我尝试切换到打印.以这种方式打印列表似乎更容易,但我不确定如何使用与printf相同的格式打印列表元素.

我的列表看起来像这样:

[-1.2, 2.3, 4.7, -6.850399]
Run Code Online (Sandbox Code Playgroud)

Gur*_*las 3

两个变体应该执行相同的操作,使用 printf 的两种可能的返回类型:

putStrLn $ concatMap (printf "%+.4f\n") [-1.2, 2.3, 4.7, -6.850399]
mapM_ (printf "%+.4f\n") [-1.2, 2.3, 4.7, -6.850399]
Run Code Online (Sandbox Code Playgroud)

编辑:用于深度遍历两个列表:

putStrLn $ (concatMap . concatMap) (printf "%+.4f\n") [[-1.2, 2.3], [4.7, -6.850399]]
(mapM_ . mapM_) (printf "%+.4f\n") [[-1.2, 2.3], [4.7, -6.850399]]
Run Code Online (Sandbox Code Playgroud)