Newsgroups: comp.lang.scheme
Path: cantaloupe.srv.cs.cmu.edu!bb3.andrew.cmu.edu!newsfeed.pitt.edu!gatech!newsfeed.internetmci.com!sgigate.sgi.com!sdd.hp.com!hplabs!hplntx!hplntx.hpl.hp.com!gjr
From: gjr@hplgr2.hpl.hp.com (Guillermo (Bill) J. Rozas)
Subject: Re: R5RS?
Sender: news@hpl.hp.com (HPLabs Usenet Login)
Message-ID: <GJR.96Mar7105404@hplgr2.hpl.hp.com>
In-Reply-To: ok@goanna.cs.rmit.EDU.AU's message of 7 Mar 1996 13:32:25 +1100
Date: Thu, 7 Mar 1996 18:54:04 GMT
Reply-To: gjr@hpl.hp.com
References: <4gc83r$617@news.simplex.nl> <4gfrfi$m7u@camelot.ccs.neu.edu>
	<leavens.824995212@larch> <4gi3p0$kvh@agate.berkeley.edu>
	<leavens.825012724@larch> <GJR.96Feb22191305@hplgr2.hpl.hp.com>
	<BLUME.96Feb27152646@zayin.cs.princeton.edu>
	<GJR.96Feb28133746@hplgr2.hpl.hp.com>
	<BLUME.96Feb29105552@zayin.cs.princeton.edu>
	<GJR.96Mar4102338@hplgr2.hpl.hp.com> <4hlhrp$2sp@goanna.cs.rmit.EDU.AU>
Nntp-Posting-Host: hplgr2.hpl.hp.com
Organization: Hewlett-Packard Laboratories, Palo Alto, CA
Lines: 42

In article <4hlhrp$2sp@goanna.cs.rmit.EDU.AU> ok@goanna.cs.rmit.EDU.AU (Richard A. O'Keefe) writes:

|   gjr@hplgr2.hpl.hp.com (Guillermo (Bill) J. Rozas) writes:
|   >I, and most people that I have worked with and know, place high value
|   >on conventions.  Perhaps I have been pampered, but I'd rather spend my
|   >time teaching people to design and observe good conventions than ways
|   >to circumvent straight-jackets.
|
|   There is a lot to agree with in this, but even super wizard hacker
|   software enginerrs like me make the occasional slip.  If a convention
|   cannot is not mechanically checked (whether you call the resulting
|   messages 'errors', 'warnings', or 'hints') it is worth very little.

It depends on what you mean.

The initial discussion started because of opaque types.  It margically
touched on module systems, and went on to type systems.

Leaving the type systems alone for now (an independent type checker
would do the trick for you and me here, it seems), the other two are
easy.

Say that you have a disjoint type facility where, by default, you can
only access the implementation from some suitably constrained code
(e.g. code with access to a "key").

Say that there is a way to extract the key (or a substitute key) from
an instance of such a type.  If you never use the method to extract
such keys, you will have adhered to the convention by default.
The method to extract such keys can be cumbersome and prominent, thus
it is unlikely to escape notice.

Something similar can be done with module systems.

For example, I have found that the MIT Scheme "package system" (with
_all_ of its drawbacks, I would not foist it on anyone else) achieves
an acceptable compromise of isolation and ability to penetrate when
needed.

The conventions are, by and large, adhered to.  You can even say that
they are verified by the system.

