¿Qué es Haskell equivalente deformato de cadenas en Haskell
string str = string.Format("{0} {1}",10,20); // C#
¿Qué es Haskell equivalente deformato de cadenas en Haskell
string str = string.Format("{0} {1}",10,20); // C#
Hay un módulo de Printf en GHC.
import Text.Printf
str :: String
str = printf "%d %d" 10 20
sin embargo, es probablemente más fácil de simplemente hacer
str = show 10 ++ " " ++ show 20
usted podría utilizar la función format
proporcionado por el paquete text-format-simple:
import Text.Format
format "{0} {1}" [show 10, show 20]
Esta función tiene la firma:
format :: String -> [String] -> String
Así que todo lo que necesita es proporcionar a sus parámetros como cadenas.
Otro ejemplo:
format "Some {0} believes that 1 + 1 = {1}." ["people",show 10]
¡Guau! Formateo de estilo C# en haskell. ¡Buen trabajo, Dmitry! y bienvenidos a stackoverflow! –
Recomendaría/no/usaría ese paquete, ya que está muy limitado en lo que puede hacer. Estoy trabajando en un paquete llamado [text-format] (http://hackage.haskell.org/package/text-format), que generalmente es más capaz y ya es bastante útil para este propósito. –
Dmitry, todos los paquetes que se incluyen excepto para la doble conversión están incluidos en la Plataforma Haskell. La gran mayoría de los usuarios no tendrán que instalar tanto. Tu argumento aún es válido. –
Poner respuesta aquí por si alguien busca para dar formato a las bibliotecas de Haskell en StackOverflow. Ahora hay una biblioteca de formato rápido y segura para tipos llamada fmt
. Con él se puede escribir código como este:
> "There are "+|n|+" million bicycles in "+|city|+"."
no su trabajo llegué 'filename.hs error: 3: No se puede justificar limitaciones en binding' escrito de forma explícita. Estoy usando WinHugs. –
Deberías cambiar a GHC. Los abrazos no se mantienen, son lentos y admiten muy pocos paquetes en Hackage. Tampoco forma parte de la especificación de Haskell Platform. –
'Text.Printf.printf' devuelve una acción IO (' IO() ') cuando se aplica por completo, no un' String'. – SwiftsNamesake