@haskellru

Страница 1283 из 1551
Yuuri
18.06.2018
17:19:39
Евгений
18.06.2018
18:20:43
Yuuri
18.06.2018
18:21:48
Или spock? Или вообще happstack? ?

Aleksey
18.06.2018
18:23:22
spock норм

Google
Aleksey
18.06.2018
18:23:33
scotty тоже

Евгений
18.06.2018
18:24:06
Хапстек мёртв же

Yuuri
18.06.2018
18:33:36
Что значит мёртв? Не работает и разлагается?

Слава
18.06.2018
18:33:39
(оффтоп) Я знаю, что это канал про аниме. Что это за тайтл, не подскажете ли?

Евгений
18.06.2018
18:54:34
@t91x0 @flerka Так, молодые люди. Стикеры и картинки тут глубоко не приветствуются

Евгений
18.06.2018
18:55:23
Я похож на виабу?

Слава
18.06.2018
18:55:53
Я похож на виабу?
Мало ли. Я знаю одного хаскелиста-трапа, который вышел замуж за скальщика и уехал в ЕС.

Vladimir
18.06.2018
18:56:59
Он штангой занимался?

Слава
18.06.2018
18:58:02
Он штангой занимался?
Нет, конечно. Тот как жил в Москве, так и сейчас живёт.

Vladimir
18.06.2018
18:59:50
Зефиров не единственный.

Ilya
18.06.2018
19:00:40
Народ, плиз

Google
Ilya
18.06.2018
19:06:10
он был женщиной с точностью до изоморфизма

A64m
18.06.2018
19:07:21
> за скальщика ужасно

Alex
18.06.2018
21:06:22
Так че за аниме было выяснили?

Mikhail
18.06.2018
21:20:03
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 математические выкладки похоже

по-моему годная мысль

Index
18.06.2018
22:46:42
what if tax (OriginalAgi a) (MarginalTaxRate r) = Tax (a * r)

еще и типы хорошие будут, с ньютайпами

вместо tax :: Money -> Money -> Money будет tax :: OriginalAgi -> MarginalTaxRate -> Tax

Alexander
18.06.2018
22:55:50
> Long variable names make code's structure harder to see сильное утверждение

не говоря уже о том что tax = (*)

> tax :: Money -> Money -> Money rate не может быть типа Money изначально, это же рейт :)

Index
19.06.2018
01:03:42
Я не вдумывался в то, что пишу

Пусть будет Coeff или что там

Дмитрий
19.06.2018
01:14:09
Comoney

Евгений
19.06.2018
07:20:28
> Long variable names make code's structure harder to see сильное утверждение
Ну а что, не так что ли? В плане наименований переменных и типов сабж уже достиг джава-дна и не собирается на этом останавливаться. Скоро в 132'символьный терминал не будут помещаться

Aleksey
19.06.2018
07:26:49
Типики же есть, зачем "говорящие имена", если типы "говорящие"? Вот если функция выглядит, как (говно): f :: Int -> Int -> Int -> Int f x a b = if x > 5 then a else b то в этом конкретном случае имена аргументов могут помочь. Но не сильно

Тут уже именованные аргументы нужны (как в либе от @int_index, например)

Google
A64m
19.06.2018
07:28:07
> Long variable names make code's structure harder to see сильное утверждение
в ФП это прописной истиной считается

Евгений
19.06.2018
07:32:37
в ФП это прописной истиной считается
Ну мне кажется, что в сабже такое мнение маргинально. Наоборот же тренд это бесконечная вербозность

A64m
19.06.2018
07:33:16
это новая мода

Alexander
19.06.2018
07:34:07
Это не новая мода, это в хаскель пришли практики

Им некогда возится с однобуквенными переменными, у них релиз

Евгений
19.06.2018
07:35:05
"Практики" means джависты? Я, конечно, не хочу ничего плохого про джавистов сказать, но такая монополизация практики мне не нравится

Потому что в плюсах, например, принято все локальные переменные делать короткими.

Alexander
19.06.2018
07:36:18
Ну я вот не джавист но мнение по переменным у меня "до 20 символов норм, 30 на грани"

A64m
19.06.2018
07:36:28
точно, вместо однобуквенных названий надо названия вроде таких. типТутОченьОбщийНичегоНеПридумываетсяАЧтоДелатьМыЖеПрактикиТакЧтоПРиходится

A64m
19.06.2018
07:38:37
точно a называешь и все

Alexander
19.06.2018
07:38:44
Если тип выразитилен то переменную можно назвать так же и нет проблем

