
ParkeT
12.08.2018
13:53:24
А это норм что я тоже вижу опросник от Terminator?

Dmitry
12.08.2018
13:54:18
Вопрос даже не в том, что виден или нет, а в том, что кнопку можно нажать только тому, кому вопрос задан
Как это, интересно?
Terminator только ему права даёт?

Google

Dmitry
12.08.2018
13:59:33
А, даёт всем, только учитывает от новичка

Alexander
12.08.2018
14:16:10
как это связано с IRC?
там нельзя newline в сообщении и ограничена длина сообщения. В итоге возникает привычка писать одно предложение в сообщении.

Yuriy
12.08.2018
14:19:15

Евгений
12.08.2018
14:24:25
Звучит как опыт культуры, в которой перебивать собеседника считается нормой

Yuriy
12.08.2018
14:51:52
нет. не звучит. перебивать — это говорить во время говорения, а возражать вежливо можно между репликами

A
12.08.2018
15:28:06
?

ТТ
12.08.2018
18:59:06

Alexander
12.08.2018
20:08:59
не факт, с подобными технологиями тут не очень
никто wai-prometheus к серванта не прикручивал ещё?

Ilya
12.08.2018
21:42:49
http://hackage.haskell.org/package/mmorph-1.1.1/docs/Control-Monad-Morph.html#t:MMonad
Что это Монада над Монадами? Какой интересный пакет

Alexander
12.08.2018
21:47:15
хочет от тебя функция Conduit IO a b

Google

Alexander
12.08.2018
21:47:34
а у тебя только функция работающая в ResourceT IO
если у тебя есть преобразование из второго в первое, то ты можешь его передать
ну и вообще изменение "внутренности" стека

Ilya
12.08.2018
21:58:39
Это всё нужно потому что монады не композятся?
То есть, так как у нас не композиция монад, а именно накручены трансформеры, мы уже не можем лазить по стеку обычным fmap'ом
Короче примерно понятно

Hot
13.08.2018
05:53:57
Утра! А есть в Haskell функция, позволяющая подсчитать число вхождений определённого элемента в список?
А то гугл предлагает велосипедить.

Dmitry
13.08.2018
05:55:00
length $ filter isElement list ?

Hot
13.08.2018
05:55:20
Ну почему бы и нет.
Спасибо!

Dmitry
13.08.2018
05:56:33
Ещё тут можно посмотреть: http://hayoo.fh-wedel.de/?query=(a+->+Bool)+->+[a]+->+Integer
Ну т.е. поискать по сигнатуре: (a -> Bool) -> [a] -> Integer

Hot
13.08.2018
05:57:29
Ого, а вот это реально крутая фишка!

Dmitry
13.08.2018
05:57:46
Век живи, век учись!

Hot
13.08.2018
06:02:54
А то!
А можно задавать какие-то ограничения у типов, определённых через data?
Например, у меня есть тип Line, и я хочу указать, что start не может быть больше или равен end.
data Line = Line { start :: Int, end :: Int } deriving (Show)
Вот сам тип

Google

Dmitry
13.08.2018
06:05:10
В Haskell -- вряд ли.
Но можно попробовать end :: Int заменить на length :: Word

Hot
13.08.2018
06:05:46

Dmitry
13.08.2018
06:06:15
Вот это не знаю, ещё не начал изучать. Пусть другие ответят

Hot
13.08.2018
06:06:36
Идрисоводов ещё пойду в чате про deptypes спрошу.

Dmitry
13.08.2018
06:06:58
Да проще уж с length :: Int :)
Или даже length :: Word, но потом замучаешься fromIntegral писать

Hot
13.08.2018
06:07:45
Выглядит как-то костыльно, если честно.
Подождём, пока проснётся @qnikst

Dmitry
13.08.2018
06:08:44
Ну почти во всех библиотеках такое, тот же Vector именно так устроен, т.е. там начало и его размер, а не начало, конец.

Hot
13.08.2018
06:09:33
Кстати да, я только что понял, что сам Line - велосипед.
Хотя для обучения велосипедостроение вполне себе ок.

Alexander
13.08.2018
06:11:48
а чт
?

Dmitry
13.08.2018
06:12:12

Hot
13.08.2018
06:12:13
@qnikst вкратце - вот.
Например, у меня есть тип Line, и я хочу указать, что start не может быть больше или равен end.
data Line = Line { start :: Int, end :: Int } deriving (Show)

Dmitry
13.08.2018
06:12:14
:)

Hot
13.08.2018
06:12:17
С добрым утром.

Google

Alexander
13.08.2018
06:12:46
забей на это, сделай умный конструктор. или синглетоны

Hot
13.08.2018
06:13:15
Ну даже если так, возмность-то есть такая или нет?

Dmitry
13.08.2018
06:18:43
Даже если есть в том же Idris, тебе придётся страниц 5 теорем доказывать. Проще уж инкапсулировать Line в 2-3 функции.
Но я не знаток, может, другие подскажут, как в 4 страницы сделать ;)

Aleksey
13.08.2018
06:22:29
начало и конец на Nat и неравенство на type famity.
Но не стоит того. Smart constructor, как уже выше сказали, обычно норм

Admin
ERROR: S client not available

Aleksey
13.08.2018
06:23:24
Если взять длину в Nat, то можно и без TF обойтись по идее

Dmitry
13.08.2018
06:23:38
Тем более всегда ж можно сделать end Line{..} = begin + length

Aleksey
13.08.2018
06:23:45
Потому как "ненулевая длина", это Succ a

Hot
13.08.2018
06:24:22
Если бы я чего для прода на этом писал - и подход был бы другой.

Aleksey
13.08.2018
06:26:37
Нет смысла накладывать ограничения на один конструктор - Line может получиться вырожденной в результате неких вычислений. Поэтому либо Nat таскать вместо Int и тайплевельную же арифметику, либо пользовать mkLine :: Int -> Int -> Maybe Line

Kirill
13.08.2018
06:43:57
там с гранулярностью как-то ниоч с ваивскими метриками, поэтому я кастомные делал

Pavel
13.08.2018
06:48:09

Dmitry
13.08.2018
06:48:38
Type Family
Tensor Flow ;)
Выбирай нужное

Fedot
13.08.2018
06:49:03

Google

Hot
13.08.2018
06:49:27
В общем, если кому не жалко свободного времени - проревьюйте код.
Вот задача:
https://tproger.ru/problems/nested-segments/
Вот решение:
https://hastebin.cuttlerat.ru/qemimezumi.hs

Dmitry
13.08.2018
06:50:38
http://hackage.haskell.org/package/fingertree-0.1.4.1/docs/Data-IntervalMap-FingerTree.html
Готовое решение ;)

Hot
13.08.2018
06:51:06

Dmitry
13.08.2018
06:51:19
Да я для обучения :)

Hot
13.08.2018
06:51:24
А вообще прикольно, да.

Pavel
13.08.2018
06:51:28

Dmitry
13.08.2018
06:51:34
Многие алгоритмы на Finger Tree работают
Полезно знать

Dmitry
13.08.2018
06:52:06

Hot
13.08.2018
06:52:32
Что есть id?
По типу непонятно.
a -> a

Aleksey
13.08.2018
06:53:05
Type Family
Там три сообщения в контексте. Один раз написано type family, воторой раз - TF. Можно уж и догадаться

Dmitry
13.08.2018
06:53:17
a -> a
По этому типу как раз понятно. Ибо существует всего одна разумная возможная функция с таким типом.

Dmitry
13.08.2018
06:53:46
filter (\x -> x == True) list надо на filter id

Hot
13.08.2018
06:53:47