
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

Антон
15.02.2018
17:02:07

kana
15.02.2018
17:10:57

Artyom
15.02.2018
17:11:12

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 паттерн-синонимом или нет

kana
15.02.2018
17:18:10

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

A64m
15.02.2018
17:22:40

Denis
15.02.2018
17:25:24

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

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

Yuriy
15.02.2018
17:28:13
а, и плэйты тоже

A64m
15.02.2018
17:29:15
а на компайлтаймовой

Антон
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

Антон
15.02.2018
20:09:17

Alexander
15.02.2018
20:10:03
Почему?
прописывать особенное поведение для части версий абсолютно нелогично
и прыжок к <1.
учитывая что в других схемах аналогичную логику зоделать тоже можно

Leonid
15.02.2018
20:10:53

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

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

Mikekekeke
15.02.2018
20:44:49

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

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

Pig
15.02.2018
20:46:22

Mikekekeke
15.02.2018
20:47:22

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

Yuriy
15.02.2018
21:19:55