Size: a a a

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

2019 May 28

VY

Vasiliy Yorkin in PureScript — русскоговорящее сообщество
ща, я у себя это попробую воспроизвести
источник

p

parket in PureScript — русскоговорящее сообщество
Vasiliy Yorkin
ща, я у себя это попробую воспроизвести
буду благодарен :)
источник

p

parket in PureScript — русскоговорящее сообщество
Vasiliy Yorkin
мм, в примере выше эффект это вроде как вывод в консоль
отложенные вычисления могут быть чистыми, как в defer :: (Unit -> l) -> l
Using Effects via the Foreign Function Interface

A computation of type Effect a is implemented in JavaScript as a zero-argument function whose body is expected to perform its side-effects before finally returning its result.


https://pursuit.purescript.org/packages/purescript-effect/2.0.1
источник

VY

Vasiliy Yorkin in PureScript — русскоговорящее сообщество
а, в этом смысле
источник

p

parket in PureScript — русскоговорящее сообщество
Ну да. Т.е. это вполне корректно

() => console.log("Foo") :: Effect Unit
источник

p

parket in PureScript — русскоговорящее сообщество
т.е. в моём примере

function(){
    var handler = function( val ){
        return cb( val )()
    }
    target.on( eventName, handler )
    return function(){
        console.log( "Detached" )
    }
}


Это как раз Effect ( Effect Unit )
источник

VY

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

p

parket in PureScript — русскоговорящее сообщество
Когда eval в ответ возвращает pure $ next H.Done. Я так понял.
источник

VY

Vasiliy Yorkin in PureScript — русскоговорящее сообщество
data SubscribeStatus

The status of an EventSource subscription. When a query raised by an EventSource evaluates to Done the producer will be unsubscribed from.

ну да

ок, ща, я у себя пробую
источник

AK

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


type Test a b =
   Foo a b => { x :: List a }


type TestWrap a b =
   { wrap :: Test a b
   }


func :: forall a b. Foo a b => TestWrap a b -> List a
func { wrap } =
   wrap.x
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
Говорит:

  Could not match constrained type

   Foo a0 b3 => { x :: List a0
                }

 with type

   { x :: List a0
   | t1
   }
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
При этом:

func :: forall a b. Foo a b => Test a b -> List a
func { x } = x


компилируется
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
это я не правильно понимаю констрейнтов?
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
По-разному пробовал добавить констрейнт к TestWrap
источник

p

parket in PureScript — русскоговорящее сообщество
А что нужно получить?
источник

AK

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

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
Чтобы все элементы списка x "имплементили" (простите) Foo, в такой вложенной записи
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
Можно убрать a b, оставить только a
источник

AK

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

type Test a =
   { x :: Foo a => List a }

type TestWrap a =
   { wrap :: Test a
   }

func :: forall a. Foo a => TestWrap a -> List a
func { wrap } =
   wrap.x
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
И относится ли это к этому ишью: https://github.com/purescript/purescript/issues/1957 ?
источник