«Common Lisp»–ի խմբագրումների տարբերություն
Content deleted Content added
չNo edit summary |
No edit summary |
||
Տող 21.
=== Լոկալ ֆունկցիաներ ===
Ֆունկցիայի մարմնում լոկալ ֆունկցիան սահմանվում է <code>labels</code> և <code>flet</code> կառուցվածքներով։ <code>labels</code>-ի օգնությամբ սահմանված ֆունկցիաները տեսանելի են միմյանց համար և կարող են պարունակել ռեկուրսիա կամ փոխադարձ ռեկուրսիա։ <code>flet</code> կառուցվածքի օգնությամբ սահմանված լոկալ ֆունկցիաները իրարից անկախ են։
== Հաստատուններ և փոփոխականներ ==
Տող 35 ⟶ 37՝
=== Լոկալ փոփոխականներ ===
Լոկալ (լեքսիկական) փոփոխականները ստեղծվում են <code>let</code> և <code>let*</code> կառուցվածքների մարմնում։ Օրինակ, հետևյալ արտահայտության մեջ ստեղծված են <code>v0</code>, <code>v1</code>, <code>v2</code> և <code>v3</code> լոկալ փոփոխականները, որոնցից առաջին երեքին արժեք է տրված, իսկ չորրորդին՝ ոչ (վերինն ընդունում է <code>nil</code> արժեքը)։
<source lang="lisp">
(let ((v0 1)
(v1 "abc")
(v2 '(x y))
v3)
#| ... |#
)
</source>
<code>let</code> կառուցվածքը և <code>let*</code> կառուցվածքից տարբերվում է նրանով, որ առաջինում փոփոխականներն արժեքներ վերագրումը կատարվում է զուգահեռաբար՝ միմյանցից անկախ, իրկ երկրորդ դեպքում՝ հաջորդաբար։ <code>let*</code> կառուցվածքի ամեն մի փոփոխականը կարող է օգտագործել իր նախորդի արժեքը։ Օրինակ,
<source lang="lisp">
(let* ((v0 2)
(v1 (* v0 3))
(v2 (+ v1 777))
#| ... |#
)
</source>
== Մակրոսներ ==
Common Lisp լեզվի մակրոսների մեխանիզմը լեզվի ընդլայնման հիմնական եղանակն է։ Այն հնարավորություն է լեզուն հարստացնել նոր գործողություններով։ տալիս Մակրոսները սահմանվում են <code>defmacro</code> մակրոսով։
== Ստրուկտուրաներ ==
|