എഫ് # എന്നത് ശക്തമായി ടൈപ്പ് (strongly typed)ചെയ്ത ഫംഗ്ഷൻ-ടൈപ്പ് അനുമാനം ഉപയോഗിക്കുന്ന ഭാഷയാണ്. പ്രോഗ്രാമർ തരങ്ങൾ പ്രഖ്യാപിക്കേണ്ട ആവശ്യമില്ല—കമ്പൈലർ സമയത്ത് തരം തിരിച്ചെടുക്കുന്നു (തരം അനുമാനം). എഫ്# സ്പഷ്ടമായ തരത്തിലുള്ള വ്യാഖ്യാനങ്ങളെ അനുവദിക്കുന്നു, അവ ചില സാഹചര്യങ്ങളിൽ ആവശ്യമാണ്.

എഫ്# ആഴത്തിലുള്ള മൂല്യനിർണ്ണയം ഉപയോഗിക്കുന്ന ഒരു എക്സ്പ്രഷൻ അടിസ്ഥാനമാക്കിയുള്ള ഭാഷയാണ്. codice_1 എക്സ്പ്രഷനുകൾ ഉൾപ്പെടെ, codice_2എക്സ്പ്രഷനുകളും ലൂപുകളും, ഒരു സ്റ്റാറ്റിക് തരത്തിലുള്ള ഒരു സങ്കലന എക്സ്പ്രഷനാണ്. ഫങ്ഷനുകളും എക്സ്പ്രഷനുകളും മടക്കിനൽകാത്ത മൂല്ല്യം codice_3തരത്തിലൂടെ മടക്കിനൽകുന്നു. എഫ് # നാമത്തിലേക്ക് ബൈൻഡ് മൂല്ല്യങ്ങൾക്ക് codice_4 കീവേർഡ് ഉപയോഗിയ്ക്കുന്നു. ഉദാഹരണത്തിന്:

codice_5 എന്ന പേരിലേക്കു് codice_6 എന്ന മൂല്യം ബന്ധിപ്പിക്കുന്നു.

codice_7കീവേഡ് ഉപയോഗിച്ച് ആണ് പുതിയ തരം നിർവചിച്ചിരിക്കുന്നത്. ഫങ്ഷണൽ പ്രോഗ്രാമിങ്ങിനായി, എഫ്# ടപ്പിൾ, റെക്കോർഡ്, വിവേചനമുള്ള യൂണിയൻ, ലിസ്റ്റ്, ഓപ്ഷൻ, ഫലങ്ങളുടെ തരം എന്നിവ ലഭ്യമാക്കുന്നു. ഒരു ടപ്പിൾ ഒരു n ന്റെ മൂല്യങ്ങളെ പ്രതിനിധീകരിക്കുന്നു, ഇവിടെ n ≥ 0. മൂല്യം n എന്നത് ടപ്പിളിന്റെ അരിറ്റി എന്ന് വിളിക്കുന്നു. A, B, C എന്നിവ വ്യത്യസ്ത തരങ്ങളുടെ മൂല്യങ്ങളാണെങ്കിൽ 3-ടപ്പിൾ പ്രതിനിധാനം ചെയ്യപ്പെടും codice_8മൂല്യങ്ങളുടെ എണ്ണം ഡിസൈൻ സമയത്തെ അറിയുമ്പോഴും എക്സിക്യൂഷൻ സമയത്ത് സ്ഥിരമായി നിൽക്കുമ്പോഴും മാത്രം മൂല്യങ്ങൾ സൂക്ഷിക്കാൻ ഒരു ടപ്പിൾ ഉപയോഗപ്പെടുത്താം.

ഡേറ്റാ അംഗങ്ങളെ പേരുനൽകുന്ന ഒരു റെക്കോർഡാണ് റെക്കോർഡ്. റെക്കോർഡ് നിർവചനത്തിന്റെ ഒരു ഉദാഹരണം ഇതാ:

നമുക്ക് എന്ന് രേഖപ്പെടുത്താം, codice_9കീവേഡ് റെക്കോഡിന്റെ പകർപ്പാണു് ഉപയോഗിയ്ക്കുന്നതു്, ഉദാഹരണമായി {r = name = "CD"} ൽ, ഇതു് ഒരു പുതിയ റിക്കോർഡ് ഉണ്ടാക്കുക വഴി, r ന്റെ പകർപ്പെടുത്തു് മാറ്റുക, നെയിം ഫീൽഡിന്റെ മൂല്യം മാറ്റുക (അവസാനത്തെ ഉദാഹരണത്തിൽ ഉണ്ടാക്കിയ റെക്കോർഡ് r പേരാണ് നൽകിയിരുന്നത്).

വ്യത്യസ്ത യൂണിയൻ തരം എന്നത് സി യൂണിയനുകളുടെ തരം സുരക്ഷയുള്ള പതിപ്പാണ്. ഉദാഹരണത്തിന്,

യൂണിയൻ രീതിയുടെ മൂല്യങ്ങൾ ഒന്നുകിൽ യൂണിയൻ കേസായിരിക്കും. ഓരോ കേസിന്റെയും നിർവ്വചനത്തിൽ ഓരോ യൂണിയൻ കേസുകളും വഹിക്കുന്ന മൂല്യങ്ങളുടെ രീതി ഉൾപ്പെടുത്തിയിരിക്കുന്നു.

