5 ms·
Has the author confused M-Expressions and F-Expressions or am I misreading this?
by Gollapalli 4y ago
Has the author confused M-Expressions and F-Expressions or am I misreading this?
- Jtsummers 4y agoSee footnote 6 on page 4: > ‘F-expression’ [McCarthy 1959, p. 13] was the original name of M-expressions (for Meta- expressions) [McCarthy 1960, p. 187]. We choose the old name for two reasons: (1) meta is relative, the name M-expression becomes misleading once F-expressions are taken to the level of object language; (2) the term F-expression clearly indicates that functional [expressions] describe functions of S-expressions, which McCarthy called S-functions [1959, p. 1]. Nevertheless, in directly quoted text, we will keep the terms used in the source. [edited to remove hyphenated words]
- mtlmtlmtlmtl 4y agoF-expressions are functions taking unevaluated arguments, sort of a mixture of a macro and a function. It executes at runtime, whereas a macro executes at compile time(technically macro-expansion time). They were abandoned in mainstream LISP early on. However, John Shutt ironed out some of the issues with fexprs in his PhD thesis, which is a good read if you're interested in lisp internals[1]. He also designed a scheme like lisp dialect incorporating fexprs, called Kernel. [1]: https://web.wpi.edu/Pubs/ETD/Available/etd-090110-124904/ https://web.wpi.edu/Pubs/ETD/Available/etd-090110-124904/
- kazinator 4y agoThe F-expressions in this paper are not the same thing as FEXPRs. This was an internal, implementation terminology. Early Lisp has EXPR and SUBR routines: SUBR were written in machine language, and EXPR were interpreted functions. So EXPR doesn't mean "expression", but "function made of expressions that require code walking evaluation, rather than a straight machine-code subroutine ("SUBR") that can be called. The F prefix denoted functions that implemented special forms. That may be where the F comes from: FEXPR and FSUBR. These F variants receive the unevaluated forms. So COND might be implemented as a FSUBR, which interprets it: walks the cond pairs, evaluates the test expressions, and so on. Whereas CAR and CDR would be SUBRS (no "F").
- alexisread 4y agoKernel and it's successor wat (https://github.com/manuel/wat-js https://github.com/manuel/wat-js) has some great stuff, I personally prefer open composition from maru https://www.piumarta.com/freeco11/freeco11-piumarta-oecm.pdf https://www.piumarta.com/freeco11/freeco11-piumarta-oecm.pdf as it combines fexprs and macros into one construct.
- kazinator 4y agoThe author has confused himself for multiple people; one name appears on the paper which makes frequent references to some "we". Or possibly, it is the royal "we", as in "we are not amused". He's also confused himself for someone who is fit to give recommendations to Lisp implementors based on studying a thing or two about ancient history of syntax. > If improper lists and circular lists are rarely used and can always be simulated in the rare case, it is better to kick them out to favor the common case. "We" had better get a smidgeon of Lisp development experience, methinks. Plus, taking a look at Lisp from 1960 to 2022 wouldn't hurt, rather than obsessing about what MacCarthy meant when he said this and was he aware of that at that moment in 1959, and how should we do things today as a consequence. Good grief. Let's not have closures, because in 1959, MacCarthy saved and restored globals to simulate locals.
- js8 4y agoI thought it was pretty common to use 1st person plural in academic publications.
- kazinator 4y agoYes, in a way that is inclusive of the reader. E.g "we next examine the implications of theorem 3". This guy uses it in ways that clearly refer only to himself, and not this rhetorical "we".
- owl57 4y agoIs this something like a trailing comma in lists — a quirk to minimize diffs because you don't generally know when you start writing the paper whether you will remain the sole author or co-authors will join the work?
- crdrost 4y agoThere's a footnote somewhere in there, I think to the effect that what later came to be called m-expressions were originally called f-expressions? Hence the weird terminology.