Re: WG: Recovering the once true meaning of type NIL in LOOP

Bruno Haible <[email protected]> Sun, 24 Dec 2017 03:09:15 +0100
Newsgroups gmane.lisp.clisp.devel
Message-ID <2574390.b98nTqGCzv@omega>
Don Cohen wrote:
> I notice the MIT loop macro (which is what I normally use) gives
> 
> (macroexpand '(loop for (a b c) of-type (integer) in x do nil))
> 
> (LET ((A 0) (B NIL) (C NIL) (#:G10173004 X))
>  (DECLARE (TYPE LIST #:G10173004) (TYPE INTEGER A))
>  ...
> 
> I guess you'd view it as non-compliant

I didn't say that this was non-compliant. If you write code
where you bind variables B and C and declare that these variables
have no valid values, an implementation is free to
  - ignore the "obviously" wrong declaration - this is what MIT LOOP does,
  - or emit a warning,
  - or signal an error,
  - or launch a rocket to the moon.

What I'm saying is that not all implementations are required to do the
same thing.

> So I'll now return to my tradition of avoiding loop issues by 
> sticking with MIT loop.

Yuck. Everyone has a different way of dealing with the oddities of CL LOOP.
Mine is to stick to the "simple" cases...

Bruno


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
clisp-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/clisp-devel