I guess this is related to the expression problem.<div><br></div><div>Suppose I have a datatype</div><div><br></div><div><b>data Actor = Ball ... | Paddle ... | Wall ...</b></div><div><br></div><div>and a function</div><div>
<br></div><div><b>move (Ball ...) = </b></div><div><div><b>move (Paddle ...) = </b></div><div><div><b>move (Wall ...) = </b></div><div><br></div><div>in Haskell one must put <b>Actor</b> and <b>move</b> into a single file.</div>
<div><br></div><div><div>This is rather cumbersome if you work with multiple people or want to keep the files small and readable.</div><div><br></div></div><div>Surely it is possible to use type classes, existentials, etc to split the data type into multiple ones, but that&#39;s already advanced stuff in a sense.</div>
<div><br></div><div>But wouldn&#39;t it be possible to allow these to be put into multiple files, and let the compiler merge them back into one? A bit like C#&#39;s partial keyword:</div><div><br></div><div>in file Ball.hs:</div>
<div><b>partial data Actor = Ball ...</b></div><div><b>move (Ball ...) =</b></div><div><br></div><div>in Paddle.hs</div><div><div><b>partial data Actor = Paddle ...</b></div><div><b>move (Paddle ...) =</b></div><div><br></div>
<div>The compiler would then merge all partial data types and functions into one.</div><div><br></div><div>As far as no overlap exists in the pattern matches in move, so that the order of the pattern matches does not matter at all, the partial trick should be possible no?</div>
<div><br></div><div>Cheers,</div><div>Peter</div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div></div><div><br></div></div></div><div>              </div><div><br>
</div><div><br></div>