@haskellru

Страница 125 из 1551
Anatolii
25.10.2016
18:53:51
От эрора хорошего не жди

SimpleX
25.10.2016
18:54:05
Когда нужна причина - либо throwM, либо Left MyError

Yusup
25.10.2016
18:54:09
Maybe для ошибок типа "ок или не ок"
я просто провожу аналогию

ну в общем, ты понял

Google
Yusup
25.10.2016
18:54:53
а есть какие-нибудь либы для IO, которые возвращают исключения через Either?

SimpleX
25.10.2016
18:55:43
Так это

try

Из прелюда прямо

Или лучше всего использовать MonadThrow

Пакет exceptions

Yusup
25.10.2016
18:58:13
ок, посмотрю

у меня, кстати, есть вопрос

SimpleX
25.10.2016
18:58:34
Оборачиваешь в EitherT SomeException IO

Anatolii
25.10.2016
18:58:53
Во это да

SimpleX
25.10.2016
18:59:02
И разве что асинхронные исключения пройдут

Yusup
25.10.2016
19:02:30
я не очень хорошо знаю хаскель, знаю монады, совсем немного представляю как трансформеры работают. задача из жизни: мы читаем из файла конфиг и держим в памяти, подписываемся на редис канал и каждый раз когда в канал приходит сообщение мы считываем файл конфигов еще раз и обновляем содержимое памяти. решал я ее на NodeJS и решается она довольно просто. дело в том, что с моими знаниями хаскеля, я не представляю, что тут делать, а задача весьма реальная и касается изменения глобального стейта. как ее можно решить в хаскеле?

SimpleX
25.10.2016
19:10:34
А в чем проблема?

Google
SimpleX
25.10.2016
19:10:47
Берешь либу для работы с редисом

Берешь TVar или MVar

И пишешь клиента для редиса

Хранилище конфига: TVar MyConfig

Все что тебе нужно делать - получить сообщение и выполнить простую функцию "прочитал и распарсил файл, записал в TVar"

Все зависит от того, какой интерфейс у клиента редиса в либе. Я не в курсе.

Anatolii
25.10.2016
19:15:17
Просто хаскель это не go в котором можно не разбираясь сейчас вечер напилить что-то

Yusup
25.10.2016
19:15:40
ок, то есть про TVar покурить, так?

Anatolii
25.10.2016
19:15:42
Задача и вправду не сложная если знать конкарент либы

SimpleX
25.10.2016
19:18:04
ок, то есть про TVar покурить, так?
Про MVar, TVar, чтение файлов и парсинг (если кастомный формат; с JSON и YAML все просто). Ну и доки либы для работы с редисом, конечно

Yusup
25.10.2016
19:18:18
ок, спс

Kit
26.10.2016
14:35:04
ребят, подскажите как с монадами сделать такое f :: (Monad a) a -> a -> m a нужна функция которая будет рабать так g f a b = g f b (f a b) конечно надо еще что бы и останавливалась на определенном шаге

пытался запихнуть все в пару, что бы f :: (Monad m) => (a,a) -> m (a,a) тогда получилось бы нужную g создать фолдом

но возникли сложности

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

компилятор ругается на строку 63

в zs приходит тип Diagonal

Ilya
26.10.2016
16:54:35
f :: ( Monad a) => a -> m a f = return

Ничего не понял, монаду внутри пары вовне -- это (m a , m b) -> m (a,b) ты хочешь?

Google
Ilya
26.10.2016
17:06:36
foo (ma, mb) = do a <- ma b <- mb return (a,b)

Наверно и поэлегантней есть, но суть вроде такая

foo :: (Monad m) => (m a, m b) -> m (a,b) Тупл по вкусу

А еще ты похоже хочешь функцию a-> a -> a

Это аппенд из моноида

Kit
26.10.2016
17:18:01
нужна вот эта g f a b = g f b (f a b) но с остановкой

получилось! создав такую функцию

спасибо )

Boris
26.10.2016
22:27:27
Всем привет! У меня маленький вопрос. Есть список предикатов, надо проверить, что все они верны на каком то значении. Я вот так сделал. Работает. Но есть подозрение, что есть какой то способ проще. Заранее спасибо checkLaws :: Log Int -> Bool checkLaws ml = and (map (flip ($) ml) [checkLaw1, checkLaw2, checkLaw3])

Vladislav
26.10.2016
22:30:23
checkLaws ml = all ($ ml) [checkLaw1, checkLaw2, checkLaw3]

Boris
26.10.2016
22:32:45
Logger1.hs:42:1: error: • Couldn't match expected type ‘Bool’ with actual type ‘Log Int -> Bool’ • The equation(s) for ‘checkLawsTest1’ have one argument, but its type ‘Bool’ has none

