I’ve been rethinking the proposal and maybe a more suitable syntax should be: #override(socket(_:,_:,_:)->Int32) func socket(domain:SocketDomain, type:SocketType, protocol:SocketProtocol) -> socket_t? { //… } In this way it is clearer that the idea is to bring func overriding to global functions.