Site d’Emmanuel Saint-James
Philologie de la programmation
Comparaison entre traduction et interprétation

Un programme en langage C
avant sa traduction en M4 ou autre.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
long int prim(unsigned long int a)
{
 if (!(a%2)) return 2;
 if (a >= 3) {
   long int m = round(sqrt(a));
   long int i = 3;
   while (i < m)
     {
        if (!(a%i)) return i;
        i+=2;
     }
 }
 return 0;
}

Un programme en langage Lisp
près à l’interprétation.

(dl prim (a)
   (if (eq (% a 2) 0)
        2
        (if (< a 3)
                 0
             ((lambda (i m)
                   (if (eq (% a i) 0)
                     i
                     (if (< i m)
                             0
                        (self (+ i 2)))))
             3
             (round (sqrt a))))))