Извлечение значения из массива векторных значений

#json #haskell

#json #haskell

Вопрос:

У меня есть следующий код:

 case (HashMap.lookup "key123" jsnObj) of
  Just c -> 
    case c of
      Array d -> print d
 

и результат:

 fromList [String "123.00000",String "0.456789"]
 

Я не могу понять, как я могу извлечь из него второе значение. Ваши предложения?

Ответ №1:

Вам необходимо Data.Vector импортировать, а затем вы можете просто использовать функцию индексации ! на Vector d :

 case HashMap.lookup "key123" jsnObj of
    Just c -> case c of
        Array d -> print $ d ! 1
 

Комментарии:

1. это работает. Интересно, есть ли другой способ (возможно, на более низком уровне) сделать это, возможно, с помощью сопоставления с образцом?

2. Насколько я знаю, векторный тип не экспортирует свои конструкторы, поэтому вы не сможете сопоставить его с шаблоном.