Как получить доступ к элементу из JSON и создать новый список с этим элементом в haskell
У меня есть эта структура данных, чтобы взять результат из JSON в Haskell, с Aeson
С этого URL: http://fipeapi.appspot.com/api/1/carros/marcas.json
data Marca =
Marca { keyM :: String
, idM :: Int
, fipe_nameM :: String
, nameM :: String
} deriving Show
instance FromJSON Marca where
parseJSON (Object m) =
Marca <$> m .: "key"
<*> m .: "id"
<*> m .: "fipe_name"
<*> m .: "name"
parseJSON _= mzero
Это работает нормально, и я сохранил результат в списке "Marca" с именем "PS"
main :: IO ()
main = do
d <- (eitherDecode <$> getJSON) :: IO (Either String [Marca])
case d of
Left err -> putStrLn err
Right ps -> print ps
return();
Теперь мне нужно создать список Int из этого "ps" со всеми "idM" из каждого "Marca", но я не знаю, как это сделать, я пробую некоторые вещи, такие как:
Right ps -> let newlist = [idM x | x <- ps]
Right ps -> let newlist = [idM x | x <- [Marca]]
или же
Right ps -> let newlist = map (idM x) ps
Right ps -> let newlist = map (idM x) [Marca]
Но это не сработало.