PasteRack.org
Paste # 5246
2016-09-27 18:29:50

Fork as a new paste.

Paste viewed 55 times.


Embed:

  1. #lang racket
  2. (require (lib "trace.ss"))
  3.  
  4. (define sum-list (lambda (lst)
  5.                      (if (null? lst)
  6.                          0
  7.                          (+ (car lst) (sum-list (cdr lst))))))
  8.  
  9.  
  10. (define prod-list (lambda (lst)
  11.                      (if (null? lst)
  12.                          1
  13.                          (* (car lst) (prod-list (cdr lst))))))
  14.  
  15. (define length-list (lambda (lst)
  16.                       (if (null? lst)
  17.                           0
  18.                           (+ 1 (length-list (cdr lst))))))
  19.  
  20. (define odds-list (lambda (lst)
  21.                       (if (null? lst)
  22.                           0
  23.                           (cond ((odd? (car lst)) (+ 1 (odds-list (cdr lst))))
  24.                                 (else (+ 0 (odds-list (cdr lst)))))
  25.                           )))
  26.  
  27.  
  28. (define length
  29.   (lambda (a-list)
  30.     (if (null? a-list)
  31.         0
  32.         (+ 1 (length (cdr a-list))))))
  33.  
  34. (define append-element
  35.   (lambda (x a-list)
  36.     (if (null? a-list)
  37.         (cons x '())
  38.         (cons (car a-list)
  39.               (append-element x (cdr a-list))))))
  40.  
  41. (define append
  42.   (lambda (x y)
  43.     (if (null? x)
  44.         y
  45.         (cons (car x) (append (cdr x) y)))))
  46.  
  47. (define add-items
  48.   (lambda (a-list)
  49.     (if (null? a-list)
  50.         0
  51.         (+ (car a-list) (add-items (cdr a-list))))))
  52.  
  53.  
  54. (define repeat
  55.   (lambda (n element)
  56.     (if (= n 0)
  57.         '()
  58.         (cons element (repeat (- n 1) element)))))
  59.  
  60. (define double-all
  61.   (lambda (a-list)
  62.     (if (null? a-list)
  63.         '()
  64.         (cons (* 2 (car a-list))
  65.               (double-all (cdr a-list))))))
  66.  
  67. (define delete
  68.   (lambda (element a-list)
  69.     (cond ((null? a-list) '())
  70.           ((= element (car a-list))
  71.            (delete element (cdr a-list)))
  72.           (else (cons (car a-list)
  73.                       (delete element (cdr a-list)))))))
  74.  
  75. (trace delete)
  76.  
  77. (define lst '(1 5 3 5 5 7))
  78. (define lst2 '(33 45))
  79.  
  80.  
  81. (odds-list lst)
  82. (length lst)
  83. (append-element 22 lst)
  84. (append lst lst2)
  85. (add-items lst)
  86. (repeat 4 0)
  87. (double-all lst)
  88. (delete 5 lst)

=>

6

6

'(1 5 3 5 5 7 22)

'(1 5 3 5 5 7 33 45)

26

'(0 0 0 0)

'(2 10 6 10 10 14)

>(delete 5 '(1 5 3 5 5 7))

> (delete 5 '(5 3 5 5 7))

> (delete 5 '(3 5 5 7))

> >(delete 5 '(5 5 7))

> >(delete 5 '(5 7))

> >(delete 5 '(7))

> > (delete 5 '())

< < '()

< <'(7)

< '(3 7)

<'(1 3 7)

'(1 3 7)