fr 0.9.1

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 (64) hide show
  1. data/README.md +0 -0
  2. data/Rakefile +81 -0
  3. data/lib/fr.rb +44 -0
  4. data/lib/fr/applicative.rb +0 -0
  5. data/lib/fr/array.rb +168 -0
  6. data/lib/fr/boolean.rb +15 -0
  7. data/lib/fr/either.rb +94 -0
  8. data/lib/fr/errors.rb +5 -0
  9. data/lib/fr/errors/zipper_error.rb +8 -0
  10. data/lib/fr/functor.rb +11 -0
  11. data/lib/fr/functor/array.rb +15 -0
  12. data/lib/fr/functor/either.rb +17 -0
  13. data/lib/fr/functor/maybe.rb +17 -0
  14. data/lib/fr/maybe.rb +76 -0
  15. data/lib/fr/monad.rb +236 -0
  16. data/lib/fr/monad/array.rb +21 -0
  17. data/lib/fr/monad/either.rb +18 -0
  18. data/lib/fr/monad/maybe.rb +24 -0
  19. data/lib/fr/monad/random.rb +50 -0
  20. data/lib/fr/monad/reader.rb +45 -0
  21. data/lib/fr/monad/state.rb +62 -0
  22. data/lib/fr/monad/writer.rb +49 -0
  23. data/lib/fr/monoid.rb +52 -0
  24. data/lib/fr/monoid/array.rb +13 -0
  25. data/lib/fr/monoid/boolean.rb +23 -0
  26. data/lib/fr/monoid/either.rb +13 -0
  27. data/lib/fr/monoid/maybe.rb +15 -0
  28. data/lib/fr/monoid/numeric.rb +31 -0
  29. data/lib/fr/monoid/string.rb +11 -0
  30. data/lib/fr/numeric.rb +1 -0
  31. data/lib/fr/object.rb +45 -0
  32. data/lib/fr/string.rb +1 -0
  33. data/lib/fr/szipper.rb +36 -0
  34. data/lib/fr/szipper/abstract_cursor.rb +63 -0
  35. data/lib/fr/szipper/edited_cursor.rb +62 -0
  36. data/lib/fr/szipper/enumerable.rb +266 -0
  37. data/lib/fr/szipper/head_cursor.rb +71 -0
  38. data/lib/fr/szipper/head_prev_cursor.rb +112 -0
  39. data/lib/fr/szipper/memoized_cursor.rb +59 -0
  40. data/lib/fr/szipper/node.rb +67 -0
  41. data/lib/fr/szipper/tail_next_cursor.rb +68 -0
  42. data/lib/fr/thunk.rb +73 -0
  43. data/lib/fr/tzipper.rb +38 -0
  44. data/lib/fr/tzipper/abstract_cursor.rb +351 -0
  45. data/lib/fr/tzipper/dangling_cursor.rb +107 -0
  46. data/lib/fr/tzipper/edited_cursor.rb +161 -0
  47. data/lib/fr/tzipper/memoized_cursor.rb +129 -0
  48. data/lib/fr/tzipper/node.rb +57 -0
  49. data/lib/fr/tzipper/path.rb +125 -0
  50. data/lib/fr/tzipper/root_cursor.rb +124 -0
  51. data/lib/fr/unfold.rb +93 -0
  52. data/spec/examples/array.example +0 -0
  53. data/spec/examples/monads/array.example +0 -0
  54. data/spec/examples/monads/maybe.example +0 -0
  55. data/spec/examples/monads/random.example +0 -0
  56. data/spec/examples/monads/state.example +0 -0
  57. data/spec/examples/szipper.example +652 -0
  58. data/spec/examples/thunk.example +0 -0
  59. data/spec/examples/tzipper.example +0 -0
  60. data/spec/examples/unfold.example +90 -0
  61. data/spec/spec_helper.rb +23 -0
  62. data/spec/support/szipper/model.rb +225 -0
  63. data/spec/support/szipper/nodel.rb +144 -0
  64. metadata +116 -0
