Bidirectional type checking step by step (in Ruby) · HackerTrans