<story><title>Spreadsheet-like programming in Haskell</title><url>http://www.haskellforall.com/2014/06/spreadsheet-like-programming-in-haskell.html</url></story><parent_chain></parent_chain><comment><author>thinkpad20</author><text>The article claims to be about the power of Applicative (and&amp;#x2F;or spreadsheets?), but I&amp;#x27;ve been writing Haskell for about a year and am comfortable with all of the canonical Haskell abstractions including `Applicative`, and this made basically zero sense to me. Beyond familiarity with Applicative, the author also assumes the reader has facility with Controller, Fold, Managed, View, the Pipes library, Lens, and a host of functions I had never seen, such as last (not the Prelude version), stdinLines, tick, and runMVC. Assuming this, he throws out the definition of Updatable on top of that like it makes perfect sense (&amp;quot;just a Fold sitting in front of a Managed Controller&amp;quot;. Oh, well then.). Basically, two or three paragraphs in and I am already completely lost. I don&amp;#x27;t even know what problem it is we&amp;#x27;re trying to solve, and I have no idea what it has to do at all with spreadsheets.&lt;p&gt;This is one of the downsides of Haskell; with so much emphasis on abstraction, code often ends up being just that: so damn abstract that it&amp;#x27;s practically inscrutable except to the very few who are familiar with what&amp;#x27;s going on. I guess this article was written for an audience with very broad and detailed knowledge of some complicated Haskell libraries -- meaning it&amp;#x27;s not so important that anyone else be able to make head or tails out of what he&amp;#x27;s talking about. Which is ok, but it does add to the impression that Haskell is an exclusive club.&lt;p&gt;Also, this part sticks out as confusing: The type signature of `example` does not include IO (unless Updatable has IO on under the hood), and yet the language above suggests that it will change, i.e. that it is mutable:&lt;p&gt;&amp;gt; example will update every time lastLine or seconds updates, caching and reusing portions that do not update. For example, if lastLine updates then only the first field of Example will change. Similarly, if seconds updates then only the second field of Example will change.&lt;p&gt;Can someone clear this up for me?</text></comment>
<story><title>Spreadsheet-like programming in Haskell</title><url>http://www.haskellforall.com/2014/06/spreadsheet-like-programming-in-haskell.html</url></story><parent_chain></parent_chain><comment><author>gcv</author><text>I wrote something similar for Clojure: &lt;a href=&quot;https://github.com/gcv/dgraph&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;gcv&amp;#x2F;dgraph&lt;/a&gt;</text></comment>