Common Lisp
Common Lisp (CL), բազմանպատակ ծրագրավորման լեզու, որը հնարավորություն է տալիս ծրագրավորել պրոցեդուրային, ֆունկցիոնալ և օբյեկտներին կողմնորոշված մոտեցումներով։ Մշակվել և ստանդարտացվել է ANSI X3J13 կոմիտեի կողմից։ Common Lisp-ը տիպերի դինամիկ ստուգմամբ խիստ տիպիզացված լեզու է։ ՖունկցիաներՀանդիսանալով Lisp ծրագրավորման լեզվի դիալեկտ՝ Common Lisp լեզվում նույնպես ծրագրերի ու տվյալների ներկայացման համար օգտագործում են S-արտահայտությունները (S-expressions)։ Ֆունկցիաների, մակրոսների ու հատուկ կառուցվածքների կիրառությունները ներկայացվում են որպես «(» և «)» փակագծերի մեջ առնված ցուցակներ։ Օրինակ, r շառավղով շրջանի մակերեսը հաշվող ֆուկցիայի սահմանումն ունի հետևյալ տեսքը․ (defun area (r)
(* pi r r))
որտեղ defun-ը նոր գլոբալ ֆունկցիա սահմանող մակրոսն է, իսկ «*»-ը՝ բազմապատկման ֆունկցիան։ Անանուն ֆունկցիաներԱնանուն ֆունկցիաները ստեղծվում են lambda մակրոսով։ lambda բառին հետևում են ֆունկցիայի արգումենտների ցուցակը և մարմինը ձևավորող արտահայտությունները։ Օրինակ, a և b կողերով ուղղանկյուն եռանկյան ներքնաձիգը հաշվող ֆունկցիան կարելի է սահմանել հետևյալ կերպ․ (lambda (a b) (sqrt (* a a) (* b b)))
Լոկալ ֆունկցիաներՖունկցիայի մարմնում լոկալ ֆունկցիան սահմանվում է Հաստատուններ և փոփոխականներԴինամիկ փոփոխականները սահամնվում են (defvar *first-variable* nil)
(defparameter *second-variable* 777)
(defconstant +one-constant+ "String literal")
ըստ ընդունված պայմանավորվածության Common Lisp ծրագրերում հայտարարված դինամիկ փոփոխականների անունները սկսվում և ավարտվում են «*» նիշով, իսկ հաստատունների անունները՝ «+» նիշով։ Լոկալ փոփոխականներԼոկալ (լեքսիկական) փոփոխականները ստեղծվում են (let ((v0 1)
(v1 "abc")
(v2 '(x y))
v3)
#| ... |#
)
(let* ((v0 2)
(v1 (* v0 3))
(v2 (+ v1 777))
#| ... |#
)
ՄակրոսներCommon Lisp լեզվի մակրոսների մեխանիզմը լեզվի ընդլայնման հիմնական եղանակն է։ Այն հնարավորություն է տալիս լեզուն հարստացնել նոր գործողություններով։ Մակրոսները սահմանվում են ՍտրուկտուրաներՍտրուկտուրաները սահմանվում են defstruct մակրոսով։ Այդ մակրոսի առաջին արգումենտը ստրուկտուրայի անունն է, իսկ հաջորդները՝ դաշտերը (slots)։ Ստրուկտուրայի ամեն մի դաշտի համար կարելի է տալ լռելության արժեք, տիպ և նշել, որ տվյալ դաշտն առաջին անգամ արժեքավորվելուց հետո չի կարող փոխել արժեքը («read only» է)։ Ծանոթագրություններ
|