The R5 syntax introduced over 15 years ago it was meant to be minimalistic
(optional argument types) to have a start at experimenting, however there was
little interest at the time. Then I remember at one of the useR!?s I think
someone from Jan Vitek?s group was presenting on a very complex annotation
system that allowed not only type checking, but also definition of constraints
etc. (unfortunately I can?t remember the names and so didn't find the
paper). At that time I was thinking that it?s cool, but this will never happen,
because once you start exploring all the possible use-cases the scope grows
exponentially and it will become impossible to agree on any common ground: the
classic perfect being the enemy of the good. So I suspect that is the main
problem: it is not a clear feature that has a clear path forward - it is just an
ill-defined idea (what is the purpose? about arguments? about other expressions?
constraints? evaluated constraints? return values? what will be done with it?).
Add to that the obvious: it would be possibly a big change to the language, so
it really needs to be considered carefully as there will be no going back, since
R prides itself on very good backward compatibility which makes it so useful in
practice. Also anything complex will have security and performance implications.
I have not seen any serious proposals so far. There have been various
experimentation in a package space, but those are often opinionated with varying
levels of thought put into it. Personally, I think the syntax is important so I
would like to make sure possible syntax changes are considered so we?re not just
creating an awkward syntax because it is easier in package space, but not
intuitive to use.
So just like with any improvement (c.f. the ifelse discussion), if there is
actual interest, then people should start discussing the aspects, starting with
the key ones such as purpose and requirements. I don't think this topic
really has been even defined so I wouldn?t run creating packages just yet,
especially since I think this is more about design than implementation. No one
has done that work just yet.
Cheers,
Simon
> On 27 Nov 2025, at 05:59, ivo welch <ivo.welch at ucla.edu> wrote:
>
> I am more interested why something like this has not made its way into R
core as a first step to type checking *for everyone*. (I could imagine that an
option would turn on and off some automatic stopifnot like checking given a
standardized annotation form [type, dim].)
>
> is it because there is not much wider interest and desirability (so even a
basic working implementation would not be pulled into R by the powers that are
in charge), or is it because the work is too difficult and no one had
> time to work on it?
>
>
> On Wed, Nov 26, 2025 at 8:50?AM Hadley Wickham <h.wickham at
gmail.com> wrote:
>
>> You might be interested in Jim Hester?s old experiment that used ? -
>> https://github.com/jimhester/types
>>
>> Hadley
>>
>> On Wednesday, September 17, 2025, IVO I WELCH <iwelch at
g.ucla.edu> wrote:
>>
>>>
>>> Suggestion for Syntax Sugar:
>>>
>>> Would it make sense to permit a simple way to allow a coder to
document
>>> the function argument type?
>>>
>>> f <- function( a:chr, b:data.frame, c:logi ) { ? }
>>>
>>> presumably, what comes behind the ?:? should match what ?str?
returns.
>>>
>>> however, this need not be checked (except perhaps when a particular
>>> option is set). catching errors as soon as possible makes code
easier to
>>> debug and error messages clearer.
>>>
>>> regards,
>>>
>>> /iaw
>>>
>>> ______________________________________________
>>> R-devel at r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>>
>>
>>
>> --
>> http://hadley.nz
>>
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>