What does HackerNews think of april?

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

Language: Common Lisp

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

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

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 programming 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

I love APL and I use J too as desktop calculators up to programming some quick mathy things for work and fun. My latest love is APRIL (Array Programming Re-Imagined in Lisp) [1]. It allows me to use the libraries and legacy of Lisp for a lot the drudgery in all programming and APL to sling numbers.

I dabble with BQN and Klong.

[1] https://github.com/phantomics/april

APL + Lisp = O_o

https://github.com/phantomics/april/ and yes it is used in production©!

> What pushed the development of April really is that April is used by a hardware startup called Bloxl (of which I am the CTO). There are other users but Bloxl is the flagship application.

https://www.arraycast.com/episodes/episode23-andrew-sengul

Bloxl in use: https://user-images.githubusercontent.com/3721004/159686845-... See also the ELS conference 2022.

There is a lot of development happening in the area of APL-insipred programming languages.

I've spent far too much time working on an APL dialect that allows you to combine APL with imperative structures at the same time. I really need to document it better though. https://aplwiki.com/wiki/KAP

Then there is April, which is a very neat version of APL that is implemented in Common Lisp. It allows you to miss Lisp arrays with APL arrays, giving you the best of both worlds. It's very functional even now: https://github.com/phantomics/april

And of course, BQN is a new language that takes a lot of the good ideas from APL but also changes a lot of the symbols. It's a very nice language: https://mlochbaum.github.io/BQN/

As an array language developer I may be a bit heretical in the community for my view that array languages are a domain-specific tool, not a general-purpose tool. They are the best by far in their niche of working with arrays, but they can be harder to fit to some other kinds of tasks, especially when it comes to more semantic programming.

That's why my APL compiler, April (https://github.com/phantomics/april), can be called within Common Lisp with CL data structures as its input and output. It's also trivial to port functions from CL and its libraries into an April workspace. You can see an example on page 2 of this paper: https://zenodo.org/record/6381963

In this way April puts the entire CL ecosystem at your fingertips. If you want to do something like making HTTP requests or ingesting XML files, you can write a function to do it and express the specific parameters for your use case in CL, and then have the function available within April using a simple monadic/dyadic argument API. This can sidestep the need to port every necessary library into APL itself.

This might have been true a couple of years ago but it is totally untrue now.

I'm not sure why you couldn't use the student version of Dyalog? Sounds like it would have been fine. There are also many more FOSS implementations of array languages now, such as ngn/k and April. https://github.com/phantomics/april

'only available for Linux' - not true https://github.com/abrudz/Kbd/ and others (also different input modes like `w for ⍵)

'no community support' - on the contrary there is a big and helpful APL community https://aplwiki.com/wiki/Chat_rooms_and_forums that is (imo) more useful than stackoverflow

'Dynamic scoping...' - Dyalog's (and other APL's) dfns have lexical scope.

'The language is extremely terse' - is this meant to be a bad thing?

'The code tends to be very hacky' - maybe if you write bad code or try and write C in APL (it won't work)