hamster 0.3.10 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. data/History.rdoc +10 -0
  2. data/README.rdoc +13 -10
  3. data/lib/hamster.rb +2 -1
  4. data/lib/hamster.rbc +165 -0
  5. data/lib/hamster/core_ext.rbc +69 -0
  6. data/lib/hamster/core_ext/enumerable.rbc +636 -0
  7. data/lib/hamster/core_ext/io.rbc +616 -0
  8. data/lib/hamster/enumerable.rb +141 -0
  9. data/lib/hamster/experimental/mutable_hash.rb +34 -0
  10. data/lib/hamster/experimental/mutable_queue.rb +34 -0
  11. data/lib/hamster/experimental/mutable_set.rb +46 -0
  12. data/lib/hamster/experimental/mutable_stack.rb +35 -0
  13. data/lib/hamster/{read_copy_update.rb → experimental/read_copy_update.rb} +4 -5
  14. data/lib/hamster/hash.rb +1 -0
  15. data/lib/hamster/hash.rbc +4429 -0
  16. data/lib/hamster/immutable.rbc +1609 -0
  17. data/lib/hamster/list.rb +4 -109
  18. data/lib/hamster/list.rbc +15710 -0
  19. data/lib/hamster/queue.rbc +1842 -0
  20. data/lib/hamster/set.rb +6 -111
  21. data/lib/hamster/set.rbc +7780 -0
  22. data/lib/hamster/sorter.rb +2 -2
  23. data/lib/hamster/sorter.rbc +371 -0
  24. data/lib/hamster/stack.rbc +1627 -0
  25. data/lib/hamster/trie.rbc +3527 -0
  26. data/lib/hamster/tuple.rbc +873 -0
  27. data/lib/hamster/undefined.rbc +258 -0
  28. data/lib/hamster/vector.rb +157 -0
  29. data/lib/hamster/version.rb +1 -1
  30. data/lib/hamster/version.rbc +136 -0
  31. data/spec/hamster/core_ext/io_spec.rb +2 -2
  32. data/spec/hamster/experimental/mutable_set/add?_spec.rb +47 -0
  33. data/spec/hamster/experimental/mutable_set/add_spec.rb +51 -0
  34. data/spec/hamster/experimental/mutable_set/delete?_spec.rb +47 -0
  35. data/spec/hamster/experimental/mutable_set/delete_spec.rb +47 -0
  36. data/spec/hamster/experimental/mutable_stack/pop_spec.rb +41 -0
  37. data/spec/hamster/experimental/mutable_stack/push_spec.rb +41 -0
  38. data/spec/hamster/hash/put_spec.rb +2 -2
  39. data/spec/hamster/list/each_with_index_spec.rb +42 -0
  40. data/spec/hamster/list/head_spec.rb +0 -12
  41. data/spec/hamster/set/construction_spec.rb +16 -4
  42. data/spec/hamster/set/filter_spec.rb +16 -0
  43. data/spec/hamster/set/flatten_spec.rb +13 -2
  44. data/spec/hamster/stack/pop_spec.rb +2 -24
  45. data/spec/hamster/vector/add_spec.rb +41 -0
  46. data/spec/hamster/vector/any_spec.rb +67 -0
  47. data/spec/hamster/vector/clear_spec.rb +36 -0
  48. data/spec/hamster/vector/copying_spec.rb +32 -0
  49. data/spec/hamster/vector/each_spec.rb +46 -0
  50. data/spec/hamster/vector/each_with_index_spec.rb +42 -0
  51. data/spec/hamster/vector/empty_spec.rb +35 -0
  52. data/spec/hamster/vector/eql_spec.rb +65 -0
  53. data/spec/hamster/vector/filter_spec.rb +63 -0
  54. data/spec/hamster/vector/first_spec.rb +35 -0
  55. data/spec/hamster/vector/get_spec.rb +81 -0
  56. data/spec/hamster/vector/include_spec.rb +45 -0
  57. data/spec/hamster/vector/inspect_spec.rb +31 -0
  58. data/spec/hamster/vector/last_spec.rb +32 -0
  59. data/spec/hamster/vector/reduce_spec.rb +87 -0
  60. data/spec/hamster/vector/set_spec.rb +153 -0
  61. data/spec/hamster/vector/size_spec.rb +27 -0
  62. data/spec/hamster/vector/to_a_spec.rb +42 -0
  63. data/spec/hamster/vector/to_ary_spec.rb +44 -0
  64. data/spec/spec_helper.rb +2 -2
  65. data/tasks/bundler.rb +2 -0
  66. data/tasks/publish.rb +1 -1
  67. data/tasks/rspec.rb +1 -2
  68. metadata +56 -14
  69. data/lib/hamster/read_copy_update_hash.rb +0 -28
  70. data/lib/hamster/read_copy_update_list.rb +0 -26
  71. data/lib/hamster/read_copy_update_queue.rb +0 -27
  72. data/lib/hamster/read_copy_update_set.rb +0 -26
  73. data/lib/hamster/read_copy_update_stack.rb +0 -27
