blob: becec6c9615abc207b692a8b16443f603fd49d56 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
module M
class ReplyError < StandardError; end
class Either
def initialize(value)
@value = value
end
def to_s
"#<#{self.class.name} value=#{@value}>"
end
end
class Left < Either
def map(&block)
self
end
def get_or_else(value)
value
end
def get!
raise ReplyError, @value
end
def success?
false
end
end
class Right < Either
def map(&block)
Right.new(block.call(@value))
end
def get_or_else(_value)
@value
end
def get!
@value
end
def success?
true
end
end
end
|