Effect data type would define both inputs and outputs -- but that's not the case, is it? Any time we pass a callback to Effect.sync() or Effect.promise() and the like, the callback never takes any input; rather we wrap everything in a function that receives input and then the effect's callback works on that input as a closure-bound variable. Am I making sense?