# frozen_string_literal: true require 'dry/effects/provider' module Dry module Effects module Providers class Amb < Provider[:amb] include Dry::Equalizer(:id, :value) attr_reader :value param :id def get value end def call(_) @value = false first = yield @value = true [first, yield] end def provide?(effect) super && id.equal?(effect.id) end def represent "amb[#{id}=#{@value}]" end end end end end