{def S.in {def S.in.r {lambda {:c :w :i :n} {if {= :i :n} then -1 else {if {W.equal? :c {W.get :i :w}} then :i else {S.in.r :c :w {+ :i 1} :n}}}}} {lambda {:c :w} {S.in.r :c :w 0 {W.length :w}}}} -> S.in {def startswith {lambda {:w1 :w2} {= {S.in _ {S.replace :w2 by _ in :w1}} 0}}} -> startswith {def endswith {lambda {:w1 :w2} {= {S.in _ {S.replace :w2 by _ in :w1}} {- {W.length :w1} {W.length :w2}}}}} -> endswith {def isin {lambda {:w1 :w2} {S.in _ {S.replace :w2 by _ in :w1}}}} -> isin {startswith nabuchodonosor nabu} -> true {startswith nabuchodonosor abu} -> false {endswith nabuchodonosor sor} -> true {endswith nabuchodonosor oso} -> false {isin nabuchodonosor oso} -> 10 // is in at 10 {isin nabuchodonosor xyz} -> -1 // is not in