Instancias propias en Haskell
Instancias Show y Eq escritas a mano deciden cómo se imprime un valor y qué cuenta como igual.
module Tags where
import Data.Char (toLower)
-- A tag keeps the spelling the author typed.
newtype Tag = Tag String
-- Writing Show by hand controls exactly how a value is rendered.
instance Show Tag where
show (Tag name) = '#' : name
-- Domain equality: normalize both sides, then compare.
instance Eq Tag where
Tag a == Tag b = map toLower a == map toLower b
-- So two spellings of one tag are the same tag.
sameTopic :: Bool
sameTopic = Tag "Haskell" == Tag "haskell"
Cómo funciona
newtype Tag = Tag Stringenvuelve una cadena para que pueda llevar sus propias instancias.- La instancia de Show define
show (Tag name) = '#' : name, así que una etiqueta se muestra con un numeral adelante. - La instancia de Eq compara
map toLower a == map toLower b, así quesameTopiciguala dos grafías de una etiqueta.
Palabras clave y builtins usados aquí
BoolEqShowStringTagimportinstancemodulenewtypewhere
El intento, en números
- Líneas
- 18
- Caracteres a escribir
- 475
- Tokens
- 61
- Ritmo de tres estrellas
- 70 tpm
Al ritmo de tres estrellas de 70 tokens por minuto, este intento toma unos 52 segundos.
Paso 2 de 3 en Clases de tipos; paso 20 de 27 en Fundamentos del lenguaje.