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. Re:  associative arrays (Patrick Redmond)
   2.  A simple function (Ezequiel Hernan Di Giorgi)
   3. Re:  A simple function (Ertugrul S?ylemez)
   4. Re:  A simple function (David McBride)
   5. Re:  A simple function (Lyndon Maydwell)
   6.  First version of GHC (D?niel Arat?)
   7.  Misc items (KMandPJLynch)
   8. Re:  Misc items (Edward Z. Yang)
   9. Re:  First version of GHC (Jonas Almstr?m Dureg?rd)


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

Message: 1
Date: Thu, 30 Aug 2012 07:37:52 -0400
From: Patrick Redmond <plredm...@gmail.com>
Subject: Re: [Haskell-beginners] associative arrays
To: beginners@haskell.org
Message-ID:
        <cahuea4eozeynlfpgdkgg43so4fropn3uose+2possxujoqo...@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8

> On 29.08.2012 10:19, Karl Voelker wrote:
>> Data.Map.lookup has better asymptotic time complexity than
>> Prelude.lookup, but the relevant measures of efficiency depend on the
>> situation.

On Wed, Aug 29, 2012 at 2:25 AM, Dmitry Vyal <akam...@gmail.com> wrote:
> Can you please elaborate a bit? I suspect lists better when there are just
> a few elements, but how much is a "few"?

I believe that Prelude.lookup looks through the list until it finds
the thing you're looking for or exhausts the list [this is something
like O(n)]. Data.Map performs a binary search over its tree [this is
something like O(log n)]

> And what's about storage
> efficiency? How big is (Data.Map.fromList [1])?

A map associates keys and values, so your example doesn't actually
work. As for space efficiency, I'm sure that an association tree and
an association list are simple enough that both grow linearly with the
number of elements.

Prelude> :m +Data.Map
Prelude Data.Map> let x = fromList [("banana", ["yellow"]), ("apple",
["green", "red"]), ("tomato", ["red"])]
Prelude Data.Map> x
Prelude Data.Map> Data.Map.lookup "apple" x
Just ["green","red"]
Prelude Data.Map> Data.Map.lookup "fish" x
Nothing



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

Message: 2
Date: Thu, 30 Aug 2012 09:52:42 -0300
From: Ezequiel Hernan Di Giorgi <hernan.digio...@gmail.com>
Subject: [Haskell-beginners] A simple function
To: beginners@haskell.org
Message-ID:
        <CAHRx9szoQUU80PBaV-8WzDC+G2_sO0DWpir=kcrrhtw0xrp...@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"

Hallo liebe Leute. Hola gente. I'm starting with Haskell and i have some
problems:

*intercalate :: [t] -> [t] -> [t]*
*intercalate [a,b] [c,d] = [a,c,b,d]*
*intercalate (_) (_) = error "JOJO u cant do this"*


Are there any form to restrict the parmaters that only allow to call the
function *intercalate* with two arrays of two elements, in compilation
time? Cause i cant write* intercalete :: [t,t] -> [t,t]->[t,t,t,t]*.

Sorry for my bad english. I'm Argentinean.

Thanks!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://www.haskell.org/pipermail/beginners/attachments/20120830/ea7d2d8e/attachment-0001.htm>

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

Message: 3
Date: Thu, 30 Aug 2012 15:12:29 +0200
From: Ertugrul S?ylemez <e...@ertes.de>
Subject: Re: [Haskell-beginners] A simple function
To: beginners@haskell.org
Message-ID: <20120830151229.7fc8a...@tritium.streitmacht.eu>
Content-Type: text/plain; charset="us-ascii"

Ezequiel Hernan Di Giorgi <hernan.digio...@gmail.com> wrote:

> Hallo liebe Leute. Hola gente. I'm starting with Haskell and i have
> some problems:
>
> *intercalate :: [t] -> [t] -> [t]*
> *intercalate [a,b] [c,d] = [a,c,b,d]*
> *intercalate (_) (_) = error "JOJO u cant do this"*
>
> Are there any form to restrict the parmaters that only allow to call
> the function *intercalate* with two arrays of two elements, in
> compilation time? Cause i cant write* intercalete :: [t,t] ->
> [t,t]->[t,t,t,t]*.

