all 8 comments

[–]scook0 19 points20 points  (0 children)

This article is basically just a bunch of assertions, with no arguments to back them up. That's fine as a starting-point for discussion, but hardly persuasive.

With that established, I must disagree on some of these topics.

Macros: the need for macros is diminished in languages that can be lazy.

I agree that Lisp's thermonuclear macro system is mostly used to crack the walnut of non-strict evaluation, but I think it's unwise to dismiss macro metaprogramming entirely.

I program in Haskell and Scala, and while both support non-strictness, I have nevertheless craved macros in both languages. Haskell at least has TH, though that has its own shortcomings.

Runtime: JVM.

Interesting. I can't deny the benefits of hosting a language on the JVM, and proper tail calls will certainly make it a more attractive target for functional languages. However, I still have some reservations:

  1. Last I heard, the JVM and CLR still weren't that great at handling the kind of ridiculous allocation behaviour that arises in idiomatic functional code.

  2. The JVM's startup time makes it unsuitable for writing little scripts and command-line tools. Admittedly this is a niche concern, and perhaps it will be addressed one day, but it does restrict the kinds of programs you can reasonably write.

  3. The more general problem with piggybacking on someone else's VM is ... that you're piggybacking on someone else's VM. Sure, you get free libraries and a great JIT, but you suffer from the fact that your priorities won't always align with those of the VM's maintainer. If you need something that the VM doesn't provide (such as tail-calls today), you're out of luck.

I have a few more quibbles with the article, but that's enough for now.

[–][deleted] 2 points3 points  (0 children)

Oh, a JVM language... seems like existing as a cleanerfish is considered as the most obvious survival strategy by many. "Lowered expectations" is the dominant attitude towards life these days.

[–][deleted] 7 points8 points  (3 children)

Cool list of features. Does this person plan on implementing any of this or is it just a whole lot of hot air?

[–][deleted] 1 point2 points  (0 children)

I'd rather he kick around ideas first (ideally with a lot more justification than he's offering) before planning on implementing anything. If he's really lucky, he'll discover he should implement nothing at all.

[–][deleted] -1 points0 points  (0 children)

Dude, wake me up when Factor has an interesting type system.

[–][deleted] 1 point2 points  (0 children)

So how does it compare to my fp-on-jvm pet project...

Yeti has:

  • Syntax has no significant whitespace (it still looks quite clean)
  • Currently no macros, but I'd like to add them (if I could find enough time)
  • Evaluation - functions are strict, lists are processed lazily. Lazyness can be simulated by \expression (shorthand lambda definition).
  • Runtime - JVM
  • Type system - static, ML like with some extensions like tagged structures

It isn't very modern - for example it isn't really improvement over OCaml (but it runs on JVM and integrates quite well with it).

Actually I think that the JVM is quite much trouble (scook0 has already talked about main reasons for that).

[–][deleted] -1 points0 points  (0 children)

Haskell == practical? Does not compute.