
New Releases 99 Haskell: A web service by Bram Hoskin Solve live Haskell coding problems based on H-99 in the browser to strengthen your understanding of the language. http://www.99haskell.org/ https://github.com/bramgg/99haskell/ Magic Cookies A commercial Android game is released that is written in Haskell using SDL2 for multimedia and the Arrowized Functional Reactive Programming DSL Yampa. The authors had to "escape their functional comfort zones and come up with smarter abstractions that mutable reality and performance demand". The game consists of 2K lines of code, of which 1K is game specific and 400 are Yampa code. The most complex parts were certain Yampa constructs (arrow-based, with lots of tupling/untupling). http://keera.co.uk/blog/2015/03/19/magic-cookies-released-google-play/ https://play.google.com/store/apps/details?id=uk.co.keera.games.magiccookies https://github.com/keera-studios/keera-hails https://github.com/ivanperez-keera/Yampa Discussion Finding a GHC bug by Neil Mitchell A write up of the hunt for bug #10176 http://neilmitchell.blogspot.it/2015/03/finding-ghc-bug.html https://ghc.haskell.org/trac/ghc/ticket/10176 What are your most persuasive examples of using Quickcheck? Quickcheck helped many people in a number of areas — compiler optimisations, date/time validation, regular expressions, encoding/decoding, topological sort, fuzzing HTTP APIs and even exhibiting classical voting paradox! Apart from the obvious benefit of helping to find big juicy bugs as well as valid but potentially harmless tiny bugs in edge cases that no-one cares about, Quickcheck can help attain enlightenment in the sense that spelling out Quickcheck properties in itself can be rewarding because this can reveal assumptions that have been made without realizing it. Roman Cheplyaka reminds us about SmallCheck and that it should be used instead of Quickcheck when one has a good idea about what depth is needed and when exhaustive search at that depth is affordable. https://www.reddit.com/r/haskell/comments/308ps6/what_are_your_most_persuasi... http://stackoverflow.com/questions/20092191/how-much-should-one-control-the-... What is the difference between free monads and free monoids? A comment by Edward Kmett. https://www.reddit.com/r/haskell/comments/2znhjk/what_is_the_difference_betw... Type-Checked Pseudo-Code Tom Ashworth argues that Haskell is an excellent tool for fleshing out ideas and prototyping solutions, and that it makes one generalize and shake out many conceptual bugs before concepts become code. https://phuu.net/2015/03/24/type-checked-pseudo-code.html Where does GHC spend most of it's time during compilation? Optimisation and codegen, it seems. Also, GHC compilation times went up substantially from version 7.6 to 7.8. https://www.reddit.com/r/haskell/comments/309430/where_does_ghc_spend_most_o... Quotes of the Week "Haskell doesn't feel like code. It feels like a language for thinking in: it's expressive, terse and simple, especially as type-checked pseudo-code." (Tom Ashworth) https://phuu.net/2015/03/24/type-checked-pseudo-code.html "Well that's not in the spec. If you want to change the requirements you have to renegotiate the contract =P" (sccrstud92) https://www.reddit.com/r/haskell/comments/2zxekg/while_learning_haskell_i_ma... "Unit tests are double entry bookkeeping" (EvanDaniel) https://www.reddit.com/r/haskell/comments/308ps6/what_are_your_most_persuasi... augustss> "Well, type checking is worst case exponential…" barsoap> "Yep. That's also the reason why I don't really get the insistence of dependently-typed languages to have to be total at the type level: I don't care whether type-checking takes ten or infinitely many years, both figures are too large." https://www.reddit.com/r/haskell/comments/309430/where_does_ghc_spend_most_o... "Our prophet Djistra said that a testing shows the presence, not the absence of bugs … <snip> … Today Djistra would have been stoned under a myriad of inutile unit tests that people perform for a sense of false security, in a sort of superstitious sacrificial ritual, a waste of time to convince himself and others that his software is right." (agocorona) https://www.reddit.com/r/haskell/comments/308ps6/what_are_your_most_persuasi... "You might also consider these sorts of infelicities as teachable moments" (ericpashman) https://www.reddit.com/r/haskell/comments/2zxekg/while_learning_haskell_i_ma... "Nice gradual progression there. Big O notion, smoothly divided into 3 easy parts, then bam, Coyoneda. =) I approve. [Yes, I realize it is a bag of topics, not a course outline, but it still grabbed me.]" (edwardkmett) https://www.reddit.com/r/haskell/comments/2zqyes/we_released_a_video_library...

