Guest User

Untitled

a guest
May 27th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.51 KB | None | 0 0
  1. require 'fiber'
  2.  
  3. class Fiber
  4. def inject *sval, &blk
  5. ival = sval.empty? ? resume : sval.first
  6. loop do
  7. ival = blk.call ival, resume
  8. end
  9. rescue FiberError
  10. ival
  11. end
  12. end
  13.  
  14. f = Fiber::new do
  15. 5.times do |i| Fiber::yield i end
  16. end
  17.  
  18. p f.inject{ |s, i| s+i }
  19.  
  20. def fibo limit = nil
  21. a = b = 1
  22. Fiber::new do
  23. loop do
  24. a, b = b, a+b
  25. raise FiberError if limit && a > limit
  26. Fiber::yield a
  27. end
  28. end
  29. end
  30.  
  31. p fibo(20).inject{ | s, i | p [s, i];i + s }
Add Comment
Please, Sign In to add comment