Например, так, что он работает как этот ToString (Var х) = "х"Как преобразовать переменную в строку?
0
A
ответ
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.