Related articles |
---|
Reference to "First-Class Data Type" reid@vtopus.cs.vt.edu (1992-02-18) |
re: First-class data types lotus!wildbill@uunet.uu.net (1992-03-05) |
Re: First-class data types norman@a.cs.okstate.edu (1992-03-05) |
Re: First-class data types rockwell@socrates.umd.edu (Raul Deluth Miller-Rockwell) (1992-03-06) |
Re: First-class data types pk@cs.tut.fi (1992-03-06) |
Re: First-class data types kend@data.rain.com (1992-03-05) |
Re: First-class data types tmb@ai.mit.edu (1992-03-09) |
Re: First-class data types norman@a.cs.okstate.edu (Norman P. Graham) (1992-03-11) |
Newsgroups: | comp.compilers |
From: | norman@a.cs.okstate.edu (Norman Graham) |
Keywords: | types |
Organization: | Oklahoma State University |
References: | 92-02-085 92-03-024 |
Date: | Thu, 5 Mar 1992 19:31:24 GMT |
In article 92-03-024 Bill Torcaso writes:
>[Since many operators don't apply in any sensible way to functions]
>any language that admits arithmetic types and arithmetic operations will
>have a hard time supporting first-class types. And of course, once you
>subset the domain of datatypes and the operators that apply in each
>sub-domain, the definition loses all generality.
You've missed the point (or perhaps I missed the context of your
statement). 'First class datatypes' do not require the ability to pass
function values to the boolean XOR function; nor does it require the
ability to use function application with a numeric constant. These are
nonsensical operations that will be rejected by any reasonable
typechecker.
'First class datatypes' do require that the language allow values of these
types to appear in any syntactic construct in which other values may
occur. This occurs within the framework of a type system that catches
mistyped constructs.
So, you see, the important thing is not that functions can be passed to
XOR, but that functions can be bound as parameters (i.e. passed to
functions in general). Likewise, if you look at function application as an
operation that takes a function value and a parameter list, you'll see
that supplying an integer instead of a function value is mistyped.
--
Norman Graham
<norman@a.cs.okstate.edu> {cbosgd,rutgers}!okstate!norman
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.