<div dir="ltr">Francesco, <div><br></div><div>thanks, that was very enlightening.  That concatenated functions should have matching inputs / outputs is obvious of course, but I just didn't think of that. Duh!</div><div>That IO () can't be converted to String is probably just as obvious, but it wasn't for me.</div><div><br></div><div>For hello_pure I tried this:</div><div><br></div><div><div style="color:rgb(0,0,0);background-color:rgb(255,255,254);line-height:20px;white-space:pre"><div style="font-family:monospace">hello_pure <span style="color:rgb(0,0,255)">::</span> Int <span style="color:rgb(0,0,255)">-></span> String</div><div style="font-family:monospace">hello_pure n</div><div style="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> <span style="color:rgb(96,139,78)">""</span></div><div style="font-family:monospace">  <span style="color:rgb(0,0,255)">|</span> otherwise <span style="color:rgb(0,0,255)">=</span> <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> <span style="color:rgb(0,0,255)">++</span> <span style="color:rgb(96,139,78)">"</span><span style="color:rgb(221,0,0)">\n</span><span style="color:rgb(96,139,78)">"</span> <span style="color:rgb(0,0,255)">++</span> hello_pure ( n <span style="color:rgb(0,0,255)">-</span> <span style="color:rgb(221,0,0)">1</span> ) </div><div style="font-family:monospace;font-size:15px"><br></div><div style=""><font face="arial, helvetica, sans-serif">And it works, although </font></div><div style="font-family:monospace">++ "\n" ++ </div><div style=""><font face="arial, helvetica, sans-serif">doesn't feel so elegant. </font></div></div></div></div>