Что такое Haskell эквивалентстрока форматирования в Haskell
string str = string.Format("{0} {1}",10,20); // C#
Что такое Haskell эквивалентстрока форматирования в Haskell
string str = string.Format("{0} {1}",10,20); // C#
Существует модуль Printf в GHC.
import Text.Printf
str :: String
str = printf "%d %d" 10 20
однако это, вероятно, проще всего сделать
str = show 10 ++ " " ++ show 20
Вы можете использовать функцию format
предоставленную text-format-simple пакет:
import Text.Format
format "{0} {1}" [show 10, show 20]
Эта функция имеет подпись:
format :: String -> [String] -> String
Так все, что вам нужно, это обеспечить параметры в строках.
Другой пример:
format "Some {0} believes that 1 + 1 = {1}." ["people",show 10]
Вау! Форматирование стиля C# в haskell. Отличная работа Дмитрий! и добро пожаловать в stackoverflow! –
Я бы рекомендовал/не использовал этот пакет, так как он очень ограничен в том, что он может сделать. Я работаю над пакетом с именем [text-format] (http://hackage.haskell.org/package/text-format), который, как правило, более способен и уже вполне подходит для этой цели. –
Дмитрий, все пакеты, которые вы указали, за исключением двойного преобразования, включены в платформу Haskell. Подавляющему большинству пользователей не придется устанавливать столько. Однако аргумент остается действительным. –
Ввод ответа здесь в случае, если кто-то ищет форматирования библиотеки в Haskell на StackOverflow. Там есть безопасная и быстрая библиотека форматирования, которая называется fmt
. С его помощью вы можете написать такой код:
> "There are "+|n|+" million bicycles in "+|city|+"."
Не работает Я получил 'ERROR имя_файла.hs: 3: Невозможно обосновать ограничения в явно набранной привязке'. Я использую WinHugs. –
Вы должны переключиться на GHC. Объятия не поддерживается, медленно и поддерживает очень мало пакетов в Hackage. Он также не является частью спецификации платформы Haskell. –
'Text.Printf.printf' возвращает действие IO (' IO() ') при полном применении, а не' String'. – SwiftsNamesake