Five years ago, already. Not so complex. If you want complex, I suggest
TypeScript. But successful :-)
My position remains that type annotations that are unpleasant to write and only
capture a tiny portion of the beauty of R are not going to be adopted.
Consider what TypeScript did for JavaScript.
https://janvitek.org/pubs/oopsla20-r.pdf
oopsla20-r
PDF Document · 759 KB
-jan
Jan Vitek, Professor
Northeastern University
Video chat: https://northeastern.zoom.us/my/jvroom
> On Nov 27, 2025, at 01:04, Simon Urbanek <[email protected]> wrote:
>
> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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
>>>>
>>>> ______________________________________________
>>>> [email protected] mailing list
>>>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>>>
>>>
>>>
>>> --
>>> http://hadley.nz
>>>
>>
>> [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> [email protected] mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>
>
> ______________________________________________
> [email protected] mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel