Symbol Execute: Difference between revisions
m (→See Also: see also dieresis op) |
m (→Examples: modified last example) |
||
(2 intermediate revisions by the same user not shown) | |||
Line 3: | Line 3: | ||
==Usage== | ==Usage== | ||
==Examples== | ==Examples== | ||
Valid uses of Execute(⍎) operator in conjunction with the Each(¨ or dieresis) operator: | Valid uses of Execute(⍎) operator in conjunction '''with and without''' the Each(¨ or dieresis) operator:<br> | ||
(The examples just below are generally listed in order of complexity, least complex = topmost, most complex = bottommost.) | |||
<code> | <code> | ||
⍎¨'99' '100' | ⍎¨'99' '100' ⍝Dieresis used and IS needed | ||
99 100 | 99 100 | ||
A←'99' | A←'99' | ||
Line 17: | Line 18: | ||
⍎¨A,B | ⍎¨A,B | ||
9 9 1 0 0 | 9 9 1 0 0 | ||
⍎'99' '100' ⍝Dieresis NOT used in nearly the same as topmost case - ⍎¨'99' '100' - and generates a Domain Error | |||
DOMAIN ERROR | |||
⍎'99 100' ⍝Dieresis NOT used and was not needed | |||
99 100 | |||
C←99.8 | |||
D←100.2 | |||
⍎'C D' ⍝Dieresis NOT used and was not needed | |||
99.8 100.2 | |||
⍎'E←45000.78 ⋄ F←88765.321' ⍝The diamond operator(⋄) is used to separate APL lines of code and IS supported in NARS | |||
E | |||
45000.78 | |||
F | |||
88765.321 | |||
</code> | </code> | ||
Note that the Execute operator was primarily-'''originally designed to convert character representations of numbers into actual digital numbers''' with a floating point or integer computer storage format. It was specifically designed to generate an error message when a non-digit such as a letter(e.g. 'A' or 'B' or even 'C' or 'D' was attempted to be converted to digital or computer binary format. In short, if you look at the code just above, you will see that yes Execute will convert char digits into numbers with or without the Each(dieresis) Operator. | |||
just above, you will see that yes Execute will convert char digits into numbers with the Each Operator. | |||
The key | The key is using the correct syntax to achieve your desired results, either: | ||
# Separating | # Separating every defined argument into '1' '2' '3' '4' vectorized char arguments or | ||
# First placing char data digits into vars(A and B) and then executing each without any quote chars. | # First placing char data digits into vars(A and B) and then executing each without any quote chars. | ||
Also, note how the Execute function's use has been expanded over time to carefully under valid (Workspace variable name(s) known/recognized) circumstances yes execute or convert <u>non-digit chars, e.g. variables C and D</u> in quotes '''above'''. Note how execution/conversion of variables C and D into, in this case, a floating point numeric vector did '''NOT require the Each operator'''. Further vars '''C and D are considered floating point''' or real number vars while '''A and B are string vars''' which convert to '''integer numbers'''. The inclusion or omission of the ravel(,) operator also can make a big difference, e.g.: | |||
<code> | |||
⍎¨A B ⍝Two-element(2 numbers) vector result | |||
99 100 | |||
⍎¨A,B ⍝Five-element(5 single-digit numbers) vector result | |||
9 9 1 0 0 | |||
</code> | |||
Another 2 examples, (1st example: Execute dbl-quote A is assigned quote quote dbl-quote): | |||
<apll> | |||
⍎"A←''" | |||
A | |||
⍝Viewing variable A shows nothing, since it represents an empty string. | |||
⍴A ⍝Execute has created a zero-length string variable A in the current workspace. | |||
0 | |||
⍝Another Execute example, in this case taking a string and executing it through APL's interpreter to arithmetically multiply two variables together. | |||
A←99 | |||
B←100 | |||
⍎'A×B' | |||
9900 | |||
</apll> | |||
In short, the Execute(⍎) function is '''very powerful''' in APL/APL2 when correctly used and has a <u>broad range of uses</u>, particularly '''inside user defined functions''' - to create/convert information from string representations. First try using Execute '''without''' the dieresis operator, then if you are unable to achieve the desired results, try including the dieresis operator or change usage/calling syntax, e.g. with/without the ravel(,) operator. | |||
==See Also== | ==See Also== |
Latest revision as of 16:17, 23 April 2015
⍎ — Execute a string — Keystroke ?ALT+X — Character 0000
Usage
Examples
Valid uses of Execute(⍎) operator in conjunction with and without the Each(¨ or dieresis) operator:
(The examples just below are generally listed in order of complexity, least complex = topmost, most complex = bottommost.)
⍎¨'99' '100' ⍝Dieresis used and IS needed
99 100
A←'99'
B←'100'
⍎¨A B
99 100
⍎¨A '1' '2' '3'
99 1 2 3
⍎¨ '99100'
9 9 1 0 0
⍎¨A,B
9 9 1 0 0
⍎'99' '100' ⍝Dieresis NOT used in nearly the same as topmost case - ⍎¨'99' '100' - and generates a Domain Error
DOMAIN ERROR
⍎'99 100' ⍝Dieresis NOT used and was not needed
99 100
C←99.8
D←100.2
⍎'C D' ⍝Dieresis NOT used and was not needed
99.8 100.2
⍎'E←45000.78 ⋄ F←88765.321' ⍝The diamond operator(⋄) is used to separate APL lines of code and IS supported in NARS
E
45000.78
F
88765.321
Note that the Execute operator was primarily-originally designed to convert character representations of numbers into actual digital numbers with a floating point or integer computer storage format. It was specifically designed to generate an error message when a non-digit such as a letter(e.g. 'A' or 'B' or even 'C' or 'D' was attempted to be converted to digital or computer binary format. In short, if you look at the code just above, you will see that yes Execute will convert char digits into numbers with or without the Each(dieresis) Operator.
The key is using the correct syntax to achieve your desired results, either:
- Separating every defined argument into '1' '2' '3' '4' vectorized char arguments or
- First placing char data digits into vars(A and B) and then executing each without any quote chars.
Also, note how the Execute function's use has been expanded over time to carefully under valid (Workspace variable name(s) known/recognized) circumstances yes execute or convert non-digit chars, e.g. variables C and D in quotes above. Note how execution/conversion of variables C and D into, in this case, a floating point numeric vector did NOT require the Each operator. Further vars C and D are considered floating point or real number vars while A and B are string vars which convert to integer numbers. The inclusion or omission of the ravel(,) operator also can make a big difference, e.g.:
⍎¨A B ⍝Two-element(2 numbers) vector result
99 100
⍎¨A,B ⍝Five-element(5 single-digit numbers) vector result
9 9 1 0 0
Another 2 examples, (1st example: Execute dbl-quote A is assigned quote quote dbl-quote):
⍎"A←''" A ⍝Viewing variable A shows nothing, since it represents an empty string. ⍴A ⍝Execute has created a zero-length string variable A in the current workspace. 0 ⍝Another Execute example, in this case taking a string and executing it through APL's interpreter to arithmetically multiply two variables together. A←99 B←100 ⍎'A×B' 9900
In short, the Execute(⍎) function is very powerful in APL/APL2 when correctly used and has a broad range of uses, particularly inside user defined functions - to create/convert information from string representations. First try using Execute without the dieresis operator, then if you are unable to achieve the desired results, try including the dieresis operator or change usage/calling syntax, e.g. with/without the ravel(,) operator.
See Also
Dieresis or Each Operator.
NARS 2000 Lang Tool Bar |
← | → | + | - | × | ÷ | * | ⍟ | ⌹ | ○ | ! | ? | √ | | | ⌈ | ⌊ | ⊥ | ⊤ | ⊣ | ⊢ | |||
≡ | ≢ | < | ≤ | = | ≥ | > | ≠ | ∨ | ∧ | ⍱ | ⍲ | ↑ | ↓ | ⊂ | ⊃ | ⌷ | ⍋ | ⍒ | |||||
⍳ | ∊ | ⍸ | ⍷ | ∪ | ∩ | ⊆ | ⊇ | ~ | § | π | .. | , | ⍪ | ⍴ | ⌽ | ⊖ | ⍉ | ||||||
/ | \ | ⌿ | ⍀ | ⊙ | ¨ | ⍨ | ⍤ | ⍣ | ⍡ | ⍥ | ⍦ | . | ∘ | ⍠ | ‼ | ⌻ | ∂ | ∫ | ⍞ | ⎕ | ⍎ | ⍕ | |
⋄ | ⍝ | ∇ | ∆ | ⍙ | _ | ⍺ | ⍵ | ¯ | ⍬ | ∞ | ∅ | ||||||||||||
Second Row | i j k | i j k l | g | p | r | v | x |