3 ms·
Considering how close Julia is to Lisp, it could be interesting to have an actual Lisp targeting the Julia compiler, for people who don't want to compromise on
by ddragon 7y ago
Considering how close Julia is to Lisp, it could be interesting to have an actual Lisp targeting the Julia compiler, for people who don't want to compromise on s-expr but would still want to have a performance oriented Lisp with access to a lot of scientific computation and ML libraries (and probably better interop compared to Clojure and Java for example). The only work I know for this is:
https://github.com/swadey/LispSyntax.jl https://github.com/swadey/LispSyntax.jl
- adamnemecek 7y agoJulia ships with femtolisp. I've never used it. To start it, run julia --lisp
- jhbadger 7y agoYes, but this doesn't expose any Julia functionality, so it isn't really useable. I think the parent was looking for something akin to Lisp Flavored Erlang, where the whole language is usable with a Lisp-inspired syntax.
- 6thaccount2 7y agoIs femtolisp useful? Does it expose functions like filesystem interactions?
- doctoboggan 7y agoJeff (creator of Julia) created femtolisp [0] which is used in the Julia parser. [0]: https://github.com/JeffBezanson/femtolisp https://github.com/JeffBezanson/femtolisp
- jimbokun 7y agoThis is a wonderful quote: "This is what I do for fun, because it is the exact opposite of the kind of thing people will pay for: an obscure implementation of a programming language everybody hates." Great attitude!
- pflanze 7y agoI'm working my way towards doing that. I've got more than a decade of experience with Scheme and would like to be able to code Scheme in the Julia environment. I also recently started learning Clojure (and implementing Clojure in Scheme, although I'm not sure yet I'll finish that), maybe covering both languages will be feasible. I recently implemented a Scheme interpreter in C++ to access Qt (needs more work, and I'm thinking of moving to generating C++ from annotated Scheme code first), and I implemented some Scheme AST & some optimizer stages (see the corescheme* files at [1]). I wrote pretty much all of the infrastructure for coding these things on top of R5RS myself, so I've got a library I can pull from to build the basic environment (to at least bootstrap it easily). I recently got unemployed and am looking to get back into contracting (Scheme, Clojure, Haskell), so that I can work part time to have enough time to work on this. I'm somewhat hoping to modify the Julia compiler/runtime to add first-class continuation support (I have implemented it in the interpreter I wrote in C++, so I do have some experience with that). I'd also like optional TCO, that shouldn't be hard (LLVM supports it, should be just a case of the compiler annotating it correspondingly). If someone would like to join the effort, please tell me. [1] https://github.com/pflanze/chj-schemelib https://github.com/pflanze/chj-schemelib
- vindarel 7y agoYou can access Python libs easily from CL: https://github.com/CodyReichert/awesome-cl#python https://github.com/CodyReichert/awesome-cl#python and there's a Numpy clone: https://github.com/numcl/numcl https://github.com/numcl/numcl
- ddragon 7y agoThe interop is a great stopgap (like Julia with Python and R), but they don't replace a native ecosystem. A Lisp flavored Julia would have native access to the libraries, it could define new types, new function implementations, new algorithms all natively and with no performance cost, which would be hard to do for a C/C++/Fortran library wrapped in Python wrapped in CL. Also, Julia doesn't have a numpy clone, the native n-dimensional arrays are fast enough that it's not necessary. That makes so everything supports it, the very opposite of a lisp curse scenario in which everyone could have ended up making their own incompatible version (though thankfully DataFrames which are not part of the language all comply with a single Tables interface, so you can switch them).