/- sole =, sole |% ++ produce :: construct result |* pro/* :: [p=*(list tank) q=[%& p=[~ u=pro]]] :: :: :: ++ print :: add output tank |* {tan/tank res/(sole-result)} :: ?@ res res :: [p=[i=tan t=p.res] q=q.res] :: :: :: ++ prompt :: construct prompt |* {pom/sole-prompt mor/(sole-dialog)} :: [p=*(list tank) q=[%| p=pom q=mor]] :: :: :: ++ curl :: fetch url =| usr/knot :: |* {pul/_purl:eyre fun/$-(httr:eyre *)} :: :- p=*(list tank) :: q=[%| p=`usr q=[pul %get ~ ~] r=fun] :: :: :: ++ no-product :: empty result [p=*(list tank) q=[%& ~]] :: :: :: ++ parse :: parse by rule |* {sef/rule fun/$-(* *)} :: |= txt/sole-input :: =+ vex=(sef [0 0] txt) :: ?: |(!=((lent txt) q.p.vex) ?=($~ q.vex)) :: q.p.vex :: (fun p.u.q.vex) :: --