00:00:00 --- log: started haskell/07.10.09 00:00:02 so this "applicative" stuff is a lot like some of the concepts in "funmath" 00:00:10 where you write hats over functiosn and operators to lift them 00:00:57 --- quit: ddarius (Read error: 110 (Connection timed out)) 00:01:32 --- quit: ivanm (Read error: 110 (Connection timed out)) 00:01:49 --- quit: jewel (Read error: 113 (No route to host)) 00:02:08 --- join: iblechbot (n=iblechbo@ppp-62-216-200-249.dynamic.mnet-online.de) joined #haskell 00:03:54 --- quit: jonathanv (Read error: 110 (Connection timed out)) 00:05:03 --- join: FZ (n=chatzill@unaffiliated/fz) joined #haskell 00:05:14 --- join: filp (n=hordf@ip-168-248.sn2.eutelia.it) joined #haskell 00:07:53 --- quit: boyscared (Read error: 104 (Connection reset by peer)) 00:08:11 --- join: boyscared (n=boy@oh-76-5-125-71.dhcp.embarqhsd.net) joined #haskell 00:09:17 --- join: phb2 (n=phb2@c213-100-44-22.swipnet.se) joined #haskell 00:10:30 --- quit: shachaf (Read error: 113 (No route to host)) 00:11:35 --- quit: sutats ("leaving") 00:12:12 --- join: doserj (n=doserj@dewey.inf.ethz.ch) joined #haskell 00:12:30 --- quit: Tela () 00:14:36 --- quit: Plareplane ("Leaving") 00:14:38 --- join: piis3141 (n=piis3141@ip4da169f4.direct-adsl.nl) joined #haskell 00:14:58 --- join: Plareplane (n=Plarepla@216-197-152-148.sktn.hsdb.sasknet.sk.ca) joined #haskell 00:15:45 --- join: boegel (n=boegel@konijn.elis.UGent.be) joined #haskell 00:16:16 --- join: jewel (n=jewel@61.247.251.10) joined #haskell 00:18:45 newsham: yeah, I think there is a list of papers to read on various topics 00:18:59 newsham: I'll find it. 00:19:58 yeah, http://haskell.org/haskellwiki/Research_papers 00:19:59 Title: Research papers - HaskellWiki 00:20:22 That has a list of the research papers relevant to Haskell broken down roughly by topic. 00:20:45 The Functional Pearls section has quite a lot of particularly good ones. 00:21:29 --- join: Kyzia (i=kyzia@195.5.34.126) joined #haskell 00:21:44 hello 00:21:46 http://globalchat.pp.net.ua/ 00:21:46 --- part: Kyzia left #haskell 00:21:47 Title: Ãëîáàë_×àò - Ãëàâíàÿ ñòðàíèöà 00:22:04 --- quit: bringert () 00:22:58 --- join: amiddelk (n=arie@melinda.cs.uu.nl) joined #haskell 00:28:14 I wish that as an op, I could edit the past conversation on the channel, so as to remove the effects of spammers ;) 00:28:34 Censorship! 00:28:41 yes 00:28:43 and? 00:28:47 --- join: pulczynski (n=marek@fw.grono.org) joined #haskell 00:28:48 isn't that the point of an op 00:28:52 --- join: takuan (n=takuan@83.101.37.197) joined #haskell 00:29:14 --- quit: pulczynski ("Leaving.") 00:29:33 --- join: pulczynski (n=marek@fw.grono.org) joined #haskell 00:30:16 --- join: Aperculum (n=lauri@unaffiliated/aperculum) joined #haskell 00:30:19 --- join: roconnor (n=roconnor@vhe-540354.sshn.net) joined #haskell 00:30:31 --- part: pulczynski left #haskell 00:30:52 --- join: QplQyer (n=jeroen@state.ugent.be) joined #haskell 00:30:54 So I made this mini-mini-combinator language to make turing maching programs, but it's really ugly looking with nested functions. I wonder if this is a good place to stick a monad. 00:31:56 * jeffz wonders how effective spamming a non-english language website amongst mainly english speakers is. 00:32:14 it's cheaper than it is effective. 00:32:15 maybe its just the get the url into logs? 00:32:25 glguy: ah good point. 00:32:28 Google spamming. 00:32:31 Pagerank. 00:32:50 --- quit: Mr_Awesome (Read error: 110 (Connection timed out)) 00:33:52 Shimei: Well, a monad is just a combinator language which has the right kind of combinators in it. 00:33:58 --- quit: boyscared (Read error: 104 (Connection reset by peer)) 00:34:17 --- join: boyscared (n=boy@oh-76-5-125-71.dhcp.embarqhsd.net) joined #haskell 00:35:51 SEO is a pretty skeevy profession. 00:40:45 --- quit: Korollary ("leaving") 00:41:30 --- join: Rack (n=soue@201.132.207.143) joined #haskell 00:42:13 --- quit: LeCamarade ("":o)"") 00:42:35 --- quit: lstephen666 ("Leaving") 00:43:17 --- quit: oerjan ("leaving") 00:44:01 --- join: goban_ (n=whyso@pool-96-228-43-108.rcmdva.fios.verizon.net) joined #haskell 00:44:50 skeevy executaive officer? 00:45:42 --- join: calvins (n=calvins@c-67-188-118-53.hsd1.ca.comcast.net) joined #haskell 00:46:05 --- join: bparkis (n=bparkis@library-356.wireless.umass.edu) joined #haskell 00:46:26 --- join: bringert (n=bringert@3-1-5-7a.gva.gbg.bostream.se) joined #haskell 00:46:28 oh search engine optimization 00:49:31 --- quit: edwinb (Remote closed the connection) 00:50:30 * mgsloan wonders if there are people who just optimize programs 00:51:13 yes there is 00:51:17 they're called ricers 00:51:29 --- quit: mikael () 00:51:30 There certainly are people whose job it is to take code written by physicists and the like and make it run properly on a supercomputer 00:51:45 hah 00:51:54 that's interesting 00:52:32 I wonder what physicists use.. with some nice syntax haskell could be pretty good for physicists 00:52:47 fortran and matlab? 00:52:49 Fortran, what else? 00:52:53 I suppose so 00:53:46 Fortran is insanely well optimized for it's problem domain 00:53:54 compiler-wise, anyway 00:54:56 --- quit: omnId ("Leaving") 00:55:55 yeah, I seem to recall hearing that in general 00:56:11 --- join: cbe (n=cbe@62.70.2.252) joined #haskell 00:56:15 --- join: therp (n=nil@chello080108077214.34.11.tuwien.teleweb.at) joined #haskell 00:56:26 there were some attempts to make a Lisp fast enough to beat Fortran, and the end result did so. the problem is that there are way more people working on optimizing Fortran than there are optimizing Lisp or Haskell. 00:56:32 pretty ugly language though 00:56:40 so, it's hard to maintain an advantage 00:56:43 right 00:57:02 oh yeah, Fortran is gross 00:57:16 Ironically the first language on my programming language timeline that I have taped to the wall. 1954... 00:57:26 (first and still strong?) 00:57:28 --- nick: clad|sleep -> cladhaire 00:57:38 If I had to use it I'd probably write a language that outputs fortran code 00:57:39 --- part: zappa left #haskell 00:57:45 Lisp was #2 and is still being used. 00:57:49 fortran and lisp are the oldest languages still in use 00:58:03 and yeah, fortran came first 00:58:04 basic is still used! 00:58:06 B-O comes next on my chart. :p 00:58:16 Aperculum: basic is young 00:58:17 With a name like that, no surprise it died. 00:58:23 there were some kind-of languages written for earlier computers, I think the first one was designed by Zuse 00:58:34 lisp was originally intended to be a fortran variant, iirc 00:58:37 ibid, basic is oldest highlevel language after fortran and lisp 00:58:43 plankalkül 00:58:49 What about algol? 00:58:52 --- quit: rc-1 (Connection timed out) 00:58:57 Shimei: not in use 00:58:58 BASIC is not that old 00:59:07 Oh, right. High level languages in use. 00:59:28 --- quit: mgsloan (Remote closed the connection) 00:59:42 Given that the "basic" in use is VB.Net, I'm not sure it really passed on much lineage. 00:59:52 it will be interesting to see how Fortress turns out. 01:00:20 Aperculum: hm, right, 1963. i though it was late 60s 01:00:44 yeah, only 5 years after lisp 01:00:48 --- quit: turulu (Remote closed the connection) 01:00:52 --- quit: Adamant (Remote closed the connection) 01:00:55 although 5 years is long 01:01:44 Aperculum: cobol is older than basic, btw, pre-60s 01:01:58 and it's still in use, though mostly in legacy systems 01:06:07 --- join: TwigEther (n=Twigathy@raptor.ukc.ac.uk) joined #haskell 01:06:27 XML is like violence: if it doesn't solve your problem, you aren't using enough of it. 01:06:44 * jeffz wonders how you define a legacy system. 01:07:17 --- quit: scodil ("Lost terminal") 01:07:39 glguy: ;) 01:07:43 --- quit: njbartlett () 01:07:57 jeffz: do you mean that cobol is used in many new projects? 01:08:42 jeffz: by legacy, i mainly mean systems that were built long ago and are in maintenance mode 01:13:36 I would define legacy as "a old system with known flaws or limitations which in an ideal world we would replace, but it's so hardwired in that that is expensive or difficult to do" 01:13:40 something like that 01:14:37 the flaw may just be that "noone knows how to make any changes to it, in the future, even though right now it works perfectly" 01:14:49 cobol was still a mandatory course in the business oriented it program here when i started studying (not on that program, fortunately) 01:14:53 not anymore though 01:15:21 ibid: well, where I work, some new cobol programs are written, nothing very large though. 01:15:38 isn't SAP's ABAP language largely cobol ? 01:15:43 jeffz: "mostly" leaves room for exceptions :) 01:15:51 --- join: Jaak (n=Jaak@193.40.10.182) joined #haskell 01:16:27 I sometimes think I might've had more fun doing COBOL than Java. 01:16:41 quicksilver: it is my impression that most legacy systems by my definition are legacy systems by your definition :) 01:17:07 ibid: I guess =) though, I still think the term legacy system is ambiguous and lends itself to be used where people think they can do a better job, often with some misunderstanding. 01:17:38 legacy can mean something as simple as "not conforming to the standards we use now, because it was written before we had them" 01:17:44 jeffz: :) what i was trying to convey is that its use is winding down 01:20:03 ibid: that's probably just a matter of time, I don't think I know anyone who is under 40 years of age who programs cobol. 01:21:22 --- quit: bparkis ("Leaving") 01:21:29 --- join: goban__ (n=whyso@pool-96-228-43-108.rcmdva.fios.verizon.net) joined #haskell 01:21:58 jeffz: yep 01:22:14 jeffz: though, it was still taught here ten years ago :) 01:22:23 --- join: Adamant (n=wtfmonki@unaffiliated/adamant) joined #haskell 01:23:51 --- join: turulu (i=antiludi@gateway/tor/x-db241b485744e9e7) joined #haskell 01:25:04 --- join: xinming_ (n=xinming@70.132.73.218.broad.wz.zj.dynamic.163data.com.cn) joined #haskell 01:25:29 --- join: masak (n=user@130.238.45.242) joined #haskell 01:28:10 --- quit: goalieca (Remote closed the connection) 01:32:27 --- quit: mathrick (Read error: 104 (Connection reset by peer)) 01:34:05 --- join: mathrick (n=mathrick@users.kollegienet.dk) joined #haskell 01:34:39 --- quit: goban_ (Connection timed out) 01:34:51 --- join: mr_tenor (n=nick@c220-239-33-8.rivrw7.nsw.optusnet.com.au) joined #haskell 01:36:58 --- join: KatieHuber (n=katie@203-97-111-120.cable.telstraclear.net) joined #haskell 01:37:19 --- quit: jewel (Read error: 113 (No route to host)) 01:37:19 --- quit: xinming (Read error: 110 (Connection timed out)) 01:37:52 --- join: goban_ (n=whyso@pool-96-228-43-108.rcmdva.fios.verizon.net) joined #haskell 01:39:06 --- join: tarrybon1 (n=dlc@c-71-60-148-169.hsd1.pa.comcast.net) joined #haskell 01:41:56 --- quit: tarrybone (Nick collision from services.) 01:42:07 --- join: jewel (n=jewel@61.247.251.10) joined #haskell 01:42:08 --- nick: tarrybon1 -> tarrybone 01:43:02 --- quit: nominolo ("Ex-Chat") 01:45:12 --- nick: cladhaire -> clad|brb 01:47:23 so, the indentation matters in haskell 01:47:26 like in python? 01:48:26 --- join: augustss (n=Lennart@63.175.43.10) joined #haskell 01:49:42 quicksilver: I "finished" my code 01:50:14 --- join: ivanm (n=ivan@60-242-0-245.static.tpgi.com.au) joined #haskell 01:50:34 --- quit: goban__ (Connection timed out) 01:51:42 Aperculum: yes, indentation matters in python too 01:51:58 Aperculum: but the rules are different, so it's not exactly "like in python" 01:52:11 ibid: is there a main difference? 01:52:47 masak: it's been a long time since i last looked at python :) 01:53:05 to me, there seems to be a main similarity, namely that things that are semantically subordinate other things are further to the right 01:53:11 masak: but for one, in haskell, layout is lexical sugar for { ; } 01:53:12 yes, the indentation dependent syntax is optional, you can throw in braces and semicolons to get a sensible syntax 01:53:29 --- quit: glguy ("leaving") 01:53:34 @seen quicksilver 01:53:34 quicksilver is in #haskell and #ghc. I last heard quicksilver speak 35m 56s ago. 01:54:07 there's brace syntax in python too 01:54:07 --- quit: Kattana (Read error: 110 (Connection timed out)) 01:54:24 ...I think 01:54:26 oh python has braces too? Well I never! 01:54:35 let me check :) 01:54:36 masak: wasn't when i did python 01:54:47 masak: of course it's possible they've stolen them from haskell since :) 01:54:55 I'm probably wrong, actually 01:55:02 --- quit: mlesniak (Read error: 110 (Connection timed out)) 01:55:22 --- quit: iblechbot (Read error: 110 (Connection timed out)) 01:55:23 masak: and, of course, in python the layout enabler is ':', while haskell uses a number of keywords 01:55:43 right 01:55:58 I was thinking of this piece of code 01:56:00 http://www.freedom-to-tinker.com/tinyp2p.html 01:56:03 Title: TinyP2P 01:56:07 which actually does without braces 01:56:18 so I guess python doesn't have them :) 01:58:31 ibid: yes, I'd say that is the main difference then 01:58:56 which "that"? :) 01:59:47 --- quit: ac ("Lost terminal") 02:00:23 --- join: haraldk (n=harald@dhcp106-38.linpro.no) joined #haskell 02:01:29 --- join: ac (n=abram@dsl231-034-070.sea1.dsl.speakeasy.net) joined #haskell 02:01:49 ac: pleased to hear it :) 02:02:05 quicksilver: it was much easier generalizing it then I was expecting 02:03:18 --- join: Kattana (i=Kattana@modemcable181.114-80-70.mc.videotron.ca) joined #haskell 02:04:46 masak: Python has braces, but they're for dictionaries 02:09:49 --- join: njbartlett (n=njbartle@cpc2-barn4-0-0-cust110.brnt.cable.ntl.com) joined #haskell 02:10:18 --- join: MyCatSchemes (n=rb6822@yilvet.cs.bris.ac.uk) joined #haskell 02:10:53 err, I've also heard of a python brace syntax replacing indentation, but that might have been some web service thingy's own quirk 02:13:10 --- quit: seafoodX (Read error: 110 (Connection timed out)) 02:14:03 --- join: fmardini (n=fmardini@77.245.6.99) joined #haskell 02:14:19 --- quit: fmardini (Client Quit) 02:14:34 Japsu: I think that exists for blind people. 02:15:02 --- join: Rebooted (n=opera@88-104-185-170.dynamic.dsl.as9105.com) joined #haskell 02:15:06 --- quit: idnar (Nick collision from services.) 02:15:09 --- join: idnar_ (n=mithrand@unaffiliated/idnar) joined #haskell 02:15:53 --- nick: clad|brb -> cladhaire 02:16:11 --- part: Rebooted left #haskell 02:16:25 --- join: lnxz (n=Joachim@bjo1-1x-dhcp451.studby.uio.no) joined #haskell 02:19:25 --- join: dibblego (n=nobody@220-245-107-64.static.tpgi.com.au) joined #haskell 02:20:32 --- join: seafoodX (n=sseefrie@alphad261.lnk.telstra.net) joined #haskell 02:24:48 --- join: gkr (n=notme@201-212-49-41.cab.prima.net.ar) joined #haskell 02:24:51 --- quit: jwp_ (Read error: 104 (Connection reset by peer)) 02:28:44 --- join: mrchebas (n=alexey@ster.cs.uu.nl) joined #haskell 02:29:27 --- quit: dibblego ("Leaving") 02:29:40 --- join: jwp_ (n=jwp@mail.icrossing.com) joined #haskell 02:29:45 --- quit: mrchebas (Client Quit) 02:29:53 --- join: mrchebas (n=alexey@ster.cs.uu.nl) joined #haskell 02:32:11 --- join: yitz (n=abba@line236.adsl.actcom.co.il) joined #haskell 02:33:16 --- quit: prb () 02:33:17 --- join: gabkdlly (n=gabriel@dslb-088-073-040-137.pools.arcor-ip.net) joined #haskell 02:34:56 --- join: hkBst (n=hkBst@gentoo/developer/hkbst) joined #haskell 02:35:47 --- join: dibblego (n=nobody@220-245-107-64.static.tpgi.com.au) joined #haskell 02:39:10 --- join: exDM69 (n=rsalmin2@omena.hut.fi) joined #haskell 02:40:18 --- quit: phb2 () 02:42:20 --- quit: dibblego ("Leaving") 02:43:57 --- join: dibblego (n=nobody@220-245-107-64.static.tpgi.com.au) joined #haskell 02:46:32 --- join: malcolmw (n=malcolm@venice.cs.york.ac.uk) joined #haskell 02:47:20 --- quit: Tykom () 02:49:37 Anyone here ever spend time computing lambda expressions? 02:49:54 yes, we do that all day long 02:50:15 yitz: Is that a question? =p 02:51:00 I haven't so much, but I just noticed a weird identity: let c=(.), and let c4=c c c c. Then we have that c c4 == c c4 c c c c. Ever see stuff like that? 02:52:43 @pl let {c = (.); c4 = c c c c} in c4 02:52:43 (line 1, column 5): 02:52:43 unexpected "{" 02:52:43 expecting natural, identifier or "in" 02:53:00 unpl i'd think 02:53:07 right 02:53:10 either way it hates me 02:53:14 --- nick: sior|sleep -> sioraiocht 02:53:16 --- join: mrighele (n=mrighele@metropolis.sci.univr.it) joined #haskell 02:53:25 It was probably the "sleep". 02:53:32 @unpl let c = (.); c4 = c c c c in c c4 02:53:32 let { c a b d = a (b d); c4 = c c c c} in c c4 02:53:42 bah 02:53:45 no help 02:54:03 @type (.) ((.)(.)(.)(.)) 02:54:05 forall a a1 b c a2 a3. (a3 -> a -> a1 -> b -> c) -> a3 -> a -> a1 -> (a2 -> b) -> a2 -> c 02:55:18 Given a func w/ 4 params, it composes on the 3rd, w/ the composing func. specified between params 2 and 3. 02:55:50 @type let{c=(.);c4=c c c c}in c c4 c c c c 02:55:52 forall a a1 a2 b c a3. (a -> a1 -> a2 -> b -> c) -> a -> a1 -> a2 -> (a3 -> b) -> a3 -> c 02:56:53 Same type. In fact, they are equal. Prove it by repeatedly applying the identity x (y z)==c x y z. 02:57:19 --- join: mlesniak (n=chatzill@dhcp244.dcaiti.TU-Berlin.DE) joined #haskell 02:57:41 --- quit: bringert () 02:58:44 In fact, that identity is a semi-associativity condition that makes the entire lambda calculus into a semi-monoid. Apparently with quite interesting structure, as my example shows. 02:59:49 c c2 == c4. c c3 == c7. But c cn cannot be reduced for n>3. More interesting stuff like that if you throw flip into the mix. 02:59:50 --- quit: MyCatSchemes ("Swim, swim, hungry!") 03:02:51 --- quit: dogmaT (Read error: 113 (No route to host)) 03:03:15 Oops, sorry, composing func. specified between 3 and 4. Anyway. 03:05:49 yes, interesting 03:07:46 I discovered these things while playing with @pl, some strange and vary surprising patterns start to appear. 03:08:09 --- quit: dibblego ("Leaving") 03:08:09 --- join: swiert (n=wss@sneezy.cs.nott.ac.uk) joined #haskell 03:09:21 --- join: zx]treads (n=student@195.251.214.51) joined #haskell 03:09:55 --- join: gour (n=Gour@3-180.dsl.iskon.hr) joined #haskell 03:11:47 Maybe I'll post it to the cafe. 03:14:03 --- join: chris2 (n=chris@p5B16A71F.dip0.t-ipconnect.de) joined #haskell 03:16:42 --- quit: boegel (Read error: 110 (Connection timed out)) 03:16:48 --- quit: meryrus () 03:17:32 --- join: merus (n=merus@vlan-125-087.onu.edu) joined #haskell 03:18:01 --- quit: fxr (Remote closed the connection) 03:24:10 --- join: ptx (n=ptxmac@0x5550c853.adsl.cybercity.dk) joined #haskell 03:26:36 --- join: tarrybon1 (n=dlc@c-71-60-148-169.hsd1.pa.comcast.net) joined #haskell 03:27:20 --- quit: Thas (Read error: 110 (Connection timed out)) 03:27:25 --- join: snearch (n=snearch@e178044047.adsl.alicedsl.de) joined #haskell 03:28:48 --- join: misterbeebee_ (n=mike@71-35-157-132.tukw.qwest.net) joined #haskell 03:32:48 --- join: Taejo (n=max@196.210.103.191) joined #haskell 03:33:53 --- join: apfelmus (n=apfelmus@F7301.f.ppp-pool.de) joined #haskell 03:34:19 --- join: gimbo (i=gimbo@mini.theravensnest.org) joined #haskell 03:34:23 --- quit: misterbeebee (Read error: 110 (Connection timed out)) 03:36:32 :'( I'd like to create a Geometry.2D module namespace 03:36:32 Hi apfelmus. We were just discussing something I noticed yesterday. I posted it to the cafe. Do you know anything about that stuff? 03:37:03 but 2D is not a valid module name. any alternative thoughts? 03:37:13 TwoDee ? 03:37:28 yitz: uh, oh? /me looks 03:37:37 --- quit: tarrybone (Connection timed out) 03:37:55 Planar 03:38:25 Planar sounds good. But is there a nice name with the numeral 2 in there? 03:39:28 PlanarInOtherWords2Dimensional. um... 03:39:39 short if possible :) 03:39:44 Space2D? 03:40:07 Plane2D ? 03:40:41 --- quit: Averell (Read error: 110 (Connection timed out)) 03:41:57 --- quit: Cale_ (Read error: 104 (Connection reset by peer)) 03:42:22 I guess the "InOtherWords" is implicit... 03:43:28 --- join: Averell (n=averell@p3m/member/Averell) joined #haskell 03:43:42 :) It's a bit redundant, though since Plane or 2D alone would be enough 03:44:24 --- join: igel (n=igel@brsg-4db2d323.pool.einsundeins.de) joined #haskell 03:45:01 --- quit: snearch ("Nettalk6 - www.ntalk.de") 03:45:12 --- join: boegel (n=boegel@konijn.elis.UGent.be) joined #haskell 03:47:31 --- join: GNU\caust1c (n=caust1c@a207.wh-wieland.uni-ulm.de) joined #haskell 03:51:04 --- join: phb2 (n=phb2@c213-100-44-22.swipnet.se) joined #haskell 03:51:21 --- quit: phb2 (Client Quit) 03:53:41 yitz: my head hums. how do you prove c c4 = c c4 c c c c ? 03:53:53 I just get stuck :) 03:54:20 is it better to install haddock, pfesetup, alex, c2hs, cpphs, greencard before installing happy to compile and install ghc-head ??? 03:54:51 > let reg = mkRegex "(\\d)" in show $ matchRegex reg "d123" 03:54:52 Not in scope: `matchRegex' 03:56:03 apfelmus: Geometry.TwoD 03:56:23 --- quit: KatieHuber () 03:56:26 kaol: no regex in lambdabot 03:56:46 I just wanted to check if it would give Just ["d"] as the result, too 03:57:08 --- quit: boegel ("Leaving") 03:57:41 bah. good for nothing Text.Regex, if it doesn't even understand \d 03:57:47 --- join: VerbalDK (n=jensfrad@port35.ds1-ns.adsl.cybercity.dk) joined #haskell 03:58:15 * geocalc =<< help !!! 03:58:22 text.regex uses yoru system regexp library, I thought 03:58:37 yitz pasted "Proof that c c4 == c c4 c c c c" at http://hpaste.org/3172 03:58:51 kaol: I don't think \d is regexp 03:59:00 kaol: I think that's a perl-only thing? 04:00:05 looks like so... Hmpf. 04:00:35 * kaol considers using FFI to call perl 04:00:57 ! 04:01:13 I have two alternatives to suggest 04:01:30 a. use the regexp notation for that, which is [[:digit:]] 04:01:37 --- join: twanvl (n=twanvl@ip5451f037.direct-adsl.nl) joined #haskell 04:01:51 b. observer that regexps are extraordinarily ugly and use some nicer looking parser combinators 04:02:07 c. let d = [0-9] 04:02:09 or regexp combinators 04:02:19 they aren't quite as ugly 04:03:03 SamB_XP: I've never understood the point, though. why not just use parser combinators? 04:03:13 --- join: fritschy (n=x06180@X715f.x.pppool.de) joined #haskell 04:03:18 The point of regexp is they are a convenient language for expressing matching 04:03:23 I have bunch of stuff in the DB and some of the items have a regexp attached to them. 04:03:36 btu as technoloogy has evolved they no longer seem so attractice 04:03:40 ah 04:03:42 in perl format? 04:03:45 yes 04:04:04 well that does explain it 04:04:08 though I don't think that there's anything in there that I couldn't express as POSIX regexpes too 04:04:10 have you considered Text.Regex.PCRE 04:04:12 quicksilver: they aren't so bad when you are making a two-level parser... 04:04:26 also Yi uses them for key bindings 04:04:28 doesn't it? 04:04:58 SamB_XP: no, they're not that bad. ~But I don't think they're that good, either :) I just don't know why any new system would choose to use them. 04:05:17 quicksilver: I certainly don't like a lot of the things regexps are used for 04:05:18 yitz: ah, i found one, too. interesting, interesting. i don't know anything about it, but digging under "Combinatory Logic" should reveal interesting things 04:05:42 --- quit: gkr (Read error: 113 (No route to host)) 04:06:31 yup, looks like the most exotic thing I've used was \d. Easy enough to replace with [0-9] 04:06:36 yitz: http://en.wikipedia.org/wiki/Combinatory_logic#Combinators_B.2C_C 04:06:47 apparently, c is the B combinator 04:07:14 unfortunately, I've got to run off for lunch 04:07:15 see you 04:07:35 is it better to install haddock, pfesetup, alex, c2hs, cpphs, greencard before installing happy to compile and install ghc-head ??? 04:08:09 I don't think happy requires haddock, cpphs, or greencard 04:08:09 malcolmw: You have 1 new message. '/msg lambdabot @messages' to read it. 04:08:45 ok malcolmw thanks 04:08:48 geocalc: maybe Cabal's generic warnings are confusing 04:09:12 hahhh 04:12:37 --- nick: Eelis- -> Eelis 04:13:25 --- quit: progexp101 (Read error: 104 (Connection reset by peer)) 04:13:54 --- join: MyCatSchemes (n=rb6822@yilko.cs.bris.ac.uk) joined #haskell 04:14:43 hm. Has anyone bootstrapped GHC for FreeBSD7/amd64 yet? 04:15:03 --- quit: apfelmus () 04:17:34 apfelmus: yes, and flip is C. 04:17:46 profmakx-> by looking at ghc state page seems no 04:18:04 well 04:18:10 then i will do that tonight i think 04:18:23 cool 04:24:07 hmm, shouldn't http://darcs.haskell.org/generics/comparison/ have a _darcs directory? 04:24:08 Title: Index of /generics/comparison 04:24:14 --- join: tarrybone (n=dlc@c-71-60-148-169.hsd1.pa.comcast.net) joined #haskell 04:24:22 oh, it's parent has one... 04:25:04 --- join: nominolo (n=nominolo@dhcp-249-5.nomad.chalmers.se) joined #haskell 04:28:17 --- join: progexp101 (i=progexp@gateway/tor/x-10473f2eaa167ca9) joined #haskell 04:31:39 smash your boilerplate is interesting... 04:31:47 --- quit: mlesniak ("ChatZilla 0.9.78.1 [Firefox 2.0.0.7/2007091417]") 04:34:42 --- quit: tarrybon1 (Read error: 110 (Connection timed out)) 04:35:05 --- quit: fritschy ("Leaving.") 04:35:38 --- nick: sioraiocht -> sior|away 04:36:11 --- quit: zx]treads (Remote closed the connection) 04:40:34 --- quit: NichardRixon (Read error: 110 (Connection timed out)) 04:42:28 --- quit: gabkdlly (Read error: 110 (Connection timed out)) 04:42:31 --- join: dogmaT (n=dogmat@r2aj154.net.upc.cz) joined #haskell 04:43:11 --- join: gabkdlly (n=gabriel@dslb-088-073-040-137.pools.arcor-ip.net) joined #haskell 04:43:27 ac: ping, you were having issues with gtk2hs timeouts? what was the problem exactly? 04:43:59 dcoutts_: I think he was struggling to get IORefs working so the timeout could share state 04:44:06 dcoutts_: I believe he got it working in the end 04:44:12 ah ok, good 04:44:21 although I suggested IORefs were overkill and just capturin the state in the closure is easier and more functional :) 04:44:37 --- nick: merus -> meryrus 04:44:55 --- quit: dv^^ (Remote closed the connection) 04:46:20 --- join: dv^^ (i=dv@gateway/tor/x-be71e57c26117f0c) joined #haskell 04:46:36 I noticed somethign about refactoring in haskell, actually 04:46:47 if you make a pretty broad-ranging change to your code 04:46:56 (like changing the data representation of something) 04:47:06 if the old code works, and the new code typechecks, it generally works 04:47:44 this is in contrast to dynamic languages where after a big change you have to check *ever* piece of code which directly or indirectly depends on what you changed... or there may be bugs lurking in rarely used code-paths 04:47:46 --- quit: swiert ("bbl") 04:49:09 quicksilver: I noticed that too, and it gave me a warm fuzzy feeling ;) 04:50:04 ooh, scratch your boilerplate is really neet... 04:50:05 i noticed quite a few positive things about refactoring and changing haskell code 04:51:04 --- quit: yitz () 04:51:23 of course, it's not a rigorous theorem. Clearly you can choose to use wooly dynamic data structures and get wooly dynamic problems :) 04:51:30 but it's an observation about code in practice 04:52:16 --- join: bringert (n=bringert@3-1-5-7a.gva.gbg.bostream.se) joined #haskell 04:52:34 --- join: CindyLinz (i=b91101@bsd7.csie.ntu.edu.tw) joined #haskell 04:53:51 quicksilver: but hopefully you don't use any given one very often in a program 04:54:02 --- quit: bringert (Client Quit) 04:54:13 JHC uses a few dynamic things 04:54:33 I think changing one would still cause the code using it to not typecheck, though 04:54:46 SamB: sometimes I wish for a nice automatic derivation thingy to make wooly structures from wool-free structures 04:55:06 SamB: e.g. given data Foo a = Bar a (Foo a) | Baz (Foo a) (Foo a) 04:55:12 quicksilver: if you could have wool-free ones, why would you need them woolified 04:55:20 --- quit: blarz (Remote closed the connection) 04:55:31 --- join: blarz (n=simon@blarzwurst.de) joined #haskell 04:55:38 or rather if you had already written it that way 04:55:52 wouldn't wool-free be the way you'd want it to stay? 04:55:57 SamB: for generic programming type stuff 04:56:01 oh. 04:56:01 traversing the tree generically 04:56:07 a type for 'current branch' 04:56:15 a type for 'other gunk attached to this branch' 04:56:32 autmatic construction of zipper from data 04:56:34 that sort of thing 04:56:46 It would be sledgehammer to crack nut type stuff, a lot of the time 04:56:47 and very ugly 04:56:53 so it's not a serious proposal :) 04:56:54 --- quit: mr_tenor (Remote closed the connection) 04:57:06 seen Uniplate? 04:57:09 yes 04:57:16 helps somewhat :) 04:57:22 a case in point, actually 04:57:32 suppose you have a structure Foo, and a zipper FooZipper 04:57:37 and you write pretty-printers for both 04:57:48 the pretty-printer for FooZipper does the "same thing" at each actual node 04:57:58 but it passes continuations back up the tree 04:58:09 whereas the pretty-printer for Foo works 'forwards/downwards' like always 04:58:25 so you have a backwards/CPS version, and a forwards/recdescent version 04:58:31 but they do teh same thing at each actual node 04:58:35 and you can't share the code :( 04:58:37 annoying 04:58:47 you sure? 04:58:51 no 04:58:57 I'll hpaste some code if you like 04:59:01 and you can tell me I'm being stupid :) 04:59:14 --- join: zx]treads (n=student@195.251.214.51) joined #haskell 04:59:15 I thought it would be possible to use combinators for traversal which have a different strategy 04:59:34 and you plug in the same action for each node, independent of strategy 05:00:30 quicksilver pasted "zipper pretty print: boilerplate?" at http://hpaste.org/3174 05:00:34 there you are 05:00:47 displayPt for the object itself, displayContext for the zipper 05:00:53 very similar code btu I couldn't see how to unify 05:01:50 --- quit: cbe (Remote closed the connection) 05:01:52 --- join: balodja1 (n=noname@62.117.85.97) joined #haskell 05:02:27 hmm, the types are not isomorphic though, are they? 05:02:35 --- quit: balodja (Read error: 113 (No route to host)) 05:03:10 well zippers aren't normall isomorphic to the object they zip 05:03:12 that's rather the point 05:03:18 --- nick: idnar_ -> idnar 05:03:27 the zipper doesn't have any constructor for the 'Leaf' nodes (Gradient and Noise) 05:03:33 because you can never been 'in' a 'Leaf' 05:03:48 and the zippper has two constructors for binary nodes like Blend 05:03:52 and, of course, the zipper has a Top 05:03:56 --- join: Tychom (n=tychom@m146.net81-64-90.noos.fr) joined #haskell 05:04:25 --- quit: MyCatSchemes ("Swim, swim, hungry!") 05:04:34 --- join: sad0ur_ (n=sad0ur@rb1a240.net.upc.cz) joined #haskell 05:04:46 well, I'm not sure there is much boilerplate in your example really 05:05:08 well the drawStrs and the indents 05:05:09 I mean, the drawStr stuff is different for every constructor 05:05:25 yes, but it's the same for corresponding constructors in type and zipper 05:05:48 the indents look like you could do something 05:06:32 "corresponding constructors" - but how do we know they are corresponding? only by the name I guess 05:07:04 well the correspondance is formalised by the definitions of 'up' and 'down' 05:07:07 (not shown) 05:07:26 e.g: ptc_down' (PTC c (Scale s pt)) = Just$PTC (PTCScale s c) pt 05:07:39 but yes, that is the nub of it 05:07:46 even with the indents, I'm not sure you could generate them automatically, because the pattern is non-regular (cf. PTCBlendRight) 05:07:52 makes me want a third type 05:07:56 'FTNode' 05:08:05 which can then be used in both plain and zipper versions 05:08:54 such that PTCScale s c' becomes (PTC (NodeScale s) c'), while Scale s text becomes PT (NodeScale s) tex 05:08:55 --- quit: gbeshers ("Leaving") 05:09:06 but that doesn't quite work because the arities aren't always the same 05:09:12 and it makes my basic ADT less natural... 05:09:26 hence, my comments about wooly and non-wooly and automatic type generation 05:09:49 type families perhaps? 05:09:58 I wondered that 05:10:07 --- join: Rebooted (n=opera@88-104-185-170.dynamic.dsl.as9105.com) joined #haskell 05:10:08 but I haven't explored them yet 05:10:32 I mean, you could have a totally generic syntax tree type, parameterised by node types 05:10:38 --- quit: Tychom () 05:11:37 --- join: andyjgill (n=andyjgil@c-76-105-238-134.hsd1.or.comcast.net) joined #haskell 05:11:42 data SyntaxTree n = Nullary n | Unary n (SyntaxTree n) | Binary n (SyntaxTree n) (SyntaxTree n) | .... 05:11:55 and then you could have a single generic zipper corresponding to that 05:11:56 --- quit: zx]treads (Read error: 104 (Connection reset by peer)) 05:12:03 and parameterise the whole lot by a node type 05:12:22 ... but, that isn't type safe, because it doesn't force you to only use binary nodes in a binary way 05:12:32 I think you could solve *that* using GADTs 05:13:13 --- part: blueriver left #haskell 05:13:31 --- join: dfeuer_ (n=David@pool-71-163-172-151.washdc.fios.verizon.net) joined #haskell 05:13:59 but whatever you do, it's a whole lot less convenient than your original ADT. 05:14:23 --- quit: dogmaT (Read error: 113 (No route to host)) 05:16:26 --- join: bringert (n=bringert@3-1-5-7a.gva.gbg.bostream.se) joined #haskell 05:17:22 --- quit: nominolo (Read error: 110 (Connection timed out)) 05:17:36 --- quit: bringert (Client Quit) 05:19:37 --- join: Thas (n=robertm@75-172-19-225.tukw.qwest.net) joined #haskell 05:21:57 --- quit: Arnia (Connection timed out) 05:25:03 --- join: boegel (n=boegel@konijn.elis.UGent.be) joined #haskell 05:30:34 --- join: iblechbot (n=iblechbo@ppp-62-216-197-248.dynamic.mnet-online.de) joined #haskell 05:31:10 --- part: Rebooted left #haskell 05:31:18 --- join: matt__r (n=matt__r@CPE-121-209-185-196.nsw.bigpond.net.au) joined #haskell 05:31:19 --- join: Arnia (n=jgeldart@client-82-3-80-61.manc.adsl.virgin.net) joined #haskell 05:32:07 I have a simple cabal script (distribution.Simple) set up and it *seems* to rebuild everything every time 05:34:46 and you're just doing "runhaskell Setup.hs build" between builds? 05:34:51 --- quit: augustss () 05:35:06 yep 05:35:16 I am just getting some empirial evidence now 05:35:32 --- join: fasta (n=fasta@zonnebloem.demon.nl) joined #haskell 05:35:54 time for first build is 26 secs; touch one source file and build again - 27sec. 05:36:30 touch nothing and build takes 24 secs 05:36:31 do you have -fforce-recomp in any file or options anywhere? 05:36:39 give or take a second or two 05:36:46 Why doesn't this work? :t \a -> fst $ runST a By that I mean: is it just an implementation problem or is it a more serious problem? 05:37:04 matthew-_: nope 05:37:31 matt__r: is the filesystem mounted with noatime or anything odd like that? 05:38:02 I can't imagine, this is (fairly) vanilla osx and the files are on my boot disk 05:38:35 :q 05:38:37 matt__r: maybe everything depends on the file you touched? 05:38:39 oops 05:39:03 --- join: augustss (n=Lennart@63.175.43.10) joined #haskell 05:39:05 but what about the untouched one, with no changes between builds, I still get 20+ seconds 05:39:11 matt__r: and you don't use the module system. 05:39:19 (quite unlikely) 05:39:19 you bet I do 05:39:30 matt__r: ok, then file a bug :) 05:39:35 how could you not? 05:40:00 cool 05:40:18 matt__r: how much code are we talking about here? 05:40:32 dumping a few thousand lines of code in a bug report is not a good idea 05:40:46 not huge amounts - ummm, I would guess around 1500 lines ???? 05:41:03 matt__r: you should try to simplify the problem. 05:41:15 and which versions of everything? 05:41:18 A universal simplifier would be so nice :) 05:41:21 you mean before I file the bug? 05:41:24 yep 05:41:51 cabal tells you what the first file is that it's trying to compile 05:41:55 --- join: MyCatSchemes (n=rb6822@yilko.cs.bris.ac.uk) joined #haskell 05:42:00 does that give you any clues? 05:42:08 matt__r pasted "versions of everything" at http://hpaste.org/3175 05:42:37 it just compiles everything everytime 05:42:56 matt__r: when you do what? 05:43:02 regardless of dependencies or even if any of the files changed 05:43:23 ?? 05:43:42 matt__r: you must give the machine some command before compilation begins. 05:43:46 matt__r: what is that command? 05:43:46 do you have another machine you can test on? - will the code compile on a linux or windows box, for example? 05:44:12 runhaskell ./Setup.hs build 05:45:02 matt__r: I have no idea, simplify(test on another platform) and file a bug. 05:45:16 hmmm. does it still do it if you do a clean and configure 05:45:20 --- join: glen_quagmire (n=glen_qua@pool-71-247-255-87.nycmny.east.verizon.net) joined #haskell 05:45:27 Well, I will make a little project that stil exhibits the behaviour and post it up on my public repo and then test it on a few machines tomorrow when I am back at work. 05:45:29 I'm just wondering whether the config files have got confused 05:45:34 thanks for the suggestions 05:45:45 I have tried clean and reconfigure 05:46:05 try another platform if you can to see if it's something odd with your local install 05:46:16 but I'm outta ideas too on that one 05:47:12 --- join: nominolo (n=nominolo@dhcp-248-121.nomad.chalmers.se) joined #haskell 05:47:15 or just install linux on your mac, replacing OSX. Then try again. 05:47:17 * matthew_- ducks 05:48:07 > 2**(-1) - 2**(-55) -- how come when exponent is different by 54, the smaller number becomes 0.0 ? 05:48:09 0.5 05:48:38 @go what every computer scientist should know about floating point 05:48:40 http://docs.sun.com/source/806-3568/ncg_goldberg.html 05:48:40 Title: What Every Computer Scientist Should Know About Floating-Point Arithmetic 05:48:40 explains 05:49:24 > 2^^(-1) - 2^^(-55) 05:49:25 0.5 05:49:32 > 2^^(-1) - 2^^(-55)::Rational 05:49:33 18014398509481983%36028797018963968 05:49:59 > 2**(-1) - 2**(-30) 05:50:00 0.4999999990686774 05:50:04 > 2**(-1) - 2**(-30)::Float 05:50:05 0.5 05:50:20 for Float it's different by 25 05:50:28 fasta: did anyone answer your $ runST question? 05:50:32 quicksilver: no 05:50:46 --- join: swiert (n=wss@sneezy.cs.nott.ac.uk) joined #haskell 05:50:46 > 2**(-124) - 2**(-149) :: Float 05:50:48 4.7019774e-38 05:50:48 --- join: cmarcelo (n=cmarcelo@200.184.118.132) joined #haskell 05:50:50 fasta: it's because $ is polymorhic 05:50:57 > 2**(-124) :: Float 05:50:58 4.7019774e-38 05:50:59 fasta: but polymorphism is only over rank-1 types 05:51:15 fasta: so a polymorphic function can't be instantiated at a rank-2 type like runST 05:51:15 even for denormalized numbers, it's number of fraction bits + 2 05:51:23 quicksilver: that doesn't answer the question, does it? 05:51:26 > floatDigits 0 05:51:27 53 05:51:30 fasta: I'm getting there :) 05:51:36 > floatDigits (0::Float) 05:51:37 24 05:51:40 quicksilver: (since that part I already knew) 05:51:42 fasta: the reason for this restriction is to make type inference work 05:51:51 Float has 23 bits for fraction . So, exponents should be different by 24 or more. For Double, 52 + 2 = 54 05:51:57 I can't find why +2 is needed 05:51:59 --- quit: iblechbot (Read error: 110 (Connection timed out)) 05:52:10 s/24/25 05:52:16 glen_quagmire: It will always be one more than the numbe returned by floatDigits 05:52:24 fasta: the augmented H-M algorithm used for type inference makes certain assumptions which wouldbe violated by instantiating polymorphics at rank-2 types. 05:52:29 at least assuming isIEEE is true 05:52:35 > isIEEE 0 05:52:36 True 05:52:42 > isIEEE (0::Float) 05:52:43 True 05:52:51 fasta: certainly people have discussed whether or not you can improve on this situation, but GHC can't 05:53:09 quicksilver: well, I am interested in the outcome of the discussion :) 05:53:34 quicksilver: or did they just talk and it was just that nothing came of it? ;) 05:53:34 --- quit: MyCatSchemes ("Swim, swim, hungry!") 05:54:16 --- join: pastorn-rr (n=rustmeis@dhcp-243-8.nomad.chalmers.se) joined #haskell 05:54:16 --- quit: pastorn-rr (Client Quit) 05:54:23 --- join: pastorn-rr (n=rustmeis@dhcp-243-8.nomad.chalmers.se) joined #haskell 05:54:29 --- quit: dfeuer_ (No route to host) 05:54:29 In the case I shown it doesn't look like an incomputable function. 05:54:36 +have 05:55:23 http://www.haskell.org/pipermail/haskell-cafe/2007-January/021047.html 05:55:23 --- join: Tychom (n=tychom@m146.net81-64-90.noos.fr) joined #haskell 05:55:25 Title: [Haskell-cafe] Composing functions with runST, http://tinyurl.com/ytrq68 05:55:41 fasta: that post might be helpful (or possibly some of the rest of the thread) 05:55:50 certainly conor's post, which it quotes 05:55:56 roconnor: oh It kinda makes sense. floatDigits (0::Float) is 24. When exponent is different by 25, there will be 24 leading 0's when exponents are matched up for arithmetic 05:56:17 quicksilver: I think I saw that post, but I will read it again. Thanks 05:56:20 --- join: yitz (n=abba@line236.adsl.actcom.co.il) joined #haskell 05:56:25 --- join: dogmaT (n=dogmat@r2aj154.net.upc.cz) joined #haskell 05:56:57 glen_quagmire: I think it is more of a matter that the result gets truncated to 24 digits 05:57:09 --- join: audreyt_ (n=audrey@220-130-166-8.HINET-IP.hinet.net) joined #haskell 05:57:12 --- join: Arnia_ (n=jgeldart@client-82-27-247-58.glfd.adsl.virgin.net) joined #haskell 05:57:15 --- quit: ari (Read error: 110 (Connection timed out)) 05:57:34 --- quit: int-e ("leaving") 05:57:55 * roconnor tries to remember what the IEEE says about subtraction 05:58:39 roconnor: a - b will calculate a number almost, but not entirely, unlike the difference between a and b 05:59:20 * EvilTerran refers to the link he @go'd earlier 06:01:13 --- quit: Arnia (Connection timed out) 06:02:06 :D 06:03:02 --- quit: njbartlett () 06:03:57 --- quit: atsampson (Remote closed the connection) 06:04:08 --- join: atsampson (n=ats@7hw.poik.net) joined #haskell 06:04:50 --- join: kpreid (n=kpreid@cpe-24-59-154-165.twcny.res.rr.com) joined #haskell 06:05:00 --- quit: arossato (Remote closed the connection) 06:05:38 --- join: arossato (n=arossato@host193-174-dynamic.14-87-r.retail.telecomitalia.it) joined #haskell 06:07:23 quicksilver, what does that mean? 06:09:07 Taejo, it means it might not be very accurate when numbers of widely different magnatudes are involved, and that quicksilver has read HHGG 06:09:47 ;) 06:09:47 ah, yes, I thought I recognised some HHGG there, but I still can't remember the reference 06:10:07 the drinks machine on the heart of gold produced something almost, but not entirely, unlike tea, iirc 06:10:19 indeed 06:11:50 --- join: agoode (n=agoode@2001:4830:1633:0:212:3fff:fe70:6222) joined #haskell 06:12:35 --- nick: tizoc_ -> tizoc 06:12:54 --- quit: ski (Remote closed the connection) 06:13:36 --- quit: haraldk (Remote closed the connection) 06:14:33 --- quit: audreyt (Read error: 110 (Connection timed out)) 06:14:40 --- join: pizza_ (n=pizza@66.152.246.202) joined #haskell 06:18:12 --- quit: pizza_ (Client Quit) 06:18:38 --- join: ski (n=slj@c-bd10e055.1149-1-64736c10.cust.bredbandsbolaget.se) joined #haskell 06:20:40 --- join: mikael (n=mikael@dhcp-249-75.nomad.chalmers.se) joined #haskell 06:20:45 --- join: Nshag (i=user@Mix-Orleans-106-3-229.w193-248.abo.wanadoo.fr) joined #haskell 06:21:04 The module system was inconvenient so I just dumped everything in one file. (there must be a refactoring for that, and also for the inverse operation) 06:22:12 --- join: pizza_ (n=pizza@poipu/supporter/pizza-milkshake) joined #haskell 06:22:23 fasta: I was wanting that earlier today, for an optimisation experiment 06:22:50 fasta: in module optimisation can be more aggressive than cross-module, and I was curious if it would make a different for my program. But not curious enough to try it and see :) 06:23:03 quicksilver: oh, I wanted it to debug something 06:23:11 quicksilver: I need lots of imports otherwise. 06:23:13 --- join: mattrepl (n=mattrepl@pool-71-246-224-160.washdc.fios.verizon.net) joined #haskell 06:23:20 --- quit: gabkdlly (Read error: 110 (Connection timed out)) 06:23:41 quicksilver: a module with 3800 lines of code result :P 06:23:45 results* 06:23:56 (well, that's not everything (of course)) 06:24:06 Just everything that's relevant. 06:24:16 --- join: gabkdlly (n=gabriel@dslb-088-073-040-137.pools.arcor-ip.net) joined #haskell 06:24:19 --- quit: mikael (Client Quit) 06:24:41 --- quit: boegel ("This computer has gone to sleep") 06:25:38 quicksilver: that shows that tool support is important 06:26:19 I fixed my bug, though. :) 06:26:27 --- quit: Arnia_ (Read error: 110 (Connection timed out)) 06:26:51 I handled a situation twice (on two data structure levels) 06:27:12 Thereby producing the complete opposite effect. 06:27:26 Which of course only occurs for more complicated cases... 06:30:10 --- join: _ry (n=ry@cable-81-173-134-106.netcologne.de) joined #haskell 06:30:10 --- join: mikael (n=mikael@dhcp-249-75.nomad.chalmers.se) joined #haskell 06:33:50 --- join: Arnia (n=jgeldart@client-82-27-251-253.glfd.adsl.virgin.net) joined #haskell 06:33:58 fasta, I think it's fairly well known that good tools are important. (Hence GHC HQ putting in the debugger, for example). 06:34:29 some good refactoring tools would be lovely 06:34:36 pejo: sure, but the debugger is not ready. 06:34:41 I keep meaning to look at hare and see how far they got, and whether the code is dead 06:36:17 I find myself doing stuff like return . foo >>= return . bar >>= return . baz. It seems to me that having a monad in a chain like that is just useless baggage. Is there some simpler idiom for this that I've missed? 06:36:49 --- join: boegel (n=boegel@konijn.elis.UGent.be) joined #haskell 06:36:51 --- quit: pastorn-rr ("Leaving") 06:37:00 --- join: LPhas (n=Phas@81-208-106-68.ip.fastwebnet.it) joined #haskell 06:37:05 kaol: ordinary function composition? 06:37:06 baz . bar . foo ? 06:37:07 liftM (baz.bar.foo)? 06:37:11 kaol: you don't have to use a monad 06:37:17 http://www.flickr.com/photos/carlzimmer/1414689773/in/set-72157601351535771/ 06:37:20 Title: The Y Combinator.jpg on Flickr - Photo Sharing!, http://tinyurl.com/22xofm 06:37:29 once a Float becomes Infinity, i can't subtract enough number to make it normal again? 06:37:40 > (5e35 * 5e35) / 5e35:: Float 06:37:42 680.56476 06:37:47 matthew_-: isn't that a fake? 06:37:58 matthew_-: it looks like someone creative with PS. 06:38:00 weird, on my machine, that's Infinity 06:38:04 glen_quagmire: no, you can't. You can think of Infinity as a kind of error value giving information about divergence. 06:38:07 matthew_-: and it's old 06:38:07 it's that simple? perhaps I just haven't thought this out. 06:38:15 Cale: ah thank you 06:38:20 --- join: cognominal_ (n=cognomin@cac94-1-82-67-232-89.fbx.proxad.net) joined #haskell 06:38:55 glen_quagmire: subtracting it from itself will give NaN 06:39:09 and NaN doesn't turn into anything else. 06:39:27 > reverse "NaN" 06:39:28 "NaN" 06:39:32 damn it, cale's right! 06:39:33 magic 06:40:02 @pl (flip (.)) 06:40:02 flip (.) 06:40:14 --- quit: seafoodX () 06:40:27 * quicksilver peers at kaol 06:40:36 kaol: it didn't have any points in :P 06:40:45 > let a = 5e35 :: Float in (a * a) / a 06:40:46 680.56476 06:40:51 --- quit: cognominal_ (Client Quit) 06:40:58 > let a = 5e35 :: Float in (a * a) 06:40:58 You could define a "reverse ." operator 06:40:59 Infinity 06:41:09 that's very peculiar 06:41:21 maybe lambdabot optimizes stuff 06:41:29 probably lambdabot is useing -fexcess-precision 06:41:30 --- join: cognominal_ (n=cognomin@cac94-1-82-67-232-89.fbx.proxad.net) joined #haskell 06:42:27 there is not such option quicksilver 06:42:34 what do you mean? 06:42:35 @g -fexcess-precision 06:42:35 Maybe you meant: gazetteer get-shapr ghc girl19 google gsite gwiki . v 06:42:38 of course there is 06:42:42 it's a ghc option 06:42:46 and lambdabot uses ghc :P 06:42:59 i mean, google doesn't return that 06:43:06 * glen_quagmire searches on haskell.org 06:43:07 it allows it to store intermediate values of calculations in registers 06:43:24 and since registers have more precision, you may get slightly different answers 06:43:31 that is, excess precision :) 06:43:39 --- join: der_eq (n=eq@dslb-088-070-118-189.pools.arcor-ip.net) joined #haskell 06:43:49 hmm, no google hits, for that flag 06:43:51 that's pretty interesting 06:43:55 quicksilver: does that also work for ints or only floating point? 06:43:57 oh. google interprets - in -fexcess-precision in its own way 06:43:57 oh 06:43:58 --- quit: augustss () 06:44:00 you need to quote it 06:44:07 @g fexcess-precision 06:44:07 Maybe you meant: gazetteer get-shapr ghc girl19 google gsite gwiki . v 06:44:08 glen_quagmire: you should perhaps google for fexcess-precision, - in the front of a search term causes the pages not containing that word to be searched 06:44:10 * idnar smacks forehead 06:44:18 I have 468 hits for it :) 06:44:35 glen_quagmire: oh, you noticed already :-) 06:45:01 --- quit: raxas ("leaving") 06:45:26 hrm with -fexcess-precision, I still get Infinity for (5e35 * 5e35) / 5e35 :: Float 06:45:44 odd. try with -O2 as well? 06:46:28 still Infinity. I 'm trying it in ghci -fexcess-precision -O2 06:46:56 you might have to compile it 06:47:07 I shouldn't think -fexcess-precision makes any different to interpreted coe 06:47:08 code 06:47:19 --- quit: agoode (No route to host) 06:47:20 but isn't lambabot interpreter? 06:47:32 not exactly, iirc 06:47:34 I'm not sure if -O2 makes any different 06:47:42 (to interepreted code) 06:47:45 it's hsPlugins, whatever that does 06:47:52 glen_quagmire: well obviously lambdabot is an interpreter 06:47:55 > 3+4 06:47:56 7 06:48:01 since it interprets :) 06:48:07 however, it does so by compiling 06:48:16 It is an interpreter which works by using ghc to compile code 06:48:43 unlike ghci which is an interpreter which does not compile to native code, but compiles to a kind of VM/bytecode 06:48:53 --- quit: sad0ur_ ("leaving") 06:49:27 --- quit: bgola` (Read error: 110 (Connection timed out)) 06:51:13 this is weird 06:51:26 when I compile with -O2 only, I get 680.56476, same as lambdabot 06:51:44 --- quit: andyjgill () 06:51:44 when I compile with -O2 with -fexcess-precision, I get 5e35 06:51:49 interesting 06:52:09 I suspect you've found a bug in the interpreter then 06:52:28 I think that 680.56476 is the "correct" answer for IEEE 32-bit floats 06:52:28 No i actually compiled to native binary 06:52:52 and the interpreter giving 'Infinity' is in fact a bug in the way that the ghci interpreter implements Float 06:52:56 however, that is only a guess 06:53:12 I'm no expert on floating-point edge cases 06:53:31 --make -fexcess-precision -O for the win 06:54:41 do you get different behaviour with -fvia-C and -fasm ? 06:55:13 --- join: njbartlett (n=njbartle@cpc2-barn4-0-0-cust110.brnt.cable.ntl.com) joined #haskell 06:55:23 --- join: cmarcelo_ (n=cmarcelo@200.184.118.132) joined #haskell 06:55:37 glen_quagmire: if you can be bothered, it would be interesting to try the C program "a = 5e35; b = (a*a)/a;" 06:55:40 with 'float a' 06:55:44 (well and gloat b) 06:55:54 matthew_-: --make -fvia-C -fasm returns Infinity for (5e35 * 5e35) / 5e35 06:56:07 glen_quagmire: no, one or the other. 06:56:24 "--make -fvia-C" vs "--make -fasm" 06:56:29 maybe it's optimizing that to 5e35? 06:56:57 --- quit: thepointer_ ("Leaving") 06:56:59 --- join: thepointer (n=thepoint@218.185.80.187) joined #haskell 06:57:36 matthew_-: both version returns 5e35. I think -fexcess-precision with -O will figure out 5e35 can be cancelled out on (5e35 * 5e35) / 5e35 06:58:38 from #geordi, geordi: {float a = 5e35; cout<<(a*a)/a; } returns 5e35 06:58:58 I get 499999980845158122682707800104108032 with gcc 06:59:09 --- join: augustss (n=Lennart@63.175.43.10) joined #haskell 06:59:31 > (1.7976931348623158e308, 1.7976931348623159e308) 06:59:34 (1.7976931348623157e308,Infinity) 06:59:41 Same as on my machine. 06:59:42 which I guess is pretty close to 5e35 06:59:55 --- quit: cmarcelo (Nick collision from services.) 06:59:58 --- nick: cmarcelo_ -> cmarcelo 07:00:13 but (5e35 * 5e35) / 5e35 :: Float is Infinity on my machine 07:00:21 it works correctly in lua 07:00:27 (you get back 5e35) 07:00:49 --- join: Pupeno- (n=Pupeno@dsl-37-170.dsl.netsource.ie) joined #haskell 07:01:04 --- join: andyjgill (n=andyjgil@c-76-105-238-134.hsd1.or.comcast.net) joined #haskell 07:01:30 --- join: Arnia_ (n=jgeldart@client-86-27-69-231.winn.adsl.virgin.net) joined #haskell 07:02:21 --- quit: Pupeno (Read error: 104 (Connection reset by peer)) 07:03:30 --- quit: Arnia (Read error: 110 (Connection timed out)) 07:03:48 Forget the divide: 5e35*5e35 is Infinity in ghci 07:04:12 it works in perl aswell 07:04:24 > Infinity / 0 07:04:25 Not in scope: data constructor `Infinity' 07:04:33 > Inf / 0 07:04:33 Not in scope: data constructor `Inf' 07:04:35 It should be 2.5e70, well within the limit of 1e308. Looks like a bug. 07:05:37 Wait a second - you are saying ::Float, I was looking at Double, duh 07:06:11 matthew_-: that's not really "correct" 07:06:23 matthew_-: it's supposed to give junk, since it overflows the range of Float 07:06:27 matthew_-: that's ratehr the point :) 07:06:37 matthew_-: the only question is what kind of junk you expect 07:06:45 quicksilver: meh, potato, potato ;) 07:06:51 lua + perl almost surely use double behind the scenes 07:06:55 > 5e35*5e35::Float 07:06:56 so are useless for this test 07:06:56 Infinity 07:07:02 --- quit: Lemmih ("leaving") 07:07:02 --- join: iblechbot (n=iblechbo@ppp-62-216-197-42.dynamic.mnet-online.de) joined #haskell 07:07:05 --- join: byorgey (n=byorgey@cscwlan.csc.com) joined #haskell 07:07:06 quicksilver: indeed. 07:07:14 --- quit: dblhelix ("homeward bound") 07:07:14 > (5e35*5e35)/5e35::Float 07:07:16 680.56476 07:07:24 how can I get largest Float? 07:07:26 lol 07:07:31 maxBound 07:07:33 > maxBound :: Float 07:07:34 add an instance declaration for (Bounded Float) 07:07:34 In the expression: maxB... 07:07:38 nope! 07:07:38 > 1/ 0 07:07:39 Infinity 07:07:40 oopsy! 07:07:41 there you go 07:07:43 maximum float :) 07:07:55 @let binSearch p a b|c<=a||c>=b=a|p c==LT=binSearch p c b|otherwise=binSearch p a c where{c=(a+b)/2} 07:07:58 > pred ((1/0)::Float) 07:08:02 Infinity 07:08:03 Defined. 07:08:10 what 07:08:12 > succ 1.0 07:08:13 2.0 07:08:15 evil 07:08:21 highly 07:08:27 I mean, EVIL 07:08:39 or well 07:08:42 floats are numerable 07:08:47 but real numbers aren't 07:08:59 the enum instance for float and double is quite humorous 07:09:05 since it doesn't enumerate them at all 07:09:20 what should I pass to maxBound? Bounded are enums? 07:09:20 > binSearch (flip compare (1e100::Float).(*1e38)) 1 10 07:09:21 9.999999 07:09:23 its entire raison-d'etre is the [a..b] syntax, which is pretty daft 07:09:24 > [1.0..5.0] 07:09:26 [1.0,2.0,3.0,4.0,5.0] 07:09:29 ah 07:09:30 perhaps it's needed for the betweenum trick? 07:09:31 ah 07:09:33 that, too 07:09:45 > 9.999999e38 07:09:46 9.999999e38 07:09:49 yes, really that should be a different type-class 07:09:50 > let inf = ((1/0)::Float) in take 10 . iterate pred $ inf 07:09:51 [Infinity,Infinity,Infinity,Infinity,Infinity,Infinity,Infinity,Infinity,Inf... 07:09:53 'rangeable' or something 07:09:53 > 9.9999991e38 07:09:54 9.9999991e38 07:09:58 I want the largest valid Float, not Infinity 07:10:01 hmm 07:10:02 > binSearch (flip compare (1/0)) 1 10 07:10:03 9.999999999999998 07:10:06 quicksilver: yeah 07:10:10 but the haskell committee were opposed to proliferation of typeclasses 07:10:13 oh, wait 07:10:27 so we have to live with a broken Monad class and a broken Enum class 07:10:27 > 9.999999999999998e38 07:10:28 > (toEnum . fromEnum $ 42 :: Integer) :: Double 07:10:29 9.999999999999998e38 07:10:29 Couldn't match expected type `Double' 07:10:31 never mind, that's not helpful 07:10:33 we need more typeclasses 07:10:33 --- join: tizoc_ (n=user@r190-0-145-37.dialup.adsl.anteldata.net.uy) joined #haskell 07:10:40 > 9.9999999999999999e38 07:10:41 we need Bind and Return! ;) 07:10:42 1.0e39 07:10:45 as well as no Tuple class, or other obvious things 07:10:45 :t pred 07:10:47 forall a. (Enum a) => a -> a 07:10:54 > 9.999999e38::Float 07:10:56 Infinity 07:10:58 > take 4 [1.1 , 1.2 ..] 07:10:59 [1.1,1.2,1.2999999999999998,1.3999999999999997] 07:11:09 > 4e38::Float 07:11:10 Infinity 07:11:11 > 9.999998e38::Float 07:11:13 Infinity 07:11:15 > (2**(128) :: Float) 07:11:15 > 04e38::Float 07:11:17 > 0.4e38::Float 07:11:21 Infinity 07:11:21 Infinity 07:11:22 > 9.99999e38::Float 07:11:22 4.0e37 07:11:23 Infinity 07:11:34 yitz: stop asking the same thign 07:11:47 or at least, use a binary search 07:12:00 > (2^128 - 1 :: Float) 07:12:01 Infinity 07:12:24 > binSearch (flip compare (1e100::Float).(*1e38::Float)) 1 10 07:12:24 Parse error 07:12:34 > binSearch (flip compare (1e100::Float).((*1e38)::Float)) 1 10 07:12:34 The section `(* 1.0e38)' takes one argument, 07:12:35 but its type `Float' ha... 07:12:54 > binSearch (flip compare (1e100::Float).(*(1e38::Float)) 1 10 07:12:54 Unbalanced parenthesis 07:12:55 > 1e100 :: Float 07:12:56 Infinity 07:13:00 > 1e100 :: Double 07:13:01 1.0e100 07:13:10 > binSearch (flip compare (1e100::Float).(*(1e38::Float))) 1 10 07:13:11 9.999999 07:13:19 @hoogle Double -> Float 07:13:20 No matches, try a more general search 07:13:23 > binSearch (flip compare (1e100::Float).(*(1e38::Float))) 1 10 :: Float 07:13:24 9.999999 07:13:42 > 1e39::Float 07:13:43 Infinity 07:14:26 you can work it out from floatRange, can't you? 07:14:34 > floatRange (undefined :: Float) 07:14:35 (-125,128) 07:14:57 you can work it out from the spec for IEEE floating point numbers... 07:15:03 > binSearch (flip compare (1/0 :: Float) . realToFrac) 1 (1e100::Double) 07:15:04 --- quit: FZ ("ChatZilla 0.9.78.1 [Firefox 2.0.0.7/2007091417]") 07:15:05 9.999999999999998e99 07:15:58 > 6.8e38 07:15:59 matthew_-: well Float isn't guaranteed to be IEEE, let alone n-bit IEEE for any particular value of 'n' 07:15:59 6.8e38 07:16:01 ... 07:16:12 ?type flip compare (1/0 :: Float) . realToFrac 07:16:13 forall a. (Real a) => a -> Ordering 07:16:23 > 6.81e38 07:16:24 ?type flip compare (1/0 :: Float) 07:16:26 6.81e38 07:16:26 Float -> Ordering 07:16:35 > 6.9e38 07:16:37 6.9e38 07:16:38 hrm. 07:16:44 idnar: you're using Doubles. 07:16:54 idnar: this does not appear relevant to the current discussion :P 07:17:05 oh yeah 07:17:08 silly me 07:17:13 > 6.8e38 :: Float 07:17:14 Infinity 07:17:17 > 2 ^ 128 07:17:17 > 3.4e38 :: Float 07:17:19 340282366920938463463374607431768211456 07:17:19 3.4e38 07:17:23 --- join: ntgrl (i=bsmith@p3m/member/integral) joined #haskell 07:17:27 > 3.41e38 :: Float 07:17:29 Infinity 07:17:30 > (3.4028235e38::Float, 3.4028235e39::Float) 07:17:31 (3.4028235e38,Infinity) 07:17:32 I believe that's the right one 07:17:33 pm please 07:17:39 yeah, it's what I said 07:17:42 it's 2^128 07:17:54 where 128 is given by 'floatRange' 07:18:06 which would be the quicker way to work it out :P 07:18:10 --- quit: integral (Connection timed out) 07:18:12 > (3.4028235e38::Float, 3.4028236e38::Float) 07:18:13 (3.4028235e38,Infinity) 07:18:27 > compare (1/0) (1/0) 07:18:29 EQ 07:18:35 > (fromIntegral $ 2^128) :: Float 07:18:36 Infinity 07:18:37 > compare (1/0) (2/0) 07:18:38 EQ 07:19:03 Same as on my machine. Except the binSearch worked for me here, but not on the bot. Interesting. 07:20:05 --- join: djfroofy (n=drew@atl190.turner.com) joined #haskell 07:20:30 hm, I come in #haskell to escape from the messy, impure world, and everyone's playing with floating-point. Looks like it's going to be a long day. =P 07:20:34 can some explain what `(1:)' means in the context of this: fix ((1:) . scanl (+) 1) 07:20:49 oh, that's better =) 07:20:50 > (1:) [2,3,4,5] 07:20:52 [1,2,3,4,5] 07:21:06 @unpl (1:) 07:21:06 (\ a -> 1 : a) 07:21:20 it's a section of (:) 07:21:37 djfroofy: does that answer your question? 07:21:41 --- quit: tmoertel_away (Remote closed the connection) 07:21:56 --- join: MyCatSchemes (n=rb6822@sietil.cs.bris.ac.uk) joined #haskell 07:22:07 I'm more scared by the scanl (and the fix :-) 07:22:26 is that another scary fibonacci numbers? 07:22:29 byorgey: I got a wide array of answers, but my interpretation is its a function that takes a list and returns 1 consed with the list? 07:22:36 EvilTerran: of course =) 07:22:43 djfroofy: that's right. 07:23:05 @index fix 07:23:05 Control.Monad.Fix, Control.Monad.Reader, Control.Monad.Writer, Control.Monad.State, Control.Monad.RWS, Control.Monad.Identity, Control.Monad.Error 07:23:07 (foo ??) = (\bar -> foo ?? bar), regardless of what expression foo is, and what operator ?? is 07:23:16 (:) is an operator like any other in that respect 07:23:26 similarly, there's (?? foo) = (\bar -> bar ?? foo) 07:23:29 EvilTerran: this goes back to my rant yesterday about having to read a phd thesis to understand a function - fix in this case 07:23:43 fix *is* pretty hairy 07:23:59 operator sections, however, are pretty fundamental haskell 07:24:00 @src fix 07:24:00 fix f = let x = f x in x 07:24:06 --- join: ttt- (n=z@dD5E0CB46.access.telenet.be) joined #haskell 07:24:27 @type fix (1+) 07:24:29 forall t. (Num t) => t 07:24:34 EvilTerran: yes, the pretzel semantics scare me 07:24:44 > fix (+1) 07:24:45 Exception: <> 07:25:00 Olathe, are we back to discussing infinity again? ;) 07:25:16 --- quit: tizoc (Connection timed out) 07:25:30 --- quit: mornfall ("Lost terminal") 07:25:34 djfroofy: yah, definitely seperate your concerns into (1:) and fix 07:25:38 djfroofy: the thing is, you don't have to understand fix to understand Haskell, the language. It isn't part of the language proper. 07:25:41 --- join: mornfall (n=mornfall@rb4b151.net.upc.cz) joined #haskell 07:25:44 djfroofy: most people find fix a bit mysterious at first 07:25:46 * MyCatSchemes wonders how 'big' aleph-(aleph one) is? 07:25:49 but Haskell is general and powerful enough that you can easily define things such as fix. 07:25:53 djfroofy: however (1:) is not too unpleasant 07:26:01 > fix (1:) [] 07:26:02 Couldn't match expected type `[a] -> t' 07:26:13 Olathe: you don't need the []. 07:26:17 > fix (1:) 07:26:19 [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1... 07:26:19 --- join: oerjan (n=oerjan@hagbart.nvg.ntnu.no) joined #haskell 07:26:23 O-o 07:26:49 > fix (\l -> head l : map (+1) tail l) 07:26:50 Couldn't match expected type `[a]' 07:26:53 MyCatSchemes, i was under the impression that alephs were only defined for natural number subscripts 07:26:55 fix (1:) says, "find a list which is invariant under the operation of adding a 1 to the front." 07:26:56 byorgey: agreed. though. i don't like running into a line of code and taking it for granted. My journey down the rabbit hole started here: http://haskell.org/haskellwiki/Implement_a_chat_server 07:26:57 Title: Implement a chat server - HaskellWiki 07:27:10 Obviously, the infinite list of all 1's fits that bill. 07:27:11 > take 20 $ fix ((1:) . scanl (+) 1) 07:27:12 djfroofy: then you can understand fix as "(1:) is all very well but we need a list to apply it to. What list shall we apply it to? I know, let's apply it to *itself*, recursively" 07:27:12 EvilTerran: yeah, and Euclid was under the impression parallel lines didn't meet. Fuck that. ;) 07:27:12 [1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765] 07:27:15 > fix (\x -> (x + 1):x) 07:27:16 Occurs check: cannot construct the infinite type: a = [a] 07:27:16 Expected... 07:27:36 to be honest, fix really isn't all that useful in haskell, except for golfing, and occasionally for equational reasoning and whatnot 07:27:42 djfroofy: yup, I understand. "journey down the rabbit hole" is a very good way to describe it =) 07:27:47 > fix (\x -> ((head x) + 1):x) 07:27:48 Exception: <> 07:27:51 especially not fix without a 2-ary function as its first parameter 07:28:46 I guess the haskell irc channel is my new and improved hoogle ;) 07:29:03 @hoogle irc people 07:29:04 Did you mean: Irc People 07:29:04 Prelude.undefined :: a 07:29:04 Control.Monad.Reader.ask :: MonadReader r m => m r 07:29:15 > fix (\f x -> x + if x > 0 then f (x-1) else 0) 10 07:29:16 Olathe: that won't work since there's nothing for it to "get started" on 07:29:16 55 07:29:16 Heh. ask. 07:29:36 ... why did that come up with ask? 07:29:46 that's amusingly appropriate 07:29:50 hehe, nice 07:29:56 fix is useful if you want to use mdo (recursive do notation) - you don't use fix directly, but you need to define in order to give your Monad an instance of MonadFix so that you can use mdo. Of course, most common monads are predefined with the instance so we don't have to worry about fix too much. 07:30:06 @hoogle a b 07:30:07 Prelude.undefined :: a 07:30:07 Control.Monad.Reader.ask :: MonadReader r m => m r 07:30:07 Control.Monad.State.get :: MonadState s m => m s 07:30:20 --- join: sproingie (n=chuck@64-121-2-24.c3-0.sfrn-ubr8.sfrn.ca.cable.rcn.com) joined #haskell 07:30:41 weird 07:30:45 fix is also useful for expressing recursive functions in a form which can be extended and manipulated using various combinators. 07:31:02 byorgey, as i said, equational reasoning and whatnot 07:31:14 i call that "whatnot" ;) 07:31:16 EvilTerran: that's not equational reasoning. 07:31:19 EvilTerran: probably the first thing whose result matches the t1 t2 form 07:31:20 oh. 07:31:37 for example, writing a recursive function in a fix-able form allows you to easily add memoization. 07:31:56 sorry, i said "as i said" before i'd finished parsing your prior sentence 07:32:06 hence my attempted save 07:32:08 byorgey: but of course, that's orthogonal to the invention of 'fix' as a named thingy 07:32:22 byorgey: that's just "if you write your recursive functions like this, then you can' 07:32:42 byorgey: although, certainly, it does rather beg for you to give a name to the canonical knot-tyer 07:32:48 @go haskell mdo 07:32:48 maybe we should call fix 'boyscout' 07:32:49 http://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html 07:32:49 Title: 7.3. Syntactic extensions 07:33:01 @go haskellwiki recursive do 07:33:03 http://www.haskell.org/haskellwiki/Recursion_in_a_monad 07:33:03 Title: Recursion in a monad - HaskellWiki 07:33:04 quicksilver: right. I was just pointing out that fix turns out to be useful for more than just writing concise Fibonacci numbers. 07:33:10 true 07:33:18 hehe 07:33:20 type-level fix would be useful for similar reasons 07:33:28 yup 07:33:32 you can transform Stream into List using type-level fix 07:33:39 if you stick a 'Maybe' in 07:33:51 if I'm not mistaken 07:34:14 Stream? 07:34:29 --- join: prb (n=prb@c-24-22-188-196.hsd1.mn.comcast.net) joined #haskell 07:35:58 sarehu: a stream is a data structure that stores a current value, and a function for getting the next value from the current one. 07:36:12 does anyone else have problems with haskell.org right now? 07:36:32 It works for me. 07:36:58 works for me too. 07:37:14 sarehu: or, if you like, a Stream is a List without the 'Nil' case 07:37:20 sarehu: or without the [] case 07:37:26 http://haskell.org/testthesiteformelambdabot 07:37:36 sarehu: so, since it can never end, it is 'forced' to be infinite 07:37:36 ok, just wondering about the capitalization 07:37:43 I guess lambdabot hates 404s 07:37:56 http://haskell.org # go LB go 07:37:57 Title: Haskell - HaskellWiki 07:38:04 Yay lambdabot ! 07:38:25 strangely, it works through tor 07:38:28 must be routing problems 07:38:45 --- join: gbeshers (i=gbeshers@nat/redhat/x-03088ba180b12fae) joined #haskell 07:38:51 Meh, I am printing a number somewhere, but I have have no idea where exactly... 07:39:00 sarehu: all haskell type constructors are capitalized 07:40:48 --- join: ndm (i=8afbf0ae@gateway/web/cgi-irc/ircatwork.com/x-df3887b19851ca32) joined #haskell 07:41:13 I was wondering if whoever was referring to some specific datatype that existed in the wild 07:41:28 how do you "multiply" a list? is (concat . replicate n) the canonical way? 07:41:33 hm, what is the preferred data structure for "a map without values" or "a map where key = value" ? 07:41:48 nominolo: Data.Set ? 07:41:54 nominolo: not quite sure what you mean :) 07:42:00 nominolo: in what respect is it not a list? 07:42:11 i need fast lookup 07:42:18 --- quit: oklopol (Read error: 104 (Connection reset by peer)) 07:42:28 nominolo: sounds like Data.Set 07:42:30 but, well, Set seems amazingly obvious 07:42:38 as long as you don't mind uniqueness being forced 07:42:42 birkenfeld: it depends what you want. (concat . replicate n) seems reasonable for multiplying by a positive integer. 07:42:56 Data.Set is implemented, roughtly, as Data.Map with key = value 07:42:57 I think 07:43:30 quicksilver, i'm porting an ML implementation. they used a map, i think 07:43:53 byorgey: it seems to even accept negative integers, handling them as zero 07:43:59 which is fine 07:44:06 @src replicate 07:44:06 replicate n x = take n (repeat x) 07:44:10 @src take 07:44:10 take n _ | n <= 0 = [] 07:44:10 take _ [] = [] 07:44:10 take n (x:xs) = x : take (n-1) xs 07:44:51 birkenfeld: yup. 07:45:20 nominolo: got that link to the make filesystem simulator? 07:45:33 --- join: stoic_ (n=stoic_@64.107.156.234) joined #haskell 07:45:34 dcoutts_, one sec 07:45:43 btw, where does one report bugs in the GHC library docs? 07:45:44 kolmodin: got the make code we started writing? 07:45:57 I wrote a bit more on the train home 07:45:58 @src scanl 07:45:58 scanl f q ls = q : case ls of 07:45:58 [] -> [] 07:45:58 x:xs -> scanl f (f q x) xs 07:45:58 nominolo: I'm pretty sure Data.Set is what you want 07:46:02 pencil and paper :-) 07:46:15 birkenfeld: ghc trac? 07:46:19 ok 07:46:40 dcoutts_, http://code.haskell.org/~nominolo/ 07:46:41 Title: Index of /~nominolo 07:46:46 nominolo: ta 07:47:05 --- join: bringert (n=bjorn@csmisc14.cs.chalmers.se) joined #haskell 07:47:05 quicksilver, they use a unique-map. i guess that's faster than a normal map 07:48:01 hm, maybe it's a haddock bug 07:48:14 birkenfeld: what's the bug? 07:48:29 moin! 07:48:30 is IntMap deprecated now? 07:48:38 in the docs for Prelude.elem, it says "...usually written in infix form, e.g., x elem xs." 07:48:47 that is, the backquotes are missing 07:48:52 but they seem to be in the source 07:48:53 The bug is one of those that can sit on the surface of a pond. 07:49:03 hey nominolo 07:49:14 hi dons 07:49:26 back in OR? 07:49:41 yeah, finally. 07:49:41 --- join: Mr_Awesome (n=eric@par0442.urh.uiuc.edu) joined #haskell 07:49:47 mwhha, xmonad lambdacats, http://arcanux.org/lambdacats.html 07:49:47 Title: Lambdacats 07:49:50 "fillBelly = foldr (++) [] fridgeContents" 07:49:56 just saw that! 07:50:15 as soon as someone makes a 'catamorphism' one, I will be happy =) 07:50:18 hah! 07:50:27 byorgey: you know what you need to do. 07:51:05 is there something similar to the lambdabot `@src' that i can use in ghci or elsewhere? 07:51:22 not really. 07:51:33 we should bundle up these things in a tiny tool that we can embed easily in ghci 07:51:35 private msg 07:51:38 (unlike lambdabot, which is a bit hard) 07:51:42 in hugs you can do :f function 07:51:45 you can print lines of the source, iirc 07:52:03 :list works for local files 07:52:12 --- quit: augustss () 07:52:28 --- join: oklopol (i=oko@194.251.101.183) joined #haskell 07:53:31 --- quit: mikael () 07:53:39 cant GHCi on Acid do @src? 07:53:52 yeah, but its hard to get it to work 07:54:03 yes. see "unlike lambdabot, which is a bit hard [to embed]" 07:54:18 (come to think ofit, last I'd heard GOA was broken) 07:54:21 goa is the lambdabot binding 07:54:22 right 07:55:51 --- join: blarz_ (i=simon@blarzwurst.de) joined #haskell 07:55:56 byorgey: haddock seems to take the `elem` as a link to elem 07:56:02 --- quit: amiddelk ("Cya later") 07:56:21 birkenfeld: oh, yes, that's Haddock syntax. 07:56:39 Haddock is kind of fishy. 07:56:50 so it's a bug in the documentation. it needs some sort of escape characters or something to display the ` characters. 07:56:54 haha 07:56:57 the docs mention only '...' and `...' though 07:57:02 --- quit: gabkdlly (Read error: 110 (Connection timed out)) 07:57:03 dons: is hs-plugins a "sanitisation" of the GHC API, or is it something else entirely? 07:57:05 --- quit: MyCatSchemes ("Mugging my lectu^W^W^WFinding some information.") 07:57:07 oh, really? hm 07:57:14 --- join: gabkdlly (n=gabriel@dslb-088-073-040-137.pools.arcor-ip.net) joined #haskell 07:57:42 quicksilver: something else, currently. we were all hoping porting it to use ghc-api would happen this hackathon... 07:57:53 hs-plugins is older than the GHC API, isn't it? 07:58:13 allbery_b: hmm. which parts are 'else'. It has its own linker? 07:58:13 --- quit: Metabol (Read error: 104 (Connection reset by peer)) 07:58:23 allbery_b: presumably it doesn't have its own parser? 07:58:35 --- join: Metabol (n=Metabol@unaffiliated/metabol) joined #haskell 07:58:38 it does have its own parser 07:58:39 --- part: gabkdlly left #haskell 07:58:47 (for .hi files) 07:58:49 ah 07:58:52 right 07:59:03 but the haskell code itself it runs 'ghc' as a sub process ? 07:59:10 yes 07:59:21 and then it dynamically loads the .o file produced? 07:59:26 yep 07:59:30 * quicksilver nods 07:59:43 I'll put it on the ghc trac in any case 08:00:05 --- quit: _ry () 08:00:09 quicksilver: it predates the ghc-api 08:00:12 --- join: dolio (n=dolio@nr5-216-196-210-207.fuse.net) joined #haskell 08:00:26 dons: *nod* 08:00:26 I wish I could tell the debugger: halt on IO and show the LOC that caused it. 08:00:41 --- join: arcatan (n=arcatan@kaanaa.satakuntatalo.fi) joined #haskell 08:02:57 ohh, the austrailian dollar hits 90 cents US. 08:03:02 ... poor dons 08:03:27 time to ask for a raise 08:05:51 --- quit: VerbalDK ("G-Lined") 08:06:13 * oerjan wonders if one could implement a magical kind of ?line implicit variable 08:06:15 --- quit: boegel ("Leaving") 08:06:23 --- join: fmardini (n=fmardini@77.245.6.99) joined #haskell 08:06:35 oerjan: for ghci? 08:06:50 for ghc profiling 08:07:07 --- nick: tizoc_ -> tizoc 08:07:19 ah. For a minute I thought you meant something like the "it" variable in ghci 08:07:43 no, i meant a variable that could be used by a function to fine the line _calling_ it 08:07:49 *find 08:08:00 fine, too i guess 08:08:36 08:08:44 if a function included it explicitly in its type, error messages could use it 08:09:10 such as those dreader pattern matching errors in Prelude functions 08:09:29 *dreaded, whatever happened to my typing skills :( 08:09:31 maybe something more general - the call stack, or something? 08:09:50 something like what http://perldoc.perl.org/functions/caller.html returns 08:09:51 Title: caller - perldoc.perl.org 08:09:54 --- quit: blarz (Read error: 110 (Connection timed out)) 08:09:59 --- join: phlpp (n=philipp@pD9F5C219.dip.t-dialin.net) joined #haskell 08:10:08 --- quit: stoic_ (Read error: 104 (Connection reset by peer)) 08:10:17 --- join: Tac-Tics (n=tactics@63.149.16.13) joined #haskell 08:10:47 Can I ask the ghci debugger to step 1000 times? 08:11:06 Then I could use binary search to find the problem 08:11:12 hi, just installed 6.6.1 on osx 10.4 using ports, but when i run examples from soe i get Unable to open X display :0.0, all works great in ubuntu, is this related to a missing haskell library or do i have an issue with my x11 installation 08:11:21 roconnor: hah 08:11:34 fmardini: maybe you don't have X running? 08:11:54 fmardini: I don't believe the haskell/X stuff will autorun it 08:11:54 fmardini: Have you installed all the additional X stuff that comes with XCode? 08:12:17 quicksilver: yeah i did 08:12:19 I seem to remember that it doesn't install by default. 08:12:26 --- quit: Daveman (Read error: 104 (Connection reset by peer)) 08:12:26 quicksilver: how can i make sure its running 08:12:39 apple-tab 08:12:44 dons: soon your Galios salery will match your university salery :P 08:12:45 do you see x in there? 08:13:11 roconnor: :P 08:13:29 damn this economy 08:13:29 dons: travel back ok? 08:13:29 puusorsa: what is apple tab 08:13:41 fmardini, the apple key on your keyboard 08:13:50 and tab key. you know, how you switch between apps 08:13:52 swiert: yeah, flight was pretty good. though got detained briefly at frankfurt :( 08:14:03 detained? 08:14:04 puusorsa: silly me :), no no x 08:14:12 puusorsa: how can i start it 08:14:19 click on the icon? 08:14:24 xmonad is contraband 08:14:24 fmardini: In applications/X11 08:14:27 no icon 08:14:46 maybe you don't have it installed? 08:14:47 fmardini: Applications/Utilities/X11 actually. 08:14:58 roconnor: yeah, something like that. they let me on the flight though, so that's ok. 08:15:07 use quicksilver and type in x11 08:15:28 puusorsa: thanks man 08:15:31 all works now 08:15:32 dons: who detained you? 08:15:55 --- quit: jwp_ (Read error: 104 (Connection reset by peer)) 08:16:11 oh, it was no big deal 08:17:50 swiert: hackathon was lots of fun. 08:18:07 next one will be at chalmers 08:18:37 dons: cool. too bad I missed it. 08:18:44 --- nick: Lycurgus_ -> Lycurgus 08:18:48 Any idea when? 08:19:10 --- quit: fmardini () 08:19:14 6 months time, roughly. so between feb-apr i suppose 08:19:22 then another one following that at icfp in canada 08:19:38 we'll have details in the coming weeks about the the chalmers one 08:20:05 dons: right. Any plans to get it officially associated with ICFP? 08:20:05 * dons hunts for vegemite in the cupboard. bbl 08:20:10 yeah, that's on the cards 08:20:13 icfp 2008 is in canada? 08:20:22 yep, in BC. 08:20:22 oh, chalmers sounds nice 08:20:23 victoria, british columbia 08:20:31 dons: woudl be nice if someone wrote up a hac report 08:20:35 --- join: MyCatSchemes (n=rb6822@sevsie.cs.bris.ac.uk) joined #haskell 08:20:35 any skiing there and then? 08:20:40 dons: not that I'm trying to volunteer you :) 08:21:09 If anyone is interested in writing up a Hac report, there's a TMR special on the SoC coming up... 08:21:18 I'm sure I could fit in a Hac report. 08:21:22 --- join: jwp_ (n=jwp@mail.icrossing.com) joined #haskell 08:21:39 --- nick: Lycurgus -> Lycurgus_ 08:21:52 --- quit: Mr_Awesome (Read error: 110 (Connection timed out)) 08:22:55 swiert: isn't the PDF full already? ;) 08:23:03 did they announce the contest winners 08:23:21 mrd: no, they forgot 08:23:46 * matthew_- slaps himself. Whistler is in BC. Of course there's good skiing. September's a bit early though 08:24:00 --- join: takamura (n=takamura@80.31.50.246) joined #haskell 08:24:11 --- part: takamura left #haskell 08:24:20 er? 08:24:29 * oerjan is joking 08:24:37 they forgot to update the web site 08:24:50 well, that i may believe 08:24:56 * mrd is not joking 08:25:14 kosmikus: Well, I want to be considerate of people who don't have broadband ;) 08:25:36 mrd: there was a reddit post about a blog on the results, though 08:26:14 mrd: I'm sorry that the webpage is not updated yet. It will be during the next days, though. 08:26:51 is any report about it written up? 08:27:07 --- quit: QplQyer ("*poef* *roekwolk*") 08:27:10 doserj: yes, there is. it'll also become available on the webpage really soon. 08:27:15 great! 08:27:57 --- quit: swiert ("bbl") 08:28:49 oh. i'm reddit-free since march. 08:29:48 Also subreddit free? 08:30:13 yes, completely clean 08:32:27 --- join: zygen (n=vincent@dslb-084-058-164-155.pools.arcor-ip.net) joined #haskell 08:34:39 mrd: how was the transition 08:34:42 --- quit: lnxz (Remote closed the connection) 08:35:37 well, i suppose it was eased by the fact that i had plenty of work to do. 08:36:21 i still sometimes think of perhaps checking out the site, when bored, but i always find something else to do 08:36:25 --- join: dje (n=dje@S0106000d9324c457.vc.shawcable.net) joined #haskell 08:36:36 --- join: joe_hurd (n=joe_hurd@gw-1.galois.com) joined #haskell 08:36:37 like banging my head on a wall 08:36:44 mrd: or writing some haskell 08:36:57 oh wait, that's what you meant right? 08:36:58 ;) 08:37:14 no that's more like writing mechanized proofs =) 08:37:31 well that sounds fun too! 08:38:55 mrd: that must've been one Hell of a productivity boost. 08:39:31 i suppose. i was taking 2 classes while working full-time. something had to go. 08:40:59 which i'm doing again, for some reason. but it's not quite as much work this time around. but it is time for class... bbl 08:41:18 --- join: NichardRixon (n=xor@rn-cgr1a01.uwaterloo.ca) joined #haskell 08:43:22 --- join: locomalo (n=leandro@host80.200-117-121.telecom.net.ar) joined #haskell 08:44:44 dons: http://wso.williams.edu/~byorgey/catamorfizm.png =) 08:46:18 awesome :) 08:46:21 byorgey++ 08:47:00 --- quit: dje () 08:47:05 --- join: dje (n=dje@S0106000d9324c457.vc.shawcable.net) joined #haskell 08:47:15 --- join: waern (n=davve@waeda.csbnet.se) joined #haskell 08:47:44 sweet. 08:48:15 --- join: CosmicRay (n=jgoerzen@gatekeeper.excelhustler.com) joined #haskell 08:50:07 --- quit: Taejo (Connection timed out) 08:50:17 --- join: Taejo (n=max@196.210.103.191) joined #haskell 08:50:52 the wonders of Google image search =) 08:51:58 --- quit: ttt- (Connection timed out) 08:52:06 --- join: svref (n=dm@dsl093-230-014.lou1.dsl.speakeasy.net) joined #haskell 08:52:10 --- part: svref left #haskell 08:52:16 --- join: halcyon10 (n=halcyon@dslb-082-083-081-248.pools.arcor-ip.net) joined #haskell 08:52:38 --- join: DarthJesus (n=Godsmith@unaffiliated/jargon) joined #haskell 08:52:49 http://mediaplague.com/?cat=serial 08:52:51 Title: Media Plague :: cat=serial 08:53:01 http://mediaplague.com/boards/showthread.php?p=33#post33 08:53:24 --- quit: masak ("tests rock!") 08:53:32 Ah, a message from the dark side 08:53:49 :D 08:54:37 http://mediaplague.com/?cat=serial is everything @keal from 2001 to 8000 08:54:38 Title: Media Plague :: cat=serial 08:55:22 --- join: swiert (n=Wouter@88-106-135-208.dynamic.dsl.as9105.com) joined #haskell 08:55:55 wow 08:56:09 that's true keal, 08:56:09 I made this from scratch in one night using Quick Basic 7.1 PDS. 08:56:09 It runs virtually flawless minus shifting overflows. 08:56:10 Uses just integers and operator codes. 08:56:49 Also, RPN=no parsing necessary, really. 08:56:53 =P 08:57:23 http://mediaplague.com/boards/showthread.php?p=33#post33 is my program i made last night :) 08:57:27 up-to OR over 256 tokens! wow! 08:57:40 hehe =) 08:57:44 :P 08:58:08 over 256 if you dont have endless series of numbers in a row 08:58:23 :) 08:58:48 --- quit: mrchebas () 08:59:04 --- quit: nominolo ("Ex-Chat") 08:59:10 comes with source code :) 08:59:27 RPN for the win, i still have a 20 zear old HP calculator around for that reason :) 08:59:56 Yes, why create a parse tree when you have a human compiler? 09:00:21 o.o 09:00:26 ;) 09:00:34 ;-) 09:00:43 --- join: cjeris (n=Jeris@140.247.124.140) joined #haskell 09:00:47 --- join: rickynils (n=rickynil@asimov.ros.sgsnet.se) joined #haskell 09:00:55 this is my 70th or so calculator program btw 09:01:10 --- join: timlarson_ (n=timlarso@65.116.199.19) joined #haskell 09:01:30 one of them emualating doing all sorts of math using just your fingers on your hands 09:01:41 DarthJesus: erm 09:01:48 how is this relevant to haskell 09:02:18 --- quit: andyjgill () 09:02:21 did any of you make haskell 09:03:02 which of you invented haskell? 09:03:13 DarthJesus: cute, but please be less like @keal 09:03:31 i am serious who invented haskell? 09:03:36 @yow ! 09:03:36 Do you guys know we just passed thru a BLACK HOLE in space? 09:03:50 @go haskell history 09:03:52 http://www.haskell.org/haskell-history.html 09:03:52 Title: The History of Haskell 09:04:07 --- join: Saul_ (n=Saul@50-15-ftth.onsnetstudenten.nl) joined #haskell 09:04:17 Good morning #haskell! 09:04:26 DarthJesus: so you don't use the nick `keal' anymore? 09:04:29 heya shapr ! 09:04:37 Live fast, die old, and leave behind some beautiful code! 09:04:38 * dons throws energetic lambdas at shapr 09:04:57 * shapr throws not-so-depressed lambdas at dons 09:04:58 --- join: augustss (n=Lennart@63.175.43.10) joined #haskell 09:05:01 * dmwit eats marshmallows in an attempt to match enthusiasm with the best 09:05:09 hej augustss, god morgon! 09:05:47 --- join: jutaro (n=jutaro@p54BD4A5C.dip.t-dialin.net) joined #haskell 09:06:08 --- join: Lemmih (n=lemmih@c-150970d5.020-42-6c736b2.cust.bredbandsbolaget.se) joined #haskell 09:06:10 It's a beautiful day for some code! 09:06:17 good morning, shapr! 09:06:20 it's been raining here most of the day. 09:06:24 --- join: xynn (n=james@cpe-69-205-127-65.rochester.res.rr.com) joined #haskell 09:06:33 dons sings the lovely day song: "its a lovely day today, for whatever you like to code" 09:06:37 It's raining here too, that's why I not unicycling :-) 09:06:39 matthew_-: that is so you won't be tempted to go outside instead of coding. :) 09:06:40 "its a lovely day for coding things! its a lovely day!" 09:06:50 * cpoucet sings "It's a lovely day today, for running in a monad" 09:07:00 heh 09:07:05 cpoucet: Is that a big lambda shaped wheel for hamsters? 09:07:07 it's a lovely day for finding that apostrophe key on your keyboard... 09:07:17 overrated 09:07:21 shapr: yes, and you're bound to the wheel 09:07:33 with sharp >>=s 09:07:41 or shapr >>=s 09:07:49 sharp shapr 09:08:08 --- join: Axioplase (n=Pied@LNeuilly-152-22-107-12.w193-251.abo.wanadoo.fr) joined #haskell 09:08:12 --- quit: Axioplase (Client Quit) 09:08:23 haskell is for lazy people 09:08:26 * byorgey tries to imagine a "lambda shaped wheel" 09:08:26 :| 09:08:34 --- quit: dogmaT (Read error: 113 (No route to host)) 09:08:56 --- join: Axioplase (n=Pied@LNeuilly-152-22-107-12.w193-251.abo.wanadoo.fr) joined #haskell 09:09:01 DarthJesus: So you're keal? 09:09:12 --- join: takuan_dozo (n=takuan@83.101.37.225) joined #haskell 09:09:27 yeah, i think so 09:09:46 DarthJesus: Ya know, I thought you were a markov bot for days and someone was showing off their code, that's the only reason I didn't ban you before. 09:09:54 I'm pretty certain he is 09:09:57 i don't see how haskell can produce math that isnt known of yet 09:09:58 the forum linked to contains the word "keal" 09:10:07 DarthJesus: ooh, proof! 09:10:21 @keal 09:10:21 how bout i say ick no unicorn and daisy loving girl mathematician will ever enjoy this 09:10:30 "Timothy Robert Keal's Reverse Polish Notation Calcultator 0.02" 09:10:41 and the link is to a folder of username DarthJesus 09:11:01 Prozactly. 09:11:26 just look at the membercount and whois 09:11:33 its kind of sad when you become a parody of yourself, DarthJesus 09:11:35 @pl \x y -> x + length y 09:11:35 (. length) . (+) 09:11:40 bah 09:11:59 --- join: lnxz (n=joachim@bjo1-1x-dhcp451.studby.uio.no) joined #haskell 09:12:03 http://mediaplague.com/pk/ my old dada comies series 09:12:04 Title: pooter comiks 09:12:06 @pl \(x,y) -> x + length y 09:12:07 uncurry ((. length) . (+)) 09:12:09 --- mode: ChanServ set +o dons 09:12:11 --- mode: dons set +b *!*=Godsmith@unaffiliated/jargon 09:12:11 --- kick: DarthJesus was kicked by dons (off topic) 09:12:13 --- mode: ChanServ set -o dons 09:12:26 oh, i was hoping for some arrows from the bot 09:12:42 hehe 09:12:44 dons: arrows don't combine arguments afaik 09:12:59 > liftM2 (+) id length 09:13:00 that would be (id *** length) >>> uncurry (+) 09:13:00 Couldn't match expected type `[a]' against inferred type `Int' 09:13:01 * Japsu is still calling for a real @obfuscate to replace @pl 09:13:08 right. 09:13:17 oh wait 09:13:19 :t second length 09:13:21 forall a d. (d, [a]) -> (d, Int) 09:13:32 byorgey: right, but the combination happens in uncurr 09:13:45 --- quit: Beelsebob () 09:13:48 ok does anyone have a nice haskell job position available, or am I going to sell my soul to the .NET job offer? Ph.D. doesn't finance itself :/ 09:13:52 @pl \(x,y) -> let a = x in let b = length y in (a,b) 09:13:52 second length 09:13:57 @pl \(x,y) -> let a = x in let b = length y in a+b 09:13:57 uncurry ((. length) . (+)) 09:13:59 --- join: raxas (n=raxas@9.187.broadband6.iol.cz) joined #haskell 09:14:18 therp: occasionally they get posted on haskell-cafe. PhDs do finance themselves in many countries, where are you based? 09:14:25 quicksilver: austria 09:14:33 * therp subscribes to haskell-caffe 09:14:42 I suspect your odds of an austria-based post are low :( 09:14:49 relocation is key 09:14:50 therp: and check the haskell weekly news archives 09:14:53 come to the UK! 09:14:55 all the jobs get posted there 09:15:07 but as a european you are eligible for all kinds of pan-european PhD grants 09:15:18 yeah, that'll make the phd a lot easier 09:15:19 pan-european PhD grants? hmm that sound interesting 09:15:28 Yes 09:15:29 Marie Curie 09:15:33 it's not exactly big money 09:15:35 It is 09:15:38 but it's enough to support yourself and enjoy the phd 09:15:45 Marie Curie fellowships pay more than normal phd fellowships 09:15:55 the EU spends *a lot* of money on stuff. Some of which includes funding projects which include hiring PhD students 09:15:59 right 09:16:04 again, Marie Curie 09:16:05 :) 09:16:20 http://arcanux.org/lambdacats.html 09:16:20 Title: Lambdacats 09:16:23 :D 09:16:46 hey! 09:17:05 I wanted to do overgeeky haskell related lolcats :) 09:17:16 --- quit: mfunebre () 09:17:27 cpoucet: thanks for the pointer. will have a look at that 09:17:33 --- quit: sproingie (Connection timed out) 09:17:41 therp: well, get to work! =) 09:17:44 therp: then for \'s sake, go ahead and do so, then email them in to that blog so they can be added. 09:17:56 therp: 'cuz if you're going to make them, I wanna see 'em. 09:17:58 ?hoogle constM 09:17:59 No matches found 09:18:02 byorgey: http://clemens.endorphin.org/TypeSystem.jpg :) 09:18:13 but hm my dns seems dead. 09:18:19 won't load for me 09:18:48 :t \x m -> m >> return x 09:18:49 forall (m :: * -> *) a b. (Monad m) => b -> m a -> m b 09:18:54 me neither 09:19:00 ?hoogle b -> m a -> m b 09:19:01 Prelude.asTypeOf :: a -> a -> a 09:19:01 Prelude.const :: a -> b -> a 09:19:01 Prelude.seq :: a -> b -> b 09:19:20 matthew_-: If I'm not mistaken many of the specific countries research bodies will fund european students 09:19:27 quicksilver: yep, that too 09:19:28 @type return . const 09:19:30 forall (m :: * -> *) a b. (Monad m) => a -> m (b -> a) 09:19:41 E.g. an austrian can get an EPSRC grant 09:19:43 quicksilver: I'm partially funded by the EC and partially by the DTA 09:19:44 @type const . return 09:19:46 forall b a (m :: * -> *). (Monad m) => a -> b -> m a 09:19:52 I think they have to meet *slightly* tougher conditions, but.. 09:19:55 EPSRC...EC..DTA? 09:19:57 quicksilver: ahh I see. 09:19:59 oh, never mind 09:20:06 EC = european comission 09:20:15 --- join: BCoppens (n=bartcopp@kde/coppens) joined #haskell 09:20:16 therp: EPSRC is a UK-based research council which gives PhD grants to brits 09:20:16 byorgey: It has to have a (>>) in there somewhere or its useless to me. ;-) 09:20:19 DTA = UK Department of somethingarouther 09:20:22 therp: but other europeans are also eligible 09:20:23 has anybody experience installing ghc under os x? the description at http://www.haskell.org/pipermail/glasgow-haskell-users/2007-May/012576.html is way too technical for me :( 09:20:25 Title: ghc-6.6.1 Mac (Darwin) Binary Dists, http://tinyurl.com/2hya9r 09:20:33 what would be an appropriate place to post a question for grants? haskell-cafe? 09:20:38 therp: you could contact a good computer science department and they would be able to explain this 09:20:48 --- quit: takuan (Connection timed out) 09:20:58 dmwit: right. for a moment I stupidly confused ignoring the return value and ignoring m itself. 09:21:06 therp: you could speak to the head of phd applications at, say, imperial college london, or queen mary london 09:21:10 http://en.wikipedia.org/wiki/Catamorphism <-- looking at the code example there, shouldn't treeDepth = (const 1, \l r-> 1+ max l r) rather than (1,\k r->1 + max l r) ? 09:21:11 Title: Catamorphism - Wikipedia, the free encyclopedia 09:21:16 Does microsoft research cambridge ever fund PhD places? 09:21:26 I don't remember it doing so but it sounds like the kind of thing they might 09:21:33 therp: good compsci departments are used to dealing with phd students from all over the place and will have $$$ 09:21:47 therp: and if you come to Imperial then you can have lunch with me and ToRA! 09:21:47 * quicksilver nods 09:22:00 --- join: ddarius (n=derek@74.197.10.104) joined #haskell 09:22:13 or go to glasgow and have lunch with quicksilver (I think) 09:22:16 matthew: hm I'm kinda emotionally bond to this place. so relocation isn't really an option for me I'm afraid 09:22:18 MyCatSchemes: yes. 09:22:35 byorgey: thank you. I thought that looked fishy, just wanted to make sure. 09:23:01 therp: well that's fair enough too. But if your computer department isn't used to attracting money from the EC or other funding bodies then it may make your life harder 09:23:19 --- quit: Saul_ (Read error: 110 (Connection timed out)) 09:23:31 --- quit: glen_quagmire ("leaving") 09:24:01 I should probably spend some time updating my PhD exposé instead of working on the PhD itself, because this way I will run out of money in about 3-4 months.. 09:24:51 :t liftM . const 09:24:54 forall a1 (m :: * -> *) a. (Monad m) => a -> m a1 -> m a 09:25:03 --- join: jmelesky (n=jmelesky@dsl081-136-068.chi1.dsl.speakeasy.net) joined #haskell 09:25:17 hey guys.. 09:25:38 :t (<$) 09:25:40 forall a (f :: * -> *) b. (Functor f) => a -> f b -> f a 09:26:20 dmwit: ^ 09:26:47 :t (<3) 09:26:49 forall a. (Num a, Ord a) => a -> Bool 09:27:25 Do you recommend any Haskell books? I've a bsc. in mathematics and currently doing msc. in theoretical comp.sci, I grok functional programming, lazyness, type inference, pattern matching, I mostly need to learn Haskell's "standard" libraries, conventions etc. - and, get a little closer to fitting monads in my head 09:27:34 > 3 <$ [32] 09:27:35 [3] 09:27:41 probably read the wikibook then? 09:27:47 dons: yes.. 09:27:47 Arnar: yes, but it doesn't exist yet 09:27:56 --- join: vaasu (i=sidfn@203.104.25.129) joined #haskell 09:27:57 quicksilver: oh, something upcoming? 09:28:00 yeah. that book is on its way 09:28:01 Arnar: you sound like a perfect customer for 'haskell for the working programmer' 09:28:03 > 3 <$ [32, 45] 09:28:05 [3,3] 09:28:08 Sweet! 09:28:11 until then, hang out on this channel , read hackage.haskell.org 09:28:16 Arnar: which is being written by some inhabitants of this channel 09:28:22 and the other things on the haskell.org wiki 09:28:29 quicksilver: ah, sound about right. I've programmed professionally for some 6-7 years 09:28:31 --- join: SyntaxNinja (n=ijones@gw-1.galois.com) joined #haskell 09:28:41 quicksilver: any way to become a reviewer? :) 09:29:04 dons: yes.. this channel is extremely helpful I must say 09:29:13 hackage.haskell.org I didn't know about though.. 09:29:18 --- quit: filp ("Bye") 09:29:21 --- quit: gimbo ("Leaving") 09:29:21 Arnar: you should beg, pray, bribe and make friendly noises to bos and CosmicRay 09:29:49 --- quit: jwp_ (Read error: 104 (Connection reset by peer)) 09:29:49 I'm not sure if they're interested in more reviewers or not, at this stage 09:30:19 Arnar: hmm it's called "Real World Haskell" 09:30:22 Arnar: I have a terrible memory :) 09:30:26 Arnar: http://www.realworldhaskell.org/blog/ 09:30:28 Title: Real World Haskell 09:30:52 quicksilver: thanks.. 09:31:06 --- join: jwp_ (n=jwp@mail.icrossing.com) joined #haskell 09:31:29 that's what you referred to "haskell for the working programmer" before, or is it a different book? 09:31:38 that's the focus of the new book 09:31:50 Arnar: oh, you might also like to go through the videos of the haskell workshop 09:31:58 to get up to speed on some of the latest things happening in the language 09:32:05 dons: ah, yes.. definitely 09:32:24 there's a link from the haskell.org frontpage to videos recorded by malcolmw 09:33:29 dons: thanks.. see it 09:33:30 Arnar: that's what I meant, I had the idea right but that wasn't actualy the title :) 09:34:04 quicksilver: ok, just asked to be sure :) 09:34:07 dmwit pasted "half-hour RPN calculator" at http://hpaste.org/3177 09:34:11 --- join: Korollary (n=Unknown@c-24-22-208-129.hsd1.mn.comcast.net) joined #haskell 09:35:20 dmwit: expressions' [] >>= return . head = liftM head (expressions' []) 09:35:31 I didn't want to import Control.Monad. 09:35:38 @index fmap 09:35:38 Control.Monad, Prelude, Control.Monad.Reader, Control.Monad.Writer, Control.Monad.State, Control.Monad.RWS, Control.Monad.Identity, Control.Monad.Cont, Control.Monad.Error, Control.Monad.List 09:35:41 fmap then 09:35:41 It turns out to be a few characters less typing. =P 09:36:23 dmwit: boo 09:36:30 Okay, fmap is fine. =) 09:36:46 forever = fix . (>>) +1 insanity 09:36:51 ddarius: is >>= return . f frowned on? 09:37:09 dmwit: why do you pass a known value to expression' 09:37:16 dmwit: why even give expression' a parameter if it'll be an empty list 09:37:22 operator xs = choice [char c >> operate op xs | (c,op) <- [('+',(+)),('-',(-)),('*',(*)),('/',(/))]] 09:37:28 cpoucet: Because it won't be empty in the recursion. 09:37:36 ah, right, my irc window was hiding gthat 09:38:20 oerjan: Ooo, I like the choice combinator. 09:39:00 matthew-_: It's not that big a deal either way, but usually liftM is clearer and slightly more compact. 09:39:01 --- join: jr_ (n=chatzill@f051078001.adsl.alicedsl.de) joined #haskell 09:39:32 --- quit: der_eq (Remote closed the connection) 09:39:37 --- join: jjore-w (n=jbenjore@c-24-16-241-176.hsd1.wa.comcast.net) joined #haskell 09:39:43 ddarius: fmap is even more compact :) 09:40:05 matthew_-: infix `fmap` (or liftM) is quite an attractive idiom 09:40:11 --- quit: arcatan (Read error: 104 (Connection reset by peer)) 09:40:12 --- join: laz0r (n=laz0r@port-87-234-144-134.dynamic.qsc.de) joined #haskell 09:40:19 quicksilver: ahh, good thinking batman. 09:40:20 http://programming.reddit.com/info/2yb35/comments 09:40:21 Title: Live from the Haskell Workshop: Run-time Code Generation in Haskell :: Video (re ... 09:40:28 the harpy video, great demo. 09:40:34 matthew_-: if you previously had a non-monadic expressions, you might write "head (expressions' [])" 09:40:40 * ddarius doesn't like infix fmap or liftM. 09:40:50 matthew_-: then, when you moved it into a monad, you could write "head `fmap` (expressions' [])" 09:41:03 matthew_-: which is 'syntactically similar' making it feel like an evolutionary step 09:41:14 quicksilver: So is liftM head (expressions' []) 09:41:18 damnit, I'd imagined that with a flip 09:41:28 matthew_-: actually I like it even more when the thing on the left is a constructor 09:41:43 a <- make_foo ; return (Foo a) --- ugly 09:41:47 I was thinking of: (expressions' []) `fmap` head 09:41:51 for what f is (foldl f) == (foldr f)? f must be commutative, and f :: a -> a -> a, right? 09:41:54 Foo `fmap` (make_foo) -- prettier 09:41:58 IMO, of course 09:42:00 dmwit: since you are already importing Applicative you can use <$> 09:42:15 Taejo: f needs to be associative and strict in both arguments. 09:42:17 I discovered the other day that you could happily write [] Int rather than [Int], which I quite liked 09:42:21 :t (<$>) 09:42:23 forall a b (f :: * -> *). (Functor f) => (a -> b) -> f a -> f b 09:42:38 matthew_-: yes, the 'punning' of [] is slightly unsatisfactory 09:42:39 * ddarius has no problem with Foo <$> make_foo 09:42:52 Arnar: what does hackage not know about? 09:42:55 matthew_-: that is [a] as a type and [a] as a value, but with subtly different sense. 09:42:57 quicksilver: you mean the hardwiring of it to pre+post fix? 09:43:04 ahh 09:43:12 matthew_-: well [a] as a value being a list with exactly one member 09:43:22 but [a] as a type is just a plain unary type constructor 09:43:24 it's a bit odd :) 09:43:33 sure, but I was ignoring values, and just thinking of [] as a type function of kind * -> * 09:43:45 yes. it's the only 'outfix' unary we have 09:43:49 'bra-ket-fix' 09:43:50 :k [] 09:43:52 * -> * 09:43:56 --- quit: ozone_ (Read error: 104 (Connection reset by peer)) 09:43:57 that's the one! ;) 09:44:25 --- quit: the_dormant ("Leaving.") 09:44:28 quicksilver: there are a couple of others... 09:44:48 (,),(,,),(,,,),(,,,,),... 09:45:01 @type let f :: (,) Bool Int; f = (True, 5) in f 09:45:03 (,) Bool Int; f = (True, 5) in f :: (Bool, Int) 09:45:09 doserj: not unary 09:45:21 ah 09:45:27 doserj: not unary, but yes :) 09:45:32 --- quit: fasta ("Lost terminal") 09:45:39 also [,] [,,] [,,,] if we're not restricting to unary 09:45:46 and you can't section any of them, more's the pity 09:45:48 ?index fix 09:45:48 Control.Monad.Fix, Control.Monad.Reader, Control.Monad.Writer, Control.Monad.State, Control.Monad.RWS, Control.Monad.Identity, Control.Monad.Error 09:45:58 quicksilver: err, but not type functions 09:46:06 hmm 09:46:20 --- join: gkr (n=notme@201-212-49-41.cab.prima.net.ar) joined #haskell 09:46:24 dmwit: Unfortunately fix is not in the Prelude 09:46:26 matthew_-: indeed not 09:46:46 matthew_-: it's the non-quite-parallel between type and value which I think is quite odd 09:46:47 @type uncurry 09:46:49 forall a b c. (a -> b -> c) -> (a, b) -> c 09:46:53 matthew_-: not that I actually suggest it should be changed :) 09:46:56 is there an uncurry3 :: (a -> b -> c -> d) -> (a, b, c) -> d? 09:46:56 quicksilver: yes indeed. 09:46:59 matthew_-: just that it can and does sometimes confuse 09:47:15 :t uncurry3 09:47:17 Not in scope: `uncurry3' 09:47:21 Japsu: apparnetly not :) 09:47:26 dmwit annotated "half-hour RPN calculator" with "with some suggestions from #haskell to make it denser" at http://hpaste.org/3177#a1 09:47:28 quicksilver: yep. I think a careful comparison with something like Maybe should clear up any confusion :) 09:47:39 quicksilver: ;D 09:47:51 matthew_-: right. The point being that 'Maybe' is a different word from 'Just' 09:47:55 indeed 09:47:56 matthew_-: and a damn good thing that is :) 09:48:10 main = getLine >>= parseTest expression >> main 09:48:22 yes 09:48:25 --- join: ozone (n=andrep@starbuck.algorithm.com.au) joined #haskell 09:48:47 (But probably not worth an annotation this time. =) 09:49:01 maybe types should only be written using greek characters and values in roman characters 09:49:16 matthew_-: yeah, that would actually be quite nice 09:49:17 --- join: Daveman (n=dave@pool-138-89-1-77.mad.east.verizon.net) joined #haskell 09:49:24 then it would be clear, the difference between [] as a type function and [] as a value. ;-) 09:49:44 well you'd still be overloading the symbols [] themselves 09:49:45 because [] and [] look very different in greek and roman character sets... 09:49:48 ;) 09:50:15 --- join: ptx_ (n=ptxmac@0x5550c853.adsl.cybercity.dk) joined #haskell 09:50:59 --- join: glguy (n=eric@unaffiliated/glguy) joined #haskell 09:51:02 --- join: spoopithy (n=spoop@76.28.23.59) joined #haskell 09:51:02 heh, zip "+-*/" [(+),(-),(*),(/)]] is cute 09:51:16 =) 09:52:09 --- part: vaasu left #haskell 09:52:24 cool 09:52:32 --- join: mikael (n=mikael@dhcp-247-28.nomad.chalmers.se) joined #haskell 09:52:46 --- join: mrsolo (n=mrsolo@dsl092-025-194.sfo1.dsl.speakeasy.net) joined #haskell 09:53:33 though if there was a operatorFromString function, that would be nice too :-) 09:54:05 doesn't help much in general 09:54:14 normally you want your own custom AST type in there anyhow 09:54:16 guess not. And I guess not typable in haskell 09:54:38 so you have [(Plus,(+)),(Minus,(-))...] 09:54:41 Hrmn. The IO monad makes the first few pages of CAR Hoare's CSP book really intuitive. 09:54:45 or write it as a zip if you like 09:55:01 but I find writing as a list of pairs scales better 09:55:09 once your assoc list is more than a few lines long 09:55:15 you want to see which bit lines up with which bit :) 09:55:42 --- join: BSP_ (n=Batterse@zone1.robinson.cam.ac.uk) joined #haskell 09:55:45 --- part: BSP_ left #haskell 09:55:46 yeah, definitely. That's why I said "cute" rather than "a sound engineering practise" 09:56:41 Also, I get the impression that this stuff could *totally* be implemented directly in Haskell as data structure traversals, thanks to laziness. ^^ 09:56:43 however the practice of using lists of pairs and doing something with them to build tables is really nice 09:57:06 quicksilver pasted "keymap as list of pairs" at http://hpaste.org/3178 09:57:23 osfameron: consider the above rather short code to set up some keybinds 09:59:36 --- quit: TSC (Read error: 110 (Connection timed out)) 10:00:04 --- join: vaasu (i=sidfn@203.104.25.129) joined #haskell 10:00:13 quicksilver: ok, I can see that's a dispatch table, but I don't know what the Turbulence and modifyPT stuff is 10:00:18 --- quit: spoop (Connection timed out) 10:00:41 osfameron: modifyPT just knows how to find the particular little bit of state inside the global state 10:00:51 osfameron: Turbulence doesn't matter, it's just a constructor 10:01:11 --- quit: bos (Read error: 113 (No route to host)) 10:01:26 osfameron: the point is you can write a modification function for a tiny bit of state, and then use something like modifyPT in this case to 'lift' that tiny modification into an IO () action 10:01:42 osfameron: (which goes and looks up an IORef and finds the right bit and changes it and saves the changes) 10:01:45 --- quit: ptx (Read error: 110 (Connection timed out)) 10:01:58 osfameron: and still the main chunk of the keymap looks nice and neat and easy to read :) 10:02:12 quicksilver: I'm missing too much background to understand that (e.g. the IORef stuff) 10:02:39 I've got wedged in haskell studies for about a month... hoping to get more time from November... 10:03:51 ok, well if you wrote it out in full it would look like: \env -> do state <- readIORef env ; let pt = (selector function here) state; let Turbulence x y z = pt in writeIORef env (state { selector = Turbulence x (y+1) x }) } 10:04:17 osfameron: it's (a) shorter than that and (b) more resilient to re-arrangements of your data structure 10:05:01 can anyone work out which built-in function is ((. (scanr (.) id . repeat)) . map . flip id)? 10:05:13 freak 10:05:30 @unpl ((. (scanr (.) id . repeat)) . map . flip id) 10:05:30 (\ l u -> map (\ h -> h l) (scanr (\ a b c -> a (b c)) (\ d -> d) (repeat u))) 10:05:40 @type ((. (scanr (.) id . repeat)) . map . flip id) 10:05:42 forall c. c -> (c -> c) -> [c] 10:05:46 quicksilver: right. But presumably even without modifyPT you could presumably extract the bit that gets the IORef and writes it as part of the dispatch? 10:05:48 iterate 10:05:51 --- quit: FMota (Read error: 104 (Connection reset by peer)) 10:05:54 Taejo: iterate 10:05:59 osfameron: yeah, that's all modifyPT is 10:06:00 correct 10:06:05 osfameron: it's just that patter extracted 10:06:05 typing ftw 10:06:07 --- join: FMota (n=FMota@dhcp-36-203-57-69.cf-res.cfu.net) joined #haskell 10:06:24 cpoucet, indeed. Such is the Haskell way 10:06:28 osfameron: so this is just a nice example of abstraction really :) 10:06:33 quicksilver: ah, ok. So instead of doing an inversion of control thingy, you just compose the function that does the whole thing. 10:06:44 quicksilver: sorry, got to head off. That's interesting though... 10:06:55 --- join: sjanssen (n=sjanssen@CPE-76-84-191-66.neb.res.rr.com) joined #haskell 10:07:25 --- quit: ddarius (Read error: 110 (Connection timed out)) 10:08:12 --- join: Beelsebob (n=tatd2@91.84.210.102) joined #haskell 10:08:26 --- quit: malcolmw ("got to go...") 10:09:00 --- quit: MyCatSchemes ("Swim, swim, hungry!") 10:10:58 --- quit: locomalo ("Saliendo") 10:11:25 --- join: MyCatSchemes (n=rb6822@sietie.cs.bris.ac.uk) joined #haskell 10:11:42 has anyone here installed ghc on an intel mac before? 10:11:57 --- join: QplQyer (n=jeroen@dD5E0A79A.access.telenet.be) joined #haskell 10:11:57 --- quit: gour (Read error: 104 (Connection reset by peer)) 10:12:13 halcyon10: its certainly been done 10:12:57 --- join: gour (n=Gour@0-31.dsl.iskon.hr) joined #haskell 10:13:35 dons: my problem is: i am no unix expert so the installation guidelines at http://www.haskell.org/pipermail/glasgow-haskell-users/2007-May/012576.html are too complicated for me 10:13:36 Title: ghc-6.6.1 Mac (Darwin) Binary Dists, http://tinyurl.com/2hya9r 10:14:45 i hoped that someone here has done it before and could help me with the steps 10:16:03 I've done it. Nothing special for the installer. But... 10:16:18 those aren't really installation guidelines 10:16:25 you also need to make sure you have the two required frameworks in 10:17:07 ok, i downloaded and extracted the ghc package and the GMP and readline frameworks, what do i have to do now? 10:17:40 -- /Library/Frameworks first. 10:17:54 --- quit: mrighele ("Ex-Chat") 10:18:07 Drag the two frameworks into /Library/Frameworks. Then run the installer. That's it. 10:18:09 --- quit: jr_ (Read error: 113 (No route to host)) 10:18:09 -- ? 10:18:42 (sorry, my irc client kept eating the / at the beginning of the line, so I put --) :) 10:19:35 ah :) ok i'm in the frameworkfolder now. The GMP framework is already in there, perhaps from some other installation? 10:19:43 /say, yitz :) 10:19:54 Could be, then that's fine. 10:20:03 Hi MyCatSchemes 10:20:20 Ah, that's what I'm supposed to write? 10:20:33 --- quit: mikael () 10:20:36 /say /say 10:20:43 yitz: that's what most IRC clients do, anyway. 10:20:46 Got it! Thanks. 10:21:44 dons: ozzies can make some disgusting commercials 10:21:46 HTH, HAND. 10:21:55 halcyon10: do you happen to have macports installed? 10:21:57 --- nick: Lycurgus_ -> Lycurgus 10:22:06 dons: e.g. the movie in http://www.anti-smoke.com/every-cigarette-is-doing-you-damage-part-1/ 10:22:08 Title: Every Cigarette is Doing you Damage, Part 1Anti-Smoking Blog, http://tinyurl.com/34gdch 10:22:13 i have darwinports and fink installed 10:22:37 halcyon10: ghc is in darwinports IIRC, that is probably the easiest route for you 10:23:19 sjanssen: i already tried that, but portage only seems to have a PowerPC version available :/ 10:23:30 --- nick: Lycurgus -> Lycurgus_ 10:24:39 No, ports is NOT the easiest route. It compiles ghc and a bunch of other stuff. FIne if you want to let your mac churn for a few hours. 10:25:05 cpoucet: pretty big anti smoking movement in .au 10:25:40 yeah, I was surprised to find out I was the only smoker 10:25:44 well except from the guy from valencia 10:25:50 beppe 10:26:16 Oops, forgot, it's not an installer. Or an app (so don't drag it to Applications). Instead: 10:29:12 --- quit: JBGood (Read error: 110 (Connection timed out)) 10:30:10 --- quit: glguy ("leaving") 10:30:21 Unzip the archive (double-click works for me..) Then open a Terminal, type "cd (path to where you unzipped)", and follow the instructions in the file called INSTALL. 10:30:30 dons-> can you update pages of your maintened haskell modules to give the darcs repo in hackageDB ? ie ports repo give not a repository 10:30:39 --- join: mrsolo_ (i=mrsolo@nat/yahoo/x-95b2ecc5d222f5f0) joined #haskell 10:31:13 Which is: type "make install". That's it. (wish it were an installer or app, though). 10:31:30 yitz: do you mean the ghc archive or the readline archive? 10:31:52 ghc. The 2 frameworks you just drag into /Library/Frameworks. 10:32:27 --- quit: hkBst ("Konversation terminated!") 10:32:28 yitz: oh, and where is the readline framework located? 10:33:11 ghc download page says: http://www.haskell.org/ghc/dist/mac_frameworks/GNUreadline-framework.zip 10:33:13 http://tinyurl.com/2gxmur 10:33:52 --- join: DarthJesus (n=Godsmith@ip68-99-90-88.ph.ph.cox.net) joined #haskell 10:34:16 yitz: yes, i downloaded that but i'm not sure if i have to rum some script first to make the framework or if it is already compiled 10:34:35 No, it's all ready to go. 10:35:28 --- part: vaasu left #haskell 10:35:41 mmm, rum! 10:35:55 btw when i compile a module where is the best to install it ? 10:36:01 yitz: the file with the name GNUreadline (540kb,09.03.07) 10:36:07 yitz? 10:36:16 import Jamaica (rum) 10:36:21 Um 10:36:47 canabis* 10:37:21 When I downloaded it with Safari, it got automatically unzipped to GNUreadline.framework (could be the "framework" part doesn't appear for you) 10:37:50 So yeah. Just drag that to /Library/Frameworks. 10:38:04 yitz: ah, now i understand how these frameworks are organized, they are folders, i thought they were files, sorry for the confusion 10:38:24 --- join: olsner (n=salparot@cust.fiber-lan.vnet.lk.85.194.50.194.stunet.se) joined #haskell 10:38:38 yitz:ok, i have the frameworks ready 10:38:40 Apps are also folders, btw, with (sometimes hidden) extension .app 10:38:48 --- join: bos (n=bos@nat.945battery.lindenlab.com) joined #haskell 10:39:09 --- join: z` (n=nine@209-78-110-141.ded.pacbell.net) joined #haskell 10:39:10 --- nick: blarz_ -> blarz 10:39:15 * geocalc should ask again 10:39:16 yitz: yeah, i just didn't know that this applied also to frameworks 10:39:17 I loved it when I upgraded to the next OS X and all hidden .app extensions became visible. 10:39:32 Open a terminal (/Applications/Utilities) 10:39:54 lament: I think that is a Finder preference. 10:40:17 yitz:ok 10:40:33 Yep, the Advanced tab. 10:40:45 yeah, there it is :) 10:41:09 --- quit: lnxz ("Lost terminal") 10:41:21 --- quit: Adamant (Read error: 110 (Connection timed out)) 10:41:24 * geocalc asked : " when i compile a module where is the best to install it ? " 10:41:43 --- quit: doserj ("Leaving") 10:42:03 install it in your home directory? 10:42:13 --- join: lnxz (n=joachim@bjo1-1x-dhcp451.studby.uio.no) joined #haskell 10:42:13 geocalc: make a Cabal package and install it 10:43:33 ùùh happy want user local for exemple 10:43:37 --- nick: ntgrl -> integral 10:45:51 dons-> you saw my question about all your maintened modules ? 10:45:55 --- quit: mrsolo (Connection reset by peer) 10:46:12 --- join: mrsolo__ (n=mrsolo@dsl092-025-194.sfo1.dsl.speakeasy.net) joined #haskell 10:46:39 --- join: dons_ (n=dons@c-24-20-11-213.hsd1.mn.comcast.net) joined #haskell 10:46:50 --- quit: dons_ (Client Quit) 10:47:14 oops 10:47:43 --- join: pp (n=pp@user-0c2ihel.cable.earthlink.net) joined #haskell 10:48:00 geocalc: i don't know about dons, but i vaguely recall some irc clients may only highlight one's nick if it is followed by : 10:48:21 yitz: what do i have to do next? 10:48:57 What are you up to? 10:49:37 Do you have a terminal window yet? 10:50:00 yitz: i have both frameworks in my library/frameworks folder and i have the terminal window with path /Applications/Utilities 10:50:17 geocalc: you were asking about the `ports' package? 10:50:29 how is the speed of compiled haskell versus C ? oerjan didn't know that thanks 10:50:34 Type "cd " 10:50:55 yes dons 10:51:07 ok 10:51:34 type "make install" 10:51:39 and elses too dons 10:52:02 yitz: it says: make: Nothing to be done for `install'. 1