@haskellru

Страница 847 из 1551
Yuriy
15.02.2018
15:34:35
в данном контексте можно считать стэйтментом

линзы можно создавать с помощью рефлексии во время компиляции

линзы могут работать и на рефлексии в рантайме, но это немного странный случай

обычно они создаются по конкретным типам и работают с конкретными типами

Google
A64m
15.02.2018
16:04:59
декларацией, тогда уж, почему стейтментом-то?

Leonid
15.02.2018
16:05:26
декларацией, тогда уж, почему стейтментом-то?
просто слово не могли вспомнить

/me с отвращением добавил monad-time в build-depends

Yuriy
15.02.2018
16:39:48
стэйтмент, порождающий объявление, точнее, несколько объявлений

стэйтмент, потому что императивное выражение

Dmitry
15.02.2018
16:52:02


кстати, к вопросу, почему interpolatedstring-perl6, а не shakespeare ?

и ноль зависимостей.

Artyom
15.02.2018
16:55:12


пытаюсь запилить атомы в Haskell разумеется, pattern exhaustivity checker на такое ругается

у кого-нибудь есть идеи, как сделать хорошо?

https://gist.github.com/a7e859987ffdc477c0a51ae11343d9c2

всё бы нормально работало, если бы я мог как-нибудь засунуть в паттерн либо Symbol, либо #label, но я не придумал, как сделать ни того, ни другого (кроме ViewPatterns)

Google
kana
15.02.2018
17:13:30
не понял
Pattern Synonym имею в виду, там нельзя сгенерировать ViewPattern?

Artyom
15.02.2018
17:14:09
а как дальше использовать этот pattern synonym? покажи примерно, как это выглядит вместо view pattern в моём случае

если ты предлагаешь что-то вроде say :: OneOf ["hi", "bye"] -> IO () say (Is #hi) = putStrLn "Hello world!" say (Is #bye) = putStrLn "Goodbye!" то это невалидный синтаксис вне зависимости от того, является Is паттерн-синонимом или нет

Artyom
15.02.2018
17:19:04
потому что это синтаксис для деконструкции (которую можно делать через паттерн-синонимы)

в лучшем случае оно бы забайндило что-нибудь в переменную с названием #hi, от чего толку мало

A64m
15.02.2018
17:22:40
Это как? Ни разу не видел
> [(3, Just True, False)] & template %~ not [(3,Just False,True)]

Denis
15.02.2018
17:25:24
> [(3, Just True, False)] & template %~ not [(3,Just False,True)]
template это вроде что-то из Generics?

A64m
15.02.2018
17:26:20
нет, это syb-образные дженерики на Data и Typeable

Denis
15.02.2018
17:26:59
ну я это и имел ввиду

Yuriy
15.02.2018
17:28:13
Это как? Ни разу не видел
https://hackage.haskell.org/package/generic-lens

а, и плэйты тоже

A64m
15.02.2018
17:29:15
https://hackage.haskell.org/package/generic-lens
эти не на рантаймовой рефлексии как раз

а на компайлтаймовой

Антон
15.02.2018
17:30:16
А как вообще рантаймовая рефлексия на Хаскелле работает? Там же вроде труЪ как можно больше на компилтайм переносить

Google
A64m
15.02.2018
17:30:37
да, но она есть

rtti для всех типов, это Typeable, более продвинутая рефлексия - это класс Data, этот надо выводить, по умолчанию для всего он не выводится

работает как и все тайпклассы работают

Vasiliy
15.02.2018
19:23:11
я ведь правильно понял, что нужно использовать это http://hackage.haskell.org/package/cryptonite ? вроде бы самый котируемый пакет и в нем все есть есть еще cryptohash и просто Crypto а, cryptohash deprecated и рекомендуют cryptonite

Leonid
15.02.2018
19:27:04
да. но учти что автор любит ломать api и вместо pvp у него semver

Vasiliy
15.02.2018
19:28:34
понял, прикольно)

Yuriy
15.02.2018
19:41:10
не, 2 числа — это ComVer

SemVer из 3 чисел

если номер начинается с 0, значит, автор не хочет, чтобы вы использовали его библиотеку, поэтому ломает часто с чистой совестью

Alexander
15.02.2018
19:42:59
SEMVER говно!

даже pvp лучше semver

большего идиотизма чем 0.x в semver придумать нельзя

извините

в tasty как-нить можно параллельное выполнение тестов вырубить?

внутри

Leonid
15.02.2018
20:05:36
таскать мвар?

