class Dhall::AsDhall::ExpressionList::Union
Public Class Methods
new(values, exprs, types)
click to toggle source
# File lib/dhall/as_dhall.rb, line 197 def initialize(values, exprs, types) @tags, @types = values.zip(types).map { |(value, type)| if type.is_a?(UnionType) && type.alternatives.length == 1 type.alternatives.to_a.first else [AsDhall.tag_for(value), type] end }.transpose @exprs = exprs @inferer = UnionInferer.new end
Public Instance Methods
list()
click to toggle source
# File lib/dhall/as_dhall.rb, line 209 def list final_inferer = @tags .zip(@exprs, @types) .reduce(@inferer) do |inferer, (tag, expr, type)| inferer.with( tag, type.nil? ? nil : TypeAnnotation.new(value: expr, type: type) ) end List.new(elements: @exprs.map(&final_inferer.method(:union_for))) end