00:00:00 --- log: started haskell/02.01.06 00:02:53 --- join: teek (teemu@k72.viikki.hoasnet.fi) joined #haskell 02:24:04 --- quit: teek ("[x]chat") 03:04:10 --- join: teek (teemu@k72.viikki.hoasnet.fi) joined #haskell 03:27:46 --- join: Ice-Cold (~dornj@ekgr-dsl-stat-net-t146.citlink.net) joined #haskell 03:28:10 --- part: Ice-Cold left #haskell 03:51:15 --- join: nodie (~nodie@213-99-209-169.uc.nombres.ttd.es) joined #haskell 03:51:28 --- part: nodie left #haskell 04:02:59 --- quit: teek ("[x]chat") 04:20:20 --- join: jsw (scott@12-234-202-177.client.attbi.com) joined #haskell 04:23:22 I recently downloaded and installed ghc. Was wondering why finite maps are implemented using balanced binary trees rather than hash tables. Seems like the latter would be quicker, but am new to language. 04:38:00 finite maps are a functional datastruture 04:39:10 hash tables are only faster for inplace operations 04:39:32 (at least the usual ones) 04:47:25 The finite map functions seemed to return the map data structure, and so don't need the IO monad. But one still has to keep passing that structure back into map functions. 04:47:51 Haskell code seems really readable, but it takes a bit of getting used to. 04:50:07 I'm also just getting used to IRC, I'll have to come back here during PST daylight hours, what folks are saying about this language. I've done Lisp for a while, but really what I've seen in Haskell. 04:55:02 ok 05:00:36 hmm, maybe I'll be more coherent during daylight hours as well... 05:00:46 --- part: jsw left #haskell 10:12:07 --- quit: xbill ("Leaving") 12:05:52 --- quit: jlb (Success) 12:08:21 --- join: jlb (~ktk@jeremeydsl-3.mylinuxisp.com) joined #haskell 13:36:40 --- join: shapr (~user@p-c2fbaba8.easy.inet.fi) joined #haskell 14:15:04 --- join: matju (~matju@HSE-Montreal-ppp3465099.sympatico.ca) joined #haskell 14:15:50 hi 14:16:22 hi 14:16:46 http://www.pragmaticprogrammer.com/loty/ 14:16:49 what's up? 14:17:00 yah, same here :) 14:17:20 * shapr goes off to join the Yahoo group 14:17:30 oh cool, this year's language is Haskell! 14:17:32 awesome! 14:17:47 I must post this to the haskell list 14:17:53 i told the #loty people that there's also #haskell here 14:18:00 the #loty people are also #ruby-lang people. 14:18:28 awesome :) 14:20:31 http://www.ruby-talk.com/blade/30372 14:21:33 --- join: chad (trilluser@65.15.137.250) joined #haskell 14:38:32 * shapr tries to join the yahoogroup 14:38:32 hmm 15:03:57 --- join: jsw (scott@12-234-202-177.client.attbi.com) joined #haskell 15:08:39 --- join: jscott (scott@12-234-202-177.client.attbi.com) joined #haskell 15:09:36 --- part: jscott left #haskell 15:21:15 --- join: Slashdog (~jadrian@dial-b3-96-166.telepac.pt) joined #haskell 15:21:25 --- nick: Slashdog -> jadrian 15:21:27 hi all 15:21:42 any ghc users in here? 15:22:57 <- would appreciate a couple of hints... (not actually knowing anyone else who codes in haskell sucks :( ) 15:23:16 hi jadrian 15:23:19 what's up? 15:23:21 hi shapr 15:23:37 do you have any questions? 15:23:40 I'm trying to makes some stuff in haskell (GAs, NN etc) 15:23:42 yeap 15:23:56 I'm still newbie quality, but I'll try to help you out 15:24:05 I was begining to coda a simple GA 15:24:05 (genetic algorithm) 15:24:09 yah 15:24:11 ? 15:24:32 ah... newbie... it'll probablçy be way to complicated ... anyway 15:24:54 I 1st thought abouth generating a couple of infinite lists of random values and pass them around 15:25:28 what are you trying do? 15:25:42 as in, what problem do you want your GA to solve? 15:25:43 randomizing the value whjen needed would suck because they would become IO 15:25:59 well right now I want it to be as general as possible 15:26:17 I was thinking about just get the maximum of some function for instance, to try it out 15:26:25 I want to start with something simple 15:26:25 yah 15:26:46 anyway, my question as to do with the ST module in the lang category of GHC 15:26:47 have you written any GAs in other languages? 15:26:49 ever used it? 15:26:57 not that I'm aware of 15:27:00 :( 15:27:29 what does it do? 15:27:31 well passing infinite lists of random values as an argument to all the functions doesn't seem to be very elegant 15:27:43 that's true 15:28:10 and I'd probably like to control the number of mutations and the best value in each generation 15:28:11 I know you can pass one of the expandable state monad guys around in your function 15:28:21 why not make a Random Monad that you pass around? 15:28:46 and passing around those values also sucks (and I'll need to keep changing the signatures as I want different things) 15:28:47 yeap 15:28:51 that's my idea 15:28:57 sounds good to me 15:29:11 I've not worked taht much with monads though :) 15:29:15 so yeasterday 15:29:25 have you tried to make it work? 15:29:29 got any code? 15:29:35 I downloaded the 'Monads for rthe working programmer' paper 15:29:45 I'm about to 15:29:53 I've been playing around with monads 15:30:02 but I don't want to reeinvent the weel 15:30:17 the ST module seems to be a state module 15:30:25 a general one 15:30:35 yah, that's why it sounds familar 15:30:38 er, familiar :) 15:31:03 I thought I'd use that but I wanted to check if it was a good idea 15:31:55 looks like there's a RandList module in the data module 15:32:07 there's also a Random module 15:32:10 let me check 15:32:27 Random is a Standard one 15:33:30 randomRs :: RandomGen g => (a, a) -> g -> [a] 15:33:46 this is what I was passing around 15:33:47 random lists 15:34:02 why are you passing them around? 15:34:51 can't find any RandList module... 15:35:14 well if I generated the random when I need them 15:35:23 those functions would be either IO 15:36:01 or Id have to pass a StdGen around 15:36:18 ghc -package data 15:36:22 will let you get RandomList 15:36:26 er, RandList 15:36:43 if you're using Linux, go to /usr/lib/ghc/imports 15:36:52 and run fgrep -ri andom *|less 15:36:56 3. The data category: datatypes 15:36:56 3.1. Edison 15:36:56 3.2. The FiniteMap type 15:36:56 3.3. Set 15:37:01 just got that in the library section... 15:37:59 mmmm maybe Edison stuff? 15:38:30 anyway I'll need to use a State monad to make this right... 15:38:50 * shapr dunno 15:39:14 was just wondering about all this operations... 15:39:40 I've heard people here talk about it, but I've not done it myself 15:40:18 there are lots of stuff in the ST module that I don't know what's for 15:40:18 and they'd probably be handy 15:40:50 yah, I agree 15:41:22 If I'm going to use this module I'd like to use it right.. but there is not really documentation 15:41:37 well, gotta use it wrong to know what's right 15:41:38 just the signatures :( 15:42:16 well the problem is that I may end up not using some things that could be useful and make my code more elegant 15:42:29 you can always fix it later 15:42:33 life isn't perfect :) 15:43:00 yeap... you're right there :) 15:43:37 like: 15:43:40 data STRef s a -- mutable variables in state thread s 15:43:40 -- containing values of type a. 15:43:40 newSTRef :: a -> ST s (STRef s a) 15:43:40 readSTRef :: STRef s a -> ST s a 15:43:40 writeSTRef :: STRef s a -> a -> ST s () 15:43:41 modifySTRef :: STRef s a -> (a -> a) -> ST s () 15:44:17 I think I have a pretty good idea of what they do... 15:44:31 even though a couple of examples would be pretty nice... 15:45:34 oh well... I'll just have to try them out... :) 15:45:48 yah, good idea 15:46:35 but I wish there was better and more documentation... 15:47:20 --- quit: jlb (carter.openprojects.net irc.openprojects.net) 15:47:20 --- quit: chad (carter.openprojects.net irc.openprojects.net) 15:47:20 --- quit: pHa (carter.openprojects.net irc.openprojects.net) 15:47:34 lack of documentation + knowing no one who uses haskell doesn't help much :) 15:47:55 people here do use haskell, and are knowledgable 15:47:59 they're just not awake right now 15:48:21 I meant in real life... 15:48:46 I don't know anyone who knows the language 15:48:52 oh, this year is the first year I've known other people who can program at all 15:49:12 it is not taught at my University :( 15:49:35 I don't know anyone in real life who knows Python, Javascript, VBScript, JScript, SQL, C, or C++ 15:49:44 I do know one person who knows Java though. 15:49:46 lol :) 15:49:46 that's it :) 15:49:49 I never went to uni 15:49:55 well, not for computers at least 15:50:08 my major was women 8) 15:50:15 mmm and learning haskell... nice :) 15:50:21 lol nice major ;) 15:50:33 yah, it worked for me 15:51:23 I'd like to meet another haskeller in person 15:51:23 so tell me, what do you think of the language... I mean, how hard do you think it was moving from imperative and POO to Functional (and pure and lazy) 15:51:38 pretty damn hard 15:51:40 lol 15:51:42 :) 15:51:46 luckily, I love recursion 15:51:59 and Python (my former favorite language) has lots of FP tools 15:52:06 like map, apply, reduce, etc 15:52:16 yes of course 15:52:21 it's about 75% of the stuff I've later found in Scheme, elisp, and now in Haskell 15:52:38 it's still really confusing, but I'm getting the hang of it 15:52:51 still Monads, as far as I know are only present in haskell 15:53:08 nah, they're in Scheme also 15:53:16 oh yeah? didn't know that 15:53:37 any favourite lang so far? 15:53:39 someone who knows more than I do said that 15:53:46 yah, Python is my 'first love' I guess 15:53:58 I thought Java was, but when I found Python, I discovered that Java sucks 15:54:03 lol 15:54:22 but then Guido (the guy who runs Python) decided against having first class continuations in Python 15:54:29 haven't tryed python yet... it's in my ToDo list 15:54:32 so I got pissed off and had to find a new language 15:54:37 Python is truly beautiful 15:54:42 it's amazingly elegant 15:54:57 it's also that pretty to look at too :) 15:55:05 :) 15:55:15 python is the closest I've ever been to really writing executable poetry 15:55:23 but I've noticed that Haskell is going to get me closer 15:55:28 lol... definitly got to check that out :) 15:56:33 yeap, I really like haskell... just used to have someone around and share ideas when I'm using other languages 15:56:44 hey, #haskell is a good place to do that 15:57:10 yeap... usually a lil quiet though :) 15:57:14 and we'll be getting more people soon 15:57:20 well, hang around and start conversations 15:57:22 it works 15:57:29 --- join: pHa (sjh@aircomm-1blk-220-10.air.on.ca) joined #haskell 15:57:32 yeap seems to work :) 15:57:35 sadly, I need to go to bed now :( 15:57:39 me too 15:57:40 I gotta work tomorrow 15:57:44 g'nite jadrian 15:57:44 midnight here 15:57:48 see ya shapr 15:57:48 2am here 15:57:51 wow 15:57:53 * shapr goes to sleep 15:57:59 --- quit: jadrian ("Client Exiting") 16:00:03 --- join: jlb (~ktk@jeremeydsl-3.mylinuxisp.com) joined #haskell 16:41:01 --- quit: kepler (Remote closed the connection) 17:00:30 --- join: jadrian (~jadrian@dial-b1-198-138.telepac.pt) joined #haskell 17:00:38 * jadrian walks in... again 17:00:43 shapr: Ruby has first-class continuations. 17:01:00 hey matju, shapr 17:01:28 jadrian: shapr has gone to sleep. 17:01:43 k, hi matju then :) 17:02:06 matju: tell me something, have you used the ST module in ghc... 17:02:19 I'm having some trouble figuring out how to use it... 17:02:26 :( 17:07:16 jadrian: i don't know Haskell =) 17:08:14 :( 17:27:21 so no gh cusers actually here :( 17:27:35 ghc even 17:28:36 I've used ghc, but am also fairly new, so am sort of lurking at the moment 17:28:57 Hi jsw 17:29:19 know anything about the ST module? 17:29:28 State Transformer 17:29:57 hi developing web app. Was really impressed using greencard for FastCGI interface. 17:30:07 Sorry, haven't figured out ST yet. 17:30:10 :( 17:30:46 I just wanted to se a simple example and I would probably figure out how to use it 17:49:38 I suppose it's little help, but the ST doc at http://haskell.cs.yale.edu/ghc/docs/latest/set/sec-st.html mentions a paper. I couldn't find the paper though. 17:50:26 yeap I got it 17:50:57 been looking at it... it's kind of old, I think it has changed, but got to check it out better 17:51:30 and there is not one example on that paper 17:51:53 oh, man that's too bad. 17:54:50 --- join: lodewijk (~lodewijk@voge.xs4all.nl) joined #haskell 17:56:04 hi lodewijk 17:56:06 The way I'm doing my web application, I don't really need concurrency, let alone the advantages of ST over the normal concurrency primitives. 17:56:28 I'm not even thinking about using concurrency... 17:56:49 hi. I'm trying to learn haskell, and one thing I don't get is input/output 17:57:08 but I'll need keep track of some information 17:57:23 lodewijk: yeap.. the evil Monads :) 17:57:39 jsw: I'm implementing some simple GA 17:57:41 take readFile for example, it returns an IO String. but then what? I can't pass it to functions that take a String, it'll flag a type error. /me don't get it 17:58:07 oops, i thought that ST gave you some kind of concurrency, because of it's mention of threading. 17:58:09 lodewijk: yeap, you can 17:58:46 lodewijk: but the function where you 'catch' the string you read will be of type IO(a) 17:58:55 where a is some other type 17:59:20 --- join: juhp (~petersen@firebox-ext.jp.redhat.com) joined #haskell 17:59:38 but take this for example: 17:59:42 yeah monads are trick that way, you have to use some sort of (IO fun) >>= /val -> (do stuff with fun result) to get at it 17:59:47 Prelude> lines (readFile "actuals.txt") 17:59:47 ERROR - Type error in application 17:59:47 *** Expression : lines (readFile "actuals.txt") 17:59:47 *** Term : readFile "actuals.txt" 17:59:47 *** Type : IO String 17:59:48 *** Does not match : [Char] 17:59:58 yeap 18:00:02 hi juhp 18:00:35 hi jadrian 18:00:36 if you want to use that String in some f function you will have to make 18:00:46 jsw: ah. I came across that, but it wasn't clear to me that that's what it's used for 18:00:53 can you try (readFile "actuals.txt") >>= /text -> (show text) 18:00:56 foo = do 18:01:09 str <- readFile someFile 18:01:38 f str 18:01:38 for instance 18:01:41 jsw: /text gives a syntax error, \text gives another type error 18:01:44 juhp: ghc user? 18:02:02 I'm on hugs here btw, let me check ghc 18:02:09 jadrian: yeah, i am mainly using ghc 18:02:23 know anything about the ST Monad? 18:02:32 can't find any documentation 18:02:33 :((( 18:02:41 State Transformer 18:02:53 hmmm, not too much. 18:03:10 yep, should have been a `\`, thats what you get when a newbie offers advise :-) 18:03:16 damn... I already read the "Monads for the worker programmer" tutorial 18:03:33 but the ST on ghc is diferent 18:03:42 still didn't figure out how to use it 18:03:50 ah, really 18:03:55 yeap 18:04:04 how is it different? 18:04:25 well in the tuturial you have 18:04:51 applyST :: StateTrans s a -> s -> (s, a) 18:04:52 applyST (ST p) s = p s 18:05:07 pretty simple 18:05:11 ok 18:05:23 you apply it to an initial state 18:05:40 and I understood how everything works 18:05:56 you also have 18:06:07 for instance this example 18:06:16 type ImpState = (Int, Int) 18:06:21 getX, getY :: StateTrans ImpState Int 18:06:21 getX = ST(\(x,y)-> ((x,y), x)) 18:06:21 getY = ST(\(x,y)-> ((x,y), y)) 18:06:47 aha 18:06:54 it's pretty simple, this function allow you to access the state 18:07:09 ah, okay, I get the "do" thing now. I'll go a prod that a bit then. 18:07:15 well you can't really use ST as it is an abstrct data type 18:07:20 never used the ST module in hslibs personally 18:07:23 in ghc that is 18:08:08 well it is different from this in ghc 18:08:25 like I said you can't use ST to access state, so I was expecting to have 18:08:36 --- topic: set to 'Functional Programming, that's the opposite of Dysfunctional Programming (like VB) | we be loggin' http://tunes.org/~nef/logs/haskell/ | welcome to the Haskell Dojo | julien and shapr are up to white belt!the apply function defined' by jadrian 18:08:43 opsss 18:08:54 --- topic: set to 'Functional Programming, that's the opposite of Dysfunctional Programming (like VB) | we be loggin' http://tunes.org/~nef/logs/haskell/ | welcome to the Haskell Dojo | julien and shapr are up to white belt!' by jadrian 18:08:54 lodewijk: try (readFile "actuals.txt") >>= \text -> (putStr text) instead? 18:09:03 so I was expecting to have 18:09:08 but according the hslibs docs it "provides support for strict state threads" 18:09:10 - the apply function defined 18:09:31 but there is no apply function... you don't have an initial state... 18:09:36 jsw: yes, also works. well, that gives me two leads then. thank you. 18:09:45 that seemed weird to me... 18:10:17 I also expected some function to access state... some generalization of the above GetX 18:10:22 something like: 18:10:50 getS :: ST s a 18:11:32 getS = ST(\s->(s,s)) 18:11:37 but nope 18:11:54 instead it uses some kind of references to initialize the state... 18:12:01 just can't get it... 18:12:03 :( 18:13:36 then again... maybe that ST module is not what I think it is... 18:13:42 hmmm. sounds like the ST you're after and the ST in hslibs are different things? 18:13:48 maybe... 18:14:10 but it's a State Transformer! 18:14:44 and I'm here waisting my time with this... :(( 18:16:51 --- join: kepler (~kepler@adsl-81-164-115.asm.bellsouth.net) joined #haskell 18:17:15 hi kepler 18:17:29 kepler, now you must know this! :) 18:18:06 kepler: know anything about the ST Monad (ghc) 18:36:16 --- part: matju left #haskell 18:45:02 x <- newSTRef 1; y <- readSTRef x; writeSTRef x (y+y); 18:45:25 mmmmmmm 18:46:02 yes... I could see it was something like that... but what I don't really understand is how to use that 18:46:30 do you know the "Monads for the Haskell Working Programmer" tutorial? 18:46:38 no 18:47:02 well... the ST i've seen are first applyed to an initial state 18:47:17 this one begins with an empty state... 18:47:36 they probably only can have one variable 18:47:49 that is sort of weird... I'd just like to see a simple example on how to use this... 18:48:01 ever used it smkl? 18:48:10 nope 18:48:38 have any idea how to use it? 18:48:42 for instance 18:49:47 check this out 18:49:52 http://www.engr.mun.ca/~theo/Misc/haskell_and_monads.htm 18:50:01 search for: An Example 18:50:32 I can understand *that* 18:50:36 for instance 18:50:57 getX, getY :: StateTrans ImpState Int 18:51:00 getX = ST(\(x,y)-> ((x,y), x)) 18:51:00 getY = ST(\(x,y)-> ((x,y), y)) 18:51:10 this allow you to take part of the state... 18:51:26 I was expecting to have something like 18:51:47 getS :: ST s a 18:52:01 getS = ST(\s->(s,s)) 18:52:13 to get the state... 18:52:17 but nope... 18:52:27 don't have anything like that... 18:53:02 I can't really understand how to use those STRefs if you don't have an initial state 18:53:26 the initial state is to have no refs 18:54:17 --- join: kepler_ (~kepler@adsl-81-164-115.asm.bellsouth.net) joined #haskell 18:54:22 ok... 18:54:29 so let me think... 18:54:37 wb kepler 18:54:41 wb kepler_ 18:54:56 hi 18:55:13 --- quit: kepler_ (Client Quit) 18:55:16 <- trying to understand the ST Monad (ghc) 18:55:23 wow he's fast... 18:56:14 so Euclides algorithm for instance... 18:56:33 (a lil big but here it goes) 18:56:43 -- 18:56:49 gcdST :: StateTrans ImpState Int 18:56:50 gcdST = do x <- getX 18:56:50 y <- getY 18:56:50 (if x == y 18:56:50 then 18:56:50 return x 18:56:52 else if x < y 18:56:54 then 18:56:56 do putY (y-x) 18:56:58 gcdST 18:57:00 else 18:57:02 do putX (x-y) 18:57:04 gcdST) 18:57:06 -- 18:57:10 greatestCommonDivisor x y = snd( applyST gcdST (x,y) ) 18:57:12 -- 18:57:34 in here I'd start with no refs 18:57:53 and I'd have to initialize a (x,y) reference... 18:59:16 so I'd need one function to init them, and another one with the algorithm? 19:00:49 and I still can't really see the diference between ST s a 19:00:50 you don't need an initial state with monads really... 19:00:59 and STRef s a 19:01:50 kepler: I'm just sort of confused because I've been reading the "Monads for the Working Haskell Programmer" tutorial 19:02:12 and now the ghc ST Monad seems to be completely diferent 19:02:51 in the tutorial I'd apply the monad to an initial state 19:02:55 for instance 19:03:00 applyST gcdST (x,y) 19:03:03 at the lowest level, a monad is a set of operations... all monads allow you to turn a normal value into a "monaded" value with the return statement 19:03:26 greatestCommonDivisor x0 y0 = 19:03:27 runST ( 19:03:27 do { 19:03:27 x <- newSTRef x0; 19:03:27 y <- newSTRef y0; 19:03:27 let 19:03:30 getX = readSTRef x 19:03:30 yes that I know 19:03:32 getY = readSTRef y 19:03:33 putX = writeSTRef x 19:03:35 putY = writeSTRef y 19:03:37 gcdST = 19:03:39 do x <- getX 19:03:43 y <- getY 19:03:45 (if x == y then return x 19:03:47 else if x < y then 19:03:49 do putY (y-x) 19:03:51 gcdST 19:03:53 else 19:03:55 do putX (x-y) 19:03:58 gcdST) 19:04:00 in gcdST } ) 19:04:34 let me see 19:10:53 --- join: ujtam (~matju@HSE-Montreal-ppp3465099.sympatico.ca) joined #haskell 19:11:52 mmmmmm 19:11:52 it is beginning to make more sense... I think... 19:12:22 --- quit: smkl (Connection reset by peer) 19:12:52 but not sure yet... :) 19:12:52 did ghc accepted this for you? 19:12:52 I'm getting an error msg... 19:12:54 --- join: smkl (~sami@glubimox.yok.utu.fi) joined #haskell 19:13:01 wb smkl 19:13:10 hi ujtam 19:13:20 smkl: I think it is starting to make more sense :) 19:13:25 smkl: but not sure yet 19:13:44 smkl: did ghci accepted the code for you (getting an error msg here) 19:14:28 --- join: xbill (wli@DOMINIA.MIT.EDU) joined #haskell 19:14:35 i used hugs 19:14:35 --- nick: ujtam -> matju 19:14:35 hi xbill 19:14:41 re 19:15:26 "The last statment in a 'do' construct must be an expression" 19:15:48 opss 19:15:51 forget it 19:15:52 :) 19:18:00 the weird part is this naming thing... 19:18:13 the naming of the referencies... 19:18:46 imagine I want to keep track of some ocurrence 19:19:04 and I want to increment some 'variable' each time something happens 19:19:28 I can see how I'd do that in this example 19:19:53 but imagine that inside this GCD function I call other functions 19:20:17 and inside those functions I want to increment that variable... 19:20:21 how do I do that 19:20:32 I don't know the name of the references... 19:22:56 for instance 19:24:30 you just need to define them so that the references are in scope 19:24:35 genAlgorithm pop 19:24:35 runST ( 19:24:35 do { 19:24:35 mutations <- newSTRef 0; 19:24:35 (chrom1, chrom2) <- select pop 19:24:36 (new1, new2) <- crossover (chrom1, chrom2) 19:24:38 return(new1, new2) 19:24:40 }) 19:24:50 ok this is not really a genetic algorithm... 19:24:52 but 19:25:13 I start with 0 mutations 19:25:16 select 2 guys 19:25:19 and cross them 19:25:24 or pass the references as argument 19:25:27 in the crossover some mutation could happen 19:25:36 mmmm 19:26:00 but what I'm trying to do is *avoid* passing this data as arguuments 19:26:39 the whole purpose of the state monad is to me able to just use some function to set a new state inside my functions 19:27:10 I want to have something like, 19:27:53 crossover :: (Chrom,Chrom) -> State (Chrom, Chrom) 19:28:13 the state will be updated during crossover 19:28:15 that means 19:28:31 if there was mutation, I'll increment some mutation reference I have 19:29:27 the infinite randoms list of rand numbers will be updated (meaning that I get and remove values from them) 19:30:05 That's the purpose of using that ST... I can keep track of stuff without passing all the data as arguments 19:30:20 I just can't see how to access the references from other functions 19:30:29 if defining the functions like in my example is no good then use a usual state transformer 19:32:00 well, from your example I now understand better how this ST works... was not even understanding what the runST was for :) 19:32:21 but *this* is the usual state transformer 19:32:30 as this is the one in both Ghc and Hugs 19:32:41 so you got to be able to do this somehow 19:33:53 i meant the simple one used in monad examples 19:34:21 yes I know... but I'd really like to understand how this one is supposed to work... 19:34:35 and this is probably optimized so works better... 19:34:45 and I wanted to learn how to do this the right way... 19:34:48 --- part: matju left #haskell 19:36:28 well 4:40 am here... 19:36:34 3:40 am even 19:36:45 better get some sleep and think about it tomorrow 19:36:46 :) 19:37:57 bye and thanks smkl :) 19:38:06 --- quit: jadrian ("Client Exiting") 20:16:56 --- part: jsw left #haskell 20:20:48 --- join: kepler_ (~kepler@adsl-81-161-191.asm.bellsouth.net) joined #haskell 20:21:11 --- quit: kepler (Read error: 104 (Connection reset by peer)) 22:12:22 --- quit: kepler_ (Read error: 110 (Connection timed out)) 23:00:02 --- quit: shapr ("time to go to work") 23:59:59 --- log: ended haskell/02.01.06