typestar

Unidades de medida en F#

kg y jar viajan en el sistema de tipos; la unidad mala no compila.

// Units of measure ride the type system: kg + km will not compile.
[<Measure>] type kg
[<Measure>] type jar

let harvest = 12.4<kg>
let perJar = 0.34<kg/jar>

// The division cancels units: kg over kg/jar leaves jars.
let jars = harvest / perJar
printfn "Jars this pull: %.0f" (float jars)

let combined = harvest + 3.1<kg>
printfn "With the late frames: %.1f kg" (float combined)
// let broken = harvest + 2.0<jar>  // the compiler stops this line

Cómo funciona

  1. [<Measure>] type kg declara una unidad sin costo en runtime.
  2. 0.34<kg/jar> tipa una tasa; la división cancela unidades.
  3. La línea comentada muestra lo que el compilador rechaza.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
14
Caracteres a escribir
449
Tokens
83
Ritmo de tres estrellas
60 tpm

Al ritmo de tres estrellas de 60 tokens por minuto, este intento toma unos 83 segundos.

Escribe este fragmento

Paso 2 de 3 en Firmas y pereza; paso 23 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →