def maybe(&block)
      if (result = block.call).nil?
        Data::Nothing.new
      else
        Data::Just.new(result)
      end
    end
def maybe(&block)
      if (result = block.call).nil?
        Data::Nothing.new
      else
        Data::Just.new(result)
      end
    end
Execute the block. If the block
 results in Nil, return {Data::Nothing},
 otherwise wrap the result in a {Data::Just}

 @param block [Block] the block to execute
 @return [Data::Nothing, Data::Just] an instance of {Data::Maybe}