@haskellru

Страница 779 из 1551
Alexander
26.01.2018
18:03:48
там баги

достаточно только типов

написал и можно идти пить чай

чай важно

Google
Alexander
26.01.2018
18:04:09
код нет

извините

Aleksey
26.01.2018
18:04:29
чай - важно!

Антон
26.01.2018
18:10:51
solution = curry $ (/2) . abs . sum . uncurry (zipWith (*)) . (***) shiftedSum shiftedFSub ^Это считается за point-free abuse?

Aleksey
26.01.2018
18:11:50
Это норм

на самом деле нет :)

Антон
26.01.2018
18:16:08
на самом деле нет :)
Хорошо, а как бы вы написали? Я ненастоящий штангист, я только учусь

Aleksey
26.01.2018
18:17:23
Написал бы с аргументами

solution xs ys = (/2) . abs . sum $ zipWith (*) xs ys

Антон
26.01.2018
18:18:47
solution xs ys = (/2) . abs . sum $ zipWith (*) xs ys
ну, это малость не то

A64m
26.01.2018
18:19:07
((/2) . abs . sum . zipWith (*)) <$> shiftedSum <*> shiftedFSub

(не проверял в ghci)

Антон
26.01.2018
18:20:14
((/2) . abs . sum . zipWith (*)) <$> shiftedSum <*> shiftedFSub
Скобочки слева длинные :/

Google
Aleksey
26.01.2018
18:20:15
Вот да, instance Applicative ((->) a) и тут полезен

A64m
26.01.2018
18:20:58
они может и не нужны

Aleksey
26.01.2018
18:21:04
Можно без скобок вокруг первой композиции, т.к. у (.) приоритет выше, чем у (<$>)

только будет таки сечение композиции, кмк (((/2) . abs . sum) .) . zipWith (*) т.к. левая часть данного аппликативного выражения должна принять два аргумента

sherzod
26.01.2018
18:50:08
Подскажите, вот здесь https://wiki.haskell.org/Typeclassopedia Exercises Implement Functor instances for Either e and ((->) e). Под Either e имеется в виду взять для e конкретный тип? Например Either Int?

Index
26.01.2018
18:50:23
Нет

instance Functor (Either e), так и пишешь

Это значит, что инстанс будет работать для любого e

Можешь даже явно так и написать, "для любого" (т.е. "forall"): instance forall e. Functor (Either e) where

Для этого надо только -XExplicitForAll включить.

sherzod
26.01.2018
18:53:33
То есть должен получиться функтор над конструктором типа

Pig
26.01.2018
18:55:26
Функтор и так требует * -> *

sherzod
26.01.2018
18:55:28
Понял, значит не имеется в виду конкретный тип) Счас буду догонять

Pig
26.01.2018
18:55:52
То есть он всегда "над конструктором типа"

sherzod
26.01.2018
18:56:26
а всё. уяснил. то есть мы просто игнорируем первый параметр

A64m
26.01.2018
19:03:04
> I'd imagine we want the nursery to fit in L1 or L2 caches (where applicable) and the Gen1 heap to fit in the rest of the Cache left in Level3 after we account for nurseries?

традиционный конкурс "угадай эксперта"

впрочем, эксперт всякий раз один и тот же

Dmitry
26.01.2018
19:10:11
а всё. уяснил. то есть мы просто игнорируем первый параметр
Я бы лучше посоветовал использовать расширение InstanceSigs. И написать инстанс так: instance Functor (Either e) where fmap :: (a -> b) -> Either e a -> Either e b fmap = ... Если сравнивать с определением класса Functor, то сразу появлятся смысл в таком инстансе: class Functor f where fmap :: (a -> b) -> f a -> f b Можно считать, что если вместо f подставить Either e, то сойдётся.

sherzod
26.01.2018
19:13:06
Спасибо, интересно, то есть можно продублировать сигнатуру в инстансе, действительно более явно получается

Google
Arthur
26.01.2018
20:47:25
а всё. уяснил. то есть мы просто игнорируем первый параметр
Скорее, не игнорируем, а связываем. Это как частичное применение функции двух аргументов к своему первому аргументу.

sherzod
26.01.2018
20:49:10
мне кажется это не так. при частичном применении мы фиксируем первый параметр функции. а тут мы его как раз игнорируем, он может быть произвольный

мы же не фиксируем тип левой части

это похоже на частичное применение, только второго аргумента, а не первого - но только похоже.

Дмитрий
26.01.2018
20:59:10
А какие есть пакеты упрощающие работу с TH?

sherzod
26.01.2018
21:01:14
Скорее, не игнорируем, а связываем. Это как частичное применение функции двух аргументов к своему первому аргументу.
хотя я понял что имеется в виду. синтаксически мы использовали частичное применение конструктора типов

но только применили не к конкретному типу а к переменной типа

