11

I have some code which works after replacing read-string with load-string. It is good that the code works, but I would like to know why. What is the difference between the two clojure functions?

2 Answers 2

9

Use load-string to sequentially read and evaluate the set of forms contained in the string

Use read-string to read one object from the string s

(both quoted from Clojure API)

Load-string will evaluate your string as a Clojure expression, and read-string takes the string and returns it as the found data structure, in which case might be an expression.

Protip: (load-string "(+ 1 2)") and (eval (read-string "(+ 1 2)")) will give you the same result, which is 3

Sign up to request clarification or add additional context in comments.

Comments

1

Two notable differences:

read-string reads but does not evaluate, while load-string reads and evaluates.

(read-string "(inc 1)") => (inc 1)
(load-string "(inc 1)") => 2

read-string only reads the first form in the string, while load-string loads all the forms in the string.

(read-string "1 2") => 1
(load-string "1 2") => 2

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.