decodeArray :: Int -> Decoder Value
decodeArray n0 = do
    vs <- go n0 []
    return $! Array (Vec.fromListN n0 (reverse vs))
  where
    go 0 acc = return acc
    go n acc = do t <- decodeValue
                  go (n-1) (t : acc)
decodeArray :: Int -> Decoder Value
decodeArray n0 = do
    vs <- go n0 []
    return $! Array (Vec.fromListN n0 (reverse vs))
  where
    go 0 acc = return acc
    go n acc = do t <- decodeValue
                  go (n-1) (t : acc)
decodeArray n0 = do
    vs <- go n0 []
    return $! Array (Vec.fromListN n0 (reverse vs))
  where
    go 0 acc = return acc
    go n acc = do t <- decodeValue
                  go (n-1) (t : acc)