News for hackers. Stuff that matters.
Re:Generalizing Support for Functional OOP in R by andrewla on Tuesday May 28, 2024 @01:40PM (#40503309)
OOP as used in R is very much a function of API design and not a function of routine R usage for data analysis. To many users of R they are not even aware that they are using OOP at all, especially for the S3 style of objects.

When you have an object, like `model <- lm(x~y)` or `my_hist <- hist(df$foo)`, you expected to be able to `plot` it or get a `summary`; you don't call `my_hist.summary`, you call `summary(my_hist)` and `plot(model)`. Many users never look further under the hood than this. And this fits nicely into piped workflows -- `lm(x~y) |> summary()` ends up being very natural, and when you fit in the tidyverse operators many very complex workflows end up being very easy to digest.

But when you do pull back the kimono it gets ugly fast. The teams involved in this are the right people who have been working to make R an amazing language mostly through enhancements to libraries, and now they're trying to push some of that functionality back into core R, which I think is fantastic.

Re:Generalizing Support for Functional OOP in R by th0ma5 on Tuesday May 28, 2024 @02:01PM (#40503559)
Re:Generalizing Support for Functional OOP in R by Onawa on Tuesday May 28, 2024 @03:46PM (#40504807)
I can honestly say that I had never heard that phrase used before now, but I do know I felt icky when I read it in the comment before I even clicked on your link. Definitely glad to see it is being called out, terms like this absolutely need to be removed from modern discourse.
Re:Generalizing Support for Functional OOP in R by chuckadams on Tuesday May 28, 2024 @07:54PM (#40506800)
Pretty sure the phrase GP was looking for was "pull back the curtain", which likely originated with The Wizard of Oz.
Re:Generalizing Support for Functional OOP in R by clatan on Tuesday May 28, 2024 @02:06PM (#40503625)
In other words OOP can be great for tooling, but doesn't make much sense for what R is meant to be used for -interactive analysis- in every day work.

R's mess of OOP systems works great, S3 is "fine" for just dispatching 'methods' based on attributes, one doesn't even know it's happening in base R ALL the time.

R flexibility also makes it possible to build your own class system. i.e. modern ggplot2 has its own ggproto object system.

Re:Generalizing Support for Functional OOP in R by rossdavidh on Wednesday May 29, 2024 @09:40AM (#40511890)
Interesting! To prove your point, I was unaware that I was using OOP in R when I did those kinds of things. But, it feels more like functional programming, and I wonder if "OOP" is even a good way of describing that, if that's what they mean?
Re:Generalizing Support for Functional OOP in R by andrewla on Thursday May 30, 2024 @10:30AM (#40524199)
There are really only two situations where it matters. One is in developing tooling; you have to understand how all this works together so that the user can do things like call `summary` or `plot` on your objects.

The other is when you are trying to debug why something isn't working -- a lot of the time you can dump an R function just by typing the name, so you can run `table` with no parameters to get the `table()` function, if you're trying to figure out why it's not working right for your data. But if you execute `plot` you'll get some thing saying "UseMethod("plot")" which feels a bit recursive -- "in order to plot, plot", and then you end up going down that rabbit hole, which leads you to contributing to R packages, developing some of your own, and eventually posting on HN about how R's class system works.