我最近开始学习 Haskell 并想将某些内容转换为小写。我查找了函数“toLower”,但它似乎不起作用。
Prelude> import Data.Text
Prelude Data.Text> toLower "JhELlo"
<interactive>:2:9: error:
* Couldn't match expected type `Text' with actual type `[Char]'
* In the first argument of `toLower', namely `"JhELlo"'
In the expression: toLower "JhELlo"
In an equation for `it': it = toLower "JhELlo"
Prelude Data.Text> toLower 'JhELlo'
<interactive>:3:9: error:
* Syntax error on 'JhELlo'
Perhaps you intended to use TemplateHaskell or TemplateHaskellQuotes
* In the Template Haskell quotation 'JhELlo'
Prelude Data.Text>
Run Code Online (Sandbox Code Playgroud)
它不起作用,因为您尝试使用的版本在 上运行Text,而不是在String. 这是两种截然不同的类型。此时您有两个选择:
1) 使用toLower自Data.Char; 这个对单个字符进行操作,您可以将其映射到您的字符串上:
map toLower "JhELlo"
Run Code Online (Sandbox Code Playgroud)
2)将您的字符串转换为Data.Text(并可选择再次返回):
unpack . toLower . pack $ "JhELlo"
Run Code Online (Sandbox Code Playgroud)
其实还有其他版本的toLower;一个 inData.Sequences似乎是多态的(所以应该对两者都适用),但它可能需要将mono-traversable包作为依赖项引入。
| 归档时间: |
|
| 查看次数: |
3234 次 |
| 最近记录: |