vampire-0.1.2.0: Debug/Vampire/Data.hs
module Debug.Vampire.Data (ExprStruct(..), ExprStruct'(..), resolve) where
import Data.IORef
import Data.Functor
data ExprStruct =
ExprStruct {expr :: String,
value :: Maybe String,
children :: [ExprStruct]} deriving Show
data ExprStruct' =
ExprStruct' {expr' :: String,
value' :: Maybe String,
children' :: [IORef ExprStruct']}
resolve :: ExprStruct' -> IO ExprStruct
resolve (ExprStruct' expr value children) =
ExprStruct expr value <$> (mapM readIORef children >>= mapM resolve)