Re: [Haskell-cafe] ANN: set-cover solves Sudoku, Soma cube, 8 Queens etc.
Henning Thielemann lemming at henning-thielemann.de writes: .. package set-cover for solving exact set cover problems. http://hackage.haskell.org/package/set-cover It's hard to evaluate whether one could use the library because there's essentially no visible documentation. E.g., what does Math.SetCover.Exact.search do? Its type refers to State which seems implementation-dependent, and hides the connection to the specification of the set cover problem. Putting some text and examples into the haddocks might help. But of course putting the specification there would be even better. Also, care to explain what algorithm your solver uses, and give some performance data (e.g., N-queens for N=10,20,40,..)? - J.W. signature.asc Description: OpenPGP digital signature ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] xmonad (+ mate) evince problem?
Problem solved: with mate, use atril instead of evince. (I think it is a gtk2/tgk3 issue and it's got nothing to do with xmonad.) ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Hoogle vs Hayoo
Mateusz Kowalczyk fuuzetsu at fuuzetsu.co.uk writes: I always thought [hayoo] was just Hoogle with more indexed docs. Wait - there's a semantic difference: hoogle does understand type signatures (e.g., it can specialize them, or flip arguments of functions) while hayoo just treats signatures as strings (it seems). Example: search for [a] - [a] hoogle: will also return Data.Text.transpose :: [Text] - [Text] (note: instantiated a to Text) hayoo: will also return Data.List.isInfixOf :: [a] - [a] - Bool (note: the type is [a] - ([a] - Bool), so it does actually not contain the type from the query) I much prefer hoogle's query semantics. - J.W. PS: but hoogle also returns inits :: [a] - [[a]] which is not an instance of the query. Why is this? ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] haskore - lilypond - typesetting?
I tried using lilypond ( http://www.lilypond.org/ ) for typesetting of sheet music. While the output looks nice, the input language IMHO is quite horrible, because the underlying data/execution model is underspecified. For some parts, it tries to describe the logical structure of the score; but for others, the layout; and in addition it has several non-obvious context-dependencies (but see below), preventing modularity. Is there a better option? E.g., starting from a clear mathematical model, as in Haskore, and use lilypond only as a PDF rendering engine? Do I want hly / hts perhaps? http://rd.slavepianos.org/?t=hly As I see it, the main high-level design problem is that the source language needs partial evaluation annotations for abstractions applications: sometimes they should be expanded (for MIDI rendering, always) and sometimes not (in typesetting, to create repetition marks instead of actually repeating notes). PS: I agree that some of lilypond's context dependencies (relative pitch, implicit note length) do really save large amounts of tedious typing: c4 e g a c1 is much more economical than [c 1 qn, e 1 qn, g 1 qn , a 1 qn, c 2 fn] which I guess is the Haskore equivalent. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] xmonad (+ mate) evince problem?
Hi. I am using xmonad + mate (on fedora 19) and evince (PDF viewer) seems unresponsive: it reacts to my (mouse) input only after switching to another screen and back. Any hints? - Thanks, J. W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] What does it mean to derive equations of restricted from in Haskell?
Daryoush Mehrtash dmehrtash at gmail.com writes: What does restricted form mean? non-restricted: e.g., f (f x y) z = f x (f y z)) restricted: the shape of function declarations in Haskell (where lhs is a pattern) definitions are terminating ... non-termination: an equation like f x y = f y x when you orient it as a rule f x y - f y x, there are infinite derivations and exhaustive non-exhaustive: you have an equation f (x : ys) = ... but you don't have an equation for f [] = ... (all the above is is standard stuff in algebraic specification, equational reasoning, etc.) - J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] TH splicing and recompilation checking
Hi. we are using template Haskell to splice in some code that is produced by reading and transforming the contents of another file. now, if this other file is touched (by editing), but not the main file, then ghc (and cabal) do not realize that the main file does need to be recompiled. is there a way to tell them about the dependency? (example main file: https://github.com/apunktbau/co4/blob/master/CO4/Test/Queens.hs) - J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Workshop on Termination (deadline: July 22)
Dear all. Still one week to go: submit your results and questions on all things related to termination and bounded resource consumption (of user programs, of type checkers, etc.) to the Workshop on Termination. We are specifically encouraging contributions from the Haskell (and Agda, and Idris) community. - Johannes. # 13th International Workshop on Termination (WST) ( full CfP see http://www.imn.htwk-leipzig.de/WST2013/ ) Centro Residenziale Universitario di Bertinoro (near Bologna, Italy). submission: July 22, 2013 notification: July 25, 2013 final version: August 10, 2013 workshop: August 29 - 31, 2013 The Workshop on Termination traditionally brings together, in an informal setting, researchers interested in all aspects of termination, whether this interest be practical or theoretical, primary or derived. The workshop also provides a ground for cross-fertilisation of ideas from term rewriting and from the different programming language communities. The friendly atmosphere enables fruitful exchanges leading to joint research and subsequent publications. signature.asc Description: OpenPGP digital signature ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] question about indentation conventions
Code which is part of some expression should be indented further in than the beginning of that expression [...] Yes. Then the next question is how much further in. My answer is: it does not matter, but make it consistent (like 4 spaces), with the implication that indentation should *not* depend on length of identifiers in the previous line(s) Example (bad): foo x = do bar baz Example (good): foo x = do bar baz Reason: when refactoring later changes the name foo, or the number or names of its arguments, you'll have to re-indent code (in the bad version): (a) this needs tool support and (b) it creates noise in the diffs. - J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Installing Z3 on OS X 10.8.4 ( Off topic )
Unable to locate executable for z3 well, do you really have z3 in the $PATH? what does 'which z3' answer? I used this for installation of z3: python scripts/mk_make.py --prefix=/usr/local and note that the install script says: Z3 shared libraries were installed at /usr/local/lib, make sure this directory is in your LD_LIBRARY_PATH environment variable. - J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] how to debug stack overflow?
What is the recommended method to find the exact reason for a stack overflow (when running a Haskell program compiled with ghc)? When I compile with -prof -auto-all, and run with +RTS -xc, I see a very short call stack, which can't be right. But that's probably because I am calling some library method that was compiled without -auto-all so it's invisible in the trace? I can avoid the overflow by +RTS -K1G or something but I want to investigate because it might indicate some inefficiency in the code (evaluations happening at the wrong time). - J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] how to debug stack overflow?
Aleksey Uymanov s9gf4ult at gmail.com writes: Try to use heap profiling. There is very high probability that the problem is because of space leak. Really? Would it help in the standard example: main = print $ foldr (+) 0 [1 .. 1::Int] this leaks space (that is, cannot run in small space) only because it leaks closures, right? but how I'm going to recognize them in the heap profile? When I run the above with +RTS -K1G -M1G -h -p I do indeed get heap overflow (instead of stack overflow) but the heap profile shows an allocation of 30k bytes only. - J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] ANNOUNCE: standalone-haddock-1.0
Roman Cheplyaka roma at ro-che.info writes: http://feuerbach.github.io/standalone-haddock/ yes, awesome! I took me a while to figure out I need to add --package-db $HOME/.ghc/x86_64-linux-7.6.3/package.conf.d um, where's --hyperlink-source ? - J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Generalizing unionWithKey, unionWith, ...
Jose A. Lopes jose.lopes at ist.utl.pt writes: unionWith :: Ord k = (a - b - c) - Map k a - Map k b - Map k c what should be the result of unionWith undefined (M.singleton False 42) (M.singleton True bar) ? perhaps you mean intersectionWith, which already has the type you want. - J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Generalizing unionWithKey, unionWith, ...
Jose A. Lopes jose.lopes at ist.utl.pt writes: What makes it an interesting example ? it shows that your proposed type for unionWith is not reasonable. why would you want to use undefined in that particular case? the two argument maps have disjoint key sets, so the combining function will never be called, and writing undefined just states this. of course, all of this refers to the implicit specification for unionWith, which should contain something like M.keysSet (M.unionWith f m1 m2) = S.union (M.keysSet m1) (M.keysSet m2) (hence the name, union) and this is an implication of M.lookup k (M.unionWith f m1 m1) = case (M.lookup k m1, M.lookup k m2) of (Nothing,Nothing) - Nothing (Just v1, Nothing) - Just v1 (Nothing,Just v2) - Just v2 (Just v1, Just v2) - Just (f v1 v2) I would very much welcome that such specs be added to the library documentation - in some suitable way, e.g., haddock can generate source links already, and it would be nice if it also could show spec links, pointing to small/quick-check properties, which I guess are in the source code somewhere already, cf. https://github.com/haskell/containers/blob/master/tests/map-properties.hs#L408 - J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] What symbol / atom/ interned-string package is currently preferred?
http://hackage.haskell.org/package/intern what does this package do? OK, I can read efficient hash consing but what does it mean exactly? and how would I actually use it? - J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] What symbol / atom/ interned-string package is currently preferred?
https://github.com/ekmett/intern/blob/master/examples/Term.hs sure I found this but that still does not say much. I known generally what hash consing is (and that's why I think I might want to use this package) but I don't see what is the (implied) contract for this implementation: It looks like I need to write some instances (to make my typ internable) but what properties should they have, and what properties of the functions defined in the package do I get in return? - J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Backward compatibility
Adrian May adrian.alexander.may at gmail.com writes: this decision to change the default syntax in GHC7 what decision? what syntax? here's the release notes (7 vs. 6) http://www.haskell.org/ghc/docs/7.0.1/html/users_guide/release-7-0-1.html I guess you are referring to hierarchical module names? (import List = import Data.List) Indeed, I cannot build WASH http://hackage.haskell.org/package/WashNGo-2.12.0.1 on ghc-7.6.3, and I don't see how it could have worked on 7.0, as hackage claims it did. (building the executables: when using base and haskell89, import Prelude is ambiguous; when using haskell98 only, modules like System.Exit are not available.) I think this could be fixed in a straightforward way, but that fixing it is necessary at all, just proves your point. - J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Backward compatibility
Byron Hale byron.hale at einfo.com writes: I was just in the process of trying to get Haskell 7.6 installed. You cannot install Haskell 7.6. Haskell is a language. You can install a language implementation (compiler/interpreter). There may be several. You can also install a set of libraries. These may be bundled (one compiler with one set of libraries). One such bundle is called the Haskell platform. Is this what you are trying to install? (But then the version is nothing like 7.6, this looks more like a compiler version.) Of course this naming error is directly suggested by haskell.org, where we have the equally meaningless Download Haskell right on the front page. - J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Fwd: How to do automatic reinstall of all dependencies?
Alexander Kjeldaas alexander.kjeldaas at gmail.com writes: cabal install --upgrade-dependencies `eval echo $(ghc-global-constraints )` package-name for a moment I was reading ghc --global-constraints there ... - J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] what happened to alexAndPred?
Hi. I have ghc-7.6.3 and alex-3.0.5. When I build https://github.com/jwaldmann/smt-lib it breaks with Language/SMTLIB/Lexer.x:6:5: Not in scope: `alexAndPred'. It was working with alex-2.3.5. I was going t add Can I constrain the alex version in the cabal file (I recall this is difficult for executables since they're not registered with ghc) but it wouldn't help since alex-2.3.5 cannot be built with a recent ghc-7.6 because Module `System.IO.Error' does not export `try'. Also, not with ghc-7.4.2 because of dist/build/alex/alex-tmp/Scan.hs:344:17: Illegal bang-pattern (use -XBangPatterns): And not with = ghc-7.2 because of Linking /tmp/alex-2.3.5-20331/alex-2.3.5/dist/setup/setup ... unrecognized option `--disable-benchmarks' ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] version of containers fixed by template-haskell?
Is it still the case that It just doesn't work to have multiple versions of a wired-in package (cf. http://hackage.haskell.org/trac/ghc/ticket/5704 )? ghc-7.6.2 comes with containers-0.5.0.0 and template-haskell-2.8.0.0 . It seems I can upgrade to containers-0.5.2.1 and use it with no problems but not alongside template-haskell: ... changes: containers-0.5.0.0 - 0.5.2.1, Warning: The following packages are likely to be broken by the reinstalls: ... ghc-7.6.2 (Isn't it somewhat bold of cabal-install to offer to break ghc-7.6.2? like, this will completely hose the compiler?) That's bad, because I use containers everywhere, and I assume that 0.5.2.1 has some advantages (like, speed) over 0.5.0.0. - J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] version of containers fixed by template-haskell?
Roman Cheplyaka roma at ro-che.info writes: ghc is the package that provides the GHC API. Breaking it should not affect the compiler itself, since it is statically linked. Yes. But once ghc (the package) is broken, it cannot be fixed (except by re-installing ghc (the compiler))? ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] version of containers fixed by template-haskell?
Roman Cheplyaka roma at ro-che.info writes: On second thought, are you trying to install it globally? locally ghc is installed globally, and local packages should not break it. still cabal-install says so (and I don't dare to test ...) ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] data types with overlapping component names (in one module)?
What is the current situation: can we have two types with overlapping component names in one module? module M where data T1 = C1 { foo :: Int } data T2 = C2 { foo :: String } It seems not (ghc says: Multiple declarations of 'foo'). This comes close: http://www.haskell.org/ghc/docs/7.6.2/html/users_guide/syntax-extns.html#disambiguate-fields but still requires the definitions to reside in different modules? This is a major pain (it forces me to spread the source over several files), and also a show-stopper when selling Haskell to OO folks, who naturally assume that a class also denotes a scope. (And that you could nest them.) Are/were there plans/proposals to address this? - J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Prolog-style patterns
Yuras Shumovich shumovichy at gmail.com writes: Will not it be a nightmare to implement and maintain checker for overlapping/unused clauses for non-linear patterns? For sure it does not look straightforward. Note that there are some results and algorithms for non-linear patterns, cf. this short survey by S. Tison: Tree Automata, (Dis-)Equality Constraints and Term Rewriting: What's New? http://drops.dagstuhl.de/opus/frontdoor.php?source_opus=3140 and some background in Tree automata with constraints (esp. Sec. 4.4.5) http://tata.gforge.inria.fr/chap4.php (advertisement starts here) (overlap checking for) non-linear patterns in Haskell looks like an ideal topic for a submission to the Haskell and Rewriting workshop http://www.imn.htwk-leipzig.de/HART2013/ ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Error when building executable with profiling enabled
Krzysztof Skrzętnicki gtener at gmail.com writes: see this documentation on profiling with TH: http://www.haskell.org/ghc/docs/7.6.1/html/users_guide/template-haskell.html#id624714 GHC cannot load the profiled object code and use it when executing the splices. That means I do not get profiling information for the code that gets spliced in? Or for the code that is producing the splice? What's the work-around for the first case? (short of -ddump-splices, which seems somewhat problematic, according to http://hackage.haskell.org/trac/ghc/ticket/5016 ) - J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Haskell is a declarative language? Let's see how easy it is to declare types of things.
Albert Y. C. Lai trebla at vex.net writes: Quantifiers are complicated, but I don't see how explicit is more so than implicit. [...] I have just seen recently [...] Great example. I completely agree. My feeling is that mathematicians use this principle of leaving out some of the quantifiers and putting some others in the wrong place as a cultural entry barrier to protect their field from newbies. Well, not use, but willingly tolerate, perhaps. (I do have a diploma in mathematics, from a German university.) ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Haskell is a declarative language? Let's see how easy it is to declare types of things.
Tom Ellis tom-lists-haskell-cafe-2013 at jaguarpaw.co.uk writes: I didn't see an example of quantifiers in the wrong place. The example was: every x satisfies P(x,y) for some y ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Haskell is a declarative language? Let's see how easy it is to declare types of things.
I absolutely love to use Haskell when teaching (and I have several years of experience doing it). And I absolutely dislike it when I have to jump through hoops to declare types in the most correct way, and in the most natural places. This is hard to sell to the students. - Examples: 1. for explicit declaration of type variables, as in reverse :: forall (a :: *) . [a] - [a] I have to switch on RankNTypes and/or KindSignatures (ghc suggests). C'mon, this has nothing to do with ranks per se. It's a type of a very simple function! IMHO even Java/C# do this better (with slightly strange syntax, but at least you get to declare the type variable). 2. for declaring types of local variables, as in \ (xs :: [Bool]) - ... I have to enable PatternSignatures (actually ghc suggests ScopedTypeVariables but again there is no type variable in sight) I need to do this often, to disambiguate properties for Smallcheck. All of this just because it seemed, at some time, a clever idea to allow the programmer to omit quantifiers? (I know, mathematicians do this all over the place, but it is never helpful, and especially not when teaching.) I think that (1) implies (2): there could be no ambiguity about scopes (of typevars in patterns) if each typevar had to be introduced by explicit quantification. Then (in a pattern signature) a use could be distinguished from a declaration. Yes, the above is a rant. I can achieve what I want with some ghc options, and perhaps my point is that these should be on by default - or have better names, because presently, they are unintelligible to the (beginner) student. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] mueval, interpreter options
What am I missing? I want to use mueval to read a file that contains instance Serial m a = Serial m (Tree a) (as in http://hackage.haskell.org/packages/archive/smallcheck/1.0.2/doc/html/Test-SmallCheck-Series.html) so I put in my call of mueval: let Right opts = M.interpreterOpts [] keepCurrentDir $ do System.Directory.setCurrentDirectory d I.runInterpreter $ Mueval.Interpreter.interpreter $ opts { M.timeLimit = 10 -- seconds? , M.modules = Just [ Prelude , Test.SmallCheck.Drivers, Test.SmallCheck.Series , GHC.Generics ] , M.namedExtensions = [ MultiParamTypeClasses , FlexibleInstances, DeriveGeneric ] but it gives me MultiParamTypeClasses is not enabled on inputs like {-# language MultiParamTypeClasses #-} import Test.SmallCheck.Series import GHC.Generics data Tree a = Null | Fork (Tree a) a (Tree a) deriving Generic instance Serial m a = Serial m (Tree a) where I don't understand mueval's design anyway here: do the interpreter options mean that these are automatically on, or just that the source text will be allowed to switch then on? (I'd prefer the latter.) Thanks - J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] package show needs QuickCheck2.6?
Hi, I noticed that compilation of mueval (recent: 0.8.2) breaks because show (0.5) cannot be built: it seems the type of Failure changed in QuickCheck (from 2.5 to 2.6). The build succeeds with --constraint 'QuickCheck2.6' . ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] package dependencies should distinguish between API and implementation?
Package dependencies are modelled by a relation A depends-on B. Shouldn't this in fact be two relations: API-depends-on and implementation-depends-on? (meaning that A API-depends-on B iff some type of B is visible to the user of A) So what we currently have is implementation-depends-on and API-depends-on is a sub-relation of that. The point being the following: assume * A implementation-depends-on B.1 * not (A API-depends-on B.1), * U implementation-depends-on A * U implementation-depends-on B = 2 Then U (indirectly) implementation-depends on two versions of B but it should still be safe? (e.g., I can install B.3, re-compile U, but keep A) Example: A = template-haskell, B = containers (at least I don't see any mention of Data.Map/Set in th's API, I think the only dependency is in the implementation of PprM http://hackage.haskell.org/packages/archive/template-haskell/2.8.0.0/doc/html/Language-Haskell-TH-PprLib.html ) or in general, A (and B.1) are baked into ghc, but there is some B.2/B.3 out there which U wants to use. Or is this what already happens? (ghc would notice that B.1.foo is different from B.2.foo. cabal-install would warn, but proceed? Then the effect of the proposal would just be to switch off these warnings in some cases?) - J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] package dependencies should distinguish between API and implementation?
Alexander Kjeldaas alexander.kjeldaas at gmail.com writes: There's a third relation, A API-ABI-depends-on B iff some type of B is used in the hidden binary representation that is used in backing the API visible to A. Yes. Does this hold in the example I mentioned? I think the only dependency [ of template-haskell on containers ] is in the implementation of PprMhttp://hackage.haskell.org/packages/archive/template-haskell/2.8.0.0/doc/html/Language-Haskell-TH-PprLib.html - J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] package show needs upper version bound for smallcheck?
Could the maintainers of show http://hackage.haskell.org/package/show-0.4.1.2 please add some version bound ( 1 or similar) for the smallcheck dependency? Thanks for the quick reaction. show-0.5 now depends on smallcheck=1.0 This works until the next API-breaking change in smallcheck ... I admit that I find too-detailed upper bounds on dependencies impractical as well, because they make upgrades really painful; so mostly I'm too lazy to write any bounds. Which is a bad idea, as the above example shows. Perhaps a dependency on a major version (only) could be a reasonable policy (smallcheck == 1.*) PS: Anyway the underlying problems that these policies try to solve (did the API really change? did the observable behaviour of the implementation change?) can only be solved by formal specification and verification. (e.g., you write down the full specification of a sort function, then a machine can check whether some library contains some function that claims to fulfil this spec, and it can also check whether the claim holds true - if the implementation comes with a proof) (Corollary: Agda would not need a package versioning policy because it can solve these problems at the language level :-) ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] package show needs upper version bound for smallcheck?
Since smallcheck-1.0 contains API changes - Could the maintainers of show http://hackage.haskell.org/package/show-0.4.1.2 please add some version bound ( 1 or similar) for the smallcheck dependency? Thanks - J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] how to release (on hackage) a package that needs foreign libs?
What is the recommended approach for publishing (on hackage) a package that depends on external libraries? In my case, the current version of http://hackage.haskell.org/package/satchmo (sources at https://github.com/jwaldmann/satchmo) depends on minisat-haskell-bindings (in Haskell), minisat-c-bindings (in C), and minisat (C++), all from https://github.com/niklasso/ My guess is that this would require that the external libraries are packaged (deb, rpm?), then hackage gods install them, and only then, my package will be built (and docs will be shown)? - J.W. signature.asc Description: OpenPGP digital signature ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Text.PrettyPrint.HughesPJ is sloooow (and wl-pprint-text is fast)
I was running into serious performance problems when printing moderately sized Doc and Xml data (HaXml goes via Doc). So I replace Text.PrettyPrint.HughesPJ with Text.PrettyPrint.Leijen.Text, and patched the HaXml printer in the same way. Now it is running much faster. This confirms some of the comments here: http://stackoverflow.com/questions/9761507/which-pretty-print-library If you want to see for yourself, here is a test case. It constructs and prints a document tree with about 10^4 nodes, rendered to an Xml document with 10^6 (nonblank) chars: https://github.com/jwaldmann/haskell-tpdb/blob/master/test/speed.hs Of the 4 output methods (fin the main program), only one takes 1 second. Rendering via HughesPJ needs extra stack (!) and takes about 20 seconds. Rendering via Text.XML.HaXml.ByteStringPP seems much slower still (!) (ghc-7.6.2, pretty-1.1.1.0, HaXml-1.23.3, wl-pprint-text-1.1.0.0, amd64, fedora 18, kernel 3.7.4) ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Why should we write a `par` b `pseq` (f a b) instead of a `par` b `par` (f a b)?
Petr P petr.mvd at gmail.com writes: Is there any reason to use a `par` b `pseq` (a + b) instead of a `par` b `par` (a + b) (better ask this on parallel-haskell?) It seems to me that the second variant would work as well: The main thread would block on one of the sparked computations, I think the main thread would not block at all. Instead, it would start to evaluate a (or b) right away, since (+) is strict, thus duplicating the work of a spark, and causing the spark to fizzle. Why does it work in a `par` b `pseq` a+b ? I am not even sure - there might be a race condition: assume that evaluation (to WHNF) of b (and of a) takes a long time, but b (in the main thread) finishes shortly before a does (in the spark), then the spark still fizzles and its work was in vain? J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] using/building ghc head?
Hi. I wanted to do some experiments with GHC Head but * I cannot use the snapshot bindist: ./configure --prefix=/opt checking for path to top of build tree... ./configure: line 2138: utils/ghc-pwd/dist-install/build/tmp/ghc-pwd-bindist: No such file or directory * I cannot compile snapshot from source (with ghc-7.6.1) utils/haddock/src/Haddock/Convert.hs:201:42: Not in scope: data constructor `HsBang' this is for ghc-7.7.20121213 (date Dec 21), which is the latest snapshot according to http://www.haskell.org/ghc/dist/current/dist/ what am I missing? - J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Cannot read a large integer on linux
read 18780189038289e49 :: Integer this might be related: http://hackage.haskell.org/trac/ghc/ticket/5688 ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Example programs with ample use of deepseq?
http://article.gmane.org/gmane.comp.lang.haskell.parallel/340 (with follow-up message about rseq = rdeepseq) - J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Hoogle index completeness
Hayoo has them all [ .. ] but Hoogle is better with types? it seems Hayoo only does exact (string?) match on types, while Hoogle also knows about polymorphisms, permutations etc. E.g., search for String - Int. Hoogle finds length :: [a]- Int as well, I think Hayoo doesn't. J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Exploring Programming Language Theory
Stephen Tetley stephen.tetley at gmail.com writes: Also Franklyn Turbak and David Gifford's Design Concepts for Programming Languages is very good (and new!) but huge. Yes! I like that book very much, and I use it for teaching semantics and compilation of programming languages. Semantics - by writing interpreters, in several domains. The book avoids the M word, but of course it is actually the Identity monad, the State monad, the CPS monad etc. (I guess it should really be presented via monad transformers, though.) J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] hsql-mysql encoding issues
Daniel van den Eijkel dvde at gmx.net writes: ... but I use HDBC and I'm happy with it. including its handling of character encodings? (That is, do you have, e.g., texts with umlauts in your data?) ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] hsql-mysql encoding issues
Hi. I am using hsql-(mysql-)1.8.2 When compiled with ghc-7.6, the resulting executable does not seem to be able to read strings from the DB correctly (umlauts do vanish) while it worked with hsql-(mysql-)1.8.1 and ghc-7.4. the mysql server says (show variables) | character_set_client| latin1 | | character_set_connection| latin1 | | character_set_database | latin1 | | character_set_filesystem| binary | | character_set_results | latin1 | | character_set_server| latin1 | | character_set_system| utf8| hsql is using type String all over the place, while it should be ByteString? Internally, Database.HSQL.Types.SqlBind uses Foreign.C.String.peekCStringLen . Did the behaviour of this function change? hsql is quite old, but so is my application. Assuming I find the time to rewrite my code (not likely) - what DB binding should I rather be using? Thanks - J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Solving integer equations in Haskell
Justin Paston-Cooper paston.cooper at gmail.com writes: Can anyone suggest a library written in Haskell which can solve equations of the form xM(transpose(x)) = y, where x should be an integer vector, M is an integer matrix and y is an integer? when in doubt, use brute force: write this as a constraint system (in QF_NIA or QF_BV logics) and solve with Z3. Use SBV to write the constraints programmatically http://hackage.haskell.org/package/sbv J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] CPS Streams
jeff p mutjida at gmail.com writes: I've always thought that the essence of iteratees is just CPS for sure, at some level of abstraction this ought to be true, since CPS simulates call-by-value in a call-by-name language, cf. Gordon Plotkin: Call-by-Name, Call-by Value and the Lambda Calculus TCS , Vol. 1, pp. 125-159, http://homepages.inf.ed.ac.uk/gdp/publications/ and the purpose of iteratee is to provide strict [...] I/O http://hackage.haskell.org/package/iteratee-0.8.9.4 J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] ghc-mtl, hint, mueval for ghc-7.6 ?
While porting some code to 7.6, I'm stuck here: Preprocessing library ghc-mtl-1.0.1.1... [1 of 1] Compiling Control.Monad.Ghc ( Control/Monad/Ghc.hs, dist/build/Control/Monad/Ghc.o ) Control/Monad/Ghc.hs:29:48: No instance for (DynFlags.HasDynFlags Ghc) this seems to block hint and mueval. Is there a known workaround for this problem, or a sugggested replacement package? Thanks - J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] referential transparency? (for fixity of local operators)
wren ng thornton wren at freegeek.org writes: As for whether the default should be infix 9 instead of infixl 9 ... that was exactly the point of my message. - J. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] referential transparency? (for fixity of local operators)
I was really surprised at the following: *Main 1 + 2 * 3 7 *Main ( \ (+) (*) - 1 + 2 * 3 ) (+) (*) 9 because I was somehow assuming that either a) the Prelude fixities of the operators are kept b) or they are undefined, so the parser rejects. but the Haskell standard says Any operator lacking a fixity declaration is assumed to be infixl 9. This really should be infix 9? ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] ANNOUNCE: Sylvia, a lambda calculus visualizer
Sylvia is a lambda calculus visualizer. Such a thing is certainly nice to have. I use this one for teaching: http://joerg.endrullis.de/lambdaCalculator.html ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] GHC 6.13 and GHC 7.6 in parallel on Linux
How is it possible to run 2 different versions of GHC if you installed the binary packages in standard locations, look in /usr/local/bin/ghc* : you have ghc-6.12.3, ghc-7.6.1 etc. and each one knows how to find their libraries. you can even say cabal install --with-ghc=ghc-7.6.1 foo ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Wanted: Haskell binding for libbdd (buddy)
Peter Gammie peteg42 at gmail.com writes: My hBDD bindings are on Hackage. Great! Perhaps add category: logic in the cabal file? J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Wanted: Haskell binding for libbdd (buddy)
Are there any Haskell bindings for BDD libraries (reduced ordered binary decision diagrams)? E.g., it seems buddy is commonly used http://packages.debian.org/squeeze/libbdd-dev and it has an Ocaml binding. Yes, there is http://hackage.haskell.org/package/obdd but I need better performance (with the same API, ideally). Thanks - J.W. PS: I wonder where performance goes out the window ... I suspect Map (Int,Int) whatever should really be a hashtable but I don't like it in IO, it should be in ST? signature.asc Description: OpenPGP digital signature ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] ghc-7.4 on CentOS-5.8 ?
Tim Docker twd2 at dockerz.net writes: I need to use a more recent version of gcc Thanks! Yes, that seems to be it. When building gcc didn't work, it took me a while to figure out that I was running into this bug: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51935 so I am using mpfr-3.0.1 (instead of 3.1.0). ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] ghc-7.4 on CentOS-5.8 ?
Dear all, I need a recent ghc on a not-so-recent (?) CentOS. The ghc binary package (7.2 or 7.4) does not work because of a mismatch in the libc version. ghc-7.0 is working but when I use it to compile 7.4, it breaks with some linker error (relocation R_X86_64_PC32 ...) it also suggests recompile with -fPIC but I don't see how. (In this particular case, I absolutely cannot change/update the OS.) Thanks, J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Request for optimizing help.
First, why do you think your code is non-optimal? you don't show your main program, so we don't know what you're measuring. Just by looking at some types (and not analysing the algorithm): 11 data FilterState a = FilterState { 14 , taps :: [a] -- current delay tap stored values the State really is taps only. (as and bs don't change ?) so taps should be separate. 25 newTaps = wk : init (taps s) init could be expensive (linear in the list length) (but you have linear cost elsewhere, so maybe it does not hurt) Use some different sequence type (instead of list)? It seems you actually want a strict sequence (while (:) is lazy) of strict values. 31 runFilter :: Kernel a - FilterState a - [a] - IO ([a], FilterState a) why IO? there's no IO in the implementation. it looks like a simple fold. the type is polymorphic, so ghc needs to be able to inline the dictionary arguments. (I think that it means that it wants to see all the code when compiling main, but I'm not sure. Experts can tell by studing -ddump-simpl output.) ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] not enough fusion?
Dear all, while doing some benchmarking (*) I noticed that function s1 is considerably faster than s2 (but I wanted s2 because it looks more natural) (for n = 1, s1 takes 20 s, s2 takes 13 s; compiled by ghc-7.4.2 -O2) s1 :: Int - Int s1 n = sum $ do x - [ 0 .. n-1 ] return $ sum $ do y - [ 0 .. n-1 ] return $ gcd x y s2 :: Int - Int s2 n = sum $ do x - [ 0 .. n-1 ] y - [ 0 .. n-1 ] return $ gcd x y I was expecting that in both programs, all lists will be fused away (are they?) so the code generator essentially can produce straightforward assembly code (no allocations, no closures, etc.) For reference, I also wrote the equivalent imperative program (two nested loops, one accumulator for the sum) (with the straightforward recursive gcd) and runtimes are (for same input as above) C/gcc: 7.3 s , Java: 7.7 s, C#/Mono: 8.7 s So, they sort of agree with each other, but disagree with ghc. Where does the factor 2 come from? Lists? Laziness? Does ghc turn the tail recursion (in gcd) into a loop? (gcc does). (I am looking at -ddump-asm but can't quite see through it.) (*) benchmarking to show that today's compilers are clever enough such that the choice of paradigm/language does not really matter for this kind of low-level programming. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Requesting Feedback: I Love Haskell, but can't find a place to use it
Jonathan Geddes geddes.jonathan at gmail.com writes: I love Haskell. It is my absolute favorite language. But I have a very hard time finding places where I can actually use it! have you considered your head as such a place that should be easy to find. even just for specifying things, Haskell is tremendously useful. even if you don't write programs, but just their types. you can express your software design that way, and have it formally verified (by the compiler's type checker). best regards, J. W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Formalisation for types of monads
Ertugrul Söylemez es at ertes.de writes: Note about []: Don't even mention foldl. The folding combinator for lists is foldr, period. Amen. I ignore foldl in teaching but it will appear under the name of IEnumerableT.Aggregate(z, f) (from Linq). Note, the Linq designers got the argument order right (put the Nil case first, and the Cons case later). J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Threads and hGetLine
There are two threads, one which is waits on input via hGetLine and another, which should terminate this thread or close this handle. like this? The trick is to fork the blocking call (hGetLine) and wait on an MVar. That way, the kill signal can be handled: {-# language PatternSignatures #-} import Control.Concurrent import Control.Concurrent.MVar import Control.Exception import System.IO main = do pid - forkIO $ do s - wawiter putStrLn s threadDelay $ 5 * 10^6 killThread pid waiter = do v - newEmptyMVar forkIO $ do s - hGetLine stdin ; putMVar v s readMVar v `Control.Exception.catch` \ (e :: AsyncException ) - return killed PS: and I refuse to use the ScopedTypeVariables pragma since obviously there are no type variables. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] static linking with ghc?
Hi. I want to produce a statically linked executable. I am trying 'ghc --make -fforce-recomp -static -optl-static Main' but it gives lots of errors like (.text+0xfa): undefined reference to `pthread_mutex_unlock' collect2: ld returned 1 exit status A similar thing is mentioned here (see Caveat) http://www.haskell.org/haskellwiki/Web/Literature/Static_linking The ghc user guide talks a great length about shared libs http://www.haskell.org/ghc/docs/latest/html/users_guide/using-shared-libs.html but I don't see anything on how to switch this off. - J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] static linking with ghc?
Scott Lawrence bytbox at gmail.com writes: Adding -optl-pthread fixes it for me. great! in my case, I also needed to add '-pgml g++' and together, this seems to work. Thanks. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] ANN: signed-multiset-0.1
Stefan Holdermans stefan at vectorfabrics.com writes: This package provides an efficient implementation of so-called signed multisets, which generalise multisets by allowing for negative membership. SignedMultiset a = Data.Map.Map a Integer so what do I gain by using your library? (what is the API difference?) Perhaps you could state this clearly at the top of the package description (visible on hackage). I sometimes find I want a type Map with default (the default value is stored when the Map is constructed, and you never put keys in there that map to this default). Best - J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] is this an arrow?
Dear Cafe, I have the following types: type Computer a b = ( a - IO ( Maybe b ) ) type Transformer a b c d = Computer a ( b, c - d ) For example, a SAT solver: minisat :: Computer CNF Assignment, and when I use it to solve an application problem via transformation to SAT, I need t :: Transformer Problem SAT Assignment Solution Now - what is the proper abstraction? Is this an arrow somehow? And is there already a type and a library that would contain useful combinators like some of these: http://autolat.imn.htwk-leipzig.de/gitweb/?p=box;a=blob;f=src/exotic/Strategy.hs;h=238b5f55fabf356e0ce484d0f6b882a06d6e6cfc;hb=HEAD Thanks - J.W. signature.asc Description: OpenPGP digital signature ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] mueval leaving behind tmp files
The following program prints Right (test,Bool,True) as it should, but it leaves behind in /tmp two files (name is a long string of digits) and an empty directory (name is ghcN_N). ... and it deletes the input file (/tmp/Main.hs). That's not nice. Ideally, I would want to read input from a String (instead of the file), and not write to disk at all. But cleaning up properly would be OK as a work-around. import Language.Haskell.Interpreter import Mueval.Interpreter import Mueval.ArgsParse main = do writeFile /tmp/Main.hs test = True result - runInterpreter $ interpreter $ Options { timeLimit =1, modules =Just [Prelude], expression =test , loadFile =/tmp/Main.hs, user=what, printType =True , extensions =False,namedExtensions = [] , noImports =False, rLimits =False, help=True } print result ghc --version The Glorious Glasgow Haskell Compilation System, version 7.4.1 ghc-pkg list| egrep 'mueval|hint' hint-0.3.3.4 mueval-0.8.1.1 uname -a Linux octopus 3.0.0-16-generic #29-Ubuntu SMP Tue Feb 14 12:48:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] mueval leaving behind tmp files
mueval-0.8.1.1 this is actually 0.8.2 ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] ghci can't load file whose name contains non-ASCII chars?
I must be making some obvious mistake here, but I'm not seeing it. The file name contains O-umlaut, and the OS handles it fine, but ghci does not like it (although it accepts umlauts in the contents of the file (UTF-8) e.g., as a module name) $ cat fÖÖbar.hs main = print $ product [1..100] $ ghci fÖÖbar.hs GHCi, version 7.4.1: http://www.haskell.org/ghc/ :? for help Loading package ghc-prim ... linking ... done. Loading package integer-gmp ... linking ... done. Loading package base ... linking ... done. no location info: can't find file: f??bar.hs Failed, modules loaded: none. this is on a standard ubuntu install (11.10 and 11.04) with $ locale LANG=en_US.UTF-8 LANGUAGE= LC_CTYPE=en_US.UTF-8 ... $ ghc --version The Glorious Glasgow Haskell Compilation System, version 7.4.1 $ uname -a Linux octopus 3.0.0-16-generic #29-Ubuntu SMP Tue Feb 14 12:48:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] for = flip map
Good: we have mapM, and we have forM ( = flip mapM ) . Sure this is just a convenience, and indeed forM xs $ \ x - do ... is quite handy, especially if xs is really small, and ... is some larger expression. Bad: we have map, but we are missing: for ( = flip map ) . The function is very convenient, for the same reasons as above. I can't remember how often I typed for = flip map in a source file. I never put this definition in a module either, since the import statement would be longer than the definition. So, I'm all for for . In Data.List? In the Prelude? (Should put it right next to map.) - J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Polymorphic addition function with variable number of arguments?
Can someone tell me why this is not working that someone is actually ghci: Prelude instance (Num a, Add a b) = Add (a - b) where add x y = add (x + y) interactive:8:30: Expecting one more argument to `Add (a - b)' In the instance declaration for `Add (a - b)' ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Polymorphic addition function with variable number of arguments?
The problem seems to be that numeric literals are polymorphic. With your code, this works: *Main let x = 8 :: Int *Main add x x x :: Int 24 *Main add x x :: Int 16 ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] ANNOUNCE : Leksah 0.12
Sounds good - but my build fails on ubuntu-11.10: Building gtksourceview2-0.12.3... Preprocessing library gtksourceview2-0.12.3... ./gtksourceview2.h:10:48: fatal error: gtksourceview/gtksourceundomanager.h: No such file or directory compilation terminated. gtk2hsC2hs: Error during preprocessing on ubuntu-11.04: Building gtksourceview2-0.12.3... Preprocessing library gtksourceview2-0.12.3... dist/build/Graphics/UI/Gtk/SourceView/Types.h:1:28: fatal error: gtksourceview2.h: No such file or directory compilation terminated. gtk2hsC2hs: Error during preprocessing custom header file - J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] ANNOUNCE : Leksah 0.12
cabal install --extra-include-dirs=. gtksourceview2 yes this works. thanks! - J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] help with safecopy + acid-state
Can I really rename old.T = new.T_orig ? It looks as if then tries to load the wrong acid-state snapshot. The name of your data type doesn't matter as acid-state doesn't store that on the disk. I think it does - because file names are state/T/*.log and so on? J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Stuck on HXT basics
Couldn't match expected type `Data.Tree.NTree.TypeDefs.NTree XNode' with actual type `hxt-8.5.4:Data.Tree.NTree.TypeDefs.NTree hxt-8.5.4:Text.XML.HXT.DOM.TypeDefs.XNode' perhaps you have installed several (conflicting) versions of packages. I use hxt = 9, and here is some example code: http://dfa.imn.htwk-leipzig.de/cgi-bin/gitweb.cgi?p=tpdb.git;a=tree;f=TPDB/XTC;hb=master Best - J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] help with safecopy + acid-state
Felipe Almeida Lessa felipe.lessa at gmail.com writes: data T_orig = T_orig Foo $(deriveSafeCopy 0 'base ''T_orig) data T = T Foo Bar $(deriveSafeCopy 0 'extension ''T) instance Migrate T where type MigrateFrom T = T_Orig ... As you can read from deriveSafeCopy's documentation [1], you need to increase the version of your data type (e.g. change that zero to one). Thanks - which zero? (there are two of them.) and how does it play together with Data.Acid? Can I really rename old.T = new.T_orig ? It looks as if then tries to load the wrong acid-state snapshot. Best - J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] help with safecopy + acid-state
Dear all, I can't quite get safecopy to work with acid-state: old version of code : data T = T Foo $(deriveSafeCopy 0 'base ''T) new version : data T_orig = T_orig Foo $(deriveSafeCopy 0 'base ''T_orig) data T = T Foo Bar $(deriveSafeCopy 0 'extension ''T) instance Migrate T where type MigrateFrom T = T_Orig ... but when my (new) application reads the state from disk (written by the old application) I get Could not parse saved checkpoint due to the following error: Failed reading: Duplicate version tags: [0,0] When I change the version number in deriveSafeCopy, I get Failed reading: safecopy: Map: Cannot find getter associated with this version number: Version {unVersion = 2} I don't even know where the 2 comes from. Any hints appreciated - J.W. signature.asc Description: OpenPGP digital signature ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Need advice: Haskell in Web Client
dokondr dokondr at gmail.com writes: It would be great if I could write Web client code in pure Haskell [...] not exactly Haskell, but you may want to have a look at OPA http://opalang.org/ the idea is that you write all of the application in one (statically typed, functional) language and the framework takes care of distributing the code to server and client (and on the client, it shows up as JavaScript) J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] haxr standalone server?
How could I use haxr (http://www.haskell.org/haskellwiki/HaXR) to build a stateful server? It should listen on some port, and fork threads (inside Haskell land) to handle incoming calls. Any of the Haskell web frameworks can do this? I guess this is the same question as: http://www.haskell.org/pipermail/haskell-cafe/2009-December/071185.html Thanks - J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] haxr standalone server?
Michael Snoyman michael at snoyman.com writes: It seems like the issue is that HaXR uses CGI, whereas you want to tie it in with a web server, correct? Yes. There's a deprecated package[1] to allow CGI apps to be run on any WAI handler (such as Warp). why deprecated? what's the problem with that package? J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] cabal install --hyperlink-source ?
Hello. I can do cabal install --enable-documentation which is nice because it does configure, build, haddock and copy in one go, but I don't see how to pass options from cabal install to cabal haddock (e.g., --hyperlink-source) Any hints appreciated, J.W. signature.asc Description: OpenPGP digital signature ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Is SmallCheck maintained?
On Mon, Nov 14, 2011 at 9:54 AM, Roman Cheplyaka roma at ro-che.info wrote: Does anyone currently work on Test.SmallCheck? not working on, but I'm using it in teaching. The one change that I would want in SmallCheck is that Serial should use size, not depth (that is, not take the max over the subtrees, but the sum). I think this would help somewhat against the explosion of test sets. Yes, I can write Serial instances as I fancy but it's the default instances (for tuples, lists) that I think should be changed. At least, an alternative should be provided. On the other hand, that could easily be forked off as a student project, so there is no hurry. Best, Johannes. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] FFI / enums
Does this work with ghc -XForeignFunctionInterface ? http://en.wikibooks.org/wiki/Haskell/FFI#Enumerations I am getting a syntax error right after #{. But then, the description is for hsc2hs (not ghc). And it mentions macros, while C meanwhile has real enums. Well, at leat one can write enum match { foo, bar }. The FFI Addendum does not mention enums at all. So - what's the agreeable way to do this? - Thanks, J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] wxhaskell : how to generate an event?
Dmitriy Nikitinskiy nick at bel.ru writes: http://snipplr.com/view/17538/ Looks good, and seems to work. Thanks! ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] wxhaskell : how to generate an event?
Dear all, in wxHaskell (core) I can set and get event handlers http://hackage.haskell.org/packages/archive/wxcore/0.12.1.7/doc/html/Graphics-UI-WXCore-Events.html but how is it possible to create events (programmatically) and somehow feed them into the main event handling loop? I think I need this in an application that needs to handle concurrently events that arrive via the GUI (like mouse clicks) and events from an external source (specifically, alsa-midi input). Of course I could handle those extra events separately from wxcore, but they should ultimately result in changes to the GUI state, and it feels dangerous to do this without synchronisation. Any hints welcome. Thanks - J.W. signature.asc Description: OpenPGP digital signature ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Is there a DFA library?
... things like minimization, completion, etc. http://autolat.imn.htwk-leipzig.de/haddock/autolib-fa-1.1/ git clone git://autolat.imn.htwk-leipzig.de/git/autolib Enjoy - J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] static analysis (call graph) tools?
Dear Cafe, what tools are there for static analysis of Haskell programs? I mean simple things like the call graph (who is calling whom). Which are, of course, not that simple because of higher order functions. Do leksah/eclipsefp(/ghc api) have something like show all uses of an identifier (eclipse: open call hierarchy) (with correct handling of scoping and modules)? Thanks - Johannes. signature.asc Description: OpenPGP digital signature ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Leipzig (Germany) Haskell Workshop 7 October - Program and Registration
Dear all, the 6th Haskell in Leipzig workshop, on October 7, will present an absolutely thrilling mixture of tutorials and talks, with special emphasis on parallel programming. for details and registration, http://portal.imn.htwk-leipzig.de/events/hal6-haskell-workshop See you - Johannes Waldmann. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Grammar hacker in Haskell
Stephen Tetley stephen.tetley at gmail.com writes: Compilers: Principles, Techniques, and Tools by Aho et al. though the presentation in this book is quite formal. you make that sound like a bad thing ... even the publisher seems to think so, and came up with a slogan that indeed must be the most counter-productive advertisement for a (computer) science textbook: completely rewritten to be less formal (for the recent edition of Introduction to Automata Theory, Languages, and Computation, by an overlapping set of authors) J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Trying to make a calculator
But now my assignment is a lot tougher than I thought so I'll need some guidelines. I'm pretty sure your course instructor has already given you the exact guidelines that are required, in her lecture. There's hundreds of ways to make a calculator, and it really depends on what the teacher wants to emphasize, in the context of the lecture. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] CfP: Haskell Workshop in Leipzig, Germany, October 7
Call for submissions for our local Haskell Workshop in Leipzig, Germany. Tutorials, talks, demonstrations ... everything welcome. Workshop language is German (mainly), and English (by request). Submission deadline: August 20, Workshop date: October 7 http://portal.imn.htwk-leipzig.de/events/hal6-haskell-workshop Best regards, Johannes Waldmann. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] NVIDIA's CUDA and Haskell
Trevor L. McDonell tmcdonell at cse.unsw.edu.au writes: hmm... so libcuda and libcudart are in /usr/local/cuda/lib ... actually libcuda is in /usr/lib/nvidia-current , unbeknownst to ./configure. I think this comes from package nvidia-current(-dev) in ubuntu. I could solve this with LDFLAGS='-L/usr/lib/nvidia-current ' cabal install note the space after dirname - otherwise ./configure (in cuda-0.3.2.2) fails. It still feels strange that I can build the examples from NVIDIA_GPU_Computing_SDK/C/src/ without modifying LDFLAGS. When running, I need to set LD_LIBRARY_PATH=/usr/local/cuda/lib64 but that's expected. Anyway, when running accelerate-examples --cuda I get mixed results, ... fold-maximum: Ok fold-minimum: Ok fold-2d-sum: Failed: stack overflow fold-2d-product: Failed: stack overflow scanseg-sum: Failed: *** Internal error in package accelerate *** *** Please submit a bug report at https://github.com/mchakravarty/accelerate/issues ./Data/Array/Accelerate/CUDA.hs:58 (unhandled): CUDA Exception: unspecified launch failure I guess I should report them as advertised. Is there a way to find out the expected results/failures for a recent accelerate package install? (So I can avoid reporting them.) Thanks - Johannes. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] NVIDIA's CUDA and Haskell
Trevor L. McDonell tmcdonell at cse.unsw.edu.au writes: ... source repo should work: https://github.com/mchakravarty/accelerate I have CUDA in the default location (e.g., /usr/local/cuda/bin/nvcc ) but I can't seem to get the cuda cabal package to build ... checking cuda.h usability... yes checking cuda.h presence... yes checking for cuda.h... yes checking cuda_runtime_api.h usability... yes checking cuda_runtime_api.h presence... yes checking for cuda_runtime_api.h... yes checking for library containing cuDriverGetVersion... no configure: error: could not find CUDA driver library I have nvcc in the PATH, and I also set --extra-include/lib-dirs I can build and run the NVIDIA_GPU_Computing_SDK examples. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Searching of several substrings (with Data.Text ?)
... a function that can search several substrings in one run. use regular expressions? (the regexp can be compiled into a finite automaton that scans the string just once.) ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Parsing Haskell in Parsec
You may browse my source code (quite unpolished) ... updated locations: http://dfa.imn.htwk-leipzig.de/cgi-bin/gitweb.cgi?p=ws10-cb.git;a=summary git clone git://dfa.imn.htwk-leipzig.de/srv/git/ws10-cb ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Dead else branch does influence runtime?
Dear all, I am very puzzled by a program that contains an else branch that is never executed, but still seems to slow down the program. (When I replace it by undefined, the resulting program runs much faster.) http://hackage.haskell.org/trac/ghc/ticket/5256 I thought it may be a type issue (the type of the else branch forces the type of the then branch to be more general, thus some optimization might not fire) but the types of the branches look identical. (They are generic, but the specializer should take care of that.) I am sure GHC headquarters will look at this when they find the time but perhaps there's some additional knowledge on this mailing list that might help. J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Dead else branch does influence runtime?
Thanks for the analysis. So is this a problem that should be fixed in GHC? And what can I do to circumvent the problem? (Perhaps write some RULES magic?) Thanks - J.W. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Dead else branch does influence runtime?
On 06/14/2011 04:42 PM, KC wrote: How is the compiler to know the else branch is never executed at run-time? If you do, then why is it there in your source code? The algorithm is divide-and-conquer, and I want to create sparks as long as I have cores (capabilities), and use the linear algorithm below that. The bug report is that the linear algorithm (if called from inside my program, at the leaves of the recursion tree) is much slower than when called on its own. This bug already shows when the tree has height 0, but this is really just for the bug report - in real life, both branches will be executed. J.W. signature.asc Description: OpenPGP digital signature ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Dead else branch does influence runtime?
On 06/14/2011 04:51 PM, Daniel Fischer wrote: Note that you get good behaviour when you help GHC a bit, in particular a static argument transformation Great! And just in time for my lecture ... - Thanks, J.W. signature.asc Description: OpenPGP digital signature ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe