@kotlin_lang

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

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

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

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

Andrey
19.10.2018
15:07:57
Это спор математиков с инженерами. Я инженер, мне кажется что математика не помогает находить новые решения, а только оптимизировать старые
Ну тут не правда ваша. Современная математика сильно дальше ушла, чем науки, которые этим языком пользуются, и уж тем более, чем инженерные дисциплины, как мне кажется. То же ФП, становящееся всё более модным, было обосновано ещё в 30-х годах 20 века

Google
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
Язык, для писания на котором, нужно иметь степень по CS, имеет очень ограниченное применение.
Да не нужно для Haskell степени по CS. Он вообще сильно проще, чем Котлин, Джава и прочее. Он просто сильно другой, а так прекрасно понимается школьниками, как тот же LOGO (детский Lisp по сути)

Bogdan
19.10.2018
15:12:19
Декларативность не связана с функциональностью языка
вот и я про то, ООП в основно императивен, вот поэтому люди и лехут в ФП, популярность ФП не связана с самим фп

Andrey
19.10.2018
15:13:15
но... Logo же совсем императивный
Ни разу. Чистый Lisp. Все циклы через рекурсию, новые слова определяем через композицию старых

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

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

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

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

Google
Andrey
19.10.2018
15:14:39
fd 10 lt 90 fd 100500 это ж императивный код
Ок. Это работа в IO контексте.

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

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
Передать можно, а вот объявить анонимную функцию внутри другой - нельзя. Соответственно нельзя захватить свободные переменные из лексического контекста.

Mikhail
19.10.2018
15:17:39
Но замыкания вещь не исключительно функциональная
The concept of closures was developed in the 1960s for the mechanical evaluation of expressions in the λ-calculus

Andrey
19.10.2018
15:17:54
Но замыкания вещь не исключительно функциональная
Нет конечно. Хотя да. Замыкание - захват свободной переменной из лексического контекста. То, что в лямбда абстракциях формализовано.

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

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

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

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

Google
Boris
19.10.2018
15:20:13
Нет конечно. Хотя да. Замыкание - захват свободной переменной из лексического контекста. То, что в лямбда абстракциях формализовано.
Этот захват есть много где и уже давно, не только в функциональных языках. Это просто удобный механизм. Где он в первый раз был применен не суть важно

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

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

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

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

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

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

Alexander
19.10.2018
15:23:02
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
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
https://discuss.kotlinlang.org/t/extension-function-property-with-two-receivers/2188 вот тут еще ишью
вот тут yole говорит что не хотят пока добавлять такое, из-за сложности концепции

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
вот тут yole говорит что не хотят пока добавлять такое, из-за сложности концепции
Там техническая проблема на уровне совместимости с JVM. Идейно в языке ее нет.

Andrey
19.10.2018
15:26:47
А, типа из одного класса вызываем экстеншн - одно поведение, из другого - другое?
В рамках одного контекста есть один метод, в рамках другого - другой, в рамках вложенного контекста из первого и второго есть оба метода.

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

Страница 961 из 982