{"id":18976668,"url":"https://github.com/paul-schuhm/scheme","last_synced_at":"2026-01-28T15:05:57.831Z","repository":{"id":162716121,"uuid":"637201837","full_name":"paul-schuhm/scheme","owner":"paul-schuhm","description":"Un dépôt pour s'initier au langage Scheme (Lisp)","archived":false,"fork":false,"pushed_at":"2023-05-07T07:00:16.000Z","size":5,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-02T14:20:00.887Z","etag":null,"topics":["francais","lisp","pedagogie","programming-fundamentals","scheme","scheme-interpreter","scheme-language"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/paul-schuhm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-05-06T20:26:23.000Z","updated_at":"2023-05-06T20:36:49.000Z","dependencies_parsed_at":"2023-05-19T20:45:14.652Z","dependency_job_id":null,"html_url":"https://github.com/paul-schuhm/scheme","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/paul-schuhm/scheme","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paul-schuhm%2Fscheme","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paul-schuhm%2Fscheme/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paul-schuhm%2Fscheme/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paul-schuhm%2Fscheme/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/paul-schuhm","download_url":"https://codeload.github.com/paul-schuhm/scheme/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paul-schuhm%2Fscheme/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28846109,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-28T13:02:32.985Z","status":"ssl_error","status_checked_at":"2026-01-28T13:02:04.945Z","response_time":57,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["francais","lisp","pedagogie","programming-fundamentals","scheme","scheme-interpreter","scheme-language"],"created_at":"2024-11-08T15:25:46.343Z","updated_at":"2026-01-28T15:05:57.803Z","avatar_url":"https://github.com/paul-schuhm.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# scheme\n\nUne brève introduction à [Scheme](https://fr.wikipedia.org/wiki/Scheme), un dialecte de [Lisp](https://fr.wikipedia.org/wiki/Lisp), crée dans les années 70 au MIT par [Gerald Jay Sussman](https://fr.wikipedia.org/wiki/Gerald_Jay_Sussman) et [Guy L. Steele](https://fr.wikipedia.org/wiki/Guy_Lewis_Steele,_Jr.) (impliqué dans la conception de Lisp, Scheme, Fortran 90, Java et dans l'implémentation d'Emacs et de TeX). \n\n- [scheme](#scheme)\n  - [Installation](#installation)\n    - [Sur Debian/Ubuntu](#sur-debianubuntu)\n  - [Lancer l'interpréteur Scheme](#lancer-linterpréteur-scheme)\n  - [Premiers pas sur l'interpréteur](#premiers-pas-sur-linterpréteur)\n  - [Concepts fondamentaux](#concepts-fondamentaux)\n    - [Expressions primitives](#expressions-primitives)\n    - [Moyens de combinaison](#moyens-de-combinaison)\n  - [Références](#références)\n\n\n## Installation\n\n### Sur Debian/Ubuntu\n\n~~~\nsudo apt install mit-scheme\n~~~\n\n## Lancer l'interpréteur Scheme\n\nScheme est un langage interprété, comme Python ou PHP. Pour executer du code Scheme, vous pouvez accéder à un interpréteur interactif en ligne de commande. Dans un terminal\n\n~~~\nmit-scheme\n1 ]=\u003e\n~~~\n\n## Premiers pas sur l'interpréteur\n\nPour accéder au manuel de l'interpréteur `control+c ?` (taper `control` et `c` en même temps, puis `?`). Pour revenir au REP, `control+x`. Pour quitter l'interpréteur, tapez `control+c Q`.\n\nL'interpréteur fonctionne toujours de la même manière: il lit l'expression que vous avez tapé dans le terminal (read), évalue l'expression (eval) et affiche le résutlat (print). On appelle cela la *read-eval-print loop* (Read Eval Print ou REP). Lorsque vous accéder à l'interpréteur, le prompt `1 ]=\u003e` indique que vous êtes dans le REP de niveau 1. Pour nettoyer l'écran, `control+c control+l`.\n\nDans le REP tapez `(+ 1 2)` puis `entrée`. L'expression `(+ 1 2)` est lue par l'interpréteur (*read*), évaluée à 3 (*eval*) puis imprimée sur la sortie standard (*print*).\n\n~~~\n1 ]=\u003e (+ 1 2)\n\n;Value: 3\n~~~\n\nOn remarque que le résultat affiché `;Value: 3` est écrit sous forme de commentaire. Un commentaire en Scheme est défini par le caractère `;`.\n\n## Concepts fondamentaux\n\nTout programme repose sur 3 ingrédients : \n\n- des *expressions primitives* : fournies par le langage, ce sont les expressions les plus simples, comme la représentation du nombre `42`, la chaîne de caractères `\"foobar\"` ou la procédure d'addition (`+`)\n- des *moyens de combinaison* pour combiner des éléments simples afin d'en fabriquer des plus complexes\n- des *moyens d'abstraction* pour nommer, penser et manipuler les combinaisons comme des modules ou boîtes noires\n\n### Expressions primitives\n\nPar exemple, si vous tapez `42` dans l'interpréteur, le REP vous affiche `42`. En effet, `42` est évalué à `42`. Scheme vous met à disposition des procédures (ou fonctions) primitives comme l'addition (`+`), la soustraction (`-`), la multiplication (`*`) et la division (`/`).\n\n\u003eEt bien d'autres, on y reviendra plus tard.\n\n### Moyens de combinaison\n\nL'expression `(+ 1 2)` est une liste. Une liste est délimitée par des parenthèses. \n\n\u003eLa syntaxe de Scheme est simple. Elle s'apprend en quelques minutes. La difficulté c'est que les parenthèses jouent plusieurs rôles (on dit que leur sémantique est surchargée) ce qui peut prêter à confusion au départ. \n\nLisp veut dire **lis**t **p**rocessing, car tout y est traitement de listes ! Le premier élément de la liste est appelé l'*opérateur*, (`+`). Le reste des éléments sont les *opérandes* (`1` et `2`). Les parenthèses indique à l'interpréteur d'évaluer l'application de la procédure `+` au reste des éléments de la liste. La liste `(+ 1 2)` peut donc se traduire par *applique la procédure `+` aux éléments `1` et `2`*. L'expression `(+ 1 2)` est lue (*read*), l'interpréteur voit les parenthèses et applique donc `+` à `1` et `2` (*eval*) et affiche `3` (*print*). \n\n\u003e Si vous tapez `+ 1 2` sans parenthèses, Scheme va évaluer chaque expression séparemment. \n\n## Références\n\n- [Site officiel de MIT/GNU Scheme (sur gnu.org)](https://www.gnu.org/software/mit-scheme/), MIT/GNU Scheme est une implémentation du langage Scheme développée par Abelson et distribuée sous forme de logiciel libre (intégré au projet GNU)\n- [Documentation officielle de Scheme (une page)](https://www.gnu.org/software/mit-scheme/documentation/stable/mit-scheme-ref.html#Acknowledgements)\n- [Structure and interpretation of computer programs, 2nd edition (version HTML)](https://mitp-content-server.mit.edu/books/content/sectbyfn/books_pres_0/6515/sicp.zip/full-text/book/book.html), l'édition web gratuite et complète du très grand livre d'Abelson, Gerald Jay et Julie Sussman (MIT Press, 1996). `Recommandé`\n- [Introduction aux fonctions en Scheme](https://www.shido.info/lisp/scheme4_e.html), un extrait d'un autre bon tutoriel sur le web sur Scheme\n- [Interpréteur Scheme en ligne](https://inst.eecs.berkeley.edu/~cs61a/fa14/assets/interpreter/scheme.html), un interpréteur Scheme mis sur le web par l'université de Berkeley. Pratique pour tester sans installer\n- [Why Scheme ?](https://www.shido.info/lisp/scheme1_e.html)\n- [Installation sur macOS: Homebrew Scheme](https://formulae.brew.sh/formula/mit-scheme), page d'intallation de Scheme sous macOS via le gestionnaire de paquets Homebrew\n- [Installation sur GNU/Linux](https://www.gnu.org/software/mit-scheme/), installation de Scheme sous GNU/Linux\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaul-schuhm%2Fscheme","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpaul-schuhm%2Fscheme","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaul-schuhm%2Fscheme/lists"}