ghc-justdoit: A magic typeclass that just does it

[ language, library, mit ] [ Propose Tags ]

This plugin allows you to write

{-# OPTIONS_GHC -fplugin GHC.JustDoIt.Plugin #-}
module Test where

import GHC.JustDoIt

foo :: ((a -> r) -> r) -> (a -> ((b -> r) -> r)) -> ((b -> r) -> r)
foo = (…)

without having to write the actual implementation of foo.

See examples/Demo.hs for a few examples of what this plugin can do for you.

[Skip to Readme]
Versions 0.1
Change log
Dependencies base (==4.11.*), ghc (>=8.5), hashable [details]
License MIT
Copyright 2018 Joachim Breitner
Author Joachim Breitner
Category Language
Home page
Source repo head: git clone git://
Uploaded by JoachimBreitner at Fri Feb 2 20:13:44 UTC 2018
Distributions NixOS:0.1
Downloads 46 total (8 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
All reported builds failed as of 2018-02-02 [all 2 reports]
Hackage Matrix CI


  • GHC
    • GHC.JustDoIt
      • GHC.JustDoIt.Plugin
      • GHC.JustDoIt.Solver
    • GHC.LJT


Maintainer's Corner

For package maintainers and hackage trustees

Readme for ghc-justdoit-0.1

[back to package description]

ghc-justdoit: a GHC plugin to write the code for you

This is a prototype of a code synthesis plugin for GHC, which uses LJT proof search to instantiate a type.


{-# OPTIONS_GHC -fplugin=GHC.JustDoIt.Plugin #-}
module Test where

import GHC.JustDoIt

foo :: ((a -> r) -> r) -> (a -> ((b -> r) -> r)) -> ((b -> r) -> r)
foo = (…)

Missing bits

  • The LJT might not be complete, due to insufficient backtracking.
  • The implementation is very much unoptimized.
  • It returns one solution, but not necessary the “best” one. But what is the “best” one?
  • It ignores any recursive type, so it cannot do anything with lists. It would be much more useful if it could do some best-effort thing her as well.

If someone wants to pick it up from here, that’d be great!

Related work


Please reports bugs and missing features at the GitHub bugtracker. This is also where you can find the source code.

bSpokeLight was written by Joachim Breitner and is licensed under a permissive MIT license.