mja*_*sie 4 text haskell predicate
我是Haskell的新手,但我仍然想尽办法。我正在尝试将两个函数(isMark以及isAlpha来自包中的Data.Char模块base)合并为Data.Text.filter函数的第一个参数。到目前为止,我尝试过的是:
import qualified Data.Char as C
import qualified Data.Text as T
import Data.Text (Text)
strippedInput :: Text -> Text
strippedInput input = T.filter (C.isMark || C.isAlpha) input
Run Code Online (Sandbox Code Playgroud)
这不起作用,或者
strippedInput input = T.filter (C.isMark . C.isAlpha) input
Run Code Online (Sandbox Code Playgroud)
但显然它也不管用,因为类型C.isAlphaIS Char -> Bool然后成为一个输入C.isMark,这也是类型Char -> Bool等等类型不匹配。
我想在谓词中实现“ C.isMark或C.isAlpha”逻辑,但是由于我的知识非常有限,我对如何搜索解决方案的想法已经用尽。
最简单的是使用lambda-expression:
strippedInput :: Text -> Text
strippedInput input = T.filter (\x -> C.isMark x || C.isAlpha x) inputRun Code Online (Sandbox Code Playgroud)
您还可以利用函数是应用函子的事实,从而可以使用:
import Control.Applicative(liftA2)
strippedInput :: Text -> Text
strippedInput input = T.filter (liftA2 (||) C.isMark C.isAlpha) inputRun Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
93 次 |
| 最近记录: |