00:00:00 --- log: started haskell/02.02.04 00:08:47 logan: have you looked at King and Launchbury's paper on the subject? 00:17:05 Let me see which paper on the subject I did read. 00:17:36 Regarding the subject of functional graph implementations? 00:28:08 yep 00:28:32 "Structuring Depth-First Search Algorithms in Haskell" 00:29:14 I read something by Erwig that was very interesting. 00:29:26 And it was followed up with an implementation I never figured out how to compile with ghc. :P 00:30:31 ah, I think I might have seen that 00:31:01 how does your dfs work? 00:31:02 Both ghc and hugs barf on: instance Eq a => Eq (LPath a) where 00:31:11 ummm 00:31:18 ohhh 00:31:33 didn't I help someone fix that up a while ago on here? 00:31:39 you could try searching for LPath in logs 00:31:48 Heffalump: Well, I was hoping to figure out how to use a monad to thread state, but it was a little beyond me, so I pass a [Maybe Vertex] to a helper function... 00:31:57 Oh, wait, no I don't. 00:32:01 (I can't remember what was going on at all - have you tried "-98"?) 00:32:02 I thread a FiniteMap throughout. 00:32:12 And just remove elements I visit, and return the resulting FiniteMap. 00:32:16 which you use to remember where you've been? 00:32:24 (so the dfs helper function returns (FiniteMap, [Vertex]) 00:32:28 * Logan nods. 00:32:36 right 00:32:54 This was more of an exercise to learn how to do this rather than do it exactly right. :P 00:32:57 I'd prefer to use a monad. 00:33:10 take a look at the paper I mentioned (http://www.dcs.gla.ac.uk/fp/authors/David_King/structuring-dfs.ps.gz was where it was a while back) 00:33:10 But I wanted to have a working implementation before I messed with it. 00:33:27 And regarding your helping someone before, I asked about it here before, but I must've missed the answer. :P 00:33:30 * Logan checks his logs. 00:33:45 it was a while ago 00:35:24 Hmm, well, you basically said they shouldn't be redefining Eq for what is essentially just a list. 00:35:56 Haha, I thought I tried jsut commenting those instance declarations out before, but apparently not. 00:55:59 My brain just exploded. 00:56:04 (from ghc :P) 00:57:34 --- join: shapr (~user@195.156.199.178) joined #haskell 01:02:54 I really need to be able to use monads. :P 01:04:47 oh yes, LPath is a type synonum, that was the problem 01:05:00 just commenting them out wouldn't work, it'd actually break the program 01:05:01 heh 01:05:05 synonum is a cool word 01:05:09 oops :-) 01:05:11 synonym 01:05:21 it's like V and 5, they're synonums 01:05:38 hmmm... 01:05:41 Heffalump: I recently learned that I can string together output functions using something like sequence_ $ map putStr lines 01:05:45 Heffalump: What is the analog for input? 01:05:54 Logan: the $ is just like adding parens 01:06:01 Heffalump: Commenting them out did work. 01:06:03 $ is loosely bound function application 01:06:06 shapr: Yeah. :P 01:06:13 It's not a question about syntax. 01:06:39 It's really about how I might easily read n lines into a list. 01:07:15 Oh, figured it out. 01:07:26 sequence is for stuff that returns stuff, sequence_ is for stuff that doesn't. :P 01:08:48 logan: it'd make it compile in ghc/load in hugs, but you'll have a broken program 01:09:10 Hmm. 01:09:11 logan: what precisely do you want to do, input a bunch of lines? 01:09:18 when do you want it to stop? 01:09:27 I did sequence $ replicate n getLine 01:09:30 And it seems to do what I want. :P 01:09:35 ah, cool 01:16:58 * shapr bounces 01:17:17 hola 01:17:25 hi jewel! what's up?? 01:17:34 monday morning 01:17:38 and a wet dublin 01:17:47 yah, mondays suck 01:17:53 it's even raining here! 01:19:06 do you know about http://www.fosdem.org/ ? 01:19:36 no 01:19:37 * shapr looks 01:19:58 nifty! 01:20:09 much cheaper than NordU in Helsinki... 01:20:20 I'm seriously thinking of going 01:20:35 I was even planning to get up at 4am this morning to go register at the immigration office 01:20:40 (but then it was raining ...) 01:20:56 heh 01:26:13 * Logan needs to invert a FiniteMap. 01:33:25 just do a fold over it? 01:33:31 (inserting into a new one) 01:33:53 I can think of several ways. :P 01:34:31 I guess "listToFM $ map (\(a,b)->(b,a)) $ toListFM" is shortest 01:34:57 I did something sorta like that. 01:35:35 Except I didn't actually need the inverted FM, I just wanted the key associated with a particular value from the original FM (the FM I'm using has a one-to-one mapping). 01:36:02 ah, right 01:36:36 "lookup val $ map (\(a,b)->(b,a)) $ toListFM" then 01:37:52 Can I export a type constructor from a module? 01:39:00 yes 01:40:07 Does it consist of more than simply putting the tyep constructor's identifier in the parenthesized list immediately following the module name? 01:41:19 nope 01:41:39 errm, well I don't think so, anyway 01:41:49 Hmm. 01:42:05 if that's not working, try putting Datatype(Constructor) in 01:42:23 assuming your type is data Datatype = Constructor 01:42:28 It is. 01:42:47 Cool, that fixed it, thanks. 01:43:19 does anyone use nhc98? 01:44:06 module Foo(G) where 01:44:06 data F = G 01:44:09 worked for me, btw 01:44:13 jemfinch`: I do 01:44:24 (usually only to test for Haskell '98 compliance though) 01:44:32 ah, ok. 01:44:39 ghc for final compilation? 01:44:54 every so often I compile my code with nhc98 and check it works 01:45:15 the final result is slow but adequate 01:45:21 for testing purposes anyway 01:45:34 circles.hs:36: 01:45:34 My brain just exploded. 01:45:38 I love that error message. :P 01:46:32 I can't handle pattern bindings for existentially-quantified constructors. 01:46:37 I don't even know what that means. 01:47:07 is circles.hs your code? 01:47:22 * Heffalump heads into the office, back in a while 01:47:38 * Logan nods. 01:48:28 I think I'll just rewrite this function. 02:01:02 Buh, still getting the same complaint. 02:11:29 Heh, I love haskell... 02:11:38 Spend a few hours getting code to compile... 02:11:44 But as soon as it compiles it works. :P 02:21:16 Are there any matrix libraries for haskell? 02:21:34 Something that could simply partition a matrix and calculate its transpose is all I need. :P 02:21:55 Maybe Array can do it. 02:26:07 partition a matrix in what sense? 02:26:20 you could just implement something with lists of lists 02:42:25 The transpose operation seems tricky (doing stuff with columns rather than rows in general seems tricky). 02:42:34 Here's a tougher question... 02:42:43 Why is haskell too dumb to parse ".1" as a Double? :P 02:43:28 writing transpose is an exercise we give our undergraduates :-p 02:43:53 logan: I guess because "." is composition too 02:44:11 and making the grammar more ambiguous just makes everyone's lives harder 02:44:27 I mean the read function itself. 02:44:33 Or is the read function meant primarily for parsing haskell? 02:44:34 OIC 02:44:37 no, right 02:44:54 I see a readFloat in Numeric, I'll try it. 02:50:34 I guess a transpose function is trivial. :P 02:51:09 it's not trivial 02:54:40 Logan: what's a finite map? 02:55:14 shapr: like a hash, basically 02:55:24 it's a mapping from keys to values 02:55:36 sounds simple enough 02:55:49 the "finite" bit just refers to the fact that you can't put an infinite number of key -> value pairs into the map :-) 02:55:50 what warrants a separate name? 02:55:53 Heh, not quite as trivial as I thought. 02:55:56 oh! 02:55:57 transpose :: [[a]] -> [[a]] 02:55:57 transpose x 02:55:57 = 02:55:57 if length (head x) > 0 02:55:57 then map head x : (transpose $ map tail x) 02:55:59 else 02:56:02 [] 02:56:10 logan: looks good 02:56:22 * Logan flexes his muscles. 02:57:48 brb 02:57:54 --- part: shapr left #haskell 03:00:28 * Logan is baffled at why this logic isn't doing what I expect it to. 03:01:48 Oh, because I'm dumb. 03:02:13 Another program done! 04:04:52 --- quit: cuelebre ("adios") 04:10:43 Heh, damn one-letter typos! 04:14:18 --- join: cuelebre (~cuelebre@212.85.32.125) joined #haskell 04:36:03 --- join: shapr (~user@195.156.199.178) joined #haskell 04:40:19 --- quit: jewel (""adding video card"") 05:10:35 --- join: Vutr__ (~ss@212.169.153.182) joined #haskell 05:10:57 * shapr bounces 05:23:37 --- quit: Vutra_ (Read error: 110 (Connection timed out)) 05:37:56 aha, cool! 05:38:01 http://ocamlnet.sourceforge.net/doc/goals/goals.html 05:38:07 this is just what haskell-libs needs! 05:45:40 --- join: jewel (~jleuner@spamisevil.test.ie.vianw.net) joined #haskell 05:45:47 re jewel! 05:45:58 heya 05:46:05 just set up xinerama with two 17 inchers 05:46:08 coool! 05:46:44 the wallpaper is stretched, but everything else looks good 05:46:54 sounds nifty 05:47:06 I'd ask for a screenshot, but I guess that wouldn't help much... 05:47:09 Wow, it's snowing and really windy. 05:47:19 Just 4 days ago it was like summertime. 05:48:06 I'm glad I don't have to go out today. 05:50:10 --- join: Yurik (~yrashk@gw.telcos.net.ua) joined #haskell 05:50:28 hi Yurik 05:50:46 shapr hi 06:01:40 --- nick: Vutr__ -> Vutral 06:19:07 Ugh, this shortest-paths function doesn't work right, it seems. 06:19:19 I can visually inspect the graph structure and see that there's a shorter path that it's missing. 06:22:42 what kind of shortest path algorithm are you doing? based on distances, or just number of edges? 06:24:08 Based on distances, using Erwig's implementation of Dijkstra's algorithm. 06:25:06 I can clearyly see a path that is of less cost than the one it's finding. 06:26:42 did you undo the change you made to the Eq instance of LPath? 06:27:18 No. :P 06:27:27 I'm not sure what I should do with that. 06:28:14 That may be it... the file where that was changed I believe is used by these routines. 06:29:13 if you leave that instance deleted, the code will be *broken* 06:29:19 did you try with -98, instead? 06:31:04 No, I haven't tried that. 06:31:23 I understand what he's doing now, at least. 06:32:11 That's not a ghci option, is it? 06:35:40 I can't figure out how to fix this. 06:36:29 Logan: I'd love to check it out, but I won't be home for a coupla hours 06:36:38 will you put your code online somewhere? 06:36:50 -98 should be a ghci option 06:37:02 oh. 06:37:11 ghci -fglasgow-exts 06:37:13 sorry 06:39:24 Hmm, I think I tried that. 06:40:08 The error message changes to: 06:40:08 Overlapping instance declarations: 06:40:08 RootPath.hs:17: Eq (LPath a) 06:40:08 /usr/lib/ghc-5.02/imports/std/PrelBase.hi:165: Eq [a] 06:44:39 ok, -fallow-overlapping-instances 06:44:41 or similar 06:44:51 * shapr boings 06:44:52 * Heffalump strongly suggests you actually fix up this code 06:45:00 look for the type LPath a = [a] 06:45:08 and change it to newtype LPath a = LPath [a] 06:45:16 ah, unit-test-first rocks my world 06:45:16 and then fix all the problems that causes 06:45:28 that'll make it all Haskell 98 compliant again too 06:47:03 * shapr sings twinkle twinkle little bat 06:48:32 Heh. 06:48:42 I wonder how many problems it'll cause. :P 06:49:02 quite a few, I suspect 06:49:22 but they'll all be fixable by just adding the type constructor LPath where appropriate, almost certainly 07:02:01 Yeah, I think it's all localized to RootPath.hs. 07:09:54 I can't work this out at all. 07:10:49 --- quit: jewel ("back to a single X") 07:35:35 --- join: jewel (~jleuner@spamisevil.test.ie.vianw.net) joined #haskell 07:39:14 I can't believe this is so hard for me to figure out. 07:39:21 I guess I've been awake too long. :P 07:40:56 So newtype X = Y makes X so that it's constructed like Y, but is really treated like a different type? 07:41:51 that what I understand, but I've only used it once :) 07:44:37 So if I do newtype XType a = X [a], I can't pass a valueof type XType to any function that expects a list? 07:46:07 I don't think so 07:46:20 not unless you pass a value of type [XType] 07:53:14 * Logan nods. 07:53:18 I'm finally making some progress. 07:53:22 Fixed some errors, moved on to new ones. 07:55:10 logan: yep 07:55:21 logan: but you can first unwrap it, then pass the value 07:55:56 so "foo xs" becomes "let X xs'=xs in foo xs'" 07:55:57 for example 07:56:44 * Logan nods. 07:57:02 The hard part is figuring out what some things s hould be in these concise functions. 08:28:29 Woah, I finally have successful compilation. :P 08:28:29 And it works! 08:28:29 * xbill =) 08:28:29 So now I can go back to coding my own stuff. 08:28:29 Though one good side effect is my latest program is now complete. 08:28:29 http://www.ntnu.edu.tw/acm/ProblemSetArchive/A_FINALS/1996/Finals96html/index.html 08:28:29 This morning I've done A, B, C, and E. :P 08:28:29 * shapr bookmarks that 08:28:43 B was really really easy with that functional graph library. :P 08:28:56 It consisted of input, constructing the graph, and calling the "scc" function to get the strongly connected components. 08:29:11 Though I guess you had to know that that's what B is asking for in order to do it that way. :P 08:29:35 F is a nice easy one. 08:31:12 * Logan is going to do D now... looks like it'll be interesting to do in Haskell. 08:32:44 --- quit: shapr ("hometime") 08:37:51 --- quit: jewel ("cd burner installation") 09:01:08 Um, how can I cast from Int to Double? 09:02:42 fromInt 09:03:39 Is that defined outside of the prelude? 09:03:43 I figured out fromIntegral. 09:04:33 Oh, yes, fromInt isn't standard 09:25:11 --- join: jewel (~jleuner@spamisevil.test.ie.vianw.net) joined #haskell 09:30:39 --- join: shapr (~user@p-c2fbab34.easy.inet.fi) joined #haskell 09:39:24 Problem D done! 09:39:34 yay! 09:39:45 This is the most of a problem set I've done in haskell so far. 09:43:52 Problem F will be fun. 09:43:57 But it might have to wait until after I sleep. 09:44:13 * shapr checks to see who's subscribed to haskell-libs-dev 09:48:39 --- join: Vutra_ (~ss@212.169.154.231) joined #haskell 09:50:40 --- join: Vutr__ (~ss@port-212.169.143.102.flat4all.de) joined #haskell 09:57:59 * shapr does loty homework 10:08:09 --- quit: Vutral (Read error: 110 (Connection timed out)) 10:08:34 * shapr sings 10:09:33 --- quit: Vutra_ (Read error: 110 (Connection timed out)) 11:07:14 shapr :-) 11:18:54 --- quit: cuelebre (Remote closed the connection) 11:23:14 --- quit: Yurik ("reboot") 11:47:37 --- join: Deo (~johnnys_@d226-25-105.home.cgocable.net) joined #haskell 11:47:59 Howdy 11:48:42 Is there anyone here? 11:49:17 hmmmm...... 11:50:42 I guess not.... 11:50:49 --- quit: Deo (Client Quit) 13:01:32 i am there 13:01:35 ops 13:01:37 a bit too late 14:25:31 * shapr wurbles 14:27:12 --- join: kepler (~kepler@user-vcaugfp.dsl.mindspring.com) joined #haskell 14:27:39 * shapr bounces 15:05:25 --- quit: shapr (carter.openprojects.net irc.openprojects.net) 15:06:52 --- quit: jemfinch` (Remote closed the connection) 15:07:26 --- join: jemfinch (~jemfinch@rnie-99-43.resnet.ohio-state.edu) joined #haskell 15:08:19 --- quit: jemfinch (Client Quit) 15:11:17 --- join: jemfinch (~jemfinch@rnie-99-43.resnet.ohio-state.edu) joined #haskell 15:17:13 --- quit: jemfinch (Remote closed the connection) 15:17:40 --- join: jemfinch (~jemfinch@rnie-99-43.resnet.ohio-state.edu) joined #haskell 15:19:46 --- quit: jemfinch (Remote closed the connection) 15:22:10 --- join: jemfinch (~jemfinch@rnie-99-43.resnet.ohio-state.edu) joined #haskell 15:25:08 --- quit: jemfinch (Remote closed the connection) 15:29:23 --- join: rik (spamtrap@dsl-212-23-24-254.zen.co.uk) joined #haskell 15:29:34 --- part: rik left #haskell 15:30:07 --- join: jemfinch (~jemfinch@rnie-99-43.resnet.ohio-state.edu) joined #haskell 15:36:45 do they have hash tables for haskell? 15:48:30 --- join: tmoertel (~chatzilla@pa-mtlebanon2a-268.pit.adelphia.net) joined #haskell 16:26:27 --- join: kepler_ (~kepler@user-vcauhbq.dsl.mindspring.com) joined #haskell 16:39:22 anyone up? 16:40:16 --- quit: kepler (Read error: 110 (Connection timed out)) 16:51:11 I'm up. 16:52:41 --- quit: jemfinch () 16:52:47 --- join: jemfinch (~jemfinch@rnie-99-43.resnet.ohio-state.edu) joined #haskell 16:55:59 hey :) 16:56:08 howdy 16:56:15 Gave up on my Haskell 'pickle' idea 16:59:44 why? 17:00:13 can't you just define a type class "Serializable" that supports two operations, "pickle" and "unpickle"? 17:01:26 you're not going to get a generic pickle like Python has, but then, not everything can be pickled (this is even true in Python) 17:02:13 I don't code in Haskell, so I could be entirely offbase, but it seems to me that pickle would be relatively easy to implement. 17:11:33 no comment? 17:15:02 --- quit: jemfinch (Remote closed the connection) 17:18:03 --- join: jemfinch (~jemfinch@rnie-99-43.resnet.ohio-state.edu) joined #haskell 17:21:56 Well, you have to be even less general w/ haskell 17:23:04 you have to define what type 'read' will turn the string into- that's the problem 17:23:21 Good morning! 17:23:25 I suppose, though, if you only pickle/unpickle one particular type, it'd work 17:23:27 --- join: water (water@c207-202-221-160.sea1.cablespeed.com) joined #haskell 17:23:28 hey :) 17:23:42 hi 17:23:45 hey 17:24:01 you can't specify an type class with two functions, pickle : 'a -> string, and unpickle : string -> 'a? 17:25:31 --- quit: jemfinch () 17:25:39 --- join: jemfinch (~jemfinch@rnie-99-43.resnet.ohio-state.edu) joined #haskell 17:25:44 I doubt you can make a single function that returns two different types. 17:26:26 Haskell has parametric polymorphism. 17:26:42 does that apply to type definitions? 17:26:48 * yusri looks around 17:26:50 so in theory, you can have a function that takes "any type" ('a in ML terms) and returns a string. 17:27:14 well, that's not the biggy 17:27:30 the 'show' func does that (without any boundaries that i know of, at least) 17:27:31 and aren't you able to restrict functions to certain "classes" of types? 17:27:40 * Logan nods. 17:27:47 it's the 'read' funct that requires an explicit type to convert String -> a 17:28:08 as in String -> Database, etc 17:28:32 Maybe you could make a Serializable a => String -> a ? 17:28:33 IMHO 17:28:41 yeah, that's what I'm saying. 17:28:44 Not that that's any different from Read. 17:29:27 well, i suppose- if I could somehow define Serializable dependent on the type the instance is... 17:29:47 as jemfinch said- I have no idea how to accomplish that, however 17:30:29 Serializable could somehow define 'read'? 17:30:35 * yusri is in over his head 17:30:38 The problem is that it'll take on a type dependent on the context in which you use it in the code. 17:30:46 right 17:30:49 You'd have to make your own object structure. 17:30:59 heh i can take pages of lisp but this stuff is a bit much :) 17:31:01 And you'd probably have to develop your own object handling routines. 17:31:09 right 17:31:12 --- part: water left #haskell 17:31:12 To mimic the sort of OO stuff other languages offer. 17:31:14 Logan: that doesn't sound right. 17:31:38 Haskell doesn't seem to be object-oriented, to me. Just type classes. 17:31:53 where's a haskell tutorial that covers type classes? 17:32:02 http://www.haskell.org/tutorial ? 17:32:12 Hmm, maybe you can do it. 17:32:35 I think I can think of how to do single inheritence and so forth. 17:32:44 But it may be a little to much for my current, paltry haskell skills. 17:32:55 Mine are even more pathetic 17:33:15 But, i'll have a go at creating a simple un/pickler for one particular type 17:33:24 since that's all i need it for, anyhow 17:33:26 ;) 17:34:36 class Serializable a where 17:34:39 Your object methods would correspond to functions available for particular type instances. 17:34:43 pickle :: a -> string 17:34:49 unpickle :: string -> a 17:34:51 17:34:55 that seems like what you'd want. 17:35:05 hmmm.. lemme play w/ it 17:35:37 The hardest part would be your unpickle function, which would have to determine the object by inspection. 17:35:43 s/object/& type 17:35:59 Somehow it'd have to know about every object type. 17:36:08 Logan: no it wouldn't. 17:36:13 I think java can get away with things like reflection. 17:36:27 that's the point of type-classes -- you can write functions that operate on a single type and make them part of a typeclass. 17:36:27 It'd either have to know about the object or know to pass on the data to some other function that does. 17:36:42 Logan: oh, you might be right. 17:36:47 jemfinch: But let's say you have a serialized object, but no idea what type in the object hierarchy it really is. 17:37:06 yeah, you'd have to dispatch on a type-tag or something. 17:37:12 This doesn't prevent you from doing OO, I just think it makes large, complex object hierarchies tedious, maybe. 17:37:22 Because you have to chain together all your unpickles. 17:37:45 Which means superclasses have to know about subclasses. 17:38:05 Seems like it wouldn't take much to modify haskell to get around that, maybe. 17:39:53 Also, I'm not sure if haskell supports real object polymorphism at all (like virtual method calls). 17:40:18 Once you cast an object into the type of its superclass, you can no longer regain the information that's lost. 17:40:27 Unless you store it in a particular manner. 17:40:31 yeah, I'd still depend on read to convert it to an object, and to do that I have to supply a type to read, i beleive 17:40:38 Logan: such a restriction is necessary for safety. 17:40:38 I guess you could make it a FiniteMap or something. 17:42:36 --- quit: jemfinch () 17:42:43 is there a way to define a type of a function dependent on certain params? 17:42:43 --- join: jemfinch (~jemfinch@rnie-99-43.resnet.ohio-state.edu) joined #haskell 17:42:56 via a guard, perhaps? 17:43:36 or... merely another function- though i don't know if you can change the type of a function during runtime 17:43:41 redefine, that is 17:44:28 http://www.cs.chalmers.se/~nordland/ohaskell/ 17:44:57 --- join: _Luke (~luke@mail.bluetail.com) joined #haskell 17:47:22 <_Luke> can anyone tell me why this doesn't typecheck: 17:47:27 <_Luke> data NineOp = Plus | Minus | Times | Divide | Negate deriving (Eq) 17:47:27 <_Luke> programs :: [NineOp] 17:47:27 <_Luke> programs = [(op : subprog) | op <- ops, subprog <- programs, 17:47:27 <_Luke> op /= Negate || (head subprog) /= Negate] 17:47:27 <_Luke> ops :: [NineOp] 17:47:28 <_Luke> ops = [Plus, Minus, Times, Divide, Negate] 17:48:02 Are you doing that nine problem? :P 17:48:17 <_Luke> yes :) 17:48:42 <_Luke> I hope this isn't spoiling it for anyone, I don't know if it will work but am stuck on the type error :) 17:48:55 What is the error message? 17:49:13 <_Luke> ERROR "/home/luke/devel/haskell/Nines.hs":8 - Type error in application 17:49:13 <_Luke> *** Expression : head subprog 17:49:13 <_Luke> *** Term : subprog 17:49:13 <_Luke> *** Type : NineOp 17:49:13 <_Luke> *** Does not match : [a] 17:49:38 <_Luke> er, actually... :) 17:49:55 What is ops? 17:50:07 <_Luke> the whole thing is wrong, subprog should just be a call to programs, not being sucked out of a generator :) 17:50:15 <_Luke> its defined up there 17:50:19 Oh. 17:50:30 I'm not very good at using list comprehensions yet. 17:50:35 So I tend to do things in a more verbose manner. 17:51:32 <_Luke> what I just said is quite wrong, too. :) 17:51:38 <_Luke> it's late, but I'm a victim of curiosity.. 17:53:47 --- join: juhp (~petersen@firebox-ext.jp.redhat.com) joined #haskell 17:54:40 --- quit: juhp (Remote closed the connection) 17:54:57 I'd build all permutations of ops. 17:55:04 Hmm. 17:55:46 I would define perm n = map (perm n + 1) ops 17:56:05 Well, something vaguely like that. 17:56:41 --- join: juhp (~petersen@firebox-ext.jp.redhat.com) joined #haskell 17:58:27 --- join: petersen (~petersen@firebox-ext.jp.redhat.com) joined #haskell 18:00:06 <_Luke> ERROR "/home/luke/devel/haskell/Nines.hs":22 - Instance of Fractional Integer required for definition of run 18:00:11 --- quit: juhp (Remote closed the connection) 18:00:12 --- quit: petersen (Remote closed the connection) 18:00:23 <_Luke> know what type it's fishing for? I tried e.g. "Fractional Integer => [Integer]" and other wild guesses, but none worfk 18:09:31 <_Luke> I got the types working, but I get a stack overflow evaluating 'programs'. I thuoght lazy evaluation would be ok there, even thuogh it's an infinite tree? 18:09:40 <_Luke> is there some "trick" i can do to make it "lazier"? 18:37:55 --- join: juhp (~petersen@firebox-ext.jp.redhat.com) joined #haskell 18:38:38 ok- another question 18:38:53 given: 18:38:56 type Database = [(String, String)] 18:39:44 well- answered it myself. :) 18:40:13 <_Luke> be sure to fill in a performance review of yourself on the way out ;-0 18:42:05 :-D 18:42:29 It was one of the those dumb mistakes I didn't feel like sharing 18:44:19 <_Luke> I wrote my 9s program in haskell, ran it, got a stack overflow, and now I have _no idea_ what to do next. :) 18:46:01 <_Luke> it looks to me like a clever lazy evaluator should be able to pluck values from the top of my infinite tree, but I don't understand the haskell's order-of-ops semantics 19:18:50 --- quit: _Luke ("Client Exiting") 20:09:01 --- join: Vutra_ (~ss@port-212.169.145.184.flat4all.de) joined #haskell 20:24:10 --- quit: Vutr__ (Read error: 110 (Connection timed out)) 21:58:30 --- quit: tmoertel (Read error: 104 (Connection reset by peer)) 23:43:53 --- join: Yurik (~yrashk@gw.telcos.net.ua) joined #haskell 23:46:40 --- quit: xbill ("Leaving") 23:49:02 --- join: xbill (wli@DOMINIA.MIT.EDU) joined #haskell 23:52:05 aha! 23:52:09 Logan: you there? 23:59:59 --- log: ended haskell/02.02.04