Subject: | Notional problem with : pseudo-prototype |
If the : prototype is intended for emulating the EXPR/BLOCK behaviour of map and grep, then when it occurs after the first position it stops making sense. The & prototype is only supposed to allow sub{} after the first position. If you want : to treat sub{} as a delayed expression, then after the first position it is essentially equivalent to ^.
Also the patch I submitted in ticket #99807 is problematic in that the lack of explicit context on the ex-rv2cv op only indicates that the first argument was a block, and has no bearing on subsequent arguments. So given sub foo(&&) and a pseudo-proto of "::", foo {} sub {} will treat both arguments as blocks (code refs), where as foo "fit", sub {} will treat both arguments as delayed expressions.
I don’t know how you want to proceed with this.