@haskellru

Страница 1325 из 1551
Pineapple
06.07.2018
09:41:36
А сложение флоатов неассоциативно

Ilya
06.07.2018
09:42:22
то есть Sum Float и так моноид, без дополнительного инстанса для Fractional (Sum a)

Yuriy
06.07.2018
09:43:35
я подумал об этом, но вроде бы это тут никак не влияет
а, ну да, это в обратную сторону логика

Ilya
06.07.2018
09:44:29
(это не говоря уж о том, что моноидные законы и с переполнением как-то не особо дружат, это же не мешает нам писать `Monoid (Product Int)`)

Google
Yuriy
06.07.2018
09:45:11
повод расширить стандартную библиотеку

Ilya
06.07.2018
09:51:21
просто оно ещё и Fractional

Yuriy
06.07.2018
09:52:10
1.5 Num
ой. я имел в виду, Num не 1.5

для 1.5 недостаточно Num

Ilya
06.07.2018
09:52:33
Ilya
06.07.2018
09:52:39
не в любой Num влезет 1.5, скажем так ?

Leonid
06.07.2018
09:54:42
Я поражаюсь hlint конечно. Прямо приятно что я не один такой тупой, а тупых так много что аж такие вот советы линтер встроены.

почему я сам не догадался написать "m == Just "on" а первое что в голову пришло было maybe False (== "on") m?

Ilya
06.07.2018
09:56:20
слишком функционально мыслишь

Yuriy
06.07.2018
09:56:26
булева слепота

Leonid
06.07.2018
09:58:29
да я вроде недавно был у офтальмолога

Aleksey
06.07.2018
10:00:28
почему я сам не догадался написать "m == Just "on" а первое что в голову пришло было maybe False (== "on") m?
Я как-то давно насобачился эксплуатировать эквалити вглубь :)

Google
Aleksey
06.07.2018
10:01:11
Вместо "распакуй и сравни" делаю "запакуй эталон до нужной структуры" ;)

Ilya
06.07.2018
10:03:10
а на плохой стиль hlint тоже ругается? скажем излишнее увлечение point-less

Ilya
06.07.2018
10:03:38
или вот такое, я недавно писал zipWith id [(^2), (^3)] [1, 2]

Yuriy
06.07.2018
10:03:48
Ilya
06.07.2018
10:04:10
Timofey
06.07.2018
10:04:43
во, кстати. Что всякие стайл-гайды говорят про if..then..else в сравнении с case..of?

Yuriy
06.07.2018
10:04:46
рыбки это что?
монадный байнд и композиция Кляйсли в разные стороны

Timofey
06.07.2018
10:05:02
рыбка - >=>

Leonid
06.07.2018
10:05:11
(<=<) - более правильная

Yuriy
06.07.2018
10:05:27
Leonid
06.07.2018
10:06:16
ну а что? Если композишь вперед так пиши просто do

Yuriy
06.07.2018
10:06:25
во, кстати. Что всякие стайл-гайды говорят про if..then..else в сравнении с case..of?
мой персональный гайд говорит, что case...True...False... надо заменять на if. в остальном они не пересекаются, так что и без гайда всё понятно

Leonid
06.07.2018
10:07:05
if как-то выделяется из остального синтаксиса. глаза режет

Yuriy
06.07.2018
10:07:12
Timofey
06.07.2018
10:07:39
ладно, а относительно fromMaybe и maybe?

Yuriy
06.07.2018
10:07:47
вот между и ифом и гардами есть конфликт

A64m
06.07.2018
10:08:55
Кстати, почему?
да забыли просто. в каждом релизе обычно какието инстансы базовых классов для базовых типов новые до которых до этого руки не доходили

Leonid
06.07.2018
10:09:26
если со значением под Maybe надо что-то сделать то maybe, если нет то fromMaybe. good = maybe "" show bad = fromMaybe "" . fmap show

Yuriy
06.07.2018
10:09:42
ладно, а относительно fromMaybe и maybe?
так это тоже разные вещи. fromMaybe x == maybe x id, чтобы заменить второе на первое, достаточно hlint

Google
Timofey
06.07.2018
10:10:31
если со значением под Maybe надо что-то сделать то maybe, если нет то fromMaybe. good = maybe "" show bad = fromMaybe "" . fmap show
я не это имел в виду - я про замену этих функций на обороты case of и if then else

Leonid
06.07.2018
10:11:11
я кстати не обламываюсь делать case для мейби в монадном коде. читается лучше чем join . maybe

case норм

A64m
06.07.2018
10:12:13
я и кейс и иф не люблю

Ilya
06.07.2018
10:13:12
я и кейс и иф не люблю
потому что композиционный стиль?

больше похоже на императивщину

Leonid
06.07.2018
10:13:34
вот такое: good' mx = case mx of Just x -> show x _ -> ""
нет, только если case mx of Nothing -> logMsg "Got nothing" Just v -> do frabulate v logMsg "frabulated"

