我有這樣的功能:IO序列哈斯克爾
sequence :: [IO a] -> IO [a]
sequence [] = pure []
sequence (op:ops) = do
x <- op
xs <- sequence ops
return (x:xs)
剛剛寫入的IO操作的順序。
問題是我想編寫相同的函數,但是完全不使用'do notation',只是使用操作符>>和>> =來代替。
我已經有該版本:
mySequence:: [IO a]-> IO [a]
mySequence [] = pure []
mySequence (op:ops) =
op >> sequence ops
但它不會例如與輸入[純1,純2]工作。
任何人都可以幫助我嗎?
在此先感謝。
在'do'版本中,您有2個綁定和一個return語句。在沒有'do'的版本中,你使用'>>',它放棄了它左邊的操作數的結果,並且你唯一返回的是'[]'。 'do'版本也使用':'運算符,而''''''''''版本不支持。 – sepp2k