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`.

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]
``````