jsn: (Default)
[personal profile] jsn

Решил по примеру [livejournal.com profile] avva написать на коленке интерпретатор языка scheme (завёл для этого проект на github.com). Вот что оно сейчас умеет:

> +
#<builtin procedure (#\+)>
> lambda
#<builtin syntax (lambda)>
> (lambda (x) (+ x x))
#<procedure ((x) (+ x x))>
> (((lambda (X)
    ((lambda (procedure)
       (X (lambda (arg) ((procedure procedure) arg))))
     (lambda (procedure)
       (X (lambda (arg) ((procedure procedure) arg))))))
  (lambda (func-arg)
    (lambda (n)
      ((_if (= 0 n)
           (lambda () 1)
           (lambda () (* n (func-arg (- n 1)))))))))
 5)
120
>

Обычно на этой фазе как раз все и бросают :) Ну, посмотрим.

Date: 2010-07-16 09:44 am (UTC)
From: [identity profile] alexott.livejournal.com
даешь макросы и continuations
P.S. и реализацию R6RS в полном объеме :-)

Date: 2010-07-16 09:46 am (UTC)
From: [identity profile] jsn.livejournal.com
Ну до continuations там вроде как полшага (фигли, continuation is a tuple of [s, e, c, d] :), а вот с макросами мне всё непонятно.

Date: 2010-07-16 11:28 am (UTC)
From: [identity profile] bish0nen.livejournal.com
Особенно понравился в Вашей реализации файл README.rst.

Profile

jsn: (Default)
jsn

July 2020

S M T W T F S
   1234
56789 1011
12131415161718
19202122232425
262728293031 

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 1st, 2026 03:59 am
Powered by Dreamwidth Studios