Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 如何将变量转换为字符串?_Haskell_Functional Programming_Lambda Calculus - Fatal编程技术网

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

Haskell 如何将变量转换为字符串?,haskell,functional-programming,lambda-calculus,Haskell,Functional Programming,Lambda Calculus,例如,它是这样工作的 toString(Var x)=“x”使用显示功能: putStrLn (show x) 将打印出“x”变量。(当然,您不需要将它与putStrLn一起使用,也可以--show返回一个可以像字符串一样在任何地方使用的字符串。)如果我理解正确,您会问如何将编程结构转换为字符串。您并不关心“x”代表什么,而是关心程序员在源文件中将其称为“x” 您可以使用一些样板组件将数据构造函数转换为字符串。这里有一个例子,正好符合您的要求 {-# LANGUAGE DeriveDataTy

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

使用
显示功能:

putStrLn (show x)

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

如果我理解正确,您会问如何将编程结构转换为字符串。您并不关心“x”代表什么,而是关心程序员在源文件中将其称为“x”

您可以使用一些样板组件将数据构造函数转换为字符串。这里有一个例子,正好符合您的要求

{-# 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>
作为一个真实的例子,我建议看一下