Предполагая, что у вас есть list
и две функции modify1
и modify2
соответственно, вы можете разделить список на head
и tail
, применить свои преобразования и склеить список обратно:
with [h | t] <- list,
h <- modify1.(h),
t <- Enum.map(& modify2/1),
do: [h | t]
Другим вариантом будет перемежать вызов на карту с вызовом на Enum.with_index/1
:
list
|> Enum.with_index()
|> Enum.map(fn
{h, 0} -> modify1.(h)
{t, _} -> modify2.(t)
end)