История изменений
Исправление monk, (текущая версия) :
Вообщем заменять/парсить декларативные части все равно придется.
Или блок должен соответсвовать блоку Scheme. Тогда биндинги разрулятся так же как в Си.
Вообщем заменять/парсить декларативные части все равно придется.
Ну так я и говорю, что для нормальной интроспекции придётся делать почти Си-со-скобками. Ну или (что то же самое) лисп с типами...
И получится что-то вроде https://github.com/tonyg/pi-nothing
(define (newline)
(%%write 1 (data #"\n") 1))
(define (strlen p)
(let ((mutable p p)
(mutable count 0)
(mutable ch (?byte p)))
(while (<> ch 0)
(set! count (+ count 1))
(set! p (+ p 1))
(set! ch (?byte p)))
count))
(define (puts s)
(%%write 1 s (strlen s)))
(define (buf)
(data #"aa\0"))
(define (main)
(newline)
(puts (data #"Hello, world!\n\0"))
(puts (buf))
(newline)
(let ((addr (+ (buf) 1)))
(!byte addr (+ 1 (?byte addr))))
(puts (buf))
(newline)
0)
Это компилируется в ассемблер.
Исходная версия monk, :
Вообщем заменять/парсить декларативные части все равно придется.
Или блок должен соответсвовать блоку Scheme. Тогда биндинги разрулятся так же как в Си.
Вообщем заменять/парсить декларативные части все равно придется.
Ну так я и говорю, что для нормальной интроспекции придётся делать почти Си-со-скобками. Ну или (что то же самое) лисп с типами...