A64m
19.06.2018
07:39:15
ну вот как тип обычно и называют a, b, m, f

Alexander
19.06.2018
07:39:35
Собственно, на этом уровень абстракции в джаве и кончается

ну a b m f это просто соглашение

переменную типа f можно назать functor, какие проблемы?

A64m
19.06.2018
07:41:42
например в том, что это не функтор?

Alexander
19.06.2018
07:41:59
тогда зря ты назвал тип f

Google
A64m
19.06.2018
07:42:23
нет не зря, для него же есть инстанс класса функтор

Alexander
19.06.2018
07:42:35
но он не функтор

интересно

мне уже нравится твой код :)

A64m
19.06.2018
07:45:23
"не понимаю типы, но спешу напрыгнуть на чей-нибудь код"

Alexander
19.06.2018
07:45:58
действительно не понимаю как инстанс класса функтор может не быть функтором

или ты про то что функтор это преобразование а не его результат?

A64m
19.06.2018
07:47:54
не про это

Admin
ERROR: S client not available

Слава
19.06.2018
07:48:44
тогда зря ты назвал тип f
Предлагаю угадать типы по названиям: b l c

A64m
19.06.2018
07:48:47
и параметру который принимает инстанс класса функтор вообще не дать имени - он неявный, выше написано "для него есть инстанс класса функтор"

Alexander
19.06.2018
07:49:43
Предлагаю угадать типы по названиям: b l c
b и c - forall, l - зависит от контекста

Слава
19.06.2018
07:50:13
b и c - forall, l - зависит от контекста
b - borrower c - consent (borrower digital consent) l - loan

Поэтому я не использую однобуквенные переменные, разве что как индексы в циклах

A64m
19.06.2018
07:51:29
в случае баундед полиморфизма говорить, что параметр типа является типом из констейнта есть все основания, его можно скастить к этому типу, но хаскель это не сишарп

Alexander
19.06.2018
07:54:25
> но хаскель это не сишарп и?

почему вечно всплывают языки которыми на которых я не писал в качестве примера "это делают только там"?

Alexander
19.06.2018
07:55:30
потому что у меня нет OS Windows

дорого :(

Google
Слава
19.06.2018
07:55:43
потому что у меня нет OS Windows
И 15 лет назад не было?

Alexander
19.06.2018
07:55:53
15 лет назад мне было 10

Слава
19.06.2018
07:56:02
А, ок.

Alexander
19.06.2018
07:56:08
я предпочитал C

A64m
19.06.2018
07:56:49
попробую обяснить что тут не так: вот у нас есть map :: (a -> b) -> [a] -> [b] мы в него функцию передаем назовем ее тип как-нибудь type Func a b = a -> b map :: Func a b -> [a] -> [b] ну вот говорить что a - это Func a b потому что мы можем применить ее к а примерно столько же оснований, что и говорить что f это Functor

Alexander
19.06.2018
07:58:14
ты ведь понимаешь, что если следовать аналогии то первый параметр нужно назвать function?

чем он определенно является

Aleksey
19.06.2018
08:00:08
Зачем дублировать информацию? Чтобы потом путаться, после того как сигнатура поменяется?

Венгерская нотация какая-то

A64m
19.06.2018
08:00:30
тут-то все нормально это же функция. по аналогии с называнием f functor надо называть a - funcab map :: Func funcab b -> [funcab] -> [b] а, нет map :: Func funcfuncabb b -> [funcfuncabb] -> [a] а, нет

Alexander
19.06.2018
08:00:40
то есть мы хотим менять сигнатуру не меняя внутрености функции?

Aleksey
19.06.2018
08:00:59
Конечно

A64m
19.06.2018
08:01:04
внутренности то тут причем?

Alexander
19.06.2018
08:01:11
> по аналогии с называнием f functor надо называть a - funcab где аналогия то?

Aleksey
19.06.2018
08:01:55
lpcstrzWindowTitle и прочие hwndpnWindowParamName

Слава
19.06.2018
08:02:16
lpcstrzWindowTitle и прочие hwndpnWindowParamName
Это как раз про вышеупомянутый Си

Aleksey
19.06.2018
08:02:16
тоже практики писали

Alexander
19.06.2018
08:02:48
Конечно
мне кажется весьма редкий кейс когда это возможно

я ничего кроме сужение констреинта на уровне типов придумать не могу

ну перестановка аргументов местами очевидно в любом случае делается без правки кишок

тоже практики писали
это разве не особенности полиморфизма в C?

Страница 1283 из 1551