On Sat, Nov 26, 2016 at 09:05:44PM -0500, Bruno Franco wrote:
> I was trying out the diff function and I noticed something:
> 
> : (diff '(1 2 3 4) '(3 4))
> -> (1 2)
> 
> but
> 
> : (diff '(3 4) '(1 2 3 4))
> -> NIL
> 
> I think this means that there is an order to the arguments of diff, where

It is analogous to the arithmetic difference, where A - B is not the
same as B - A.


> the second argument must be the shortest.

This is not the case. The length is not relevant:

   : (diff (1 2 3) (8 6 4 2))
   -> (1 3)


> I also tried this:
> 
> : (diff (1 2 3 4) 2)
> -> (1 3 4)
> 
> So, why does diff work even if the second argument isn't a list?

This is a result of how 'diff' is implemented internally. It takes all
elements into account, I think it is a welcome feature. Note that this
also works:

   : (diff (1 2 3) (1 . 2))
   -> (3)

♪♫ Alex
-- 
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe

Reply via email to