ribimaybe 0.0.13 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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