Theta
даже начал выводиться на экран...
Theta
и вычисляться
Alexander
в рантайме типов нету
Theta
то что он не вычисляется уже не мои проблемы
Alexander
не начал он это show сработало
Alexander
я не понимаю этого утверждения
Alexander
типы стираются System DC ещё не запилили
Theta
ну да, шоу сработало. Значит на вход ему мы что? ЧТо-то подали, ленивое. Что он начал вычислять так как потребовался результат. СЛедовательно извлечено
Alexander
нет конечно
Theta
если бы было не извлечено, даже кавычка бы не вывелась.
Theta
Извлечение это и есть чисто операия на д типами
Alexander
ну или в такой странной терминологии и строгий список извлекается
Theta
ладно уже философия какая-то
Theta
Получается так, лол)
Theta
Ну ок, если считать извлечением не операцию над типами, а получение готового результата, то ок, не извлекаем.
Theta
но тут я уже сомневаюсь в правильности того или иного понимания термина извлечение. Поэтому на всякий случай в ответе уточнил про конечность списка
Alexander
Theta
что это нормальный список а не... wtf 😆
Alexander
Theta
не получаем)
Theta
а над типами поколдовали вполне... ;D
Theta
Ладно, давай сойдёмся что очередной вопрос странный?
Theta
😆
Theta
неполный
Alexander
вопрос странный, т.к. при всех определениях извлечения строгие и ленивые списки имеют одинаковые свойства
Theta
ну да, поэтому я говорил только про строгость и ленивость Test
Theta
свойства ленивости и строгости Test влияют на извлекаемость в разных условиях...
Alexander
это тоже ничего не меняет
Theta
Ну как? Если Int32 не вычислено, то... разве не хрен ты что извлечёшь?
Theta
т. к. Test даже возращён не будет
Theta
В случае СТРОГОГО Test
Theta
пардон
Theta
В случае ленивого — пожалуйста)
Alexander
я привел пример, где не будет
Alexander
let x = x in x передай, и привет
Theta
я понял)
Theta
но не буду повторяться...
Theta
чёт он совсем замолчал
Alexander
если поле строгое, то и там и там мы может не вернуть Test
кана
Alexander
если не строгое и там и там вернем
Leonid 🦇
как красивее переписать ?
go `catch` (\e -> handle e $> succ i) `catch` (\e -> onHttpE e $> succ i)
Alexander
catches?
Theta
Leonid 🦇
catches?
о, точняк. в Control.Monad.Catch оно не список берет а Foldable, вот я и не заметил.
Theta
ясно короч
Theta
Главное не ясно зачем он задал этот вопрос в ответ на мои попытки уточнить недопонимания между нами? 😆
Theta
кто и что имел в виду
Theta
так странно
Theta
>
type C f a :: Constraint
type C f a = ()
fmap :: (C f a, C f b) => (a -> b) -> f a -> f b
Что это за магия? O_o
Theta
не похоже на...
type Deck = [Card]
Theta
например
Theta
по каким ключевым словам можно узнать подробнее?
кана
Theta
спс.
Theta
... читал да забыл
Юрий
Глупый вопрос - какую задачу решают type families, а какую gadt?
Alexander
это одно и тоже
Alexander
грубо говоря
кана
Очень грубо имхо, они просто одинаковые механизмы (коершены эквивалентных типов) используют
Alexander
вообще tf - вычисление на типах
Leonid 🦇
хм. а как на 32 битных ghc делать threadDelay на дольше чем maxBound :: Int микросекунд?
кана
Делать несколько раз и мириться с возможной погрешностью
Alexander
сделать несколько?
Alexander
можно попросить at тебя в сокет пнуть
Leonid 🦇
а есть пакет?
кана
Есть, видел недавно
Alexander
был
Leonid 🦇
https://hackage.haskell.org/package/concurrent-extra-0.5/docs/Control-Concurrent-Thread-Delay.html как обычно, Бас приходит на помощь
Alexander
не помню что-то типа timeouts
Leonid 🦇
хм
Leonid 🦇
из нового выпелен
Leonid 🦇
http://hackage.haskell.org/package/unbounded-delays во
Юрий
Ну так а задачи с их помощью какие решают )?
кана
семейства:
как уже выше сказали, вычисление на уровне типов
классический пример - найти тип элемента по типу контейнера
другой классичиский - сложение натуральных чисел на тайплевеле
как я понимаю, многие задачи семейств раньше (да и сейчас) решали через классы + функциональные зависимости
гадты:
когда нужна зависимость типа от типов аргументов конструктора, в случае с фантомами например. Классический пример:
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-ов такое написать сложнее
решаемые задачи: более инвариантные под задачу типы