Martin Maechler wrote:
>
>     >> Thank you, Wacek, 
>     >> though .. "wrong mailing list" 
>     >> 
>
>     WK> apologies.  i was actually asking for explanation, assuming that it
>     WK> might be my misunderstanding, rather than reporting a bug.
>
> ( yes; but it is really a technical topic, also touching on
>   extending R [below], hence --> R-devel )
>   

point taken.

> I think we'd gladly accept well-written & commented extra
>   <R-x.y.z>/tests/foo.R  
> files or patches to existing ./tests/*.R 
> particularly if the contributor shows the new tests are
> systematically covering currently untested areas...
> Again: this really belongs to R-devel
>
>   

ok.

>     WK> plus those undocumented, but assumed by the developers.
>
>   ;-) :-)
>
> Indeed, we are also grateful for (concise!) patches to  man/*.Rd
> help files.
>   

ok.

>     >> If you'd looked a bit in the sources, you'd seen that they
>     >> really are supposed to be binary only.
>     >> 
>
>     WK> it wouldn't be nonsensical to let them be of arbitrary arity (in a
>     WK> well-documented manner), though it might confuse users.
>
> Yes (to the latter).  One of the beauties of S and R is the
> syntax closeness to  mathematical notation.
> Many of us know that  Lisp  has beauties that S can never have,
> but that's really in different beauty-space. 
>   

not quite sure what you mean by 'closeness to mathematical notation' here.


>     WK> just a question (i haven't checked the sources, maybe i should):  what
>     WK> is it that happens when one of the operators is called with n = 0 or 1
>     WK> argument?  how does it come up with logical(0) rather than NA?
>
> In some of the cases  e.g. 
>    '<'(1)   
>
> it basically does   [empty] < 1  and hence returns the same as
>
>    NULL < 1
>   
which is consistent with NULL + 1.  btw:

1. you might want to keep the error message from applying < and other
relops to an inappropriate number of arguments in sync with the message
one gets from, e.g., '+'(1,2,3).  (you may want to actually update the
message from '+' and relatives, as it seems that there are more
operators that give an error message similar to that of '<'.  the
attached patch fixes this; it has been compiled and successfully tested
-- see below.)

2. '+'() and '+'(1,2,3) say the operator needs one or two arguments, but
again, '+' is documented as a *binary* operator.  i guess the intention
here is to have them unary or binary, and it's the docs that should be
updated.

vQ


The patch for src/main/arithmetic.c was prepared as follows:

svn co https://svn.R-project.org/R/trunk/
cd trunk
tools/rsync-recommended
# modifications made to src/main/character.c
svn diff > do_grep.diff

The patched sources were successfully compiled and tested as follows:

svn revert -R .
patch -p0 < do_grep.diff
./configure
make
make check



Index: src/main/arithmetic.c
===================================================================
--- src/main/arithmetic.c	(revision 47991)
+++ src/main/arithmetic.c	(working copy)
@@ -295,7 +295,7 @@
     case 2:
 	return R_binary(call, op, CAR(args), CADR(args));
     default:
-	errorcall(call,_("operator needs one or two arguments"));
+	errorcall(call,_("%d arguments passed to '%s' which requires 1 or 2"), length(args), PRIMNAME(op));
     }
     return ans;			/* never used; to keep -Wall happy */
 }
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to