方案中列表的排列,适用于数字但不是字符作为列表

时间:2016-06-17 01:05:44

标签: list scheme permutation

我试图在计划中为学校作业做一个计划。给定一个列表,它应该返回该列表的所有给定排列。我的问题是,我不知道为什么它适用于数字但不适用于字符。似乎它不会改变任何逻辑!

这是我的代码:

(define (remove1 x lst)  
  (cond    
    ((null? lst)     '())    
    ((= x (car lst)) (remove1 x (cdr lst)))    
    (else            (cons (car lst)
                           (remove1 x (cdr lst))))))

(define (permute lst)  
  (cond    
    ((= (length lst) 1) (list lst))    
    (else               (apply append (map (lambda (i)
                                             (map (lambda (j) (cons i j))
                                                  (permute (remove1 i lst))))
                                           lst)))))

(permute '(1 2 3))

1 个答案:

答案 0 :(得分:1)

=用于比较数字;要进行更一般的比较,请使用eq?equal?或(根据建议)eqv?