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.  FastCGI error (Wayne R)
   2. Re:  Using Debug.Trace (Patrick LeBoutillier)
   3.  Applicative Functors: Rose Trees with an alternate behavior
      (Travis Erdman)
   4.  Re: Trying to statically link Gtk2Hs application (Windows
      XP, network drive) (Peter Schmitz)
   5. Re:  Re: Trying to statically link Gtk2Hs         application
      (Windows XP, network drive) (Felipe Lessa)
   6.  Why does this work in a program, but cause a seg fault in
      ghci? (Kurt H?usler)
   7. Re:  Why does this work in a program, but cause a         seg fault
      in ghci? (Sebasti?n E. Peyrott)


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

Message: 1
Date: Tue, 10 Aug 2010 12:35:11 -0500
From: Wayne R <reginald.wayne.richa...@gmail.com>
Subject: [Haskell-beginners] FastCGI error
To: beginners@haskell.org
Message-ID:
        <aanlktimnruqsxta2w24tzmnrwx7yqv+sfdsg-do8u...@mail.gmail.com>
Content-Type: text/plain; charset="iso-8859-1"

I'm trying to use Network.FastCGI with Apache2, but running into an error.
I'd like to believe that the web server is configured correctly, because I
can successfully view the following, compiled to <web
root>/fastcgi/test.fcgi:

#include <fcgi_stdio.h>

int main(void){
  int count = 0;
  while(FCGI_Accept()>=0){
   printf("Content-Type: text/html\r\n");
   printf("\r\n");
   printf("Hello, World: %d", count++);
  }
  return 0;
}

Now I compile Fcgi.hs to <web root>/fastcgi/test2.fcgi:

import Control.Concurrent
import Network.FastCGI

action :: CGI CGIResult
action = do
        setHeader "Content-type" "text/plain"
        tid <- liftIO myThreadId
        output $ unlines
            [ "I am a FastCGI process!"
            , "Hear me roar!"
            , ""
            , show tid
            ]

main = runFastCGIConcurrent' forkIO 10 action


When I view localhost/fastcgi/test.fcgi, I get the hello world page, but
attempting to view test2.fcgi shows an 'Internal Server Error" in firefox.
The apache error log says:

[Sun Aug 08 07:44:17 2010] [notice] Apache/2.2.14 (Ubuntu) mod_fastcgi/2.4.6
mod_lisp2/1.3.1 PHP/5.3.2-1ubuntu4.2 with Suhosin-Patch mod_ssl/2.2.14
OpenSSL/0.9.8k configured -- resuming normal operations
[Mon Aug 09 11:11:23 2010] [warn] FastCGI: (dynamic) server
"/var/www/fastcgi/test.fcgi" started (pid 20354)
[Mon Aug 09 11:11:27 2010] [warn] FastCGI: (dynamic) server
"/var/www/fastcgi/test2.fcgi" started (pid 20360)
[Mon Aug 09 11:11:31 2010] [warn] FastCGI: (dynamic) server
"/var/www/fastcgi/test2.fcgi" started (pid 20365)
[Mon Aug 09 11:11:34 2010] [warn] FastCGI: (dynamic) server
"/var/www/fastcgi/test2.fcgi" started (pid 20371)
[Mon Aug 09 11:11:37 2010] [warn] FastCGI: (dynamic) server
"/var/www/fastcgi/test2.fcgi" started (pid 20375)
[Mon Aug 09 11:11:40 2010] [warn] FastCGI: (dynamic) server
"/var/www/fastcgi/test2.fcgi" started (pid 20379)
[Mon Aug 09 11:11:43 2010] [warn] FastCGI: (dynamic) server
"/var/www/fastcgi/test2.fcgi" started (pid 20383)
[Mon Aug 09 11:11:46 2010] [warn] FastCGI: (dynamic) server
"/var/www/fastcgi/test2.fcgi" started (pid 20387)
[Mon Aug 09 11:11:49 2010] [warn] FastCGI: (dynamic) server
"/var/www/fastcgi/test2.fcgi" started (pid 20391)
[Mon Aug 09 11:11:52 2010] [warn] FastCGI: (dynamic) server
"/var/www/fastcgi/test2.fcgi" started (pid 20395)
[Mon Aug 09 11:11:55 2010] [warn] FastCGI: scheduled the start of the last
(dynamic) server "/var/www/fastcgi/test2.fcgi" process: reached
dynamicMaxClassProcs (10)
[Mon Aug 09 11:11:55 2010] [warn] FastCGI: (dynamic) server
"/var/www/fastcgi/test2.fcgi" started (pid 20399)
[Mon Aug 09 11:12:01 2010] [error] [client 127.0.0.1] FastCGI: comm with
(dynamic) server "/var/www/fastcgi/test2.fcgi" aborted: (first read) idle
timeout (30 sec)
[Mon Aug 09 11:12:01 2010] [error] [client 127.0.0.1] FastCGI: incomplete
headers (0 bytes) received from server "/var/www/fastcgi/test2.fcgi"

