alt-romes / alt-romes/ghengin

Make Ghengin use an unrestricted monad

オープン
#2 コメント 0 件 リアクション 0 件 担当者 1 名 @alt-romes が担当を希望しています GitHub で見る
主要言語
Haskell
スター
85
フォーク
2
PR マージ指標
30日以内にマージされた PR はありません

説明

While I think it is a good decision for the `core` of the engine and the `renderer` implementations to use the linear IO monad to track resources, I don't think it was a good decision to have that in `ghengin`, the package bringing it all together with batteries included, for the user.

Instead, the `Ghengin` monad should wrap the renderer/core monad with `UrT` (thereby making it an unrestricted monad).
We'd ensure
* The Core implementation and management of linear resources is correct by use of linear types, and brings sanity to the developers and engine developers relying directly on core
* The batteries included ghengin does not enforce linearity everywhere on the users
* Some functions might still require linear types, that's a good thing: even though not every single thing must be tracked linearly in the monadic binding, certain things might still require linearity
* We can drop `linear-apecs` and all those hacks which are just plain wrong really.
* We'll more clearly manage renderer resources whithin the renderer (and no longer in the apecs store, which was also not a great design decision)
* I'm still unsure of how exactly to do this split between unrestricted/linear while keeping safety of resources. I think it will come down to exposing just the right amount of linear functions for the things that do need linearity, but I don't think it'll be easy

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。