@haskellru

Страница 1390 из 1551
Dmitry
06.08.2018
13:59:00
Что-то не получается

Yuriy
06.08.2018
14:02:47
классический способ — Proxy f :: Proxy ty -> m a ... VA -> f (Proxy :: Proxy VA)

Dmitry
06.08.2018
14:03:35
А, про Proxy мало знаю. Сейчас попробую...

Yuriy
06.08.2018
14:03:36
современный способ f :: forall ty. m a ... VA -> f @VA

Google
Dmitry
06.08.2018
14:03:52
О, вот так ваще атас

А как это назвается?

Yuriy
06.08.2018
14:04:13
"современный" требует кучу расширений включить

Dmitry
06.08.2018
14:04:22
Чтоб загуглить

Yuriy
06.08.2018
14:04:38
основная часть — TypeApplications

Так уж и кучу
3 минимум

IC
06.08.2018
14:05:16
AllowAmbiguous, TypeApplications... RankNTypes?

Yuriy
06.08.2018
14:05:49
AllowAmbiguous, TypeApplications... RankNTypes?
ScopedTypeVariables обычно, чтобы ty уже внутри использовать

Dmitry
06.08.2018
14:33:40
Кажется, всё равно надо как-то в одном из аргументов тип указывать. Вот так: mytest :: forall ty . (Serialise ty, Show ty, Arbitrary ty) => PropertyT IO () не компилируется: • Could not deduce (Serialise ty0) from the context: (Serialise ty, Show ty, Arbitrary ty) А вот так получается: mytest :: forall ty . (Serialise ty, Show ty, Arbitrary ty) => PropertyT IO ty

Включил {-# LANGUAGE ExplicitForAll #-}, всё равно где-то аргумент с типом должен быть...

А как сделать PropertyT IO ()?

Т.е. вот код: mytest :: forall ty . (Serialise ty, Show ty, Arbitrary ty) => PropertyT IO () mytest = do vx <- forAll Gen.arbitrary H.assert $ not $ BSL.null (C.serialise (vote @tx)) Вот тут https://kseo.github.io/posts/2017-01-08-visible-type-application-ghc8.html пишут, что надо включить ExplicitForAll и будет получаться: {-# LANGUAGE ExplicitForAll #-} {-# LANGUAGE TypeApplications #-} incShow :: forall a . (Read a, Show a, Num a) => String -> String incShow = show . (+1) . read @a А вот не получается

Google
Yuriy
06.08.2018
14:43:27
Proxy решает именно эту задачу — указывать тип в каком-нибудь аргументе, когда нет такого аргумента

добавляй аргумент Proxy ty

Dmitry
06.08.2018
14:44:35
Тоже включено

Или что?

Yuriy
06.08.2018
14:44:49
скорее всего, там где-то компилятор предлагает AllowAmbiguousTypes

Dmitry
06.08.2018
14:45:30
Предлагает, да.

Ну, попробую с ним...

A64m
06.08.2018
14:47:14
там где определена функция, которая имеет параметр типа, но нету параметра, который такому типу соотвествует вроде forall foo. Bar -> Baz

Dmitry
06.08.2018
14:49:03
С AllowAmbiguousTypes закомпилилось!

Я думал, это расширение лучше не включать, но сейчас читаю, норм.

Спасибо за помощь!

A64m
06.08.2018
14:50:21
это расширение отключает проверку, которая не давала писать код, который можно использовать только с @, когда @ еще не было

Yuriy
06.08.2018
14:50:31
Я думал, это расширение лучше не включать, но сейчас читаю, норм.
это как раз для случая, когда функции нужен тип, но она не может его вывести из аргументов

Dmitry
06.08.2018
14:59:09
@cblp_su , @A64m_qb0 Понятно, спасибо!

Alexander
06.08.2018
15:03:52
AllowAmbiguosTypes же не очень, она переносит проверку типов в call site?

/me пошел перечитывать мануал

Yuriy
06.08.2018
15:08:48
Alexander
06.08.2018
15:10:07
какието были, но сходу не сообразить

может в преtype application era были

Google
Terminator
06.08.2018
16:30:53
@OptionalChaos будет жить. Поприветствуем!

Vyacheslav будет жить. Поприветствуем!

Vyacheslav
06.08.2018
16:34:51
Опасный парень у вас на входе

Валерий
06.08.2018
16:37:55
✋?

Terminator
06.08.2018
16:46:12
@Sm1ters будет жить. Поприветствуем!

@tsopin будет жить. Поприветствуем!

Index
06.08.2018
17:33:26
AllowAmbiguosTypes же не очень, она переносит проверку типов в call site?
Она ничего не переносит, она отключает ambiguity check

То есть на definition site не выполняется проверка, которая в мире с TypeApplications все равно имеет мало смысла

Alexander
06.08.2018
17:44:19
Index
06.08.2018
17:47:12
Та проверка, что в call site, включена всегда

Она и не проверка-то строго говоря, а просто неспособность вывести значение переменной типа

A64m
06.08.2018
17:47:46
там нечего проверять же, все что раньше проверялось нормальный, используемый код после появления @

Terminator
06.08.2018
19:02:55
@v1nc11 будет жить. Поприветствуем!

@pavelcrane будет жить. Поприветствуем!

Alexander
06.08.2018
19:25:14
а у нас есть время, которое по человечески в бинарные данные можно сериализовать?

@A64m_qb0 ^

POSIXTime это Integer, UTCTime как?

A64m
06.08.2018
19:38:14
не знаю

в thyme или как это пакет назывался

Admin
ERROR: S client not available

Google
A64m
06.08.2018
19:38:50
вроде было что-то фиксированного размера

Alexander
06.08.2018
19:45:53
о круто

Imants
06.08.2018
20:04:33
Alexander
06.08.2018
20:45:21
да ну?

там UTCTime обычный и Integer сплошные

Imants
06.08.2018
20:51:25
instance Binary (DatePart Int) -- ^ serializeable see "Data.Time.Hora.Part" for conversion between 'UTCTime' and 'DatePart' https://hackage.haskell.org/package/hora-2.0.2/docs/Data-Time-Hora-Part.html

Alexander
06.08.2018
20:55:04
эффективно serializable

Imants
06.08.2018
20:55:26
Компактно?

Alexander
06.08.2018
20:55:34
быстро, скорее

но оно очень соотносится

fixed length обычно быстрее

ну и без Fractional если Binary

а то там не очень решение

Imants
06.08.2018
20:57:45
я там на скорость и размер совсем не смотрел. Либа для удобства.

Alexander
06.08.2018
21:04:50
ну thyme норм

вроде

Imants
06.08.2018
21:13:07
А в каком модуле в thyme Binary instance?

Alexander
06.08.2018
21:18:42
нету, но ничего не мешает написать ^. posixTime . mixroseconds

Imants
06.08.2018
21:21:47
https://www.haskell.org/hoogle/?hoogle=%28%5E.%29

Alexander
06.08.2018
21:22:36
Google
Alexander
06.08.2018
21:22:49
это все id замаскированный

Imants
06.08.2018
21:25:00
я до линз ещё не добрался. Попробую добавить сиротский Binary для UTCTime Или лучше просто ф

Kirill
06.08.2018
21:25:10
Вроде самым хиповым @qni

блин, дурацкая клава

в общем @qnikst ещё чот тёрли за http://hackage.haskell.org/package/chronos

самое быстрое форматирование и близкое к машинным чиселкам

Alexander
06.08.2018
21:26:41
норм

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