
Alexander
19.10.2018
15:02:48
Это спор математиков с инженерами. Я инженер, мне кажется что математика не помогает находить новые решения, а только оптимизировать старые

Mikhail
19.10.2018
15:02:52
Сейчас в Arrow тайпклассы реализованны на контекстах, кажется

Alexander
19.10.2018
15:03:14
Там все как-то не съедобно

Boris
19.10.2018
15:03:24

Google

Andrey
19.10.2018
15:03:55

Alexander
19.10.2018
15:03:56
математика кстати не гарантирует удобавства исползьзования. А это гораздо важнее

Mikhail
19.10.2018
15:04:16
Option.functor().run {
Some(1).map { it + 1 }
}
вот пример из доки

Boris
19.10.2018
15:05:18

Mikhail
19.10.2018
15:05:54
как interface, условно говоря сущность с определенными для нее функциями, так и тайпкласс - сущность с extension функциями
чур к терминологии не прикапываться

Boris
19.10.2018
15:06:57

dimiii
19.10.2018
15:07:05

Mikhail
19.10.2018
15:07:42
Исходя из такой аналогии можно ли говорить что типоклассы - это сумма экстеншнов, а вложенные контексты - произведение?

Andrey
19.10.2018
15:07:57

Google

Bogdan
19.10.2018
15:08:52

Alexander
19.10.2018
15:08:59
Тем не менее програмистов, работающих на хаскеле или скале почти бесконечно мало. А более молодые языки, которые используют то же самое ФП в не столь "чистом" виде набирают обороты.
Язык, для писания на котором, нужно иметь степень по CS, имеет очень ограниченное применение.

Egor
19.10.2018
15:10:39
Ну вот кстати нет. теркат требует только терпения и некоторого количества времени, вовсе необязательно получать PhD

Boris
19.10.2018
15:10:49

Alexander
19.10.2018
15:10:59
Я про магистерскую степень, но не так важно
Для декларативности и функциональности нужны одни и те же структуры

Boris
19.10.2018
15:11:43

Andrey
19.10.2018
15:12:06

Bogdan
19.10.2018
15:12:19

Quantum Harmonizer
19.10.2018
15:12:36

Boris
19.10.2018
15:12:42

Andrey
19.10.2018
15:13:15

Bogdan
19.10.2018
15:13:37
(это про то что типа ООП не гавно)

Alexander
19.10.2018
15:13:58
Работа с дслями подразумевает всякие функциональные штучки типа передачи функций в качестве аргументов и рекурсии. Опять же отсутствие состояния.

Mikhail
19.10.2018
15:14:06
а я думал что детский лисп - это scheme

Quantum Harmonizer
19.10.2018
15:14:07

Bogdan
19.10.2018
15:14:35
бизнес не хочет делать "идеальный" ООП язык, он хочет бабок

Google

Quantum Harmonizer
19.10.2018
15:14:37

Andrey
19.10.2018
15:14:39

Boris
19.10.2018
15:14:52

Bogdan
19.10.2018
15:15:09

Andrey
19.10.2018
15:15:17

Alexander
19.10.2018
15:15:42
Все можно сделать на С, это не значит, что там это удобно делать. На Java тоже можно. Опять все путают возможности языка и его парадигму

Bogdan
19.10.2018
15:15:48

Egor
19.10.2018
15:15:57

Bogdan
19.10.2018
15:15:59
как ф фп яп это делают ?

Quantum Harmonizer
19.10.2018
15:16:08
разве лямбда не исключительно языковая штука?

Boris
19.10.2018
15:16:28

Andrey
19.10.2018
15:16:40
Передать можно, а вот объявить анонимную функцию внутри другой - нельзя. Соответственно нельзя захватить свободные переменные из лексического контекста.

Boris
19.10.2018
15:17:22

Mikhail
19.10.2018
15:17:39

Andrey
19.10.2018
15:17:54
То, что анонимные объекты тоже замыкания говорит лишь о том, что современное ООП является расширением ФП парадигмы.

