2017-10-09 65 views
1

閱讀John Hughes的Generalising monads to arrows,我知道箭頭可用於表示和組合流處理器與單輸入和單輸出。也可以使用成對來表示多個輸入和輸出,或使用ArrowChoice具有多個輸入和輸出的流處理器,如箭頭所示

但是,使用一對意味着輸入是一串對,它不足以表達處理速率不同的處理流。 ArrowChoice能夠表達,但它在一個單獨的「多路複用」兩個流。

我正在尋找一種方法來結合具有多個輸入和多個輸出的流,同時仍能夠區分流複用的情況和單獨流的情況。

這可能嗎?

回答

0

也許你可以使用These類型(from here),其被定義爲:

data These a b = This a | That b | These a b 

這樣你可以表達您正在接收一個數據流,或另一個或兩者。

+0

我不確定這是否解決了我的問題。我想定義一種類型來表示具有0個或更多輸入和0個或更多個輸出的流處理器,並且能夠組合這些處理器類似於使用箭頭的單輸入單輸出處理器。 –

+0

我不確定我是否理解。假設你有'S(或b)(或c d)'類型的值,你想要某種方式來說明它是單流處理器還是流處理器複用兩個流? – villou24

+0

我的目標是將這些流處理器轉換爲FPGA的硬件。爲此,我希望能夠有兩種不同的結構:接受兩個流的處理器和接受任一類型的單個流的處理器。這些可以轉換爲不同的硬件接口:兩個輸入FIFO或一個多路複用的FIFO。 –