Par exemple pour que cela fonctionne comme ça toString (Var x) = "x"Comment convertir une variable en chaîne?
0
A
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.