<div dir="ltr"><div>Hi,</div><div><br></div><div>Have you considered using `Control.Lens.Wrapped` or `Control.Newtype`? You'd have to move the wrapping/unwrapping bits to the sites in your code at which you use underlying `Map` functions (quite repetitive), but it could be easier than redefining all the functions you want (and definitely easier than having to redefine a new one when you think of needing it?).</div><div><br></div><div>There's probably a canonical way to handle this sort of thing, but I can't find it ATM. Good luck!</div><div><br></div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Nov 15, 2019 at 5:00 AM <<a href="mailto:beginners-request@haskell.org">beginners-request@haskell.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Send Beginners mailing list submissions to<br>
        <a href="mailto:beginners@haskell.org" target="_blank">beginners@haskell.org</a><br>
<br>
To subscribe or unsubscribe via the World Wide Web, visit<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>
or, via email, send a message with subject or body 'help' to<br>
        <a href="mailto:beginners-request@haskell.org" target="_blank">beginners-request@haskell.org</a><br>
<br>
You can reach the person managing the list at<br>
        <a href="mailto:beginners-owner@haskell.org" target="_blank">beginners-owner@haskell.org</a><br>
<br>
When replying, please edit your Subject line so it is more specific<br>
than "Re: Contents of Beginners digest..."<br>
<br>
<br>
Today's Topics:<br>
<br>
   1.  Expose every Function of a wrapped type (Leonhard Applis)<br>
<br>
<br>
----------------------------------------------------------------------<br>
<br>
Message: 1<br>
Date: Fri, 15 Nov 2019 11:36:03 +0000<br>
From: Leonhard Applis <<a href="mailto:Leonhard.Applis@protonmail.com" target="_blank">Leonhard.Applis@protonmail.com</a>><br>
To: "<a href="mailto:beginners@haskell.org" target="_blank">beginners@haskell.org</a>" <<a href="mailto:beginners@haskell.org" target="_blank">beginners@haskell.org</a>><br>
Subject: [Haskell-beginners] Expose every Function of a wrapped type<br>
Message-ID:<br>
        <8VyrlRTZwYrqqkI95kJ3UHQ41YSXFwhcqA4orOfVyau1ULCyCnVVkPI__Ya6rLaYFCUrVB3yM0IqT_l5NcCiMHhyfjsRg0S2xmxG3Cmvkq0=@<a href="http://protonmail.com" rel="noreferrer" target="_blank">protonmail.com</a>><br>
<br>
Content-Type: text/plain; charset="utf-8"<br>
<br>
Hi, <br>
<br>
I currently have a newtype definition of a typed Data.Map. <br>
<br>
newtype G = G Data.Map String Values <br>
<br>
I have done this because for my specific use-case, I can define G as a monoid and get some nice benefits. <br>
<br>
However, I find myself often just re-declaring functions of Data.Map and wrap/unwrap them in my Constructor G, such as <br>
<br>
singleton :: String -> Value -> G<br>
singleton s v = G $ (Data.Map.singleton s v) <br>
<br>
I think I do not need to limit the scope of G's functionality, I basically want everything from Data.Map + Bonus , like my Monoid. <br>
Also I want G to be a specific Data.Map, there is never any other case where it's not a Map String Values. <br>
<br>
However, if I have <br>
<br>
type G2 = Data.Map String Values <br>
<br>
I cannot instance Monoid. <br>
<br>
So, I am very sure that I'm not the first person ever doing this. Is there a language extension providing what I want? Or is what i want "bad"?<br>
Am I just missing a higher-order base function which does what I want?<br>
<br>
best regards & thanks<br>
Leonhard<br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: <<a href="http://mail.haskell.org/pipermail/beginners/attachments/20191115/904e640f/attachment-0001.html" rel="noreferrer" target="_blank">http://mail.haskell.org/pipermail/beginners/attachments/20191115/904e640f/attachment-0001.html</a>><br>
-------------- next part --------------<br>
A non-text attachment was scrubbed...<br>
Name: publickey - <a href="mailto:Leonhard.Applis@protonmail.com" target="_blank">Leonhard.Applis@protonmail.com</a> - 0x807FDDF3.asc<br>
Type: application/pgp-keys<br>
Size: 1843 bytes<br>
Desc: not available<br>
URL: <<a href="http://mail.haskell.org/pipermail/beginners/attachments/20191115/904e640f/attachment-0001.key" rel="noreferrer" target="_blank">http://mail.haskell.org/pipermail/beginners/attachments/20191115/904e640f/attachment-0001.key</a>><br>
-------------- next part --------------<br>
A non-text attachment was scrubbed...<br>
Name: signature.asc<br>
Type: application/pgp-signature<br>
Size: 477 bytes<br>
Desc: OpenPGP digital signature<br>
URL: <<a href="http://mail.haskell.org/pipermail/beginners/attachments/20191115/904e640f/attachment-0001.sig" rel="noreferrer" target="_blank">http://mail.haskell.org/pipermail/beginners/attachments/20191115/904e640f/attachment-0001.sig</a>><br>
<br>
------------------------------<br>
<br>
Subject: Digest Footer<br>
<br>
_______________________________________________<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>
<br>
<br>
------------------------------<br>
<br>
End of Beginners Digest, Vol 137, Issue 2<br>
*****************************************<br>
</blockquote></div></div>