AccelerateHS / AccelerateHS/accelerate
Support recursive functions
- 主要言語
- Haskell
- スター
- 1k
- フォーク
- 135
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
Would it be feasible to add a combinator that looks like this?
```
ewhile :: (Elt a, Elt b) => (Exp a -> Exp (Either b a)) -> Exp a -> Exp b
```
It would iteratively feed the values of type `a` back into the function, until it gets a `Left` value. Once it gets a `Left` value, it would stop.
I started trying to add it myself, but I got stuck when it looked like I needed to implement an `Elt` instance for `Either`. It seems like, in theory, this shouldn't require an `Elt` instance because the `Either` can only ever be used for determining control flow in one particular combinator so an actual representation of the `Either` would never really be needed.
The use case is that I am working on a translation system that converts (more-or-less) normal Haskell code to Haskell code that uses Accelerate. At the moment, it seems like it would be significantly easier to convert general tail recursive functions into a call to something like `ewhile` than it would to the existing `while`.
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
評価
この issue はまだ評価されていません。