<div dir="ltr">

<span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">You could use protocol buffers: <a href="https://developers.google.com/protocol-buffers/docs/csharptutorial">https://developers.google.com/protocol-buffers/docs/csharptutorial</a></span><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration-style:initial;text-decoration-color:initial"><br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration-style:initial;text-decoration-color:initial">You would specify the data types you need in an independent language, then use a code generator to get C# classes and Haskell records, and serializers for free. On the Haskell side you can use <a href="https://hackage.haskell.org/package/proto-lens">https://hackage.haskell.org/package/proto-lens</a>. Then you can send the serialized objects over FFI or the network as needed.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Mar 13, 2018 at 12:06 AM, Clinton Mead <span dir="ltr"><<a href="mailto:clintonmead@gmail.com" target="_blank">clintonmead@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi All<div><br></div><div>I want to integrate Haskell into an existing C# project, initially by creating one C# class that basically does all it's "work" in Haskell (and just provides a C# interface).</div><div><br></div><div>There will be a few types passed in and out of this Haskell module from/to C#. On the C# side, there are classes with members, who's types are probably going to be either Strings, Ints, or lists of Strings/Ints, or lists of other objects.</div><div><br></div><div>I'd like to have the same types on the Haskell side.</div><div><br></div><div>It would be nice if I could just magically pass one of these C# types to Haskell and on the Haskell side it will appear as a Haskell type</div><div><br></div><div>I assume what I'll have to do is serialise the type on the C# side and deserialise on the Haskell side.</div><div><br></div><div>C# allows one to serialise any data type to XML. Haskell has plenty of serialisation libraries as well.</div><div><br>However, the problem I presume is that if I just serialise to XML on the C# side, and deserialise from XML on the Haskell side, if my types are just slightly different, or even if the exact serialisers/deserialises represent their data in different ways, it isn't going to work. </div><div><br></div><div>It seems like passing complex data to/from Haskell may be a common problem other people experience, so I'm looking for any suggestions on a clean way of doing this.</div></div>
<br>______________________________<wbr>_________________<br>
Haskell-Cafe mailing list<br>
To (un)subscribe, modify options or view archives go to:<br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-<wbr>bin/mailman/listinfo/haskell-<wbr>cafe</a><br>
Only members subscribed via the mailman list are allowed to post.<br></blockquote></div><br></div>