6 ms·
So out of all the compile-to-javascript languages out there, elm is easily my favorite, despite not being usable outside the browser. This article is one illust
by saosebastiao 12y ago
So out of all the compile-to-javascript languages out there, elm is easily my favorite, despite not being usable outside the browser. This article is one illustration why it is so attractive: app architecture that is blindingly simple (its all just state machines under the cover, which is exactly what a UI is).
Now all we need is an elm that compiles to native code that somehow can do what React Native is doing for the native interface. I would easily pay 3-5x Xamarin's prices to be able to do so. Who's up for it?
- wz1000 12y agoHaskell with an FRP library may work for what you want to do. Reactive-banana looks good, though I haven't used it.
- phamilton 12y agoI'll echo this. Elm was a bit of a gateway drug for me getting into Haskell. Haskell itself has a lot of very powerful tools.
- platz 12y agoThis post builds the intuition for something like the Netwire library http://blog.jle.im/entry/effectful-recursive-real-world-autos-intro-to-machine http://blog.jle.im/entry/effectful-recursive-real-world-auto...
- photex 12y agoThe trouble though comes about once you have to start working with a UI library. It's a mess and a half unless you use C++. I'd like to try using Elm, or Purescript for UI work using atom-shell or nw.js. That opens almost the same can of worms (how easy it might be to 'bind' your engine to your UI/view). I've written a non-trivial application using QtWebkit entirely for the UI and it was a very agreeable experience. The engine of this app was C++ but it got my gears turning.
- pjmlp 12y agoActually that I my opinion from any web based UI, a mess of JavaScript/CSS trickery and HTML. Native UI development feels so much more advanced and user friendly. Saying this as a UX developer since the mid-90's.
- photex 12y agoMy comment was in reference to using native toolkits from a language other than C++ and not the status of using native toolkits in general. <friendly-joke>I have a hard time believing that you've been using native UI toolkits using Haskell since the mid-90s.</friendly-joke> :)
- pjmlp 12y agoNo, but I was using Turbo Pascal followed by Delphi. Also played with C++ Builder, but by then Visual C++ had taken over as Borland was going through their Inprise phase.
- Rapzid 12y agoI haven't tried Elm yet but my favourite thus far is ClojureScript. Last I used it the workflow had a few rough edges but once I discovered you didn't HAVE to create closure(the google closure stuff) mappings it became easier to get the feet wet. I should take Elm for a drive.
- sonnym 12y agoI, too, really love Elm, and have worked on some tooling for getting it running on the server. (Self promotion ahead). I wrote an NPM module for compiling and loading Elm[1], and also put together a more comprehensive project for scaffolding an Express application to communicate between Elm in the browser and Elm on the server, via ports (this is the first time I announce it anywhere, since I want to have some full examples before anything "official", but it is usable today). 1. https://www.npmjs.com/package/elm-loader https://www.npmjs.com/package/elm-loader 2. https://www.npmjs.com/package/elm-expressway https://www.npmjs.com/package/elm-expressway
- tegeek 12y agoInteresting. So basically Reactive Haskell right inside the NodeJS. Did you able to run any performance test yet? I'm interested to learn more about this.
- sonnym 12y agoIt performs perfectly fine on my machine, but I have not done any comprehensive testing. I was actually quite surprised when I first got everything working and was streaming input to the server, state to the client, and rendering the latter without any obvious latency. There are even some trivial optimizations, such as dropping repeats from the state signal on the server, which should speed things up significantly. I have no idea if it will scale, but I do plan on adding some infrastructure for writing bots in Elm and having them run in a cluster, so it should be easy enough to test at some point. This is a working example of the Pong example from the Elm website: https://github.com/sonnym/elm-expressway_pong https://github.com/sonnym/elm-expressway_pong
- atrilumen 12y agoIt's killing me that there isn't a good enough solution to this right now. Some quick notes: [0] Idris compiles to C, Java, and JavaScript, but is considered experimental. [1] Frege compiles to Java, and seems to have fairly nice Java interop. It may be possible to target iOS via RoboVM [2], and the browser via GWT [3]. I've yet to really dig into either of them yet, so I can't claim any level of confidence. My current best hope is that GHC's ARM support will become mature enough someday before Sol goes supernova. (Or at least before the effective heat-death of the universe.) (I'm still learning Haskell and kin, so I can't be of much help yet.) [0] http://idris-lang.org http://idris-lang.org [1] http://frege-lang.org http://frege-lang.org (appears to be down ATM) [2] http://www.robovm.com http://www.robovm.com [3] http://www.gwtproject.org http://www.gwtproject.org
- voxfrege 12y agoIt is http://www.frege-lang.org http://www.frege-lang.org or simply https://github.com/Frege/frege https://github.com/Frege/frege