Size: a a a

2020 March 05

P

Pavel in rust_offtopic
λоλторт
Этот стейт можно спрятать в контексте исполнения
как понять, что должно быть в стейте для вызова функции и чем это отличается от явной применяемой инъекции зависимостей в ооп?
источник

DS

Doge Shibu in rust_offtopic
polunin.ai
так падажжи
допустим есть последовательность:
WORLD <- func()
здесь func() грязная
если я сделаю
WORLD <- wrapper() <- func()
то func() станет чистой?
Не смотри на слово чистое, это плохое слово, оно плохо описывает то, что в ФП происходит.

Идея в том, что если у тебя раньше была функция
def count() -> int: 
  return get_counter()

Она не была сылочно прозрачной. Т.к если ты все вызовы count() заменишь на её возвращаемое значение, то ты получишь какую-то константу везде и потеряешь поведение программы.

Теперь ты сделал так:
def count_io() -> IO[int]:
  return lambda real_world: get_counter()

Теперь если ты эту функцию заменишь на её значение, то поведение не изменится, т.к. сама фyнкция count_io() ничего не делает с эффектами, она просто возвращает замыкание.

Соотвественно она ссылочно прозрачная.
источник

P

Pavel in rust_offtopic
Gymmasssorla
С другим посевом = другой
тот же с другим посевом
источник

λ

λоλторт in rust_offtopic
polunin.ai
если функция с сигнатурой fn foo() -> i32, и которая возвращает разные значения каждый вызов чистая, то не вижу разницы между чистыми и нет функциями
Но она не чистая.
источник

G

Gymmasssorla in rust_offtopic
polunin.ai
если функция с сигнатурой fn foo() -> i32, и которая возвращает разные значения каждый вызов чистая, то не вижу разницы между чистыми и нет функциями
Да, правильно. Поэтому у rand в аргументе ГПСЧ
источник

G

Gymmasssorla in rust_offtopic
И выдаёт оно число и ГПСЧ обновлённый уже
источник

p

polunin.ai in rust_offtopic
Doge Shibu
Не смотри на слово чистое, это плохое слово, оно плохо описывает то, что в ФП происходит.

Идея в том, что если у тебя раньше была функция
def count() -> int: 
  return get_counter()

Она не была сылочно прозрачной. Т.к если ты все вызовы count() заменишь на её возвращаемое значение, то ты получишь какую-то константу везде и потеряешь поведение программы.

Теперь ты сделал так:
def count_io() -> IO[int]:
  return lambda real_world: get_counter()

Теперь если ты эту функцию заменишь на её значение, то поведение не изменится, т.к. сама фyнкция count_io() ничего не делает с эффектами, она просто возвращает замыкание.

Соотвественно она ссылочно прозрачная.
но потом лямбду нужно вызвать
источник

λ

λоλторт in rust_offtopic
Pavel
как понять, что должно быть в стейте для вызова функции и чем это отличается от явной применяемой инъекции зависимостей в ооп?
Это всё будет в типах, от которых можно абстрагироваться там, где о них не надо знать всё
источник

P

Pavel in rust_offtopic
λоλторт
Это всё будет в типах, от которых можно абстрагироваться там, где о них не надо знать всё
привет, это IoC container, без фп
источник

λ

λоλторт in rust_offtopic
Pavel
привет, это IoC container, без фп
Только не один иок контейнер не даёт того, что дает нормальная система эффектов
источник

P

Pavel in rust_offtopic
λоλторт
Только не один иок контейнер не даёт того, что дает нормальная система эффектов
да ладно
источник

P

Pavel in rust_offtopic
и чайник вокруг солнца не летает
источник

λ

λоλторт in rust_offtopic
Да писал я на вашем оопе в начале своей карьеры и это было адище
источник

P

Pavel in rust_offtopic
λоλторт
Да писал я на вашем оопе в начале своей карьеры и это было адище
s/ооп/фп/
источник

S

SedSub in rust_offtopic
λоλторт
Да писал я на вашем оопе в начале своей карьеры и это было адище
Да писал я на вашем фпе в начале своей карьеры и это было адище
источник

λ

λоλторт in rust_offtopic
Pavel
s/ооп/фп/
Врешь
источник

p

polunin.ai in rust_offtopic
знатоки с++, это реально так? сравнение указателей?
и компилятор это пропихивает в себя?
источник

DS

Doge Shibu in rust_offtopic
polunin.ai
но потом лямбду нужно вызвать
Теперь мы всю программу свою собираем из таких лямбд, каждая функция возвращает какое-то замыкание подобного типа.

Какое действие идёт по порядку за каким мы описываем через композицию подобных функций.

В итоге вся программа выглядит как гигансткая лямбда собранная из мелких копозицией.

И каждая функция в ней - ссылочно прозрачная, т.к. возвращает замыкание.
источник

G

Gymmasssorla in rust_offtopic
polunin.ai
знатоки с++, это реально так? сравнение указателей?
и компилятор это пропихивает в себя?
Да
источник

P

Pavel in rust_offtopic
λоλторт
Врешь
как и ты
источник