When two modules require each other, SISC produces a StackOverflowError.
Such a mutual import may or may not be a good thing to do, but it's not documented in the manual (ch 10) as being forbidden, and even if it is to be forbidden, it would probably be best to detect and forbid it explicitly.
% cat m1.scm
(require-library 'm2)
(module m1
(m1-function)
(import m2)
(define (m1-function)
'm1))
% cat m2.scm
(require-library 'm1)
(module m2
(m2-function)
(import m1)
(define (m2-function)
'm2))
% sisc
SISC (1.16.6)
#;> (require-library 'm1)
Exception in thread "Thread-2" java.lang.StackOverflowError
at sisc.nativefun.NativeProcedure.apply(Unknown Source)
at sisc.exprs.AppEval.eval(Unknown Source)
at sisc.interpreter.Interpreter.next(Unknown Source)
at sisc.exprs.AppExp.eval(Unknown Source)
...
Indeed this looks like it should work, since imported libraries are registered. We should detect that m1 is loaded already when we load m2 and do nothing.