
manlio_perillo:
However I'm looking for a good environment for implementing generic internet servers, or web applications with special needs. As an example one of my "maybe future" tasks is to write a simple BitTorrent tracker + seeder.
You could look at conjure, the bitorrent client that uses STM for network multiplexing, http://darcs.haskell.org/~lemmih/conjure/
Twisted (a Python asynchronous framework) is a confortable environment, but I feel concurrent Haskell is superior.
Should be a lot faster, given there's compiled native code, and no global locks. Actually, the very kind of thing we see on the shootout now :)
It surely will work using just select, but since I have experience (including indirect experience) with both Twisted and Nginx, I know that using select is asking for troubles (but the solution used by Haskell is very new for me).
Yes, you'd use probably STM's `orElse` to multiplex IO from different sources, and GHCs lightweight threads for concurrency. We've used solutions like this at Galois to build servers that are both high level and efficient. -- Don