تابع سره
این مقاله دقیق، کامل و صحیح ترجمه نشده و نیازمند ترجمه از انگلیسی به فارسی است. کل یا بخشی از این مقاله به زبان انگلیسی نوشته شدهاست. اگر مقصود ارائهٔ مقاله برای مخاطبان زبان انگلیسی است، باید در ویکیپدیای انگلیسی نوشته شود (فهرست ویکیپدیاها را ببینید). در غیر این صورت، خواهشمند است ترجمهٔ این مقاله را با توجه به متن اصلی و با رعایت سیاست ویرایش، دستور خط فارسی و برابر سازی به زبان فارسی بهبود دهید و سپس این الگو را از بالای صفحه بردارید. همچنین برای بحثهای مرتبط، مدخل این مقاله در فهرست صفحههای نیازمند ترجمه به فارسی را ببینید. اگر این مقاله به زبان فارسی بازنویسی نشود، تا دو هفتهٔ دیگر نامزد حذف میشود و/یا به ویکیپدیای انگلیسی منتقل خواهد شد. اگر مایل به ارزیابی این مقاله هستید، میتوانید ترجمهٔ گوگل از این مقاله را ببینید. در هر حال، لطفاً ترجمهٔ ماشینی دیگری به این مقاله اضافه نکنید، چرا که این گونه از ترجمهها عموماً کیفیت بسیار پایینی دارند. اگر شما اخیراً این مقاله را بهعنوان صفحهٔ نیازمند ترجمه برچسب زدهاید، لطفاً عبارت {{جا:هبک-ترجمه به فارسی|1=تابع سره}} ~~~~ را نیز در صفحهٔ بحث نگارنده قرار دهید. |
در برنامهنویسی کامپیوتر، یک تابع سره یا خالص (به انگلیسی: Pure Function) یک تابع است که دارای ویژگیهای زیر باشد:[۱][۲]
- هر دستور بازگشتی آن، با هر آرگومان که بگیرد، یکسان است. (مقدار بازگشتی، هیچ تغییری به وسیله متغیرهای محلی ایستا، متغیرهای غیر محلی، mutable reference argumentsو یا جریانهای ورودی از دستگاه های ورودی/خروجی نمیکند).
- ارزیابی آن هیچ اثر جانبی ندارد. (در مقدار متغیرهای محلیِ ایستا، متغیرهای غیرمحلی و mutable reference arguments و یا جریانهای ورودی/خروجی دگرگونی ایجاد نکند).
نمونهها
ویرایشتوابع سره
ویرایشنمونههای زیر از توابع سره C ++ هستند:
floor
، بازگشت توابع جزء صحیح یک عدد؛max
، بازگشت بیشینه دو مقدار؛sin
، بازگشت سینوس یک عدد.
توابع ناسره
ویرایشتوابع C ++ زیر به علت نقض ویژگی ۱، ناسره هستند:
- به دلیل بازگشت تغیر با یک متغیر غیر محلی
int f() { return x; }
- به دلیل بازگشت دگرگونی با یک mutable reference argument
int f(int* x) { return *x; }
توابع C ++ زیر به علت نقض ویژگی ۲، ناسره هستند:
- به دلیل دگرگونی یک متغیر محلیِ استاتیک
void f() { static int x = 0; ++x; }
- به دلیل دگرگونی متغیر غیر محلی
void f() { ++x; }
- به دلیل دگرگونی یک mutable reference argument
void f(int* x) { ++*x; }
- به دلیل دگرگونی جریان خروجی
void f() { std::cout << "Hello, world!" << std::endl; }
توابع C ++ زیر به علت نقض هر دو ویژگی ۱ و ۲، ناسره هستند:
- به دلیل مقدار بازگشتی با یک متغیر ایستای محلی و دگرگونی یک متغیر ایستای محلی
int f() { static int x = 0; ++x; return x; }
برای مطالعهٔ بیشتر
ویرایش- جبر لاندا
- اثر جانبی (علم کامپیوتر)
- روش خالص
- تکرارشونده
- کلید واژه constexpr در C ++ annotating توابع سره قابل استفاده در زمان کامپایل
منابع
ویرایش- ↑ Bartosz Milewski (2013). "Basics of Haskell". School of Haskell. FP Complete. Archived from the original on 27 October 2016. Retrieved 2018-07-13.
Here are the fundamental properties of a pure function: 1. A function returns exactly the same result every time it's called with the same set of arguments. In other words a function has no state, nor can it access any external state. Every time you call it, it behaves like a newborn baby with blank memory and no knowledge of the external world. 2. A function has no side effects. Calling a function once is the same as calling it twice and discarding the result of the first call.
- ↑ Brian Lonsdorf (2015). "Professor Frisby's Mostly Adequate Guide to Functional Programming". GitBook. Archived from the original on 6 July 2019. Retrieved 2018-07-14.
A pure function is a function that, given the same input, will always return the same output and does not have any observable side effect.