derodevil
- 13/10/2012 12:33 PM
#21
Quote:
Original Posted By erilive ►
Lebih elegan. Karena implementasi monad di C# yang mengharuskan semua type harus didefinisikan dan juga akan mengalami kesulitan untuk mendefinisikan currying, yang di dalam F# lebih alami.
State monad in F#:
[CODE]
module StateMonad
let >>(=) x f =
(fun s0 >-
let a,s = x s0
f a s)
let returnS a = (fun s >- a, s)
type StateBuilder() =
member m.Bind(x, f) = x >>= f
member m.Return a = returnS a
let state = new StateBuilder()
let getState = (fun s >- s, s)
let setState s = (fun _ >- (),s)
let Execute m s = m s >| fst
[/CODE]
Mencoba implementasi State monad di C#? Modiar gan..
Sudah ada yang implementasi di:
http://taumuon-jabuka.blogspot.com/2012/06/state-monad-in-c-and-f.html
ini contohnya:
![[F#]Para programmer F# dan functional programming disini yah :)](https://dl.kaskus.id/lh4.ggpht.com/-zkvclYJfgK4/T8-pVe6baXI/AAAAAAAAAWY/aZ4A5LGgbVM/clip_image007_thumb%25255B1%25255D.png?imgmax=800)
Dan untuk implementasi bind seperti >>= di F# atas:
![[F#]Para programmer F# dan functional programming disini yah :)](https://dl.kaskus.id/lh5.ggpht.com/-k_SpEDd4aGg/T8-pWYaEmcI/AAAAAAAAAWo/EUGak_ww8lc/clip_image008_thumb%25255B3%25255D.png?imgmax=800)
Seperti yang saya sebutkan di blog saya, tuple di F# adalah bagian yang tak terpisahkan sedangkan di C# dan VB harus didefinisikan secara explisit.
Apalagi untuk operator >>= di C# dan VB tidak bisa didefiniskan, di F# bisa. Akhirnya lebih elegan, gan
Lebih elegan. Karena implementasi monad di C# yang mengharuskan semua type harus didefinisikan dan juga akan mengalami kesulitan untuk mendefinisikan currying, yang di dalam F# lebih alami.
State monad in F#:
[CODE]
module StateMonad
let >>(=) x f =
(fun s0 >-
let a,s = x s0
f a s)
let returnS a = (fun s >- a, s)
type StateBuilder() =
member m.Bind(x, f) = x >>= f
member m.Return a = returnS a
let state = new StateBuilder()
let getState = (fun s >- s, s)
let setState s = (fun _ >- (),s)
let Execute m s = m s >| fst
[/CODE]
Mencoba implementasi State monad di C#? Modiar gan..
Sudah ada yang implementasi di:
http://taumuon-jabuka.blogspot.com/2012/06/state-monad-in-c-and-f.html
ini contohnya:
![[F#]Para programmer F# dan functional programming disini yah :)](https://dl.kaskus.id/lh4.ggpht.com/-zkvclYJfgK4/T8-pVe6baXI/AAAAAAAAAWY/aZ4A5LGgbVM/clip_image007_thumb%25255B1%25255D.png?imgmax=800)
Dan untuk implementasi bind seperti >>= di F# atas:
![[F#]Para programmer F# dan functional programming disini yah :)](https://dl.kaskus.id/lh5.ggpht.com/-k_SpEDd4aGg/T8-pWYaEmcI/AAAAAAAAAWo/EUGak_ww8lc/clip_image008_thumb%25255B3%25255D.png?imgmax=800)
Seperti yang saya sebutkan di blog saya, tuple di F# adalah bagian yang tak terpisahkan sedangkan di C# dan VB harus didefinisikan secara explisit.
Apalagi untuk operator >>= di C# dan VB tidak bisa didefiniskan, di F# bisa. Akhirnya lebih elegan, gan

Dr dulu ane nyari bhs pmrograman yg simpel, "manusiawi" tp "kuat". Sptnya ada di F# nih. Di sela2 jam kantor ane musti pelajarin nih konsep sekaligus syntaxnya. Btw, blog agan mantap tuh. Lanjut gan, ane nyimak
