2008-11-30 50 views

回答

1

使用show功能:

putStrLn (show x) 

將打印出的 「x」 可變的。 (當然,您不需要使用它與putStrLn,要麼 - show返回一個字符串,可以在任何地方使用像字符串。)

0

如果我正確理解你,你問如何轉換編程結構成字符串。你並不關心'x'代表的是什麼,你認爲程序員在源文件中稱它爲「x」。

您可以使用一些Scrap Your Boilerplate組件將數據構造器轉換爲字符串。這裏有一個例子,就是你所問的。

{-# 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)) 

輸出:

$ 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> 

對於一個真實的例子,我建議看RJson library