Thread View: comp.lang.functional
3 messages
3 total messages
Started by David Gudeman
Thu, 26 Jul 1990 19:25
Re: BOTTOM !== NONTERMINATION
Author: David Gudeman
Date: Thu, 26 Jul 1990 19:25
Date: Thu, 26 Jul 1990 19:25
33 lines
1980 bytes
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
Author: Frank Silbermann
Date: Thu, 26 Jul 1990 20:08
Date: Thu, 26 Jul 1990 20:08
46 lines
2559 bytes
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
Author: Joe Keane
Date: Fri, 27 Jul 1990 21:31
Date: Fri, 27 Jul 1990 21:31
34 lines
2239 bytes
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