I got hold of a
BeagleBone
Black a few weeks ago (courtesy of Tom Nielsen, who'd had it for a
while, but had no time to play with it). This is a small (credit card
sized) Linux machine with an ARM processor, intended for, well, pretty
much anything you can use a little computer for. It has 512 Mb of RAM,
plus 2 Gb of flash storage, so it's not a completely trivial machine.
Obviously, to do anything really significant with it requires some
hardware work (there are lots of general purpose I/O pins to play
with, plus UARTs, Ethernet, USB, SPI, a couple of analogue-to-digital
converters, PWM drivers for motor control, and even HDMI video
output!), but there are a few LEDs on the board itself that lend
themselves to a blinkenlights demo...
The BeagleBone comes with some built-in software to let people write
code quickly, using JavaScript of all things. There's also a bit of
documentation about programming the thing in C. But (of course) I
wanted Haskell blinkenlights!
So, the goal was to write a little bit of code to count in binary on
the four user-addressable LEDs on the board, first in Javascript, then
in C, then (somehow) in Haskell.