[HN Gopher] Lispsyntax.jl: A Clojure-like Lisp syntax for julia
___________________________________________________________________
Lispsyntax.jl: A Clojure-like Lisp syntax for julia
Author : phonebucket
Score : 96 points
Date : 2021-01-19 17:53 UTC (5 hours ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| ampdepolymerase wrote:
| The irony here is particularly rich considering Julia's parser
| frontend is written in Scheme.
| yrimaxi wrote:
| Why is that ironic?
| DannyB2 wrote:
| At the very least it is amusing.
| eigenspace wrote:
| I'm not sure, but maybe they're unhappy that it uses a more
| Clojure style syntax?
| sritchie wrote:
| A couple years into fatherhood and I see puns everywhere, and
| suspect others of dropping them too.
|
| Particularly Rich... Hickey?
| asimjalis wrote:
| I juxt ignore the puns.
| mumblemumble wrote:
| It seems more fitting than ironic to me. Julia's never been shy
| about its lisp heritage, and the reason why this project is
| only a couple hundred lines of code is that Julia remains very
| close to those roots.
| Blikkentrekker wrote:
| Certainly any alternative syntax parser for any language
| would be?
|
| It would also only take a couple of hundred lines to write a
| parser for a C compiler that would allow that.
| mumblemumble wrote:
| Not any to any. You could't write a thin lispy alternative
| syntax for C because of some semantic differences. "If" is
| an expression in Julia and Lisp, and it's a statement in C.
| Dealing with things like goto statements and preprocessor
| macros would also require some extra work.
|
| Add all that up, and you're no longer looking at
| alternative syntax, you're looking at a transpiler.
| Blikkentrekker wrote:
| But this is also simply an alternative Syntax that
| mirrors _Clojure_ , not actual _Clojure_ semantics.
| fulafel wrote:
| My current favourite of these is this Lua version:
| https://github.com/bakpakin/Fennel
| phonebucket wrote:
| A fun Julia easter egg I recently discovered.
|
| Running 'julia --lisp' launches a femtolisp
| (https://github.com/JeffBezanson/femtolisp) interpreter.
| retzkek wrote:
| 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...
| ddragon wrote:
| While not nearly as mature as the main platforms (like the JVM,
| .NET, BEAM), the Julia compiler does have some unique features
| (an extremely aggressive optimizer, a sophisticated type
| inference mechanism, possibly the most exceptional multiple
| dispatch support, Go-like lightweight processes), including a
| macro system that supports reader macros for writing parsers
| (like this library) and extensible multi-stage compilation (like
| the IR manipulation that is used in auto-differentiation of
| source code), which makes me wonder if once all those features
| (and possibly new ones) become robust enough it will become one
| of the targets for people creating new programming languages.
| stabbles wrote:
| What you see most is domain-specific languages implemented
| through macro's. For instance this package,
| https://jump.dev/JuMP.jl/dev/examples/basic/,
| https://github.com/SciML/ModelingToolkit.jl or
| https://turing.ml/dev/docs/using-turing/get-started
| ddragon wrote:
| Yes, I was thinking about someone going many step furthers,
| like Elixir is for Erlang and the BEAM, someone who disagrees
| with design decisions of the Julia language but appreciates
| the compiler's capabilities and the ecosystem enough to use
| them to implement their own vision for a programming
| language. Making it a Lisp is just one of the more obvious
| scenarios, as someone may like Julia in general but want the
| full power of s-expressions.
| degraafc wrote:
| 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.
___________________________________________________________________
(page generated 2021-01-19 23:00 UTC)