A Builder object isn't useful
until it's attached to a construction environment
so that we can call it to arrange
for files to be built.
This is done through the $BUILDERSconstruction variable in an environment.
The $BUILDERS variable is a Python dictionary
that maps the names by which you want to call
various Builder objects to the objects themselves.
For example, if we want to call the
Builder we just defined by the name
Foo,
our SConstruct file might look like:

With the Builder attached to our construction environment
with the name Foo,
we can now actually call it like so:

env.Foo('file.foo', 'file.input')

Then when we run SCons it looks like:

% scons -Q
foobuild < file.input > file.foo

Note, however, that the default $BUILDERS
variable in a construction environment
comes with a default set of Builder objects
already defined:
Program, Library, etc.
And when we explicitly set the $BUILDERS variable
when we create the construction environment,
the default Builders are no longer part of
the environment: