typestar

Vinculaciones y firmas en Haskell

El perfil de un sendero escrito como vinculaciones de nivel superior, cada una con su firma de tipo.

-- Every top-level binding gets its own type signature above it.
module TrailProfile where

trailName :: String
trailName = "Ridge Loop"

trailMiles :: Double
trailMiles = 8.4

restStops :: Int
restStops = 3

-- GHC would infer Double here on its own; the signature pins it down
-- and documents the binding for the next reader.
milesPerLeg :: Double
milesPerLeg = trailMiles / fromIntegral (restStops + 1)

summary :: String
summary = trailName ++ " runs " ++ show trailMiles ++ " miles"

Cómo funciona

  1. trailName :: String y trailMiles :: Double van justo encima de los valores que describen.
  2. restStops es un Int, así que fromIntegral lo amplía antes de la división.
  3. Un comentario aclara que GHC inferiría el Double de milesPerLeg sin ninguna ayuda.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
19
Caracteres a escribir
488
Tokens
56
Ritmo de tres estrellas
80 tpm

Al ritmo de tres estrellas de 80 tokens por minuto, este intento toma unos 42 segundos.

Escribe este fragmento

Paso 1 de 3 en Valores y tipos; paso 1 de 27 en Fundamentos del lenguaje.

Siguiente →