我明白了
parse error (possibly incorrect indentation or mismatched brackets)
用|就行了i > j = 交换轴 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
我真的很困惑造成这种情况的原因,有人可以帮我解决问题吗?
最佳答案
这是一个缩进错误,您需要在循环
定义开头的右侧放置至少一个字符,因此:
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
关于haskell - 使用 let 在线解析错误(可能是不正确的缩进或不匹配的括号),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66976104/