Gaude!
Gaude es lingua de programmatione concatenativa. Data es codificato ut "sacco" de symbolo; compone per multiplicatione. Operatione es representato per fractione: denominatore indica consume, numeratore insere.
Fundamento
- Stato de programma: Sacco de symbolo non ordinate. Exemplo: sacco
[cubo cono^3]contine 1 cubo et 3 cono. - Symbolo: Elemento de sacco, scripto ut numero integro decimale o nomine pro numero primo. Exemplo: sacco
[8 sphaera^2]vale[2^3 sphaera sphaera]. - Transformatione: Fractione ubi denominatore indica consumptione et numeratore insertione. Exemplo:
strix/[felis^2]consume 2 felis, insere 1 strix.
[] es nihil, identitate. []/n es predecessore. n es successore.
Instantia multiple es scribite ut symbolo^numero. Sacco vacuo, aut identitate, es representato ut [].
Evaluatione es applicatione de fractione in sequentia, quando denominatore es presente in sacco. Programma cessa quando nulle fractione es applicabile.
rubro^2 caerulo^2 flavo^2 violeto/[rubro caerulo] viridi/[caerulo flavo] aurantio/[rubro flavo] atro/[violeto viridi aurantio]
Logica I
Hic es implementatione de porta logica NON.
falso non vero/[falso non] falso/[vero non]
[falso non] vero/[falso non] falso/[vero non] [vero] falso/[vero non] [vero]
Regula differente es sequentiato un post altero. Hic es porta logica AUT. Nota necessitate de symbolo sentinella aut:
x y aut vero/[x y aut] vero/[x aut] vero/[y aut] falso/aut
[x y aut] vero/[x y aut] vero/[x aut] vero/[y aut] falso/aut [vero] vero/[x aut] vero/[y aut] falso/aut [vero] vero/[y aut] falso/aut [vero] falso/aut [vero]
Meta
A @meta es symbolo speciale que contine positione de salto quando es invento in sacco. Hic es exemplo de cyclo simplice:
tempore^5 @Cyclo ( tempore -- ) Cyclo/tempore fine
[tempore^5] Cyclo/tempore fine [tempore^4] Cyclo/tempore fine [tempore^3] Cyclo/tempore fine [tempore^2] Cyclo/tempore fine [tempore] Cyclo/tempore fine [] Cyclo/tempore fine [] fine [fine]
Per hoc mechanismo de cyclo, scribe regula que exhauri symbolo. Per exemplo, hic es implementatione de comparatione maior:
x^3 y^2 @Maior ( x y -- x y vero|falso ) Maior/[x y] vero/x Maior/x falso/y Maior/y
[x^3 y^2] Maior/[x y] vero/x Maior/x falso/y Maior/y [x^2 y] Maior/[x y] vero/x Maior/x falso/y Maior/y [x] Maior/[x y] vero/x Maior/x falso/y Maior/y [x] vero/x Maior/x falso/y Maior/y [vero] Maior/x falso/y Maior/y [vero] falso/y Maior/y [vero] Maior/y [vero]
Meta Anonymo
Uso de meta anonymo es modo rapido ad scribe fractione que exhauri. Per exemplo, fractione de additione @Adde [x Adde]/y pote etiam esse scripto ut 'x/y, indicante compilatore de creare meta anonymo in suo positione.
x^3 y^4 'x/y
[x^3 y^4] 'x/y [x^4 y^3] 'x/y [x^5 y^2] 'x/y [x^6 y] 'x/y [x^7] 'x/y [x^7]
Arithmetica
Ad inveni differentia inter 2 numero, programma pote consume 1 de singulo usque ad exhaustione, relinquente aut x pro resultato positivo, aut y pro resultato negativo. Ultimo duo meta exhauri numero in aut pos aut neg:
x^2 y^5 @Sub ( x y -- pos|neg ) Sub/[x y] 'pos/x 'neg/y
[x^2 y^5] Sub/[x y] 'pos/x 'neg/y [x y^4] Sub/[x y] 'pos/x 'neg/y [y^3] Sub/[x y] 'pos/x 'neg/y [y^3] 'pos/x 'neg/y [y^3] 'neg/y [y^2 neg] 'neg/y [y neg^2] 'neg/y [neg^3] 'neg/y [neg^3]
Hic es programma plus complexo que inveni producto de 2 numero per uso de meta multiple.
x^2 y^3 @Mul ( x y -- res ) [Mul z res]/y 'y/z Mul/x '1/[y res]
Ingresso/Egresso
Symbolo que incipit cum . es emitto ut texto et immediate consumpto ex sacco. Symbolo que incipit cum .# emitte numero de instantia in sacco de symbolo specifico.
porco^3 ( imprime vocabulo ) .porco: ( imprime numero ) .#porco
porco:3
HocusPocus
Et ultimo, es necessario: implementatione de HocusPocus:
tempore^100 f b @Cyclo ( tempore -- ) [num f b .HocusPocus\n Cyclo]/[tempore f^3 b^5] [num f b .Hocus\n Cyclo]/[tempore f^3] [num f b .Pocus\n Cyclo]/[tempore b^5] [num f b .#num .\n Cyclo]/tempore
1, 2, Hocus, 4, Pocus, Hocus, 7, 8, Hocus, Pocus, 11, Hocus, 13, 14, HocusPocus, 16, 17, ..
- Codice, Uxntal.
- Repositorio, Uxntal.
- Giuseppe Peano, Wikipedia.
- Latino Sine Flexione, Wikipedia.