Run a function whose name is in a listHow do I check if a list is empty?Finding the index of an item given a list containing it in PythonWhat is the difference between Python's list methods append and extend?How to randomly select an item from a list?How do you split a list into evenly sized chunks?Getting the last element of a listHow to make a flat list out of list of listsHow do I get the number of elements in a list?How do I concatenate two lists in Python?How to clone or copy a list?
How to improve the size of cells in this table?
Why is the order of my features changed when using readFeatures in OpenLayers v4.6.5?
Milky way is orbiting around?
My players like to search everything. What do they find?
What is the difference between a historical drama and a period drama?
Why did the "Orks" never develop better firearms than Firelances and Handcannons?
Explain how 'Sharing the burden' puzzle from Professor Layton and the Miracle Mask should be solved
Why would a propellor have blades of different lengths?
Did Stalin kill all Soviet officers involved in the Winter War?
Park the computer
What is the maximum amount of diamond in one Minecraft game?
Is there a typical layout to blocking installed for backing in new construction framing?
CPA filed late returns, stating I would get money; IRS says they were filed too late
PhD: When to quit and move on?
Show that there are infinitely more problems than we will ever be able to compute
Is it possible that Curiosity measured its own methane or failed doing the spectrometry?
Does taking on an assistant professor position prevent me from doing post-docs later?
How can I effectively map a multi-level dungeon?
When do I make my first save against the Web spell?
What does the ash content of broken wheat really mean?
Why did moving the mouse cursor cause Windows 95 to run more quickly?
Using Sed to add counter to keyword
How can one synthesise a conjugated alkyne chain?
Does the Defensive Duelist feat stack with the Warforged integrated protection?
Run a function whose name is in a list
How do I check if a list is empty?Finding the index of an item given a list containing it in PythonWhat is the difference between Python's list methods append and extend?How to randomly select an item from a list?How do you split a list into evenly sized chunks?Getting the last element of a listHow to make a flat list out of list of listsHow do I get the number of elements in a list?How do I concatenate two lists in Python?How to clone or copy a list?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
I'm still learning Racket.
I have to call an unknown function. The function and its parameters are in the following list:
(define l1 '((function-name parameter1)
(function-name parameter3)))
To run that function, I'm doing:
(first (car l1)) (second (car l1)) another-parameter
But I get the error:
application: not a procedure;
expected a procedure that can be applied to arguments
given: 'function-name
arguments...:
How can I run that function-name
?
UPDATE:
I have tried Óscar's answer:
(eval (first (car l1)) (second (car l1)) another-parameter)
And I get the error:
eval: arity mismatch;
the expected number of arguments does not match the given number
given: 3
arguments...:
I have also tried:
(define-namespace-anchor a)
(define ns (namespace-anchor->namespace a))
(eval (first (car l1)) (second (car l1)) another-parameter ns)
And I get the same error:
eval: arity mismatch;
the expected number of arguments does not match the given number
given: 4
arguments...:
Then, I tried this:
(eval (list (first (car l1)) (second (car l1)) another-parameter))
And I get the error:
function-name: unbound identifier;
also, no #%app syntax transformer is bound in: function-name
Finally, I have tried:
(eval (list (first (car l1)) (second (car l1)) another-parameter) ns)
And I get an internal error from function-name
. But this function, works perfectly.
function-name
could be at least three functions (or more), this is why I haven't put it here before. All of them will have two lists as parameters, and they will return #t or #f.
One of then, then one is testing now is:
(define match (lambda (list1 list2) ...))
Obviously, list1
and list2
are lists.
UPDATE 2:
I have tried Óscar's Minimal, Complete and verifiable example, and it works. But, I have modified to used on my on work, and it doesn't work. Look:
(define function-name
(lambda (list1 list2)
(append list1 list2)))
(define parameter1 '(1 2))
(define parameter3 '(3 4))
(define another-parameter '(5 6))
(define l1 '((function-name parameter1)
(function-name parameter3)))
(define-namespace-anchor a)
(define ns (namespace-anchor->namespace a))
(define another-function
(lambda (l1 the-parameter)
(cond
[(eval (list (first (car l1)) (second (car l1)) 'the-parameter) ns) l1])
)
)
(another-function l1 another-parameter)
I have created another-function
, and it fails with the parameter 'the-parameter
. It complains saying:
the-parameter: undefined;
cannot reference an identifier before its definition
So the problem is when I use a function's parameter as a parameter for the eval
function.
list functional-programming scheme racket
add a comment |
I'm still learning Racket.
I have to call an unknown function. The function and its parameters are in the following list:
(define l1 '((function-name parameter1)
(function-name parameter3)))
To run that function, I'm doing:
(first (car l1)) (second (car l1)) another-parameter
But I get the error:
application: not a procedure;
expected a procedure that can be applied to arguments
given: 'function-name
arguments...:
How can I run that function-name
?
UPDATE:
I have tried Óscar's answer:
(eval (first (car l1)) (second (car l1)) another-parameter)
And I get the error:
eval: arity mismatch;
the expected number of arguments does not match the given number
given: 3
arguments...:
I have also tried:
(define-namespace-anchor a)
(define ns (namespace-anchor->namespace a))
(eval (first (car l1)) (second (car l1)) another-parameter ns)
And I get the same error:
eval: arity mismatch;
the expected number of arguments does not match the given number
given: 4
arguments...:
Then, I tried this:
(eval (list (first (car l1)) (second (car l1)) another-parameter))
And I get the error:
function-name: unbound identifier;
also, no #%app syntax transformer is bound in: function-name
Finally, I have tried:
(eval (list (first (car l1)) (second (car l1)) another-parameter) ns)
And I get an internal error from function-name
. But this function, works perfectly.
function-name
could be at least three functions (or more), this is why I haven't put it here before. All of them will have two lists as parameters, and they will return #t or #f.
One of then, then one is testing now is:
(define match (lambda (list1 list2) ...))
Obviously, list1
and list2
are lists.
UPDATE 2:
I have tried Óscar's Minimal, Complete and verifiable example, and it works. But, I have modified to used on my on work, and it doesn't work. Look:
(define function-name
(lambda (list1 list2)
(append list1 list2)))
(define parameter1 '(1 2))
(define parameter3 '(3 4))
(define another-parameter '(5 6))
(define l1 '((function-name parameter1)
(function-name parameter3)))
(define-namespace-anchor a)
(define ns (namespace-anchor->namespace a))
(define another-function
(lambda (l1 the-parameter)
(cond
[(eval (list (first (car l1)) (second (car l1)) 'the-parameter) ns) l1])
)
)
(another-function l1 another-parameter)
I have created another-function
, and it fails with the parameter 'the-parameter
. It complains saying:
the-parameter: undefined;
cannot reference an identifier before its definition
So the problem is when I use a function's parameter as a parameter for the eval
function.
list functional-programming scheme racket
add a comment |
I'm still learning Racket.
I have to call an unknown function. The function and its parameters are in the following list:
(define l1 '((function-name parameter1)
(function-name parameter3)))
To run that function, I'm doing:
(first (car l1)) (second (car l1)) another-parameter
But I get the error:
application: not a procedure;
expected a procedure that can be applied to arguments
given: 'function-name
arguments...:
How can I run that function-name
?
UPDATE:
I have tried Óscar's answer:
(eval (first (car l1)) (second (car l1)) another-parameter)
And I get the error:
eval: arity mismatch;
the expected number of arguments does not match the given number
given: 3
arguments...:
I have also tried:
(define-namespace-anchor a)
(define ns (namespace-anchor->namespace a))
(eval (first (car l1)) (second (car l1)) another-parameter ns)
And I get the same error:
eval: arity mismatch;
the expected number of arguments does not match the given number
given: 4
arguments...:
Then, I tried this:
(eval (list (first (car l1)) (second (car l1)) another-parameter))
And I get the error:
function-name: unbound identifier;
also, no #%app syntax transformer is bound in: function-name
Finally, I have tried:
(eval (list (first (car l1)) (second (car l1)) another-parameter) ns)
And I get an internal error from function-name
. But this function, works perfectly.
function-name
could be at least three functions (or more), this is why I haven't put it here before. All of them will have two lists as parameters, and they will return #t or #f.
One of then, then one is testing now is:
(define match (lambda (list1 list2) ...))
Obviously, list1
and list2
are lists.
UPDATE 2:
I have tried Óscar's Minimal, Complete and verifiable example, and it works. But, I have modified to used on my on work, and it doesn't work. Look:
(define function-name
(lambda (list1 list2)
(append list1 list2)))
(define parameter1 '(1 2))
(define parameter3 '(3 4))
(define another-parameter '(5 6))
(define l1 '((function-name parameter1)
(function-name parameter3)))
(define-namespace-anchor a)
(define ns (namespace-anchor->namespace a))
(define another-function
(lambda (l1 the-parameter)
(cond
[(eval (list (first (car l1)) (second (car l1)) 'the-parameter) ns) l1])
)
)
(another-function l1 another-parameter)
I have created another-function
, and it fails with the parameter 'the-parameter
. It complains saying:
the-parameter: undefined;
cannot reference an identifier before its definition
So the problem is when I use a function's parameter as a parameter for the eval
function.
list functional-programming scheme racket
I'm still learning Racket.
I have to call an unknown function. The function and its parameters are in the following list:
(define l1 '((function-name parameter1)
(function-name parameter3)))
To run that function, I'm doing:
(first (car l1)) (second (car l1)) another-parameter
But I get the error:
application: not a procedure;
expected a procedure that can be applied to arguments
given: 'function-name
arguments...:
How can I run that function-name
?
UPDATE:
I have tried Óscar's answer:
(eval (first (car l1)) (second (car l1)) another-parameter)
And I get the error:
eval: arity mismatch;
the expected number of arguments does not match the given number
given: 3
arguments...:
I have also tried:
(define-namespace-anchor a)
(define ns (namespace-anchor->namespace a))
(eval (first (car l1)) (second (car l1)) another-parameter ns)
And I get the same error:
eval: arity mismatch;
the expected number of arguments does not match the given number
given: 4
arguments...:
Then, I tried this:
(eval (list (first (car l1)) (second (car l1)) another-parameter))
And I get the error:
function-name: unbound identifier;
also, no #%app syntax transformer is bound in: function-name
Finally, I have tried:
(eval (list (first (car l1)) (second (car l1)) another-parameter) ns)
And I get an internal error from function-name
. But this function, works perfectly.
function-name
could be at least three functions (or more), this is why I haven't put it here before. All of them will have two lists as parameters, and they will return #t or #f.
One of then, then one is testing now is:
(define match (lambda (list1 list2) ...))
Obviously, list1
and list2
are lists.
UPDATE 2:
I have tried Óscar's Minimal, Complete and verifiable example, and it works. But, I have modified to used on my on work, and it doesn't work. Look:
(define function-name
(lambda (list1 list2)
(append list1 list2)))
(define parameter1 '(1 2))
(define parameter3 '(3 4))
(define another-parameter '(5 6))
(define l1 '((function-name parameter1)
(function-name parameter3)))
(define-namespace-anchor a)
(define ns (namespace-anchor->namespace a))
(define another-function
(lambda (l1 the-parameter)
(cond
[(eval (list (first (car l1)) (second (car l1)) 'the-parameter) ns) l1])
)
)
(another-function l1 another-parameter)
I have created another-function
, and it fails with the parameter 'the-parameter
. It complains saying:
the-parameter: undefined;
cannot reference an identifier before its definition
So the problem is when I use a function's parameter as a parameter for the eval
function.
list functional-programming scheme racket
list functional-programming scheme racket
edited Mar 26 at 10:22
VansFannel
asked Mar 25 at 18:40
VansFannelVansFannel
21k85 gold badges292 silver badges510 bronze badges
21k85 gold badges292 silver badges510 bronze badges
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
You can use eval
and quasiquoting for this, it works for your input. Do notice that this is how you should post your questions, it's a Minimal, Complete, and Verifiable example that anyone can copy and run, without having to guess what you were thinking:
(define function-name
(lambda (list1 list2)
(append list1 list2)))
(define parameter1 '(1 2))
(define parameter3 '(3 4))
(define another-parameter '(5 6))
(define l1 '((function-name parameter1)
(function-name parameter3)))
(define-namespace-anchor a)
(define ns (namespace-anchor->namespace a))
(define another-function
(lambda (l1 the-parameter)
(cond
[(eval `(,(first (car l1)) ,(second (car l1)) ',the-parameter) ns)
l1])))
(another-function l1 another-parameter)
=> '((function-name parameter1) (function-name parameter3))
Thanks for your answer. I have tried it and I get errors. I have updated my question. I'm testing the last error to know if it is my fault. Thanks.
– VansFannel
Mar 26 at 7:48
As always: please post the real functions you’re using to test. At least an skeleton, so we know what parameters they’re expecting, etc.
– Óscar López
Mar 26 at 7:50
Sorry. Question updated.
– VansFannel
Mar 26 at 7:59
This should work, and notice the quote beforeanother-parameter
:(eval (list (first (car l1)) (second (car l1)) 'another-parameter) ns)
. If you still get an internal error fromfunction-name
, then there's something wrong withfunction-name
, not with the wayeval
is doing its job.
– Óscar López
Mar 26 at 9:15
I think I have found my problem. I have updated the question, but the problem is that I'm using as the parameteranother-parameter
a parameter from the function thateval
is inside. Thanks a lot.
– VansFannel
Mar 26 at 10:27
|
show 1 more comment
Please consider evaluating the procedure like this:
(define l1 `((,sin ,(+ 1 2))
(,+ 1 2 3)))
(sin (+ 1 2)) ; ==> 0.14..
((caar l1) (cadar l1)) ; ==> 0.14..
(apply (caar l1) (cdar l1)) ; ==> 0.14..
(+ 1 2 3) ; ==> 6
(apply (caadr l1) (cdadr l1)) ; ==> 6
Why does this work? Well. Your attempted to call the name of a procedure. By evaluating the procedure name you get the actual procedure object. You can indeed evaluate a procedure in the REPL and see what you get back:
+ ; ==> #<procedure:+>
l1 ; ==> ((#<procedure:sin> 3) (#<procedure:+> 1 2 3))
If l1
were defined as '((sin (+ 1 2)) (+ 1 2 3))
evaluating it would return ((sin (+ 1 2)) (+ 1 2 3))
so there is a big difference.
And of course. Using the quasiquote/unquote is just a fancy way of writing this:
(define l1 (list (list sin (+ 1 2))
(list + '1 '2 '3)))
add a comment |
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%2f55344480%2frun-a-function-whose-name-is-in-a-list%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
You can use eval
and quasiquoting for this, it works for your input. Do notice that this is how you should post your questions, it's a Minimal, Complete, and Verifiable example that anyone can copy and run, without having to guess what you were thinking:
(define function-name
(lambda (list1 list2)
(append list1 list2)))
(define parameter1 '(1 2))
(define parameter3 '(3 4))
(define another-parameter '(5 6))
(define l1 '((function-name parameter1)
(function-name parameter3)))
(define-namespace-anchor a)
(define ns (namespace-anchor->namespace a))
(define another-function
(lambda (l1 the-parameter)
(cond
[(eval `(,(first (car l1)) ,(second (car l1)) ',the-parameter) ns)
l1])))
(another-function l1 another-parameter)
=> '((function-name parameter1) (function-name parameter3))
Thanks for your answer. I have tried it and I get errors. I have updated my question. I'm testing the last error to know if it is my fault. Thanks.
– VansFannel
Mar 26 at 7:48
As always: please post the real functions you’re using to test. At least an skeleton, so we know what parameters they’re expecting, etc.
– Óscar López
Mar 26 at 7:50
Sorry. Question updated.
– VansFannel
Mar 26 at 7:59
This should work, and notice the quote beforeanother-parameter
:(eval (list (first (car l1)) (second (car l1)) 'another-parameter) ns)
. If you still get an internal error fromfunction-name
, then there's something wrong withfunction-name
, not with the wayeval
is doing its job.
– Óscar López
Mar 26 at 9:15
I think I have found my problem. I have updated the question, but the problem is that I'm using as the parameteranother-parameter
a parameter from the function thateval
is inside. Thanks a lot.
– VansFannel
Mar 26 at 10:27
|
show 1 more comment
You can use eval
and quasiquoting for this, it works for your input. Do notice that this is how you should post your questions, it's a Minimal, Complete, and Verifiable example that anyone can copy and run, without having to guess what you were thinking:
(define function-name
(lambda (list1 list2)
(append list1 list2)))
(define parameter1 '(1 2))
(define parameter3 '(3 4))
(define another-parameter '(5 6))
(define l1 '((function-name parameter1)
(function-name parameter3)))
(define-namespace-anchor a)
(define ns (namespace-anchor->namespace a))
(define another-function
(lambda (l1 the-parameter)
(cond
[(eval `(,(first (car l1)) ,(second (car l1)) ',the-parameter) ns)
l1])))
(another-function l1 another-parameter)
=> '((function-name parameter1) (function-name parameter3))
Thanks for your answer. I have tried it and I get errors. I have updated my question. I'm testing the last error to know if it is my fault. Thanks.
– VansFannel
Mar 26 at 7:48
As always: please post the real functions you’re using to test. At least an skeleton, so we know what parameters they’re expecting, etc.
– Óscar López
Mar 26 at 7:50
Sorry. Question updated.
– VansFannel
Mar 26 at 7:59
This should work, and notice the quote beforeanother-parameter
:(eval (list (first (car l1)) (second (car l1)) 'another-parameter) ns)
. If you still get an internal error fromfunction-name
, then there's something wrong withfunction-name
, not with the wayeval
is doing its job.
– Óscar López
Mar 26 at 9:15
I think I have found my problem. I have updated the question, but the problem is that I'm using as the parameteranother-parameter
a parameter from the function thateval
is inside. Thanks a lot.
– VansFannel
Mar 26 at 10:27
|
show 1 more comment
You can use eval
and quasiquoting for this, it works for your input. Do notice that this is how you should post your questions, it's a Minimal, Complete, and Verifiable example that anyone can copy and run, without having to guess what you were thinking:
(define function-name
(lambda (list1 list2)
(append list1 list2)))
(define parameter1 '(1 2))
(define parameter3 '(3 4))
(define another-parameter '(5 6))
(define l1 '((function-name parameter1)
(function-name parameter3)))
(define-namespace-anchor a)
(define ns (namespace-anchor->namespace a))
(define another-function
(lambda (l1 the-parameter)
(cond
[(eval `(,(first (car l1)) ,(second (car l1)) ',the-parameter) ns)
l1])))
(another-function l1 another-parameter)
=> '((function-name parameter1) (function-name parameter3))
You can use eval
and quasiquoting for this, it works for your input. Do notice that this is how you should post your questions, it's a Minimal, Complete, and Verifiable example that anyone can copy and run, without having to guess what you were thinking:
(define function-name
(lambda (list1 list2)
(append list1 list2)))
(define parameter1 '(1 2))
(define parameter3 '(3 4))
(define another-parameter '(5 6))
(define l1 '((function-name parameter1)
(function-name parameter3)))
(define-namespace-anchor a)
(define ns (namespace-anchor->namespace a))
(define another-function
(lambda (l1 the-parameter)
(cond
[(eval `(,(first (car l1)) ,(second (car l1)) ',the-parameter) ns)
l1])))
(another-function l1 another-parameter)
=> '((function-name parameter1) (function-name parameter3))
edited Mar 26 at 11:28
answered Mar 25 at 19:15
Óscar LópezÓscar López
186k27 gold badges247 silver badges332 bronze badges
186k27 gold badges247 silver badges332 bronze badges
Thanks for your answer. I have tried it and I get errors. I have updated my question. I'm testing the last error to know if it is my fault. Thanks.
– VansFannel
Mar 26 at 7:48
As always: please post the real functions you’re using to test. At least an skeleton, so we know what parameters they’re expecting, etc.
– Óscar López
Mar 26 at 7:50
Sorry. Question updated.
– VansFannel
Mar 26 at 7:59
This should work, and notice the quote beforeanother-parameter
:(eval (list (first (car l1)) (second (car l1)) 'another-parameter) ns)
. If you still get an internal error fromfunction-name
, then there's something wrong withfunction-name
, not with the wayeval
is doing its job.
– Óscar López
Mar 26 at 9:15
I think I have found my problem. I have updated the question, but the problem is that I'm using as the parameteranother-parameter
a parameter from the function thateval
is inside. Thanks a lot.
– VansFannel
Mar 26 at 10:27
|
show 1 more comment
Thanks for your answer. I have tried it and I get errors. I have updated my question. I'm testing the last error to know if it is my fault. Thanks.
– VansFannel
Mar 26 at 7:48
As always: please post the real functions you’re using to test. At least an skeleton, so we know what parameters they’re expecting, etc.
– Óscar López
Mar 26 at 7:50
Sorry. Question updated.
– VansFannel
Mar 26 at 7:59
This should work, and notice the quote beforeanother-parameter
:(eval (list (first (car l1)) (second (car l1)) 'another-parameter) ns)
. If you still get an internal error fromfunction-name
, then there's something wrong withfunction-name
, not with the wayeval
is doing its job.
– Óscar López
Mar 26 at 9:15
I think I have found my problem. I have updated the question, but the problem is that I'm using as the parameteranother-parameter
a parameter from the function thateval
is inside. Thanks a lot.
– VansFannel
Mar 26 at 10:27
Thanks for your answer. I have tried it and I get errors. I have updated my question. I'm testing the last error to know if it is my fault. Thanks.
– VansFannel
Mar 26 at 7:48
Thanks for your answer. I have tried it and I get errors. I have updated my question. I'm testing the last error to know if it is my fault. Thanks.
– VansFannel
Mar 26 at 7:48
As always: please post the real functions you’re using to test. At least an skeleton, so we know what parameters they’re expecting, etc.
– Óscar López
Mar 26 at 7:50
As always: please post the real functions you’re using to test. At least an skeleton, so we know what parameters they’re expecting, etc.
– Óscar López
Mar 26 at 7:50
Sorry. Question updated.
– VansFannel
Mar 26 at 7:59
Sorry. Question updated.
– VansFannel
Mar 26 at 7:59
This should work, and notice the quote before
another-parameter
: (eval (list (first (car l1)) (second (car l1)) 'another-parameter) ns)
. If you still get an internal error from function-name
, then there's something wrong with function-name
, not with the way eval
is doing its job.– Óscar López
Mar 26 at 9:15
This should work, and notice the quote before
another-parameter
: (eval (list (first (car l1)) (second (car l1)) 'another-parameter) ns)
. If you still get an internal error from function-name
, then there's something wrong with function-name
, not with the way eval
is doing its job.– Óscar López
Mar 26 at 9:15
I think I have found my problem. I have updated the question, but the problem is that I'm using as the parameter
another-parameter
a parameter from the function that eval
is inside. Thanks a lot.– VansFannel
Mar 26 at 10:27
I think I have found my problem. I have updated the question, but the problem is that I'm using as the parameter
another-parameter
a parameter from the function that eval
is inside. Thanks a lot.– VansFannel
Mar 26 at 10:27
|
show 1 more comment
Please consider evaluating the procedure like this:
(define l1 `((,sin ,(+ 1 2))
(,+ 1 2 3)))
(sin (+ 1 2)) ; ==> 0.14..
((caar l1) (cadar l1)) ; ==> 0.14..
(apply (caar l1) (cdar l1)) ; ==> 0.14..
(+ 1 2 3) ; ==> 6
(apply (caadr l1) (cdadr l1)) ; ==> 6
Why does this work? Well. Your attempted to call the name of a procedure. By evaluating the procedure name you get the actual procedure object. You can indeed evaluate a procedure in the REPL and see what you get back:
+ ; ==> #<procedure:+>
l1 ; ==> ((#<procedure:sin> 3) (#<procedure:+> 1 2 3))
If l1
were defined as '((sin (+ 1 2)) (+ 1 2 3))
evaluating it would return ((sin (+ 1 2)) (+ 1 2 3))
so there is a big difference.
And of course. Using the quasiquote/unquote is just a fancy way of writing this:
(define l1 (list (list sin (+ 1 2))
(list + '1 '2 '3)))
add a comment |
Please consider evaluating the procedure like this:
(define l1 `((,sin ,(+ 1 2))
(,+ 1 2 3)))
(sin (+ 1 2)) ; ==> 0.14..
((caar l1) (cadar l1)) ; ==> 0.14..
(apply (caar l1) (cdar l1)) ; ==> 0.14..
(+ 1 2 3) ; ==> 6
(apply (caadr l1) (cdadr l1)) ; ==> 6
Why does this work? Well. Your attempted to call the name of a procedure. By evaluating the procedure name you get the actual procedure object. You can indeed evaluate a procedure in the REPL and see what you get back:
+ ; ==> #<procedure:+>
l1 ; ==> ((#<procedure:sin> 3) (#<procedure:+> 1 2 3))
If l1
were defined as '((sin (+ 1 2)) (+ 1 2 3))
evaluating it would return ((sin (+ 1 2)) (+ 1 2 3))
so there is a big difference.
And of course. Using the quasiquote/unquote is just a fancy way of writing this:
(define l1 (list (list sin (+ 1 2))
(list + '1 '2 '3)))
add a comment |
Please consider evaluating the procedure like this:
(define l1 `((,sin ,(+ 1 2))
(,+ 1 2 3)))
(sin (+ 1 2)) ; ==> 0.14..
((caar l1) (cadar l1)) ; ==> 0.14..
(apply (caar l1) (cdar l1)) ; ==> 0.14..
(+ 1 2 3) ; ==> 6
(apply (caadr l1) (cdadr l1)) ; ==> 6
Why does this work? Well. Your attempted to call the name of a procedure. By evaluating the procedure name you get the actual procedure object. You can indeed evaluate a procedure in the REPL and see what you get back:
+ ; ==> #<procedure:+>
l1 ; ==> ((#<procedure:sin> 3) (#<procedure:+> 1 2 3))
If l1
were defined as '((sin (+ 1 2)) (+ 1 2 3))
evaluating it would return ((sin (+ 1 2)) (+ 1 2 3))
so there is a big difference.
And of course. Using the quasiquote/unquote is just a fancy way of writing this:
(define l1 (list (list sin (+ 1 2))
(list + '1 '2 '3)))
Please consider evaluating the procedure like this:
(define l1 `((,sin ,(+ 1 2))
(,+ 1 2 3)))
(sin (+ 1 2)) ; ==> 0.14..
((caar l1) (cadar l1)) ; ==> 0.14..
(apply (caar l1) (cdar l1)) ; ==> 0.14..
(+ 1 2 3) ; ==> 6
(apply (caadr l1) (cdadr l1)) ; ==> 6
Why does this work? Well. Your attempted to call the name of a procedure. By evaluating the procedure name you get the actual procedure object. You can indeed evaluate a procedure in the REPL and see what you get back:
+ ; ==> #<procedure:+>
l1 ; ==> ((#<procedure:sin> 3) (#<procedure:+> 1 2 3))
If l1
were defined as '((sin (+ 1 2)) (+ 1 2 3))
evaluating it would return ((sin (+ 1 2)) (+ 1 2 3))
so there is a big difference.
And of course. Using the quasiquote/unquote is just a fancy way of writing this:
(define l1 (list (list sin (+ 1 2))
(list + '1 '2 '3)))
answered Mar 25 at 21:32
SylwesterSylwester
37k2 gold badges31 silver badges58 bronze badges
37k2 gold badges31 silver badges58 bronze badges
add a comment |
add a comment |
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%2f55344480%2frun-a-function-whose-name-is-in-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