smile

6 10 2007

Интересный смайл, правда, я не уверен, что он отобразится во всех броузерах:

λ_λ

Вот.





lisp internals

4 10 2007

Хорошая подборка статей, в которых раскрываются интересные детали реализации lisp: Lisp Usenet classics. Особенно понравилась An interesting memory management scheme в свете популярного сейчас цикла статей о памяти: What every programmer should know about memory.





problem decomposition

15 09 2007

Эффективное разбиение большой задачи на независимые маленькие – основа параллельного программирования.

Попробуйте дать определение следующим терминам: recursive decomposition, data decomposition, functional decomposition, exploratory decomposition и speculative decomposition. Если возникли трудности – читайте How-to Split a Problem into Tasks. Статья особенно интересна людям с опытом функционального программирования.





apply и перестановки

14 09 2007

Вот как в scheme необходимо применять apply для решения реальных задач. j85wilson на канале #scheme продемонстрировал изящную реализацию генерации всех перестановок списка:

(define (perm lst)
  (if (null? lst)
    '(())
    (apply append
           (map (lambda (elt)
                  (map (lambda (rest) (cons elt rest))
                       (perm (filter (lambda (x) (not (eq? x elt))) lst))))
                lst))))




циклические конструкции

14 09 2007

Незаслуженно непопулярный пакет из PlaneTfoof-loop.plt. В его документации можно найти краткое и понятное описание того, что современный мир scheme знает о циклах и их организации.





void и scheme

14 09 2007

Взято из Portable syntax-case.

(void) – returns the implementation’s cannonical “unspecified value”. The following usually works:

(define void (lambda () (if #f #f)))