I think my only criticism of the current approach in the linked GitHub repo  is the use of `eval`, as that could make it tough to utilize in low security/sandboxed environments such as mobile apps and CSP-controlled sites.
I'll save attempting an actual code exercise for later, but my first thought was maybe using JS implicit `this` to your advantage (even while trying to stray away from classes) and using `this[functionName]` to index into it. (You'd still have security concerns with `this` defaulting to `window` or `global`, but you'd avoid the need for `eval` and you can take advantage of the depth of abilities of constructor functions and ES2015 class syntax.)
<memoize(f) key = "value"/>
<compose(f,g) key = "value" />
/* @jsx ((a,b)=>(eval(a)(b))) */
/* @jsx ((a,b)=>(MyJSX[a](b))) */