Учитель Чистоты (maxim) wrote in ru_iolanguage,
Учитель Чистоты
maxim
ru_iolanguage

Io meets C

C := Object clone do(
  libc := DynLib clone open("libSystem.dylib")

  curlyBrackets := method(call argAt(0))

  forward := method(
    libc performWithArgList("call",
             list(call message name,
                  call message arguments map(x, self doMessage(x))) flatten)
  )

  int := Object clone
  int updateSlot := method(str, C setSlot(str, call evalArgAt(1)))
  int forward := method(
    if(call message arguments size > 0,
      attached := call message attached
      args := call message arguments map(v, v attached name)
      body := attached arguments at(0)
      call message setAttached(attached attached)
      C setSlot(call message name,
                self getSlot("Block") clone setMessage(body)
                     setArgumentNames(args) setIsActivatable(true)),
      call message arguments foreach(v, call sender setSlot(v attached name, nil))
    )
  )
)
C do(
    int foo(int a, int b) {
        return a + b;
    }
    int x = foo(1, 2);
    printf("%d\n", x);
)
Tags: dsl
Subscribe

  • Io meets LISP

    Lisp := Object clone do( setSlot("", method( m := call argAt(0) arg := m attached args := list while(arg, t := arg clone arg = arg attached…

  • Теория категорий

    На правах администратора этого камюнити, в качестве оффтопика хочу вам предоставить следующее: Я тут начал изучать теорию категорий и ее приложения…

  • Кодировка и аддоны в виндовой сборке

    Может вопросы ламерские... Собранный под юникс (локаль xxxx.utf-8) интерпертатор очень бодро поддерживает юникод, корректно считает длины юникодных…

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 2 comments