簡體   English   中英

如何在Haskell中正確使用toLower?

[英]How do I correctly use toLower in Haskell?

我最近開始學習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)使用toLowerData.Char ; 這是一個單一字符,您可以將其映射到字符串上:

map toLower "JhELlo"

2)將您的字符串轉換為Data.Text (並可選地再次返回):

unpack . toLower . pack $ "JhELlo"

實際上,還有其他的toLower版本 Data.Sequences的一個似乎是多態的(因此應同時適用於兩者),但它可能需要拉入mono-traversable程序包作為依賴項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM