Если вы хотите его в одной строке (я не эксперт по bash, поэтому могут быть оговорки к этому, но он работает везде, где я его пробовал):
, когда test.txt содержит
${line1}
${line2}
then:
>line1=fark
>line2=fork
>value=$(eval "echo \"$(cat test.txt)\"")
>echo "$value"
line1 says fark
line2 says fork
Очевидно, что если вы просто хотите его распечатать, вы можете вынуть дополнительные value=$()
и echo "$value"
.
Предлагаемые операции действительно могут быть реализованы как reduce
(он же foldr
):
(+ 1 (* 9 (+ 2 (* 9 (+ 3 (* 9 13))))))
=> 9739
(reduce (lambda (e acc) (+ e (* 9 acc)))
13
'(1 2 3))
=> 9739
Что касается констант, то 13
используется только один раз в самое внутреннее выражение, так что оно подходит для использования в качестве начального значения. 9
используется для умножения накопленного значения. Список ввода используется справа налево, когда рекурсия начинает раскручиваться, и в этот момент мы добавляем текущий элемент к накопленному результату.