如何将变量转换为字符串?

时间:2008-11-30 16:56:26

标签: haskell functional-programming lambda-calculus

例如,它就像这样工作 toString(Var x)=“x”

2 个答案:

答案 0 :(得分:1)

使用show功能:

putStrLn (show x)

将打印出“x”变量。 (当然,您不需要将它与putStrLn一起使用,或者 - show返回一个可以像字符串一样使用的字符串。)

答案 1 :(得分: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