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:  flatten comma operator (Arlen Cuss)
   2. Re:  wrapping text in a multiline string (Rico Moorman)
   3. Re:  flatten comma operator (Kees Bleijenberg)
   4. Re:  wrapping text in a multiline string (Arlen Cuss)
   5. Re:  wxHaskell path (Miguel Negrao)


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

Message: 1
Date: Wed, 6 Jun 2012 16:42:52 +1000
From: Arlen Cuss <a...@unnali.com>
Subject: Re: [Haskell-beginners] flatten comma operator
To: Kees Bleijenberg <k.bleijenb...@inter.nl.net>
Cc: beginners@haskell.org
Message-ID: <bd4727d194e842a39621f06d81389...@unnali.com>
Content-Type: text/plain; charset="utf-8"

By the way, is the excerpt from RWH involving liftA2 the chapter on using 
Parsec? If so, this may be the code snippet you refer to:

-- file: ch16/FormApp.hs a_pair :: CharParser () (String, Maybe String) a_pair 
= liftA2 (,) (many1 a_char) (optionMaybe (char '=' *> many a_char))

In this case, liftA2 is promoting the (,) operation to work with the two 
operations in the CharParser applicative functor.

(,) is of type "a -> b -> (a,b)", so without lifting, we'd end up with 
something like "(CharParser () String, CharParser () Maybe String)" (just a 
guess here).

liftA2 produces a new applicative functor action which computes each of (many1 
a_char) and (optionMaybe (char '=' *> many a_char)), then gives the pure 
results to (,). 


On Wednesday, 6 June 2012 at 4:36 PM, Arlen Cuss wrote:

> If (,) is a function that takes two elements and returns the 2-tuple, have 
> you considered something like (,,)? :)
> 
> 
> 
> On Wednesday, 6 June 2012 at 4:33 PM, Kees Bleijenberg wrote:
> 
> > In 'Real World Haskell' I found code like LiftA2 (,) ....
> > Looks odd. But after some experimenting in winghci I found that (,) 1 2 is 
> > valid code and is equal to (1,2).
> > Now I wonder how to create (1,2,3). I think you need a join or a flatten 
> > function or ...? Join doesn't work?
> > 
> > Kees
> > 
> > _______________________________________________
> > Beginners mailing list
> > Beginners@haskell.org (mailto:Beginners@haskell.org)
> > http://www.haskell.org/mailman/listinfo/beginners
> 






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

Message: 2
Date: Wed, 6 Jun 2012 08:52:44 +0200
From: Rico Moorman <rico.moor...@gmail.com>
Subject: Re: [Haskell-beginners] wrapping text in a multiline string
To: Arlen Cuss <a...@unnali.com>
Cc: beginners@haskell.org
Message-ID:
        <cajrzcx1qybl8pdqck1-bkf7by8ovewzkaxxfheghosbwrch...@mail.gmail.com>
Content-Type: text/plain; charset="windows-1252"

Thank you very much for this suggestion. I just tried the character class
you mentioned and it works.

The stackoverflow post you mentioned was a nice read and I surely agree
that regular expressions are normally not the way to go for most HTML
munging needs. But luckily the generated HTML from pandoc is very specific
and the <table> tag I wanted to match (for line-numbered code listings)
does not contain any further tables so I thought it should be safe to
approach it like this.

The resulting code is now:

-- Wraps numbered code listings within the page body with a div
-- in order to be able to apply some more specific styling.
wrapNumberedCodelistings (Page meta body) =
    Page meta newBody
    where
        newBody = regexReplace
"<table\\s+class=\"sourceCode[^>]+>[\\s\\S]*?</table>" wrap body
        wrap x = "<div class=\"sourceCodeWrap\">" ++ x ++ "</div>"

-- Replaces the whole match for the given regex using the given function
regexReplace :: String -> (String -> String) -> String -> String
regexReplace regex replace text = go text
    where
        go text = case text =~~ regex of
            Just (before, match, after) ->
                before ++ replace match ++ go after
            _ -> text

Don't know though if it could be cleaned up further or even if this is by
any means good style (being still fairly new to haskell).

Furthermore I would still be very interested in the right approach to
manipulating the HTML structure as a whole and I too hope that another
Haskeller could name a more suitable solution for manipulating HTML.
Or even how to pass the 's' modifier to Text.Regex.PCRE.

Best regards,

rico

On Wed, Jun 6, 2012 at 7:11 AM, Arlen Cuss <a...@unnali.com> wrote:

> I'd be more inclined to look at a solution involving manipulating the HTML
> structure, rather than trying a regexp-based approach, which will probably
> end up disappointing. (See this: http://stackoverflow.com/a/1732454/499609
> )
>
> I hope another Haskeller can speak to a library that would be good for
> this kind of purpose.
>
> To suit what you're doing now, though; if you change .*? to [\s\S]*?, it
> should work on multiline strings. If you can work out how to pass the 's'
> modifier to Text.Regexp.PCRE, that should also do it.
>
> ?Arlen
>
>
> On Wednesday, 6 June 2012 at 3:05 PM, Rico Moorman wrote:
>
> > Hello,
> >
> > I have a given piece of multiline HTML (which is generated using pandoc
> btw.) and I am trying to wrap certain elements (tags with a given class)
> with a <div>.
> >
> > I already took a look at the Text.Regex.PCRE module which seemed a
> reasonable choice because I am already familiar with similar regex
> implementations in other languages.
> >
> > I came up with the following function which takes a regex and replaces
> all matches within the given string using the provided function (which I
> would use to wrap the element)
> >
> > import Text.Regex.PCRE ((=~~))
> >
> > -- Replaces the whole match for the given regex using the given function
> > regexReplace :: String -> (String -> String) -> String -> String
> > regexReplace regex replace text = go text
> > where
> > go text = case text =~~ regex of
> > Just (before, match, after) ->
> > before ++ replace match ++ go after
> > _ -> text
> >
> > The problem with this function is, that it will not work on multiline
> strings. I would like to call it like this:
> >
> > newBody = regexReplace "<table class=\"sourceCode\".*?table>" wrap body
> > wrap x = "<div class=\"sourceCodeWrap\">" ++ x ++ "</div>"
> >
> > Is there any way to easily pass some kind of multiline modifier to the
> regex in question?
> >
> > Or is this approach completely off and would something else be more
> appropriate/haskelly for the problem at hand?
> >
> > Thank you very much in advance.
> > _______________________________________________
> > Beginners mailing list
> > Beginners@haskell.org (mailto: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/20120606/48ba2c2d/attachment-0001.htm>

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

Message: 3
Date: Wed, 6 Jun 2012 09:46:58 +0200
From: "Kees Bleijenberg" <k.bleijenb...@inter.nl.net>
Subject: Re: [Haskell-beginners] flatten comma operator
To: <beginners@haskell.org>
Message-ID: <201206060747.q567l2sb005...@smtp20.nijmegen.internl.net>
Content-Type: text/plain;       charset="us-ascii"

This is indeed the code I was talking about.
I did not understand how I could create (1,2,3) with the comma operator
(,)((,) 1 2) 3 = ((1,2),3) and not (1,2,3). That's why I thought I needed a
kind of join operation to 'flatten' this.
Indeed (,,) 1 2 3 is (1,2,3). But I do not understand what is happening. Is
(,,) predefined? Probably not.


-----Oorspronkelijk bericht-----
Van: Arlen Cuss [mailto:a...@unnali.com] 
Verzonden: woensdag 6 juni 2012 8:43
Aan: Kees Bleijenberg
CC: beginners@haskell.org
Onderwerp: Re: [Haskell-beginners] flatten comma operator

By the way, is the excerpt from RWH involving liftA2 the chapter on using
Parsec? If so, this may be the code snippet you refer to:

-- file: ch16/FormApp.hs a_pair :: CharParser () (String, Maybe String)
a_pair = liftA2 (,) (many1 a_char) (optionMaybe (char '=' *> many a_char))

In this case, liftA2 is promoting the (,) operation to work with the two
operations in the CharParser applicative functor.

(,) is of type "a -> b -> (a,b)", so without lifting, we'd end up with
something like "(CharParser () String, CharParser () Maybe String)" (just a
guess here).

liftA2 produces a new applicative functor action which computes each of
(many1 a_char) and (optionMaybe (char '=' *> many a_char)), then gives the
pure results to (,). 


On Wednesday, 6 June 2012 at 4:36 PM, Arlen Cuss wrote:

> If (,) is a function that takes two elements and returns the 2-tuple, 
> have you considered something like (,,)? :)
> 
> 
> 
> On Wednesday, 6 June 2012 at 4:33 PM, Kees Bleijenberg wrote:
> 
> > In 'Real World Haskell' I found code like LiftA2 (,) ....
> > Looks odd. But after some experimenting in winghci I found that (,) 1 2
is valid code and is equal to (1,2).
> > Now I wonder how to create (1,2,3). I think you need a join or a flatten
function or ...? Join doesn't work?
> > 
> > Kees
> > 
> > _______________________________________________
> > Beginners mailing list
> > Beginners@haskell.org (mailto:Beginners@haskell.org) 
> > http://www.haskell.org/mailman/listinfo/beginners
> 






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

