2008-11-30 3 views

ответ

1

Используйте show функции:

putStrLn (show x) 

распечатает "х" переменной. (Естественно, вам не нужно использовать его с putStrLn, либо - возвращает строку, которая может использоваться в любом месте, как строка.)

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.

Смежные вопросы