Size: a a a

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

2018 July 19

AK

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

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
ну то есть есть оператор #, который как |> в Эльме, если бы это просто функции были, то можно было бы через него
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
Но тут напрашиваются бинды, есть эффекты в каждой строчке, и всякое такое
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
то есть каждая строка внутри do это ... -> API -> API (или Structure -> Structure). Может быть тогда сделать как-то так?

data Subject = Thing' Thing | OtherThing' OtherThing | None

data API = Aff Unit Subject


и от этого плясать?
источник

VY

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

fetchFoo ∷ Integer -> Aff (Either Error Foo)
fetchFoo id = do
 response <- attempt $ _.response <$> AX.get Response.json url
 pure $ response >>= JSON.decode
 where
 url = mkUrl $ "/foos/" <> id

и еще какая-то другая, наподобе, которая зависит от Foo (первый аргумент у нее имеет тип Foo)
то можно просто написать что-то типа:

fetchX = launchAff_ $
  foo1 <- fetchFoo 1
  foo2 <- fetchBar foo1
  ...
и тут дальше что-то еще делается
после $ это все Aff, можно делать что угодно, выполнять сколько угодно последовательных\параллельных эффектов итд
источник

к

кана in PureScript — русскоговорящее сообщество
Anton Kotenko
мне не очень понятно как делать API для структур типа:

Structure { things: List Thing, somethingRelatedToOtherThings: ... }

Thing { otherThings: List OtherThing }

build = do 
    thing <- addThing ...
    otherThing <- addToThing thing ...
    modifyThing thing ...
    modifyOtherThing otherThing ...
    pure ..
источник

к

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

к

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

AK

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

AK

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

к

кана in PureScript — русскоговорящее сообщество
это просто сложный рекорд?
источник

к

кана in PureScript — русскоговорящее сообщество
тогда ничего кроме линз и не нужно
источник

VY

Vasiliy Yorkin in PureScript — русскоговорящее сообщество
+
тогда не важно что я выше писал)
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
Есть функции которые делают:

`... -> Structure -> Eff ... Structure` и `... -> Structure -> Aff ... Structure`
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
На основе внутренностей `Structure`
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
Вроде рекорд это не делает сложно сложным, он остаётся просто сложным
источник

AK

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

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
кана
тогда ничего кроме линз и не нужно
А есть примеры хорошие?
источник

AK

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

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
Есть :)
источник