Size: a a a

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

2019 March 27

VM

Vadim Marchenko in PureScript — русскоговорящее сообщество
А где Terminator?
источник

E

Eugene in PureScript — русскоговорящее сообщество
Vadim Marchenko
А где Terminator?
Он, видимо, ещё в хаскельчате внёс вас в белый список
источник

p

parket in PureScript — русскоговорящее сообщество
Может кто-то по Halogen подсказать?
Если у меня несколько разных чайлд компонентов. Как я для них слоты определяю?

Вот так чекается, но выглядит жуть:

data Page0Slot = Page0Slot
derive instance page0SlotEq  :: Eq  Page0Slot
derive instance page0SlotOrd :: Ord Page0Slot

data Page1Slot = Page1Slot
derive instance page1SlotEq  :: Eq  Page1Slot
derive instance page1SlotOrd :: Ord Page1Slot

type ChildSlot = Either2 Page0Slot Page1Slot


Всё так?
источник

VY

Vasiliy Yorkin in PureScript — русскоговорящее сообщество
в 5 можно как-то проще, сейчас посмотрю как точнее, а в 4 я использовал операторы для этого, но да, это раньше выглядело не оч
источник

p

parket in PureScript — русскоговорящее сообщество
data Slot
   = Page0Slot
   | Page1Slot

derive instance slotEq  :: Eq  Slot
derive instance slotOrd :: Ord Slot

type ChildSlot = Either2 Slot Slot
источник

p

parket in PureScript — русскоговорящее сообщество
Скорее так. По типу на слот то я гоню, скорее всего
источник

VY

Vasiliy Yorkin in PureScript — русскоговорящее сообщество
в 5 можно вот так
https://github.com/slamdata/purescript-halogen/blob/master/docs/Changes%20in%20v5.md#child-component-addressing
type ChildSlots =
 ( a :: H.Slot CA.Query Void Unit
 , b :: H.Slot CB.Query Void Unit
 , c :: H.Slot CC.Query Void Unit
 )

_a = SProxy :: SProxy "a"
_b = SProxy :: SProxy "b"
_c = SProxy :: SProxy "c"
источник

p

parket in PureScript — русскоговорящее сообщество
5 пока не трогаю :)
источник

p

parket in PureScript — русскоговорящее сообщество
На Row-types сделали? :)
источник

VY

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

VY

Vasiliy Yorkin in PureScript — русскоговорящее сообщество
вот у меня сейчас так
-- | Query algebra for direct children of the root component,
-- | represented as a `Coproduct`.
type ChildQuery
    = Home.Query
 <\/> Register.Query
 <\/> Login.Query
 <\/> ImportForm.Query
 <\/> EditForm.Query
 <\/> ViewForm.Query
 <\/> Profile.Query
 <\/> Settings.Query
 <\/> About.Query
 <\/> Dialog.Query
 <\/> Navigation.Query
 <\/> Const Void

-- | Slot type for child pages.
type ChildSlot
  = Home.Slot
 \/ Register.Slot
 \/ Login.Slot
 \/ ImportForm.Slot
 \/ EditForm.Slot
 \/ ViewForm.Slot
 \/ Profile.Slot
 \/ Settings.Slot
 \/ About.Slot
 \/ Dialog.Slot
 \/ Navigation.Slot
 \/ Void
на Halogen v4, пока тоже не переехал
источник

p

parket in PureScript — русскоговорящее сообщество
А что такое вот эти *.Slot?
источник

VY

Vasiliy Yorkin in PureScript — русскоговорящее сообщество
data Query a = Unit a
type Input = Unit
type Output = Void
type State = Unit

data Slot = Slot
derive instance eqSlot ∷ Eq Slot
derive instance ordSlot ∷ Ord Slot

type Component = H.Component HH.HTML Query Input Output
type DSL = H.ComponentDSL State Query Output
type HTML = H.ComponentHTML Query

page ∷ ∀ m. Component m
...
примерно одно и тоже в каждом компоненте, в завсимости от нужд
источник

p

parket in PureScript — русскоговорящее сообщество
Как-то странно, или я не понял что за слот такой
источник

VY

Vasiliy Yorkin in PureScript — русскоговорящее сообщество
type Input = Dialog

data Query a
 = Initialize a
 | Finalize a
 | HandleClose a
 | HandleAction Int a
 | HandleKey KeyboardEvent (SubscribeStatus → a)

type State = Input

data Output
 = Close
 | Action Int

data Slot = Slot
derive instance eqSlot ∷ Eq Slot
derive instance ordSlot ∷ Ord Slot

type Component = H.Component HH.HTML Query Input Output
type DSL = H.ComponentDSL State Query Output
type HTML = H.ComponentHTML Query

dialog ∷ ∀ m. MonadAff m ⇒ Component m
источник

VY

Vasiliy Yorkin in PureScript — русскоговорящее сообщество
parket
Как-то странно, или я не понял что за слот такой
ну просто адт с одним конструктором
источник

VY

Vasiliy Yorkin in PureScript — русскоговорящее сообщество
вместо Unit, можно было бы этого не делать, а просто везде юнит писать
источник

p

parket in PureScript — русскоговорящее сообщество
Нет, это я понял. Слот, я так понимаю, нам нужен чтоб идентифицировать смонтированый компонент. Т.е. должен быть определен там, где и компонент, который монтирует.
источник

VY

Vasiliy Yorkin in PureScript — русскоговорящее сообщество
а, зачем он вообще нужен внутри halogen и почему они это так сделали? я настолько глубоко не знаю, если честно, не разбирался
источник

p

parket in PureScript — русскоговорящее сообщество
Странная штука:

Care should be taken to avoid using the same slot address for multiple child components. The resulting behaviour is undefined... but almost certainly won't be good. If duplicate slot values are detected a warning message will be logged in the browser console.|


И потом:
type ChildSlot = Either3 Unit Unit Unit


И потом:
Here we are just using Unit for each of the slots since the example only uses one instance of each child component...
источник