LINUX.ORG.RU

История изменений

Исправление 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. Тогда биндинги разрулятся так же как в Си.

Вообщем заменять/парсить декларативные части все равно придется.

Ну так я и говорю, что для нормальной интроспекции придётся делать почти Си-со-скобками. Ну или (что то же самое) лисп с типами...