首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Haskell文件安全阅读

Haskell文件安全阅读
EN

Stack Overflow用户
提问于 2016-01-08 09:21:28
回答 2查看 71关注 0票数 0

我试图编写一个简单的Haskell函数,如果文件存在,它将读取文件内容,而不执行其他操作。

代码语言:javascript
复制
safeRead :: String -> IO ()
safeRead path = readFile path `catch` handleExists
  where handleExists e
    | isDoesNotExistError e = return ()
    | otherwise = throwIO e

但是,这在以下方面失败了:parse error (possibly incorrect indentation or mismatched brackets)

为什么?我已经检查过几次压痕了,我觉得一切都还好吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-08 09:27:40

你有两个错误。

正如Daniel所指出的,第一个问题是,在=之后,您错过了一个otherwise

另一种情况是handleExists的情况必须缩进多于函数名,而不是where。换句话说,将两个|移到h of handleExists之后的右侧。

演示:http://goo.gl/EY2c7o

票数 2
EN

Stack Overflow用户

发布于 2016-01-08 09:25:16

否则,您错过了一个=

代码语言:javascript
复制
safeRead :: String -> IO ()
safeRead path = readFile path `catch` handleExists
    where handleExists e
            | isDoesNotExistError e = return ()
            | otherwise = throwIO e

就像塞巴斯蒂安说的那样,“x”必须通过handleExists h

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34673374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档