Talks How to Sell Excellence by Michael Church Slides for presentation given at Chicago Haskell Meetup. Author urges us not to write arbitrary code as reasoning about arbitrary code is mathematically impossible, argues that code quality is determined by what people do and not by what language enables (which puts functional programming and Haskell at the top), links code entropy to deadline culture (a.k.a. "Agile"), explains why we suck at selling functional programming and has a decent go at selling Haskell himself. https://docs.google.com/presentation/d/1a4GvI0dbL8sfAlnTUwVxhq4_j-QiDlz02_t0XZJXnzY/preview?sle=true&slide=id.p http://www.reddit.com/r/haskell/comments/31awxs/how_to_sell_excellence/ https://lobste.rs/s/9oq7ra/how_to_sell_excellence http://www.quora.com/Why-do-some-developers-at-strong-companies-like-Google-... Reflex: Practical Functional Reactive Programming FRP talk and an awesome FRP demo. https://www.youtube.com/watch?v=mYvkcskJbc4 https://www.youtube.com/watch?v=3qfc9XFVo2c https://obsidian.systems/reflex-nyhug Discussion Necessity/utility of dependent types? A comprehensive response by tel with explanations of how to expose invariants at type level and how to relate invariants of two types. http://www.reddit.com/r/haskell/comments/31lru4/necessityutility_of_dependen... How is the error function implemented in Haskell? A comprehensive reply by Tikhon Jelvis. "Semantically, error results in ⊥ ("bottom") just like an infinite loop, it just happens to be better-behaved in a practical sense and easier to debug." https://www.quora.com/How-is-the-error-function-implemented-in-Haskell Why are we naming types instead of instances when we have multiple instances per type? "Type classes only work really well when they are coherent, so there can only be one per type." (bss03) http://www.reddit.com/r/haskell/comments/31zagw/why_are_we_naming_types_inst... http://blog.ezyang.com/2014/07/type-classes-confluence-coherence-global-uniq... Quotes of the Week "The best way to move Haskell forward is to build something important like opaleye, wreq, haskellonheroku, pipes, cloud haskell or yesod and then sell that instead; write some amazing documentation and tell as many people as you can... And then probably try very, very hard to get a job at one of these newfangled startups that use Haskell :)" (rehno-lindeque) http://www.reddit.com/r/haskell/comments/31awxs/how_to_sell_excellence/cq0az... "The reason Haskell is great is because its systematic faithfulness to mathematical abstractions, and as soon as you start talking about math, the masses leave the room." (dnkndnts) http://www.reddit.com/r/haskell/comments/31awxs/how_to_sell_excellence/cpzwl... "productivity is impossible to measure (the idea that it can be measured brought us that "Agile"/Scrum shit that I hate more than the worst-designed programming language)" (michaelochurch) http://www.reddit.com/r/haskell/comments/31awxs/how_to_sell_excellence/cq0jh... "why doesn't anyone ever explain that natural transformations make a tent shape?" (chrisamaphone) https://twitter.com/chrisamaphone/status/585499255772676097 "Haskell is _fast as hell_." (Michael O. Church) "Haskell crushes imprecision of thought." (Michael O. Church) "Clojure is beautiful. Python is easy to learn. These are fine languages! But they lack a feature (compile-time typing) that I'd demand if I were building out a 5000+ LoC project … Haskell isn't the only functional programming language. … but Haskell is the only major language whose type system can verify the lack of side effects." (Michael O. Church) https://docs.google.com/presentation/d/1a4GvI0dbL8sfAlnTUwVxhq4_j-QiDlz02_t0XZJXnzY/preview?sle=true&slide=id.p "Monads are just burritos, man. Burritos ain't scary. http://chrisdone.com/posts/monads-are-burritos" (kyllo) http://www.reddit.com/r/haskell/comments/31awxs/how_to_sell_excellence/cq0jv... "Coq has no backdoors as far as I'm aware. In fact, I don't believe it has any doors at all." (tactics) http://www.reddit.com/r/haskell/comments/31awxs/how_to_sell_excellence/cq0f5... "haskell is like pizza. Even when it's bad it's still good." (deech) https://twitter.com/deech/status/583087866248454144

