Expressions in this APL are essentially the same as in other APL products. In the absence of parenthesis, every verb (function) takes as its right argument the entire calculation on its right; and potentially, a single noun (value) or strand of nouns to its left.

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:

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:

The source for everything in this product is available in:

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:

The original developer's documentation is at:
The above site changes somewhat more frequently than this copy. A list of currently known issues with this release is maintained at: