2017-08-30 61 views
0

我正在尝试attemptAff计算。请看下面的代码:括号更改代码执行

result <- 
    pool # withPool \connection -> do 
     execute_ ("insert into user (email, password) values ('" 
      <> unwrap userInfo.email <> "', '" <> unwrap userInfo.password <> "')") 
      connection 
    # attempt 

所得的attemptAff以后运行使用runAff

尽管使用了attempt,但将withPool中的错误传播到了错误处理程序runAff

但是,如果括号内为Aff添加周围正在尝试,错误是“捕获”预期:

result <- 
    (pool # withPool \connection -> do 
     execute_ ("insert into user (email, password) values ('" 
      <> unwrap userInfo.email <> "', '" <> unwrap userInfo.password <> "')") 
      connection) 
    # attempt 

我是什么在这里失踪,为什么是这两个代码的行为代码片断有何不同?

回答

1

第一个代码段相当于

result <- 
    pool # withPool (\connection -> do 
    execute_ ... 
    # attempt) 

和不

result <- 
    pool # (withPool \connection -> do 
      execute_ ...) 
     # attempt