Re: [Haskell-cafe] Apparently, Erlang does not have a static type system, since with hot code loading, this is intrinsically difficult.
2010/4/4 Casey Hawthorne cas...@istar.ca: Apparently, Erlang does not have a static type system, since with hot code loading, this is intrinsically difficult. Apparently, this is doable with proper engineering even for such an unsafe language as C: http://www.cs.umd.edu/projects/PL/dsu/ Erlang Programming, Francesco Cesarini Simon Thompson, June 2009, O'Reilly, page 31. I think this is opinion from the time of Erlang design and initial prototypes which gets speaken repeatedly over and over again without (re)checking of facts. If Haskell allows hot code loading, would this throw a wrench into the static type system? The code that is loaded most often is the code of state transformer that operate on completely specified types of state and incoming messages. Behaviours (high level program composing combinators for Erlang) are pretty stable (and, as far as I can tell, are hard to reload - but I can be wrong). Again, one example of code reloading implemented for Bluetail Mail Robustifier actuall stops the system for complete code update and need special conversion code to update old state to new state invariants and back. I think that it is even easier in the presence of strong type system. And again: most of Erlang library code is annotated with type specifications for dialyzer. So I don't think that contemporary Erlang is dynamically typed. It's just static types does not used much. ;) ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Apparently, Erlang does not have a static type system, since with hot code loading, this is intrinsically difficult.
caseyh: Apparently, Erlang does not have a static type system, since with hot code loading, this is intrinsically difficult. Erlang Programming, Francesco Cesarini Simon Thompson, June 2009, O'Reilly, page 31. If Haskell allows hot code loading, would this throw a wrench into the static type system? It certainly adds a phase in that you need to type check code before executing it. Which means you'll need to keep *some* types around at the splice/hot loading points. That is all. -- Don ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Correct way to record state in OpenGL?
Hi What is the correct way to record custom state when using OpenGL? By this, I refer to, say, properties of a square--say it's x,y coordinates as it moves across the screen. This requires that the program keep track of the object's state as it moves. These coordinates are _not_ part of the OpenGL state machine, so is the correct way to use the State monad? If so--or if not so--how would I proceed to keep track of the state of my objects as they move about the screen? Maybe the HOpenGL implementation comes with such state-tracking devices? Please post code snippets if necessary. Thanks in advance, Mark Spezzano ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Hughes' parallel annotations for fixing a space leak
On 31 March 2010 20:51, Heinrich Apfelmus apfel...@quantentunnel.de wrote: As I understand it, GHC implements the technique from Sparud's paper, so this is a solved problem. This is not my understanding. As far as I know, the STG machine has a special notion of selector thunks, which represent projections from product data types. These selector thunks are evaluated by the GHC garbage collector in the manner proposed by Wadler. The Sparud solution is IMHO much cleaner, though! Unfortunately I also have no idea where to obtain a copy of Hughes' thesis The Design and Implementation of Programming Languages. Cheers, Max ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Correct way to record state in OpenGL?
A state monad is really just a convenience (of the sanity-sustaining variety), so that you don't have to name a variable for each new modification of your state. It won't help you here with this specific problem. Create an IORef or MVar early in your main function, and pass it into your callback functions. All of the callbacks will then have access to the same mutable contents. Friendly, --Lane On Sun, 4 Apr 2010, Mark Spezzano wrote: Hi What is the correct way to record custom state when using OpenGL? By this, I refer to, say, properties of a square--say it's x,y coordinates as it moves across the screen. This requires that the program keep track of the object's state as it moves. These coordinates are _not_ part of the OpenGL state machine, so is the correct way to use the State monad? If so--or if not so--how would I proceed to keep track of the state of my objects as they move about the screen? Maybe the HOpenGL implementation comes with such state-tracking devices? Please post code snippets if necessary. Thanks in advance, Mark Spezzano ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: replicateM over vectors
On 04/04/2010, at 05:33, Chad Scherrer wrote: Roman Leshchinskiy rl at cse.unsw.edu.au writes: Ah. I missed that. Then your best bet is probably replicate n action = munstream v $ Fusion.Stream.Monadic.generateM n (const action) $ new n It's uglier that it should be but vector simply doesn't define the right combinators for this at the moment. I'm having trouble getting this to typecheck. I'll reread your Recycle Your Arrays paper; maybe then it will make more sense. Ugh. I shouldn't write emails while frantically scrambling to make a conference deadline. What I meant is this: replicate n action = do { v - new n; v' - munstream v (generate M n (const action)) } Sorry for the confusion. There are two things one would have to do. First, add a function to Generic.New which initialises a New from a Monadic.Stream and fusion rules for it. That's easy. The hard part is to generalise New to work with arbitrary monads: at the moment it is defined as: data New a = New (forall mv s. MVector mv a = ST s (mv s a)) This is because its basic reason for existence is to be passed to Vector.new which then does a runST to produce an immutable vector. It is perhaps possible to make New more general but it's quite tricky. I'll think about it after the ICFP deadline But the m I'm interested in happens to be ST. Sounds like it's still easy in principle, but not immediate. Is that right? Not really. The big step is getting from the type above to a fixed s so that you can use it in a particular ST computation. It's not just a question of making the types work, either. I also have to convince myself that it is actually safe to do so (in particular, that the rewrite rules in the library can't break things). Getting from there to IO is very easy. Roman ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Re: A function that makes list of Bool lists from list of Int lists
Alexandru Scvortov scva...@gmail.com writes: Too many points. listbool :: [[a]] - [[Bool]] listbool = zipWith ($) (map (map . const) (cycle [True, False])) If we choose to zipWith ($), maybe this will do a little less work : listbool = zipWith ($) (cycle $ map (map . const) [True, False]) (ie cycle the 2-element-list of function and not the bool list and then map on an infinite list) -- Guillaume Pinot http://www.irccyn.ec-nantes.fr/~pinot/ « Les grandes personnes ne comprennent jamais rien toutes seules, et c'est fatigant, pour les enfants, de toujours leur donner des explications... » -- Antoine de Saint-Exupéry, Le Petit Prince () ASCII ribbon campaign -- Against HTML e-mail /\ http://www.asciiribbon.org -- Against proprietary attachments ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Correct way to record state in OpenGL?
On Sun, Apr 4, 2010 at 5:03 AM, Mark Spezzano mark.spezz...@chariot.net.au wrote: What is the correct way to record custom state when using OpenGL? By this, I refer to, say, properties of a square--say it's x,y coordinates as it moves across the screen. This requires that the program keep track of the object's state as it moves. These coordinates are _not_ part of the OpenGL state machine, so is the correct way to use the State monad? The State monad effectively just adds an extra argument and result to each function and connects them together for you; the type of a function (a - State s b) translates into (a - s - (b, s)). There's nothing magic in there, and nothing truly stateful in the sense of OpenGL's it's turtles all the way down approach to mutable state, but any state-keeping you could reasonably do by adding more arguments/results to pure functions can usually be done more elegantly with State. Of course you can't really do much with OpenGL outside of IO, so you'd probably want a StateT transformer on top of the IO monad. The downside is that code outside of the transformed monad can't change the state, and can't access it except as an explicit argument. Normally this is a good thing, but it means that any main event loop in the application must be in the transformed monad, and thus under your control--which isn't the case if you're using GLUT. If so--or if not so--how would I proceed to keep track of the state of my objects as they move about the screen? Maybe the HOpenGL implementation comes with such state-tracking devices? HOpenGL does use the StateVar package to provide a consistent interface to mutable references, but that doesn't provide any special implementation of such. Using Data.IORef is probably the simplest choice, and optionally using StateVar if you want to use the same syntax for both IORefs and OpenGL state. On the other hand, if you're getting a GL context from something else--such as SDL or a GUI library--that requires you to manage an explicit event loop, feel free to use StateT instead. - C. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] HXT Namespaces and XPath
Hi all, In HXT, namespace prefixes bound by an XML document are valid in the context of an XPath. How do avoid that? An example program will clarify: simpleXml :: String simpleXml = soap:Body xmlns:soap=\http://www.w3.org/2003/05/soap-envelope\/ nsEnv :: [(String, String)] nsEnv = [ (s, http://www.w3.org/2003/05/soap-envelope;) ] evalXPath :: String - String - [XmlTree] evalXPath xpath xml = runLA ( xread propagateNamespaces getXPathTreesWithNsEnv nsEnv xpath ) xml Here: evalXPath //s:Body simpleXml == evalXPath //soap:Body simpleXml Even though I only mentions the prefix s (and not soap) in the function nsEnv. I do not want the XPath to see prefixes declared in the xml-document, as it means that two semantically similar XML documents can get different results when applied to the same XPath. Also, is there any way to get 'getXPathTreesWithNsEnv' to recognize XPath namespace declarations? I am thinking about declarations like: declare namespace foobar='http://foobar.org/foobar' Greetings, Mads Lindstrøm signature.asc Description: This is a digitally signed message part ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Hughes' parallel annotations for fixing a space leak
On Wed, Mar 31, 2010 at 3:51 PM, Heinrich Apfelmus apfel...@quantentunnel.de wrote: which were introduced by John Hughes in his Phd thesis from 1983. They are intriguing! Unfortunately, I haven't been able to procure a copy of Hughes' thesis, either electronic or in paper. :( Can anyone help? Are there any other resources about this parallel approach? Aye, returning lazy pairs is one of those things that seems rather magical in several respects. Out of curiousity, have you looked at the unsafePerformIO thought experiment near the end of my Monad Reader article? It demonstrates that returning lazy pairs can introduce multiple code paths through a single function, reminiscent of (but different than) multi-mode logical relations. (Mercury, for example, optimizes relations differently depending on their mode.) I too am interested in looking at Hughes' thesis, I tried tracking it down early last year with little success. Best, Leon ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] HXT error handling
Hi I am trying to use HXT to evaluate XPath expressions. The XPath expressions are not specified by myself, but by users of my program. However, the idea behind HXT's error handling confuses me. Maybe somebody can enlighten me. This program fragment: evalXPath :: String - String - [XmlTree] evalXPath xpath xml = runLA ( xread propagateNamespaces getXPathTrees xpath ) xml seems to work fine, except when it comes to error handling. If the xml-string is malformed, the error is simply ignored and the evalXPath-function just returns an empty list. I can understand what happens. 'getXPathTrees xpath' tries to match the xpath to a XmlTree which represents a parse error, and it therefore never matches anything. What I do not understand, is when this behavior would be desirable. Or why do the error in 'xread' not propagate throughout the arrow, similar to how: foobar :: Either String Int foobar = do _ - fail Some failure return 2 the error in 'foobar' would propagate and 'foobar = Left Some failure'. What if the xpath-parameter contains an invalid XPath expression? Well, then the output depends upon both the xpath and the xml -parameters. That is: length (evalXPath /./ foo/ ) == 3 whereas length (evalXPath /./ foo/) == 1 Which just seems strange to me. If we add a getText to evalXPath: evalXPath :: String - String - [String] evalXPath xpath xml = runLA ( xread propagateNamespaces getXPathTrees xpath getText -- added here ) xml Then an error in the xpath-parameter will be hidden by the getText function, similar to how 'getXPathTrees xpath' ignores errors in the xread function. Again, I understand what happens, I just cannot see why it is designed as it is. What I really would like was functions like: parseStr :: (Monad m) = String - m XmlTrees parseStr xml = case Parsec.xread xml of (x:xs) - if (Dom.isError x) then fail Could not parse tree else return (x:xs) [] - fail No XML tree resultet from parsing XML And a similar function for the XPath. This could also speed up my program, as I would not parse the same XPath again and again. A stand-alone function to parse an XPass expression, would also make it easy to create a Template Haskell parse-xpath-function, that gave compile-time error messages and increased performance for XPath expression know at compile-time. Regards, Mads Lindstrøm signature.asc Description: This is a digitally signed message part ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Happy Easter / ZJD!
Happy Easter to those of you who are Christian, and Happy Zombie Jesus Day to those of you who aren't! - Greg ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Hackage accounts and real names
Hi, An issue came up on #haskell recently with Hackage accounts requiring real names. The person in question (who didn't send this email as he's wishing to remain anonymous) applied for a Hackage account and was turned down, as he refused to offer his real name for the username. Those of us in the conversation thought this a bit of an odd policy, and were wondering where this came from. It also emerged that a couple of other people had been held back from getting Hackage accounts because of this reason. Seeing as it's also trivially easy to fake a name, what's the purpose of this restriction? Thanks, -David ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Happy Easter / ZJD!
I've been having a great holiday. Messing about with Hakyll and the Cont monad all weekend. My new site and blog is built with Hakyll now! http://chrisdone.com/ Made a little post about how to use Hakyll with Git in a nice way: http://chrisdone.com/posts/2010-04-04-hakyll-and-git-for-you-blog.html And started as a joke and then I implemented it, make Emacs tweet your Haskell compile errors! http://chrisdone.com/posts/2010-04-04-tweet-your-haskell-errors.html Happy Easter! On 4 April 2010 21:34, Gregory Crosswhite gcr...@phys.washington.edu wrote: Happy Easter to those of you who are Christian, and Happy Zombie Jesus Day to those of you who aren't! - Greg ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Re: Haskellers hate GUIs!!
Hello Wisecrackers, Cannot resist shering with you my perspective. Computer is a logic device and logic builds complexity bottom up while graphics builds it top down. They are therefore antagonistic by nature and in the single case of their glorious interplay - The Euclidean Geometry - it blocked abstract thinking for two millennia (no zero, no negative numbers, no continuity). The implications of that facts are 3-fold: (1) Compositional GUI needs some non-geometric and perhaps non-commutative concepts (2) GUI will always set limit on the scope of your thinking (3) conceptually rich DSL is your best friend as human-computer interface. The role of GUI has gone way beyond its usefulness and now serves the industry to sell computers as candies. Apps like Acrobat Reader became little more than GUI when judged by size and only spymasters' conflicting interests strip some GUI excess to see you swim in sewers of the Internet-turned-video. This visual mania is dangerous as it discourages investigative thinking and reliance on concepts. It is shocking and in my judgement not a coincidence that major theories (like Chaos T.) were discovered using punched cards or plain pen and paper, while Artificial Intelligence research has been very acutely wounded by mouse. Down to Earth TTS reading should have human quality by now, had the researchers used conceptual and compositional approach. If linguists knew Haskell they could write DSLs to intelligently query large data sets and step by step discover human algorithms. Instead they use mostly statistics for pattern recognition. If experts could build DSLs for amplifying their own human concepts they would multiply computer power by human intelligence. Instead they are taught how to press GUI buttons. And what is behind this buttons? Statistics and designer crap! Down to the dust of your heels: make Acrobat Reader TTS read some PDF and you will hear main text intermingled with unrelated footnotes and paragraph titles and copyrights of every picture or graph repeated forever. You can correct this of course with several lines of Haskell code but then Wall Street should sell Adobe and buy You;-) I have been using Haskell for bizarre mathematical stuff but rarely feel the need for anything more than Unicode. Still I would appreciate greatly a simple compositional GUI like Clean has. Perhaps Haskell friendly drivers for selected cards is another path to simplicity? The ultimate GUI waits for operator algebra action where Haskell may show its Category Theoretical teeth. I doubt real world will ever learn Haskell so why Haskellers should pull every piece of real world crap? My advice is: stay clean, the world is wrong. Alleluia! Cheers, - Andrzej Jaworski ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: Haskellers hate GUIs!!
(3) conceptually rich DSL is your best friend as human-computer interface. I agree that a well-designed DSL is *my* best friend but I suspect it would be my grandma's worst enemy. And a badly-designed DSL is also everybody's worst enemy. Also a traditional GUI is discoverable without a user-manual. I can open up MS Word for the first time and get around - Emacs, while vastly more powerful, is also vastly more opaque. -deech ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Hackage accounts and real names
On 5 April 2010 07:28, David House dmho...@gmail.com wrote: An issue came up on #haskell recently with Hackage accounts requiring real names. The person in question (who didn't send this email as he's wishing to remain anonymous) applied for a Hackage account and was turned down, as he refused to offer his real name for the username. I would wonder _why_ anyone would refuse to do so. Are they that ashamed of their own software that they wouldn't want to be associated with it, or is there some legal reason that they don't want to be associated with it? -- Ivan Lazar Miljenovic ivan.miljeno...@gmail.com IvanMiljenovic.wordpress.com ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Hackage accounts and real names
On Apr 4, 2010, at 19:35 , Ivan Miljenovic wrote: I would wonder _why_ anyone would refuse to do so. Are they that ashamed of their own software that they wouldn't want to be associated with it, or is there some legal reason that they don't want to be associated with it? Some people are paranoid about such things, for example because it would allow people to google-mine for things they'd rather a random HR person not reading by linking names together. They use a consistent online name for non-official stuff but work hard to avoid this being linked to their real name. (Several people I know who do this are fairly active in the bi, poly, and/or BSDM communities and are justifiably worried that HR would take a dim view of it being possibly associated with their company.) -- brandon s. allbery [solaris,freebsd,perl,pugs,haskell] allb...@kf8nh.com system administrator [openafs,heimdal,too many hats] allb...@ece.cmu.edu electrical and computer engineering, carnegie mellon universityKF8NH PGP.sig Description: This is a digitally signed message part ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Hackage accounts and real names
On Mon, Apr 5, 2010 at 1:49 AM, Brandon S. Allbery KF8NH allb...@ece.cmu.edu wrote: Some people are paranoid about such things, for example because it would allow people to google-mine for things they'd rather a random HR person not reading by linking names together. In addition, the concept is rather silly, as one can just take a pseudonym without any of us knowing: Whats new: Thu Apr 1 13:37:00 UTC 2010 NicolasBourbaki algebre-1.0 History is ripe with examples of this. -- J. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: Haskellers hate GUIs!!
DSL shold be user-specific knoledge discovery (bidirectionally)though transferable as skill. This is interesting. I am always looking for new ideas in GUI design. Could you elaborate on this? Do you have examples of where this has been successful? -deech ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Hackage accounts and real names
Brandon S. Allbery KF8NH allb...@ece.cmu.edu writes: (Several people I know who do this are fairly active in the bi, poly, and/or BSDM communities and are justifiably worried that HR would take a dim view of it being possibly associated with their company.) I can understand wishing to be anonymous in these kinds of situations, but in terms of submitting open source software? Unless their employer is worried about them releasing proprietary software on Hackage, I don't see the potential for embarrasment there. -- Ivan Lazar Miljenovic ivan.miljeno...@gmail.com IvanMiljenovic.wordpress.com ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Hackage accounts and real names
On Apr 4, 2010, at 22:57 , Ivan Lazar Miljenovic wrote: Brandon S. Allbery KF8NH allb...@ece.cmu.edu writes: (Several people I know who do this are fairly active in the bi, poly, and/or BSDM communities and are justifiably worried that HR would take a dim view of it being possibly associated with their company.) I can understand wishing to be anonymous in these kinds of situations, but in terms of submitting open source software? Unless their employer is worried about them releasing proprietary software on Hackage, I don't see the potential for embarrasment there. It's more about wanting to keep their non-work-related stuff under a *common* ID, but not one that can be tied back to their work persona. A sort of rigorously-policed double life. There are people who do this, and if they ever are able to release something work-related they'll ask for a separate account for that. (Be it noted that I don't work that way; anyone who wants to search for me in Usenet archives can determine that pretty quickly. :/ But I can understand the impulse.) -- brandon s. allbery [solaris,freebsd,perl,pugs,haskell] allb...@kf8nh.com system administrator [openafs,heimdal,too many hats] allb...@ece.cmu.edu electrical and computer engineering, carnegie mellon universityKF8NH PGP.sig Description: This is a digitally signed message part ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Google Summer of Code - Distributed Haskell components with Apache Tuscany
Hi all, The Apache Tuscany project [1] (an implementation of OASIS SCA [2], a programming model for distributed composite applications) is participating in the Google Summer of Code program [3] and one of the GSoC student project ideas is to develop support for Haskell SCA components. The project will help assemble Haskell components with SCA components written in other programming languages, and is also a great opportunity for students to research programming models and experiment with mixing component assembly/composition and Haskell function composition. More details can be found there [4]. If you're interested in the project, please post any questions to the Tuscany dev list d...@tuscany.apache.org or just send me an email. [1] http://tuscany.apache.org/ [2] http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=sca-assembly [3] http://socghop.appspot.com/ [4] http://issues.apache.org/jira/browse/TUSCANY-3523 -- Jean-Sebastien ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Hackage accounts and real names
On 04/04/2010 06:35 PM, Ivan Miljenovic wrote: I would wonder _why_ anyone would refuse to do so. Are they that ashamed of their own software that they wouldn't want to be associated with it, or is there some legal reason that they don't want to be associated with it? This seems to be orthogonal to the discussion at hand. Why are people not *allowed* to use pseudonyms on Hackage, for whatever reason they wish to do so? - Jake ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe