Version française
Home     About     Download     Resources     Contact us    
Browse thread
[Caml-list] crible d'eratosthene
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Jean-Christophe Filliatre <Jean-Christophe.Filliatre@l...>
Subject: Re: [Caml-list] crible d'eratosthene

Just a  minor remark: it is  more natural (and more  concise) to write
Eratosthene's  sieve using  Ocaml streams  and their  lazy evaluation,
like this

======================================================================
let rec filter p = parser
  [< 'n; s >] -> if p n then [< 'n; filter p s >] else [< filter p s >]

let naturals = 
  let rec gen n = [< 'n; gen (succ n) >] in gen 2

let primes =
  let rec sieve = parser
    [< 'n; s >] -> [< 'n; sieve (filter (fun m -> m mod n <> 0) s) >]
  in
  sieve naturals
======================================================================

-- 
Jean-Christophe FILLIATRE
  mailto:Jean-Christophe.Filliatre@lri.fr
  http://www.lri.fr/~filliatr


=?iso-8859-1?Q?St=E9phane_Baubillier?= writes:
 > Here is an example :
 > 
 > http://caml.inria.fr/Examples/cl/basics/sieve.ml
 > 
 > Stephane Baubillier
 > Pacte Novation
 > 
 > ----- Original Message -----
 > From: <tech@diffusionnet.com>
 > To: <caml-list@inria.fr>
 > Sent: Tuesday, April 24, 2001 3:29 PM
 > Subject: [Caml-list] crible d'eratosthene
 > 
 > 
 > 
 > Bonjour,
 > 
 > Je suis nouveau ici et en apprentissage sur le langage CAML.
 > 
 > Je suis à la recherche d'un exemple très simple utilisant que des fonctions
 > de base (listes, pas de boucle) recursivité, concernant le crible
 > d'eratosthene. J'ai trouvé sur le net des exemples mais rien d'assez simple.
 > 
 > Exemple en clair:
 > 
 > J'ai une liste [1;2;3;4;5;6;7;8;9;10;11;12]
 > une liste vide qui doit contenir les nombres premiers.
 > 
 > 1/ On extrait la tete de la liste (2) pour l'ajouter à la liste des nombres
 > premiers (initialement vide)
 > 2/ On supprime de la liste des nombres tous les multiples du nombre extrait
 > lors de l'étape 1
 > 3/ On recommence les étapes 1 et 2 jusqu'à obtention d'une liste vide.
 > 
 > Si qq peut me faire parvenir un source rapidement, je lui en serait très
 > reconnaissant !!!
 > 
 > Cordialement
 > 
 > CP.
 > 
 > -------------------
 > To unsubscribe, mail caml-list-request@inria.fr.  Archives:
 > http://caml.inria.fr
 > 
 > -------------------
 > To unsubscribe, mail caml-list-request@inria.fr.  Archives: http://caml.inria.fr
-------------------
To unsubscribe, mail caml-list-request@inria.fr.  Archives: http://caml.inria.fr