Size: a a a

Scala User Group

2020 July 04

ЮБ

Юрий Бадальянц... in Scala User Group
Eugene Bosiakov
Ничоси у вас стек разнородный
А что тут разнородного?
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
Eugene Bosiakov
Это была цель все это попробовать в проде?
нет, цель приносить вэлью, соблюдая ссылочную прозрачность, а это просто либы, которые помогают это делать и решать проблемы заказчиков (заказчик один — сама же компания, это не аутсорс)
источник

NV

Nikita Vilunov in Scala User Group
Ayrat Hudaygulov
но ещё лучше сделано в F# конечно. Там просто космос
Можешь показать?
источник

.

.tmp in Scala User Group
Eugene Bosiakov
Это была цель все это попробовать в проде?
у меня был такой же стек на проде
источник

.

.tmp in Scala User Group
дуби, хттп4с, коты и фс2
источник

VG

Vladislav Golub in Scala User Group
.tmp
дуби, хттп4с, коты и фс2
Это разве не дефолт?
источник

.

.tmp in Scala User Group
Vladislav Golub
Это разве не дефолт?
ну кому-то акка/плей + слик дефолт)
источник

EB

Eugene Bosiakov in Scala User Group
.tmp
ну кому-то акка/плей + слик дефолт)
мы все на анорме
источник

АК

Анатолий Кот... in Scala User Group
.tmp
дуби, хттп4с, коты и фс2
как уныло, вроде как с одной стороны большие возможности и выразительность языка должны открывать двери для решения новых, принципиально сложных задач, которые без вот этой вот гибкости языка было бы почти невозможно решить, но с другой стороны все скатывается в то, как мы затащили ф с дыркой чтоб писать круды((
источник

.

.tmp in Scala User Group
Анатолий Кот
как уныло, вроде как с одной стороны большие возможности и выразительность языка должны открывать двери для решения новых, принципиально сложных задач, которые без вот этой вот гибкости языка было бы почти невозможно решить, но с другой стороны все скатывается в то, как мы затащили ф с дыркой чтоб писать круды((
с чего вы взяли что это  были круды?
источник

.

.tmp in Scala User Group
модуль круд адмики была джанге вообще
источник

АК

Анатолий Кот... in Scala User Group
я не конкретно про ваш проект, а про дуби\хттпс\фс2 связку, которая вроде как дефолт если нужно писать круд с F
источник

.

.tmp in Scala User Group
Анатолий Кот
я не конкретно про ваш проект, а про дуби\хттпс\фс2 связку, которая вроде как дефолт если нужно писать круд с F
фс2 для крудов?)
источник

EB

Eugene Bosiakov in Scala User Group
Анатолий Кот
как уныло, вроде как с одной стороны большие возможности и выразительность языка должны открывать двери для решения новых, принципиально сложных задач, которые без вот этой вот гибкости языка было бы почти невозможно решить, но с другой стороны все скатывается в то, как мы затащили ф с дыркой чтоб писать круды((
> принципиально сложных задач, которые без вот этой вот гибкости языка было бы почти невозможно решить

Это какие например задачи?
источник

АК

Анатолий Кот... in Scala User Group
Eugene Bosiakov
> принципиально сложных задач, которые без вот этой вот гибкости языка было бы почти невозможно решить

Это какие например задачи?
когда задача требует дополнительных тайпсеф гарантий, манипуляций с аст и разного рода реврайт
https://github.com/github/semantic/blob/master/docs/why-haskell.md
мне вот этот пример приходит в голову
источник

EB

Eugene Bosiakov in Scala User Group
Анатолий Кот
когда задача требует дополнительных тайпсеф гарантий, манипуляций с аст и разного рода реврайт
https://github.com/github/semantic/blob/master/docs/why-haskell.md
мне вот этот пример приходит в голову
какие задачи требуют манипуляций с AST?)
источник

АК

Анатолий Кот... in Scala User Group
.tmp
фс2 для крудов?)
а что не так? стриминг в крудах mauvais ton?
источник

AH

Ayrat Hudaygulov in Scala User Group
Nikita Vilunov
Можешь показать?
вот тут куча примеров

https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/computation-expressions

Вкратце мысль - ты можешь открыть контекст (например async {  …. }), в котором появляются дополнительные синтаксические конструкции работающие в этом контексте:

let! - это flatMap
do! - это flatMap, где должен быть юнит
async {
 let! result = getAsync()
 do! saveAsync result
 return result
}



при этом любую базовую конструкцию языка можно переопределить - for, while, try-catch, using и пр
as
ync {
 for x in xs do // здесь for переопределен таким образом что он чекает отмену контекста на каждой итерации и отменит весь блок сам. Никакого бойлерплейта
   do! someLongActionAsync()
}

Можно в этот контекст добавить ленивости вычислений, можно заставить весь контекст возвращать не результат а АСТ и трансформить его в другой язык на лету
например

quer
y {
   for student in db.Student do
   where (student.StudentID = 1)
   select student
   exactlyOne
} // на выходе здесь AST, которое превращается в любой квери

ну
короче, там можно творить любую дичь в F#
источник

.

.tmp in Scala User Group
Анатолий Кот
а что не так? стриминг в крудах mauvais ton?
что для вас круд? для меня create-read-update-delete типовый сервак, хз где тут стримы
источник

АК

Анатолий Кот... in Scala User Group
.tmp
что для вас круд? для меня create-read-update-delete типовый сервак, хз где тут стримы
grpc стриминг +  бд с реактивыми драйверами, которые позволяют вам данные стримить - чем вам не круд?
источник