Adverbs and conjunctions (operators) take verbs as arguments and return modified verbs. An adverb has one verb to its left, while a conjunction has a verb on both sides. While adverbs and conjunctions are not ambivalent, the derived verbs they derive can be.
Comments begin with:
⍝ the rest of the line is ignored
The only visible difference in expressions is that character
constants can be delimited by either:
quote (') or double quote (")
You can choose which in order to avoid the need to double one
inside the other.
This a script style, source based implementation, rather than providing
a state preserving workspace. As a result, system functions like:
⎕CR and ⎕FX
are unnecessary. Support for system values like:
⎕IO and ⎕RL
is also not provided. To learn what is provided, read
Commands and System Names.html
All user defined verbs, adverbs and conjunctions are written using lambda notation.
fun← {
foo← ⍺+ 10 ⍝ ⍺ is left argument
bar← ⍵- 10 ⍝ ⍵ is right argument
foo= bar ⍝ the result is the last expression
}
Please note, the empty initial and last line are simply a
convention, APL does not require or prohibit empty lines. Lambda
expressions can exist within global verbs, adverbs and
conjunctions. This provides both for unnamed and local
verbs, adverbs and conjunctions; as well as providing a way to
write conditional expressions.
fun← {
⍺({⍺- ⍵}⍤ (⍵< 10)) ⍵ ⍝ If ⍵< 10 Then ⍺- ⍵ Else ⍵
}
Labels and branch to line number are not provided, so colon
separates a condition from the statement whose value is returned.
fun← {
0= ⍴⍵ : ⍺ ⍝ If 0= ⍴⍵ Then Return ⍺
⍵ ⍝ Return ⍵
}
In a lambda expression, semicolon creates an ambivalent verb, or
an ambivalent verb derived from an adverb or conjunction.fun← {uses just ⍵ ; can use both ⍺ and ⍵}
To raise an event:
↗ 'message'
Because this APL is written in Javascript, a user only needs to open an HTML file which includes the necessary files. This works locally, or on any web site. No server is required, as all execution actually takes place on the user's machine.
A simple example of providing functionality without any visible sign
of APL, is available at:
SampleApp.html
The SampleApp was written mostly in Javascript, and just called APL verbs
to provide functionality. To learn how to design an HTML page in APL, and
write the event handlers in APL, please read:
DesignPages.html
The source for everything in this product is available in:
APL.js.zip
I've patched in 0 ÷ 0 to behave like APL2. I've also included
several examples. For guidance on installing this product on your
machine, please read:
Install.html
The original developer's documentation is at:
NGN/APL
The above site changes somewhat more frequently than this copy.
A list of currently known issues with this release is maintained at:
Issues.html