Функции decode
и decode'
от aeson
пакет почти идентичен. Но они имеют тонкую разницу, описанную в документации (размещая только интересную часть документов здесь):
-- This function parses immediately, but defers conversion. See
-- 'json' for details.
decode :: (FromJSON a) => L.ByteString -> Maybe a
decode = decodeWith jsonEOF fromJSON
-- This function parses and performs conversion immediately. See
-- 'json'' for details.
decode' :: (FromJSON a) => L.ByteString -> Maybe a
decode' = decodeWith jsonEOF' fromJSON
Я попытался прочитать описание json
и json'
, но до сих пор не понимают, какой из них и когда я должен использовать, потому что документация недостаточно ясна. Может ли кто-нибудь более точно описать разницу между двумя функциями и дать пример с объяснением поведения, если это возможно?
UPDATE:
Есть также decodeStrict
и decodeStrict'
функций. Я не спрашиваю, в чем разница между decode'
и decodeStrict
, например, который, кстати, тоже интересный вопрос. Но то, что лениво и что здесь строго во всех этих функциях, вовсе не очевидно.