Suppose I have a simple symbol:
> +
+
Is there any way I can apply that symbol as a procedure:
> ((do-something-with +) 1 2)
3
So that +
is evaluated to the procedure +
?
Suppose I have a simple symbol:
> +
+
Is there any way I can apply that symbol as a procedure:
> ((do-something-with +) 1 2)
3
So that +
is evaluated to the procedure +
?
I m not 100% sure, but would:
((eval +) 1 2)
work? I m not sure if you need to specify the environment, or even if that works - I m a Scheme noob. :)
Lucas s answer is great. For untrusted input you can make a white list of allowed symbols/operators.
(define do-something (lambda (op)
(cond
((equal? op `+) +)
((equal? op `-) -)
((equal? op `*) *)
((equal? op `/) /)
((equal? op `^) ^))))
((do-something `+) 1 2)
Newbie too so hope I ve understood your question correctly...
Functions are first class objects in scheme so you don t need eval:
1 ]=> (define plus +)
;Value: plus
1 ]=> (plus 2 3)
;Value: 5
HTH
Update: Ignore this and see the comments!
Lots of Prolog-in-Scheme implementations are out there. E.g. Kanren, Schelog. Apparently in "Paradigms of AI Programming" Norvig implements Prolog-to-Lisp compiler in Lisp in order to use Definite ...
Suppose I have a simple symbol: > + + Is there any way I can apply that symbol as a procedure: > ((do-something-with +) 1 2) 3 So that + is evaluated to the procedure +?
How do I do equivalent of python s str.split in DrScheme? SRFI-13 doesn t seem to have it provided.
Refering to Variable Scoping. I m trying to figure out what are the differences between those 2. For example, Anonymous functions in a scheme function has access to the variables local to that ...
If I have a list of 0 s, how would I modify, for example, the 16th 0 in the list?
Assume I have a such struct: (define-struct node (value next)) ;and making 2 nodes, parent pointing to child as next. (define child (make-node 2 null)) (define parent (make-node 1 child)) Under ...
I m trying to do the following problem (there is a formula so I print-screened and uploaded it) Formula http://img248.imageshack.us/img248/6558/problemh.jpg (http://img248.imageshack.us/img248/6558/...
In Chapter 9 of the Little Schemer, the Author presents the following two functions (define Q (lambda (str n) (cond ((zero? (remainder (first$ str ) n)) (Q (second$ str ) n)) ...