# Find the sum of Fibonacci sequence

I have already done many of the Project Euler questions in other languages before, but whenever learning a new language, I like to do the problems again in that language.

Here is my elixir version of

Find the sum of all Fibonacci numbers below 4,000,000.

stream = Stream.unfold({0,1}, fn {a, b} -> {a, {b, a + b}} end)
Enum.reduce_while(stream, 0, &(
cond do
&1 < 4000000 and rem(&1, 2) == 0 ->
{:cont, &2 + &1}
&1 < 4000000 ->
{:cont, &2}
true ->
{:halt, &2}
end
))


Can anyone spot a way to make my code fit the elixir paradigm more? Are there things I could improve?

• Not sure why the downvote, if this isn't the purpose of this site then what is? – Happy Hour Coding Jul 1 at 21:23
• Someone has voted to close it as "Unclear what you're asking". I don't see why this would be considered unclear though, and this looks very much ontopic. – Carcigenicate Jul 1 at 21:44
• Someone seems to have raised a "Unclear what you're asking" close vote. But you have added that to your question since then, so your question should be good to go. – AlexV Jul 1 at 21:45

I'd improve two things:

• take advantage of ability to specify multiple clauses for anonymous function,
• use underscore for big numbers to improve code readability.

{0, 1}

• Also, I like your use of an explicit fn over the submitters &- the latter is often hard to read and usually I will only use it for very short stuff, probably just the &function/arity construct and nothing else. – cdegroot Jul 30 at 23:30