
Alexander
03.08.2018
07:30:18
Скорее OutOfElectricityException

Andrew
03.08.2018
07:33:13

Alexander
03.08.2018
07:34:07
Это я понимаю, но это в некотором смысле нарушение контракта, бессмысленный код.
Я могу в принципе и `Nothing`обмануть, сделав вроде как бесконечный цикл, но прервав его по дороге каким-то способом

Google

Alexander
03.08.2018
07:34:56
наверное... не пробовал

Andrew
03.08.2018
07:37:28
Да нет, на самом деле, никакого нарушения контракта нету -- функция возвращает объект-синглтон, всё в порядке.
И прерванный бесконечный цикл -- не обман Nothing, который, собственно, просто гарантирует, что функция не вернёт значение в рамках обычного control flow.
Ну то есть если, положим, вызвать посредством JNI код, который поднимет нативный сигнал, и таким образом выйти из функции не через исключение в рамках JVM -- это всё ещё в рамках Nothing ?
Какая в этом практическая ценность -- другой вопрос.

Alexander
03.08.2018
07:39:09
Все это понятно. Вопрос в том, нужна ли теория категорий для того, чтобы это все понимать. Ваши примеры ровно также нарушают эти категории как и мое описание с контрактами.

Andrew
03.08.2018
07:43:07
Дык я наоборот о том, что никто ничего не нарушает. Всё вполне логично ложится в систему типов.
Для понимания конкретно Unit и Nothing на уровне, на котором они нужны практику, который JSON-чики в БД укладывает -- вряд ли. Для расширения кругозора наверняка штука полезная.
Но я боюсь глубоко нырять -- вдруг я ознакомлюсь с темой и пойму, что Kotlin -- ужасно неполноценный язык и уйду писать на Frege ?

Igor
03.08.2018
07:46:45

Alexander
03.08.2018
07:47:50
А вообще, во многих знаниях многие печали

Andrew
03.08.2018
07:49:01
Последний коммит 27 мая, вполне себе жив. А он собирался умирать? Я не интересовался особо им никогда)

Konstantin
03.08.2018
07:49:41
module Hello where
greeting friend = "Hello, " ++ friend ++ "!"
main args = do
println (greeting "World")
чота два плюсика в синтаксисе настораживают

Alexander
03.08.2018
07:50:24
У нас хаскелист в группе, как-то обсуждали

Andrew
03.08.2018
07:50:39

Google

Anton
03.08.2018
07:50:45

Alexander
03.08.2018
07:51:03
Не лезте в синтаксис хаскеля, у меня только от чтения голова болит

Konstantin
03.08.2018
07:51:09
книжка валяется по нему, скучает )

Quantum Harmonizer
03.08.2018
07:51:16

Konstantin
03.08.2018
07:51:33

Andrew
03.08.2018
07:51:47

Alexander
03.08.2018
07:52:14
Хаскелисты - это секта, они от него прутся

Andrew
03.08.2018
07:53:35
А потом мы удивляемся, что функциональщики в чатике набегами пытаются Котлин унижать. Надо быть выше этого, товарищи.

Konstantin
03.08.2018
07:53:52

Andrew
03.08.2018
07:54:50

Alexander
03.08.2018
07:54:54
А я не унижаю, я думаю, что они слишком умные для нас простых смертных

Andrew
03.08.2018
07:55:19

Alexander
03.08.2018
07:56:05
Когда мне теоретики про теорию струн начинают рассказывать, у меня уши тоже в трубочку сворачиваются. При всем уважении.
(Теория струн - это еще не самое мощное)

Igor
03.08.2018
07:56:24
Хаскелисты - это секта, они от него прутся
Они прутся от:
- краткости + выразительности
- понятности тк что бы понять что делает функция, надо видеть только сигнатуру (тк они чистые и не делают ничего неявно)
- стат. типизации (там ведь даже эффекты выражены в типах)
- простое тестирования (даешь аргументы - смотри результат, каждый раз возращается одно и тоже)
(а не просто от факта, что пишут на хаскеле и знаю (на пол шишечки) теоркат)

Andrew
03.08.2018
07:59:08
Параллелизм из коробки и широкое поле интерпретатору для оптимизаций ещё опущены как минимум.
Но тулинг, интероп с остальным миром и сообщество... Ну его.

Alexander
03.08.2018
07:59:12
Да какие возражения. Но от синтаксиса голова болит
Параллелизм там крутой, но ограниченный. Что-нибудь вроде переключения контекстов может быть очень сложным.
Вообще любой контроль рантайма.
Которого кстати нет

Google

Andrew
03.08.2018
08:03:22
Которого кстати нет
Я вот тут не просто "не настоящий сварщик", а "даже рядом не сварщик", но разве это не должно решаться в рамках IO?

