🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: comp.lang.functional
3 messages
3 total messages Started by David Gudeman Thu, 26 Jul 1990 19:25
Re: BOTTOM !== NONTERMINATION
#391
Author: David Gudeman
Date: Thu, 26 Jul 1990 19:25
33 lines
1980 bytes
In article  <3936@rex.cs.tulane.edu> fs@rex.cs.tulane.edu (Frank Silbermann) writes:
]To refute a common assumption, I must say:
]
]	_Bottom_ is NOT synonymous with nontermination!!!!
]
]We are dealing with a DECLARATIVE paradigm,
]and nontermination is an _operational_ concept.

Hmm.  Well, I'd have to say that bottom _is_ synonymous with
nontermination if the only programs that are defined to represent
bottom are those whose evaluation will never terminate.  This is the
case in the lambda calculus, for example.  And yes, such a statment
is relative to the method of evaluation.

It is important to distinguish between semantics and operations, but
lets not fall into the trap of thinking that it's "impure" or "dirty"
to discuss operations and semantics at the same time.  When discussing
optimization you _have_ to discuss semantics and operation at the same
time.  Both are involved in the specification of the problem.

This does bring up a point though.  It might be a good idea _not_ to
limit the idea of bottom and let it include more general undefined
operations such as out-of-range references and whatever peculiar
things might result from that.  In this case, it would be allowable
for some program optimizations to change an error result into bottom.
For example an optimization that removes bounds checking from array
references might be allowed even though it has the potential of
changing an error result into practically anything.
-- 
					David Gudeman
Department of Computer Science
The University of Arizona        gudeman@cs.arizona.edu
Tucson, AZ 85721                 noao!arizona!gudeman
Re: BOTTOM !== NONTERMINATION
#392
Author: Frank Silbermann
Date: Thu, 26 Jul 1990 20:08
46 lines
2559 bytes
>]		_Bottom_ is NOT synonymous with nontermination!!!!
>]		We are dealing with a DECLARATIVE paradigm,
>]		and nontermination is an _operational_ concept.

David Gudeman:		gudeman@cs.arizona.edu <23552@megaron.cs.arizona.edu>
>	Well, I'd have to say that bottom _is_ synonymous
>	with nontermination if the only programs
>	that are defined to represent bottom
>	are those whose evaluation will never terminate.
>	This is the case in the lambda calculus, for example.

Some nonterminating programs in the lambda calculus
do NOT denote bottom (e.g. the fixpoint operator).
The language of denotational semantics
is a much more realistic basis for functional programming
than the pure untyped lambda calculus.
Who wants to program in a language that has no concrete data-types?
In the area of denotational semantics,
you can make any primitive function produce bottom
for certain inputs, so long as everything
is monotonic and continuous.

>	It might be a good idea _not_ to limit the idea of bottom
>	and let it include more general undefined operations
>	such as out-of-range references and whatever peculiar
>	things might result from that.  In this case, it would be
>	allowable for some program optimizations to change
>	an error result into bottom.  For example,
>	an optimization that removes bounds checking from array
>	references might be allowed even though it has the potential
>	of changing an error result into practically anything.

Or vice-versa.  Though we cannot solve the halting problem,
you _might_ want to build into a students' compiler
routines to catch the most obvious form of infinite looping,
and replace the bad subcomputation with the bottom symbol.
Must the result be considered as a different language,
just because the interpreter is _sometimes_ able to tell you
that the program denotes bottom, instead of just letting it loop?
True, there is some extra metalogical information provided,
but as long as the program is forbidden to make use of it,
it need not be considered a change in the language.

	Frank Silbermann	fs@rex.cs.tulane.edu
	Tulane University	New Orleans, Louisianna  USA
Re: BOTTOM !== NONTERMINATION
#401
Author: Joe Keane
Date: Fri, 27 Jul 1990 21:31
34 lines
2239 bytes
In article <3936@rex.cs.tulane.edu> fs@rex.cs.tulane.edu (Frank Silbermann)
writes:
>Maximal information should not be confused with metalogical information.

In article <3940@rex.cs.tulane.edu> fs@rex.cs.tulane.edu (Frank Silbermann)
writes:
>Or vice-versa.  Though we cannot solve the halting problem,
>you _might_ want to build into a students' compiler
>routines to catch the most obvious form of infinite looping,
>and replace the bad subcomputation with the bottom symbol.

This is clearly a useful feature to have.

>Must the result be considered as a different language,
>just because the interpreter is _sometimes_ able to tell you
>that the program denotes bottom, instead of just letting it loop?
>True, there is some extra metalogical information provided,
>but as long as the program is forbidden to make use of it,
>it need not be considered a change in the language.

I agree that if the interpreter has all this extra information, but it's not
available to user programs, then it's not part of the language.  My question
is, why would you want to do this?

Suppose in the language i write a nifty windowing system including an
interactive debugger with flashy graphics, sophisticated tracing, source-level
debugging, the works.  I'm debugging a program which gets into a detectable
infinite loop.  The run-time system detects this, spits out a nasty error
message in Chinese on the line printer down the hall, and my computer ceases to
work henceforth.  A lot of good that does me.

You've got the information, so put it in the language.  You get a new language,
which is isomorphic to the old one if you don't use the new features.  I don't
see what's wrong with that.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads