<div dir="auto"><div>You may have figured this out by now, but according to the docs, the error is correct: PortNumber exposes no constructor at all. Instead, it has a Num instance; you should be able to just use the literal 7200 there.</div><div dir="auto"><br></div><div dir="auto">This strikes me as a highly questionable decision on the part of the module authors, but it is at least convenient.<br><br><div class="gmail_quote" dir="auto"><div dir="ltr" class="gmail_attr">On Wed, Aug 14, 2019, 10:59 AM Jeff C. Britton <<a href="mailto:jcb@iteris.com">jcb@iteris.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="m_2900285957632246209WordSection1">
<p class="m_2900285957632246209MsoPlainText">I have just installed Haskell using Stack on Windows.<u></u><u></u></p>
<p class="m_2900285957632246209MsoPlainText">I wanted to try and write some code to do network programming with TCP/IP.<u></u><u></u></p>
<p class="m_2900285957632246209MsoPlainText">I found a simple example on Stack Overflow to start me off.<u></u><u></u></p>
<p class="m_2900285957632246209MsoPlainText">I’m having some problems with PortNumber and deprecated warnings.<u></u><u></u></p>
<p class="m_2900285957632246209MsoPlainText">I don't know how to modify the code to be deprecation free.<u></u><u></u></p>
<p class="m_2900285957632246209MsoPlainText"><u></u> <u></u></p>
<p class="m_2900285957632246209MsoPlainText">stack install network – installed version 2.8.0.1<u></u><u></u></p>
<p class="m_2900285957632246209MsoPlainText"><u></u> <u></u></p>
<p class="m_2900285957632246209MsoPlainText">-------------------------<u></u><u></u></p>
<p class="m_2900285957632246209MsoPlainText">package.yaml<u></u><u></u></p>
<p class="m_2900285957632246209MsoPlainText">network >= 2.8.0.1<u></u><u></u></p>
<p class="m_2900285957632246209MsoPlainText">---------------------------<u></u><u></u></p>
<p class="m_2900285957632246209MsoPlainText"><u></u> <u></u></p>
<p class="m_2900285957632246209MsoPlainText">The following code gives a deprecation warning, but ultimately my sample compiles and runs.<u></u><u></u></p>
<p class="m_2900285957632246209MsoPlainText"><u></u> <u></u></p>
<p class="m_2900285957632246209MsoPlainText">import qualified Network<u></u><u></u></p>
<p class="m_2900285957632246209MsoPlainText">import qualified Network.Socket<u></u><u></u></p>
<p class="m_2900285957632246209MsoPlainText"><u></u> <u></u></p>
<p class="m_2900285957632246209MsoPlainText">main = Network.withSocketsDo $ do<u></u><u></u></p>
<p class="m_2900285957632246209MsoPlainText">  handle <- Network.connectTo "192.168.1.2" (Network.PortNumber 7200)<u></u><u></u></p>
<p class="m_2900285957632246209MsoPlainText">  talk handle `finally` hClose handle<u></u><u></u></p>
<p class="m_2900285957632246209MsoPlainText"><u></u> <u></u></p>
<p class="m_2900285957632246209MsoPlainText">D:\work\hsSocket\app\Main.hs:14:46: warning: [-Wdeprecations]<u></u><u></u></p>
<p class="m_2900285957632246209MsoPlainText">    In the use of data constructor `PortNumber'<u></u><u></u></p>
<p class="m_2900285957632246209MsoPlainText">    (imported from Network):<u></u><u></u></p>
<p class="m_2900285957632246209MsoPlainText">    Deprecated: "The high level Network interface is no longer supported. Please use Network.Socket."<u></u><u></u></p>
<p class="m_2900285957632246209MsoPlainText"><u></u> <u></u></p>
<p class="m_2900285957632246209MsoPlainText"><u></u> <u></u></p>
<p class="m_2900285957632246209MsoPlainText">-----------------------------------------<u></u><u></u></p>
<p class="m_2900285957632246209MsoPlainText">So, now I try and use Network.Socket as the warning indicates.<u></u><u></u></p>
<p class="m_2900285957632246209MsoPlainText"><u></u> <u></u></p>
<p class="m_2900285957632246209MsoPlainText">main = Network.withSocketsDo $ do<u></u><u></u></p>
<p class="m_2900285957632246209MsoPlainText">  handle <- Network.connectTo "192.168.1.2" (Network.Socket.PortNumber 7200)<u></u><u></u></p>
<p class="m_2900285957632246209MsoPlainText">  talk handle `finally` hClose handle<u></u><u></u></p>
<p class="m_2900285957632246209MsoPlainText"><u></u> <u></u></p>
<p class="m_2900285957632246209MsoPlainText">D:\work\hsSocket\app\Main.hs:15:46: error:<u></u><u></u></p>
<p class="m_2900285957632246209MsoPlainText">    Not in scope: data constructor `Network.Socket.PortNumber'<u></u><u></u></p>
<p class="m_2900285957632246209MsoPlainText">    Module `Network.Socket' does not export `PortNumber'.<u></u><u></u></p>
<p class="m_2900285957632246209MsoPlainText">   |<u></u><u></u></p>
<p class="m_2900285957632246209MsoPlainText">15 |   handle <- Network.connectTo "192.168.1.2" (Network.Socket.PortNumber 7200)<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div>

_______________________________________________<br>
Beginners mailing list<br>
<a href="mailto:Beginners@haskell.org" target="_blank" rel="noreferrer">Beginners@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" rel="noreferrer noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners</a><br>
</blockquote></div></div></div>