Skip to main content

Posts

Showing posts from December, 2017

Elixir: Pattern Matching - A Taste of Functional Programming

=  is a match operator After an initial assignment it then becomes a match assertion. num = 1 To check the match assertion you can try this and it will be valid 1 = num Furthermore, these are also valid: [1] = [1] [num] = [num] Destructuring [score1, score2, score3] = [89, 93, 87] IO.puts score1  # 89 IO.puts score2  # 93 IO.puts score3  # 87 {:ok, value} = {:ok, 1000} IO.puts value # 1000 {:error, message} = {:error, "Uh oh"} IO.puts message # "Uh oh" Error when matching: {:foo, value} = {:bar, "nope"} ** (MatchError) no match of right hand side value: {:bar, "nope"} Matching function arguments Various function definitions and subsequent calls: def sum_two_nums(num1, num2) do num1 + num2 end sum_two_nums(2,5) def sum_two_nums(%{num1: num1, num2: num2}) do num1 + num2 end sum_two_nums(%{num1: 2, num2: 5}) def sum_two_nums([num1, num2]) do num1 + num2 end sum_two_nums([2,5]) There's so much more you ...

Elixir: Anonymous Functions - A Taste of Functional Programming

An anonymous function is composed of an optional parameter list, a body enclosed by fn -> and end . It returns a function definition and the potential for the function to be executed. Quite simply the anonymous function can be assigned to a variable which then can be subsequently called. Define an anonymous function:, greet = fn -> IO.puts "Hello World" end Of course that does nothing unless we call it! We can do that by using this dot notation - [function name].([optional parameters]) Like this: greet.() Where the output is: Hello World Anonymous functions with parameters add = fn(num1, num2) -> num1 + num2 end IO.puts add.(10, 15) IO.puts add.(12, 15) IO.puts add.(14, 19) subtract = fn num1, num2 -> num1 - num2 end IO.puts subtract.(15, 10) Output: 25 27 33 5 I hope these examples ignite an interest for you to further learn functional programming using Elixir. Cheers! Other posts in this series: A Taste of Functional Programming A...

A Taste of Functional Programming

Objectives Ignite an interest in those who have never explored functional programming before Exposure to functional concepts Use functional parts of your existing language of choice you've never used before  Lead you to pursue a functional language more in-depth Paradigm Evolution Mathematics Computer Science Spawn of languages functional procedural imperative declarative object-oriented programming OOP Limitations " We’re going to be living in a multicore, distributed, concurrent — all the buzz words — world. The conventional models we’ve been doing, the OO stuff… is not going to survive in that kind of environment. " - Dave Thomas " OOP promised a cure for the scourge of software complexity. …its weaknesses have become increasingly apparent. Spreading state all over the place leads to concurrency issues and unpredictable side effects. " - Dave Thomas Thinking in Functions Functions Easy to reason about Reliable Pur...