«Common Lisp»–ի խմբագրումների տարբերություն

Content deleted Content added
չNo edit summary
չ Bot: Replace deprecated <source> tag and "enclose" parameter [https://lists.wikimedia.org/pipermail/wikitech-ambassadors/2020-April/002284.html]
 
Տող 5.
Հանդիսանալով Lisp ծրագրավորման լեզվի դիալեկտ՝ Common Lisp լեզվում նույնպես ծրագրերի ու տվյալների ներկայացման համար օգտագործում են S-արտահայտությունները (S-expressions)։ Ֆունկցիաների, մակրոսների ու հատուկ կառուցվածքների կիրառությունները ներկայացվում են որպես «<tt>(</tt>» և «<tt>)</tt>» փակագծերի մեջ առնված ցուցակներ։ Օրինակ, <tt>r</tt> շառավղով շրջանի մակերեսը հաշվող ֆուկցիայի սահմանումն ունի հետևյալ տեսքը․
 
<sourcesyntaxhighlight lang="lisp">
(defun area (r)
(* pi r r))
</syntaxhighlight>
</source>
 
որտեղ <tt>defun</tt>-ը նոր գլոբալ ֆունկցիա սահմանող մակրոսն է, իսկ «<tt>*</tt>»-ը՝ բազմապատկման ֆունկցիան։
Տող 15.
Անանուն ֆունկցիաները ստեղծվում են <tt>lambda</tt> մակրոսով։ <tt>lambda</tt> բառին հետևում են ֆունկցիայի արգումենտների ցուցակը և մարմինը ձևավորող արտահայտությունները։ Օրինակ, ''a'' և ''b'' կողերով ուղղանկյուն եռանկյան ներքնաձիգը հաշվող ֆունկցիան կարելի է սահմանել հետևյալ կերպ․
 
<sourcesyntaxhighlight lang="lisp">
(lambda (a b) (sqrt (* a a) (* b b)))
</syntaxhighlight>
</source>
 
=== Լոկալ ֆունկցիաներ ===
Տող 25.
Դինամիկ փոփոխականները սահամնվում են <code>defvar</code> և <code>defparameter</code> մակրոսներով, իսկ հաստատունները՝ <code>defconstant</code> մակրոսով։ Օրինակ, ստորև սահմանված են <code>*first-variable*</code>, <code>*second-variable*</code> դինամիկ փոփոխականները և <code>+one-constant+</code> հաստատունը․
 
<sourcesyntaxhighlight lang="lisp">
(defvar *first-variable* nil)
(defparameter *second-variable* 777)
(defconstant +one-constant+ "String literal")
</syntaxhighlight>
</source>
 
ըստ ընդունված պայմանավորվածության Common Lisp ծրագրերում հայտարարված դինամիկ փոփոխականների անունները սկսվում և ավարտվում են «<tt>*</tt>» նիշով, իսկ հաստատունների անունները՝ «<tt>+</tt>» նիշով։
Տող 36.
Լոկալ (լեքսիկական) փոփոխականները ստեղծվում են <code>let</code> և <code>let*</code> կառուցվածքների մարմնում։ Օրինակ, հետևյալ արտահայտության մեջ ստեղծված են <code>v0</code>, <code>v1</code>, <code>v2</code> և <code>v3</code> լոկալ փոփոխականները, որոնցից առաջին երեքին արժեք է տրված, իսկ չորրորդին՝ ոչ (վերինն ընդունում է <code>nil</code> արժեքը)։
 
<sourcesyntaxhighlight lang="lisp">
(let ((v0 1)
(v1 "abc")
Տող 43.
#| ... |#
)
</syntaxhighlight>
</source>
 
<code>let</code> կառուցվածքը և <code>let*</code> կառուցվածքից տարբերվում է նրանով, որ առաջինում փոփոխականներն արժեքներ վերագրումը կատարվում է զուգահեռաբար՝ միմյանցից անկախ, իրկ երկրորդ դեպքում՝ հաջորդաբար։ <code>let*</code> կառուցվածքի ամեն մի փոփոխականը կարող է օգտագործել իր նախորդի արժեքը։ Օրինակ,
 
<sourcesyntaxhighlight lang="lisp">
(let* ((v0 2)
(v1 (* v0 3))
Տող 53.
#| ... |#
)
</syntaxhighlight>
</source>
 
== Մակրոսներ ==
Ստացված է «https://hy.wikipedia.org/wiki/Common_Lisp» էջից