While learning Elixir there are these little learning moments where the task would be simple in another language, but is a little more complex in a new language and new paradigm.
The task was to create an anonymous function that reacts to the value of the arguments.
From Programming Elixir:
If the first two are zero, return “FizzBuzz.” If the first is zero, return “Fizz.” If the second is zero, return “Buzz.” Otherwise return the third argument.
Seems simple enough, but I was stuck. Based on the examples I had to look back on, I was using the wrong syntax. Those examples used tuples, and I was passing in arguments directly.
Also, anonymous functions and their arguments can be a bit misleading. I thought I would need
fn (a,b,c), but I actually leave that out, and just pattern match for those.
fizzbuzz = fn (0,0,_) -> "Fizz Buzz" (0,_,_) -> "Fizz" (_,_,c) -> c end IO.puts(fizzbuzz.(3,3,1))
Then I tried to run it in an iex console. I could load it with
iex fizzbizz.exs, but couldn’t call the function. Nothing worked.
I just decided to run it with elixir directly and print out the result of calling the function within the file.