Alexander
И что именно из этого трудно?
Anatolii
ооп в том виде что оно сейчас в индустрии крутится, по-моему, вредно
Anatolii
Бизнес задачи очень хорошо ложатся
Anatolii
Очень хорошо на фп ложатся
Denis
Evgeniy
Защитники ООП как я понимаю говорят -всё объект и это ближе к человеческому опыту - а вот функц подход интуитивно не понятен мозгу из-за опыта полученного в результате жизни
Evgeniy
Там и DDD далее идет
Evgeniy
Хотя по логике можно сказать всё есть функция😊 итп
Alexander
ООП == subclass polymorphism
Alexander
Когда кошка наследуется от собаки и вот это всё
Alexander
Утрированно конечно
Alexander
Начиная с какого-то то момента удивления для разума становится слишком много
Evgeniy
Да но с помощью композиции с утиной типизацией пытаются убить жёскую связь между "классами"
Evgeniy
Хотя в фп как я понимаю например map и есть паттен проектирования причем в деклар стиле
Evgeniy
А вместе с генериками вообще сила😊
Anatolii
Я не знаю зачем ооп, по поводу наследования, вот как раз оно мне больше всего проблем приносило при фиксе проблем
Evgeniy
Anatolii
Проблема в том что наследованием легко воспользоваться не правильно
Anatolii
Вот когда кошка начинает от собаки наследоваться
Anatolii
Это уже плохо
Evgeniy
Да согласен изначально если пошли не той дорогой и чем дальше в лес тем труднее сменить но из-за этого методики разные скрум с короткими циклами итп чтобы раньше нащупать правильное направление както так
Evgeniy
Вот как хаскель например сможет помочь - рефактить на нем отлично
Evgeniy
Но вот повторное использование те не кидать всё в один бог файл, разделить на повторно используемые компоненты чтобы не лезть в него- вот как в хаске пока ненащупал😊
Evgeniy
Я отношусь к той части - кто считает сильно связанное наследование фундаментальным недостатком - но современные языки типа го раст итп отказались (если я неошибаюсь) от этого недостатка
Alexander
Меньше кода писать иногда
Denis
Для меня лично наиболее удачным примером применения принципов наследования в ооп является API Excel.
Denis
Бегло пробежавшись по мсдн, быстро уясняешь, что в экселе, по большому счету, все есть диапазон (range), и все сущности можно объединять в коллекции.
Denis
На этом для меня достоинства наследования заканчиваются
Denis
Причем, глядя на хаскел и окамл, я понимаю, что того же результата можно было достичь (причем, вероятно, меньшими усилиями) с помощью грамотной системы типов. В окамле так и вовсе ООП на типы завязан, что как бы намекает
Evgeniy
Интересно есть ли книга типа DDD в функциональном стиле на примере известной книги
Evgeniy
Если нет то она я думаю взорвет мир фп
Denis
Превратит его в тыкву? :)
Evgeniy
Нет думаю очень сильно его продвинет - сделает ближе народу) А если на хаске то вообще его недостатки вылезут как явные
Evgeniy
И это наконецто сделает его приятным ) Но надо компании кторые его юзают их опыт а это годы(
Evgeniy
Опыт переваривается и вываливается чтото - но не г.....о конечно- надеюсь
Evgeniy
Кто нибудь смотрел https://github.com/JPMoresmau/dbIDE?
Vladimir
Я не смотрел, я в виме :D
Vladimir
Товарищи, а вот есть какой-то способ один модуль раскидать по разным файлам?
Vladimir
Я что-то никак не выгуглю
Alexander
Vladimir
Ну чтобы один модуль был в разных файлах. В clojure можно, например, указывать одно имя неймспейса и потом в него подгрузить какое угодно количество файлов с кодом, которые логически будут в том же неймспейсе. Вот с модулями так нельзя?
Vladimir
Я понимаю, что пример с clojure вообще не про то)
Alexander
Вагную что:
module Foo.Internal.One ...
module Foo.Internal.Two ...
module Foo (
module Foo.Internal.One
module Foo.Internal.Two
) where ...
Alexander
Для пользователя будет существовать только Foo, в котором все реэкспортировано
Vladimir
а, вот как это делается
Vladimir
понял, спасибо!
Denis
Vladimir
я все понял и мне уже ответили, спасибо
Denis
Alexander
Там есть несколько способов как сделать реэкспорт:
1. Каждую функцию явно
2. Модулями, как выше
3. Импортировать модули квалифицировано, например как X и делать module X в экспортах
Denis
А если в модуле Foo.Internal.Two использовать типы из Foo.Internal.One, при сборке никакого оверхеда не возникнет же?
Alexander
Нет
Alexander
Желательно чтобы циклов не было иначе hs_boot делать надо
Evgeniy
На чём пишете хаскель
Vim – 8
👍👍👍👍👍👍👍 50%
Emacs – 2
👍👍 13%
Atom – 2
👍👍 13%
Spacemacs – 2
👍👍 13%
Sublime – 1
👍 6%
VS Code – 1
👍 6%
Eclipse
▫️ 0%
IDEA
▫️ 0%
Geany
▫️ 0%
👥 16 people voted so far.
Evgeniy
Если что Vim тоже пользую
Alexander
У меня вим, стоит spacemacs то там я код не пишу, хотя пытался
Evgeniy
Я наоборот в спейсмаксе там с вим полная совместимость но если быстро чтото надо то вим😊 А так пробовал всё выше указанное думаю вим и спейсмакс лучшее имхо
Denis
А вообще к разработке haskell, ни стандарта, ни ghc, не имею :)
Alexander
Мне часто на чужих компах без доступа в нормальный интернет работать надо
Alexander
Там не до емаксов
Alexander
А из коробочный вим вполне работает
Evgeniy
Alexander
Во всяком случае подправить, что пнресобирать и запустить
Evgeniy
Ну у меня например свой сервер домашний ( сильный) - а к нему через ssh tmux vim если пинг трудный) или спейсмак если пинг отличный из слабого клиента
Alexander
Просто на чужой системе все равно свой кофиг не поставишь быстро
Alexander
А ночью его все равно он превратится в тыкву
Alexander
: ]
Evgeniy
Что ходишь по "чужим" серверам?😎
Denis
Evgeniy
Кстати я нашёл удобно пользоваться hoogle даже из консоли - пишешь сигнатуру и список но вот как фильтровать - например чтобы только из определенных пакетов а не со всего?
Evgeniy
Кстати в опросе прорустил leksah (похож на liteide) но сыроват
Vladimir
А раньше еще на fpcomplete была онлайн иде с линтером и вимовской клавиатурой
Alexander
У меня нету возможности иметь десяток компов с 500 дисками по нескольку Тб, 64Гб памяти и десятка 2 процов
Alexander
Так что приходится по чужим ходить
Evgeniy