
A sliding puzzle, built with Elm - michaelsbradley
http://moroshko.github.io/sliding-puzzle/?width=4&height=4&start=P,L,A,Y,T,H,I,S,G,A,M,E,N,W,O,&goal=P,L,A,Y,T,H,I,S,G,A,M,E,N,O,W,&shuffle=0
======
cokernel
It's a nice interface. I'm glad arrow keys, the first thing I tried, work. But
you're not going to trick me into looking for a sequence of moves that change
the parity of the underlying permutation.

~~~
jcl
The game is solvable -- no tricks, just something you've overlooked.

(Hint: Someone who doesn't know about parity might try scrambling the puzzle
randomly, then find that they can reach the goal state about half of the
time.)

~~~
cokernel
Is the thing I've overlooked that there are two As?

~~~
joeriel
Yes - easily solvable when you flip the A's

------
michaelsbradley
Source code: [https://github.com/moroshko/sliding-
puzzle](https://github.com/moroshko/sliding-puzzle)

~~~
emailgregn
That code is so -erm- pretty. And by popular accounts, Elm is a pleasure to
develop with. I hope it catches on.

~~~
abglassman
I'm pretty keen to play with Elm, but it gives me some pause that an app like
this (or the demo at [https://github.com/evancz/start-
app](https://github.com/evancz/start-app)) results in... 11k lines of
Javascript. Nevertheless, these talks got me bulled up on Elm:
[https://www.youtube.com/watch?v=FV0DXNB94NE](https://www.youtube.com/watch?v=FV0DXNB94NE)
(Richard Feldman, collegially, on React -> Elm)</a> /
[https://www.youtube.com/watch?v=oYk8CKH7OhE](https://www.youtube.com/watch?v=oYk8CKH7OhE)
(Evan Czaplicki on the motivation for Elm)

~~~
michaelsbradley
That's because the Elm compiler doesn't yet do much in the way of "dead code
elimination" (DCE).

However, that will change in a future release of Elm, once Joey Eremondi's
work has been fully integrated. My understanding is that integration is not
slated for the 0.16 release (imminent) but will likely be part of the 0.17
release.

See: [https://groups.google.com/forum/#!searchin/elm-
dev/dead$20co...](https://groups.google.com/forum/#!searchin/elm-
dev/dead$20code%7Csort:date/elm-dev/ney653TeOmU/p8pr7JSDAQAJ)

~~~
hellofunk
Are they planning to leverage the Google Closure compiler the way
Clojurescript does? Un-optimized Clojurescript is also huge until it runs
through Closure compilation.

~~~
michaelsbradley
No, I believe the DCE implementation (still in the works) is specific to the
Elm compiler, as opposed to an implementation which organizes the source in
such a way as to leverage Google's Closure compiler.

------
wdmeldon
Elm looks absolutely fascinating to me, but one of the things that strikes me
is odd is the prevalence examples that eschew markup for the canvas. Not a bad
thing per se, but definitely a departure from what most JS Frameworks and tool
sets show off.

~~~
galfarragem
And it seems faster than the typical meteor app.

------
hellofunk
I'm so fascinated by Elm. What a great addition to the world of JS tooling. I
wish had more time to spend on it, but the Haskell syntax, the strict typing,
the Haskell compiler, and reactive JS model, the emphasis on graphic UI
building as a native language feature, all just really great and relevant
ideas.

~~~
michaelsbradley
There's also PureScript, which is a little more "apples to apples" with
Haskell. Both the Elm and PureScript compilers are written in Haskell.

[http://www.purescript.org/](http://www.purescript.org/)

[https://leanpub.com/purescript/read](https://leanpub.com/purescript/read)

Also, some of the ideas from Elm are having an influence in the PureScript
ecosystem.

For example: [https://github.com/bodil/purescript-
signal](https://github.com/bodil/purescript-signal)

See also: [https://github.com/slamdata/purescript-
halogen](https://github.com/slamdata/purescript-halogen)

------
methodOverdrive
Cool. I plan to look at the source code later.

One issue I noticed: when playing with the mouse, if I click on a tile, then
click on some other tile, the FIRST tile clicked is the one that moves - which
seems like a bug and is certainly a counterintuitive input behavior.

------
sotojuan
Very nice! More reasons to try Elm out.

