Firstly, Hiccup is Clojure (so basically server only). Cloact is ClojureScript, that compiles to javascript (so browser, node.js, etc).
Secondly, Hiccup produces strings. Cloact typically creates DOM elements, through React, that change every time a component rendered. But it can also produce an HTML string using the same data, to pre-render a page on the server using node.js.
Yes, exactly, Cloact tries to stay really close to plain React. But since it allows you to separate data from rendering, undo should be quite trivial to implement (if you keep all your application data in a single cloact/atom)...
Yep sounds right to me. The other reason I did Om the way I did was to keep the door open for more React optimizations that Om can drive which are more work if you remain close to the React model - particularly only reconciling the specific children that changed in a list instead of iterating over them like React does.
I've been playing with React a little bit, and so far I like the experience a lot.
Rendering is incredibly quick, since React only touches the parts of the DOM that have changed. Components are very lightweight, so you can break down the UI in as many, self-contained parts as you like.
And you can do pretty much anything you like without ever having to use a single selector or DOM manipulation. That means that you only need classnames for CSS.
The only downside I've discovered so far is the extra tooling required to use the embedded HTML, and lacking compatibility with other tools, but I suppose that will become better with time.
"Since the only computer language Richard was really familiar with was Basic, he made up a parallel version of Basic in which he wrote the program and then simulated it by hand to estimate how fast it would run on the Connection Machine."
I don't think so. He didn't invent a new language, but extended an existing one. And I simulate what a program does in my head all the time when debugging (including multithreaded stuff, but I agree that's hard).
I think their problem is much worse than just being a question of improving data quality. They seem to get data from a lot of very different sources, and those simply do not fit together.
For example, in Stockholm Apple's map still shows most buildings as lying in the middle of some street. On the other hand, only relatively few businesses seem to be located in some kind of building. There seem to be quite obvious, and systematic, errors all over the place.
Last I heard, jashkenas was not a fan of adding such.
"... [P]attern matching inspired by static languages is a particularly poor fit for JavaScript (and by extension CoffeeScript), because types are extremely weak in JS." -jashkenas [1]
"[... P]attern matching is not nearly as useful in a language without rich types [...]" - jashkenas [2]
I'm on that reddit thread, respectfully disagreeing with him.
Now, if they only could sort out the iPhone app as well. It uses a lot more CPU (and corresponding battery) than other audio players (probably due to its Vorbis use), and skips as soon as the os is busy doing something else.
The new app is a universal binary which also includes iPhone updates, so it might be worth downloading the update and seeing if it fixes any of your issues.
Secondly, Hiccup produces strings. Cloact typically creates DOM elements, through React, that change every time a component rendered. But it can also produce an HTML string using the same data, to pre-render a page on the server using node.js.