ribimaybe 0.0.13 → 0.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c4f36f13ff02dcf449662d3d89acdce59f781329
4
- data.tar.gz: 09a060eebd6164be01a68f33d6820660a2afb7eb
3
+ metadata.gz: d563a588e4c633fb8ac5b30eac7fe2a4396fa2f6
4
+ data.tar.gz: 2fc3a0eb32ae37c5cc5f7d2d7d60d05bc38b9768
5
5
  SHA512:
6
- metadata.gz: e99de225be69caf575dabfb961167d1b642dd2e497371ef2a301276d72529f70e7e63abe21f55c3f77ba14d523c2b2b15f5bb4a8e34107d9fdc1510bb6c0e479
7
- data.tar.gz: a57acc14c7af6109c870efd22a31a9e2eec688aa2b9e038ef11f8466d2cfa8ee9a7028ae3b9ac520d0f785e2dba5812528f0ccbf2479f7552c13b0046a705a9d
6
+ metadata.gz: b30e7b8d646f98db81cf48b7347a9e912628be4c420b53dcaff2b8a547746af077cb21c3bdeb713d7560f9bb9d1d2e2ca3ac07f97deffa04b2efd81f63635578
7
+ data.tar.gz: 822a93c669fcede5b74d323431571ccc5fcfe24dc51063276aacbcd8e5def8d8bc1b1615ea134234c50710b0351fe8d22602ec8f7265c5b1ee96436120106196
data/README.md CHANGED
@@ -82,22 +82,23 @@ include Ribimaybe::Maybe
82
82
 
83
83
  # Chain together computations and pretend you're a Haskeller.
84
84
  Just(42).bind do |x|
85
- rturn(x - 21)
86
- end.bind do |x|
87
- rturn(x * 2)
85
+ unit(x - 21).bind do |y|
86
+ if x * x > 100 then unit(x) else unit(y) end
87
+ end
88
88
  end # => Just(42)
89
89
 
90
90
  # You guessed it! If have Nothing, you get Nothing.
91
91
  Nothing.bind do |x|
92
- rturn(x * x)
92
+ unit(x * x)
93
93
  end # => Nothing
94
94
 
95
- # We even have >= but you need to pass a Proc or a lambda.
95
+ # We even have >>= but it's called >= and you you need to pass a Proc or a
96
+ # lambda.
96
97
  Just(42) >= -> (x) do
97
- rturn(x - 21) >= -> (y) do
98
- if x * x > 100 then rturn(y) else rturn(x) end
98
+ unit(x - 21) >= -> (y) do
99
+ if x * x > 100 then unit(x) else unit(y) end
99
100
  end
