Size: a a a

PureScript — русскоговорящее сообщество

2019 May 28

λ

λоλторт in PureScript — русскоговорящее сообщество
Зачем?
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
Лично я делаю алиас (`type` это алиас же) сложному рекорду, в котором внутри лежит список из элементов, которые обязаны работать с функциями из моего тайпкласса
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
Здесь это констрейнт на то, чтобы все элементы списка могли быть «презентабельны», проецирую констрейнты с функций, это неправильно?
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
Видел мнение, что только у функций надо делать констрейнты
источник

p

parket in PureScript — русскоговорящее сообщество
Anton Kotenko
Здесь это констрейнт на то, чтобы все элементы списка могли быть «презентабельны», проецирую констрейнты с функций, это неправильно?
Делай через existential
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
parket
Делай через existential
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
Ну, вернее в пурсе свой взгляд, а не проблемы, как я понимаю
источник

p

parket in PureScript — русскоговорящее сообщество
Нет в пурсе с этим проблем. Я тебе даже пример с FS приводил как-то :)
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
который с  eta?
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
такое в пурсе не работает: data Shape = forall a. Shape_ a => Shape a
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
И так тоже:

class FooA a where
   test :: a

data Test =
   Test (forall a. FooA a => { x :: List a })

type TestWrap a =
   { wrap :: Test
   }

func :: forall a. TestWrap a -> List a
func { wrap } =
   case wrap of
       (Test { x }) -> x
источник

λ

λоλторт in PureScript — русскоговорящее сообщество
Anton Kotenko
такое в пурсе не работает: data Shape = forall a. Shape_ a => Shape a
а может просто квантор переставить?
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
куда?
источник

λ

λоλторт in PureScript — русскоговорящее сообщество
Под Shape_
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
λоλторт
Под Shape_
а, так будет, да: data Shape = Shape (forall a. Shape_ a => a)
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
Anton Kotenko
И так тоже:

class FooA a where
   test :: a

data Test =
   Test (forall a. FooA a => { x :: List a })

type TestWrap a =
   { wrap :: Test
   }

func :: forall a. TestWrap a -> List a
func { wrap } =
   case wrap of
       (Test { x }) -> x
но не этот пример
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
Сорри, он дурацкий
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
class FooA a where
   test :: a

data Test a =
   Test (FooA a => { x :: List a })

type TestWrap a =
   { wrap :: Test a
   }

func :: forall a. TestWrap a -> List a
func { wrap } =
   case wrap of
       (Test { x }) -> x


так имелось в виду
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
то есть a пробрасывается из TestWrap
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
Но свою проблему я решил через data Test a = Test (Foo a => ... a), да, спасибо
источник