<div dir="ltr">Hi Dimitri, <div><br></div><div>Thanks for the link! I'll take a look. The goal of doing this was to make foreign Java imports reusable for subclasses in GHCVM.</div><div><br></div><div>Thanks,</div><div>Rahul</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Oct 5, 2016 at 7:25 PM, Dimitri DeFigueiredo <span dir="ltr"><<a href="mailto:defigueiredo@ucdavis.edu" target="_blank">defigueiredo@ucdavis.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I have looked at how to embedded object oriented systems into haskell<br>
for practical reasons.<br>
By far the best resource I found was Oleg Kiselyov and Ralph Lämmel's work:<br>
<br>
<a href="https://arxiv.org/pdf/cs/0509027.pdf" rel="noreferrer" target="_blank">https://arxiv.org/pdf/cs/<wbr>0509027.pdf</a><br>
<br>
It shows the multiple possibilities.<br>
I have used the idea of having a super class be a polymorphic type with<br>
a tail.<br>
<br>
data Point s = Pt { x :: Int, y:: Int, tail :: s}<br>
<br>
And then specializing the parameter s into your derived class<br>
<br>
type Radius = Int<br>
type Circle = Point Radius<br>
<br>
many times.<br>
<br>
But *be warned*, I try to avoid object hierarchies like the plague! They<br>
lead to code that is not reusable.<br>
You may want to consider other simpler possibilities. Here is one of my<br>
earlier experiments that may be useful to you (I no longer have the<br>
views expressed there).<br>
<br>
<a href="https://github.com/dimitri-xyz/inheritance-in-haskell" rel="noreferrer" target="_blank">https://github.com/dimitri-<wbr>xyz/inheritance-in-haskell</a><br>
<br>
Cheers,<br>
<br>
Dimitri<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
2E45 D376 A744 C671 5100 A261 210B 8461 0FB0 CA1F<br>
<br>
<br>
</font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature">Rahul Muttineni</div>
</div>