ലിസ്റ്റ് തരം മാറ്റാൻപറ്റാത്തതാണ്, ലിങ്ക്ഡ് ലിസ്റ്റ് codice_10നൊട്ടെഷനെ പ്രതിനിധീകരിക്കുന്നു(:: എന്നത് കോൺസ് ഓപ്പറേറ്ററാണ്) അല്ലെങ്കിൽ codice_11എന്നിങ്ങനെ ചുരുക്കിയെഴുതുവാൻ സാധിക്കും. ഒരു ശൂന്യമായ പട്ടിക എഴുതിയിട്ടുണ്ട്codice_12. ഓപ്ഷൻ തരം വേർതിരിച്ച് അറിയാൻ കഴിയുന്ന യൂണിയൻ ടൈപ്പാണ്. ഓപ്ഷനുകൾ codice_13 ചോയ്സുകൾ ഉള്ള ഒരു വിവേചന യൂണിയൻ തരമാണ്. എഫ് # തരം സാധാരണയായിരിക്കാം, അത് സാധാരണ .നെറ്റ് തരങ്ങളായി നടപ്പിലാക്കാം. 

എഫ്# ലാംഡ ഫംഗ്ഷനുകളും ക്ലോസ്സേഴ്സും പിന്തുണയ്ക്കുന്നു. എഫ്# ലെ എല്ലാ ഫംഗ്ഷനുകളും ഫസ്റ്റ് ക്ലാസ് മൂല്യങ്ങളും മാറ്റമില്ലാത്തവയുമാണ്.
ഫങ്ഷനുകൾ കറീഡാകാൻ(curried) കഴിയും. ഫസ്റ്റ് ക്ലാസ് മൂല്യങ്ങളാണെങ്കിൽ, മറ്റ് പ്രവർത്തനങ്ങൾക്ക് ആർഗ്യുമെന്റായി നൽകാം. മറ്റ് പ്രവർത്തന പ്രോഗ്രാമിംഗ് ഭാഷകളെ പോലെ,codice_14, codice_15 ഓപ്പറേറ്റഴ്സ് മുഖേന ഫങ്ഷൻ ഘടനയെ എഫ് ഷാർപ്പിൽ ഉപയോഗിക്കുന്നതിന് സഹായിക്കുന്നു.എഫ് # സീക്വൻസ് എക്സ്പ്രഷനുകൾ നൽകുന്നു, ഒരു സീക്വൻസ് codice_16നിർവചിക്കുക, codice_17 അല്ലെങ്കിൽ അറേcodice_18 എന്നീ കോഡുകൾ വഴി മൂല്യങ്ങൾ സൃഷ്ടിക്കുന്ന‌ു. ഉദാഹരണത്തിന്,

0 മുതൽ 25 വരെയുള്ള സംഖ്യകളുടെ ശ്രേണിയിൽ നിന്ന് സംഖ്യകൾ 0 ഫിൽറ്റർ ചെയ്തുകൊണ്ട് സംഖ്യകളുടെ സ്ക്വയറുകളുടെ ഒരു ശ്രേണീ ആരംഭിക്കുന്നു. സീക്വൻസ് എന്നത് ജനറേറ്ററാണ് - മൂല്യങ്ങൾ ഡിമാന്റിൽ ജനറേറ്റുചെയ്യപ്പെടുന്നു (അതായത്, ലാളിത്യമായി വിലയിരുത്തുകയാണ്) - ലിസ്റ്റുകളും അറേകളും ഔത്സുക്യത്തോടെ വിലയിരുത്തുന്നു. പേരുകളിലേക്ക് മൂല്യങ്ങൾ ബന്ധിപ്പിക്കുന്നതിന് പാറ്റേൺ പൊരുത്തപ്പെടുന്ന രീതി എഫ് ഷാർപ്പ് ഉപയോഗിക്കുന്നു. മാത്രമല്ല വിവേചനപൂർണ്ണമായ യൂണിയനുകൾ ഉപയോഗിക്കുമ്പോഴും പാറ്റേൺ പൊരുത്തപ്പെടൽ ഉപയോഗിക്കപ്പെടുന്നു, യൂണിയൻ എന്നത് പാറ്റേൺ നിയമങ്ങൾക്കെതിരായി പൊരുത്തപ്പെടുന്നു, അവ തമ്മിലുള്ള ചേർച്ച വിജയിക്കുമ്പോൾ ഒരു റൂൾ തിരഞ്ഞെടുക്കുന്നു. എക്സ്റ്റൻസിബിൾ പാറ്റേൺ പൊരുത്തപ്പെടുന്ന രൂപത്തിൽ എഫ്# സജീവ ഇനങ്ങളെ പിന്തുണയ്ക്കുന്നു. ഉദാഹരണത്തിന്, നിലവിലുള്ള തരത്തിൽ പൊരുത്തപ്പെടുത്തലുകൾ ഒന്നിലധികം ഉണ്ടാകുമ്പോൾ ആണ് ഇത് ഉപയോഗിക്കുന്നത്.

കമ്പ്യൂട്ടേഷൻ എക്സ്പ്രഷനുകൾ എന്ന് വിളിക്കുന്ന രചനാപരമായ കണക്കുകൂട്ടലുകൾ നിർവ്വചിക്കുന്നതിനുള്ള ഒരു സാധാരണ വാക്യഘടന എഫ്# പിന്തുണയ്ക്കുന്നു. സീക്വൻസ് എക്സ്പ്രഷനുകൾ, എസിങ്ക്രണസ് കണക്കുകൂട്ടൽ, ക്വറികൾ എന്നിവയാണ് കംപ്യൂട്ടിംഗ് എക്സ്പ്രഷനുകളുടെ പ്രത്യേകതകൾ. കണക്കുകൂട്ടൽ സമ്പ്രദായങ്ങൾ മൊനാഡ് മാതൃകയുടെ ഒരു നിർവ്വഹണമാണ്.
ചരിത്രം
അനുയോജ്യത
ഭാഷ പരിണാമം
പ്രവർത്തന പ്രോഗ്രാമിംഗ്