25. Apply reflection pattern

Apply module implements apply pattern, i.e. static reflection dispatch for structures and other data types.

All functions and symbols are in “apply” module, use require to get access to it.

require daslib/apply

25.1. Call macros

apply

This macro implements the apply() pattern. The idea is that for each entry in the structure, variant, or tuple, the block will be invoked. Both element name, and element value are passed to the block. For example

struct Bar

x, y : float

apply([[Bar x=1.,y=2.]]) <| $ ( name:string; field )

print(“{name} = {field} “)

Would print x = 1.0 y = 2.0