@@ -1,3 +1,13 @@
1
+ === 0.4.0 / 2010-12-13
2
+
3
+ * Added initial implementation of Vector for efficient indexed access.
4
+
5
+ * Fix car/cdr so they work on Ruby 1.8.7 (Tianyi Cui)
6
+
7
+ === 0.3.10 / 2010-10-22
8
+
9
+ * Update to RSpec 2.
10
+
1
11
  === 0.3.9 / 2010-06-02
2
12
 
3
13
  * Implement Hash#values.
@@ -1,13 +1,13 @@
1
1
  = Hamster - Efficient, Immutable, Thread-Safe Collection classes for Ruby
2
2
 
3
- GitHub: http://github.com/harukizaemon/hamster
4
- Gemcutter: http://gemcutter/gems/hamster
5
- email: haruki.zaemon@gmail.com
6
- IRC: #haruki_zaemon on freenode
3
+ GitHub: http://github.com/harukizaemon/hamster
4
+ RubyGems: https://rubygems.org/gems/hamster
5
+ email: haruki_zaemon@mac.com
6
+ IRC: #haruki_zaemon on freenode
7
7
 
8
8
  == Introduction
9
9
 
10
- Hamster started out as an implementation of Hash Array Mapped Trees (HAMT) for Ruby (see http://lamp.epfl.ch/papers/idealhashtrees.pdf) and has since expanded to include implementations of other Persistent Data Structures (see http://en.wikipedia.org/wiki/Persistent_data_structure) including Set, List, Stack, and Queue.
10
+ Hamster started out as an implementation of Hash Array Mapped Tries (HAMT) for Ruby (see http://lamp.epfl.ch/papers/idealhashtrees.pdf) and has since expanded to include implementations of other Persistent Data Structures (see http://en.wikipedia.org/wiki/Persistent_data_structure) including Set, List, Stack, and Queue.
11
11
 
12
12
  Hamster collections are immutable. Whenever you modify a Hamster collection, the original is preserved and a modified copy is returned. This makes them inherently thread-safe and sharable. (For an interesting perspective on why immutability itself is inherently a good thing, you might like to take a look at Matthias Felleisen's Function Objects presentation: http://www.ccs.neu.edu/home/matthias/Presentations/ecoop2004.pdf)
13
13
 
@@ -15,11 +15,11 @@ Hamster collection classes remain space efficient by making use of some very wel
15
15
 
16
16
  Hamster collections are almost always closed under a given operation. That is, whereas Ruby's collection methods always return arrays, Hamster collections will return an instance of the same class wherever possible.
17
17
 
18
- And lastly, Hamster lists are lazy -- where Ruby's language constructs permit -- making it possible to, among other things, process "infinitely large" lists. (Note: Ruby 1.9 supports a form of laziness using Enumerator however they're implemented using Fibers which unfortunately can't be shared across threads.)
18
+ And lastly, Hamster lists are lazy -- where Ruby's language constructs permit -- making it possible to, among other things, process "infinitely large" lists. (Note: Ruby 1.9 supports a form of laziness using Enumerator. However, they're implemented using Fibers which unfortunately can't be shared across threads.)
19
19
 
20
20
  == Installation
21
21
 
22
- Hamster is distributed as a gem via gemcutter (http://gemcutter.org/gems/hamster) or as source via GitHub (http://github.com/harukizaemon/hamster).
22
+ Hamster is distributed as a gem via rubygems (http://rubygems.org/gems/hamster) or as source via GitHub (http://github.com/harukizaemon/hamster).
23
23
 
24
24
  Installation via the gem is easy:
25
25
 
@@ -31,15 +31,16 @@ Once installed, all that remains is to make the collection classes available in
31
31
 
32
32
  If you prefer, you can instead require individual classes as necessary:
33
33
 
34
- require 'hamster/hash'
35
- require 'hamster/set'
36
34
  require 'hamster/list'
37
35
  require 'hamster/stack'
38
36
  require 'hamster/queue'
37
+ require 'hamster/hash'
38
+ require 'hamster/set'
39
+ require 'hamster/vector'
39
40
 
40
41
  == Examples
41
42
 
42
- Most Hamster classes support an API that resembles their standard library counterpart with the caveat that any modification returns a new instance. What follows are some simple examples to help illustrate this point.
43
+ Most Hamster classes support an API that resembles their standard library counterpart, with the caveat that any modification returns a new instance. What follows are some simple examples to help illustrate this point.
43
44
 
44
45
  === Hash
45
46
 
@@ -163,6 +164,8 @@ How is this even possible? It's possible because <tt>IO#to_list</tt> creates a l
163
164
 
164
165
  === Queue
165
166
 
167
+ === Vector
168
+
166
169
  == Disclaimer
167
170
 
168
171
  Hamster started out as a spike to prove a point and has since morphed into something I actually use. My primary concern has been to round out the functionality with good test coverage and clean, readable code.
@@ -3,6 +3,7 @@ require 'hamster/immutable'
3
3
  require 'hamster/list'
4
4
  require 'hamster/stack'
5
5
  require 'hamster/queue'
6
- require 'hamster/set'
7
6
  require 'hamster/hash'
7
+ require 'hamster/set'
8
+ require 'hamster/vector'
8
9
  require 'hamster/version'
@@ -0,0 +1,165 @@
1
+ !RBIX
2
+ 0
3
+ x
4
+ M
5
+ 1
6
+ n
7
+ n
8
+ x
9
+ 10
10
+ __script__
11
+ i
12
+ 74
13
+ 5
14
+ 7
15
+ 0
16
+ 64
17
+ 47
18
+ 49
19
+ 1
20
+ 1
21
+ 15
22
+ 5
23
+ 7
24
+ 2
25
+ 64
26
+ 47
27
+ 49
28
+ 1
29
+ 1
30
+ 15
31
+ 5
32
+ 7
33
+ 3
34
+ 64
35
+ 47
36
+ 49
37
+ 1
38
+ 1
39
+ 15
40
+ 5
41
+ 7
42
+ 4
43
+ 64
44
+ 47
45
+ 49
46
+ 1
47
+ 1
48
+ 15
49
+ 5
50
+ 7
51
+ 5
52
+ 64
53
+ 47
54
+ 49
55
+ 1
56
+ 1
57
+ 15
58
+ 5
59
+ 7
60
+ 6
61
+ 64
62
+ 47
63
+ 49
64
+ 1
65
+ 1
66
+ 15
67
+ 5
68
+ 7
69
+ 7
70
+ 64
71
+ 47
72
+ 49
73
+ 1
74
+ 1
75
+ 15
76
+ 5
77
+ 7
78
+ 8
79
+ 64
80
+ 47
81
+ 49
82
+ 1
83
+ 1
84
+ 15
85
+ 2
86
+ 11
87
+ I
88
+ 2
89
+ I
90
+ 0
91
+ I
92
+ 0
93
+ I
94
+ 0
95
+ n
96
+ p
97
+ 9
98
+ s
99
+ 16
100
+ hamster/core_ext
101
+ x
102
+ 7
103
+ require
104
+ s
105
+ 17
106
+ hamster/immutable
107
+ s
108
+ 12
109
+ hamster/list
110
+ s
111
+ 13
112
+ hamster/stack
113
+ s
114
+ 13
115
+ hamster/queue
116
+ s
117
+ 11
118
+ hamster/set
119
+ s
120
+ 12
121
+ hamster/hash
122
+ s
123
+ 15
124
+ hamster/version
125
+ p
126
+ 17
127
+ I
128
+ 0
129
+ I
130
+ 1
131
+ I
132
+ 9
133
+ I
134
+ 2
135
+ I
136
+ 12
137
+ I
138
+ 3
139
+ I
140
+ 1b
141
+ I
142
+ 4
143
+ I
144
+ 24
145
+ I
146
+ 5
147
+ I
148
+ 2d
149
+ I
150
+ 6
151
+ I
152
+ 36
153
+ I
154
+ 7
155
+ I
156
+ 3f
157
+ I
158
+ 8
159
+ I
160
+ 4a
161
+ x
162
+ 52
163
+ /Users/haruki_zaemon/Projects/hamster/lib/hamster.rb
164
+ p
165
+ 0
@@ -0,0 +1,69 @@
1
+ !RBIX
2
+ 0
3
+ x
4
+ M
5
+ 1
6
+ n
7
+ n
8
+ x
9
+ 10
10
+ __script__
11
+ i
12
+ 20
13
+ 5
14
+ 7
15
+ 0
16
+ 64
17
+ 47
18
+ 49
19
+ 1
20
+ 1
21
+ 15
22
+ 5
23
+ 7
24
+ 2
25
+ 64
26
+ 47
27
+ 49
28
+ 1
29
+ 1
30
+ 15
31
+ 2
32
+ 11
33
+ I
34
+ 2
35
+ I
36
+ 0
37
+ I
38
+ 0
39
+ I
40
+ 0
41
+ n
42
+ p
43
+ 3
44
+ s
45
+ 27
46
+ hamster/core_ext/enumerable
47
+ x
48
+ 7
49
+ require
50
+ s
51
+ 19
52
+ hamster/core_ext/io
53
+ p
54
+ 5
55
+ I
56
+ 0
57
+ I
58
+ 1
59
+ I
60
+ 9
61
+ I
62
+ 2
63
+ I
64
+ 14
65
+ x
66
+ 61
67
+ /Users/haruki_zaemon/Projects/hamster/lib/hamster/core_ext.rb
68
+ p
69
+ 0
@@ -0,0 +1,636 @@
1
+ !RBIX
2
+ 0
3
+ x
4
+ M
5
+ 1
6
+ n
7
+ n
8
+ x
9
+ 10
10
+ __script__
11
+ i
12
+ 63
13
+ 5
14
+ 7
15
+ 0
16
+ 64
17
+ 47
18
+ 49
19
+ 1
20
+ 1
21
+ 15
22
+ 99
23
+ 7
24
+ 2
25
+ 65
26
+ 49
27
+ 3
28
+ 2
29
+ 13
30
+ 99
31
+ 12
32
+ 7
33
+ 4
34
+ 12
35
+ 7
36
+ 5
37
+ 12
38
+ 65
39
+ 12
40
+ 49
41
+ 6
42
+ 4
43
+ 15
44
+ 49
45
+ 4
46
+ 0
47
+ 15
48
+ 99
49
+ 7
50
+ 7
51
+ 65
52
+ 49
53
+ 3
54
+ 2
55
+ 13
56
+ 99
57
+ 12
58
+ 7
59
+ 4
60
+ 12
61
+ 7
62
+ 8
63
+ 12
64
+ 65
65
+ 12
66
+ 49
67
+ 6
68
+ 4
69
+ 15
70
+ 49
71
+ 4
72
+ 0
73
+ 15
74
+ 2
75
+ 11
76
+ I
77
+ 6
78
+ I
79
+ 0
80
+ I
81
+ 0
82
+ I
83
+ 0
84
+ n
85
+ p
86
+ 9
87
+ s
88
+ 12
89
+ hamster/list
90
+ x
91
+ 7
92
+ require
93
+ x
94
+ 7
95
+ Hamster
96
+ x
97
+ 11
98
+ open_module
99
+ x
100
+ 15
101
+ __module_init__
102
+ M
103
+ 1
104
+ n
105
+ n
106
+ x
107
+ 7
108
+ Hamster
109
+ i
110
+ 28
111
+ 5
112
+ 66
113
+ 99
114
+ 7
115
+ 0
116
+ 65
117
+ 49
118
+ 1
119
+ 2
120
+ 13
121
+ 99
122
+ 12
123
+ 7
124
+ 2
125
+ 12
126
+ 7
127
+ 3
128
+ 12
129
+ 65
130
+ 12
131
+ 49
132
+ 4
133
+ 4
134
+ 15
135
+ 49
136
+ 2
137
+ 0
138
+ 11
139
+ I
140
+ 6
141
+ I
142
+ 0
143
+ I
144
+ 0
145
+ I
146
+ 0
147
+ n
148
+ p
149
+ 5
150
+ x
151
+ 7
152
+ CoreExt
153
+ x
154
+ 11
155
+ open_module
156
+ x
157
+ 15
158
+ __module_init__
159
+ M
160
+ 1
161
+ n
162
+ n
163
+ x
164
+ 7
165
+ CoreExt
166
+ i
167
+ 28
168
+ 5
169
+ 66
170
+ 99
171
+ 7
172
+ 0
173
+ 65
174
+ 49
175
+ 1
176
+ 2
177
+ 13
178
+ 99
179
+ 12
180
+ 7
181
+ 2
182
+ 12
183
+ 7
184
+ 3
185
+ 12
186
+ 65
187
+ 12
188
+ 49
189
+ 4
190
+ 4
191
+ 15
192
+ 49
193
+ 2
194
+ 0
195
+ 11
196
+ I
197
+ 6
198
+ I
199
+ 0
200
+ I
201
+ 0
202
+ I
203
+ 0
204
+ n
205
+ p
206
+ 5
207
+ x
208
+ 10
209
+ Enumerable
210
+ x
211
+ 11
212
+ open_module
213
+ x
214
+ 15
215
+ __module_init__
216
+ M
217
+ 1
218
+ n
219
+ n
220
+ x
221
+ 10
222
+ Enumerable
223
+ i
224
+ 13
225
+ 5
226
+ 66
227
+ 99
228
+ 7
229
+ 0
230
+ 7
231
+ 1
232
+ 65
233
+ 5
234
+ 49
235
+ 2
236
+ 4
237
+ 11
238
+ I
239
+ 5
240
+ I
241
+ 0
242
+ I
243
+ 0
244
+ I
245
+ 0
246
+ n
247
+ p
248
+ 3
249
+ x
250
+ 8
251
+ included
252
+ M
253
+ 1
254
+ n
255
+ n
256
+ x
257
+ 8
258
+ included
259
+ i
260
+ 8
261
+ 20
262
+ 0
263
+ 56
264
+ 0
265
+ 50
266
+ 1
267
+ 0
268
+ 11
269
+ I
270
+ 3
271
+ I
272
+ 1
273
+ I
274
+ 1
275
+ I
276
+ 1
277
+ n
278
+ p
279
+ 2
280
+ M
281
+ 1
282
+ p
283
+ 2
284
+ x
285
+ 9
286
+ for_block
287
+ t
288
+ n
289
+ x
290
+ 8
291
+ included
292
+ i
293
+ 14
294
+ 99
295
+ 7
296
+ 0
297
+ 7
298
+ 1
299
+ 65
300
+ 67
301
+ 49
302
+ 2
303
+ 0
304
+ 49
305
+ 3
306
+ 4
307
+ 11
308
+ I
309
+ 6
310
+ I
311
+ 0
312
+ I
313
+ 0
314
+ I
315
+ 0
316
+ I
317
+ -2
318
+ p
319
+ 4
320
+ x
321
+ 7
322
+ to_list
323
+ M
324
+ 1
325
+ n
326
+ n
327
+ x
328
+ 7
329
+ to_list
330
+ i
331
+ 17
332
+ 45
333
+ 0
334
+ 1
335
+ 19
336
+ 0
337
+ 15
338
+ 5
339
+ 56
340
+ 2
341
+ 47
342
+ 50
343
+ 3
344
+ 0
345
+ 15
346
+ 20
347
+ 0
348
+ 11
349
+ I
350
+ 3
351
+ I
352
+ 1
353
+ I
354
+ 0
355
+ I
356
+ 0
357
+ n
358
+ p
359
+ 4
360
+ x
361
+ 9
362
+ EmptyList
363
+ n
364
+ M
365
+ 1
366
+ p
367
+ 2
368
+ x
369
+ 9
370
+ for_block
371
+ t
372
+ n
373
+ x
374
+ 7
375
+ to_list
376
+ i
377
+ 16
378
+ 57
379
+ 19
380
+ 0
381
+ 15
382
+ 21
383
+ 1
384
+ 0
385
+ 20
386
+ 0
387
+ 49
388
+ 0
389
+ 1
390
+ 22
391
+ 1
392
+ 0
393
+ 11
394
+ I
395
+ 4
396
+ I
397
+ 1
398
+ I
399
+ 1
400
+ I
401
+ 1
402
+ n
403
+ p
404
+ 1
405
+ x
406
+ 4
407
+ cons
408
+ p
409
+ 3
410
+ I
411
+ 0
412
+ I
413
+ d
414
+ I
415
+ 10
416
+ x
417
+ 72
418
+ /Users/haruki_zaemon/Projects/hamster/lib/hamster/core_ext/enumerable.rb
419
+ p
420
+ 1
421
+ x
422
+ 4
423
+ item
424
+ x
425
+ 12
426
+ reverse_each
427
+ p
428
+ 9
429
+ I
430
+ 0
431
+ I
432
+ b
433
+ I
434
+ 0
435
+ I
436
+ c
437
+ I
438
+ 6
439
+ I
440
+ d
441
+ I
442
+ e
443
+ I
444
+ e
445
+ I
446
+ 11
447
+ x
448
+ 72
449
+ /Users/haruki_zaemon/Projects/hamster/lib/hamster/core_ext/enumerable.rb
450
+ p
451
+ 1
452
+ x
453
+ 4
454
+ list
455
+ x
456
+ 17
457
+ method_visibility
458
+ x
459
+ 15
460
+ add_defn_method
461
+ p
462
+ 5
463
+ I
464
+ 0
465
+ I
466
+ a
467
+ I
468
+ 0
469
+ I
470
+ b
471
+ I
472
+ e
473
+ x
474
+ 72
475
+ /Users/haruki_zaemon/Projects/hamster/lib/hamster/core_ext/enumerable.rb
476
+ p
477
+ 0
478
+ x
479
+ 10
480
+ class_eval
481
+ p
482
+ 5
483
+ I
484
+ 0
485
+ I
486
+ 9
487
+ I
488
+ 0
489
+ I
490
+ a
491
+ I
492
+ 8
493
+ x
494
+ 72
495
+ /Users/haruki_zaemon/Projects/hamster/lib/hamster/core_ext/enumerable.rb
496
+ p
497
+ 1
498
+ x
499
+ 4
500
+ base
501
+ x
502
+ 13
503
+ attach_method
504
+ p
505
+ 3
506
+ I
507
+ 2
508
+ I
509
+ 9
510
+ I
511
+ d
512
+ x
513
+ 72
514
+ /Users/haruki_zaemon/Projects/hamster/lib/hamster/core_ext/enumerable.rb
515
+ p
516
+ 0
517
+ x
518
+ 13
519
+ attach_method
520
+ p
521
+ 3
522
+ I
523
+ 2
524
+ I
525
+ 7
526
+ I
527
+ 1c
528
+ x
529
+ 72
530
+ /Users/haruki_zaemon/Projects/hamster/lib/hamster/core_ext/enumerable.rb
531
+ p
532
+ 0
533
+ x
534
+ 13
535
+ attach_method
536
+ p
537
+ 3
538
+ I
539
+ 2
540
+ I
541
+ 5
542
+ I
543
+ 1c
544
+ x
545
+ 72
546
+ /Users/haruki_zaemon/Projects/hamster/lib/hamster/core_ext/enumerable.rb
547
+ p
548
+ 0
549
+ x
550
+ 13
551
+ attach_method
552
+ x
553
+ 10
554
+ Enumerable
555
+ M
556
+ 1
557
+ n
558
+ n
559
+ x
560
+ 10
561
+ Enumerable
562
+ i
563
+ 15
564
+ 5
565
+ 66
566
+ 5
567
+ 45
568
+ 0
569
+ 1
570
+ 43
571
+ 2
572
+ 43
573
+ 3
574
+ 47
575
+ 49
576
+ 4
577
+ 1
578
+ 11
579
+ I
580
+ 2
581
+ I
582
+ 0
583
+ I
584
+ 0
585
+ I
586
+ 0
587
+ n
588
+ p
589
+ 5
590
+ x
591
+ 7
592
+ Hamster
593
+ n
594
+ x
595
+ 7
596
+ CoreExt
597
+ x
598
+ 10
599
+ Enumerable
600
+ x
601
+ 7
602
+ include
603
+ p
604
+ 3
605
+ I
606
+ 2
607
+ I
608
+ 1c
609
+ I
610
+ f
611
+ x
612
+ 72
613
+ /Users/haruki_zaemon/Projects/hamster/lib/hamster/core_ext/enumerable.rb
614
+ p
615
+ 0
616
+ p
617
+ 7
618
+ I
619
+ 0
620
+ I
621
+ 1
622
+ I
623
+ 9
624
+ I
625
+ 3
626
+ I
627
+ 23
628
+ I
629
+ 1a
630
+ I
631
+ 3f
632
+ x
633
+ 72
634
+ /Users/haruki_zaemon/Projects/hamster/lib/hamster/core_ext/enumerable.rb
635
+ p
636
+ 0