<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;">Thanks.<br><br>I had put together something similar to your first suggestion but tried to use PutStrLn(Show...). I'd also thought of your second suggestion about a dummy show for functions.<br><br>A little further along in "The Little MLer" the ints function is replaced by other functions like primes and fibs, which also return Links:<br><br>fun primes(n)<br>&nbsp; = if is_prime(n+1)<br>&nbsp;then Link(n+1,primes)<br>&nbsp;else primes(n+1)<br><br>fun fibs(n)(m)<br>&nbsp; = Link(n+m,fibs(m))<br><br>which are passed to chain_item:<br><br>fun chain_item(n,Link(i,f))<br>&nbsp; = if eq_int(n,1)<br>&nbsp; then i<br>&nbsp; else chain_item(n-1,f(i))<br><br>which can be called to request the nth (12th) prime number beginning at 1.<br><br>- chain_item(12,primes(1));<br>GC #0.0.0.1.3.61:&nbsp;&nbsp; (1 ms)<br>val it = 37 : int<br>- <br><br>So I guess the answer to your
 question about whether the function is ever called with a different value may be, yes.<br><br>Michael<br><br>--- On <b>Mon, 5/18/09, Ryan Ingram <i>&lt;ryani.spam@gmail.com&gt;</i></b> wrote:<br><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><br>From: Ryan Ingram &lt;ryani.spam@gmail.com&gt;<br>Subject: Re: [Haskell-cafe] showing a user defined type<br>To: "Brandon S. Allbery KF8NH" &lt;allbery@ece.cmu.edu&gt;<br>Cc: "michael rice" &lt;nowgate@yahoo.com&gt;, haskell-cafe@haskell.org<br>Date: Monday, May 18, 2009, 10:02 PM<br><br><div class="plainMail">Unfortunately, you can't derive Show on Chain as defined, because it<br>contains a function:<br><br>&gt; data Chain = Link Int (Int -&gt; Chain)<br><br>You can write this:<br><br>&gt; instance Show Chain where<br>&gt;&nbsp; &nbsp; show (Link n _) = "Link " ++ show n ++ " &lt;fn&gt;"<br><br>Or you can make a dummy "Show" instance for functions:<br><br>&gt;
 instance Show (a -&gt; b) where show _ = "&lt;fn&gt;"<br>&gt; data Chain = Link Int (Int -&gt; Chain) deriving Show<br><br>One question: Do you expect to ever call the function with a different<br>value?&nbsp; For example:<br><br>otherChain :: Chain<br>otherChain = case (ints 0) of Link _ f -&gt; f 100<br><br>If not, you can replace Chain entirely by [Int], due to laziness,<br>something that's not possible in ML.&nbsp; (Although you can get the same<br>result in ML by using (int * (() -&gt; chain)) instead.<br><br>&nbsp; -- ryan<br><br>On Mon, May 18, 2009 at 6:36 PM, Brandon S. Allbery KF8NH<br>&lt;<a ymailto="mailto:allbery@ece.cmu.edu" href="/mc/compose?to=allbery@ece.cmu.edu">allbery@ece.cmu.edu</a>&gt; wrote:<br>&gt; On May 18, 2009, at 21:19 , michael rice wrote:<br>&gt;<br>&gt; *Main&gt; :t ints 0<br>&gt; ints 0 :: Chain<br>&gt; *Main&gt; ints 0<br>&gt;<br>&gt; &lt;interactive&gt;:1:0:<br>&gt; &nbsp;&nbsp;&nbsp; No instance for (Show
 Chain)<br>&gt;<br>&gt; In general, you want to append<br>&gt; &nbsp;&nbsp; &nbsp;deriving Show<br>&gt; to your types. &nbsp;You may also want to be able to input them in ghci, so<br>&gt; instead say<br>&gt; &nbsp;&nbsp; &nbsp;deriving (Show, Read)<br>&gt; --<br>&gt; brandon s. allbery [solaris,freebsd,perl,pugs,haskell] <a ymailto="mailto:allbery@kf8nh.com" href="/mc/compose?to=allbery@kf8nh.com">allbery@kf8nh.com</a><br>&gt; system administrator [openafs,heimdal,too many hats] <a ymailto="mailto:allbery@ece.cmu.edu" href="/mc/compose?to=allbery@ece.cmu.edu">allbery@ece.cmu.edu</a><br>&gt; electrical and computer engineering, carnegie mellon university &nbsp; &nbsp;KF8NH<br>&gt;<br>&gt;<br>&gt; _______________________________________________<br>&gt; Haskell-Cafe mailing list<br>&gt; <a ymailto="mailto:Haskell-Cafe@haskell.org" href="/mc/compose?to=Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>&gt; <a
 href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>&gt;<br>&gt;<br></div></blockquote></td></tr></table><br>