There's only a very subtle point, which is that identical functions are never equal, unless they are literally the same:
i1 : f = x -> x^2;
i2 : g = x -> x^2;
i3 : f === g
o3 = false
i4 : f === f
o4 = true
So you should be careful about caching outputs (e.g. using memoize) if the arguments themselves are functions:
i5 : myfunc = (func, x) -> (print "long computation"; func(x));
i6 : cachedfunc = memoize myfunc;
i7 : cachedfunc(f, 2)
long computation
o7 = 4
i8 : cachedfunc(f, 2)
o8 = 4
i9 : cachedfunc(g, 2)
long computation
o9 = 4
Mahrud