Rangos en Haskell
[6 .. 10] cuenta de uno en uno; nombrar los dos primeros elementos elige cualquier otro paso.
module Ranges where
-- [a .. b] counts up one step at a time and stops at b
serviceHours :: [Int]
serviceHours = [6 .. 10]
-- naming the first two elements sets the step for the whole range
quarterPast :: [Int]
quarterPast = [0, 15 .. 60]
-- ranges are lazy, so an endless one is fine if you only take a slice
nextDepartures :: [Int]
nextDepartures = take 5 [7, 20 ..]
-- replicate repeats a single value a fixed number of times
placeholders :: [String]
placeholders = replicate 3 "--:--"
Cómo funciona
serviceHours = [6 .. 10]va del 6 al 10 y se detiene en el límite superior.quarterPast = [0, 15 .. 60]saca su paso de 15 de la distancia entre los dos primeros elementos.take 5 [7, 20 ..]rebana cinco valores de un rango infinito, yreplicate 3 "--:--"repite un valor en vez de contar.
Palabras clave y builtins usados aquí
IntStringmodulewhere
El intento, en números
- Líneas
- 17
- Caracteres a escribir
- 492
- Tokens
- 60
- Ritmo de tres estrellas
- 80 tpm
Al ritmo de tres estrellas de 80 tokens por minuto, este intento toma unos 45 segundos.
Paso 2 de 3 en Listas; paso 11 de 27 en Fundamentos del lenguaje.