On Sun, 2023-04-16 at 13:52 +0200, Iñaki Ucar wrote: > I agree that something like this would be a nice addition. With the > current condition system, it would be certainly easy (but quite a lot > of work) to define a hierarchy of built-in conditions, and then use > them consistently throughout base R.
Yes, a typed condition system would be great. I have two other ideas: By reading the "R messages" and "preparing translactions" sections of the "R extensions manual" https://cran.r-project.org/doc/manuals/r-release/R-exts.html#R-messages I was thinking about using the "unique" R message texts (which are the msgid in the *.po files, see e.g. https://github.com/r-devel/r-svn/blob/60a4db2171835067999e96fd2751b6b42c6a6ebc/src/library/base/po/de.po#L892) to maintain a unique ID (not dependent on the actual translation into the current language). A "simple" solution could be to pre- or postfix each message text with an ID, for example this code here else errorcall(call, _("non-numeric argument to function")); # https://github.com/r-devel/r-svn/blob/49597237842697595755415cf9147da26c8d1088/src/main/complex.c#L347 would become else errorcall(call, _("non-numeric argument to function [47]")); or else errorcall(call, _("[47] non-numeric argument to function")); Now the ID could be extracted more easily (at least for base R condition messages)... This would even be back-portable to older R versions to make condition IDs broadly available "in the wild". Another way to introduce an ID for each condition in base R would be ("the hard way") 1) by refactoring each and every code location with an embedded message string to use a centralized key/msg_text data structure to "look up" the appropriate message text and 2) use the key to enrich the condition as unique ID (e.g. as an attribute in the condition object). ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel