括号更改代码执行

时间:2017-08-30 14:43:22

标签: purescript

我正在尝试attempt Aff计算。请考虑以下代码:

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

Aff生成的attempt稍后会使用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 个答案:

答案 0 :(得分:1)

第一个代码段相当于

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

而不是

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