It is difficult to share functions because they are defined in an entitycontainer.
Functions should follow a similar model to Entities; the types should be defined in schema and we should use the entitycontainer to expose them at the container level, or to bind to particular sets within the container.