Re: [Haskell-cafe] Haskell Weekly News
I miss it too, I've got one person set up (or in the process of setting up) to take it over. I'll be happy to help anyone else get set up (the tools are nontrivial to use at first). The current plan, when I finally get back on my feet, is to have multiple editors trading off weeks/months/ timeframetobedetermined to minimize downtime such as this. I would like to really apologize to the community, I had thought I had the problems fixed, then I ran into some financial difficulties, and couldn't finish fixing the machine. Pride kept me from asking for someone to take over the HWN in my absence, that was silly, you guys would (as I can see) have jumped at the chance to help. Please send me an email if you'd like to help, I have a little tutorial tome I can forward you that will get you set up, and we can work out a schedule with the other editor(s). Having 5 or 6 editors to cycle through will be ideal, I think, that way we have a fair amount of redundancy to prevent situations like this. /Joe On Sep 9, 2010, at 10:35 AM, Malcolm Wallace wrote: I miss the Haskell Weekly News. The most recent issue was published on 8th March 2010. The volunteer who produces it claimed on 27th April that he would be back in action soon, implying that once a couple of weeks' worth of university classes were finished, HWN would return. So in the absence of any visible movement, and it now being Sept, can I appeal for a new volunteer to take over? There is more info here: http://www.haskell.org/haskellwiki/HWN Regards, Malcolm ___ 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] Haskell Weekly News?
Yah, this is gonna sound like a crappy thing -- but my computer is still broken. What I thought was a faulty SATA port seems to actually be an issue with the harddrive, so -- one more week is the punchline. I'm really sorry guys... /Joe On Jun 23, 2010, at 10:13 AM, aditya siram wrote: Neat. Thanks! -deech On Wed, Jun 23, 2010 at 10:06 AM, Vo Minh Thu not...@gmail.com wrote: 2010/6/23 aditya siram aditya.si...@gmail.com: I haven't seen HWN in a while. If there is still community interest, how can we help you with this? It will come back, see this thread: http://www.reddit.com/r/haskell/comments/cdw38/hwn_it_will_be_back_promise/ Cheers, Thu ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Haskell Weekly News?
While I would not be opposed to being paid, I don't think it's at all necessary or even really appropriate. I liken the job to volunteering at a local community action group -- not really the kind of thing you get paid for. That said, if any of you have time machines/time dilation devices in the works, I'm happy to beta test. One more week... /Joe On Apr 28, 2010, at 2:40 AM, David Virebayre wrote: On Wed, Apr 28, 2010 at 7:47 AM, David Sankel cam...@gmail.com wrote: I'm wondering if a monetary incentive would keep the person who does this work more accountable. I personally would be willing to contribute to continue getting this service. I wonder if there are others as well. I don't think money would be an incentive for someone that has 7 classes worth of finals and papers to do Now a time machine. David. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Haskell Weekly News?
Hehe, Mostly, at the moment, as I mentioned to Deech, what is holding me up is trying to get HWN and 7 classes worth of finals and papers done. This is the last two weeks of my last semester, but it should be all done soon. I hope to get HWN out shortly after it's all finished up. I shall return! /Joe On Apr 26, 2010, at 7:54 PM, Ivan Miljenovic wrote: On 27 April 2010 08:08, aditya siram aditya.si...@gmail.com wrote: Hi all, I haven't seen a Haskell Weekly News in a while. Is there anything I can do to help? My guess is do John's marking, etc. for him so that he has some time to do the HWN! We also want him to avoid this situation: http://ro-che.info/ccc/06.html :p -- Ivan Lazar Miljenovic ivan.miljeno...@gmail.com IvanMiljenovic.wordpress.com ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Haskell Weekly News?
Most certainly, the HWN is easy to put together, it's just a little time consuming, the weekly schedule is just enough under a normal 40- hour courseload. When that number jumps into the high billions (as it did this last semester), it becomes someone more difficult to fit in. HWN will always be HWN, at least as long as I can keep it that way. :D /Joe On Apr 26, 2010, at 8:17 PM, Ivan Miljenovic wrote: On 27 April 2010 10:08, Joe Fredette jfred...@gmail.com wrote: I hope to get HWN out shortly after it's all finished up. I shall return! As long as you don't end up copying the Gentoo situation where the Gentoo Weekly News died, was resurrected (not sure how many times), was converted to the Gentoo Monthly News to make it simpler, and then became the Gentoo Never News (hey, GNN sounds kinda catchy, though not as good as C :p). -- Ivan Lazar Miljenovic ivan.miljeno...@gmail.com IvanMiljenovic.wordpress.com ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] instance Eq (a - b)
Consider the set of all rationals with 1 as a numerator, and positive denominator, eg: S = {1/n, n : Nat} this is bounded, enumerable, but infinite. Which makes the whole checking every value bit somewhat, shall we say, difficult. :) So for instance, we want to show f : S - S f(1/n) = 1/2n and g : S - S g(1/n) = 1/2 * 1/n would be impossible. Since we would have to check infinitely many values of `n` This, of course, presumes I have understood everything, which seems to be less likely every day. On Apr 14, 2010, at 2:03 AM, Ashley Yakeley wrote: Why isn't there an instance Eq (a - b) ? allValues :: (Bounded a,Enum a) = [a] allValues = enumFrom minBound instance (Bounded a,Enum a,Eq b) = Eq (a - b) where p == q = fmap p allValues == fmap q allValues Of course, it's not perfect, since empty types are finite but not Bounded. One can nevertheless make them instances of Bounded with undefined bounds, and have enumFrom and friends always return the empty list. It seems one should also be able to write instance (Bounded a,Enum a) = Traversable (a - b) where ??? But this turns out to be curiously hard. -- Ashley Yakeley ___ 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] Hackage accounts and real names
Exactly, it's not like the Hackage people are doing extensive background checks of everyone, they just want something consistent. You guys don't _really_ think my name is Joe Fredette, right? I'm actually Batman. /Joe On Apr 4, 2010, at 7:58 PM, Jesper Louis Andersen wrote: On Mon, Apr 5, 2010 at 1:49 AM, Brandon S. Allbery KF8NH allb...@ece.cmu.edu wrote: Some people are paranoid about such things, for example because it would allow people to google-mine for things they'd rather a random HR person not reading by linking names together. In addition, the concept is rather silly, as one can just take a pseudonym without any of us knowing: Whats new: Thu Apr 1 13:37:00 UTC 2010 NicolasBourbaki algebre-1.0 History is ripe with examples of this. -- J. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Hackage accounts and real names
Unfortunately, Ivan, it's not so much the Whenever-I-can-be-bothered and more the Joe-had-4-finals-in-2-weeks-and-3-papers-to-write. HWN should be back shortly. Come Summertime, I suspect all of these delays will stop, but with a 7 class semester, something's gotta give. /Joe On Apr 5, 2010, at 4:52 AM, Ivan Lazar Miljenovic wrote: Joe Fredette jfred...@gmail.com writes: You guys don't _really_ think my name is Joe Fredette, right? I'm actually Batman. Batman, Joe, whatever your name is... I notice that the HWN has turned into the Haskell Whenever-I-can-be-bothered-getting-around-to-it News... _ -- Ivan Lazar Miljenovic ivan.miljeno...@gmail.com IvanMiljenovic.wordpress.com ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Hackage accounts and real names
Thats what I _want_ you to think. :) On Apr 5, 2010, at 10:28 AM, Ivan Lazar Miljenovic wrote: Joe Fredette jfred...@gmail.com writes: Unfortunately, Ivan, it's not so much the Whenever-I-can-be-bothered and more the Joe-had-4-finals-in-2-weeks-and-3-papers-to-write. HWN should be back shortly. Hang on, I thought your name was Batman, not Joe... -- Ivan Lazar Miljenovic ivan.miljeno...@gmail.com IvanMiljenovic.wordpress.com ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] HWN Issue 148 -- unicode error
Indeed, the Unicode only made it through my system, and not the mailer itself. In fact, the name should look something like Ćwikłowski, and not the garbled mess that made it through. Apologies again, Bartek! /Joe___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Haskell Weekly News: Issue 142 - December 13, 2009
English, while my first language (and in fact, only language...) is also my worst language... Thanks for catching the grammar snafu. While I'm here, please note that the issue number is off as well, it's fixed in the version on sequence.complete.org, but not in the email version. /Joe On Dec 13, 2009, at 7:03 PM, Erlend Hamberg wrote: Hi, First and foremost; thanks for your work on the HWN. It is greatly appreciated. :) Just a quick tip: On Monday 14. December 2009 00.45.29 jfred...@gmail.com wrote: Until next week, Haskeller's, […] why we Haskeller's […] Both of these refer to many “haskellers” – no apostrophe should be put before the ‘s’ as that would mean *one* haskeller having something. (“A haskeller's best friend”.) -- Erlend Hamberg Everything will be ok in the end. If its not ok, its not the end. GPG/PGP: 0xAD3BCF19 45C3 E2E7 86CA ADB7 8DAD 51E7 3A1A F085 AD3B CF19 ___ 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] Zumkeller numbers
Here's a completely naive implementation, it's slow as cold molasses going uphill during a blizzard, but it doesn't seem to be wrong. I let it run in the interpreter for the last 3 minutes or so and it's reproduced the given list up to 126 (and hasn't crapped out yet). I imagine there's probably a less naive algorithm that could be done, but I rather like the straightforwardness of this one... /Joe module Main where import Control.Monad(filterM) import Data.List(sort) divisors :: Int - [Int] divisors n = [d | d - [1..n], n `mod` d == 0] powerset = filterM (const [True, False]) () :: Eq a = [a] - [a] - [(a,a)] x y = [(x', y') | x' - x, y' - y, x' /= y'] (/\) :: Eq a = [a] - [a] - Bool x /\ y = null $ filter (`elem` x) y prod m n = filter (uncurry (/\)) (m n) eqSum :: ([Int], [Int]) - Bool eqSum (m, n) = sum m == sum n containsAllDivisors i l = filter (\x - (sort . uncurry (++) $ x) == divisors i) l zumkeller :: Int - [([Int], [Int])] zumkeller n = containsAllDivisors n . filter eqSum . (\x - prod x x) $ allParts where divs = divisors n allParts = powerset divs zumkellerP :: Int - Bool zumkellerP = not . null . zumkeller --- On Dec 7, 2009, at 4:33 PM, Frank Buss wrote: Anyone interested in writing some lines of Haskell code for generating the Zumkeller numbers? http://www.luschny.de/math/seq/ZumkellerNumbers.html My C/C# solutions looks clumsy (but is fast). I think this can be done much more elegant in Haskell with lazy evaluation. Not related to Haskell, but do you think semi-Zumkeller numbers are semi-perfect numbers? Maybe some Haskell code for testing it for some numbers? -- Frank Buss, f...@frank-buss.de http://www.frank-buss.de, http://www.it4-systems.de ___ 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] Finding HP
I think it makes sense, the HP is supposed to set up the entire environment needed for typical haskell development (at least, that is my understanding). As such, what's the point in making downloading haskell mean downloading a single _peice_ of haskell (GHC) only to have to download _everything else anyway_ (cabal-et-al, various standard libraries, etc). Perhaps we could put it to some kind of community vote. /Joe On Dec 3, 2009, at 11:43 AM, Don Stewart wrote: vandijk.roel: On Wed, Dec 2, 2009 at 11:44 PM, Gregory Crosswhite gcr...@phys.washington.edu wrote: On a more serious note, Download Haskell /= Download Haskell Platform, so if I were glancing down the sidebar looking for a link to download the Haskell Platform then the first link wouldn't have registered for me. And putting a X has been released link! in the news does not count as a prominent download link. If I wanted to know something *about* the *Haskell Platform* I would click the link The Haskell Platform under the section About. So it is actually mentioned 3 times on the front page. What could be improved are the 2 download links: Download Haskell and Download GHC. It would perhaps be better to have one nice big Download button that takes you to a separate download page. Having a single download link that only points to the Haskell Platform would be a bit of a policy shift. Is the community ready to accept that users looking for Haskell should be given the HP binaries? If so, I can change it to have a single Download button. Though it might be preferable to do that after the next release (the first non-beta release). -- Don ___ 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] Card games
Yah! We like helping! On Dec 3, 2009, at 2:37 PM, Daniel Fischer wrote: Am Donnerstag 03 Dezember 2009 19:23:24 schrieb Tom Tobin: 2009/12/3 Matthias Görgens matthias.goerg...@googlemail.com: Hi Tom, Did you make any progress on your Dominion quest? I guess you could start by modeling `Big Money' and add the other cards (and interaction) from there. No, I'm still trying to tune a partitionM function I wrote. Maybe we can help? (I'm still a beginner.) ^_^ I'd like to write a Dominion library or some more generic superset at some point, though. ___ 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] Is Haskell a Fanatic?
I think you meant to say: Now is the winter of our discontent with this troll made glorious summer by this son of Fischer. So long as we bastardize the bard, we best bastardize him fully! :) /Joe On Dec 3, 2009, at 2:58 PM, Miguel Mitrofanov wrote: Brilliant. Just brilliant. On 3 Dec 2009, at 22:54, Daniel Fischer wrote: Am Donnerstag 03 Dezember 2009 19:14:40 schrieb Stefan Holdermans: John, Miguel (and others), Don Stewart wrote, the guarantees of purity the type system provides are extremely useful for verification purposes. My response to this is in theory. This is what caught my attention initially, but the language lacks polish and does not appear to be going in a direction where it shows signs where it will self-correct. It may even be beyond repair. I care about others and I don't want people to be misled. [...] The burden of proof is on you to demonstrate that it _is_. I admit it's tempting, but wouldn't you agree that, especially in this case, it's better not to feed the troll? To feed, or not to feed: that is the question: Whether 'tis nobler in the mind to suffer The quips and ramblings of outrageous trolling, Or to take arms against a sea of nonsense, And by opposing end them? Cheers, Stefan ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Is Haskell a Fanatic?
The Mayan's Set 'em up, Haskellers knock them down... On Dec 4, 2009, at 1:36 AM, Evan Laforge wrote: I'd just like to point out or reiterate the odd rise in trolling and the recent announcements of haskell-2010... Just wait until haskell-2012 is announced with nonexistential aka eschatological types spelled notany a. World. It evaluates to a new form of bottom that blackholes the entire world... ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] HWN This week
Hey folks, I'm at home this weekend, and the internet is somewhat dodgey, so I'm going to delay the special Thanksgiving episode of the HWN till sunday afternoon... I suppose the Turkey-coma isn't helping either, but I'll never admit it... /Joe ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: Haskell Weekly News: Issue 140 - November 22, 2009
I censored it because I intend the HWN to be a PG rated article. I figure -- while I am not under any delusion that kids these days have mouths fouler than mine, which is a feat for sure -- that some young programmer with strict speaking morals may stumble upon the HWN and say, Hey self! This is a fantastically written weekly newsletter concerning recent developments in this community, and did I mention how wonderfully written it is? I should want said programmer to not feel any offense that can be easily avoided by a single * here or !...@#$ there. Generally I'm opposed to censorship -- but that generally entails an authority censoring against the will of the author, I think that in this case -- as I am the author/editor (not of the post proper, but rather the conduit to the post) -- that censorship-self-inflicted doesn't really count. I guess my view is that such a paper with an unintentionally foul- mouthed name -- like Brainf*ck -- ought not be the reason for which your paper is rejected from a journal or other publication source, but rather it should be understood that it might be mildly censored (as I did) if it is publish, in accordance with the intended audience of the publication source. /Joe On Nov 23, 2009, at 9:35 PM, Benjamin L.Russell wrote: On Sat, 21 Nov 2009 12:14:29 -0800 (PST), jfred...@gmail.com wrote: Typef*ck: Brainf*ck in the type system. Johnny Morrice [23]showed us his implementation of everyone's favorite profane programming language... in the type system. Incidentally, I've always wondered about the politically correct way of referring to this programming language (and related implementation in the above-mentioned type system) in academic circles; if I were writing a paper for submission to an academic journal, should I place priority on accuracy or propriety? In general, for what kinds of publications should I prioritize one criterion over the other? In general, if a programming language-related term contains what is generally regarded as a profane word as a component, for what kinds of written material should I prioritize accuracy vs. propriety? -- Benjamin L. Russell -- Benjamin L. Russell / DekuDekuplex at Yahoo dot com http://dekudekuplex.wordpress.com/ Translator/Interpreter / Mobile: +011 81 80-3603-6725 Furuike ya, kawazu tobikomu mizu no oto. -- Matsuo Basho^ ___ 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] Typefuck: Brainfuck in the type system
Awesome, however, I don't know what the policy is for such -- interesting -- names on Hackage. Normally I believe the response to Should I put it on Hackage is a resounding, immediate Absolutely. In this case, perhaps a small name change to avoid any possibility of offense? /Joe On Nov 16, 2009, at 12:19 PM, Johnny Morrice wrote: Greetings list, I was um well, drinking beer and thought it would be amusing to write a brainfuck interpreter which runs within the GHC type checker so I did, using type families. I haven't decided whether or not to put it on hackage (it is rather silly after all) but I have a link to a cabalized package and instructions on how to work it in an entry on my blog, here: http://killersmurf.blogspot.com/2009/11/typefuck.html Enjoy the ridiculousness. Johnny ___ 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] Typefuck: Brainfuck in the type system
Well then, send it up to the great Hackage machine! If the f-bombs are allowed... I think my package names are about to get alot less SFW... On Nov 16, 2009, at 12:26 PM, Gwern Branwen wrote: On Mon, Nov 16, 2009 at 12:23 PM, Joe Fredette jfred...@gmail.com wrote: Awesome, however, I don't know what the policy is for such -- interesting -- names on Hackage. Normally I believe the response to Should I put it on Hackage is a resounding, immediate Absolutely. In this case, perhaps a small name change to avoid any possibility of offense? /Joe Too late: http://hackage.haskell.org/package/brainfuck http://hackage.haskell.org/package/loli -- gwern ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] The weirdest error I've ever seen...
Hiya Haskellers, So there I was, punching away at the keys, working on the Haskell Weekly News tools when the solution to one of my problems fell on me like a ton of lambdas. The solution and problem it solved are immaterial, but suffice to say it involved the combination of associated types and monad transformers, as well as some fancy deriving to end up with this code: # type Context = ReaderT Email type Match t = StateT t IO type ContextMatch t a = Context (Match t) a newtype FilterState t = Filter t a = Filter (ContextMatch t a) deriving (Functor, Monad, MonadReader Email, MonadState Bool, MonadIO) class FilterState t where data FState t deliver :: FState t - IO () # Again, the fine details are unimportant, but the punchline is `Filter` is a Monad which houses not only results, but also an internal state which will be used in the delivery of emails in some yet-to-be- determined way. Naturally, I want to use `deriving` to turn this puppy into a monad over it's second argument. In fact, the whole thing kind- checks alright, but presents me with this, the titular 'weirdest error I've ever seen...' # [1 of 3] Compiling Network.HackMail.Email.ParseEmail ( Network/ HackMail/Email/ParseEmail.hs, interpreted ) [2 of 3] Compiling Network.HackMail.Email.Email ( Network/HackMail/ Email/Email.hs, interpreted ) [3 of 3] Compiling Network.HackMail.Filter.Filter ( Network/HackMail/ Filter/Filter.hs, interpreted ) *** Exception: No match in record selector Var.tcTyVarDetails # Now, there are three tickets open on the GHC trac, found for me by the ever-helpful `copumpkin` on #haskell -- because I didn't think to look -- they are numbers 3621, 3422 and 2714. But none of them are sufficiently close to my case for them to make sense to me, nor are the solutions presented suitable for entry into my feeble noggin. (Thats just a purty way of saying I'm not smart enough to understand what any of it means...) So I beseech my fellow Haskellers[1], What the heck did I do to anger the Var.tcTyVarDetail gods? My guess (given what I can glean from the Trac entries) is that the `deriving ... MonadState ...` needs changing in some specific-yet- cryptic way, but I've only got my gut to go on... For the Record, and in the event it matters... [jfred...@erdos]$ ghc --version The Glorious Glasgow Haskell Compilation System, version 6.10.4 [jfred...@erdos]$ uname -a Linux Erdos 2.6.31-ARCH #1 SMP PREEMPT Fri Oct 23 11:12:58 CEST 2009 i686 Intel(R) Celeron(R) CPU 3.06GHz GenuineIntel GNU/Linux Thanks in advance for any help offered. /Joe [1] Bet you've never been beseeched before... ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] The weirdest error I've ever seen...
Okay, so -- I feel totally awesome -- I never found a GHC bug before... and a Haskell Celebrity responded to my post! *swoons* :) Serious question now, There's a fair amount of definitely irrelevant code (like the definition of the `Email` type, etc), should I post that in the report too (assuming it doesn't work in 6.12 or I can't get 6.12 working to try it)? Thanks, /Joe On Nov 12, 2009, at 4:07 AM, Simon Peyton-Jones wrote: | [1 of 3] Compiling Network.HackMail.Email.ParseEmail ( Network/ | HackMail/Email/ParseEmail.hs, interpreted ) | [2 of 3] Compiling Network.HackMail.Email.Email ( Network/HackMail/ | Email/Email.hs, interpreted ) | [3 of 3] Compiling Network.HackMail.Filter.Filter ( Network/ HackMail/ | Filter/Filter.hs, interpreted ) | *** Exception: No match in record selector Var.tcTyVarDetails This is a bug in GHC without a doubt. It's possible that it's fixed in 6.12 -- can you try the release candidate? If it is not fixed, or if it's too hard for you to try, can you submit a Trac bug report please? (Include your code, and instructions for how to reproduce. Thanks Simon ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] The weirdest error I've ever seen...
Actually, I just solved the problem... I think... In my original code, I had the newtype: newtype FilterState t = Filter t a = Filter (ContextMatch t a) deriving (Functor, Monad, MonadReader Email, MonadState Bool, MonadIO) I was trying to confirm that it actually was the `deriving ... MonadState Bool ...` part that was causing the problem, and then I realized, it's not `MonadState Bool` I want, it's `MonadState t`. Upon changing that, everything compiles fine and ghc hums along happily. Should I still submit a bug report for a bad error message? /Joe On Nov 12, 2009, at 12:58 PM, Joe Fredette wrote: Okay, so -- I feel totally awesome -- I never found a GHC bug before... and a Haskell Celebrity responded to my post! *swoons* :) Serious question now, There's a fair amount of definitely irrelevant code (like the definition of the `Email` type, etc), should I post that in the report too (assuming it doesn't work in 6.12 or I can't get 6.12 working to try it)? Thanks, /Joe On Nov 12, 2009, at 4:07 AM, Simon Peyton-Jones wrote: | [1 of 3] Compiling Network.HackMail.Email.ParseEmail ( Network/ | HackMail/Email/ParseEmail.hs, interpreted ) | [2 of 3] Compiling Network.HackMail.Email.Email ( Network/HackMail/ | Email/Email.hs, interpreted ) | [3 of 3] Compiling Network.HackMail.Filter.Filter ( Network/ HackMail/ | Filter/Filter.hs, interpreted ) | *** Exception: No match in record selector Var.tcTyVarDetails This is a bug in GHC without a doubt. It's possible that it's fixed in 6.12 -- can you try the release candidate? If it is not fixed, or if it's too hard for you to try, can you submit a Trac bug report please? (Include your code, and instructions for how to reproduce. Thanks Simon ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] What does the `forall` mean ?
Forall means the same thing as it means in math, it means for any type -- call it `b` -- then the type of the following it `Branch (PermParser tok st (b - a)` `tok`, `st` and `a` are all given by the declaration of the datatype itself. Hope that makes sense, /Joe On Nov 11, 2009, at 7:24 PM, zaxis wrote: import Text.ParserCombinators.Parsec data PermParser tok st a = Perm (Maybe a) [Branch tok st a] data Branch tok st a = forall b. Branch (PermParser tok st (b - a)) (GenParser tok st b) I have hoogled the `forall` but i cannot find any appropriate answer! thanks! - fac n = foldr (*) 1 [1..n] -- View this message in context: http://old.nabble.com/What-does-the-%60forall%60-mean---tp26311291p26311291.html Sent from the Haskell - Haskell-Cafe mailing list archive at Nabble.com. ___ 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] O'Haskell
That sounds vaguely ominous... Sir, we've achieved reactive in O'Haskell, we'll have ten minutes till the VB GUI detects his IP address! ... But in all seriousness, it is my understanding that O'Haskell has fallen into disuse. IIRC Timber is the spiritual successor, but I have no idea how accurate that information is. As for implementing reactive in such a language, I imagine it would be pretty easy, as FRP is a _functional_ (hence the name) construct. Objects ought only get in the way (assuming they introduce possibly conflicting syntax) /Joe On Nov 9, 2009, at 7:17 AM, shengwang wrote: Hi, Somebody has idea, how to achieve reactive in O'Haskell? Shawn Wang 使用新一代 Windows Live Messenger 轻松交流和共享! 立刻下载! ___ 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] classes question
(+) is a name that is already taken by the Num typeclass, you're trying to overload it with a different class. It's equivalent to doing: foo :: Int foo = 1 foo :: String foo = abc this would cause an (obvious) namespace collision. If you want to redefine (+), you'll have to import a qualified prelude, by using the NoImplicitPrelude pragma and `import qualified Prelude`. A better alternative is to use a different name, `+`, `++` are both taken (for normal addition and list concatenation, resp.). /Joe On Nov 9, 2009, at 1:44 PM, Paul Tokarev wrote: Hi. I am using Hugs 98 I have that piece of code: class PlusTimes a where plus :: a - a - a instance PlusTimes Int where plus x y = x + y when I run : plus 2 3 I get this error: ERROR - Unresolved overloading *** Type : (Num a, PlusTimes a) = a *** Expression : plus 2 3 What am I doing wrong? Thanks. -- View this message in context: http://old.nabble.com/classes-question-tp26271257p26271257.html Sent from the Haskell - Haskell-Cafe mailing list archive at Nabble.com. ___ 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] classes question
Oh, crap, I'm sorry, I completely misread your post... Disregard my previous message. /Joe On Nov 9, 2009, at 1:44 PM, Paul Tokarev wrote: Hi. I am using Hugs 98 I have that piece of code: class PlusTimes a where plus :: a - a - a instance PlusTimes Int where plus x y = x + y when I run : plus 2 3 I get this error: ERROR - Unresolved overloading *** Type : (Num a, PlusTimes a) = a *** Expression : plus 2 3 What am I doing wrong? Thanks. -- View this message in context: http://old.nabble.com/classes-question-tp26271257p26271257.html Sent from the Haskell - Haskell-Cafe mailing list archive at Nabble.com. ___ 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] Card games
You might peek at my library HCard (it's on Hackage), it uses associated datatypes to allow for a very general playing-card interface. It was only ever a toy to play w/ Assoc. types for me, but I imagine it could be a decent starting point for someone interested in turning it into a real EDSL. It's got a cribbage counter example program bundled with it. /Joe On Nov 7, 2009, at 5:54 AM, Felipe Lessa wrote: Hi! I would like to know if anybody has already thought of or tried to code an EDSL for card games. Ideally you should be able to write the rules the games and get for free: - Game generator: given an input deck, construct the initial state of the game. - Random game generator: besides just creating a random deck and using the item above, it should be nice to be able to randomly construct the game from the final positions. This should guarantee that all random games are solvable. - Hints generator: IOW list possible moves given a game state. - Playable game: probably the EDSL should include at least some information to be able to properly place the cards on the screen. - Game solver: this is somewhat harder to do efficiently, but an inneficient one should be doable. - Demo mode: related to the above, an auto-play distract-me mode. - Tutorial mode: show a screen for each of the rules written? - ...anything more? Just curious, this looks like a perfect job for an EDSL. Also, I guess anybody trying to do something like this should read PySol's code to have some ideas. -- Felipe. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: proposal: point free case expressions
Don't these things generally get added as LANGUAGE pragmas though? If it's off by default then peoples code should be okay. Also, I'd prefer something like `cases` as the keyword, rather than `case of`, mostly for aesthetics, but also so that, upon visual inspection, I wouldn't wonder where the pattern went and potentially try to 'fix the point-free case match. /Joe On Nov 5, 2009, at 1:09 PM, Edward Kmett wrote: On Thu, Nov 5, 2009 at 10:59 AM, Stefan Monnier monn...@iro.umontreal.ca wrote: We could really use a case statement in which we skip the scrutinee and make (case of {})' be syntactic sugar for `(\x - case x of {})'. So we could write: myFunc = anotherFunc $ case of Left err - print err Right msg - putStrLn msg A minor syntactical addition, a big win! Since this case really defines a function, it seems like it would make more sense to allow defining anonymous functions by pattern matching. I.e. instead of case of, I think it should use λ, \, fn, or ... The problem with all of those options is that they introduce a new keyword into the language and can potentially break existing code. Eugene's \{ } avoids that by using a different hole in the grammar, but at the expense of 'un-Haskelly' braces. That and I question how easy it would be to get to parse, because a common idiom seems to be to parse patterns as expressions before converting them to patterns to avoid certain other ambiguities in the grammar, so this requires a { } expression, which may introduce a lot more ambiguity and problems to the grammar than it would seem at first glance. -Edward Kmett ___ 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's the deal with Clean?
Given the Shootout results, the difference is a matter of a few seconds. If Clean Programmers need those few extra seconds, they're welcome to them. We're Lazy around here. :) /Joe On Nov 4, 2009, at 12:16 AM, Gregory Crosswhite wrote: So I take it you are saying that it really *cleans* Haskell's clock when it comes to speed? ;-) - Greg On Nov 3, 2009, at 9:04 PM, Richard O'Keefe wrote: On Nov 4, 2009, at 9:30 AM, Deniz Dogan wrote: So what's the deal with Clean? Why is it preferable to Haskell? Why is it not? (1) Speed. (2) If you are a Windows developer, the fact that Windows is the primary platform and others (even Mac OS, which is historically ironic) are second- (or in the case of Solaris) third-class citizens. (3) Did I mention speed? (4) It comes with its own IDE. I don't think it can do anything much that Haskell tools can't do, but if you don't like looking for things, it's a help. (5) Plus of course there's speed. (6) They're working on a Haskell front end, so you won't actually have to choose. (Anyone doing a Clean front end for Haskell?) (7) Haskell now has bang-patterns so you can specify (a bound on) intended strictness when you declare a function. But that's not in Haskell 98. (8) As a result of this, speed is a bit more declarative than adding $! in strange places. (9) There's a theorem prover for Clean, called Sparkle. Sadly, it's Windows-only, but we all know what most computers on the planet run, don't we? (It's probably Symbian, actually.) (10) And finally, of course, there's speed. Did I mention that? ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: Haskell Weekly News: Issue 137 - October 31, 2009
It's not my fault you emacs-y people chose the wrong editor... :) /Joe On Nov 1, 2009, at 11:42 PM, Benjamin L.Russell wrote: On Fri, 30 Oct 2009 21:38:25 -0700 (PDT), jfred...@gmail.com wrote: ... a new version of haskell-mode for the lesser of two editors ^^ [...] haskell-mode 2.5. Svein Ove Aas [14]announced a new version of haskell-mode for that other 'editor'... ^ ^ Hey, careful now No need to start another Emacs vs. the other 'editor' flamewar ... lest someone run M-x nethack and summon a Demogorgon against you ... er, make that M-x haskellhack, since a Haskell version needs to be created. ;-) -- Benjamin L. Russell -- Benjamin L. Russell / DekuDekuplex at Yahoo dot com http://dekudekuplex.wordpress.com/ Translator/Interpreter / Mobile: +011 81 80-3603-6725 Furuike ya, kawazu tobikomu mizu no oto. -- Matsuo Basho^ ___ 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] Is there in Haskell the eval function?
You may also want to look at Dyre. It does dynamic recompilation of source files. Depending on your application, hint may not be what you need. Eg, if you're trying to build something like lambdabot's interpreter, then Hint is probably on the right track, if you just want to use Haskell-as-configuration file (a la xmonad), then Dyre is probably a better (or at least easier, Hint can be evil...) choice /Joe On Oct 22, 2009, at 7:07 AM, Waldemar Biernacki wrote: Thank you Martijn! You mean like in interpreted languages? Naturally! My mistake. I'd like to write an application which has to be compiled to exec file. It is neccessary to performe some additional procedures which are unknown at the moment of the compilition. You could use the GHC libraries, or Hint which is built on top of GHC. I've used it before and it works pretty nicely. http://hackage.haskell.org/package/hint At first sight it seems be what I'm looking for. I'll try. Thank you for the help! wb. ___ 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] is proof by testing possible?
In general? No- If we had an implementation of the `sin` function, how can testing a finite number of points along it determine if that implementation is correct for every point? For specific functions (particularly those with finite domain), it is possible. If you know the 'correct' output of every input, then testing each input and ensuring correct output will work. Consider the definition of the `not` function on booleans. The domain only has two elements (True and False) and the range has only two outputs (True and False), so if I test every input, and insure it maps appropriately to the specified output, we're all set. Basically, if you can write your function as a big case statement that covers the whole domain, and that domain is finite, then the function can be tested to prove it's correctness. Now, I should think the Muad'Dib would know that, perhaps you should go back to studying with the Mentats. :) /Joe On Oct 12, 2009, at 1:42 PM, muad wrote: Is it possible to prove correctness of a functions by testing it? I think the tests would have to be constructed by inspecting the shape of the function definition. -- View this message in context: http://www.nabble.com/is-proof-by-testing-possible--tp25860155p25860155.html Sent from the Haskell - Haskell-Cafe mailing list archive at Nabble.com. ___ 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] is proof by testing possible?
Really? How? That sounds very interesting, I've got a fair knowledge of basic topology, I'd love to see an application to programming... On Oct 12, 2009, at 1:55 PM, Eugene Kirpichov wrote: It is possible for functions with compact domain, not just finite. 2009/10/12 Joe Fredette jfred...@gmail.com: In general? No- If we had an implementation of the `sin` function, how can testing a finite number of points along it determine if that implementation is correct for every point? For specific functions (particularly those with finite domain), it is possible. If you know the 'correct' output of every input, then testing each input and ensuring correct output will work. Consider the definition of the `not` function on booleans. The domain only has two elements (True and False) and the range has only two outputs (True and False), so if I test every input, and insure it maps appropriately to the specified output, we're all set. Basically, if you can write your function as a big case statement that covers the whole domain, and that domain is finite, then the function can be tested to prove it's correctness. Now, I should think the Muad'Dib would know that, perhaps you should go back to studying with the Mentats. :) /Joe On Oct 12, 2009, at 1:42 PM, muad wrote: Is it possible to prove correctness of a functions by testing it? I think the tests would have to be constructed by inspecting the shape of the function definition. -- View this message in context: http://www.nabble.com/is-proof-by-testing-possible--tp25860155p25860155.html Sent from the Haskell - Haskell-Cafe mailing list archive at Nabble.com. ___ 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 -- Eugene Kirpichov Web IR developer, market.yandex.ru ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] is proof by testing possible?
Oh- thanks for the example, I suppose you can disregard my other message. I suppose this is a bit like short-circuiting. No? On Oct 12, 2009, at 1:56 PM, Eugene Kirpichov wrote: For example, it is possible to prove correctness of a function negatedHead :: [Bool] - Bool by testing it on True:undefined and False:undefined. 2009/10/12 Eugene Kirpichov ekirpic...@gmail.com: It is possible for functions with compact domain, not just finite. 2009/10/12 Joe Fredette jfred...@gmail.com: In general? No- If we had an implementation of the `sin` function, how can testing a finite number of points along it determine if that implementation is correct for every point? For specific functions (particularly those with finite domain), it is possible. If you know the 'correct' output of every input, then testing each input and ensuring correct output will work. Consider the definition of the `not` function on booleans. The domain only has two elements (True and False) and the range has only two outputs (True and False), so if I test every input, and insure it maps appropriately to the specified output, we're all set. Basically, if you can write your function as a big case statement that covers the whole domain, and that domain is finite, then the function can be tested to prove it's correctness. Now, I should think the Muad'Dib would know that, perhaps you should go back to studying with the Mentats. :) /Joe On Oct 12, 2009, at 1:42 PM, muad wrote: Is it possible to prove correctness of a functions by testing it? I think the tests would have to be constructed by inspecting the shape of the function definition. -- View this message in context: http://www.nabble.com/is-proof-by-testing-possible--tp25860155p25860155.html Sent from the Haskell - Haskell-Cafe mailing list archive at Nabble.com. ___ 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 -- Eugene Kirpichov Web IR developer, market.yandex.ru -- Eugene Kirpichov Web IR developer, market.yandex.ru ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] is proof by testing possible?
I completely forgot about free theorems! Do you have some links to resources -- I tried learning about them a while ago, but couldn't get a grasp on them... Thanks. /Joe On Oct 12, 2009, at 2:00 PM, Dan Piponi wrote: On Mon, Oct 12, 2009 at 10:42 AM, muad muad.dib.sp...@gmail.com wrote: Is it possible to prove correctness of a functions by testing it? I think the tests would have to be constructed by inspecting the shape of the function definition. not True==False not False==True Done. Tested :-) Less trivially, consider a function of signature swap :: (a,b) - (b,a) We don't need to test it at all, it can only do one thing, swap its arguments. (Assuming it terminates.) But consider: swap :: (a,a) - (a,a) If I find that swap (1,2) == (2,1) then I know that swap (x,y)==(y,x) for all types a and b. We only need one test. The reason is that we have a free theorem that says that for all functions, f, of type (a,a) - (a,a) this holds: f (g a,g b) == let (x,y) = f (a,b) in (g x',g y') For any x and y define g 1 = x g 2 = y Then f(x,y) == f (g 1,g 2) == let (x',y') == f(1,2) in (g x',g y') == let (x',y') == (2,1) in (g x',g y') == (g 2,g 1) == (y,x) In other words, free theorems can turn an infinite amount of testing into a finite test. (Assuming termination.) -- Dan ___ 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] is proof by testing possible?
I mean that, like in the definition of `||` True || _ = True False || x = x If you generalize this to `or`-ing a list of inputs, eg: foldr (||) False list_of_bools you can 'short-circuit' the test as soon as you find a 'True' value. This is actually not the greatest example, since you can't actually test it in finite number of tests, but you can test half the function by testing a that lists like [True:undefined] or [False, False, False, ... , True , undefined] return True. It's short-circuiting in the sense that it (like the `||` function) doesn't need to see (necessarily) all of it's arguments to return a correct result. /Joe On Oct 12, 2009, at 2:11 PM, Eugene Kirpichov wrote: What do you mean under short-circuiting here, and what is the connection? The property that allows to deduce global correctness from correctness on under-defined inputs is just continuity in the topological sense. 2009/10/12 Joe Fredette jfred...@gmail.com: Oh- thanks for the example, I suppose you can disregard my other message. I suppose this is a bit like short-circuiting. No? On Oct 12, 2009, at 1:56 PM, Eugene Kirpichov wrote: For example, it is possible to prove correctness of a function negatedHead :: [Bool] - Bool by testing it on True:undefined and False:undefined. 2009/10/12 Eugene Kirpichov ekirpic...@gmail.com: It is possible for functions with compact domain, not just finite. 2009/10/12 Joe Fredette jfred...@gmail.com: In general? No- If we had an implementation of the `sin` function, how can testing a finite number of points along it determine if that implementation is correct for every point? For specific functions (particularly those with finite domain), it is possible. If you know the 'correct' output of every input, then testing each input and ensuring correct output will work. Consider the definition of the `not` function on booleans. The domain only has two elements (True and False) and the range has only two outputs (True and False), so if I test every input, and insure it maps appropriately to the specified output, we're all set. Basically, if you can write your function as a big case statement that covers the whole domain, and that domain is finite, then the function can be tested to prove it's correctness. Now, I should think the Muad'Dib would know that, perhaps you should go back to studying with the Mentats. :) /Joe On Oct 12, 2009, at 1:42 PM, muad wrote: Is it possible to prove correctness of a functions by testing it? I think the tests would have to be constructed by inspecting the shape of the function definition. -- View this message in context: http://www.nabble.com/is-proof-by-testing-possible--tp25860155p25860155.html Sent from the Haskell - Haskell-Cafe mailing list archive at Nabble.com. ___ 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 -- Eugene Kirpichov Web IR developer, market.yandex.ru -- Eugene Kirpichov Web IR developer, market.yandex.ru -- Eugene Kirpichov Web IR developer, market.yandex.ru ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: is proof by testing possible?
That has got to be the single awesomest thing I have ever seen ever... The first time I tried to read through the Seemingly Impossible Functional Programs post, I understood none of it. Now it seems obviously. I Love Math... Thanks for the explanation! /Joe On Oct 12, 2009, at 3:22 PM, Ben Franksen wrote: Joe Fredette wrote: Really? How? That sounds very interesting, I've got a fair knowledge of basic topology, I'd love to see an application to programming... Compactness is one of the most powerful concepts in mathematics, because on the one hand it makes it possible to reduce many infinite problems to finite ones (inherent in its definition: for every open cover there is a finite subcover), on the other hand it is often easy to prove compactness due to Tychonoff's theorem (any product of compact spaces is compact). The connection to computing science is very nicely explained in http://math.andrej.com/2007/09/28/seemingly-impossible-functional-programs/ I found this paragraph particularly enlightening: modulus :: (Cantor - Integer) - Natural modulus f = least(\n - forevery(\a - forevery(\b - eq n a b -- (f a == f b This [...] finds the modulus of uniform continuity, defined as the least natural number `n` such that `forall alpha,beta. alpha =_n beta implies f(alpha)=f(beta),` where `alpha =_n beta iff forall i n. alpha_i = beta_i.` What is going on here is that computable functionals are continuous, which amounts to saying that finite amounts of the output depend only on finite amounts of the input. But the Cantor space is compact, and in analysis and topology there is a theorem that says that continuous functions defined on a compact space are uniformly continuous. In this context, this amounts to the existence of a single `n` such that for all inputs it is enough to look at depth `n` to get the answer (which in this case is always finite, because it is an integer). Cheers ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: Re: is proof by testing possible?
I read about differentiating and differences for types, that was awesome, but when I read the seemingly-impossible post the first time, I didn't have enough background in topology to understand what was going on. Differentiating types is usually how I introduce the power of haskell's type system to the other students in my Math department. I actually showed my algebra professor how non-recursive datatypes in n-variables are just multinomials over a commutative (up to isomorphism) ring and how you can use that to reason about equivalences between types based on the polynomial they're isomorphic too. My Algebra Professor, who does not program and knows very little about it, sat back in his chair and say, So that's what all the fuss is about? Programming is easy! Really, all this goes to show that a rich, algebraic type system like Haskell's is invaluable because it harnesses the power of mathematics that we've been working at for years. Free Theorems indeed! On Oct 12, 2009, at 4:45 PM, Ben Franksen wrote: Joe Fredette wrote: That has got to be the single awesomest thing I have ever seen ever... I was dumbfounded, too, when I first read about this. BTW, and completely off-topic: if you like this, you might have fun too with Conor McBride's discovery that data types can be differentiated, and the result is even useful: it corresponds to what is known (to some) as a Zipper: http://www.cs.nott.ac.uk/~ctm/diff.pdf Moreover, we can also give a sensible and useful interpretation to finite difference quotients of types: http://blog.sigfpe.com/2009/09/finite-differences-of-types.html which McBride calls dissections and discusses in some depth here: http://strictlypositive.org/CJ.pdf What is most astonishing to me is that these constructions work even though there is neither subtraction nor division defined on data types, only addition and multiplication (there are neutral elements for both, but not necessarily inverses). Cheers Ben ___ 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] is proof by testing possible?
Sadly not enough, I understand the basics, but the whole proof = this diagram commutes thing still seems like voodoo to me. There is a section coming up in my Topology ISP that will be on CT. So I hope that I will be able to gain some purchase on the subject, at least enough to build up a working understanding on my own. I have a practical understanding of Functors and Natural Transformations, so working a bit with these free theorem things is kind of fun. Actually, another germane-if-random question, why isn't there a natural transformation class? Something like: class Functor f, Functor g = NatTrans g f a where trans :: f a - g a So your flatten function becomes a `trans` a la instance NatTrans Tree [] a where trans = flatten In fact, I'm going to attempt to do this now... Maybe I'll figure out why before you reply. :) /Joe On Oct 12, 2009, at 8:41 PM, Brent Yorgey wrote: Do you know any category theory? What helped me finally grok free theorems is that in the simplest cases, the free theorem for a polymorphic function is just a naturality condition. For example, the free theorem for flatten :: Tree a - [a] is precisely the statement that flatten is a natural transformation from the Tree functor to the list functor: fmap_[] g . flatten == flatten . fmap_Tree g It gets more complicated than this, of course, but that's the basic idea. -Brent On Mon, Oct 12, 2009 at 02:03:11PM -0400, Joe Fredette wrote: I completely forgot about free theorems! Do you have some links to resources -- I tried learning about them a while ago, but couldn't get a grasp on them... Thanks. /Joe On Oct 12, 2009, at 2:00 PM, Dan Piponi wrote: On Mon, Oct 12, 2009 at 10:42 AM, muad muad.dib.sp...@gmail.com wrote: Is it possible to prove correctness of a functions by testing it? I think the tests would have to be constructed by inspecting the shape of the function definition. not True==False not False==True Done. Tested :-) Less trivially, consider a function of signature swap :: (a,b) - (b,a) We don't need to test it at all, it can only do one thing, swap its arguments. (Assuming it terminates.) But consider: swap :: (a,a) - (a,a) If I find that swap (1,2) == (2,1) then I know that swap (x,y)==(y,x) for all types a and b. We only need one test. The reason is that we have a free theorem that says that for all functions, f, of type (a,a) - (a,a) this holds: f (g a,g b) == let (x,y) = f (a,b) in (g x',g y') For any x and y define g 1 = x g 2 = y Then f(x,y) == f (g 1,g 2) == let (x',y') == f(1,2) in (g x',g y') == let (x',y') == (2,1) in (g x',g y') == (g 2,g 1) == (y,x) In other words, free theorems can turn an infinite amount of testing into a finite test. (Assuming termination.) -- Dan ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe ___ Haskell-Cafe 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] is proof by testing possible?
I fiddled with my previous idea -- the NatTrans class -- a bit, the results are here[1], I don't know enough really to know if I got the NT law right, or even if the class defn is right. Any thoughts? Am I doing this right/wrong/inbetween? Is there any use for a class like this? I listed a couple ideas of use-cases in the paste, but I have no idea of the applicability of either of them. /Joe http://hpaste.org/fastcgi/hpaste.fcgi/view?id=10679#a10679 On Oct 12, 2009, at 8:41 PM, Brent Yorgey wrote: Do you know any category theory? What helped me finally grok free theorems is that in the simplest cases, the free theorem for a polymorphic function is just a naturality condition. For example, the free theorem for flatten :: Tree a - [a] is precisely the statement that flatten is a natural transformation from the Tree functor to the list functor: fmap_[] g . flatten == flatten . fmap_Tree g It gets more complicated than this, of course, but that's the basic idea. -Brent On Mon, Oct 12, 2009 at 02:03:11PM -0400, Joe Fredette wrote: I completely forgot about free theorems! Do you have some links to resources -- I tried learning about them a while ago, but couldn't get a grasp on them... Thanks. /Joe On Oct 12, 2009, at 2:00 PM, Dan Piponi wrote: On Mon, Oct 12, 2009 at 10:42 AM, muad muad.dib.sp...@gmail.com wrote: Is it possible to prove correctness of a functions by testing it? I think the tests would have to be constructed by inspecting the shape of the function definition. not True==False not False==True Done. Tested :-) Less trivially, consider a function of signature swap :: (a,b) - (b,a) We don't need to test it at all, it can only do one thing, swap its arguments. (Assuming it terminates.) But consider: swap :: (a,a) - (a,a) If I find that swap (1,2) == (2,1) then I know that swap (x,y)==(y,x) for all types a and b. We only need one test. The reason is that we have a free theorem that says that for all functions, f, of type (a,a) - (a,a) this holds: f (g a,g b) == let (x,y) = f (a,b) in (g x',g y') For any x and y define g 1 = x g 2 = y Then f(x,y) == f (g 1,g 2) == let (x',y') == f(1,2) in (g x',g y') == let (x',y') == (2,1) in (g x',g y') == (g 2,g 1) == (y,x) In other words, free theorems can turn an infinite amount of testing into a finite test. (Assuming termination.) -- Dan ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe ___ Haskell-Cafe 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] Haskell Weekly News: Issue 134 - October 10, 2009
I'm happy to tack it on to the sendout, but as others have mentioned, subscription to haskell-general (to use GManes nomenclature) is probably the better option. -beginners, iirc, is principally for questions, not community content. Is this the consensus over there? I'll do whatever you folks decide on... /Joe On Oct 11, 2009, at 8:10 AM, Patrick LeBoutillier wrote: Hi, Could/should the Haskell Weekly News be posted to the beginners list as well? I normally don't follow haskell-cafe (too much traffic and generally above my level I must admit...), but I like to follow what's going on in the Haskell community. Patrick On Sat, Oct 10, 2009 at 3:47 AM, jfred...@gmail.com wrote: --- Haskell Weekly News http://sequence.complete.org/hwn/20091010 Issue 134 - October 10, 2009 --- Welcome to issue 134 of HWN, a newsletter covering developments in the [1]Haskell community. What with Don Stewart's [2]call to [3]arms to lead Haskell to conquest over (E)DSL-land, I've once again tried to highlight discussion of EDSL's this week. Fortunately, it was actually more difficult choosing what _not_ to include this week, since there was so much discussion about DSLs and Syntax extensions (a related notion, in my opinion). Also, this week Bryan O'Sullivan put his Criterion Library to good use on the `text` package, leading to [4]code which is more than ten times faster than before! With all this fantastic news, I won't hold you up any longer, Haskellers, the Haskell Weekly News! Announcements CfPart: FMICS 2009, 2-3 November 2009, Final Call. FMICS 2009 workshop chair [5]announced the final call for particpaction for FMICS 2009 ICFP videos now available. Wouter Swierstra [6]announced the availablity of videos from the International Conference on Functional Programming (ICFP) GPipe-1.0.0: A functional graphics API for programmable GPUs. Tobias Bexelius [7]announced the first release of GPie, a functional graphics API for programmable GPUs. text 0.5, a major revision of the Unicode text library. Bryan O'Sullivan [8]announced a new, major version of the text package. New API features, and huge improvments in speed, as Bryan says, 'Get it while it's fresh on Hackage, folks!' vty-ui 0.2. Jonathan Daugherty [9]announced a new version of the vty-ui package, with fewer bugs, more widgets, and cleaner code due to new more powerful abstractions. htzaar-0.0.1. Tom Hawkins [10]announced HTZAAR, a Haskell implementation of TZAAR Graphalyze-0.8.0.0 and SourceGraph-0.5.5.0. Ivan Lazar Miljenovic [11]announced To keep this editor happy, Ivan released two new packaged in one announcement. This time, he's added Legend support to Graphalyze, but also many new changes to SourceGraph, including a legend so you can see what all the symbols mean, Better color support, and much more. TxtSushi 0.4.0. Keith Sheppard [12]announced a new version of TxtSushi, a set of command line utilities for processing CSV and TSV files. Discussion Applicative do? Philippa Cowderoy [13]asked about a `do` like syntax for Applicative functors. How to add use custom preprocessor in cabal. Bernd Brassel [14]asked how to add a custom preprocessor to the build chain of a cabal file. On DSLs - one last time. Gunther Schmidt [15]summarized his impressions on al the recent discussion of DSLs What is a DSL? Oleg [16]offered some insight into different [17]properties that can be part of a single tagless framework. He also pointed to some slides and other materials such as a website [18]here and slides [19]here about DSL implementations and definitions. What is a DSL? Gunther Schmidt [20]posed the question, 'What is a DSL', and with some further questions added by yours truly, a lively discussion about the definition of a DSL ensued. Finally tagless - stuck with implementation of 'lam'. Gunther Schmidt [21]asked another question about Finally Tagless DSLs and resolving an issue with the implementation of 'lam' Blog noise [22]Haskell news from the [23]blogosphere. Blog posts from people new to the Haskell community are marked with , be sure to welcome them! * Darcs: [24]darcs weekly news #43. * JP Moresmau: [25]What client for an Haskell Multi Player Game?. * Mikael Vejdemo Johansson (Syzygy-): [26][MATH198] Third lecture is up. * Bryan O'Sullivan: [27]Announcing a major revision of the Haskell text library. * Eric Kow (kowey): [28]darcs hashed-storage work merged (woo!). * David Amos: [29]Symmetries of PG(n,Fq). * The GHC Team: [30]Parallelism /= Concurrency. * Nefigah: [31]Fake World Haskell. Nefigah, a recent addition to the community, has been working through RWH, and is
Re: [Haskell-cafe] Re: Haskell Weekly News
Mostly it's been issues with sendmail, I think I have them fixed for this week. (I think...) Thanks for the input! /Joe On Oct 9, 2009, at 4:46 AM, Benjamin L.Russell wrote: Thank you for including my quote (by dekudekuplex), and great work so far! Just a couple of minor comments: 1) It might be useful for referencing by subject if you could include the issue number and date in the subject line (e.g., Haskell Weekly News: Issue 131 - September 25, 2009) instead of only Haskell Weekly News. 2) Instead of posting separately to the Haskell and Haskell-Cafe mailing lists, it might be better to cross-post, since that way, readers using newsreaders can have the cross-posted article automatically marked read in the mailing list where it has not been read. Other than that, hope that you get over your sinus infection, and keep up the good work! Benjamin L. Russell On Sat, 03 Oct 2009 09:46:25 -0700 (PDT), Joe Fredette jfred...@gmail.com wrote: --- Haskell Weekly News http://sequence.complete.org/hwn/20091003 Issue 134 - October 03, 2009 --- Welcome to issue 134 of HWN, a newsletter covering developments in the [1]Haskell community. I have a nasty sinus infection this week, so we're somewhat light on content. Lots of good discussion about DSL related stuff this week. Bryan O'Sullivan also release 'Criterion' this week, a new benchmarking library that Don Stewart described (on reddit) as 'awesome and game changing.' A new TMR editor -- someone familiar -- was announced. Also, there was some talk about homework policies on the mailinglists and in the irc channels. There is a [2]page on the Haskell wiki about this, but to sum it up in a maxim, remember, 'Help, don't do'. Until next week, the Haskell Weekly News! Announcements New TMR editor. Wouter Swierstra [3]announced that he would be stepping down from the editorship of 'The Monad Reader', with former HWN editor Brent Yorgey taking his place. Much thanks for Wouter's hard work and good luck to Brent on his new editor job! SourceGraph 0.5.{0,1,2}.0. Ivan Lazar Miljenovic [4]announced three new releases of the SourceGraph packages, this links to the latest release. json-b-0.0.4. Jason Dusek [5]announced a new version of the json-b package, which fixes defective handling of empty objects and arrays. rss2irc 0.4 released. Simon Michael [6]announced a new release of rss2irc, with many new improvements and features. vty-ui 0.1. Jonathan Daugherty [7]announced vty-ui, which is an extensible library of user interface widgets for composing and laying out Vty user interfaces. atom-0.1.1. Tom Hawkins [8]announced Atom, a Haskell DSL for designing hard real-time embedded applications. Graphalyze-0.7.0.0. Ivan Lazar Miljenovic [9]announced (in an apparent effort to take over hackage by submitting dozens of quality packages at absurdly high speed), Graphalyze, a library for using graph- theoretic techniques to analyse the relationships inherent within discrete data. Criterion. Bryan O'Sullivan [10]announced (without tacking on an 'ANN' tag, I might add, I almost missed it!) Criterion, a benchmarking library he describes [11]here. ListTree 0.1. yair...@gmail.com [12]announced ListTree, a package for combinatorial search and pruning of trees. usb-0.1. Bas van Dijk [13]announced a library for interacting with usb modules from userspace. (Deadline extended to October 5th) APLAS 2009 Call for Posters. Kiminori Matsuzaki [14]announced a deadline extension to the call for posters for the APLAS conference. graphviz-2999.6.0.0. Ivan Lazar Miljenovic [15]announced a new version of the graphviz library, which features various new features and small changes. Discussion Testing polymorphic properties with QuickCheck. Jean-Philippe Bernardy [16]gave an excellent overview about how to use QuickCheck to test polymorphic properties. Designing a DSL? Gunther Schmidt [17]asked about different methods employed for designing a DSL. DSL and GUI Toolkits. Gunther Schmidt [18]also asked about different DSLs for working with GUIs error on --++ bla bla bla. Hong Yang [19]asked about why '--++' wasn't being parsed in the way he thought it was. Haskell for Physicists. edgar [20]requested name suggestions for the talk he is giving about Physics and Haskell. Blog noise [21]Haskell news from the [22]blogosphere. Blog posts from people new to the Haskell community are marked with , be sure to welcome them! * Sean Leather: [23]'Extensibility and type safety in formatting: the design of xformat' at the Dutch HUG. * Martijn van Steenbergen: [24]let 5 = 6. * Lee Pike: [25]Writer's unblock. * Manuel M T Chakravarty: [26]NVIDIAs next generation GPU architecture has a lot for HPC to love
Re: [Haskell-cafe] Applicative do?
The only issue I would have with such a notation is not being able to visually tell the difference between a monadic function (say, without a explicit type sig, which is how I write parsers), and an applicative one. I'd prefer something like foo = app blah blah If only for some visual distinction, I think it also resolves the do knowing about types issue. Plus, this is a good case for some kind of custom-do syntax facility. So we could make do syntax for everything. :) /Joe On Oct 9, 2009, at 1:11 PM, Robert Atkey wrote: On Fri, 2009-10-09 at 18:06 +0100, Philippa Cowderoy wrote: This leads us to the bikeshed topic: what's the concrete syntax? I implemented a simple Camlp4 syntax extension for Ocaml to do this. I chose the syntax: applicatively let x = foo let y = bar in pure stuff I quite like the word applicatively. Your overloading suggestion sounds to me like it would require the desugaring process to know something about types, but I'm not sure. Bob -- The University of Edinburgh is a charitable body, registered in Scotland, with registration number SC005336. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Fast times as Inferable-but-not-Checkable High -- Link to Source
Sorry, I forgot to actually include the link to the source: http://lowlymath.net/Iso.hs /Joe ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] What *is* a DSL?
Let me add to this, as I've used the term DSL without (*gasp*) fully understanding it before. In addition to What is a DSL, I'd like to ask: How is a DSL different from an API? -- in the sense that an API is a set of, say, combinators to filter email + a monad in which to combine them. Or even the API in the more traditional sense of the set of exposed operations on a given type. Is an API a kind of DSL? A kind of Embedded DSL? Also, What is the difference between an EDSL and a DSL? -- I've got a vague intuition of the difference, but am unsure how to particularly delineate them. Also, any good introductory papers/books/other resources on DSLs and how to design, build and use them would be _lovely_. /Joe On Oct 7, 2009, at 11:10 AM, Günther Schmidt wrote: Hi all, for people that have followed my posts on the DSL subject this question probably will seem strange, especially asking it now. I have read quite a lot lately on the subject, most of it written by the great old ones, (come on guys you know whom I mean :)). What I could gather from their papers was, that a DSL is basically something entirely abstract as such, ie. it allows you build and combine expressions in a language which is specific for your problem domain. Irregardless of further details on how to do that, and there are quite a few, the crux as such is that they are abstract of meaning. The meaning depends how you *evaluate* the expression, which can be in more than merely one way, which is where, as far as I understand it, the true power lies. So, you might wonder, since I figured it out this far, why ask what a DSL is? Because out there I see quite a lot of stuff that is labeled as DSL, I mean for example packages on hackage, quite useuful ones too, where I don't see the split of assembling an expression tree from evaluating it, to me that seems more like combinator libraries. Thus: What is a DSL? Günther ___ 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* a DSL?
So, if I understand this: Parsec is a DSL, I'm going to venture it's a Deep embedding -- I don't understand the internals, but if I were to build something like Parsec, I would probably build up a Parser datastructure and then apply optimizations to it, then run it with another function. Am I on the right track here? /Joe On Oct 7, 2009, at 11:24 AM, Emil Axelsson wrote: Hi, A DSL is just a domain-specific language. It doesn't imply any specific implementation technique. An *embedded* DSL is a library implemented in a more general language, which has been designed to give the feeling of a stand- alone language. Still nothing about implementation. A *shallow embedding* of a DSL is when the evaluation is done immediately by the functions and combinators of the DSL. I don't think it's possible to draw a line between a combinator library and a shallowly embedded DSL. A *deep embedding* is when interpretation is done on an intermediate data structure. / Emil Günther Schmidt skrev: Hi all, for people that have followed my posts on the DSL subject this question probably will seem strange, especially asking it now. I have read quite a lot lately on the subject, most of it written by the great old ones, (come on guys you know whom I mean :)). What I could gather from their papers was, that a DSL is basically something entirely abstract as such, ie. it allows you build and combine expressions in a language which is specific for your problem domain. Irregardless of further details on how to do that, and there are quite a few, the crux as such is that they are abstract of meaning. The meaning depends how you *evaluate* the expression, which can be in more than merely one way, which is where, as far as I understand it, the true power lies. So, you might wonder, since I figured it out this far, why ask what a DSL is? Because out there I see quite a lot of stuff that is labeled as DSL, I mean for example packages on hackage, quite useuful ones too, where I don't see the split of assembling an expression tree from evaluating it, to me that seems more like combinator libraries. Thus: What is a DSL? Günther ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: Num instances for 2-dimensional types
A ring is an abelian group in addition, with the added operation (*) being distributive over addition, and 0 annihilating under multiplication. (*) is also associative. Rings don't necessarily need _multiplicative_ id, only _additive_ id. Sometimes Rings w/o ID is called a Rng (a bit of a pun). /Joe On Oct 7, 2009, at 4:41 PM, David Menendez wrote: On Wed, Oct 7, 2009 at 12:08 PM, Ben Franksen ben.frank...@online.de wrote: More generally, any ring with multiplicative unit (let's call it 'one') will do. Isn't that every ring? As I understand it, the multiplication in a ring is required to form a monoid. -- Dave Menendez d...@zednenem.com http://www.eyrie.org/~zednenem/ ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: Num instances for 2-dimensional types
I was just quoting from Hungerford's Undergraduate text, but yes, the default ring is in {Rng, Ring}, I haven't heard semirings used in the sense of a Rng. I generally find semirings defined as a ring structure without additive inverse and with 0-annihilation (which one has to assume in the case of SRs, I included it in my previous definition because I wasn't sure if I could prove it via the axioms, I think it's possible, but I don't recall the proof). Wikipedia seems to agree with your definition, though it does have a note which says some authors use the definition of Abelian Group + Semigroup (my definition) as opposed to Abelian Group + Monoid (your defn). Relevant: http://en.wikipedia.org/wiki/Semiring http://en.wikipedia.org/wiki/Ring_(algebra) http://en.wikipedia.org/wiki/Ring_(algebra)#Notes_on_the_definition /Joe On Oct 7, 2009, at 5:41 PM, Daniel Fischer wrote: Am Mittwoch 07 Oktober 2009 22:44:19 schrieb Joe Fredette: A ring is an abelian group in addition, with the added operation (*) being distributive over addition, and 0 annihilating under multiplication. (*) is also associative. Rings don't necessarily need _multiplicative_ id, only _additive_ id. Sometimes Rings w/o ID is called a Rng (a bit of a pun). /Joe In my experience, the definition of a ring more commonly includes the multiplicative identity and abelian groups with an associative multiplication which distributes over addition are called semi-rings. There is no universally employed definition (like for natural numbers, is 0 included or not; fields, is the commutativity of multiplication part of the definition or not; compactness, does it include Hausdorff or not; ...). ___ 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] Creating an alias for a function
Well, you can drop the arguments entirely, and let the type be inferred to get car = head which is pretty nice. You could use an INLINE hint to make the compiler replace it before compilation, though I don't think it would change performance much... /Joe On Oct 6, 2009, at 10:01 PM, michael rice wrote: How do I create an alias for a function, like giving CAR the same functionality as HEAD. I know I can do it by creating a definition (see below), but is there a better way, like Scheme's (define head car) car :: [a] - a car x = head x The reason for doing this is to more closely mirror legacy code. Michael ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Fast times at Inferable-but-not-Checkable High.
So, I've been fiddling with an utterly random idea. What if I had a class: class Hom a b where data Rep a b hm :: Rep a b - b im :: a - Rep a b That is, all types that have some conversion between them (an isomorphism originally, then I thought homomorphism, now I'm not sure what the hell I'm talking about, so I've just stuck with Hom...) which preserves some sense of structure and content, for instance data CouldBe a = Only a | Nada is _obviously_ the same type as `Maybe`. However, it can't be used transparently where `Maybe` can be used. That is, shouldn't I be able to define a 1-1, onto function `phi :: CouldBe a - Maybe a` and as such another `pho :: Maybe a - CouldBe a` such that phi . pho = pho . phi = phum ... errr. `id`? Hom a b represents one end of that (specifically `hm . im = phi`, and `hm . im` for the instance `Hom b a` would `pho`), then I could, instead of writing a type which expects maybe, simply expects anything _equivalent_ to a maybe, eg safeHead :: Hom (Maybe a) b = [c] - Rep a (Maybe c) safeHead [] = im Nothing safeHead (x:_) = im (Just x) Though- I think this is a little bit off in terms of how it should work, perhaps this is my problem, but the idea is that instead of returning a Maybe, it returns something which can be converted _from_ a maybe. That is, a generic type like: data X1 a = X a | Y which is the form of any maybe-like type. In one sense, I'm almost trying to be polymorphic over the constructors of a given type, kindof, sortof, if you squint your eyes just right and try not to think too much. My problem comes when I try to do this: hom = hm . im eq x y = hom x == hom y Which, I reason, ought to satisfy the type: eq :: (Hom a b, Eq b) = a - a - Bool this assumes that hom defines a equality-preserving conversion. However, the type it infers is: eq :: (Hom a b, Hom a1 b, Eq b) = a - a1 - Bool Now, this makes sense, all my signature is is a special case of this type. Interesting consequence, this eq could compare a `Maybe a` and `CouldBe a` in a sensical way. Which is a nice benefit. However, here's where it gets weird, If I try to _provide_ this signature (the second, more general one, or the first, specific one, it doesn't matter), GHC gives me the following error: Iso.hs:29:10: Could not deduce (Hom a b) from the context (Hom a b1, Eq b1) arising from a use of `hom' at Iso.hs:29:10-14 Possible fix: add (Hom a b) to the context of the type signature for `eq' In the first argument of `(==)', namely `(hom x)' In the expression: (hom x) == (hom y) In the definition of `eq': eq x y = (hom x) == (hom y) Failed, modules loaded: none. for the latter and a similar one (but for each of the `Hom a b`, `Hom a1 b` cases. Punchline is this, I'm trying to write a generic equality that works for any two types with the same constructor-structure, when I try to write said function, GHC can infer but not Check (it seems, I'm not sure if that's the correct lingo) the type... My question is twofold. 1. Is this whole idea even possible? I mean- is there some limitation I'm going to run into, I have run into problems when trying to do: instance (Hom a b, Eq b) = Eq a where blah wrt UndecideableInstances. But it seems so _obvious_ what that means, I don't think I fully understand what's going on -- that is, whether I'm misunderstanding how class contexts work here, and why this (seemingly obvious) signature is undecidable, or whether I'm just mistaken in my type signature all together. (My goal is to say that anything which can be converted freely to and from something that is an instance of the Eq class, must preserve the equality relationships. 2. Why is GHC unable to check the types, but infer them. I always understood inferring to be the hard part of the problem, and checking to be the easy part. Is my intuition wrong? I've posted the code here[1] for your perusal. It's not particularly important that I get this solved, it's just a random idea I wanted to explore and thought the notion might appeal to some other Haskeller's around there who like to have self-documenting datatypes, but hate having to rewrite lots of simple utility functions as penance for our documentarian sins. /Joe ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Num instances for 2-dimensional types
Shouldn't the question not be Is this a number? but rather What is a number? -- I mean, from an abstract point of view, there's really no such thing, right? We have sets of things which we define an operation that has certain properties, and suddenly we start calling them numbers. Are the Symmetric groups -- which you can multiply and divide, but not add -- numbers? If they aren't, why should Z_n be numbers? What _is_ true, is that you can define a notion of addition and multiplication for both complexes and 'double' numbers, that doesn't mean they are numbers, rather, it means they are both Rings. Nor does it imply that they must be the same They are both rings over the same set of elements (Lets say, RxR), but with different operations. Furthermore, can't you construct the Rational's from the Integers in a similar way as you construct the complexes from the reals (by modding out an ideal/polynomial (resp)) -- I actually don't know for certain, we haven't gotten that far in my Alg. Class yet. :), but my intuition says that it's likely possible. Point is -- there are lots of classes for which you can implement a useful notion of addition in more than one way -- or a useful notion of some other class function (monad stuff for Lists and Ziplists, for example), but that doesn't necessarily mean that the two things are the same structure, right? /Joe On Oct 5, 2009, at 10:55 AM, Miguel Mitrofanov wrote: No, they aren't. They are polynomials in one variable i modulo i^2+1. Seriously, if you say complex numbers are just pairs of real numbers - you have to agree that double numbers (sorry, don't know the exact English term), defined by (a,b)+(c,d) = (a+c,b+d) (a,b)(c,d) = (ac, ad+bc) are just pairs of real numbers too. After that, you have two choices: a) admit that complex numbers and double numbers are the same - and most mathematicians would agree they aren't - or b) admit that the relation be the same is not transitive - which is simply bizarre. Lennart Augustsson wrote: But complex numbers are just pairs of numbers. So pairs of numbers can obviously be numbers then. On Mon, Oct 5, 2009 at 4:40 PM, Miguel Mitrofanov miguelim...@yandex.ru wrote: Lennart Augustsson wrote: And what is a number? Can't say. You know, it's kinda funny to ask a biologist what it means to be alive. Are complex numbers numbers? Beyond any reasonable doubt. Just like you and me are most certainly alive. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Haskell Weekly News
--- Haskell Weekly News http://sequence.complete.org/hwn/20091003 Issue 134 - October 03, 2009 --- Welcome to issue 134 of HWN, a newsletter covering developments in the [1]Haskell community. I have a nasty sinus infection this week, so we're somewhat light on content. Lots of good discussion about DSL related stuff this week. Bryan O'Sullivan also release 'Criterion' this week, a new benchmarking library that Don Stewart described (on reddit) as 'awesome and game changing.' A new TMR editor -- someone familiar -- was announced. Also, there was some talk about homework policies on the mailinglists and in the irc channels. There is a [2]page on the Haskell wiki about this, but to sum it up in a maxim, remember, 'Help, don't do'. Until next week, the Haskell Weekly News! Announcements New TMR editor. Wouter Swierstra [3]announced that he would be stepping down from the editorship of 'The Monad Reader', with former HWN editor Brent Yorgey taking his place. Much thanks for Wouter's hard work and good luck to Brent on his new editor job! SourceGraph 0.5.{0,1,2}.0. Ivan Lazar Miljenovic [4]announced three new releases of the SourceGraph packages, this links to the latest release. json-b-0.0.4. Jason Dusek [5]announced a new version of the json-b package, which fixes defective handling of empty objects and arrays. rss2irc 0.4 released. Simon Michael [6]announced a new release of rss2irc, with many new improvements and features. vty-ui 0.1. Jonathan Daugherty [7]announced vty-ui, which is an extensible library of user interface widgets for composing and laying out Vty user interfaces. atom-0.1.1. Tom Hawkins [8]announced Atom, a Haskell DSL for designing hard real-time embedded applications. Graphalyze-0.7.0.0. Ivan Lazar Miljenovic [9]announced (in an apparent effort to take over hackage by submitting dozens of quality packages at absurdly high speed), Graphalyze, a library for using graph-theoretic techniques to analyse the relationships inherent within discrete data. Criterion. Bryan O'Sullivan [10]announced (without tacking on an 'ANN' tag, I might add, I almost missed it!) Criterion, a benchmarking library he describes [11]here. ListTree 0.1. yair...@gmail.com [12]announced ListTree, a package for combinatorial search and pruning of trees. usb-0.1. Bas van Dijk [13]announced a library for interacting with usb modules from userspace. (Deadline extended to October 5th) APLAS 2009 Call for Posters. Kiminori Matsuzaki [14]announced a deadline extension to the call for posters for the APLAS conference. graphviz-2999.6.0.0. Ivan Lazar Miljenovic [15]announced a new version of the graphviz library, which features various new features and small changes. Discussion Testing polymorphic properties with QuickCheck. Jean-Philippe Bernardy [16]gave an excellent overview about how to use QuickCheck to test polymorphic properties. Designing a DSL? Gunther Schmidt [17]asked about different methods employed for designing a DSL. DSL and GUI Toolkits. Gunther Schmidt [18]also asked about different DSLs for working with GUIs error on --++ bla bla bla. Hong Yang [19]asked about why '--++' wasn't being parsed in the way he thought it was. Haskell for Physicists. edgar [20]requested name suggestions for the talk he is giving about Physics and Haskell. Blog noise [21]Haskell news from the [22]blogosphere. Blog posts from people new to the Haskell community are marked with , be sure to welcome them! * Sean Leather: [23]'Extensibility and type safety in formatting: the design of xformat' at the Dutch HUG. * Martijn van Steenbergen: [24]let 5 = 6. * Lee Pike: [25]Writer's unblock. * Manuel M T Chakravarty: [26]NVIDIAs next generation GPU architecture has a lot for HPC to love. * David Amos: [27]Finite geometries, part 4: Lines in PG(n,Fq). * Bryan O'Sullivan: [28]New criterion release works on Macs. * Neil Brown: [29]Poison: Concurrent Termination. * The GHC Team: [30]Heads up: what you need to know about Unicode I/O in GHC 6.12.1. * Galois, Inc: [31]Tech Talk: Roll Your Own Test Bed for Embedded Real-Time Protocols: A Haskell Experience. * Bryan O'Sullivan: [32]Criterion, a new benchmarking library for Haskell. * Tom Schrijvers: [33]Monadic Constraint Programming. * Neil Brown: [34]Growing Sort Pump. Quotes of the Week * dekudekuplex: (Unfortunately (unless intentional)) the preceding (by ksf (in the 'Quotes of the Week' section)) quote had mismatched (one too many opening) parentheses (although it was still funny (even though it could have been edited (to make the parentheses
Re: [Haskell-cafe] New TMR editor
Ah-- so _that's_ why you stopped doing HWN. Moving on to Greener Pastures... :) Congrats Brent! On Oct 1, 2009, at 3:44 PM, Brent Yorgey wrote: On Thu, Oct 01, 2009 at 04:33:43PM +0200, Wouter Swierstra wrote: Dear all, After several years at the helm, I've decided to step down as editor of the Monad.Reader. I am happy to announce that Brent Yorgey will take over my role as editor. I'd like to take this opportunity to thank Brent for helping to keep the Monad.Reader alive. I'm sure he'll do a fantastic job. Finally, I'd like to thank all the people who have contributed to the Monad.Reader over the last few years – you guys have made this publication, and my job as an editor, so much fun. And let me be the first to thank Wouter for the outstanding job he's done as editor! I think he deserves much thanks for consistently putting together such a high-quality publication. I look forward to continuing the tradition of excellence -- and I hope YOU, the author of an upcoming Monad.Reader article, do too! I'll be sending out a call for copy for the next issue soon. -Brent ___ 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] Doing people's homework?
I think the consensus is Help, not do when it comes to homework (esp. on -beginners). At least, thats what I try to do. I've always got the sense that that is what the community expects. On Sep 28, 2009, at 7:40 PM, Michael P Mossey wrote: I'm not really hip to the culture here so this is just an observation, but some of the recent questions posted to this list (and beginn...@haskell.org) look a lot like someone's homework. Is anyone here concerned about avoiding giving the full answer, or maybe it's really none of our business (we aren't responsible for anyone's learning process)? ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Sorry about the triple post
Trying to work out how to make sendmail do what I want, my computer is a fickle beast. Also- it should be HWN issue 133. But I'm an idiot, and just copied the value without thinking. Someday, when I automate all the uploading/sending to the list business, this will not be an issue... :/ /Joe ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Haskell Weekly News: Issue 131 - Semptember 25, 2009
This week is an experiment, I'm eliminating the mail client from the sendout, and simply using sendmail directly. If this doesn't fix the line ending problem, then I'm pretty sure it's a software issue, and not a client issue. If you notice problems, please email me at this address, put [HWN] in the subject line so my filters will catch it. Please _don't_ email me if there are no problems. Thanks, /Joe --- Haskell Weekly News http://sequence.complete.org/hwn/20090926 Issue 133 - September 26, 2009 --- Welcome to issue 133 of HWN, a newsletter covering developments in the [1]Haskell community. This week, we have a few new libraries, some interesting discussion about EDSLs, a comment from Oleg, and dons extolling the virtues of SCIENCE! On the new HWN software front, I've decided to jump right into something I had planned for far further down the development chain. Specifically, rather than scraping GMane for messages, I've been working on a way to grab the messages directly from the mailing-lists. I'm not entirely sure how I'm going to create links as they are now for the messages, but one crisis at a time. Till next week, here's the Haskell Weekly News! Announcements epoll bindings 0.2. Toralf Wittner [2]announced the release of epoll bindings 0.2 available [3]here. Epoll is an I/O event notification facility for Linux similar to poll but with good scaling characteristics. This release adds a buffer abstraction on top of the existing low-level bindings, so client code can write and read to buffers without having to deal directly with the underlying epoll event handling. diagrams 0.2.1, and planned major improvements. Brent Yorgey [4]announced version 0.2.1 of the diagrams library, available now on [5]Hackage. This minor release which fixes a few bugs and adds a few new combinators, most notably a grid layout combinator contributed by Ganesh Sittampalam. Workflow-0.5.5, TCache-0.6.4 RefSerialize-0.2.4. Alberto G. Corona [6]announced Workflow 0.5.5. Workflow provides a monad transformer that encapsulates any monad in a state monad that bring automatic state logging and recovery. A workflow can be viewed as a thread that persist across planeed or unplanned application shutdowns. When recovering the execution is resumed at the last action that was logged. The process continues at the same state as if not interruption took place. graphviz-2999.5.1.1. Ivan Lazar Miljenovic [7]announced version 2999.5.1.1 of the [8]graphviz library. This is another bug-fix release, fixing the problem spotted by Kathleen Fisher where Dot keywords need to be explicitly quoted if used as labels, etc. There is no change to the API. histogram-fill, library for creating histograms. Khudyakov Alexey [9]announced [10]histogram-fill. histogram-fill provides a generic and convenient API for making histograms. Features include, multiple simultaneous histogram creation, Immutable histograms, and Serialization to and from human readable text. Darcs Hacking Sprint - 14-15 November Vienna. Eric Kow [11]announced the third Darcs Hacking Sprint. Which will take place 14-15 November, 2009 at the University of Technology, Vienna, Austria. Anybody who wants to hack on Darcs (or Camp, Focal, SO6, etc) -- Beginners especially -- are welcome! 2nd CFP: TLDI 2010. Andrew Kennedy [12]announced a second call for papers for TLDI2010, the Types in Language Design and Implementation Workshop. darcs 2.3.1: better docs, fewer bugs. Reinier Lamers [13]announced a new stable version of darcs, with bugfixes from 2.3.0, improved documentation, and removal of the old autoconf build system. TFM09: Call for Participation (FMWeek, Eindhoven, November 2009). J.N. Oliveira [14]announced a Call for Participation in TFM2009 2nd Int. FME Conference on Teaching Formal Methods Friday, November 6th 2009, co-located with FM2009 : 16th Int. Symposium on Formal Methods Eindhoven, the Netherlands, November 2 - November 6, 2009. Discussion Monad Tutorial in C++. Adrian May [15]wrote a tutorial about monads in some other niche language... Beginning of a meta-Haskell. Oleg -- [16]as if he needs any introduction -- commented on things far above my ability to understand. Evidently, however, it involves extensible, modular interpreters in the ``tagless final'' style. It was a reply to an earlier thread [17]here. An issue with EDSLs in the ``finally tagless'' tradition. Brad Larsen [18]talked about his run in with [19]the expression problem while experimenting with EDSLs. Blog noise [20]Haskell news from the [21]blogosphere. Blog posts from people new to the Haskell community are marked with , be sure to welcome them! *
[Haskell-cafe] Haskell Weekly News: Issue 131 - Semptember 25, 2009
This week is an experiment, I'm eliminating the mail client from the sendout, and simply using sendmail directly. If this doesn't fix the line ending problem, then I'm pretty sure it's a software issue, and not a client issue. If you notice problems, please email me at this address, put [HWN] in the subject line so my filters will catch it. Please _don't_ email me if there are no problems. Thanks, /Joe --- Haskell Weekly News http://sequence.complete.org/hwn/20090926 Issue 133 - September 26, 2009 --- Welcome to issue 133 of HWN, a newsletter covering developments in the [1]Haskell community. This week, we have a few new libraries, some interesting discussion about EDSLs, a comment from Oleg, and dons extolling the virtues of SCIENCE! On the new HWN software front, I've decided to jump right into something I had planned for far further down the development chain. Specifically, rather than scraping GMane for messages, I've been working on a way to grab the messages directly from the mailing-lists. I'm not entirely sure how I'm going to create links as they are now for the messages, but one crisis at a time. Till next week, here's the Haskell Weekly News! Announcements epoll bindings 0.2. Toralf Wittner [2]announced the release of epoll bindings 0.2 available [3]here. Epoll is an I/O event notification facility for Linux similar to poll but with good scaling characteristics. This release adds a buffer abstraction on top of the existing low-level bindings, so client code can write and read to buffers without having to deal directly with the underlying epoll event handling. diagrams 0.2.1, and planned major improvements. Brent Yorgey [4]announced version 0.2.1 of the diagrams library, available now on [5]Hackage. This minor release which fixes a few bugs and adds a few new combinators, most notably a grid layout combinator contributed by Ganesh Sittampalam. Workflow-0.5.5, TCache-0.6.4 RefSerialize-0.2.4. Alberto G. Corona [6]announced Workflow 0.5.5. Workflow provides a monad transformer that encapsulates any monad in a state monad that bring automatic state logging and recovery. A workflow can be viewed as a thread that persist across planeed or unplanned application shutdowns. When recovering the execution is resumed at the last action that was logged. The process continues at the same state as if not interruption took place. graphviz-2999.5.1.1. Ivan Lazar Miljenovic [7]announced version 2999.5.1.1 of the [8]graphviz library. This is another bug-fix release, fixing the problem spotted by Kathleen Fisher where Dot keywords need to be explicitly quoted if used as labels, etc. There is no change to the API. histogram-fill, library for creating histograms. Khudyakov Alexey [9]announced [10]histogram-fill. histogram-fill provides a generic and convenient API for making histograms. Features include, multiple simultaneous histogram creation, Immutable histograms, and Serialization to and from human readable text. Darcs Hacking Sprint - 14-15 November Vienna. Eric Kow [11]announced the third Darcs Hacking Sprint. Which will take place 14-15 November, 2009 at the University of Technology, Vienna, Austria. Anybody who wants to hack on Darcs (or Camp, Focal, SO6, etc) -- Beginners especially -- are welcome! 2nd CFP: TLDI 2010. Andrew Kennedy [12]announced a second call for papers for TLDI2010, the Types in Language Design and Implementation Workshop. darcs 2.3.1: better docs, fewer bugs. Reinier Lamers [13]announced a new stable version of darcs, with bugfixes from 2.3.0, improved documentation, and removal of the old autoconf build system. TFM09: Call for Participation (FMWeek, Eindhoven, November 2009). J.N. Oliveira [14]announced a Call for Participation in TFM2009 2nd Int. FME Conference on Teaching Formal Methods Friday, November 6th 2009, co-located with FM2009 : 16th Int. Symposium on Formal Methods Eindhoven, the Netherlands, November 2 - November 6, 2009. Discussion Monad Tutorial in C++. Adrian May [15]wrote a tutorial about monads in some other niche language... Beginning of a meta-Haskell. Oleg -- [16]as if he needs any introduction -- commented on things far above my ability to understand. Evidently, however, it involves extensible, modular interpreters in the ``tagless final'' style. It was a reply to an earlier thread [17]here. An issue with EDSLs in the ``finally tagless'' tradition. Brad Larsen [18]talked about his run in with [19]the expression problem while experimenting with EDSLs. Blog noise [20]Haskell news from the [21]blogosphere. Blog posts from people new to the Haskell community are marked with , be sure to welcome them! *
[Haskell-cafe] Haskell Weekly News: Issue 131 - Semptember 25, 2009
This week is an experiment, I'm eliminating the mail client from the sendout, and simply using sendmail directly. If this doesn't fix the line ending problem, then I'm pretty sure it's a software issue, and not a client issue. If you notice problems, please email me at this address, put [HWN] in the subject line so my filters will catch it. Please _don't_ email me if there are no problems. Thanks, /Joe --- Haskell Weekly News http://sequence.complete.org/hwn/20090926 Issue 133 - September 26, 2009 --- Welcome to issue 133 of HWN, a newsletter covering developments in the [1]Haskell community. This week, we have a few new libraries, some interesting discussion about EDSLs, a comment from Oleg, and dons extolling the virtues of SCIENCE! On the new HWN software front, I've decided to jump right into something I had planned for far further down the development chain. Specifically, rather than scraping GMane for messages, I've been working on a way to grab the messages directly from the mailing-lists. I'm not entirely sure how I'm going to create links as they are now for the messages, but one crisis at a time. Till next week, here's the Haskell Weekly News! Announcements epoll bindings 0.2. Toralf Wittner [2]announced the release of epoll bindings 0.2 available [3]here. Epoll is an I/O event notification facility for Linux similar to poll but with good scaling characteristics. This release adds a buffer abstraction on top of the existing low-level bindings, so client code can write and read to buffers without having to deal directly with the underlying epoll event handling. diagrams 0.2.1, and planned major improvements. Brent Yorgey [4]announced version 0.2.1 of the diagrams library, available now on [5]Hackage. This minor release which fixes a few bugs and adds a few new combinators, most notably a grid layout combinator contributed by Ganesh Sittampalam. Workflow-0.5.5, TCache-0.6.4 RefSerialize-0.2.4. Alberto G. Corona [6]announced Workflow 0.5.5. Workflow provides a monad transformer that encapsulates any monad in a state monad that bring automatic state logging and recovery. A workflow can be viewed as a thread that persist across planeed or unplanned application shutdowns. When recovering the execution is resumed at the last action that was logged. The process continues at the same state as if not interruption took place. graphviz-2999.5.1.1. Ivan Lazar Miljenovic [7]announced version 2999.5.1.1 of the [8]graphviz library. This is another bug-fix release, fixing the problem spotted by Kathleen Fisher where Dot keywords need to be explicitly quoted if used as labels, etc. There is no change to the API. histogram-fill, library for creating histograms. Khudyakov Alexey [9]announced [10]histogram-fill. histogram-fill provides a generic and convenient API for making histograms. Features include, multiple simultaneous histogram creation, Immutable histograms, and Serialization to and from human readable text. Darcs Hacking Sprint - 14-15 November Vienna. Eric Kow [11]announced the third Darcs Hacking Sprint. Which will take place 14-15 November, 2009 at the University of Technology, Vienna, Austria. Anybody who wants to hack on Darcs (or Camp, Focal, SO6, etc) -- Beginners especially -- are welcome! 2nd CFP: TLDI 2010. Andrew Kennedy [12]announced a second call for papers for TLDI2010, the Types in Language Design and Implementation Workshop. darcs 2.3.1: better docs, fewer bugs. Reinier Lamers [13]announced a new stable version of darcs, with bugfixes from 2.3.0, improved documentation, and removal of the old autoconf build system. TFM09: Call for Participation (FMWeek, Eindhoven, November 2009). J.N. Oliveira [14]announced a Call for Participation in TFM2009 2nd Int. FME Conference on Teaching Formal Methods Friday, November 6th 2009, co-located with FM2009 : 16th Int. Symposium on Formal Methods Eindhoven, the Netherlands, November 2 - November 6, 2009. Discussion Monad Tutorial in C++. Adrian May [15]wrote a tutorial about monads in some other niche language... Beginning of a meta-Haskell. Oleg -- [16]as if he needs any introduction -- commented on things far above my ability to understand. Evidently, however, it involves extensible, modular interpreters in the ``tagless final'' style. It was a reply to an earlier thread [17]here. An issue with EDSLs in the ``finally tagless'' tradition. Brad Larsen [18]talked about his run in with [19]the expression problem while experimenting with EDSLs. Blog noise [20]Haskell news from the [21]blogosphere. Blog posts from people new to the Haskell community are marked with , be sure to welcome them! *
Re: [Haskell-cafe] Haskell Weekly News: Issue 131 - September 19, 2009
Ahh, I found the issue. I generated this on the 18th, the software makes files of the form yearmonthdate.ext, so when Brent uploaded the hwn for me, the link it generates is to the date it was generated on, not the date it was published on. The appropriate link is http://sequence.complete.org/hwn/20090919 In the future, I'll have to make sure to do the `make` on the date of publication, but ATM I don't have access to the sequence.complete.org to post the hwns myself. So I try to get the issue to Brent a day early. It shouldn't happen again, thanks for catching it. /Joe On Sep 20, 2009, at 3:06 PM, Andrew Coppin wrote: http://sequence.complete.org/hwn/20090918 ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Cabal packages - cabbages
I also agree. Hackage should also be renamed to something appropriate. The Cabbage Patch? On Sep 20, 2009, at 6:12 PM, Jeff Wheeler wrote: On Sun, Sep 20, 2009 at 5:11 PM, Jason Dusek jason.du...@gmail.com wrote: Some day, we're going to need a short, catchy name for Cabal packages. Let's call them cabbages. +1 Yes, let's. Jeff Wheeler ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Haskell Weekly News: Issue 131 - September 19, 2009
Hopefully the line endings come out okay this week, I did a test before sending it to the list, please let me know if you notice anything awry. Just put a [HWN] in the subject line so my filter's will catch it. /metaeditorial --- Haskell Weekly News http://sequence.complete.org/hwn/20090918 Issue 131 - September 18, 2009 --- Welcome to issue 131 of HWN, a newsletter covering developments in the [1]Haskell community. Last week, I received an email from Mark Wotton about his project [2]Hubris. I totally forgot to put it in the HWN last week, too busy trying to figure out all the tools. So, I thought I'd make it up and give him some special editorial status this week. Hubris is a bridge between Ruby and Haskell, allowing you to call Haskell from Ruby. It's very cool, I highly suggest playing with it. Also, I've been posting a bit about the new HWN tools (dubbed HWN2) on my [3]blog, there is also a repo up at [4]patch-tag which will have all the code. If there is some interest in helping me, I'll try to come up with a TODO list/Trac. Announcements hssqlppp, sql parser and type checker, pre-alpha. Jake Wheat [5]announced his parser/type checker for SQL. It currently parses a subset of PostGreSQL and PL/pgSQL, and can type check some statements. LambdaINet-0.1.0, Graphical Interaction Net Evaluator for Optimal Evaluation. Paul L [6]announced a LambdaINet 0.1.0, available on [7]Hackage. LambdaINet implements an interaction net based optimal evaluator. With an interactive graphical interface allowing the user to view and directly manipulate the interaction net. arbtt-0.1. Joachim Breitner [8]announced the Automatic Rule-Based Time Tracking tool on hackage. he has an introduction available [9]here. A statistics library. Bryan O'Sullivan [10]announced the imaginatively named [11]statistics library. Which supports common discrete and continuous probability distributions, Kernel density estimation, Auto-correlation analysis, Functions over sample data, Quantile estimation, and Re-sampling techniques. CFP: JSC Special Issue on Automated Verification and Specification of Web Systems. [12]A Special Issue of the Journal of symbolic computation was announced. This issue is related to the topics of the Automated Specification and Verification of Web Systems Workshop (WWV'09). Read the announcement for more details. Haskeline 0.6.2. Judah Jacobson [13]announced the release of Haskeline 0.6.2, available [14]here. Improvements over the last version include, new emacs and vi bindings, a new preference to remove repeated history entries, recognition of page-up and page-down keys, and more. PEPM'10 - Last CFP (Submission: 6 Oct 09, Notification: 29 Oct 09). Janis Voigtlaender [15]announced the Last Call for Papers for PEPM'10, see the announcement for more details. Videos of HIW 2009. Malcolm Wallace [16]announced videos of all the presentations/discussions at the recent Haskell Implementers Workshop 2009, in Edinburgh, are now [17]online. The program of talks is available [18]here. Unification in a Commutative Monoid (cmu 1.1) and a new release of Abelian group unification and matching (agum 2.2). John D. Ramsdell [19]announced cmu 1.1, which provides unification in a commutative monoid, also know as ACU-unification. The core computation finds the minimal non-zero solutions to homogeneous linear Diophantine equations. The linear equation solver has been place in a separate module so it can be used for other applications. He also announced agum 2.2, which provides unification and matching in an Abelian group, also know as AG-unification and matching. graphviz-2999.5.1.0. Ivan Lazar Miljenovic [20]announced a bug-fix release of the GraphViz package, no major API changes occurred. levmar-0.2, bindings-levmar-0.1.1. Bas van Dijk and Roel van Dijk announced [21]new [22]versions of the levmar and bindings-levmar packages. New features include automatic calculation of the Jacobian via Conal Elliot's automatic differentiation from his vector-space library. CmdArgs - easy command line argument processing. Neil Mitchell [23]announced CmdArgs 0.1. CmdArgs is a library for parsing command-line arguments. It offers several improvements over GetOpts, namely that the Command Line Argument Processors are shorter and CmdArgs can support multiple-mode command lines such as those found in darcs, cabal, hpc, etc. OpenGL 2.4.0.1. Sven Panne [24]announced a new version of the OpenGL package, this version fixes a bug that didn't make it into the previous release. OpenGLRaw 1.1.0.0. Sven Panne [25]announced a new version of the
Re: [Haskell-cafe] Community.haskell.org is down
Confirmed for me, I actually have no idea who owns C.H.O, but a WHOIS gives the Yale University Comp. Sci. Dept. Haskell Group as the registrant, maybe someone over there needs to take a look? /Joe On Sep 13, 2009, at 1:17 PM, Neil Mitchell wrote: Hi, http://community.haskell.org/ seems to be down for me. In general, who should this be reported to? Thanks Neil ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Haskell Weekly News: Issue 130 - September 12, 2009
--- Haskell Weekly News http://sequence.complete.org/hwn/20090912 Issue 130 - September 12, 2009 --- Welcome to issue 130 of HWN, a newsletter covering developments in the [1]Haskell community. Welcome to issue 130 of HWN! In the last week, HWN has gotten a new editor, me! I'm Joe Fredette (jfredett on IRC, reddit, and everywhere else), and I'll be taking over for Brent (byorgey) from now on. I think I speak for the whole community when I thank him for his excellent work on the HWN and associated tools. I have a few ideas about how I want to change HWN for the better, and hopefully you'll like them too! So, without further ado, The Haskell Weekly News! Announcements Looking for a new HWN editor. Brent Yorgey [2]went looking for a new editor for the HWN, and that's how you got me! See the editorial for more details. CfPart: FMICS 2009, 2-3 November 2009. Christophe Joubert [3]announced FMICS 2009 - FIRST CALL FOR PARTICIPATION, 14th International Workshop on Formal Methods for Industrial Critical Systems. November 2-3, 2009 Call for Posters: APLAS 2009. Kiminori Matsuzaki [4]announced a CALL FOR POSTER PRESENTATIONS The Seventh ASIAN Symposium on Programming Languages and Systems (APLAS 2009) December 14 - 16, 2009 Seoul National University, Seoul, Korea. hecc-0.1. Marcel Fourné [5]announced the first release of hecc, the Elliptic Curve Cryptography Library for Haskell. Implemented are affine, projective, jacobian and modified jacobian point formats with the basic operations. Included as an Example is a basic ECDH as well as a basic speed test. HLint 1.6.8. Neil Mitchell [6]announced HLint 1.6.8. HLint is a tool for suggesting improvements to your source code. It suggests the use of library functions you may have been unaware of, finds patterns of recursion that are really folds/maps, hints about extensions you aren't using and much more. HLint is now one of the top 20 applications on Hackage, and is used by the darcs project to improve and statically check their code base. A Levenberg-Marquardt implementation. Bas van Dijk [7]announced the release of a Haskell binding to Manolis Lourakis's C levmar library. This library implements the Levenberg-Marquardt algorithm which is an iterative technique that finds a local minimum of a function that is expressed as the sum of squares of nonlinear functions. It has become a standard technique for nonlinear least-squares problems and can be thought of as a combination of steepest descent and the Gauss-Newton method. CCA-0.1. Paul L [8]announced that a library for Causal Commutative Arrows (CCA) has been uploaded to Hackage DB. It implements CCA normalization using Template Haskell and a modified arrow pre- processor (based on arrowp) to generate outout that Template Haskell can parse. It's highly experimental since we are still fiddling with several design choices, and by no means we imply Template Haskell is the best choice to implement CCA. Any suggestion or comment is welcome! graphviz-2999.5.0.0. Ivan Lazar Miljenovic [9]announced version 2999.5.0.0 of the graphviz package for Haskell. This is what I like to think of as the 'Hey, this is almost getting to be a decent library!' version. The graphviz package provides bindings to the GraphViz suite of programs by providing the ability to generate and parse GraphViz's Dot language as well as wrappers around the tools themselves. uvector-algorithms 0.2. Dan Doel [10]announced version 0.2 of the uvector-algorithms package. The package so far has implementations of several sorting and selection algorithms for use on the mutable arrays from the uvector library, as well as combinators for applying them to immutable arrays. dbmigrations 0.1. Jonathan Daugherty [11]announced dbmigrations, A library and program for the creation, management, and installation of schema updates (called migrations) for a relational database. In particular, this package lets the migration author express explicit dependencies between migrations and the management tool automatically installs or reverts migrations accordingly, using transactions for safety. This package is written to support any HDBC-supported database, although at present only PostgreSQL is fully supported. Palindromes 0.1. Johan Jeuring [12]announced Palindromes, a package for finding palindromes in files. Visit the [13]homepage The primary features of Palindromes include: A linear-time algorithm for finding exact palindromes, A linear-time algorithm for finding text palindromes, ignoring spaces, case of characters, and punctuation symbols
Re: [Haskell-cafe] Hackage and version control
Don't forget about Patch-tag! Bulat Ziganshin wrote: Hello Vasili, Monday, July 20, 2009, 12:26:52 PM, you wrote: It seems to me that Hackage doesn't provide version control, e.g. check out and check in. Am I incorrect? i recommend you to use either codeplex or code.google begin:vcard fn:Joseph Fredette n:Fredette;Joseph adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America email;internet:jfred...@gmail.com tel;home:1-508-966-9889 tel;cell:1-508-254-9901 x-mozilla-html:FALSE url:lowlymath.net, humbuggery.net version:2.1 end:vcard ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] RE: Haskell as a first language?
If only for the fact that our little Haskell community is composed of about the nicest set of people ever -- I mean, try asking a newbie question on #c sometime -- then Haskell is a great language to learn early. Not only is it great because of it's community, but it's also full of resources -- there are plenty of fun and interesting tutorials to learn with, among the best are Real World Haskell -- it's actually a print book, but you can read it in it's entirety online, give it a google. There's also a nice tutorial called, Learn you a Haskell for Great Good (or something like that), I've heard good things about it. By far the best things you can do are subscribe to the Haskell-Cafe mailing list, and get yourself in the #haskell chatroom on freenode. I believe it was Mrs. Frizzle who said it best, Ask Questions, Make Mistakes, get Haskell-y!!! /Joe Simon Peyton-Jones wrote: Haskell is a great language! Check out haskell.org. I'm ccing the Haskell Cafe which is read by many people better qualified to answer your question than me. (Since I've been working on Haskell for many years, I am not well qualified to say how it seems to a beginner.) S | -Original Message- | From: Charles Turner [mailto:charlie.h.tur...@googlemail.com] | Sent: 11 July 2009 22:52 | To: Simon Peyton-Jones | Subject: Haskell as a first language? | | I'll make this short! Do you think Haskell is a good language to start | with? I am brand new to programming and have been using Scheme, some of | my peers suggest I should use Haskell. It seems professional to me. | Has features that a beginner should not worry about. What would you | suggest. (I'm not worried about bias) | | Thank you very much for your time. | | Charles Turner. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe begin:vcard fn:Joseph Fredette n:Fredette;Joseph adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America email;internet:jfred...@gmail.com tel;home:1-508-966-9889 tel;cell:1-508-254-9901 x-mozilla-html:FALSE url:lowlymath.net, humbuggery.net version:2.1 end:vcard ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] How to declare a Typeless Function
It's important to note that such a function is not Typeless but rather Polymorphic -- that is, it is a type which can be satisfied for many values of it's type variables. For instance, the function `(+) :: Num a = a - a - a` is polymorphic, since it's one type variable can be satisfied by any instance of the `Num` class. It's not that the `(+)` function is Typeless (implying that it has no type) precisely the opposite, it has _many_ types. Haskell is clever enough to figure out which one you mean as you use it (most of the time, anyway). /Joe Magnus Therning wrote: On Fri, Jul 3, 2009 at 4:43 AM, Alexander Dunlapalexander.dun...@gmail.com wrote: swap :: Array (Int, Int) a - [Int] - Array (Int, Int) a The lowercase a means that that type variable is polymorphic, i.e. it can be any type. Another option would be to simply not put in type of 'swap', load it in ghci and see what the compiler says the type is :-) /M On Thu, Jul 2, 2009 at 8:05 PM, Fernan Bolandofernanbola...@mailc.net wrote: Hi I have a function that swaps rows of an array of double swap :: Array (Int,Int) Double - [Int] - Array (Int,Int) Double I then create a function that swaps rows of arrays of Complex Double swap :: Array (Int, Int) (Complex Double) - [Int] - Array (Int, Int) (Complex Double) In reality the function swap does not care whether its working on a double or a complex number. how do I declare swap so that it will work whether it's a complex or a double array. I tried googling but I wasn't sure what to google. fernan -- http://www.fernski.com ___ 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 begin:vcard fn:Joseph Fredette n:Fredette;Joseph adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America email;internet:jfred...@gmail.com tel;home:1-508-966-9889 tel;cell:1-508-254-9901 x-mozilla-html:FALSE url:lowlymath.net, humbuggery.net version:2.1 end:vcard ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Breaking ghci
Code or it didn't happen. :) Günther Schmidt wrote: Hi folks, I would like to announce that I have not merely managed to make the RTS choke during runtime on stack overflows like lesser programmers, no, *I* have managed to write code that ghc is not even able to compile due to exhausting virtual memory! Top that! Günther ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe begin:vcard fn:Joseph Fredette n:Fredette;Joseph adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America email;internet:jfred...@gmail.com tel;home:1-508-966-9889 tel;cell:1-508-254-9901 x-mozilla-html:FALSE url:lowlymath.net, humbuggery.net version:2.1 end:vcard ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] What is an expected type ...
When Haskell runs it's type checker, it tries to guess the type of each function. Thats why you can write: map (+1) and it knows that you're talking about a function of type: Num a = [a] - [a] Another thing, called 'defaulting' resolves this, but you didn't ask about that, so I won't go into it. An expected type is one that you provide to the compiler in the form of a type signature, this can be used to specialize a general type (like the one I showed) or to resolve ambiguous types the compiler can't, or just for documentation/good practice. So when I write: foo :: Num a = [a] - [a] foo ls = map (+1) ls The expected type for `foo` is `Num a = [a] - [a]`. I imagine you're asking this because you got an error which said your expected type doesn't match your inferred type. That might, for instance, happen if I wrote: bar :: String bar = 'a' 'a' has type `Char`, since `String` is not `Char`, the type checker infers that 'a' has type char, but _expects_ it to be type String. Two solutions are as follows: --- Method 1 bar :: Char bar = 'a' --- Method 2 bar :: String bar = a Can you see why those two changes fix the problem? Also, just as a matter of process, I forwarded this to the haskell-beginners list, as I imagine type errors like these come up a lot, and someone probably has a better explanation over there. /Joe michael rice wrote: as opposed to an inferred type? Michael ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe begin:vcard fn:Joseph Fredette n:Fredette;Joseph adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America email;internet:jfred...@gmail.com tel;home:1-508-966-9889 tel;cell:1-508-254-9901 x-mozilla-html:FALSE url:lowlymath.net, humbuggery.net version:2.1 end:vcard ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Why are these record accesses ambiguous
The error is because of the way records work in Haskell. Recall that a record is just sugar for the normal datatype syntax. Namely: data FooA a b c = FooA {getA :: a, getB:: b, getC :: c} can be accessed as either f (FooA a b c) = ... or f fooA = ... (getA fooA) ... etc That is, Record syntax just creates functions for each label that take a record and return the content of that label. eg getA :: FooA a b c - a getA (FooA a _ _ ) = a ... So when you have two records with the same label in it: data Bar = Bar { badlabel :: Int } data Baz = Baz { badlabel :: String } even though they are not the same type, you end up with the following definitions: badlabel :: Bar - Int badlabel :: Baz - String this is a type error, one that is not trivially resolved. Thats where your problem is coming from, two fields both named `x` which result in this error. HTH, /Joe John Ky wrote: Hi Luke, You're right. My code had a typo. Unfortunately, I still get the same error whichever way I do it. For example: {-# LANGUAGE DisambiguateRecordFields #-} import A import B main = do let xx = getA print (x xx) and: #!/usr/bin/env runhaskell {-# LANGUAGE DisambiguateRecordFields #-} import A import B main = do let xx = getA putStrLn $ show (x xx) both give me: test.lhs:8:22: Ambiguous occurrence `x' It could refer to either `A.x', imported from A at test.lhs:3:2-9 (defined at A.hs:5:5) or `B.x', imported from B at test.lhs:4:2-9 (defined at B.hs:5:5) Any ideas? $ ghc --version The Glorious Glasgow Haskell Compilation System, version 6.10.3 Thanks, -John On Sat, Jun 6, 2009 at 6:41 PM, Luke Palmer lrpal...@gmail.com mailto:lrpal...@gmail.com wrote: On Sat, Jun 6, 2009 at 1:48 AM, John Ky newho...@gmail.com mailto:newho...@gmail.com wrote: Hi Haskell Cafe, In the following code, I get an error saying Ambiguous occurrence `x'. Why can't Haskell work out which x to call based on the type of getA? Thanks -John #!/usr/bin/env runhaskell {-# LANGUAGE DisambiguateRecordFields #-} import A import B main = do let xx = getA putStrLn $ show x xx This is parsed as two arguments passed to the show function (which only takes one argument). putStrLn $ show (x xx) Or because putStrLn . show = print; print $ x xx -- module A where data TypeA = TypeA { a :: Int , x :: Int } getA = TypeA { a = 1, x = 2 } - module B where data TypeB = TypeB { b :: Int , x :: Int } getB = TypeB { b = 1, x = 3 } -- ./test.lhs:8:21: Ambiguous occurrence `x' It could refer to either `A.x', imported from A at ./test.lhs:3:2-9 (defined at A.hs:5:5) or `B.x', imported from B at ./test.lhs:4:2-9 (defined at B.hs:5:5) ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org mailto: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 begin:vcard fn:Joseph Fredette n:Fredette;Joseph adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America email;internet:jfred...@gmail.com tel;home:1-508-966-9889 tel;cell:1-508-254-9901 x-mozilla-html:FALSE url:lowlymath.net, humbuggery.net version:2.1 end:vcard ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Haskell in 3 Slides
While an incredibly small font is a clever option, a more serious suggestion may be as follows. 3-4 slides imply 3-4 topics, so the question is what are the 3-4 biggest topics in haskell? I would think they would be: * Purity/Referential Transparency * Lazy Evaluation * Strong Typing + Type Classes * Monads Assuming you have, say, 10-15 minutes for the talk, and the people there are versed with imperative programming and maybe have some experience in functional programming, you can probably jump over each of those slides in about a minute, just enough to touch the subject. I also assume that you don't need to fit the whole presentation in 3-4 slides, if you do, then yah. /Joe David Leimbach wrote: Use an incredibly small font. On Mon, May 18, 2009 at 8:16 AM, John Van Enk vane...@gmail.com mailto:vane...@gmail.com wrote: Hi all, I'm giving a presentation to an IEEE group on Embedded DSL's and Haskell at the end of June. I need a 3 to 4 slide introduction to Haskell. What suggestions does the community have? Is such a short intro possible? It just needs to introduce the basics so I can show some code without alienating the audience. I'm hoping some one else has attempted this before, but if not, some boiler plate slides could be useful for every one! -- /jve ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org mailto: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 begin:vcard fn:Joseph Fredette n:Fredette;Joseph adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America email;internet:jfred...@gmail.com tel;home:1-508-966-9889 tel;cell:1-508-254-9901 x-mozilla-html:FALSE url:lowlymath.net, humbuggery.net version:2.1 end:vcard ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Haskell in 3 Slides
Well, since the topic was EDSLs, and those generally involve monads (at least from what I've seen), it might be wise to touch on them. However, perhaps the fourth slide would just be a catchall? HOFs, some STM/Monad stuff, etc? The topics I suggested just seem to me to be the 4 core concepts you must understand to use haskell effectively. /joe Eugene Kirpichov wrote: Actually, I don't think it's a good idea to introduce monads on one of the 3-4 slides. While it *is* a core concept, it's not one of the advertising bullet points; and 1 slide is not enough to show what *use* monads are, let alone what they actually *are*. I'd probably suggest you to show something parallelism-related on that slide: for example, STM. Showing an atomically do foo and saying And here, we atomically do foo may turn out impressive :) And yes, of course HOF's. Also, on the Strong Typing slide, probably you could fit in an algebraic datatype and a smallish function over it in pattern-matched style. 2009/5/18 Joe Fredette jfred...@gmail.com: While an incredibly small font is a clever option, a more serious suggestion may be as follows. 3-4 slides imply 3-4 topics, so the question is what are the 3-4 biggest topics in haskell? I would think they would be: * Purity/Referential Transparency * Lazy Evaluation * Strong Typing + Type Classes * Monads Assuming you have, say, 10-15 minutes for the talk, and the people there are versed with imperative programming and maybe have some experience in functional programming, you can probably jump over each of those slides in about a minute, just enough to touch the subject. I also assume that you don't need to fit the whole presentation in 3-4 slides, if you do, then yah. /Joe David Leimbach wrote: Use an incredibly small font. On Mon, May 18, 2009 at 8:16 AM, John Van Enk vane...@gmail.com mailto:vane...@gmail.com wrote: Hi all, I'm giving a presentation to an IEEE group on Embedded DSL's and Haskell at the end of June. I need a 3 to 4 slide introduction to Haskell. What suggestions does the community have? Is such a short intro possible? It just needs to introduce the basics so I can show some code without alienating the audience. I'm hoping some one else has attempted this before, but if not, some boiler plate slides could be useful for every one! --/jve ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org mailto:Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe begin:vcard fn:Joseph Fredette n:Fredette;Joseph adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America email;internet:jfred...@gmail.com tel;home:1-508-966-9889 tel;cell:1-508-254-9901 x-mozilla-html:FALSE url:lowlymath.net, humbuggery.net version:2.1 end:vcard ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Free theorems for dependent types?
This word has piqued my interest, I've hear it tossed around the community quite a bit, but never fully understood what it meant. What exactly is a 'free theorem'? Eugene Kirpichov wrote: Hello, Is there any research on applying free theorems / parametricity to type systems more complex than System F; namely, Fomega, or calculus of constructions and alike? This seems very promising to me for the following reason: Take the free theorem for 'sort::(a-a-Bool)-[a]-[a]'. The theorem could possibly be a lot more powerful if there were a way to encode in the type of 'sort' that it accepts a reflexive transitive antisymmetric predicate, but the only way to express that is with dependent types. Looks like the only thing one needs to add to System F is the relational translation rule for a dependent product; but I haven't tried doing it myself. begin:vcard fn:Joseph Fredette n:Fredette;Joseph adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America email;internet:jfred...@gmail.com tel;home:1-508-966-9889 tel;cell:1-508-254-9901 x-mozilla-html:FALSE url:lowlymath.net, humbuggery.net version:2.1 end:vcard ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] is value evaluated?
That must have been the vibe I was getting. My haskell-spider senses were tingling, I just overshot RT and went for the Halting Problem. /Joe Brandon S. Allbery KF8NH wrote: On May 8, 2009, at 01:33 , Joe Fredette wrote: That strikes me as being bad in a I'm violating the Halting Problem sort of way- but I'm not sure how. Is there some contradictory construction that could be built from such a function? I don't think it is; surely the Haskell runtime knows which thunks it has evaluated. It just explicitly violates referential transparency, and therefore must be in IO. You may be thinking that it would return a result for _|_, but as described if you fed it _|_ it could only produce False (if the _|_ has been evaluated you would not be able to reach the test). begin:vcard fn:Joseph Fredette n:Fredette;Joseph adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America email;internet:jfred...@gmail.com tel;home:1-508-966-9889 tel;cell:1-508-254-9901 x-mozilla-html:FALSE url:lowlymath.net, humbuggery.net version:2.1 end:vcard ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] is value evaluated?
That strikes me as being bad in a I'm violating the Halting Problem sort of way- but I'm not sure how. Is there some contradictory construction that could be built from such a function? Nikhil Patil wrote: Hi, I am curious to know if there is a function in Haskell to find if a certain value has already been evaluated. The function I need would have the type: (?!) :: a - Bool And I expect it to be such that the following terminates after printing the first 101 fibonacci numbers. fibs = 0 : 1 : zipWith (+) fibs (tail fibs) main = do print $ fibs !! 100 print $ takeWhile (?!) fibs Although I guess I can imagine the following not terminating: print $ filter (?!) fibs I would find such a function immensely useful in printing out my infinite lists. Thanks! nikhil ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe begin:vcard fn:Joseph Fredette n:Fredette;Joseph adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America email;internet:jfred...@gmail.com tel;home:1-508-966-9889 tel;cell:1-508-254-9901 x-mozilla-html:FALSE url:lowlymath.net, humbuggery.net version:2.1 end:vcard ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] [ANN] Hack: a sexy Haskell Webserver Interface ^^
We need to start referring to more haskell packages as sexy /Joe Jinjing Wang wrote: Simplest app should look like this module Main where import Hack import Hack.Handler.Kibro hello :: Application hello = \env - return $ Response { status = 200 , headers = [ (Content-Type, text/plain) ] , body= Hello World } main = run hello Hack is a brainless port of the brilliant Ruby Rack framework. Rack is very modular and that's very important. Rack utilities and middlewares should be able to be ported with minimal effort, I hope. link / source: http://github.com/nfjinjing/hack/tree/master begin:vcard fn:Joseph Fredette n:Fredette;Joseph adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America email;internet:jfred...@gmail.com tel;home:1-508-966-9889 tel;cell:1-508-254-9901 x-mozilla-html:FALSE url:lowlymath.net, humbuggery.net version:2.1 end:vcard ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] ANN: HackMail 0.0 -- Procmail + Monads = Awesome!
I'm happy to announce my very second Hackage upload!* HackMail is a Procmail-alike, though it doesn't (yet) support promail syntax. It dynamically loads a haskell source file (literate or vanilla, eithers okay) and then sits as a daemon watching a directory for new emails. The source file contains a function which sorts email and delivers it to some directory. As well as some configuration data. Not everything is working just yet -- the program is operational, but still lacking some of the features I want, namely a pipe mode, and some other things. It also uses a homebrew email parser, and lacks Haddock and Tests, but I wanted to release it mostly for comments/questions/helpful criticism from interested parties. Also, I wanted to upload something to hackage... It's a good feeling. Questions/Comments/Donations of Money, Vestal Virgins, or Cookies welcome! Package is on Hackage @ http://hackage.haskell.org/cgi-bin/hackage-scripts/package/HackMail Source is on Patch-tag @ http://patch-tag.com/repo/Hackmail /Joe Fredette * (I uploaded a little tool called addLicenseInfo to test out the procedure, so... yah.) begin:vcard fn:Joseph Fredette n:Fredette;Joseph adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America email;internet:jfred...@gmail.com tel;home:1-508-966-9889 tel;cell:1-508-254-9901 x-mozilla-html:FALSE url:lowlymath.net, humbuggery.net version:2.1 end:vcard ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] .hi inconsistency bug.
Oh- I see, so The portion of code I have to interpret is already separated -- it's not even compiled. The only interpreted code is a configuration file in the users home directory. It needs to import some chunk of the library (namely, MainTypes and Deliverable) so as to be able to export a single routine (filterMain) which gets interpreted at run time. But as it stands, I don't even get as far as running that code. The problem lies solely in MainTypes proper, which has no dynamic code in it or even associated with it. I tried compiling separately and together, no dice either way. Somehow, the Email datatype isn't being exported from ParseEmail. However, wrt this: and set the source path to plugins directory (using something like unsafeSetGhcOption -i./plugins, or set [searchPath := [./plugins]], if using the darcs version). I don't think my hint-related code does this- since my Hint code is entirely: -- Returns a pair, a path to the inbox location (where new emails enter the system) and also -- a Filter, the filter delivers (it's a Reader + IO monad) the email based on the config+options. getFilterMainStuff :: FilePath - Interpreter (Path, Filter ()) getFilterMainStuff fMainLoc = do loadModules [fMainLoc]; setTopLevelModules [(takeWhile (/='.') fMainLoc)] inboxL - parse $ interpret (inboxLoc) infer fMain - (interpret (filterMain) infer) return (inboxL, fMain) That is, I load a module, set the TopLevel to include that module, read two functions out of that module (one containing the location of the inbox to poll, on with the filtering main function) and return them. I don't think I need to set any search paths, since fMainLoc is a full path. Could this be where my problem is? Really, I'm just trying to isolate whether it's really Hint causing the problem, or something else, because I could always do what xmonad does wrt to this- which is (from what I can tell) statically import your config file from a given location, which would alleviate all of this, if the problem is hint. Perhaps I'll just try that in any case... see if it helps. Thanks again Daniel, /Joe Daniel Gorín wrote: So, if I understand correctly, the interpreter is compiling MainTypes twice? No, the interpreter is trying to compile types that were already compiled by the compiler when building your application. The resulting types are incompatible. Could this be a result of having two outputs (one executable and one library) in my .cabal file? it _does_ compile those things twice... If I create a second cabal file which separates these two different packages, would that fix it? I don't think so. If you already have your application split in library part + executable part, then everything should be fine (as long as the library is installed before running your application). The issue is, the (dynamic) interpreter part of my code is part of the main loop of the program, and is (as far as I can see) inseparable from the rest of the code. What you need to separate is the code you are planning to interpret in runtime. For example, say you have: src/HackMail/Main.hs src/HackMail/Data/Types.hs src/SomePlugin.hs and SomePlugin.hs is loaded by the interpreter, then you may want to reorganize your files like this: src/HackMail/Main.hs src/HackMail/Data/Types.hs plugins/SomePlugin.hs and set the source path to plugins directory (using something like unsafeSetGhcOption -i./plugins, or set [searchPath := [./plugins]], if using the darcs version). Daniel I'll give the cabal thing a try, given the incredible triviality of doing everything with cabal, I should be done testing the solution before I hit the send button... Cabal guys, you rock. Thanks again, Dan. /Joe Daniel Gorín wrote: Hi Just a wild guess but maybe the interpreter is recompiling (in runtime) code that has already been compiled to build your application (in compile-time). This may lead to inconsistencies since a type such as HackMail.Data.Main.Types.Filter may refer to two different (and incompatible) types. To see if this is the case, make sure your dynamic code is not located together with your base code (i.e., move it to another directory, and set the src file directory for the interpreter accordingly). Now you may get another runtime error, something along the lines of Module not found: HackMail.Data.MainTypes. This basically means that you need to make your (already compiled) types available to the interpreter. I think the simplest way is to put all your support types in a package, register it with ghc, link your application to it, and ask the interpreter to use this package (with a -package flag). Hope this helps! Daniel On Mar 17, 2009, at 11:52 PM, Joe Fredette wrote: List, I've got this project, source on patch-tag here[1] It's a nice little project, I've got the whole thing roughly working, it compiles okay, everything
Re: [Haskell-cafe] .hi inconsistency bug.
I seem to have fixed this bug, only to find another- the issue was that I misunderstood what Cabal means by exposed modules upon exposing all of the modules MainTypes uses, the problem resolved itself. I now have another problem, having to do with importing the file from $HOME/.hackmail, but I'm going to take a crack at it before bothering the list again. Thanks very much Daniel, /Joe Daniel Gorín wrote: So, if I understand correctly, the interpreter is compiling MainTypes twice? No, the interpreter is trying to compile types that were already compiled by the compiler when building your application. The resulting types are incompatible. Could this be a result of having two outputs (one executable and one library) in my .cabal file? it _does_ compile those things twice... If I create a second cabal file which separates these two different packages, would that fix it? I don't think so. If you already have your application split in library part + executable part, then everything should be fine (as long as the library is installed before running your application). The issue is, the (dynamic) interpreter part of my code is part of the main loop of the program, and is (as far as I can see) inseparable from the rest of the code. What you need to separate is the code you are planning to interpret in runtime. For example, say you have: src/HackMail/Main.hs src/HackMail/Data/Types.hs src/SomePlugin.hs and SomePlugin.hs is loaded by the interpreter, then you may want to reorganize your files like this: src/HackMail/Main.hs src/HackMail/Data/Types.hs plugins/SomePlugin.hs and set the source path to plugins directory (using something like unsafeSetGhcOption -i./plugins, or set [searchPath := [./plugins]], if using the darcs version). Daniel I'll give the cabal thing a try, given the incredible triviality of doing everything with cabal, I should be done testing the solution before I hit the send button... Cabal guys, you rock. Thanks again, Dan. /Joe Daniel Gorín wrote: Hi Just a wild guess but maybe the interpreter is recompiling (in runtime) code that has already been compiled to build your application (in compile-time). This may lead to inconsistencies since a type such as HackMail.Data.Main.Types.Filter may refer to two different (and incompatible) types. To see if this is the case, make sure your dynamic code is not located together with your base code (i.e., move it to another directory, and set the src file directory for the interpreter accordingly). Now you may get another runtime error, something along the lines of Module not found: HackMail.Data.MainTypes. This basically means that you need to make your (already compiled) types available to the interpreter. I think the simplest way is to put all your support types in a package, register it with ghc, link your application to it, and ask the interpreter to use this package (with a -package flag). Hope this helps! Daniel On Mar 17, 2009, at 11:52 PM, Joe Fredette wrote: List, I've got this project, source on patch-tag here[1] It's a nice little project, I've got the whole thing roughly working, it compiles okay, everything seems to work, until I try to run it, specifically when I run it in ghci, or when I run the main executable (which uses hint), and look at any type involving my Email type, it gives me the following error: Type syonym HackMail.Data.MainTypes.Filter: Can't find interface-file declaration for type constructor or class HackMail.Data.ParseEmail.Email Probable cause: bug in .hi-boot file, or inconsistent .hi file Use -ddump-if-trace to get an idea of which file caused the error As far as I understand, it wants to find the interface-file declaration for a specific type (Email) exported by the ParseEmail module, all of the exports (I think) are in order. I've tried mucking around with it a bit, but I don't fully understand what the error even means, much less how to fix it. Other relevant info, Email is exported in a roundabout way, namely by importing a module MainTypes, which exports a module Email, which exports a the ParseEmail Module, which exports the datatype Email. The Filter delcaration it _actually_ complains about (it's just the first place the email type is invoked) is: type Filter a = ReaderT (Config, Email) IO a nothing particularly special. Any help fixing this is greatly appreciated, I did find this bug report[2] which seems like it might be relevant. But trying to unregister - cabal clean - cabal install doesn't fix it. I've also tried manually removing the dist/ folder, and also unregistering the package. Thanks again. /Joe [1] http://patch-tag.com/repo/Hackmail/browse [2] http://hackage.haskell.org/trac/ghc/ticket/2057 jfredett.vcf___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe jfredett.vcf begin:vcard
Re: [Haskell-cafe] can GHC build an executable from a C source file?
You know, I hear theres this brilliant program for compiling C code -- gcd? ccg? gcc, yah gcc... Anyone tried it? In all seriousness though, why do you need to compile c with ghc? I'm curious, it seems a bit pointless... /Joe Manlio Perillo wrote: Anton Tayanovskyy ha scritto: Works for me without the --make, as `ghc foo.c` For me, too, thanks. Manlio ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe begin:vcard fn:Joseph Fredette n:Fredette;Joseph adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America email;internet:jfred...@gmail.com tel;home:1-508-966-9889 tel;cell:1-508-254-9901 x-mozilla-html:FALSE url:lowlymath.net, humbuggery.net version:2.1 end:vcard ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] .hi inconsistency bug.
List, I've got this project, source on patch-tag here[1] It's a nice little project, I've got the whole thing roughly working, it compiles okay, everything seems to work, until I try to run it, specifically when I run it in ghci, or when I run the main executable (which uses hint), and look at any type involving my Email type, it gives me the following error: Type syonym HackMail.Data.MainTypes.Filter: Can't find interface-file declaration for type constructor or class HackMail.Data.ParseEmail.Email Probable cause: bug in .hi-boot file, or inconsistent .hi file Use -ddump-if-trace to get an idea of which file caused the error As far as I understand, it wants to find the interface-file declaration for a specific type (Email) exported by the ParseEmail module, all of the exports (I think) are in order. I've tried mucking around with it a bit, but I don't fully understand what the error even means, much less how to fix it. Other relevant info, Email is exported in a roundabout way, namely by importing a module MainTypes, which exports a module Email, which exports a the ParseEmail Module, which exports the datatype Email. The Filter delcaration it _actually_ complains about (it's just the first place the email type is invoked) is: type Filter a = ReaderT (Config, Email) IO a nothing particularly special. Any help fixing this is greatly appreciated, I did find this bug report[2] which seems like it might be relevant. But trying to unregister - cabal clean - cabal install doesn't fix it. I've also tried manually removing the dist/ folder, and also unregistering the package. Thanks again. /Joe [1] http://patch-tag.com/repo/Hackmail/browse [2] http://hackage.haskell.org/trac/ghc/ticket/2057 begin:vcard fn:Joseph Fredette n:Fredette;Joseph adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America email;internet:jfred...@gmail.com tel;home:1-508-966-9889 tel;cell:1-508-254-9901 x-mozilla-html:FALSE url:lowlymath.net, humbuggery.net version:2.1 end:vcard ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] .hi inconsistency bug.
So, if I understand correctly, the interpreter is compiling MainTypes twice? Could this be a result of having two outputs (one executable and one library) in my .cabal file? it _does_ compile those things twice... If I create a second cabal file which separates these two different packages, would that fix it? The issue is, the (dynamic) interpreter part of my code is part of the main loop of the program, and is (as far as I can see) inseparable from the rest of the code. I'll give the cabal thing a try, given the incredible triviality of doing everything with cabal, I should be done testing the solution before I hit the send button... Cabal guys, you rock. Thanks again, Dan. /Joe Daniel Gorín wrote: Hi Just a wild guess but maybe the interpreter is recompiling (in runtime) code that has already been compiled to build your application (in compile-time). This may lead to inconsistencies since a type such as HackMail.Data.Main.Types.Filter may refer to two different (and incompatible) types. To see if this is the case, make sure your dynamic code is not located together with your base code (i.e., move it to another directory, and set the src file directory for the interpreter accordingly). Now you may get another runtime error, something along the lines of Module not found: HackMail.Data.MainTypes. This basically means that you need to make your (already compiled) types available to the interpreter. I think the simplest way is to put all your support types in a package, register it with ghc, link your application to it, and ask the interpreter to use this package (with a -package flag). Hope this helps! Daniel On Mar 17, 2009, at 11:52 PM, Joe Fredette wrote: List, I've got this project, source on patch-tag here[1] It's a nice little project, I've got the whole thing roughly working, it compiles okay, everything seems to work, until I try to run it, specifically when I run it in ghci, or when I run the main executable (which uses hint), and look at any type involving my Email type, it gives me the following error: Type syonym HackMail.Data.MainTypes.Filter: Can't find interface-file declaration for type constructor or class HackMail.Data.ParseEmail.Email Probable cause: bug in .hi-boot file, or inconsistent .hi file Use -ddump-if-trace to get an idea of which file caused the error As far as I understand, it wants to find the interface-file declaration for a specific type (Email) exported by the ParseEmail module, all of the exports (I think) are in order. I've tried mucking around with it a bit, but I don't fully understand what the error even means, much less how to fix it. Other relevant info, Email is exported in a roundabout way, namely by importing a module MainTypes, which exports a module Email, which exports a the ParseEmail Module, which exports the datatype Email. The Filter delcaration it _actually_ complains about (it's just the first place the email type is invoked) is: type Filter a = ReaderT (Config, Email) IO a nothing particularly special. Any help fixing this is greatly appreciated, I did find this bug report[2] which seems like it might be relevant. But trying to unregister - cabal clean - cabal install doesn't fix it. I've also tried manually removing the dist/ folder, and also unregistering the package. Thanks again. /Joe [1] http://patch-tag.com/repo/Hackmail/browse [2] http://hackage.haskell.org/trac/ghc/ticket/2057 jfredett.vcf___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe begin:vcard fn:Joseph Fredette n:Fredette;Joseph adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America email;internet:jfred...@gmail.com tel;home:1-508-966-9889 tel;cell:1-508-254-9901 x-mozilla-html:FALSE url:lowlymath.net, humbuggery.net version:2.1 end:vcard ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] I can't install hs-plugins beceause of Linker.h
I believe that hs-plugins has fallen out of use, on #haskell, I was directed to hint[1]. IIRC, I had to disable some packages because of cross installation. /Joe [1] http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hint Yuri Kashnikoff wrote: Hi! I was trying to install hs-plugins both from sources $./Setup.lhs ... and with $cabal fetchcabal install and both failed. It always reports that Linker.h is missing. I have tried to use --extra-include-dirs with path to ghc-6.10.1 dir and ghc-6.10.1/include dir. Nothing changed. Here is a report from Setup.lhs: Setup.lhs:2:2: Warning: In the use of `defaultUserHooks' (imported from Distribution.Simple): Deprecated: Use simpleUserHooks or autoconfUserHooks, unless you need Cabal-1.2 compatibility in which case you must stick with defaultUserHooks Warning: defaultUserHooks in Setup script is deprecated. Configuring plugins-1.4.0... Warning: This package indirectly depends on multiple versions of the same package. This is highly likely to cause a compile failure. package ghc-6.10.1 requires Cabal-1.6.0.1 package plugins-1.4.0 requires Cabal-1.6.0.2 checking build system type... i386-apple-darwin9.6.0 checking for ghc... ghc checking for value of __GLASGOW_HASKELL__... 610 checking for ghc library directory... /opt/local/lib/ghc-6.10.1/. checking for gcc... gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ANSI C... none needed checking for arc4random... yes checking for a BSD-compatible install... /usr/bin/install -c configure: creating ./config.status config.status: creating config.mk config.status: creating testsuite/makewith/io/TestIO.conf config.status: creating testsuite/makewith/unsafeio/Unsafe.conf config.status: creating config.h config.status: config.h is unchanged Setup.lhs: Missing dependency on a foreign library: * Missing header file: Linker.h This problem can usually be solved by installing the system package that provides this library (you may need the -dev version). If the library is already installed but in a non-standard location then you can use the flags --extra-include-dirs= and --extra-lib-dirs= to specify where it is. begin:vcard fn:Joseph Fredette n:Fredette;Joseph adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America email;internet:jfred...@gmail.com tel;home:1-508-966-9889 tel;cell:1-508-254-9901 x-mozilla-html:FALSE url:lowlymath.net, humbuggery.net version:2.1 end:vcard ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Re: Haskell-Wiki Account registration
As long as one is implementing a CAPTCHA, the reCAPTCHA [1] is my humble suggestion, I have no idea how the haskellwiki is implemented or how easy this is to implement, but I imagine it couldn't be _that_ hard. /Joe [1] http://recaptcha.net/ Benjamin L.Russell wrote: On Thu, 12 Mar 2009 17:31:49 +0100 (CET), Henning Thielemann lemm...@henning-thielemann.de wrote: How long will the Wiki account registration be disabled? Would it be possible to ask a question, that real Haskellers could easily answer, but a spambot cannot? E.g. What's Haskell's surname? Indeed. Disabling Wiki account registration indefinitely, and not replacing it by at least some form of automatic registration, risks allowing outsiders to think that the HaskellWiki is somehow run by some clique, which I'm sure is not the case. Automating the process removes most of the risk of this misimpression. Why not ask new users to identify letters in a random bitmapped image of a string, as is commonly done? Then any new user who still registers and starts submitting spam can be tracked and moderated. -- Benjamin L. Russell begin:vcard fn:Joseph Fredette n:Fredette;Joseph adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America email;internet:jfred...@gmail.com tel;home:1-508-966-9889 tel;cell:1-508-254-9901 x-mozilla-html:FALSE url:lowlymath.net, humbuggery.net version:2.1 end:vcard ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] ANNOUNCE: Vintage BASIC 1.0
Well, there goes any productivity I might have had on my spring break... Hurrah for old BASIC games! Lyle Kopnicky wrote: I am pleased to announce the initial release of Vintage BASIC, an interpreter for microcomputer-era BASIC. Fully unit-tested, it faithfully implements the common elements of the language. On the web site, you can find 102 games from the classic book BASIC Computer Games, all of which run flawlessly. Have fun! This is a standalone interpreter, operating on text files. Although not an embedding, like Lennart Augustsson's clever implementation, it does use a custom BASIC monad in order to execute the code. A unique feature of this implementation is that control structures such as FOR are implemented using resumable exceptions: FOR is a handler and NEXT throws an exception. A Developer's Guide is included with the source. This is my first public release of open source software. I have been working on this project since 2003. Home page: http://www.vintage-basic.net Also available on Hackage http://hackage.haskell.org/cgi-bin/hackage-scripts/package/vintage-basic and patch-tag.com http://patch-tag.com/repo/vintage-basic/home. Please e-mail me at l...@vintage-basic.net mailto:l...@vintage-basic.net with any questions/comments. - Lyle ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe begin:vcard fn:Joseph Fredette n:Fredette;Joseph adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America email;internet:jfred...@gmail.com tel;home:1-508-966-9889 tel;cell:1-508-254-9901 x-mozilla-html:FALSE url:lowlymath.net, humbuggery.net version:2.1 end:vcard ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] Sugestion for a Haskell mascot
Hehe, I love it. Sloth is a synonym for Lazyness in English too, and they're so freaking cute... :) Maurício wrote: Hi, Here in Brazil we have a forest animal we name 'preguiça' -- literally, lazyness. What better mascot we could have for Haskell? It lives (and sleeps) in trees, and if you see the main picture in wikipedia articles you can easily imagine the tree branch beeing replaced by a lambda: http://en.wikipedia.org/wiki/Sloth http://pt.wikipedia.org/wiki/Bicho-pregui%C3%A7a Best, Maurício ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe begin:vcard fn:Joseph Fredette n:Fredette;Joseph adr:Apartment #3;;6 Dean Street;Worcester;Massachusetts;01609;United States of America email;internet:jfred...@gmail.com tel;home:1-508-966-9889 tel;cell:1-508-254-9901 x-mozilla-html:FALSE url:lowlymath.net, humbuggery.net version:2.1 end:vcard ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe