<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7654.12">
<TITLE>RE: [Haskell-cafe] fromInteger for Lists</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/plain format -->

<P><FONT SIZE=2>Thanks Andy, et al. I can stop hacking for now then. I'm using a simple fromList function already which seems like a reasonable, and at least semi-standard solution (<A HREF="http://www.haskell.org/hoogle/?hoogle=fromList">http://www.haskell.org/hoogle/?hoogle=fromList</A>)<BR>
Paul<BR>
<BR>
<BR>
-----Original Message-----<BR>
From: sploink88@gmail.com on behalf of andy morris<BR>
Sent: Sat 02/05/2009 00:13<BR>
To: Paul Keir<BR>
Cc: haskell-cafe@haskell.org<BR>
Subject: Re: [Haskell-cafe] fromInteger for Lists[MESSAGE NOT SCANNED]<BR>
<BR>
2009/5/1 Paul Keir &lt;pkeir@dcs.gla.ac.uk&gt;:<BR>
&gt; There's nothing better than making a data type an instance of Num. In<BR>
&gt; particular, fromInteger is a joy. But how about lists?<BR>
&gt;<BR>
&gt; For example, if I have<BR>
&gt;<BR>
&gt; data Foo a = F [a]<BR>
&gt;<BR>
&gt; I can create a fromInteger such as<BR>
&gt; fromInteger i = F [fromInteger i]<BR>
&gt;<BR>
&gt; and then a 19::(Foo Int), could become F [19].<BR>
&gt;<BR>
&gt; Is it possible to do something similar for lists? So could<BR>
&gt; [1,2,3]::(Foo Int) become something slightly different, say,<BR>
&gt;<BR>
&gt; F [1,2,3]<BR>
&gt;<BR>
&gt; Paul<BR>
&gt;<BR>
&gt; _______________________________________________<BR>
&gt; Haskell-Cafe mailing list<BR>
&gt; Haskell-Cafe@haskell.org<BR>
&gt; <A HREF="http://www.haskell.org/mailman/listinfo/haskell-cafe">http://www.haskell.org/mailman/listinfo/haskell-cafe</A><BR>
&gt;<BR>
&gt;<BR>
<BR>
If you mean what I think you're referring to, you can't. The only<BR>
reason it works for integer literals is that the compiler replaces<BR>
occurrences of, say, 19 with (fromInteger 19).<BR>
<BR>
There's no function that's automatically applied to list literals, so<BR>
([1,2,3] :: Foo Int) isn't able to do anything useful, unfortunately.<BR>
However, there's an extension in GHC, OverloadedStrings, which lets<BR>
you use the method fromString of class Data.String.IsString to<BR>
overload literals. (That's not what you asked, though, I know. :) )<BR>
<BR>
</FONT>
</P>

</BODY>
</HTML>