Estoy trabajando en un proyecto más grande traduciendo Haskell a Lambda calculus. Me gustaría dar un término lambda a funciones específicas de Haskell . No estoy muy seguro de cómo abordar dos de ellos. Me adelanté y creé la propiedad que debe tener cada término, sólo para dar una idea de lo que estoy tratando de hacer.
¿Qué haría el $\lambda$ -para estas funciones Haskell? Si pudieras dar una breve explicación sería muy útil.
Función 1: $\mathsf{foldr}$ : Debe tener la propiedad
$$\mathsf{foldr} \, f \, u \, [N_1, \dots ,N_k] \to_\beta^* f N_1 (f N_2 (\dots (f N_k u)))$$
Función 2: $\mathsf{map}$ : Debe tener la propiedad
$$\mathsf{map} \, f \, [N_1, \dots,N_k] \to_\beta^* [f N_1,f N_2, \dots,f N_k]$$