Exercism.io Secrets module - stuck on function combiner

Hello, I am working through Exercism.io Secrets module the first 6 functions I was able to figure out just fine. The last one I am stuck on.

This is the instruction for it:

Implement Secrets.secret_combine/2 . It should return a function which takes one argument and applies to it the two functions passed in to secret_combine in order.

multiply = Secrets.secret_multiply(7)
divide = Secrets.secret_divide(3)
combined = Secrets.secret_combine(multiply, divide)

combined.(6)
# => 14

Hints and tips :

Create a function combiner

  • Return an anonymous function which composes the functions passed in to Secret.secret_combine/2.
  • Use a . before () when calling an anonymous function.

Below is where my solutions start, like I said the first 6 functions I did just fine on it’s just the last one.

defmodule Secrets do
  def secret_add(secret) do
    fn(a) -> a + secret end
  end

  def secret_subtract(secret) do
    fn(a) -> a - secret end
  end

  def secret_multiply(secret) do
    fn(a) -> a * secret end
  end

  def secret_divide(secret) do
    fn(a) -> div(a, secret) end
  end 

  def secret_and(secret) do
  use Bitwise, only_operators: true
    fn(a) -> a &&& secret end
  end

  def secret_xor(secret) do
    use Bitwise
    fn(a) -> bxor(a, secret) end
  end

  def secret_combine(secret_function1, secret_function2) do
  end
end
2 Likes
def secret_combine(fn1, fn2) do
  fn x -> x |> fn1.() |> fn2.() end
end
4 Likes

Thank you!

1 Like