/TapTempo

Primary LanguageHaskellMIT LicenseMIT

TapTempo: Haskell Version

Haskell implementation of https://github.com/moleculext/taptempo. It started as a joke on LinuxFR where everybody implements its own TapTempo using its favorite language.

What is it?

Run it, press the <Enter> key, and see the beat per minute.

Build / Usage / Install

  • Build using nix:
$ nix-build
$ ./result/bin/TapTempo --help
$ ./result/bin/TapTempo 
  • Run a nix shell + cabal:
$ nix-shell
$ cabal run
  • Build using stack: install a recent version of stack, then
$ stack setup
$ stack build
$ stack exec TapTempo

Limitations

The current localisation includes English and French, however some items are not correctly localised:

  • Most content generated by optparse-applicative, such as "Usage", "Available options", "Default" in help menu
  • Error messages from refined

Funny programmer things

  • Using optparse-applicative and refined, the command line interface cannot accept an invalid input. The Config type, representing runtime configuration of the application, is full of refined types.
  • I had never localised an application before, and found Text.Shakespeare.I18N. It's doing the job really well.
  • The --version command line flags gives a version number using git describe, computed at compile time using template haskell. This is overkill and fun.