Um uso da função '{0}' não corresponde um tipo inferido em outro local. O tipo inferido da função é {1}. O tipo da função ...

Um uso da função '{0}' não corresponde um tipo inferido em outro local. O tipo inferido da função é
    {1}.    
O tipo da função requerida neste ponto de uso é
    {2}    {3}
Este erro pode ser devido a limitações associadas com recursão genérica em uma coleção 'let rec' ou em um grupo de classes. Considere fornecer uma assinatura de tipo completo para o destino de chamadas recursivas incluindo anotações de tipo para tipos de argumento e retorno.