F# programlarını Visual Studio içerisinde çalıştırmanın iki yolu var; F# projesi oluşturmak – tıpkı C# projesi oluşturmak gibi – veya F# interactive penceresini kullanmak. F# dili, Visual Studio 2013 içerisinde aşağıdaki proje tiplerini destekliyor;
– Console Application, klasik konsol uygulama projesi template’i.
– Library, sınıf kütüphanesi template’i.
– Tutorial, F# örnekleri içeren bir konsol uygulaması. Buradaki örnek uygulamalara kesinlikle göz atmanızı tavsiye ederim.
– Portable Library, Silverlight, Windows Phone ve Windows 8.x ortamlarında çalıştırılabilen sınıf kütüphaneleri.
Adım adım bir konsol uygulaması oluşturalım hemen.
F# Interactive Kullanımı
Basit programlar için F# dili F# Interactive (FSI) adında bir seçenek sunar. Bu özelliği küçük kod parçacıklarını test etmek için kullanabilirsiniz. Hangi geliştirme profilini kullandığınıza bağlı olarak Visual Studio içerisinde bu özelliği View veya View –> Other Windows seçekelerini kullanarak bulabilirsiniz.
FSI penceresi input olarak kod yazmanıza imkan veriyor. Bu yüzden kodunuzu direkt olarak çalıştırabilirsiniz. Farklı olarak statement’lar için tek noktalı virgül (;) yerine iki noktalı virgül (;;) kullanmalısınız. Intellisense özelliğini desteklememesi kötü bir yanı tabi ki.
F# source file ve F# script’i arasındaki en temel fark build action kısmı. F# source file, compile olabilen ve .fs uzantılı bir dosya ve build action kısmı Compile atanmış. F# script’i ise .fsx uzantılı ve build action kısmı None atanmıştır. Fakat hangi dosyayı seçerseniz seçin, seçtiğiniz kodu F# Interactive üzerinde sağ tıklayıp ya da ALT+ENTER klavye kombinasyonu ile çalıştırabilirsiniz.
Gelin 1’den 50’ye kadar olan tek sayıların toplamını bulalım;
let mutable toplam = 0 for i = 0 to 50 do if i%2 <> 0 then toplam <- toplam + i printf "1'den 50'ye olan tek sayıların toplamı: %A" toplam
F# Interactive’de sonuç şu şekilde görünür;
1’den 50’ye olan tek sayıların toplamı: 625
val mutable toplam : int = 625
FSIAnyCPU
Bu özellik Visual Studio 2012 ile eklendi. FSI var olan 64-bit işletim sisteminde 64-bit işlemci ile çalışacaktır. Bunun dışında F# Interactive 32-bit işlemci ile çalışır. Bu FSIAnyCPU özelliği Visual Studio’nun Tool-> Options-> F# Tools –> F# Interactive kısmından aktif edebilirsiniz.
FSIAnyCPU işlemcisinin hangisi ile çalıştığına sizeof ve System.IntPtr ile de bakabilirsiniz. 32-bit işlemcilerde 4, 64-bit işlemcilerde 8 değerini geri döndürecektir.
> sizeof<System.IntPtr>;; val it : int = 4
F# Interactive Directive’leri
F# Interactive içerisinde bulunan directive’leri şu sayfadan görebilirsiniz. Ayrıca F# Interactive içerisinde #help;; komutu ile mevcut direvtive’leri listeleyebilirsiniz.
F# Interactive directives:
#r “file.dll”;; Reference (dynamically load) the given DLL
#I “path”;; Add the given search path for referenced DLLs
#load “file.fs” …;; Load the given file(s) as if compiled and referenced
#time [“on”|”off”];; Toggle timing on/off
#help;; Display help
#quit;; Exit
F# Derleyici Directive’leri
F# Interactive küçük programlarınızı çalıştırmak için güzel bir özellik. Fakat çalıştırılabilir binary dosyalarınız için iyi bir seçim olmuyor. Bunun için Visaul Studio’ya ihtiyaç duyuyoruz. Şimdi de F# Derleyici Directive’lerine bir göz atalım;
#if koşullu derleme için kullanılır. Syntax’ı şu şekilde if <sembol>. Eğer sembol derleyici’de tanımlıysa, if directive’inden sonraki kod bloğu derlenir.
#else koşullu derleme için kullanılır. Eğer sembol tanımlanmadıysa, else bloğundan sonraki kod bloğu derlenir.
#endif koşullu derleme için kullanılır ve koşullu derlemenin bitimini gösterir.
#line orijinal kod satır numarasını ve dosya ismini gösterir.
#nowarning bir veya daha fazla uyarıyı etkisezliştmeyere yarar. F# genel olarak C#’tan daha fazla uyarı üretir.