Anonymous
Ну, если на хаскелле писать тоже по-человечески, то даже по-человечески-жава не догонит офк
Vladislav
+- одинаково будет
Vladislav
https://benchmarksgame.alioth.debian.org/u64q/haskell.html
Quet
перфоманс у жабы сравним с компилируемыми языками
с этим там проблем нет
Quet
за столько лет вылизали этот хотспот несчастный
Alexander
Alexander
Те же +30%
Alexander
Еще и от типа задачи зависит
Алдар
http://telegra.ph/Haskell-Job-12-16
Anonymous
где можно посмотреть код более-менее серьезных проектов хаскелл-падавану что бы начать разбирать и набираться опыту?
Anonymous
смотри hackage
Anonymous
всё опенсорсное как бы
Ruslan
Никто не знает, когда появятся видео с fpconf?
Anatolii
все ждем :(
Ruslan
😊
Alexander
В прошлом году было долго
Alexander
Насколько я знаю
Ilya
Всем привет!
Изучаю хаскель, возник вопрос, вот нашёл этот канал
Как применить (a -> b -> m c) к m a и m b? То есть хочется функцию m a -> m b -> (a -> b -> m c) -> m c
m это монада
Ilya
Пытался что-то соорудить на >>= и <*>, но не выходит
Ilya
Или может так вообще нельзя сделать?
Anonymous
f :: m a -> m b -> (a -> b -> m c) -> m c
Anonymous
f a_ b_ f = do
a <- a_
b <- b_
f a b
не?
Anatolii
только хотел написать:)
Anatolii
я так понял человек хочет oneliner какой-то
Ilya
я до do ещё не дошёл =) но спасибо
Anatolii
f <*> a <*> b
Anatolii
а вот так не работает?
Anatolii
а
Anatolii
не
Ale
а почему не?
Ale
я тоже про такой вариант сразу подумал
Ilya
наск я понимаю это какой-то сахар для монад, так чт о ща разверну
Ale
это для апликативных функторов
Anatolii
а мой варина т не компилится?
Anatolii
Anatolii
это сахар над >>=
Ilya
про do
Ale
а))
Anatolii
про do
f <*> a <*> b
не прокатит?
Anatolii
должно сработать
Ilya
ну в функтор точнее этот
Ilya
а у меня нет
Anatolii
точно
Anatolii
f <$> a <*> b
Ilya
у меня возвращает обёрнутое значение
Anatolii
а так
Anatolii
?
Ilya
Prelude> let g f a b = f <$> a <*> b
Prelude> :t g
g :: Applicative f => (a1 -> a -> b) -> f a1 -> f a -> f b
Ilya
не тот тип
Ilya
b не обёрнуто
Ilya
Ilya
Ilya
вот))
Anatolii
:) лучше так не писать:)
Ilya
я понимаю
Alexander
liftA2 и join выше уже предложили?
Anatolii
нет :(
Alexander
Кто нить знает хорошие ресурсы по констрейнт солверам
Нурлан
Anatolii
Оно не очень понятно и читаемо, вот do или join будет всем понятно
Ruslan
Привет всем.
Ruslan
Кто-нибудь знает, как сделать toJson для типа data A = A {b :: Text, c :: [(Text,Text)]}
Alexander
data A = ... deriving Generic
Instance ToJSON A
Alexander
Ну или код на TH, там там даже generic не надо
Ruslan
deriving Generic — все сделан. я не понимаю, как сделать кастомный вывод.
хотелось бы, чтобы json выглядел так
{"b" : b, "c" : [{"c11":"c12"}, {"c21":"c22"},...]}
Ruslan
пока что реализовано так
instance ToJSON A where
toJSON (A b c) = object
[ "b" .= b
, "c" .= ((\c1 c2 -> object[ c1 .= c2 ]) <$> c)
]
Ruslan
но это неверно
Ruslan
средствами feson вывод немного не тот, т.е. он тапл выводит как список из элементов через запятую
Ruslan
aeson
Ruslan
я сейчас проверю, но, возможно, надо просто c1 c2 обернуть в тапл
Ruslan
если кому интересно, то все так и делается)
Ruslan
а какие принципы для parseJSON? а то я ручками никогда не делал такие вещи(
Судзумия
Интересный у вас диалог
Mansur
[ "b" .= b, "c" .= toJSON $ Map.fromList c ] не сработает?
Anatolii
вот тут статейка хорошая по aeson
Anatolii
https://artyom.me/aeson
Anatolii
почитай, может найдешь что для сеья
Ruslan
я toJSON написал уже, какой должен быть