That definitely sounds like something like the Cachex library.  :-)

On Thursday, September 15, 2016 at 7:01:44 PM UTC-6, Shyam Sankaran wrote:
> Agreed. But, there are some functions which may have complex computations 
> but still are idempotent. Eg. Sorting, filtering . All elixir elements 
> being immutable definitely helps.
> Thinking further, for example, a function that gets something from db 
> which does not change frequently (a user, maybe) might be a good use case. 
> Definitely saves some good performance. However, after some time the 
> function becomes "unreliable", because the user data is bound to change at 
> some time, right.
> So, for the above problem, what if the function was not permanent? Lets 
> call it "Transient function". It expires after some time!! I define a 
> function and decorate with some metadata which specifies whether its 
> execution must be cached. If so how long?. Something like:
> cache get_usr ,ttl: 10
> def get_usr do: get_from_db
> Don't know, if it is even possible. just some crazy thoughts :)
> On Thursday, September 15, 2016 at 9:55:49 AM UTC-4, OvermindDL1 wrote:
>> For something as simple as addition the pattern matching would gain no 
>> speed, but in more complex things it could, however you would not know the 
>> answer ahead of time for that so usually something like ETS is used to 
>> cache like that.
>> On Wednesday, September 14, 2016 at 9:15:42 PM UTC-6, Shyam Sankaran 
>> wrote:
>>> I was reading about metaprgramming in elixir where Chris explains how 
>>> easily elixir provides unicode support in a few lines of code through 
>>> pattern matching. I thought it would be a cool idea to cache functions by 
>>> generating code which defines the function with the previously passed 
>>> parameters as input and the computed value as the body of the function. 
>>> Next time, instead of evaluating the function, you just have to pattern 
>>> match !!!
>>> Lets assume a function:
>>> def add(a,b) do: a+b
>>> add(1,2)  -> evaluates 1+2 = 3 -> spawn a function that creates a 
>>> function : def add(1,2) do: 3 
>>> add(1,2) -> pattern matches with  add(1,2) -> returns 3
>>> thoughts?

You received this message because you are subscribed to the Google Groups 
"elixir-lang-core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
To view this discussion on the web visit
For more options, visit

Reply via email to