
Alexander
08.05.2018
15:45:35
не прилетит

Leonid
08.05.2018
16:39:28
http://hackage.haskell.org/package/alarmclock - удобно, рекомендую

Alexander
08.05.2018
16:41:46
подлый бос так ничего и не ответил, форкнуть что-ли к чертям

Leonid
08.05.2018
16:44:10
корочи добавил uninterruptibleMask на хрень которая читает-пишет IORef, это же ничем не грозит? Оно же только на MVar/TVar опасно?

Google

Александр
08.05.2018
16:44:44
Пишется с двумя r ;)

Leonid
08.05.2018
16:44:59

Alexander
08.05.2018
16:46:11

Leonid
08.05.2018
16:47:32
как тестировать менеджер таймаутов?
треды и жесть - шестьсот шестьдесят шесть

Alexander
08.05.2018
16:54:10
дежафю?
или eventlog собирать (надо попробовать кстати)
а то с тестами с таймаутами всегда проблемы

Rustem
08.05.2018
16:56:22
Здрасте

Ruslan
08.05.2018
16:58:08
@Masteroid @rustem_b
деритесь за аватарку )

Rustem
08.05.2018
16:58:58
?

Ruslan
08.05.2018
16:59:29
вот так заходишь в толпу незнакомых хаскелистов, а там... )

Google

Ruslan
08.05.2018
17:01:14
коллизии

Rustem
08.05.2018
17:01:18
так, привет ещё раз, я знаю Python, но решил выучить Haskell дабы познать прелести функционального программирования (если буду в питоне, то мой код будет только из циклов состоять)
посоветуйте что-нибудь

Ruslan
08.05.2018
17:01:59
от циклов?

Rustem
08.05.2018
17:02:08
да

Ruslan
08.05.2018
17:02:41
Мне щас могут напинать, конечно, но есть вот это: http://learnyouahaskell.com/chapters

Rustem
08.05.2018
17:02:50
как например что-нибудь сделать N раз?

IC
08.05.2018
17:02:59

Rustem
08.05.2018
17:03:36
для чего этот оператор нужен?

Ruslan
08.05.2018
17:04:23
Есть ещё такое: http://haskellbook.com/

Alexander
08.05.2018
17:05:04

Rustem
08.05.2018
17:05:14
нить

Alexander
08.05.2018
17:05:16
f ° g?

Mikhail
08.05.2018
17:05:18
Подскажите, как взять в pandoc переменные из обработаного маркдауна и передать writer'у ?

Alexander
08.05.2018
17:05:35
f . g = \x -> f (g x)

Ruslan
08.05.2018
17:05:39
опоздал )

Alexander
08.05.2018
17:06:00
зачем нужен, чтобы писать код читабельнее и короче
полезно в анонимных функциях

Google

Ruslan
08.05.2018
17:06:40
((+1) . (*2)) 3 => 7

Rustem
08.05.2018
17:07:07
f (g x) = (f . g) x
тоесть: ты перечисляешь порядок выполнения функций (справа) а потом аргументы, и он тебе так и сделает?

Alexander
08.05.2018
17:07:36
нет

Rustem
08.05.2018
17:07:57
а в чем прикол между этим и
f $ g x

Alexander
08.05.2018
17:08:24
то, что это разные вещи
f $ g = f g

Rustem
08.05.2018
17:08:36
эх

Ruslan
08.05.2018
17:08:56
$ это чтобы то же самое можно было без скобок написать, типа:
(+1) . (*2) $ 3 => 7

Rustem
08.05.2018
17:10:05
так, всё оказалось давольно сложно чем я думал

The mirror
08.05.2018
17:11:20
эх
если тебе нравится подход с видео презентациями вместо книг, то могу посоветовать этот курс.
я пока не писал ничего серьезного на haskell, но немного работал со scala
https://stepik.org/course/75

Ruslan
08.05.2018
17:11:50

Rustem
08.05.2018
17:12:24
о Боже, забери меня обратно в каваи мир питона

Ruslan
08.05.2018
17:12:55
курс по Скале кстате сильно помогает потом Хаслель воспринимать
императивщикам
типа меня

Rustem
08.05.2018
17:13:25
чувааак, ты с чего начал?

The mirror
08.05.2018
17:13:36

Rustem
08.05.2018
17:14:21
*а я петон...*

Google

Ruslan
08.05.2018
17:14:47
только он усыпляет очень хорошо )

Rustem
08.05.2018
17:15:45
у кого какой самый первй ЯП?
(исключая паскаль и бейсик)

Ilya
08.05.2018
17:16:24

Rustem
08.05.2018
17:16:33
?

Александр
08.05.2018
17:23:35
Оператор композиции (.), похожий на один вожделенный мужчинами объект, проще понимать на примере текста и манипуляции с ним
myText :: String
myText = "ABC123"
transformation :: String -> String
transformation = surroundByBrackets . lowercase . lettersOnly
-- Will be "(abc)"
transformedText :: String
transformedText = transformation myText
Вот эта связка - surroundByBrackets . lowercase . lettersOnly - это функция от одного аргумента, которая протаскивает этот аргумент справа налево через все внутренние функции

Yuuri
08.05.2018
17:27:12

Ilya
08.05.2018
17:27:41
^ пошла токсичность ?

Александр
08.05.2018
17:28:02
Вижу

Rustem
08.05.2018
17:29:03

Александр
08.05.2018
17:29:57
Ну и все внутренние функции, соответственно, тоже от одного аргумента. Потому что мы можем эту связку наращивать или сокращать, если нужно

Евгений
08.05.2018
18:12:12
https://www.tiobe.com/tiobe-index/ скала пробилась в топ-20, лютая победа около-фп

A64m
08.05.2018
18:26:31
такое с тиобе бывает постоянно, какой-то язык выскакивает в топ, а потом падает обратно, можно не обращать внимания, методика там адская

Андрей
08.05.2018
18:39:05
вот сегодня старый добрый чатик - заходят люди незнакомые с функторами и ~сись~ прочими композициями, ахают как сложно.... не то что 1Е3 сообщений про алгебру на типах с профункторами

Oleg
08.05.2018
19:12:44
вы проста завидуите оххоххоххо

Google

Aleksei
08.05.2018
19:49:16
Ребят, может немного помочь? Немного тупой вопрос, только начал учить
Есть какой-то список и какая-то стрелка Клейсли
let list = [1..4]
let k = \x -> [x*2]
Почему list >>= k отрабатывает без ошибок,
а do {arr; k} падает?
Как заставить это дело через do-нотацию работать?

Aleksey
08.05.2018
19:50:36
Что получится, если рассахарить do { arr; k }?

Aleksei
08.05.2018
19:53:24
Я так понял, что это тоже самое, что через bind, но можно еще вытащить промежуточное значение
do
arr
arr2 <- k
arr3 <- k

Aleksey
08.05.2018
19:53:43
arr >> k т.е. arr >>= \_ -> k ("отбрасываем результат предудущего шага и делаем следующий")
а нужно сделать arr >>= k, т.е. arr >>= \x -> k x, или в do-нотации
do
x <- arr
k x

Pineapple
08.05.2018
19:56:36
Из чистой вредности
λ> :t do { const list ; k }
do { const list ; k } :: Num b => b -> [b]

Aleksey
08.05.2018
19:57:52
это другая монадка уже (в вопросе - [], тут - (->) r)

Pineapple
08.05.2018
19:58:11
Зато таинственно тайпчекается

Aleksei
08.05.2018
20:05:35
Сработало. А промежуточное значение разве не должно и так в след функцию бросаться?
Мы же не пишем arr >>= (\x -> k x),
а просто arr >>= k
а нужно сделать arr >>= k, т.е. arr >>= \x -> k x, или в do-нотации
do
x <- arr
k x

Maxim
08.05.2018
20:07:17
тебе не кажется, что \x -> k x и k это одно и то же? :)

Aleksei
08.05.2018
20:09:01
Кажется. Вот поэтому и спрашиваю, почему мой исходный вариант не работал, а вариант @astynax сработал. В чем разница?

Pineapple
08.05.2018
20:09:56
А что можно использовать чтобы гонять CI на винде для опенсорца на гитхабе?

Maxim
08.05.2018
20:10:04
appveyor

Pineapple
08.05.2018
20:10:38
Спасибо

IC
08.05.2018
20:23:05

Aleksey
08.05.2018
20:25:17
> А промежуточное значение разве не должно и так в след функцию бросаться?
не должно.
do
foo
x <- bar
baz x
рассахаривается в
foo >>= \_ ->
bar >>= \x ->
baz x
никакого магического "и так" нет. Всё передаётся только явно