( if (null? l1 ) 0 ( if (null? l2 ) 0 ( + (* (car l1) (car l2)) (ip (cdr l1) (cdr l2))))))
(define (ip x y) (iph x y 0))
(define (iph x y n) (if (null? x) n (if (null? y) n (iph (cdr x) (cdr y) (+ n (* (car x) (car y)))))))
(define (ip-helper ListA ListB sum-so-far) (if (null? ListA) sum-so-far (if (null? ListB) sum-so-far (define a 0) (define b 0) (if (number? car(ListA)) (let a (car ListA)) (if (number? car(ListB)) (let b (car ListB)) (+ sum-so-far (* a b )) (ip (cdr ListA) (cdr ListB) sum-so-far ))) (define (ip ListA ListB) (ip-helper ListA ListB 0))
(if (or (null? list1) (null? list2)) n (if (and (number? (car list1)) (number? (car list2))) (ip2 (cdr list1) (cdr list2) (+ n (* (car list1) (car list2)))) (ip2 (cdr list1) (cdr list2) n))))
(if (or (null? L1)(null? L2)) sum (if (and (number? (car L1)) (number? (car L2))) (ip (cdr L1) (cdr L2) (+ sum (* (car L1) (car L2)))) (ip (cdr L1) (cdr L2) sum)) ))
(if (or (null? L1) (null? L2)) sum (if (and (number? (car L1)) (number? (car L2))) (ip_aux (cdr L1) (cdr L2) (+ sum (* (car L1) (car L2)))) (ip_aux (cdr L1) (cdr L2) sum) ) ))
(define (ip L1 L2) (ip_aux L1 L2 0))
(define (ip-randm List1 List2 res) (if (or (null? List1) (null? List2))) res ip-randm (cdr List1) (cdr List2) (+ (res (* (car List1) (car List2))))) (define (ip List1 List2) (ip-randm List1 List2 0))
(define (ipaux l1 l2 sum) (if (or (null? l1) (null? l2)) sum ; (if (and (number? (car l1)) (number? (car l2))) (ipaux (cdr l1) (cdr l2) (+ sum (* (car l1) (car l2)))) ; (ipaux (cdr l1) (cdr l2) sum) ; ) ) ) (define (ip l1 l2) (ipaux l1 l2 0))