簡體   English   中英

如何在表達式的中間使用Haskell類型簽名?

[英]How can I use a Haskell type signature partway through an expression?

我正在使用此出色的教程作為基礎在Haskell中進行一些簡單的regexp工作,並且遵循作者的建議,即使用顯式類型簽名來獲取=~ 〜regexp運算符以返回String 我的問題是我想要進一步操作(基本上toUpper在結果toUpper ),而我還不太清楚如何做到這一點。

我已經嘗試了下面的每一種方法,但每一種方法我都Couldn't match expected type 'String' against inferred type 'Char'錯誤或類似Couldn't match expected type 'String' against inferred type 'Char'錯誤Couldn't match expected type 'String' against inferred type 'Char'

getSKU :: FilePath -> String
getSKU path = 
    toUpper $ path =~ "^sku[0-9]{5}" :: String

-- or...
getSKU path = 
    let key = (path =~ "^sku[0-9]{5}")
    in toUpper key

-- or ...
getSKU = 
    toUpper . sub
    where
        sub p = (p =~ "^sku[0-9]{5}") :: String

我很困惑-如何在不使用整個單獨函數的情況下通過表達式部分表達類型簽名?

函數toUpper具有簽名toUpper Char -> Char 使用mapString所有字符上的toUpper

getSKU :: FilePath -> String
getSKU path = 
    map toUpper $ path =~ "^sku[0-9]{5}" :: String

暫無
暫無

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

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