[Haskell-cafe] Issue 58 :: Haskell Weekly
Taylor Fausak
taylor at fausak.me
Thu Jun 8 13:55:07 UTC 2017
\ Haskell Weekly
\/\/ Issue 58
Welcome to another issue of Haskell Weekly! Haskell is a purely
functional programming language that focuses on robustness, concision,
and correctness. This is a weekly summary of what's going on in its
community.
- A Haskell cross compiler for iOS
<https://medium.com/@zw3rk/a-haskell-cross-compiler-for-ios-7cc009abe208>
So far we have built a Haskell cross compiler for Raspberry Pi, as
well as a Haskell cross compiler for Android. To round this off, we
will build a cross compiler for iOS as well. With the WWDC signaling
the end of 32-bit devices, we will only build the 64-bit cross
compiler.
- Event sourced aggregates in Haskell
<http://blog.akii.de/posts/2017-06-04-eventsourcing-in-haskell.html>
In this first post I'll be digging into event sourced aggregates in
Haskell. It basically means that instead of persisting some state like
"Johns account balance is $100", you keep track of the changes to
John's account: "First he deposited $125, then withdrew $25".
- The round-trip property
<http://teh.id.au/posts/2017/06/07/round-trip-property/index.html>
We know that parsers and printers are supposed to be dual. We can
simply treat this as a law, and write a property test to enforce it.
This is both the simplest useful property test I can think of for a
working engineer and the most likely to reliably identify bugs of
consequence.
- How well do you know your programming tools? Take the survey and test
your skills! (ad)
<http://vmob.me/DE3Q17Haskellweek>
"It is a good survey which, in addition to remembering what I already
knew, gave me new tools to learn about and work with." This is how
developers feel about the Developer Economics survey. The survey also
shows you how you compare to other developers in your country. Plus
you may win an iPhone 7 or a Pixel 32GB phone.
- Assume it worked and fix it later
<https://hackernoon.com/assume-it-worked-and-fix-later-8436d18b7ed3>
If your email service is down, it can be beneficial to have the signup
succeed regardless. By decoupling the success of an email request from
the success of account signup, you can improve the reliability of your
application.
- Flexible data with Aeson
<https://mmhaskell.com/blog/2017/6/5/flexible-data-with-aeson>
At a certain point, our Haskell programs have to be compatible with
other programs running on the web. This is especially useful given the
growing usage of micro-services as an architecture. Regardless, it's
very common to be transferring data between applications on different
stacks.
- Tagless final encoding of a test language
<https://wickstrom.tech/programming/2017/06/05/tagless-final-encoding-of-a-test-language.html>
I have experimented with a test language encoded in tagless final
style, instead of algebraic data types, to support the typed
combinators `beforeEach` and `beforeAll`. I want to share the Haskell
prototype I ended up with, and explain how I got there.
- Can't see the four-est for the trees
<http://www.gigamonkeys.com/trees/>
It's a fun puzzle so you may want to take a crack at it yourself
before reading on. But this isn't really about that puzzle. This is
about how sometimes when the mathematical insights aren't flowing it's
good to be a programmer.
- The Typeclassopedia is now up to date
<https://byorgey.wordpress.com/2017/06/07/the-typeclassopedia-is-now-up-to-date/>
The title pretty much says it all: I have finally finished (I hope)
updating the Typeclassopedia to reflect various recent changes to the
language and standard libraries (such as the AMP and BBP/FTP). Along
the way I also added more links to related reading as well as more
exercises.
- Continuations from the ground up
<http://blog.ielliott.io/continuations-from-the-ground-up/>
It's difficult to learn functional programming without hearing about
continuations. Often they're mentioned while talking about boosting
the performance of pure functional code, sometimes there's talk of
control flow, and occasionally with "time-travel" thrown in there to
make it all seem more obscure.
- How to send me a pull request
<https://www.snoyman.com/blog/2017/06/how-to-send-me-a-pull-request>
I find myself repeating a lot of the same comments in pull requests,
so I decided to put together a list of what I consider the most
important features of a good pull request. Other people will have
different feelings on some of these, but the points below are what
apply to my projects.
Package of the week
-------------------
This week's package of the week is Yesod, a web framework for productive
development of type-safe, RESTful, high performance web applications.
<https://www.stackage.org/package/yesod>
More information about the Haskell-Cafe
mailing list