예제 #1
0
SCM SCM_callep (SCM f) {
  struct SCM_jmp_buf scmjb;
  SCM continuation = SCM_allocate_continuation(&scmjb);
  scmjb.back_pointer = continuation;
  if ( setjmp(scmjb.jb) != 0 ) {
    return jumpvalue;
  } else {
    return SCM_invoke1(f,continuation);
  }
}
예제 #2
0
파일: schemeklib.c 프로젝트: PleaseTwo/lisp
SCM
SCM_invoke_continuation (SCM self, unsigned long number, va_list arguments) {
    SCM current_k = va_arg(arguments,SCM);
    SCM value     = va_arg(arguments,SCM);
    return SCM_invoke1(SCM_Unwrap(self)->closure.environment[0],value);
}