Oct. 5th, 2010

thedeemon: (Default)
Питер Норвиг зачем-то написал на Питоне интерпретатор небольшого подмножества Схемы в 90 строк кода. Дабы слегка посрамить этот гадкий питон, я перевел Норвиговский интерпретатор на Руби и заодно добавил туда поддержку продолжений, важной фичи Схемы, которую в питоний интепретатор должно быть вставить заметно сложнее. Такой вот пример
(begin
 (define fact (lambda (n) 
  (if (<= n 1) 1 (* n (fact (- n 1))))))
 
 (define f (lambda (return)
   (begin
    (return 2)
    1)))

 (display (f (lambda (x) x)))
 (display (callcc f))
 (fact 5)
)

выдает 1, 2, 120. Здесь return - не конструкция языка, а имя переменной, получающей текущее продолжение.
Выложил здесь.

Получилось всего 60 строк. Let the срачь begin! ;)

Profile

thedeemon: (Default)
Dmitry Popov

October 2025

S M T W T F S
   1234
567891011
12131415161718
19202122232425
262728 29 3031 

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Nov. 4th, 2025 11:28 am
Powered by Dreamwidth Studios