from typing import Optional, TypeVar, Callable T = TypeVar('T') def exists(opt: Optional[T], cond: Callable[[T], bool]) -> bool: match opt: case None: return False case _: return cond(opt) def foreach(opt: Optional[T], call: Callable[[T], None]) -> None: match opt: case None: return None case _: return call(opt)