@haskellru

Страница 121 из 1551
blkmrkt
05.10.2016
20:18:40
все норм работало пока не понадобилось работать с более чем 1 типом данных из JSON, в котором есть поле id...

Kit
05.10.2016
20:19:10
может я конечно не о том, не понимаю, у вас там id переопределен, по синтаксису это должна быть функция, (id t) функция которая действует справа на строку, вы уверены в определении самой функции?

Anatolii
05.10.2016
20:21:03
А почему print а не printf

?

Google
blkmrkt
05.10.2016
20:21:34
А почему print а не printf
а уже на printf заменил, не вижу особо разницы

Anatolii
05.10.2016
20:21:40
Ну ок

blkmrkt
05.10.2016
20:21:50
putStr тож работает ?

Anatolii
05.10.2016
20:22:12
Даже не знаю что сказать

У меня точно работало

Kit
05.10.2016
20:22:38
так типы не сходятся

Anatolii
05.10.2016
20:22:44
?

Kit
05.10.2016
20:23:24
я не знаю какой тип у printf, но print :: Show a => a -> IO ()

Anatolii
05.10.2016
20:23:25
Он же там выше явно тип указал

А, про это

Ну уже ж заменил

А ам выше явно указал Maybe wall

blkmrkt
05.10.2016
20:24:00
вот так пробовал указывать вручную тип, но может неправильно делал

Google
Kit
05.10.2016
20:24:25
все равно после $ все будет вычисляться, а там стоит выражение типа СТРОКА ЧИСЛО

Anatolii
05.10.2016
20:25:37
А проекта нету где-то на гитхабе?

blkmrkt
05.10.2016
20:26:04
не сорян

Anatolii
05.10.2016
20:26:34
Ну доллар с принтф реально убрать можно

Но ошибка наверное другая бы была

blkmrkt
05.10.2016
20:27:02
уже убрал, но оно не влияет ни на что наверное

Kit
05.10.2016
20:27:49
попробуй скобки убрать

вместе с внутренностями

в качестве теста (а то как сарказм выглядит)

Anatolii
05.10.2016
20:28:45
Пословиц для этого прагма не нужна

Оно по дэфолту включено

_______bx
05.10.2016
20:32:28
а п

blkmrkt
05.10.2016
20:32:42
я в принципе уже готов продолжить писать код, только не обращаясь к этим всем внутренностям моих типов ?

_______bx
05.10.2016
20:33:11
а printf он откуда

data Wt = Wt {id :: Int} wt = Just Wt {id = 1} case wt of Just x -> id x Nothing -> 0

так работает

blkmrkt
05.10.2016
20:34:46
Text.Printf

data Wt = Wt {id :: Int} wt = Just Wt {id = 1} case wt of Just x -> id x Nothing -> 0
только у меня вот такая ситуация: data Zt = Zt {id :: Int} data Wt = Wt {id :: Int} wt = Just Wt {id = 1} case wt of Just x -> id x Nothing -> 0

