Question: I am programming in Scheme, I am trying to make a function where you take a list of numbers, reverse the list, throw out the

I am programming in Scheme, I am trying to make a function where you take a list of numbers, reverse the list, throw out the negative numbers and summation the non-negatives. Here is my code:
(define (sum n)
(if (eq?n 0)
0
(+n (sum (-n 1)))))
(define (ReverseEm elems)
(if (null?elems)
'()
(append (ReverseEm (cdr elems))
(list (car elems)))))
(define (nonNegative num)
(if (>=num 0)
num
0))
(define (JustDoIt lst)
(if (nonNegative (ReverseEm (sum lst))))
If I run (JustDoIt '(3-14602-5))it say Ill-formed special form: if
The correct output should be (30216)
Because summation of 3is 1+2+3=6,-14gets thrown out, 1+2+3+4+5+6=21,0=0,1+2=3,-5gets thrown out, the list gets reversed: (30216),I feel I am close, but I can't get the form right in scheme because I am unfimiliar with it,can you help me?

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!