hamster 0.3.10 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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