module.exports = (seem = require 'seem') ->
is_generator = (f) ->
f? and f.next? and f.throw?module.exports = (seem = require 'seem') ->
is_generator = (f) ->
f? and f.next? and f.throw?Detect whether a function is a generator function, and if it is, memoize the generator version.
seemify = (f,ctx,args) ->
return unless f?Use the memoized generator if present.
if f.__generator?
return f.__generator.apply ctx, args
v = f.apply ctx, argsIf the outcome of the function call is a generator, the function was a generator function, we better memoize it.
if is_generator v
f.__generator = seem f
if f.__generator?
return f.__generator.apply ctx, args
v