Advertisement
MarkUa

Untitled

Oct 24th, 2019
1,118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 2.46 KB | None | 0 0
  1. (define atom? (lambda (U) (cond
  2.                             ((LIST? U) #f)
  3.                             ((PAIR? U) #f)
  4.                             (#t #t))))
  5.  
  6. (define notlist? (lambda (U) (cond
  7.                                ((LIST? U) #f)
  8.                                ((PAIR? U) (cond ((PAIR? (CDR U)) #t)
  9.                                                 (#t #f)))
  10.                                (#t  #f))))
  11.  
  12. (define bool? (lambda (U) (cond
  13.                             ((EQ? U '#t) #t)
  14.                             ((EQ? U '#f) #t)
  15.                             (#t #f))))
  16.  
  17. (define not_(lambda (A) (cond
  18.                            ((EQ? A '#t) #f)
  19.                            ((EQ? A '#f) #t)
  20.                            (#t #f))))
  21.  
  22. (define or (lambda (A B) (cond
  23.                            ((not_ (bool? A)) #f)
  24.                            ((not_ (bool? B)) #f)
  25.                            (A #t)
  26.                            (B #t)
  27.                            (#t #f))))
  28.  
  29. (define and_ (lambda (A B) (cond
  30.                             ((not_ (bool? A)) #f)
  31.                             ((not_ (bool? B)) #f)
  32.                             (A (cond
  33.                                  (B #t)
  34.                                  (#t #f)))
  35.                             (#t #f))))
  36.  
  37. (define sumAndMultiplyThroughReduct (lambda (list binary_func acc) (
  38.   cond ((eq? list '()) acc)
  39.        ((  and_ (atom? list)  (not_ (number? list)   )) acc )
  40.        ((atom? list) (cons (+ (car acc) list) (cons (* (cadr acc) list) '())))
  41.        (( and_  (atom? (car list)) (not_ (number? (car list)))  ) (binary_func (cdr list) binary_func acc) )
  42.        ((atom? (car list) )  (binary_func (cdr list) binary_func (cons
  43.                                     (+ (car acc) (car list))
  44.                                     (cons (* (cadr acc) (car list)) '()))))
  45.        (#t (binary_func (cdr list) binary_func  (binary_func (car list) binary_func acc)))
  46.   )))
  47.  
  48. (define sumAndMultiplyAcc (lambda (list) (
  49.   cond ((eq? list '()) 'empthy_list)
  50.        (#t (sumAndMultiplyThroughReduct list sumAndMultiplyThroughReduct  '(0 1)))
  51.   )))
  52.  
  53. (sumAndMultiplyAcc '(2 ((((((((((((((((((((((((((((((((((((((((((((((((((((((((()))))  5 . ())))))))))))))))))))))))))))))))))))))))))))))))))))) . 5))
  54. (sumAndMultiplyAcc '(2))
  55. (sumAndMultiplyAcc '(2 7 (5 r)  8 1 r))
  56. (sumAndMultiplyAcc '(2 -3.4 12))
  57. (sumAndMultiplyAcc '(4 2 . 5))
  58. (sumAndMultiplyAcc '(2  2 (4)))
  59. (sumAndMultiplyAcc '())
  60. (sumAndMultiplyAcc '((4 . 4) 1 (3 2 4)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement