According to the documentation:
http://www.postgresql.org/docs/9.5/static/datatype-pseudo.html
At present the procedural languages all forbid use of a pseudo-type as
argument type, and allow only void and record as a result type (plus
trigger when the function is used as a trigger).
However, pl/perl has accepted "record" as in argument type since 9.1.
Cheers,
Jeff