treeTuple :: Parser Constree
treeTuple = treeify <$> bracketed (sepBy1 tdata (spaces *> char ',' <* spaces)) where
  bracketed = between (char '(' *> spaces) (spaces <* char ')')
  treeify [] = error "sepBy1 failure"
  treeify [x] = x
  treeify (x:xs) = Cons x (treeify xs)
treeTuple :: Parser Constree
treeTuple = treeify <$> bracketed (sepBy1 tdata (spaces *> char ',' <* spaces)) where
  bracketed = between (char '(' *> spaces) (spaces <* char ')')
  treeify [] = error "sepBy1 failure"
  treeify [x] = x
  treeify (x:xs) = Cons x (treeify xs)
treeTuple = treeify <$> bracketed (sepBy1 tdata (spaces *> char ',' <* spaces)) where
  bracketed = between (char '(' *> spaces) (spaces <* char ')')
  treeify [] = error "sepBy1 failure"
  treeify [x] = x
  treeify (x:xs) = Cons x (treeify xs)