Live data from Hacker News

Lisp Flavoured Erlang 1.0 released after 8 years of development

github.com

41–50 of 96 posts

Re: Lisp Flavoured Erlang 1.0 released after 8 years of development

#41
post #18
post #14

Virding's YouTube presentation at a Clojure conference about this new lisp says this in the caption: >LFE (Lisp Flavoured Erlang) has been designed to run efficiently on the Erlang VM and at the same time be a "real lisp" providing Lisp's good bits. It also knocks Clojure a bit. What do you all think are the "good bits" of lisp that Clojure lacks?

FWIW, reading this sentence w/o any extra context, it doesn't seem to imply anything bad about clojure.

The bit about Clojure was additional information in the source that I did not quote.

Re: Lisp Flavoured Erlang 1.0 released after 8 years of development

#42
post #4

Great news! I wanted to learn BEAM/OTP, but had tried Erlang briefly years ago, and then went back to Common Lisp. Now I can try to learn BEAM/OTP in a syntax that is more appealing to me than Elixir's Ruby-like syntax. I like Elixir, and it is very popular, but true runtime macros are available in LFE 1.0. In addition, Robert Virding was one of the co-creators of Erlang, so his devotion to bringing the best Lisp he…

Elixir is really not similar to Ruby and the comparison wears thin. This is my opinion after having used Elixir daily for the last 1.5 years and Ruby for 10 years before that. Elixir really is a brilliant language and José et al have made the developer experience second to none with hex, mix, the language guide and docs. Compare how you bring up a repl: Elixir, type iex; LFE, cd into LFE dir, type ./bin/lfe. (EDIT: t…

I didn't exactly write it that way; I specifically referred to syntax. I am aware of the good things in Elixir, since I started playing with it years ago. I gave up trying to figure out why something in life becomes more popular than another, and just go with what I judge is best for me, makes me happy and gets the job done. Pony seems to be chomping on the heels of Erlang/Elixir/LFE, but I will stay with LFE for now. Jose and team have done a great job putting together a great ecosystem. I just happen to prefer Lisp syntax over blocks with 'END's. It is purely subjective. I know many languages to a certain degree (J, Python, C, Scheme, some Prolog, APL), and I try and pick the one that is best for the job. I just find myself comfortable in Lisp or Scheme. I am trying to grok Idris and Haskell this year, but I am really into livecoding, and so I chose Extempore. Sonic Pi is great, and is based on Ruby. Again, just personal preference. I am just excited about LFE for my selfish reasons ;)

Re: Lisp Flavoured Erlang 1.0 released after 8 years of development

#43
post #16
post #10

Earlier quoted context omitted.

It started in 2007 with the release of Clojure and there are still plenty of paren keys around.

The Lisp renaissance started in December 1999 with SBCL being forked from CMUCL.

On the other hand, 1999 was the downfall of LISP in the statistical community because that's when Luke Tierney decided to stop working on LISP-STAT, a LISP dialect with extensions for statistics that was semi-popular before the advent of R. While there have been statistical systems based on LISP since (such as Incanter for Clojure and a port of many of the extensions of LISP-STAT to Common Lisp) none have managed to make a dent against R, unfortunately.

Re: Lisp Flavoured Erlang 1.0 released after 8 years of development

#44
post #14

Virding's YouTube presentation at a Clojure conference about this new lisp says this in the caption: >LFE (Lisp Flavoured Erlang) has been designed to run efficiently on the Erlang VM and at the same time be a "real lisp" providing Lisp's good bits. It also knocks Clojure a bit. What do you all think are the "good bits" of lisp that Clojure lacks?

Readable stack traces. Unfortunately, the JVM is the culprit here. I like Clojure's syntax, and some other bits, but if I were to chose a Lisp that runs under another system like Clojure, I'd choose Shen [1].

   [1]  http://shenlanguage.org/

Re: Lisp Flavoured Erlang 1.0 released after 8 years of development

#45
post #6

Earlier quoted context omitted.

One obvious example is that AFAIK the VM doesn't support functions with a variable number of arguments (foo/1 and foo/2 are two separate functions). This means that you can't have CL-style &rest or &key arguments.

This is a feature to me more like a limitation. I do not like optional arguments &rest style. In Erlang you need to have explicit number of arguments and need to explicitly implement them. I really like that. Keep in mind that default values are trivial to implement when the smaller arity function calls the higher arity one with added values. Or you can call in yourself to the higher arity function and specify the pa…

I feel like it's OK not having rest args if you leave them out in order to support currying, but leaving both out seems really weird for a language that's trying to be functional.

Re: Lisp Flavoured Erlang 1.0 released after 8 years of development

#46

Earlier quoted context omitted.

This is a feature to me more like a limitation. I do not like optional arguments &rest style. In Erlang you need to have explicit number of arguments and need to explicitly implement them. I really like that. Keep in mind that default values are trivial to implement when the smaller arity function calls the higher arity one with added values. Or you can call in yourself to the higher arity function and specify the pa…

I feel like it's OK not having rest args if you leave them out in order to support currying, but leaving both out seems really weird for a language that's trying to be functional.

Leaving out rest args supports the syntactic sugar for currying, not currying itself. (Let's call that sugar OAIPA: omission of arguments is partial application.)

Even syntaxes which have OAIPA can (and do) still have optional parentheses to exactly delimit the arguments of a call, and that notation can clearly support variadic args.

Outside of explicit delimiting with parens, OAIPA can work on a variadic function up to its required arguments by considering it to be a function of exactly that number of arguments, and no more.

Re: Lisp Flavoured Erlang 1.0 released after 8 years of development

#47
post #44
post #14

Virding's YouTube presentation at a Clojure conference about this new lisp says this in the caption: >LFE (Lisp Flavoured Erlang) has been designed to run efficiently on the Erlang VM and at the same time be a "real lisp" providing Lisp's good bits. It also knocks Clojure a bit. What do you all think are the "good bits" of lisp that Clojure lacks?

Readable stack traces. Unfortunately, the JVM is the culprit here. I like Clojure's syntax, and some other bits, but if I were to chose a Lisp that runs under another system like Clojure, I'd choose Shen [1]. [1] http://shenlanguage.org/

>The Shen kernel is under BSD and currently runs under CLisp, SBCL, Clojure, Scheme, Ruby, Python, the JVM, Haskell and Javascript.

Hm, I guess I can't imagine how that would work, one language running under all those environments?

Re: Lisp Flavoured Erlang 1.0 released after 8 years of development

#48
post #39

Earlier quoted context omitted.

This is a feature to me more like a limitation. I do not like optional arguments &rest style. In Erlang you need to have explicit number of arguments and need to explicitly implement them. I really like that. Keep in mind that default values are trivial to implement when the smaller arity function calls the higher arity one with added values. Or you can call in yourself to the higher arity function and specify the pa…

In Erlang you need to have explicit number of arguments and need to explicitly implement them. Or, you know, just use lists as parameters. That's the standard Erlang pattern for unknown parameters lengths (e.g. io:format("debug ~s because ~p~n", [SomeString, SomeType]))

Firstly, this still requires a mechanism which underlies the [ ... ] notation for evaluating a sequence of any number of expressions and constructing a list.

In Lisp dialects, that is done by a variadic function:

  (list 1 2 3 4 ...)
Of course, if we don't need to indirect on this function, we could implement it as a macro (supposing further that we have variadic macros for compile time, but not variadic functions for run time).

The macro would turn (list 1 2 3) into the non-variadic calls (cons 1 (cons 2 (cons 3 nil))).

I imagine that's a conceptual facsimile of what Erlang's list constructor notation is doing.

Erlang has variadic features in its read syntax; without a doubt its BNF is chock full of "zero or more of ..." grammar productions. The function defining mechanism lets you define a function which has any number of arguments; just that number has to be fixed for that function. So the mechanism itself enjoys variadic application. Here it is asked to define a three-arg function, here a ten-arg, ...

We can simulate some aspects of variadic application with syntactic sugar, but not all. A Lisp function call which specifies five arguments can call a function which requires exactly five arguments, or a function which requires three arguments, followed by variadic ones.

For instance, if we have a callback registration interface that passes five arguments, the client can supply a fixed arity function, or a variadic one.

I suppose that if everything is static, that can still be worked out. The compiler sees that a variadic function with only two required args is passed as a callback that must be 5-ary, so it inserts a conversion shim: an anonymous function which takes exactly 5 parameters and applies them to the 3+rest function.

Re: Lisp Flavoured Erlang 1.0 released after 8 years of development

#49
post #4

Great news! I wanted to learn BEAM/OTP, but had tried Erlang briefly years ago, and then went back to Common Lisp. Now I can try to learn BEAM/OTP in a syntax that is more appealing to me than Elixir's Ruby-like syntax. I like Elixir, and it is very popular, but true runtime macros are available in LFE 1.0. In addition, Robert Virding was one of the co-creators of Erlang, so his devotion to bringing the best Lisp he…

WRT to macros how does LFE differ from Elixir? My understanding was that Elixir macros were incredibly powerful(hence most of the language constructs being built in them).

Re: Lisp Flavoured Erlang 1.0 released after 8 years of development

#50
post #38

Elixir is really not similar to Ruby and the comparison wears thin. Wasn't Elixir just created because 100%-Ruby-til-Death programmers refuse to learn any other non-ruby-like syntax? It's like their brains would shatter into a brillion pieces if they ever had to think about tail recursion. have made the developer experience second to none Except, LFE isn't a giant community and companies and organizations and confere…

Nope. Elixir was created because of the gap in functionality in Erlang, specifically around documentation and tooling as well as the lack of macros and polymorphism. [0]

The fact that it looks Rubyish at times is just the creator's aesthetic preference, but it wasn't the motivator.

[0] http://www.sitepoint.com/an-interview-with-elixir-creator-jo...

Post reply on HN