VHUL3O55RPR6QD7IXPMJFWI5EOXHQYAMHCLP2FYAULPAOAWUVQ7QC 5C7Y6XZ4XFHUUTWPGOX6F5GKTQ2FK66L7AVODDRKBUAPA25D4UAQC HQZLWNTRZRDCXCXLZMTWSB7GXON4T4KJZVAU4DFST64LTXIUSBRAC 6QAAR2VPKVD3II6SKKLQBHRYOFX4NHA6HGJMBMFRPQCVE5OLKWJQC WXLDFYO5NT4VAQUCLNZBQQPSXSJDHCD7UKBMAYGWD66TSNDE3J4AC 7QP2V7ZBVZ7SKQ3SYV6NYA7V77G3Y7GF5V6EPIXLIYFSMFRWR4VAC JDI62ZLKN7J4572C7E2WL2HPGAMFU5YEIDOERVGIOBPOOV3DRF5AC K7KUOYE2VONTDGZ6BIAGA3F7RYQEBNTY3LQOYQM4FH3MOUTLBL6AC Y2N6GDITBJID3Q4Z2Y7KEDY46F7R3SU4DRK3ST6ZMA4CNLXWSFDAC RTM5VGIPTRMJMKLJER4543HXDRMGUZ7TI5VJBOV4ZFGUCILNQ62QC ANAAF3LVFG2YCTAWUZKMT75XQN6YNS4CLLZIXSVGKJQRWJVNBMEAC 3AFV4YVYLZGHZDSMO3I3DCZE2BZKA2SOBQ6DI2GZILOUGHLVRCQAC O7B34AE2RCSSUKPDKL6VRLOAGH3OYXD6VAI6C6KHZMA7RWUMN2MQC RIB2JXPMZHC5XCLGB7Q425PVNJPHMWPJSLMR2GTFLD474WB72ZHAC ALXARSBZW27Q3HVNFNFJQCJXR7OIVW5ABTE63HYXADK7UPIPGM5QC 6TR3H656MQ3WM3RFWZRHWATU4G5MPRR2CEVM3BAVONWMRMVNVQ4QC | KeyPress 'r' <- e , r : rs <- seed (nodes v ! 0) = Right (s { rand = r },set (Hex { look = pick r total , seed = rs , parent = Nothing , i = 1 }) 0 (verse size))
| KeyPress 'r' <- e , r : rs <- seed (atom $ nodes v ! 0) = Right (s { rand = r },set (Hex { look = pick r total , seed = rs , parent = Nothing , i = 1 }) 0 (verse size))
-- ui = word "> ui content here <"ui = foldl (&) canvas[ (1,1) % vcat (intersperse (cell ' ')[ key, hcat[ scope $ take 1 $ IntMap.keys $ IntMap.filter me $ nodes v, cell ' ', vcat [word "",info]]])
ui = pad 2 $ vcat $ intersperse (cell ' ')[ key, hcat[ scope $ take 1 $ IntMap.elems $ IntMap.filter (me . atom) $ nodes v, cell ' ', vcat [word "",info]]
scope :: [Int] -> Planescope n| i : _ <- n = foldl (&) (blankPlane 5 3)[ (1,2) % let a = neighbours v i U in cell (grapheme a) # style a, (1,4) % let a = neighbours v i I in cell (grapheme a) # style a, (2,1) % let a = neighbours v i H in cell (grapheme a) # style a, (2,3) % let a = node v i in cell (grapheme a), (2,5) % let a = neighbours v i L in cell (grapheme a) # style a, (3,2) % let a = neighbours v i N in cell (grapheme a) # style a, (3,4) % let a = neighbours v i M in cell (grapheme a) # style a
scope :: [Node Unit] -> Planescope ns| n : _ <- ns = foldl (&) (blankPlane 5 3)[ (1,2) % let a = get v $ neighbour n U in cell (grapheme a) # style a, (1,4) % let a = get v $ neighbour n I in cell (grapheme a) # style a, (2,1) % let a = get v $ neighbour n H in cell (grapheme a) # style a, (2,3) % let a = atom n in cell (grapheme a), (2,5) % let a = get v $ neighbour n L in cell (grapheme a) # style a, (3,2) % let a = get v $ neighbour n N in cell (grapheme a) # style a, (3,4) % let a = get v $ neighbour n M in cell (grapheme a) # style a
node :: Atom a => Verse a -> Int -> anode v i = nodes v IntMap.! i
node :: Atom a => Verse a -> Int -> Node anode v i = maybe (Node { atom = void }) id $ IntMap.lookup i (nodes v)get :: Atom a => Verse a -> Int -> aget v i = maybe void atom $ IntMap.lookup i (nodes v)
| Just n <- loop , i /= n = False -- ρ tail| Just n <- loop , i == n = dest !! 1 /= i && not (any (lock' . (memo !)) $ takeWhile (/= i) dest) -- closed loop| n : _ <- dest = free' $ memo ! n -- linear (loops ruled out, recurse freely)
| Just ni <- loop , i /= ni = False -- ρ tail| Just ni <- loop , i == ni = dest !! 1 /= i && not (any (lock' . (memo !)) $ takeWhile (/= i) dest) -- closed loop| ni : _ <- dest = free' $ memo ! ni -- linear (loops ruled out, recurse freely)
a' :: a| free , [dir] <- push = node v $ shift v 1 dir i -- move in| free , null push = void -- clear| not free , d : _ <- dest , free' $ memo ! d = void -- move out| otherwise = a
n' :: Node a| free , [dir] <- push = n { atom = get v $ neighbour n dir } -- move in| free , null push = n { atom = void } -- clear| not free , d : _ <- dest , free' $ memo ! d = n { atom = void } -- move out| otherwise = n