Giter Club home page Giter Club logo

Comments (4)

stephencelis avatar stephencelis commented on May 16, 2024

This is interesting to think about! In the reusable favoriting component example the favorite higher-order reducer takes an environment function that can describe a favoriting request given an environment:

func favorite<ID>(
state: WritableKeyPath<State, FavoriteState<ID>>,
action: CasePath<Action, FavoriteAction>,
environment: @escaping (Environment) -> FavoriteEnvironment<ID>
) -> Reducer where ID: Hashable {

This functionality is then combined with an episodeReducer:

let episodeReducer = Reducer<EpisodeState, EpisodeAction, EpisodeEnvironment>.empty.favorite(

With a forEach such as yours above, one could potentially define a favorites as a specialized forEach for favoriting without much work.

I'm trying to think through other use cases and how it affects other versions of forEach (like the one that works with arrays by index and the one that works with dictionaries by key). What could they do if index or key were exposed to the environment part of forEach?

from swift-composable-architecture.

toddwbates avatar toddwbates commented on May 16, 2024

After studying the favoriting I'm wonder that this could be implemented as an alternative to the current forEach. It might make things like grouping downloads easier. If the app was web page like, (I used to work at eBay and old habits die hard) then there are times when you want to kill all the loads from a single page. Having a chained environment would make this easier. It also can minimize use of global queues, such as currently being used in the cancelable functionality. It feels a little odd to have the environment produce effects but then cancel is triggered from the Effect class itself.

I'm not sure if its better to do this or have a concept of path.

from swift-composable-architecture.

stephencelis avatar stephencelis commented on May 16, 2024

@toddwbates We just got a Swift forum that should be nice for discussions like this and allow us to keep GitHub issues focused on bugs. Would you be up for moving the discussion there and closing this out? Would also love to see some motivating examples of this kind of forEach transformation. Maybe with a PR 🤩

from swift-composable-architecture.

toddwbates avatar toddwbates commented on May 16, 2024

Sure, I'll try and get one set up asap.

from swift-composable-architecture.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.