
hello racketeers, I have a question for those who are knowledgeable about history behind Racket’s process and subprocess procedures.

I was playing around with subprocess and its close cousin process. One thing that puzzled me was how subprocess returns its output as values, requiring define-values to bind to them, however process and its variants return a list so I’m using car/cdr to get at the values instead of define-values. I was wondering why such different output interfaces were designed for subprocess and process?

It seems more consistent to have the same output for both considering they are used for very similar purposes.

@abmclin I don’t know for this specific case, but I think in general this kind of discrepancy isn’t intentional, and is there for “historical” reasons.

@abmclin there regularly are some thoughts about dropping values altogether in “Racket 2” / remix / whatever it will be called, and instead adding pattern-matching in many binding places, so hopefully this kind of thing would disappear at some point in the future.

Oh interesting! That’s nice to know. I figured the discrepancy likely was historical, was curious to see if there was any deeper reason.

@abhi18av has joined the channel