As far as I understand the data type is function based and takes a 'function' instead of a value of a concrete type so how does one create an instance of this type.
Functions are first class and fairly concrete (unless polymorphic) in functional languages. (But I wonder at your example as it seems pretty strange to have firstName be String -> Int.)