عملگرها نمادهایی هستند که یک کار خاص را انجام میدهند. عملگرها در F# به دو نوع پیشوندی (Prefix) و میانوندی (Infix) تقسیم میشوند.
در F# می توانید عملگر ها را Overload (سربارگذاری) کرد و بسته به نیاز خود گسترش داد یا حتی عملگرهای جدید ایجاد کرد (بعدا در این مورد صحبت خواهیم کرد)
مثل بقیه زبان ها با این تفاوت که عملگر توان ** می باشد و نه ^
بر خلاف شی شارپ ! علامت not یا نقیض است در اف شارپ از کلمه not استفاده میشود.
هم چنین عملگر = برخلاف زبان های دیگر که عملیات انتساب است در اف شارپ این عملگر ، عملگر برابری (equality, equals) که یک عملگر جنریک است
در واقع همان عملگر های مقایسه ای برای عملگر ها محاسباتی هستند.
عملگرهای Nullable عملگرهای محاسباتی باینری یا عملگرهای مقایسه ای هستند که با نوع های محاسباتی nullable از یک یا هر دو طرف کار می کنند.
انواع nullable اغلب هنگام کار با داده هایی از منابع مانند پایگاه داده هایی که اجازه می دهند null ها را به جای مقادیر واقعی کار کنند ، بوجود می آیند.عملگرهای Nullable اغلب در عبارات پرس و جو (query expressions) استفاده می شوند.علاوه بر عملگرهای Nullable برای محاسبات و مقایسه ، از عملگرهای تبدیل (conversion operators) می توان برای تبدیل بین انواع nullable استفاده کرد.نسخه های خاص عملگرهای nullable برخی از عملگرهای نمایش داده شده نیز وجود دارد.
در f# این امکان وجود دارد با عملگردها مانند تابع رفتار کرد.برای اینکار کافیست عملگر مورد نظر را داخل یک جفت پرانتز قرار می دهیم و عملوندهای آن را به عنوان پارامتر های ورودی به تابع ارسال میکنیم. این تکنین باعث می شود که از عملگرها مانند مقادیر استفاده کرد و به راحتیمی توان آنها را به شناسه دلخواه نسبت داد یا حتی به عنوان پارامتر ورودی به تواع دیگر ارسال کرد.
(+) 6 8
البته ظاهرا ویرایش گر ویرگول ایراد دارد !
عملگرهای مانند + = به دو شکل میانوندی و پیشوندی هستند . برای اینکه به کامپایلر بفهمانم منظور ما شکل پیشوندی است باید قبل از عملگر نماد ~ قرار دهیم:
(~-) -13
int = 13
let add = (+) add 5 6
int = 11
عملگرهای پیشوندی یگانی (not - +) بالاتر از عملگرهای میانوندی و اولویت میانوندی هم مانند سایر زبان هاست