Currificación y aplicación parcial en Haskell
Una calculadora de propinas que entrega funciones a medio aplicar en vez de números.
-- Every function takes one argument and returns a function.
module Tipping where
addTip :: Double -> Double -> Double
addTip rate amount = amount * (1 + rate)
-- Supply only the rate and a Double -> Double is left waiting.
standardTip :: Double -> Double
standardTip = addTip 0.18
checks :: [Double]
checks = [12.0, 31.5, 8.25]
-- Partials go straight into map; (* 100) is an operator section.
withTips :: [Double]
withTips = map standardTip checks
inCents :: [Double]
inCents = map (* 100) (map (addTip 0.25) checks)
Cómo funciona
addTip rate amounttoma sus argumentos de a uno y no como un par.standardTip = addTip 0.18fija la tasa y deja atrás unDouble -> Double.map standardTip checksle pasa una parcial a map, y(* 100)es una sección de operador.
Palabras clave y builtins usados aquí
Doublemodulewhere
El intento, en números
- Líneas
- 19
- Caracteres a escribir
- 523
- Tokens
- 77
- Ritmo de tres estrellas
- 75 tpm
Al ritmo de tres estrellas de 75 tokens por minuto, este intento toma unos 62 segundos.
Paso 2 de 3 en Funciones; paso 5 de 27 en Fundamentos del lenguaje.