> No idea whether to post on old or new wiki.

The new wiki is not yet live. Likely it will be another week or so before
we do the final migration.

On 12 August 2015 at 14:43, 'Pascal Jasmin' via Programming <
[email protected]> wrote:

> No idea whether to post on old or new wiki.
>
> This utility shows all of the intermediate results (of verb phrases) in a
> tacit verb.  It uses my strand/multiadverb notation under the hood, and so
> the verb 9: is reserved.  This should probably work in J6 and J7 too.
>
> (not counting utilites).  everything one line except lrT aatrain evaleach
>
>
> pD_z_ =:  1!:2&2
> lrA_z_ =: 1 : '5!:5 < ''u'''
> eval_z_ =: 1 : ' a: 1 :  m'
>
>
> lrX =: 1 : ('''('', u lrA , '') '' , lr y';':';'''('', (lr x) , '') ('' ,
> u lrA , '') '' , lr y')
> evaly =: 3 : 'y eval lrA'  NB. removes 1 level of parens from lrT boxes
> lvProcsRestT =: (1 : '( 0 {:: {: m) eval }: m')
>
>
>
> AmbiD =: 1 : 'u [ ''    '' pD@, u lrX'
> strbracket =: (0&{@:[ , ] , 1&{@:[)
> ismodstring =: 1 : 'if. 0 = 4!:0 <''u'' do. try. q =.  m eval catch. 0
> return. end. 1 2 e.~ 4!:0 <''q''else. 0 end. '
> ncS=:3 :'z=.y 1 :y label_. 4!:0 <''z'' ' :: _2: NB. nameclass of string
> ncA =: 1 : 'if. 3 ~: 4!:0 < ''u'' do. if. m ismodstring do. m ; ncS m
> else. 0 ;~ ''('', m lrA ,'')'' end. else. 3;~ ''('', u lrA ,'')'' end.'
> daF =: 1 : ('a =. (''2 : '', (quote m) , '' u'') label_. 1 : (''u  1 :'' ,
> quote a)')
> daFx =: (0 : ) 1 : ('a =. (''2 : ('', (lr m) , '') u'') label_. 1 : (''u
> 1 :'' , quote a)') NB. explicit. call with 0 left arg
>
>
> forkorder=:($:@(2&}.) , {. , <)`(2&}. , {. , <)@.(3 = #)^:(1 ~: #)
> trainorder=: forkorder`($:@(1&}.) , <)@.(0 = 2 | #)
>
> lrT =: 0 daFx
> if. 0 -.@-: 1{:: a =. v ncA do. n =. ,: a end.
> if. '9:' -: u lrA do. n else.
> (u ncA , n) lrT  end.
> )
>
>
> aatrain =: 0 daFx  NB. perfectly solves the composability of double adverbs
> if. 0 -.@-: 1{:: a =. v ncA do. n =. ,: a end.
> if.  1 = 1 {:: (;: inv {."1 a =.(u ncA , n)) ncA do.  a aatrain else.
> (;: inv {."1 a) eval end.
> )
>
> evaleach =: 1 : 0
> for_i. m do. pD^:(i_index < <:#m) (i eval) :: ((i eval)@:]) y end.
> :
> for_i. m do. pD^:(i_index < <:#m) x (i eval) :: ((i eval)@:]) y end.
> )
>
>
>
> strandT =: ([: ,&' AmbiD'@:('()'&strbracket)@:evaly@:; L:1   [: >@{.L:1
> [: (#~ (<1) ~: (0-:1&{::)L:1)  trainorder@:(<"_1)) 'lrT lvProcsRestT
> evaleach' aatrain
>
> dX =: lrA  1  : '(''9: '', m , '' strandT'') eval'
>
>
> the display is offset (doesn't show up in email) to ease copying it to
> markdown and lower clutter.  Note that dX does not tunnel into "subtrains"
>
> 4 5 6 (([: |: ,:) #~ 1 < -:@])dX 1 2 3
> (4 5 6) (-:@]) 1 2 3
> 0.5 1 1.5
> (4 5 6) (1 < -:@]) 1 2 3
> 0 0 1
> (4 5 6) ([: |: ,:) 1 2 3
> 4 1
> 5 2
> 6 3
> (4 5 6) (([: |: ,:) #~ 1 < -:@]) 1 2 3
> 6 3
>
>
> but you can go directly to a subtrain line of interest and add dX to it
> and enter twice to get the display.  Result of dX is same as fork result so
> you can extend it to the left using its result.  (also the last expression
> display is also the origninal command, so you can just use that line to
> edit/repeat)
>
> +:   (4 5 6) ([: |: ,:)dX 1 2 3
> (4 5 6) (,:) 1 2 3
> 4 5 6
> 1 2 3
> (4 5 6) ([:) 1 2 3
> (4 5 6) ([:) 1 2 3
> (4 5 6) ([: |: ,:) 1 2 3
> 8 2
> 10 4
> 12 6
>
>
> though, if you want the display, you can extend it within the fork
>
>   (4 5 6) ([: +: [: |: ,:)dX 1 2 3
> (4 5 6) (,:) 1 2 3
> 4 5 6
> 1 2 3
> (4 5 6) ([:) 1 2 3
> (4 5 6) ([:) 1 2 3
> (4 5 6) ([: |: ,:) 1 2 3
> 4 1
> 5 2
> 6 3
> (4 5 6) ([:) 1 2 3
> (4 5 6) ([:) 1 2 3
> (4 5 6) ([: +: [: |: ,:) 1 2 3
> 8 2
> 10 4
> 12 6
>
>
>
>  tiny flakiness when [: is in train
>
>
>
>
> NB. dyadic hooks will show weird intermediate results, but hopefully not
> crash (use forks :P)
>
>
> (#~ 1 < -:)dX 1 2 3
> >>> (1 < -:) 1 2 3
> 0 0 1
> >>> (#~ (1 < -:)) 1 2 3
> 3
>
>
> 4 5 6 (#~ 1 < -:)dX 1 2 3
> >>> (4 5 6) (1 < -:) 1 2 3
> 0
> >>> (4 5 6) (#~ (1 < -:)) 1 2 3
> 6
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to