Size: a a a

2021 March 13

AL

Alexander Luzgarev in Haskell
Ortofax
есть ли какой-то глубокий смысл в том, что у instance Applicative ((->) r) pure это в точности комбинатор K, а (<*>) это в точности комбинатор S, которые вместе составляют комбинаторный базис?
Чуда не вижу я в том, Applicative так и придумали
источник

KV

Kirill Valyavin in Haskell
Задача со звёздочкой: придумать другой инстанс аппликатива для этого типа, чтобы он был согласован с монадическим
источник

ЗП

Зигохистоморфный Пре... in Haskell
можно еще просто почитать вот это
http://www.staff.city.ac.uk/~ross/papers/Applicative.pdf
источник

DS

Dmitrii Skurikhin in Haskell
ScopedTypeVariables работает для инстансов классов как и для функций?
a s, объявленные сверху будут видны внутри show?
{-# LANGUAGE ScopedTypeVariables #-}

instance forall a s. Show a => Show (MV.MVector s a) where
 show vec = show $ ST.runST $ forM indexes readElem
   where
     indexes = [0..(MV.length vec)]
     readElem = MV.read vec
источник

к

кана in Haskell
проще, forall не нужен
источник

DS

Dmitrii Skurikhin in Haskell
тогда ошибка
Couldn't match type ‘m0’ with ‘ST.ST s1’
       because type variable ‘s1’ would escape its scope
источник

к

кана in Haskell
ну это ошибка кода, ты же runST запускаешь
источник

к

кана in Haskell
нельзя s вытаскивать из runST, а ты его в голову вытащил
источник

к

кана in Haskell
чтобы сделать инстанс Show для MV.MVector s a, его сначала нужно зафризить в Vector a
источник

к

кана in Haskell
или сделать свою функцию

showMVect :: Show a => MV.Vector s a -> ST s String

где не будет runST
источник

ЗП

Зигохистоморфный Пре... in Haskell
кана
нельзя s вытаскивать из runST, а ты его в голову вытащил
Экзистенциальная природа?)
источник

DS

Dmitrii Skurikhin in Haskell
кана
или сделать свою функцию

showMVect :: Show a => MV.Vector s a -> ST s String

где не будет runST
он всё-равно не поймёт что s одно и в декларации show и в showMVect
источник

к

кана in Haskell
так нет, нельзя засовывать showMVect в show
источник

к

кана in Haskell
невозможно написать show инстанс для MVect
источник

DS

Dmitrii Skurikhin in Haskell
оно сможет работать только внутри ST?
источник

DS

Dmitrii Skurikhin in Haskell
до freeze
источник

к

кана in Haskell
+. Или вызывать show для фриз значения
источник

DS

Dmitrii Skurikhin in Haskell
но фриз значение уже не будет MVector
источник

к

кана in Haskell
да, поэтому я и говорю, что для MVector невозможно написать show инстанс
источник

DS

Dmitrii Skurikhin in Haskell
разобрался, спасибо
источник