# F#

Adres: https://softwaredictionary.org/tr/terimler/fsharp
Kategori: Programlama Dilleri
Son güncelleme: 2026-09-30
Okunuşu: ef şarp

Kısaca: F#, .NET için fonksiyonel öncelikli, statik tipli bir dildir; tip çıkarımlı özlü kodu, .NET ekosistemine ve C# kütüphanelerine tam erişimle birleştirir.

## F# nedir?

F#, Microsoft Research'te Don Syme tarafından tasarlanan ve ilk kez 2005'te yayımlanan, genel amaçlı bir programlama dilidir. ML dil ailesine aittir ve OCaml'dan güçlü biçimde etkilenmiştir. F#, .NET üzerinde çalışır, açık kaynaklıdır ve platformlar arasıdır; Microsoft ile F# Software Foundation topluluğu tarafından birlikte geliştirilir.

F# fonksiyonel önceliklidir; yani varsayılan olarak değerler değiştirilemezdir ve fonksiyonlar ana yapı taşlarıdır, ancak gerektiğinde sınıfları, arayüzleri ve değiştirilebilir durumu da destekler. Tip çıkarımı o kadar güçlüdür ki kodun çoğunda hiç tip açıklaması bulunmaz, yine de her şey derleme zamanında denetlenir. Girinti blokları tanımlar, boru operatörü `|>` dönüşümleri zincirler, ayırt edici birleşimler (discriminated unions) ve örüntü eşleme ise bir ödemenin kart, banka havalesi ya da nakit olması gibi birkaç biçimden birini alabilen verileri modellemeyi kolaylaştırır.

F#; finansal modellemede, veri analizinde, bilimsel hesaplamada, alan mantığı yoğun arka uç servislerinde ve `.fsx` dosyalarıyla betik yazmada kullanılır. C# ile aynı ara dile derlendiği için bir F# projesi herhangi bir .NET kütüphanesini kullanabilir ve C# kodundan çağrılabilir. Derleyicinin metreyi saniyeye eklemek gibi hataları yakalamasını sağlayan ölçü birimleri (units of measure) gibi özellikler, doğruluğa verdiği önemi gösterir.

F# en sık, .NET üzerindeki kardeşi C# ile kıyaslanır. C# önce nesne yönelimlidir, fonksiyonel özellikler zamanla eklenmiştir ve çok daha büyük bir topluluğa sahiptir; F# ise önce fonksiyoneldir, daha özlüdür ve değiştirilemezliği ile kapsamlı örüntü eşlemeyi varsayılan yapar. F# ayrıca Haskell ile de kıyaslanır: ikisi de statik tipli fonksiyonel dillerdir, ancak F# ifadeleri hevesle (eager) değerlendirir ve yan etkilere her yerde izin verir; bu da onu daha pragmatik ve mevcut .NET koduyla karıştırmayı daha kolay kılar.

## Önemli noktalar

- F#, .NET üzerinde çalışan, fonksiyonel öncelikli ve statik tipli bir dildir.
- Güçlü tip çıkarımı sayesinde kodun çoğu tip açıklaması gerektirmez.
- Ayırt edici birleşimler ve örüntü eşleme, veriyi net ve güvenli biçimde modeller.
- C# ve .NET ekosisteminin geri kalanıyla tam uyumlu çalışır.
- Ölçü birimleri, derleyicinin hesaplamalardaki birim karışıklıklarını yakalamasını sağlar.

## Örnek: F#'ta ayırt edici birleşimler ve borular

```fsharp
// A discriminated union: a payment is exactly one of these cases
type Payment =
    | Card of number: string
    | BankTransfer of iban: string
    | Cash

let describe payment =
    match payment with
    | Card n -> sprintf "Card ending in %s" (n.Substring(n.Length - 4))
    | BankTransfer iban -> sprintf "Transfer from %s" iban
    | Cash -> "Paid in cash"

[ Card "0000111122223333"; Cash ]
|> List.map describe
|> List.iter (printfn "%s")   // Card ending in 3333, then Paid in cash
```

## Sık sorulan sorular

**F# ile C# arasındaki fark nedir?**

İkisi de .NET üzerinde çalışır ve aynı kütüphaneleri kullanabilir. C#, C tarzı sözdizimine sahip, önce nesne yönelimli bir dildir; F# ise önce fonksiyoneldir, süslü parantez yerine girinti kullanır ve değiştirilemezliği, tip çıkarımını ve örüntü eşlemeyi varsayılan tarz yapar.

**F# hâlâ geliştiriliyor mu?**

Evet. F# açık kaynaklıdır, .NET SDK ile birlikte gelir ve her büyük .NET sürümüyle birlikte yeni bir sürüm alır.

**F# ve C#'ı aynı çözümde kullanabilir miyim?**

Evet. İkisi de aynı .NET ara diline derlendiği için bir F# projesi C# projelerine, C# projeleri de F# projesine başvurabilir; bu da ekiplerin F#'ı alan mantığı ya da veri işleme gibi belirli bölümlerde kullanmasına olanak tanır.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
