Related articles |
---|
[28 earlier articles] |
Re: Multiple return values hbaker@netcom.com (1997-05-08) |
Re: Multiple return values mark@omnifest.uwm.edu (1997-05-13) |
Re: Multiple return values bear@sonic.net (Ray Dillinger) (1997-05-13) |
Re: Multiple return values jan@fsnif.neuroinformatik.ruhr-uni-bochum.de (Jan Vorbrueggen) (1997-05-14) |
Re: Multiple return values hbaker@netcom.com (1997-05-14) |
Re: Multiple return values markt@harlequin.co.uk (Mark Tillotson) (1997-05-25) |
Re: Multiple return values hbaker@netcom.com (1997-05-25) |
Re: Multiple return values jmccarty@sun1307.spd.dsccc.com (1997-05-30) |
From: | hbaker@netcom.com (Henry Baker) |
Newsgroups: | comp.compilers,comp.lang.misc |
Date: | 25 May 1997 13:55:09 -0400 |
Organization: | nil |
References: | 97-04-091 97-04-112 97-05-273 |
Keywords: | theory, design |
Mark Tillotson <markt@harlequin.co.uk> wrote:
> Huh? Mathematically a function is simply a many-1 binary relation
> defined for the whole of its domain. Any talk of more than one
> argument is shorthand for using cartesian products, which you can do
> with the result just as easily. In fact functions really don't have
> anything to do with calculation!!
You are correct, but the cartesian product mapping is only one of many
possible mappings. Currying, for example, is _not_ isomorphic to your
cartesian product argument (except in the computed results), and seems
to work just fine for many functional and/or graph-reduction
languages.
>...
> The implementors of Fortran didn't, it seems, want to implement
> closures and curried functions, and set a(n) historical precedent.
I'm afraid that the implementors of Fortran didn't _know_ about
closures and curried functions, so I don't think that leaving them out
was an explicit choice on their part.
BTW, as my 'lively linear lisp' paper shows, GC (at least tracing GC)
is not 'required' for closures and curried functions. See my paper on
running closures in a Postscript interpreter for more info:
ftp://ftp.netcom.com/pub/hb/hbaker/ForthStack.html (also .ps.Z)
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.