Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require 'fiber'
- class Fiber
- def inject *sval, &blk
- ival = sval.empty? ? resume : sval.first
- loop do
- ival = blk.call ival, resume
- end
- rescue FiberError
- ival
- end
- end
- f = Fiber::new do
- 5.times do |i| Fiber::yield i end
- end
- p f.inject{ |s, i| s+i }
- def fibo limit = nil
- a = b = 1
- Fiber::new do
- loop do
- a, b = b, a+b
- raise FiberError if limit && a > limit
- Fiber::yield a
- end
- end
- end
- p fibo(20).inject{ | s, i | p [s, i];i + s }
Add Comment
Please, Sign In to add comment