Send Beginners mailing list submissions to
[email protected]
To subscribe or unsubscribe via the World Wide Web, visit
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
or, via email, send a message with subject or body 'help' to
[email protected]
You can reach the person managing the list at
[email protected]
When replying, please edit your Subject line so it is more specific
than "Re: Contents of Beginners digest..."
Today's Topics:
1. Re: Parametrizing [] as an instance of the Functor type
class ([email protected])
2. Re: Parametrizing [] as an instance of the Functor type
class ([email protected])
----------------------------------------------------------------------
Message: 1
Date: Wed, 06 Jan 2016 09:50:42 -0500
From: [email protected]
To: Olumide <[email protected]>, [email protected]
Subject: Re: [Haskell-beginners] Parametrizing [] as an instance of
the Functor type class
Message-ID:
<87h9iqrccd.fsf@wonderlust.i-did-not-set--mail-host-address--so-tickle-me>
Content-Type: text/plain
On 2016-01-05 at 08:59, Olumide <[email protected]> wrote:
> On 01/01/2016 19:41, Alexander Berntsen wrote:
>> Here we use [] both on type and term level. On type level we use it to
>> mean a list of 'a's, and on term level we use it to mean the empty list.
>
> Out of curiosity, is [] defined as type constructor _and_ term level at
> the library level or in the language/compiler? (BTW, google tells me
> "term-level" has a special meaning that I do not yet know.)
The special syntax of [] requires that the compiler (specifically, the
parser) treat lists specially.
We could define our own data type that behaves like lists,
List a = Nil | Cons a (List a)
but writing out literal lists would be a little clunky. It's nice that
we can write:
[]
[1]
[1,2,3]
instead of:
Nil
Cons 1 Nil
Cons 1 (Cons 2 (Cons 3 Nil))
The [1,2,3] syntax requres that the Haskell parser be aware of this
type.
At the type level, we can write [Int], [Char], and so forth, instead of
List Int, List Char. This also requires support in the parser.
bergey
------------------------------
Message: 2
Date: Wed, 06 Jan 2016 09:58:33 -0500
From: [email protected]
To: Olumide <[email protected]>, [email protected]
Subject: Re: [Haskell-beginners] Parametrizing [] as an instance of
the Functor type class
Message-ID:
<87egdurbza.fsf@wonderlust.i-did-not-set--mail-host-address--so-tickle-me>
Content-Type: text/plain
On 2016-01-05 at 08:33, Olumide <[email protected]> wrote:
> On 31/12/2015 13:06, Olumide wrote:
>> ... considering that Functor is defined as
>>
>> class Functor f
> > where fmap :: (a -> b) -> f a -> f b
>>
>
> Still on the subject, according to LYH, the above definition(?) is read
> thusly: "fmap takes a function from one type as to another and a functor
> value applied with one type and returns a functor value applied with
> another type".
>
> So if list is "a part of the part of the Functor type class" (quoting
> LYH) how am I to grok a list e.g. [1,2,3] as a "functor value applied to
> a type"?
The type of [1,2,3] is [Int] (or possibly [Integer], [Float], [Double],
or similar). We read [Int] as "list of Ints". "List" is the instance
of Functor, Int is the type to which "list" is applied.
This may be easier to understand for types which are written prefix,
rather than [], which is written around Int. "List Int" or "Maybe Int"
look like a function List or Maybe applied to the argument Int, except
that the capitalization reminds us that these are types, not values /
terms.
The section on kinds, may help here. Kinds give us a formal syntax for
expressing things like "list takes a type as input and gives back a new
type".
bergey
------------------------------
Subject: Digest Footer
_______________________________________________
Beginners mailing list
[email protected]
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
------------------------------
End of Beginners Digest, Vol 91, Issue 10
*****************************************