Size: a a a

2020 March 06

DF

Dollar Føølish in rust_offtopic
Да, а вообще Доге уже выше говорил об этом
источник

DF

Dollar Føølish in rust_offtopic
Мне кажется Танк спорит ради спора
источник

G

Gymmasssorla in rust_offtopic
В статье Жуковского (которая в закрепе) самая наглядная иллюстрация к функтору
источник

Т8

Т-34 85 in rust_offtopic
λоλторт
Функтор это интерфейс, который состоит из одной функции, которая позволяет поменять содержимое _контейнера_ не меняя его структуру
Почему тоже самое нельзя сделать функцией?
источник

λ

λоλторт in rust_offtopic
Вот есть у тебя дерево с числами, а ты можешь его в дерево со строками превратить с помощью инстанса функтора
источник

p

polunin.ai in rust_offtopic
Gymmasssorla
Поверил или как?
Во что?
источник

G

Gymmasssorla in rust_offtopic
источник

G

Gymmasssorla in rust_offtopic
Это смысл функтора
источник

DS

Doge Shibu in rust_offtopic
Т-34 85
Лишние усложнения на ровном месте
Наоборот же, обьекты можно выразить целиком через функции.

И функция как штука сильно проще, чем обьекты.
То есть не зря в теории типов обьекты выражаются через функции, как и вообще всё остальное
источник

λ

λоλторт in rust_offtopic
Т-34 85
Почему тоже самое нельзя сделать функцией?
Потому что на каждый тип _контейнера_ тебе понадобится отдельная функция и ты не сможешь по типу контейнера абстрагироваться
источник

p

polunin.ai in rust_offtopic
Gymmasssorla
@p0lunin @pavlus_0 Т-34

Ссылочная прозрачность - свойство выражения, когда expression можно заменить на его значение без изменения работы программы. Чистая функция - та функция, вызов которой обладает ссылочной прозрачностью.

Посмотрите на этот пример кода на Rust. Здесь функции print_something, our_main и print_really_big чистые (о чём свидетельствует const), т.к. всегда возвращается эквивалентный Future. Внутри себя Future делает I/O.

В самом низу main - это то, что творится в интерпретаторе функционального языка программирования. Он вызывает наш our_main и уже делает грязную работу.

- Но весь мир же грязный!
Да, но нас это не волнует и волновать не должно.

- Но I/O же всё равно делается!
Пусть делается, наша программа же должна как-то работать. Просто мы хотим от ФП языка одновременно и ссылочную прозрачность, и возможность полноценного I/O.
Ну я это знал давно, и применяю
источник

Т8

Т-34 85 in rust_offtopic
λоλторт
Потому что на каждый тип _контейнера_ тебе понадобится отдельная функция и ты не сможешь по типу контейнера абстрагироваться
Шаблоны, дженерики?
источник

G

Gymmasssorla in rust_offtopic
polunin.ai
Ну я это знал давно, и применяю
Теперь представь, что Result, Option, Future (которая старая Future) - монады
источник

G

Gymmasssorla in rust_offtopic
По смыслу
источник

Т8

Т-34 85 in rust_offtopic
Doge Shibu
Наоборот же, обьекты можно выразить целиком через функции.

И функция как штука сильно проще, чем обьекты.
То есть не зря в теории типов обьекты выражаются через функции, как и вообще всё остальное
Не вижу в этом радости
источник

p

polunin.ai in rust_offtopic
Gymmasssorla
Теперь представь, что Result, Option, Future (которая старая Future) - монады
Ну и?
источник

Т8

Т-34 85 in rust_offtopic
λоλторт
Потому что на каждый тип _контейнера_ тебе понадобится отдельная функция и ты не сможешь по типу контейнера абстрагироваться
Даже полиморфизм подтипов может решить этот вопрос
источник

G

Gymmasssorla in rust_offtopic
polunin.ai
Ну и?
Ты каждый день пользуешься монадами, вот так
источник

DS

Doge Shibu in rust_offtopic
Т-34 85
Не вижу в этом радости
Разница в том, что функции более простая конструкция с точки зрения компилятора, тайп-чекера и т.п.

Обьект - это сложная фигня с иерархией наследования, конструкторами и десктрукторами, перегрузками методов и т.д. и т.п.

Функция - это простейщая фигня вообще без движущихся частей.

Она элементарно выражается и работает в системах типов.
источник

r

red75prime in rust_offtopic
А ещё мы каждый день пользуемся общей теорией относительности (GPS), квантовой механикой (светодиодные лампочки) и много чем ещё.
источник