haskell lista infinita de pares incrementais

Crie uma lista infinita de pares:: [(Integer, Integer)] contendo pares da forma(m,n), onde cada um de m e n é um membro de[0 ..]. Um requisito adicional é que, se(m,n) é um membro legítimo da lista, então(elem (m,n) pairs) deve retornarTrue em tempo finito. Uma implementação de pares que viole esse requisito é considerada uma não solução.

**** Fresh edit Obrigado pelos comentários, Vamos ver se consigo fazer algum progresso ****

    pairs :: [(Integer, Integer)]
    pairs = [(m,n) | t <- [0..], m <- [0..], n <-[0..], m+n == t]

Algo assim? Eu simplesmente não sei onde isso vai retornar True em tempo finito.

Eu sinto que a maneira como a pergunta é redigida não tem que ser parte da minha resposta. Apenas se você ligar(elem (m,n) pairs) deve retornar verdadeiro. Soa certo?

questionAnswers(3)

yourAnswerToTheQuestion