Partial Function Application In Elixir « Onor.io
source link: https://onor.io/2014/03/31/partial-function-application-in-elixir/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Partial Function Application In Elixir
So I’m trying to fill out my understanding of basic functional programming concepts in terms of Elixir and Erlang. One concept that I wanted to know a bit more about is how Partial Function Application and Currying work in Elixir. Especially given that the function signature of a function in Elixir includes its arity, it seems somewhat unlikely that Elixir would support currying and/or partial function application. But a little bit of hacking turned up a nice surprise. While Elixir may not support currying (I really cannot tell if it is supported or not) it does support partial function application which seems to be the main reason to concern one’s self with currying anyway.
Partial Function Application With Lambdas
multiply = &(&1 * &2)
timestwo = &(multiply.(&1,2))
Interestingly, using this technique you can set any number of parameters to a fixed value. Consider this:
multiply4 = &(&1 * &2 * &3 * &4)
times20 = &(multiply4.(&1,&2,5,4))
Lest I be misunderstood, I wouldn’t advocate writing code like that; I’m just saying that it’s possible to do.
Partial Function Application With Modules
defmodule
PaTest
do
def f1(n, m) do
n * m
end
def f2(m) do
f1(3,m)
end
end
I hope this may save someone a bit of work.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK