El muestran función en Haskell no parece hacer lo que se debe:Haskell: ¿Es un desastre?
Prelude> let str = "stack\n\noverflow"
Prelude> putStrLn str
stack
overflow
Prelude> show str
"\"Stack\\n\\n\\noverflow\""
Prelude>
Cuando Declaro funciones, puesto que normalmente las firmas de tipos como Muestra, que no se ocupa correctamente con las nuevas líneas . Quiero que trate \n
como nuevas líneas, no literalmente "\n"
. Cuando cambio el tipo a String, las funciones funcionan bien. Pero tendría que implementar una función separada para los números enteros, flotadores, etc, etc.
Por ejemplo, puede declarar una función:
foo :: (Show x) => x -> IO()
foo x = do
putStrLn $ show x
... y lo llaman de esta manera:
foo "stack\n\noverflow"
foo 6
foo [1..]
¿Cómo obtendré la función para devolver lo que se espera? Es decir. ¿Qué función es similar a show
pero puede devolver cadenas que contienen nuevas líneas?
Puede darnos un caso de uso específico de esta? Haría que entender tu intención sea más fácil. – Martijn
Puede simplemente agregar un cheque para ver si la entrada es una cadena, y simplemente imprimirlo. La coincidencia de patrones es una cosa muy útil. – Rayne
"mostrar" es como 'repr()' en Python y 'inspeccionar' en Ruby, si ya has usado esos idiomas. –