첫 번째 함수처럼 평가되지 않은 인수를 반환하지 않는 이유는 무엇인가요? 마지막 두 함수를 첫 번째 함수처럼 작동하게 하는 방법이 있을까요? 함수 내부에서 'e'는 여전히 평가되지 않은 상태인데, 이는 결과가 반환될 때 발생하는 것 같습니다.
names default to here(1);
ns = New Namespace("n");
foo = function({e}, Name Expr(e) );
ns:bar = function({e}, Name Expr(e) );
show( foo( expr( notavar ) ) ); // expected returns notavar, unevalauted
show( here:foo( expr( notavarhere ) ) ); // unexpected tries to evaluate notavarhere
show( ns:bar( expr( notavarns ) ) ); // unexpected tries to evaluate notavarns
함수 내부에서는 예상대로 e가 평가되지 않습니다.
ns:bart = function( {e}, Show( Name Expr(e) ) );
ns:bart( expr( notavar ) ); // expected, unevaluated
함수를 현재 기본 네임스페이스로 복사하는 다소 미흡한 해결 방법이 있지만, 이 방법은 중첩된 함수 호출 문제를 해결하지는 못합니다.
localbar = name expr( ns:bar );
show( localbar( expr( notavar ) ) ); // expected, unevaluated