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: [Haskell-cafe] Multidimensional Matrices in  Haskell
      (Manuel M T Chakravarty)
   2.  Re: [Haskell-cafe] Multidimensional Matrices in  Haskell
      (Manuel M T Chakravarty)
   3.  Re: [Haskell-cafe] lists of arbitrary depth (Christopher Done)
   4.  Fwd: My first functioning haskell project - a    steganography
      utility (Tim Cowlishaw)
   5. Re:  Fwd: My first functioning haskell project - a
      steganography utility (edgar klerks)
   6. Re:  Fwd: My first functioning haskell project - a
      steganography utility (Tim Cowlishaw)
   7. Re:  Fwd: My first functioning haskell project    - a
      steganography utility (Brent Yorgey)
   8. Re:  Fwd: My first functioning haskell project - a
      steganography utility (edgar klerks)


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

Message: 1
Date: Mon, 12 Jul 2010 12:27:34 +1000
From: Manuel M T Chakravarty <mchakrava...@mac.com>
Subject: [Haskell-beginners] Re: [Haskell-cafe] Multidimensional
        Matrices in     Haskell
To: Mihai Maruseac <mihai.marus...@gmail.com>
Cc: beginners@haskell.org, haskell <haskell-c...@haskell.org>
Message-ID: <b9ef2fc6-ba3c-4a5f-8a3d-ee2e9f658...@mac.com>
Content-Type: text/plain; charset=us-ascii

Hi Mihai,

> A friend of mine wanted to do some Cellular Automata experiments in
> Haskell and was asking me what packages/libraries are there for
> multidimensional matrices. I'm interested in both immutable and
> mutable ones but I don't want them to be trapped inside a monad of any
> kind.

You may like to have a look at the recently released Repa library:

  http://hackage.haskell.org/package/repa

There is a draft paper about it:

  http://www.cse.unsw.edu.au/~chak/papers/KCLPL10.html

Manuel



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

Message: 2
Date: Mon, 12 Jul 2010 14:54:37 +1000
From: Manuel M T Chakravarty <c...@cse.unsw.edu.au>
Subject: [Haskell-beginners] Re: [Haskell-cafe] Multidimensional
        Matrices in     Haskell
To: Mihai Maruseac <mihai.marus...@gmail.com>
Cc: beginners@haskell.org, haskell <haskell-c...@haskell.org>
Message-ID: <97fb62ad-bcbe-42f9-9739-8041257b2...@cse.unsw.edu.au>
Content-Type: text/plain; charset=us-ascii

Hi Mihai,

> A friend of mine wanted to do some Cellular Automata experiments in
> Haskell and was asking me what packages/libraries are there for
> multidimensional matrices. I'm interested in both immutable and
> mutable ones but I don't want them to be trapped inside a monad of any
> kind.

You may like to have a look at the recently released Repa library:

 http://hackage.haskell.org/package/repa

There is a draft paper about it:

 http://www.cse.unsw.edu.au/~chak/papers/KCLPL10.html

Manuel



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

Message: 3
Date: Tue, 13 Jul 2010 11:00:53 +0200
From: Christopher Done <chrisd...@googlemail.com>
Subject: [Haskell-beginners] Re: [Haskell-cafe] lists of arbitrary
        depth
To: vadali <shlomivak...@gmail.com>
Cc: beginners@haskell.org, haskell-c...@haskell.org
Message-ID:
        <aanlktinn7eaf7zpac7_dp9kh6zyjx-zvgljczvij6...@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8

On 13 July 2010 10:58, vadali <shlomivak...@gmail.com> wrote:
>
> hello,
> iam really new to haskell,
>
> i want to define a function which takes as a parameter a list which can
> contain other lists, eg. [1,[2,3],[4,[5,6]]]
>
> how would i define a function that can iterate through the items so (in this
> example)
> iter1 = 1
> iter2 = [2,3]
> iter3 = [4,[5,6]]
>
> ?
>
> ( can i do that without using the Tree data type? )

Maybe this should be moved to Haskell-Beginnners.

It's impossible to have a function that works on a list of arbitrary
nesting. But you could use a tree data type, yeah.


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

