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. Synopsis -------- {-# 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 here as well. * It ignores linear types, and will likely produce ill-typed expressions for them. If someone wants to pick it up from here, that’d be great! Related work ------------ * [Djinn](http://hackage.haskell.org/package/djinn) and [djinn-ghc](http://hackage.haskell.org/package/djinn-ghc) * [exference](http://hackage.haskell.org/package/exference) * [curryhoward](https://github.com/Chymyst/curryhoward) for Scala * [hezarfen](https://github.com/joom/hezarfen) for Idris Contact ------- Please reports bugs and missing features at the [GitHub bugtracker]. This is also where you can find the [source code]. `ghc-justdoit` was written by [Joachim Breitner] and is licensed under a permissive MIT [license]. [GitHub bugtracker]: https://github.com/nomeata/ghc-justdoit/issues [source code]: https://github.com/nomeata/ghc-justdoit [Joachim Breitner]: http://www.joachim-breitner.de/ [license]: https://github.com/nomeata/ghc-justdoit/blob/LICENSE