<div dir="ltr"><div dir="ltr"><div dir="ltr">I solved the hacker-rank hello world n times challenge thus:<div><br></div><div><div style="background-color:rgb(255,255,254);line-height:20px"><div style="color:rgb(0,0,0);white-space:pre;font-family:monospace">hello_worlds <span style="color:rgb(0,0,255)">::</span> Int <span style="color:rgb(0,0,255)">-></span> IO ()</div><div style="color:rgb(0,0,0);white-space:pre;font-family:monospace">hello_worlds n</div><div style="color:rgb(0,0,0);white-space:pre;font-family:monospace">  <span style="color:rgb(0,0,255)">|</span> n <span style="color:rgb(0,0,255)"><</span> <span style="color:rgb(221,0,0)">1</span> <span style="color:rgb(0,0,255)">=</span> return <span style="color:rgb(221,0,0)">()</span></div><div style="color:rgb(0,0,0);white-space:pre;font-family:monospace">  <span style="color:rgb(0,0,255)">|</span> otherwise <span style="color:rgb(0,0,255)">=</span> <span style="color:rgb(0,0,255)">do</span></div><div style="color:rgb(0,0,0);white-space:pre;font-family:monospace">      putStrLn <span style="color:rgb(96,139,78)">"</span><span style="color:rgb(163,21,21)">Hello World</span><span style="color:rgb(96,139,78)">"</span></div><div style="color:rgb(0,0,0);white-space:pre;font-family:monospace">      hello_worlds (n<span style="color:rgb(0,0,255)">-</span><span style="color:rgb(221,0,0)">1</span>)</div><font face="monospace" style="color:rgb(0,0,0);white-space:pre"><br></font><div style="color:rgb(0,0,0);white-space:pre;font-family:monospace">main <span style="color:rgb(0,0,255)">::</span> IO()</div><div style="color:rgb(0,0,0);white-space:pre;font-family:monospace">main <span style="color:rgb(0,0,255)">=</span> <span style="color:rgb(0,0,255)">do</span></div><div style="color:rgb(0,0,0);white-space:pre;font-family:monospace">   n <span style="color:rgb(0,0,255)"><-</span> readLn <span style="color:rgb(0,0,255)">::</span> <span style="color:rgb(221,0,0)">IO</span> <span style="color:rgb(221,0,0)">Int</span></div><div style="color:rgb(0,0,0);white-space:pre;font-family:monospace">   hello_worlds n</div><div style="color:rgb(0,0,0);font-size:15px;white-space:pre;font-family:monospace"><br></div><div style="color:rgb(0,0,0);white-space:pre"><font face="arial, helvetica, sans-serif" style="">I would like to solve this by using the interact function.</font></div><div style="color:rgb(0,0,0);white-space:pre"><span style="font-family:arial,helvetica,sans-serif">If I leave my hello_worlds function as is and change the main function as follows:</span><br></div><div style="color:rgb(0,0,0);font-size:15px;white-space:pre"><font face="arial, helvetica, sans-serif"><br></font></div><div><font color="#000000" face="monospace, monospace"><span style="white-space:pre">main = interact $ show . hello_worlds . read::Int</span></font><br></div><div><font color="#000000" face="monospace, monospace"><span style="font-size:15px;white-space:pre"><br></span></font></div><div><font color="#000000" face="arial, helvetica, sans-serif"><span style="white-space:pre">I get:</span></font></div><div><font color="#000000" face="arial, helvetica, sans-serif"><span style="font-size:15px;white-space:pre"><br></span></font></div><div><font color="#000000"><span style="white-space:pre"><div style="font-family:monospace,monospace">Couldn't match expected type ‘IO t0’ with actual type ‘Int’</div><div style="font-family:monospace,monospace">    • In the expression: main</div><div style="font-family:monospace,monospace">      When checking the type of the IO action ‘main’</div><div style="font-family:monospace,monospace"><br></div><div style="font-family:monospace,monospace">helloworlds.hs:14:8-44: error:</div><div style="font-family:monospace,monospace">    • Couldn't match expected type ‘Int’ with actual type ‘IO ()’</div><div style="font-family:monospace,monospace">    • In the expression: interact $ show . hello_worlds . read :: Int</div><div style="font-family:monospace,monospace">      In an equation for ‘main’:</div><div style="font-family:monospace,monospace">          main = interact $ show . hello_worlds . read :: Int</div><div style="font-family:monospace,monospace"><br></div><div style=""><font face="arial, helvetica, sans-serif">could someone please explain why this can't work? </font></div><div style=""><font face="arial, helvetica, sans-serif">Is it possible to use interact in such a context?</font></div><div style=""><font face="arial, helvetica, sans-serif"><br></font></div><div style=""><font face="arial, helvetica, sans-serif">Thanks</font></div></span></font></div><div><font color="#000000" face="monospace, monospace"><span style="font-size:15px;white-space:pre"> </span></font></div><div><font color="#000000" face="monospace, monospace"><span style="font-size:15px;white-space:pre"><br></span></font></div></div></div></div></div></div>