Как получить доступ к элементу из 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]

Но это не сработало.

0 ответов

Другие вопросы по тегам