• Stars
    star
    131
  • Rank 275,867 (Top 6 %)
  • Language APL
  • License
    Other
  • Created over 5 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A novel approach to finding your way in APL

APLcart – A novel approach to finding your way in APL

There is plenty of documentation on what parts of APL do. APLcart seeks to answer How do I… questions.

APLcart is a searchable collection of over two thousand short APL phrases intended for both beginners and professionals, with content provided by the community. Knowledge of basic APL syntax is a prerequisite.

APLcart can also be used for exercising your APL skills.

See APL Wiki for background and history.

Usage

→ See also the video introduction.

Notes

  • APLcart is for finding out how to do things, not for finding out, for example, what a symbol means or what a system function does. Please use the language documentation for such purposes.

  • The site may take some seconds to load due to the information being processed by the browser. Once ready, it does not require internet access any more.

  • All code in APLcart assumes the latest version of Dyalog APL Unicode edition and system defaults, for example ⎕IO←1, ⎕ML←1, ⎕DIV←0.

  • Entries are meant for copying and pasting to the extent possible. Therefore, many entries are more involved than what might appear as necessary. For example, Cube root is listed as (*∘÷∘3)N instead of the straight-forward N*÷3. This is so that *∘÷∘3 can be copied and used in defining CubeRoot←*∘÷∘3 which would not be possible with the simpler expression.

Interface

See here how to use access-keys on your system.

  • Hit here and start typing (access-key q — for query — to re-focus)
  • Insert leading and trailing slashes to use regex (access-key r ― for regex ― to toggle)
  • Some entries have a which can be clicked to open example code in a sandbox
  • Some entries have a ? which can be clicked to open online documentation
  • Hit the logo ⊆⌈ in the top left corner to reload the main page
  • Hit ? in the top left corner to access this documentation (access-key e — for explain)
  • Hit × at the end of the input field to clear it (access-key x — for expunge)
  • Hit # in the top right corner copy to the current query to the address bar and to your clipboard (access-key c — for copy)
  • Hit :octocat: in the bottom right corner to access APLcart's source-code on GitHub (access-key a — for aplcart)
  • Hit ♥︎ in the bottom right corner to donate to the author (access-key d — for donate)
  • Hit in the bottom right corner to cycle theme (access-keys b for black, g for grey, w for white)
  • Hit the result list to enable movement keys for scrolling (access-key z)
  • Hit the input field at the top to start a new query (access-key e — for query)

Quiz

You can use APLcart to exercise your APL skills by solving various types of tasks:

  • Writing a function for a given task
  • Explaining the purpose of a given function
  • Filling in an obscured symbol

While APLcart does not feature checking of your answer (indeed, there can often be various answers to any given task), you can compare your answer to APLcart's.

Interface

See here how to use access-keys on your system.

  • Hit here and choose task type, and figure out the answer. You may want to use an APL interpreter.
  • Hit the logo ⊆⌈ in the top left corner to go to the main APLcart page (access-key a — for aplcart)
  • Hit ? in the top left corner to access this documentation (access-key e — for explain)
  • Hit one of the Reveal buttons to reveal APLcart's answer (there may be other correct answers) to that task
  • Hit one of the Next… buttons to proceed to the next task of that type
  • Hit :octocat: in the bottom right corner to access APLcart's source-code on GitHub (access-key a — for aplcart)
  • Hit ♥︎ in the bottom right corner to donate to the author (access-key d — for donate)
  • Hit in the bottom right corner to cycle theme (access-keys b for black, g for grey, w for white)

The access keys for the Reveal and Next… buttons are the first letter of the second word on each button:

  • Writing a function for a given task: c to reveal code and t for next task
  • Explaining the purpose of a given function: p to reveal purpose and f for next function
  • Filling in an obscured symbol: o to reveal obscured and q for next quest

DuckDuckGo support

DuckDuckGo allows you to search APLcart directly using the !aplcart bang. For example, searching for !aplcart 42 redirects to APLcart. This also means that if you set your browser's default search engine to DuckDuckGo, you can search APLcart directly from your browser address bar by prefixing your search with !aplcart.

Application Integration

Browsers

APLcart supports OpenSearch and as such can be added as search engine on various browsers, including Safari, Edge, Firefox, and Chrome.

Dyalog APL

APLcart is supplied as the user command ]APLCart and the API function ⎕SE.Dyalog.Utils.APLcart. For information about the user command, enter ]APLcart -?. The API function takes a query as right argument, and optionally 1 as left argument to return all columns (even hidden ones) from the database, rather than just the shown first 2. A full database dump can be done with table←1⎕SE.Dyalog.Utils.APLcart''

Dyalog Windows IDE

The Windows Dyalog IDE allows using an online search when F1 is pressed with the cursor on an unknown word:

  • Options ▸ Configure ▸ Help/DMX ▸ Use online help for non-Dyalog topics ▸ URL: https://aplcart.info?q=%s

Dyalog RIDE

RIDE allows adding a website to its menu bar:

  • Edit ▸ Preferences ▸ Menu, then below &Help` line, insert a line containing &APLcart =https://aplcart.info

You can now press Alt-Alt,a to launch APLcart.

URL API ("permalinks")

After clicking # simply copy the current address from your browser's address bar to share the current query. Note that your current theme is intentionally not included, to avoid blinding the recipient. Note that the result for such a URL isn't permanent; it depends on APLcart's content at the time of usage.

Manual construction

After aplcart.info you can add ? and the following options, separated by & if you want both a theme and a query:

  • w select white theme
  • b select black theme
  • q=query prepopulate the Tell me about query field

For example, for a white interface looking for "find", use aplcart.info?w&q=find

Scope

To answer how do I questions, APLcart currently searches over 3000 entries:

  • General syntax, like name f←Y
  • Primitives, like !
  • Control structures, like :If
  • Keywords, like :Access
  • System commands, like )CLEAR
  • System functions, like ⎕SIGNAL
  • System constants, like ⎕A
  • System operators, like ⎕R
  • System variables, like ⎕IO
  • GUI objects, like HTMLRenderer
  • I-beams, like 819⌶
  • Errors numbers and messages, like 11::DOMAIN ERROR
  • User commands, like ]Box
  • A selection of simple dfns, dops, and derived functions like (0=|)
  • All of dfns.dws, like dfns.cal (In APLcart, entries from here are prefixed dfns. . To use, insert {(⍎⍵⎕NS⍬).⎕CY⍵}'dfns' into your code, then call, for example, dfns.cal.)
  • Performance idioms from Dyalog's idiom list, like {(+/∨\' '≠⌽⍵)↑¨↓⍵}
  • Idioms from the APL2 idiom list, like (+/|) (fully updated to use modern APL)
  • James A. Brown's favourite idioms (fully updated to use modern APL)
  • All idioms from the FinnAPL idiom list, like (⊢⍳⌈/) (fully updated to use modern APL)
  • The Yale/APL79 idiom list (fully updated to use modern APL)
  • Selected entries from Dyalog's #onelinerwednesday series, like (×/⊢÷+/-2×⊢)
  • Adapted entries from JSoftware's Phrase Book (translated to APL)
  • and other entries submitted by users like you!

Features wish list

  • more links to TIO examples

Got an idea for improving the site? Suggest it!

Contributing

Wrote a cool train? Found a clever dfn? Submit it!

Missing something? Faulty content? Report it!

More Repositories

1

APL386

APL385 Unicode font evolved
HTML
108
star
2

ngn-apl

An APL interpreter written in JavaScript. Runs in a browser or NodeJS.
JavaScript
51
star
3

lb

JavaScript language bars, keyboard layout key-bindings, and character compositions for entering APL characters
HTML
28
star
4

Kbd

Alternative unified APL keyboard layouts (AltGr, Backtick, Compositions)
APL
28
star
5

dyalog-apl-extended

Dyalog APL Extended
APL
27
star
6

logos

Programming Language Logos
HTML
18
star
7

apl_quest

Code presented in the APL Quest
APL
13
star
8

dyalog_vision

A realistic future development for the core language of Dyalog APL
APL
11
star
9

dyalog-safe-exec

Drop-in for ⍎ to execute arbitrary APL code safely
APL
10
star
10

QuadRS

Thin covers for Dyalog APL's ⎕R and ⎕S
APL
9
star
11

SAX2

APL font based on the font from Sharp APL for Unix
HTML
8
star
12

Stencil

Thin cover for Dyalog APL's ⌺
APL
7
star
13

SBCS

.dyalog files using a single byte charater set
APL
6
star
14

sax

SHARP APL for UNIX
Shell
6
star
15

genealogy

Array Language Genealogy
HTML
5
star
16

KINGDOM

An interactive simulation demonstration game
APL
5
star
17

apl-array-notation

A model for a literal notation for most APL arrays
4
star
18

APL2741

APL font based on the APL2741 font
HTML
4
star
19

agl

APL Golfing Library
APL
4
star
20

tacit.help

Transform tacit APL into dfn form
APL
3
star
21

voc

Dyalog APL language vocabulary
HTML
3
star
22

abrudz.github.io

GitHub pages
HTML
3
star
23

Lazy

Lazily evaluated (late-binding) definition for Dyalog APL
APL
3
star
24

out

Split Dyalog APL session output into a separate window and add meta-info
3
star
25

apl.show

The APL Show: Notation as a Tool of Thought
SCSS
2
star
26

parsing

Dyalog APL expressions to parse common and unusual data formats from text files
APL
2
star
27

crosswords

Automated crosswords from the Zark APL tutor news
HTML
2
star
28

frum-jewish-names

Orthodox Jewish family, male, and female names.
2
star
29

polyfill

One-letter implementation of missing or extended Dyalog APL primitives
APL
2
star
30

apl.news

The modern APL news aggregator
HTML
1
star
31

ns

Models for namespace related language extensions
1
star
32

TIO

Dyalog APL operator interface to Try It Online (TIO.Run)
1
star
33

primitives

Primitives proposed by Dyalog's internal Young APLers Group
APL
1
star
34

Link

Code for linking a namespace to a directory
APL
1
star
35

dyalog-apl-prime

Dyalog APL Prime
Shell
1
star
36

kk

'' (pronounced KuoteKuote) – an APL golfing language
1
star
37

jupyter

Run Jupyter Notebook document inside Dyalog APL session, optionally interactively
1
star
38

Sort

Library of sorting variations
APL
1
star
39

Get

Import source file/dir/zip/workspace from disk/www/GitHub/wspath
APL
1
star
40

.github

Default community health files
1
star
41

sans

A listing of good sans-serif fonts
HTML
1
star
42

SimCorp

Workshop materials for SimCorp
HTML
1
star