eval
, reval
¶
Evaluate parse trees
eval
¶
Evaluate a parse tree
eval x eval[x]
Where x
is a parse tree, returns the result of evaluating it.
The eval
function is the complement of parse
and can be used to evaluate the parse trees it returns. (Also parse trees constructed explicitly.)
q)parse "2+3"
+
2
3
q)eval parse "2+3"
5
q)eval (+;2;3) / constructed explicitly
5
reval
¶
Restricted evaluation of a parse tree
reval x reval[x]
The reval
function is similar to eval
, and behaves as if the command-line option -b
were active during evaluation.
An example usage is inside the message handler .z.pg
, useful for access control, here blocking sync messages from updating:
q).z.pg:{reval(value;enlist x)} / define in process listening on port 5000
q)h:hopen 5000 / from another process on same host
q)h"a:4"
'noupdate: `. `a
Behaves as if command-line options -u 1
and -b
were active; also blocks all system calls which change state.
That is, all writes to file system are blocked; allows read access to files in working directory and below only; and prevents amendment of globals.
(Since V4.0 2020.03.17.)
The exit
keyword is also blocked (since V4.1t 2021-07-12). Blocks hopen of a file (since 4.1t 2021.10.13, 4.0 2023.08.11)
q)h:hopen 4000 / to a server started with -u 1 -p 4000
q)h"reval(hopen;enlist`:somefile)"
'access: somefile
Internal function -6!
Table counts in a partitioned database