Send Beginners mailing list submissions to
        beginners@haskell.org

To subscribe or unsubscribe via the World Wide Web, visit
        http://www.haskell.org/mailman/listinfo/beginners
or, via email, send a message with subject or body 'help' to
        beginners-requ...@haskell.org

You can reach the person managing the list at
        beginners-ow...@haskell.org

When replying, please edit your Subject line so it is more specific
than "Re: Contents of Beginners digest..."


Today's Topics:

   1.  list range (Stanis?aw Findeisen)
   2. Re:  list range (Henry Lockyer)
   3. Re:  list range (Henry Lockyer)
   4. Re:  list range (Brent Yorgey)
   5. Re:  list range (Jos? Romildo Malaquias)
   6. Re:  list range (Henry Lockyer)
   7. Re:  list range (Mike Meyer)
   8.  The numeric type stack (Mike Meyer)
   9. Re:  The numeric type stack (Antoine Latter)
  10. Re:  The numeric type stack (Mike Meyer)


----------------------------------------------------------------------

Message: 1
Date: Wed, 28 Dec 2011 19:51:35 +0100
From: Stanis?aw Findeisen <stf-l...@eisenbits.com>
Subject: [Haskell-beginners] list range
To: beginners@haskell.org
Message-ID: <4efb6537.5090...@eisenbits.com>
Content-Type: text/plain; charset=UTF-8

Hi

Is list range (for example: [1..10]) a language construct or a function?
What type does it have?

-- 
This e-mail address is invalid, see:
http://people.eisenbits.com/~stf/public-email-note.html .

OpenPGP: E3D9 C030 88F5 D254 434C  6683 17DD 22A0 8A3B 5CC0



------------------------------

Message: 2
Date: Wed, 28 Dec 2011 19:05:02 +0000
From: Henry Lockyer <henry.lock...@ntlworld.com>
Subject: Re: [Haskell-beginners] list range
To: beginners@haskell.org
Message-ID: <ab45fc7c-a048-4719-9efb-1f80c3c20...@ntlworld.com>
Content-Type: text/plain; charset=utf-8

I'm a beginner so beware, but I believe [1..10] is a VALUE (it is not a 
function from something to something else).
It's type is essentially 'list of numeric' but because you used "..."  to 
express a range of values it also has to be of 
type 'Enum' as well as numeric.
If you have GHCI installed, then I recommend using the ":t" command to explore 
the types of Haskell expressions.
/ Henry

On 28 Dec 2011, at 18:51, Stanis?aw Findeisen wrote:

> Hi
> 
> Is list range (for example: [1..10]) a language construct or a function?
> What type does it have?
> 
> -- 
> This e-mail address is invalid, see:
> http://people.eisenbits.com/~stf/public-email-note.html .
> 
> OpenPGP: E3D9 C030 88F5 D254 434C  6683 17DD 22A0 8A3B 5CC0
> 
> _______________________________________________
> Beginners mailing list
> Beginners@haskell.org
> http://www.haskell.org/mailman/listinfo/beginners




------------------------------

Message: 3
Date: Wed, 28 Dec 2011 19:08:08 +0000
From: Henry Lockyer <henry.lock...@ntlworld.com>
Subject: Re: [Haskell-beginners] list range
To: Henry Lockyer <henry.lock...@ntlworld.com>
Cc: beginners@haskell.org
Message-ID: <2431ba48-aedc-4252-8565-2d6b014c0...@ntlworld.com>
Content-Type: text/plain; charset=utf-8

Sorry, should have read your question a second time instead of posting a quick 
reply ;-)
I think it is syntactic sugar..

On 28 Dec 2011, at 19:05, Henry Lockyer wrote:

> I'm a beginner so beware, but I believe [1..10] is a VALUE (it is not a 
> function from something to something else).
> It's type is essentially 'list of numeric' but because you used "..."  to 
> express a range of values it also has to be of 
> type 'Enum' as well as numeric.
> If you have GHCI installed, then I recommend using the ":t" command to 
> explore the types of Haskell expressions.
> / Henry
> 
> On 28 Dec 2011, at 18:51, Stanis?aw Findeisen wrote:
> 
>> Hi
>> 
>> Is list range (for example: [1..10]) a language construct or a function?
>> What type does it have?
>> 
>> -- 
>> This e-mail address is invalid, see:
>> http://people.eisenbits.com/~stf/public-email-note.html .
>> 
>> OpenPGP: E3D9 C030 88F5 D254 434C  6683 17DD 22A0 8A3B 5CC0
>> 
>> _______________________________________________
>> Beginners mailing list
>> Beginners@haskell.org
>> http://www.haskell.org/mailman/listinfo/beginners
> 




------------------------------

Message: 4
Date: Wed, 28 Dec 2011 14:32:01 -0500
From: Brent Yorgey <byor...@seas.upenn.edu>
Subject: Re: [Haskell-beginners] list range
To: beginners@haskell.org
Message-ID: <20111228193201.ga12...@seas.upenn.edu>
Content-Type: text/plain; charset=utf-8