Mikhail
19.10.2018
15:18:50
ладно, мы отклонились от мультиконтекстов

Bogdan
19.10.2018
15:19:00

Egor
19.10.2018
15:19:08
или то, что анонимные объекты выходят из классического определения ООП

Bogdan
19.10.2018
15:19:10
что по сути, это одно и тоже

Google

Bogdan
19.10.2018
15:19:18
функция -> объект производящий действие

Boris
19.10.2018
15:20:13

Andrey
19.10.2018
15:20:45
воот, и я про то
Ок. Математики рассуждают об объектах в терминах теории категорий и лямбда исчисления. В CS считается, что ООП - это ФП + явное энкапсулированное состояние и наследование.

Boris
19.10.2018
15:20:51
Можно так же сказать, что колесо инородно автомобилю, потому что его придумали для телег

Bogdan
19.10.2018
15:21:34

Anna
19.10.2018
15:21:44
Господа, а где про эти контексты вложенные можно почитать вообще? ?

Mikhail
19.10.2018
15:22:17

Boris
19.10.2018
15:22:22

Mikhail
19.10.2018
15:22:25
я не встречал такого

Alexander
19.10.2018
15:22:26

Andrey
19.10.2018
15:22:28
так что ООП не против ФП. Современное ООП шире ФП, за что расплачивается большей сложностью в плане проверки корректности.

Anna
19.10.2018
15:22:54
кажется что нигде
ну тут понятно, что новенькое что-то придумали. Но ничего похожего даже не было?

Alexander
19.10.2018
15:23:02

Mikhail
19.10.2018
15:23:06

Alexander
19.10.2018
15:23:29

Andrey
19.10.2018
15:23:34
При этом в ООП не приходится столько приседаний вокруг состояния и побочных эффектов делать, как в ФП

Anna
19.10.2018
15:23:54
Я просто фишку не уловила сходу, поэтому думаю, как бы сделать так, чтобы уловить

Alexander
19.10.2018
15:24:24
В качестве примера применения смотри меня: https://github.com/altavir/kmath/blob/dev/kmath-core/src/commonMain/kotlin/scientifik/kmath/operations/Fields.kt

Google

Anna
19.10.2018
15:24:39

Boris
19.10.2018
15:24:40

Alexander
19.10.2018
15:24:42
Здесь пока вложенных нет, поскольку язык их не поддерживает

Mikhail
19.10.2018
15:24:43
https://discuss.kotlinlang.org/t/extension-function-property-with-two-receivers/2188 вот тут еще ишью

Egor
19.10.2018
15:24:54
Речь о том, чтобы у классов появлялась дополнительная функциональность в зависимости от того, где они находятся

Alexander
19.10.2018
15:24:56
Но они были бы очень кстати
Это и сейчас частично есть, но можно сделать больше и лучше

Anna
19.10.2018
15:25:38
А, типа из одного класса вызываем экстеншн - одно поведение, из другого - другое?

Alexander
19.10.2018
15:25:54
Не из, а в

Mikhail
19.10.2018
15:25:54

Egor
19.10.2018
15:25:58
Да, на самом деле, вложенные контексты как бы есть и сейчас, но они ограничены тем, что member extensions можно объявлять только внутри класса

Boris
19.10.2018
15:25:59

Anna
19.10.2018
15:26:39
Не из, а в
ну вызываем у объекта класса A внутри класса B - одно, внутри класса C - другое?

Alexander
19.10.2018
15:26:42

Andrey
19.10.2018
15:26:47

Alexander
19.10.2018
15:26:50

Andrey
19.10.2018
15:26:50
Как-то так

Mikhail
19.10.2018
15:27:15

Alexander
19.10.2018
15:27:28
Но на самом деле не совсем. Мы говорим о статическом языке, поэтому не поведелние меняется, а смысле выражения. Статического

Anna
19.10.2018
15:28:11
Спасибо, я поразмыслю ?

Mikhail
19.10.2018
15:28:17