/fxnk

A functional programming library for Elixir inspired by Ramda.

Primary LanguageElixirMIT LicenseMIT

fxnk

Fxnk is a functional programming library for Elixir inspired by Ramda.

Hex.pm Actions Status Coverage Status

It includes functions for flow, lists, logic, maps, and math. Typically, you'd just want to import what you need, such as import Fxnk.Flow, only: [if_else: 4].

And then you would use it like this:

defmodule Something.Cool do
  import Fxnk.Flow, only: [if_else: 4]

  def do_stuff(a, b, c) do
    a
    |> foo(b)
    |> bar(c)
    |> if_else(is_awesome?, do_awesome_stuff/1, make_awesome/1)
  end
end

Fxnk's functions are also curried for easy reading.

  iex> import Fxnk.Flow
  iex> import Fxnk.Logic
  iex> import Fxnk.Math
  iex> isGreaterThan5? = gt?(5)
  iex> isLessThan10? = lt?(10)
  iex> isGreaterThan5AndLessThan10? = both?(isGreaterThan5?, isLessThan10?)
  iex> isGreaterThan5AndLessThan10?.(8)
  true
  iex> timesTwo = multiply(2)
  iex> multiplyByTwoIfBetween5and10 = when_is(isGreaterThan5AndLessThan10?, timesTwo)
  iex> multiplyByTwoIfBetween5and10.(8)
  16

You also don't need to predefine the functions to use them.

  iex> import Fxnk.Flow
  iex> import Fxnk.Logic
  iex> import Fxnk.Math
  iex> multiplyByTwoIfBetween5and10 = when_is(both?(gt?(5), lt?(10)), multiply(2))
  iex> multiplyByTwoIfBetween5and10.(8)
  16