عملیات پایهای لیست را پیادهسازی کنید.
در زبانهای تابعی، عملیات لیست مانند length، map و reduce بسیار رایجاند. مجموعهای از عملیات پایهای لیست را بدون استفاده از توابع موجود پیادهسازی کنید.
تعداد و نام دقیق عملیاتی که باید پیادهسازی شوند بسته به track است تا با نامهای موجود تداخل نکنند، اما عملیات کلی که پیادهسازی میکنید عبارتاند از:
append (با گرفتن دو لیست، همهی عناصر لیست دوم را به انتهای لیست اول اضافه میکند)؛concatenate (با گرفتن چندین لیست، همهی عناصر همهی لیستها را در یک لیست مسطح ترکیب میکند)؛filter (با گرفتن یک «محمول» و یک لیست، لیست همهی عناصری را برمیگرداند که predicate(item) برایشان «درست» است)؛length (با گرفتن یک لیست، تعداد کل عناصر آن را برمیگرداند)؛map (با گرفتن یک تابع و یک لیست، لیست نتایج اعمال function(item) روی همهی عناصر را برمیگرداند)؛foldl (با گرفتن یک تابع، یک لیست و «انباشتگر» اولیه، هر عنصر را از سمت چپ در انباشتگر تا میکند (کاهش میدهد))؛foldr (با گرفتن یک تابع، یک لیست و «انباشتگر» اولیه، هر عنصر را از سمت راست در انباشتگر تا میکند (کاهش میدهد))؛reverse (با گرفتن یک لیست، لیستی برمیگرداند که همهی عناصر اصلی را دارد، اما با ترتیب معکوس).توجه کنید که ترتیبی که آرگومانها به توابع تا (foldl، foldr) داده میشوند اهمیت دارد.
توضیح بالای این تمرین بین همهی مسیرهای Exercism مشترک است.
برای همخوانی با کتابخانهی استاندارد Elixir، توابعی که foldl و foldr استفاده میکنند باید عنصر را بهعنوان آرگومان اول و انباشتگر را بهعنوان آرگومان دوم بگیرند.
همچنین، برای اینکه با تابع Kernel.length/1 که بهطور خودکار وارد میشود تعارضی پیش نیاید، تابعی که طول را میشمارد count نام میگیرد.
یک یا چند مورد از testهای این تمرین با برچسب :slow مشخص شدهاند، چون ممکن است اجرایشان زمان زیادی ببرد. به همین دلیل، اجراکنندهی خودکار test آنها را روی پلتفرم اجرا نمیکند. اگر این تمرین را مستقیم روی پلتفرم و در ویرایشگر وب حل میکنید، بهتر است به جای آن این تمرین را روی سیستم خودتان دانلود کنید. این کار به شما اجازه میدهد همهی testها را اجرا کنید و کارایی راهحل خود را بررسی کنید.
در Exercism ثبتنام کنید تا Elixir را همراه با 58 مفهوم168 تمرین و مربیگری انسانی واقعی یاد بگیرید و در آن استاد شوید، همهی اینها رایگان.
از مقدمهای عملی بر بازگشت لذت ببرید، جایگزینهای دستوری و تابعی «عملیات لیست» را بررسی کنید و به بازگشت دنبالهای و توابع انباره عمیق شوید.