Size: a a a

2020 February 06

AZ

Alex Zhukovsky in rust_offtopic
Pavel
ты ща про асинхронность, или про отсутствие блокировки?
я говорил, про юзкейс в тестах
источник

AZ

Alex Zhukovsky in rust_offtopic
в тестах ты реализуешь тот интерфейс который есть, а не делаешь новый
источник

λ

λоλторт in rust_offtopic
Stanislav Popov
ну а мог бы просто передать интерфейс/обьект с теми же методами другой
Или взять из глобального скоупа и никто ничего в сигнатуре не увидит
источник

AZ

Alex Zhukovsky in rust_offtopic
Stanislav Popov
надо чтобы ктото таки показал этот трюк с заменой монады. все ио функции скипаются при этом или как? а если ответ от них нужен?
смысл эффектов в том, чтобы ты по сигнатуре видел что происходит
источник

AZ

Alex Zhukovsky in rust_offtopic
типа "ио - о, понятно"
источник

AZ

Alex Zhukovsky in rust_offtopic
или "ST - фу говно"
источник

P

Pavel in rust_offtopic
λоλторт
Или взять из глобального скоупа и никто ничего в сигнатуре не увидит
не сконструируется объект
источник

λ

λоλторт in rust_offtopic
Pavel
не сконструируется объект
почему не сконструируется?
источник

SP

Stanislav Popov in rust_offtopic
Alex Zhukovsky
типа "ио - о, понятно"
так все с ио. там только какие то гении делают свой стек монад но ладно предположим таки не все и можно кусок кода изолировать
источник

P

Pavel in rust_offtopic
λоλторт
почему не сконструируется?
потому, что инъекция зависимостей, а не статические синглтоны
источник

AZ

Alex Zhukovsky in rust_offtopic
Stanislav Popov
так все с ио. там только какие то гении делают свой стек монад но ладно предположим таки не все и можно кусок кода изолировать
нет, ИО у тебя не должно быть в логике вообще
источник

λ

λоλторт in rust_offtopic
Alex Zhukovsky
я могу написать

foo :: Int -> Int -> m Int

И дальше:

1. вызвать это с Par - получить параллельность
2. вызвать с Async - получить асинхронность
3. вызвать с Either - получить возможность обработать ошибку
4. вызвать с Id - выполнить операцию без эффектов
у такой функции могут быть только 3 реализации: foo = undefined, foo _ = undefined и foo _ _ = undefined
источник

AZ

Alex Zhukovsky in rust_offtopic
гением для этого быть не надо
источник

SP

Stanislav Popov in rust_offtopic
а можно монадический код продолжить исполнять не с начала?
источник

AZ

Alex Zhukovsky in rust_offtopic
λоλторт
у такой функции могут быть только 3 реализации: foo = undefined, foo _ = undefined и foo _ _ = undefined
там (Monad m) => в контексте выше, не придирайся
источник

AZ

Alex Zhukovsky in rust_offtopic
Stanislav Popov
а можно монадический код продолжить исполнять не с начала?
s/монадический/
источник

AZ

Alex Zhukovsky in rust_offtopic
не понял вопроса
источник

λ

λоλторт in rust_offtopic
Stanislav Popov
так все с ио. там только какие то гении делают свой стек монад но ладно предположим таки не все и можно кусок кода изолировать
чистое IO во внутренней логике приложения используется примерно никогда
источник

P

Pavel in rust_offtopic
Stanislav Popov
а можно монадический код продолжить исполнять не с начала?
у него внутри не обязательно есть та очерёдность, которую ты пишешь снаружи, для него сложно определить понятие "начало" и "не начало", как можно было бы сделать в императивном подходе.
источник

λ

λоλторт in rust_offtopic
Stanislav Popov
а можно монадический код продолжить исполнять не с начала?
уточни, что ты имеешь ввиду
источник