Updated Code: Scheme/Racket: Reading my argument as a list












0















I updated my code, and although I have not arrived at a solution, I am getting there. This is a homework assignment, so I am not looking for someone to solve it for me. I want to solve this on my own. Just wanted to show my progress.



(define has-subtarget?(lambda(ls thirdVal sumA sumB)
(cond
((and (null? (cdr ls)) (= sumA sumB) (= sumA sumB) (= sumA thirdVal) (> sumA 0) (> sumB 0)))
(null? (cdr ls))
(else
(has-subtarget?(cdr ls) thirdVal (+ (car ls) sumA) sumB)
(has-subtarget?(cdr ls) thirdVal sumA (+ (car ls) sumB))
(if (= thirdVal 0)
(has-subtarget?(cdr ls) (car ls) sumA sumB)
))
)
#f
))


Below is my original code that was giving me an error:



"+: contract violation expected: number? given: last argument position: 1st"


I figured out that for some reason it is reading my (+ addToA sumA) as a list rather than the value of want to return from the addition in order for my recursive program to work.



Here is how I'm calling my function:



(has-subtarget? 0 0 0 0 0 '(1 2 3 4)) 

(define has-subtarget?
(lambda (addToA addToB thirdSetVal sumA sumB lst)
(cond
((and (and (and (and (null? (cdr'(lst))) (= sumA sumB)) (> 0 sumA)) (> 0 sumB)) (= sumA thirdSetVal)) #t)
(else
(has-subtarget? 0 (car'(lst)) thirdSetVal (+ addToA sumA) (+ addToB sumB) (cdr'(lst)))
(has-subtarget? (car'(lst)) 0 thirdSetVal (+ addToA sumA) (+ addToB sumB) (cdr'(lst)))

(if((or(and (= sumA 0) (= sumB 0)) (= thirdSetVal 0)))
(has-subtarget? 0 0 (car'(lst)) (+addToA sumA) (+ addToB sumB) (cdr'(lst))))

)))


)









share|improve this question




















  • 1





    I'm afraid there are some issues with your code. For example, in the else part: you call the recursion twice, but you discard the results. You're assuming that sumA, sumB, thirdSetVal have changed their values, but they have not - that's not how functional programming works, you need to use the returned values, the parameters do not change after the recursion returns. Also, you're incorrectly quoting the list: (cdr'(lst)) must be written as (cdr lst)

    – Óscar López
    Nov 14 '18 at 10:05











  • Thank you. So would (car'(lst)) also be written as (car lst)?

    – Joe Mario
    Nov 14 '18 at 11:54











  • Of course!. But that's the least of your problems, you need to understand how Scheme programs are written, and why your current attempt won't work, at all. In fact, you'll have to rewrite the code from scratch.

    – Óscar López
    Nov 14 '18 at 11:58













  • (and (and (and (and A B) C) D) E) is the same like (and A B C D E)

    – Gwang-Jin Kim
    Nov 15 '18 at 9:43











  • what is the aim of has-subtarget? what should it test?

    – Gwang-Jin Kim
    Nov 15 '18 at 9:45


















0















I updated my code, and although I have not arrived at a solution, I am getting there. This is a homework assignment, so I am not looking for someone to solve it for me. I want to solve this on my own. Just wanted to show my progress.



(define has-subtarget?(lambda(ls thirdVal sumA sumB)
(cond
((and (null? (cdr ls)) (= sumA sumB) (= sumA sumB) (= sumA thirdVal) (> sumA 0) (> sumB 0)))
(null? (cdr ls))
(else
(has-subtarget?(cdr ls) thirdVal (+ (car ls) sumA) sumB)
(has-subtarget?(cdr ls) thirdVal sumA (+ (car ls) sumB))
(if (= thirdVal 0)
(has-subtarget?(cdr ls) (car ls) sumA sumB)
))
)
#f
))


Below is my original code that was giving me an error:



"+: contract violation expected: number? given: last argument position: 1st"


I figured out that for some reason it is reading my (+ addToA sumA) as a list rather than the value of want to return from the addition in order for my recursive program to work.



Here is how I'm calling my function:



(has-subtarget? 0 0 0 0 0 '(1 2 3 4)) 

(define has-subtarget?
(lambda (addToA addToB thirdSetVal sumA sumB lst)
(cond
((and (and (and (and (null? (cdr'(lst))) (= sumA sumB)) (> 0 sumA)) (> 0 sumB)) (= sumA thirdSetVal)) #t)
(else
(has-subtarget? 0 (car'(lst)) thirdSetVal (+ addToA sumA) (+ addToB sumB) (cdr'(lst)))
(has-subtarget? (car'(lst)) 0 thirdSetVal (+ addToA sumA) (+ addToB sumB) (cdr'(lst)))

(if((or(and (= sumA 0) (= sumB 0)) (= thirdSetVal 0)))
(has-subtarget? 0 0 (car'(lst)) (+addToA sumA) (+ addToB sumB) (cdr'(lst))))

)))


)









share|improve this question




















  • 1





    I'm afraid there are some issues with your code. For example, in the else part: you call the recursion twice, but you discard the results. You're assuming that sumA, sumB, thirdSetVal have changed their values, but they have not - that's not how functional programming works, you need to use the returned values, the parameters do not change after the recursion returns. Also, you're incorrectly quoting the list: (cdr'(lst)) must be written as (cdr lst)

    – Óscar López
    Nov 14 '18 at 10:05











  • Thank you. So would (car'(lst)) also be written as (car lst)?

    – Joe Mario
    Nov 14 '18 at 11:54











  • Of course!. But that's the least of your problems, you need to understand how Scheme programs are written, and why your current attempt won't work, at all. In fact, you'll have to rewrite the code from scratch.

    – Óscar López
    Nov 14 '18 at 11:58













  • (and (and (and (and A B) C) D) E) is the same like (and A B C D E)

    – Gwang-Jin Kim
    Nov 15 '18 at 9:43











  • what is the aim of has-subtarget? what should it test?

    – Gwang-Jin Kim
    Nov 15 '18 at 9:45
















0












0








0


0






I updated my code, and although I have not arrived at a solution, I am getting there. This is a homework assignment, so I am not looking for someone to solve it for me. I want to solve this on my own. Just wanted to show my progress.



(define has-subtarget?(lambda(ls thirdVal sumA sumB)
(cond
((and (null? (cdr ls)) (= sumA sumB) (= sumA sumB) (= sumA thirdVal) (> sumA 0) (> sumB 0)))
(null? (cdr ls))
(else
(has-subtarget?(cdr ls) thirdVal (+ (car ls) sumA) sumB)
(has-subtarget?(cdr ls) thirdVal sumA (+ (car ls) sumB))
(if (= thirdVal 0)
(has-subtarget?(cdr ls) (car ls) sumA sumB)
))
)
#f
))


Below is my original code that was giving me an error:



"+: contract violation expected: number? given: last argument position: 1st"


I figured out that for some reason it is reading my (+ addToA sumA) as a list rather than the value of want to return from the addition in order for my recursive program to work.



Here is how I'm calling my function:



(has-subtarget? 0 0 0 0 0 '(1 2 3 4)) 

(define has-subtarget?
(lambda (addToA addToB thirdSetVal sumA sumB lst)
(cond
((and (and (and (and (null? (cdr'(lst))) (= sumA sumB)) (> 0 sumA)) (> 0 sumB)) (= sumA thirdSetVal)) #t)
(else
(has-subtarget? 0 (car'(lst)) thirdSetVal (+ addToA sumA) (+ addToB sumB) (cdr'(lst)))
(has-subtarget? (car'(lst)) 0 thirdSetVal (+ addToA sumA) (+ addToB sumB) (cdr'(lst)))

(if((or(and (= sumA 0) (= sumB 0)) (= thirdSetVal 0)))
(has-subtarget? 0 0 (car'(lst)) (+addToA sumA) (+ addToB sumB) (cdr'(lst))))

)))


)









share|improve this question
















I updated my code, and although I have not arrived at a solution, I am getting there. This is a homework assignment, so I am not looking for someone to solve it for me. I want to solve this on my own. Just wanted to show my progress.



(define has-subtarget?(lambda(ls thirdVal sumA sumB)
(cond
((and (null? (cdr ls)) (= sumA sumB) (= sumA sumB) (= sumA thirdVal) (> sumA 0) (> sumB 0)))
(null? (cdr ls))
(else
(has-subtarget?(cdr ls) thirdVal (+ (car ls) sumA) sumB)
(has-subtarget?(cdr ls) thirdVal sumA (+ (car ls) sumB))
(if (= thirdVal 0)
(has-subtarget?(cdr ls) (car ls) sumA sumB)
))
)
#f
))


Below is my original code that was giving me an error:



"+: contract violation expected: number? given: last argument position: 1st"


I figured out that for some reason it is reading my (+ addToA sumA) as a list rather than the value of want to return from the addition in order for my recursive program to work.



Here is how I'm calling my function:



(has-subtarget? 0 0 0 0 0 '(1 2 3 4)) 

(define has-subtarget?
(lambda (addToA addToB thirdSetVal sumA sumB lst)
(cond
((and (and (and (and (null? (cdr'(lst))) (= sumA sumB)) (> 0 sumA)) (> 0 sumB)) (= sumA thirdSetVal)) #t)
(else
(has-subtarget? 0 (car'(lst)) thirdSetVal (+ addToA sumA) (+ addToB sumB) (cdr'(lst)))
(has-subtarget? (car'(lst)) 0 thirdSetVal (+ addToA sumA) (+ addToB sumB) (cdr'(lst)))

(if((or(and (= sumA 0) (= sumB 0)) (= thirdSetVal 0)))
(has-subtarget? 0 0 (car'(lst)) (+addToA sumA) (+ addToB sumB) (cdr'(lst))))

)))


)






recursion scheme racket






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 16 '18 at 21:22







Joe Mario

















asked Nov 14 '18 at 7:21









Joe MarioJoe Mario

11




11








  • 1





    I'm afraid there are some issues with your code. For example, in the else part: you call the recursion twice, but you discard the results. You're assuming that sumA, sumB, thirdSetVal have changed their values, but they have not - that's not how functional programming works, you need to use the returned values, the parameters do not change after the recursion returns. Also, you're incorrectly quoting the list: (cdr'(lst)) must be written as (cdr lst)

    – Óscar López
    Nov 14 '18 at 10:05











  • Thank you. So would (car'(lst)) also be written as (car lst)?

    – Joe Mario
    Nov 14 '18 at 11:54











  • Of course!. But that's the least of your problems, you need to understand how Scheme programs are written, and why your current attempt won't work, at all. In fact, you'll have to rewrite the code from scratch.

    – Óscar López
    Nov 14 '18 at 11:58













  • (and (and (and (and A B) C) D) E) is the same like (and A B C D E)

    – Gwang-Jin Kim
    Nov 15 '18 at 9:43











  • what is the aim of has-subtarget? what should it test?

    – Gwang-Jin Kim
    Nov 15 '18 at 9:45
















  • 1





    I'm afraid there are some issues with your code. For example, in the else part: you call the recursion twice, but you discard the results. You're assuming that sumA, sumB, thirdSetVal have changed their values, but they have not - that's not how functional programming works, you need to use the returned values, the parameters do not change after the recursion returns. Also, you're incorrectly quoting the list: (cdr'(lst)) must be written as (cdr lst)

    – Óscar López
    Nov 14 '18 at 10:05











  • Thank you. So would (car'(lst)) also be written as (car lst)?

    – Joe Mario
    Nov 14 '18 at 11:54











  • Of course!. But that's the least of your problems, you need to understand how Scheme programs are written, and why your current attempt won't work, at all. In fact, you'll have to rewrite the code from scratch.

    – Óscar López
    Nov 14 '18 at 11:58













  • (and (and (and (and A B) C) D) E) is the same like (and A B C D E)

    – Gwang-Jin Kim
    Nov 15 '18 at 9:43











  • what is the aim of has-subtarget? what should it test?

    – Gwang-Jin Kim
    Nov 15 '18 at 9:45










1




1





I'm afraid there are some issues with your code. For example, in the else part: you call the recursion twice, but you discard the results. You're assuming that sumA, sumB, thirdSetVal have changed their values, but they have not - that's not how functional programming works, you need to use the returned values, the parameters do not change after the recursion returns. Also, you're incorrectly quoting the list: (cdr'(lst)) must be written as (cdr lst)

– Óscar López
Nov 14 '18 at 10:05





I'm afraid there are some issues with your code. For example, in the else part: you call the recursion twice, but you discard the results. You're assuming that sumA, sumB, thirdSetVal have changed their values, but they have not - that's not how functional programming works, you need to use the returned values, the parameters do not change after the recursion returns. Also, you're incorrectly quoting the list: (cdr'(lst)) must be written as (cdr lst)

– Óscar López
Nov 14 '18 at 10:05













Thank you. So would (car'(lst)) also be written as (car lst)?

– Joe Mario
Nov 14 '18 at 11:54





Thank you. So would (car'(lst)) also be written as (car lst)?

– Joe Mario
Nov 14 '18 at 11:54













Of course!. But that's the least of your problems, you need to understand how Scheme programs are written, and why your current attempt won't work, at all. In fact, you'll have to rewrite the code from scratch.

– Óscar López
Nov 14 '18 at 11:58







Of course!. But that's the least of your problems, you need to understand how Scheme programs are written, and why your current attempt won't work, at all. In fact, you'll have to rewrite the code from scratch.

– Óscar López
Nov 14 '18 at 11:58















(and (and (and (and A B) C) D) E) is the same like (and A B C D E)

– Gwang-Jin Kim
Nov 15 '18 at 9:43





(and (and (and (and A B) C) D) E) is the same like (and A B C D E)

– Gwang-Jin Kim
Nov 15 '18 at 9:43













what is the aim of has-subtarget? what should it test?

– Gwang-Jin Kim
Nov 15 '18 at 9:45







what is the aim of has-subtarget? what should it test?

– Gwang-Jin Kim
Nov 15 '18 at 9:45














0






active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53294968%2fupdated-code-scheme-racket-reading-my-argument-as-a-list%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53294968%2fupdated-code-scheme-racket-reading-my-argument-as-a-list%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Xamarin.iOS Cant Deploy on Iphone

Glorious Revolution

Dulmage-Mendelsohn matrix decomposition in Python