7 ms·
Elm: declarative language that compiles to HTML, CSS and JS
- kv85s 14y agovisiting the link yields: Parse error at (line 1, column 1): unexpected end of input expecting reserved word 'module', reserved word 'import' or at least one datatype or variable definition
- ojii 14y agothe link seems to have an extra slash at the end, http://elm-lang.org/ http://elm-lang.org/ works for me.
- TeMPOraL 14y agoWhich suggests the site is generated in some unsafe way that could possibly be exploited.
- wheatBread 14y agoWhile this massive bit of speculation is exciting, this is not the case. It is a compiler error indicating that the poster somehow compiled an Elm file without any content in it. I suspect my servers are having a bad time right now, so the file may have been only partially read for some reason. I am trying to scale my servers up now!
- gliptic 14y agoYou get the error when you go to http://elm-lang.org// http://elm-lang.org//
- wheatBread 14y agoCan you specify which link you visited? Or what platform you are on?
- deleted 14y ago[deleted]
- dbaupp 14y agoPrevious submission (with discussion): https://news.ycombinator.com/item?id=3322082 https://news.ycombinator.com/item?id=3322082 (Presumably that submission is why this one (is) was forced to (incorrectly) have an extra /)
- jessaustin 14y agoFrom that discussion it seems that not much of this system was usable at that time. Fortunately it appears more complete now. He got his thesis done too.
- mgaudin 14y agoEpic fail.
- deleted 14y ago[deleted]
- larskinn 14y agoVery nice, accessible examples and documentation. Can't wait to try it out (after exams)
- sidcool 14y agoIt's a pretty old submission. I wonder what prompted it to be upvoted again. But it's fine, as long as it's related to Technology and Programming.
- scarmig 14y agoOh, I hadn't seen the pong example before! Reminds me of the old paper on Space Invaders.
- at-fates-hands 14y agoI'm seeing a lot of inline styles on elements on the site. Not sure if this is part of how the language is supposed to work.
- woah 14y agoIs this actually useful? Has anyone tried it? The examples are quite simplistic. I would like to see a more full featured app or site before I invest any time into investigating it.
- wheatBread 14y agoI think so, but I am biased (lead dev and designer :P) The entire site is written in Elm (excluding the code editor which relies on CodeMirror). If you click the "View Page Source" in the top right corner of every page, you can see the full source for it. For example: http://elm-lang.org/edit/Examples.elm http://elm-lang.org/edit/Examples.elm Here's the [full source for the website](https://github.com/evancz/elm-lang.org/tree/master/public https://github.com/evancz/elm-lang.org/tree/master/public) and a [game of Pong](http://elm-lang.org/blog/games-in-elm/part-0/Making-Pong.html http://elm-lang.org/blog/games-in-elm/part-0/Making-Pong.htm...).
- deleted 14y ago[deleted]
- woah 14y agoThanks! Will check this out.
- shortlived 14y agoIs elm-server just another web server or does it serve up elm files directly? PS - this project looks really great! It makes me interested in web dev again.
- wheatBread 14y agoIt serves Elm files directly. You just start it up, and can use F5 to recompile files from the browser. PS. Thank you! :D I actually like web programming these days because of it :)
- mcmire 14y agoA couple of questions: 1) Is this a subset of Haskell, or a brand new language inspired by Haskell? 2) It appears that FRP (which by the way is a cool idea) isn't necessarily language-specific, is this true? My guess is that Elm just brings FRP to the forefront in the same way Lisp brings FP to the forefront?
- michaelsbradley 14y agoFlapjax[1], an FRP library for JavaScript, has been around for several years and can be used purely as a JS library[2], or you can use its compile-to-js DSL to build page/app templates[3]: [1] https://github.com/brownplt/flapjax https://github.com/brownplt/flapjax [2] http://www.flapjax-lang.org/docs/ http://www.flapjax-lang.org/docs/ [3] http://www.cs.brown.edu/~sk/Publications/Papers/Published/mgbcgbk-flapjax/paper.pdf http://www.cs.brown.edu/~sk/Publications/Papers/Published/mg... A couple of years ago, I began (somewhat naively, on my own) hacking together a "next gen" version which was intended to generalize the functionality of Flapjax-as-a-library. I learned a lot, and ended up coming face-to-face with monads and monad transformers (though I didn't realize it at the time) and the limitations and complications that mutable data structures (as opposed to immutable ones) imply for dataflow/FRP frameworks. My work on that library stopped when I shifted from NodeJS to Clojure/ClojureScript for my day-to-day work. Now that I'm a bit more experienced with functional programming, monads, etc., I hope to find some time to restart that effort, using ClojureScript (and protocol-monads[4]?) as the foundation. [4] https://github.com/michaelsbradleyjr/protocol-monads https://github.com/michaelsbradleyjr/protocol-monads
- wheatBread 14y ago1) Brand new language inspired by Haskell's syntax, but it is really much closer to ML (strict evaluation, no type classes). More info: http://www.testblogpleaseignore.com/2012/06/21/why-elm/ http://www.testblogpleaseignore.com/2012/06/21/why-elm/ 2) That is totally true! The idea is quite general. I think it works best in a strongly typed language like OCaml or Haskell, but it could work anywhere. FrTime is a Scheme/Lisp/Racket version of FRP. My personal opinion is that it works best in Elm though :P
- 14y ago
- MattRogish 14y agoMVC web app development test-driven development has always bothered me. I can easily test my models/controllers but to verify that the app HTML isn't borked I have to rely on strict HTML compilation tools (like HAML) and/or slow/painful frontend integration tests that require button clicking, HTML parsing, and form-element filling. I've always wanted a higher-level way to author and test HTML and I always come back to a more programmatic/declarative way of generating HTML as the best way. I'm not sure if Elm is the answer but I think it's at least a good discussion starter.
- blake8086 14y agoYou could build your HTML as a hierarchical data structure instead of a string.
- wyclif 14y agoI always think about the MUA when anyone says "Elm": http://www.instinct.org/elm/ http://www.instinct.org/elm/ I guess that means I'm old.
- cincinnatus 14y agoWas the first thing to come to my mind as well. Used it every day in the mid to late 80s.
- deleted 14y ago[deleted]
- deleted 14y ago[deleted]
- desireco42 14y agoI find language lacking, promise of single language to handle html, css and js is simply not delivered. I kind of imagined something like components where you would have html, css and js and you can say login_form = new loginForm(loginProcess) where loginProcess would be callback that would get username and password... or something along those lines. I guess those are html components that someone was writing about...
- larskinn 14y agoCallbacks are actually one of the things this is explicitly trying to avoid: http://elm-lang.org/learn/Escape-from-Callback-Hell.elm http://elm-lang.org/learn/Escape-from-Callback-Hell.elm
- pohl 14y agoThank you for posting this link again. It has led me to an interesting paper on a related paper co-authored by Martin Odersky called "Deprecating the Observer Pattern with Scala.React" http://infoscience.epfl.ch/record/176887/files/DeprecatingObservers2012.pdf http://infoscience.epfl.ch/record/176887/files/DeprecatingOb... Interestingly, the farther I read into this paper, the more I think the Mozilla Rust community should get behind functional reactive programming. After all, an experimental language created with the intention of being used for creating an experimental browser should probably give serious consideration of the abstractions used for event handling. I also found a talk on FRP, for anyone who's curious: http://www.youtube.com/watch?v=4HMKNexdyOw http://www.youtube.com/watch?v=4HMKNexdyOw ...the slides for which are here: http://www.slideshare.net/edwardamsden/introduction-to-functional-reactive-programming http://www.slideshare.net/edwardamsden/introduction-to-funct...
- anonymousDan 14y agoApart from syntax, I fail to see how this code: getPhotos tags = let photoList = send (lift requestTag tags) in let photoSizes = send (lift requestOneFrom photoList) in lift sizesToPhoto photoSizes ...is any clearer than the equivalent callback code: function getPhoto(tag, handlerCallback) { asyncGet(requestTag(tag), function(photoList) { asyncGet(requestOneFrom(photoList), function(photoSizes) { handlerCallback(sizesToPhoto(photoSizes)); }); }); In particular, you still have to nest the elm signals in 'let ... in' blocks.