[racket] begin vs +
call/cc captures the environment when it creates a procedural representation of the continuation, just like lambda. The two are doing more or less the same thing with two differences:
(1) lambda uses an explicit expression to create a procedure while call/cc uses an implicit expression (the current evaluation context);
(2) lambda create a mathematical abstraction if the expression avoids effects and call/cc introduces an effect into its procedure (abort).
Note, a functional continuation creator (say F but NOT shift) avoids the second difference.