Mon Jul 16 11:42:14 EDT 2018

subsample, when

This is not trivial.  To make it trivial, support for single-branch if
is needed.

It is clear now that this feature of HDL is essential!  It's also
clear why.  In some cases, making the non-active path explicit will be
quite an ordeal.

EDIT: So this is not an expression.  It is something completely
different.  Do I really want to go that way?  Can the enable just be
pushed deeper?

EDIT: I don't like this construct, as it has far reaching
consequences: the language is no longer just dataflow.  But it seems
to be essential to be able to express conditional register updates.
Basically, the register "close" operation needs to be augmented with
the enable.

Is there another way?

Yes there is.  Make the "close" explictly use an enable.

One way to make this implicit, is to use an environment.

So what is worse.  Introducing dynamic scope, or rendering the
language imperative?

I'd say the latter.

1) you can always use explicit close + enable
2) dynamic scope is terribly convenient