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
binaryissues regarding the binary bin/refabricate.execonceptwork on concept(s) - not possible to implement yetlibraryissues regarding the library RefabricatorquestionFurther information is requested
The current implementation sometimes feels like a bad rough implementation of something similar to reactive streams. - so why not go the full mile and actually use an established strems library?
The text was updated successfully, but these errors were encountered:
woeps
added
binary
issues regarding the binary bin/refabricate.exe
concept
work on concept(s) - not possible to implement yet
library
issues regarding the library Refabricator
question
Further information is requested
labels
Feb 25, 2020
After a little reading into the libraries, I would lean towards usint React.E
Types
In relation to #18 : Types could be changed to something like:
type meta = { name: string };
type fabric('t) = (meta, 't);
type fabricator('out) = React.E.t(fabric('out));
type refabricator('in, 'out) = React.E.t(fabric('in)) => React.t(fabric('out)); // this will be usually done by using React's lifting functions
type factory('in, 'outOk, 'outErr) = React.E.t(fabric('in)) => React.E.t(fabric(Result.t('outOk, 'outErr)));
Refabricator Constructor
Additionally a constructor for refabricators could be provided like:
let makeRefabricator: (fabric('in) => fabric('out)) => Types.refabricator('in, out) = React.E.l1;
This means just implementing the map function is enough.
Error Handling
String
I'm not sure though how to handles errors in (re-) fabricators. Maybe limit a factories error type to just string and ok to just the fabric? (Re-) fabricators could send the same result type. Errors Would be passed through.
This means only the component which runs into the error could handle or compensate it accordingly. Having compensations in another component would mean matching and de-/serializing a string, which is't a good idea.
Polymorphic Variant
Or just use polymorphic variants and define some common errors in Types.error. In this case every component will need to handle all commonly defined errors and/or pass every other polymorphic variant through to the next component.
This would probably mean factory would become obsolete, because its just a refabricator. Lib.Main would then add a print function which takes a list of pp ("pretty print") functions:
type pp_error('e) => ('e => string);
let errorsToString: list(pp_error) => string;
This would mean any custom component could implement it's own pp_error function and add it as an argument to errorsToString.
A default pp_error function for the common errors could be "pre-injected" into a helper function to errorsToString.
I started experimenting with React on the experiment/react branch.
Once I have a good understanding of how I want to use React, I'll send a separate PR switching everything over to using React.
binaryissues regarding the binary bin/refabricate.execonceptwork on concept(s) - not possible to implement yetlibraryissues regarding the library RefabricatorquestionFurther information is requested
The current implementation sometimes feels like a bad rough implementation of something similar to reactive streams. - so why not go the full mile and actually use an established strems library?
I'd be very much interested in some opinnions!
Some libraries I found:
The text was updated successfully, but these errors were encountered: