CLISP(1) Platform: x86_64-pc-linux-gnu CLISP(1) نام (NAME) clisp - کامپایلر، مفسر و اشکال‌زدای ANSI[38] Common Lisp[1]. خلاصه دستور (SYNOPSIS) clisp [[-h] | [--help]] [--version] [--license] [-help-image] [-B lisp-lib-dir] [-b] [-K linking-set] [-M mem-file] [-m memory-size] [-L language] [-N locale-dir] [-Edomain encoding] [[-q] | [--quiet] | [--silent] | [-v] | [--verbose]] [-on-error action] [-repl] [-w] [-I] [-disable-readline] [[-ansi] | [-traditional]] [-modern] [-p package] [-C] [-norc] [-lp directory...] [-i init-file...] [-c [-l] lisp-file [-o output-file]...] [-x expressions...] [lisp-file [argument...]] توضیحات (DESCRIPTION) مفسر و کامپایلر Common Lisp[1] را فراخوانی می‌کند. حالت تعاملی (Interactive Mode) هنگامی که بدون آرگومان‌های دسته‌ای (batch) فراخوانی شود، read-eval-print loop[2] (حلقه خواندن-ارزیابی-چاپ) را اجرا می‌کند که در آن عبارت‌ها به نوبت: • از ورودی استاندارد خوانده (READ[3]) شده، • توسط مفسر لیسپ ارزیابی (EVAL[4]) شده، • و نتایج آن‌ها به خروجی استاندارد چاپ (PRINT[5]) می‌شوند. حالت غیرتعاملی یا دسته‌ای (Non-Interactive (Batch) Mode) هنگام فراخوانی با -c، فایل‌های lisp مشخص‌شده را به یک بایت‌کد مستقل از سکو کامپایل می‌کند که با کارایی بالاتری قابل اجرا است. هنگام فراخوانی با -x، عبارت‌های lisp مشخص‌شده را اجرا می‌کند. هنگام فراخوانی با lisp-file، فایل lisp مشخص‌شده را اجرا می‌کند. حالت دسته‌ای گزینهٔ -q را فعال می‌کند. گزینه‌ها (OPTIONS) -h --help پیام راهنمایی دربارهٔ نحوهٔ فراخوانی CLISP[6] را نمایش می‌دهد. --version شماره نسخهٔ CLISP[6] را همان‌طور که توسط تابع LISP-IMPLEMENTATION-VERSION[7] ارائه می‌شود، به همراه مقدار متغیر *FEATURES* و برخی اطلاعات دیگر نمایش می‌دهد. --license خلاصه‌ای از اطلاعات مجوز، یعنی GNU[8] GPL[9] را نمایش می‌دهد. -help-image اطلاعاتی دربارهٔ ایمیج حافظه در حال فراخوانی نمایش می‌دهد: اینکه آیا برای اسکریپت‌نویسی مناسب است یا خیر، و همچنین مقدار :DOCUMENTATION ارائه‌شده به EXT:SAVEINITMEM را نمایش می‌دهد. -B lisp-lib-dir دایرکتوری نصب را مشخص می‌کند. این دایرکتوری حاوی مجموعه‌های پیوند (linking sets) و دیگر فایل‌های داده است. این گزینه معمولاً ضروری نیست، زیرا دایرکتوری نصب از پیش در فایل اجرایی clisp تعبیه شده است. دایرکتوری lisp-lib-dir می‌تواند به‌طور پویا با استفاده از SYMBOL-MACRO[10] CUSTOM:*LIB-DIRECTORY* تغییر یابد. -b دایرکتوری نصب را چاپ کرده و بلافاصله خارج می‌شود. رشتهٔ نام (namestring) متغیر CUSTOM:*LIB-DIRECTORY* بدون هیچ گیومه‌ای چاپ می‌شود. این گزینه بیشتر در Makefileهای ماژول کاربرد دارد؛ برای نمونه ببینید: modules/syscalls/Makefile.in (فایلی در سورس‌کدهای CLISP). -K linking-set مجموعهٔ پیوند (linking set) را برای اجرا مشخص می‌کند. این یک دایرکتوری (نسبت به lisp-lib-dir) است که دست‌کم شامل یک فایل اجرایی اصلی (زمان‌اجرا یا runtime) و یک ایمیج حافظه اولیه است. مقادیر ممکن عبارتند از: base هستهٔ اصلی CLISP[6] full هسته به همراه تمام ماژول‌هایی که این نسخه با آن‌ها ساخته شده است؛ بخش 32.2، “External Modules” را ببینید. مقدار پیش‌فرض base است. -M mem-file ایمیج حافظه اولیه را مشخص می‌کند. این باید یک حافظه‌گرفت (memory dump) تولیدشده توسط تابع EXT:SAVEINITMEM توسط همین زمان‌اجرای clisp باشد. این فایل ممکن است با استفاده از GNU[8] gzip[11] فشرده شده باشد. -m memory-size میزان حافظه‌ای را تعیین می‌کند که CLISP[6] در هنگام راه‌اندازی تلاش می‌کند دریافت کند. این مقدار ممکن است به صورت‌های زیر مشخص شود: n nB اندازه‌گیری‌شده بر حسب بایت n nW اندازه‌گیری بر حسب کلمه‌های ماشین (4×n روی سکوهای ۳۲-بیتی، 8×n روی سکوهای ۶۴-بیتی) nK nKB اندازه‌گیری بر حسب کیلوبایت nKW اندازه‌گیری بر حسب کیلوکلمه nM nMB اندازه‌گیری بر حسب مگابایت nMW اندازه‌گیری بر حسب مگاکلمه پیش‌فرض ۳ مگابایت است. مقدار آرگومان به بیشتر از 100 KB محدود شده است. این نسخه از CLISP[6] در نهایت از تمام memory-size استفاده می‌کند. -L language زبانی را مشخص می‌کند که CLISP[6] برای ارتباط با کاربر استفاده می‌کند. این مقدار می‌تواند یکی از گزینه‌های english، german، french، spanish، dutch، russian یا danish باشد. زبان‌های دیگر را می‌توان از طریق متغیر محیطی[12] LANG مشخص کرد، به شرطی که کاتالوگ پیام متناظر با آن نصب شده باشد. زبان می‌تواند به صورت پویا با استفاده از SYMBOL-MACRO[10] CUSTOM:*CURRENT-LANGUAGE* تغییر داده شود. -N locale-dir دایرکتوری پایه‌ی پرونده‌های محلی‌سازی (locale) را مشخص می‌کند. CLISP[6] کاتالوگ‌های پیام خود را در locale-dir/language/LC_MESSAGES/clisp.mo جستجو خواهد کرد. این دایرکتوری می‌تواند به صورت پویا با استفاده از SYMBOL-MACRO[10] CUSTOM:*CURRENT-LANGUAGE* تغییر کند. -Edomain encoding کدگذاری مورد استفاده برای دامنه‌ی مشخص‌شده را تعیین می‌کند و پیش‌فرضی را که وابسته به متغیرهای محیطی[12] LC_ALL، LC_CTYPE و LANG است بازنویسی (override) می‌نماید. domain می‌تواند موارد زیر باشد: file بر CUSTOM:*DEFAULT-FILE-ENCODING* اثر می‌گذارد pathname بر CUSTOM:*PATHNAME-ENCODING* اثر می‌گذارد terminal بر CUSTOM:*TERMINAL-ENCODING* اثر می‌گذارد foreign بر CUSTOM:*FOREIGN-ENCODING* اثر می‌گذارد misc بر CUSTOM:*MISC-ENCODING* اثر می‌گذارد blank بر تمام موارد بالا اثر می‌گذارد. هشدار توجه داشته باشید که مقادیر این SYMBOL-MACRO[10]ها که در یک تصویر حافظه (memory image) ذخیره شده‌اند نادیده گرفته می‌شوند: این SYMBOL-MACRO[10]ها پس از بارگذاری تصویر حافظه، بر اساس محیط سیستم‌عامل بازنشانی می‌شوند. برای تعیین آن‌ها در هنگام راه‌اندازی باید از فایل RC، CUSTOM:*INIT-HOOKS* یا تابع راه‌اندازی (init function) استفاده کنید، اما برای سازگاری با سایر برنامه‌ها بهتر است متغیرهای محیطی[12] یادشده را به درستی تنظیم نمایید. بخش 31.1، “سفارشی‌سازی راه‌اندازی و خاتمه فرایند CLISP” را ببینید. -q --quiet --silent -v --verbose تغییر سطح پرگویی (verbosity): به طور پیش‌فرض، CLISP[6] هنگام راه‌اندازی یک اعلان و هنگام خروج یک پیام خداحافظی نمایش می‌دهد، و متغیرهای *LOAD-VERBOSE*[13] و *COMPILE-VERBOSE*[14] را به T[15]، و متغیرهای *LOAD-PRINT*[13] و *COMPILE-PRINT*[14] را طبق [استاندارد ANSI CL] به NIL[16] مقداردهی اولیه می‌کند. اولین -q اعلان و پیام خداحافظی را حذف می‌کند، دومی متغیرهای *LOAD-VERBOSE*[13]، *COMPILE-VERBOSE*[14] و CUSTOM:*SAVEINITMEM-VERBOSE* را به NIL[16] تنظیم می‌نماید. اولین -v متغیرهای CUSTOM:*REPORT-ERROR-PRINT-BACKTRACE*، *LOAD-PRINT*[13] و *COMPILE-PRINT*[14] را به T[15] تنظیم می‌کند، و دومی CUSTOM:*LOAD-ECHO* را برابر با T[15] قرار می‌دهد. این تنظیمات بر خروجی تولیدشده توسط گزینه‌های -i و -c اثر می‌گذارند. توجه داشته باشید که این تنظیمات در حلقه خواندن-ارزیابی-چاپ (read-eval-print loop)[2] نیز باقی می‌مانند. تکرار -q و -v اثر یکدیگر را خنثی می‌کنند؛ برای نمونه، -q -q -v -v -v معادل با -v است. -on-error action برقراری گرداننده‌های سراسری خطا، بسته به action:.PP appease خطاهای ERROR[18] از نوع continuable[17] (قابل‌ادامه) به WARNING[19] تبدیل می‌شوند (با EXT:APPEASE-CERRORS) و سایر ERROR[18]ها به روش پیش‌فرض مدیریت می‌شوند debug خطاهای ERROR[18] دستور INVOKE-DEBUGGER[20] را فراخوانی می‌کنند (رفتار معمول read-eval-print loop[2])، و حالت دسته‌ای (batch mode) اعمال‌شده توسط -c، -x و lisp-file را غیرفعال می‌کند، abort خطاهای ERROR[18] از نوع continuable[17] فرونشانده می‌شوند، سایر ERROR[18]ها با EXT:ABORT-ON-ERROR لغو ( ABORT[21] ) می‌شوند exit خطاهای ERROR[18] از نوع continuable[17] فرونشانده می‌شوند، سایر ERROR[18]ها به اجرای CLISP[6] با EXT:EXIT-ON-ERROR پایان می‌دهند (رفتار معمول batch mode). همچنین نگاه کنید به EXT:SET-GLOBAL-HANDLER. -repl آغاز یک read-eval-print loop[2] تعاملی پس از پردازش گزینه‌های -c، -x و lisp-file و با بروز هر ERROR[18] که در حین این پردازش SIGNAL[22] شود. حالت دسته‌ای (batch mode) را غیرفعال می‌کند. -w پس از اتمام برنامه، منتظر فشرده شدن یک کلید می‌ماند. -I تعامل بهتر با Emacs[23] (هنگام اجرای CLISP[6] تحت Emacs[23] با استفاده از SLIME[24]، ILISP[25] و غیره کاربرد دارد). با این گزینه، CLISP[6] به‌گونه‌ای تعامل می‌کند که Emacs[23] بتواند آن را پردازش کند: • اعلان‌های (prompts) غیرضروری سرکوب نمی‌شوند. • کتابخانه GNU[8] readline[26] با TAB (کلید TAB را ببینید) مانند یک نویسه عادی درج‌شونده رفتار می‌کند (بخش Q: A.4.6 را ببینید). -disable-readline عدم استفاده از GNU[8] readline[26] حتی در حالتی که با آن پیوند خورده باشد (linked). این گزینه زمانی قابل استفاده است که بخواهید نویسه‌های غیر-ASCII[27] را الصاق کنید، یا زمانی که GNU[8] readline[26] به دلیل مشکلات نصب (نسخه‌های متفاوت روی ماشین‌های ساخت و نصب) یا پیکربندی (مقدار نادرست متغیر محیطی[12] TERM) رفتار نامناسبی از خود نشان دهد. -ansi پیروی از مشخصات [ANSI CL standard] حتی در مواردی که CLISP[6] به‌طور سنتی متفاوت بوده است، از طریق تنظیم SYMBOL-MACRO[10] CUSTOM:*ANSI* روی T[15]. -traditional سنتی: اثرات باقی‌مانده از -ansi را در تصویر حافظه (memory image) ذخیره‌شده برعکس می‌کند. -modern نمایی مدرن از نمادها ارائه می‌دهد: در زمان راه‌اندازی، متغیر *PACKAGE*[28] روی بسته “CS-COMMON-LISP-USER” تنظیم شده و *PRINT-CASE*[29] روی :DOWNCASE تنظیم خواهد شد. این امر موجب می‌شود که جستجوی نمادها حساس به حروف کوچک و بزرگ باشد (به‌جز کلمات کلیدی و بسته‌های سبک قدیمی) و کلمات کلیدی و نمادهای ثبت‌نشده با اولویت حروف کوچک چاپ شوند. بخش 11.5، “Package Case-Sensitivity” را ببینید. -p package در زمان راه‌اندازی، مقدار متغیر *PACKAGE*[28] روی بسته‌ای با نام package تنظیم خواهد شد. مقدار پیش‌فرض، مقدار *PACKAGE*[28] در زمان ذخیره تصویر حافظه است که معمولاً “COMMON-LISP-USER”[30] می‌باشد. -C کامپایل در زمان بارگذاری: در زمان راه‌اندازی، مقدار متغیر CUSTOM:*LOAD-COMPILING* روی T[15] تنظیم خواهد شد. سپس کدی که در حال LOAD[31] شدن است، بلافاصله و درجا (on the fly) COMPILE[32] می‌گردد. این امر به بارگذاری کندتر اما اجرای سریع‌تر منجر می‌شود. -norc به‌طور معمول CLISP[6] در هنگام راه‌اندازی، فایل “run control” (RC)[33] کاربر را بارگذاری می‌کند (این کار پس از پردازش گزینه -C انجام می‌شود). فایل بارگذاری‌شده، .clisprc.lisp یا .clisprc.fas در دایرکتوری خانگی USER-HOMEDIR-PATHNAME[34]، هر کدام که جدیدتر باشد خواهد بود. این گزینه، یعنی -norc، از بارگذاری فایل RC جلوگیری می‌کند. -lp directory دایرکتوری‌هایی را برای افزوده شدن به CUSTOM:*LOAD-PATHS* در زمان راه‌اندازی مشخص می‌کند. این کار بعد از بارگذاری RC file انجام می‌شود (تا گزینهٔ خط فرمان را بازنویسی نکند)، اما قبل از بارگذاری init-fileهای تعیین‌شده توسط گزینه‌های -i صورت می‌پذیرد (تا فایل‌های راه‌اندازی در دایرکتوری‌های مشخص‌شده جستجو شوند). می‌توان چندین گزینهٔ -lp را تعیین کرد؛ تمام دایرکتوری‌های مشخص‌شده اضافه خواهند شد. -i init-file فایل‌های راه‌اندازی را مشخص می‌کند تا در زمان راه‌اندازی LOAD[31] شوند. این فایل‌ها باید فایل‌های lisp (کد منبع یا کامپایل‌شده) باشند. می‌توان چندین گزینهٔ -i را مشخص کرد؛ تمام فایل‌های تعیین‌شده به ترتیب بارگذاری خواهند شد. -c lisp-file lisp-fileهای مشخص‌شده را به bytecode (*.fas) کامپایل می‌کند. فایل‌های کامپایل‌شده می‌توانند بعداً برای افزایش کارایی، به جای فایل‌های منبع LOAD[31] شوند. حالت دسته‌ای (batch mode) را تحمیل می‌کند. -o outputfile فایل یا دایرکتوری خروجی را برای کامپایل آخرین lisp-file مشخص‌شده تعیین می‌کند. -l یک فهرست دیس‌اسمبل از bytecode DISASSEMBLE[35] از فایل‌های در حال کامپایل (*.lis) تولید می‌کند. تنها برای اشکال‌زدایی مفید است. برای جزئیات، Section 24.1, “Function COMPILE-FILE” را ببینید. -x expressions به جای یک read-eval-print loop[2] مجموعه‌ای از عبارت‌های دلخواه را اجرا می‌کند. مقادیر این عبارت‌ها به *STANDARD-OUTPUT*[36] ارسال خواهند شد. به دلیل پردازش آرگومان‌ها توسط پوسته (shell)، expressions باید درون گیومه دوتایی (double quotes) قرار گیرند، و گیومه‌های دوتایی و بک‌اسلش‌ها باید با بک‌اسلش گریز (escape) داده شوند. حالت دسته‌ای (batch mode) را تحمیل می‌کند. lisp-file [ argument ... ] یک lisp-file را همان‌طور که در Section 32.6.2, “Scripting with CLISP” توضیح داده شده است، بارگذاری و اجرا می‌کند. هیچ read-eval-print loop[2] وجود نخواهد داشت. پیش از بارگذاری lisp-file، متغیر EXT:*ARGS* به فهرستی از رشته‌ها مقید می‌شود که نمایانگر argumentها هستند. خط اول lisp-file می‌تواند با #! شروع شود، بنابراین به CLISP[6] امکان می‌دهد تا به عنوان مفسر اسکریپت استفاده شود. اگر lisp-file برابر - باشد، به جای فایل از *STANDARD-INPUT*[36] استفاده می‌شود. اگر memory image توسط EXT:SAVEINITMEM با آرگومان :SCRIPT برابر با NIL[16] ایجاد شده باشد، این گزینه غیرفعال است. در این صورت LIST[37] EXT:*ARGS* با lisp-file آغاز می‌شود. این گزینه باید آخرین گزینه باشد. هیچ RC file اجرا نخواهد شد. حالت دسته‌ای (batch mode) را تحمیل می‌کند. طبق معمول، -- پردازش گزینه‌ها را متوقف کرده و تمام آرگومان‌های باقیمانده خط فرمان را در EXT:*ARGS* قرار می‌دهد. مرجع زبان (LANGUAGE REFERENCE) زبان پیاده‌سازی‌شده ANSI[39][38] Common Lisp[1] است. این پیاده‌سازی عمدتاً با استاندارد ANSI Common Lisp مطابقت دارد؛ Section 31.10, “Maximum ANSI CL compliance” را ببینید. [ANSI CL] ANSI CL standard1994. ANSI[40] INCITS 226-1994 (R1999) Information Technology - Programming Language - Common Lisp [formerly ANSI X3.226-1994 (R1999)]..SH "محیط کاربری خط فرمان (COMMAND LINE USER ENVIRONMENT)" help دریافت راهنمای برخط حساس به زمینه؛ Chapter 25, Environment chap-25 را ببینید. (APROPOS name) فهرست کردن SYMBOL[41]های منطبق با name. (DESCRIBE symbol) توصیف symbol. (exit) (quit) (bye) خروج از CLISP[6]. EOF (Control+D در UNIX[42]) خروج از سطح جاریِ read-eval-print loop[2] (همچنین ببینید: Section 1.1, “Special Symbols sec_1-4-1-3”). arrow keys برای ویرایش و مشاهده تاریخچه ورودی، با استفاده از کتابخانه GNU[8] readline[26]. TAB key وابسته به زمینه (Context sensitive): • اگر در “موقعیت تابع” باشید (در نخستین نماد پس از یک پرانتز باز، یا در نخستین نماد پس از یک #'[44])، تکمیل خودکار به نمادهایی که نام تابع هستند محدود می‌شود. • اگر در "موقعیت نام فایل" (درون یک رشته پس از #P[45]) باشید، تکمیل روی نام فایل‌ها و به شیوه GNU[8] bash[46] انجام می‌پذیرد. • اگر هنوز چیزی تایپ نکرده باشید، یک پیام راهنما دریافت خواهید کرد، درست مانند اجرای دستور help. • اگر هنوز تایپ نماد بعدی را آغاز نکرده باشید (یعنی در یک نویسه فاصله خالی باشید)، تابع یا ماکروی فعلی DESCRIBE می‌شود. • در غیر این صورت، نمادی که در حال حاضر تایپ می‌کنید تکمیل می‌شود. استفاده و گسترش CLISP (USING AND EXTENDING CLISP) Common Lisp[1] یک زبان برنامه‌نویسی برنامه‌پذیر است. —John Foderaro[47] هنگامی که CLISP[6] فراخوانی می‌شود، محیط زمان اجرا (runtime) ایمیج حافظه اولیه (initial memory image) را بارگذاری کرده و اعلان (prompt) را نمایش می‌دهد؛ جایی که در آن می‌توان نوشتن DEFVAR[48]ها، DEFUN[49]ها و DEFMACRO[50]ها را آغاز کرد. برای جلوگیری از نیاز به وارد کردن مجدد و دستی تعاریف یکسان در هر نشست، می‌توان یک فایل lisp شامل تمام متغیرها، توابع، ماکروها و غیره ایجاد کرد؛ (در صورت تمایل) آن را با COMPILE-FILE[51] کامپایل نمود؛ و با LOAD[31] آن را دستی یا از طریق فایل RC بارگذاری کرد؛ یا یک ایمیج حافظه را ذخیره کرد تا از سربار LOAD[31] جلوگیری شود. با این حال، گاهی لازم است از قابلیت‌های پیاده‌سازی‌شده در زبانی دیگر استفاده شود؛ مثلاً فراخوانی یک تابع از کتابخانه C[52]. برای این منظور، از امکانات «رابط توابع خارجی» (Foreign Function Interface) و/یا «ماژول‌های خارجی» (External Modules) استفاده می‌شود. در نهایت، افراد واقعاً ماجراجو می‌توانند به بخش «گسترش هسته» (Extending the Core) ورود کنند..SH "فایل‌ها (FILES)" clisp clisp.exe راه‌انداز آغازین (یک فایل اجرایی یا، به‌ندرت، یک اسکریپت پوسته) که مکان runtime را به خاطر می‌سپارد و آن را با آرگومان‌های مناسب آغاز می‌کند. lisp.run lisp.exe فایل اجرایی اصلی (runtime) - بخشی از CLISP[6] پیاده‌سازی‌شده در C[52]. lispinit.mem تصویر حافظه (memory image) اولیه (بخشی از CLISP[6] پیاده‌سازی‌شده در lisp) config.lisp پیکربندی وابسته به سایت (باید پیش از ساخت CLISP[6] سفارشی‌سازی شده باشد)؛ ببینید: بخش 31.12، “Customizing CLISP behavior” *.lisp کد منبع lisp *.fas کد lisp، کامپایل‌شده توسط CLISP[6] *.lib اطلاعات کتابخانه منبع lisp، تولیدشده توسط COMPILE-FILE، ببینید: بخش 24.3، “Function REQUIRE”. *.c کد C، کامپایل‌شده از کد منبع lisp توسط CLISP[6] (ببینید: بخش 32.3، “The Foreign Function Call Facility”) برای فایل‌های منبع CLISP[6]، ببینید: فصل 34، The source files of CLISP. محیط (ENVIRONMENT) همهٔ متغیرهای محیطی[12] که CLISP[6] استفاده می‌کند حداکثر یک‌بار خوانده می‌شوند. CLISP_LANGUAGE زبانی را مشخص می‌کند که CLISP[6] برای برقراری ارتباط با کاربر به کار می‌برد. مقادیر معتبر همانند مقادیر گزینهٔ -L است که می‌تواند برای بازنویسی این متغیر محیطی[12] استفاده شود. LC_CTYPE تنظیمات محلی (locale) را مشخص می‌کند که مجموعه نویسهٔ مورد استفاده را تعیین می‌نماید. مقدار می‌تواند به فرم language یا language_country یا language_country.charset باشد، که در آن language یک کد زبان دوحرفی ISO 639 (حروف کوچک) و country یک کد کشور دوحرفی ISO 3166 (حروف بزرگ) است. charset یک مشخصهٔ اختیاری مجموعه نویسه است و معمولاً نیازی به مشخص کردن آن نیست چون مجموعه نویسه را می‌توان از زبان و کشور استنتاج کرد. این متغیر محیطی[12] را می‌توان با گزینهٔ -Edomain encoding بازنویسی کرد. LANG زبانی را مشخص می‌کند که CLISP[6] برای ارتباط با کاربر استفاده می‌کند، مگر اینکه قبلاً از طریق متغیر محیطی[12] CLISP_LANGUAGE یا گزینهٔ -L مشخص شده باشد. همچنین تنظیمات محلی تعیین‌کنندهٔ مجموعه نویسهٔ مورد استفاده را مشخص می‌کند، مگر اینکه از قبل توسط متغیر محیطی[12] LC_CTYPE تعیین شده باشد. مقدار ممکن است با یک کد زبان دوحرفی ISO 639 آغاز شود، به عنوان مثال en، de، fr. HOME USER برای تعیین مقدار تابع USER-HOMEDIR-PATHNAME[34] استفاده می‌شود. SHELL COMSPEC برای یافتن مفسر دستور تعاملی فراخوانی‌شده توسط EXT:SHELL استفاده می‌شود. TERM اندازهٔ صفحه‌نمایش قابل تشخیص توسط pretty printer را تعیین می‌کند. ORGANIZATION برای SHORT-SITE-NAME[53] و LONG-SITE-NAME[53] در config.lisp. CLHSROOT برای CUSTOM:CLHS-ROOT در config.lisp. IMPNOTES برای CUSTOM:IMPNOTES-ROOT در config.lisp. EDITOR برای editor-name در config.lisp. LOGICAL_HOST_host_FROM LOGICAL_HOST_host_TO LOGICAL_HOST_host برای CUSTOM:*LOAD-LOGICAL-PATHNAME-TRANSLATIONS-DATABASE* بخش 21.1.1، “Initialization of Standard Streams” را ببینید. همچنین ببینید (SEE ALSO) CLISP impnotes clisp-link(1) CMU CL[54] - cmucl(1) SBCL[55] - sbcl(1) Emacs[23] - emacs(1) گزارش باگ‌ها (BUGS) هنگامی که با باگی در CLISP[6] یا در مستندات آن (این صفحه راهنما یا CLISP impnotes) مواجه شدید، لطفاً آن را به SourceForge bug tracker[56] مربوط به CLISP[6] گزارش دهید. یا به حساب کاربری خود در SourceForge[57] یا به حساب OpenID[58] خود وارد شوید. سپس روی پیوند "Create Ticket" در سمت چپ کلیک کنید. پیش از ارسال گزارش باگ، لطفاً مراحل ابتدایی زیر را برای مفیدتر شدن گزارش انجام دهید: 1. مگر در مواردی که باگ شما وابسته به محلی‌سازی (locale) خاصی باشد، لطفاً locale خود را روی en تنظیم کنید. شما نمی‌توانید فرض کنید که نگه‌دارندگان CLISP[6] زبانی غیر از English[59] را متوجه می‌شوند، حتی با اینکه از نظر تاریخی، نگه‌دارندگان اندکی از CLISP[6] زبان مادری‌شان انگلیسی بوده است. 2. یک ساخت پاکیزه (clean build) انجام دهید (دایرکتوری ساخت خود را حذف کرده و CLISP[6] را با ./configure --cbcx build بسازید، یا دست‌کم پیش از make دستور make distclean را اجرا کنید). 3. اگر یک “فروپاشی سخت (hard crash)” (مانند segmentation fault، bus error، core dump و غیره) را گزارش می‌کنید، لطفاً دستور ./configure --with-debug --cbcx build-g ; cd build-g; gdb lisp.run را اجرا کرده، سپس مجموعه پیونددهی (linking set) مناسب را با دستور base یا full در gdb[60] بارگذاری کنید، و ردگیری پشته (backtrace) را گزارش دهید (همچنین ببینید Q: A.1.1.10). 4. اگر از باینری‌های پیش‌ساخته استفاده می‌کنید و دچار یک فروپاشی سخت می‌شوید، مشکل احتمالاً ناشی از ناسازگاری‌های میان پلتفرمی است که باینری روی آن ساخته شده با پلتفرم شما؛ لطفاً سورس‌ها را کامپایل کنید و اگر مشکل همچنان پابرجا بود آن را گزارش دهید. هنگام ارسال گزارش باگ، لطفاً اطلاعات زیر را مشخص کنید: 1. پلتفرم شما چیست (uname -a روی یک سیستم UNIX[42])\[u061F] 2. لطفاً خروجی کامل (کپی و پیست شده) تمامی پیام‌های خطا را ارائه دهید. 3. لطفاً دستورالعمل‌های دقیقی درباره نحوه بازتولید مشکل ارائه دهید. 4. سورس‌ها یا باینری‌های CLISP[6] را از کجا دریافت کرده‌اید؟ چه زمانی؟ (تاریخ‌های مطلق، مانند “2006-01-17”، نسبت به تاریخ‌های نسبی، مانند “2 days ago” ترجیح داده می‌شوند. اگر از Git[61] استفاده می‌کنید، لطفاً خروجی git rev-list --max-count=1 HEAD را ارائه دهید). 5. اگر شکست در ساخت را گزارش می‌کنید: 1. نسخه کامپایلر شما چیست؟ 2. نسخه GNU[8] libc[62] شما (روی GNU[8]/Linux[63]) چیست؟ 3. نسخه هر یک از DEPENDENCIES (فایل موجود در کدهای منبع CLISP) چیست؟ 4. چگونه configure (فایل موجود در کدهای منبع CLISP) را اجرا کردید؟ ما به گزینه‌هایی که استفاده کرده‌اید و همچنین مقادیر متغیرهای محیطی[12] زیر نیاز داریم: CC CFLAGS CPPFLAGS LDFLAFS LD_LIBRARY_PATH . 5. لطفاً تمام گزارش‌های ساخت (build logs) را ضمیمه کنید. 6. اگر یک نسخهٔ در حال کار از CLISP[6] دارید، لطفاً خروجی clisp --version را ارائه دهید. پروژه‌ها (PROJECTS) • بهبود کامپایلر به‌گونه‌ای که بتواند توابع محلی را درون‌خطی (inline) کند. • تعبیهٔ CLISP[6] در VIM[64]. نویسندگان (AUTHORS) Bruno Haible نویسنده اصلی و نگه‌دارنده دیرینه. Michael Stoll نویسنده اصلی. Sam Steingold هم‌نگه‌دارنده از سال 1998. Others برای مشاهده فهرست سایر مشارکت‌کنندگان و مجوز، COPYRIGHT (فایل موجود در کدهای منبع CLISP) را ببینید. کپی‌رایت و تکثیر (COPYRIGHT) Copyright © 1992-2010 Bruno Haible Copyright © 1998-2010 Sam Steingold نکات (NOTES) 1. Common Lisp https://common-lisp.net 2. read-eval-print loop [set $man.base.url.for.relative.links]/sec_25-1-1 3. READ http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_readcm_re_g- whitespace.html 4. EVAL http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_eval.html 5. PRINT http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_writecm_p_rintcm_princ.html 6. CLISP http://clisp.org 7. LISP-IMPLEMENTATION-VERSION http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_lisp- impl_tion-version.html 8. GNU https://www.gnu.org 9. GPL https://www.gnu.org/copyleft/gpl.html 10. SYMBOL-MACRO [set $man.base.url.for.relative.links]/mac_define-symbol-macro 11. gzip http://www.gzip.org 12. environment variable [set $man.base.url.for.relative.links]/basedefs/V1_chap08.html 13. *LOAD-VERBOSE* http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/var_stload- pr_ad-verbosest.html 14. *COMPILE-VERBOSE* http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/var_stcompile_le- verbosest.html 15. T http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/convar_t.html 16. NIL http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/convar_nil.html 17. continuable [set $man.base.url.for.relative.links]/clhs/glo 18. ERROR http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/contyp_error.html WARNING http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/contyp_warning.html 20. INVOKE-DEBUGGER http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_invoke- debugger.html 21. ABORT http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_abortcm_c_cm_use- value.html 22. SIGNAL http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_signal.html 23. Emacs https://www.gnu.org/software/emacs 24. SLIME https://common-lisp.net/project/slime 25. ILISP https://sourceforge.net/projects/ilisp 26. readline http://tiswww.case.edu/php/chet/readline/readline.html 27. ASCII https://en.wikipedia.org/wiki/ASCII 28. *PACKAGE* http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/var_stpackagest.html 29. *PRINT-CASE* http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/var_stprint- casest.html 30. “COMMON-LISP-USER” [set $man.base.url.for.relative.links]/sec_11-1-2-2 31. LOAD http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_load.html 32. COMPILE http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_compile.html 33. “run control” (RC) http://www.faqs.org/docs/artu/ch10s03.html 34. USER-HOMEDIR-PATHNAME http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_user- homedir-pathname.html 35. DISASSEMBLE http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_disassemble.html 36. *STANDARD-OUTPUT* http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/var_stdebug- i_ace-outputst.html 37. LIST http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/syscla_list.html 38. ANSI https://www.ansi.org 39. مؤسسه ملی استاندارد آمریکا 40. ANSI https://webstore.ansi.org 41. SYMBOL http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/syscla_symbol.html 42. UNIX http://www.unix.org/online.html 43. Win32 https://winehq.org 44. #' [set $man.base.url.for.relative.links]/sec_2-4-8-2 45. #P [set $man.base.url.for.relative.links]/sec_2-4-8-14 46. bash https://www.gnu.org/software/bash 47. جان فودرارو (John Foderaro) http://www.franz.com/~jkf 48. DEFVAR http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/mac_defparametercm_defvar.html 49. DEFUN http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/mac_defun.html 50. DEFMACRO http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/mac_defmacro.html 51. COMPILE-FILE http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_compile- file.html 52. C http://c-faq.com 53. SHORT-SITE-NAME http://www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/Body/fun_short- sit_ng-site-name.html 54. CMU CL https://www.cons.org/cmucl 55. SBCL http://www.sbcl.org 56. ردیاب باگ SourceForge https://sourceforge.net/p/clisp/bugs 57. SourceForge https://sourceforge.net 58. OpenID http://openid.net 59. انگلیسی http://www.catb.org/esr/faqs/hacker-howto.html#skills4 gdb https://www.sourceware.org/gdb 61. Git https://git-scm.com 62. libc https://www.gnu.org/software/libc 63. Linux https://www.kernel.org 64. VIM https://www.vim.org CLISP 2.49.93+ Last modified: 2020-06-22 CLISP(1)