From Common Lisp to Julia

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

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.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  • LispSyntax.jl

    lisp-like syntax in julia

  • To be fair, LispSyntax.jl is more of a proof of concept than something that anyone would want to actually do significant coding in as can be seen by the TODO list in the README[1]. It also hasn't seen any active development in several years.

    [1] https://github.com/swadey/LispSyntax.jl

  • CoherentNoise.jl

    A comprehensive suite of coherent noise algorithms and composable tools for manipulating them.

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

    a lightweight, robust, scheme-like lisp implementation

  • > In short, Julia is very similar to Common Lisp, but brings a lot of extra niceties to the table

    This probably because Jeff Bezanson, the creator of Julia, created a Lisp prior to Julia, which I think still exists inside Julia in some fashion

    https://github.com/JeffBezanson/femtolisp

  • slimv

    Official mirror of Slimv versions released on vim.org

  • https://GitHub.com/jpalardy/vim-slime is a terrible SLIME to be honest! It is not even a SLIME. It just This does not look like SLIME. It just copies text from one text buffer and paste it to another Vim buffer which is probably running a REPL. "Probably" because who knows what the target buffer is running. vim-slime does not care. This is not Superior Lisp Interaction Mode for $EDITOR (SLIME) in any way.

    vim-slime does not connect to any Swank server. It does not understanding Lisp s-expressions. It would happily copy any random text into any random REPL and call it job done! Lisp interaction mode is much much more than just copying and pasting text around. A superior lisp interaction mode gives you live debugging, handling conditions, inspecting variables, navigating the stack frames, ... Vim-slime cannot do anything like this because, well, it just copy-pastes stuff around. Vim-slime is a disingenious and misleading name for a project that is not SLIME.

    If you really want to use Vim, do yourself a favor and use https://github.com/kovisoft/slimv and experience a true Lisp interaction mode.

  • generic-cl

    Generic function interface to standard Common Lisp functions

  • So, the article is harsh on CL: YMMV. Also, your goal may vary: I want to build and ship (web) applications, and so far Julia doesn't look attractive to me (at all). Super fast incremental development, build a standalone binary and deploy on my VPS or ship an Electron window? done. Problem(s) solved, let's focus on my app please.

    The author doesn't mention a few helpful things:

    - editor support: https://lispcookbook.github.io/cl-cookbook/editor-support.ht... Emacs is first class, Portacle is an Emacs easy to install (3 clicks), Vim, Atom support is (was?) very good, Sublime Text seems good (it has an interactive debugger with stack frame inspection), VSCode sees good work underway, the Alive extension is new, usable but hard to install yet, LispWorks is proprietary and is more like Smalltalk, with many graphical windows to inspect your running application, Geany has simple and experimental support, Eclipse has basic support, Lem is a general purpose editor written in CL, it is Emacs-like and poorely documented :( we have Jupyter notebooks and simpler terminal-based interactive REPLs: cl-repl is like ipython.

    So, one could complain five years ago easily about the lack of editor support, know your complaint should be more evolved than a Emacs/Vim dichotomy.

    - package managers: Quicklisp is great, very slick and the ecosystem is very stable. When/if you encounter its limitations, you can use: Ultralisp, a Quicklisp distribution that ships every 5 minutes (but it doesn't check that all packages load correctly together), Qlot is used for project-local dependencies, where you pin each one precisely, CLPM is a new package manager that fixes some (all?) Quicklisp limitations

    > [unicode, threading, GC…] All of these features are left to be implemented by third-party libraries

    this leads to think that no implementation implements unicode or threading support O_o

    > most of the language proper is not generic

    mention generic-cl? https://github.com/alex-gutev/generic-cl/ (tried quickly, not intensively)

    Documentation: fair points, but improving etc. Example of a new doc generator: https://40ants.com/doc/

    Also I'd welcome a discussion about Coalton (Haskell-like type system on top of CL).

  • doc

    Flexible documentation generator for Common Lisp projects. (by 40ants)

  • So, the article is harsh on CL: YMMV. Also, your goal may vary: I want to build and ship (web) applications, and so far Julia doesn't look attractive to me (at all). Super fast incremental development, build a standalone binary and deploy on my VPS or ship an Electron window? done. Problem(s) solved, let's focus on my app please.

    The author doesn't mention a few helpful things:

    - editor support: https://lispcookbook.github.io/cl-cookbook/editor-support.ht... Emacs is first class, Portacle is an Emacs easy to install (3 clicks), Vim, Atom support is (was?) very good, Sublime Text seems good (it has an interactive debugger with stack frame inspection), VSCode sees good work underway, the Alive extension is new, usable but hard to install yet, LispWorks is proprietary and is more like Smalltalk, with many graphical windows to inspect your running application, Geany has simple and experimental support, Eclipse has basic support, Lem is a general purpose editor written in CL, it is Emacs-like and poorely documented :( we have Jupyter notebooks and simpler terminal-based interactive REPLs: cl-repl is like ipython.

    So, one could complain five years ago easily about the lack of editor support, know your complaint should be more evolved than a Emacs/Vim dichotomy.

    - package managers: Quicklisp is great, very slick and the ecosystem is very stable. When/if you encounter its limitations, you can use: Ultralisp, a Quicklisp distribution that ships every 5 minutes (but it doesn't check that all packages load correctly together), Qlot is used for project-local dependencies, where you pin each one precisely, CLPM is a new package manager that fixes some (all?) Quicklisp limitations

    > [unicode, threading, GC…] All of these features are left to be implemented by third-party libraries

    this leads to think that no implementation implements unicode or threading support O_o

    > most of the language proper is not generic

    mention generic-cl? https://github.com/alex-gutev/generic-cl/ (tried quickly, not intensively)

    Documentation: fair points, but improving etc. Example of a new doc generator: https://40ants.com/doc/

    Also I'd welcome a discussion about Coalton (Haskell-like type system on top of CL).

  • emmet

    The essential toolkit for web-developers

  • > If I had to wish something from Julia, it would be to provide a way to turn off runtime optimization to (radically) speed up compile times for purposes of debugging.

    100% agreed on that. I've tried a Julia alias with `--compile=min --optimize=0` options passed in to try to say "please give me responsiveness over runtime performance", but it's still not quite the smooth flow I'd like it to be.

    Regarding dynamic binding, beyond performance, it sounds like it would have the same hard-to-debug action-at-a-distance problems that global variables often land you in, so I'm not sure it's worth it. (The specific case the author mentions would also lead to type stability problems, but that's maybe beside the point.)

    > Structural editing

    It's hard to process things from gifs, especially since I can't tell what the starting point of the gif is. It vaguely gives me the impression of the Emmet plugin for HTML development [1].

    > I am aware julia has a --lisp mode, but I have never found any documentation for it. So, I don’t agree that all the things in julia are well-documented either :).

    Afaik, the `--lisp` mode is intended to be sort of an easter egg, rather than a real mode for practical coding. I doubt many people use it other than Jeff himself. :)

    The author doesn't say everything in Julia is well-documented by the way, or even mention Julia documentation. There's just complaints about the Lisp ecosystem's lack of documentation, and perhaps from that an implication that Julia has better docs, but I doubt the author would say all the things are well-documented - there's still quite a way to go for that to be the case.

    [1] https://emmet.io/

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
  • cl-lsp

    An implementation of the Language Server Protocol for Common Lisp

  • DifferentialEquations.jl

    Multi-language suite for high-performance solvers of differential equations and scientific machine learning (SciML) components. Ordinary differential equations (ODEs), stochastic differential equations (SDEs), delay differential equations (DDEs), differential-algebraic equations (DAEs), and more in Julia.

  • https://github.com/SciML/DifferentialEquations.jl/issues/786. As you could see from the tweet, it's now at 0.1 seconds. That has been within one year.

    Also, if you take a look at a tutorial, say the tutorial video from 2018,

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

  • Good linear algebra libraries

    1 project | /r/Julia | 19 May 2023
  • Julia 1.9: A New Era of Performance and Flexibility

    3 projects | /r/Julia | 14 May 2023
  • Can Fortran survive another 15 years?

    7 projects | news.ycombinator.com | 1 May 2023
  • Startups are building with the Julia Programming Language

    3 projects | news.ycombinator.com | 13 Dec 2022
  • What's Great about Julia?

    6 projects | news.ycombinator.com | 7 Dec 2022