metadata ADDED
@@ -0,0 +1,116 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fr
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Kyle Putnam
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-04-15 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: Examples of immutable data structures and functional programming in Ruby
15
+ email: putnam.kyle@gmail.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - README.md
21
+ - Rakefile
22
+ - lib/fr.rb
23
+ - lib/fr/boolean.rb
24
+ - lib/fr/array.rb
25
+ - lib/fr/functor.rb
26
+ - lib/fr/szipper/head_prev_cursor.rb
27
+ - lib/fr/szipper/abstract_cursor.rb
28
+ - lib/fr/szipper/head_cursor.rb
29
+ - lib/fr/szipper/tail_next_cursor.rb
30
+ - lib/fr/szipper/edited_cursor.rb
31
+ - lib/fr/szipper/enumerable.rb
32
+ - lib/fr/szipper/memoized_cursor.rb
33
+ - lib/fr/szipper/node.rb
34
+ - lib/fr/tzipper/dangling_cursor.rb
35
+ - lib/fr/tzipper/root_cursor.rb
36
+ - lib/fr/tzipper/abstract_cursor.rb
37
+ - lib/fr/tzipper/path.rb
38
+ - lib/fr/tzipper/edited_cursor.rb
39
+ - lib/fr/tzipper/memoized_cursor.rb
40
+ - lib/fr/tzipper/node.rb
41
+ - lib/fr/szipper.rb
42
+ - lib/fr/unfold.rb
43
+ - lib/fr/monoid.rb
44
+ - lib/fr/numeric.rb
45
+ - lib/fr/applicative.rb
46
+ - lib/fr/functor/array.rb
47
+ - lib/fr/functor/maybe.rb
48
+ - lib/fr/functor/either.rb
49
+ - lib/fr/maybe.rb
50
+ - lib/fr/monad/state.rb
51
+ - lib/fr/monad/reader.rb
52
+ - lib/fr/monad/array.rb
53
+ - lib/fr/monad/random.rb
54
+ - lib/fr/monad/writer.rb
55
+ - lib/fr/monad/maybe.rb
56
+ - lib/fr/monad/either.rb
57
+ - lib/fr/monoid/boolean.rb
58
+ - lib/fr/monoid/array.rb
59
+ - lib/fr/monoid/numeric.rb
60
+ - lib/fr/monoid/maybe.rb
61
+ - lib/fr/monoid/either.rb
62
+ - lib/fr/monoid/string.rb
63
+ - lib/fr/errors.rb
64
+ - lib/fr/thunk.rb
65
+ - lib/fr/tzipper.rb
66
+ - lib/fr/monad.rb
67
+ - lib/fr/errors/zipper_error.rb
68
+ - lib/fr/either.rb
69
+ - lib/fr/object.rb
70
+ - lib/fr/string.rb
71
+ - spec/examples/szipper.example
72
+ - spec/examples/monads/maybe.example
73
+ - spec/examples/monads/array.example
74
+ - spec/examples/monads/state.example
75
+ - spec/examples/monads/random.example
76
+ - spec/examples/array.example
77
+ - spec/examples/unfold.example
78
+ - spec/examples/thunk.example
79
+ - spec/examples/tzipper.example
80
+ - spec/spec_helper.rb
81
+ - spec/support/szipper/model.rb
82
+ - spec/support/szipper/nodel.rb
83
+ homepage: https://github.com/kputnam/fr
84
+ licenses: []
85
+ post_install_message:
86
+ rdoc_options: []
87
+ require_paths:
88
+ - lib
89
+ required_ruby_version: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ required_rubygems_version: !ruby/object:Gem::Requirement
96
+ none: false
97
+ requirements:
98
+ - - ! '>='
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ requirements: []
102
+ rubyforge_project:
103
+ rubygems_version: 1.8.15
104
+ signing_key:
105
+ specification_version: 3
106
+ summary: Examples of immutable data structures and functional programming in Ruby
107
+ test_files:
108
+ - spec/examples/szipper.example
109
+ - spec/examples/monads/maybe.example
110
+ - spec/examples/monads/array.example
111
+ - spec/examples/monads/state.example
112
+ - spec/examples/monads/random.example
113
+ - spec/examples/array.example
114
+ - spec/examples/unfold.example
115
+ - spec/examples/thunk.example
116
+ - spec/examples/tzipper.example