Any approach based on Val seems like an awful kludge. It addresses this particular case, but (in my opinion) creates a bigger mess than it solves. We should not plan to write (and maintain!) Val versions of the hundreds of functions we can imagine someone wanting to curry, nor suffer a performance trap when someone is more creative than us and curries something we didn’t Val.
Further, [Base.Fix1(+,Val(x)) for x in 1:3] is a heterogeneous container that will yield dynamic dispatch to multiple independently-compiled functions. The whole point of Base.Fix1/Base.Fix2 is to make reproducible closures so we need fewer redundant anonymous functions (that the compiler must compile and maintain).
One should prefer [Base.Fix1(+,x) for x in 1:3] (the promotion problem showcased in this thread needs to be fixed, but at least this container is homogeneous) or [y->x+y for x in 1:3] (which is homogeneous and appears to be resistant to the promotion issue).