HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
phantomics
april
Common Lisp2018–2026
phantomics / april

april

The APL programming language (a subset thereof) compiling to Common Lisp.

31Distinct people
59Mentions
1Explicit recommenders
667GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

The APL programming language (a subset thereof) compiling to Common Lisp.

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

Thanks for the motivation. I love Lisp, and even was into Shen[0] for a while, but Common Lisp has all the libraries and legacy tutorials and books that I will stick it out a…

eggy used a recommendation phrase. 6 indexed comments match. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 8–Nov 15 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/15/2026, 12:45:45 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year59 dated mentions

Observed mentions: 2018-05-29 08:34:21 UTC to 2026-10-08 02:35:17 UTC.

0510152018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 3 mentions; 2 submissions, 1 comments20182019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 7 mentions; 3 submissions, 4 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 10 mentions; 1 submissions, 9 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 14 mentions; 3 submissions, 11 comments20222023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 10 mentions; 1 submissions, 9 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 7 mentions; 0 submissions, 7 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 4 mentions; 1 submissions, 3 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC321
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC110
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC734
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC1019
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC14311
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC1019
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC707
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC303
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC413

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
April Array Programming Re-Imagined in Lisp Ken Iverson's masterpiece reflected in the medium of Lisp. April compiles a subset of the APL programming language into Common Lisp. Leveraging Lisp's powerful macros and numeric processing faculties, it brings APL's expressive potential to bear for Lisp developers. Replace hundreds of lines of number-crunching code with a single line of APL. Why April? APL veritably hums with algorithmic power. As a handful of characters run past the lexer, vast fields of data grow, morph and distil to reveal their secrets. However, APL has hitherto dwelt in an ivory tower, secluded inside monolithic runtime environments. If you have a store of data you'd like to process with APL, getting it there can be an ordeal akin to hauling tons of cargo on donkeys' backs through a narrow mountain pass. The original APL interpreters ran on mainframes whose only input was the keyboard and only output was the printer and the legacy of that implementation approach has persisted to this day, limiting the reach of the language. But no longer. Lisp is the great connector of the software world, digesting and transforming semantic patterns in much the same way that APL works upon numeric patterns. With APL inside of Lisp, databases, streams, binary files and other media are just a few lines of code away from processing with APL. Discussion For the time being, discussion of April and its development is happening on the ##phantomics channel on irc.libera.chat. Support April's Development If you'd like to help provide for continuing work on April, you can contribute through Patreon. April is making fast and steady progress toward the goal of being a powerful, full-featured and professional APL implementation, whose ease of extension and integration with other software offers game-changing advantages in the vector language field. Did you know that April's code at the beginning of December 2021 was over 95% different from its code at the beginning of September 2020? April Media and Publications PLDI 2023 presentation Presentation of paper on April's deferred evaluation features ArrayCast interview Developer interview exploring April's history and features APL Seeds Presentation Presentation of April at Dyalog's APL Seeds '22 conference LispNYC April compiler presentation Video outline and panel discussion showing early April design European Lisp Symposium 2022 paper April: APL Compiling to Common Lisp Compatibility with Common Lisp Implementations April puts the numeric and array processing capabilities of Common Lisp to the test. It has been verified to work with SBCL, CCL, ECL, ABCL, Clasp, Allegro CL and LispWorks. SBCL and CCL are considered fully compatible with no special provisions made in order to function. ECL and Clasp pass all tests with the help of some specific provisions addressing their differences from other CL implementations. ABCL passes all main tests with the help of some special provisions and all dfn tests except those in the tree library, which cannot be loaded due to limitations of the underlying Java virtual machine. Allegro CL and LispWorks both have a few compatibility issues causing failures of dfn tests. See this document for a list of all differences in functionality between implementations. Automatic Installation April is supplied by the Quicklisp library manager, so the easiest way to install April is through Quicklisp. To install April with Quicklisp, evaluate: (ql:quickload 'april) Manual Installation If you'd like to install April manually from this repository, you can follow these instructions. Cloning the Repository First, clone the repository to a location on your system. For this example, let's say you cloned it to the directory ~/mystuff/april. Preparing Quicklisp Enter your Quicklisp local-projects directory (usually ~/quicklisp/local-projects) and create a symbolic link to the directory where you cloned the April repository. For example, if you cloned the repo to ~/mystuff/april and your Quicklisp directory is ~/quicklisp/, enter: cd ~/quicklisp/local-projects ln -s ~/mystuff/april Installing Dependencies To complete the installation, just start a Common Lisp REPL and enter: (ql:quickload 'april) This will download and install April's dependencies, and with that the package will be built and ready. APL Functions and Operators The APL language uses single characters to represent its primitive functions and operators. Most of these symbols are not part of the standard ASCII character set but are unique to APL. To see a list of the glyphs that are supported by April, visit the link below. See the complete April APL lexicon here. Some APL functions and operators won't be added to April since they don't make sense for April's design as a compiler from APL to Lisp. Others may be added in the future. See the list of features not implemented here. Getting to Know APL A full guide to the APL language is far beyond the scope of this file, but here are links to some good sources. A high-level introduction to APL. This is a detailed language tutorial covering most of the functions and operators in April. The original paper by Ken Iverson, creator of APL, detailing the language's underlying philosophy. If you would like a quick tour of the language, April includes a function that will print demos of all the commands and many APL syntax features. To see the demos, enter: * (april (demo)) The * indicates a REPL prompt. Prepare for a long read. The demo content that gets printed will tell you the name(s) of the operations that correspond to each symbol and will hopefully give you some idea of what each one does. How to Enter APL Characters In order to write APL programs you'll need a way to use the language's special character set. Click here for information on enabling APL input within Emacs. Click here for information on enabling APL input within Vim. Click here for information on enabling APL input universally within GNU/Linux. Basic Evaluation: (april
Read the full README on GitHub

