Scheme
Այս հոդվածն աղբյուրների կարիք ունի։ Դուք կարող եք բարելավել հոդվածը՝ գտնելով բերված տեղեկությունների հաստատումը վստահելի աղբյուրներում և ավելացնելով դրանց հղումները հոդվածին։ Անհիմն հղումները ենթակա են հեռացման։ |
Scheme՝ ֆունկցիոնալ ծրագրավորման լեզու է։ Ծրագրավորման LISP լեզուների ընտանիքի ամենահայտնի ն��րկայացուցիչներից մեկը։ Ստեղծվել է Մասաչուսեթսի տեխնոլոգիական ինստիտուտում Գ․ Սթիլի (G․ L. Steele) և Ջ․ Սասմենի (G․ Sussman) կողմից, 1970-ականների կեսերին։
Տեսակ | ծրագրավորման լեզու, բազմահարացուցային ծրագրավորման լեզու, ֆունկցիոնալ ծրագրավորման լեզու, ծրագրավորման պրոցեդուրային լեզու և metaprogramming language? |
---|---|
Սեմանտիկա | ֆունկցիոնալ |
Կատարման ձև | ինտերպրետացիա և կոմպիլյացիա |
Առաջացել է | 1975 թ․ |
Ստեղծող | Գ․ Սթիլ, Ջ․ Սասմեն |
Նախագծող | Guy L. Steele? և Ջերալդ Ջեյ Սուսման |
Ընդլայնումներ | .scm և .ss |
Տիպիզացիա | դինամիկ |
Ներշնչվել է | LISP |
Ներշնչել է | Common Lisp, Racket |
Կայք | scheme-reports.org(անգլ.) |
Scheme (programming language) Վիքիպահեստում |
Շարահյուսություն
խմբագրել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)))