The part I am not sure about is the "if it can be coerced to a fn". Can we know that at compile time? (Yes for atom but for what about referencing..?)