Message: 4
Date: Wed, 6 Jun 2012 17:46:58 +1000
From: Arlen Cuss <a...@unnali.com>
Subject: Re: [Haskell-beginners] wrapping text in a multiline string
To: Rico Moorman <rico.moor...@gmail.com>
Cc: beginners@haskell.org
Message-ID: <a1e683b216814a5bb85cbdcf58334...@unnali.com>
Content-Type: text/plain; charset="utf-8"

Exploring the documentation for Text.Regex.PCRE, I've found "CompOption":

http://hackage.haskell.org/packages/archive/regex-pcre/0.94.4/doc/html/Text-Regex-PCRE-Wrap.html#t:CompOption

The constants are listed below; the one you want is probably compDotAll, to 
make "." match newlines as well. I'm not 100% sure if this is the module you 
want, though, and I can't seem to get regex-pcre installed, so I can't test. 
Apologies!  


On Wednesday, 6 June 2012 at 4:52 PM, Rico Moorman wrote:

> Thank you very much for this suggestion. I just tried the character class you 
> mentioned and it works.
>  
> The stackoverflow post you mentioned was a nice read and I surely agree that 
> regular expressions are normally not the way to go for most HTML munging 
> needs. But luckily the generated HTML from pandoc is very specific and the 
> <table> tag I wanted to match (for line-numbered code listings) does not 
> contain any further tables so I thought it should be safe to approach it like 
> this.  
>  
> The resulting code is now:
>  
> -- Wraps numbered code listings within the page body with a div
> -- in order to be able to apply some more specific styling.
> wrapNumberedCodelistings (Page meta body) =
> Page meta newBody
> where
> newBody = regexReplace "<table\\s+class=\"sourceCode[^>]+>[\\s\\S]*?</table>" 
> wrap body
> wrap x = "<div class=\"sourceCodeWrap\">" ++ x ++ "</div>"
>  
> -- Replaces the whole match for the given regex using the given function
> regexReplace :: String -> (String -> String) -> String -> String
> regexReplace regex replace text = go text
> where
> go text = case text =~~ regex of
> Just (before, match, after) ->
> before ++ replace match ++ go after
> _ -> text
>  
>  
> Don't know though if it could be cleaned up further or even if this is by any 
> means good style (being still fairly new to haskell).  
>  
> Furthermore I would still be very interested in the right approach to 
> manipulating the HTML structure as a whole and I too hope that another 
> Haskeller could name a more suitable solution for manipulating HTML.  
> Or even how to pass the 's' modifier to Text.Regex.PCRE.
>  
> Best regards,
>  
> rico
>  
> On Wed, Jun 6, 2012 at 7:11 AM, Arlen Cuss <a...@unnali.com 
> (mailto:a...@unnali.com)> wrote:
> > I'd be more inclined to look at a solution involving manipulating the HTML 
> > structure, rather than trying a regexp-based approach, which will probably 
> > end up disappointing. (See this: http://stackoverflow.com/a/1732454/499609)
> >  
> > I hope another Haskeller can speak to a library that would be good for this 
> > kind of purpose.
> >  
> > To suit what you're doing now, though; if you change .*? to [\s\S]*?, it 
> > should work on multiline strings. If you can work out how to pass the 's' 
> > modifier to Text.Regexp.PCRE, that should also do it.
> >  
> > ?Arlen
> >  
> >  
> > On Wednesday, 6 June 2012 at 3:05 PM, Rico Moorman wrote:
> >  
> > > Hello,
> > >  
> > > I have a given piece of multiline HTML (which is generated using pandoc 
> > > btw.) and I am trying to wrap certain elements (tags with a given class) 
> > > with a <div>.
> > >  
> > > I already took a look at the Text.Regex.PCRE module which seemed a 
> > > reasonable choice because I am already familiar with similar regex 
> > > implementations in other languages.
> > >  
> > > I came up with the following function which takes a regex and replaces 
> > > all matches within the given string using the provided function (which I 
> > > would use to wrap the element)
> > >  
> > > import Text.Regex.PCRE ((=~~))
> > >  
> > > -- Replaces the whole match for the given regex using the given function
> > > regexReplace :: String -> (String -> String) -> String -> String
> > > regexReplace regex replace text = go text
> > > where
> > > go text = case text =~~ regex of
> > > Just (before, match, after) ->
> > > before ++ replace match ++ go after
> > > _ -> text
> > >  
> > > The problem with this function is, that it will not work on multiline 
> > > strings. I would like to call it like this:
> > >  
> > > newBody = regexReplace "<table class=\"sourceCode\".*?table>" wrap body
> > > wrap x = "<div class=\"sourceCodeWrap\">" ++ x ++ "</div>"
> > >  
> > > Is there any way to easily pass some kind of multiline modifier to the 
> > > regex in question?
> > >  
> > > Or is this approach completely off and would something else be more 
> > > appropriate/haskelly for the problem at hand?
> > >  
> > > Thank you very much in advance.
> > > _______________________________________________
> > > Beginners mailing list
> > > Beginners@haskell.org (mailto:Beginners@haskell.org) 
> > > (mailto:Beginners@haskell.org)
> > > http://www.haskell.org/mailman/listinfo/beginners
> >  
>  






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

Message: 5
Date: Wed, 6 Jun 2012 09:04:41 +0100
From: Miguel Negrao <miguel.negrao-li...@friendlyvirus.org>
Subject: Re: [Haskell-beginners] wxHaskell path
To: beginners@haskell.org
Message-ID: <9411be75-323a-477a-b948-4b0863a28...@friendlyvirus.org>
Content-Type: text/plain; charset=windows-1252


A 06/06/2012, ?s 00:39, Henry Lockyer escreveu:

> Hi all 
> Trying to work out how to get wxHaskell correctly installed on mac os x 
> (10.6.8 snow leopard).
> Have decided to try and get the older version working (0.13) so as to use the 
> pre-installed
> wxWidgets (2.8.8 it seems).  I was looking at the wxHAskell install info for 
> mac os x at 
> (1) http://www.haskell.org/haskellwiki/WxHaskell/MacOS_X   -  which only 
> talks about widgets 2.9,
> but I have now been reading
> (2) http://www.haskell.org/haskellwiki/WxHaskell/2.8 
> 
> Question: 
> The variable "$wxwin" is referred to in the page at link (2) above, where it 
> says: 
> "We assume in this guide that the variable $wxwin points to your wxWidgets 
> installation directory, for example: ~/dev/wxGTK-2.8.10."
> And in the page at link (1), step 3, it says:
> "Check your path to make sure you are using your wxWidgets and not the 
> default Mac one"
> 
> Are these referring to the same thing?  ( I had originally interpreted 'path' 
> as referring to $PATH.)
> 
> The reference to $wxwin is in instructions for building wxWidgets 2.8 which I 
> should not need to do if I am 
> using the already installed 2.8.8 widgets library, but if I echo $wxwin it is 
> blank and does not therefore appear to
> point to my wxWidgets installation directory.
> Is this an issue or is it only relevant to the initial build process for 
> wxWidgets?
> 
> Can anyone throw any light on this?

Not exactly what you are asking for but I recently installed wxHaskell latest 
version  with wxWidgets 2.9 on osx 10.7.3 successfully using the instructions 
here http://www.haskell.org/haskellwiki/WxHaskell/MacOS_X and some help from 
the list.

 I installed wxWidgets from homebrew (http://mxcl.github.com/homebrew/) which 
is very easy to do, a one liner. I think the 2.9 version is much better for 
osx, it has 64 bit support and uses cocoa:

"2.9 series bring many improvements compared to 2.8 series such as much better 
and simpler to use support for Unicode and the new wxOSX/Cocoa port, suitable 
for development of 64 bit GUI applications under OS X, as well as a huge number 
of other new features and bug fixes."

It should be something like:

brew install wxmac --devel

then

cabal install wx cabal-macosx

or if have issues  with the command above install the correct versions of the 
dependencies in the right order by hand:

   cabal install wxdirect-0.90.0.1
   cabal install wxc-0.90.0.3
   cabal install wxcore-0.90.0.1
   cabal install wx-0.90.0.1
   cabal install cabal-macosx

When I did this I got it working inside EclipseFP although I couldn?t get ghc 
to compile a hello world program, which I guess means I should be passing it 
some flag that I don?t know about.

Hope this helps,
Miguel Negr?o





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

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


End of Beginners Digest, Vol 48, Issue 7
****************************************

Reply via email to