@haskellru

Страница 359 из 1551
sojalei
19.08.2017
15:01:43
... | doesEnrageMork a && doesEnrageGork = ????? ... подскажите как здесь ничего не вернуть, но вызвать две функции?

https://gist.github.com/sojalei/0d4774c3a942c145f0433531fd34f0d6

всем спасибо, решил сам

Дмитрий
19.08.2017
15:12:54
Это называется использовать чят в качестве утёнка

Google
Denis
19.08.2017
15:13:24
вызвать и не вернуть?

sequence_ [fn, fn2] $ param

мб как-то так

Олег
19.08.2017
15:14:43
А зачем чистую функцию вызывать и не возвращать?

Denis
19.08.2017
15:15:10
ну в моем случае это какие-то функции с эффектом

Олег
19.08.2017
15:15:37
Окей :)

Denis
19.08.2017
15:16:03
например sequence_ [print 20, print . (+10) $ 100]

Олег
19.08.2017
15:18:20
Почему бы тогда не использовать do?

Denis
19.08.2017
15:20:25
ну или print a >> print b >> pure ()

Pavel
19.08.2017
15:22:15
https://gist.github.com/sojalei/0d4774c3a942c145f0433531fd34f0d6
судя по типам тебе нужно вернуть то, что имет такой же тип, что и a

sojalei
19.08.2017
16:59:41
да там решалось stomp (stab a)

Ещё помощь нужна:( нахождение среднего арифметического проходит все тесты на стёпике кроме одного(2 3 5) avg :: Int -> Int -> Int -> Double avg a b c = fromIntegral (a + b + c) / 3

Google
Yuriy
20.08.2017
09:51:34
со ScopedTypeVariables легко забиндить типа так: foo (A (fb :: F b)) = case sing :: Sing b of ...
спасибо! заработало! https://gist.github.com/cblp/b9e0d3aac0ab8e496a9930d74e3b8f57

спасибо @int_index и @qnikst

kana
20.08.2017
19:15:16
Судя по документации, оверлапинг такого рода ошибочен (да и это логично, a по определению принимает все типы, а где-то выше для одного из вариантов другой результат), но что делать, когда очень нужно? Как сделать все правильно? Нужно что-то вроде паттерн-метчинга в type families type family F a :: Type type instance F [a] = [Int] type instance F a = Int

closed type families не решение, потому что инстансы разнесены по инстансам тайпкласса. Логика подсказывает, что решения в принципе нет, ведь даже если бы инстансы реально паттерн-метчились, но нужен был бы способ отсортировать инстансы по специфичности (в начале самые точные, в конце самые общие), а высчитать специфичность инстанса - что-то не очень тривиальная задача

Index
20.08.2017
20:00:07
> а высчитать специфичность инстанса - что-то не очень тривиальная задача GHC умеет это делать, но не для type families, только для классов. Так что прологоподобный код на фандепах возможен

Max
20.08.2017
20:05:28
https://eventil.com/presentations/aKsn8q

kana
20.08.2017
21:02:46
Типа такого: instance Show Char where showsPrec _ '\'' = showString "'\\''" showsPrec _ c = showChar '\'' . showLitChar c . showChar '\'' showList cs = showChar '"' . showLitString cs . showChar '"'

Массив я в своём примере чисто для примера, у меня там на самом деле a :>: (b :<|>: c) и a :>: b пересекаются, хотел понять, в чем была проблема servant-client вложенные альтерантивы в одну зафлэтить (то есть ty -> (a :<|> b) в (ty -> a) :<|> (ty -> b)

Alexander
20.08.2017
21:54:35
так, чего-то я туплю и мне думать лень

у меня есть I (f :: * -> *) (a :: *), в одном месте мне хочется записать чтобы f = V2 g для любого g, как мне это делать, через Compose какой?

т.е. f a = V (g a) надо

Denis
20.08.2017
21:57:45
натуральное преобразование?

даже изоморфизм может быть) хотя не буду ничего советовать не понимая что надо)

Alexander
20.08.2017
21:58:27
не, Cmpose

Denis
20.08.2017
21:58:56
Data.Functor.Compose?

Alexander
20.08.2017
21:59:17
да

прикольно, работает

похоже что API близок к хорошему, т.к. сошлись те вещи, что не сходились раньше

Google
Denis
20.08.2017
22:14:43
Compose?

Alexander
20.08.2017
22:21:28
в целом апи для либы

Yuriy
21.08.2017
05:28:26
в чём дело-то было? выглядит правильно
подозреваю, что в конечности Int

sojalei
21.08.2017
11:06:16
в чём дело-то было? выглядит правильно
после запятой было что-то вроде 3333333335

Ilya
21.08.2017
11:11:11
И как "надо"? Что-то типа? double ((a + b + c) div 3) + double ((a + b + c) mod 3) / 3.0

