kazu-yamamoto/ghc-mod — pull request #274 by serras (2014-06-27 17:14:30+00:00)
Title: Implement case splitting and initial code generation

This patch implements two features in ghc-mod and its Emacs mode. The first is **initial code generation** (`C-c C-s` in Emacs), which given a type signature or an instance declaration, will generate some placeholder code for it. For example, if you have:
```
func :: [a] -> Maybe b -> (a -> b) -> (a,b)
```
It will generate:
```
func x y z f = _func_body
```

The second is **case splitting** (`C-c C-p` in Emacs), which generates the code from replacing a variable in a function pattern by their constructors. For example, if you have:
```
f :: [a] -> a
f x = _body
```
it will replaced it by:
```
f :: [a] -> a
f [] = _body
f (x:xs) = _body
```

This work is part of the Google Summer of Code project *Agda-like Interaction Mode for Emacs* https://www.google-melange.com/gsoc/project/details/google/gsoc2014/serras/5651442522128384