Евгений
Я похож на виабу?
Слава
Я похож на виабу?
Мало ли. Я знаю одного хаскелиста-трапа, который вышел замуж за скальщика и уехал в ЕС.
Vladimir
Он штангой занимался?
Слава
Он штангой занимался?
Нет, конечно. Тот как жил в Москве, так и сейчас живёт.
Vladimir
Зефиров не единственный.
Ilya
Народ, плиз
Ilya
он был женщиной с точностью до изоморфизма
A64m
> за скальщика ужасно
Alex
Так че за аниме было выяснили?
М
Long variable names make code's structure harder to see. Short variable, the reader might forget the intent Compromise: Use the long name just once. tax originalAgi marginalTaxRate = a * r where a = originalAgi r = marginalTaxRate
М
оно и на реальныe математические выкладки похоже
М
по-моему годная мысль
Vladislav
what if tax (OriginalAgi a) (MarginalTaxRate r) = Tax (a * r)
Vladislav
еще и типы хорошие будут, с ньютайпами
Vladislav
вместо tax :: Money -> Money -> Money будет tax :: OriginalAgi -> MarginalTaxRate -> Tax
Alexander
> Long variable names make code's structure harder to see сильное утверждение
Alexander
не говоря уже о том что tax = (*)
Alexander
> tax :: Money -> Money -> Money rate не может быть типа Money изначально, это же рейт :)
Vladislav
Я не вдумывался в то, что пишу
Vladislav
Пусть будет Coeff или что там
Дима
Comoney
Евгений
> Long variable names make code's structure harder to see сильное утверждение
Ну а что, не так что ли? В плане наименований переменных и типов сабж уже достиг джава-дна и не собирается на этом останавливаться. Скоро в 132'символьный терминал не будут помещаться
Aleksei (astynax)
Типики же есть, зачем "говорящие имена", если типы "говорящие"? Вот если функция выглядит, как (говно): f :: Int -> Int -> Int -> Int f x a b = if x > 5 then a else b то в этом конкретном случае имена аргументов могут помочь. Но не сильно
Aleksei (astynax)
Тут уже именованные аргументы нужны (как в либе от @int_index, например)
A64m
Alexander
Если что то не влезает в экран то его структура говно
Евгений
в ФП это прописной истиной считается
Ну мне кажется, что в сабже такое мнение маргинально. Наоборот же тренд это бесконечная вербозность
A64m
это новая мода
Alexander
Это не новая мода, это в хаскель пришли практики
Alexander
Им некогда возится с однобуквенными переменными, у них релиз
Евгений
"Практики" means джависты? Я, конечно, не хочу ничего плохого про джавистов сказать, но такая монополизация практики мне не нравится
Евгений
Потому что в плюсах, например, принято все локальные переменные делать короткими.
Alexander
Ну я вот не джавист но мнение по переменным у меня "до 20 символов норм, 30 на грани"
A64m
точно, вместо однобуквенных названий надо названия вроде таких. типТутОченьОбщийНичегоНеПридумываетсяАЧтоДелатьМыЖеПрактикиТакЧтоПРиходится
A64m
точно a называешь и все
Alexander
Если тип выразитилен то переменную можно назвать так же и нет проблем
A64m
ну вот как тип обычно и называют a, b, m, f
Alexander
Собственно, на этом уровень абстракции в джаве и кончается
Alexander
ну a b m f это просто соглашение
Alexander
переменную типа f можно назать functor, какие проблемы?
A64m
например в том, что это не функтор?
Alexander
тогда зря ты назвал тип f
A64m
нет не зря, для него же есть инстанс класса функтор
Alexander
но он не функтор
Alexander
интересно
Alexander
мне уже нравится твой код :)
A64m
"не понимаю типы, но спешу напрыгнуть на чей-нибудь код"
Alexander
действительно не понимаю как инстанс класса функтор может не быть функтором
Alexander
или ты про то что функтор это преобразование а не его результат?
A64m
не про это
Слава
тогда зря ты назвал тип f
Предлагаю угадать типы по названиям: b l c
A64m
и параметру который принимает инстанс класса функтор вообще не дать имени - он неявный, выше написано "для него есть инстанс класса функтор"
Alexander
Предлагаю угадать типы по названиям: b l c
b и c - forall, l - зависит от контекста
Слава
b и c - forall, l - зависит от контекста
b - borrower c - consent (borrower digital consent) l - loan
Слава
Поэтому я не использую однобуквенные переменные, разве что как индексы в циклах
A64m
в случае баундед полиморфизма говорить, что параметр типа является типом из констейнта есть все основания, его можно скастить к этому типу, но хаскель это не сишарп
Alexander
> но хаскель это не сишарп и?
Alexander
почему вечно всплывают языки которыми на которых я не писал в качестве примера "это делают только там"?
Alexander
потому что у меня нет OS Windows
Alexander
дорого :(
Слава
потому что у меня нет OS Windows
И 15 лет назад не было?
Alexander
15 лет назад мне было 10
Слава
А, ок.
Alexander
я предпочитал C
A64m
попробую обяснить что тут не так: вот у нас есть map :: (a -> b) -> [a] -> [b] мы в него функцию передаем назовем ее тип как-нибудь type Func a b = a -> b map :: Func a b -> [a] -> [b] ну вот говорить что a - это Func a b потому что мы можем применить ее к а примерно столько же оснований, что и говорить что f это Functor
Alexander
ты ведь понимаешь, что если следовать аналогии то первый параметр нужно назвать function?
Alexander
чем он определенно является
Aleksei (astynax)
Зачем дублировать информацию? Чтобы потом путаться, после того как сигнатура поменяется?
Aleksei (astynax)
Венгерская нотация какая-то
A64m
тут-то все нормально это же функция. по аналогии с называнием f functor надо называть a - funcab map :: Func funcab b -> [funcab] -> [b] а, нет map :: Func funcfuncabb b -> [funcfuncabb] -> [a] а, нет
Alexander
то есть мы хотим менять сигнатуру не меняя внутрености функции?
Aleksei (astynax)
Конечно
A64m
внутренности то тут причем?
Alexander
> по аналогии с называнием f functor надо называть a - funcab где аналогия то?