New Releases darcs 2.10.0 New version of darcs is out packed with features and resolved issues. http://lists.osuosl.org/pipermail/darcs-users/2015-April/027119.html Stackage CLI This new tool helps to manage cabal files and share sandboxes. https://www.fpcomplete.com/blog/2015/04/announcing-stackage-cli Diagrams 1.3 Diagrams has switched from vector-space to linear for its linear algebra package, the internal representation of Measure has changed, a new Direction type has been added as well as a number of new transform isomorphisms (transformed, translated, movedTo, movedFrom and rotated) and new features, and two new backends — PGF and HTML5. http://projects.haskell.org/diagrams/ https://wiki.haskell.org/Diagrams/Dev/Migrate1.3 Discussion Improving Hackage security by Duncan Coutts A TUF-based system is being designed and implemented that will significantly improve Hackage security. http://www.well-typed.com/blog/2015/04/improving-hackage-security/ http://theupdateframework.com/ Cartesian Closed Comic #26: IDE Should Haskell have an IDE (and if yes should it be web-based), or does it already have one? http://www.reddit.com/r/haskell/comments/334x2v/cartesian_closed_comic_26_id... https://ro-che.info/ccc/26 Two "camps" of Haskell programmers A comment by Tekmo. http://www.reddit.com/r/haskell/comments/33chyv/from_imperative_to_functiona... What databases are most Haskellers using? It seems that PostgreSQL with persistent or postgresql-simple, and esqueleto for more complex queries. http://www.reddit.com/r/haskell/comments/33k8zx/what_databases_are_most_hask... https://hackage.haskell.org/package/persistent http://hackage.haskell.org/package/esqueleto https://hackage.haskell.org/package/postgresql-simple Podcasts Episode 4: Stephanie Weirich on Zombie and Dependent Haskell "Zombie is a different kind of dependently typed language, eschewing automatic β-reduction in the type checker for an approach based on explicit equality rewriting, which enables new ways of combining proofs and programs, as well as new forms of proof automation. Meanwhile, as languages designed for dependently typed programming come closer to practical applicability, Haskell is also moving towards full dependent types." http://typetheorypodcast.com/2015/04/episode-4-stephanie-weirich-on-zombie-a... Quotes of the Week "My children are in IT, two of them – both graduated from MIT. One of them browsed a book and said, “Here, read this”. It said “Haskell – learn you a Haskell for great good”, and one day that will be my retirement reading." (Lee Hsien Loong) http://www.pmo.gov.sg/mediacentre/transcript-speech-prime-minister-lee-hsien... "Of course if darcs got the best of git, it's probably better than git now ;-)" (maxigit) http://www.reddit.com/r/haskell/comments/33646i/darcs_210_is_here_rebase_imp... "Yes changesets and snaphosts are isomorphic, therefore being based on changesets can't be a selling point. (maxigit) But it can, because the tooling evolves around the philosophy shaped by the underlying structure. Can you get branches for free in git? Sure. Do you? Nope." (kqr) http://www.reddit.com/r/haskell/comments/33646i/darcs_210_is_here_rebase_imp... "Leksah, Eclipse FP and various newer attempts are so ignored by everyone that they are not even in this Comic." (hamishmack) http://www.reddit.com/r/haskell/comments/334x2v/cartesian_closed_comic_26_id... "I don't actually want an IDE, but if I did, I'd want one that was free as in freedom, not free as in freemium." (get-your-shinebox) http://www.reddit.com/r/haskell/comments/334x2v/cartesian_closed_comic_26_id... "[Type-level reasoning] is more powerful but entails a hard dependency on a computer. Equational reasoning using abstract algebra is more "portable"; you can easily do it in your head or with pencil and paper." (Tekmo) http://www.reddit.com/r/haskell/comments/334x2v/cartesian_closed_comic_26_id... "… without strong typing or the sequestering of side effects that Haskell allows you, I felt really lost and confused as to why the hell anyone created a language that wasn't Haskell." (scientia_est_ars) http://www.reddit.com/r/haskell/comments/33chyv/from_imperative_to_functiona... "More polymorphism generally restricts the implementation, allowing us to better predict it's behavior. It's a trade-off, like most programming decisions." (bss03) http://www.reddit.com/r/haskell/comments/33chyv/from_imperative_to_functiona... "(cons cat (cons cat nil))" (Dmitry Ignatiev) https://twitter.com/lvsn/status/533685461957349376

