Forum: D Programlama Dili RSS
lambda expressions
Mengu (Moderator) #1
User title: NONSERVIAM
Member since Jul 2009 · 240 posts · Location: Dersaadet
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
Subject: lambda expressions
baktim forumda herkes kacmis bir yerlere, dedim canlilik gelsin. :)

ali ustadla ikinci gorusmemizde oturduk bayagi bayagi kod yazdik. daha dogrusu o yazdi. nitekim qwerty degil dvorak kullaniyordu, haliyle ben sittin sene bir sey yazamazdim. :P kendisi sagolsun bana ayak ustu c'de onemli mevzulari da ogretti.

lambdalar, python, ruby ve fonksiyonel dillerde cok kullanilir. lambda nedir diyorsak, soyle bir goz atalim hemen: http://en.wikipedia.org/wiki/Lambda_calculus lambda ifadeleri fonksiyonel dillerin goz bebegidir.

d'de nasil oluyor bu? soyle basit bir sey yapabiliriz:

import std.stdio;
 
void ciftSayilar(bool function(int) fn, int[] sayilar)
{
    foreach(sayi; sayilar)
    {
        if (fn(sayi))
        {
            writeln("evet ", sayi, " bir cift sayi.");
        }
    }
}
 
void main()
{
    auto ciftSayiMi = function(int x) {return x % 2 == 0;};
    auto sayilar = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
    ciftSayilar(ciftSayiMi, sayilar);
}
http://www.mengu.net - ki$isel bili$im guncesi.
canalpay (Moderator) #2
User title: Can Alpay Çiftçi
Member since Jul 2009 · 1032 posts · Location: İzmir
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
ali ustadla ikinci gorusmemizde oturduk bayagi bayagi kod yazdik.
Ne ile ilgili kod yazdığınızı anlatırsınız artık :-p
nitekim qwerty degil dvorak kullaniyordu
Yazmaktan yorulduğu için çok değişik önlemler almış. :-)  Bende de aynı sorun olduğu için yavaş yazmaya alıştım. :-) farede kullanıyorsam genelde beş parmak yazıp durmadan ellerimi değiştiriyorum. Bir sol elle yazıp sağa fareyi alıyorum bir zıttını yapıyorum :-) Mecbur kalmadıkça on parmak yazmayın :-D Ben öyle yapıyorum.
lambdalar, python, ruby ve fonksiyonel dillerde cok kullanilir. lambda nedir diyorsak, soyle bir goz atalim hemen: http://en.wikipedia.org/wiki/Lambda_calculus lambda ifadeleri fonksiyonel dillerin goz bebegidir.

lambda benim kitabı okurken öğrendiğim terimdi. Anladığım kadarıyla lambda Ali Beyin derslerde anlattığı delegate ve function anahtar sözcüğü ile tanımlanan ifadeler. Özellikle delegate çok güzel. Ali Bey ilede konuşmuştuk çok az. Sadece delegate function ifadesini kapsadığını söylemiştik. Delegate ile function'un farkı delegate yollanılan işlevin değişkenini kapsam sorunu çıkarmadan kullanabiliyor ancak function kullanamıyor. Bu yüzden delegate tahminim daha yavaş. Eğer function'da delegate'in işini görüyorsa function'u kullanmalıyız.
Mengu (Moderator) #3
User title: NONSERVIAM
Member since Jul 2009 · 240 posts · Location: Dersaadet
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
Quote by canalpay:
ali ustadla ikinci gorusmemizde oturduk bayagi bayagi kod yazdik.
Ne ile ilgili kod yazdığınızı anlatırsınız artık :-p
nitekim qwerty degil dvorak kullaniyordu
Yazmaktan yorulduğu için çok değişik önlemler almış. :-)  Bende de aynı sorun olduğu için yavaş yazmaya alıştım. :-) farede kullanıyorsam genelde beş parmak yazıp durmadan ellerimi değiştiriyorum. Bir sol elle yazıp sağa fareyi alıyorum bir zıttını yapıyorum :-) Mecbur kalmadıkça on parmak yazmayın :-D Ben öyle yapıyorum.
lambdalar, python, ruby ve fonksiyonel dillerde cok kullanilir. lambda nedir diyorsak, soyle bir goz atalim hemen: http://en.wikipedia.org/wiki/Lambda_calculus lambda ifadeleri fonksiyonel dillerin goz bebegidir.

lambda benim kitabı okurken öğrendiğim terimdi. Anladığım kadarıyla lambda Ali Beyin derslerde anlattığı delegate ve function anahtar sözcüğü ile tanımlanan ifadeler. Özellikle delegate çok güzel. Ali Bey ilede konuşmuştuk çok az. Sadece delegate function ifadesini kapsadığını söylemiştik. Delegate ile function'un farkı delegate yollanılan işlevin değişkenini kapsam sorunu çıkarmadan kullanabiliyor ancak function kullanamıyor. Bu yüzden delegate tahminim daha yavaş. Eğer function'da delegate'in işini görüyorsa function'u kullanmalıyız.

kesinlikle, aynen oyle, tebrikler. :)

yok, oyle bir proje yazmadik, geyik yaptik, sunu yapalim, bunu deneyelim falan. o kadar yani. :)
http://www.mengu.net - ki$isel bili$im guncesi.
Mengu (Moderator) #4
User title: NONSERVIAM
Member since Jul 2009 · 240 posts · Location: Dersaadet
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
kitapta olup son derleyiciyle calismayan kisimlar var.

mesela ciftSayiMi fonksiyonunun arguman tanimlamalarinda "bool function(int) fn" yerine "alias fn" kullanabilecegiz.

auto ciftSayiMi = function(int x) {return x % 2 == 0;}; kisminda da function(int x) yerine (x) { } seklinde kullanabilecegiz.

tabii yapabilirlerse. :)
http://www.mengu.net - ki$isel bili$im guncesi.
canalpay (Moderator) #5
User title: Can Alpay Çiftçi
Member since Jul 2009 · 1032 posts · Location: İzmir
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
anlamadım.

yerine (x) { } seklinde

Sanıyorum böyle bir şey olmaz. Şöyle bir şey olur :

(int x) {return x % 2 == 0;};

Buda zaten çalışıyor ve ayrıca bu function değil delegate. Kaçıncı sayfada söylüyor?

Eğer doğru diyorsan şöyle bir olacak:

(x) { }     ==> function
(int x){}   ==> delegate olur.

Ancak bu bana saçma geldi.
Close Smaller – Larger + Reply to this post:
Verification code: VeriCode Please note the verification code from the picture into the text field next to it.
Smileys: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Special characters:
Not logged in. · Lost password · Register
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Current time: 2012-02-05, 11:28:27 (UTC -08:00)