Renderingla

praefixum

Forces compile-time evaluation of an expression.

Syntax: praefixum(<expression>)

Category

comptime

Related

None.

Examples

examples/corpus/praefixum/praefixum.fab (canonical · keyword)

Forces compile-time evaluation of an expression.

# praefixum — compile-time constant evaluation
#
# praefixum(<expr>)   -- fold a single expression at compile time
# praefixum { … }      -- fold a block literal at compile time
#
# GRAMMAR:
#   constExpr :← 'praefixum' '(' expr ')'
#   constBlock :← 'praefixum' block
#
# EXPECTED OUTPUT:
#   pi/tau strings, computed day/hour/second counts, block-evaluated sum.

incipit {
    # Constant expression
    fixum _ pi ← praefixum(3.14159)
    fixum _ tau ← praefixum((2 ↦ fractus) * 3.14159)
    nota "pi: §"(pi)
    nota "tau: §"(tau)

    # Computation
    fixum _ diesanno ← praefixum(365)
    fixum _ horaeanno ← praefixum(365 * 24)
    fixum _ secundaanno ← praefixum(365 * 24 * 60 * 60)

    nota "dies: §"(diesanno)
    nota "horae: §"(horaeanno)
    nota "secunda: §"(secundaanno)

    # Block
    fixum tabula<textus, numerus> codices ← praefixum({
        "ok": 200,
        "creatum": 201,
        "noninventum": 404,
        "error": 500
    })

    nota "codex rectus: §"(codices["ok"])
}

Expected output:

pi: 3.14159
tau: 6.28318
dies: 365
horae: 8760
secunda: 31536000
codex rectus: 200