Merhabalar.

Problemi problemi scheme ile cozmeye calistim. Biraz sac bas yoldum,
ama sonra soyle birsey ortaya cikti:

(define (comb liste)
 (let comb-help ((lst liste) (builded '(()) ))
   (if (null? lst) builded
       (comb-help (cdr lst)
                  (append builded
                          (map (lambda (x)
                                 (cons (car lst) x))
                               builded))))))


Sonra diger kodlarla karsilastiridm. Forcer'in koduna benziyor, fakat
accumulator teknigini kullanarak tail-recursive olmasini sagladim.
Biraz daha hizli olacagini tahmin ediyorum.

Ayni kodun haskell karsiligi:

comb lst = comb' lst [[]]
 where comb' [] builded = builded
       comb' (x:xs) builded = comb' xs (builded ++ (map (x:) builded))


--
Mehmet

_______________________________________________
cs-lisp mailing list
[email protected]
http://church.cs.bilgi.edu.tr/lcg
http://cs.bilgi.edu.tr/mailman/listinfo/cs-lisp

Cevap