
Alexander
11.09.2018
11:11:25
а у нас есть смотрелки для .hi файлов?

A64m
11.09.2018
11:11:30
думаю, что наличие правила или какой-нибудь прагмы инлайн/инлайнабл приведет к сохранению

Alexander
11.09.2018
11:11:57
какие?

Google

A64m
11.09.2018
11:12:28
ghc
есть какой-то ключ

Alexander
11.09.2018
11:12:59
вот я тоже что-то такое помню
-ddump-hi ?
—show-iface

A64m
11.09.2018
11:13:47
да, вот этот
show-iface

Alexander
11.09.2018
11:14:33
d65f502e1a7d917e8824882f685ae902
b :: Int
{- HasNoCafRefs, Strictness: m, Unfolding: (I# 2#) -}
придумать бы функцию, у которой бы не было unfolding
9e8d41913a00d8e9464cd091ba8b397e
b :: Int
{- Inline: -}
"nonsence" forall a = b
все равно сработало
b :: Int
b = replicate 100 2 !! 99
{-# NoInline b #-}
[qnikst@nixos:~/tmp/rew]$ nm -gC A.o
0000000000000038 D A_a_closure
0000000000000018 D A_b_closure
0000000000000118 T A_b_info

Google

Alexander
11.09.2018
11:18:49
а для срабатывания правила наличия info да closure достаточно
другое дело, что дальше специализировать ты не сможешь

A64m
12.09.2018
08:29:28
приняли
https://github.com/ghc-proposals/ghc-proposals/pull/106

Leonid
12.09.2018
08:31:40
и как это поможет с криптой?

A64m
12.09.2018
08:35:59
комитетчики немного пошевелились, но про или паттерны так и не вспомнили
как написали
> I will mark the proposal as accepted *unless* I hear a dissenting opinion by the end of next week.
29 июня, так с тех пор у них неделя все не кончается

Dmitry
12.09.2018
11:06:12

Alexander
12.09.2018
12:09:32
кто знакт как warp завершается?
он ждет треды обработчики или нет?

Aleksey
12.09.2018
12:13:45
@s9gf4ult ^ что мы там выяснили по этому поводу?
вроде ждёт
(что нам мешало)

Aleksey
12.09.2018
12:14:09
ждет

Alexander
12.09.2018
12:14:14
тогда вопрос, как сделать чтобы не ждал?

Aleksey
12.09.2018
12:14:22
и там есть параметр с таймаутом

Alexander
12.09.2018
12:14:32
т.е. мне нужно ждать, но если слишком должго то убить все к чертям

Aleksey
12.09.2018
12:14:37
чтобы не ждал X секунд
https://hackage.haskell.org/package/warp-3.2.25/docs/Network-Wai-Handler-Warp.html#v:setGracefulShutdownTimeout

Alexander
12.09.2018
12:15:29
угу, пасиб

B. L.
12.09.2018
13:26:53
а можете подсказать, почему у MonadTrans нет явного ограничения Monad m => Monad (MonadTrans m)?
так нельзя сделать в виде Constraint-а и законы для lift это неявно требуют, но наверняка же есть способ закодировать?

Yuriy
12.09.2018
13:33:46
ограничения?

Google

Yuriy
12.09.2018
13:34:19
или нет инстанса (Monad m, MonadTrans t) => Monad (t m)?

Alexander
12.09.2018
13:35:57
ограничение может быть если и только если можно выразить левое через правое
например, Functor a => Traversible a, т.к. fmap = runIdentity . traverse (Identity . f)
т.е. мы смогли имея только методы из Traversible выразить Functor
теперь у нас есть MonadTrans:
lift :: Monad m => m a -> t m a
можем ли мы с его помощью выразить join или (»=) ?
и написать bindDefault :: MonadTrans t m a => m a -> (a -> m b) -> m b
t аж потерялось
без этого свойства в констрейнты класса добавлять для удобства можно, но это плохо

B. L.
12.09.2018
13:41:35
хорошо, я понимаю, что нельзя просто потому что нет ничего, что делало бы join по t, но несколько смущает, что никакого ограничения, что t m должен быть монадой нет при обьявлении

A64m
12.09.2018
13:42:06
(forall m. Monad m => Monad (t m)) => MonadTrans t

B. L.
12.09.2018
13:42:39
да, что-то в таком духе имею в виду
но его же нет тут https://hackage.haskell.org/package/transformers-0.5.5.0/docs/Control-Monad-Trans-Class.html

A64m
12.09.2018
13:43:24
такое можно будет только компилировать компилятором который где-то в течении месяца зарелизят

B. L.
12.09.2018
13:44:27
спасибо большое
и, если не трудно, можете подсказать, почему раньше не было или что мешало?

A64m
12.09.2018
13:47:21
ну, просто не имплементировано было
находили всякие воркараунды, так что такой уж острой необходимости не было
где-то с 2000го года эта фича кое-как обсуждалась

B. L.
12.09.2018
13:50:38
ну, я просто смотрю на https://downloads.haskell.org/~ghc/7.4.1/docs/html/users_guide/constraint-kind.html и он же не позволяет написать так?
(я, на самом деле, плохо понимаю, о чём говорю, и если у вас есть ссылка, которая помогла бы, я был бы благодарен)

Yuriy
12.09.2018
13:51:22

Google

A64m
12.09.2018
13:51:32
нет, не позволяет - это другая фича
https://i.cs.hku.hk/~bruno/papers/hs2017.pdf

Alexander
12.09.2018
13:51:48

B. L.
12.09.2018
13:51:53
спасибо

Yuriy
12.09.2018
13:52:46
<> = mappend
нет, наоборот, mappend = (<>), и он лишний. ты мне (<>) через mempty вырази

Alexander
12.09.2018
13:53:03

Yuriy
12.09.2018
13:53:19
не тупи
это ты что-то странное пишешь

Admin
ERROR: S client not available

Alexander
12.09.2018
13:53:24
не тупи
если у тебя для твоего типа есть реализация Monoid то ты по ней можешь написать реализацию Semigroup
используя только те методы которые у меня есть из Monoid
если не согласен то перечитай 10 раз
как её написать, я сказал выше

Yuriy
12.09.2018
13:55:01
моноид является полугруппой в теории. Traversable является Functor в теории. ничего не надо выражать

Alexander
12.09.2018
13:55:13
что значит "является"
мы делаем Functor => Traversible именно потому, что можем написать fmapDefault
и выразить через Traversible
если что я советую *подумать* над тем, что такое *является*

Yuriy
12.09.2018
13:57:14

Alexander
12.09.2018
13:57:45
щ.Щ ?
зачем

Google

Yuriy
12.09.2018
13:58:15

Alexander
12.09.2018
13:58:51
что значит "определение одного основано на другом" ?
в определении Monad нету ничего про функтор

Yuriy
12.09.2018
13:59:04
зачем
ты утверждаешь, что Monoid может зависеть от Semigroup, только если можно выразить (<>) через mempty

Alexander
12.09.2018
13:59:05
и про аппликативный функцтор
что такое Monoid?
подсказываю:
> In abstract algebra, a branch of mathematics, a monoid is an algebraic structure with a single associative binary operation and an identity element.

Yuriy
12.09.2018
14:00:00

Alexander
12.09.2018
14:00:17
прочитай определение выше
так вот, ассоциативная бинарная операция определяет semigroup

Yuriy
12.09.2018
14:01:18
это одно из определений. я всегда видел определение моноида как полугруппы с единицей

Alexander
12.09.2018
14:01:19
в Monoid больше структуры, но в него включается та же структура что есть и в Semigroup
algebraic structure with a single associative binary operation

Yuriy
12.09.2018
14:02:05
ты пишешь полную чепуху
a monoid — термин
is an algebraic structure — базовый объект
with a single associative binary operation and an identity element. — ограничение
ты с логикой знаком вообще?