Re: [Haskell-cafe] ANN: set-cover solves Sudoku, Soma cube, 8 Queens etc.

2013-09-08 Thread Johannes Waldmann
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?

2013-08-26 Thread Johannes Waldmann
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

2013-08-23 Thread Johannes Waldmann
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?

2013-08-21 Thread Johannes Waldmann
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?

2013-08-12 Thread Johannes Waldmann
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?

2013-07-16 Thread Johannes Waldmann
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

2013-07-16 Thread Johannes Waldmann
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)

2013-07-15 Thread Johannes Waldmann
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

2013-07-01 Thread Johannes Waldmann
   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 )

2013-07-01 Thread Johannes Waldmann
 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?

2013-06-22 Thread Johannes Waldmann
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?

2013-06-22 Thread Johannes Waldmann
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

2013-06-08 Thread Johannes Waldmann
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, ...

2013-05-28 Thread Johannes Waldmann
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, ...

2013-05-28 Thread Johannes Waldmann
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?

2013-05-09 Thread Johannes Waldmann
 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?

2013-05-09 Thread Johannes Waldmann
 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

2013-05-02 Thread Johannes Waldmann
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

2013-05-02 Thread Johannes Waldmann
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?

2013-04-25 Thread Johannes Waldmann
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?

2013-04-23 Thread Johannes Waldmann
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?

2013-04-17 Thread Johannes Waldmann
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?

2013-04-17 Thread Johannes Waldmann
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?

2013-04-17 Thread Johannes Waldmann
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)?

2013-04-16 Thread Johannes Waldmann
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

2013-04-09 Thread Johannes Waldmann
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

2013-04-07 Thread Johannes Waldmann
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.

2013-04-04 Thread Johannes Waldmann
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.

2013-04-04 Thread Johannes Waldmann
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.

2013-04-03 Thread Johannes Waldmann
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

2013-04-02 Thread Johannes Waldmann
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?

2013-03-19 Thread Johannes Waldmann
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?

2013-02-25 Thread Johannes Waldmann
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?

2013-02-25 Thread Johannes Waldmann
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?

2013-02-22 Thread Johannes Waldmann

 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?

2013-02-20 Thread Johannes Waldmann
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?

2013-02-16 Thread Johannes Waldmann
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)

2013-02-04 Thread Johannes Waldmann
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)?

2013-01-20 Thread Johannes Waldmann
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?

2013-01-14 Thread Johannes Waldmann
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

2013-01-14 Thread Johannes Waldmann
 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?

2013-01-08 Thread Johannes Waldmann
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

2012-12-19 Thread Johannes Waldmann

 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

2012-12-09 Thread Johannes Waldmann
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

2012-10-24 Thread Johannes Waldmann
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

2012-10-23 Thread Johannes Waldmann
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

2012-10-15 Thread Johannes Waldmann
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

2012-10-10 Thread Johannes Waldmann
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 ?

2012-10-08 Thread Johannes Waldmann
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)

2012-10-06 Thread Johannes Waldmann
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)

2012-10-05 Thread Johannes Waldmann
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

2012-09-28 Thread Johannes Waldmann

 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

2012-09-28 Thread Johannes Waldmann

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)

2012-08-21 Thread Johannes Waldmann
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)

2012-08-20 Thread Johannes Waldmann
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 ?

2012-06-28 Thread Johannes Waldmann
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 ?

2012-06-27 Thread Johannes Waldmann
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.

2012-06-25 Thread Johannes Waldmann
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?

2012-06-24 Thread Johannes Waldmann
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

2012-05-31 Thread Johannes Waldmann
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

2012-05-22 Thread Johannes Waldmann
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

2012-05-02 Thread Johannes Waldmann

 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?

2012-04-22 Thread Johannes Waldmann
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?

2012-04-22 Thread Johannes Waldmann
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

2012-04-18 Thread Johannes Waldmann
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?

2012-04-13 Thread Johannes Waldmann
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

2012-04-02 Thread Johannes Waldmann
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

2012-04-02 Thread Johannes Waldmann

 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?

2012-03-28 Thread Johannes Waldmann
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

2012-03-28 Thread Johannes Waldmann
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?

2012-03-13 Thread Johannes Waldmann
 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?

2012-03-13 Thread Johannes Waldmann
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

2012-03-11 Thread Johannes Waldmann
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

2012-03-11 Thread Johannes Waldmann

 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

2012-01-31 Thread Johannes Waldmann

  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

2012-01-30 Thread Johannes Waldmann

 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

2012-01-30 Thread Johannes Waldmann
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

2012-01-27 Thread Johannes Waldmann
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

2012-01-18 Thread Johannes Waldmann
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?

2012-01-05 Thread Johannes Waldmann
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?

2012-01-05 Thread Johannes Waldmann
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 ?

2011-12-02 Thread Johannes Waldmann
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?

2011-11-22 Thread Johannes Waldmann

 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

2011-11-07 Thread Johannes Waldmann
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?

2011-10-11 Thread Johannes Waldmann
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?

2011-10-10 Thread Johannes Waldmann
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?

2011-10-10 Thread Johannes Waldmann
 ... 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?

2011-09-15 Thread Johannes Waldmann
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

2011-09-09 Thread Johannes Waldmann
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

2011-07-22 Thread Johannes Waldmann
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

2011-07-18 Thread Johannes Waldmann
 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

2011-07-08 Thread Johannes Waldmann
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

2011-07-06 Thread Johannes Waldmann
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

2011-07-05 Thread Johannes Waldmann
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 ?)

2011-07-05 Thread Johannes Waldmann
 ... 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

2011-06-16 Thread Johannes Waldmann

 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?

2011-06-14 Thread Johannes Waldmann
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?

2011-06-14 Thread Johannes Waldmann
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?

2011-06-14 Thread Johannes Waldmann
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?

2011-06-14 Thread Johannes Waldmann
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


  1   2   3   >