我正在使用这个优秀的教程作为基础在Haskell中做一些简单的正则表达式工作,并且我遵循作者的建议使用显式类型签名来使=~regexp运算符返回a String.我的问题是我想进一步操纵它(基本上toUpper是结果),我不太明白如何做到这一点.
我已经尝试了下面的每一个,每个我得到一个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
Run Code Online (Sandbox Code Playgroud)
我很难过 - 如何通过表达式表达类型签名,而不需要使用整个单独的函数?
该功能toUpper具有签名Char -> Char.使用map映射toUpper的所有字符在String:
getSKU :: FilePath -> String
getSKU path =
map toUpper $ path =~ "^sku[0-9]{5}" :: String
Run Code Online (Sandbox Code Playgroud)