Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/nomeata/ghc-justdoit

A magic typeclass that just does it
https://github.com/nomeata/ghc-justdoit

Last synced: 4 days ago
JSON representation

A magic typeclass that just does it

Awesome Lists containing this project

README

        

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