Currently, *untyped and **untyped can be used to accept any amount of any type of positional and keyword arguments. However, there's no way to accept a block of any type:
def foo: () { (*untyped, **untyped) -> untyped } -> void
indicates that the block doesn't accept block parameters itself. To fix this, you need to do
def foo: () { (*untyped, **untyped) { (*untyped, **untyped) -> untyped } -> untyped } -> untyped
But that block also needs a block itself, etc. ad nauseum. So, my proposal is to add in &untyped syntax, eg def foo: (&untyped) -> void. (This syntax also allows the possibility of naming the blocks—&untyped foo, and might allow for naming block variables themselves, such as: def yield_ten: (&block) { (Integer) -> void } -> void
Currently,
*untypedand**untypedcan be used to accept any amount of any type of positional and keyword arguments. However, there's no way to accept a block of any type:indicates that the block doesn't accept block parameters itself. To fix this, you need to do
But that block also needs a block itself, etc. ad nauseum. So, my proposal is to add in
&untypedsyntax, egdef foo: (&untyped) -> void. (This syntax also allows the possibility of naming the blocks—&untyped foo, and might allow for naming block variables themselves, such as:def yield_ten: (&block) { (Integer) -> void } -> void