#1 Implement a new language construct: `macro`

Kapalı
Archivist tarafından 1 hafta önce açıldı · 0 yorum
Archivist 1 hafta önce yorum yaptı

The macro language constructs operates like a compile time function. The code is executed during the compilation phase, and then it is made into a function that outputs the remaining stack left behind by the routine that executed the macro.

Syntax

let cnt a function that returns a single integer, from the sequence {1, 2, 3, 4, 5, 6, 7, 8, 9, 10...} in order with each call. cnt has not been called.

macro my-macro do
	cnt cnt + cnt cnt + +
end
usage:
my-macro print_int 20 print_utf8 my-macro print_int 20 print_utf8
expected output:
10
10


usage:
cnt drop my-macro print_int cnt drop cnt drop 20 print_utf8 my-macro print_int 20 print_utf8
expected output:
10
10

Proposed way of implementation

The implementation could be performed as a normal function that just outputs to stack the stored value. This depends on the system to preserve function contents during GC #2.

The `macro` language constructs operates like a compile time function. The code is executed during the compilation phase, and then it is made into a function that outputs the remaining stack left behind by the routine that executed the macro. ## Syntax let `cnt` a function that returns a single integer, from the sequence {1, 2, 3, 4, 5, 6, 7, 8, 9, 10...} in order with each call. cnt has not been called. ``` macro my-macro do cnt cnt + cnt cnt + + end ``` ###### usage: ``` my-macro print_int 20 print_utf8 my-macro print_int 20 print_utf8 ``` ###### expected output: ``` 10 10 ``` -------------- ###### usage: ``` cnt drop my-macro print_int cnt drop cnt drop 20 print_utf8 my-macro print_int 20 print_utf8 ``` ###### expected output: ``` 10 10 ``` ## Proposed way of implementation The implementation could be performed as a normal function that just outputs to stack the stored value. This depends on the system to preserve function contents during GC #2.
Archivist
enhancement
1 hafta önce etiketini ekledi
Archivist 1 hafta önce kendini atadı
Archivist 1 hafta önce konusunu kapattı
Bu konuşmaya katılmak için oturum aç.
Kilometre Taşı Yok
Atanan Kişi Yok
1 Katılımcı
Bildirimler
Bitiş Tarihi

Bitiş tarihi atanmadı.

Bağımlılıklar

Bu konu henüz bir bağımlılık içermiyor.

Yükleniyor…
Henüz bir içerik yok.