functions now support input and output type-declarations, and have literal syntax reflecting them