+++ title = "4d: Parsing (Tracing)" weight = 31 template = "doc.html" +++ ## `++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 ```hoon ++ 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 ```hoon ++ 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] ``` ---