Message: 4
Date: Tue, 13 Jul 2010 14:37:17 +0100
From: Tim Cowlishaw <t...@timcowlishaw.co.uk>
Subject: [Haskell-beginners] Fwd: My first functioning haskell project
        - a     steganography utility
To: beginners@haskell.org
Message-ID: <e54ea980-77f1-455b-bd2e-41eecfb48...@timcowlishaw.co.uk>
Content-Type: text/plain; charset=us-ascii


Hey there all,

I've just completed my first functional haskell project - a simple utility for 
steganography - hiding messages within the least significant bit of another 
sort of data file.

Therefore, I was wondering if any of you had any pointers about how I could 
refactor or otherwise improve my code? Any input would be greatly appreciated - 
whether howling great errors or smaller points of "good haskell style". In 
particular, I'd be really interested in whether my type declarations are 
correct - for instance, whether I have been to specific or not specific enough 
in specifying the types of my functions (Integral vs Int, etc).

In addition, I keep feeling that my Steganograph 'smells like' a monad and/or 
functor , as it 'wraps around' a message - however, I'm having trouble defining 
quite how I could achieve construct a monadic type representing a steganograph. 
Is my hunch incorrect, or is there a way of doing this that I haven't yet 
discovered?

The sources is here: http://gist.github.com/473862


Cheers,

Tim




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

Message: 5
Date: Tue, 13 Jul 2010 16:31:10 +0200
From: edgar klerks <edgar.kle...@gmail.com>
Subject: Re: [Haskell-beginners] Fwd: My first functioning haskell
        project - a     steganography utility
To: Tim Cowlishaw <t...@timcowlishaw.co.uk>
Cc: beginners@haskell.org
Message-ID:
        <aanlktim0fcwrqh3x0r-_wxtyw70tu6lhvjn8ly2z3...@mail.gmail.com>
Content-Type: text/plain; charset="iso-8859-1"

Hi Tim,

I have a small remark. You can use maybe from Data.Maybe: b -> (a -> b) ->
Maybe a -> b

to create your maybe plus function:

maybePlus x y = maybe 0 id $ liftM2 (+) x y

That is somewhat cleaner.

Greets,

Edgar

On Tue, Jul 13, 2010 at 3:37 PM, Tim Cowlishaw <t...@timcowlishaw.co.uk>wrote:

>
> Hey there all,
>
> I've just completed my first functional haskell project - a simple utility
> for steganography - hiding messages within the least significant bit of
> another sort of data file.
>
> Therefore, I was wondering if any of you had any pointers about how I could
> refactor or otherwise improve my code? Any input would be greatly
> appreciated - whether howling great errors or smaller points of "good
> haskell style". In particular, I'd be really interested in whether my type
> declarations are correct - for instance, whether I have been to specific or
> not specific enough in specifying the types of my functions (Integral vs
> Int, etc).
>
> In addition, I keep feeling that my Steganograph 'smells like' a monad
> and/or functor , as it 'wraps around' a message - however, I'm having
> trouble defining quite how I could achieve construct a monadic type
> representing a steganograph. Is my hunch incorrect, or is there a way of
> doing this that I haven't yet discovered?
>
> The sources is here: http://gist.github.com/473862
>
>
> Cheers,
>
> Tim
>
>
> _______________________________________________
> 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/20100713/7704ae46/attachment-0001.html

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

Message: 6
Date: Tue, 13 Jul 2010 15:39:50 +0100
From: Tim Cowlishaw <t...@timcowlishaw.co.uk>
Subject: Re: [Haskell-beginners] Fwd: My first functioning haskell
        project - a     steganography utility
To: edgar klerks <edgar.kle...@gmail.com>
Cc: beginners@haskell.org
Message-ID: <5bf1ab39-25fa-4a0b-8ef4-3b62e402a...@timcowlishaw.co.uk>
Content-Type: text/plain; charset=us-ascii

On 13 Jul 2010, at 15:31, edgar klerks wrote:

> You can use maybe from Data.Maybe: b -> (a -> b) -> Maybe a -> b
> 
> to create your maybe plus function: 
> 
> maybePlus x y = maybe 0 id $ liftM2 (+) x y
> 
> That is somewhat cleaner.

