Some ideas from the 'numeric tower' notion in scheme/lisp might also
be useful.

Best,

luke

On Thu, 9 Aug 2018, Hadley Wickham wrote:

On Thu, Aug 9, 2018 at 4:26 PM jan Vitek <vit...@icloud.com> wrote:

I'm now confident that I
can avoid using "type" by itself, and instead always use it in a
compound phrase (like type system) to avoid confusion. That leaves the
`.type` argument to many vctrs functions. I'm considering change it to
.prototype, because what you actually give it is a zero-length vector
of the class you want, i.e. a prototype of the desired output. What do
you think of prototype as a name?


The term “type system” in computer science is used in very different ways.
What the note describes is not a type system, but rather a set of
coercions used by a small number of functions in one package.

Typically it refers to a set of rules (either statically enforced
by the compiler or dynamically enforced by the runtime) that ensure
that some particular category of errors can be caught by the
language.

There is none of that here.

I think there's a bit of that flavour here:

vec_c(factor("a"), Sys.Date())
#> Error: No common type for factor and date

This isn't a type system imposed by the language, but I don't think
that's a reason not to call it a type system.

That said, I agree that calling it a type system is currently
overselling it, and I have made your proposed change to the README
(and added a very-long term goal of making a type system that could be
applied using (e.g.) annotations).

"The short-term goal of vctrs is to develop a type system for vectors which will 
help reason about functions that combine different types of input (e.g. c(), ifelse(), 
rbind()). The vctrs type system encompasses base vectors (e.g. logical, numeric, 
character, list), S3 vectors (e.g. factor, ordered, Date, POSIXct), and data frames; and 
can be extended to deal with S3 vectors defined in other packages, as described in 
vignette("extending-vctrs”).”

==>

The short-term goal of vctrs is to specify the behavior of functions that combine 
different types of vectors (e.g. c(), ifelse(), rbind()). The specification 
encompasses base vectors (e.g. logical, numeric, character, list), S3 vectors (e.g. 
factor, ordered, Date, POSIXct), and data frames; and can be extended to deal with 
S3 vectors defined in other packages, as described in 
vignette("extending-vctrs”).

Thanks for the nice wording!

Hadley




--
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-tier...@uiowa.edu
Iowa City, IA 52242                 WWW:  http://www.stat.uiowa.edu
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to