On Wed, Dec 28, 2011 at 07:51:35PM +0100, Stanis?aw Findeisen wrote:
> Hi
> 
> Is list range (for example: [1..10]) a language construct or a function?
> What type does it have?

[a .. b] is syntactic sugar which is translated into a call to the
function 'enumFromTo':

  Prelude> [1 .. 10]
  [1,2,3,4,5,6,7,8,9,10]
  Prelude> enumFromTo 1 10
  [1,2,3,4,5,6,7,8,9,10]

-Brent



------------------------------

Message: 5
Date: Wed, 28 Dec 2011 17:37:03 -0200
From: Jos? Romildo Malaquias <j.romi...@gmail.com>
Subject: Re: [Haskell-beginners] list range
To: Stanis?aw Findeisen <stf-l...@eisenbits.com>
Cc: beginners@haskell.org
Message-ID: <20111228193702.ga25...@malaquias.dhcp-GERAL>
Content-Type: text/plain; charset=utf-8

On Wed, Dec 28, 2011 at 07:51:35PM +0100, Stanis?aw Findeisen wrote:
> Hi
> 
> Is list range (for example: [1..10]) a language construct or a function?
> What type does it have?
> 

  [ 1 .. 10 ]

is syntatic sugar for the function application

  enumFromTo 1 10

enumFromTo is a method of the class Enum. Its type is

  enumFromTo :: Enum a => a -> a -> [a]

There is also enumFrom, enumFromThen and enumFromThenTo.

Romildo



------------------------------

Message: 6
Date: Wed, 28 Dec 2011 19:37:42 +0000
From: Henry Lockyer <henry.lock...@ntlworld.com>
Subject: Re: [Haskell-beginners] list range
To: beginners@haskell.org
Message-ID: <6bd0f1d4-5c96-4591-a621-12faa2013...@ntlworld.com>
Content-Type: text/plain; charset=utf-8

Hi again Stanislaw,
since I started digging in this hole.. 
Having just checked "enum" in the prelude there are a number of functions such 
as "enumFrom", "enumFromThen", "enumFromTo" etc. that the list range notation 
syntactic sugar is converted to.
/Henry

On 28 Dec 2011, at 19:08, Henry Lockyer wrote:

> Sorry, should have read your question a second time instead of posting a 
> quick reply ;-)
> I think it is syntactic sugar..
> 
> On 28 Dec 2011, at 19:05, Henry Lockyer wrote:
> 
>> I'm a beginner so beware, but I believe [1..10] is a VALUE (it is not a 
>> function from something to something else).
>> It's type is essentially 'list of numeric' but because you used "..."  to 
>> express a range of values it also has to be of 
>> type 'Enum' as well as numeric.
>> If you have GHCI installed, then I recommend using the ":t" command to 
>> explore the types of Haskell expressions.
>> / Henry
>> 
>> On 28 Dec 2011, at 18:51, Stanis?aw Findeisen wrote:
>> 
>>> Hi
>>> 
>>> Is list range (for example: [1..10]) a language construct or a function?
>>> What type does it have?
>>> 
>>> -- 
>>> This e-mail address is invalid, see:
>>> http://people.eisenbits.com/~stf/public-email-note.html .
>>> 
>>> OpenPGP: E3D9 C030 88F5 D254 434C  6683 17DD 22A0 8A3B 5CC0
>>> 
>>> _______________________________________________
>>> Beginners mailing list
>>> Beginners@haskell.org
>>> http://www.haskell.org/mailman/listinfo/beginners
>> 
> 




------------------------------

Message: 7
Date: Wed, 28 Dec 2011 12:19:25 -0800
From: Mike Meyer <m...@mired.org>
Subject: Re: [Haskell-beginners] list range
To: beginners@haskell.org
Message-ID: <20111228121925.57db6...@bhuda.mired.org>
Content-Type: text/plain; charset=US-ASCII

On Wed, 28 Dec 2011 19:08:08 +0000
Henry Lockyer <henry.lock...@ntlworld.com> wrote:

> On 28 Dec 2011, at 19:05, Henry Lockyer wrote:
> Sorry, should have read your question a second time instead of posting a 
> quick reply ;-)
> I think it is syntactic sugar..

Others say it's syntactic sugar, but your advice:

> > If you have GHCI installed, then I recommend using the ":t" command to 
> > explore the types of Haskell expressions.

is still good, *and* can answer that question:

> >> Is list range (for example: [1..10]) a language construct or a function?
> >> What type does it have?

If it's a function, then :t will know about it, even in that odd
form if you wrap it in parens. For instance:

*Main> :t (+)
(+) :: Num a => a -> a -> a

even if it's a constructor, like:

*Main> :t ((,))
((,)) :: a -> b -> (a, b)

But trying the [..] notation, you get:

*Main Network.HTTP> :t ([..])