Calls for Participation School of Haskell 2.0 Open-source version of School of Haskell is going to be released soon! Michael Sloan explains that the aim is to remove any obstacles that historically discouraged people from contributing to School of Haskell through making it open-source, Creative-Commons-licensed and GitHub-hosted and more usable by allowing websites to include editable and runnable Haskell code with ease. He outlines the plans for the editor and markdown rendering services and asks for feedback and more ideas. https://www.fpcomplete.com/blog/2015/05/school-of-haskell-2 http://www.reddit.com/r/haskell/comments/34uc8y/school_of_haskell_20/ Talks Functional Programming @ Amplidata Koen De Keyser gave a talk about Amplidata and their introduction of OCaml as an alternative to Python/C++ in 2010 and transition from OCaml to Haskell in 2014. He argues that going strongly-typed and functional meant moving bugs from test/run time to compile time, gaining expressiveness and reducing boiler-plate, and switching to Haskell meant joining larger community, gaining access to commercial support, adding multi-threaded runtime / garbage collector and enforcing separation of side effects from pure functions (though ramp-up time was significant and "tools are nowhere near Java / .NET / C++ level"). http://people.cs.kuleuven.be/~tom.schrijvers/Research/talks/lhug4b.pdf Discussion People using Haskell in production: what is your build/deployment setup? Jameshfisher asks a number of build/deployment questions on Reddit, as he is starting a "real" Haskell project. Community responses suggest that deploying Haskell is no different from deploying anything else. Haskell-specific parts frequently feature Cabal, Stackage and Shake. http://www.reddit.com/r/haskell/comments/34m4bq/people_using_haskell_in_prod... How to Replace Failure by a Heap of Successes Edward Kmett writes a blog post on writing parsing combinators. He explains gains and losses of switching from State monad to Update monad in parsers, and argues that limited structure of updates can be exploited to yield a more efficient Applicative for parsing and help unclutter parser implementation through better handling of the issue of parse leftovers. https://www.fpcomplete.com/user/edwardk/heap-of-successes http://www.reddit.com/r/haskell/comments/34kouv/edward_kmett_how_to_replace_... Smarter validation Roman Cheplyaka explores different ways of handling and communicating errors in Haskell — Either Monad, Validation Applicative, and SmartValidation Applicative. Either halts on first error, Validation Applicative reports all errors, whereas SmartValidation applicative reports first N errors and stops doing work when N errors were gathered. Roman wants to hear how other people are approaching "first N errors" problem. https://ro-che.info/articles/2015-05-02-smarter-validation Haskell Web Server in a 5MB Docker Image Tim Dysinger solves the problem of redirection of all Amazon Elastic Load Balancer HTTP traffic to HTTPS in Haskell, in one hour and 97 lines of code, and produces a 1.22 MB exe. He argues that Haskell's performance can compete with natively compiled systems languages like Go, Rust and even hand-written C, and that Haskell allows to communicate intent in code with precision. https://www.fpcomplete.com/blog/2015/05/haskell-web-server-in-5mb https://github.com/fpco/rdr2tls Quotes of the Week "I like safePerformIO = Just . don't" (sinelaw) http://www.reddit.com/r/haskell/comments/34kl93/just_stumbled_on_to_the_acme... "Interactive Haddocks sounds like a dream." (NihilistDandy) http://www.reddit.com/r/haskell/comments/34uc8y/school_of_haskell_20/cqy8sau "Being able to have runnable code on standalone blogs is huge!" (roche) http://www.reddit.com/r/haskell/comments/34uc8y/school_of_haskell_20/cqyab7z "If you want to have a type system related heart attack, the acme-stringly-typed library provides it." (tsahyt) http://www.reddit.com/r/haskell/comments/34kl93/just_stumbled_on_to_the_acme... https://hackage.haskell.org/package/acme-stringly-typed

