So Cascade works because he forces the delete of all objects belonging to that object ( similar to delete ... cascade for row deletes )
Now the question is why your drop function did not work. And I don't know we might have to look into logs to figure that out. But I have seen flakiness with functions in hive before on an older version of hive. So it might be just a bug or a restart required or something. But again without logs hard to say.