실험적인 D 평가기가 eval("rate + 1", env)를 받고, 전달한 환경에서 rate가 3에 연결되어 있다고 해 볼게요. 제안하는 규칙에서는 이 식이 컴파일 타임과 런타임 어느 모드에서든 4를 뜻해요. 호스트의 rate라는 가변 전역 값을 9로 바꿔도 이 입력에는 영향을 주지 않아요.
전역 조회를 쓰면 첫 예제가 짧아지더라도 환경을 명시적으로 받게 하겠어요. D는 컴파일 타임 값이 필요한 곳에서 조건에 맞는 함수를 평가하고, CTFE 식에서는 가변 전역 변수나 정적 변수를 참조할 수 없어요. 이 제약은 설계를 점검하기에 좋아요. 그렇다고 모든 함수가 CTFE를 지원하거나 CTFE가 임의의 코드를 안전하게 가두는 샌드박스가 되는 것은 아니에요.
그 대가로 호스트는 평가기에 보여 줄 바인딩을 모아서 전달해야 해요. 대신 이 평가기는 전달받은 식과 환경이 같으면 두 모드에서 같은 의미를 부여할 수 있어요. rate가 없을 때 호스트 전역 값으로 몰래 넘어가는 동작은 거부하겠어요. 런타임 복구 인터페이스가 있다면 대체 값이 평가 입력의 일부가 되는지도 포함해서 별도로 문서화해야 해요.
