
On Wed, Apr 27, 2016 at 10:15 AM, John Leo
Speaking as someone teaching his coworkers Haskell now, Eric's is the best suggestion I've seen so far.
What I like about it: * The original meaning of :type is unchanged. * No new command is added (I prefer adding a flag to adding another command). * With the flag on, the full type is shown along with the possible specializations (and good to note the list might not be exhaustive). This way, beginners can still see what the type should look like even if they want to ignore it for now. This is similar to learning to read Japanese by using furigana. It may be a bit confusing for beginners at first, but I expect they'll quickly learn to ignore it until they need it, and I agree it will be useful for experienced Haskellers.
Perhaps a pleasant solution would be to borrow a convention from the PostgreSQL community's interactive console psql and its meta-commands: http://www.postgresql.org/docs/current/static/app-psql.html#APP-PSQL-META-CO... For example:
\d[S+] [ pattern ]
For each [object] matching the pattern, show all columns, their types, the tablespace (if not the default) and any special attributes such as NOT NULL or defaults. […] The command form \d+ is identical, except that more information is displayed: any comments associated with the columns of the table are shown, as is the presence of OIDs in the table, the view definition if the relation is a view, a non-default replica identitysetting.
Many psql commands use this convention: add a + to the end of the command, and you get extra information. It’s quite nmemonic.