我剛剛把我的頭圍繞monads(至少我想我認爲我),更具體地說是國家monad,有些人更聰明,然後我想通了,所以我可能與這個問題。State Monad,爲什麼不是元組?
反正狀態單子通常與A M實施<「一>作爲像這樣(F#):
type State<'a, 'state> = State of ('state -> 'a * 'state)
現在我的問題:是否有任何理由,爲什麼你不能使用一個元組這裏?除此之外,MonadA<'a, 'b>
和MonadB<'a, 'b>
之間可能存在的不確定性,它們都會成爲等效的('a * 'b)
元組。
編輯:新增例如爲清楚起見
type StateMonad() =
member m.Return a = (fun s -> a, s)
member m.Bind(x, f) = (fun s -> let a, s_ = x s in f a s_)
let state = new StateMonad()
let getState = (fun s -> s, s)
let setState s = (fun _ ->(), s)
let execute m s = m s |> fst
問題是什麼?在哪裏使用元組?函數的返回類型是一個元組。 – Brian 2010-04-07 20:39:37
不使用元組而不是狀態類型,只返回一個函數而不是狀態。 – thr 2010-04-07 20:45:53