typestar

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

  1. serviceHours = [6 .. 10] va del 6 al 10 y se detiene en el límite superior.
  2. quarterPast = [0, 15 .. 60] saca su paso de 15 de la distancia entre los dos primeros elementos.
  3. take 5 [7, 20 ..] rebana cinco valores de un rango infinito, y replicate 3 "--:--" repite un valor en vez de contar.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 2 de 3 en Listas; paso 11 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →