2008-11-30 13 views

Répondre

1

Utilisez la fonction show:

putStrLn (show x) 

imprimera la variable "x". (Naturellement, vous n'avez pas besoin de l'utiliser avec putStrLn, soit - show renvoie une chaîne qui peut être utilisée n'importe où comme une chaîne.)

0

Si je vous comprends bien, vous demandez comment convertir les constructions de programmation en chaînes. Vous n'êtes pas concerné par ce que 'x' représente autant que vous êtes que le programmeur l'a appelé "x" dans le fichier source.

Vous pouvez convertir des constructeurs de données en chaînes en utilisant certains des composants Scrap Your Boilerplate. Voici un exemple qui fait exactement ce que vous avez demandé.

{-# LANGUAGE DeriveDataTypeable #-} 

module Main where 

import Data.Data 

data Var a = Var a 
data X = X deriving (Data, Typeable) 

toString :: Data a => Var a -> String 
toString (Var c) = show (toConstr c) 

main :: IO() 
main = putStrLn $ "toString (Var x)= " ++ show (toString (Var X)) 

sortie:

$ ghci Test.hs 
GHCi, version 6.10.4: http://www.haskell.org/ghc/ :? for help 
Loading package ghc-prim ... linking ... done. 
Loading package integer ... linking ... done. 
Loading package base ... linking ... done. 
[1 of 1] Compiling Main    (Test.hs, interpreted) 
Ok, modules loaded: Main. 
*Main> main 
toString (Var X)= "X" 
*Main> 

Pour un exemple concret, je suggère à la recherche du RJson library.

Questions connexes