Alexander
03.08.2018
08:04:37
Я тоже не прикладывался, говорю же, аллергия, но в чисто функциональных языках вообще нет рантайма, соответственно нет контроля поведелния в рантайме. Вроде как там все тоже можно сделать, но слооожно

Andrew
03.08.2018
08:06:37

Alexander
03.08.2018
08:06:58
Это был бы сферический язык в вакууме

Andrew
03.08.2018
08:10:26
Да фиг знает, никто не мешает писать на чисто функциональном языке библиотечный код и вызывать его из кода на другом языке. Тот же F# вполне себе могёт общаться с ООП-миром, но на нём всё-таки библиотеки пишут обычно ?
В качестве альтернативного варианта можно посмотреть на какую-нибудь прототипную Lua с подобной картиной.

Igor
03.08.2018
08:12:14

Andrew
03.08.2018
08:13:43

Igor
03.08.2018
08:17:21

Andrew
03.08.2018
08:17:50

Bogdan
03.08.2018
08:32:21

Andrew
03.08.2018
08:34:20

Igor
03.08.2018
08:35:55

Andrew
03.08.2018
08:37:24
Я согласен с тем, что соблюдать конкретную парадигму не должно быть самоцелью. Как обычно пафосно заявляют в таких случаях, каждой задаче -- свой инструмент.
*ушёл искать наушники*
В целом логично.
Не зря же тут в чатике постоянно ругают даггер и зависимости пропагандируют исключительно через конструкторы передавать. Оно ж о том же ?

Ivan
03.08.2018
08:41:37
сейчас бы кучу сервисов через конструктор тащить

Quantum Harmonizer
03.08.2018
08:41:53

Alexandr
03.08.2018
08:43:53

Ivan
03.08.2018
08:43:54

Andrew
03.08.2018
08:44:30
А 0 сервисов в зависимостях -- не лучше, чем куча.

Google

Ivan
03.08.2018
08:45:50
Уже два-три сервиса замусорят параметры конструктора

Quantum Harmonizer
03.08.2018
08:46:52

Andrew
03.08.2018
08:47:04

Ivan
03.08.2018
08:47:43

Quantum Harmonizer
03.08.2018
08:48:32

Alexandr
03.08.2018
08:52:33
если только у тебя не прилождение на 10 классов с моделями

Admin
ERROR: S client not available

Anton
03.08.2018
08:53:01
причем тут di ))

Alexandr
03.08.2018
08:53:03

Quantum Harmonizer
03.08.2018
08:53:07

Alexandr
03.08.2018
08:54:01
автовайринг

Anton
03.08.2018
08:54:57
автовайринг и прочее это по моему просто скоупы не?
и сколько инстансов создастся

Alexandr
03.08.2018
08:55:22
да, я это к синглтонам
что не обязательно все синглтонами делать

Quantum Harmonizer
03.08.2018
08:55:46
короче, вместо того, чтобы просто создать объект, создаются сложный правила, по которым создаются объекты

Google

Alexandr
03.08.2018
08:56:46

Quantum Harmonizer
03.08.2018
08:57:29
не надо вглубь, все зависимости должна создать точка входа

Andrew
03.08.2018
08:58:23
Б-же, что я наделал ?

Alexandr
03.08.2018
08:59:57

Andrew
03.08.2018
09:01:05

Ivan
03.08.2018
09:07:31

Andrew
03.08.2018
09:12:03
А вы говорите, хаскеллисты упоротые. Вон люди усиленно прячут от себя свои графы зависимостей за 3rd-party фреймворками и слоем рефлексии / кодогенерации, вместо того, чтобы меньшими усилиями собрать их явно, и утверждают, что это круто.

Sergey
03.08.2018
09:15:00
аминь

Alexandr
03.08.2018
09:16:15
а если нужна динамика?

Quantum Harmonizer
03.08.2018
09:16:46

Andrew
03.08.2018
09:16:47

Alexandr
03.08.2018
09:17:20
и самое интересное, как в этом динамическом дереве делать hot replace в зависимости от контекста?

Quantum Harmonizer
03.08.2018
09:19:10

Alexandr
03.08.2018
09:20:25

Quantum Harmonizer
03.08.2018
09:20:50

Andrew
03.08.2018
09:21:05
Не доводилось с этим чудом инженерной мысли работать, потому не скажу ничего конкретного.
Пользуюсь Ktor -- вполне себе всё успешно руками раскладывается на модули в духе тех, которые генерирует даггер на основании задекларированных интерфейсов, без существенного увеличения количества кода, но с заметным повышением наглядности.
В том же Android без DI-фреймворка кода рисуется больше, но исключительно за счёт идиотской архитектуры.
Присоединяюсь к вопросу, зачем hot replace.