What Hacker News says

10 sources
I am using Acceλerate for MS 365, which brings Visual Scheme for Applications (VSATM) to the MS 365 suite [1]. It can be used in the other MS 365 apps as well and ties in nicely to .NET. That and I unashamedly love Lisp over python even though I know python has the data science corner. I was very disappointed when MIT replaced Scheme with Python as their CS intro language, but such is life. For kicks, I am a big APL fan and found April (Array Programming Re-Imagined in Lisp) which has APL and Lisp united into a super PL! [2]. Maybe an APL for Excel? [1] https://code-magazine.com/Article/2207071/The-Excellent-Sche... [2] https://github.com/phantomics/april
In Microsoft is bringing Python to Excel
eggy·Jul 17, 2023Recommendation phrase
Thanks for the motivation. I love Lisp, and even was into Shen[0] for a while, but Common Lisp has all the libraries and legacy tutorials and books that I will stick it out a bit more. Which matrix/math libraries do you recommend to compete with the likes of Numpy and Mojo for ML apps? Because I love APL, April, Array Programming Re-Imagined in Lisp[1]. [0] https://shenlanguage.org/ [1] https://github.com/phantomics/april
In A tutorial quantum interpreter in 150 lines of Lisp
I bought and I was working through the book, "The Handbook of Neuroevolution Through Erlang", 2013 Edition, several years ago, and then I tried to do the exercises in LFE (Lisp Flavoured Erlang). I am more a Lisper than a Rubyist, however, I do like Elixir. Gene Sher author of the book makes a great case for Erlang and ANNs and the book even has a preface by Joe Armstrong. I played with LUSH (Lisp Universal SHell) by Yann LeCun and others[1]. I wish they would have continued with Lisp too instead of moving to Python. Personally, I am now more an APL/J fan and the language being array based suits matrix math for ANNs very well. There are some nice papers that showcase this. I'd like to see advances in APL for ML. I am currently playing with April (Array Programming Re-Imagined in Lisp)[2] to scratch this itch. It gives you the general prog
Read the rest
ramming of Lisp to do the regular programming and APL to do the number crunching and matrix magic in terse code. I get how array languages such as APL suit ML, and distributed languages such as those which run on the BEAM (I am now looking at Gleam, an ML-like language that runs on the BEAM. I prefer the syntax to Elixir's the same way I tried LFE first) and seem to fit ML. Python's angle is that it utilizes C/Fortran libs like LAPACK and BLAS and hooks to do what it does in ML, and Elixir's Nx is similar in that sense to get the performance in number crunching that the BEAM languages are horrible at. You can use Zig now to write NIFs for Erlang/Elixir so maybe this is how Elixir moves in the direction of Python's approach to speeding up the number crunching for ML along with Nx. I prefer to try and use a more suitable language rather than try to make it work like Python/Numba/Numpy/Pandas and Elixir/Nx do. Funny thing is that Pandas by Wes McKinney was inspired by the J programming language. So I think you may not be with the crowd in my approach, but there is some harder-to-reach fruit in this approach that is more rewarding to me, and sometimes for others. [1] https://lush.sourceforge.net/ [2] https://github.com/phantomics/april
In Why Do ML on the Erlang VM?
eggy·Feb 13, 2023Recommendation phrase
I have been working my way through a 2013 book, "Professional Automated Trading: Theory and Practice" that uses Lisp as the language to implement a trading system of different frequencies using concepts from artificial life and control theory (I recall studying all of the stuff coming out of the Santa Fe Institute in the late 80's - Artificial Life I, swarm intelligence, etc.). Some of the AI/AL stuff is dated, but the trading knowledge covered and how to build an automated trading platform are great. He covers a lot of ground very concisely and based on solid experience. I love Lisp, so that was also why I gravitated towards this book. I am currently into the April programming language, Array Programming Reimagined In Lisp[1], and I may try to implement the mathy parts of the book's code in APL and the remainder in Lisp as presented with
Read the rest
some improvements. April is very flexible and takes advantage of the libraries and symbolic processing of Lisp. The creator of April just switched it to lazy evaluation from eager evaluation last month. [1] https://github.com/phantomics/april
In Algorithmic Trading: A Practitioner’s Guide
eggy·Feb 5, 2023Recommendation phrase
I love J and APL, but April takes the cake for me[1]. APL in Lisp. I also prefer SPARK2014 instead of Rust if I am not going to use C. I've started learning Rust a few times. SPARK2014 is easier to get going for me, and it has been used to produce high-integrity software and real-world applications for over a decade, and more if you include Ada from which it sprang[2]. [1] https://github.com/phantomics/april [2] https://www.adacore.com/about-spark
In The C juggernaut illustrated (2012)
eggy·Feb 2, 2023Recommendation phrase
The one big use case was RabbitMQ in a messaging app, not HFT. I doubt Elixir even with Nx can compete with low-level HFT code. Python DL/ML code libraries are just wrappers around C too. Maybe if BeamAsm and Nx are used Elixir could be used for more numerical or not just distributed applications. I've programmed in Python and Julia, and when I worked at an engineering (mechanical, entertainment engineering) company, Julia was great for its similarity to Matlab. I am a self-taught engineer, so I did not get pulled into Matlab in college. Personally, I took to Erlang, so I could write plugins for Wings3D back in the early 2000s, but I never stuck with Erlang, or Wings3D (Blender3D was my choice and I even contributed to have it go opensource way back when). I like Erlang's syntax better for some reason, although Elixir's is beautiful too.
Read the rest
I was not a Ruby programmer, and I had delved into Haskell and Prolog, so I think Erlang made more sense to me. I think Elixir has a lot more momentum behind it than Erlang, but at the root it's Erlang, so I think I'll stick with Erlang for BEAM apps. My favorite language is April[1] (APL in Lisp), and given my love of J, would be a better fit for any finance apps I might write. I am trying to convert some of the Lisp code in this book, "Professional Automated Trading: Theory and Practice" to April. Maybe I'll write some equivalent Elixir code to compare. [1] https://github.com/phantomics/april
In Erlang: The coding language that finance forgot (2022)
I'm also very curious for hear from expert lispers. I've tried to find the sweat spot where lisp would fit better than what I already know: shell for glue and file ops, R for data munging and vis, python to not reinvent things, perl/core-utils for one liners. But before I can find the niche, I get turned off by the amount of ceremony -- or maybe just how different the state and edit/evaluate loop is. I'm holding onto some things that make common lisp look exciting and useful (static typing[0], APL DSL[1], speed [2,3,4]) and really want to get familiar with structural editing [5] [0] https://github.com/phantomics/april [1] https://github.com/coalton-lang/coalton/ [2] https://renato.athaydes.com/posts/revisiting-prechelt-paper-... [3] https://github.com/fukamachi/woo/blob/master/benchmark.md [4] https://tapoueh.org/blog/2014/05/why-is-pgl
Read the rest
In Learn Lisp the Hard Way

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.