在Haskell中,Iteratee based I/O看起來很有吸引力。迭代器是一種可組合的,安全的,快速的I/O方式,受到函數式語言中'fold'a.k.a.'reduce'函數的啓發。 基本上,如果你有遍歷,這個想法是把遍歷狀態封裝到一個所謂的「枚舉器」中,他調用了「迭代器」,它又是一個函數,它返回一個值或者一個請求以獲得更多的數據以及一個延續供調查員致電。因此只有枚舉器知道遍歷的狀態,而迭代器知道如何處理數據並從中創建值。關於它的好處是迭代器可以自動組合,其中一個迭代器的輸出被饋送到另一個迭代器以產生更大的迭代器。在非函數式語言中迭代I/O是否有意義?
於是,兩個問題:
- 請問概念甚至讓SENCE在其他語言,如純面向對象的語言呢,還是克服Haskell的懶惰我的缺點有用/ O?
- 是否有其他語言的實際實現,特別是C#(因爲這是我公司使用的)? (谷歌搜索在Scala中提到了一次迭代;當然,我現在對Scala沒有興趣)。
這不是基本上C#5.0中的新異步內容是爲什麼設計的嗎?機制是不同的,但底層實現基本上是一個延續傳遞的實現。 –
感謝您指出 - 我還不知道這件事,它看起來令人興奮,所以我必須研究它,儘管我看不到它與iteratees有很多共同之處。 ;-) – firefrorefiddle