Вот это не соберется из-за ambiguous occurence test {-# LANGUAGE DuplicateRecordFields #-} data A = A { test :: String } deriving Show data B = B { test :: String } deriving Show testme = putStrLn $ test (A 32)

Kit
05.10.2016
20:38:32
попробуй вместо id лямбда функцию запихнуть, может компилятор просто не понимает какой туда тип подставляется

Google
Kit
05.10.2016
20:39:04
(\(Wt i) -> i)

blkmrkt
05.10.2016
20:40:36
то же самое(

Kit
05.10.2016
20:40:57
без id

(\(Wt i) -> i)
вот так

у t какой тип сейчас

можешь сказать?

blkmrkt
05.10.2016
20:43:45
WallTask

data WallTask = WallTask { id :: Int } deriving (Show, Generic)

Kit
05.10.2016
20:44:25
значит вместо этой скобки попробуй $ (\(WallTask i) -> i) t

blkmrkt
05.10.2016
20:46:16
хммммммм. Ошибка пропала, на этой строчке все теперь ок. Только теперь оно будет принтить саму структуру похоже

Kit
05.10.2016
20:47:15
ошибка была, видимо, из-за того, что компилятор не понимал id из какого контретно типа применять

blkmrkt
05.10.2016
20:47:37
только как теперь id то достать

Kit
05.10.2016
20:48:43
ничего не поделаешь, теперь t может быть только определенного типа всегда, ну по другому и быть не может вообще

еще можно вместо того что добавил попробовать id (t :: WallTask)

только как теперь id то достать
та лямбда-функция что в скобках достает твое id

blkmrkt
05.10.2016
20:50:13
делал раньше вот так: Just t -> printf "[+] Parsing wall %d\n" id (t :: WallTask) а нужно было вот так: Just t -> printf "[+] Parsing wall %d\n" $ id (t :: WallTask)

Kit
05.10.2016
20:50:52
=)

blkmrkt
05.10.2016
20:50:56
мдауш, ну спасибо, у меня нет слов

Google
Kit
05.10.2016
20:51:11
спасиб канеш

но ты первый чел кому с хаскелем помог!!! ?

blkmrkt
05.10.2016
20:51:41
хехех

ровно то же самое - ambiguous occurence id

_______bx
05.10.2016
20:58:04
проще всего id переименовать

если можно

blkmrkt
05.10.2016
20:58:43
неа, это из жсона приходит от внешнего апи. не хотелось бы вручную сериализаторы писать под каждый мелкий тип

да и идти по легкому пути не охота ?

Kit
05.10.2016
21:01:52
если ты о строке 147, то надо t с объявлением типа в скобки взять

_______bx
05.10.2016
21:02:00
ну а добавить функцию которая берет id

Kit
05.10.2016
21:02:50
а вообще я думаю, когда писал функцию decode не указывал ее полный тип

Kit
05.10.2016
21:03:09
ой нет, вижу. тут я нерпав

со строкой 151 разобрался?

blkmrkt
05.10.2016
21:04:02
Kit
05.10.2016
21:04:26
?

blkmrkt
05.10.2016
21:04:30
интересно, мне hlint предлагает упростить (id (t::FriendTask)) до (t :: FriendTask)

Kit
05.10.2016
21:04:58
попробуй!

blkmrkt
05.10.2016
21:05:07
это наверное потому что в нем одно лишь поле id, и show t эквивалентен show id?

Google
Kit
05.10.2016
21:07:44
а что ты пишешь? Это что будет?

blkmrkt
05.10.2016
21:08:45
г-ди, собралось! пушка!

а что ты пишешь? Это что будет?
кравлер данных для вконтакта

Paul
05.10.2016
21:09:13
Воскрес.

_______bx
05.10.2016
21:10:25
blkmrkt
05.10.2016
21:12:40
а что ты пишешь? Это что будет?
я в принципе все написал и работало нормально с одним типом объектов из апи, потом обнаружил что в GHC 8 есть DuplicateRecordFields и вроде как можно в одном модуле определять дубликаты. Пердолился с переустановкой stack/ghc/ghc-mod/ide, и вот застрял на том как обратиться к этим дублированным полям типов. Оказалось что не хватало $ в printf ?

осталось еще CircleCI настроить чтоб бинарник из main автоматом как-то пушился на все машины, и будет ништяк

blkmrkt
05.10.2016
21:16:06
ну сорри, я просто взволнован

Kit
05.10.2016
21:16:28
знакомо =)

blkmrkt
05.10.2016
21:17:40
мне очень нравится то чувство при работе с хаскелем, когда можно писать код несколько часов и, если нет ошибок, знать что оно соберется и будет работать

Kit
05.10.2016
21:18:20
да, я тоже очень много времени экономлю с такой системой

не приходится постоянно перепроверять и тестить на всем подряд

blkmrkt
05.10.2016
21:24:18
угу. Слегка напрягает лишь непрозрачность компилятора, я не понимаю как он работает. Особенно STM и все что связано с конкурренси/параллелизмом. Вот например я воспользовался либой amqp, и вышло так что 50 параллельных воркеров грузили два ксеона Е5-4650 на 100%, и сообщения доставлялись внезапными очередями. Лишь потом случайно нашел крупными буквами в доках заметку о том, что реюзать один канал в разных тредах нельзя.

и интересно, все равно собираешь ли ты бинарник с -threaded или нет, ни разу не видел чтоб процессы форкались средством ОС. Нужно наверное еще читать и читать.

Kit
05.10.2016
21:30:42
я с такими задачами не работал

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