4 ms·
@raganwald -- Lovely post, as always. One (somewhat important) question: If same-level continued calls mean chaining, and indented continued calls mean to use t
by jashkenas 15y ago
@raganwald -- Lovely post, as always. One (somewhat important) question: If same-level continued calls mean chaining, and indented continued calls mean to use the value of the previous line, then what do outdented continued calls mean?
first
.second
Or heading 'offsides', in this fashion:
first
.second
.third
Are those both syntax errors at compile time?
Also, how does this play with things that are not necessarily side-effect-ful? For example:
object.property
.value
Currently means `object.property.value`. Under your rubric, would it evaluate to `object.value`? Making any trailing access effectively a no-op?
- eric-hu 15y agoWhat about maintaining backwards compatibility while adding an operator specifically for this purpose. Example # same as first.second.third first .second .third # same as first.second, first.third first .second ^third # same as first.second.third first .second .third # syntax error first .second ^third
- satyr 15y agoThere's no outdented continued call in current CoffeeScript; an outdented line always makes OUTDENT. (Or are you suggesting to allow such code? I personally see no value in it.)
- raganwald 15y agoOutdented calls use the last value in the column to their left. So: first .second Never means `first.second`, either `.second` is an error, or it is applied to something above this, such as: someValue .methodName -> first .second ...which becomes: someValue.methodName(-> first) someValue.second If such a value can't be found, it's an error. Of interest is the meaning of `.propertyName` in the leftmost column, as in: object .property I suggest it's an error. As long as you can write: object.property # or... object .property I don't see the value in object .property This: object.property .value Means `object.property.value`.
- sausagefeet 15y agoIMHO, Smalltalk got this right using ; rather than whitespace. And it's easier to read.
- satyr 15y ago> I suggest it's an error. So we'd have to give up: array .map (x) -> f x .reduce (a, b) -> g a, b