A URL shortener made literate
This is a quasi-literate version of the very simple URL shortener I wrote in Haskell with Scotty.
This is a quasi-literate version of the very simple URL shortener I wrote in Haskell with Scotty.
I answered a question on Stack Overflow that I thought might be worth sharing here so that others might get an idea of how to refactor code into point-free style.
I respin an article originally written in Scala into Haskell, then veer off into the stratosphere.
I rewrote somewhat difficult to understand templating code that was originally in Clojure into much simpler Haskell and yielded a large performance benefit for my trouble.
Written in Scotty. The code is not great.
The previous edition of this post was cleaned up by a suggestion from another Haskeller. I share it with you here.
Aeson is a real joy to use once you get into the swing of things, but there are some patterns out there that end-users are left to discover for themselves. One of those is how to deal with data that has a lot of instances of the Maybe
type.
This is an extraction of a conversation between multiple Haskellers in an IRC channel. I'm not identifying who said what and the ordering will be more topical than temporal. I'll add annotations for context as appropriate. I edited liberally.
Need to parse data with varying structure? Once again we resort to our old friend for handling exclusive possibilities, the sum type.
Sometimes one knows only part of the structure to be parsed out of JSON ahead of time, with some of that structure being defined by a user or consumer of the API. The solution to this in general and when using Aeson to make the wrapper type parametric.
A simple demonstration of extracting boilerplate from Aeson code handling a Just
and a Nothing
case of a Maybe
value.
Recently I had an experience where in the course of helping somebody with a problem, I developed an example that I thought would help people understand sum types, value constructors, and type constructors better.
In my last post, I described IO (IO ()) as being a sign you might've made a mistake unless you knew it was what you wanted. There are patterns which involve using a closed-over mutable reference for things like counters. This naturally leads to nested IO actions.
While playing around with querying ElasticSearch I bumped into something that I hadn't really understood explicitly before about monads, nesting, and IO. Rather than blather on, I'm going to share a "literate" ghci session that demonstrates the point. Main editing change I made was to remove duplication in the output from querying the type :t
in ghci.
A brief demonstration of how to run Clojure programs like scripts with leiningen
.
Using drip to run Clojure code like a script.
It's Valentine's Day 2013 and since January 2013 I've read the following books.
Getting the following error on Mac OS X? Read on.
I am a user of irssi over GNU Screen + ssh as well as locally, and I tend to use Emacs style text movements in bash, so need my ctrl and alt/option keys to work more or less as they do in Linux.