[ANN] DelayedEvaluation.jl: A package fix function arguments with `getindex` syntax

Hello all,

I created a small package extending the functionality of Base.Fix1 and Base.Fix2 to any function and provides a syntax analogous to array or DataFrame indexing to fix function arguments using ! (instead of :) as a placeholder:

https://github.com/flipgthb/DelayedEvaluation.jl

Usage examples:

getindex[!,1]([1,2,3]) == [1,2,3][1]

sin[0.0]() == sin(0.0)

mapfoldl[x->x+1,!,[1,2,3]](*) == mapfoldl(x->x+1,*,[1,2,3])

It works by creating a DelayEval <: Function object when indexing a function. Composition and chaining also works:

getindex[!,1][[1,2,3]]() = getindex([1,2,3],1)

(first ∘ getindex[!,2])([(1,:a),(2,:b)]) == first(getindex([(1,:a),(2,:b)],2))

Is this useful? Maybe… Probably it is just dumb, but I did anyway :sweat_smile:

Other packages doing similar stuff, but without type piracy: ChainedFixes.jl and FixArgs.jl.

1 Like