TryAPL

From APL Wiki
Jump to navigation Jump to search
TryAPL's logo.

TryAPL is online service that allows trying out a subset of Dyalog APL. The back-end is a Jarvis server that uses Adám Brudzewsky's Safe Execute to provide sandboxing. The source code for TryAPL was released under the MIT License on 15 July 2021.[1]

Interfaces

Since version 3.0, TryAPL's front end and back end are completely separate, with a very simple API, and no server-side state. This has enabled the community to develop their own interfaces to the back-end.

TryAPL.org

TryAPL.org is the original and main web interface for the back-end:

File:TryAPL
TryAPL's web inferface

TryAPL Mini

TryAPL Mini is an alternative web interface written in Elm, focusing on exploration of primitives. Half of the screen is used to display information about whichever glyph the user last hovered their mouse over on the built-in language bar.

APLgolf

APLgolf is a website that assists in composing answers for Code Golf Stack Exchange.

Bookmarklet

Creating a bookmarklet with the following URL, will enable clicking on the bookmark to pop up a box wherein one can enter an APL expression, which will then be executed, and the result shown in another pop-up:

javascript:((()=>{with(new XMLHttpRequest){open(`POST`,`tryapl.org/Exec`);setRequestHeader(`Content-Type`,`application/json;charset=utf-8`);send(JSON.stringify([0,0,0,prompt()]));onload=(_=>alert(eval(responseText)[3].join`\n`+`\n`))}})())

Chat box exec

Chat box exec is a userscript that adds an Execute button () to right of the message input area in Stack Exchange's chat rooms. Clicking this button, or hitting access-key[2] x, executes the first line of the text that is currently in the message input area, and appends the result to the area, while also formatting the message to be rendered in monospace font. One can then hit the send button or press Enter to submit the message. With a userscript extension (for example Tampermonkey) installed, navigating to the raw file, should cause the extension to suggest automated installation. Alternatively, the script can be downloaded from the userscripts GitHub repository of Razetime, or from the Greasyfork userscript host under the name Chat box exec.

Chatbot

Stack Exchange moderator "hyper-neutrino" hosts a chatbot using TryAPL's name and icon, active in two Stack Exchange chat rooms; the APL Orchard and the Stack Exchange's sandbox chat room. To use it, write inline code or a multi-line code block, and prepend or to lines you wish to run, in any of the two chat rooms:[3]

Twitter bot

TryAPL Bot is a Twitter bot run by Rodrigo Girão Serrão using TryAPL icon. It responds to tweets that mention it. To use it, post a tweet that contains the bot's handle (@tryaplbot) and code in backticks, for example `⍳3`. Multiple such code sections can be included in a single message, and assignments made in earlier ones are preserved for the later ones. Since tweets do not support any type of formatting, the bot responds with an image of an APL session where the requested code has been entered, and the result is shown. It also includes a link to try the expression on TryAPL.org and if the result is a single line that can fit in the tweet, it is included there too.

API

Requests to TryAPL's backend consist of submitting a POST request to https://tryapl.org/Exec containing a 4-element list ["state", size, "hash", "input"] where the first three elements can use the placeholder values "" or 0. The server responds with a similar 4-element list ["state", size, "hash", ["lines", "of", "output"]]. The first three elements are kept on the front-end and sent back with the next request, or cleared to restart with default state.

If the output begins with a backspace character (U+08) then the actual output only begins after the second backspace character, and the text between the two backspace characters describes the role of the text. As 27 Jun 2021, only one tag has been implemented, "\bhelp\b" for which the text is the URL of help page requested by ]Help

A minimal (no-state) TryAPL front-end can be implemented as follows:

with(new XMLHttpRequest) {
	open("POST", "tryapl.org/Exec");
	setRequestHeader("Content-Type", "application/json;charset=utf-8");
	send(JSON.stringify([0, 0, 0, prompt()]));
	onload = (_ => alert(eval(responseText)[3].join("\n") + "\n"))
}

In media

Presentations

TryAPL and its development history has been presented at Dyalog user meetings and in a Dyalog webinar:

Hacker News

TryAPL is frequently featured on Hacker News:

On occasion, the server has been overwhelmed by the increased traffic, known as a hug of death.

Notes

  1. Dyalog Ltd. TryAPL. GitHub.
  2. The keyboard combination varies by browser and operating system. For details, see W3Schools' HTML accesskey Attribute article.
  3. For details, see the chat bot's profile.
APL community [edit]
Activities ConferencesAdvent of CodeAPL CampfireAPL CultivationAPL Meetup (Portuguese) ∙ APL Problem Solving CompetitionAPL SeedsArray CastBAA sessionsCode golfDyalog user meetingsDyalog webinarsIverson AwardSharing code
User groups APL Borealis (Canada) ∙ APL et J (France) ∙ APL Germany (terminology) ∙ BAA (UK) ∙ FinnAPL (Finland) ∙ JAPLA (Japan) ∙ SAUG (Switzerland) ∙ SIGAPL (USA) ∙ SwedAPL (Sweden)
People Phil AbramsBrian BeckerBob BerneckyLarry BreedCharles BrennerJim BrownAdám BrudzewskyGitte ChristensenPeter DonnellyAdin FalkoffGarth FosterAaron HsuRoger HuiKen IversonMorten KrombergMarshall LochbaumEugene McDonnellJon McGrewDonald McIntyreRoger MooreAlan PerlisHenry RichAl RoseWilliam RutiserJohn ScholesIan SharpBob SmithGeoff StreeterRoy SykesArthur Whitney
Other APL OrchardAPL Quote QuadAPL WikiBlogsBooksFamous APL usersForumsHumourJobsPapersSubredditsTryAPLTry It Online