From iuke-tier@ey m@iii@g oii uiow@@edu  Sat Jul  6 15:59:11 2024
From: iuke-tier@ey m@iii@g oii uiow@@edu (iuke-tier@ey m@iii@g oii uiow@@edu)
Date: Sat, 6 Jul 2024 08:59:11 -0500 (CDT)
Subject: [Rd] [External]  API for converting LANGSXP to LISTSXP?
In-Reply-To: <CAJXgQP3+OucVzfX9fHk+-4rW1Ks1=rwpvb7WM=oSv0H8YQex_Q@mail.gmail.com>
References: <CAJXgQP3+OucVzfX9fHk+-4rW1Ks1=rwpvb7WM=oSv0H8YQex_Q@mail.gmail.com>
Message-ID: <ba6081a2-4f80-cf8f-f3d9-b925fdc4f117@uiowa.edu>

We have long been discouraging the use of pairlists. So no, we will
not do anything to facilitate this conversion; if anything the
opposite. SET_TYPEOF is used more than it should be in the sources.
It is something I would like us to fix sometime, but isn't high
priority.

Best,

luke

On Fri, 5 Jul 2024, Kevin Ushey wrote:

> Hi,
>
> A common idiom in the R sources is to convert objects between LANGSXP
> and LISTSXP by using SET_TYPEOF. However, this is soon going to be
> disallowed in packages. From what I can see, there isn't currently a
> direct way to convert between these two object types using the
> available API. At the R level, one can convert calls to pairlists
> with:
>
>> as.call(pairlist(as.symbol("rnorm"), 42))
> rnorm(42)
>
> However, the reverse is not possible:
>
>> as.pairlist(call("rnorm", 42))
> Error in as.pairlist(call("rnorm", 42)) :
>  'language' object cannot be coerced to type 'pairlist'
>
> One can do such a conversion via conversion to e.g. an intermediate R
> list (VECSXP), but that seems wasteful. Would it make sense to permit
> this coercion? Or, is there some other relevant API I'm missing?
>
> For completeness, Rf_coerceVector() also emits the same error above
> since it uses the same code path.
>
> Thanks,
> Kevin
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>

-- 
Luke Tierney
Ralph E. Wareham Professor of Mathematical Sciences
University of Iowa                  Phone:             319-335-3386
Department of Statistics and        Fax:               319-335-3017
    Actuarial Science
241 Schaeffer Hall                  email:   luke-tierney at uiowa.edu
Iowa City, IA 52242                 WWW:  http://www.stat.uiowa.edu/



[Rd] [External] API for converting LANGSXP to LISTSXP?
iuke-tier@ey m@iii@g oii uiow@@edu