Size: a a a

2021 March 24

АГ

Александр Гранин... in ФП
В лучшем случае Clojure
источник

IZ

Ilia Zviagin in ФП
Ну я б поспорил, но не буду
источник

АГ

Александр Гранин... in ФП
😈
источник

IZ

Ilia Zviagin in ФП
Да в плане Dart вообще даже не в этом проблема, есть вообще сомнения, что это — язык программирования, даже без ФП...
источник

IZ

Ilia Zviagin in ФП
ладно...
источник

АГ

Александр Гранин... in ФП
На сцену выходит Брагилевский:
"Ну конечно же язык программирования! Что за чушь вообще"
источник

DK

Daniil Kostin in ФП
Ilia Zviagin
Да в плане Dart вообще даже не в этом проблема, есть вообще сомнения, что это — язык программирования, даже без ФП...
Что вы называете ЯП?
Да, ему далеко до C# 8 но где-то на уровне 3-го думаю он находится.
источник

a

allter in ФП
Daniil Kostin
что-то подобное и пытаюсь в упрощенном виде
Судя по вашему описанию, в упрощённом виде не получится. Если вы хотите консистентность не запихивая логику в границы одной транзакции (а я вангую, что ваш ORM не позволит сгруппировать) - то вам придётся учитывать в т.ч. случаи когда злой электрик будет вырубать ваш сервер в процессе работы. А если можно запихнуть - то как выше предлагали, работу с базой можно описать в терминах монад типа ConnectionIO в doobie с тем, что бы потом скомпозировать в конкретные транзакционные запросы.
источник

DK

Daniil Kostin in ФП
allter
Судя по вашему описанию, в упрощённом виде не получится. Если вы хотите консистентность не запихивая логику в границы одной транзакции (а я вангую, что ваш ORM не позволит сгруппировать) - то вам придётся учитывать в т.ч. случаи когда злой электрик будет вырубать ваш сервер в процессе работы. А если можно запихнуть - то как выше предлагали, работу с базой можно описать в терминах монад типа ConnectionIO в doobie с тем, что бы потом скомпозировать в конкретные транзакционные запросы.
Пока я держусь за идею такую:
txContext ->
 tx1 {
   completeWithResult(result1);
   await txContext.commitOrFail();
 },
 tx2 {
   completeWithResult(result2);
   await txContext.commitOrFail();
 }
txContext -> commit() -> forEach((result) => print(result))

Сгруппировать транзакции через контекст.
Контекст отлавливает все исключения и командует коммитить или откатывать.
ConnectionIO посмотрю. Пока для меня это вырисовывается в TaskMonad c колбеком на завершение + FreeMonad чтобы это последовательно выполнять.
источник

P

Purple in ФП
Daniil Kostin
Async как я понимаю это второй отложеный результат
Мне скорее надо обертку над функцией
TransactionTask<ResultType> createTitle(String title) => TransactionTask<ResultType>.create((TransactionTask<ResultType> it) {

 // write title
 it.returnResult(titleData);
 var ok = await it.allCompleted();
 if(!ok) {
   // rollback
   // delete title
 }
}


Но потом какими методами должен обладать TransactionTask, чтобы делать цепочки с вложенными цепочками?
Или надо дополнительную обертку(монаду) над этим типа TransactionTasksCompleter<TransactionTask>?
Прошу прощения что влезаю, но Dart это сугубо ООП язык, я бы не стал в нем пытаться городить ФП
источник

DK

Daniil Kostin in ФП
Purple
Прошу прощения что влезаю, но Dart это сугубо ООП язык, я бы не стал в нем пытаться городить ФП
С++, Java тоже, но никто не мешает.
Я понимаю минусы с повышеным потреблением памяти, но мне кажется, что сама архитектура так будет проще.
источник

P

Purple in ФП
Вы планируете с Flutter использовать? Тогда совсем печаль по производительности будет.
источник

DK

Daniil Kostin in ФП
Purple
Вы планируете с Flutter использовать? Тогда совсем печаль по производительности будет.
Вообще в идеале я б потружил ООП и ФП 🙂
Ну у меня и так саги есть, они в изоляты(потоки) выносятся.
Вся беда от архитектуры зависит имхо. Если UI и логика в одной куче - то беда-беда.
источник

P

Purple in ФП
Ilia Zviagin
Да в плане Dart вообще даже не в этом проблема, есть вообще сомнения, что это — язык программирования, даже без ФП...
Да нет, он определено язык. Но вот парадигма..
источник

DK

Daniil Kostin in ФП
Purple
Да нет, он определено язык. Но вот парадигма..
зато кросплатформенно, быстро в реализации, шустро по производительности.
с остальным приходиться мириться. Kotlin crossplatform пока сыроват.
источник

P

Purple in ФП
Daniil Kostin
зато кросплатформенно, быстро в реализации, шустро по производительности.
с остальным приходиться мириться. Kotlin crossplatform пока сыроват.
Под парадигмой я имел ввиду ООП :)
источник

ЗП

Зигохистоморфный Пре... in ФП
Daniil Kostin
Вообще в идеале я б потружил ООП и ФП 🙂
Ну у меня и так саги есть, они в изоляты(потоки) выносятся.
Вся беда от архитектуры зависит имхо. Если UI и логика в одной куче - то беда-беда.
тогда бери скалу/котлин можно обелиск)
источник

ЗП

Зигохистоморфный Пре... in ФП
кстати как там ксамарин поживает?)
источник

ЗП

Зигохистоморфный Пре... in ФП
в нем же на f# писать тоже можно
источник

P

Purple in ФП
Делают вроде что-то на нем, да
источник