
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

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
спасибо @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

Yuriy
20.08.2017
20:41:12

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)

Ilya
20.08.2017
21:12:41

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

sojalei
21.08.2017
11:06:16

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

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

sojalei
21.08.2017
11:42:56

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

sojalei
21.08.2017
11:43:38

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

Google

sojalei
21.08.2017
11:45:03

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 уже стал лучше, чем Лекса

Mikhail Subbotin
22.08.2017
07:41:28

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
эхь