Learning Common Lisp to beat Java and Rust on a phone encoding problem

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

    A version of the Lisp programming language for ATmega-based Arduino boards.

  • woo

    A fast non-blocking HTTP server on top of libev

  • It has great package management with https://www.quicklisp.org/beta/ and some truly great and high quality libraries, especially Fukamachi's suite of web libraries and so many others. Woo, for example, is the fastest web server. https://github.com/fukamachi/woo (Faster then the runner up Go by quite a bit)

  • 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
  • bordeaux-threads

    Portable shared-state concurrency for Common Lisp

  • common lisp supports type annotations. there is even an ML-type language impletmented in it (see coalton). quick lisp [1] is used for package managment, bordeaux-threads [2] for threading.

    1. https://www.quicklisp.org/index.html

    2. https://github.com/sionescu/bordeaux-threads

  • prechelt-phone-number-encoding

    Comparison between Java and Common Lisp solutions to a phone-encoding problem described by Prechelt

  • This is a pretty introductory CL article, mostly a commentary on Norvig's solution to the problem. Still, I learned about the #. readmacro from it. The conclusion: "[The Lisp implementation] was the fastest implementation for all input sizes except the largest one, where it performed just slightly worse than my best Java implementation." GH repo at https://github.com/renatoathaydes/prechelt-phone-number-enco.... Sounds like he was mostly measuring the performance of the SBCL bignum implementation.

  • This is a pretty introductory CL article, mostly a commentary on Norvig's solution to the problem. Still, I learned about the #. readmacro from it. The conclusion: "[The Lisp implementation] was the fastest implementation for all input sizes except the largest one, where it performed just slightly worse than my best Java implementation." GH repo at https://github.com/renatoathaydes/prechelt-phone-number-enco.... Sounds like he was mostly measuring the performance of the SBCL bignum implementation.

  • cl-cookbook

    The Common Lisp Cookbook

  • It would be cool if you updated the link to the Cookbook in your article from the old one (on Sourceforge) to the newer one (on Github): https://lispcookbook.github.io/cl-cookbook/ Best,

  • snabl

    a simple Go scripting language

  • I've been playing around with designing programming languages in Common Lisp lately.

    I'm curious how far it's possible to push performance by generating Lisp code in SBCL compared to the classical C interpreter goto loop.

    https://github.com/codr7/snabl

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

    Coalton is an efficient, statically typed functional programming language that supercharges Common Lisp.

  • Common lisp has a smaller community than the currently most popular languages, but I'm consistently impressed by the range of and quality of libraries the community has created [1]

    Regarding type-checking, common lisp is expressive enough to support an ML dialect (see coalton), and is easily extended across paradigms [2]

    1. https://project-awesome.org/CodyReichert/awesome-cl

    2. https://coalton-lang.github.io/

  • jelm

    Extreme Learning Machine in J

  • I have a bunch of links to ML material for either APL or J. I don't know of any particular library for J. J is interpreted, so it is not as fast as other implementations. I am mainly using it to experiment on concepts and teach myself more ML in J because of the iterative nature of the REPL, and the succinct code. I can keep what's going on in my head, and glance at less than 100 lines, usually 15 lines, of code to refresh it.

    There is a series of videos of learning neural networks in APL cited by others here on this thread.

    Pandas author, Wes McKinney, cited J as an influence in his work on Pandas.

    Extreme Learning Machine in J (code and PDF are here too):

    https://github.com/peportier/jelm

    Convolutional neural networks in APL (PDF and video on page):

    https://dl.acm.org/doi/10.1145/3315454.3329960

    A DSL to implement MENACE (Matchbox Educable Noughts And Crosses Engine) in APL (Noughts and Crosses or Tic-tac-toe):

    https://romilly.github.io/o-x-o/an-introduction.html

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