**Scheme**՝ ֆունկցիոնալ ծրագրավորման լեզու է։ Ծրագրավորման LISP լեզուների ընտանիքի ամենահայտնի ներկայացուցիչներից մեկը։ Ստեղծվել է Մասաչուսեթսի տեխնոլոգիական ինստիտուտում Գ․ Սթիլի (G․ L. Steele) և Ջ․ Սասմենի (G․ Sussman) կողմից, 1970-ականների կեսերին։

Շարահյուսությունը
-----------------

Scheme լեզուն ստեղծելիս հեղինակները հիմնական շեշտադրումը կատարել են լեզվի պարզության և մինիմալիստության վրա։ Լեզուն իր շարահյուսությունն ուղղակիորեն ժառանգել է դասական LISP լեզվից։ Ծրագրերը և տվյալները ներկայացվում են S-արտահայտություններով (S-expression)՝ կլոր փակագծերի մեջ վերցրած ցուցակներով, որոնց առաջին տարրը գործողությունն է (oeprator), իսկ հաջորդները, եթե այդպիսիք առկա են, գործողության արգումենտները։ Օրինակ, հետևյալ արտահայտության մեջ, `equal?`-ը օբյեկտների հավասարությունը ստուգող գործողությունն է, իսկ `3.14` և `pi` սիմվոլները՝ նրա արգումենտները․

```
(equal? 3.14 pi)

```

Ֆունկցիայի սահմանումը
---------------------

Scheme լեզվում ֆունկցիան կարելի է փոխանցել որպես մեկ այլ ֆունկցիայի արգումենտ կամ ֆունկցիան կարելի է վերադարձնել որպես հաշվարկման արժեք (այս դեպքում ընդունված է ասել, որ *ֆունկցիան առաջին դասի օբյեկտ է*)։ Ֆունկցիաները սահմանվում են `define` օպերատորով։ Սրա առաջին արգումենտը մի ցուցակ է, որը պարունակում է սահմանվող ֆունկցիայի անունն ու պարամետրերը, իսկ հաջորդ արգումենտնրը կազմում են ֆունկցիայի մարմինը։ Օրինակ, հայտնի «Hello, world!» ծրագիրը Scheme լեզվով կունենա այսպիսի տեսք․

```
(define (hello)
 (display "Hello, world!")
 (newline))

```

### Անանուն ֆունկցիա

Անանուն ֆունկցիաները սահմանվում են `lambda` օպերատորով։ `lambda`-ի առաջին արգումենտը ֆունկցիայի պարամետրերի ցուցակն է, իսկ հաջորդները՝ ֆունկցիայի մարմինը կազմող արտահայտությունները։ Օրինակ, ֆունկցիան, որը ողջունում է տրված անունով մարդուն, սահմանվում է հետևյալ կերպ․

```
(lambda (name)
 (display "Hello, ")
 (display name)
 (newline))

```

Քանի որ ֆունկցիան առաջին դասի օբյեկտ է, `lambda`֊ի միջոցով սահմանված անանուն ֆունկցիան կարելի է `define` օպերատորով կապել որևէ սիմվոլի և ստանալ անվանված ֆունկցիա։ Այսպես․

```
(define hello-you
 (lambda (name)
 (display "Hello, ")
 (display name)
 (newline)))

```

|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

| * դ
* ք
* խ
Հիմնական ծրագրավորման լեզուները (համեմատումը  • IDE  • պատմությունը  • ժամանակագրութունը) |
| --- |
|  |
| Օգտագործվողլեզուները | 
Ada •
APL •
Ասեմբլեր •
ActionScript •
ABAP/4 •
AutoIt •
AWK •
Basic •
C •
Կոբոլ •
C++ •
C# •
Cω •
Clarion •
Clojure •
ColdFusion •
Common Lisp •
D •
dBase •
Delphi •
Eiffel •
Erlang •
Euphoria •
F# •
Fort •
Fortran •
Gambas •
Go •
Groovy •
HAL/S •
Haskell •
Icon •
Ջավա •
ՋավաՍկրիպտ •
Limbo •
Lua •
Mudula-3 •
Object Pascal •
Objective-C •
OCaml •
Oz •
Parser •
Pascal •
Perl •
PHP •
PowerBASIC •
Python •
PL/1 •
Prolog •
R •
Ruby •
Scala •
Scheme •
Smalltalk •
SQL •
Standard ML •
PL/SQL •
Tcl •
Vala •
Visual Basic
(.NET)
 |
|  |
| Ուսումնական | 
Agda •
Clean •
Curry •
Լոգո •
ML •
REFAL •
Simula •
Օբերոն
 |
|  |
| IEC 61131-3 | 
Instruction List •
ST •
FBD •
Ladder Diagram (LD) •
SFC
 |
|  |
| Այլ | 
Modula-2 •
Miranda •
Hope •
Rexx
 |
|  |
| Էզոտերիկ | 
HQ9+/HQ9++ •
INTERCAL •
Brainfuck •
Brainfork •
Befunge •
Malbolge •
Piet •
Spoon •
Unlambda •
Whitespace •
FALSE •
LOLCODE
 |
|  |
| Վիզուալ | 
G
(LabVIEW) •
Microsoft VPL •
Sikuli •
VisSim •
Scratch
 |

 |