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))))

Actions

Information

Leave a comment