Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to eval strings in racket

I'm trying to understand how to get the eval function to read a string and evaluate the content that's inside the string.

Currently I know that

> (eval '(+ 1 2))
   3

but I'm not that knowledgeable with the use of racket. So at the moment I'm trying to get it so that I can do this:

> (eval "(+ 1 2)")
   3

Any advice or links to useful resources would be appreciated.

like image 791
Razed Avatar asked May 01 '12 14:05

Razed


1 Answers

You want to use read together with open-input-string. Like so:

-> (eval (read (open-input-string "(+ 1 2)")))
3

You can also use with-input-from-string:

-> (with-input-from-string "(+ 1 2)"
     (lambda () (eval (read))))
3
like image 91
Sam Tobin-Hochstadt Avatar answered Nov 12 '22 13:11

Sam Tobin-Hochstadt