class Steep::Interface::Block

def ==(other)

def ==(other)
  other.is_a?(self.class) && other.params == params && other.return_type == return_type
end

def closed?

def closed?
  params.closed? && return_type.closed?
end

def free_variables

def free_variables
  params.free_variables + return_type.free_variables
end

def initialize(params:, return_type:)

def initialize(params:, return_type:)
  @params = params
  @return_type = return_type
end

def subst(s)

def subst(s)
  self.class.new(
    params: params.subst(s),
    return_type: return_type.subst(s)
  )
end

def to_s

def to_s
  "{ #{params} -> #{return_type} }"
end