تابع سره

در برنامه‌نویسی کامپیوتر، یک تابع سره یا خالص  یک تابع است که دارای ویژگی‌های زیر باشد:
 هر دستور بازگشتی آن، با هر آرگومان که بگیرد، یکسان است. (مقدار بازگشتی، هیچ تغییری به وسیله متغیرهای محلی ایستا، متغیرهای غیر محلی، 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 توابع سره قابل استفاده در زمان کامپایل

منابع

پیونهای خارجی 
 Pure attribute in Fortran
 constexpr attribute in C++
 Pure attribute in D language

برنامه‌نویسی تابعی
زیرروال‌ها
صفحات با ترجمه بازبینی‌نشده