out a bad idea. Performance, memory and resource leaks, ease of implementation, ease of use, ease of reasoning all argue against call/cc." Relation to non-constructive logic The Curry–Howard correspondence between proofs and programs relates call/cc to Peirce's law, which extends intuitionistic logic to non-constructive, classical logic: ((α → β) → α) → α. Here, ((α → β) → α) is the type of the function f, which can either return a value of type α directly or apply an argument to the continuation of type (α → β). Since the existing context is deleted when the continuation is applied, the type β is never used and may be taken to be ⊥, the empty type. The principle of double negation elimination ((α → ⊥) → ⊥) → α is comparable to a variant of call-cc which expects its argument f to always evaluate the current continuation without normally returning a value. Embeddings of classical logic into intuitionistic logic are related to continuation passing style translation. Languages implementing call/cc Scheme Racket Standard ML Haskell in the continuation Monad Ruby Unlambda C++ R See also Goto Continuation-passing style Fiber (computer science) References External links A short introduction to call-with-current-continuation Definition of call-with-current-continuation in the Scheme spec Humorous explanation of call-with-current-continuation from Rob Warnock in Usenet's comp.lang.lisp Cooperative multitasking in Scheme using Call-CC Continuations Scheme (programming language) Subroutines