Tengo una pregunta: ¿Cómo puedo anular el método de presentación para Cadena o Char? Gracias.Sobrescribir el método de mostrar para Cadena/Char en Haskell
Respuesta
Si quieres hacer esto, entonces lo estás haciendo mal.
Por una razón más técnica, vea my answer a una pregunta anterior.
Usted realmente debería utilizar cualquiera de sus propias funciones a -> String
(posiblemente a través de su propio tipo de clase) o utilizar una biblioteca de impresión legible para las salidas más detalladas (algunos de los cuales ya tienen una clase incorporada Pretty
).
Puesto que la gente parece que les gusta mi comentario, aquí está como una respuesta:
Si desea volver a implementar las clases de tipos de tipos existentes, se puede envolver en un tipo -declarado newtype
. Esto le permite definir sus propias implementaciones, sin ninguna sobrecarga real en tiempo de ejecución (porque newtype
es isomorfo al tipo original, no hay boxeo real en el tiempo de ejecución).
Esto podría ser algo como esto:
newtype MyChar = MyChar Char
instance Show MyChar where
show (MyChar c) = "head \"" ++ c : "\""
Se puede usar esta envolviendo Char
s con MyChar
, así:
print $ fmap MyChar "test"
Esto imprimirá
[head "t",head "e",head "s",head "t"]
También puede definir showList, luego las listas de MyChar también tendrán formato personalizado. De hecho, esta es la razón por la cual mostrar listas de caracteres ([Char]) se comporta de manera diferente que mostrar otras listas ([a]). – sdcvvc
- 1. Haskell: Nueva declaración de instancia para Mostrar
- 2. Rieles: cómo sobrescribir: método de destrucción?
- 3. Sobrescribir la peculiaridad del método java equals()
- 4. ¿Cómo sobrescribir una función utilizada en un método de módulo?
- 5. Sobrescribir auto_now para unittest
- 6. Haskell: Derivado Mostrar de los tipos personalizados
- 7. Sobrescribir el esquema de colores
- 8. ¿Cómo sobrescribir el método put() en un modelo de motor de aplicación python?
- 9. Cómo sobrescribir OnClick en Android Spinner?
- 10. Cómo sobrescribir un método en Java, pero aún tiene una funcionalidad parcial del método principal
- 11. En términos de rendimiento, ¿cuál es el mejor método para mostrar 1000 imágenes en una página?
- 12. Método genérico para mostrar nombres de valores enum
- 13. Método de mejores prácticas para mostrar mensajes flash
- 14. Sobrescribir el método del módulo desde el que se utiliza ... importar
- 15. ¿Ruby proporciona un método para mostrar las llamadas de jerarquía?
- 16. Haskell para principiantes: Ningún caso de Mostrar en un mapa de función
- 17. Sobrescribir propiedad usando Python
- 18. Función hash recomendada para sobreescribir el método hash de NSObject
- 19. Generar diagramas para el código de Haskell
- 20. Borrar el enlace va a mostrar el método
- 21. deshabilitar sobrescribir la solicitud de archivo existente en la interoperabilidad de Microsoft Office Método FileSaveAs
- 22. ¿Cómo sobrescribir System.Resources.ResourceManager predeterminado en Resources.Designer.cs?
- 23. Windows: Sobrescribir archivo en uso
- 24. ¿estilo de sobrescribir orden?
- 25. ¿Cómo sobrescribir el formato de eje de ggplot2?
- 26. ¿Cómo sobrescribir la funcionalidad window.open?
- 27. Autocompletado de Haskell en Emacs usando el modo haskell
- 28. ¿Cómo sobrescribir register_argc_argv en PHP?
- 29. moldeada en el método genérico para DateTime
- 30. Cómo mostrar una traza inversa para un Error arrojado en Haskell
¿Hay alguna razón por la cual no desee definir otras funciones de tipo 'Char -> String' o' String -> String'? ¿Por qué quieres sobrescribir 'show'? – hammar
Creo que tiene que envolverlo en un [nuevo tipo] (http://www.haskell.org/haskellwiki/Newtype) y definir Show para ese tipo. –