streamly/targets
Harendra Kumar e249c4da2d Use StreamD by default, expose StreamK as separate module
Basically remove depdency on GHC rewrite rules. The reason for
separating StreamD and StreamK instead of using rewrite rules:

* Separate types provide better reasoning for the programmer about
  performance. Each type has its own pros and cons and the programmer
  can choose the best one based on the use case.
* rewrite rules are fragile, led to broken performance in the past dues
  to change in GHC.
* Rewrite rules lead to optimization problems, blocking fusion in some
  cases, specifically when combining multiple operations e.g. (filter . drop).
* Rewrite rules lead to problems when calling a function recursively. For
  example, the StreamD version of foldBreak cannot be used recursively when
  wrapped in rewrite rules because each recursive call adds a roundtrip
  conversion from D to K and back to D. We can use the StreamK versions of
  these though because the rewrite rule gets eliminated in that case.
* If we have a unified module, we need two different versions of several
  operations e.g. appendK and appendD, both are useful in different cases.
2023-02-06 22:09:26 +05:30
..
cabal.project Refactor targets to be used in test driver as well 2022-04-26 19:48:52 +05:30
default.nix Refactor targets to be used in test driver as well 2022-04-26 19:48:52 +05:30
streamly-targets.cabal Refactor targets to be used in test driver as well 2022-04-26 19:48:52 +05:30
Targets.hs Use StreamD by default, expose StreamK as separate module 2023-02-06 22:09:26 +05:30