Programmer en Lisp

Soyez le premier à donner votre avis sur cette source.

Vue 641 fois - Téléchargée 154 fois

Description

Le langage de programmation Lisp est presque aussi ancien que Fortran. Il en a existé plusieurs versions dont la plus importante est : Common Lisp. Il a eu aussi plusieurs langages dérivés dont Scheme. Et il a eu une influence justifiée pour d'autres langages de programmation.

Dans cet envoi il vous est proposé de faire extrêmement facilement quelques essais en langage Lisp.

Internet permet d'obtenir des interpréteurs en langage Lisp programmés en C, en C++, en Java, en JavaScript, en Python, en Go, en Rust ou en d'autres langages de programmation. Leurs utilisations se ressemblent mais ils ont chacun leurs particularités.

https://github.com/mbillingr/lisp-in-small-pieces/tree/master/bin est l'adresse Internet du programme exécutable disponible pour Linux ou Windows qui sera utilisable avec cet envoi. Le fichier nommé installation.txt explique son installation et son utilisation. Les autres fichiers en format scm sont des programmes sources en langage Scheme utilisés par ce logiciel. Bien entendu, d'autres programmes peuvent être développés et ajoutés à ceux-ci.

Parmi les divers programmes disponibles ci-joints voici le source du programme sqrt qui effectue le calcul de la racine carrée d'un nombre entier ou d'un nombre décimal. Et voici aussi le prédicat premier? qui détermine si l'argument est un nombre entier premier.

Source :

(define (sqrt x) 
    (define (avec a b) 
        (let ((c (/ (+ a b) 2)))  
            (if (or (= a c) (= c b)) c 
                (if (> (* c c) x) (avec a c) (avec c b))
            )
        )
    )
    (if (or (not (number? x)) (< x 0)) "impossible"
        (if (= x 0) 0
            (if (> x 1) (avec 1 x) (avec x 1))
        )
    )
)
(define (abs x) (if (< x 0) (- x) x))
(define (premier? n)
    (define a (abs n))
    (define (div-a? d)
        (cond ((> (* d d) a) #f) 
              ((= (remainder a d) 0) #t)
              (else (div-a? (+ d 2)))
        )
    )
    (if (not (integer? n)) #f
        (if (or (= n -1) (= n 0) (= n 1)) #f
            (if (or (= n -2) (= n 2)) #t
                (if (= (remainder a 2) 0) #f
                    (not (div-a? 3))
                )
            )
        )
    )
)

Conclusion :

Très bonne visite. Essayer et utiliser Lisp aussi facilement est un vrai plaisir !

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.