Issue 69
Welcome to another issue of Haskell Weekly! Haskell is a purely functional programming language that focuses on correctness, productivity, and expressiveness. This is a weekly summary of what’s going on in its community.
Want to see something featured in Haskell Weekly? We love contributions! Tweet us at @HaskellWeekly or open a pull request.
Featured
-
Weekly beginner Saturday: Ask anything #0
If you have a question or would like to help, then feel free to participate. Also, there are no stupid questions.
-
Abusing Haskell dependent types to make Redis queues safer
I don’t know about you, but quite frankly I’m tired of seeing the same tired vector example being used to demonstrate why dependent types are useful.
-
Although there many different types of tensor, the computations for each type of tensor are the same, i.e, they share the same interface. Since Backpack lets you program against one interface which can have multiple implementations, it is the perfect tool for implementing a tensor library.
-
Haskell is an awesome language, but we need to remember that it is not very useful in isolation. In almost any realistic application, Haskell has to coexist with other languages, even if only to call existing C libraries or to make use of operating system services.
-
Writing a ZX Spectrum game in Haskell
Haskell, the world’s finest imperative programming language, can now be used to write games for the ZX Spectrum, the world’s finest 80s microcomputer.
-
MonadFix
is a pretty difficult concept, and I personally found much of the existing content about it online to be somewhat unhelpful. I answered a request for an ELI5 ofMonadFix
on Reddit, and someone suggested I turn my answer into a blog post. -
Providing an API for extensible effects and monad transformers
Interacting with ListenBrainz requires some sort of IO so whatever API I will be offering has to live within some sort of monad. Currently, there are three major options. So, which do we choose? Evaluating the options, I have some concerns.
-
Functors, applicatives, and monads: You don’t need to know theory to use them
Figuring out how to use the common functional programming type classes is not as hard as you would think. The key here is not to start with understanding the category theory behind them, but rather first start with using their implementations in the standard datatypes.
-
fmap
can be implemented using theApplicative
methods, so everyApplicative
is a functor whether we like it or not; theFunctor
constraint forces us to be honest. -
Let’s quickly see how the (dual variant of the) Yoneda lemma can speed up some Haskell programs — more specifically ones that are repeatedly calling
fmap
to transform some data within aFunctor
.
Jobs
Sadly we aren’t currently aware of any Haskell job openings. Are you looking to hire a Haskell developer? If so, consider advertising with us!
In brief
- A follow up of the study of 4 money class designs: Why not having currencies as type parameters?
- A unified array interface
- Digging in deep: Solving a real problem with Haskell Tensor Flow
- Ghcid and VS Code
- Lock-step simulation is child’s play
- Reflecting on 5 years of Haskell in production
- Rolling your own block chain in Haskell
- Traversing syntax trees
- Understanding asymmetric numeral systems
- Unifying OS installation and configuration management
- Where are the simple “Let’s build ___ with Haskell” posts?
- Why I’m excited about Scalaz 8
- Writing performant Haskell (6 of 6): Closing
Package of the week
This week’s package of the week is reflex-sdl2, a minimal host for SDL2-based Reflex apps.
Call for participation
- haskell-src-exts: Support DerivingStrategies
- Idris-dev: Idris exits when parsing malformed code file
- stack: Listing flags in stack.yaml gives “Invalid flag specification”
Events
- September 3 - September 9: Oxford, United Kingdom: International Conference on Functional Programming
- September 6: Berlin Haskell Programming From First Principles Study Group