# Programmation Scheme/Syntaxe de base

* Introduction
* Notions élémentaires
* Syntaxe de base
* Grammaire de base
* La boucle d'évaluation
* Variables globales et variables locales
* Récursivité
* Introduction
* Notions élémentaires
* Syntaxe de base
* Grammaire de base
* La boucle d'évaluation
* Variables globales et variables locales
* Récursivité
[ Modifier le sommaire ]
Un programme Scheme est fait de :
* mots-clefs,
* variables,
* formules structurées,
* constantes (nombres, caractères, chaînes, vecteurs, listes, symboles…),
* espaces, et
* commentaires.
Les variables, symboles et mots-clefs sont appelés « identifiants ».

## Identifiants

Un identifiant peut être composé des caractères suivants :
* lettres minuscules ou capitales ; Scheme n'est pas sensible à la casse pour les identifiants ;
* chiffres ;
* caractères : ? ! . + - * / < = > : $ % ^ & _ ~ @ ;
mais il ne peuvent pas commencer par un chiffre ni par un signe « @ », « . » « + » et « - ».
Les identifiants sont séparés par des espaces, des parenthèses ou des guillemets anglais « " ».

## Nombres

Un nombre est écrit de manière habituelle ; le séparateur décimal est le point. Pour les puissances de 10, on utilise le symbole e : 5·10$^3$ s'écrit 5e3. Les nombres rationnels peuvent être écrits comme des fractions, par exemple 1/3.
Les nombres complexes peuvent être écrits en notation « rectagulaire » (par exemple 1.2+3.4i) ou polaire (par exemple 1,2·e$^{i3,4}$ s'écrit 1.2@3.4). Un imaginaire pur a·i se note toujours 0+ai ; par exemple, i se note 0+1i.
Les valeurs booléennes sont notées #t pour « vrai » (true) et #f pour « faux » (false).

## Autres types

Les caractères seuls doivent être précédés d'un croisillon et d'une barre de fraction inversée « #\ », afin de les distinguer des identifiants. Une chaîne de caractères est simplement mise entre deux guillemets anglais « "…" ».
Un vecteur est introduit par un croisillon suivi d'une parenthèse ouvrante « #( », et se termine par une parenthèse fermante « ) ».
Les formules structurées et les listes de constantes sont mises entre parenthèses « (…) ». La liste vide est notée «  ».
Un commentaire est introduit par un point-virgule « ; » et se termine à la fin de la ligne. Il est d'usage d'utiliser plusieurs points-virgule pour indenter les commentaires, c'est-à-dire les décaler vers la droite et ainsi marquer la correspondance avec l'indentation du reste du code.

## Mots-clefs

Les mots-clefs — c'est-à-dire les noms des opérations primitives, des fonctions prédéfinies — sont des identifiants. Ils sont composés de manière systématique.
Les prédicats (renvoyant des valeurs booléennes) se terminent par un point d'interrogation (par exemple eq?). Les prédicats sur les types de variable sont composés du nom du type suivi du point d'interrogation.
La plupart des procédure s'appliquant aux caractères, chaînes de caractère et vecteurs commencent respectivement par char-, string- et vector-. Les procédures qui convertissent un type en un autre sont de la forme type1->type2.
Les procédures dont la fin a des « effets de bord » se terminent par un point d'exclamation « ! ».

## Références

* ↑ le croisillon « # » est souvent appelé à tort « dièse », mais le dièse est différent : « ♯ »
Notions élémentaires < ↑ > Grammaire de base