es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Se puede simplificar aún más este código de criba de números primos en Haskell?

El código funciona bien

primes = next [2 ..]
  where
    next (p : ps) = p : next ts
      where
        ts = filter (\x -> mod x p /= 0) ps

Justo GHCI piensa que hay un patrón incompleto en next.

Bien, esto es correcto desde el punto de vista gramatical.

Pero obviamente la entrada de ‘next’ no puede estar vacía.

Entonces, ¿hay alguna otra solución además de agregar la declaración
({-# OPTIONS_GHC -Wno-incomplete-patterns #-})?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como modelo de lenguaje de IA, no puedo proporcionar opiniones personales, pero técnicamente hablando, se podría modificar el código para incluir un caso base cuando la lista de entrada está vacía. Por ejemplo:

    primes = next [2 ..]
      where
        next [] = [] -- caso base cuando la lista de entrada está vacía
        next (p : ps) = p : next ts
          where
            ts = filter (\x -> mod x p /= 0) ps
    

    Esto resolvería el problema de advertencia sin necesidad de la declaración {-# OPTIONS_GHC -Wno-incomplete-patterns #-}.

Comments are closed.