<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">On Mon, Sep 14, 2015 at 10:17 PM Kim-Ee Yeoh <<a href="mailto:ky3@atamo.com">ky3@atamo.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Sep 15, 2015 at 1:23 AM, Ryan Warner <span dir="ltr"><<a href="mailto:ryan.warner.mn+haskell@gmail.com" target="_blank">ryan.warner.mn+haskell@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">However, I see the potential for this to be a bigger job. Are there any editors that automate that kind of refactoring?</blockquote></div><br></div></div><div dir="ltr"><div class="gmail_extra">Let me ask: for this smaller scenario, what were the repetitive activities? Specifically, how would automation alleviate the labor?<br><br></div></div></blockquote><div><span><div style="font-size:13px;line-height:19px">I should've just posted a link. So, this is my toy project I'm using to learn haskell. I changed the definition of my Room datatype, and then that propagated though some other types and functions. </div><div style="font-size:13px;line-height:19px"><br></div><div style="font-size:13px;line-height:19px"><span><span style="line-height:20px">In this case, I decided that including the room's textual description in the model itself felt like the model was being polluted with view information. So I converted the Room to a parameterized datatype to allow me to relocate the textual description.</span><span style="line-height:20px"></span><div><span style="line-height:20px"><br></span></div></span>You can see that here:</div><div style="font-size:13px;line-height:19px"><a href="https://github.com/LoggerMN/hsAdventure/commit/b19514bd639e7e575151f659851d80ee4f832860#diff-10e71f04a6bef79f976e195d937f0bfbL21">https://github.com/LoggerMN/hsAdventure/commit/b19514bd639e7e575151f659851d80ee4f832860#diff-10e71f04a6bef79f976e195d937f0bfbL21</a><br></div><div><br></div><div><br></div></span></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"></div><div class="gmail_extra">As for the potential for this to be a bigger job, aren't there ways of minimizing such blowup risks in the first place? What can be done to avoid incrementalizing on data design?<br></div></div><div dir="ltr"><div class="gmail_extra"><br clear="all"></div></div></blockquote><div><br></div><div><span><div style="line-height:20px">I see many ways to improve this code. And to be sure, next time I'll be closer to an ideal answer the first time out of the chute. So, practice and planning will minimize the risk. But that only get's you so far, and a requirement change might require you refactor your code anyway. As you say, it minimizes, does not eliminate the risk.</div><div style="line-height:20px"><br></div><div style="line-height:20px">Other language have powerful refactoring tools, so I was wondering if there were some for haskell as well. Maybe there is a different design pattern I should be using here that would've have avoided this problem. If so, I'd love to know!</div><div style="line-height:20px"><br></div><div style="line-height:20px">-Ryan</div></span></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div><div>-- Kim-Ee</div></div>
</div></div>
_______________________________________________<br>
Beginners mailing list<br>
<a href="mailto:Beginners@haskell.org" target="_blank">Beginners@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners</a><br>
</blockquote></div></div>