100
- end
101
+ end # => Just(42)
101
102
  ```
102
103
 
103
104
  ## Contributing
@@ -4,8 +4,7 @@ module Ribimaybe
4
4
  module Maybe
5
5
  include Contracts
6
6
 
7
- # Hack to ensure constant is available to Ruby contracts.
8
- #
7
+ # Ensure constants are available to Ruby contracts.
9
8
  module Nothing; end
10
9
  class Just; end
11
10
 
@@ -13,7 +12,6 @@ module Ribimaybe
13
12
  include Contracts
14
13
 
15
14
  # Nothing string representation.
16
- #
17
15
  def self.to_s
18
16
  "Nothing"
19
17
  end
@@ -25,28 +23,24 @@ module Ribimaybe
25
23
  # ==== Attributes
26
24
  #
27
25
  # * +other+ - The other Maybe value.
28
- #
29
26
  Contract Or[Nothing, Just] => Bool
30
27
  def self.===(other)
31
28
  self == other
32
29
  end
33
30
 
34
31
  # No operation. Always returns the default value.
35
- #
36
32
  Contract Any, Proc => Any
37
33
  def self.maybe(default, &_)
38
34
  default
39
35
  end
40
36
 
41
37
  # No operation. Always returns Nothing.
42
- #
43
38
  Contract Proc => Nothing
44
39
  def self.map(&_)
45
40
  self
46
41
  end
47
42
 
48
43
  # No operation. Always returns Nothing.
49
- #
50
44
  Contract Any => Nothing
51
45
  def self.apply(_)
52
46
  self
@@ -57,7 +51,6 @@ module Ribimaybe
57
51
  end
58
52
 
59
53
  # No operation. Always returns Nothing.
60
- #
61
54
  Contract Proc => Nothing
62
55
  def self.bind(fn = nil, &_)
63
56
  self
@@ -76,7 +69,6 @@ module Ribimaybe
76
69
  end
77
70
 
78
71
  # Just string representation.
79
- #
80
72
  def to_s
81
73
  "Just(#{@value.inspect})"
82
74
  end
@@ -94,7 +86,6 @@ module Ribimaybe
94
86
  # Just(1) == Just(1) # => true
95
87
  # Just(1) == Just(2) # => false
96
88
  # Just(1) == Nothing # => false
97
- #
98
89
  Contract Or[Nothing, Just] => Bool
99
90
  def ==(other)
100
91
  other.maybe(false) do |value|
@@ -114,7 +105,6 @@ module Ribimaybe
114
105
  #
115
106
  # Just(1).maybe(false) { |x| x == 1 } # => true
116
107
  # Just(1).maybe(42) { |x| x } # => 1
117
- #
118
108
  Contract Any, Proc => Any
119
109
  def maybe(_, &fn)
120
110
  fn.curry.(@value)
@@ -130,7 +120,6 @@ module Ribimaybe
130
120
  #
131
121
  # Just(1).map { |x| x + 1 } # => Just(2)
132
122
  # Just { |x, y| x + y }.map { |f| f.(1) } # => Just(#<Proc:...>)
133
- #
134
123
  Contract Proc => Just
135
124
  def map(&fn)
136
125
  Just.new(fn.curry.(@value))
@@ -148,7 +137,6 @@ module Ribimaybe
148
137
  # Just do |x|
149
138
  # x + x
150
139
  # end.apply(Just(1)) # => Just(2)
151
- #
152
140
  Contract Or[Nothing, Just] => Or[Nothing, Just]
153
141
  def apply(value)
154
142
  value.map { |v| @value.curry.(v) }
@@ -165,9 +153,8 @@ module Ribimaybe
165
153
  # ==== Examples
166
154
  #
167
155
  # Just(1).bind do |x|
168
- # rturn(x + x)
156
+ # unit(x + x)
169
157
  # end # => Just(2)
170
- #
171
158
  Contract Proc => Or[Nothing, Just]
172
159
  def bind(fn = nil, &block)
173
160
  (fn || block).curry.(@value)
@@ -189,14 +176,13 @@ module Ribimaybe
189
176
  # Maybe(nil) # => Nothing
190
177
  # Maybe(1) # => Just(1)
191
178
  # Maybe { |x| x } # => Just(#<Proc:0x007fdecc03a478@(irb):6>)
192
- #
193
179
  Contract Any, Or[nil, Proc] => Or[Nothing, Just]
194
180
  def Maybe(value = nil, &fn)
195
181
  (value || fn) ? Just.new(value || fn.curry) : Nothing
196
182
  end
197
183
 
198
- alias_method :Just, :Maybe
199
- alias_method :pure, :Maybe
200
- alias_method :rturn, :Maybe
184
+ alias_method :Just, :Maybe
185
+ alias_method :pure, :Maybe
186
+ alias_method :unit, :Maybe
201
187
  end
202
188
  end
@@ -1,3 +1,3 @@
1
1
  module Ribimaybe
2
- VERSION = "0.0.13"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -6,15 +6,15 @@ describe "Monad Instance" do
6
6
  end
7
7
 
8
8
  let(:lifted_id) do
9
- ->(x) { id.(rturn(x)) }
9
+ ->(x) { id.(unit(x)) }
10
10
  end
11
11
 
12
12
  let(:f) do
13
- ->(x){ ->(y) { rturn(x) } }.(SecureRandom.base64(1000))
13
+ ->(x){ ->(y) { unit(x) } }.(SecureRandom.base64(1000))
14
14
  end
15
15
 
16
16
  let(:g) do
17
- ->(x){ ->(y) { rturn(x) } }.(SecureRandom.base64(1000))
17
+ ->(x){ ->(y) { unit(x) } }.(SecureRandom.base64(1000))
18
18
  end
19
19
 
20
20
  [:bind, :>=].each do |m|
@@ -28,7 +28,7 @@ describe "Monad Instance" do
28
28
 
29
29
  context "when i have just :x" do
30
30
  it do
31
- expect(rturn(:x).public_send(m, &lifted_id)).to eq(lifted_id.(:x))
31
+ expect(unit(:x).public_send(m, &lifted_id)).to eq(lifted_id.(:x))
32
32
  end
33
33
  end
34
34
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ribimaybe
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.13
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - unsymbol
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-16 00:00:00.000000000 Z
11
+ date: 2015-05-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler