F# Programını Çalıştırmak

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.

fsharp1.pngfsharp2.png

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.

fsharp3.png

fsharp4.png

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.