SICP — Scheme/JS Structure and Interpretation of Computer Programs — Comparison Edition

[1] We use the list linked list (rectangular) llist("rectangular") rather than the symbol rectangular string "rectangular" to allow for the possibility of operations with multiple arguments, not all of the same type.
[2] The type the constructors are installed under needn't be a list linked list because a constructor is always used to make an object of one particular type.
[3]
Original Python
Apply-generic uses the dotted-tail notation described in exercise , because different generic operations may take different numbers of arguments. In apply-generic, apply_generic, op has as its value the first argument to apply-generic apply_generic and args has as its value a list of the remaining arguments.
Original Python
Apply-generic also uses the primitive procedure apply, which takes two arguments, a procedure and a list. Apply applies the procedure, using the elements in the list as arguments. The function apply_generic uses the function apply_in_underlying_javascript given in section 4.1.4 (footnote 2), which takes two arguments, a function and a linked list, and applies the function, using the elements in the linked list as arguments.
For example,
Original Python
(apply + (list 1 2 3 4)) apply_in_underlying_javascript(sum_of_squares, llist(1, 3))
returns 10.
[4] One limitation of this organization is it permits only generic procedures functions of one argument.
2.4.3   Data-Directed Programming and Additivity