عملیات پایهای لیست را پیادهسازی کنید.
در زبانهای تابعی، عملیات لیست مانند length، map و reduce بسیار رایجاند. مجموعهای از عملیات پایهای لیست را بدون استفاده از توابع موجود پیادهسازی کنید.
تعداد و نام دقیق عملیاتی که باید پیادهسازی شوند بسته به track است تا با نامهای موجود تداخل نکنند، اما عملیات کلی که پیادهسازی میکنید عبارتاند از:
append (با گرفتن دو لیست، همهی عناصر لیست دوم را به انتهای لیست اول اضافه میکند)؛concatenate (با گرفتن چندین لیست، همهی عناصر همهی لیستها را در یک لیست مسطح ترکیب میکند)؛filter (با گرفتن یک «محمول» و یک لیست، لیست همهی عناصری را برمیگرداند که predicate(item) برایشان «درست» است)؛length (با گرفتن یک لیست، تعداد کل عناصر آن را برمیگرداند)؛map (با گرفتن یک تابع و یک لیست، لیست نتایج اعمال function(item) روی همهی عناصر را برمیگرداند)؛foldl (با گرفتن یک تابع، یک لیست و «انباشتگر» اولیه، هر عنصر را از سمت چپ در انباشتگر تا میکند (کاهش میدهد))؛foldr (با گرفتن یک تابع، یک لیست و «انباشتگر» اولیه، هر عنصر را از سمت راست در انباشتگر تا میکند (کاهش میدهد))؛reverse (با گرفتن یک لیست، لیستی برمیگرداند که همهی عناصر اصلی را دارد، اما با ترتیب معکوس).توجه کنید که ترتیبی که آرگومانها به توابع تا (foldl، foldr) داده میشوند اهمیت دارد.
در PHP مفهومی به اسم «قابل فراخوانی» وجود دارد.
اینها میتوانند شکلهای گوناگونی داشته باشند، اما ما روی «توابع ناشناس» تمرکز میکنیم.
میتوان یک تابع ناشناس را درون یک متغیر ساخت و آن را با پارامترها فراخوانی کرد:
$double = function ($number) {
return $number * 2;
};
$double(2); // returns 4
$double(4); // returns 8
در Exercism ثبتنام کنید تا PHP را همراه با 11 مفهوم122 تمرین و مربیگری انسانی واقعی یاد بگیرید و در آن استاد شوید، همهی اینها رایگان.
از مقدمهای عملی بر بازگشت لذت ببرید، جایگزینهای دستوری و تابعی «عملیات لیست» را بررسی کنید و به بازگشت دنبالهای و توابع انباره عمیق شوید.