Quel est exactement le type de données SEXP dans l’API C de R et pourquoi est-il utilisé?

Je connais la page wikipedia sur SEXP et je sais qu’elle représente une expression symbolique. Je sais (vaguement) que SEXP est une notation qui fait référence aux structures de données arborescentes dans Lisp, mais je veux savoir ce qui a motivé les développeurs à appeler le type de données des objects R dans C SEXP. Pourquoi SEXP?

Je suis également confus, car si R a été créé en C et en Fortran, pourquoi utiliser la notation de Lisp? Ou est-ce que SEXP est un terme plus général? Peut-être que je manque quelque chose ici.

R est, en interne, un peu comme Scheme avec une syntaxe compatible avec S. Beaucoup de composants internes de R proviennent des concepts de Scheme, comme les cellules et les environnements lexicaux.

À la fin des années 90, j’ai travaillé sur un nouveau format de sérialisation (à l’époque) pour R; voir mon document de projet d’honneurs , qui explique beaucoup de cela. (L’adresse email sur ce papier n’est plus valide, alors ne l’utilisez pas.)

Le fait que R soit implémenté en C et en Fortran n’a pas vraiment d’impact sur les fonctionnalités du langage. De nombreux langages de programmation, y compris de nombreux interprètes Lisp, sont écrits en C.

R a des expressions S parce qu’il est écrit dans la spécification du langage qu’il doit les avoir, avec une description de la façon dont elles fonctionnent.

La raison pour laquelle R appelle probablement cette fonctionnalité “S-Expressions” est qu’il en est ainsi. Ils n’utilisent pas seulement une terminologie Lisp, ils utilisent une fonctionnalité extraite du monde Lisp et la nomment correctement.