Спасибо @238328 за ссылку http://sicpebook.wordpress.com/ebook/ . Там sicp, в котором не только шрифты и формулы улучшены кем-то старательно, еще и самое главное — сноски показываются на той же странице, где они поставлены (т.к. на той пдф, что я читал до этого, они были простынёй в конце главы).
*sicp
А тем временем там уже ебанулись и пишут интерпретатор лиспов на лиспах. ^_____^
А теперь прояснили про "каналы" (они же генераторы в питонах, но как и всё остальное — проще и понятнее описано), а заодно фибоначчи на них переписали http://screencloud.net/v/z7M0
Мелочь, но мощная.
MIT 6.001 читали не тем студентам... http://my-clojure.blogspot.com/2012/07/m...
Правда, очень не понравилось, что они слегка "слукавили", т.к. в предыдущей же главе использовали некоторые мистические функции (get!) и (set!) для динамической диспетчерезации типов (type-tags), а в этой главе говорят "вызов любой функции до этого зависил только от её аргументов" и "для вычисления функции можно ... more →
Таки дошли руки открыть SICP на ноуте чтоб примеры поделать (хотя в голове тоже полезно было, особенно долго не мог понять этот ваш flatmap, почему-то). И тут ошибка: нет такого символа в mit-sicp, как nil.
Why isn’t “nil” working?
The quick answer is: nil is no longer part of Scheme, use ‘() instead. The long ... more →
Exercise 2.6. In case representing pairs as procedures wasn't mind-boggling enough, consider that, in a
language that can manipulate procedures, we can get by without numbers (at least insofar as nonnegative
integers are concerned) by implementing 0 and the operation of adding 1 as
(define zero (lambda (f) (lambda ... more →
Сволочи. Они взяли и реализовали cons/car/cdr через замыкания. То есть я и сам мог это сделать, а не догадался.
(define (cons x y)
(define (dispatch m)
(cond ((= m 0) x)
((= m 1) y)
(else (error "Argument not 0 or 1 — CONS" m))))
dispatch)
(define (car z) (z 0))
(define (cdr z) (z 1))
Впрочем, http://dl.dropbox.com/u/865508/captcha.p... неплохо подошло бы для капчи.
сделал 1.16. пришлось подумать, но осилил. Мой код полностью совпал с тем, что я потом нагуглил для проверки (за исключением названия функций):
(define (p-i b n)
(p-iter 1 b n))
(define (p-iter a b n)
(if (= n 0)
a
(if (even? n)
(p-iter a (* b b) (/ n 2))
(p-iter (* a b) b (- n 1)))))
(define (even? a)
(= ... more →
Был в волшебном городе Желтые Воды, там же немного удалось sicp почитать (совсем чуть-чуть, страничек 40). Очень круто. Рекурсию уже изучили, области видимости и прочий scoping изучили, вместе с ним и замыкания, порядки вычисления ленивые/неленивые изучили, рекурсию изучили, причем и рекурсивный и нерекурсивный ... more →
Упражнение 1.4.
Заметим, что наша модель вычислений разрешает существование комбинаций, операторы кото-
рых — составные выражения. С помощью этого наблюдения опишите, как работает следующая
процедура:
(define (a-plus-abs-b a b)
((if (> b 0) + -) a b))
Паскаль служит для по-
строения пирамид — впечатляющих, захватывающих статических структур, создаваемых
армиями, которые укладывают на места тяжелые плиты. При помощи Лиспа порождают-
ся организмы — впечатляющие, захватывающие динамические структуры, создаваемые
командами, которые собирают их из мерцающих мириад ... more →
Мы собираемся изучать понятие вычислительного процесса (computational process). Вычислительные процессы — это абстрактные существа, которые
живут в компьютерах. Развиваясь, процессы манипулируют абстракциями другого типа, которые называются данными (data). Эволюция процесса направляется набором правил, называемым ... more →