Size: a a a

2020 May 08

MK

Maxim Koltsov in Haskell
а то я тут словил проблему и весь день мучаю пикеринга и fendor'а на тему hie, а проблема оказалась в ghc в генте
источник

MP

Misha Puzanov in Haskell
дико тупой вопрос
мне нужно сделать binarySearch :: Vector a -> a -> Maybe Index
и я вот смотрю на https://hackage.haskell.org/package/vector-algorithms-0.8.0.3/docs/Data-Vector-Algorithms-Search.html
и вообще нихрена не понимаю как этим пользоваться, есть где-нибудь осмысленные примеры этого ада? Или проще самому написать?
источник

MP

Misha Puzanov in Haskell
это в runST должно запускаться?
источник

MK

Maxim Koltsov in Haskell
да
источник

MP

Misha Puzanov in Haskell
господи но зачем
источник

MK

Maxim Koltsov in Haskell
мысленно замени m на ST s, PrimState m на s, а v на STVector s
источник

MK

Maxim Koltsov in Haskell
хороший вопрос
источник

MK

Maxim Koltsov in Haskell
почему-то автор решил что это должно работать с мутабельным вектором
источник

к

кана in Haskell
Misha Puzanov
господи но зачем
чтобы быстро наверное, там просто императивная имплементация
источник

MK

Maxim Koltsov in Haskell
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

Maxim Koltsov in Haskell
императивная
источник

MK

Maxim Koltsov in Haskell
но непонятно чем тут unsafeRead лучше unsafeAt или как он там
источник

MK

Maxim Koltsov in Haskell
интуитивно кажется, что гхц смог бы свернуть тут цикл и с иммутабельным вектором
источник

MK

Maxim Koltsov in Haskell
ну или modify на худой конец, спрятав ST от пользователя
источник

MP

Misha Puzanov in Haskell
Maxim Koltsov
почему-то автор решил что это должно работать с мутабельным вектором
подозреваю, что в качестве части какого-то пайплайна, типа сначала нашли куда вставлять, потом вставили
источник

MP

Misha Puzanov in Haskell
но отсутвие простого варианта как-то БЕСИТ
источник

MP

Misha Puzanov in Haskell
буду пробовать
источник

AV

Alexander Vershilov in Haskell
runST $ unsafeThaw s >>= \v -> binarySearch v x
источник

AV

Alexander Vershilov in Haskell
?
источник

MK

Maxim Koltsov in Haskell
Misha Puzanov
но отсутвие простого варианта как-то БЕСИТ
источник