diff options
author | partain <unknown> | 1996-07-25 21:33:42 +0000 |
---|---|---|
committer | partain <unknown> | 1996-07-25 21:33:42 +0000 |
commit | 5eb1c77c795f92ed0f4c8023847e9d4be1a4fd0d (patch) | |
tree | adb07110e00f00b2b2ef6365e16d5f58b260ce3c /ghc/docs/NOTES.interface | |
parent | f7ecf7234c224489be8a5e63fced903b655d92ee (diff) | |
download | haskell-5eb1c77c795f92ed0f4c8023847e9d4be1a4fd0d.tar.gz |
[project @ 1996-07-25 20:43:49 by partain]
Bulk of final changes for 2.01
Diffstat (limited to 'ghc/docs/NOTES.interface')
-rw-r--r-- | ghc/docs/NOTES.interface | 54 |
1 files changed, 0 insertions, 54 deletions
diff --git a/ghc/docs/NOTES.interface b/ghc/docs/NOTES.interface deleted file mode 100644 index dfe2d61b83..0000000000 --- a/ghc/docs/NOTES.interface +++ /dev/null @@ -1,54 +0,0 @@ - -What gets done when printing an interface -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Basically, we do three things: - -A) Create the import decls. For classes and values, this is easy. We - filter the CE and GVE for all exported objects that were not declared - in the module. For types, this is a pain because we may have something - which is exported and which refers to a type that isn't. For example, - the interface - interface C where - ... - f :: A -> B - may export B, but A may be expected to come from somewhere else when - C is imported. So, we have to go through all envs which have ranges that - may refer to a type. This means the TCE, CE (the class op types), - GIE_inst (instance types) and GVE (types in the sigs). AND we have to - filter out prelude defined types from the resulting list. - - Finally, we print the import decls, using the conventions that the renamer - expects (no explicit constructors/ class ops, etc.) - -B) Print the fixity decls for whatever constructors/ functions are exported - -C) Print the rest of the decls needed. - 1) Type decls - contents of TCE with export flags - 2) Class decls - contents of CE with export flags - 3) Instance decls - contents of GIE_inst that refer to either - an exported type or an exported class - (filter then print) - 4) Value decls - contents of GVE which are not constructors and - which have an export flag - -Issues -~~~~~~ - -Type synonyms - to expand or not? Let's not, and complain if a type sig. is - used but not defined - -Canonical form for interfaces - to get rid of perl post-processing! - -Deriving for an abstract data type - shall we worry about this now or later? - -Printing issues -~~~~~~~~~~~~~~~ - -It's convenient to make all ranges of environments know how to print themselves -(they do now) and decide whether to do so by looking at the export flag -in their Name fields. Presumably the constructors of a data type that is -exported abstractly will decide not to print themselves, so no special code -is needed. - - |