使用let解析错误(可能是不正确的缩进或不匹配的括号)

我得到

解析错误(可能不正确的缩进或不匹配的括号)

在线与 | i > j = do swap axs p j

apartition :: Ord a => STArray s Int a -> Int -> Int -> ST s Int
apartition axs p q = do 
  x <- readArray axs p
  let loop i j
    | i > j = do swap axs p j
                 return j
    | otherwise = do u <- readArray axs i
                     if u < x 
                       then do loop (i + 1) j 
                       else do swap axs i j
                            loop i (j ? 1)
  loop (p + 1) q

我真的对这个原因感到困惑,有人可以为我澄清一下吗?

回答

这是一个缩进错误,您需要在 的定义开头的右侧放置至少一个字符的保护loop,因此:

apartition :: Ord a => STArray s Int a -> Int -> Int -> ST s Int
apartition axs p q = do 
  x <- readArray axs p
  let loop i j
       | i > j = do swap axs p j
                    return j
       | otherwise = do u <- readArray axs i
                        if u < x 
                        then do loop (i + 1) j 
                        else do swap axs i j
                                loop i (j - 1)
  loop (p + 1) q


以上是使用let解析错误(可能是不正确的缩进或不匹配的括号)的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>