This is a change from the current External Core implementation, where {{{HsSyn}}} is used to represent types from External Core files and {{{IfaceSyn}}} is used for terms. In the new implementation, {{{IfaceSyn}}} is used for both.

18

19

== Goals and questions ==

20

21

* Well-defined external format with stand-alone tools

22

* External tools will have to be maintained in order to stay in sync with the interface file format

23

* How external is "external"? There is a tension between re-using code from GHC, and having a truly independent file format that can be processed with completely stand-alone tools.

24

* It's already possible to use the GHC API to generate Core (though not yet to read it back in), which might be enough for some users. On the other hand, the external format allows for writing tools to manipulate Core in languages other than Haskell.

25

* External format should be readable by humans (though perhaps only after processing it with a pretty-printing tool)

26

* Not too redundant (for example, only print out type information that is necessary to reconstruct types)