A Binder is a function from UnboundBinding to some Binding.
These are used exclusively by Binding.bind and sealed in order to keep
all of them in one place. There are two flavors of Binders:
Non-terminal (returns another UnboundBinding): These are used to reformat an
UnboundBinding (like setting direction) before it is terminally bound.
Terminal (returns any other Binding): Due to the nature of Bindings, once a
Data is bound to anything but an UnboundBinding, it is forever locked to
being that type (as it now represents something in the hardware graph).
Note that some Binders require extra arguments to be constructed, like the
enclosing Module.
A Binder is a function from UnboundBinding to some Binding.
These are used exclusively by Binding.bind and sealed in order to keep all of them in one place. There are two flavors of Binders: Non-terminal (returns another UnboundBinding): These are used to reformat an UnboundBinding (like setting direction) before it is terminally bound. Terminal (returns any other Binding): Due to the nature of Bindings, once a Data is bound to anything but an UnboundBinding, it is forever locked to being that type (as it now represents something in the hardware graph).
Note that some Binders require extra arguments to be constructed, like the enclosing Module.