تابع cons ( با تلفظ /ˈkɒnz/ یا /ˈkɒns/ ) در برنامه نویسی رایانه ای، یک تابع بنیادین در بیشتر گویش های زبان برنامه نویسی لیسپ است. لغت cons از واژه construct گرفته شده است و اشیای حافظه ای را می سازد که «دو» "مقدار" یا "اشاره گر به مقدار" را نگهداری می کند. به این اشیاء، سلول cons یا conses یا عبارت - s غیراتمی ( "NATSes" ) یا زوج cons گفته می شود. در اصطلاحات فنی لیسپ، عبارت "to cons x onto y" به معنی ساخت یک شیء جدید با دستور ( cons x y ) است. جفت به دست آمده یک نیمه سمت چپ دارد که به آن car گفته می شود ( عنصر اول، یا محتوای قسمت آدرس ثبات ) و نیز یک نیمه سمت راست دارد ( عنصر دوم، یا محتوای قسمت کاهشی ثبات ) که به آن cdrگفته می شود.
این مفهوم به صورت سست به مفهوم شیءگرای سازنده مرتبط است، که در آن یک شیء جدید را پس از فرستادن آرگومان ها می سازد، و به صورت نزدیکتر با تابع سازنده یک سامانه نوع داده جبری مرتبط است.
واژه "cons" و عباراتی مثل "to cons onto" به صورت عام، بخشی از اصطلاحات فنی برنامه نویسی تابعی است. بعضی اوقات عملگرهایی که هدف مشابهی دارند، مخصوصاً در زمینه «پردازش لیست» هم "cons" خوانده می شوند. ( یک مثال خوب در این زمینه عملگر «::» است که در ML، Scala, F#، و Elm وجود دارد یا عملگر «:» در Haskell است که یک عنصر را به ابتدای یک لیست اضافه می کند ) .
اگرچه سلول های cons برای نگهداری زوج های مرتب داده استفاده می شوند، اما معمولاً از آن ها برای ساخت ساختمان داده های مرکب پیچیده استفاده می شود، به ویژه برای فهرست و درخت دودویی.
برای مثال، عبارت لیسپ ( cons 1 2 ) یک سلول جدید را می سازد، که عدد ۱ را در نیمه سمت چپ نگهداری می کند ( به اصطلاح میدان car ) و عدد ۲ را در نیمه سمت راست ( میدان cdr ) نگهداری می کند. در نمادسازی لیسپ، مقدار ( cons 1 2 ) به این صورت است:
( ۱. ۲ )
به نقطه بین ۱ و ۲ توجه کنید؛ این نقطه نشان دهنده آن است که عبارت - S یک «جفت نقطه دار» ( به اصطلاح "cons pair" ) ، و نه یک "لیست" است.
( cons 42 ( cons 69 ( cons 613 nil ) ) ) و با list اینگونه نوشته می شود: ( list 42 69 613 ) در لیسپ، لیست ها روی زوج های cons پیاده سازی می شوند. به صورت بخصوص، هر ساختار فهرست در لیسپ،
• یا لیست خالی ( ) است، که یک شیء خاص است که معمولاً به آن nil گفته می شود.
• یا یک سلول cons است که در آن car اولین عنصر لیست است، و cdr خودش یک لیست است که شامل مابقی عناصر است.
این نوشته برگرفته از سایت ویکی پدیا می باشد، اگر نادرست یا توهین آمیز است، لطفا گزارش دهید: گزارش تخلفاین مفهوم به صورت سست به مفهوم شیءگرای سازنده مرتبط است، که در آن یک شیء جدید را پس از فرستادن آرگومان ها می سازد، و به صورت نزدیکتر با تابع سازنده یک سامانه نوع داده جبری مرتبط است.
واژه "cons" و عباراتی مثل "to cons onto" به صورت عام، بخشی از اصطلاحات فنی برنامه نویسی تابعی است. بعضی اوقات عملگرهایی که هدف مشابهی دارند، مخصوصاً در زمینه «پردازش لیست» هم "cons" خوانده می شوند. ( یک مثال خوب در این زمینه عملگر «::» است که در ML، Scala, F#، و Elm وجود دارد یا عملگر «:» در Haskell است که یک عنصر را به ابتدای یک لیست اضافه می کند ) .
اگرچه سلول های cons برای نگهداری زوج های مرتب داده استفاده می شوند، اما معمولاً از آن ها برای ساخت ساختمان داده های مرکب پیچیده استفاده می شود، به ویژه برای فهرست و درخت دودویی.
برای مثال، عبارت لیسپ ( cons 1 2 ) یک سلول جدید را می سازد، که عدد ۱ را در نیمه سمت چپ نگهداری می کند ( به اصطلاح میدان car ) و عدد ۲ را در نیمه سمت راست ( میدان cdr ) نگهداری می کند. در نمادسازی لیسپ، مقدار ( cons 1 2 ) به این صورت است:
( ۱. ۲ )
به نقطه بین ۱ و ۲ توجه کنید؛ این نقطه نشان دهنده آن است که عبارت - S یک «جفت نقطه دار» ( به اصطلاح "cons pair" ) ، و نه یک "لیست" است.
( cons 42 ( cons 69 ( cons 613 nil ) ) ) و با list اینگونه نوشته می شود: ( list 42 69 613 ) در لیسپ، لیست ها روی زوج های cons پیاده سازی می شوند. به صورت بخصوص، هر ساختار فهرست در لیسپ،
• یا لیست خالی ( ) است، که یک شیء خاص است که معمولاً به آن nil گفته می شود.
• یا یک سلول cons است که در آن car اولین عنصر لیست است، و cdr خودش یک لیست است که شامل مابقی عناصر است.
wiki: تابع cons