Jean Louis <bugs@gnu.support> writes:

>> Yes, and I think it's seriously wrong with
>> 
>>   : (+)
>>   -> NIL
>> 
>> where its docs say
>> 
>>   Returns the sum of all num arguments. When one of the arguments
>>   evaluates to NIL, it is returned immediately.
>
> For some reason PicoLisp is quite different than other Lisp. I have
> asked author about it.
>
> 15:09 <abu[m]> It is a "feature" that NIL propagates through
>                arithmetics

Well, but with (*) and (+), there is no single NIL involved!  And in
Elisp (+ nil), where actually a nil is involved, you get an error.

> 15:09 <jmarciano> How does it help instead of providing identity
>                   elements?
> 15:09 <abu[m]> (*) especially was not contemplated though, it is a
>                pretty useless call
> [...]
> 15:12 <abu[m]> What is a call like (*) useful for?
>
> As you see, author also asked naturally why is it useful.

So go and ask why he thinks (apply '+ ()) -> NIL is more useful than 0
given that the sum of the empty set of numbers _is_ 0.

>> So why does it return NIL?  And why do you apparently consider that
>> useful?  And can something be useful even though it is incorrect?
>
> I find it right as with error raising or nil I can find what is
> wrong.

It's good to signal an error when the expression is wrong as does Elisp
with

  (+ nil)
  (* 1 2 nil)
  (apply #'+ (list 1 nil 19))
  (+ 2 "i am not a number")

but when there is no nil or otherwise wrongly typed value involved,
there's nothing to signal.

Bye,
Tassilo

Reply via email to