Arthur
26.01.2018
21:04:38
хотя я понял что имеется в виду. синтаксически мы использовали частичное применение конструктора типов
Конструктор типа - это то, что находится слева от знака равно. А то, что справа - это конструктор данных. Он может иметь такое же название, как и конструктор типа, или же другое название - но в любом случае конструкторы типа и данных обитают в разных пространствах имен. При этом конструктор данных одновременно является и функцией, которую мы применяем к аргументам, чтобы получить значение нашего типа.

sherzod
26.01.2018
21:05:28
Это я знаю, но в описании инстанса у нас конструктор типа.

Aleksey
26.01.2018
21:07:58
В описании инстанса тип. Это может быть и частично/полностью применённый (сконструированный) тип - всё зависит от кайнда

sherzod
26.01.2018
21:09:43
Разве конструктор типа не является типом? (HOT)

Aleksey
26.01.2018
21:09:46
(покапитанствовал :))

Aleksey
26.01.2018
21:09:57
Является, конечно

sherzod
26.01.2018
21:10:10
ок)

Дмитрий
26.01.2018
21:13:19
Что совсем ничего? Я не верю, что не существует библитечки позволяющей перебирать AST более комфортно :(

Aleksey
26.01.2018
21:14:22
Куда уж там упрощать?

И так сравнительно нормально

Дмитрий
26.01.2018
21:15:22
Это не сложно, но муторошно :( складывается впечатление, что приходится писать много лишнего. Да и результат выглядит не очень красивою

Aleksey
26.01.2018
21:15:57
Это чтобы не злоупотребляли :)

Дмитрий
26.01.2018
21:16:08
Не как не могу добиться, чтобы оно меня эстетически удовлетворило.

Google
Дмитрий
26.01.2018
21:17:31
Это чтобы не злоупотребляли :)
Блин, но возможность композицией получать новые типы данных, это то, чего мне в принципе в нешаблонном хаскеле не хватает...

Aleksey
26.01.2018
21:17:45
TH-код не должен выглядеть эстетично, он должен выглядеть "немного не очень" - чтобы не хотелось его использовать без необходимости :)

TH, это же про "по-быстрому нашаблонизируем то, что копипастить лениво"

Alexey
26.01.2018
21:19:14
Есть еще такая идея

Дмитрий
26.01.2018
21:19:27
Generic?
Смотрел, не то. Суть в том, что у меня есть разные акторы и им всем идут разные сигналы. Часть из этих сигналов образуют пересекающиеся множества.

Alexey
26.01.2018
21:19:31
Что быстрее?

Копипастить?

Или придумывать?

Придумыввать дженерики - интереснее

Admin
ERROR: S client not available

Alexey
26.01.2018
21:20:02
А копипастить - быстрее

без дженериков

Дмитрий
26.01.2018
21:20:32
А копипастить - быстрее
К чёрту, это потом невозможно править и поддерживать.

Aleksey
26.01.2018
21:20:43
Копипаста плохо сопровождается, да

Alexey
26.01.2018
21:20:45
Соглашусь

Но

Есть вопрос

Нужно ли это?

Сопровождаемость?

Google
Дмитрий
26.01.2018
21:21:16
И вообще как сделать разные типы с пересекающимися множествами без TH не знаю.

Alexey
26.01.2018
21:21:19
Поддержка?

Aleksey
26.01.2018
21:21:22
Что "нужно ли это"?

Вам хочется писать каждый инстанс ToJSON руками?

Alexey
26.01.2018
21:21:42
В болших проектах - да

Ну нет же

есть, я не знаю fasterxml

или что там

Aleksey
26.01.2018
21:22:24
Тот код, который не написал программист средней руки, а нагенерила либа - более лучший

Дмитрий
26.01.2018
21:22:34
Вам хочется писать каждый инстанс ToJSON руками?
Мне нравится, как сделана Binary и её сестра серализк.

Alexey
26.01.2018
21:23:03
Это принципиальный вопрос?

Aleksey
26.01.2018
21:23:09
Если что-то можно доверить компилятору (скинуть на него), то это нужно сделать.

Дмитрий
26.01.2018
21:23:14
Делать с ними сериализацию данных одно удовольствие, дериав.

Aleksey
26.01.2018
21:23:15
Это принципиальный вопрос

Alexey
26.01.2018
21:23:22
Я очень люблю скала

Alexey
26.01.2018
21:23:37
На втором месте наверное хаскел

Но блин

Aleksey
26.01.2018
21:23:56
В Scala другие привычки и нормы

Alexey
26.01.2018
21:24:03
Восновном пишу на джава

Но вот вопрос то в чем

Aleksey
26.01.2018
21:25:01
В Haskell всё, что можно отдаль компилятору, отдают ему. Птому что компилятор умнее, не страдает замыливанием глаз, не забывает, не очепятывается

Alexey
26.01.2018
21:25:06
Надо ли прилагать кучу интеллекстуальных усилий, чтобы найти дженерик решение?

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