with
with permite agrupar múltiples expresiones de tipo pattern matching en un único bloque do-end, de tal manera que la única forma de evaluar su interior es que todos los matches sean válidos a la vez. Con esto podemos desplegar cómodamente expresiones envueltas en tuplas sin crear un excesivo número de cases.