packages feed

Grow-1.1: Grow.hs

module Grow where

import Definitive
import Language.Parser
import Language.Grow
import Language.Syntax.Grow

c'growing :: Constraint (SyntaxT Growing)
c'growing = id

trans t = map (getMax . fst) . grow t . reduce
-- trans = id

main :: IO ()
main = cli "Grow" $ case ?cliargs of
  [t] -> void $ do
    l <- (readString "Seed" <&> map2 c'growing (cut growExpr)^..parser)
    case l of
      [] -> putStrLn "Couldn't parse the Seed file"
      _ -> forl_ (traverse.l'2.traverse) l $ \a -> print =<< trans t a
  _ -> error "Usage: grow <target>"