Извиняюсь за неровный почерк

sojalei
21.08.2017
11:12:18
И как "надо"? Что-то типа? double ((a + b + c) div 3) + double ((a + b + c) mod 3) / 3.0
такое прошло тесты avg a b c = (/3) $ foldr((+) . fromIntegral) 0 [a, b, c]

Denis
21.08.2017
11:13:52
ага)) я кинул просто вариант с foldr (хотя можешь (/3) $ sum $ fromIntegral <$> [a,b,c])

Alexander
21.08.2017
11:36:12
ну там достаточно fromIntegral на каждый агрумент звать было, я думаю

просто там было что-нить типа average maxBound maxBound maxBound

Denis
21.08.2017
11:39:55
ну можно и так было (fromIntegral a + fromIntegral b + fromIntegral c) / 3

Alexander
21.08.2017
11:42:32
flip flip fromIntegral . (((.) . (+)) .) . (. fromIntegral) . (+) . fromIntegral =)

а на 3 ещё

flip flip 3 . ((flip . ((/) .)) .) . flip flip fromIntegral . (((.) . (+)) .) . (. fromIntegral) . (+) . fromIntegral

Alexander
21.08.2017
11:43:00
интересно это кто-то может сходу прочитать

@sojalei это тоже самое, просто в pointfree

sojalei
21.08.2017
11:43:38
@sojalei это тоже самое, просто в pointfree
не на то сообщение ответил

Alexander
21.08.2017
11:44:15
в общем проблема была в том, что в решении где fromIntegral $ a + b + c) там проблемы с переполнением

Google
Alexander
21.08.2017
11:45:12
вот как ты решил

сделать fromIntegral на каждое число перед тем, как складывать

sojalei
21.08.2017
11:45:30
это конечно только для стёпика я решил, а так не

Denis
21.08.2017
11:45:46
подходит

тип только укажи

Alexander
21.08.2017
11:45:56
я не верю, что не проходит

Denis
21.08.2017
11:46:00
а не просто функцию

сделай с типом а не просто в ghci

Alexander
21.08.2017
11:47:43
а в чем проблема ответа выше?

где 3+2+5?

Denis
21.08.2017
11:48:40
все там норм

sojalei
21.08.2017
11:57:01
f :: Integer -> Integer -> Integer -> Float f a b c = (fromIntegral a + fromIntegral b + fromIntegral c) / 3 теперь ответ 3.3333333 Так и должно быть?

Denis
21.08.2017
11:57:42
Double и Float имеют разную точность

Alexander
21.08.2017
11:58:01
и то и другое верно

Илья
21.08.2017
21:39:32
А пользовался кто-нибудь здесь Leksah?

Удобно ли писать на ней код, посоветуете ли начинающему?

? animufag ?
21.08.2017
22:26:51
Он наверное не развивается

Aleksey
22.08.2017
07:37:33
Leksah потихоньку пилят. Но явно не в том темпе, в которм нужно

Google
Aleksey
22.08.2017
07:38:03
К тому же, говорят, лекса не очень то дружит со stack (или просто не всё работает)

Думаю, что даже плагин для Idea уже стал лучше, чем Лекса

Aleksey
22.08.2017
07:42:24
Странно, что кто-то в этом (в неуспешности Лексы) сомневался вообще - всегда было слишком мало ресурсов для её развится

kana
22.08.2017
07:42:32
А он так плох? Я пока пишу на vscode, но поддержка хаскеля меня не радует, использую вроде intero, нужно перезагружать редактор при установке любого пакета, но не знаю куда

Aleksey
22.08.2017
07:43:23
> использую вроде intero, нужно перезагружать редактор при установке любого пакета это проблема плагина в вскоду. В Emacs есть команда intero-restart :)

intero, это просто фоновый подпроцесс, его перезапуск не должен быть проблемой

kana
22.08.2017
07:45:36
Перезапускать интеро тоже фиговый выход, нужно, чтобы все само обновилось там и стало норм)

Aleksey
22.08.2017
07:56:08
перезапуск нужен, ибо intero, это надстройка над REPL, и часть изменений в конфигурации проекта просто так не применить в репле без перезапуска (или можно применить, но это осень сложно)

когда достаточно :reload, intero сам справляется

kana
22.08.2017
08:01:32
Я к тому, что некая абстрактная идеальная среда должна сама увидеть, что пакеты изменились, и перезагрузить все, что нужно

Alexander
22.08.2017
08:10:10
incron?

Leonid
22.08.2017
09:02:59
https://spb-fp-meetup.timepad.ru/event/555708/ приходите послушать @qnikst

Anatolii
22.08.2017
09:03:22
а записи будут?

Alexander
22.08.2017
09:03:27
маловероятно

Anatolii
22.08.2017
09:03:47
эхь

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