я например таскаю пул постгресовских бд для деструктивных тестов. сразу делаешь 4 штуки и норм.

Denis
15.02.2018
20:08:12
в мваре поднимаешь четыре докера с постгресом?

я ничего не понял

типа один набор тестов данные ушатал, а следующий набор тестов в другую базу сразу?

Google
Alexander
15.02.2018
20:10:03
Почему?
прописывать особенное поведение для части версий абсолютно нелогично

и прыжок к <1.

учитывая что в других схемах аналогичную логику зоделать тоже можно

Leonid
15.02.2018
20:10:53
типа один набор тестов данные ушатал, а следующий набор тестов в другую базу сразу?
CREATE DATABASE 4 раза. для тестов у которых транзакцию не откатить.

Alexander
15.02.2018
20:10:56
а если делать 0.100500

Leonid
15.02.2018
20:11:36
короче CREATE DATABASe из шаблона очень шустро делает бд с данными

Denis
15.02.2018
20:12:01
быстрее copy?

Антон
15.02.2018
20:12:17
а если делать 0.100500
Так и бывает, пока не стабилизируют

Alexander
15.02.2018
20:12:50
да и это глупо

Leonid
15.02.2018
20:13:31
быстрее copy?
да. делаешь БД, заливаешь данные и помечаешь как template. CREATE DATABASE FROM TEMPLATE (синтаксис не точный) или копирует тупо файлы или вообще ссылается на шаблонные.

мгновенно в общем

Denis
15.02.2018
20:14:06
я знаю про темплейты, но непонятно почему это быстрее COPY

копирование в обоих случаях

с диска чтение в обоих тоже

Leonid
15.02.2018
20:14:32
ну так одной командой все данные будут в новой бд

Denis
15.02.2018
20:14:42
ну разве что сразу в постгресовом формате все разложено и просто memcpy

ну а состояние темплейта самого перед тестами из чего-то внешнего раскатываешь?

Leonid
15.02.2018
20:16:33
да, из бекапа

вперемешку с psql -f data.sql

Google
Mikekekeke
15.02.2018
20:41:24
Здравсвуйте. Подскажите, как нужно вызывать put (для Maybe, например), чтобы не получить "Ambiguous type variables..." вот в таком случае: class Container a where put :: b -> a b get :: a b -> b instance Container [] where put a = [a] get (a:[]) = a instance Container Maybe where put a = Just a get (Just a) = a get _ = error "can't get from nothing"

Artyom
15.02.2018
20:42:44
@mikekekeke • покажи ошибку • ещё покажи код, который выдаёт ошибку (я предполагаю, что ты в дополнение к тому, что ты написал, ещё что-то запустил в ghci)

эти пункты стоит делать всегда, когда ты спрашиваешь про ошибки ?

Pig
15.02.2018
20:44:32
Есть три варианта: - написать так, чтобы тип выводился из контекста - приписать его явно - использовать TypeApplications

Denis
15.02.2018
20:45:57
мб тайп фемили? или FD?

Artyom
15.02.2018
20:46:21
@mikekekeke а какой вывод ты ожидал?

Pig
15.02.2018
20:46:22
мб тайп фемили? или FD?
Не пугай ребенка, не разобрался, а лезешь.

Mikekekeke
15.02.2018
20:47:22
@mikekekeke а какой вывод ты ожидал?
я ожидал, что так и будет. Мне интересно, как обойтись без "listPut", но получить тот же результат

Artyom
15.02.2018
20:47:29
а, понятно

1. reverse (put 3) – сработает, потому что выведется, что там должен быть список 2. put 3 :: [Int] 3. put @[] 3 (с включенным TypeApplications – http://downloads.haskell.org/~ghc/latest/docs/html/users_guide/glasgow_exts.html#ghc-flag--XTypeApplications)

Mikekekeke
15.02.2018
20:49:11
понял, большое спасибо

Pig
15.02.2018
20:50:06
Ещё вариант asTypeOf (put 3) []

https://hackage.haskell.org/package/base-4.10.1.0/docs/Prelude.html#v:asTypeOf

Denis
15.02.2018
20:51:38
Не пугай ребенка, не разобрался, а лезешь.
ах да) плюсы и минусы полиморфности) слишком полиморфная функция

Mikekekeke
15.02.2018
20:53:13
Ещё вариант asTypeOf (put 3) []
намотал на карандаш, спасибо

Yuriy
15.02.2018
21:19:55

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