Our great sponsors
-
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.
-
ModelingToolkit.jl
An acausal modeling framework for automatically parallelized scientific machine learning (SciML) in Julia. A computer algebra system for integrated symbolics for physics-informed machine learning and automated transformations of differential equations
-
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.
Great example of building something fun not because we should but because we can :)
My take on "Lisp in Julia" using deprecated-but-still-parseable syntax instead of a string macro: https://github.com/christopher-dG/jlisp
I should probably put some examples in the readme.
My current favourite of these is this Lua version: https://github.com/bakpakin/Fennel
A fun Julia easter egg I recently discovered.
Running 'julia --lisp' launches a femtolisp (https://github.com/JeffBezanson/femtolisp) interpreter.
What you see most is domain-specific languages implemented through macro's. For instance this package, https://jump.dev/JuMP.jl/dev/examples/basic/ or https://github.com/SciML/ModelingToolkit.jl
The Julia parser is actually written in femtolisp: https://docs.julialang.org/en/v1/devdocs/eval/#dev-parsing
https://github.com/JuliaLang/julia/blob/master/src/julia-par...
This is the closest I've seen: https://github.com/carp-lang/Carp
> magic
I'd say yes, this, though you don't actually manipulate a proper AST, but a list (tree) of program instructions. An AST would be given by a "code walker". Plus, the syntax is small and coherent, the language is stable. With most implementations of Common Lisp, you code against a live image, so you get instant feedback: compile a function with a keybinding, see compiler warnings or errors instantly, try it right away in the REPL (no process had to restart), get an interactive debugger on an error, fix it and resume the execution from a chosen frame (no stack unbinding), inspect objects… when ready, build a binary, and deploy. Today, SBCL's compile-time type-inference warnings are very helpful.
Of course, some companies use CL in a million-sized codebase (if that helps as a counter example): Google (ITA software), SISCOG (underground and rail transport optimisation), ACL2 (industry-strength theorem prover)…
https://lisp-lang.org/success/
https://github.com/azzamsa/awesome-lisp-companies (disclaimer: these resources are not complete)