Haskell 字符到字符串函数
我有一个非常简单的问题:给定一个接受字符并返回字符串的函数Haskell 字符到字符串函数,haskell,Haskell,我有一个非常简单的问题:给定一个接受字符并返回字符串的函数 test :: Char -> [String] 如何将字符转换成字符串?我对这两种类型感到困惑。在Haskell中,String是[Char]的别名: type String = [Char] 如果您只需要一个将单个字符转换为字符串的函数,例如 charToString :: Char -> String charToString c = [c] 如果你喜欢无点风格,你也可以写 charToString :: Cha
test :: Char -> [String]
如何将字符转换成字符串?我对这两种类型感到困惑。在Haskell
中,String
是[Char]
的别名:
type String = [Char]
如果您只需要一个将单个字符转换为字符串的函数,例如
charToString :: Char -> String
charToString c = [c]
如果你喜欢无点风格,你也可以写
charToString :: Char -> String
charToString = (:[])
字符串只是一个[Char] 但这只是一个很好的表达方式
'H':'E':'L':'L':'O':[]
因此,要使其成为[字符串],我们可以:
['H':'E':'L':'L':'O':[]]
另一种方法是使用
return . return
由于列表的
return
定义为:[]
请注意,可以使用Show
将实现Show
类型类的任何类型转换为字符串:
(Show a) => a -> String
因为
Char
实现了这一点,所以函数已经为您编写好了 我知道以前我期望像[c]这样的输出,但现在改成了:[[c]]并且它可以工作:)谢谢simplePrelude>show'a'=>“'a'”(可能不起作用)。Prelude>return'a'=>'a'不起作用(return.return会给出一个错误).@paradojareturn
具有类型Monad m=>a->ma
。默认情况下,ghci默认为monad实例采用IO
。由于ghci也会为您打开(执行)IO单子中的值,因此您会将返回
视为不可操作。请尝试(return::a->[a])将单子修改为列表。您的问题是如何将字符转换为字符串,但您的代码块实际上涉及类型字符
和[string]
(而不是String
)。请注意[String]
表示字符串的列表,即String
定义为[Char]
)字符列表。根据OP对已接受答案的评论,我相信它们的意思是[String]
。这是否值得编辑?可能是一个XY问题,他们询问如何将字符转换为字符串,然后将其放入最有可能带有括号的列表中(具有讽刺意味的是,您首先就是这样将字符转换为字符串的)。