作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近开始学习 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>
最佳答案
它不起作用,因为您尝试使用的版本在 Text
上运行,而不是在 String
上运行。这是两种不同的类型。此时您有两个选择:
1) 使用Data.Char
中的toLower
;这个对单个字符进行操作,您可以将其映射到字符串上:
map toLower "JhELlo"
2) 将字符串转换为 Data.Text
(也可以选择再次转换回来):
unpack . toLower . pack $ "JhELlo"
实际上有other versions of toLower
大约; Data.Sequences
中的一个似乎是多态的(因此应该对两者都有效),但它可能需要引入 mono-traversable
包作为依赖项。
关于haskell - 如何在 Haskell 中正确使用 toLower?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46568661/
我是一名优秀的程序员,十分优秀!