import::readlisp
-- parse
Lisp-formatted stringimport::readlisp(
s)
parses the
Lisp-formatted string s
and returns the corresponding
MuPAD expression.
import::readlisp(s)
s |
- | a string |
a MuPAD expression of type DOM_EXPR
import::readlisp
returns the constructed MuPAD
expression as an unevaluated call. So the result of
import::readlisp
is in every case of type DOM_EXPR
.s
contains only white spaces then
the unevaluated call null()
is returned.A first example:
>> import::readlisp("(INTEGRATE (EXPT X -1) X)")
/ 1 \ int| -, X | \ X /
>> import::readlisp("(EXP 2.0)")
exp(2.0)
In the example 1 above we can see that the corresponding MuPAD expression is not evaluated. Let us have a closer look on this behavior:
>> domtype(import::readlisp("(INTEGRATE (EXPT X -1) X)")), eval(import::readlisp("(INTEGRATE (EXPT X -1) X)")), domtype(import::readlisp("(EXP 2.0)")), eval(import::readlisp("(EXP 2.0)"))
DOM_EXPR, ln(X), DOM_EXPR, 7.389056099
Another example demonstrating that
import::readlisp
returns an unevaluated call:
>> x := 2: import::readlisp("(* x (/ 2 y))")
2 x - y
>> eval(import::readlisp("(* x (/ 2 y))"))
4 - y
An empty string is converted into an unevaluated call of
null()
:
>> type(import::readlisp(""))
"null"
Now we make a mistake while defining the Lisp string.
>> import::readlisp("(* 2(EXP 3)")
Error: missing closing parenthesis [import::parseLambda]
io::readlisp
import::readlisp
used to return in a lot of cases an evaluated call, e.g., in older
versions io::readlisp("(EXP 2.0)") returned a numerical value.