You can easily do this even in a language like C#, it's just that the syntactic overhead can be a bit much:
interface Transducer<A,B> {
Func<R,B,R> Apply<R>(Func<R,A,R> f);
}