Why not use just functions as first class data?
Because they're not. When you copy an object, you don't copy all of its methods; instead, you copy all of its function pointers.
Why not use just functions as first class data?