MK
Size: a a a
MK
MP
MP
MK
MP
MK
m
на ST s
, PrimState m
на s
, а v
на STVector s
MK
MK
к
MK
loop !l !u
| u <= l = return l
| otherwise = do e' <- unsafeRead vec k
case cmp e' e of
LT -> loop (k+1) u
EQ -> return k
GT -> loop l k
where k = midPoint u l
MK
MK
unsafeRead
лучше unsafeAt
или как он тамMK
MK
modify
на худой конец, спрятав ST
от пользователяMP
MP
MP
AV
runST $ unsafeThaw s >>= \v -> binarySearch v x
AV
MK