Fork me on GitHub
#other-languages
<
2016-07-06
>
martintrojer07:07:40

having worked in Elm in anger for a handful weeks all I can say its been a near religious experience.

martintrojer07:07:00

I'm so much more productive than I used to be in CLJS is off the charts,

martintrojer07:07:03

OFF. THE. CHARTS.

cfleming08:07:38

@martintrojer: A few people have commented that the tooling is considerably less mature. Do you agree?

martintrojer08:07:02

I think Elm tooling > CLJS

martintrojer08:07:16

Emacs integration pretty great

cfleming08:07:17

Interesting, good to know.

cfleming08:07:30

So you’re using it for work?

martintrojer08:07:33

Compilation errors, and navigate back to the source

martintrojer08:07:46

For work yes, we are re-writing a 20k CLJS app

cfleming08:07:11

I think there are pretty sweet looking modes for light table and Atom, too.

cfleming08:07:19

Wow, removing your legacy code 🙂

cfleming08:07:55

You’re at Juxt, right? How do your co-workers like it?

martintrojer08:07:58

The think that clinches it for me (with regard to dev-setup) is how amazingly fast the Elm compiler / REPL is. That gives me a much more pleasurable dev experience than the sluggishness of figwheel and bloody google closure

cfleming08:07:22

Yeah, I can see that. Does it have a figwheel-type-thing?

martintrojer08:07:31

I mean, a scratch build of the Elm prod artefact is ~10 seconds. The equivalent CLJS build is 6-7 minutes!

martintrojer08:07:53

Yeah, cljs is just terrible

martintrojer08:07:54

Re; figwheel-type-thing, Elm complier errors is pretty much state of the art. I haven't seen any other language even close.,

cfleming08:07:07

I meant in terms of live reloading.

cfleming08:07:25

And yeah, I love those errors.

martintrojer08:07:28

Oh yeah, basically I don't to that (yet), its so fast so reloading the pages is fine.

cfleming08:07:41

Interesting.

martintrojer08:07:44

but, Elm support pretty wicked hot reload (and time-travelling debuggers)

cfleming08:07:01

Yeah, that looks very nice.

martintrojer08:07:12

but the basic setup is so great I haven't felt the need to setup hot reload.

martintrojer08:07:29

I mean, CLJS dev withjout figwheel is just not possible, and its still not particularly good.

cfleming08:07:33

I’m keen to know about JS interop too, but I have to step out for a bit. I’ll be back later on.

lewix13:07:03

martintrojer: really? is it that good?

lewix13:07:22

martintrojer: were you using cljs and reagent?

lewix13:07:44

martintrojer: I was thinking about investing some time with Elm

martintrojer13:07:12

CLJS, Reagent, figwheel ofc

martintrojer13:07:31

don't waste your time on cljs if you're considering Elm

lewix13:07:17

martintrojer: wow.

lewix13:07:20

martintrojer: you almost got me excited. How is the interop with js? Also what do you guys use for the backend - clojure or elixir? (I heard a lot of Elm folks like Elixir)

martintrojer13:07:48

Clojure backend (I'm am/was a Clojure dude)

lewix13:07:22

martintrojer: any plans to change the backend to something else?

martintrojer13:07:54

not immediately, Clojure works better on the backend. Still looking for alternatives.

martintrojer13:07:02

I'm blogging about my quest if you're interested

lewix13:07:25

markmandel: can you link me to your blog

martintrojer13:07:31

golang doesn't pass the bar for me.

martintrojer13:07:52

"Beyond Clojure"

martintrojer13:07:14

have a number of in the pipe

martintrojer13:07:38

so, what I'm looking for;

martintrojer13:07:43

2. Expression based

martintrojer13:07:59

4. ML-like type system

martintrojer13:07:21

5. Practical, i.e. good library ecosystem

martintrojer13:07:32

6. Something I can live with in prod

martintrojer13:07:46

so golang, racket, elixir are out

lewix13:07:33

what you're looking for doesn't exist yet

martintrojer14:07:04

looking at; ocaml/reason, haskell, F#, Purescript, rust

lewix14:07:10

markmandel: Elm doest not have point 5 as far as I know

martintrojer14:07:24

don't agree, Elm is very practical

lewix14:07:03

markmandel: oh how does F# compare to clojure in your opinion, i also considered looking at it

lewix14:07:22

markmandel: Elm is not mature enough to have a good library ecosystem, isn't it

lewix14:07:26

learning F# also means getting familiar with .Net ecosystem..I'll probably postpone that to another year lol

martintrojer14:07:17

> Elm is not mature enough to have a good library ecosystem, isn't it

martintrojer14:07:23

Totally disagree with this ^^^

lewix14:07:00

martintrojer: I see. that's good to know I'll give it a shot.

lewix16:07:14

I wish clojure had elm error messages; i would be in heaven

lewix17:07:28

markmandel: thanks

lewix17:07:38

markmandel: any nice article that you want me to see?

scriptor18:07:30

isn't Elm's interop with vanilla js libraries still somewhat wonky?

scriptor18:07:39

as in, you have to use the ports system

seancorfield20:07:28

I wouldn’t call that "wonky" — I’d call it a well thought out abstraction to keep impure code effects out of the Elm side of your app.

seancorfield20:07:52

Elm has tried (and rejected) a number of interop abstractions and what it has today is pretty darn good. I followed the evolution of Elm for a long time (and was pretty involved in some of the language design discussions for a while). I think Evan and his team have done an amazing job in many areas.

seancorfield20:07:41

I think the recent "course correction" away from FRP terminology is also a smart move, enabled by baking certain concepts into the runtime, to allow a more pure way to write your code. This mirrors the early decisions to avoid the "M" word and some other terminology that can distract from elegant abstractions and concepts.

scriptor20:07:14

which concepts have been baked into the runtime? The move away from FRP has definitely interested me, seems like it'd make a lot of applications more feasible

markmandel20:07:26

@lewix: ALL OF THEM 😄

seancorfield20:07:49

@scriptor: Essentially replacing FRP terminology with subscriptions and commands (baked into the runtime)

seancorfield21:07:55

I wrote this little Elm program for fun one weekend, to get myself back up to speed on the latest changes (since I’d been away from the language since before the FRP course correction): https://github.com/seancorfield/solar-viewer/blob/master/src/Main.elm

seancorfield21:07:33

I think that’s very elegant in terms of architectural separation (I could easily break it into separate modules at this point).