Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- type t('a) =
- | E: t([ | `Empty])
- | F(string): t([ | `Ready]);
- type action =
- | No;
- let component = ReasonReact.reducerComponent("Page");
- let make = _children => {
- ...component,
- initialState: () => E,
- reducer: (action, state: t('a)) =>
- switch (action) {
- | No => ReasonReact.Update(F("action"))
- },
- render: self => {
- let message: type a. t(a) => string =
- state =>
- switch (state) {
- | E => "empty"
- | F(msg) => msg
- };
- <div> (ReasonReact.stringToElement(message(self.state))) </div>;
- },
- };
- This has type:
- ReasonReact.componentSpec
- (ReactTemplate.Page.t([ `Ready ]), ReactTemplate.Page.t([ `Empty ]),
- ReasonReact.noRetainedProps, ReasonReact.noRetainedProps,
- ReactTemplate.Page.action)
- But somewhere wanted:
- ReasonReact.component (ReactTemplate.Page.t([ `Ready ]), 'a, 'b)
- (defined as
- ReasonReact.componentSpec
- (ReactTemplate.Page.t([ `Ready ]), ReactTemplate.Page.t([ `Ready ]),
- 'a, 'a, 'b))
- The incompatible parts:
- ReactTemplate.Page.t([ `Empty ]) (defined as
- ReactTemplate.Page.t([ `Empty ]))
- vs
- ReactTemplate.Page.t([ `Ready ]) (defined as
- ReactTemplate.Page.t([ `Ready ]))
- These two variant types have no intersection
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement