Using Eval in an Application ---------------------------- To use eval as part of an application, just copy the single (20KB) function into your workspace. )copy eval eval c:\dyalog90\samples\dfns\eval saved ... Note that if eval can't reduce an expression to a number, it returns the char- acter vector form of the (possibly reduced) expression: eval'2+3' ⍝ numeric result. 5 eval'1+2+x+4' ⍝ character result. 3+x+4 We might want to trap such results as errors: rslt←eval expr 0≠⍬⍴0⍴rslt:'bad expr'⎕signal 11 Environment ----------- An environment vector of name-value pairs may be passed to eval as a left argu- ment: ('A1' 6)('B2' 7) eval 'A1 * B2' 42 Errors ------ Syntactically incorrect expressions generate an error (666) with a "helpful" message. The message is preceded by an indented marker to show the exact posit- ion of the problem: until'' 2+3+4++5+6+7 \ missing operand In an application, we might want to separate the marker from the text of the message. emsg _ _←⎕dm ⍝ split diagnostic message vector. drop←2++/^\' '=emsg ⍝ number of chars to drop from message. text←drop↓emsg ⍝ raw error message text. indx←⎕io+drop-2 ⍝ index of error in source char vector. Back to: →Contents←