Quick review Lassi Kortela 01 Feb 2021 21:07 UTC
Could the following be named according to standard RnRS conventions? value/mv -> values-ref coarity -> values-length Which arguments can produce multiple values? apply/mv -- only the last arg call/mv -- any arg list/mv -- only the last arg vector/mv -- only the last arg box/mv -- only the last arg call/mv uses a different convention from the others. (set!-values formals producer) Should probably say that it's restricted to (a b c) and (a b . c) forms. The full lambda list syntax in some Scheme implementations (e.g. Gambit, Gauche, Kawa) can be quite involved. (list-values ...) (vector-values ...) (box-values ...) The definitions should pay mind to the fact that the limit on the max number of values that can be produced by an expression is likely to be more strict than limit on the max length of a vector, or the maximum length of a list that can be constructed. What happens when the program exceeds the limit on the number of values? Should these take optional [start [end]] arguments like `substring`? (with-values ...) (case-receive ...) Both LGTM! (identity ...) Would it be safer to call this identity/mv?