Haskell printf для строки

Есть ли эквивалент sprintf в Haskell?

Мне нужно преобразовать с двойными значениями формата в String, так что есть ли другой способ без использования функций printf.

Основная проблема:

Prelude> putStrLn myDoubleVal
1.7944444444444447e-2

Я хочу вместо этого

Prelude> putStrLn . sprintf "%.2f" $ myDoubleVal
1.79

Ответы

Ответ 1

Да, это в модуле Text.Printf, и он просто называется printf.

> import Text.Printf
> let x = 1.14907259
> putStrLn . printf "%.2f" $ x
1.15

Обратите внимание, что возвращаемый тип printf перегружен, поэтому он способен возвращать String (как в примере выше), но также способен возвращать действие ввода-вывода, которое выполняет печать, поэтому вы на самом деле не нужен вызов putStrLn:

> printf "%.2f\n" x
1.15

Ответ 2

Text.Printf может быть тем, что вам нужно.