typestar

comptime en Zig

El mismo lenguaje corre en compilación: un número de Fibonacci horneado en el binario.

const std = @import("std");

// Anything computable from constants can run during compilation.
fn fib(n: u32) u32 {
    if (n < 2) return n;
    return fib(n - 1) + fib(n - 2);
}

pub fn main() void {
    const at_build = comptime fib(12);
    std.debug.print("fib(12) baked into the binary: {d}\n", .{at_build});

    comptime var total = 0;
    inline for (.{ 3, 5, 7 }) |x| total += x;
    std.debug.print("summed during compilation: {d}\n", .{total});
}

Cómo funciona

  1. comptime fib(12) corre la recursión durante la compilación; el binario guarda 144.
  2. comptime var muta solo durante la compilación.
  3. inline for desenrolla sobre la tupla, plegando la suma antes de que el programa exista.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
16
Caracteres a escribir
429
Tokens
122
Ritmo de tres estrellas
65 tpm

Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 113 segundos.

Escribe este fragmento

Paso 1 de 3 en comptime; paso 16 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →