.TH JANET 1 .SH "نام (NAME)" janet \- مفسر و محیط اجرای زبان برنامه‌نویسی تابعی Janet .SH "خلاصه دستور (SYNOPSIS)" .B janet [\fB\-hvsrpnqik\fR] [\fB\-e\fR \fIکد_منبع\fR] [\fB\-E\fR \fIکد_منبع ...آرگومان‌ها\fR] [\fB\-l\fR \fIماژول\fR] [\fB\-m\fR \fIمسیر\fR] [\fB\-c\fR \fIماژول ایمیج\fR] [\fB\-w\fR \fIسطح\fR] [\fB\-x\fR \fIسطح\fR] [\fB\-\-\fR] .BR اسکریپت .BR آرگومان‌ها ... .SH "توضیحات (DESCRIPTION)" زبان .B Janet یک زبان برنامه‌نویسی تابعی و امری و مفسر بایت‌کد (bytecode) است. این زبان شبیه لیسپ (Lisp-like) است، اما لیست‌ها با سایر ساختارهای داده (آرایه‌ها، جدول‌ها، ساختارها و تاپل‌ها) جایگزین شده‌اند. این زبان همچنین از اتصال به کدهای بومی C، برنامه‌نویسی انتزاعی با ماکروها (meta-programming) و اسمبلی بایت‌کد پشتیبانی می‌کند. محیط تعاملی (REPL) برای آزمودن زبان و همچنین قابلیت اجرای فایل‌های اسکریپت وجود دارد. این برنامه کلاینت از محیط زمان اجرای اصلی جدا است، بنابراین Janet می‌تواند در سایر برنامه‌ها تعبیه (embed) شود. می‌توانید Janet را در مرورگر خود در نشانی امتحان کنید. پیاده‌سازی آن عمدتاً با استاندارد C99 انجام شده و روی لینوکس، مک‌اواس و ویندوز اجرا می‌شود. ویژگی‌های اندکی که در استاندارد C99 نیستند (بارگذاری پویای کتابخانه‌ها و بهینه‌سازی‌های خاص کامپایلر) بسیار سرراست هستند. زبان Janet به سادگی روی بیشتر پلتفرم‌های جدید قابل پورت است. .SH "کلیدهای میانبر محیط تعاملی (REPL KEY-BINDINGS)" .TP 16 .BR Home انتقال مکان‌نما به ابتدای خط ورودی. .TP 16 .BR End انتقال مکان‌نما به انتهای خط ورودی. .TP 16 .BR چپ/راست " (Left/Right)" جابه‌جایی مکان‌نما در خط ورودی. .TP 16 .BR بالا/پایین " (Up/Down)" حرکت به عقب و جلو در تاریخچه دستورات. .TP 16 .BR Tab تکمیل نماد فعلی یا نمایش تکمیل‌های موجود. .TP 16 .BR Delete حذف یک نویسه پس از مکان‌نما. .TP 16 .BR Backspace حذف یک نویسه قبل از مکان‌نما. .TP 16 .BR Ctrl\-A انتقال مکان‌نما به ابتدای خط ورودی. .TP 16 .BR Ctrl\-B انتقال مکان‌نما به اندازه یک نویسه به سمت چپ. .TP 16 .BR Ctrl\-D اگر روی خط جدید باشد، نشان‌دهنده پایان جریان ورودی بوده و از REPL خارج می‌شود. .TP 16 .BR Ctrl\-E انتقال مکان‌نما به انتهای خط ورودی. .TP 16 .BR Ctrl\-F انتقال مکان‌نما به اندازه یک نویسه به سمت راست. .TP 16 .BR Ctrl\-H حذف یک نویسه قبل از مکان‌نما. .TP 16 .BR Ctrl\-K حذف همه چیز پس از مکان‌نما در خط ورودی. .TP 16 .BR Ctrl\-L پاک کردن صفحه ترمینال. .TP 16 .BR Ctrl\-N/Ctrl\-P حرکت به جلو و عقب در تاریخچه دستورات. .TP 16 .BR Ctrl\-U حذف همه چیز قبل از مکان‌نما در خط ورودی. .TP 16 .BR Ctrl\-W حذف یک کلمه قبل از مکان‌نما. .TP 16 .BR Ctrl\-G نمایش مستندات مربوط به نماد فعلی زیر مکان‌نما. .TP 16 .BR Ctrl\-Q پاک کردن دستور فعلی، از جمله خطوط تایپ‌شده قبلی. .TP 16 .BR Alt\-B/Alt\-F انتقال مکان‌نما به اندازه یک کلمه به عقب و جلو. .TP 16 .BR Alt\-D حذف یک کلمه پس از مکان‌نما. .TP 16 .BR Alt\-, رفتن به قدیمی‌ترین مورد در تاریخچه. .TP 16 .BR Alt\-. رفتن به آخرین مورد در تاریخچه. .LP کلیدهای میانبر REPL بر اساس زیرمجموعه‌ای از GNU readline پیاده‌سازی شده‌اند، هرچند Janet در داخل از GNU readline برای REPL استفاده نمی‌کند. این یک جایگزین محدود برای GNU readline است و ورودی‌های UTF-8 یا سایر ورودی‌های چندبایتی را به خوبی مدیریت نمی‌کند. برای غیرفعال کردن پردازش ورودی داخلی REPL، گزینه .B \-s را به Janet بدهید و از برنامه‌ای مانند rlwrap به همراه Janet برای مدیریت ورودی استفاده کنید. برای کلیدهای میانبری که روی کلمات عمل می‌کنند، یک کلمه به عنوان توالی‌ای از نویسه‌ها بدون فاصله تعریف می‌شود. .SH "مستندات (DOCUMENTATION)" برای مستندات کامل‌تر API، یک محیط تعاملی (REPL) اجرا کرده و از ماکروی doc برای مشاهده مستندات اتصالات و توابع مجزا استفاده کنید. .SH "گزینه‌ها (OPTIONS)" .TP .BR \-h نمایش متن راهنمای استفاده و خروج فوری. .TP .BR \-v نمایش متن نگارش برنامه و خروج فوری. .TP .BR \-s خواندن ورودی خام از stdin و صرف‌نظر از قابلیت‌های پیشرفته ورودی (شامل تاریخچه و ویژگی‌های شبیه readline). .TP .BR \-e\ code اجرای یک رشته از کد منبع Janet. کد منبع به همان ترتیبی که دریافت می‌شود اجرا می‌گردد، بنابراین آرگومان‌های قبلی پیش از آرگومان‌های بعدی اجرا می‌شوند. .TP .BR \-E\ code\ arguments... اجرای یک عبارت تکی Janet به عنوان تابع کوتاه (short-fn) و ارسال باقی آرگومان‌های خط فرمان به این عبارت. این ویژگی امکان اجرای دستورات تک‌خطی فشرده‌تر با آرگومان‌های خط فرمان را فراهم می‌کند. مثال: دستور .B janet -E '(print $0)' 12 معادل .B '((short-fn (print $0)) 12)' بوده که آن هم معادل .B `((fn [k] (print k)) 12)` است. برای جزئیات بیشتر به مستندات تابع .B short-fn مراجعه کنید. .TP .BR \-d فعال‌سازی حالت دیباگ (اشکال‌زدایی). در تمام سیگنال‌های پایان و همچنین سیگنال دیباگ، دیباگر در REPL بالا می‌آید. معادل فراخوانی .B (setdyn :debug true) در یک REPL پیش‌فرض. .TP .BR \-n غیرفعال‌سازی رنگ‌های ANSI در REPL. در صورت عدم اجرای REPL بی‌اثر است. .TP .BR \-N فعال‌سازی رنگ‌های ANSI در REPL. در صورت عدم اجرای REPL بی‌اثر است. .TP .BR \-r باز کردن یک REPL پس از اجرای تمام منابع. به طور پیش‌فرض، اگر Janet بدون هیچ آرگومانی اجرا شود، یک REPL باز می‌شود. .TP .BR \-R در صورت استفاده از REPL، بارگذاری پروفایل کاربر از متغیر محیطی JANET_PROFILE غیرفعال می‌شود. .TP .BR \-p فعال‌سازی پرچم تداوم (persistent). به طور پیش‌فرض وقتی Janet در حال اجرای دستورات از یک فایل است و با خطایی مواجه می‌شود، بلافاصله پس از چاپ پیام خطا خارج می‌شود. در حالت تداوم، Janet پس از خطا نیز به اجرای دستورات ادامه می‌دهد. این حالت برای اشکال‌زدایی و آزمون مناسب است. .TP .BR \-q مخفی کردن لوگو در REPL. .TP .BR \-k اسکریپت را اجرا نمی‌کند، بلکه تنها آن را کامپایل کرده تا خطاها بررسی شوند. برای بررسی نحوی و تحلیل ایستای اسکریپت‌ها (linting) کاربرد دارد. .TP .BR \-m\ syspath تنظیم اتصال پویای .B :syspath روی رشته syspath تا Janet ماژول‌های سیستمی را از پوشه‌ای متفاوت با پیش‌فرض بارگذاری کند. مقدار پیش‌فرض هنگام ساخت Janet تعیین می‌شود که در لینوکس و پوزیکس برابر با .B /usr/local/lib/janet است. در ویندوز مقدار پیش‌فرضی وجود ندارد. این گزینه جایگزین JANET_PATH می‌شود. .TP .BR \-c\ source\ output پیش‌کامپایل کد منبع Janet به یک ایمیج (image)، که یک دامپ دودویی برای بارگذاری سریع‌تر در آینده است. .B source باید مسیر ماژول Janet برای کامپایل، و .B output باید مسیر فایل ایمیج حاصل باشد. نام خروجی معمولاً باید به پسوند .B .jimage ختم شود. .TP .BR \-i هنگام ارسال این پرچم، اسکریپت داده‌شده به مفسر به جای یک فایل منبع Janet، به عنوان یک فایل ایمیج Janet در نظر گرفته می‌شود. .TP .BR \-l\ lib وارد کردن (import) یک ماژول Janet پیش از اجرای اسکریپت یا REPL. چند فایل را می‌توان به این شیوه بارگذاری کرد و داده‌های صادرشده از هر فایل در دسترس اسکریپت یا REPL قرار می‌گیرد. .TP .BR \-w\ level تنظیم سطح هشدارهای بررسی کد (linting) در Janet. این سطح باید یکی از مقادیر .BR :relaxed ، .BR :none ، .BR :strict ، .B :normal یا یک عدد Janet باشد. هر پیام لینتینگی که سطحی بالاتر از این تنظیم داشته باشد به صورت هشدار نمایش داده می‌شود اما کامپایل یا اجرا را متوقف نمی‌کند. .TP .BR \-x\ level تنظیم سطح خطای بررسی کد (linting) در Janet. این سطح باید یکی از مقادیر .BR :relaxed ، .BR :none ، .BR :strict ، .B :normal یا یک عدد Janet باشد. هر پیام لینتینگی که سطحی بالاتر از این تنظیم داشته باشد باعث خطای کامپایل شده و فرایند را متوقف می‌سازد. .TP .BR \-\- پایان پردازش آرگومان‌های خط فرمان. تمام آرگومان‌های پس از این به عنوان نام فایل و سپس آرگومان‌های اسکریپت در نظر گرفته می‌شوند. .SH "محیط (ENVIRONMENT)" .B JANET_PATH .RS محل جستجو برای کتابخانه‌های Janet. این تنها متغیر محیطی است که Janet برای یافتن ماژول‌های بومی و کدهای منبع نیاز دارد. اگر مقداری برای آن تنظیم نشده باشد، Janet در مسیر پیش‌فرض تعیین‌شده هنگام کامپایل جستجو می‌کند. در لینوکس و پوزیکس این مقدار باید لیستی از نام پوشه‌ها جداشده با دونقطه (:) و در ویندوز جداشده با نقطه‌ویرگول (;) باشد. توجه داشته باشید در تنظیمات معمول (غیر از NixOS یا Guix) تنها از یک پوشه استفاده می‌شود. .RE .B JANET_PROFILE .RS مسیر فایل پروفایلی که مفسر پیش از ورود به REPL بارگذاری می‌کند. این فایل پروفایل برای اسکریپت‌ها اجرا نمی‌شود. این رفتار را می‌توان با گزینه .B \-R غیرفعال کرد. .RE .B JANET_HASHSEED .RS برای غیرفعال کردن تصادفی‌سازی تابع شبه‌تصادفی (PRF) زبان Janet در هنگام راه‌اندازی، می‌توان این متغیر را مقداردهی کرد. این کار باعث می‌شود برنامه‌هایی که در غیر این صورت به مقدار بذر تصادفی شروع برنامه وابسته بودند، قطعی و تکرارپذیر (deterministic) شوند. این متغیر در پیکربندی پیش‌فرض Janet کاری انجام نمی‌دهد چون PRF به صورت پیش‌فرض غیرفعال است. همچنین برای تأثیرگذاری این متغیر نباید JANET_REDUCED_OS تعریف شده باشد. .RE .B JANET_HISTFILE .RS محل فایلی که برای تاریخچه REPL پوسته پیش‌فرض هنگام استفاده از ورودی پیشرفته استفاده می‌شود. این مسیر نسبی جایی است که دستورات بین نشست‌ها ذخیره می‌شوند. اگر تنظیم نشود، تاریخچه‌ای در REPL استفاده نخواهد شد. با پرچم .B \-s که ورودی پیشرفته را غیرفعال می‌کند کار نمی‌کند. .RE .B NO_COLOR .RS خاموش کردن پیش‌فرض رنگ‌ها در REPL و در مدیریت خطای اسکریپت‌ها. این تنظیم در زمان اجرا از طریق اتصالات پویای .B *err-color* و .B *pretty-format* یا از طریق پارامترهای خط فرمان .B \-n و .B \-N قابل تغییر است. .RE .SH "نویسنده (AUTHOR)" نوشته‌شده توسط Calvin Rose