我在Real World Haskell书上遇到了以下功能:
namesMatching pat
| not (isPattern pat) = do
exists <- doesNameExist pat
return (if exists then [pat] else [])
| otherwise = do
case splitFileName pat of
("", baseName) -> do
curDir <- getCurrentDirectory
listMatches curDir baseName
(dirName, baseName) -> do
-- do something
return (concat pathNames)
以下行是什么意思:("", baseName) -> do
?我在函数类型签名中看到->
,但这在此代码中做了什么。
答案 0 :(得分:3)
->
是案例语法的一部分,它将模式与替代中的表达式连接起来。
do { ... }
只是一个表达。