--- Yohanes Santoso <[EMAIL PROTECTED]> wrote:
> "Aditya Agustyana" <[EMAIL PROTECTED]> writes:
> 
> > makelum karena bhs inggris ku payah, baca2 ttng Proc & lamda di
> > Pickaxe ndak ngerti2 juga

> bingung dengan proc & lambda? Kalau ya, bisa jelaskan bingung di
> mananya? 

mungkin bingungnya recursive :-)
proc dan lambda disediakan utk men-support higher order function di ruby. 
higher order function? function yg bisa terima function sbg arg dan return
function. 
artinya kita bisa maen functional programming style di ruby. 

misalkan currying function, dari dave burt (
http://redhanded.hobix.com/inspect/hoppingThroughPipesAndClosures.html )

# curry :: ((a, b) -> c) -> a -> b -> c
curry = proc {|f| proc {|x| proc {|y| f[x, y] } } }

si curry ini mengubah function dng 2 args menjadi 1 arg, misalken:
foo = proc {|a,b| a + b }
foo_c = curry[foo] # curried foo

sehingga:
foo[1,2] == foo_c[1][2] # true

tentu saja kita juga bisa membuat uncurry function:
uncurry = proc {|f| proc {|x,y| f[x][y] }}
foo_uc = uncurry[foo_c]
foo_uc[1,2] == foo_c[1][2] # true


jim weirich pernah ngasi liat pemakaian proc utk membuat apa yg dia sebut sbg
"simulated continuation", coba check situsnya onestepback.org. 
dia membahas fungsi tail-rekursif dng CPS - continuation passing style - dan
mengubahnya menjadi non-rekursif. dia pake "simulated continuation" dan callcc.
really cool! :-)


rgds,
Edwin.




      
________________________________________________________ 
Kunjungi halaman depan Yahoo! Indonesia yang baru! 
http://id.yahoo.com/

Kirim email ke