Convert between pointfree and pointful expressions.

Latest on Hackage:1.0.2

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow to host generated Haddocks.

MIT licensed
Maintained by Taylor Fausak


Blunt converts between pointfree and pointful Haskell expressions.

Version Dependencies

Blunt is a web front end to the pointfree and pointful libraries. While you can install and run it locally, there's no real reason to prefer it over the pointfree and pointful executables. Instead, use the hosted version:


$ cabal update
$ cabal install 'blunt ==1.*'


$ blunt
# http://localhost:8080

$ env PORT=8888 blunt
# http://localhost:8888


$ git clone
$ cd blunt

$ cabal sandbox init
$ cabal install happy
$ cabal install --only-dependencies
$ cabal run
# http://localhost:8080


# Create a new app on Heroku using the Haskell on Heroku buildpack.
$ heroku apps:create --buildpack

# Let Halcyon know that we need happy installed.
$ heroku config:set HALCYON_SANDBOX_EXTRA_APPS='happy'

# Configure AWS S3.
$ heroku config:set HALCYON_AWS_ACCESS_KEY_ID='...'
$ heroku config:set HALCYON_AWS_SECRET_ACCESS_KEY='...'
$ heroku config:set HALCYON_S3_BUCKET='...'

# Push the code up to Heroku. Note that this build is expected to fail.
$ git push heroku master

# Build the app on a PX dyno.
$ heroku run --size PX build

# Force Heroku to rebuild the app using the cache built in the last step.
$ git commit --amend --no-edit
$ git push --force heroku master

# Scale up a web dyno to serve requests.
$ heroku ps:scale web=1


Change log

v1.0.2 (2015-04-14)

  • Remove potentially confusing syntax in Cabal file.
  • Added version constraints for faster deploys.

v1.0.1 (2015-04-14)

  • Fixed HTML entities.
  • Improved SEO.

v1.0.0 (2015-04-11)

  • Removed input from WebSocket response.

v0.0.17 (2015-04-11)

  • Added dependency on Hackage version of pointfree package.

v0.0.16 (2015-04-03)

  • Fixed a bug that incorrectly decoded inputs from the URL.
  • Added some explanatory text, ostensibly for SEO.
  • Added a ping to the WebSocket client to keep the connection open.

v0.0.15 (2015-03-29)

  • Switch to converting expressions over WebSockets.
  • Removed the /convert endpoint.

v0.0.14 (2015-03-27)

  • Added request logging.
  • Added gzip compression.
  • Removed trailing semicolons from pointful output.

v0.0.13 (2015-03-25)

  • Switched from deploying a binary to using Haskell on Heroku.
  • Converted HTML to Lucid.
  • Converted CSS to Clay.
  • Converted JS to JMacro.

v0.0.12 (2015-03-25)

  • Combined /pointfree and /pointful endpoints into /convert.

v0.0.11 (2015-03-23)

  • Added permalinks by storing the input in the URL hash and reading it on page load.
  • Added dependency on Hackage version of pointful package.

v0.0.10 (2015-03-23)

  • Added a pointful conversion of the expression as well.

v0.0.9 (2015-03-20)

  • Updated to list all intermediate steps instead of only the final result.
  • Optimized text input for mobile devices.

v0.0.8 (2015-03-20)

  • Created a simple stylesheet.

v0.0.7 (2015-03-19)

  • Fixed link in Hackage documentation.

v0.0.6 (2015-03-19)

  • Switch from Bitbucket to GitHub.

v0.0.5 (2015-03-19)

  • Constrained versions of pointfree dependencies.

v0.0.4 (2015-03-19)

  • Allow setting the port with the PORT environment variable.
  • Took HTML out of its separate file.

v0.0.3 (2015-03-19)

  • Prevent pointfree' from throwing errors during a request.

v0.0.2 (2015-03-18)

  • Added a rudimentary user interface.
  • Moved HTML into a separate file.

v0.0.1 (2015-03-18)

  • Initially released.

v0.0.0 (2015-03-17)

  • Initially created.
comments powered byDisqus