Size: a a a

2020 November 25

JS

Jerzy Syrowiecki in Haskell
Yuriy Pitomets
До меня внезапно дошло: в Haskell нет приватных модулей?

ну допустим я пишу public_func = let a = a_lot_of_lines_of_private_nested_code in my_simple_business_logic a и хочу отрефакторить как
public_func = my_simple_business_logic PrivateSubModule.a

, чтобы снизить когнетивную нагрузку с читающего на детали реализации на одном уровне абстракции
есть ли способ вложенный модуль _полностью_ скрыть извне публичного для прочих модулей или либ, как это делает банальный let in или просто лямбда?
есть модули, приватные на уровне компонента
источник

AV

Alexander Vershilov in Haskell
Для "На порядки" надо иметь другое граждаство боюсь
источник

JS

Jerzy Syrowiecki in Haskell
Sergey Loguntsov
ну вот смотри . ты веришь во фриланс ?
он существует, независимо от того, верю ли я
источник

AV

Alexander Vershilov in Haskell
Но на порядок так точно
источник

YP

Yuriy Pitomets in Haskell
а, ну короче в либу заворачивать внутри проекта, ок, спасиб
источник

KV

Kirill Valyavin in Haskell
Yuriy Pitomets
а, ну короче в либу заворачивать внутри проекта, ок, спасиб
Зачем Вам приватные модули, есть что скрывать?
источник

OO

Oleg Orlov in Haskell
Kirill Valyavin
Зачем Вам приватные модули, есть что скрывать?
небось, он инкапсуляцию хочет :) я предполагаю
источник

YP

Yuriy Pitomets in Haskell
а зачем в api либы детели реализации?
ну да, а в чем проблема
источник

KV

Kirill Valyavin in Haskell
Oleg Orlov
небось, он инкапсуляцию хочет :) я предполагаю
Обладатели крупных умов говорят, что инкапсуляция и сокрытие — разные вещи
источник

KV

Kirill Valyavin in Haskell
Yuriy Pitomets
а зачем в api либы детели реализации?
ну да, а в чем проблема
Затем, что они кому-то понадобятся и этот кто-то потом будет сильно ругаться, что они приватные, и форкать либу
источник

YP

Yuriy Pitomets in Haskell
в простом лямбда исчеслении инкапсуляция есть, а при разбивке на модуле — нет — странно.
источник

AV

Alexander Vershilov in Haskell
Yuriy Pitomets
а зачем в api либы детели реализации?
ну да, а в чем проблема
Затем, чтобы у пользователя была возможность использовать те сценарии, о которых вы не подумали
источник

OO

Oleg Orlov in Haskell
@Elvecent ну, как я понимаю что постулаты ООП (полиморфизм, инкапсуляция, наследование) в мире ФП - немного в ином ракурсе
источник

OO

Oleg Orlov in Haskell
в целом, я спорить не буду, т.к. сам недавно переключился на Хаскелль с Шарпа
источник

AV

Alexander Vershilov in Haskell
вот вчера только ругался на resource-pool
источник

KV

Kirill Valyavin in Haskell
Oleg Orlov
@Elvecent ну, как я понимаю что постулаты ООП (полиморфизм, инкапсуляция, наследование) в мире ФП - немного в ином ракурсе
То, что я сказал, касается ООП
источник

YP

Yuriy Pitomets in Haskell
Alexander Vershilov
Затем, чтобы у пользователя была возможность использовать те сценарии, о которых вы не подумали
и как они будут использовать код внутри let in, любопытно? или все функции делать топ-левел на всякий случай?
источник

P

Purple in Haskell
Oleg Orlov
@Elvecent ну, как я понимаю что постулаты ООП (полиморфизм, инкапсуляция, наследование) в мире ФП - немного в ином ракурсе
В целом вне ООП, термин сокрытия применим даже к процедурному :)
источник

AV

Alexander Vershilov in Haskell
Yuriy Pitomets
и как они будут использовать код внутри let in, любопытно? или все функции делать топ-левел на всякий случай?
Очевидно, что в модуле в вас не только let in
источник

YP

Yuriy Pitomets in Haskell
ну еще типы, грубо говоря. Но если они не в публичном API то и не нужны.
источник