Я не могу сказать, что вы сделали неправильно, поскольку вы не включили никакого кода, но использование set-current-module прекрасно работает как в CLIPS 6.3, так и в 6.4.
Код для CLIPS 6.3:
int main(
int argc,
char *argv[])
{
void *theEnv;
DATA_OBJECT theValue;
theEnv = CreateEnvironment();
EnvEval(theEnv,"(printout t (get-current-module) crlf)",&theValue); // Should be MAIN
EnvBuild(theEnv,"(defmodule FOO)");
EnvEval(theEnv,"(printout t (get-current-module) crlf)",&theValue); // Should be FOO
EnvEval(theEnv,"(set-current-module MAIN)",&theValue);
EnvEval(theEnv,"(printout t (get-current-module) crlf)",&theValue); // Should be MAIN
EnvEval(theEnv,"(set-current-module FOO)",&theValue);
EnvEval(theEnv,"(printout t (get-current-module) crlf)",&theValue); // Should be FOO
DestroyEnvironment(theEnv);
return(-1);
}
Код для CLIPS 6.4:
int main(
int argc,
char *argv[])
{
Environment *theEnv;
theEnv = CreateEnvironment();
Eval(theEnv,"(printout t (get-current-module) crlf)",NULL); // Should be MAIN
Build(theEnv,"(defmodule FOO)");
Eval(theEnv,"(printout t (get-current-module) crlf)",NULL); // Should be FOO
Eval(theEnv,"(set-current-module MAIN)",NULL);
Eval(theEnv,"(printout t (get-current-module) crlf)",NULL); // Should be MAIN
Eval(theEnv,"(set-current-module FOO)",NULL);
Eval(theEnv,"(printout t (get-current-module) crlf)",NULL); // Should be FOO
DestroyEnvironment(theEnv);
return -1;
}