AydınBaltacıBlog!

Beni mutlu eden her şey!

Bulunduğunuz Arşiv Zamanı Aralık, 2009.

Ml ile fonksiyonel programlama 2

VN:F [1.8.6_1065]
Rating: 8.3/10 (4 votes cast)

ML Programlama konusundan devam;
aldığım notlar kadar örnekleri buraya da geçirmeye çalıştım yukarıda linki verilen giriş konusundan compiler(derleyici)linkine ulaşıp kurulumu yaptıktan sonra komutları çalıştırabilirsiniz.
ML tanım örnekleri:
17;
val it=17:int   için;derleyicide 17 komutunu girdiğinizde karşılık olarak val it’de girilen değerin bir belirli adı olmayışından kaynaklı “val it” kullanılmakta bu değerin =17 olduğu ve type’ının integer(tam sayı) olduğunu belirtir.diğer bir örnek:
2+3;
val it=5:int
Ml’de negatif işaretli sayıları karşılamak için tilda(~) kullanılır.~3 gibi,ayrıca tanımlı operatörlere göz atacak olursak; div , mod , abs , + , – , / , * ve ~ .  Fakat / ile integerlar(tam sayı) üzerinde işlem yapılamadığını da not düşelim.
operatorlar için örnek vermek gerekirse;  3/4′ün Ml üzerinde 3div4  şeklinde gösterildiğini söylemek yeterli olacaktır.
Ayrıca typelar her zamankinden daha önemli bir yer tutuyor Ml üzerinde,işleme giren typelar aynı türden olmalı ve sonucu da yine aynı type üzerinden vermelidir,int ve int işleme girebilir ve sonuç integer olarak çıkar.
String:
**örn:
“Hello”;
val it= “Hello”:string
size “Hello”;
val it=5:int
List mantığı:
Listleri Ml’de arraylere benzetebiliriz,tek farkı indexi olmayışı yani yanlızca ilk elemana access edebilmemizdir.
list kullanımı:
**örn:
[1,2,3];
val it=[1,2,3]:int list
["me","you"];
val it=["me","you"]:string list  şeklinde homojen(aynı tipte eleman bulunduran) listeler oluşturabilmemiz mümkün ayrıca; 2 listeyi veya bir elaman ile bir listeyi birleştirebiliyoruz bunuda bir örnek ile açıklamak gerekirse;
**örn:
1::[2,3];
val it=[1,2,3]:int list   veya
5::3::nil;  burada nil empty listdir.yani 3::nil’in karşılığı [3]‘dür.sonuç olarak 5:: ile  3::nil ‘in karşılığı;
[5,3] olur.
val it=[5,3]:int list
birde listteki index yok açıklamasının yanına head ve tail’ide ilave etmek gerekli:
[1,2,3] listesi örneğimiz olsun bu listede head=1 ve tail=[2,3]‘tür yani baş ve kalan şeklinde ayırıyoruz.[2,3] için head=2 tail = 3 olur.Ve [3] için ise head=3 tail=nil(empty list)’dir.
Yine bir eleman ve listeyi birleştirmeyi örneklemiştik 2 ayrı listeyi birleştirmek için ise @ işaretini kullanacağız örnek vermek gerekirse:
**örn:
[1,2]@[5,4];
val it=[1,2,5,4]:int list  olur.

tarlamı da koyarım gözüm renklenir nereye kadar fonksiyon değil mi okur..

tarlamı da koyarım gözüm renklenir nereye kadar fonksiyon değil mi okur..

Fonksiyonlar:

fun f(x)=x+1;
val f=fn:int->int   burada f fonksiyonun adıdır,fn fonksiyonu gösterir,int ise parametrenin type’ıdır burada int diye özellikle belirtilmese bile x+1′de 1 int olduğu için ve daha evvede Ml’de işlem gören elemanların aynı type’da olmak zorunda olduklarını söyledğimizden otomatik olarak x’i de int olarak algılar. ->int ise return type’ı gösterir.birkaç örnek ile devam edelim:

**örn:

fun f(x)=x+1;
val f=fn:int->int   burada f fonksiyonun adıdır,fn fonksiyonu gösterir,int ise parametrenin type’ıdır burada int diye özellikle belirtilmese bile x+1′de 1 int olduğu için ve daha evvede Ml’de işlem gören elemanların aynı type’da olmak zorunda olduklarını söyledğimizden otomatik olarak x’i de int olarak algılar. ->int ise return type’ı gösterir.birkaç örnek ile devam edelim:fun f(x)=x+1;f(2);