I've tried Fcgi.hs with two different sample FastCGI programs with the same
results.  Any suggestions?

Wayne
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
http://www.haskell.org/pipermail/beginners/attachments/20100810/13287412/attachment-0001.html

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

Message: 2
Date: Tue, 10 Aug 2010 14:52:45 -0400
From: Patrick LeBoutillier <patrick.leboutill...@gmail.com>
Subject: Re: [Haskell-beginners] Using Debug.Trace
To: Daniel Fischer <daniel.is.fisc...@web.de>
Cc: beginners@haskell.org
Message-ID:
        <aanlktikp=lkb-ry3z7kitx=hczjkj0_w8_kdb-uoo...@mail.gmail.com>
Content-Type: text/plain; charset=ISO-8859-1

Hi,

I tried the bang patterns, it seems to force evaluation enough in most
cases to triger the "trace" call.

Thanks a lot,

Patrick


On Sun, Aug 8, 2010 at 2:18 PM, Daniel Fischer <daniel.is.fisc...@web.de> wrote:
> On Sunday 08 August 2010 19:14:41, Patrick LeBoutillier wrote:
>> Hi all,
>>
>> I'm writing a parser for a binary format, and I'm trying to debug it
>> since I have a bug and the code is getting lost in the bits and bytes.
>> Basically my main is like this:
>>
>>   import Data.Binary.Get
>>   import Debug.Trace
>>   import qualified Data.ByteString.Lazy as L
>>
>>   main = do
>>     bytes <- L.readFile "song.gp4"
>>     let (version, bytes') = getVersion bytes
>>     putStrLn version
>>
>>     let stuff = runGet (getDocument version) bytes'
>>     putStrLn $ show stuff
>
> putStrLn $ show stuff === print stuff
>
>>
>>     return ()
>
> Unneeded
>
>>
>> The getVersion and getDocument functions use the Data.Binary.Get monad
>> to decode the byte string into various objects.
>> I tried sprinkling "trace" calls a bit everywhere and I realize they
>> don't always get called at the expected time.
>
> trace prints its first argument when the second is demanded, so to print
> earlier, you can in general add more strictness to your programme, but I'm
> not sure if that makes a difference for Get, since that has no freedom to
> reorder the sequence in which the values are read. So with traces in the
> right places, you should get tracing output while the deserialisation is
> underway automatically.
> Whether in
>
> getSomeObject = do
>    foo <- get
>    !bar <- trace ("foo is " ++ show foo) get
>    let !baz = trace ("bar is " ++ show bar) $ fiddle foo bar
>    return $! trace ("baz is " ++ show baz) (wibble baz foo bar)
>
> the bangs make a difference regarding trace output, I don't know.
>
>> Most of them are only
>> called when I reach the "putStrLn $ show stuff" statement.
>> Unfortunately that doesn't help me because I get a
>>
>>   *** Exception: too few bytes. Failed reading at byte position 35939
>>
>> before that.
>
> That usually means the file hasn't the correct format, e.g. some size
> (length of list) has been written in little-endian order and is read in
> big-endian, so get tries to read more items than there are.
>
>>
>> Is this happening because I'm using lazy IO to read the file?
>
> Unlikely. What is the file size on disk? If it's larger than 35939 bytes,
> you have an IO problem, but still Data.ByteString.Lazy.readFile wouldn't be
> the first on my list of suspects.
>
>> Is there a way to force the evaluation of these "trace" calls?
>
> Seeing more of the code could help coming up with ideas.
>
>> Are there any other ways to debug this kind of stuff in Haskell?
>>
>
> Break things down into smaller pieces and test those.
> And there's the ghci-debugger, I hear if one has learned to use it, it's
> quite helpful.
>
>>
>> Thanks a lot,
>>
>> Patrick
>
>



-- 
=====================
Patrick LeBoutillier
Rosemère, Québec, Canada


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

Message: 3
Date: Tue, 10 Aug 2010 12:08:01 -0700 (PDT)
From: Travis Erdman <traviserd...@yahoo.com>
Subject: [Haskell-beginners] Applicative Functors: Rose Trees with an
        alternate behavior
To: beginners@haskell.org
Message-ID: <201592.62290...@web114705.mail.gq1.yahoo.com>
Content-Type: text/plain; charset=us-ascii

> The correct implementation of pure looks like this:
> 
>   pure x = Node x (repeat (pure x))
> 
> (Hooray for lazy infinite data structures!) With this definition the
> standard sequenceA works just fine.

Ha, I would never have arrived at that solution in a million years on my own, 
but now that you show me, it makes perfect sense!
Following the discussion of ZipLists from 
http://learnyouahaskell.com/functors-applicative-functors-and-monoids, my 
initial solution attempt was
pure x = Node x (repeat x)
but that doesn't even compile.  I had suspected that I needed to make the pure 
tree "go down", but I couldn't see how to do it.

OK, some follow-on questions if I may ...

sequenceA [Tree a] now returns Tree [a], as indicated.

Now, I'd also like sequenceA Tree [a] to return [Tree a].  To do that, I need 
to 
make Tree an instance of Traversable and, hence, Foldable.

Here's my stab at doing that ...

instance Foldable Tree where
    foldMap f (Node cargo subtrees) = f cargo `mappend` foldMap (foldMap f) 
subtrees

instance Traversable Tree where
    traverse f (Node cargo subtrees) = Node <$> f cargo <*> traverse (traverse 
f) subtrees  


The Foldable code appears to be correct; at least, I can the fold the trees.  
"Foldable" also allows the toList Tree a to work as expected.
Given that, I don't really "get" Traversable, and the code here is just my best 
guess as to what it should be.  But, I think it must not
be correct, because sequenceA Tree [a] is not returning what I think it should 
be returning (ie [Tree a]).

Aside from this, what other things can I do with a Traversable Tree?  My 
intuition suggests I might be able to do Scan's on a tree, say
calculate a cumulative sums Tree from root to leaves (or vice versa).  But I've 
no idea how to implement that using it's "Traversability".

As of now, I have implemented this up-and-down scanning thusly ...

treeScanDown :: (a -> b -> a) -> a -> Tree b -> Tree a
treeScanDown f x (Node y subtrees) = Node g (fmap (treeScanDown f g) subtrees)
    where g = f x y

treeScanUp :: (a -> [a] -> a) -> Tree a -> Tree a
treeScanUp f (Node x []) = Node x []
treeScanUp f (Node x subtrees) = Node (f x (fmap fromNode g)) g
    where g = fmap (treeScanUp f) subtrees

thanks again,

travis


      


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

Message: 4
Date: Tue, 10 Aug 2010 15:09:07 -0700
From: Peter Schmitz <ps.hask...@gmail.com>
Subject: [Haskell-beginners] Re: Trying to statically link Gtk2Hs
        application     (Windows XP, network drive)
To: Haskell Beginners <beginners@haskell.org>
Message-ID:
        <aanlktimfd+5rpqpvg7zwpp5ehth_1zc5cxnuadqwh...@mail.gmail.com>
Content-Type: text/plain; charset=ISO-8859-1

On Fri, Aug 6, 2010 at 2:36 PM, Peter Schmitz <ps.hask...@gmail.com> wrote:
> I am trying to statically link Gtk2Hs applications.
...


For anyone new to using [Haskell + Gtk2Hs + MS Windows], who, like me,
is inclined to try to statically link the Windows binary (as I
described in this thread), I've done some more research and came
across this post:

Re: [Gtk2hs-users] Making a static Windows executable with gtk2hs
http://sourceforge.net/mailarchive/message.php?msg_id=1254152484.4588.632.camel%40localhost

The gist is that, as desirable as it might seem to try to do so, it's
just not a good idea, and things are going to work better overall
relying on the DLLs.

In the past, I had not noticed that
http://sourceforge.net/projects/gtk2hs/   had a mailing list
associated with it. I'm glad I found it.

(and if this "don't statically link Windows Gtk2Hs binaries" advice is
no longer current, please post. Thanks.)

Hope this helps,
-- Peter

(keywords: Haskell Gtk2Hs Gtk+ static statically link linking Windows
binary binaries executable application)


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

Message: 5
Date: Tue, 10 Aug 2010 22:58:54 -0300
From: Felipe Lessa <felipe.le...@gmail.com>
Subject: Re: [Haskell-beginners] Re: Trying to statically link Gtk2Hs
        application (Windows XP, network drive)
To: Peter Schmitz <ps.hask...@gmail.com>
Cc: Haskell Beginners <beginners@haskell.org>
Message-ID:
        <aanlktinqeojq-enuhnr0mck1yynms2d7tffgnrk9q...@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8

You may want to read

http://gtk-win.sourceforge.net/home/index.php/en/Embedding

In particular, they already have a template you may use when using
NSIS to create an installer.

Cheers!

-- 
Felipe.


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

Message: 6
Date: Wed, 11 Aug 2010 04:51:57 +0200
From: Kurt H?usler <kurt.haeus...@gmail.com>
Subject: [Haskell-beginners] Why does this work in a program,   but
        cause a seg fault in ghci?
To: Beginners@haskell.org
Message-ID: <45968c5b-5d3a-4256-8219-57a683f12...@gmail.com>
Content-Type: text/plain; charset=us-ascii

Hi,
I am going through the OpenGL tutorial 1 
(http://www.haskell.org/haskellwiki/OpenGLTutorial1)

The first example program in chapter 2 works if I compile it and run it, but I 
don't understand all of it so I am playing with bits of it in ghci. Look what 
happens:

GHCi, version 6.10.4: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer ... linking ... done.
Loading package base ... linking ... done.
Prelude> let myPoints = map (\k -> (sin(2*pi*k/12),cos(2*pi*k/12),0.0)) [1..12]
Prelude> myPoints 
[(0.49999999999999994,0.8660254037844387,0.0),(0.8660254037844386,0.5000000000000001,0.0),(1.0,6.123233995736766e-17,0.0),(0.8660254037844388,-Segmentation
 fault

Any ideas?

Thanks

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

Message: 7
Date: Tue, 10 Aug 2010 23:59:28 -0300
From: Sebasti?n E. Peyrott <pse...@gmail.com>
Subject: Re: [Haskell-beginners] Why does this work in a program, but
        cause a         seg fault in ghci?
To: beginners@haskell.org
Message-ID:
        <aanlktikvdgwwqomr+n21shqv2rm66d8nc5briaf7v...@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8

AFAIK, that should never happen. The expression looks sane, too, so I
guess it's a bug in GHCi. 6.10.4 is not the latest stable version of
GHC, so you might want to update it.

On Tue, Aug 10, 2010 at 11:51 PM, Kurt Häusler <kurt.haeus...@gmail.com> wrote:
> Hi,
> I am going through the OpenGL tutorial 1 
> (http://www.haskell.org/haskellwiki/OpenGLTutorial1)
>
> The first example program in chapter 2 works if I compile it and run it, but 
> I don't understand all of it so I am playing with bits of it in ghci. Look 
> what happens:
>
> GHCi, version 6.10.4: http://www.haskell.org/ghc/  :? for help
> Loading package ghc-prim ... linking ... done.
> Loading package integer ... linking ... done.
> Loading package base ... linking ... done.
> Prelude> let myPoints = map (\k -> (sin(2*pi*k/12),cos(2*pi*k/12),0.0)) 
> [1..12]
> Prelude> myPoints
> [(0.49999999999999994,0.8660254037844387,0.0),(0.8660254037844386,0.5000000000000001,0.0),(1.0,6.123233995736766e-17,0.0),(0.8660254037844388,-Segmentation
>  fault
>
> Any ideas?
>
> Thanks_______________________________________________
> 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 26, Issue 23
*****************************************

Reply via email to