Last active
May 31, 2023 06:05
-
-
Save danielpclark/be5127f7e650af3bbf5d14396f113cf0 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Proof of Concept | |
class ArrayifyBehavior | |
def initialize(data) | |
@data = data | |
end | |
def self.call(data) | |
new(data) | |
end | |
def call(behavior) | |
p @data | |
behavior.call(action) | |
end | |
def action | |
Array(@data) | |
end | |
end | |
class DoubleBehavior | |
def initialize(data) | |
@data = data | |
end | |
def self.call(data) | |
new(data) | |
end | |
def call(behavior) | |
p @data | |
behavior.call(action) | |
end | |
def action | |
@data + @data | |
end | |
end | |
class EndOfLineBehavior | |
def initialize(data) | |
@data = data | |
end | |
def self.call(data) | |
new(data) | |
end | |
def call(behavior) | |
p @data | |
behavior.call(@data) | |
end | |
end | |
start_value = 123 | |
[ArrayifyBehavior, DoubleBehavior, DoubleBehavior, EndOfLineBehavior].reduce(->(a){ a.(start_value) }) do |acc, a| | |
acc.call(a) | |
end.call(lambda{|a|a}) | |
# OUTPUT: => | |
# 123 | |
# [123] | |
# [123, 123] | |
# [123, 123, 123, 123] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment