parse-function now consumes optional 'when GUARD-EXPR' before -> and emits (:case-when PAT GUARD BODY) — same handling as match clauses. function-style sign extraction now works: (function | n when n > 0 -> 1 | n when n < 0 -> -1 | _ -> 0)