Yes and no.  It's possible, but what you're having is then not a list,
because a list has the property that it can hold an arbitrary amount of
elements.  The simplest way is to use tuples:

    intercalate :: (a, a) -> (a, a) -> [a]
    intercalate (a, b) (c, d) = [a, b, c, d]

But that function does not look terribly useful to me, so the first
question you should ask yourself is:  Do you actually want to restrict
this to exactly two elements or do you want to restrict it to lists of
the same length?  If it's the latter it gets more interesting, but is
also more involved.  Here is a simple way to do it using the GADTs
extension:

    data List :: * -> * -> * where
        Nil  :: List () a
        Cons :: a -> List n a -> List (Maybe n) a

    intercalate :: List n a -> List n a -> [a]
    intercalate (Cons x xs) (Cons y ys) = x : y : intercalate xs ys
    intercalate Nil Nil = []

As you see what we have here is something that looks like a list and
behaves like a list on the value level, but on the type level it's
something different, something smarter:

    Nil                 :: List () Int
    Cons 3 Nil          :: List (Maybe ()) Int
    Cons 3 (Cons 4 Nil) :: List (Maybe (Maybe ())) Int

Now the length of the list is encoded on the type level and you can
match against it.


Greets,
Ertugrul

-- 
Not to be or to be and (not to be or to be and (not to be or to be and
(not to be or to be and ... that is the list monad.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: not available
URL: 
<http://www.haskell.org/pipermail/beginners/attachments/20120830/a605773e/attachment-0001.pgp>

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

Message: 4
Date: Thu, 30 Aug 2012 09:14:34 -0400
From: David McBride <toa...@gmail.com>
Subject: Re: [Haskell-beginners] A simple function
To: Ezequiel Hernan Di Giorgi <hernan.digio...@gmail.com>
Cc: beginners@haskell.org
Message-ID:
        <CAN+Tr41Np=4cumv4gbtjhtmeyfxngfrybk9zsycia_h4ndb...@mail.gmail.com>
Content-Type: text/plain; charset="iso-8859-1"

intercalate (a:b:_) (c:d:_) = [a,c,b,d]

On Thu, Aug 30, 2012 at 8:52 AM, Ezequiel Hernan Di Giorgi <
hernan.digio...@gmail.com> wrote:

> Hallo liebe Leute. Hola gente. I'm starting with Haskell and i have some
> problems:
>
> *intercalate :: [t] -> [t] -> [t]*
> *intercalate [a,b] [c,d] = [a,c,b,d]*
> *intercalate (_) (_) = error "JOJO u cant do this"*
>
>
> Are there any form to restrict the parmaters that only allow to call the
> function *intercalate* with two arrays of two elements, in compilation
> time? Cause i cant write* intercalete :: [t,t] -> [t,t]->[t,t,t,t]*.
>
> Sorry for my bad english. I'm Argentinean.
>
> Thanks!
>
> _______________________________________________
> Beginners mailing list
> Beginners@haskell.org
> http://www.haskell.org/mailman/listinfo/beginners
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://www.haskell.org/pipermail/beginners/attachments/20120830/6e828791/attachment-0001.htm>

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

Message: 5
Date: Thu, 30 Aug 2012 21:17:54 +0800
From: Lyndon Maydwell <maydw...@gmail.com>
Subject: Re: [Haskell-beginners] A simple function
To: Ezequiel Hernan Di Giorgi <hernan.digio...@gmail.com>
Cc: beginners@haskell.org
Message-ID:
        <cam5qztybfbjosyxuxdes2gdo6zahvd6c5b5xtdyt6ltk5+c...@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8

Probably the easiest way to ensure this at compile time would be to
use tuples for the arguments:

intercalate :: (t,t) -> (t,t)->[t]

And for the result too, if you care about the length of it:

intercalate :: (t,t) -> (t,t) -> (t,t,t,t)

There are certain packages that allow for size-indexed list-like types
such as HList and Data.Vec, although these are usually considered as
not terribly beginner friendly due to type-encoded naturals, etc.

Is there a particular reason why you want to create such an
intercalate function? It might help with suggesting an approach.

On Thu, Aug 30, 2012 at 8:52 PM, Ezequiel Hernan Di Giorgi
<hernan.digio...@gmail.com> wrote:
> Hallo liebe Leute. Hola gente. I'm starting with Haskell and i have some
> problems:
>
> intercalate :: [t] -> [t] -> [t]
> intercalate [a,b] [c,d] = [a,c,b,d]
> intercalate (_) (_) = error "JOJO u cant do this"
>
>
> Are there any form to restrict the parmaters that only allow to call the
> function intercalate with two arrays of two elements, in compilation time?
> Cause i cant write intercalete :: [t,t] -> [t,t]->[t,t,t,t].
>
> Sorry for my bad english. I'm Argentinean.
>
> Thanks!
>
> _______________________________________________
> Beginners mailing list
> Beginners@haskell.org
> http://www.haskell.org/mailman/listinfo/beginners
>



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

Message: 6
Date: Thu, 30 Aug 2012 16:13:34 +0200
From: D?niel Arat? <exitcons...@gmail.com>
Subject: [Haskell-beginners] First version of GHC
To: beginners@haskell.org
Message-ID:
        <cahvkd2+4wgepidzgvtzn+cqn1udjtkveksnvjxsxsgsbk26...@mail.gmail.com>
Content-Type: text/plain; charset=ISO-8859-1

Hi all,

I'm curious if the first implementation of GHC was in a different
language before its current instance could be developed.
If yes, what language was used?
If not, what compiler was first used to compile GHC?

Thank you,
Daniel



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

Message: 7
Date: Thu, 30 Aug 2012 10:39:14 -0400
From: KMandPJLynch <kmandpjly...@verizon.net>
Subject: [Haskell-beginners] Misc items
To: beginners@haskell.org
Message-ID: <c180ea32-a2ad-463e-8569-ca3e6a4a9...@verizon.net>
Content-Type: text/plain; charset=us-ascii

Good morning,

A comment such as [which begins with -- followed immediately by a period '.' - 
see next line]:
 --... 
creates the syntax error:
ch11.hs:228:1: parse error on input `--...'

I'd appreciate any advice.

Good day





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

Message: 8
Date: Thu, 30 Aug 2012 10:46:46 -0400
From: "Edward Z. Yang" <ezy...@mit.edu>
Subject: Re: [Haskell-beginners] Misc items
To: KMandPJLynch <kmandpjly...@verizon.net>
Cc: beginners <beginners@haskell.org>
Message-ID: <1346337917-sup-5615@javelin>
Content-Type: text/plain; charset=UTF-8

Hello,

This is because -- appended by a symbol results in the dashes
being parsed as an operator.  Add a space.

Cheers,
Edward

Excerpts from KMandPJLynch's message of Thu Aug 30 10:39:14 -0400 2012:
> Good morning,
> 
> A comment such as [which begins with -- followed immediately by a period '.' 
> - see next line]:
>  --... 
> creates the syntax error:
> ch11.hs:228:1: parse error on input `--...'
> 
> I'd appreciate any advice.
> 
> Good day
> 



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

Message: 9
Date: Thu, 30 Aug 2012 17:27:02 +0200
From: Jonas Almstr?m Dureg?rd <jonas.dureg...@chalmers.se>
Subject: Re: [Haskell-beginners] First version of GHC
To: D?niel Arat? <exitcons...@gmail.com>
Cc: beginners@haskell.org
Message-ID:
        <CAGNgccax=ifdmmp6ysbo6f7qdsk_yeebkeieb2dfkxsqu2x...@mail.gmail.com>
Content-Type: text/plain; charset=ISO-8859-1

Hi,

According to the GHC wikipedia page, a prototype was written in Lazy
ML. Whether this prototype was used to bootstrap the Haskell version
is not specified.

Regards,
Jonas

On 30 August 2012 16:13, D?niel Arat? <exitcons...@gmail.com> wrote:
> Hi all,
>
> I'm curious if the first implementation of GHC was in a different
> language before its current instance could be developed.
> If yes, what language was used?
> If not, what compiler was first used to compile GHC?
>
> Thank you,
> Daniel
>
> _______________________________________________
> Beginners mailing list
> Beginners@haskell.org
> http://www.haskell.org/mailman/listinfo/beginners



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

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


End of Beginners Digest, Vol 50, Issue 38
*****************************************

Reply via email to