hpio: Monads for GPIO in Haskell

[ bsd3, library, system ] [ Propose Tags ]

This package provides an embedded DSL for writing cross-platform GPIO programs in Haskell. Currently only Linux is supported (via the sysfs filesystem), but other Unix GPIO platforms will be supported in the future.

Monads and low-level actions are also provided for each supported platform's native GPIO API, if you want to program directly to the platform API.

Example programs are provided in the examples directory of the source code distribution. There is also a System.GPIO.Tutorial module, which explains how to use the cross-platform DSL.

[Skip to Readme]


Manual Flags


Build the example programs


Enable Linux BeagleBone-specific tests. Disabled by default. See testSystemGPIOLinuxSysfs/BeagleBoneSpec.hs for requirements. Run with "cabal test -flinux-bbone-tests".


Build doctests


Build hlint test


Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info


Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


Versions [RSS],,,,,,,,,,,,,,,,,
Change log changelog.md
Dependencies async (>=2.0.2 && <2.3), base (>=4.7.0 && <5), bytestring (>=0.10.4 && <0.11), containers (>=0.5.5 && <0.7), directory (>=1.2.1 && <1.4), exceptions (>=0.8.0 && <1), fail (>=4.9 && <4.10), filepath (>=1.3.0 && <1.5), hpio, monad-control (>=1 && <2), monad-logger (>=0.3 && <0.4), mtl (>=2.1.3 && <2.3), optparse-applicative (>=0.11.0 && <0.15), protolude (>=0.2 && <0.3), QuickCheck (>=2.7.6 && <2.13), semigroups (>=0.18 && <0.19), text (>=1.2.0 && <1.3), transformers (>=0.3.0 && <0.6), transformers-base (>=0.4 && <0.5), unix (>=2.7.0 && <2.8), unix-bytestring (>=0.3.7 && <0.4) [details]
License BSD-3-Clause
Copyright Copyright (c) 2018, Drew Hess
Author Drew Hess <src@drewhess.com>
Maintainer Drew Hess <src@drewhess.com>
Category System
Home page https://github.com/dhess/hpio#readme
Bug tracker https://github.com/dhess/hpio/issues
Source repo head: git clone https://github.com/dhess/hpio
Uploaded by dhess at 2019-01-04T21:32:42Z
Reverse Dependencies 1 direct, 0 indirect [details]
Executables hpio-sysfs-example, hpio-reader-example, hpio-example
Downloads 11019 total (29 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]

Readme for hpio-

[back to package description]


hpio provides support for writing GPIO programs in Haskell. It includes an embedded DSL for writing platform-independent programs, along with low-level monads and IO functions which provide direct access to each supported platform's native GPIO API.

Currently only the Linux sysfs GPIO filesystem is supported, but support for other Unix GPIO platforms is planned.

For details on usage, see the included tutorial module, or the examples directory in the source distribution.

Travis CI build status