typestar

Aritmética entera y fraccionaria en Haskell

Prepara tazas con una bolsa de granos y mantiene separadas la aritmética entera y la fraccionaria.

-- div and mod are whole-number division; (/) refuses to touch an Int.
beansGrams :: Int
beansGrams = 250

cupsBrewed :: Int
cupsBrewed = beansGrams `div` 18

leftoverGrams :: Int
leftoverGrams = beansGrams `mod` 18

-- (*) binds tighter than (+), and fromIntegral lifts an Int to Double.
costPerCup :: Double
costPerCup = (14.5 + 2.0 * 3.25) / fromIntegral cupsBrewed

main :: IO ()
main = do
  putStrLn (show cupsBrewed ++ " cups, " ++ show leftoverGrams ++ " g over")
  print costPerCup

Cómo funciona

  1. cupsBrewed usa div para las tazas enteras y leftoverGrams usa mod para el resto.
  2. fromIntegral cupsBrewed eleva el conteo a Double para que (/) pase el chequeo de tipos.
  3. El (14.5 + 2.0 * 3.25) entre paréntesis muestra que la multiplicación liga más fuerte que la suma.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
18
Caracteres a escribir
485
Tokens
68
Ritmo de tres estrellas
80 tpm

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

Escribe este fragmento

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

← Anterior Siguiente →