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
Readable-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/readable-discuss

Reply via email to