howValue val = do
  io $ putStrLn "not tyconapp?"
{-  case val of 
    tc@(TyCon tycon ty_name) -> do
      io . putStrLn $ "TyCon " ++ (show tycon) ++ ty_name
      io . putStrLn . show$ tc
      io $ putStrLn "1"
    SumType _ -> io $ putStrLn "2"
    MkListOfValues _ -> io $ putStrLn "3"
    FreeTypeVariable _ -> io $ putStrLn "4"
    Pointer _ -> io $ putStrLn "5"
    Pair _ _ -> io $ putStrLn "6"
    Fun _ _ -> io $ putStrLn "7"
    String _ -> io $ putStrLn "8"
    Char _ -> io $ putStrLn "9"
    Boolean _ -> io $ putStrLn "10"
    Rat _ -> io $ putStrLn "11"
    Wrong _ -> io $ putStrLn "41"
    TyConApp _ b -> io $ putStrLn " ;)"
    Num _ -> io $ putStrLn "12"
    _ -> do io $ putStrLn "Otra cosa" -}
    
  return $ show val

-- | Function called by showValue that handles the showing of a type constructor application.
-- Special cases include the List and the Tuple constructors.
-- As we know from the semantics, the showing forces the evaluation of the arguments of the data constructor

showValue val = do
  io $ putStrLn "not tyconapp?"
{-  case val of 
    tc@(TyCon tycon ty_name) -> do
      io . putStrLn $ "TyCon " ++ (show tycon) ++ ty_name
      io . putStrLn . show$ tc
      io $ putStrLn "1"
    SumType _ -> io $ putStrLn "2"
    MkListOfValues _ -> io $ putStrLn "3"
    FreeTypeVariable _ -> io $ putStrLn "4"
    Pointer _ -> io $ putStrLn "5"
    Pair _ _ -> io $ putStrLn "6"
    Fun _ _ -> io $ putStrLn "7"
    String _ -> io $ putStrLn "8"
    Char _ -> io $ putStrLn "9"
    Boolean _ -> io $ putStrLn "10"
    Rat _ -> io $ putStrLn "11"
    Wrong _ -> io $ putStrLn "41"
    TyConApp _ b -> io $ putStrLn " ;)"
    Num _ -> io $ putStrLn "12"
    _ -> do io $ putStrLn "Otra cosa" -}
    
  return $ show val

-- | Function called by showValue that handles the showing of a type constructor application.
-- Special cases include the List and the Tuple constructors.
-- As we know from the semantics, the showing forces the evaluation of the arguments of the data constructor
showValue val = do
  io $ putStrLn "not tyconapp?"
{-  case val of 
    tc@(TyCon tycon ty_name) -> do
      io . putStrLn $ "TyCon " ++ (show tycon) ++ ty_name
      io . putStrLn . show$ tc
      io $ putStrLn "1"
    SumType _ -> io $ putStrLn "2"
    MkListOfValues _ -> io $ putStrLn "3"
    FreeTypeVariable _ -> io $ putStrLn "4"
    Pointer _ -> io $ putStrLn "5"
    Pair _ _ -> io $ putStrLn "6"
    Fun _ _ -> io $ putStrLn "7"
    String _ -> io $ putStrLn "8"
    Char _ -> io $ putStrLn "9"
    Boolean _ -> io $ putStrLn "10"
    Rat _ -> io $ putStrLn "11"
    Wrong _ -> io $ putStrLn "41"
    TyConApp _ b -> io $ putStrLn " ;)"
    Num _ -> io $ putStrLn "12"
    _ -> do io $ putStrLn "Otra cosa" -}
    
  return $ show val

-- | Function called by showValue that handles the showing of a type constructor application.
-- Special cases include the List and the Tuple constructors.
-- As we know from the semantics, the showing forces the evaluation of the arguments of the data constructor