Re: [Haskell-cafe] What is the difference between runhaskell and compile?
> Sorry for the wrong information. I made a mistake when did the test. > After more testing, I think it is a bug of ghc 7.4.1. Until now, I cannot > find a way to make ghc 7.4.1 compiled binary work. It sounds like this should be looked at further. Somebody should verify try to repeat what you are seeing on 7.4.1. The release candidate for 7.4.2 should also be tried. (I will see if I can get time to do it myself.) Chris ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Building pattern and trying monads
> observe $ flip runStateT 10 $ (put 0 >> mzero) <|> modify (+3) > ((),13) If the only thing you need is backtracking, using LogicT might be a little overkill, using Maybe in the bottom of you monad stack suits just fine: case flip runStateT 10 $ (put 0 >> mzero) <|> modify (+3) of Just x -> Nothing -> 2012/5/27 Roman Cheplyaka > * L Corbijn [2012-05-27 14:21:39+0200] > > The solution I've in mind depends on the stack being pure. When the > > monad stack is pure a rule can be applied, returning a maybe value (or > > having a MaybeT wrapper) and when returning Nothing (failed rule) > > reverting the stack to it's point before applying the rule. > > > > As I'm not quite sure about the design (nor good at software design) > > I've some questions about this approach. > > 1. Is there a better approach then using a state monad for building > > the 'products'? > > If you need to interleave building your "products" and analyzing them, > State seems a reasonable choice here. > > > 2. My solution with saving/reverting monad-stacks seems quite a > > hassle/hack, so is it a good approach or is there something better? > > You can use a backtracking monad here ([] or Logic). > > The key thing is to put the backtracking monad in the bottom of your > stack (everything above it will be restored on mzero). On the other > hand, if you want some "global" effects that should not be restored, you > can put corresponding monads below LogicT in the stack. > > Example: > >> observe $ flip runStateT 10 $ (put 0 >> mzero) <|> modify (+3) >((),13) > > Note that "put 0" had no effect here, because it was followed by mzero. > > -- > Roman I. Cheplyaka :: http://ro-che.info/ > > ___ > Haskell-Cafe mailing list > Haskell-Cafe@haskell.org > http://www.haskell.org/mailman/listinfo/haskell-cafe > ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] What is the difference between runhaskell and compile?
> Sorry for the wrong information. I made a mistake when did the test. > After more testing, I think it is a bug of ghc 7.4.1. Until now, I cannot > find a way to make ghc 7.4.1 compiled binary work. I have set up this test on 7.4.1 and I cannot recreate the problem -- compiling and running an equivalent program (the posted program with local domain, bindDN and bindPW definitions localised and all other let bindings removed) leads to a successful server connection when passed the right password but fails to connect with the wrong password. This was the behaviour you were seeing yourself with 7.2.2 was it not? I can only recommend re-installing 7.4.1 and trying again. Chris ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Building pattern and trying monads
* Yves Parès [2012-05-28 11:28:22+0200] > > observe $ flip runStateT 10 $ (put 0 >> mzero) <|> modify (+3) > > ((),13) > > If the only thing you need is backtracking, using LogicT might be a little > overkill, using Maybe in the bottom of you monad stack suits just fine: > > case flip runStateT 10 $ (put 0 >> mzero) <|> modify (+3) of > Just x -> > Nothing -> Indeed, I didn't realise that Maybe may be (no pun intended) sufficient here! -- Roman I. Cheplyaka :: http://ro-che.info/ ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Building pattern and trying monads
Actually, I think the backtracking property here stems more from the MonadPlus StateT instance than from the properties of Maybe. (mplus a b runs a and b by passing explicitely the same state to them). 2012/5/28 Roman Cheplyaka > * Yves Parès [2012-05-28 11:28:22+0200] > > > observe $ flip runStateT 10 $ (put 0 >> mzero) <|> modify (+3) > > > ((),13) > > > > If the only thing you need is backtracking, using LogicT might be a > little > > overkill, using Maybe in the bottom of you monad stack suits just fine: > > > > case flip runStateT 10 $ (put 0 >> mzero) <|> modify (+3) of > > Just x -> > > Nothing -> > > Indeed, I didn't realise that Maybe may be (no pun intended) sufficient > here! > > -- > Roman I. Cheplyaka :: http://ro-che.info/ > ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Estágio com Haskell em SP (Haskell internship at São Paulo, Brazil)
(English message follows after the break.) Olá! Estamos procurando um estagiário para trabalhar conosco em São Paulo capital. Nós somos uma startup apaixonada por Haskell com uma boa participação na comunidade e grandes projetos e desafios! Se você está interessado, basta me mandar um e-mail (felipe.le...@gmail.com) com um link para sua conta do GitHub (ou para projetos em que você já tenha trabalhado). Você não precisa ser experiente em Haskell nem ter nenhum código Haskell publicado, mas isso seria um diferencial =). Como a startup está em stealth mode, não posso divulgar o nome da empresa e por isso estou usando meu e-mail pessoal. Até mais! === Hey! We're looking for an intern to work with us in São Paulo, Brazil. We're a startup passionate about using Haskell with great projects and challenges! If you're interested, just send me an e-mail (felipe.le...@gmail.com) with a link to your GitHub account (or to any projects you've worked at). You don't need to be an experienced Haskeller nor have any published Haskell code, but that would be a plus =). As the startup is in stealth mode, I can't disclose the company's name nor use my work e-mail (that's why I'm using my personal one). Cheers, -- Felipe. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Fundeps and overlapping instances
Gábor Lehel gmail.com> writes: > > If you're referring to the NewAxioms work Simon linked to ... [snip] > ... It seems vaguely similar to a paper on instance chains[2] > I saw once. Thanks Gábor for the reference, but I don't think they're very comparable. The instance chains is in context of fundeps and overlaps (as you'd expect from MPJ, since it was him who first introduced fundeps). I know fundeps are 'theoretically' equivalent to type families. But I think the instance chains paper is a good demonstration of why I find fundeps so awkward to follow at the superficial syntax level for type-level programming: - you have to look first to the end of the instance to find the head; - and assume (hope!) that the 'result' is the rightmost typevar; - then backtrack through the list of constraints; - some are only validation limits on the instance; - some are calculating intermediate results (again with their result at right). Instance chains include: - not only resolving overlaps (yes, that's similar to NewAxioms); - but also choosing instances based on type class membership; (often asked for by newbies, but really difficult to implement) - and explicit failure leading to backtracking search (Explicit failure is missing from NewAxioms. I don't mean backtracking, but at least treating certain conditions as no instance match. Oleg's HList work needs that (for example in the Lacks constraint), but has to fudge it by putting a fake instance with a fake constraint.) Does the overall instance chain structure guarantee termination of type inference? I don't follow the algebra enough to be sure. Morris & Jones' examples seem to me contrived: they've set up overlapping instances where you could avoid them, and even where they seem harder to follow. Yes, their solution is simpler than the problem they start with; but no, the problem didn't need to be that complex in the first case. (I'm looking especially at the GCD/Subt/Lte example -- I think I could get that to work in Hugs with fundeps and no overlaps.) I'm surprised there isn't a Monad Transformer example: [3] by MPJ uses overlaps for MonadT. And MonadT was (I thought) what gave all the trouble with overlaps and default instances and silently changing behaviour. (There's a brief example in Morris' supporting survey - ref [11] in [2].) Anybody out there can explain further? AntC > > [2] http://citeseerx.ist.psu.edu/viewdoc/download? doi=10.1.1.170.9113&rep=rep1&type=pdf > [3] Functional Programming with Overloading and Higher-Order Polymorphism Mark P. Jones, 1995 ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] What is the difference between runhaskell and compile?
Interesting. I have this code tested in Debian unstable/stable, CentOS 6.1, all 64 bit, with two different version of libldap2. At first, Debian-s were installed with 7.4.1, CentOS with 7.2.2. Only in CentOS the code connected after compiled. Then I removed 7.4.1 from Debian stable and installed 7.2.2. The code worked. At last, I installed 7.4.1 in CentOS. The code did not work. Could you send the .hi/.o to me, so maybe I could find out the different? Also the exact original source. Thank you. On Mon, May 28, 2012 at 6:27 PM, Chris Dornan wrote: >> Sorry for the wrong information. I made a mistake when did the test. >> After more testing, I think it is a bug of ghc 7.4.1. Until now, I cannot >> find a way to make ghc 7.4.1 compiled binary work. > > I have set up this test on 7.4.1 and I cannot recreate the problem -- > compiling and running an equivalent program (the posted program with local > domain, bindDN and bindPW definitions localised and all other let bindings > removed) leads to a successful server connection when passed the right > password but fails to connect with the wrong password. > > This was the behaviour you were seeing yourself with 7.2.2 was it not? I can > only recommend re-installing 7.4.1 and trying again. > > Chris > > -- 竹密岂妨流水过 山高哪阻野云飞 And for G+, please use magiclouds#gmail.com. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe