There were a number of emails discussing what a type-safe list solution would like look. This was the approach that first came to mind when I read your email (but I've had my head in Agda lately)
<div><br></div><div><a href="http://hpaste.org/44469/software_stack_puzzle">http://hpaste.org/44469/software_stack_puzzle</a></div><div><br></div><div>I&#39;ve written up a minimal working example of this approach for those that are curious.</div>
<div><br></div><div><br></div><div>As for the Haskell98 approach, I&#39;d love to see a solution that didn&#39;t require deserialization/serialization at each layer boundary. This sounds like a case for the techniques used in list fusion, but GHC RULES are hardly Haskell98 :-) I&#39;d also like to avoid cramming all of the possible layer input and output types into one giant ADT in such a solution.</div>
<div><br></div><div>-- </div><div>Eric Mertens</div>