<div dir="ltr"><div dir="ltr">On Wed, Dec 4, 2024 at 9:31 AM julian <a href="http://getcontented.com.au">getcontented.com.au</a> <<a href="mailto:julian@getcontented.com.au">julian@getcontented.com.au</a>> wrote:</div><div class="gmail_quote gmail_quote_container"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">One of the things a little strange about the programming industry is how quick we are to invent entirely new languages rather than attempt to modify existing ones and beat them into a new more flexible shape so we can shoehorn our new requirements into a more flexible frame. I realise it’s not always possible, but surely if we all got together and worked on it we could do it?<br></blockquote><div><br></div><div>Generally at the price of breaking backward compatibility, which is already a major issue with GHC and would get much worse here.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">It would be *glorious* if stack (or cabal, or whatever package manager we use) itself were programmable in the sense that it could be called from within Haskell itself using a typed API and data could drive its included packages, and its type could be a function whose range was IO ByteString, providing the compiled binary.<br></blockquote><div><br></div><div>The Cabal library is already largely programmable in this sense, although as it drives system tools you have the problem that inputs and outputs are disk files coming from or going to those tools. Changing this requires changing the system tools, or reimplementing them which would be prohibitively difficult and subject to regular breakage.</div><div><br></div></div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div>brandon s allbery kf8nh</div><div><a href="mailto:allbery.b@gmail.com" target="_blank">allbery.b@gmail.com</a></div></div></div></div></div></div>