spebbe / dartz

Functional programming in Dart
MIT License
749 stars 60 forks source link

Why doesn't dartz work with non-lambda functions? #110

Open gerryau opened 2 years ago

gerryau commented 2 years ago

I have been going through a refactoring stage of a code base and looking through a list of snippets like:

  Either<ValueFailure<dynamic>, Unit> get failureOrUnit => value.fold(
        (l) => left(l),
        (r) => right(unit),
      );

If I attempt to change the first lamda function: (l) => left(l) to simply: left the code breaks. There are no errors, but the code doesn't work. Attempted code refactor:

  Either<ValueFailure<dynamic>, Unit> get failureOrUnit => value.fold(
        left,
        (r) => right(unit),
      );

Is someone able to explain this or tell me what I am missing here. Thank you.

cranst0n commented 2 years ago

Best guess is the type inference, or lack thereof, is causing issues. Try adding this to your 'analysis_options.yaml` file if it's not already in there:

analyzer:
  language:
    strict-inference: true