Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Elm

Pros:

- All the Joys of functional programming .

- Once you satisfy the compiler you can be fairly sure that code will just work.

- FRP saves you from callback hell.

- Fairly easy Javascript Integration via Ports( also see con on this)

- Time traveling debugger ( see con about this)

- Active mailing list.

- Automatic package versioning which more or less works for the most part

- Pure render function ( popularized by ReactJS), makes writing/debugging UI's trivial and painless.

- "Concurrent" FRP

Cons:

- Javascript integration is very and tedious. You have to declare all your ports in main which breaks abstractions. There is "secret" way of integration via Native modules but this will break if compiler changes ( which does quite often ).

- Debugger/reactor won't work if you have ports, basically all non trivial apps.

- All the ui components have to be reimplemented since stuff like jqueryui/webcomponents don't work ( react suffers from this also)

- No support for isomorphic apps, its a client side only tech.

- Can't do code splitting. Compiler generates one big blob of js.

- Constantly changing terminology ( eg: mailbox)

- IDE's/code editors are on the same level as dynamic languages i.e no code completion, refactoring ect.



I think PureScript[0] is a great contender:

- It generates beautiful javascript code

- It can separate PureScript modules into nodejs modules

- It has an even stronger type system than elm . For example, typeclasses

- has great interop with javascript

- Because it can compile to node.js modules, and can use node.js libraries, it's actually possible to write a Universal app (I tend to avoid isomorphic, as it means something totall different in pure functional programming languages like PureScript. (https://github.com/paf31/purescript-isomorphisms)).

One issue I have had so far is that once your project gets big, the compile times are pretty annoying. But apart from that; a great language!

[0] -http://www.purescript.org/


How big are we talking about for the compile times?

Is there any in-depth recent comparison of elm and purescript somewhere? I found some links from almost a year ago but I assume it changed a lot since then.


The largest all-PureScript application I know of is SlamData[0], which takes about 12s for a rebuild, but SlamData uses a _lot_ of modules. For smaller projects it's much less. It's not great, but performance is one of three main goals for the current milestone. There is an alternative front-end called psc-compile[1] which reduces the incremental build times considerably. I hope to be able to integrate it soon.

  [0] slamdata.com
  [1] github.com/bitc/purescript/tree/psc-compile/psc-compile


"Javascript integration is very and tedious."

Even though this doesn't make grammatical sense and missing a word, somehow I understand exactly what it means.


What about NPM modules?


Aren't NPMs server side only?


No, they're used for the front end as well.


You can use npm modules in the browser with webpack or browserify.


It's more of an all-around package/dependency manager. You could use bower as well, but npm seems to be a lot more popular.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: