@haskellru

Страница 1052 из 1551
Leonid
03.04.2018
08:44:38
catches?
о, точняк. в Control.Monad.Catch оно не список берет а Foldable, вот я и не заметил.

Alexander
03.04.2018
08:50:27
о каком поле идёт речь?
поле структуры Тест, где находится список

Theta
03.04.2018
08:51:09
поле структуры Тест, где находится список
Ну... я, признаюсб рассмотрел лишь два крайних случая. все поля ленивы и все поля строги.

ясно короч

Google
Theta
03.04.2018
09:02:58
Главное не ясно зачем он задал этот вопрос в ответ на мои попытки уточнить недопонимания между нами? ?

кто и что имел в виду

так странно

A64m
03.04.2018
09:03:44
как итог, смысл этого все еще не ясен
неудачный пример, таким объявлением класса Functor все равно нормально пользоваться нельзя

Theta
03.04.2018
09:07:37
> type C f a :: Constraint type C f a = () fmap :: (C f a, C f b) => (a -> b) -> f a -> f b Что это за магия? O_o

не похоже на... type Deck = [Card]

например

по каким ключевым словам можно узнать подробнее?

Theta
03.04.2018
09:10:41
спс.

... читал да забыл

Yuriy
03.04.2018
09:11:57
Глупый вопрос - какую задачу решают type families, а какую gadt?

Alexander
03.04.2018
09:12:23
это одно и тоже

Google
Alexander
03.04.2018
09:12:32
грубо говоря

kana
03.04.2018
09:13:02
Очень грубо имхо, они просто одинаковые механизмы (коершены эквивалентных типов) используют

Alexander
03.04.2018
09:13:14
вообще tf - вычисление на типах

Leonid
03.04.2018
09:15:36
хм. а как на 32 битных ghc делать threadDelay на дольше чем maxBound :: Int микросекунд?

kana
03.04.2018
09:16:07
Делать несколько раз и мириться с возможной погрешностью

Alexander
03.04.2018
09:16:11
сделать несколько?

можно попросить at тебя в сокет пнуть

Leonid
03.04.2018
09:16:43
а есть пакет?

kana
03.04.2018
09:17:00
Есть, видел недавно

Alexander
03.04.2018
09:17:03
был

Leonid
03.04.2018
09:17:10
https://hackage.haskell.org/package/concurrent-extra-0.5/docs/Control-Concurrent-Thread-Delay.html как обычно, Бас приходит на помощь

Alexander
03.04.2018
09:17:10
не помню что-то типа timeouts

Leonid
03.04.2018
09:17:22
хм

из нового выпелен

http://hackage.haskell.org/package/unbounded-delays во

Yuriy
03.04.2018
09:25:10
Ну так а задачи с их помощью какие решают )?

kana
03.04.2018
09:33:45
семейства: как уже выше сказали, вычисление на уровне типов классический пример - найти тип элемента по типу контейнера другой классичиский - сложение натуральных чисел на тайплевеле как я понимаю, многие задачи семейств раньше (да и сейчас) решали через классы + функциональные зависимости гадты: когда нужна зависимость типа от типов аргументов конструктора, в случае с фантомами например. Классический пример: data E a where I :: Int -> E Int B :: Bool -> E Bool Sum :: E Int -> E Int -> E Int -- this And :: E Bool -> E Bool -> E Bool -- and this eval :: E a -> a eval (I x) = x eval (B b) = b eval (Sum x y) = eval x + eval y eval (And a b) = eval a && eval b без gadt-ов такое написать сложнее решаемые задачи: более инвариантные под задачу типы

Leonid
03.04.2018
09:34:28
MVar (IORef a) - вот так же норм для случая когда мне нужно ждать пока значение на поступит, ну а потом оно будет только обновлятся но никогда не исчезнет?

и второй вопрос: что шустрее - readTVarIO или readIORef

Google
Yuriy
03.04.2018
09:36:20
Пасиб.

Alexander
03.04.2018
09:38:04
at это что?
unix утилита

Kirill
03.04.2018
09:52:49
и второй вопрос: что шустрее - readTVarIO или readIORef
Стм какой - то минимальный оверхэд добавит же?

Leonid
03.04.2018
09:53:22
а там у readTVarIO особенный случай

вообще без контеншена я думаю без разницы. IORef тоже спинлок не схватит

Kirill
03.04.2018
09:54:35
https://codeburst.io/the-haskell-concurrency-primitive-shootout-538c21993f1c есть, но не совсем прям свежак :)

так-что TVar даж и быстрей судя по этим бенчам

страннота

правда там бенч на модификацию, так что другой юзкейс :-\

Alexander
03.04.2018
10:04:41
а как бы hasql с логгером подружить?

kana
03.04.2018
10:09:44
Пасиб.
чтобы закончить пример с expr: data E = I Int | B Bool | Sum E E | And E E -- we can (And (I 1) (I 2)) -- not typesafe eval :: E -> ??? -- we can add phantoms and smart constructors data E a -- private (do not export) constructors = I Int | B Bool | Sum (E Int) (E Int) | And (E Bool) (E Bool) i :: Int -> E Int b :: Bool -> E Bool sum :: E Int -> E Int -> E Int and :: E Bool -> E Bool -> E Bool i = I; b = B; sum = Sum; and = And eval :: E a -> a eval (I x) = x -- ?? type of `x` is not `a` -- it is Int то есть одну проблему мы решили, а вторую (приведение Int к a) нет, гадты решают и это введением коершинов, пруфы о равенстве типов (в данном случае a ~ Int), которые поставляются в конструкторах, и их применении к значению

Yuriy
03.04.2018
10:11:08
Во, ясно.

Данке.

Leonid
03.04.2018
10:13:50
@qnikst в общем благодаря тебе я везде в монадках теперь в использую fix вместо явной рекурсии

Alexander
03.04.2018
10:14:08
\o/

Alexander
03.04.2018
10:22:21
от неожиданных утечек и введения бесполезных имен

IC
03.04.2018
10:22:45
бесполезные имена это всякие go?

Alexander
03.04.2018
10:22:56
да

вместо `let go = ... in go

Google
Alexander
03.04.2018
10:23:22
+ помогает от утечек при вложенных циклах

IC
03.04.2018
10:23:38
"go не нужен" — @haskellru

kana
03.04.2018
10:23:56
не очень красиво получается, когда нужно аргумент в fix-функцию передать

Alister
03.04.2018
10:24:09
хаскель не нужен -Роб Пайк

Alexander
03.04.2018
10:24:36
ну это ж haskell тут 100500 способов и плюсов и минусов у каждого

IC
03.04.2018
10:24:47
осталось теперь упороться и сделать data ExprF a where и обмазаться тайплевел фиксами

Alexander
03.04.2018
10:24:56
fix это такой safe default

Leonid
03.04.2018
10:24:58
fetchLoop manager req = flip fix 0 $ \next errCount -> do r <- fetchOnce manager req errCount case r of Nothing -> next (succ errCount) Just keys -> pure keys

Alexander
03.04.2018
10:25:07
ката и анаморфизмами

Theta
03.04.2018
10:25:25
вместо `let go = ... in go
Да, с fix определённо лучше! fix (\go n -> if n <= 1 then 1 else n * go (n-1)) 5

IC
03.04.2018
10:25:40
Alexander
03.04.2018
10:26:26
если кому интересно отмотайте на несколько недель назад, там длинная дискуссия была

Alexander
03.04.2018
10:27:22
в этом

с @JelF1337 диалог был

если я не ошибаюсь

Alexander
03.04.2018
10:27:57
было дело

kana
03.04.2018
10:28:01
fetchLoop manager req = flip fix 0 $ \next errCount -> do r <- fetchOnce manager req errCount case r of Nothing -> next (succ errCount) Just keys -> pure keys
FLIP! вот оно, это то что я выше писал про проблему передачи аргумента чет я про flip не подумал

Alexander
03.04.2018
10:29:44
вообще как мне передали мысль сноймана если тебе приходится объяснять что-то более, чем 2 раза то пиши об этом пост

Google
Alexander
03.04.2018
10:29:51
видимо надо писать об этом пост.

но это сложно и долго :/

Alexander
03.04.2018
10:31:02
соблюдайте предельную осторожность. Первый симптом fix, потом flip, дальше (.) . (.) и понеслась

Leonid
03.04.2018
10:31:26
но это сложно и долго :/
пусть @JelF1337 пишет об этом пост!

Alexander
03.04.2018
10:31:36
я кстати могу

Alexander
03.04.2018
10:31:46
мнение человека может не совпадать со мнением редакции

но вообще круто бы

Anatolii
03.04.2018
10:32:19
Alexander
03.04.2018
10:33:24
ну это ще вроде норм

вот если функция point-free, а большая часть операций там это флипы и композиции, то пациента пора лечить

Sergey
03.04.2018
10:39:51
https://hackage.haskell.org/package/universum-1.0.4/docs/Universum-VarArg.html потом вот это
это ... - кстати, круто. Сколько раз были ситуации когда добавляешь второй параметр в функцию, и приходится все цепочки композиций с этой функцией переписывать на явные параметры. А тут получается, можно просто добавить к точке ещё две - и они соберутся сами.

Alexander
03.04.2018
10:44:48
было у олега

Leonid
03.04.2018
10:45:24
сколько нужно памяти на компиляцию?

Dmitry
03.04.2018
10:45:26
А как fix помогает от утечек?

Anatolii
03.04.2018
10:45:27
мне тоже нравится

но когда я это исопльзую ощущение что я переусложняю

Dmitry
03.04.2018
10:46:02
@qnikst А как fix помогает от утечек?

Anatolii
03.04.2018
10:47:47
опять типы не налезли

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