кана
хочется уже какой-нибудь синтаксис для убирания бойлерплейта определения ньютайпа
Alexander
это точно собирается?
кана
да, конечно
Alexander
точно уж не "конечно"
Alexander
Я не знаю об этом конкретном акте, но к сенситивным данным относится очень много всего. Номера кредиток, персональные данные (в т.ч. адрес проживания физического лица, но не ИП), ИНН физического лица (но не ИП), паспортные данные. В свое время мы в логах чего только не находили, правда, почти все было "левым" мусором, очень похожим на, и наша система активно фолсила.
Ilya
это точно собирается?
нам этого к сожалению не проверить 😀 может GHC 9 сможет компилировать скрины...
Alexander
а норм у тебя Serializable s нету
Alexander
нужно для все типов дерайвить, так можно, жа
Alexander
Ilya
у меня на телефоне нету ghc все равно
я недавно поставил. там сразу много-много языков: https://play.google.com/store/apps/details?id=com.paprbit.dcoder&hl=en
ещё год назад такого точно не было, когда я искал
Ilya
Alexander
у меня и так телефон за часа три садится
Alexander
(наверное надо покемонов удалить)
Maxim
Хм, а вот давайте я ворвусь с вопросом про хаскель. Есть либа, в которой есть свой класс для строк, назовем его QStringValue, и у него есть инстанс для String. Что мне надо сделать, чтобы запилить инстанс IsString a => QStringValue a? потому что в IsString я вижу только fromString, но не наоборот
или проще сделать QStringValue Text и не париться?
просто хочется работать с OverloadedStrings и не писать всюду ("bla" :: String) когда передаю в либу
Cheese
Maxim
и я тогда смогу передавать литералы туда где надо QString?
Cheese
хотя нет, это не исполнит желание
Cheese
нет, это желание ничего не исполнит
Maxim
ну вот инстанс IsString a => QStringValue a бы исполнил, нет?
Cheese
ну, можно сделать функцию s = id :: String -> String и писать (s"bla")
Maxim
фига костыли пошли
Cheese
Maxim
странный тогда какой-то этот IsString
Maxim
проще выключить OverloadedStrings прагмой в отдельно взятом файле :)
кана
Alexander
bla @ String ?
Maxim
для обычных стрингов там такой инстанс
instance QStringValue (QtahP.String) where
withQStringPtr = HoppyFHR.withCppObj
Maxim
и я вот понятия не имею как работает withCppObj
Cheese
Почему?
голова должна быть меньше хвоста
Cheese
kosc
@maksbotan воу-воу, как давно ты стал хаскелистом?
Maxim
@hotkosc ты и тут меня нашел :D
kosc
НАСТИГ!
Maxim
ну, загляни на мой хабр и посмотри даты публикаций. примерно тогда
Cheese
Maxim
ну глобально у нас в проекте в кабал файле понавключена тонна расширений
Cheese
Maxim
я знаю, об этом и говорил
Maxim
просто стало интересно есть ли способ это сделать
Cheese
но лучше не включать OverloadedStrings глобально
Maxim
почему?
Cheese
ты только описал ситуацию, в которой это приводит к проблемам
Maxim
надо же сравнить число ситуаций с проблемами с числом ситуаций с преимуществами
IC
я лучше TypeApplications буду включать, чем OverloadedXXX выключать
Maxim
кстати, а как TypeApplications понимает какой именно по порядку аргумент, если в функции несколько полиморфных аргументов?
Maxim
или мы пишем @ перед каждым аргументом отдельно?
IC
первый, потом второй...
IC
слева направо
кана
Maxim
f @Int 5 @String "bla"? или f @Int @String 5 "bla"?
кана
f :: forall a b. a -> b -> a
f @Int @String :: Int -> String -> Int
Maxim
ясно
Maxim
а если я хочу сказать только тип второго, а первый пусть сам угадывает?
кана
@_ вроде работает
Maxim
круто
кана
Хотелось бы иметь :t с выводом forall
Alexander
при explicitforall не выводит?
кана
Хм, не проверял, при rankn точно нет, а я всегда его включаю чет, даже без вложенных форалов
IC
λ> :set -fprint-explicit-foralls
λ> :set -XTypeApplications
λ> :t id
id :: forall {a}. a -> a
λ> :t id @Int
id @Int :: Int -> Int
Ilya
Я тут свой первый пакет на Haskell запилил, про индексирование списков и других контейнеров.
https://github.com/Toucandy/data-index
Практическая ценность пока не ясна, скорее просто интересная идея. Хотя некоторые люди высказывали интерес.
Буду рад любым замечаниям, в т.ч. по оформлению.
Leonid 🦇
оффлайн то нет
parket
Cloud9 глянь, есть ли там HS?
IC
что значит годные? чем не зашёл repl.it?
кана
Ilya
кана
insertAt ix x s = run s $ List.insertAt
<$> ix
<*> pure x
<*> pure s
insertAt ix x s = run s $ liftA3 List.insertAt
ix
(pure x)
(pure s)
Зигохистоморфный
Ilya
ApplicativeDo
прикольно, выглядит как то что доктор прописал:) спасибо
A64m
надо голосование "кто читал ghc мануал?" интересно, будет ли хоть два человека
Anatolii
Я открываю периодически, но чтобы прямо читать нет
Alexander
то чтоя его не прочитал не значит что я его не читал
A64m
ну, я же не спрашиваю, кто прочитал. хотя-бы читал
Alex
Народ, а в чем идея функции lift? Вернуть такую же функцию, но которая работает с монадными значениями?
Alexander
это апи Control.Monad.Trans.Class
кана
ну я как минимум читал несколько страниц