Antra
Einfach. Elegant. Mächtig.
Eine funktionale Skriptsprache mit Pattern Matching, exakten Zahlen, getaggten Werten und einem Typsystem, das du dazunimmst, wenn du es brauchst.
fn fibo(0) -> 0
fn fibo(1) -> 1
fn fibo(n) when n > 0 -> fibo(n - 1) + fibo(n - 2)
val xs = [..select (n <- 0..10) yield fibo(n)]
println(xs) # [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]Das Handbuch#
Sprache
Struktur und Typen
Werkzeuge
Für wen ist diese Doku geschrieben?#
Die Kapitel erklären Begriffe wie Pattern Matching, Tagged Values oder lexikalischen Scope nicht als bekannt voraus. Wenn du eher aus JavaScript, Python, PHP oder Java kommst, ist das beabsichtigt.
Antra hat zwar funktionale Einflüsse, aber du musst nicht "funktional denken" können, um produktiv zu werden. Hilfreich ist eher diese Arbeitshypothese:
- Werte sind wichtiger als Objekte.
- Datenformen werden oft direkt in Funktionsparametern beschrieben.
- Pattern Matching ersetzt viele
if-/switch-Kaskaden. - Mutation ist möglich, aber bewusst markiert.
Referenz vs. Tutorial#
Diese Kapitel sind tutorial-artiger geschrieben als die alte Monolith-Datei. Das heißt:
- mehr kleine Beispiele
- mehr Erklärung von Motivation und Lesart
- weniger "hier ist nur die Syntax"
Für den Einstieg ist das meist besser. Für schnelles Nachschlagen bleibt antra.md als Startseite und Kapitelindex erhalten.
Relevante Specs fuer Enduser-APIs#
- ../specs/impl/spec_file_dir_magic_constants.md - MVP fuer
__FILE__und__DIR__als explizite dateirelative Hilfe fuer Skripte und importierte Pakete - ../specs/impl/spec_warn_die.md - Diagnose-Builtins
warn(...),die(...),error(...),context(...)und%Error{...} - ../specs/spec_context_builtin.md -
context(...)als Diagnose-Kontextwert - ../specs/spec_result_error_policy.md - Policy fuer
%Err["..."]vs.%Err[%Error{...}]in Result-APIs - ../specs/spec_raw_native_apis.md - Entwurf fuer einfache
_raw-Boundary-APIs wieslurp_raw(...)nebenResult- und...!-Surfaces - ../specs/impl/spec_print_to_handle.md - implementierter MVP fuer
print(...)undprintln(...)mit optionalemto:-Handle fuer kleine Datei- und Handle-Ausgabe ohne Positions-Ueberladung - ../specs/spec_regex_compile.md - Entwurf fuer
Regex.compile(...)als fallible Boundary ueber der heutigen Regex-Surface - ../specs/spec_refine_protocol.md - das
Refine-Protokoll fuer Tagged-Literal-Konstruktion (implementiert) plus Entwuerfe fuerExpandable-Fences und privilegierte Host-Bloecke wieperl - ../specs/spec_css_fenced_template.md - Entwurf fuer
css-Templates als```css ... ```-Block undcss"..."-Kurzform mit String-Semantik - ../specs/spec_error_package.md - Entwurf fuer
Antra::Errorals kleine Format-/Print-Surface fuer%Error{...}-Werte - ../specs/impl/spec_logger_package.md - implementierter MVP fuer
Antra::Loggerals kleine Logging-Surface zwischenprintln(...),warn(...),die(...),%Error{...}undAntra::Terminal