New Releases inline-c Francesco Mazzoli and Mathieu Boespflug release a library that allows to freely mix Haskell and C in the same source file and pass data from one language to the other with minimal overhead. http://hackage.haskell.org/package/inline-c https://github.com/fpco/inline-c/ https://www.fpcomplete.com/blog/2015/05/inline-c Books The Little Prover by Daniel P. Friedman and Carl Eastlund This book will come out in July 2015 and teaches how to use inductive proofs to determine facts about computer programs. http://mitpress.mit.edu/books/little-prover Haskell Programming by Christopher Allen and Julie Moronuki Half of the book is written and is available for early access. http://haskellbook.com/ https://gumroad.com/l/haskellbook?getthebook=Get+Haskell+Programming+now+fro... https://news.ycombinator.com/item?id=9580746 http://haskellbook.com/images/sample_pdf_v1.pdf Talks Workshop on Type Inference and Automated Proving Videos and slides are now available. http://staff.computing.dundee.ac.uk/frantisekfarka/tiap/ Discussion Against the definition of types Tomas Petricek argues that definition of what is a type does not exist and we should look for innovative ways of working with types without formal definition. http://tomasp.net/blog/2015/against-types/ http://www.reddit.com/r/haskell/comments/35zzvu/against_the_definition_of_ty... Effects encoded in types break encapsulation Yuras Shumovich notes that being too fine-grained in specification of side effects is in some ways equivalent to leaking implementation detail. http://blog.haskell-exists.com/yuras/posts/effects-encoded-in-types-break-en... http://www.reddit.com/r/haskell/comments/36agmf/effects_encoded_in_types_bre... Quotes of the Week klaxion> "… My impression is that haskellers tend to be seen as head-in-the-clouds-impractical, purists to the point of fanaticism, and annoyingly prone to proselytizing. I'd like to change that and honestly I haven't met anyone who fits that (then again, I've yet to meet another haskeller IRL). Maybe this is a holdover from the earlier days when Haskell was a very marginalized community." kqr> "I wouldn't be too hopeful. Despite the fact that I'm one of the most practical, pragmatic members of one little social group I belong to (and this is clearly obvious quite often when others get into arguments over insignificant things) I'm still seen as a puristic, impractical hipster because I like Haskell. :( They don't seem to understand that a desire for good type systems and immutability come from a practical perspective. They equate things like Node.js with productivity and practicality. It's hard to change that image as long as that is the case." http://www.reddit.com/r/haskell/comments/36j3au/how_haskellers_are_seen_and_... "Everyone knows that the awesome Iron Man suit is actually dependent types." (psygnisfive) http://www.reddit.com/r/haskell/comments/36j3au/how_haskellers_are_seen_and_... "The haskell applicative, alternative, monoidal and monadic combinators when applied to a monad that manage asynchronous IO permits multithreaded programming with little plumbing that is close to the specification level with great composability. No inversion of control means no need to deconstruct the specifications and no state machines. This, together with the uniform and composable thread management, narrow the design space and makes the application more understandable from the requirements, and thus the technical documentation and maintenance costs are reduced to a minimum." (Alberto Gómez Corona) "OOP is like creating custom hardware everytime for every problem. since there is no composability, everything must be done from scratch. there are no reusable objects beyond basic containers encapsulated in objects." (Alberto Gómez Corona) https://www.fpcomplete.com/user/agocorona/EDSL-for-hard-working-IT-programme... http://haskell.1045720.n5.nabble.com/NoOO-languages-td5809663.html "if it's abstract (say, map) then x is as informative as element: a thing you know nothing further about" (cameleon) http://www.reddit.com/r/haskell/comments/36j3au/how_haskellers_are_seen_and_... "Add `terror`, a Text version of `error`" (Jonathan Lange) https://github.com/jml/basic-prelude/commit/11e936d6484ddbe9d403d40aa2bfbd35... "If you take away my laziness, your language better bloody well be total and have a good accounting of codata." (kamatsu) http://www.reddit.com/r/haskell/comments/36s0ii/how_do_we_all_feel_about_laz... "Turing completeness is entirely compatible with totality. It is only bullshit completeness that totality excludes." (pigworker) http://www.reddit.com/r/haskell/comments/36s0ii/how_do_we_all_feel_about_laz... "The best way to encapsulate effects is not to restrict them." (Yuras Shumovich) http://blog.haskell-exists.com/yuras/posts/effects-encoded-in-types-break-en... "I wouldn't use Haskell if I felt bad about laziness. It'd be like eating an apple pie while complaining that it contains apples..." (hagda) http://www.reddit.com/r/haskell/comments/36s0ii/how_do_we_all_feel_about_laz... "Lazy evaluation gives the compiler more leverage in the optimiser than in a strict language. There are more equalities that apply (e.g. beta reduction, and let x = E in y ==> y, if y /= x) and therefore the compiler can do more code transformations." (simonmar) http://www.reddit.com/r/haskell/comments/36s0ii/how_do_we_all_feel_about_laz... "Seeing arguments from both sides, it's obvious to me that laziness-by-default is not better or worse than strictness-by-default; it's just a matter of taste and thinking habits. You can't please everyone: some people like looking at code more equationally and mathy, while some like it more down-to-earthy and predictable. … The bottom line, however, is that, as SPJ said, laziness was good for Haskell because it helped them keep it pure." (SkoomaMudcrab) http://www.reddit.com/r/haskell/comments/36s0ii/how_do_we_all_feel_about_laz...
participants (1)
-
Semen Trygubenko / Семен Тригубен ко