<interactive>:1:3: parse error on input `..'

I.e. - it's syntactic sugar to generate a value. If it were a
function, the type would be something like:

([..]) :: Enum a => a -> a -> [a]

       <mike
-- 
Mike Meyer <m...@mired.org>             http://www.mired.org/
Independent Software developer/SCM consultant, email for more information.

O< ascii ribbon campaign - stop html mail - www.asciiribbon.org



------------------------------

Message: 8
Date: Wed, 28 Dec 2011 18:54:33 -0800
From: Mike Meyer <m...@mired.org>
Subject: [Haskell-beginners] The numeric type stack
To: beginners <beginners@haskell.org>
Message-ID:
        <CAD=7U2B8_FZb=5ketjqo+jtgjncurx++cysg54szzs0s_32...@mail.gmail.com>
Content-Type: text/plain; charset=ISO-8859-1

While haskell's type system is usually a delight to work with.
However, every once and a while I need to do mixed mode programming in
spite of Kernighan and Plauger's advice, and wind up cursing the
numeric type stack. I was wondering it there was a writeup on it
somewhere? Preferably one aimed at practical programming. A chapter in
Real World Haskell would have been ideal, but it doesn't seem to
exist.

   Thanks,
   <mike



------------------------------

Message: 9
Date: Wed, 28 Dec 2011 22:23:12 -0600
From: Antoine Latter <aslat...@gmail.com>
Subject: Re: [Haskell-beginners] The numeric type stack
To: Mike Meyer <m...@mired.org>
Cc: beginners <beginners@haskell.org>
Message-ID:
        <cakjsnqhphyf_0g+nmcwajexsy1lzqhrgov_nn22urmjy6p-...@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8

On Wed, Dec 28, 2011 at 8:54 PM, Mike Meyer <m...@mired.org> wrote:
> While haskell's type system is usually a delight to work with.
> However, every once and a while I need to do mixed mode programming in
> spite of Kernighan and Plauger's advice, and wind up cursing the
> numeric type stack. I was wondering it there was a writeup on it
> somewhere? Preferably one aimed at practical programming. A chapter in
> Real World Haskell would have been ideal, but it doesn't seem to
> exist.
>

For shear comprehensiveness, there's always the language report:
http://www.haskell.org/onlinereport/haskell2010/haskellch6.html#x13-1350006.4

I don't know of anything that lays out and introduction with best
practices and common pitfalls.

Antoine

> ? Thanks,
> ? <mike
>
> _______________________________________________
> Beginners mailing list
> Beginners@haskell.org
> http://www.haskell.org/mailman/listinfo/beginners



------------------------------

Message: 10
Date: Wed, 28 Dec 2011 21:33:23 -0800
From: Mike Meyer <m...@mired.org>
Subject: Re: [Haskell-beginners] The numeric type stack
To: beginners <beginners@haskell.org>
Message-ID: <20111228213323.575cf...@bhuda.mired.org>
Content-Type: text/plain; charset=US-ASCII

On Wed, 28 Dec 2011 22:23:12 -0600
Antoine Latter <aslat...@gmail.com> wrote:
> On Wed, Dec 28, 2011 at 8:54 PM, Mike Meyer <m...@mired.org> wrote:
> > While haskell's type system is usually a delight to work with.
> > However, every once and a while I need to do mixed mode programming in
> > spite of Kernighan and Plauger's advice, and wind up cursing the
> > numeric type stack. I was wondering it there was a writeup on it
> > somewhere? Preferably one aimed at practical programming. A chapter in
> > Real World Haskell would have been ideal, but it doesn't seem to
> > exist.
> For shear comprehensiveness, there's always the language report:
> http://www.haskell.org/onlinereport/haskell2010/haskellch6.html#x13-1350006.4

Not to bad. Then again, I'm a long-time language lawyer, so others may
disagree.

> I don't know of anything that lays out and introduction with best
> practices and common pitfalls.

Given reading the report, and a little experimentation, I figured out
the problem I was having. I probably will in the future as well.

I wanted a percentage value rounded to the nearest integer. No
problem, it's just:

(%) a b = round $ 100 * a / b

And that works in ghci. However, it has the type

(%) :: (RealFrac a, Integral b) => a -> a -> b

Which means that the argument from length was of the wrong type for
this. And naturally, declaring the argument types that matched the
result from length caused type problems inside (%).

So, is there a reasonable way to get the value of two Integral types
divided by each other and rounded? How about one integral type and one
RealFrac? I know I can get it truncated towards either 0 or negative
infinity, but that's not what I want here.

        Thanks,
        <mike
-- 
Mike Meyer <m...@mired.org>             http://www.mired.org/
Independent Software developer/SCM consultant, email for more information.

O< ascii ribbon campaign - stop html mail - www.asciiribbon.org



------------------------------

_______________________________________________
Beginners mailing list
Beginners@haskell.org
http://www.haskell.org/mailman/listinfo/beginners


End of Beginners Digest, Vol 42, Issue 30
*****************************************

Reply via email to