April compiles a subset of the APL programming language into Common Lisp, enabling expressive array programming within Lisp environments.
April is a compiler that translates a subset of the APL (A Programming Language) array programming language into Common Lisp. It leverages Lisp's macro system and numeric processing capabilities to bring APL's concise, powerful array operations to Lisp developers, allowing complex data transformations to be expressed in a single line of APL code.
Common Lisp developers who want to incorporate APL's expressive array programming capabilities into their Lisp workflows, particularly for data-intensive or numerical computing tasks.
April uniquely bridges APL's algorithmic power with Lisp's interoperability, enabling APL to process data from diverse sources like databases and streams through Lisp's ecosystem. It offers a persistent workspace system, cross-implementation compatibility with major Common Lisp implementations, and unique language extensions like k-style if-statements and rational number support.
The APL programming language (a subset thereof) compiling to Common Lisp.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Works with SBCL, CCL, ECL, ABCL, Clasp, Allegro CL, and LispWorks, as verified in tests, ensuring broad support across Common Lisp ecosystems.
Allows easy data passing between Lisp and April using :in and :store-val parameters, enabling APL to process Lisp arrays and functions directly.
Implements a wide APL subset plus unique features like k-style if-statements and rational number support, enhancing expressiveness beyond standard APL.
Provides workspace system for storing variables and functions across evaluations, mimicking traditional APL environments within Lisp.
Omits key APL functions for system interaction (e.g., file read/write, I-beam operators), limiting use for standalone APL workflows.
Requires additional editor plugins or system configuration (e.g., Emacs APL mode) to input non-ASCII APL glyphs, adding initial friction.
Compiling APL to Lisp may introduce overhead compared to native APL interpreters, especially for large-scale array operations.
Users must understand both APL's concise syntax and Common Lisp's ecosystem to debug and integrate effectively, raising the learning curve.