Facebook
From Sweltering Duck, 8 Years ago, written in Haskell.
This paste is a reply to Untitled from Cute Cat - view diff
Embed
Download Paste or View Raw
Hits: 534
  1. thenA :: Auto a q1 -> Auto a q2 -> Auto a (Either q1 q2)
  2. thenA (A s11 ini11 ac11 t11) (A s12 ini12 ac12 t12) = (A st init ac2 tr) where
  3.         (A s1 ini1 ac1 t1) = leftA (A s11 ini11 ac11 t11)
  4.         (A s2 ini2 ac2 t2) = rightA (A s12 ini12 ac12 t12)
  5.         st = s1 ++ s2
  6.         init =  if any ac1 ini1 then
  7.                                 ini1 ++ ini2
  8.                         else
  9.                                 ini1
  10.         tr (Left x) w = let l = t1 (Left x) w
  11.                                                 in      if (any ac1 l) then
  12.                                                                 l ++ ini2
  13.                                                         else
  14.                                                                 l
  15.         tr (Right x) w = t2 (Right x) w