typestar

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

  1. newtype Tag = Tag String envuelve una cadena para que pueda llevar sus propias instancias.
  2. La instancia de Show define show (Tag name) = '#' : name, así que una etiqueta se muestra con un numeral adelante.
  3. La instancia de Eq compara map toLower a == map toLower b, así que sameTopic iguala dos grafías de una etiqueta.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 2 de 3 en Clases de tipos; paso 20 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →