Re: ANNOUNCE: GHC 7.10.1 Release Candidate 3

2015-03-17 Thread Neil Mitchell
All of the mingw links give me 403 forbidden errors. Do they have permission issues? Thanks, Neil On Mon, Mar 16, 2015 at 8:30 PM, Austin Seipp aus...@well-typed.com wrote: We are pleased to announce the third release candidate for GHC 7.10.1:

Re: ANNOUNCE: GHC 7.10.1 Release Candidate 3

2015-03-17 Thread Neil Mitchell
Confirmed, thanks a lot! On Tue, Mar 17, 2015 at 1:47 PM, Austin Seipp aus...@well-typed.com wrote: Neil, this has been fixed. On Tue, Mar 17, 2015 at 7:52 AM, Neil Mitchell ndmitch...@gmail.com wrote: All of the mingw links give me 403 forbidden errors. Do they have permission issues

Re: Error while installing new packages with GHC 7.4.1

2012-03-01 Thread Neil Mitchell
Hi Antoras, The darcs version of Hoogle has had a more permissive dependency for a few weeks. Had I realised the dependency caused problems I'd have released a new version immediately! As it stands, I'll release a new version in about 4 hours. If you can't wait that long, try darcs get

Re: Error while installing new packages with GHC 7.4.1

2012-03-01 Thread Neil Mitchell
Hi Antoras, I've just released Hoogle 4.2.9, which allows Cabal 1.15, so hopefully will install correctly for you. Thanks, Neil On Thu, Mar 1, 2012 at 5:02 PM, Neil Mitchell ndmitch...@gmail.com wrote: Hi Antoras, The darcs version of Hoogle has had a more permissive dependency for a few

Re: Error while installing new packages with GHC 7.4.1

2012-03-01 Thread Neil Mitchell
directory-1.1.0.2-07820857642f1427d8b3bb49f93f97b0 process-1.1.0.1-18dadd8ad5fc640f55a7afdc7aace500 (use -v for more information) [...] On Thu 01 Mar 2012 11:06:43 PM CET, Neil Mitchell wrote: Hi Antoras, I've just released Hoogle 4.2.9, which allows Cabal 1.15, so hopefully will install

Re: parallelizing ghc

2012-01-29 Thread Neil Mitchell
Hi Simon, I have found that a factor of 2 parallelism is required on Linux to draw with ghc --make. In particular: GHC --make = 7.688 Shake -j1 = 11.828 (of which 11.702 is spent running system commands) Shake full -j4 = 7.414 (of which 12.906 is spent running system commands) This is for a

Re: hoogling GHC

2011-03-14 Thread Neil Mitchell
cause all the URL's in the GHC package that aren't explicit to have the above URL prepended to them. If there's demand, I can add a flag. Thanks, Neil On Mar 9, 2011, at 1:59 PM, Neil Mitchell wrote: Hi Ranjit, It sounds like you've got quite far. Sadly the manual is a bit out of date

Re: hoogling GHC

2011-03-09 Thread Neil Mitchell
Hi Ranjit, It sounds like you've got quite far. Sadly the manual is a bit out of date with respect to generating databases, but generally you need to produce ghc.txt on your own (using tools such as GHC's make system), then you can do: hoogle convert ghc.txt default.hoo Then you can run the

Re: Release/git plans

2011-01-22 Thread Neil Mitchell
Hi Austin, The compiler plugins work is a great, and I'd be a likely user. The original version wasn't supported on Windows, because GHC on Windows lacked various forms of dynamic linking. Does the current patch you've prepared work on Windows? Thanks, Neil On Sat, Jan 22, 2011 at 10:29 AM, Max

Re: RFC: migrating to git

2011-01-10 Thread Neil Mitchell
As another non-GHC contributor, my opinion should probably also count for little, but my experience with git has been poor. I have used git daily in my job for the last year.  Like Simon PJ, I struggle to understand the underlying model of git, despite reading quite a few tutorials.  I have

Re: MonoLocalBinds and darcs

2010-11-02 Thread Neil Mitchell
Hi Ganesh, Make sure you are using RC2 of the compiler, from what I remember RC1 required signatures it shouldn't have, or enabled MonoLocalBinds more than it should - RC2 required less signatures. However, your code could well just be heavily using the relevant features. Thanks, Neil On Tue,

Re: un-used record wildcards

2010-10-16 Thread Neil Mitchell
Hi Simon, I've seen this issue with GHC 6.12.3 (and assumed it was by design). It occurs with a slight modification of your example: {-# LANGUAGE RecordWildCards #-} module Test where data T = MkT { f,g :: Int } p x = let MkT{..} = x in f This example warns about Defined but not used: `g' on

Re: BlockedIndefinitelyOnMVar exception

2010-07-05 Thread Neil Mitchell
I wrote my Chan around the abstraction: data Chan a = Chan (MVar (Either [a] [MVar a])) The Chan either has elements in it (Left), or has readers waiting for elements (Right). To get the fairness properties on Chan you might want to make these two lists Queue's, but I think the basic

Re: BlockedIndefinitelyOnMVar exception

2010-07-04 Thread Neil Mitchell
Hi Simon, My suspicion for the root cause of the problem is that Concurrent.Chan is incorrect. In the course of debugging this problem we found 2 bugs in Chan, and while I never tracked down any other bugs in Chan, I no longer trust it. By rewriting parts of the program, including avoiding

Re: BlockedIndefinitelyOnMVar exception

2010-07-04 Thread Neil Mitchell
http://hackage.haskell.org/trac/ghc/ticket/4154 Yup, that's a bug.  Not clear if it's fixable. http://hackage.haskell.org/trac/ghc/ticket/3527 That too.  A very similar bug in fact, if there is a fix it will probably fix both of them.  The problem is that readChan holds a lock on the read

Re: BlockedIndefinitelyOnMVar exception

2010-07-01 Thread Neil Mitchell
Hi Simon, Thanks for the excellent information. I've now debugged my problem, and think I've got the last of the MVar blocking problems out. * How confident are people that this exception does really mean that it is in a blocked state? Is there any chance the error could be raised

Re: BlockedIndefinitelyOnMVar exception

2010-06-26 Thread Neil Mitchell
My understanding was that this error occurred when one thread was blocked, waiting on an MVar, and no other thread in the program has a reference to that MVar (this can be detected during GC).  Ergo, the blocked thread will end up waiting forever because no-one can ever wake it up again. That

Re: Plans for GHC 6.12.2

2010-03-25 Thread Neil Mitchell
Hi, Could this bug please be added: http://hackage.haskell.org/trac/ghc/ticket/3893 It's a regression against GHC 6.10.4, entirely a packaging issue, and most likely an oversight to remove the file. Thanks, Neil On Tue, Mar 23, 2010 at 6:38 PM, Ian Lynagh ig...@earth.li wrote: Hi all, This

Re: Easily generating efficient instances for classes

2010-03-02 Thread Neil Mitchell
Hi Derive generates declarations - they can be instances, classes, data types, functions, type synonyms etc. Thanks, Neil On Mon, Mar 1, 2010 at 10:32 AM, John Lato jwl...@gmail.com wrote: From: Christian H?ner zu Siederdissen Hi, I am thinking about how to easily generate instances for a

Re: Easily generating efficient instances for classes

2010-02-28 Thread Neil Mitchell
As Bulat says, the Derive package might be a good way to go. I am happy to accept any new derivations, and you get lots of things for free - including writing your code using the nice haskell-src-exts library, preprocessor support, TH support etc. Thanks, Neil On Thu, Feb 25, 2010 at 8:57 AM,

Re: Where did the GHC API go?

2010-01-04 Thread Neil Mitchell
Hi, As a suggestion to stop this issue repeating, why not have the latest URL be an automatic and visible forward to the stable and guaranteed URL? (I can't remember the HTTP code, but I think it's permanent redirect) That way people are less likely to see these unstable URL's in their web

Re: Where did the GHC API go?

2009-12-28 Thread Neil Mitchell
I've now updated Hoogle to point at the new links. I still think the old link's should be restored (perhaps as a permanent redirect code?), but at least it doesn't break Hoogle now. Thanks, Neil On Mon, Dec 28, 2009 at 11:06 AM, Malcolm Wallace malcolm.wall...@cs.york.ac.uk wrote: Too late. We

Re: Where did the GHC API go?

2009-12-27 Thread Neil Mitchell
Hi Ian, Yes, this is now http://haskell.org/ghc/docs/latest/html/libraries/base-4.2.0.0/Prelude.html#v:filter                                                   I'd suggest that Hoogle shold probably use its own copy of the docs, so that it stays in sync with them. Also, you

Re: Where did the GHC API go?

2009-12-23 Thread Neil Mitchell
Note that other links have gone broken recently: http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:filter These links are relied upon by Hoogle and Google. I suspect they have the same cause. Thanks, Neil On Mon, Dec 21, 2009 at 12:38 PM, Simon Marlow marlo...@gmail.com

Re: group keyword with TransformListComp

2009-06-29 Thread Neil Mitchell
on this instead. As Simon says, suggestions are welcome! Note that group *should* be parsed as a special id, so you can still import D.L qualified and then use dot notation to access the function. Cheers, Max 2009/6/21 Neil Mitchell ndmitch...@gmail.com: Hi, The TransformListComp

group keyword with TransformListComp

2009-06-21 Thread Neil Mitchell
Hi, The TransformListComp extension makes group a keyword. Unfortunately group is a useful function, and is even in Data.List. Thus, Data.List.group and TransformListComp are incompatible. This seems a very painful concession to give up a nice function name for a new extension. Is this

Re: --out-implib when linking shared libraries

2009-06-17 Thread Neil Mitchell
library then it might be good idea not to build the import libraries at all. Regards,  Krasimir On Sat, May 16, 2009 at 1:26 PM, Duncan Coutts duncan.cou...@worc.ox.ac.uk wrote: On Sat, 2009-05-16 at 11:07 +0100, Neil Mitchell wrote: I don't, although having that option wouldn't be a bad thing

Re: mtl and network packages in GHC 6.10.3.*

2009-05-27 Thread Neil Mitchell
release seems like it was a massive mistake, shouldn't these packages be reinstated at least until GHC 6.12? Thanks Neil On Wed, May 27, 2009 at 8:57 AM, Johan Tibell johan.tib...@gmail.com wrote: On May 27, 2009 3:33 AM, Neil Mitchell ndmitch...@gmail.com wrote: Hi, I just downloaded the Windows

mtl and network packages in GHC 6.10.3.*

2009-05-26 Thread Neil Mitchell
Hi, I just downloaded the Windows snapshot of 6.10.3.20090526, and found that mtl and network don't seem to be included. $ ghc-pkg list c:/ghc/ghc-6.10.3.20090526\package.conf: Cabal-1.6.0.1, Cabal-1.6.0.3, Win32-2.2.0.0, array-0.2.0.0, base-3.0.3.1, base-4.1.0.0, bytestring-0.9.1.4,

Re: Should exhaustiveness testing be on by default?

2009-05-21 Thread Neil Mitchell
  Do you really want exhaustiveness, or is what you actually want safety? I want both.  Exhaustiveness checking now and forever, because it's a modular property.  Safety when somebody gets around to implementing whole-program analysis in the compiler I use, when I feel like waiting around

Re: Should exhaustiveness testing be on by default?

2009-05-21 Thread Neil Mitchell
Catch already does assertion checking (1). Its runtime on moderate to small programs (HsColour in particular) is far less than the time GHC takes to compile them, and I still have no idea what its runtime is on enormous programs (2). An analysis can be whole program and can be slow, one does

Re: Should exhaustiveness testing be on by default?

2009-05-21 Thread Neil Mitchell
If Catch says your program will not crash, then it will not crash. I even gave an argument for correctness in the final appendix of my thesis http://community.haskell.org/~ndm/thesis/ (pages 175-207). Of course, there are engineering concerns (perhaps your Haskell compiler will mis-translate

Re: Should exhaustiveness testing be on by default?

2009-05-21 Thread Neil Mitchell
OK. i'm just trying to get an intuition for the analysis. Catch is defined by a small Haskell program. You can write a small Haskell evaluation for a Core language. The idea is to write the QuickCheck style property, then proceed using Haskell style proof steps. The checker is recursive - it

Re: Should exhaustiveness testing be on by default?

2009-05-19 Thread Neil Mitchell
  ... exhaustive pattern checking might well help out a lot of   people coming from untyped backgrounds... Or even people from typed backgrounds.  I worship at the altar of exhaustiveness checking. Do you really want exhaustiveness, or is what you actually want safety? With

Re: Should exhaustiveness testing be on by default?

2009-05-19 Thread Neil Mitchell
Core file representing a whole program, including all necessary libraries, then implementing Catch would be a weekends work. Thanks Neil On Tue, May 19, 2009 at 12:01 PM, Neil Mitchell ndmitch...@gmail.com wrote:   ... exhaustive pattern checking might well help out a lot of   people coming from

Re: Should exhaustiveness testing be on by default?

2009-05-18 Thread Neil Mitchell
I'm not a particular fan of exhaustiveness checking. It just encourages people to write: foo (Just 1) [x:xs] = important case foo _ _ = error doh! So now when the program crashes, instead of getting a precise and guaranteed correct error message, I get doh! - not particularly helpful for

Re: strictness of interpreted haskell implementations

2009-05-18 Thread Neil Mitchell
Hi       data S = S { a :: Int, b :: ! Int }       Main a (S { a = 0, b = 1 })       0       Main a (S { a = 0, b = undefined })       0 Ho hum.  Is this a known difference? I've submitted a bug: http://hackage.haskell.org/trac/hugs/ticket/92 As an ex teaching assistant my

Re: --out-implib when linking shared libraries

2009-05-16 Thread Neil Mitchell
I've just built a Haskell dll on Windows. As part of the process it generated an 14Mb foo.dll, and a 40Mb foo.dll.a. Looking at the flags passed to ld I see --out-implib=foo.dll.a. What is the purpose of the .a file? What might it be needed for? Is it possible to suppress it? It looks like

--out-implib when linking shared libraries

2009-05-15 Thread Neil Mitchell
Hi, I've just built a Haskell dll on Windows. As part of the process it generated an 14Mb foo.dll, and a 40Mb foo.dll.a. Looking at the flags passed to ld I see --out-implib=foo.dll.a. What is the purpose of the .a file? What might it be needed for? Is it possible to suppress it? I could easily

Re: runhaskell a parallel program

2009-05-07 Thread Neil Mitchell
Hi If however I run it with runhaskell Test.hs +RTS -N2 I get told the -N2 flag isn't supported. Is there a way to runhaskell a program on multiple cores? Is this a bug that it doesn't work, a feature request I'm making, or is there some trick to getting it working I haven't thought of? I'll

Re: Re[2]: runhaskell a parallel program

2009-05-07 Thread Neil Mitchell
Hi Bulat, Neil, you can implement it by yourself - convert -j3 in cmdline to +RTS -N3 -RTS and run program itself. alternatively, you can use defaultsHook() although i'm not sure that it can change number of Capabilities Can I run a program itself? getProgName doesn't give me enough to

Re: runhaskell a parallel program

2009-05-07 Thread Neil Mitchell
Hi Isn't ghc -e using the byte-code interpreter? Yes; apparently it works, though we still haven't stress-tested it running real parallel programs using GHCi with +RTS -N2. It seemed perfectly stable when I tried, on a few examples I had knocking around. Still, parallelism is about

runhaskell a parallel program

2009-05-06 Thread Neil Mitchell
Hi, I've got a program which I'd like to run on multiple threads. If I compile it with ghc --make -threaded, then run with +RTS -N2 it runs on 2 cores very nicely. If however I run it with runhaskell Test.hs +RTS -N2 I get told the -N2 flag isn't supported. Is there a way to runhaskell a program

Re: writeFile/readFile on multiple threads leads to error

2009-04-22 Thread Neil Mitchell
 Is it too difficult to try this on Linux or Mac, just to see  if it shows up there as well? Yes ;-) I might be able to try it on Linux next week, but that's as far as I'm likely to be able to go. If I get any results I'll email them in. Thanks Neil

Re: writeFile/readFile on multiple threads leads to error

2009-04-22 Thread Neil Mitchell
Hi Claus, do print (READ START,x) ; res - readFile x ; print (READ STOP,x) ; return res Unless you've defined your own version of 'readFile', to mean read entire file now, the first 'print' is optimistic and the second 'print' is a lie. readFile calls openFile = hGetContents. It's the

Re: writeFile/readFile on multiple threads leads to error

2009-04-22 Thread Neil Mitchell
Bulat: I haven't tried moving to Posix calls, I'll try that next - although I was hoping the application wouldn't be posix dependent. readFile calls openFile = hGetContents. It's the openFile that causes the problem, so READ START happens before openFile and READ STOP happens after openFile.

Re: Parallel performance drops off a cliff

2009-04-21 Thread Neil Mitchell
Yes, what's happening is this: GHC 6.10.2 contains some slightly bogus heuristics about when to turn on the parallel GC, and it just so happens that 8 processors tips it over the point where the parallel GC is enabled for young-generation collections.  In 6.10.2 the parallel GC really

Re: Parallel performance drops off a cliff

2009-04-21 Thread Neil Mitchell
Hi This is using GHC 6.10.2 on Windows XP, 2 processors. Is this a known bug, or should I try and replicate it? (benchmark is fairly big and very dependent on internal things, but I suspect the dramatic performance slowdown is unlikely to be related to these bits). Yes, what's happening is

Parallel performance drops off a cliff

2009-04-20 Thread Neil Mitchell
Hi, Using one benchmark I have, which doesn't create any threads, I have: $ benchmark +RTS -Nx x time (Seconds) 1 2 2 2 3 2 4 3 5 3 6 3 7 3 8 aborted after 2 minutes This is

GHC threading bug in QSem

2009-04-08 Thread Neil Mitchell
Hi I believe the following program should always print 100: import Data.IORef import Control.Concurrent main = do sem - newQSem (-99) r - newIORef 0 let incRef = atomicModifyIORef r (\a - (a+1,a)) sequence_ $ replicate 100 $ forkIO $ incRef signalQSem sem waitQSem sem v

Re: GHC threading bug in QSem

2009-04-08 Thread Neil Mitchell
I've now raised a ticket to track this issue: http://hackage.haskell.org/trac/ghc/ticket/3159 Thanks, Neil On Wed, Apr 8, 2009 at 11:26 AM, Neil Mitchell ndmitch...@gmail.com wrote: Hi I believe the following program should always print 100: import Data.IORef import Control.Concurrent

copyFile and thread safety

2009-03-30 Thread Neil Mitchell
Hi, Using GHC 6.8.3, the copyFile routine isn't thread safe - it crashes when two threads try and open the same file. I think that improvements were made to avoid security race conditions in GHC 6.10.1 (or the base library associated with it), and as a nice side effect they seem to have fixed the

Re: Really bad code for single method dictionaries?

2009-03-26 Thread Neil Mitchell
Hi Jason, While experimenting with Uniplate I found that 1-member dictionaries were faster than N element dictionaries - which seems to run against what you see in the comment. 1-member dictionaries being cheaper does make sense as then instead of passing a tuple containing functions, you can

Re: Windows building instructions

2009-03-10 Thread Neil Mitchell
Hi Simon, I got a brand new Vista machine yesterday (and a brand new monitor this morning), running Vista. I'll try out these instructions as soon as its all plugged together. When I had my last stab at compiling GHC I ended up creating a little script to automate some of the common bits and

Re: finally part run twice on Ctrl-C

2009-02-27 Thread Neil Mitchell
Hi Philip, Just to let you know; I tried it on the release version of 6.10.1 and it worked as expected (first run, I waited; second I pressed Ctrl-C): *Test main goodbye ExitSuccess *Test main goodbye ExitFailure 2 *Test It looks like you are running in GHCi, which I think works. It's

Re: [Haskell-cafe] createProcess shutting file handles

2009-02-16 Thread Neil Mitchell
However the createProcess command structure has the close_fds flag, which seems like it should override that behaviour, and therefore this seems like a bug in createProcess. close_fds :: Bool Close all file descriptors except stdin, stdout and stderr in the new process

Users guide missing

2009-02-16 Thread Neil Mitchell
Hi The web page: http://haskell.org/haskellwiki/GHC Links to the latest users guide as a PDF, unfortunately the file is missing: http://www.haskell.org/ghc/docs/latest/users_guide.pdf Thanks Neil ___ Glasgow-haskell-users mailing list

Re: [Haskell-cafe] createProcess shutting file handles

2009-02-15 Thread Neil Mitchell
Hi However the createProcess command structure has the close_fds flag, which seems like it should override that behaviour, and therefore this seems like a bug in createProcess. close_fds :: Bool Close all file descriptors except stdin, stdout and stderr in the

DLL support with GHC

2009-02-13 Thread Neil Mitchell
Hi, What is the current status of shared object support within GHC? Using GHC 6.10.2 (or the branch for it) I can create DLL's under Windows, following these instructions: http://www.haskell.org/ghc/docs/latest/html/users_guide/win32-dlls.html .Can a similar thing be done under Linux? If so,

DLL thread safety

2009-02-13 Thread Neil Mitchell
Hi, I'm building a DLL using the instructions here: http://www.haskell.org/ghc/docs/latest/html/users_guide/win32-dlls.html I must call startupHaskell before I make any calls to Haskell functions. However, that page doesn't detail any thread safety rules. In particular: * If I call

Re: Pragma not recognised when wrapped in #ifdef

2009-02-11 Thread Neil Mitchell
Hi Is there still a need for CPP now that Template Haskell exists? Yes. For a start you might need CPP to switch between Haskell compilers that do and don't support Template Haskell! Both technologies do different things, CPP is great for conditional compilation based on compiler

Re: Type signature inside an instance declaration

2008-12-16 Thread Neil Mitchell
Hi You want to use `asTypeOf`, with a lazy pattern to name a value of type 'a'. pr xs = [ ++ pr (undefined `asTypeOf` x) ++ ] where (x:_) = xs I prefer: pr xs = [ ++ pr (undefined `asTypeOf` head x) ++ ] Or even more simply: pr xs = [ ++ pr (head x) ++ ] I do believe there

Re: length of module name affecting performance??

2008-12-15 Thread Neil Mitchell
Hi I'm using GHC 6.10.1 on OS X. Any ideas on what may be going on? Wow. Awesome bug! Got lots of discussion at Galois :) I can confirm a difference in running time, we also tested with 6.8.x and 6.10, with similar results. Is -O2 implying -fvia-C? If so, could it be the evil mangler? Is

Re: cross module optimization issues

2008-11-28 Thread Neil Mitchell
Hi I've talked to John a bit, and discussed test cases etc. I've tracked this down a little way. Given the attached file, compiling witih SHORT_EXPORT_LIST makes the code go _slower_. By exporting the print_lines function the code doubles in speed. This runs against everything I was expecting,

Re: cross module optimization issues

2008-11-28 Thread Neil Mitchell
Hi instance Monad m = Monad (IterateeGM el m) where {-# SPECIALISE instance Monad (IterateeGM el IO) #-} does that help? Yes. With that specialise line in, we get identical performance between the two results. So, in summary: The print_lines function uses the IterateeGM with IO as the

Re: #ghc connection issue

2008-08-20 Thread Neil Mitchell
Hi Claus, I seem to be unable to join the ghc chatroom at irc.freenode.net at the moment (using Opera). Is that an issue with my irc client or a general problem? I have joined just fine, using mibbit.com (from in Opera) Thanks Neil ___

Re: Version control systems

2008-08-14 Thread Neil Mitchell
Hi So I suggest we propose moving all the core packages to git, and we translate all those for which nobody objects to the change. For the others, we'll keep them in darcs and live with the pain. Does this mean my (now the communities) FilePath library is going to get moved over to git? I

Re: ANN: prof2dot, version 0.4.1

2008-08-05 Thread Neil Mitchell
Hi Gregory, Sounds fantastic. I'd love to see a single example of the resultant .dot file, so I can figure out just how useful this might be to me. Thanks Neil On Tue, Aug 5, 2008 at 8:50 PM, Gregory Wright [EMAIL PROTECTED] wrote: I am pleased to announce the release of prof2dot version

Re: Weekly IRC meeting?

2008-07-16 Thread Neil Mitchell
Hi Another option is a conference call, but personally I prefer the IRC medium for this kind of meeting. A conference call could work too, though. i propose to sent every meeting log into cvs-ghc I second this. The mibbit.com IRC client is currently blocked by freenode.net, so I am

Re: -optc-O2 considered useful

2008-05-16 Thread Neil Mitchell
Hi As for the specific issue of whether we should turn on -fstrictness with -O0, I suspect the answer is that the compile-time cost would be too high. There would also be the issue that it would increase the amount of Haskell code which works only in GHC, which is probably a bad thing. Would

Re: Performance: Faster to define a function writing out all arguments?

2008-05-08 Thread Neil Mitchell
Hi And strangely enough on my machine 1) is faster by a few percent than Consider a few percent to be noise. It may not really be a faster result, and it may not have anything to do with what you wrote. A few percent might seem unimportant, but I am currently developing my Haskell style.

Re: Unexpected lack of optimisation

2008-04-30 Thread Neil Mitchell
Hi Yes, something like that is exactly what I'd like to do. I'm somewhat hopeful that we might manage this as part of Max Bolingbroke's SoC project, if it's approved. Hmmm, I thought it had been approved. Was I mistaken? Yes, it has been approved.

Re: Unexpected lack of optimisation

2008-04-29 Thread Neil Mitchell
Hi * As you say, if 'retry' was inlined, all would be fine. But what if 'retry' was big? Then we'd get lots of code duplication, in exchange for fewer tests. * Presumably it's not inlined because it's over the inline size threshold. (You did use -O?) I used -O2. I also added {-#

Re: Unexpected lack of optimisation

2008-04-29 Thread Neil Mitchell
Hi Tim, Did you try comparing the results if you pass the -fno-state-hack flag? No effect at all. Thanks Neil ___ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Re: Optimisation of unpackCString#

2008-04-29 Thread Neil Mitchell
Hi what is general purpose stuff. I don't think there is anything wrong with magic for primitive types, but if there is a useful general-purpose mechanism trying to get out, let's liberate it. I think the tension comes from representing String's as CString's, not actual lists of Char and

Re: Optimisation of unpackCString#

2008-04-29 Thread Neil Mitchell
Hi PROPOSAL 1: Add the following rules to the simplifier: case unpackCString# of == case [] of case unpackCString# xyz of == case (C# 'x': unpackCString# yz) of I've been wanting to have a go at hacking GHC for a while, and this seems like a good candidate to start with. If there is no

Re: Optimisation of unpackCString#

2008-04-29 Thread Neil Mitchell
Hi Cons: Makes the simplifier slightly more complex - but I hope not by much! And it doesn't work for my case -- I'd really want length as a compile time constant. Could you elaborate on what kind of rules you think we could write with the ability to get the head? One of my ideas was

Re: Unexpected lack of optimisation

2008-04-29 Thread Neil Mitchell
Hi | {-# INLINE foo #-} | foo = large | | bar x = if x then res else res | where res = foo | | By putting an INLINE on foo I am able to persuade it to be inlined | into the binding of bar, but I can't then persuade it to be inlined at | the let expression. I'm not certain

Optimisation of unpackCString#

2008-04-28 Thread Neil Mitchell
Hi (All these results are from GHC 6.9.20071226, but suspect they hold for 6.9.* and 6.8) The following code: test = head neil Produces (with -O2): Text.HTML.TagSoup.Development.Sample.test = case GHC.Base.unpackCString# neil of wild_aaU { [] - GHC.List.badHead @ GHC.Base.Char; : x_aaY

Re: Optimisation of unpackCString#

2008-04-28 Thread Neil Mitchell
Hi The first case makes sense, and is just a RULE. Though it seems GHC already does this? g = head goes to: M.g = badHead @ Char without prompting. Nope, as far as I can tell gets translated to [], not unpackCString# - hence the unpack never gets in the way. If you had

Re: Optimisation of unpackCString#

2008-04-28 Thread Neil Mitchell
Hi This goes back to an old gripe of mine actually -- we can't get at the length of a C string literal at compile time either, which would be super useful in rules. I was about to complain about this next, as soon as I got the previous part working :-) If we had some light primitives for

Re: Optimisation of unpackCString#

2008-04-28 Thread Neil Mitchell
Hi That would work on GHC, but not on Hugs. Optimisation and Hugs don't go together anyway. I want the code to work on Hugs, and perform fast on GHC. As it turns out, for this particular application, Hugs is faster than GHCi by about 25%. Thanks Neil

Unexpected lack of optimisation

2008-04-28 Thread Neil Mitchell
Hi Using GHC 6.9.20071226: The following code: --- test s | begin2 'n' 'a' s = test | begin2 'n' 'b' s = test2 begin2 :: Char - Char - String - Bool begin2 x1 x2 (y:ys) | x1 == y = begin1 x2 ys begin2 _ _ _ = False begin1 :: Char -

Re: Optimisation of unpackCString#

2008-04-28 Thread Neil Mitchell
Hi Optimisation and ghci don't go together, so I don't know what your point is there. It's very worth having the application work in both Hugs and GHCi, and its not always GHC=faster, only if you compile it - so you trade your compile time for your run time. A delicate balance, with more than

Re: Optimisation of unpackCString#

2008-04-28 Thread Neil Mitchell
Hi You'd have to conditionally use overloaded strings in GHC only. I'm not sure it would work ( can you quantify the cost of not being able to take head at compile time? ) The cost of not having this is probably ~10x slower for the tagsoup library :-( - i.e. pretty huge. I'm looking at

Unexpected lack of optimisation in -O0

2008-04-10 Thread Neil Mitchell
Hi, I just tried compiling the following program: foo = (1 :: Int) == (2 :: Int) with ghc --ddump-simpl, and no optimisation flags, in GHC 6.6.1 The resultant code is: Test.foo = case GHC.Base.$f2 of tpl_X8 { GHC.Base.:DEq tpl1_B2 tpl2_B3 - tpl1_B2 (GHC.Base.I# 1) (GHC.Base.I# 2) } GHC

Re: ghc-6.8.1 on WinXP: windres: can't open font file `for'

2008-02-15 Thread Neil Mitchell
Alistair, Bummer. I was hoping to be able to use 6.8.1 with gtk2hs (AFAIUI, gtk2hs doesn't work with/hasn't been compiled against 6.8.2 yet). Is there a workaround or something I can tweak in my 6.8.1 installation? It's much easier to gently prod Duncan until he gives in and releases a new

Re: gmp

2008-01-17 Thread Neil Mitchell
Hi What is the situation on Windows? Does the standard GHC binary on Windows have dynamically linked gmp for binaries produced by ghc? No, they are statically linked. (Please, can no one start discussing licensing, people already know there are issues with it, and I get plenty of traffic

Re: FilePath causes problems (was: 'backslash' build problems on windows)

2008-01-15 Thread Neil Mitchell
Hi this (among other things) changes compiler messages: -[1 of 4] Compiling OverA( OverA.hs, OverA.o ) -[2 of 4] Compiling OverB( OverB.hs, OverB.o ) -[3 of 4] Compiling OverC( OverC.hs, OverC.o ) +[1 of 4] Compiling OverA

Re: `show' in ghci dialogue

2008-01-12 Thread Neil Mitchell
Hi Serge, I think what you are looking for is putStr: ghci putStr Test\nhere Test here Thanks Neil On 1/12/08, Serge D. Mechveliani [EMAIL PROTECTED] wrote: People, I have a question about usage of `show' in the GHCi dialogue system. I introduce my user class DShow, trying to improve

Re: GHC Core question

2008-01-07 Thread Neil Mitchell
Hi How are you printing out the Core? showSDoc $ ppr c where c :: [CoreBind] It looks like the unique ids are missing (you can see them if you pass the -ppr-debug flag, which can be set using the API) I have now set the -ppr-debug flag, but that has no effect. It's not entirely

Re: GHC Core question

2008-01-07 Thread Neil Mitchell
Hi I have now set the -ppr-debug flag, but that has no effect. It's not entirely surprising, as I guess setting the flag only applies through the GHC session, and this code is being run outside that. How can I print the output (to a file) using the unique id's? Good point about the

GHC Core question

2008-01-05 Thread Neil Mitchell
Hi I've compiled the Debug.Trace module to Core, but can't understand the resulting output. The original code is: trace string expr = unsafePerformIO $ do putTraceMsg string return expr The core is: Debug.Trace.trace = \ (@ a) - __letrec { trace :: GHC.Base.String - a -

Re: GHC source code improvement ideas

2008-01-04 Thread Neil Mitchell
Hi Yhc did a few of these things, and our experiences were: 1a. Use do notation where possible instead of `thenXX`. If it is that simple, yes. Certainly Yhc uses super-monads which made this a bit painful. You should probably step this by getting it to the stage where thenXX = =, then only

Re: . defined in GHC and System.FilePath

2008-01-03 Thread Neil Mitchell
Hi Simon Marlow wrote: i.e. qualify most things, but selectively import a few things unqualified. The GHC API is quite huge, I expect clashes to be fairly common if you import it unqualified. On 1/3/08, Simon Peyton-Jones [EMAIL PROTECTED] wrote: I've no objection to renaming it, if that's

Re: Redefining built in syntax

2008-01-03 Thread Neil Mitchell
Hi Victor, -package-name base should do the thing Thanks very much, that is the correct flag to allow built in syntax. However, turning that flag on also does other stuff, which breaks new things. Taking the module Prelude.hs, from a darcs checkout of the libraries:

. defined in GHC and System.FilePath

2007-12-31 Thread Neil Mitchell
Hi The GHC API uses the . operator, which clashes with System.FilePath. Possibly this might want renaming to something else - I have absolutely no idea what it does! Prelude :m GHC Prelude GHC :i . (.) :: HsWrapper - HsWrapper - HsWrapper-- Defined in HsBinds Thanks Neil

Redefining built in syntax

2007-12-31 Thread Neil Mitchell
Hi, I'm getting errors such as: C:/Documents/Uni/packages/base/GHC/Base.lhs:270:12: Illegal binding of built-in syntax: [] When I try and compile GHC/Base.lhs using the GHC API. Is there some flag I can pass to allow the rebinding of built in syntax? Thanks Neil

Re: External Core - my goal

2007-12-28 Thread Neil Mitchell
Hi 2) Compile all the associate libraries and modules to generate separate GHC Core files for each. Convert each Core file to Yhc Core. Link the Yhc Core files together. Now that I've read this more carefully -- I think plan (2) is your best bet. In theory, you should be able to do (2)

External Core - my goal

2007-12-26 Thread Neil Mitchell
Hi Tim, Since you've now checked in External Core, I thought I'd ask how close we are to my ideal use case of External Core. My goal is to use External Core with Catch (http://www-users.cs.york.ac.uk/~ndm/catch/). To be able to use GHC Core with Catch, it is necessary to be able to do one of two

  1   2   3   >