@haskellru

Страница 1457 из 1551
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

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

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

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
если у тебя для твоего типа есть реализация Monoid то ты по ней можешь написать реализацию Semigroup
окей, возьмём определения class Semigroup a where (<>) :: a -> a -> a class Semigroup a => Monoid a where mempty :: a кстати, здесь нет mappend, его deprecated и выкинут скоро теперь вырази (<>) через mempty

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. — ограничение ты с логикой знаком вообще?

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