Написание метода сглаживания в схеме - PullRequest
2 голосов
/ 05 декабря 2011

Я работал над следующей функцией flatten, и пока она работает только для списков.Мне было интересно, если кто-нибудь может дать мне некоторое представление о том, как заставить его работать с парами?Например (flatten '(a .a)) вернет (aa).Спасибо.

(define (flatten list)
   (cond ((null? list) null)
         ((list? (car list)) (append (flatten (car list)) (flatten (cdr list))))
         (else
          (cons (car list) (flatten (cdr list))))))

Ответы [ 2 ]

6 голосов
/ 05 декабря 2011

Вот один из вариантов:

(define (flatten x)
  (cond ((null? x) '())
        ((pair? x) (append (flatten (car x)) (flatten (cdr x))))
        (else (list x))))
0 голосов
/ 28 декабря 2011
(define (flatten l)
  (cond
    [(empty? l) empty]
    [(list? l)
     (append (flatten (first l))
             (flatten (rest l)))]
    [else (list l)]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...