You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Replace usage of such types with `Type.Proxy (Proxy(..))`.
432
-
- Removed deprecated `MonadZero` type class and all of its deprecated instances.
433
+
- See the recommendation about updating the `forall proxy.` workaround at the bottom of this file.
433
434
434
435
### Removal of deprecated things and their replacements
435
436
@@ -848,6 +849,39 @@ These three functions were defined in `purescript-web-dom` and duplicated in the
848
849
849
850
## Other Recommendations
850
851
852
+
### Removing the `forall proxy.` workaround
853
+
854
+
In `0.13.x`, we did not have a kind-polymorphic `Proxy` type (e.g. `data Proxy :: forall k. k -> Type`). So, each kind needed its own `Proxy` type, producing a zoo of such types:
bar :: forall row. RowCons "foo" Int () row => RProxy row -> ...
865
+
```
866
+
867
+
In `0.14.0`, when polykinds were implemented, we got a kind-generic `Proxy` type. Thus, the zoo of `Proxy` types were no longer needed. However, to reduce breakage, we used a `forall proxy.` workaround so that both the kind-specific and kind-generic version worked.
foo (SProxy :: SProxy "a") -- kind-specific Proxy type works!
875
+
foo (Proxy :: Proxy "a") -- kind-generic Proxy type also works!
876
+
```
877
+
878
+
In `0.15.x`, the zoo of `Proxy` types were removed. **Thus, the `forall proxy.` workaround SHOULD be removed in all libraries as doing so improves type inference.**
0 commit comments