Aah thanks Edgar - I'd meant to ask about this specifically actually, as 
addition is a monoid over the real numbers and  therefore has an identity 
element, I was wondering if there was an easier way to generalise it to cope 
with arguments in the Maybe monad. As far as I can see, this is precisely what 
you describe above. Therefore, would I be right in saying that your approach 
can be generalised to any function which forms a monoid over a specific type?

I'm imagining something like:

maybeMonoid :: (a -> a -> a) -> a ->  (Maybe a -> Maybe a -> a)
maybeMonoid f identity = maybe identity id $ liftM2 f

Thanks for the feedback!

Cheers,

Tim



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

Message: 7
Date: Tue, 13 Jul 2010 15:51:08 +0100
From: Brent Yorgey <byor...@seas.upenn.edu>
Subject: Re: [Haskell-beginners] Fwd: My first functioning haskell
        project - a steganography utility
To: beginners@haskell.org
Message-ID: <20100713145107.ga15...@seas.upenn.edu>
Content-Type: text/plain; charset=us-ascii

On Tue, Jul 13, 2010 at 03:39:50PM +0100, Tim Cowlishaw wrote:
> On 13 Jul 2010, at 15:31, edgar klerks wrote:
> 
> > You can use maybe from Data.Maybe: b -> (a -> b) -> Maybe a -> b
> > 
> > to create your maybe plus function: 
> > 
> > maybePlus x y = maybe 0 id $ liftM2 (+) x y

Note that 'maybe foo id' is better written 'fromMaybe foo'.


> maybeMonoid :: (a -> a -> a) -> a ->  (Maybe a -> Maybe a -> a)
> maybeMonoid f identity = maybe identity id $ liftM2 f

If it really is an instance of the Monoid type class then you could
just write:

  maybeMonoid :: (Monoid a) => Maybe a -> Maybe a -> a
  maybeMonoid x y = fromMaybe mempty $ liftM2 mappend x y


-Brent


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

Message: 8
Date: Tue, 13 Jul 2010 16:50:51 +0200
From: edgar klerks <edgar.kle...@gmail.com>
Subject: Re: [Haskell-beginners] Fwd: My first functioning haskell
        project - a     steganography utility
To: Tim Cowlishaw <t...@timcowlishaw.co.uk>
Cc: beginners@haskell.org
Message-ID:
        <aanlktinqc4j_oku20rhaor8sj0e0ndnoevpd50xcb...@mail.gmail.com>
Content-Type: text/plain; charset="iso-8859-1"

Hi Tim,

I am not too deep into category theory.  But the Data.Monoid class defines
the identity as mempty. And the binary operation as mappend. So that would
be:

maybePlus = maybe mempty id $ liftM2 (mappend) x y

You only have to define Num as Monoid, because there are more monoids
possible. (Multiplication, addition etc).

That would look something like this:

instance (Num a) => Monoid a where ...

Have a look at the monoid class:
http://haskell.org/ghc/docs/6.12.2/html/libraries/base-4.2.0.1/Data-Monoid.html

Greets,

Edgar
On Tue, Jul 13, 2010 at 4:39 PM, Tim Cowlishaw <t...@timcowlishaw.co.uk>wrote:

> On 13 Jul 2010, at 15:31, edgar klerks wrote:
>
> > You can use maybe from Data.Maybe: b -> (a -> b) -> Maybe a -> b
> >
> > to create your maybe plus function:
> >
> > maybePlus x y = maybe 0 id $ liftM2 (+) x y
> >
> > That is somewhat cleaner.
>
> Aah thanks Edgar - I'd meant to ask about this specifically actually, as
> addition is a monoid over the real numbers and  therefore has an identity
> element, I was wondering if there was an easier way to generalise it to cope
> with arguments in the Maybe monad. As far as I can see, this is precisely
> what you describe above. Therefore, would I be right in saying that your
> approach can be generalised to any function which forms a monoid over a
> specific type?
>
> I'm imagining something like:
>
> maybeMonoid :: (a -> a -> a) -> a ->  (Maybe a -> Maybe a -> a)
> maybeMonoid f identity = maybe identity id $ liftM2 f
>
> Thanks for the feedback!
>
> Cheers,
>
> Tim
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
http://www.haskell.org/pipermail/beginners/attachments/20100713/c4e66b21/attachment.html

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

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


End of Beginners Digest, Vol 25, Issue 29
*****************************************

Reply via email to