Comments (1)
Hi @haashem
The difference between IOEither
and Either
is that IOEither
is designed for handling synchronous side effects, while Either
is not supposed to run any side effect at all.
An example would be reading and validating a user input:
/// No side effects, [Either]
Either<String, String> validateUserInput(String? userInput) => userInput
.toEither(
() => "Missing user input",
)
.flatMap(
(str) => str.isEmpty ? Either.left("Empty input") : Either.of(str),
);
/// IO side effect, [IOEither]
IOEither<String, String> getAndValidateUserInput = IOEither(() {
final line = stdin.readLineSync(); /// 👈 Side effect
return validateUserInput(line);
});
- As you can see, the validation itself does not include any side effect: it only takes a
String?
and returns anEither
, without any IO event or external request (no side effects) - On the other hand, getting the user input requires an IO event, which is a side effect. Therefore this operation requires to convert
Either
toIOEither
Let me know if this example is clear to understand the difference.
from fpdart.
Related Issues (20)
- Add methods to convert `IO` to other classes (`TaskEither`, `TaskOption`, `IOEither`)
- Llinks are not working HOT 1
- fpdart v1.0.0 HOT 20
- Add getOrThrow for Either TaskEither HOT 1
- slight typo in lib/src/class/applicative.dart
- [BUG]: unnable to create stubs any of the fpdart types HOT 7
- DISCUSSION : Extension HOT 1
- Factory const constructor(s) HOT 1
- [Question] Update 0.6.0 functions to 1.1.0 HOT 2
- Mockito can't generate stubs for functions returning Either HOT 1
- Help with adaptation to fpdart HOT 13
- Support for TaskEither.tryCatchK HOT 1
- Code formatting HOT 2
- Anchors in menu of readme file doesn't work HOT 2
- Export fpdart package conflict with State of material. HOT 3
- Do Notation throws instance of '_OptionThrow' HOT 7
- [question] cannot use .andThen in option HOT 4
- TaskEither from predicate should accept a FutureOr. HOT 1
- How do i chain TaskEither with flatMap properly HOT 2
- Help converting error types HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fpdart.