On Mon, 03 Sep 2012 13:42:23 -0700, Ray Dillinger <[email protected]> said:
> On 08/31/2012 08:15 PM, Vassil Nikolov wrote: >> >> On Wed, 29 Aug 2012 21:26:57 -0700, Ray Dillinger <[email protected]> >> said: >>> ... Results other than #t or #f (which include exception throwing >>> and infinite looping) expand the domain of the function, which >>> means that a function is not in fact a predicate. >> >> Er... what includes exception throwing and infinite looping? Are >> these possible _results_? > Of course they are. "Results" is not a term restricted to normal > values returned from a function call. Maybe it is not worth arguing about terminology, but I believe these are outcomes, not results, so, for the arguments for which the outcome is an infinite loop or the throwing of an exception, the function is undefined, and these arguments do not belong to its domain. > Having results of calling a function not limited to normal returns, > complicates semantics in exactly the same way as other side effects. > Like mutation, It should not be done unless truly necessary. I disagree these are side effects, but again, maybe this is not so important right now; I agree that the more cases there are in which a function is undefined, the more complicated the semantics, but such complications have to be accommodated _somewhere_, whether by the caller or by the called. ---Vassil. -- Vassil Nikolov | Васил Николов | <[email protected]> "Be careful how you fix what you don't understand." (Brooks 2010, 185) _______________________________________________ Scheme-reports mailing list [email protected] http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports
