<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <p>
      <meta charset="utf-8">
    </p>
    <pre style="color: rgb(0, 0, 0); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);">&gt;I can confirm that this works. Curious, it seems like
&gt;#evaluate:environment: implicitly looks up names in the default
&gt;Environment as a fallback. The created WbSrvr Environment does not
&gt;have a binding for Object:

&gt;   env valueOf: #Object =&gt; nil.

&gt;But:

&gt;   Compiler evaluate: 'Object' environment: env =&gt; Object
&gt;   Compiler evaluate: 'Object environment' environment: env =&gt; Smalltalk
&gt;   Compiler evaluate: 'WebServer environment' environment: env =&gt; WbSrvr

&gt;That is probably the kind of stuff that must be documented.

</pre>
    I don't know that it's a fallback. I think an Environment only has
    access to the policy you give it. More specifically to what the
    Compiler is allowed to see. And an Environment cannot exist without
    being compiled. I think that's what the binding policy is. In
    Nicolas's example he had:<br>
    <br>
    <meta charset="utf-8">
    <pre style="color: rgb(0, 0, 0); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);">spanish := Environment withName: 'Spanish'.
spanish importSelf.
spanish from: english import: #Transcript.

</pre>
    I think the #importSelf creates an AllNamePolicy and the
    #from:import: an ExplicitNamePolicy. If you take the last line out
    (#from:import:) his example works just the same. I don't think you
    need to specify you want Transcript. The compiler can see it already
    from the #importSelf in the AllNamePolicy. <br>
    <br>
    So, your three examples basically make sense to me. I think your
    line of reasoning is solid, though, because understanding the nature
    of the barrier between Environments is both essential and at the
    moment pretty hazy. I just want to say 'fallback' may be the wrong
    word. It can only fall back on any policy it's given and
    AllNamePolicy doesn't sound too discriminating. I think that may be
    what's happening. <br>
    <br>
    I guess the compiler doesn't check to see if what you want to do is
    possible. It just plays along or shrugs. If there were tests for an
    Environment or the the compiler acted like C and said "I see what
    you're trying to do there, but that's not going to happen." Then the
    nature of the barrier between environments would become tactile. The
    errors would teach the nature of the barrier.  <br>
    <br>
    <meta charset="utf-8">
    <pre style="color: rgb(0, 0, 0); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);">&gt;As for the "for added fun" part: In my image there is no accessor for
&gt;the Process environment (and it is not a fully-fledged Environment
&gt;instance, but a Dictionary, when you use Process&gt;&gt;environmentAt: and
&gt;friends), so I had to add that accessor myself. </pre>
    Right, yea. Exactly. I just used the "add accessors" menu item to
    add it. I noticed somebody wrote into Process an #env ivar already,
    and it looked unused, so I supposed I could employ it when each
    process is initialized. Then I could inspect a process in the
    ProcessBrowser. <br>
    <br>
    Your change to Compiler&gt;&gt;evaluteCue:ifFail: looks great. I'm
    looking forward to trying that out. I had a feeling that if I threw
    that question out there that a better programmer could solve that. <br>
    <br>
    Chris<br>
    <br>
  </body>
</html>