Can't use function calls in pattern matching

Given

f = fn -> 2 end
g = fn -> 2 end

How can I match the result of g with f’s ?
If I do it like this, it fails because function calls are not allowed in pattern matching.

case g.() do
  f.() -> 1
  4 -> 2,
   5 -> 3,
  _ -> 6
end

Note:
This is dummy version of what I need to do in my project. Basically I need to pattern match the result of a function with the result of other functions. But don’t know how to go about it.

What about this?

case {f.(), g.()} do
  {x, y} -> #whatever
end
6 Likes
f_result = f.()

case g.() do
  ^f_result -> 1
  4 -> 2,
   5 -> 3,
  _ -> 6
end
7 Likes

Given that you can just assign the result of a function call to a variable and match on that it’s always seemed surprising to me that the compiler doesn’t do this for you. Is there a technical reason for this not being supported or is it something that might happen at some point?

1 Like