Неа ;-)

Не проходит)

Vladislav
26.10.2016
22:33:20
а у checkLaw1 какой тип?

Boris
26.10.2016
22:33:35
checkLaw1 :: Log Int -> Bool

Vladislav
26.10.2016
22:38:05
тогда странно

Prelude> checkLaws ml list = all ($ ml) list Prelude> :t checkLaws checkLaws :: Foldable t => a -> t (a -> Bool) -> Bool

Aldar
26.10.2016
22:38:17
а лог это шо такое

Boris
26.10.2016
22:38:20
Так, разобрался

Спасибо!!

Google
Boris
26.10.2016
22:38:34
Дейстивтельно работает, не тот кусок закомментил

Да я на степике курс по хаскелю заканчивал

Это из него задания

Aldar
26.10.2016
22:39:16
) я его тоже проходил

Когда там продолжение, вроде обещали

Boris
26.10.2016
22:39:49
весна 2017 насколько я понял

Если у них там все ок будет

Я когда он шел не успел, и сейчас прохожу

Aldar
26.10.2016
22:43:19
я не успел с отличием получить

вот надеюсь покруче курс будет с трансформерами

Boris
26.10.2016
22:44:21
монады после 10 лет явы с трудом в голову входят ;-(

Kit
26.10.2016
23:23:48
сейчас тоже с монадами воюю, но явы за плечами нет

Paul
26.10.2016
23:38:47
". Итак, можно сказать, что монады могут произойти или погибнуть сразу, т. е. они могут получить начало только путем творения и погибнуть только через уничтожение, тогда как то, что сложно, начинается или кончается по частям."

Мерлин
27.10.2016
05:44:30
[last news] A Haskell web framework

Vladimir
27.10.2016
07:02:11
Ох, я открыл йесод, сгенерил скаффолдом поиложение, зашел в сгенеренный код и закрыл йесод)

Но штука, наверно, хорошая, если пряиюм дофига сайт нужно делать и если разобраться

Boris
27.10.2016
09:23:41
Слишком кривой или слишком сложный?

Vladimir
27.10.2016
09:24:49
Слишком много всего было для моей маленькой задачи. Мне там одного WAI с варпом, по идее, должно хватить

Alexander
27.10.2016
13:37:54
yesod это ашина для уничтожения человечества

что угодно проще чем есод

Google
Alexander
27.10.2016
13:38:05


Konstantin
27.10.2016
13:41:15
@qnikst а что с подкастом стало?

Alexander
27.10.2016
13:41:48
всем лень рома ушёл в machine learning, а никто особо не хочет брать на себя обязательства про запись сведение и т.п.

это если совсем честно

Konstantin
27.10.2016
13:42:26
ясно

Anatolii
27.10.2016
13:45:02
Жалко

вас было круто слушать

Boris
27.10.2016
13:45:26
А стоящий подкаст? есть смысл с начала прослушать?

Vladimir
27.10.2016
13:47:50
Я просто сгенерил yesod-sqlite проект, открыл Application.hs, а там в комменте:

-- We need a log function to create a connection pool. We need a connection -- pool to create our foundation. And we need our foundation to get a -- logging function. To get out of this loop, we initially create a -- temporary foundation without a real connection pool, get a log function -- from there, and then create the real foundation. let mkFoundation appConnPool = App {..} -- The App {..} syntax is an example of record wild cards. For more -- information, see: -- https://ocharles.org.uk/blog/posts/2014-12-04-record-wildcards.html tempFoundation = mkFoundation $ error "connPool forced in tempFoundation" logFunc = messageLoggerSource tempFoundation appLogger

После этого я решил, что, пожалуй, пока нет)

Alexander
27.10.2016
14:15:11
да я тоже бы был непрочь поболтать, но резать это все это не охота

eugene
27.10.2016
14:43:49
@qnikst а есть чат про TT/agda/idris/coq/etc?

Alexander
27.10.2016
14:44:11
я не видел, но если найдете - расскажите мне

eugene
27.10.2016
14:54:43
я не видел, но если найдете - расскажите мне
Ну если тут не знают, то наверное его и нет. Просто не так много людей, кто этим занимается, а тот факт чтобы были они в телеграме совсем мал. Думал что от gitter/ruHaskell чего-нибудь отпочковалось в этом направлении.

Alexander
27.10.2016
14:57:27
нет. скорее в haskell-learning slack

или прочих слаках

eugene
27.10.2016
15:02:19
А рекламировать можно? http://typetheory.ru Если кто-нибудь знает какие-нибудь другие материалы на русском, то буду рад добавить.

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