Size: a a a

Scala User Group

2020 July 23

GD

Gleb Donets in Scala User Group
Deλ✨
Фп несёт некоторые самоограничения в программировании на нечисто функциональном языке, например не мутировать стейт, использовать только чистые функции
А, это. Справедливо, про чистые функции нужно было держать в голове.
Что же до мутации состояния - стоит лишь раз застрелить себя в ногу этой мутацией, как сразу понимаешь преимущества немутируемых сущностей, так что это легко
источник

GD

Gleb Donets in Scala User Group
Хотя в целом вопрос был про то, на что самому обращать внимание, если переходишь
источник

D

Deλ✨ in Scala User Group
Gleb Donets
Хотя в целом вопрос был про то, на что самому обращать внимание, если переходишь
источник

GD

Gleb Donets in Scala User Group
Спасибо, уже. Некоторые моменты, впрочем, не совсем понятны, но это перечитать надо
источник

GP

Grigory Pomadchin in Scala User Group
Gleb Donets
Спасибо, уже. Некоторые моменты, впрочем, не совсем понятны, но это перечитать надо
это какие?
источник

GD

Gleb Donets in Scala User Group
Grigory Pomadchin
это какие?
Моноиды и монады. Я понимаю, для чего чаще всего используются монады, но к концепции он подходил слишком долго, не люблю так
источник

GD

Gleb Donets in Scala User Group
Лучше бы начал с определения, а потом уже приводил пример
источник

GP

Grigory Pomadchin in Scala User Group
Gleb Donets
Лучше бы начал с определения, а потом уже приводил пример
это оч спорно
источник

GD

Gleb Donets in Scala User Group
Но это дело вкуса, но из-за этого пока дошли до сути, я забыл, с чего он начинал
источник

GD

Gleb Donets in Scala User Group
Grigory Pomadchin
это оч спорно
Да, часто лучше постепенно объяснять
источник

GP

Grigory Pomadchin in Scala User Group
мне кажется сложно в фп то что все функции, и как их композировать - это можно сделать кучей способов
источник

GP

Grigory Pomadchin in Scala User Group
вот это сложно
источник

GD

Gleb Donets in Scala User Group
Но я не уверен, что мне понятен концепт монад
источник

DR

Danila Romanov in Scala User Group
Ну моноид - достаточно простой для понимания объект, а монада - великий камень преткновения, про который точно понятно только что это не контейнер))
источник

GD

Gleb Donets in Scala User Group
Grigory Pomadchin
мне кажется сложно в фп то что все функции, и как их композировать - это можно сделать кучей способов
Навалить их всех в конструктор главного актора, как я сделал, например )))
источник

DR

Danila Romanov in Scala User Group
Gleb Donets
Но я не уверен, что мне понятен концепт монад
А как ты его понимаешь, собственно?
источник

GD

Gleb Donets in Scala User Group
Ибо времени не было на изучение того, как можно DI по людски сделать
источник

GP

Grigory Pomadchin in Scala User Group
Gleb Donets
Навалить их всех в конструктор главного актора, как я сделал, например )))
источник

GD

Gleb Donets in Scala User Group
В прод я бы такое, впрочем, не заливал
источник

λ

λoλzod in Scala User Group
Gleb Donets
Вдогонку: а в чем именно сложности писания на Скале (в функциональной манере) после ООП языков, что это так сложно?
ФП парадигма сильно отличается от процедурно-ООП подхода, и это так сразу наверное и не объяснить в двух словах. Но одна из попыток это сделать была бы такая:

Центральным инструментом становится функция, если в процедурном и ООП она была довольно простой штукой, то в ФП она раскрывается сильнее в деталях, мы начинаем обращать внимание на то что может быть в её теле, чистоту, возможности частичного применения, каррирование, полноту и прочее. Функции и их различные свойтства еще раз.

Появляется понятие эффектов и ссылочной прозрачности. Мы учимся разделять чисто математические (детерминированные) выражения и выражения с задействованием внешних переменных (баз данных, файлов, случайных чисел).

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

Нашей основной заботой становится написание композируемых, то есть хорошо стыкуемых элементов (типов, функций). Композиция.

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