相关疑难解决方法(0)

如何将任意类型转换为字符串,而不向字符串添加额外的引号?

我想定义一个转换为字符串的函数,如下面的'toString':

toString 1 = "1"
toString True = "True"
toString "1" = "1"
Run Code Online (Sandbox Code Playgroud)

请注意,'show'不会这样做.相比之下,它做了以下事情:

show 1 = "1"
show True = "True"
show "1" = "\"1\""
Run Code Online (Sandbox Code Playgroud)

也就是说,它会在字符串周围添加额外的引号.在这种情况下,如果我已经有一个字符串,我不想添加额外的引号.

我正在考虑使用类似的东西:

import Data.Typeable

toString a :: (Show a) => a -> String
toString a
  | typeOf a == typeOf "" = a
  | otherwise = show a
Run Code Online (Sandbox Code Playgroud)

做这种奇怪的基于类型的条件是否有任何陷阱?是否有一些内置的Haskell功能可以更好地使用?

haskell

1
推荐指数
3
解决办法
301
查看次数

标签 统计

haskell ×1