Skip to contents

Present: Michael Lawrence (chair), Hong Ooi, Luke Tierney, Hadley Wickham, Will Landau, Henrik Bengtsson

Discussion

Process (ML)

  • Active discussion in GitHub issues: https://github.com/RConsortium/S7

  • Need a little process to finalise discussion. Proposal: original author reads discussion, summarises, and creates a pull request that closes the issue. Any participants in the discussion should be added as reviewers.

  • Once issues are resolved, we can start to move forward on next steps for syntax, implementation, …

Do you have a sense for what the system might look like? (HB)

  • Unfortunately don’t have a lot of time, but reading and happy to review. how much of an implementation do you have in your head?
  • ML: Quite a bit; but wanted to make sure to step back and make sure we have all the requirements. But yes, have some vision in my head.
  • HW: Have some clear idea in my head; mostly building on top of S3

Would it look more like S3, S4, or something completely new? (HB)

  • ML: one of the main restrictions is to build off existing system
  • HW: one of the advantages is NAMESPACE
  • ML: and that base uses
  • LT: want to be able to define new methods for “[”, which means has to be maximally compatible with base.

Double dispatch (HW/LT)

  • LT: no double dispatch in S3. S4 overly ambitious and v hard to maintain. CLOS written be v. smart people and still got things wrong.
  • HW: may need to carve double dispatch into v2.
  • HO: multiple inheritance is falling out of favour (diamond inheritance problem etc). Could we use interface based approach instead?

Generic “interfaces” (LT)

  • LT: need to consider not just generics by themselves, but how they are related.
  • Related to contracts in Eiffel, concepts in C++20, ...

Message passing OOP (HO)

  • HO: should we be considering this? (i.e. R6 and ref classes)
  • ML: currently out of scope

What are the implications for compiling? (HB)

  • LT: compiling currently entirely within functions; one day might be nice to compile across functions/methods etc. Always thinking about how compilation might work. But generally features that are hard to compile are hard for users to understand.

Action items

  • Continue discussion in issues
  • Start turning issues into PRs
  • Feel free to fix minor issues