Вы можете написать:
f(v, b) = foldl((x,y) -> b*x+y, v)
, который, вероятно, самый короткий и быстрый.Измените его на foldl((x,y) -> b*x+y, v, init=0)
в вызове, если вы хотите, чтобы это работало и для пустого вектора, возвращающего 0
.
Есть некоторые альтернативы, которые также пришли мне в голову, поэтому я публикую их ниже.
Первый сравнительно короткий (не быстрый) способ сделать это:
f(v, b) = parse(Int, join(v), base=b)
Что-то в вашей реализации будет:
f(v, b) = sum(x -> b^(x[1]-1)*x[2], enumerate(Iterators.reverse(v)))