Eu recebi a seguinte pergunta em um teste:
Escreva uma função
f
com o seguinte tipoa -> b -> (a -> b)
.a
eb
não deve ser vinculado em nenhum sentido, quanto menor o código, melhor.
Eu inventei f a b = \x -> snd ([a,x],b)
. Você consegue encontrar algo menor?
Atualmente o vencedor é: f _=(.f).const
f _ b _ = b
, mas, dada a solução na pergunta, suspeito que um tipo mais geral não seja permitido.
f = id
?
f = f
é uma solução, então acho que as condições no tipo são muito importantes!
f = const const
.