val it=3:int    bu fonsiyonu ilk örnek olarak yazmıştık alt satırda f(2) ile fonksiyondaki x parametresine 2′yi yolladık ve işlem sonucunu en alt satırda 3:int olarak aldık diğer fonksiyon örneklerine göz atmak gerekirse:
fun square(t)=t*t;
val square=fn:int->int  örneğinde return type’ın integer olduğunu görüyoruz bunun sebebi matematiksel operatörlerde Ml’in otomatik olarak type’ı int almasıdır.
listedeki ilk elemanı gösteren bir fonksiyon yazalım:
**örn:
fun first(head::tail)=head;
val first=fn:a list->a
first ([5,7,3]);
val it=5:int
Listenin son elemanını gösterecek olan bir fonksiyon yazalım ama listelerde index yoktu bunun için head ve tail olarak listeleri ayıracağız ve son olarak elimizde nil(empty list) kalıncaya kadar listeyi bölmeye devam eden bir fonksiyon yazmamız gerekli:
**örn:
fun last(h::nil)=h|
last(h::t)=last(t);  çalışma şeklini örnekle inceleyecek olursak :
last([5,7,3]);
h=5  ve t=[7,3] olur,head ile işimiz olmadığından tail ile aynı işlem devam edecek:
last([7,3]);
h=7  t=[3]
last([3]);
h=3  t=nil  artık tail’de nil’e ulaştığımıza göre listenin son elemanını bulmuşuz demektir.
val it=3::nil
Fonksiyon örneklerine devam edecek olursak,bir listenin elemanlarının değerlerini birer arttıralım:
[1,2,3] listesini [2,3,4]‘e dönüştürmek için kullanacağımız fonksiyonu yazalım:
**örn:
fun incr(nil)=nil|
incr(x::y)= x+1::incr(y);  çalışma şekline şöyle bir göz atacak olursak:
incr([1,2,3]);
x=1
y=[2,3]  ve
2::incr([2,3])
x=2  ve y=[3]
3::incr([3])
x=3  ve y=nil
4::incr([nil])
2::3::4::nil  =>  [2,3,4]  şeklinde liste dönüştürülmüş olur.
Ml fonksiyonları hakkında kalan örnekleri ve diğer konuların tanımlarına daha sonra devam edeceğim,yine daha ayrıntılı bilgiye ulaşmak için ilk konuda verdiğim tutorial içeren resmi adresi kullanabilirsiniz,Ml için türkçe kaynak veya yardım veren bir içerik ne yazıkki ben bu yazıyı yazarken yoktu..

EkleBunu Sosyal Paylaşım Butonu
VN:F [1.8.6_1065]
Rating: 0 (from 0 votes)

Yayınlanma: 9 ay önce 21:25.

2 yorumlar

neşeli hayat

VN:F [1.8.6_1065]
Rating: 0.0/10 (0 votes cast)

Bu ara sınav ertesi,bayram tatili derken bol bol gezip kafa dağıttığım bir haftaya dönüştü,bu arada sinemalarda da uzun zamandır beklenen iki filmin(new moon ki şahsen pek beklediğim söylenemez ve 2012′nin bu filmler olduğunu belirtelim.)arasından lüzumsuzların en önde gideni sinema eleştirmenlerinin de gazı ile Yılmaz Erdoğan’ın Neşeli Hayat adlı filmine gitmiş bulunduk.IMDB veya diğer herhangi bir sinema sitesinde denk geldiyseniz filmin komedi filmi olması gerektiğini veya böyle bir bilgi ile sunulduğunu görmüşsünüzdür,aldanmayın film komedi filmi değil,dram da değil,aksiyon hiç değil.Öyle ise ne diyecek olursanız ben size şöyle söyleyeyim film tam bir TV filmi,sinema için tercih listeme pek de uygun değil benim için,ama kötü diye de nitelenecek vasıfsız bir film olduğunu söylemek acımasızlık olur.

neşeli hayat

neşeli hayat

Sinemaya gitmenize  gerek yok demek sert gibi gelebilir ama,elinizde dümdüz giden ne sağa ne sola sapan,ne güldüren,ne ağlatan,hiç bir şekilde duygu bölünmesine yol açmayacak veya sinemadan çıkarçıkmaz aklınızda yer etmeyecek bir senaryo olduğunu düşünün,bu senaryoda ise Yilmaz Erdogan,Ersin Korkut ikilisi başrollerde kamera önünde,kalan bkm oyuncuları ise 5′er dakikalık toplam kamera önü parodileri ile karşınızda olsun,işte Neşeli Hayat bu kadar.Keçiboynuzu misali bir film,hele hele Yılmaz Erdoğan’ın en başarılı filmi,çok muhteşem tarzı yorum yapan Atilla Dorsay ve çetesinin kalemlerinin artık iyiden iyiye satılık olduğunu düşündüren film oldu gözümde Neşeli Hayat..Ha Yılmaz Erdoğan’ın filmdeki performansı çok başarılıydı denilse idi o başka,gerçekten farklı bir portre çizmiş,oyunculuğu zaten bildiğiniz üzere gayet iyi.
Bu kadar eleştirdin ama,ben dümdüz beni yormayacak,kafamı kurcalamayacak,beni ne çok güldürecek nede üzecek bir film arıyorum,konu,oyuncular,mesaj hiç bir şey mühim değil film olsun çıkınca da bir daha aklıma dahi gelmesin adı diyorsanız,işte o noktada Neşeli Hayat sizin filminizdir,gidin görün hatta kaçırmayın bu nitelikleri aramakta iseniz..
filmin tüm kadrosu: http://www.imdb.com/title/tt1523515/fullcredits#cast

EkleBunu Sosyal Paylaşım Butonu
VN:F [1.8.6_1065]
Rating: 0 (from 0 votes)

Yayınlanma: 9 ay, 1 hafta önce 21:15.

Yorum Ekle

Follow Aydinbltc on Twitter