Parcial 2017 v1 - Ej. 4

Parcial 2017 v1 - Ej. 4

de Tiziana Romani Linich -
Número de respuestas: 3

Dada la siguiente definición: 

foo f a = map (f a) 

¿Cu´al de las siguientes afirmaciones no es correcta? 

  • (a) El tipo es foo :: (a → b → c) → a → [b ] → [c ] 
  • (b) foo (||) False ≡ id 
  • (c) sum ◦ foo const 1 ≡ length 
  • (d) foo ($) ≡ map


No logro ver como foo ($) ≡ map

Podrían mostrarme algún ejemplo que clarifique?


Muchas gracias.

En respuesta a Tiziana Romani Linich

Re: Parcial 2017 v1 - Ej. 4

de Marcos Viera - InCo -
En respuesta a Marcos Viera - InCo

Re: Parcial 2017 v1 - Ej. 4

de Tiziana Romani Linich -

Gracias, pero aún me quedan algunas dudas.
Poniendo un ejemplo,

foo :: (a → b → c) → a → [b ] → [c ] 

foo f a = map (f a) 

foo (+) 1 = map (+1)    En este caso a = 1 ; b → c es el operador (+) ; donde b es el elemento de la lista y c la suma (a+b)



foo ($) (+1) ≡ map $ (+1) No logro comprender f sería ($) y a sería (+1)? Si esto es correcto, a puede tomar el valor de una función entonces? No veo como se relacionan los términos con el tipado.