A64m
06.07.2018
10:16:15
потому что композиционный стиль?
потому что в хаскеле два синтаксиса из двух языков эквейшн-стиль как у тернера и экспрешн стиль как в эмелях и второй я недолюбливаю в принципе

shadowjack
06.07.2018
10:16:28
Кстати а есть поинтфри аналог кейса?

A64m
06.07.2018
10:16:51
\case

Leonid
06.07.2018
10:17:01
Кстати а есть поинтфри аналог кейса?
деструкторы (деконструкторы). например maybe, either, bool

Ilya
06.07.2018
10:17:44
мой персональный гайд говорит, что case...True...False... надо заменять на if. в остальном они не пересекаются, так что и без гайда всё понятно
ну они пересекаются, когда можно матчить с конкретным значением, а можно сравнить с помощью ==. Такое часто встречается, на самом деле.

вот тут например явно case пошёл бы лучше, не было бы лесенки https://www.govnokod.ru/6765

kana
06.07.2018
10:19:57
тут даже не кейс

а просто гард с elem

Yuriy
06.07.2018
10:20:31
лучше матчить, чем сравнивать

kana
06.07.2018
10:20:59
10 матчей или elem "01234567890."?

даже не так, тут просто chislo = all (`elem` "0123456789.")

Google
Yuriy
06.07.2018
10:21:07
напоминаю про существование MultiWayIf

Leonid
06.07.2018
10:24:56
0-9 же идут друг за другом в ascii

не говоря уже про Data.Char.isNumber

kana
06.07.2018
10:25:31
есть, но там точка еще, проще сделать одну проверку, а не две

A64m
06.07.2018
10:25:56
напоминаю про существование MultiWayIf
вообще не припоминаю когда я встречал его использование и встрнчал ли

kana
06.07.2018
10:26:07
chislo = all (`elem` '.':['0'..'9'])

Admin
ERROR: S client not available

Ilya
06.07.2018
10:26:37
Leonid
06.07.2018
10:26:50
foo str = case str of [] -> error "YOLO" '.':xs -> whatever x:xs | isNumber x -> blah | otherwise -> blahblha

Ilya
06.07.2018
10:27:30
тут уж не говоря о том, что "1.3..44" это тоже число будет

Leonid
06.07.2018
10:28:14
и да, я считаю что ro-che был прав и case лучше чем несколько тел функции с матчем

Aleksey
06.07.2018
10:29:36
несколько тел хороши, пока тела однострочные

Aleksey
06.07.2018
10:29:59
optText "" = Nothing optText t = Just t

Вот такое ок и красиво

и where не общий
Это боль :(

A64m
06.07.2018
10:30:24
я в свое время чуть не бросил изучать хаскель заглянув в ЯХТ и увидав там адовые лесенки из кейсов и ифов

Google
Aleksey
06.07.2018
10:31:59
Беда переписывания с мультиклозов на case - несколько параметров у функции. Лишний визуальный шум от кортежей - фу

A64m
06.07.2018
10:35:44
с однострочностью все наоборот, когда все это повторение в соседних строках - это только раздражает, а через несколько строк это лучше читается чем висящий паттерн кейса относящийся не пойми к чему

Leonid
06.07.2018
10:37:25
вам ленивость дали что-бы вы могли писать всё в where и потом в кейзах писать одну строчку

Aleksey
06.07.2018
10:37:50
"мало матчинга, много логики" = case "много матчинга, мало логики" = клозы

Мультиклозы с общим where были бы норм ваще

Leonid
06.07.2018
10:39:55
мне кажется что часто много матчинга и глубокие структуры это скорее от лени написать еще один АДТ и зарание подготовить для проблемной области

Aleksey
06.07.2018
10:40:45
Нет же, вот ты матчишь два переметра на предмет комбинаций - отличный вариант для мультиклоза

Leonid
06.07.2018
10:40:53
Вот у Джаспера про это https://jaspervdj.be/posts/2016-05-11-ad-hoc-datatypes.html

Aleksey
06.07.2018
10:41:15
Вот! Я про такие случаи

Сам то точе часто предпочитаю case. Даже LambdaCase ;)

Leonid
06.07.2018
10:41:48
у меня в конпиляторе такое было для тайпчеков всяких везде. Правда я тогда и хаскель толком не умел

Антон
06.07.2018
10:45:10
есть, но там точка еще, проще сделать одну проверку, а не две
is_number = uncurry (and `on` numbers_only) . second tailSafe . span (/= '.') where numbers_only = map (`elem` ['0'..'9'])

Leonid
06.07.2018
10:46:11
да сравнивайте вы уже с >= '0' && c <= '9'

Aleksey
06.07.2018
10:46:17
numbers_only, is_number - не надо так!

Leonid
06.07.2018
10:46:43
а вообще на хакадже есть is-number вроде

Антон
06.07.2018
10:46:55
Aleksey
06.07.2018
10:46:59
left-pad

A64m
06.07.2018
10:47:00
для такого уже комбинаторный парсер надо

Антон
06.07.2018
10:47:04
Перенимаем опыт JS

Leonid
06.07.2018
10:47:11
Докатились
ну так в Acme.

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