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
trailName :: StringytrailMiles :: Doublevan justo encima de los valores que describen.restStopses unInt, así quefromIntegrallo amplía antes de la división.- Un comentario aclara que GHC inferiría el
DoubledemilesPerLegsin ninguna ayuda.
Palabras clave y builtins usados aquí
DoubleIntStringmodulewhere
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.
Paso 1 de 3 en Valores y tipos; paso 1 de 27 en Fundamentos del lenguaje.