Issue 49

Welcome to Haskell Weekly! Haskell is an advanced, purely functional programming language. This is a weekly summary of what’s going on in its community. You can subscribe to the email newsletter or the Atom feed.

Want to contribute to Haskell Weekly? Send us a message on Twitter or open an issue on GitHub.

News from the Haskell community

  • Announcing Haskell Tools

    The beta version of Haskell Tools is released! You can use Haskell Tools to refactor your Haskell code whether it is a set of Cabal packages with hundreds of source files, or just a single module. It has an Atom plugin that enables you to use it in a rich development environment.

  • Selling monads

    I think the code reuse justification is greatly undersold, and it’s been undersold to such an extent that many languages that adopt abstractions like monads often don’t do it in a way that allows for code reuse. Scala is an example of this, where many classes have a flatMap method, but this method is not implemented as part of any interface.

  • 2 + 2 = 5 and why compiler warnings are good

    It may seem really weird that you can just redefine a function like (+). What happens if you just do that accidentally? Isn’t Haskell a language that’s supposed to be all pure and safe?

  • A beginner friendly step by step tutorial for reflex-dom

    This is a beginner-friendly tutorial for reflex-dom. It shows how to write Haskell programs with a graphical user interface. It contains an introductionary text and examples in short bits.

  • Deploying Haskell on AWS Lambda

    AWS Lambda is capable of running any binary, as long as it’s statically linked and compiled for x86 Linux, but at the same time it doesn’t offer first-class support for Haskell, but it’s possible to spawn an external process via the Node.js API.

  • Beware of numeric type classes

    This blog post is to document some cases where unconstrained Num type definitons can seriously compromise type safety. None of what I say here is new but it is worth repeating. Take it as a note of warning against being zealous when defining instances of some standard type classes, in particular the Num class.

  • Compile driven learning

    In this article, I’ll share my approach to solving this learning problem. I refer to it as “Compile Driven Learning”. To learn a new library or system, you should start out by writing as little code as you can to make the code continue to compile. It is intricately related to the ideas of test driven development.

Package of the week

This week’s package of the week is Accelerate, an embedded language for accelerated array processing.

Send us a message on Twitter to nominate next week’s package!