APL deserves its Renaissance too

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • BQN

    An APL-like programming language. Self-hosted!

  • 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/

  • april

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

  • 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/

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • duckyPad

    Do-It-All Mechanical Macropad

  • adventofcode

    Advent of Code solutions of 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 and 2023 in Scala (by sim642)

  • The only time I see APL is each year during Advent of Code – https://adventofcode.com/ – APL users always pop up and manage to solve the most complex of tasks with about ten symbols versus everyone else's 50 lines of Python :-)

  • ivy

    ivy, an APL-like calculator (by robpike)

  • I enjoyed russ cox's advent of code series using rob pike's ivy (https://github.com/robpike/ivy), an apl-like calculator

    https://www.youtube.com/playlist?list=PLrwpzH1_9ufMLOB6BAdzO...

  • array-language-comparisons

    A comparison of array languages & libraries: APL, J, BQN, Uiua, Q, Julia, R, NumPy, Nial, Futhark, Dex, Ivy, SaC & ArrayFire.

  • > Its powerful array manipulation primitives can easily be brought forward into a language with modern syntax, and haven't they?

    Kind of. The languages that one might expect to do this (Julia, R, NumPy) have picked out a few things from APL in an inconsistent way, leaving a lot as well. For example most are missing the generalization of prefix sum that APL calls "scan". So in [0], Conor was able to translate some code to every APL-family language but not yet any of the ones that aren't directly APL-influenced. Another one, I don't think I've ever seen Replicate[1] outside the APL family. It's a generalization of filter to take an arbitrary count instead of 0 or 1 that's often useful if you know about it.

    [0] https://github.com/codereport/array-language-comparisons/blo...

    [1] https://mlochbaum.github.io/BQN/doc/replicate.html

  • pygraphblas

    GraphBLAS for Python

  • Yes, multiplying graph adjacency matrices over a min-tropical semiring produces shortest paths. APL supports this syntactically, but how does it function in the real world? What if the matrices are extremely sparse, like almost all real world graphs are? Syntax is the easy the problem. The hard problem is having very sparse graphs with billions of nodes and many billions of edges. How is your square matrix going to deal with that? Sparse and hypersparse graph computing is hard, which is not syntactically relevant.

    Python does not have this terse a syntax, but it gets very close with multiple bindings to the SuiteSparse GraphBLAS Hypersparse graph processing libraries, which intrinsically supports sparse graphs and a very large number of operators, including the tropical min/max ones. Suitesparse doesn't provide syntax (that's the easy part), it provides the hard part, sparse and hypersparse data structures and very complex dynamic, parallel graph processing optimizations including JIT compilation of GPU accelerated operations.

    Here's a notebook that shows your shortest path example using Python and the GraphBLAS. While it's a trivial example, it can scale the the largest graphs possible to use today using SuiteSparse:

    https://github.com/Graphegon/pygraphblas/blob/main/demo/Intr...

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • duckduckgo-locales

    Translation files for <a href="https://duckduckgo.com"> </a>

  • Aaron Hsu tried with some level of success.

    https://duckduckgo.com/?q=aaron+hsu+apl&t=ffab&iax=videos&ia...

  • jkernel-docker

    JKernel Docker Image Source

  • I put this together about a year ago to run J/Jupyter in binder https://github.com/joebo/jkernel-docker

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts