Okay, Beni showed how to properly use his formulation of SUBLIST for
multi-item let, in the other thread "$ at end of line bug?":
let $
x $ compute 'x
y $ compute 'y
use x y
Here's another (ab)use:
let $ $ x
! ! ! ! ! compute 'x
! ! ! ! y
! ! ! ! ! compute 'y
! use x y
==>
let INDENT INDENT x ; stack: (0 ? ?)
INDENT compute 'x ; stack (0 ? ? 10)
DEDENT y ; stack (0 ? 8)
INDENT compute 'y ; stack (0 ? 8 10)
DEDENT DEDENT ; stack (0 ?), indentation = 2
use x y ; stack (0 2)
DEDENT
==>
let
!\\
!!x
!!!compute 'x
!!y
!!!compute 'y
!use x y
--
I like Beni's formulation. It's a whole lot cooler than my original
formulation of SUBLIST, and follows the SUBLIST and monotonic indent
equivalence theorem:
foo $ x $ y
<==>
foo
! x
! ! y
--
Also need to insert this rule for interaction between SUBLIST and GROUP/SPLIT.
SPLIT. Whenever a GROUP/SPLIT is encountered that is not the first
item on the line (i.e. SPLIT semantics):
SPLIT.1. if the top stack item is ?, pop off ? items until reaching a
non-? item; emit DEDENT for each popped ?
SPLIT.2. otherwise, emit SAME
--
Given this, I suspect we can also express <* *> in terms of the
indentation stack.
Sincerely,
AmkG
------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_feb
_______________________________________________
Readable-discuss mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/readable-discuss