Updated Code: Scheme/Racket: Reading my argument as a list
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
|
show 1 more comment
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
1
I'm afraid there are some issues with your code. For example, in theelse
part: you call the recursion twice, but you discard the results. You're assuming thatsumA
,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 ofhas-subtarget
? what should it test?
– Gwang-Jin Kim
Nov 15 '18 at 9:45
|
show 1 more comment
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
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
recursion scheme racket
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 theelse
part: you call the recursion twice, but you discard the results. You're assuming thatsumA
,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 ofhas-subtarget
? what should it test?
– Gwang-Jin Kim
Nov 15 '18 at 9:45
|
show 1 more comment
1
I'm afraid there are some issues with your code. For example, in theelse
part: you call the recursion twice, but you discard the results. You're assuming thatsumA
,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 ofhas-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
|
show 1 more comment
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
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 thatsumA
,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