In cases where we know the arity, it should be possible to avoid call-with-values. We would also like to be able to deforest multi-valued sequences like (~> (>< sqr) (pass add1) (but these higher-order flows could be multi-valued --- so they can't just be rewritten to map and filter and use the single-valued deforested pipeline that we already have. We could potentially have a separate, similar deforested pipeline for multiple values, and use that only for known-multi-valued settings, using the single-valued ones for cases where we know there is a single value flowing.
We could also use this in △ and ▽.
Challenges: might need a lot of intermediate datastructures to track values along the way.
In cases where we know the arity, it should be possible to avoid
call-with-values. We would also like to be able to deforest multi-valued sequences like(~> (>< sqr) (pass add1)(but these higher-order flows could be multi-valued --- so they can't just be rewritten tomapandfilterand use the single-valued deforested pipeline that we already have. We could potentially have a separate, similar deforested pipeline for multiple values, and use that only for known-multi-valued settings, using the single-valued ones for cases where we know there is a single value flowing.We could also use this in
△and▽.Challenges: might need a lot of intermediate datastructures to track values along the way.