4d: Parsing (Tracing)

    ++last

    Further trace

    Compares two line-column pairs, zyc and naz, producing whichever is further along.

    Accepts

    naz is a hair.

    zyc is a hair.

    Produces

    A hair.

    Source

        ++  last  |=  [zyc=hair naz=hair]
                  ^-  hair
                  ?:  =(p.zyc p.naz)
                    ?:((gth q.zyc q.naz) zyc naz)
                  ?:((gth p.zyc p.naz) zyc naz)
    

    Examples

        > (last [1 1] [1 2])
        [p=1 q=2]
    
        > (last [2 1] [1 2])
        [p=2 q=1]
    
        > (last [0 0] [99 0])
        [p=99 q=0]
    
        > (last [7 7] [7 7])
        [p=7 q=7]
    

    ++lust

    Detect newline

    Advances naz by a row if the weq is a newline, or by a column if weq is any other character.

    Accepts

    weq is a char.

    naz is a hair.

    Produces

    A hair.

    Source

        ++  lust  |=  [weq=char naz=hair]
                  ^-  hair
                  ?:(=(`@`10 weq) [+(p.naz) 1] [p.naz +(q.naz)])
    

    Examples

        > (lust `a` [1 1])
        [p=1 q=2]
    
        > (lust `@t`10 [1 1])
        [p=2 q=1]
    
        > (lust '9' [10 10])
        [p=10 q=11]
    
        > (roll "maze" [.(+<+ [1 1])]:lust)
        [1 5]
    
        > %-  roll  :_  [.(+<+ [1 1])]:lust
          """
          Sam
          lokes
          """
        [2 6]