00:00:42 that wasn't a stupid question... 00:02:39 -!- cheater_ has quit (Ping timeout: 255 seconds). 00:15:39 -!- cheater_ has joined. 00:18:03 -!- copumpkin has joined. 00:20:29 It's a funny question, at least 00:41:57 http://www.reddit.com/r/askscience/comments/j66uq/is_it_possible_to_heat_the_planet_via_burning/ 00:42:00 Ha 00:45:03 -!- Phantom_Hoover has quit (Quit: Leaving). 00:52:05 Hey who plays DF here. 00:52:17 should i play df 00:52:36 I played a couple of times 00:52:48 I never remember the damn key bindings 00:52:55 monqy: Yes. Mostly so that you can tell me what (textual) tileset to use. 00:53:03 elliott: but that's what I wanted to know 00:53:09 Preferably square, preferably doesn't make text COMPLETELY UNREADABLE, and none of that fancy curved wall stuff. 00:53:22 these are things I want to know 00:53:24 And one that recognises that my screen is high-resolution and high-dpi i.e. not tiny. 00:53:29 monqy: WELL I WANT TO KNOW THEM TOO 00:53:41 Also one where dwarfs have beards, I can't bear not having them. 00:55:07 -!- oerjan has quit (Quit: m4h uo+ nujaepeqle?). 01:11:17 ages ago, i'm sure i shared some code here for some various things 01:11:37 a dc interpreter, an oisc virtual machine for example 01:11:53 i wouldn't suppose anyone still has a copy of any of that code? 01:16:53 wasnt it on pastebin 01:17:24 Someone's shameless self-promotion on #erlang 01:17:24 http://amtal.github.com/2011/07/19/unix-pipes-pointless-functional-programming.html 01:17:29 pastebin.ca appears to be defunct 01:17:29 Thoughts? 01:17:44 bsmntbombdood: it was offline then online then offline again 01:18:01 NihilistDandy: oleg said that years ago. 01:18:03 bsmntbombdood: TO THE LOGS 01:18:12 NihilistDandy: i've been grepping to no avail 01:18:16 elliott: I don't doubt it. 01:18:31 http://okmij.org/ftp/Computation/monadic-shell.html 01:18:48 Mostly it's the stuff about LFE at the end that was vaguely interesting 01:19:46 "but your language doesn’t support pointfree style?" can you not define operators in erlang 01:19:50 or uh varargs functions 01:19:56 some stuff on pastebin, other stuff on a personal server which is also no good 01:20:24 bsmntbombdood: sounds like you're fucked 01:20:44 elliott: yep, unless someone happened to save something 01:21:21 bsmntbombdood: i might have a copy of bsmntbot lying around on another computer 01:21:23 that's it though 01:21:37 what did bsmntbot do 01:21:49 monqy: everything AWESOME 01:22:18 -!- cheater_ has quit (Ping timeout: 255 seconds). 01:22:26 elliott: I like that the thing could be interpreted as "Well, I guess erlang's not that awesome after all, I guess Lisp is the way" 01:27:35 why is opengl so bad :( 01:27:56 Bad developers? 01:28:26 no the api 01:28:38 opengl has the worst api 01:28:46 is there anything worse 01:28:51 death?? 01:28:54 oh no 01:28:58 monqy: Glib 01:29:02 Being drawn and quartered 01:29:07 I will try to stay away from glib 01:29:33 pikhq: no way 01:29:46 you can avoid gobject almost entirely when using glib 01:29:48 opengl 01:29:49 the horribleness 01:29:51 is everywhere 01:30:22 last night I tried to opengl again and I just couldn't do it 01:30:31 :( 01:30:36 monqy: im trying to opengl from haskell but 01:30:40 it turns out that it isnt better that way 01:30:41 i was too 01:30:41 its worse 01:30:45 because 01:30:51 upon exposure to the opengl 01:30:52 haskell goes 01:30:53 :( 01:31:10 monqy: were you doing it with sdl too, are you actually me 01:31:25 yes 01:31:48 I had made something earlier with GLFW-b and I was porting it to SDL for comparison and just died 01:31:51 monqy: what were you trying to code,,, you may actually be me...supsicisous 01:32:12 i kind of gave up on everything GLFW because it forces all your callbacks to be in IO 01:32:16 i gues sthat might be okay but 01:32:22 monqy: but um SDL is actually nicer?? 01:32:24 yeah that's what I dislike about GLFW 01:32:31 SDL's api is really nice 01:32:33 well I wanted to compare them 01:32:57 elliott: I couldn't even get the GLFW lib from Hackage to compile 01:32:59 SURPRISE 01:33:03 NihilistDandy: GLFW-b is different 01:33:05 it's an alternate binding 01:33:08 Ah 01:33:09 the thing i was porting was just a little thing with spinning boxes. for comparison between GLFW-b and SDL. so I would know what to use to make my magical graphics library so i would be able to avoid opengl and still have things the way i wanted them 01:33:18 GLFW-b is better than GLFW imo 01:33:20 elliott: Okay, fine, I'll go with real awfulness. 01:33:22 Win32. 01:33:29 monqy: what problem did you have with SDL? 01:33:36 (don't say it twice more, you'll some Beelzebub) 01:33:36 elliott: it wasn't SDL that killed me 01:33:40 *summon 01:33:43 elliott: it was looking at opengl again 01:33:53 elliott: the thing that finally did me in was matrixMode 01:33:57 monqy: also: can i have your spinning boxes code, currently my minecraft code is blocked on "how do i get this fucking box to draw without being stretched and dark grey" 01:34:03 i suppose i should write camera-moving code 01:34:14 my spinning box code kind of sucks :( 01:34:21 it's all 2d too 01:34:24 if that matters 01:34:24 oh 01:34:30 by sucks I mean 01:34:32 well i dunno it can't suck more than my threedee stuff 01:34:35 I hadn't taken the time to make it pretty 01:34:42 because I died before then 01:34:51 let size = length xs * 3 * sizeOf (undefined :: GL.GLfloat) 01:34:51 ptr <- mallocBytes size 01:34:51 foldM (\idx (a,b,c) -> do pokeElemOff ptr (idx*3) a 01:34:51 pokeElemOff ptr ((idx*3)+1) b 01:34:51 pokeElemOff ptr ((idx*3)+2) c 01:34:52 return (idx+1)) 0 xs 01:34:58 GL.vertexAttribPointer (GL.AttribLocation 0) GL.$= (GL.ToFloat, GL.VertexArrayDescriptor (fromIntegral (length xs)) GL.Float 3 ptr) 01:35:01 let f v = [v,(0,0,0.51),(0,0.51,0.51),(0,0.51,0),(0.51,0.51,0),(0.51,0,0),(0.51,0,1),(0,0,0.51)] 01:35:01 let xs = f (0,0,0) ++ f (0.51,0.51,0.51) :: [(GL.GLfloat,GL.GLfloat,GL.GLfloat)] 01:35:03 just a few sample lines 01:35:07 i died 01:35:07 your code cannot possibly be worse than this 01:35:10 ugh the pointer stuff its just like 01:35:13 my code currently segfaults 01:35:16 that should not even be possible :( 01:35:19 -!- cheater_ has joined. 01:35:27 segfaults should not even be a thing that are a thing. 01:35:36 i wanted to try gpipe just to see if it was better but it didn;t compile so whatever 01:35:40 is gpipe bad 01:35:53 "It is an alternative to using OpenGl, and has the advantage that it is purely functional, statically typed and operates on immutable data as opposed to OpenGl's inherently imperative style. Another important difference with OpenGl is that with GPipe you don't need to write shaders in a second shader language such as GLSL or Cg, but instead use regular Haskell functions on the GPU data types." 01:36:04 monqy: it sounds like a really nice library that you can't use because it's stupidly unfinihed 01:36:07 "GLUT is used in GPipe for window management and the main loop." 01:36:08 lol 01:36:33 haha 01:36:36 it depends on Deewiant's trie library 01:37:30 Deewiant wrote GLUT? 01:37:33 TIL 01:37:39 yeah totally that is what i said 01:37:48 -!- cheater_ has quit (Excess Flood). 01:37:53 im attest 01:37:55 I was only paying half-attention 01:38:00 monqy: gpipe seems nice but like 01:38:12 too... experimental? I don't want to say that but 01:38:20 it seems like writing my own shader dsl thing would be a better choice 01:38:31 and the GLUT dependency is kind of silly 01:38:37 -!- cheater_ has joined. 01:38:55 monqy: how spinny r ur boxes 01:39:03 mine dont even pspin :( 01:39:07 well one of them spins and goes up and down 01:39:11 the other one goes side to side 01:39:14 without spinning 01:39:40 this is so advantacesd 01:39:48 plz impart on me, ur wisdom 01:40:25 i have a square thing that draws a square.... and i use preservingMatrix??????? 01:40:57 what is that 01:40:59 at least i hope i used preservingMatrix properly 01:40:59 -!- cheater_ has quit (Excess Flood). 01:41:05 im dont even know 01:41:25 o 01:41:31 -!- cheater_ has joined. 01:41:37 i need ur wisdom in my life 01:41:39 or i cannot opengl,ever, 01:41:54 it's like you push a new matrix onto the matrix stack and then do the action supplied as an argument and then pop the matrix off 01:42:09 so the matrix transformations done in there are nice and contained 01:42:12 wow; 01:42:16 and don't muck up the rest of everything else 01:42:17 Someone's just going to come up with some other standard tomorrow and all the OpenGL effort will have been in vain~ 01:42:21 how much does your code, cost, 01:42:29 cosT??? 01:42:33 -!- evincar has joined. 01:42:39 for access to its AMZING, POWERS 01:43:20 cosT = 1/secT 01:43:30 * elliott looks at example GPipe code... it would be kind of nice except that this static-length vector code has an ugly interface 01:43:31 -!- augur has changed nick to augur[sleep]. 01:43:43 and i dont even think its being used in a >one-d manner so........ 01:43:53 monqy: what cost,,,,,,,,,,,,,,,,,,at WHAT jcoist, 01:45:03 monqy: AT WHAT COST MONQY 01:45:07 ihhhh 01:45:08 HOW FAR WILL YOU GO 01:45:09 its fre? 01:45:27 :OOOOOOOoooooooooooooooooooooooooooooo 01:45:30 you are so generous 01:45:33 This is a wonderfully dramatic bit of the conversation to waltz in on. 01:45:37 im one day hope be as genreous as yuo 01:45:40 but this code is guly 01:45:41 WHAT WOULD YOU DOO-OO-OO FOR SOME WORKING OPENGL CODE? 01:45:49 it's like 01:45:54 monqy: im guly too,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,................... we all have our roels in theis world 01:46:03 {- GL.defineNewList GL.CompileAndExecute $ do -} 01:46:03 {- do 01:46:03 -- ??? 01:46:03 GL.color (GL.Color3 (maxBound::GL.GLbyte) maxBound maxBound) 01:46:03 {- GL.renderPrimitive GL.Lines $ do 01:46:04 GL.vertex $ GL.Vertex2 (-0.9::GL.GLdouble) 0.9 01:46:06 GL.vertex $ GL.Vertex2 (0.9::GL.GLdouble) (-0.9)-} 01:46:08 let f v = mapM_ (\(x,y,z) -> GL.vertex (GL.Vertex3 (x::GL.GLdouble) y z)) [v,(0,0,0.51),(0,0.51,0.51),(0,0.51,0),(0.51,0.51,0),(0.51,0,0),(0.51,0,1),(0,0,0.51)] 01:46:08 I have to specify whether i am using glfloats or gldoubles or it won'te even compile wTF? 01:46:11 even the comments are guly 01:46:19 monqy: well thatstzh inherent 01:46:21 I can't stop laughing 01:46:51 i forget what rotate even does 01:46:55 bsides rotate 01:47:16 monqy: ur people need youuuuuuu 01:47:19 ur people = me 01:47:44 i am cleanign upt it..... 01:47:58 finally a clean tit...................... 01:48:32 Should I leave? Are you two having a moment? 01:48:42 Three, even. 01:49:11 evincar: its,,,,,,, life 01:49:42 -!- cheater_ has quit (Excess Flood). 01:50:44 -!- cheater_ has joined. 01:50:54 -!- CakeProphet has quit (Ping timeout: 246 seconds). 01:52:31 ok i think its cleaner now?? 01:52:32 monqy: is ur upt tit,clen 01:52:35 yay 01:52:55 clearnwer...but not.....ttotaly clean.... 01:53:08 monqy: i can cleanse it,,,,,,,,,,,,,,,,,,,,,,,,, it is my duty 01:53:13 it misses out on a bit of sepearation of concern et c because it was a really quicke thing 01:53:23 anywa....heres the rendering ....of the bozxwse 01:53:25 render :: GL.GLdouble -> GL.GLdouble -> IO () 01:53:25 render width time = do 01:53:25 GL.clear [GL.ColorBuffer] 01:53:25 GL.color (GL.Color3 0 0 (1 :: GL.GLdouble)) 01:53:27 GL.preservingMatrix $ do 01:53:30 GL.translate (GL.Vector3 (100 * sin time) 0 0) 01:53:32 square width 01:53:35 GL.preservingMatrix $ do 01:53:37 GL.translate (GL.Vector3 0 (200 * sin time) 0) 01:53:40 GL.rotate (time * 100) (GL.Vector3 0 0 (1 :: GL.GLdouble)) 01:53:42 square width 01:53:45 square :: GL.GLdouble -> IO () 01:53:47 -!- cheater_ has quit (Excess Flood). 01:53:47 square w = GL.renderPrimitive GL.Quads $ do 01:53:50 vt w w 01:53:52 vt w (-w) 01:53:55 vt (-w) (-w) 01:53:57 vt (-w) w 01:54:00 vt :: GL.GLdouble -> GL.GLdouble -> IO () 01:54:02 vt x y = GL.vertex (GL.Vertex2 x y) 01:54:05 too cool for.pastebisn/ 01:54:15 Apparently. 01:54:18 -!- cheater_ has joined. 01:54:39 So, why "do"? 01:54:48 monqy: dont you have any other GL functions in the program 01:54:50 i have a lot of 01:54:52 light initialisiation 01:54:53 things 01:54:54 :( 01:54:56 elliott: that's tjuset the rendering 01:54:59 and i dont, know what to do with them 01:55:03 elliott: do you want the ienteklziaton too?? 01:55:11 elliott: because.... i have very little cloae about that either. 01:55:14 monqy: yezsjop, i am but a poor pheasant 01:55:17 with no cloaes 01:55:27 http://www.klein.com/dvk/photos/birds/golden_pheasant.jpg me 01:55:30 note lack of cloaes 01:55:44 I FEEL AS THOUGH I HAVE FALLEN IN A WORLD WHICH IS NOT LIKE THE WORLD TO WHICH I AM USED 01:55:44 it is glfw-b becase i died before porteng the sdl'e 01:56:09 evincar: you need cloaes 01:58:34 actually i guess i didn't do much initalization 01:58:36 monqy: together, we will escaepje the opengl teror 01:58:37 well 01:58:38 oh 01:58:41 a lto of it 01:58:41 none at all???????????:( 01:58:41 but 01:58:44 most is GLFW 01:58:44 im basically just 01:58:46 without a clue on anything 01:58:48 except ofr this really nasty bit 01:58:49 that starts with "GL." 01:59:08 most of the openGL initty stuff is iwthin an GLFW callbacke 01:59:18 the part that....isnt: 01:59:22 GL.clearColor $= GL.Color4 0 0 0 0 01:59:34 the part that...is: 01:59:38 GLFW.setWindowSizeCallback $ \ w h -> do 01:59:38 let size = GL.Size (fromIntegral w) (fromIntegral h) 01:59:38 GL.viewport $= (GL.Position 0 0, size) 01:59:38 GL.matrixMode $= GL.Projection 01:59:38 GL.loadIdentity 01:59:40 GL.ortho2D 0 (realToFrac w) (realToFrac h) 0 01:59:42 GL.translate $ GL.Vector3 (realToFrac w / 2) (realToFrac h / 2) (0 :: GL.GLdouble) 02:00:15 which basically means whenever you resize the window you make a new view thingy and center it???? 02:00:25 is there a ...better waY? 02:00:28 who the hell resizes windows, 02:00:31 i just use a fixed size, 02:00:47 i should do that 02:00:57 but 02:01:00 a bad thing 02:01:19 for some reason GLFW stuff stopped getting floated so it gets tiled which messes it all u;p 02:01:25 I think SDL stuff gets flaoted though 02:01:25 so 02:01:37 if i use SDL...no problem?? 02:01:50 i really should stop dieying, finish porting....myabe later 02:02:38 Myabe indeed. 02:04:21 monqy: if you give me the file i could port it to SDL,,, and then,, transform it into doing cubes, so that, eventually, my entire game would be descended from ur code............................ a once in a lifetime opportunity of lineaejge (this is total lies id probably throw it out after i got it doing cubes and then modularise it) 02:05:06 but what af its..embaraseng 02:05:24 (acause of its is.) 02:05:40 YouH ATLK TO ME ABOUT EMBARASIONEGNG.... YOU CANT ENHANDLE THE ENMAHERBSINGYLY!!!!!!!!!!!!!!!!!!!!!!!!!! LOOKE AT MY SHAME,,,: http://sprunge.us/dNeD 02:05:43 I AM TORN ASUNDER 02:05:50 THIS PRISON OF SHAME I CAN NEVER ESCAPE 02:05:56 oh god'e 02:06:28 oh right one thing i didn't like about SDL......using 1 instead of True for SDL.glSetAttribute......what? 02:07:04 oh god all the 3d stuff 02:07:11 it hurts and i am not even to the pointer pokery 02:07:21 monqy: yeah so,,, dont U tell ME about embaraseng 02:07:29 im practicaly an eorphan of gl 02:07:32 and ur denying me hot gl soup 02:07:43 the pointer pokerery is,,, an optimzioejnigatinog 02:07:56 optimzioejnigatinogs make me died 02:09:16 * elliott starts to starv,e of lack of gl soup...... my life 02:09:58 im cleanigne ite up..>? 02:10:00 -!- cheater_ has quit (Ping timeout: 255 seconds). 02:11:41 monqy: ur a vitcim 02:11:42 of society 02:12:57 -!- parcs has joined. 02:13:16 -!- parcs has left ("WeeChat 0.3.5"). 02:13:57 I have these really great functions I made 02:14:03 but I can't think of half-decent names for them 02:14:36 thing b m = b >>= flip when m 02:14:40 (and another but for unless) 02:15:16 monqy: hahahaha 02:15:19 is it really called thing 02:15:26 :( 02:15:32 monqy: did you write that just now when cleaning it up or was it actually already there 02:15:36 ?pl b >>= flip when m 02:15:36 flip when m =<< b 02:15:40 help 02:15:43 ?pl b >>= \b' -> if b' then m else return () 02:15:44 flip (flip if' m) (return ()) =<< b 02:15:50 it was already there 02:15:52 monqy: hleps, at yuoere service? 02:16:16 whjat is that 02:16:31 monqy: you asked ed for helpes 02:16:43 is that.....thing's name>???????????????????????? 02:16:54 help 02:17:16 i have to think of a half decent name right now they are thing and notThing 02:17:44 monqy: whenM? 02:17:50 i uh 02:17:52 have a conefesion 02:17:55 that was its 02:17:56 former name 02:18:01 then i changed it to thing 02:18:03 monqy: show me, a usgae, of ite, 02:18:04 when i got frustrated 02:18:06 with whenM 02:18:18 notThing GLFW.initialize 02:18:18 (fail "failed to initialize") 02:18:23 (that used to be unlessM) 02:18:41 monqy: whats wrong with just 02:18:47 GLFW.initialize >>= wh... oh right 02:18:49 -!- Fenhl has joined. 02:18:49 monqy: well um 02:18:56 monqy: I'd just have (flip when) as something 02:18:58 and (flip unless) 02:19:00 so you could say 02:19:15 GLFW.initialize >= orM $ fail "failed to initialize" 02:19:16 maybe??? 02:19:20 orM/andM 02:19:22 i dunno 02:19:40 it was that (but just (flip when) and (flip unless) no fancy names) before it was whenM 02:19:54 then i got frustrated and made whenM 02:19:58 and then i got frustrated and made thing 02:20:58 letse, ask haskel 02:21:13 #haskell? 02:21:33 What's a good name for (\b m -> b >>= flip when m)? (and the same with when -> unless). I've been using whenM/unlessM, but those are kind of ugly. 02:21:34 im become you 02:21:43 thanske youe 02:22:26 elliott, *shrug* ugly how? 02:22:26 uglier than mapM, filterM, zipWithM, etc? 02:22:28 he;lp monqy 02:23:17 takcing M onto things makes me feel bad i donte even know if whenM follows the same namethodology as those others which is part of my frustratosn :'( 02:23:29 monqy: well with those 02:23:30 :t mapM 02:23:31 forall a (m :: * -> *) b. (Monad m) => (a -> m b) -> [a] -> m [b] 02:23:32 :t filterM 02:23:33 forall a (m :: * -> *). (Monad m) => (a -> m Bool) -> [a] -> m [a] 02:23:34 :t zipWithM 02:23:35 forall a b (m :: * -> *) c. (Monad m) => (a -> b -> m c) -> [a] -> [b] -> m [c] 02:23:39 monqy: it tends to take a monadic function 02:23:45 but the actual "value" being operated on is non-monadic 02:24:26 i guese i will go back to whenM/unlessM now i feel less bad. 02:26:09 monqy: yese kmc is , convinucnging me 02:28:01 ok i think its 02:28:02 ready 02:28:39 monqy: im 02:28:40 rady 02:28:41 (mentally) 02:30:39 http://dl.dropbox.com/u/13786158/help.tar.bz2 shoulde be eit 02:30:51 kindly, compressed 02:31:29 kindley, 02:32:16 this is, a work of great beuty, 02:32:23 asterisk booty 02:32:40 i tepyed it all with ym....posteriour 02:32:50 a posteriori 02:33:04 did u modularise it, just for me, 02:33:11 im, feel so lucky, if that is, the case, 02:33:11 it was ;like that..aredly 02:33:14 o 02:33:22 <,-- not so lucky but (still apprecijoateive) 02:33:56 monqy: im, install glfw-b, to try it, 02:34:12 monqy: also, im, maybe try out that GPipe thing? 02:34:20 does it compile for you 02:34:24 im, dont know yet, 02:34:29 im try glfw-b tfrist, 02:35:07 monqy: is, its name, "help", 02:35:17 oh my gosh it is the most beautiful box display ive ever encountered 02:35:26 wowee is, the best game, 02:35:37 also it, is using all my cpu ? 02:35:55 i didnt borhter throtelying the framerate oops 02:36:07 oops, 02:36:16 next time.... 02:36:23 monqy: but, arent you meant to, like, not throttle but, 02:36:27 insetad base thing son, real time 02:36:35 that's what it does now maybe?? 02:36:41 ther'es a clocky thing 02:36:57 and it bases the rotation on that if id di d it right so many ages ago... 02:37:01 im, must resist urge, to make this game purely-functional frp 02:37:10 now, I cabal install, GPipe 02:37:21 --glabol 02:37:21 purely functional frp sounds goodis it good 02:37:23 -rw-r--r-- 1 elliott elliott 329 2011-07-24 03:06 Input.hs 02:37:26 monqy: im truly ages, 02:37:32 also, yes, FRP is, so cool, 02:38:15 the touching it on 24 was porting it glfw->glfw-b i think 02:38:22 i originally wrote it much longer ago i think 02:38:26 months.... 02:38:43 which is the ... best ... frp library 02:39:09 monqy: unfortaentounely, none of them, 02:39:10 there are too many 02:39:12 :'( 02:39:16 frp is, fraught, with problems, for, reasons, 02:39:21 reason onE, space laeak 02:39:25 oh no 02:39:32 bananabananabanana 02:39:35 reason TWo, you can avoid space leak if you avoid using functions as structure but then this become ugly........................... 02:39:46 ho no 02:39:48 monqy: luke palmer, says, that if you have al azy specialiser, you can use the obvious model and, the space leak, goes away,,,, 02:39:54 but,,, we do not have,, a lazy specialiser................................. 02:40:05 i have heard of a thing rdp was it here or ltu mayve both does it fix frps bprolems 02:40:06 NihilistDandy: is, banana, a good frp....... 02:40:13 is it even...finoished....usab.ey 02:40:21 http://hackage.haskell.org/package/reactive-banana 02:40:22 monqy: remote desktop protocol, sdoes no, fijxioaje, frp, 02:40:24 I've heard good things 02:40:28 NihilistDandy: im know, is it good, but, ok 02:40:43 reactive.....something...programming....i think 02:40:45 monqy: i think, i remember, what you are saying about, but, what was the name.... 02:41:07 demand 02:41:08 is the d 02:41:30 there was a webpage,,,but i forgrot everything it said 02:41:34 oops 02:41:46 reactive demand pugs 02:44:43 monqy: ok i, 02:44:44 installed gpipe, 02:44:46 -!- Fenhl has left. 02:44:47 how does it not, work for you? 02:44:52 it uh 02:44:53 i forget 02:44:57 i think itwas the examples 02:44:59 that didfnt'e compile 02:45:04 and i kind of 02:45:05 gave up then 02:45:07 oops 02:45:36 the 02:45:39 gpipe-examples 02:45:41 i think 02:46:12 i will try or nyou 02:46:16 cabal: unrecognised command: intsall (try --help) 02:46:19 help 02:46:24 try...install 02:47:11 What is this, Let's Do Some Haskell Whilst Intoxicated? 02:47:11 somehow gpipe-exmaples is compiling 02:47:18 monqy: me too, 02:47:21 im too young to intocixatiod 02:47:34 evincar: keayboeards are not eahsyi, stop awaviong your advatnages 02:47:37 some ouf seus have bad fngiers 02:47:57 im just too lazy to georcete myself <:( usually not here i am not as lazy 02:48:03 georcete what 02:48:07 i meant 02:48:08 correct 02:48:13 not georcete what is georcete 02:48:27 also why is the compilation of example 2 hanging i think i had this problem last time 02:48:36 and then when i tried to hand-compile them...it exploded 02:48:58 where by exploded I mean 02:48:58 it is, hangging for me, too, not, reassuring 02:48:59 didn't work 02:49:08 lets, find out whats in the box 02:49:16 * elliott looks at, the box 02:49:23 oh my god 02:49:28 monqy: look at demonHead :: [CUChar] 02:49:34 it's a fucking gigantic list 02:49:35 demonHead 02:49:39 look at it 02:49:41 og hod 02:49:42 get gpipe examples and just look at it 02:49:43 the second one 02:49:48 jesus 02:49:55 who thought that wwas a good idea 02:50:07 ogh od 02:50:23 * elliott control c 02:50:25 poor 02:50:27 ghc 02:50:29 monqy: gpipe examples, bad examples, 02:50:31 but maybe gpipe, not bad, 02:50:33 but 02:50:37 foo :. bar :. () 02:50:38 bad, because ugly, 02:50:45 yeah i dislike it too 02:50:45 but maybe, wrappable 02:50:49 why does it a thing 02:50:55 monqy: static-length vectors at compile time 02:51:07 im look here for goodneess: http://www.koonsolo.com/news/dewitters-gameloop/ 02:51:24 where there 02:51:37 im "Constant Game Speed independent of Variable FPS" looks good 02:51:44 monqy: it is, continuation, of famous, article baout game loops, 02:52:16 monqy: im, try porting help, to sdl, 02:52:32 good;e lucke 02:52:37 -- windopening 02:52:40 i like, your comnets 02:52:41 why do i het e at the end of words helpe 02:53:12 hitting e at the end of words is the worse t reflesx 02:53:17 or...... 02:53:19 the BEST???? 02:53:35 http://hackage.haskell.org/packages/archive/SDL/0.6.2/doc/html/Graphics-UI-SDL-Time.html 02:53:37 should,,, i use this, 02:53:48 is it 02:53:49 a godo thing 02:53:55 "SDL_GetTicks() tells how many milliseconds have past since an arbitrary point in the past. 02:53:56 " 02:54:00 maybe???? 02:54:34 better than getcpu time maybe since word32 more fficient than Integer milliseconds more eficient than picosecodns help?? 02:54:38 , GLFW.displayOptions_numAlphaBits = 8 }) 02:54:40 thats not, bit depth right, 02:54:42 just alpha bit depth, 02:54:48 alpha bit depth 02:54:50 yes 02:54:53 i thingk 02:54:54 at least 02:56:31 -- using angle for things other than rotation like a TOTAL LOSER 02:56:32 oh 02:56:40 i 02:56:43 didn't kwnoe 02:56:45 what todoo 02:56:49 so i had to 02:56:51 discipline myself 02:56:52 in coments 02:57:01 im dont like how you leave a blank line after all your imports 02:57:02 ;_; 02:57:17 like, so there is, 02:57:19 two blank lines before code, 02:57:40 i usually do double-blank to sepearte sections of code (and a single blank to sepearate different things in the same section) 02:57:52 so i group imports/definitions/whateverelse like this 02:58:03 im think that, more than two blank lines, is a bad thing, probably, 02:58:07 you could do the GNU thing, and use form feed, 02:58:25 and for big monadic actions with do notations i pepper blank lines throguhout them since there are lots of different things happened 03:00:06 what is this 03:00:07 gnu theng 03:00:27 Did you mean: 03:00:28 Nu THAng 03:00:28 GUn THIng 03:00:30 I can't remember if this came from this channel 03:00:30 helep 03:00:30 http://www.reddit.com/r/explainlikeimfive/comments/j4ohk/explain_the_pnp_problem_li5/ 03:00:39 monqy: GNU metal 03:01:24 i do not feel comfortable with form feeds 03:01:25 they are 03:01:27 too powerful 03:01:37 monqy: ok, im, almost done convertheing it 03:02:12 is it 03:02:14 beaugtufle 03:03:51 monqy: more, beautifuler, 03:04:09 this makes me hapey 03:04:36 monqy: also I think, most people use GLfloat, rather than GLdouble, 03:04:45 oh 03:04:47 is glfloat 03:04:48 better 03:04:54 monqy: also i take it, your things are all separate IORefs, because of glfw, 03:05:00 yes 03:05:01 :( 03:05:05 you should, probably use ReaderT, with MVars, 03:05:11 probalby, 03:05:19 I, can do that, since I am also, going to use that 03:05:34 aslo i was using float last time but then if reaked out and changed it to double but why 03:05:42 what is theta, 03:05:43 sometimes i am bad at reasons 03:05:56 theta is a lot of thjings 03:06:07 also, I do not quite understand, this theta stuff 03:06:10 oh game loops 03:06:13 um 03:06:15 game busyloops 03:06:15 lol 03:06:21 yeah :( 03:06:36 theta was the rotation angle but then other stuff happened 03:06:38 like translation 03:06:39 For the sake of curiosity, whose mannerisms are you mimicking right now? 03:06:42 and 03:06:46 NihilistDandy: ours 03:06:57 it became averything 03:07:05 Oh, fun. 03:07:10 monqy: its ok, im going to, give it a proper game loop 03:07:12 lovingly 03:07:16 bye bye, quitter thing, 03:07:20 bye bye 03:07:23 i will not, miss you 03:07:48 monqy: so what is theta exactly 03:07:52 just like 03:07:53 a game counter 03:07:56 ther eis no exact meaning 03:07:58 at this point?? 03:08:02 it's like ticks isn't it 03:08:03 check render for usage 03:08:04 and do you like 03:08:06 ok 03:08:08 no ticks goes in time 03:08:14 er 03:08:16 modifyIORef theta (+ (delta * 10)) 03:08:17 time goes in time 03:08:19 check render for ticks 03:08:21 does theta ever decrease 03:08:32 no 03:08:34 monqy: ok so basically time is time, theta is ticks, which happen to be used as angle 03:08:37 right??///// 03:08:44 maybe?? 03:08:55 you see im, not sure why you have a time ioref, 03:09:00 because you only read it directly after writing it 03:09:04 i kind of 03:09:05 forget 03:09:06 why 03:09:08 i have it 03:09:10 oops 03:09:13 oops 03:09:37 maybe it s historical cruft i never removed 03:09:38 probalby 03:09:41 this is my answer 03:12:11 SDL_GetTicks -- Gets the number of milliseconds since SDL library initialization. 03:12:22 least helpful thing ever but ok 03:12:28 probably better than getCPUTime or whatever i used 03:14:39 elliott: How is that unhelpful? 03:14:47 too, arbaojrbtary, 03:14:49 I stopped paying attention because of your shenanigans. 03:14:55 our shannigans 03:14:56 are good 03:14:57 ok 03:14:57 racist 03:15:19 You're the first one to say anything about race. Now who's the racist? 03:15:23 raciest 03:15:26 monqy: also, does your key stuff trigger on key up, or key down 03:15:30 Mrowr. 03:17:16 monqy: also, you indent, by one too many spaces, 03:17:18 :( 03:18:14 im back. hi 03:18:22 monqy: how many ticks per second do you do, 03:18:23 i cannot figure it out, 03:18:35 uhhhhhhhhhhhhhhhhhhhhhhhhhhhh 03:18:52 Fixed frame rates make me sad. 03:19:09 i think it triggers on key down i think 03:19:23 or while the key is held down 03:19:24 or something 03:19:37 as for ticks per second, uhh, what's a tick 03:19:47 monqy: your, delta thing 03:19:53 oh 03:19:53 evincar: frame rate =/= tick rate 03:20:08 evincar: unless you like the world running at different speeds on different computers? 03:20:37 delta is the number of seconds since the last whatever, i think?? why did i convert to seconds??? i don't know???? 03:20:43 monqy: uh I mean theta 03:20:46 oh 03:20:47 how many times does theta increase per seconds 03:20:50 per second 03:20:56 uhh 03:20:56 oh 03:20:58 ten times per second? 03:21:01 modifyIORef theta (+ (delta * 10)) 03:21:12 the number of times it increases per second is machine-dependant 03:21:12 but 03:21:18 the amount it increases per second 03:21:21 is 10 i think 03:21:27 i hope 03:21:43 i probably 03:21:44 uh 03:21:47 screwed it up somewhere 03:21:49 right 03:22:00 (ages ago) 03:22:34 ugh why are all these things iorefs stop being iorefs 03:22:42 :t whileM 03:22:43 Not in scope: `whileM' 03:22:45 monqy: im making them MVars, 03:22:50 MVars are nice, they are, concurrency-friendly 03:22:52 ?hoogle whileM 03:22:53 No results found 03:22:59 whats' whileM 03:23:03 Cannot be true 03:23:04 huh whileM is not a stock thing 03:23:16 MVar sounds nice..is TVar the STM thing..is it nice too.. 03:24:03 @hoogle IfElse 03:24:03 No results found 03:24:42 is whileM like..... forever.... but guarded by a when 03:24:44 except 03:24:46 different 03:24:48 because 03:24:51 it's not when 03:24:51 it's 03:24:54 uh 03:24:59 something more like whenM?? 03:25:46 start <- SDL.getTicks 03:25:47 SDL.delay (ticksPerSecond * millisecondsPerSecond) 03:25:47 end <- SDL.getTicks 03:25:47 forM_ [0 .. (end - start) `div` ticksPerSecond] $ 03:25:47 im good practices,,,,, 03:26:02 monqy: the only gamestate you have is the ticks increasing isn't it 03:26:03 haha 03:26:11 :'( 03:26:24 it was not a real game it was a 03:26:25 uh 03:26:30 i forget what it was 03:26:31 oh right 03:26:48 it was like a hello world 03:27:03 something to get me started with opengl so i could make something decent out of it 03:29:09 except 03:29:15 with a badloop and iorefs 03:29:18 instead of hello world 03:31:25 with actual type `GHC.ForeignPtr.ForeignPtr SDL.SurfaceStruct' 03:31:25 Expected type: IO () 03:31:25 Actual type: IO SDL.Surface 03:31:31 monqy: SDL, leaked my things, i did not, want to know :( 03:31:47 what is that :( :( :( :( (: 03:31:54 SDL.Surface's real identity :( 03:31:59 also il like the smile at the end 03:34:09 monqy: i dont like how some of the mVar functions want me to use IO too :( 03:34:19 maybe monad stacks, are bad, 03:34:26 monad stacks...:( 03:35:22 ?hoogle mask 03:35:23 No results found 03:35:28 mask? 03:35:30 monqy: but, i thought you disliked glfw, because callabcks in io, 03:35:43 mask :: ((forall a. IO a -> IO a) -> IO b) -> IO b 03:35:44 oh 03:35:45 callbacks in io are gross too :( 03:35:55 what does mask do 03:36:05 oh 03:36:13 callbacks in io are gross too :( 03:36:14 whats not gross 03:36:22 hgel p i i dopnt knwo :_; 03:36:23 thats the true question :( 03:36:36 maybe if 03:36:38 (magic here) 03:37:03 which is why not being gross .... maybe needs a new language?? 03:37:16 monqy: its probably frp :P 03:37:31 probalby 03:37:50 maybe banana is good 03:38:13 i have never tried any of them because i was too busy freaking over not knowign which to use 03:38:14 is i said! 03:38:51 i bet...conal doesnt like banan 03:39:14 oh no 03:39:49 -!- MDude has changed nick to MSleep. 03:40:04 i am looking at this list and iwll a comment on each of them 03:40:12 conal, wouldnt like any of them, :( 03:40:16 he would say, they are, not the true path, 03:40:48 did conal not have a hand in making a few of them 03:41:01 or did he hate that too 03:41:34 conal elliott fruit 03:41:38 Google it 03:41:54 He's all over FRP, it seems 03:42:08 NihilistDandy: i know 03:42:09 didn't everyone knew that 03:42:11 Also, fruit leather, apparently 03:42:19 but on his blog, he is all, 03:42:22 "oops, it is all the wrong path," 03:42:24 I'll bet you didn't know *that* 03:42:25 and then eh is like 03:42:32 "hey luke palmer,,, what u r doing is good" and i am like 03:42:36 but we dont have that compiler yet................ 03:42:38 :( 03:43:05 :( 03:43:16 (: 03:43:24 Turn that frown upside down 03:43:32 monqy: now, it has, 03:43:33 blackness, 03:43:39 oh 03:43:45 monqy: i think it is painting once ever y second 03:43:45 blac kense 03:43:49 oops? 03:43:50 ??>? 03:43:52 ? 03:44:00 SDL.delay (ticksPerSecond * millisecondsPerSecond) 03:44:01 oh, 03:44:52 NihilistDandy: Don't you mean "turn that frown 180 degrees, or mirror it horizontally"? 03:45:18 :( upside-down is, y'know, :(. 03:45:25 monqy: oh my god yuou have to see what i have created 03:45:28 Approximately. 03:45:29 it is hilarious 03:45:37 elliott: i want/need to see it 03:45:47 elliott: where is it 03:45:57 -rwxr-xr-x 1 elliott elliott 14M 2011-08-02 04:44 help 03:46:00 how can i get this to you......... 03:46:04 If you mirror it horizontally, it's still a frown 03:46:07 source fiels??? 03:46:12 What I really mean is "transpose that frown" 03:46:14 monqy: but then you could, figure out, the hilarity,... 03:46:22 :( -> (: 03:46:22 i will not look,,,untill i see 03:46:34 a...conandrum? 03:46:46 ok, 03:50:08 og hod whats hapenming 03:50:13 monqy: love, 03:50:31 it is going faster than my head can understand it 03:50:35 Transposition sounds hella painful on your face. 03:50:44 monqy: its not going fast 03:50:46 its actually going too slow 03:50:51 its painting the screen really slowly 03:50:52 what 03:50:55 i 03:50:56 like 03:50:58 ten times a second only 03:51:01 or something 03:51:04 so it's really jerky 03:51:12 evincar: Morphine heals all wounds 03:52:02 oh wtf 03:52:23 it segfaulted when i ^C it help 03:52:37 ok its going about 10000 ticks per second lmao 03:52:39 erm per real tick 03:52:41 monqy: um 03:52:42 dunno 03:53:01 oh 03:53:03 now the boxes just sit there... 03:54:18 monqy: soon, it will be rperfect 03:54:50 umm 03:54:57 what's (ten ticks per second) in (milliseconds per tick) 03:55:01 help, 03:55:16 100 03:55:24 thank you, 03:56:58 monqy: ok it is, a bit better, 03:57:01 i am going to make it even better, 03:57:13 :o 03:57:36 SDL_AddTimer -- Adds a timer which will call a callback after the specified number of milliseconds has elapsed. 03:57:36 oh 03:57:38 sdl has real timer things 03:57:44 are they 03:57:45 good 03:57:49 These are all things I could've told you. :P 03:57:54 only one way to fihgtn out 03:57:57 Yes, they work fine. 03:58:03 where are they in the haskell bindgfindignins...... 03:58:08 and do they force using io 03:58:11 (my bett: yes) 03:58:23 But I quit using them for the most part when I switched to variable-frame-rate games. 03:58:32 The timer callback function may run in a different thread than your main program, and so shouldn't call any functions from within itself. However, you may always call SDL_PushEvent. 03:58:33 ugh 03:58:44 evincar: as i said, frame rate =/= tick rate 03:58:57 I know, that's why I said "for the most part". 03:59:50 I don't often have a world that needs stuff that updates every so many milliseconds. 04:00:14 I prefer to construct things from in-world objects that all run in the same timeline. 04:00:23 monqy: i have, a plan, 04:00:54 evincar: so how would you handle, say, a crate dropping downwards at a rate of one metre per second 04:01:41 seconds are slow on my computr...e 04:01:50 or metres are biger 04:01:55 Drop the crate each frame by an amount proportional to the current actual framerate. 04:02:00 or smaler 04:02:01 or 04:02:03 soemthinger 04:02:31 Because chances are the current frame is going to take about as long as the previous one, and if it doesn't, oh well. 04:02:47 The effects of local time discontinuities aren't my concern. 04:02:57 As long as the rendering is smooth and predictable-ish. 04:03:26 "and if it doesn't, oh well" 04:03:39 cool, so on slow computers, your game's physics break 04:03:41 cool 04:03:43 Nope. 04:03:49 You just can't predict the future. 04:03:52 That's all. 04:03:59 And you shouldn't try. 04:04:05 what 04:04:12 what;e 04:04:12 MY DETERMINISM 04:05:13 Time begins. First frame is rendered. Time has elapsed. Next frame is rendered based on elapsed time. 04:05:28 That's all I'm saying. 04:05:39 that's basically what i did for my dumb boxes hello world i think?? 04:06:00 The most recently rendered frame always expresses the correct view of the instant in time it began rendering. 04:06:33 But the frames are only predictably far apart insofar as the objects in the world behave more or less the same each frame. 04:07:16 So introducing many objects might drop my simulation from 110 to 100, but it's still well above the target threshold. 04:09:32 im thinking im liking the fixed tickrate with variable framerate thing thouhg it sounds nice 04:09:42 or whatever it was 04:09:56 all I want is an SDL_Delay that breaks when an event happens 04:10:02 does such a thing exist 04:10:12 uhhhh 04:10:15 i;ve no clue 04:10:18 i geuss i could use threads 04:10:34 one thing I Remember hating about handling events and stuff is 04:10:36 handling events and stuff 04:10:55 I forget the speciifcs 04:11:24 monqy: yay this is working-ish now 04:11:35 wooho 04:11:44 whats the -ish mean is it bad 04:12:09 i imagine frp would hekp with the evcent handline nightmares 04:12:12 well it's really jerky and still uses all the cpu 04:12:19 elliott: No such thing exists exactly in SDL. 04:12:28 :(: :(* :(* :( 04:14:39 help: user error (RTS doesn't support multiple OS threads (use ghc -threaded when linking)) 04:14:41 evincar: im dum 04:14:42 oops 04:14:43 i mean monqy 04:14:51 oops 04:15:10 does that 04:15:11 fix it 04:15:12 good 04:17:37 * quintopia climbs up the event handline 04:18:44 monqy: it is, getting good, 04:18:54 yes.....sssss 04:19:55 monqy: but, there is bad things, with your modules, 04:19:59 i think, maybe, 04:20:01 hmm, probably not 04:20:03 oopse. 04:20:04 oh. 04:20:08 oopse?? 04:20:46 also 04:20:47 resizing 04:20:49 segfaults it?? 04:20:59 i think what happens is 04:21:00 like 04:21:04 all the resizing handling happens 04:21:07 while the stuff is drawing... 04:25:16 evincar: anyway, I don't see how you can do a decent framerateless game without either using all the CPU or blocking all events 04:25:40 eating all the CPU because you're effectively busylooping, or blocking all events because you're sleeping to keep a maximum framerate 04:28:48 Just throw a minimal SDL_Delay in the otherwise busy loop so the game can switch out. You do get an artificially imposed maximum frame rate, but you also don't use all of the CPU. 04:29:10 And said maximum rate is still rather high. 04:30:24 It has more graceful degradation than a fixed frame rate, at least. 04:31:17 With frame dropping, you jump in whole fractions of your frame rate. 04:31:39 so events are only processed at your constant frame rate. 04:31:54 unless you handle events in another thread 04:33:31 monqy: ti still segfaults :( 04:33:36 :'( 04:33:46 how do you mange to segfault...haske.L?? 04:33:51 with opengl 04:33:56 <:I 04:34:01 did you 04:34:03 poke 04:34:04 peointers 04:34:05 no 04:34:10 monqy: should i, port this, to gpipe, 04:34:22 maybe that is 04:34:23 the ultimat esolution 04:34:24 is gpipe,,,,,,,,owrking-good??? 04:34:28 maybe it is 04:34:33 there is only one way to find out,,,,,,,,, 04:34:58 an good idea???/ 04:35:15 monqy: im will maybe make this less ugly first though... 04:35:22 ok 04:38:31 monqy: with 04:38:32 MY 04:38:32 MAGIC 04:39:03 what did You DO 04:39:31 did you bananana it .... 04:40:06 no, 04:41:36 monqy: apart from the segufalts inthis is better... 04:41:55 sounds like a good 04:42:27 huh, gpipe is a bit old 04:42:31 last updated september 04:46:31 monqy: what if... I gave you this current code, and in the process of fixing it, turned it into my game instead, rather than fixing yours....... 04:46:32 would that be bad 04:47:18 its fine i'll just pry out the stuff i want 04:47:37 it's not like i need the spinny boxes 04:47:52 just a starting point from which to make amazing 04:48:43 monqy: oh,,, but,,, my game's source code is not released,,,,, until it is completely done 04:49:07 oh.., 04:49:14 what about 04:49:17 jus t part of it 04:49:26 or how long will it take to 04:49:27 ok,,,maybe 04:49:29 completely done 04:49:32 a long time 04:50:20 ;----; 04:50:31 evincar: Anyway, another problem with your approach is that you effectively do have a fixed tick rate: the precision of your OS timer. 04:50:51 And if you're afraid of floats like right-thinking people, you have to pick a fixed tick rate. 04:51:30 floats scare me dead 04:52:31 elliott: Alright, so it's fixed-ish. My current game varies by about 30fps, broadly, depending on load. 04:52:50 The point is that it does so without my intervention or imposition of a specific upper bound. 04:53:12 And it does it more gracefully than dropping frames. 04:53:17 evincar: No, but the specific bound is right there, it's just hidden. 04:53:22 Nobody's proposing frame-dropping. :p 04:54:02 I'm just saying that a few sleep calls let you use an int for the ticks rather than an ugly float, provides greater consistency, and reduces CPU usage immensely. 04:54:55 I am sleeping. It doesn't bog the CPU. And if I really cared about avoiding floats, I'd use a fix. 04:55:06 If you're sleeping, then you have a fixed tick rate. 04:55:46 Approximately. Maximum. 04:56:30 Sleeping alone isn't the way to handle frame timing. 04:56:38 I hope you're not saying that. 04:57:30 Of course not. 04:57:39 start <- SDL.getTicks 04:57:39 SDL.delay (millisecondsPerSecond `div` ticksPerSecond) 04:57:39 end <- SDL.getTicks 04:57:39 return $ (end - start) `div` (millisecondsPerSecond `div` ticksPerSecond) 04:57:43 That's the obvious way to do it. 04:57:49 (getTicks returns in milliseconds.) 05:01:50 Haskell doesn't have a wait function in it's standard library? 05:02:09 Yes. 05:02:14 @hoogle Int -> IO () 05:02:15 Control.Concurrent threadDelay :: Int -> IO () 05:02:15 System.Console.Editline.Readline setCompletionQueryItems :: Int -> IO () 05:02:15 System.Console.Editline.Readline setEnd :: Int -> IO () 05:02:16 -!- GreaseMonkey has joined. 05:02:17 But I'm using SDL's because, I don't know, it must be better. 05:02:49 It doesn't have particularly good guarantees. 05:03:03 Well, that's why I use it resiliently. 05:03:11 It's impossible to have good guarantees with traditional OSes. 05:03:15 10ms is the best it promises for minimum delay, but in practice it varies a lot platformwise. 05:03:41 And 10ms is also the minimum resolution it promises. 05:03:52 > 1000/60 05:03:53 16.666666666666668 05:04:15 No wonder why 60 FPS is so hard to maintain without feedback... 05:04:49 evincar: That's still enough for more thanenough fps. 05:04:51 [asterisk]than enough 05:06:02 monqy: it sads me that gpipe depends on glut :( 05:06:42 sads me too:(((( 05:07:11 elliott, I had to put a timing loop on the wait command for it to be reliable 05:07:14 i wonder what gpipe does..internally...if it would be a good idea to use that as a starting point...formaking something.. better 05:07:40 s/put a timing loop on/add timing code to/ 05:07:41 monqy: it just does opengl :P 05:07:45 monqy: but there's a lot of code 05:07:50 yes but in what manner 05:07:57 OpenGL can sync FPS for you? 05:08:28 @hoogle Int -> IO Int 05:08:29 System.Console.Editline.Readline complete :: Int -> Char -> IO Int 05:08:29 Control.Exception evaluate :: a -> IO a 05:08:29 Control.OldException evaluate :: a -> IO a 05:08:44 Strange that there's no wait command that returns the actual time waited. 05:09:19 > a / b = a `div` b 05:09:19 : parse error on input `=' 05:09:49 monqy: what do you mean 05:10:05 elliott, how would you write a sync loop with OpenGL? 05:11:27 elliott: i mean if gpipe screws some things up maybe a modified gpipe with better things would be better??? or would it be better to start with opengl?? 05:11:56 Lymee: ? 05:12:05 monqy: i dont like, forking things, because always worse than rewriting, 05:12:18 :( 05:13:35 elliott: All of my well-intentioned branch-rewrites turn into "fuck this, I'll do it from scratch". 05:15:16 @hoogle a -> b 05:15:16 Unsafe.Coerce unsafeCoerce :: a -> b 05:15:16 Prelude ($) :: (a -> b) -> a -> b 05:15:17 Prelude ($!) :: (a -> b) -> a -> b 05:15:37 :t undefined 05:15:38 forall a. a 05:15:57 :t \x -> undefined 05:15:57 forall t a. t -> a 05:16:30 monqy: im going to backup this code as-is, port it to GPipe, then maybe see about reactive-banana???? 05:16:30 -!- jimtendo has quit (Read error: Connection reset by peer). 05:16:31 but ugh glut 05:16:34 -!- jimtendo_ has joined. 05:16:57 is there any way to remove glut from gpope 05:17:02 yes by modifying it 05:19:26 :t (,,) 1 05:19:26 forall t b c. (Num t) => b -> c -> (t, b, c) 05:19:43 monqy: lol.... i commented on the initial gpipe submission a year ago 05:19:53 Eh? 05:19:54 you did??? 05:19:56 but i...forgot.... 05:20:00 monqy: yes.......... http://www.reddit.com/r/programming/comments/9qrl5/gpipe_a_functional_graphics_api_for_programmable/c0e0vmo?context=1 05:20:01 * elliott famous 05:20:05 got an whole two points 05:20:06 was it a good comment a wise comment 05:20:10 Is there a way to get any arbitrary Num from "1"? 05:20:22 :t 1 05:20:22 monqy: it was an anti-bonch comment so yes... 05:20:23 forall t. (Num t) => t 05:20:25 Lymee: What? 05:20:32 :t (,,) 1 05:20:32 forall t b c. (Num t) => b -> c -> (t, b, c) 05:20:35 who's bonch he looks like an awful person 05:20:39 he is 05:20:43 he's an anti-haskell spammer 05:20:54 and also just a generally awful person 05:20:57 hwo can people b.e.... anti-haskelle 05:21:01 full of hatred and death 05:21:11 monqy: "Derp malloc is fast" 05:21:21 * elliott read shis user page 05:21:24 ok now he is anti-idra 05:21:24 who is 05:21:26 some starcraft playe 05:21:27 r 05:21:47 "Because the number of people using something determines its quality. Also, Britney Spears is a superior artist to Mozart because more people are listening to her songs than Mozart concerts." --bonch 05:21:49 "Haskell is a niche language nobody uses but a small cabal of Reddit users." --bonch 05:22:04 -!- jimtendo_ has quit (Ping timeout: 252 seconds). 05:22:31 Therefore PHP > Haskell? 05:24:01 -!- evincar has quit (Quit: Presumably!). 05:24:02 wut 05:24:07 Therefore "hey id like to make thsi computer thing" > Haskell. 05:25:08 "The first parameter is the primitive type (currently Triangle, Line or Point)" 05:25:13 monqy: canat use quads :( 05:25:27 what about trianglestrips 05:25:43 yes there is that.... 05:25:50 my amazing secret project only needs trianglestrips 05:25:58 oh wait hmmmm 05:26:01 monqy: is it TriangleCraft 05:26:38 it's hard to describe 05:27:24 monqy: there is also, LineStrip, LineList, TriangleList, TriangleFan 05:27:27 also describe it :{ 05:28:07 special-purpose graphics libary for my purposes only which draws everything in a special way using trainglestrips 05:28:29 monqy: what about TriangleFans....... my test code uses TriangleFans because fast?? 05:28:44 monqy: and i will assume it's a minecraft clone until proven otherwise :P 05:29:33 1) maybe i actually want trianglefans I should actually do some reasearching on what these things do 05:29:49 monqy: with trianglefans you can draw a cube with only like 05:29:57 let f v = [v,(0,0,0.51),(0,0.51,0.51),(0,0.51,0),(0.51,0.51,0),(0.51,0,0),(0.51,0,1),(0,0,0.51)] 05:29:59 let xs = f (0,0,0) ++ f (0.51,0.51,0.51) :: [(GL.GLfloat,GL.GLfloat,GL.GLfloat)] 05:30:02 not many elements................. 05:30:05 2) it is for me making things involving graphics and it might end up 2d only and it would probably be totally inappropriate for minecraft clones 05:30:14 A triangle fan is a primitive in 3D computer graphics that saves on storage and processing time. It describes a set of connected triangles that share one central vertex (unlike the triangle strip that connects the next vertex point to the last two used vertices to form a triangle). 05:30:28 monqy: if you're just doing two dimensional i'd use sdl and save all the hassle 05:30:49 monqy: looks like triangle strips are the fastest thing 05:31:03 does sdl do trianglestirps 05:31:16 im not good at this 05:32:15 monqy: no.................but you could code them 05:32:18 sdl just does blitting basically :P 05:32:30 The cube is defined in model-space, i.e where positions and normals are relative the cube. We now want to rotate that cube using a variable angle and project the whole thing with a perspective projection, as it is seen through a camera 2 units down the z-axis. 05:32:35 help gpipe tutorial is hurting me hlep 05:33:04 If you pass vertex data designed for GL_QUAD_STRIP to a GL_TRIANGLE_STRIP, it'll draw it just fine, IIRC the vertex ordering works like that. The hardwares only draw triangles anyway. 05:35:04 translate :: (Transpose m mt, Reverse' () mt (v' :. t), Reverse' (v' :. ()) t v'1, Transpose v'1 m, Num v', Num a, Snoc v a v') => v -> m -> m 05:35:05 90% of bonch is apparently bitching about the lack of Starcraft content in /r/starcraft 05:35:08 How cute 05:35:09 help 05:35:38 help help help 05:36:10 help 05:36:15 ;__; 05:36:39 monqy: this is compmpalitcated 05:36:56 (And I would suppose a triangle fan is the fastest primitive when your faces happen to be in a fanlike configuration.) 05:38:25 elliott: help how to help help 05:38:38 elliott: what's even hgapp[ening haelp 05:40:28 Context reduction stack overflow; size = 21 05:40:28 Use -fcontext-stack=N to increase stack size to N 05:40:30 help 05:40:35 qhwats that 05:40:36 helwp 05:41:52 also would it be reasonably efficient to base my whatever on whatever sdl does to do triangles if that would be simpler 05:42:07 or i guess i could use quads if that would be simpler?? 05:42:33 elliott, don't you need two triangle fans to draw an cube? 05:43:53 Lymee: i dont know 05:43:58 monqy: sdl doesnt do anything to do triangles 05:44:05 monqy: you literally blit arrays of pixels to the screen that' sit 05:44:08 it's totally software-based 05:44:20 :( 05:44:46 elliott, can you draw two parallel surfaces with a triangle fan? You'd need two corner shaped ones, right? 05:44:52 im doing sauqraes 05:44:53 well you can use its window-handling functions in conjunction with OpenGL 05:45:06 > transform angle (width:.height:.()) (pos, norm, uv) = (transformedPos, (transformedNorm, uv)) 05:45:07 > where 05:45:07 > modelMat = rotationVec (normalize (1:.0.5:.0.3:.())) angle `multmm` translation (-0.5) 05:45:07 > viewMat = translation (-(0:.0:.2:.())) 05:45:07 > projMat = perspective 1 100 (pi/3) (fromIntegral width / fromIntegral height) 05:45:07 > viewProjMat = projMat `multmm` viewMat 05:45:07 : parse error on input `=' 05:45:08 : parse error on input `=' 05:45:08 : parse error on input `=' 05:45:08 : parse error on input `=' 05:45:08 : parse error on input `=' 05:45:09 > transformedPos = toGPU (viewProjMat `multmm` modelMat) `multmv` (homPoint pos :: Vec4 (Vertex Float)) 05:45:09 : parse error on input `where' 05:45:11 : parse error on input `=' 05:45:12 > transformedNorm = toGPU (Vec.map (Vec.take n3) $ Vec.take n3 $ modelMat) `multmv` norm 05:45:13 : parse error on input `=' 05:45:14 halp monqy 05:45:16 coppro: duh 05:45:18 oh god lambdabot 05:45:19 helpe 05:45:27 lol 05:46:06 elliott: thats gpipe? whats it doing 05:46:15 monqy: i dont know........ 05:46:19 transforming a cube 05:46:23 elliott, that type definition scares me. 05:46:24 BUT NOT IN A SIMPLE WAY 05:46:31 Lymee: there's no type definition there. 05:46:37 I mean the one you posted. 05:46:43 oh 05:46:44 right 05:46:46 yeah 05:46:48 the hellish monad stack? 05:46:51 no 05:46:56 translate :: (Transpose m mt, Reverse' () mt (v' :. t), Reverse' (v' :. ()) t v'1, Transpose v'1 m, Num v', Num a, Snoc v a v') => v -> m -> m 05:46:58 Is it considered good practice to leave out type definitions when they get like that? 05:47:00 oh 05:48:18 Lymee: The first vertex is shared among all triangles of the triangle fan, so you definitely can't draw a cube with a single fan; it can't draw any of the faces that don't touch the corner you start from. Drawing a cube with two starting from opposite corners sounds possible, though. 05:48:49 drawing a cube with a triangle strip is easier 05:49:03 Lymee: I would think it would be *worse* practice to leave them out if they got like that 05:49:27 Oh? One strip to go "around" the cube, and then the top and bottom separately? 05:49:37 no 05:49:42 one strip period 05:49:57 sdl-gfx has trangles maybe i think. would it maybe help me maybe 05:50:03 some vertices have to be repeated either way 05:51:16 Is it considered good practice to leave out type definitions when they get like that? 05:51:21 it probably won't even be inferred with that 05:51:30 but yeah, no, it'd be worse 05:51:34 erm, maybe it can't be done with one strip. maybe it still needs two. 05:52:05 i tried 05:53:41 :1:24: 05:53:41 Couldn't match type `CPU m0' 05:53:42 with `(Float :. (Float :. (Float :. (Float :. ())))) 05:53:42 :. ((Float :. (Float :. (Float :. (Float :. ())))) 05:53:42 :. ((Float :. (Float :. (Float :. (Float :. ())))) 05:53:42 :. ((Float :. (Float :. (Float :. (Float :. ())))) :. ())))' 05:53:44 help 05:54:00 Those are some wonderful types you have there. 05:54:05 fizzie: its Vecs fault 05:54:13 ......................................... 05:54:25 That is a joke right 05:54:49 :. = two tuple? 05:55:09 (Float :. (Float :. (Float :. (Float :. ())))) = four tuple? 05:55:42 Why isn't that ((Float,Float,Float,Float),(Float,Float,Float,Float),(Float,Float,Float,Float),(Float,Float,Float,Float)), or something similar with an alias for (Float,Float,Float,Float) defined? 05:55:46 its Mat44 ghc just sucks at types 05:55:50 and because vectors are more general 05:57:49 You can map over them and everything. 05:58:39 elliott: Maybe you could steal a page from C++'s book, and implement a STLFilt-like tool ("VecFilt"?) to shorten those error messages. 05:58:55 :-) 05:59:12 fizzie, how would you map over a structure (a :. b) 05:59:37 In particular, check if one of them is a list? 05:59:40 Does Haskell let you do that? 06:00:03 what? 06:00:03 Lymee: http://hackage.haskell.org/packages/archive/Vec/0.9.8/doc/html/Data-Vec-Base.html#t:Map 06:00:32 Lymee: What, you mean like ([a] :. b)? Well, you'd define a function on ([a] :. b)... 06:01:11 monqy: im cry 06:01:32 elliott: ;_+; 06:01:38 elliott: whats hapen 06:05:10 -!- pikhq has quit (Ping timeout: 250 seconds). 06:05:11 monqy: gpipe types, are hard, 06:05:40 :( 06:06:36 monqy: but i am, persevering 06:06:45 because it would be totally cool if all of my game could be purely-functional 06:07:34 ok ive got this from the article 06:07:37 transform :: Float -> Vec2 Int -> (Vec3 (Vertex Float), (Vec3 (Vertex Float),c)) -> (Vec4 (Vertex Float), (Vec3 (Vertex Float), c)) 06:07:39 now to make it proper... 06:08:01 -!- derrik has joined. 06:08:12 -!- TeruFSX has quit (Read error: Operation timed out). 06:10:11 -!- pikhq has joined. 06:16:27 asdpogidgjofkhljdpoghklm 06:16:34 monqy: this is complicated :( 06:16:48 like in this tutorial... 06:16:51 they're doing cubes like 06:16:56 PrimitiveStream Triangle (Vec3 (Vertex Float), Vec3 (Vertex Float), Vec2 (Vertex Float)) 06:16:59 positions, normals and uv-coordinates 06:17:07 and im just like.................. how do i draw a square 06:17:46 * elliott looks at gpipe-examples insetad 06:17:49 triangle :: PrimitiveStream Triangle (Vec3 (Vertex Float)) 06:17:50 triangle = toGPUStream TriangleList $ 06:17:50 [ (-0.8):.0.8:.0.0:.(), 06:17:50 0.8:.0.8:.0.0:.(), 06:17:50 0.0:.(-0.8):.0.0:.() ] 06:17:51 this is more like it... 06:19:00 snazzey 06:19:30 though I must admit I don't like invisible boundries 06:19:37 between triangles in trianglelists, in this case 06:19:52 that is, unless trianglelists are different than how im thinking 06:20:00 are they more like strips 06:20:12 in which case i guess it would make sense to just have a big list of points 06:24:18 monqy: donot worry..... soon i will have your entire game working with reactive-banana and GPipe........ 06:24:41 im hapey 06:25:19 monqy: can i have a five 06:25:29 5 06:25:34 thx 06:26:18 -!- derrik has quit (Quit: gone). 06:27:36 monqy: it segfault :( 06:27:40 :'( 06:37:28 monqy: it no segfault 06:37:31 but im having troubles 06:37:32 :') 06:37:33 but i will prevail 06:37:35 :'( 06:37:37 :') 06:37:40 and probably make the resulting program like 900 times larger and slower 06:37:41 but OH WELL 06:37:45 :'( 06:39:18 monqy: im sorry for emotional rollercoaster 06:39:31 its okay i like roalercoasters 06:40:21 square :: PrimitiveStream Triangle (Vec3 (Vertex Float)) 06:40:22 square = toGPUStream TriangleFan $ [vt 1 1, vt 1 (-1), vt (-1) (-1), vt (-1) 1] 06:40:22 where vt a b = a :. b :. 0 :. () 06:40:32 fizzie: You told me I could just pass quads data to a trianglefan expecter. 06:40:34 But you were WRONG 06:40:44 Or wait. 06:40:46 fizzie: Did you say TriangleStrip 06:41:21 TriangleStrip, yes. 06:41:28 If it's QuadStrip data, that is. 06:41:33 Not separate quads, obvsly. 06:42:08 Also you may want to check the vertex order. But I think it went the right way around. 06:42:38 fizzie: but it was separate quads.... 06:42:43 But all I want to draw is a square. 06:42:47 SUERLY IT CANT BE SO HARD 06:43:11 If you want a single square, you can just give the four points into a single TriangleFan. 06:43:28 -!- lament has quit (Ping timeout: 252 seconds). 06:43:33 Oh, right, that actually works. 06:43:51 Not sure what would be the optimal way to draw a large amount of non-connected quads though. Maybe a TriangleList and manually doing each quad as two triangles. 06:43:57 Except... wait what... hmm. 06:50:04 GL_TRIANGLE_FAN's vertices are (1, n+1, n+2) while GL_TRIANGLE_STRIP's are (n, n+1, n+2) for odd n, (n+1, n, n+2) for even; so if you pass four vertices, that's (1, 2, 3)+(1,3,4) for the fan, (1,2,3)+(3,2,4) for the strip. Both could be used to draw a square, you'd just have to pass the corners in a different order. 06:59:44 "Ugh. Hipster activists are so annoying. I bet you ride a fixed speed bike and eat granola bars for breakfast." --bonch on saving the lions 07:01:28 monqy: when you passed width=fifty to square stuff 07:01:32 that was width in pixels right?? 07:01:50 uhh 07:01:53 i dunno maybe 07:01:59 wait no 07:02:00 that uh 07:02:06 was half the width in pixels, if anything 07:02:22 monqy: oh rigth 07:02:24 monqy: but it's like... 07:02:29 now i have something that takes a float as the width and.... 07:11:18 yep 07:12:04 monqy: and what do i.... do.. 07:12:07 to make it pixel again 07:12:23 what haepend what bborke ;_; 07:12:31 monqy: oh rigth 07:12:31 monqy: but it's like... 07:12:31 now i have something that takes a float as the width and.... 07:12:35 its turned into something that takes like 07:12:40 a float where one = full screen width/height 07:13:24 floats 07:13:28 yes 07:13:29 so 07:13:33 i want to turn it into something taking pixels again 07:13:34 help? 07:13:38 oh 07:13:43 i've never used gpipe help 07:13:48 but its not gpipe its just 07:13:49 is flaots how gpipe workse 07:13:51 things 07:13:51 oh 07:13:55 what is this things 07:14:06 things 07:14:11 things 07:14:30 how did you manage to make it only work in terms of total screen size 07:14:38 how does this happen 07:14:56 thats jsut how it works :( 07:15:05 monqy: whats preservingMatrix 07:15:10 again?? 07:15:40 it basically isolates matrix transformations 07:15:46 contains them 07:15:47 it's real nice 07:15:56 monqy: what does that mean, 07:16:16 -!- cheater_ has joined. 07:16:51 it duplicates the top of the matrix stack (the current matrix) and pushes it onto the matrix stack (new current matrix) and then does the provided action (its argument) and then pops the matrix (so all transformations to that matrix don't affect following actions) 07:17:03 monqy: what 07:17:05 ok 07:17:11 monqy: is that how your squares appear like 07:17:12 so it's not like you're mucking around with global state 07:17:12 pixelwise 07:17:15 rather than screen percentage wise 07:17:16 uhh 07:17:17 no 07:17:18 then 07:17:19 how 07:17:19 that 07:17:20 :( 07:17:22 it's how I turn and transform them 07:17:23 uhh 07:17:24 ive never had pixelwise in my opengl programs 07:17:26 it 07:17:28 what 07:17:28 i 07:17:30 :( 07:17:50 maybe my magic is in the stuff i put at the beginning in the initialization 07:17:53 the stuff that made the view 07:17:57 and the ortho2d stuff 07:17:58 what was that 07:18:00 oh 07:18:00 uhh 07:18:01 right.... 07:18:04 do you still have it 07:18:34 GL.viewport $= (GL.Position 0 0, size) 07:18:34 GL.matrixMode $= GL.Projection 07:18:34 GL.loadIdentity 07:18:34 GL.ortho2D 0 (realToFrac w) (realToFrac h) 0 07:18:34 GL.translate $ GL.Vector3 (realToFrac w / 2) (realToFrac h / 2) (0 :: GL.GLdouble) 07:18:39 i dont understand what it is doing :( 07:19:10 uhh 07:19:13 i copied most of it from a thing 07:19:21 but i think i understand it 07:20:32 monqy: what does orthotwodee mean 07:21:05 It's ortho3D with the near and far clipping planes at -1 and 1. 07:21:19 ok first it creates the viewport with width and height specified by size, and the lower-left corner being (0, 0), then it sets the current matrix on which it operates to the projection matrix, initializes it to the identity matrix, sets up a projection matrix there spanning from 0-width and height-0, and then translates to centre it 07:21:26 this is 07:21:27 my analysis 07:21:30 ok... but what does that do that's not default 07:21:31 like 07:21:32 what do you do 07:21:33 get 07:21:35 if you do none of that 07:21:37 ??? 07:21:41 ???? 07:21:47 :( 07:21:49 maybe fizzie knows 07:21:58 The default projection matrix is the identity matrix. 07:22:02 ok 07:22:08 one day i will be expert :( 07:22:15 That would be a glOrtho from -1 to 1. 07:22:22 oh SO 07:22:23 is the reason 07:22:29 that (-one,one) like fills my screen 07:22:30 because 07:22:32 Instead of -w/2 to w/2 like that. 07:22:34 that's what the projection matrix is? 07:22:37 Yes, that sounds likely. 07:22:42 ahhhhhhhhh now i understnand :D 07:22:45 i set it to identity because that's in a glfw windowresizecallback i think so the projectionmatrix will be mucked up and i'll have to reset it to identity 07:22:46 so is that like how i set FOV 07:22:53 when i have a hypothetical block world 07:23:03 well with a block world you want 3d stuff 07:23:11 well yeah but i mean 07:23:13 the ortho stuff in general 07:23:21 For that you'd want a perspective projection matrix. 07:23:27 oh 07:23:32 what would an orthographic thing do 07:23:33 in threedee 07:23:34 Those tend to take the FOV quite directly. 07:23:42 It would do an isometric-style thing. 07:23:47 :DDD omg 07:24:05 or you could muck with the matrix yourself?? 07:24:07 make it go all wack 07:24:41 use the matrix of solidity as the projection matrix 07:24:52 :DDD 07:25:55 oh hey, haskell opengl bindings 07:26:13 they suck (thats why im (using gpipe :') )) 07:26:20 well they don't suck 07:26:22 but opengl sucks in general 07:26:29 so what does gpipe do 07:26:30 i mean 07:26:32 about this stuff 07:26:36 what do you mean 07:26:53 deal with opengl's matricies and stuff 07:26:58 it just 07:27:00 transforms them into functional matrices 07:27:02 with a bunch of like 07:27:04 toGPU stuff 07:27:07 which turns things into shaders 07:28:42 -!- pikhq_ has joined. 07:30:49 -!- pikhq has quit (Ping timeout: 240 seconds). 07:36:24 -!- elliott has quit (Remote host closed the connection). 07:36:53 -!- elliott has joined. 07:37:02 ao um, 07:37:07 asterisk so 07:37:14 monqy: im going to, totally gpipe it up 07:37:19 oh man 07:37:31 r u, PREPARED, 07:37:52 per haps 07:43:59 -!- NihilistDandy has quit (Read error: Connection reset by peer). 07:48:31 "I don't make video games. I am not involved with the video game industry. I do not want to talk to you about graphics, textures, engines, or anything of that sort." --John Carmack 07:50:18 -!- NihilistDandy has joined. 07:52:24 -!- NihilistDandy has quit (Read error: Connection reset by peer). 07:52:59 -!- NihilistDandy has joined. 07:54:05 orthoProj = toGPU $ orthogonal (-10) 10 (2:.2:.()) 07:54:12 fizzie: monqy: this looks like the ortho to me... 07:54:17 i think??? 08:00:56 Soubds likely, though I don't know about the values. Maybe width, height and then a Vec2 for the center and/or corner. 08:01:20 I suppose it has documentation. 08:02:02 fizzie: I'm not sure though, since that's the projSquare function. 08:02:08 Then it gets rasterised and drawn onto the frame. 08:02:14 And I think orthogonals are a global thing. 08:02:39 In fact it seems like orthoProj is just multiplied with the ... homPoint of the vertex position thing. 08:02:45 To form a four-dimensional vector. Umm. 08:02:54 elliott: so I finally got back to watching old doctor who... I like the vulcan neck pinch 08:03:22 Well, maybe it's not using the fixed-function OpenGL pipeline, I think you can opt for that nowadays. 08:03:38 coppro: The Doctor: literally a Vulcan. 08:03:41 fizzie: im not sure what this means,, 08:04:19 In old-style OGL you'd set the (global-state) projection matrix, which is then used to transform coords in the camera coordinate system to the screen's, by multiplying them. 08:04:46 Right. 08:04:49 But I suppose you can nowadays opt for doing all geometry with programmed shaders. 08:04:52 Maybe. 08:06:08 fizzie: It does convert things to shaders automagically, yes. 08:06:19 It's a little SPOOKY. 08:07:03 I didn't learn shaders in my opengl class :( 08:07:07 they sound cool though 08:07:18 i need an opengl class 08:07:26 or just, opengl not to exist 08:07:32 in vanalla open gl you have to specifiy shaders an a special langauge??? 08:07:39 crayze 08:07:39 yes 08:07:42 its 08:07:45 monqy: they're written in like 08:07:48 opencl language 08:07:49 is it good langauge 08:07:53 it's based on C 08:08:00 __kernel void fft1D_1024 (__global float2 *in, __global float2 *out, 08:08:00 __local float *sMemx, __local float *sMemy) { 08:08:01 int tid = get_local_id(0); 08:08:01 int blockIdx = get_group_id(0) * 1024 + tid; 08:08:01 float2 data[16]; 08:08:01 08:08:02 is this basing appropriate 08:08:03 // starting index of data to/from global memory 08:08:05 in = in + blockIdx; out = out + blockIdx; 08:08:07 08:08:07 ewwww 08:08:11 globalLoads(data, in, 64); // coalesced global reads 08:08:13 fftRadix16Pass(data); // in-place radix-16 pass 08:08:15 twiddleFactorMul(data, tid, 1024, 0); 08:08:16 this is what it looks like................. 08:08:19 monqy: no, because GPUs are even lower-level than C 08:08:21 C is too high-level 08:08:23 see Checkout 08:08:25 monqy: ... but with gpipe it like does your haskell all symbolic and compiles it to a shade 08:08:27 r 08:08:31 automagically 08:08:35 monqy: (http://esolangs.org/wiki/Checkout) 08:08:49 -!- Taneb has joined. 08:08:54 god ais can't write 08:08:57 ah right 08:09:02 walls of text 08:09:06 A different form of checkout/2 can move or (possibly readonly) copy between level 1 memory and level 3 memory. The semantics of this need a little explanation, as referring to level 1 memory from a level 2 command is mostly meaningless. What happens is that the command refers to one slab of level 3 memory, and one word of level 1 memory in each subunit, which comes to the same amount (as the size of a slab is that necessary for each level 1 subun 08:09:06 it to get one word of it). The access is allowed to be misaligned. In fact, the slab of level 3 memory does not even need to be contiguous in an absolute sense; rather, it has to be contiguous in the segmented sense that if memory is divided into a set of power-of-2-sized blocks each of which wraps around, it's contiguous from the point of view of some block. (So, for instance, in a hypothetical system with 8 level 1 subunits per level 2 unit, [2 08:09:09 7]/3 [28]/3 [29]/3 [30]/3 [31]/3 [16]/3 [17]/3 [18]/3 would be contiguous in this sense, with block size 16.) The third argument gives the block size needed for the block in question to be considered contiguous, and must be a constant integer that's a power of 2, and at least as great as the number of level 1 subunits of a level 2 unit. (The level 1 subunit with identifier 0 gets the first word of the slab, [27]/3 in the example above, the subuni 08:09:14 t with identifier 1 gets the second, and so on.) Indirect memory addresses can be given for the first two arguments, with the same restrictions as in the previous case. This instruction is very fast compared to other checkout instructions, taking around twice as long to execute as arithmetic instructions. Additionally, two move/2 instructions with the same arguments, the first from level 3 to level 1 and the second in the other direction, can tak 08:09:19 e less time between them to execute than either would individually; the condition for this to happen is that the block size must be set to the amount of level 3 memory per unit (or higher), that they are separated by nothing but arbitrary level 1 i 08:09:21 soryt im not reading that 08:09:23 lmao 08:09:25 xchat 08:09:27 cut that off 08:09:29 it wouldn't let it all go in the input field 08:09:33 http://esolangs.org/wiki/Checkout/Quick_reference 08:09:36 there you go.... 08:10:22 so i guess shaders are such a thing such that a c-like language is appropriate?? 08:11:05 monqy: C is too high-level like I said 08:11:10 makes bad assumptions :| 08:11:15 right but I mean 08:11:33 by appropriate, not high- or low-level but 08:11:35 right-level 08:11:36 well it couldn't be like, java if that is what you mean.......... 08:12:09 i mean like how HOtMEfSPRIbNG is really high-level but the wrong abstraction entirely for pretty much anything 08:12:25 except in this case instead of HOtMEfSPRIbNG it is C 08:12:32 :D 08:12:58 http://www.overclock.net/coding-programming/345618-wide-world-code.html oh no the overclockers have found us 08:13:11 oh no overclockers 08:13:15 "what about LOLCODE?" 08:13:19 IM GOING TO PUNCH MY FACE THROUGH YOUR BRAIN 08:13:25 oh thank god it ended after three posts 08:13:50 i wish i understood homespring 08:14:43 what about snack 08:14:52 no, 08:16:03 i wonder what 08:16:08 snack's creator genius 08:16:09 was thinkign 08:16:13 when making 08:16:14 snack 08:16:30 probably "im smart" 08:16:38 in five days snack is a month old 08:16:56 obviously not cakes and chips 08:17:01 and one day (warning: scary story ahead) 08:17:05 Fucking lolcode 08:17:05 it will be a hundred years old 08:17:08 people will say 08:17:11 a month? two months? 08:17:13 how can we make our langauges last a hundred years 08:17:14 like snack has 08:17:22 and they decide 08:17:28 "there is only one way 08:17:33 we need a command that prints SLEEP? ARE YOU CRAZY? LETS GET UP FOR MIDNIGHT DINNER" 08:17:35 in a month ago from five days from now snack willwas be a month old 08:17:49 what 08:17:56 wasn't it a june lnaguage 08:18:08 holy shit 08:18:10 i love how 08:18:15 monqy: oh right 08:18:16 i love 08:18:16 how 08:18:18 http://esolangs.org/wiki/Snack 08:18:21 there is an undocumented command 08:18:39 how can you not even document the like five commands your awful language has 08:18:40 what does it mean 08:18:52 well he documented 5 of them 08:18:52 who's SmallBug 08:18:54 that's a start 08:18:56 a bad person 08:18:59 LOL 08:19:08 is smallbug you, itidus20 08:19:31 are you implying itidus20 is a bad erson 08:19:32 :| 08:19:55 no! Je ne suis pas sur le wiki. 08:20:06 i also like how in the implementation 08:20:07 (google translated) 08:20:07 the int 08:20:08 Ceci n'est pas une snack 08:20:09 is called stack 08:20:11 yes 08:20:16 Dandy =)) 08:20:28 and everything is indented a space 08:20:43 or is that just the first two lines after the include 08:20:47 help snakes killed me 08:20:52 snack's 08:20:54 snack 08:21:04 help i cant smell snacks i mean spell help 08:21:11 i cant spell spoepll ahELP 08:21:12 elliott: not the Doctor; Ian 08:21:21 coppro: same person obviosuly 08:21:29 its ok to not smell snacks as long as you can: grave get eat them 08:22:12 Hello 08:22:13 You have eaten as a snack right 1 people. Happy? 08:22:53 Ceci n'est pas une “Ceci n'est pas une “Ceci n'est pas une “Ceci n'est pas une “... 08:22:58 oh man what if you do grave then let a nonexistant people free 08:22:59 then eat 08:23:04 you will have eaten...negative people 08:23:09 O_O 08:23:12 Do eet 08:23:41 pikhq_, what does that mean? 08:23:53 Lymee: 08:24:06 This is not a "This is not a "This is not a..." 08:24:11 Lymee: This is not a “This is not a “This is not a... 08:24:52 Monospaced font made that awesome 08:24:57 > fix ("Ceci n'est pas une “++) 08:24:58 : 08:24:58 lexical error in string/character literal at end o... 08:25:02 :< 08:25:05 Ce n'est pas un truc l'esprit 08:25:16 See: https://secure.wikimedia.org/wikipedia/en/wiki/La_trahison_des_images 08:25:18 > recurse ("Ceci n'est pas une \"“++) "Ceci n'est pas une “ 08:25:19 : lexical error at character '\8220' 08:25:20 Lymee: wrong quote type 08:25:25 > recurse ("Ceci n'est pas une “"++) "Ceci n'est pas une “ 08:25:26 : 08:25:26 lexical error in string/character literal at end o... 08:25:31 > recurse ("Ceci n'est pas une “"++) "Ceci n'est pas une “" 08:25:31 Not in scope: `recurse' 08:25:31 t pas une “++) 08:25:32 god 08:25:33 look at it 08:25:35 “++) 08:25:36 that's not a " 08:25:38 Blah. 08:25:40 srsly 08:25:43 Doesn't show up in my editbox. 08:25:52 i hate you edit box 08:26:09 > fix ("Ceci n'est pas une "++) 08:26:10 "Ceci n'est pas une Ceci n'est pas une Ceci n'est pas une Ceci n'est pas un... 08:26:23 > fix ("\"Ceci n'est pas une "++) 08:26:24 "\"Ceci n'est pas une \"Ceci n'est pas une \"Ceci n'est pas une \"Ceci n'es... 08:26:30 Uglier, but closer 08:26:44 > fix ("Ceci n'est pas une “"++) 08:26:46 "Ceci n'est pas une \8220Ceci n'est pas une \8220Ceci n'est pas une \8220Ce... 08:26:55 Shame about the uglyprinting. 08:27:00 sour 08:27:26 We should write an ugly-printer 08:27:32 > cycle "”" 08:27:33 "\8221\8221\8221\8221\8221\8221\8221\8221\8221\8221\8221\8221\8221\8221\822... 08:27:40 Like a Perl compiler? 08:27:44 Dandy: suffice to say you detected in my post the influence of the Magritte reference I saw yesterday 08:27:52 > (fix ("Ceci n'est pas une “"++)) ++ (cycle "”") 08:27:53 "Ceci n'est pas une \8220Ceci n'est pas une \8220Ceci n'est pas une \8220Ce... 08:27:59 itidus20: Haha. Good on me :D 08:28:14 pikhq_: Well, yes, but with a nicer user interface 08:28:32 LOL lymee 08:28:39 Lymee: Exactly equivalent to the statement sans ++ (cycle "”"). :) 08:28:50 Nuh-uh, 0.000...1 is a real number 08:29:03 ... 08:29:29 0.999999999...0 =/= one dumbtarjsds 08:29:33 pikhq_, well. 08:29:36 The program doesn't cheat! 08:29:36 lolll 08:29:51 If we ever build a computer capable of infinite cycles per second, the code will become useful. 08:30:15 Well. Nearly equivalent. Under some Haskell implementations, that would reconstruct the first list, giving you completely pointless allocation. 08:30:42 > tail $ (fix ("Ceci n'est pas une “"++)) ++ (cycle "”") 08:30:43 "eci n'est pas une \8220Ceci n'est pas une \8220Ceci n'est pas une \8220Cec... 08:30:49 .com.com.com 08:30:49 > last $ (fix ("Ceci n'est pas une “"++)) ++ (cycle "”") 08:30:53 mueval-core: Time limit exceeded 08:30:53 .com 08:30:54 * Lymee runs 08:30:58 do you remember .com 08:31:02 .com 08:31:05 elliott: Well, that's true, in that's it's meaningless 08:31:06 .xomc.om.cm 08:31:09 .com 08:31:13 elliott: com.com? God that was a stupid thing. 08:31:19 .com 08:31:20 .comcomcom 08:31:25 .com.com.com.com.com 08:31:31 www.ww.w.com 08:31:37 Apparently com.com redirects to cnet 08:31:45 ..........q;come 08:31:46 come 08:31:47 .com 08:31:49 .sompdf.com 08:31:52 some.come 08:31:54 pony.com 08:32:07 dotat.at 08:32:07 -!- asiekierka has joined. 08:32:08 hi 08:32:10 long time no see! D: 08:32:11 Hello 08:32:18 you were in here days ago 08:32:21 NihilistDandy: Yes, they used to maintain a hierarchy of sites under com.com. 08:32:24 but didn't really talk 08:32:26 NihilistDandy: I am not fucking kidding. 08:32:31 so you're going to talk 08:32:37 pikhq_: That depresses me on an existential level 08:32:43 Ve have ways of making you TALK! 08:32:43 much to your disappointment, possibly, elliott 08:32:49 And that's saying something 08:33:06 -!- GreaseMonkey has quit (Read error: Connection reset by peer). 08:33:07 CNET seems to have cornered the market on stupid domain names. 08:33:07 * Lymee pokes at asiekierka 08:33:12 * asiekierka pokes back 08:33:18 -!- GreaseMonkey has joined. 08:33:33 Also, what the shit, FURscript 08:33:39 They also have, like, download.com, upload.com, tv.com, search.com, radio.com, and computers.com... 08:33:43 hi stop being missing from espernet 08:33:59 It's like they think extraordinarily simple nouns make good brand names. Cute. 08:34:31 pikhq_: My heart hurts 08:34:44 To be fair, it was the 90s. 08:35:21 I always feel a bit weird when I realise I was alive during the dot.com bubble 08:35:22 This was a magical time when everyone got on a computer and forgot every single bit of knowledge we learned over the course of centuries. 08:35:28 lolcnet 08:35:31 Damnable 90s and their non-exhausted IPv4 space 08:35:56 It's not like having a bunch of domains uses up IPv4 space. 08:36:02 I know 08:36:09 I'm not talking about domains :D 08:36:22 I'm complaining about yesteryear 08:36:29 Yesterdecade 08:36:31 Whatever 08:36:38 You should damn an older period for being insufficiently forward-thinking. 08:36:53 "Oh, 32 bits should be enough. It's not like more than 100 hosts will use it anyways, right?" 08:37:02 The fools 08:37:25 "This computer thing will never catch on. And networking? Pish tosh." 08:37:41 Well, they presumed it was a research network. 08:37:49 apparently it was just a demo thing and before long someone pressed the accelerator while everyone was just sitting on top of the car 08:37:53 Vacua and nuclear ovens are the future damn it! 08:38:00 Not a network that would leap off into production. 08:38:04 and before they knew it the world was full of 32bit addresses 08:38:10 I'm aware -_- 08:38:31 The world wide web was invented to make it easier to get data from one computer to another in the same room somewhere deep on the France-Switzerland border 08:38:50 Those wacky Europeans 08:38:54 The World Wide Web was also a wiki protocol. 08:39:02 pikhq_: HTTP 08:39:05 Erm, HTTP. 08:39:07 Yeah. 08:39:14 HTTP is not the World Wide Web 08:39:15 First the Web, then the LHC... It's like they WANT the world to die 08:39:30 The World Wide Web was intended as a giant wiki, though. 08:39:41 It kinda is 08:39:47 But with many, many locked pages 08:40:00 Not in *any* way like it was designed. 08:40:13 Half of HTTP gets completely ignored. 08:40:47 PATCH, DELETE, PUT? Hah. 08:41:06 I'm not sure how you can be "deep on the border". 08:41:09 patch is new............ 08:41:11 it was invented last year.......... 08:41:16 elliott: Srsly? 08:41:19 yes............. 08:41:32 Internet Engineering Task Force (IETF) L. Dusseault 08:41:32 Request for Comments: 5789 Linden Lab 08:41:32 Category: Standards Track J. Snell 08:41:32 ISSN: 2070-1721 March 2010 08:41:32 PATCH Method for HTTP 08:41:41 "After a long, long time, the HTTP PATCH verb has become an official standard: IETF RFC 5789." 08:41:43 Also, stop using that many dots, it makes you look like you're 8. In the 90s. 08:41:46 might have been invented earlier i dunno 08:41:50 pikhq_: i am............. 08:42:11 Oh god 08:42:15 Still, PUT. 08:42:20 The nineties was the decade before last 08:42:58 "Given that it’s taken something like 10 years to get PATCH in" 08:42:58 oh ok 08:42:59 what do 8 years old do now anyway 08:43:12 monqy: irc 08:43:35 it would be cool if i could become eight again and be all awesome ahead of time........ 08:43:46 i was probably a horrible person when i was 8 08:43:57 me too 08:43:58 are any 8 years olds not horrible people 08:43:59 I am glad I don't have IRC logs from when I was 8. 08:44:00 except i know it 08:44:01 :( 08:44:01 With a robot body, you can be!~ 08:44:04 I was an idiot who thought he was the best at everything 08:44:20 I have IRC logs from when I was 8... 08:44:33 thankfully, 08:44:35 I didn't irc when I was 8, thankfully 08:44:37 the only traces of me being eight 08:44:40 are under a different nickname 08:44:44 that has, to my knowledge, 08:44:53 never, ever been publicly linked to my name or any of the nicks i've ever used on irc or ever 08:44:57 Been expunged from the judicial record? 08:44:59 so i am ............. safe ......... 08:45:00 what do 8 year olds do on irc anyway 08:45:03 The only traces of me being eight that I know of *are* my nickname. 08:45:10 embarrass themselves and fail to notice it? 08:45:12 monqy: Internet Relay Chat? 08:45:14 monqy: cyber.........esolangs........................haskell......... 08:45:24 cyber 08:45:27 u be haskell, ill be brainfuck, i put on my robe and type theory hat 08:45:30 elliott: These things are isomorphic 08:45:44 I don't think I knew about esolangs or haskell when I was 8 :( 08:46:18 im not ready for twenty days time... can i put off becoming sixteen until im like sixteen 08:46:23 When I was eight, the closest I got to esolangs was writing down roman numerals in Excel 08:46:37 im not ready to sixteen yet :{ 08:46:46 i;ll never ready to sixteen 08:47:00 I got ready to sixteen just before I sixteened 08:47:01 I'm still not ready to sixteen 08:47:10 And I already sixteened 08:47:11 Taneb: help, its going to fast, 08:47:14 make it stop, 08:47:21 elliott: Congrats, you're 61. 08:47:26 You can't stop it 08:47:31 You can only make it go faster 08:47:38 Taneb: how, is it meth, 08:47:40 (i think its meth) 08:47:45 Taneb: Well, you can stop the flow of time. 08:47:50 brb 08:47:55 Just fine a nearby event horizon. 08:48:05 Easy as pie 08:48:12 `/win 7 08:48:16 No output. 08:48:27 HackEgo: that's cause you suck 08:56:25 Back 08:56:35 Or maybe it hates Windows 8 08:56:39 s/88/7/ 08:56:43 s/88/8/ 09:08:36 -!- Phantom_Hoover has joined. 09:26:14 -!- FireFly has joined. 09:30:32 -!- asiekierka has quit (Ping timeout: 258 seconds). 09:35:44 "It is built on top of the programmable pipeline (i.e. non-fixed function) of OpenGL 2.1" 09:35:45 ok 09:36:32 what does this mean 09:37:38 It doesn't use the "global" projection/modelview matrices, pretty much. (And the same applies to lighting and things like that.) 09:39:11 There's an awesome flowchart somewhere which shows the fixed-function pipeline, and where shaders fit there, and which parts are/can be skipped if you feed stuff to them. 09:39:55 fizzie: it is confusing :( 09:40:03 fizzie: why does gpipe use all this advanced stuff but then depend on glut....... 09:40:47 elliott: Maybe you should use DirectX instead, the fixed-function D3D 9.0 pipeline is much simpler: http://www.ategpu.com/wp-content/uploads/2009/06/20090605_0ae51d1100b0ce18cfa6kJFDIv2M25XR.png 09:40:58 ah 09:41:11 isn't directx actually simpler to use though :) 09:42:39 Probably not by much, really. But I'm no expert. 09:43:38 Aw, I can only find a flowchart of the current, programmable pipeline: http://www.opentk.com/files/OpenGL%20machine%20diagram%20v2.png -- I'm sure there was one that showed the old, more complicated one, which pretty much replaces the blocks that say "Shader" with a mess. 09:44:27 why is it so complicated :( 09:44:30 why not simples 09:47:09 Here's the old OpenGL 1.1 state machine: http://www.opengl.org/documentation/specs/version1.1/state.pdf -- the programmable pipeline just skips large parts of that and replaces them with your shaders. 09:47:21 Google image search doesn't seem to find pictures that are inside PDF documents. :/ 09:48:49 -!- pitufoide has quit (Read error: No route to host). 09:49:01 -!- cheater_ has quit (Ping timeout: 255 seconds). 09:49:45 I think they have officially labeled most of the "old-fashioned" parts as deprecated in current (3 and later) OpenGL versions. 09:50:16 GL.ortho2D 0 (realToFrac w) (realToFrac h) 0 09:50:16 orthoProj = orthogonal (-10) 10 (2:.2:.()) 09:50:17 hmm 09:50:21 wonder how the first becomes the second... 09:50:30 fizzie: yeah they've deprecated practically everything :( 09:50:42 You should probably look at the docs of "orthogonal" to specify that. 09:51:11 fizzie: 09:51:11 -- | An orthogonal projection matrix for a right handed coordinate system looking down negative z. This will project far plane to @z = +1@ and near plane to @z = -1@, i.e. into a left handed system. 09:51:12 orthogonal :: Fractional a 09:51:12 => a -- ^ Near plane clipping distance 09:51:12 -> a -- ^ Far plane clipping distance 09:51:13 -!- pitufoide has joined. 09:51:13 -> Vec2 a -- ^ The size of the view (center aligned around origo) 09:51:15 -> Mat44 a 09:51:17 but then 09:51:19 I'm not exactly sure on GL.ortho2D :) 09:51:28 Well, it's already centered, then. 09:52:06 So that's just orthogonal (-1) 1 (w :. h :. ()) or whatever you need to do to 'w' and 'h' in there. 09:52:27 (ortho2D puts the clipping planes at -1 and 1.) 09:52:48 fizzie: Ah. 09:52:49 ?src when 09:52:49 when p s = if p then s else return () 09:52:58 :t when 09:52:59 forall (m :: * -> *). (Monad m) => Bool -> m () -> m () 09:53:01 oh wait 09:53:02 nm 09:55:27 You may need to flip that thing though, since I guess "GL.ortho2D 0 (realToFrac w) (realToFrac h) 0" sets up a coordinate system where Y points down, not up. 09:55:40 (Might be enough to just provide -h to it.) 09:56:25 now to find the equivalents of 09:56:28 GL.viewport $= (GL.Position 0 0, size) 09:56:29 GL.matrixMode $= GL.Projection 09:56:31 GL.loadIdentity 09:56:32 GL.translate $ GL.Vector3 (realToFrac w / 2) (realToFrac h / 2) (0 :: GL.GLdouble) 09:56:55 As mentioned, you don't need the GL.translate, if your 'orthogonal' is already centered. 09:57:21 oh 09:57:21 right 09:57:24 blame monqy 09:57:37 I suppose that matrixMode/loadIdentity thing is abstracted out by GPipe 09:57:45 Probably not a GL.loadIdentity either if it's building the matrix from scratch and not multiplying it over some existing one. 09:58:18 im blamed 09:58:32 Viewport and how to set the projection matrix depends on how your pipe does things, I suppose. 09:58:34 And what is EVEN a MODE of MATRICES. 09:59:08 It's just the global flag that decides which matrix the matrix-operating functions (like loadIdentity and such) operate on. 09:59:11 The most common matrix? 09:59:58 What about the viewport? 10:00:00 ortho thing also handle that? 10:00:02 I suppose so. 10:00:54 -!- cheater_ has joined. 10:01:06 That I don't know about. In the fixed-function pipeline it's an affine transformation from "normalized device coordinates" (i.e. what you get after the projection matrix is applied) into window coordinates. 10:01:26 Well, it seems to work-ish. 10:01:44 whats the -ish 10:02:07 Well things. 10:02:11 I need to make it actually move for instance. 10:02:16 segfaults 10:02:20 oh 10:02:31 and banana? 10:03:35 monqy: yes. 10:03:36 im so banana 10:05:09 -!- clog has quit (Ping timeout: 252 seconds). 10:05:48 rip 10:05:48 clog 10:07:26 -!- oerjan has joined. 10:07:30 hi oerjan 10:07:31 bye clog 10:07:35 hello 10:07:38 argh 10:08:39 oerjan: codu,,, 10:08:40 learn it,,, 10:09:35 oh i do. btw it was removed from topic. 10:10:07 fuk quintopia 10:10:13 -!- elliott has set topic: http://codu.org/logs/_esoteric/. 10:10:18 no tunes in topic in retaliation 10:12:39 monqy: im think, rotate, now, 10:12:55 GL.rotate (blah * 100) (GL.Vector3 0 0 (1 :: GL.GLfloat)) 10:12:55 ok 10:13:01 congarts 10:14:35 monqy: http://i.imgur.com/FQdnB.png 10:14:46 blue 10:14:49 adn greene 10:14:54 its title "Green Triangle" of window 10:15:05 is there a second box too wheres the traingle 10:15:11 is this a threedee box 10:15:32 my eyes are going funny in the blue and green and tired and it's going distortey 10:15:50 and i cannot make heads or tales of the specifics of what this box actually looks like 10:15:58 but i'm thinking it's a square 10:16:03 nothing fancy 10:16:13 it is 10:16:14 im just 10:16:19 replicating the thing you did 10:16:21 oh 10:19:35 -!- Sgeo has joined. 10:20:05 no tunes in topic in retaliation <-- well now you are annoying _me_... 10:20:27 mind you, i'm in a bad mood to start with. 10:20:42 annoyed over log bots in topics 10:20:47 the oerjan life 10:21:09 no, annoyed over stupid "retaliation" games 10:22:12 oerjan: you realise im not serious................... 10:22:44 i'm too gloomy to realize anything. HOW DO YOU WANT YOUR BAN SERVED? 10:22:58 have you guys ever used the spectrogram in foobar2000 or an equivalent 10:24:06 * oerjan suddenly thinks spectrogram sounds like something at the other meaning of "esoteric" 10:24:28 presumably the ghostbusters have one 10:24:35 Ghostrogram. 10:25:13 .debian.com.net.org.opengl 10:26:13 I'm unsure whether that was "an equivalent of foobar2000" or "an equivalent of a spectrogram in foobar2000". 10:26:13 elliott: my 3-cell BF fractran seems to have a snag :( 10:26:19 latter 10:26:52 I don't know exactly what its spectrogram looks like, but I've drawn quite a lot of them with matlab and such. 10:26:59 i don't see how to do the equivalent of if (!a) { a = C1*b+D1; b=0; } 10:27:01 oerjan: :{ 10:27:46 it's not the arithmetic that's the problem, it's actually conditioning on something being zero without clobbering when it isn't... 10:28:15 four cells?? 10:28:57 four cells should be fine i guess 10:29:20 then you can actually use a cell for a test flag 10:29:41 monqy: ok, im going to try introducing the reactive bananas 10:29:51 oh man oh man 10:29:59 BE PREPARED FOR POTASSIUM 10:30:58 monqy: it occurs to me that this niceness of GPipe will be ah... tarnished a bit when i actually write gamey stuff 10:31:01 because I need OpenAL too 10:31:07 :( 10:31:08 and i dont htink theres an APipe......... 10:31:22 is openal........saddening 10:31:32 and are there no alternatives 10:31:33 monqy: its modelled to be as much like opengl as possible 10:31:36 (seriously) 10:31:38 ew 10:31:44 and well there are alternatives but openal is cool because it offers threedee sound??? 10:31:45 so like 10:31:47 i can just position sounds properly 10:31:51 and they'll doppler properly 10:31:55 and get quietier as you walk away 10:31:56 and if you turn around 10:32:00 they'll sound like they're behind you 10:32:01 and stuff 10:32:05 it's cool................ 10:32:14 good thing i don't need threedee sound for what i want to do because what i want to do is twodee 10:32:23 what do you, want to do, 10:32:29 i dont 10:32:30 quite 10:32:30 know 10:32:35 but, try, to explain, 10:32:41 and they'll doppler properly <-- wait, as in actually consider relative velocity? :P 10:32:53 all i know is it's twodee and it involves a very special type of graphicals which is also hard to explain 10:32:54 oerjan: well "The rendering engine performs all necessary calculations as far as distance attenuation, Doppler effect, etc." --wikipedia 10:33:03 oerjan: so i think so 10:33:08 heh 10:34:24 oerjan: You can even vary the speed of sound (though only globally) which affects the doppler calculations. 10:35:35 also what i want to do is kind of bizarre 10:35:39 what is it........ 10:35:42 which makes explaantion..h.arder. 10:35:46 try, 10:35:49 im cant 10:35:54 ;_: 10:36:05 try, 10:36:56 well i guess the graphicals might be described as subtley wavy or something and they vary over time?? 10:37:03 * Sgeo feels unwell 10:37:06 i have a vision for this but i m bad at descirbe 10:37:12 the rest is even less concrete 10:37:13 Better than yesterday, but still unwell 10:37:16 what is, gameplay, 10:37:22 the least concrete 10:37:30 are the graphics triangles 10:37:38 they are rendered using triangles 10:37:47 so is evrything 10:37:53 Captai Obvios 10:38:08 n 10:38:10 nnnn 10:38:11 Patashu: Now I am curious as to what that spectrogram question was all about? 10:38:12 i use triangles instead of lines because then i can vary their specifics over position and time?? 10:38:12 u 10:38:13 uuuuu 10:38:25 monqy: ok? 10:38:29 ok. 10:38:29 monqy: what is the game like, 10:38:44 it may or may not. involve the display of text. 10:38:49 oh 10:38:52 TELL ME ABOUT THE FUCKING GAME 10:38:59 >:{ 10:39:03 im must know........ 10:39:07 it is not relevant to gameplay. though. it is more of fan . aesthetic. 10:39:12 i uh 10:39:20 haven't really decided much about the actual 10:39:21 gameplay 10:39:21 yet 10:39:25 if anything 10:39:26 at all 10:39:33 >:( 10:39:57 reactimate :: Event PushIO (IO ()) -> NetworkDescription ()Source 10:39:57 Output. Execute the IO action whenever the event occurs. 10:40:00 REACTIMATE.... 10:40:05 reactimate 10:41:02 is there any good way to do gameplay 10:41:04 because if there is 10:41:06 reactimate :-D 10:41:07 i may want to use that 10:42:07 Deewiant: its FRRRPY 10:42:12 and then 10:42:15 after you compile your event network 10:42:16 with reactimations in it 10:42:18 you do 10:42:21 -- register handlers and start producing outputs 10:42:21 actuate network 10:42:24 you ACTUATE YOUR REACTIMATIONS 10:42:38 Deewiant: btw the library i am using... depends on your tries... you are famous... 10:42:58 it may or may not. involve the display of text. <-- i am still going to assume it's pornographic until you tell what it is. 10:43:14 Deewiant: (not reactive-banana) 10:43:15 oh dear 10:43:40 well it's PROBABLY NOT pornographic 10:43:46 O KAY 10:44:01 at least not in _all_ countries 10:44:15 what are the criteria for being pornographic 10:44:26 in denmark, it would probably be considered entirely appropriate for children. 10:45:28 in iran, it would probably be considered entirely appropriate as firewood. 10:45:37 elliott: So you'll blame me if it doesn't work? 10:46:55 Deewiant: yes 10:47:01 Great 10:47:06 Deewiant: (its GPipe) 10:47:17 Deewiant: (it also uses Vec which means the type errors are really confusing :( ) 10:55:38 -!- monqy has quit (Quit: hello). 10:56:54 ?hoogle ThreadId -> IO () 10:56:54 Control.Concurrent killThread :: ThreadId -> IO () 10:56:54 Control.OldException throwDynTo :: Typeable exception => ThreadId -> exception -> IO () 10:56:54 Control.Concurrent throwTo :: Exception e => ThreadId -> e -> IO () 11:01:58 ?hoogle delete 11:01:59 Data.HashTable delete :: HashTable key val -> key -> IO () 11:01:59 Data.IntMap delete :: Key -> IntMap a -> IntMap a 11:01:59 Data.IntSet delete :: Int -> IntSet -> IntSet 11:02:00 ?hoogle remove 11:02:00 Data.Graph.Inductive.Monad.IOArray removeDel :: IOArray Node Bool -> Adj b -> IO (Adj b) 11:02:00 System.Directory removeDirectory :: FilePath -> IO () 11:02:00 System.Directory removeDirectoryRecursive :: FilePath -> IO () 11:02:38 ?hoogle exterminate 11:02:38 No results found 11:02:40 :( 11:02:48 ?hoogle eviscerate 11:02:48 No results found 11:05:09 ?hoogle obliterate 11:05:10 No results found 11:06:51 http://holumbus.fh-wedel.de/hayoo/hayoo.html#0:obliterate 11:07:35 darcs and wumpus both sound appropriate 11:09:52 obliterate is the thing that permanently removes a patch from a repository 11:09:58 scary stuff :) 11:10:15 *everyone gasps and puts hands to their mouthes* 11:10:21 which vcs are we talking about? 11:10:29 in perforce, obliterate removes a file, not a patch 11:10:37 coppro: dunno, maybe you could look a single line up to find out 11:10:44 it rewrites all the vcs history to remove all mention of that file 11:10:44 also who the fuck uses perforce 11:10:53 elliott: big companies 11:11:08 coppro: i know 11:11:21 i like how perforce is terrible in every way, that's a good thing about perforce 11:11:58 Perforce is a precursor to modern dvcs 11:12:12 bullshit, perforce is centralised 11:12:31 that's why I said precursor 11:12:38 then so is sccs 11:12:57 I don't know about sccs specifically, but I suspect not in the sense that I mean 11:13:33 perforce's changelists allow for easy communication of small groups of changes in a manner similar to a dvcs 11:14:03 Well, I've just worked out how to do lambda calculus in VB.NET 11:14:07 other similarities perforce has to dvcses: it has files; it has commands 11:14:15 also, it uses an alphabet 11:14:22 total precursor 11:14:48 elliott: okay I'm guessing you actually have no fucking clue how perforce works 11:15:08 i'm guessing you're experiencing stockholm syndrome :) 11:15:19 ... what 11:15:36 so what's bad about perforce exactly 11:16:41 Patashu: It tracks changes at a file level; it is centralized; it is proprietary 11:17:20 Well, I've just worked out how to do lambda calculus in VB.NET <-- wait, should we cheer or boo now? 11:18:10 You could just ignore it 11:18:19 Taneb: not physically possible 11:18:20 INCONCEIVABLE 11:18:39 Or wish VB.NET luck in its slow progress to becoming a useable programming language 11:19:15 i actually recall that some people think it does some things better than C# 11:19:33 It was the first programming language I learnt 11:19:36 mind you i don't actually know either, just following the hivemind... 11:20:03 -!- GreaseMonkey has quit (Remote host closed the connection). 11:22:07 hi oerjan................... 11:22:16 -- Typeable instances, yikes! 11:22:16 -- Also, these instances are wrong, but I don't care. 11:22:16 instance Typeable WX.EventKey where 11:22:16 typeOf _ = mkTyConApp (mkTyCon "WX.EventKey") [] 11:22:16 instance Typeable WX.EventMouse where 11:22:17 typeOf _ = mkTyConApp (mkTyCon "WX.EventMouse") [] 11:22:57 that's the function which is being deprecated, isn't it 11:23:18 which function 11:23:25 mkTyConApp 11:23:30 huh, why? 11:23:41 elliott: also "Dr. Who" in the credits :( 11:23:48 "My understanding is the part that will be changing in future versions of GHC is that you should use a different function, mkTyCon3, which takes the package name, module name, and type name as separate arguments." 11:23:49 ah 11:23:56 yep 11:24:07 coppro: the writers and producers are much less anal about the show than the fans :P 11:24:19 coppro: see also: every script was titled "Doctor Who and the X" 11:24:24 elliott: "were" 11:24:26 oerjan: that does seem saner... 11:24:41 coppro: they're anal now? 11:25:13 they are more careful now 11:26:16 oerjan: good news....i think i cna....extricate the glut 11:26:45 elliott: that sounds like a somewhat painful procedure. do you have enough anesthetics? 11:26:55 i dont know.,, but i do have teh world 11:27:56 Doctor Who and the furbies 11:28:50 im a furby 11:29:21 google suggest correcting it to "furies". not that that exists either. 11:29:25 *s 11:29:48 its furbys ur prlaurl wrong 11:29:57 oh 11:30:26 "A Furby (plural Furbys or Furbies) was [...]" 11:30:33 SHUT UP IM EXPERT 11:31:37 oh that monqy slipe aaway, 11:31:45 help im having trouble extricating 11:35:36 "GLFW doesn't work well with GHC threads, forkIO or threadDelay. So avoid them if you can. 11:35:37 " 11:35:37 ugh 11:36:14 seriously? 11:36:18 so what can you use it with 11:36:21 it's probably the usual "must be called from the main thread" thing? 11:36:24 -!- clog has joined. 11:36:30 (non-portable) native threads 11:36:32 its understandable it just sucks 11:36:38 http://www.reddit.com/r/science/comments/j5sdo/electrical_engineers_at_duke_university_have/c29f9o6 there should be a language called cross-talk 11:36:48 cross talk: 11:36:54 there's a physical board of objects 11:36:58 objects have to be very close to talk 11:36:58 ??? 11:37:12 Whatever happened to string theory? (self.askscience) 11:37:20 -!- boily has joined. 11:37:20 Whatever happened to Robot Jones? 11:37:49 string theory is just waiting for us to develop a galactic empire powerful enough to actually _test_ it, duh 11:38:03 what's the collatz conjecture waiting for then? 11:38:23 oerjan: wait, string theory has tests? :) 11:38:58 I wish elliottcable would shut the fuck up whenever I talk in #haskell. 11:39:12 I get it, you want my nick; you've already offered to pay me for it, and I've named a price, so pay up or shut up. 11:40:17 elliott: well there was a test recently which might have been relevant to _some_ string theories, about whether photons change polarization over huge cosmic distances. alas nothing unexpected was found. 11:41:03 that was also relevant to loop quantum gravity iirc 11:41:46 and of course the idea is presumably that we can find some relevant tests once we can create black holes and stuff at will... 11:42:19 right. you get right on that, then. 11:42:20 -!- azaq23 has joined. 11:42:37 new she version, let us all dance: \o/ 11:42:38 | 11:42:38 >\ 11:42:39 elliott: soon as we got that galactic empire, 'guv 11:44:30 Is it possible to send messages by quantum entanglement? 11:44:59 Taneb: No. 11:45:03 Taneb: No. No. No. No. 11:45:03 Taneb: No. 11:45:07 Taneb: No. No. No. 11:45:08 And, 11:45:10 Taneb: No. 11:45:13 Patashu: "Mathematics is not yet ready for such problems." -- Paul Erdős 11:45:23 Well, that sucks, in the scheme of things 11:45:43 Taneb: Yes, the inability to go faster than light sucks a bit. 11:46:10 * elliott forks GPipe. 11:46:14 But no matter is moving faster than light! 11:46:22 Only information! 11:46:27 Then we can test that paradox! 11:46:32 And solve the halting problem! 11:46:44 otoh they've found P and CP violation, why not lorentz invariance violation 11:47:42 Here comes the rainm 11:48:07 Taneb: it is an incredibly common misconception that quantum entanglement can cause information to be propagated faster than the speed of light. 11:48:08 it is not so. 11:48:17 Taneb: you're british, that's not even news 11:48:32 Deewiant: Man, I would be downright offended as GPipe's dependency on list-tries if I were you -- it simultaneously uses Data.HashTable! 11:48:43 It was a statement of truth 11:48:46 Rather than news 11:48:51 O KAY 11:48:52 Olds, if you will 11:49:17 Nothing wrong with using Data.HashTable if that's what you need 11:50:36 Deewiant: I seem to recall that Data.HashTable is strongly deprecated. 11:50:47 Deewiant: You may be thinking of the http://hackage.haskell.org/package/hashtables version. 11:50:52 Which is not the base Data.HashTable module. 11:51:05 v Pravde net izvestiy, v Izvestiyakh net pravdy 11:51:10 Actually I didn't even know about that 11:51:17 Data.HashTable doesn't say it's deprecated 11:52:01 Deewiant: Well, I know that people who use HashTable are yelled at :-) 11:52:14 Probably because they don't have a good reason for using it 11:52:28 http://gregorycollins.net/posts/2011/06/11/announcing-hashtables is pretty biased, obviously, but comes down to "lol the structure sucks". 11:52:51 /home/elliott/Code/GPipe/src/Resources.hs:124:62: 11:52:51 No instance for (Data.ListTrie.Base.Map.Map 11:52:51 Map (ShaderKeyNode, [Int])) 11:52:51 arising from a use of `TrieMap.lookup' 11:52:53 Deewiant: This your fault? 11:53:17 Gah, the GitHub commit is older than the targz 11:54:13 elliott: i thought the hashtable implementations had been greatly improved 11:54:18 oerjan: in base? 11:54:20 i was unaware 11:54:23 but maybe it hasn't reached that module 11:54:28 elliott: Don't think so, no 11:55:05 elliott: i dunno, but why wouldn't they replace the base version if there are improvements... 11:55:50 oh there was this GC card marking thing, which presumably helps for all implementations... 11:56:05 but i guess that's old news now 12:01:30 hahahaha wow 12:01:33 the hierarchical layout of this package 12:01:34 is constructed 12:01:37 entirely from the hierarchical packages 12:01:41 importing and reexporting flat-hierarchy packages 12:01:42 like 12:01:46 Graphics.GPipe.FrameBuffer 12:01:47 is just 12:01:50 import OutputMerger 12:01:54 with a bunch of re-exported stuff 12:01:56 from that module 12:02:00 beautiful 12:03:08 -!- augur[sleep] has changed nick to augur. 12:07:25 dear GOD this code is horrible 12:10:01 extensions: ParallelListComp 12:10:02 MultiParamTypeClasses 12:10:02 NoMonomorphismRestriction 12:10:02 ScopedTypeVariables 12:10:02 FlexibleContexts 12:10:02 FlexibleInstances 12:10:04 EmptyDataDecls 12:10:06 GeneralizedNewtypeDeriving 12:10:08 TypeFamilies 12:10:11 wtf is that shi 12:10:12 TypeOperators 12:10:14 are you kidding me 12:10:14 fuck haskell 12:10:25 "And the LORD heard Elliott, and He smote the code with fire and obliterated it from the world. Then He got annoyed when elliott complained of his burning computer." 12:10:28 Patashu: this has nothing to do with haskell 12:10:36 and those are all reasonable extensions 12:10:40 i'm complaining about the way they're being used 12:32:10 Deewiant: OK, seriously, how the heck could cabal compile a module, but with all the same extension flags set, GHCi be unable to load it because of a missing list-tries instant? 12:32:11 instance 12:33:29 list-tries uses CPP, maybe that's being somehow problematic? 12:33:43 Although that shouldn't cause that kind of error 12:33:44 So beats me 12:35:01 Deewiant: I sure hope it isn't recompiling list-tries when I load it in ghci 12:35:05 ghc --make with the same flags also fails 12:35:34 Deewiant: Well, I do have to do "-hide-package monads-tf", so that Control.Monad.Reader imports correctly in the module I'm compiling 12:35:44 What's wrong with those extensions? 12:35:44 But I don't think there's any way for list-tries to observe this and fail to provide an instance because of it 12:37:40 Sgeo: Nothing. 12:39:21 elliott: WFM 12:39:37 * Sgeo wonder how much that lucid dreaming sleeping mask is 12:40:01 Deewiant: I've got a conveniently-clonable repository that proves it doesn't WFY :P 12:40:14 Darn 12:40:39 git://github.com/ehird/GPipe.git :-P 12:40:51 (src/Resources.hs, to be specific; warning: hideous) 12:40:55 * Sgeo has no desire to muffle sounds at night 12:41:04 What if there's an emergency of some sort? 12:41:04 Sgeo: wat 12:41:32 http://www.sleepmaster.us one of my Google results. Also, not exactly what I'm googling for anyway 12:42:15 http://www.amazon.com/Dreamer-Lucid-Dreaming-Induction-Device/dp/B003EH4V8I/ref=sr_1_2?ie=UTF8&qid=1312288764&sr=8-2 ok, that's a bit expensive 12:42:25 well duh, it does induction 12:42:36 as oerjan can tell you, that's very difficult. 12:42:59 lol 12:44:07 -!- TeruFSX has joined. 12:44:38 "Proof by Engineer's Induction: Suppose P(n) is a statement. 1. Prove true for P(1). 2. Prove true for P(2). 3. Prove true for P(3). 4. Therefore P(n) is true for all n." 12:45:10 elliott: 12:45:11 Warning: This package indirectly depends on multiple versions of the same 12:45:11 package. This is highly likely to cause a compile failure. 12:45:11 package GPipe-1.3 requires containers-0.3.0.0 12:45:11 package list-tries-0.4.1 requires containers-0.4.0.0 12:45:27 (cabal configure) 12:45:39 Deewiant: Hmm. 12:45:58 Oh, duh. 12:46:02 build-depends: containers >= 0.3 && < 0.4, 12:46:03 Bad. 12:46:25 Deewiant: Still -- not sure how that should change my ghci results. 12:46:31 Deewiant: I mean, it's not looking at the cabal file. 12:46:59 And it works with the cabal compile, anyway ;-) 12:47:25 elliott: wai 12:47:46 Deewiant: So, erm, wait, list-tries' containers dependency is a bit wide-ranging 12:47:49 elliott: So what was the issue, 'cabal build' works but 'ghci src/Resources.hs' doesn't? 12:47:55 Is it meant to pull in point-three or point-four 12:48:09 Deewiant: cabal build works but ghc --make -hide-package monads-tf (ALL THE EXTENSION FLAGS) src/Resources.hs doesn't 12:48:14 (Similarly for s/ghc --make/ghci/) 12:48:56 It's meant to pull in the latest you've got 12:49:17 It worked with point-two until last september when I pulled out the workarounds for it 12:51:24 Heh 12:51:34 Anyway, I don't know what cabal does with that multiple versions stuff 12:52:09 I can imagine it building everything against 0.3 and then ghci looking only at list-tries's dependency on 0.4 (since that's what it was built against) and that not working then 12:52:12 Or something 12:52:25 Eurgh 12:52:29 But why would it do that 12:52:34 There is no multiple versions stuff in the source 12:52:38 Like said, I don't know what it does 12:52:38 That's purely in the cabal file 12:53:09 This is going to make my modifications quite difficult :) 12:53:13 'cabal build' would grab whatever it thinks is fine, and I don't know what it thinks is fine if that depends on 0.3 but its dependencies on 0.4 12:53:41 'ghc'/'ghci' would look at 'ghc-pkg describe list-tries' (and for all the other dependencies) and go 'ah, 0.4' 12:53:46 elliott@katia:~$ ghc-pkg list | grep containers 12:53:47 WARNING: there are broken packages. Run 'ghc-pkg check' for more details. 12:53:47 containers-0.4.0.0 12:53:47 containers-0.3.0.0 12:53:47 ah hm 12:53:57 $ ghc-pkg check 12:53:57 There are problems in package hashed-storage-0.5.7: 12:53:57 dependency "binary-0.5.0.2-b471fd4ae9e6a992eed4cf652dba019b" doesn't exist 12:53:57 The following packages are broken, either because they have a problem 12:53:57 listed above, or because they depend on a broken package. 12:53:58 hashed-storage-0.5.7 12:54:00 darcs-2.5.2 12:54:01 ah hm 12:54:04 what is going on ;_; 12:54:06 That helps as well :-D 12:54:22 * elliott installs that binary... 12:54:23 But I guess it shouldn't matter since those aren't being used here 12:55:31 $ ghc-pkg check 12:55:32 There are problems in package list-tries-0.4.1: 12:55:32 dependency "binary-0.5.0.2-67c6c6f05b738dc39b1e1d3f0e7a53aa" doesn't exist 12:55:32 The following packages are broken, either because they have a problem 12:55:32 listed above, or because they depend on a broken package. 12:55:32 list-tries-0.4.1 12:55:34 GPipe-1.3 12:55:36 GPipe-TextureLoad-1.0.2 12:55:38 Deewiant: help 12:55:42 Hmm 12:55:44 help :D 12:55:47 :-D 12:55:56 $ cabal install binary-0.5.0.2-67c6c6f05b738dc39b1e1d3f0e7a53aa 12:55:56 Resolving dependencies... 12:55:56 No packages to be installed. All the requested packages are already installed. 12:55:56 If you want to reinstall anyway then use the --reinstall flag. 12:56:02 ok it wants 12:56:03 two different hashes 12:56:05 of the same library 12:56:17 cabal install --reinstall binary-0.5.0.2 and everything that depends on it 12:56:25 How do I know what depends on it :P 12:56:29 ghc-pkg check ;-P 12:56:46 I thought there was no Cabal. :/ 12:56:48 Weeeeeeeeeeeeeeeeeeeeeell 12:56:50 The following packages are broken, either because they have a problem 12:56:50 listed above, or because they depend on a broken package. 12:56:50 list-tries-0.4.1 12:56:50 GPipe-1.3 12:56:50 GPipe-TextureLoad-1.0.2 12:56:56 Deewiant: It is missing at least hashed-storage 12:57:00 Because of the different hash 12:57:02 Or 'ghc-pkg dot' if you like 12:57:15 How did my packages get so broken :/ 12:57:19 elliott: Well, you only need to reinstall the ones that depend on the missing hash :-P 12:58:08 My alternative solution that I have sometimes applied is rm -rf ~/.cabal/lib 12:58:10 Hmm, it occurs to me that I've never used GraphViz before 12:59:32 Wow 12:59:35 dot sure does fail on ghc-pkg 13:00:05 Fifteen thousand by one thousand three hundred 13:00:08 The recommendation was ghc-pkg dot | tred | dot -Tpdf >pkgs.pdf 13:00:12 Did you run tred? 13:00:21 Who turned red? 13:00:30 elliott soon, if not already 13:00:47 Deewiant: That helps... a bit 13:01:38 Deewiant: There appears to be no binary on this graph 13:01:53 Oh, there it is 13:02:24 Deewiant: Apparently list-tries just depends on containers and dlist 13:02:46 It should depend on binary and base as well 13:02:57 Well, it doesn't :-) 13:03:00 I guess base is omitted 13:03:10 * elliott tries reinstalling binary, list-tries, GPipe, GPipe-TextureLoad 13:03:17 ghc-pkg describe doesn't, it seems strange that ghc-pkg dot would 13:03:27 You sure it's not because of the tred 13:03:35 Might be 13:03:38 What does tred do 13:03:51 I guess not because containers doesn't depend on binary 13:03:58 tred - transitive reduction filter for directed graphs 13:04:13 But bytestring depends on binray 13:04:23 And I bet something that list-tries depends on depends on binary :P 13:04:25 Or GPipe 13:04:26 I don't know 13:05:05 Now to recompile binary, hashed-storage, and darcs 13:05:07 base doesn't 13:05:15 containers depends only on array and base, which don't 13:05:23 dlist depends only on base, which doesn't 13:06:34 GPipe depends on everything, though :-P 13:12:14 $ ghc-pkg check 13:12:14 There are problems in package list-tries-0.4.1: 13:12:14 dependency "binary-0.5.0.2-67c6c6f05b738dc39b1e1d3f0e7a53aa" doesn't exist 13:12:14 The following packages are broken, either because they have a problem 13:12:14 listed above, or because they depend on a broken package. 13:12:14 list-tries-0.4.1 13:12:16 GPipe-TextureLoad-1.0.2 13:12:18 GPipe-1.3 13:12:20 JESUS FUCKING CHRIST 13:12:22 How did my packages get so broken :/ <-- sounds like augustss's (?) "butterfly" conflicts? 13:12:23 It's literally toggling between those two as I reinstall binary 13:14:29 oerjan: got a link? 13:14:40 Oh well, I don't have _that_ many packages installed 13:15:01 Installing darcs, GPipe, and cid-state should get most of them 13:15:03 http://cdsmith.wordpress.com/2011/01/17/the-butterfly-effect-in-cabal/ presumably 13:15:05 elliott: if you aren't having a conflict within a single application, you might try cabal-dev 13:15:19 yeah I've considered cabal-dve 13:15:33 Oh I need to install hscolor too 13:15:35 Argh 13:15:40 Which needs to be done bootstrappingly 13:15:44 elliott: "What [cabal] does is certainly… suboptimal. When you build twitclient, it will recompile twittertags against parsec-2.1, which will break superblog. If you then reinstall superblog to fix it, Cabal will recompile twittertags against parsec-3.1, and break twitclient… and so on, ad infinitum." 13:15:48 Because I'm OCD enough to die if hscolor doesn't get hscolor documentations 13:15:54 Deewiant: BUT THEY'RE THE _SAME_ _VERSION_ 13:16:00 How can the same version have two hashes???????????? 13:16:15 Dependenciesbase (<2.0), bytestring (≥0.9) or 13:16:15 base (≥2.0 & <2.2) or 13:16:15 base (≥3 & <3.0), bytestring (≥0.9) or 13:16:15 array, base (≥3.0), bytestring (≥0.9), containers 13:16:16 Argh 13:16:17 That's how 13:16:18 FML 13:16:34 What's that, Binary.cabal? 13:17:08 Well, from Hackage, but yeah 13:17:23 So different hashes because different dependencies 13:17:26 Although, wait 13:17:30 "≥3 & <3.0" 13:17:31 Deewiant: right 13:17:32 Right, so the butterfly effect in this case is binary getting built against different stuff 13:17:34 There's no way that one is getting selected 13:17:38 I guess it's bytestring 13:17:41 Argh 13:17:47 I guess I should nuke ~/.cabal and ~/.ghc, right? 13:17:56 And then install binary manually, I guess 13:17:59 Argh 13:18:05 I don't even know why list-tries got built against different stuff 13:18:12 I wouldn't nuke .cabal unless you save .cabal/config 13:18:19 Is it because GPipe has that old containers dependency? 13:18:23 containers (0.3.*) 13:18:32 And binary just depends on "containers" 13:18:38 binary is old :-P 13:18:49 That doesn't explain anything 13:19:01 It somewhat explains its dependency style 13:19:18 GPipe pulls in list-tries (which needs containainers and is ok with point three), and also pulls in containers which MUST be zero point three; and binary gets pulled in 13:19:24 But we can't use a binary built against containers zero point four 13:19:30 So cabal builds a binary against containers zero point three 13:19:33 Links list-tries and GPipe against it 13:19:34 Right? 13:19:56 So if I change GPipe's containers dependency to "containers >= 0.4 && < 0.5,", everything should be fine 13:20:02 Sounds plausible 13:20:06 Deewiant: Anyway if binary is old, why do you depend on it :-P 13:20:17 Somebody sent me a patch 13:20:27 "Hey, depend on this" and I was like "ok" 13:20:38 (They wanted Binary instances) 13:20:43 It would simplify my life were you to remove that dependency :-P 13:21:00 I think a lot of people use Binary for stuff 13:21:08 So make list-tries-binary? 13:21:17 With the instances? :-P 13:21:19 Yes. 13:21:23 That's the "standard" thing, at least. 13:21:33 Howso 13:21:56 Deewiant: Whaddya mean 13:22:06 There's plenty of "instance glue" packages out there 13:22:34 Just put them in Data.ListTrie.Binary 13:22:36 Aren't orphan instances supposed to be bad 13:22:47 Deewiant: That's a controversial opinion :-P 13:22:54 They work fine 13:23:18 And in this case it's pretty unambiguous 13:23:27 Because you'd only want one instance of Binary 13:23:32 And it'd be "blessed" 13:24:37 Fair enough I guess 13:24:58 As you may have gathered I'm forking GPipe to s/GLUT/GLFW-b/ 13:25:04 And hopefully reduce the ugly Vec shit 13:25:19 So my official opinion in that capacity is that I hate your binary dependency :-) 13:25:42 -!- Taneb has quit (Read error: Connection reset by peer). 13:26:42 elliott: btw i realized that i might be able to reorganize if (!a) { a = C1*b+D1; b=0; } as b = C1*b+D1; if (a) { b = (b-D1)/C1; } modulo some moving around, so the 3-cell attempt is not quite dead yet. 13:27:00 oerjan: woot 13:28:53 -!- oerjan has quit (Quit: Later). 13:29:43 elliott: Too bad, the Set types need the instance for an unexported type 13:30:24 Deewiant: Eh? 13:30:48 As in: I'm not sure the instances can be defined with just the public API 13:31:02 Then your API is not good enoug :P 13:31:03 enough :P 13:31:35 I mean, if someone can't implement their own alternate binary serialisation for some other package with your aPI, that kind of sucks 13:40:49 Haha, shit, I clobbered cabal-install 14:01:37 Deewiant: Hooray, now it works 14:08:10 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 14:08:56 It is ridiculous how many maps this thing has 14:08:59 Just to support multiple windows 14:09:02 Does anyone use multiple windows 14:09:05 Even with GLUT 14:11:03 -!- MSleep has changed nick to MDude. 14:17:57 -!- Taneb has joined. 14:18:29 -!- Patashu has quit (Ping timeout: 240 seconds). 14:21:54 Deewiant: Do you know of a Haskell reformatter tool, GPipe's code is really right-leaning and just hideous 14:30:29 ?hoogle (a -> m ()) -> Maybe a -> m () 14:30:29 Data.Foldable traverse_ :: (Foldable t, Applicative f) => (a -> f b) -> t a -> f () 14:30:29 Data.Foldable mapM_ :: (Foldable t, Monad m) => (a -> m b) -> t a -> m () 14:30:29 Prelude (=<<) :: Monad m => (a -> m b) -> m a -> m b 14:32:08 where takeOne a = case Map.lookup w a of 14:32:09 Nothing -> Left $ Map.elemAt 0 a 14:32:09 Just t -> Right t 14:32:09 Sigh 14:34:53 -!- lament has joined. 14:42:49 Does that just lookup again if the lookup failed? :-P 14:43:11 Oh, no, 0 14:44:56 Deewiant: I thought the (Map GLUT.Window TextureObject) would translate to (Maybe TextureObject) 14:45:00 Apparently not 14:45:18 I would think it'd just be TextureObject, but, haha no, because it treats the Left and Right results differently there 14:45:29 In that the Right result just sets the textureBinding but the Left result initialises everything 14:45:34 I have no clue what it's actually trying to do 14:49:02 -!- copumpkin has joined. 14:49:08 -!- CakeProphet has joined. 14:49:08 -!- CakeProphet has quit (Changing host). 14:49:08 -!- CakeProphet has joined. 15:21:12 -!- lambdabot has quit (Ping timeout: 252 seconds). 15:32:15 Is there a way to tell git you moved a file after-the-fact? 15:33:01 What I tend to do is git rm the old location and git add the new 15:33:16 Maybe there's a better way 15:34:26 Doesn't that make it not record it as a rename 15:34:47 It should detect it, if you check git status it should say it was renamed 15:37:48 Okay 15:37:57 Stupid heuristics 15:43:00 Hmm, wonder if I should migrate it to another vector/linear algebra library 15:43:03 vect or hmatrix or repa or something 15:47:15 -!- azaq23 has quit (Ping timeout: 252 seconds). 15:55:59 Move it back and then "git mv" it for reals? 15:57:09 That's the Boering 747 solution. 15:57:40 Strictly speaking that's not how you "tell git you moved a file after-the-fact" 16:04:19 The Vec library looks like how my code ends up before I realise I've made a terrible mistake and abandon it. 16:11:04 -!- lament has quit (Ping timeout: 252 seconds). 16:11:20 -!- Nisstyre has quit (Ping timeout: 264 seconds). 16:13:46 -!- derrik has joined. 16:24:13 -!- Nisstyre has joined. 16:31:35 -!- elliott has quit (Remote host closed the connection). 16:32:18 -!- elliott has joined. 16:37:29 -!- MigoMipo has joined. 17:05:41 copumpkin: do you have a link to that generalised static-length vector fold you linked a while ago? it was on hpaste 17:05:58 foldr is easy to write 17:06:01 foldl is tougher 17:06:06 should be on hpaste though 17:06:20 http://hpaste.org/41453 17:07:02 thanks 17:10:31 hmm, it'd be nice if the VecFlip stuff could be abstracted out somehow... 17:12:10 mapV f = unCev . foldrV (\x xs -> f x -: xs) (Cev V) 17:12:14 I guess that's good enough 17:13:06 -!- augur has quit (Remote host closed the connection). 17:28:28 -!- Taneb has quit (Ping timeout: 260 seconds). 17:32:31 OK, the Museum of Scotland is RUINED FOREVER. 17:45:54 Although it turns out that antimony is really pretty. 17:46:03 Why do I only fall for highly toxic elements? 17:49:33 -!- sebbu has quit (Ping timeout: 246 seconds). 17:50:29 -!- sebbu has joined. 17:56:13 -!- sebbu has quit (Read error: Connection reset by peer). 17:56:38 -!- sebbu has joined. 17:56:39 -!- sebbu has quit (Changing host). 17:56:39 -!- sebbu has joined. 18:09:20 -!- pingveno_ has joined. 18:10:11 -!- pingveno_ has quit (Client Quit). 18:10:33 -!- pingveno has joined. 18:17:56 -!- Taneb has joined. 18:19:13 Well, thanks to Scandinavia in the World, I've started swearing in vilely mispronounced Finnish 18:26:20 s/in/and/ 18:26:32 Scandinavia outside the World. 18:26:50 I type pseudophonetically 18:26:55 s/s\/in/s\/\\ Scandandavia, sounds funky. 18:37:36 I really should stop typing phonetically 18:39:09 http://www.artchive.com/artchive/m/magritte/telescop.jpg 18:40:18 Nice 18:40:47 next to the random place i found it on a forum someone said "Note that you can only see when you look through the glass. I saw this one in person, and it was stunning. There's something frightening about the black outside. " 18:45:18 Parting channels in Quassel is a bit more aggrivating than it needs to be 19:16:26 elliott, Phantom_Hoover update 19:18:28 So what does the updated Phantom_Hoover do that the old one didn't? 19:19:11 Backflips. 19:19:22 ...I read MSPA too, guys 19:20:00 Taneb: You don't count as human, though. 19:20:10 EXILES 19:20:27 THE SUSPICIOUS LACK OF IRONY IN THE UPCOMING REVALATION 19:20:38 You misspelled revelation. 19:20:45 I misspell nothing. 19:21:04 Speech is the natural form of the language, spelling is based on speech 19:21:38 Taneb: both are natural forms of language.. 19:22:41 your spelling may suck so bad that it cannot be considered language.. then it's not natural 19:24:11 Taneb, welcome to the English language! 19:25:33 ohai 19:31:39 -!- monqy has joined. 19:32:46 * pikhq_ is tempted to write a partial git implementation. Anyone think of reasons I shouldn't? 19:33:02 There is absolutely no reason to? 19:33:06 how bothersome would it be 19:33:08 Taneb: Aside from that. 19:33:22 monqy: Actually, the core semantics of git seem utterly *simple*. 19:33:39 It's just a fairly simple immutable data structure. 19:35:31 I'll help, if I can 19:38:00 -!- derrik has left. 19:38:19 monqy: hi i forked gpipe into glfwpipe 19:38:22 also bye 19:39:26 :o 19:41:55 However, I probably will not be able to help 19:42:09 I'm here to make myself feel stupis 19:42:20 s/stupis/stupid/ 19:43:08 -!- elliott has quit (Ping timeout: 264 seconds). 19:57:08 -!- oerjan has joined. 19:59:20 I feel like changing the Numberwang spec so its less easily proved Turing Complete 20:00:39 Deewiant: Do you know of a Haskell reformatter tool, GPipe's code is really right-leaning and just hideous 20:00:58 there was a reddit thread about this just last week 20:01:06 what does right-leaning mean help 20:01:30 monqy: too much nesting of indentation levels, i assume 20:01:44 Fascist? 20:02:19 http://www.reddit.com/r/haskell/comments/j31f4/is_there_a_haskell_code_formatter/ 20:02:31 (includes link to stackoverflow) 20:05:02 Well, thanks to Scandinavia in the World, I've started swearing in vilely mispronounced Finnish 20:05:14 perkele hakkapellittä! 20:05:31 I'm assuming perkele isn't pronounced perk-ell-ay 20:05:53 (i'm not sure if that ä should be an a) 20:06:05 perky-lay 20:06:14 Taneb: i think that's about as close as you could expect from an englishman 20:06:32 well the perk might need some work 20:06:42 oerjan: "Hakkapellittä" -- "without a hakkapelti". ITYMM "hakkapeliitta". 20:06:53 fizzie: quite possibly 20:07:12 fizzie: but then it was supposed to be vilely mispronounced, anyway 20:07:13 It's not much of a swearword really. 20:07:17 Taneb: http://www.youtube.com/watch?v=u1PjDNWFOAc 20:07:41 fizzie: maybe not, but it sounds like one to a norwegian 20:07:54 dæven hakke og skalpere 20:08:19 I managed to read that as "Does Haskell have Shakespeare?" 20:08:22 Don't ask how 20:09:11 ...Does Haskell have Shakepeare? 20:09:38 except for replacing the "dæven" by a euphemism, i think that's the signature swearing style of an old norwegian comic character, "obersten" 20:10:10 Shakespeare's page only has C and Perl implementations, no Haskell there. 20:10:35 A challenge! For a better programmer than I 20:11:27 Taneb: i think your "than I" is actually grammatically incorrect in that position *MWAHAHAHA* 20:11:43 you can use any finnish word as a swear word (as long as no-one knows finnish) 20:11:48 http://www.youtube.com/watch?v=b82jMIkZMv0#t=34s for example 20:12:15 (it's "for me", so it should be "for ... than me") 20:12:17 Olen käsine! Ei, olen kaksi käsineet! 20:12:42 s/et!/ttä!/ 20:12:53 Or "kahdet käsineet". 20:12:57 otoh you _could_ think of it as eliding a final "am". hm... 20:13:49 "I am a glove! No, I am two gloves!" is my standard foreign phrase 20:14:26 Then it's "kaksi käsinettä"; the "kahdet käsineet" variant would be "two pairs of gloves". 20:14:44 Eg er ein hanske! Nei, eg er to hanskar! 20:14:53 (there's your nynorsk) 20:15:04 Or "two sets of gloves" in general, but I guess you can assume they're pairs 20:15:32 hmm, I was about to write the swedish, but half-way through realized I was writing it in english 20:15:54 Jag är en handske! Nej, jag är två handskar! 20:16:09 Though I think "hanska" is perhaps closer to "glove" maybe. Or a slightly less formal term anyway. (No points for guessing from where *that* word comes from.) 20:16:45 I think it's just the more informal variant 20:17:15 Wiktionary translates "käsine" as "any garment used to protect a hand, such as glove or mitten", while hanska/hansikas is only "glove". 20:17:41 And indeed I can imagine a non-glove "käsine". 20:18:06 swedish has "vantar" for mittens and less formal gloves 20:18:21 "vanttuut" 20:18:24 less formal or technical, in case of e.g. surgical gloves 20:18:46 Vanttuut ja lapaset. 20:19:29 "vanttuut /pl/ 1. (dialectal) One ore more pairs of knitted mittens or mitts. Singular form vantus is only rarely used." --wiktionary. Oo, it's quite comprehensive. 20:20:05 vott are you talking about 20:20:43 Laughing at this headline: http://www.bbc.co.uk/news/technology-14370878 20:20:55 though we actually call mittens something like thumbmittens in swedish 20:21:36 Ég er hanska! Nei, ég tvær hanska! 20:22:14 "The report has sparked anger from IE supporters, who have threatened AptiQuant with legal action. 20:22:16 For you Íslendingar 20:22:17 " 20:22:48 NihilistDandy: are you from iceland? 20:22:52 Not even a little 20:22:57 I just studied it for a while 20:23:40 I quite like it, though 20:23:44 oerjan: Are you even allowed to quote things without following-up with a pun? 20:24:11 I think it started when the volcano was blowing up, and I wanted to learn how to pronounce its name properly 20:25:15 fizzie: i cannot comment on that, i may be involved in a relevant class action suit 20:25:30 My translation's probably a bit off, really :| 20:26:04 NihilistDandy: so from there you went to learning the whole language? wow... 20:26:25 olsner: I don't need a lot of motivation to learn a language :D 20:26:54 You could be the next Tolkein! 20:27:03 Tolkien, even 20:27:18 No, definitely Tolkein. 20:27:26 Who'd want to be Tolkien? 20:27:28 Also, I once tried to learn Elvish when I was like 8, but I got bored. 20:27:35 Taneb: What with him being dead? Not me. 20:27:42 might be missing an article for the "a glove" case there, but I don't know icelandic well enough to know if they use those the same way we do 20:27:44 dammit i may no longer be the most awesome /// programmer 20:27:54 looks like it's saying "I am glove" 20:28:04 I AM GLOVE 20:28:08 I AM TOO GLOVE 20:28:35 (that felt like it needed saying in all-caps) 20:28:42 Too glove for my shirt, like the popular song goes. 20:29:15 IIRC articles are a bit different in Icelandic. 20:29:17 Je suis trop gants pour ma chemise? 20:30:03 I'm too gloves for my shirt. lol 20:30:13 Not just Tolkein, maybe the Tolkeist. 20:30:56 Tolkzwei? 20:31:21 Ég er hanska! Nei, ég tvær hanska! <-- isn't there an "er" missing in the last sentence? 20:32:00 Ég er of hanska fyrir skyrtu mína. 20:32:35 olsner: in any case istr icelandic has no indefinite article 20:34:03 oerjan: Good point 20:34:12 And I probably should have used tvö 20:34:31 Maybe. I can barely remember, anymore 20:34:34 NihilistDandy: if you come to the next bostonhaskell, there's an icelandic dude 20:34:41 copumpkin: Shweet 20:34:44 I'll have to brush up 20:34:46 -!- boily has quit (Ping timeout: 255 seconds). 20:35:01 Those leaves are getting annoying 20:35:02 Not a lot of use for Icelandic in the middle of nowhere where I am :D 20:36:40 I think you'd have to be in the exact same middle of nowhere as iceland to find a use for it :P 20:37:08 oerjan: wikipedia agrees with you 20:37:23 Iceland has a comparitive population with Northumberland 20:38:51 Iceland's awesome. I'd like to teach there 20:39:01 I'd like to teach Maths 20:39:29 i love the lava live and it loves me 20:40:22 Taneb: Me, too 20:40:37 But you said you want to teach Iceland! 20:40:42 Iceland is not Maths! 20:41:24 i've been wondering if icelandic makes up its own math terms, and up to what level there are enough icelanders to do it... 20:42:19 Sshh.. 20:42:22 copumpkin: you should ask the icelandic dude what zygohistomorphic prepromorphism is in icelandic 20:42:23 They may be listening in 20:43:07 oerjan: They probably just reuse old words. There's some language purity movement to replace all loanwords with native Icelandic equivalents 20:43:28 NihilistDandy: well it's that purity which makes it an interesting question, duh 20:43:29 There's one of those for English 20:43:43 oerjan: I'm still not clear on what zygohistomorphic prepromorphism is in English :/ 20:43:48 copumpkin: maybe he'll make one up on the spot 20:44:16 NihilistDandy: "zygohistomorphic prepromorphism". hth, and congratulations on speaking a rampantly stealing language. 20:44:18 oerjan: he'd probably just repeat it to me in english 20:44:37 zygohistomorfisk prepromorfism 20:44:37 oerjan: :/ 20:44:45 there, "translated" into swedish 20:44:54 Not quite what I meant, but I should have expected that 20:45:00 olsner: *+e and you've got the norwegian 20:45:17 -morfisme? 20:45:21 yeah 20:46:10 olsner: if it gets _really_ often used, maybe we'll change the z into an s. 20:47:16 oh, right, you do that funny respelling words the way they sound 20:47:54 olsner: well you changed the ph to f too 20:48:13 true 20:52:18 -!- zzo38 has joined. 20:52:33 Is the "clog" broken? 20:53:10 It's clogged 20:53:15 maybe it's too glove 20:53:26 Hang on.. 20:53:26 I'm too glove for this clog 20:53:42 Inform 7 docs? 20:54:21 -!- GreaseMonkey has joined. 20:55:43 -!- MigoMipo_ has joined. 20:56:47 What about Inform 7 docs? 20:56:57 You just reminded me of them 20:57:11 OK. 20:58:25 -!- MigoMipo has quit (Ping timeout: 258 seconds). 21:00:13 lol 21:00:51 english language would steal a word, and then if anyone else used it it would be called loaned from english 21:01:26 Worked out why I was reminded of Inform 7 docs 21:01:29 "Heatwave bone breaks clog hospital." 21:01:30 "whaddayamean, we stole it. it's ours now." 21:01:46 Finders keepers 21:23:40 -!- lambdabot has joined. 21:24:59 Is it too late to significantly change the Numberwang spec? 21:25:27 7 21:25:40 yes, they've already made many episodes of mitchell and webb with numberwang, too late to change now 21:25:55 Fair enough 21:26:18 But I was referring to the one of the four+ esoteric programming languages by that name that I invented 21:26:51 it is never too late 21:32:22 well if you invented four+ esoteric programming languages named numberwang i guess it won't really matter if you make one more. 21:32:35 Four have been invented 21:32:37 One by me 21:32:45 ah 21:32:46 As long as the total number of languages remains numberwang, all is well 21:32:56 One is undefined 21:33:12 One is useless, and is the only one thusfar implemented 21:33:20 !Numberwang 20 21:33:43 * NihilistDandy is checking his home game books 21:33:50 ye olde case sensitive bot 21:33:54 That's not numberwang 21:33:56 One is a rather lame BF derivative 21:34:10 !numberwang 20 21:34:12 That's numberwang! 21:34:16 Lies 21:34:35 Numberwang depends on more variables than a single number 21:34:56 Have you ever played the home edition? 21:35:13 No, but I was once in the studio audience of the show 21:35:34 http://www.youtube.com/watch?v=swV3E3HPQC4 21:42:10 I want 21:44:44 ikr 21:45:20 Is it possible to use Template Haskell to implement rulebooks-based programming like Inform 7 does? 21:46:21 Are duplicate definitions allowed in Haskell? 21:47:50 I believe so 21:48:35 um you cannot define the same identifier twice in the same scope 21:49:29 Even if the definitions are identical? 21:50:08 i don't recall it being allowed, so i would be surprised if it is supported 21:50:15 > let x = 3; x = 3 in x 21:50:16 Conflicting definitions for `x' 21:50:17 Bound at: :1:4 21:50:17 so, no. 21:51:51 OK. 21:52:26 How much do you know about Template Haskell, though? 21:52:39 Taneb: you've seen numberwang *LIVE*!? 21:52:40 i know almost nothing about it 21:52:42 -!- MigoMipo_ has quit (Read error: Connection reset by peer). 21:52:57 as i've never used it myself 21:53:20 it's for compile-time metaprogramming, afaik 21:55:17 There's probably a GHC extension that allows for conflicting definitions~ 21:55:51 olsner: Nah, that was a joke. Wish I hadd. 21:55:59 meh 21:56:17 joke == lie 21:56:38 there's OverlappingInstances but that's somewhat different (only applies to selecting which class instance to use for a type) 21:57:16 oh and there's something for records, i think? but they have to be defined in different modules. 21:57:37 and belong to different types. 21:57:59 Do you know, if it is allowed in Template Haskell, to have one $ command that will return something for use of the next $ command that is found if it can use it? 21:58:16 It would seem a bit difficult but I don't know much about it 21:58:43 zzo38: i don't know 21:59:09 maybe copumpkin knows, is the resident haskell expert now *evil cackle* 21:59:16 *he is 21:59:39 Can you compile Haskell codes into LLVM codes? I have read LLVM documentation it does suppports Haskell calling convention 21:59:52 (he just become a mod of reddit's haskell subreddit) 22:00:27 zzo38: Some people have been working on it 22:00:31 I do not know how mature it is 22:00:50 zzo38: haskell has an LLVM backend yes, and there's also i believe a package for using llvm's api from haskell 22:01:21 I am not looking for the package for using LLVM's API from Haskell, but thanks for information anyways 22:01:50 I do want to use LLVM's API from C, although I don't know everything about it 22:02:18 as for mature, i think the llvm backend is the recommended one now, and the gcc one has been deprecated 22:02:56 Can you use LLVM with the GHC extensions of Haskell? 22:03:14 well it's a backend for ghc... 22:03:49 Does it have any syntax for adding direct LLVM codes in a Haskell program? 22:03:50 i would assume it supports essentially everything ghc does 22:04:44 zzo38: hm i don't know if you can do that while compiling, there are so many stages 22:05:23 i think i saw a blog post about creating llvm code in a haskell program and then running it 22:07:58 Not what I am looking for, though. What it is, is if there is something for adding LLVM codes into a program similar to "asm" command in C, except using LLVM codes instead of native codes, and for Haskell instead of only with C 22:08:49 like inlining llvm into haskell? 22:08:56 So you want inlining 22:09:43 Yes 22:11:11 well i found an old reddit thread which doesn't look _that_ promising http://www.reddit.com/r/haskell/comments/cpiwm/ghc_llvm_backend_add_support_for_inline_assembly/ 22:14:09 given that you cannot currently even inline ghc _core_, i somewhat doubt it's possible to inline lower level stages 22:14:53 (Actually I would like also supporting inline LLVM codes in other programming languages too, including C and so on, is something like inline assembly codes but can be portable to different computers) 22:15:22 Aww, you can't inline Core? 22:15:25 sadface 22:17:36 NihilistDandy: there isn't currently a _parser_ for core afaiu 22:17:56 Ah 22:18:39 when i looked, i found a badly tested ghc-api function for compiling a module from the internal core representation in ghc 22:19:23 Computer Modern fonts doesn't seem to have lowercase Greek letters without italic 22:19:26 but according to the docs, that only has been tested for a single, whole module 22:20:24 mind you this is coincidentally the only looking into the ghc-api i've done, so i may not be the best person to ask :P 22:21:13 (i kept wondering why the reflection package wasn't implemented in core rather than the ridiculously convoluted portable oleg solution) 22:22:09 zzo38: i guess they're not much used in math 22:22:36 but you'd think there was something for writing text in greek 22:23:46 Of course a parameter file can be written so that it is not slanted, but it would still be italic style and also would still not be a standard file. 22:24:58 zzo38: http://stackoverflow.com/questions/6246310/inline-assembly-in-haskell may be relevant, although that too doesn't seem to allow putting anything directly in the haskell code 22:26:57 Can it be done, declare an external function and then write that function in LLVM telling it to be always inline, and then put the LLVM files together? 22:27:39 -!- Patashu has joined. 22:27:48 hm i don't know if that will work 22:28:15 (as in i don't know, not that i'm doubting it) 22:28:26 -!- nooga has joined. 22:28:28 hi 22:28:35 hi nooga 22:29:02 I'm looking for some digestive papers on category theory 22:29:45 sorry, we only have categorical papers on digestion theory 22:30:27 -!- azaq23 has joined. 22:30:28 and, so far, I've got some theoretical slides on digestion category 22:30:50 ic 22:37:00 * oerjan learns that there exists http://hackage.haskell.org/package/derp 22:37:20 How appropriate 22:38:22 the backronym looks plausible, i wonder if it was intentional... 22:40:23 I'm going for intentional 22:40:30 I'da called it DP 22:41:56 sadly there is no herp package yet 22:42:54 Heroic parsing? 23:05:15 -!- olsner has quit (Read error: Operation timed out). 23:07:48 -!- nooga has quit (Ping timeout: 258 seconds). 23:10:59 oerjan: what? 23:11:36 copumpkin: you're a haskell mod so clearly you must know everything about haskell. QED. 23:15:28 oh, duh 23:15:29 yeah 23:15:38 or maybe I know everything about haskell 23:15:42 and am therefore a mod 23:16:12 it's an isomorphism! 23:17:30 Just like Howard Curry would have wanted~ 23:18:22 oh, was that his name! 23:19:13 Yeah, I don't know what all this hyphen nonsense is about. It's the Curry, Howard Isomorphism 23:19:16 Jeez 23:21:46 hyphen hype 23:34:30 Good morning 23:34:32 -!- Taneb has quit (Quit: He's a big quitter he is.). 23:37:16 hypehen 23:53:13 !sanetemp 110 23:53:13 43.3 23:53:14 help 23:53:49 better call a doctor 23:54:22 Do doctors carry weather control devices? 23:55:02 well the Doctor probably does.