Newsgroups: comp.lang.scheme
Path: cantaloupe.srv.cs.cmu.edu!bb3.andrew.cmu.edu!newsfeed.pitt.edu!godot.cc.duq.edu!newsgate.duke.edu!news.mathworks.com!newsfeed.internetmci.com!in3.uu.net!news.biu.ac.il!discus.technion.ac.il!news!qobi
From: qobi@eesun.technion.ac.il (Jeffrey Mark Siskind)
Subject: Re: Scheme or ML? (was Re: multiple values)
Reply-To: Qobi@EE.Technion.AC.IL
Organization: Technion, Israel Institute of Technology
Date: Tue, 13 Aug 1996 18:38:40 GMT
Message-ID: <QOBI.96Aug13213840@eesun.technion.ac.il>
In-Reply-To: Robert Harper's message of Wed, 07 Aug 1996 11:57:02 -0400
X-Nntp-Posting-Host: eesun.technion.ac.il
References: <qijn30oeaoq.fsf@lambda.ai.mit.edu> <4t8ag1$rns@ix.cs.uoregon.edu>
	<31F841D5.7638@sonic.net>
	<cc001636-2607960950310001@ip95.van-nuys.ca.interramp.com>
	<31FE3046.3E93@cs.cmu.edu> <4u38ip$b63@garbo.cs.indiana.edu>
	<32061C42.67A1@cs.cmu.edu> <wwohkoochn.fsf@delphi.ccs.neu.edu>
	<3208BCCE.5ECF@cs.cmu.edu>
Sender: news@discus.technion.ac.il (News system)
Lines: 31

In article <3208BCCE.5ECF@cs.cmu.edu> Robert Harper <rwh@cs.cmu.edu> writes:

     just change
     ML's
   > bizarre (*grin*) syntax into parentheses, and forget about the type
     checking.
   > Instead, just check tags at primitive operations.  Then any legal ML
     program
   > becomes a legal Scheme program; pre-execution type checking turns into
   > run-time tag-checking.
   > 
   > Now, this translation has obvious flaws:  as you point out, it introduces
   > bunches of useless tag-checks that will have to be removed by analysis
   > (*grin*),

I don't understand how the fact that such a translation needs analysis to
remove bunches of useless tag-checks is conceptually any different from the
fact that ML needs H-M type inference to decorate undecorated source code with
the information needed to remove bunches of useless tag-checks.

   There are two points.  One is what you point out: if you "strip" the ML
   code to get Scheme code, you find that the detailed operational behavior
   is not faithful to the ML precisely because of the tag manipulation. 

You are confusing language definition with implementation. If you translate ML
code to Scheme code and compile the Scheme code with Stalin you will find that
the detailed operational behaviour *is* faithful to ML because there is no tag
manipulation.
-- 

    Jeff (home page http://tochna.technion.ac.il/~qobi)
