I didn’t think this was possible, but as I was perusing some code (and consequently making a fork), I discovered there is syntax to support this. Check out these two examples.
Pattern Matching
1> P = fun(undefined) -> null; (X) -> X end. #Fun<erl_eval.6.13229925> 2> P(undefined). null 3> P(42). 42
Guard Expressions
4> G = fun(X) when X==undefined -> null; (X) -> X end. #Fun<erl_eval.6.13229925> 5> G(undefined). null 6> G(42). 42