00:02:54 I also try to think of the best way to make WizardCard programming language; perhaps the syntax should be made more like Lisp and/or Scheme. Intentions are that it includes: * Open macros (new patterns can be added in other files, and new list items too) * Compiles to Haskell ((->) category is probably too weak, so use a Kleisli category or something) * First-class functions * First-class rulebooks (like Inform 7 rulebooks) * Mechanism to read 00:03:00 (did this get cut off?) 00:03:21 * 00:03:21 Mechanism to read 00:03:31 * Mechanism to read text from Magic: the Gathering and other games to convert to AST 00:03:36 That is all. 00:07:59 zzo38: by "WizardCard programming language" do you mean some kind of Dvorak language? 00:08:30 Arc_Koen: No. It is the name of the programming language. I have already done a few things but I intend to change it a bit. 00:09:07 yes, but I assume you didn't name it so for no reason 00:09:21 Of course there is a reaon. 00:09:21 -!- augur has joined. 00:12:06 The reason is for implementing Magic: the Gathering cards although it could be used for other purposes too. 00:12:50 that's great! 00:13:09 dvorak is a game where you can create the cards while playing 00:13:36 Maybe it is capable to do that too; I don't know yet. 00:14:50 -!- pikhq_ has joined. 00:17:30 -!- pikhq has quit (Ping timeout: 256 seconds). 00:18:20 -!- nooga has quit (Ping timeout: 268 seconds). 00:47:19 -!- copumpkin has changed nick to imsaguy4. 00:47:37 -!- imsaguy4 has changed nick to imsaguy9. 00:47:57 -!- imsaguy9 has changed nick to copumpkin. 00:59:56 -!- DHeadshot has joined. 01:20:29 -!- augur has quit (Remote host closed the connection). 01:32:52 ./ofueue ")$2[)$--------2~)~~[)[)~(~[~[$~H~]~)%+~91-):]~1+:])]]~[$~H~])%+-91)[65][65]" 01:32:52 Fatal error: exception Fueue.Unknown_operand(104) 01:33:10 fancy 01:33:10 I was so hoping for it to work immediately 01:33:31 that's 'h' right? 01:33:38 > chr 104 01:33:39 'h' 01:34:02 where the hell did that find a 'h' 01:34:14 presumably. i didn't think H was supposed to be case insensitive... 01:35:08 well I don't know what atriq would say about it, but in my implementation 'H' is a function and 'h' is nothing 01:35:14 does it get past the parsing stage? 01:35:20 let's see 01:35:29 (card (name "Counterspell") (type instant) (mana-cost U U) (text (counter (target spell)))) 01:36:11 nope 01:36:23 well that should narrow it down, then :P 01:37:06 perhaps it reads past the final \0? try rerunning it and see if you get the same number/error 01:37:23 it's always 104 01:37:32 errors are always so weird 01:38:15 ok let's try without blocks 01:39:08 72 101 108 108 10 H 01:39:30 ^chr 72 101 108 108 10 01:39:30 01:39:36 ack 01:39:45 ./ofueue "72 101 108 108 10 H"got passed it hehe 01:39:45 Fatal error: exception Invalid_argument("char_of_int") 01:40:08 ok, so without blocks it can pass the parser 01:40:21 though not sure whether it passes it right; I'll make a print function 01:40:50 you're definitely going to need a print function if you need to trace execution... 01:41:56 well I see nothing wrong with the only use of char_of_int 01:42:13 | Num x -> print_char (char_of_int x) 01:42:24 oh you went back to ocaml? 01:42:30 yeah 01:42:40 -!- ais523 has joined. 01:43:21 now both versions are at the stage "there's at least one thing wrong somewhere but you have no idea wheeeeeere" 01:43:30 which is the part I hate in programming 01:43:57 well make a print_queue function so you can see exactly what is on the queue at each step until it crashes. 01:44:56 because it's much easier to debug if you can see exactly when the data starts getting wrong 01:53:51 ./ofueue "72 101 108 108 10 H" 01:53:52 600 5429 5436 5436 538 H 01:54:08 hm... 01:54:12 well, at least I got the number of numbers right :) 01:54:18 :t readInt 01:54:20 forall a. (Num a) => a -> (Char -> Bool) -> (Char -> Int) -> String -> [(a, String)] 01:54:39 > readInt 10 (const True) ord "72" 01:54:40 [(600,"")] 01:54:57 I have no idea what you just did 01:55:26 is that haskell or something? 01:55:27 thought so. you are forgetting to subtract int_of_char '0' or whatever it's called 01:55:31 yes. 01:55:37 oh of course 01:55:49 that because of the C program 01:56:40 I mean, switching back to ocaml I was like "no need to substract now, we have the int_of_char function 01:56:40 -!- DHeadshot has quit (Read error: Connection reset by peer). 01:56:49 -!- DH____ has joined. 01:58:42 ok, 72 101 blabla works 01:58:54 yay 01:59:04 Fatal error: exception Fueue.Unknown_operand(104) 01:59:13 well that would have been too easy 01:59:40 try something simpler like ):[):] 02:00:11 if I recall correctly that's an infinite loop 02:00:14 yep 02:00:30 seems to be working 02:00:55 time to find a minimal breaking example, then 02:01:16 well I'll try on empty 02:01:42 ok, empty works 02:02:10 by that, i mean taking the program which doesn't work, and try smaller pieces of it 02:02:35 until you find the smallest piece which breaks 02:03:34 )$2[)$--------2~)~~[)[)~(~[~[$~H~]~)%+~91-):]~1+:])]]~[$~H~])%+-91)[65][65] 02:03:56 say )$2[)$--------2~)~~[)[)~(~[~[$~H~]~)%+~91-):]~1+:])]] 02:04:44 ./ofueue "+-*/%:~!$(<)H" 02:04:44 ./ofueue "+-*/%:~"))[[H]]"(<)H" 02:04:44 -bash: syntax error near unexpected token `)' 02:04:53 -!- Concreto has joined. 02:05:03 funny I thought no fueue function had to be escaped 02:05:08 um you have a " in there. 02:05:50 uh 02:06:19 the ! was replaced by my previous argument 02:06:21 apparently 02:06:31 use '' instead of "" to escape, anyway 02:06:42 *to quote 02:06:51 ok 02:07:33 ok, so the program "sequence of all fueue functions" works 02:08:00 as i said, try breaking the non-working program down. 02:08:01 ah 02:08:09 it seems to be working 02:08:20 ./ofueue ')$2[)$--------2~)~~[)[)~(~[~[$~H~]~)%+~91-):]~1+:])]]' 02:08:20 )$2 [)$--------2 ~)~~[)[)~(~[~[$~H~]~)%+~91 -):]~1 +:])]] 02:08:20 got passed it hehe 02:08:43 though I have no idea what it is supposed to do, so I can't tell if it's behaving properly or not 02:08:55 hm have you tried '' around the whole program? maybe it was quoting problems all along. 02:09:00 but it was parsed correctly 02:09:28 yeaaaaah 02:09:34 works as well 02:09:47 what does it do? >:) 02:10:00 it waits for me to input something 02:10:12 oops. it's not supposed to do that. 02:11:11 (so now must be the time where I confess I kind of skipped the input part of the program, and replace it with a "read_int") 02:11:40 well you might, except my program isn't supposed to do any input :( 02:12:22 does your program work? :p 02:12:26 there is of course the possibility of bugs 02:12:45 i have only emulated it by hand 02:13:09 well trying a program we're not sure of against an interpreter we're not sure of was optimistic 02:13:35 does it print anything before asking for input? 02:13:51 it prints the program and "got passed it hehe" 02:14:06 can i get a print of the queue just before it asks for input? 02:14:10 ./ofueue ')$2[)$--------2~)~~[)[)~(~[~[$~H~]~)%+~91-):]~1+:])]]~[$~H~])%+-91)[65][65]' 02:14:10 )$2 [)$--------2 ~)~~[)[)~(~[~[$~H~]~)%+~91 -):]~1 +:])]]~[$~H~])%+-91 )[65 ][65 ] 02:14:10 got passed it hehe 02:14:11 66 02:14:11 66 02:14:11 Fatal error: exception Invalid_argument("char_of_int") 02:14:17 oh, right 02:14:30 let's add a print_queue somewhere in the middle 02:15:32 it does seem to print an equivalent program 02:16:08 the only difference should be: removed all the whitespace, and added one whitespace after each number 02:16:24 (so as to not be confused by two consecutive numbers) 02:16:41 ohgod 02:16:51 hm? 02:16:52 ok, fasten your seatbelt 02:17:18 ok 02:17:59 http://pastebin.com/rafSr1KR 02:18:45 ah, crap 02:18:59 the print_queue function doesn't make a difference between - 2 and -2 02:19:13 ok, I'll make the space appear before numbers instead of after 02:19:24 -!- kmc has joined. 02:19:33 heh right. i used _2 for the number when designing it :P 02:20:45 http://pastebin.com/TEJcPYyr 02:20:57 though all minuses were the function, I think 02:21:28 it seems to ask for input just before applying minus to 2 02:21:41 i hope not, there should definitely be some negative numbers in there 02:22:06 ok so here is what goes after input 02:22:46 http://pastebin.com/bmS873ub 02:23:01 (this follows the previous paste, and 66 and 67 are my inputs) 02:24:23 it's probably a problem with my interpreter though, cause the line seems too long to have been processed entirely since the last function was executed 02:26:08 oh, the char_of_int error was cause by trying to print a negative number 02:26:10 yes, i guess there's a length miscalculation 02:26:44 it shouldn't do that, although i guess reading a character into it will mess things up 02:27:23 ok, so the length is calculated this way: 02:27:35 the function "main" which processes the queue has only one argument, "time" 02:27:57 time is supposed to be equal to the number of "sendback" operations since last active operation 02:28:26 and there's a global variable "fength" which is supposed to be equal, at all time, to the length of the queue 02:28:42 I'll try replacing it with Queue.length fueue or whatever 02:29:50 and it seems to be working 02:30:06 although the print_queue flooding prevents me from knowing what it does 02:30:47 ./ofueue ')$2[)$--------2~)~~[)[)~(~[~[$~H~]~)%+~91-):]~1+:])]]~[$~H~])%+-91)[65][65]' 02:30:47 )$ 2[)$-------- 2~)~~[)[)~(~[~[$~H~]~)%+~ 91-):]~ 1+:])]]~[$~H~])%+- 91)[ 65][ 65] 02:30:48 got passed it hehe 02:30:48 ABCDEFGHIJKLMNOPQRSTUVWXYZ 02:30:50 yeaaaaaaaah 02:30:55 yay! 02:31:34 now to replace the read_int by a function that does what you said it should do 02:31:44 and then this will be THE FIRST FUEUE INTERPRETER 02:32:00 excellent 02:33:12 at first when I read about befunge and esolangs it all sounded like 90's and early 2000's 02:33:42 and all those articles about "the now defunct xxx mailing list" 02:34:07 -!- mtve has quit (Ping timeout: 240 seconds). 02:34:07 the mailing list was nice :( 02:34:39 and then I talked with ais and he told me he did a lot of esolangs 02:34:50 RIP mailing list, 90s-early 2000s 02:34:52 the community is somewhat smaller now, i think. 02:34:54 "it was nice" 02:35:07 but we're not dead yet 02:35:07 and then I found 2008, 2009, 2010, 2011 and even 2012 created esolangs 02:35:15 and this channel 02:35:20 oerjan, depends, are we including people who make Brainfuck derivatives? 02:35:25 Phantom__Hoover: NO 02:35:27 I feel like I'm part of history now 02:35:57 Arc_Koen: Most of us don't talk esolangs much, TBH. 02:36:12 (though that's not to say we're uninterested in it. :)) 02:36:16 you're not bilingual?? 02:36:58 いや、しかし、日本語はイソラングじゃないと思う。 02:38:22 * Arc_Koen digs out his very rusty japanese 02:38:41 "Uh, well, Japanese isn't an esolang, I think." 02:38:52 Well, more idiomatic. 02:38:53 "no, shisomethingshi, nihonsomeeeeeeethingitoblacksomething 02:39:01 "Uh, well, I don't think Japanese is an esolang." 02:39:28 well my japanese interpreter doesn't work well, apparently 02:40:08 "iya, shikashi, nihongo wa isorangu ja nai to omou" or, more pedantically, "iya, sikasi, nihonnkò ha isorannkù sìȳanai to omou" 02:40:29 イソラングじ izoranguji ? 02:40:34 haha 02:41:05 Nah, the tokenization is a bit different there. ;) 02:42:37 well, じ is most definitely ji, isn't it? 02:43:04 I mean, shi is like the only syllable I always remember correctly 02:43:18 Yes, but that mora doesn't exist in that sentence. じゃ is "ja", not "jiya". 02:43:27 oh, right 02:43:58 I confused that with a miniature "tsu" which would double the next syllable 02:44:14 I guess it looks a little like the sokuon. 02:45:22 つっやゃ Yeah, some similarity I guess. 02:45:46 Small "tsu" does not double the next syllable it should be like a pause, romaji written by doubling the next consonant which is also what it is like. 02:46:04 Japanese writing is not by syllables anyways it is by moras. 02:47:38 To be very technical, small "tsu" indicates gemination of the next consonant. 02:47:46 OK. 02:47:51 I've never heard mora before today, but I'm guessing it's some kind of japanese translation of syllable? :p 02:47:52 morae 02:47:55 Arc_Koen: no 02:48:02 Arc_Koen: It's actually a Latin origin term. 02:48:11 oh 02:49:03 Arc_Koen: A "mora" is a unit of sound between a syllable and a phoneme... 02:49:09 *Most* kana are a single mora. 02:49:50 is the n kana a whole mora? 02:50:05 Though the ones where you have a compound sound (like with a small "ya", "yu", or "yo") are a single mora from two kana. 02:50:07 I think the small kanas are not a whole mora except for a small tsu. 02:50:08 Arc_Koen: Yes. 02:50:21 zzo38: You're right. 02:50:40 Small tsu is a mora. 02:50:51 Big kanas always are a mora, I think. 02:51:01 にっぽん is 4 morae. 02:51:03 -!- augur has joined. 02:51:06 zzo38: I think so, yeah. 02:51:50 When the moon hits ya eye like a big pizza pie, that's a morae.... 02:52:04 Arc_Koen: Also, e.g. とうきょう is 4 morae but only two syllables. 02:52:42 to u somethingo u ? 02:52:49 toukyou 02:53:16 so close :) 02:53:31 -!- pikhq_ has quit (Quit: Reconnecting). 02:53:43 -!- pikhq has joined. 02:53:48 so why isn't it written (tsu)to(tsu)kyo? 02:53:50 20:52 < pikhq_> toukyou 02:54:14 Arc_Koen: Why would it be? That doesn't make sense 02:54:24 It would be a different word. 02:54:35 Arc_Koen: Because it's not ttokkyo? 02:54:45 Except, n and small tsu never comes first as far as I know. 02:54:49 oh that doubles the consonaaaaaaant 02:55:41 it's been so long I was completely confusing the "u" thing and the "tsu" thing 02:55:46 zzo38: If somehow it did, the small tsu would probably be a glottal stop. 02:56:28 zzo38: And apparently ん starts a couple loan words? 02:57:25 Also, other Japonic languages apparently start words with it. 03:06:31 oerjan: according to the reference manual, "input_char stdin" should have the behaviour you were expecting 03:07:31 when trying it on the empty fueue program though, it looks like there is nothing to trigger the end of "waiting for an input" 03:07:42 niether ^D nor enter 03:10:22 echo 'ABCD' | ./ofueue ' ' prints ABCD then Fatal error: exception End_of_file 03:12:41 Arc_Koen: iirc (it's been a long time since i did ocaml) to handle EOF you actually need to catch that exception. 03:15:02 try (input_char stdin) with | End_of_file -> WAIT FOR MORE 03:15:57 crap, 5am 03:16:15 Arc_Koen: pretty much. 03:16:30 so, do i get to have my name in the wiki for my interpreter or something? :) 03:16:40 along with a few fueue programs 03:17:04 Arc_Koen: sure 03:18:17 note that everything put directly on the wiki must be public domain / CC0 licensed 03:19:14 also it's not very good for large programs. 03:19:55 It is possible to do literate Haskell directly on the wiki. 03:20:03 (It still needs to be public domain) 03:20:27 well, I don't know much about licenses but "CC0" doesn't sound so scary 03:20:56 I'm guessing it stands for the same commutative commons as wikipedia, or something 03:20:57 CC0 is public domain; no copyright. 03:21:06 No it is not the same as Wikipedia. 03:21:07 it basically means "as close to public domain as we can get in your jurisdiction" 03:21:28 I'm ok with that 03:21:29 Arc_Koen: it's creative commons, but a different license 03:22:17 (the main question is, is my code readable enough and will it not put shame on me or something :p) 03:22:36 larger programs are usually put elsewhere and linked from the wiki. 03:23:03 well we haven't actually _seen_ that much of your code, have we >:) 03:23:40 I can send it to you by email or something 03:23:51 oops 03:24:23 i'm sure it's fine, anyway 03:24:44 (elliott will be merciless regardless >:) ) 03:25:12 except for that fength bug which I "corrected" by replacing fength by Queue.length fueue when it was used 03:25:35 that means I have a lot of function trying to keep the correct length at all time, and who fail at that 03:26:23 well you can always remove that part when you use Queue.length instead. 03:27:16 it might be constant time, anyhow, although i'm not sure how to see the source 03:27:19 aaaand bug fixed 03:28:01 -!- Phantom__Hoover has quit (Read error: Connection reset by peer). 03:28:06 in fact _if_ Queue.length is constant time, it's sort of silly to keep track yourself. 03:28:15 good point 03:28:45 though I'm guessing they would have mentioned it if it was constant time 03:29:26 maybe they considered it obvious. 03:30:27 I doubt that; List.length's and Queue.length's description are quasi-identical, and List.length is definitely not constant time 03:31:14 well it's only constant time if they cache the length 03:31:55 my point is, if they cached the length then Queue.length would be using "something you can't use" and they would have said it 03:32:12 the same way they said Queue.transfer was constant time 03:32:43 I'll ask someone tomorrow 03:35:22 it would be easy if i could just find the source :( 03:37:17 I'm note sure there even is an ocaml source 03:38:54 i managed to find a stackoverflow thread about it 03:39:53 "The queue's length is " 03:39:54 33 also recorded, so as to make [length] a constant-time operation. 03:40:00 http://caml.inria.fr/cgi-bin/viewvc.cgi/ocaml/version/4.00/stdlib/queue.ml?revision=12217&view=markup 03:41:42 urh, they made it cyclic 03:42:23 you win then, I'm removing all fength stuff 03:43:13 \o/ 03:44:20 Wait, how is length a constant time operation? 03:45:07 Sgeo: because it's stored in the structure 03:45:16 Ah 03:45:45 the hell is that 03:45:47 tail = Obj.magic None 03:46:00 I told you it was magic 03:47:03 this library looks almost more like C than Ocaml though 03:48:17 i recall back when i was looking at ocaml, their yacc-alike was a C program modified to output ocaml source :) 03:49:29 i don't know if they've rewritten ocamlyacc in ocaml proper 03:50:19 Arc_Koen: iiuc that tail = Obj.magic None was because they didn't want the space overhead of _actually_ using options 03:50:42 oh 03:51:03 so Obj.magic basically means "do what you want while pretending you're not doing it"? 03:52:25 external magic : 'a -> 'b = "%identity" that reminds me... I have never used the objective part of ocaml 03:52:33 anyway, have a good night 03:52:39 or whatever's left of it 03:52:44 good night 03:53:28 if you or atriq want me to send them my interpreter my email is ltn.koen@gmail.com 03:53:38 -!- Arc_Koen has left. 03:54:09 -!- oerjan has quit (Quit: Not much, anyhow). 03:54:44 -!- zzo38 has quit (Remote host closed the connection). 03:56:06 -!- zzo38 has joined. 04:04:42 " The idea behind the build is allowing people to explode a watermelon with their mind using a Star Wars Force Trainer EEG toy." 04:15:39 -!- xuzh1 has joined. 04:16:40 -!- MoALTz has joined. 04:16:58 -!- DHeadshot has joined. 04:17:03 -!- DH____ has quit (Read error: Connection reset by peer). 04:27:11 -!- Concreto has quit (Quit: Concreto). 04:27:24 -!- Concreto has joined. 04:27:52 "Making sure a baby is still breathing with lasers and a wiimote" 04:28:09 "HOME OF THE WIKI WEAPON. A COLLABORATIVE PROJECT TO CREATE FREELY AVAILABLE PLANS FOR 3D PRINTABLE GUNS." 04:28:18 stupid cyberpunk future 04:32:20 CC0 is public domain; no copyright. 04:32:28 as oerjan said, this may or may not be true, depending on your jurisdiction 04:32:51 in some places copyright is one of those rights you can't sign away, and there's no way to dedicate your work to the public domain other than to die and wait x years 04:33:23 Yes I know that. But why do some juristictions have that? 04:33:37 so CC0 attempts to provide as broad a license as possible, in very explicit terms 04:33:53 which means it's a good deal more verbose than WTFPL or your standard "public domain dedication" 04:34:00 CC0 is a pointer to whatever the least restrictive status is. 04:34:16 no, it's a pretty long document 04:34:25 I'm saying *conceptually* that's what it is. 04:34:30 it doesn't just say "This shall be under the least restrictive status" 04:34:36 Yes, I understand, it would make it public domain if possible. WTFPL is like public domain but always copyright and much shorter 04:34:51 it enumerates in some detail all the things you are explicitly allowed to do 04:34:57 i think that's conceptually very different from a "pointer" 04:35:24 zzo38: i don't know why you can't sign away copyright. perhaps legislators thought that employers would force their employees to do so? 04:35:29 Isn't it like the other CC licenses, where it refers to a different license for each country? 04:35:41 but i think in such jurisdictions you can still assign copyright to your employer for work for hire 04:35:56 pikhq: i don't believe so 04:35:59 Ah, no, it's a single text. 04:36:09 http://creativecommons.org/publicdomain/zero/1.0/legalcode 04:36:20 I thought it was like the other CCs. 04:36:41 also, it waives other copyright-like things, and provides a warranty disclaimer 04:37:00 which you don't automatically get with WTFPL etc 04:37:18 So, it's a much more general MIT license. 04:37:33 Well, yes; WTFPL is designed to be very simple. 04:37:58 CC0 is designed to be very complete. 04:38:48 CC0 lacks this restriction from the MIT license: "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software." 04:39:36 Ah, right. 04:39:48 The MIT is merely mostly permissive, not all-permissive. 04:39:48 Maybe they should include CC0 in Haskell cabal if you push "public domain" it include CC0 in case it is not public domain in your jurisdiction. 04:40:42 yeah that would be nice 04:41:38 Some people have told me not to select public domain license because some jurisdictions do not allow it. 04:44:17 apparently defensedistributed.com succeeded in 3D printing an AR-15 lower receiver 04:45:29 That's going to do some interesting things to gun laws. 04:46:30 yeah 04:46:55 this is significant because the lower receiver is the part which is legally a gun in the USA 04:47:01 the rest of the parts can be purchased without restriction 04:47:42 "Firearms require a good deal more precision than a Bre Pettis bobblehead" 04:48:01 bahaha 04:48:28 Can't you make functioning (if shitty) guns in practically any garage? 04:48:38 so i've heard 04:50:24 but it will suck compared to an AR-15 made with real parts except for the LR, which doesn't have much mechanical or heat stress anyway 04:51:45 Yeah. 04:52:02 An AR-15 with stock-parts-modulo-the-lower-receiver is, well, a real modern firearm. 04:52:12 -!- MoALTz has quit (Ping timeout: 265 seconds). 04:53:04 but also I think it's not hard to just buy a complete AR-15 in the USA 04:53:31 It's not. 04:54:27 From what I understand it's no harder than any other firearm. 04:54:42 and printing the LR doesn't particularly help you convert it to full auto, or add other illegal stuff 04:55:10 Does mean you could get your hands on one without complying with purchasing restrictions though. 04:55:34 california has strict rules about assault rifles 04:55:43 but you can just drive to nevada 04:56:06 There's federal purchasing regulations that you wouldn't need to deal with, either... 04:56:16 yeah 04:56:19 i don't know about those 05:22:34 -!- impomatic has quit (Ping timeout: 244 seconds). 05:24:51 -!- sivoais has quit (Read error: Connection reset by peer). 05:25:30 -!- sivoais has joined. 05:31:26 -!- Concreto has quit (Quit: Concreto). 05:52:05 -!- asiekierka has joined. 06:11:53 Did you see my code (card ...) I have posted earlier today? 06:14:33 apparently the following is going to be played at the academic sessions for first years in the math faculty: http://www.youtube.com/watch?v=UQHaGhC7C2E 06:18:35 orientation should be good this year 06:42:54 Teleportation needs orientations. 06:45:28 Did you see my code (card ...) I have posted earlier today? I would intend that WizardCard compiler would read such things as part of a larger program, and then compile it into a Haskell code (not only in one place, but considering its effects on the rest of the program so that part gets compiled elsewhere too). 06:52:12 I did not 06:55:34 -!- xuzh1 has quit (Ping timeout: 244 seconds). 06:55:44 Would you know anything about such things? 06:55:56 (Read the logs if it is necessary to do so) 06:58:27 I don't have the time 06:58:41 OK, then please don't. 06:59:29 (or do you not have the time for "don't" either?) 06:59:33 hha 06:59:37 yeah, that 07:15:14 -!- xuzh1 has joined. 07:21:57 -!- zzo38 has quit (Quit: Hold second one as you hold a pencil.). 07:41:22 -!- xuzh1 has quit (Ping timeout: 265 seconds). 07:44:19 -!- xuzh1 has joined. 07:44:19 -!- xuzh1 has left. 08:13:57 -!- ais523 has quit. 08:14:30 -!- DHeadshot has quit (Ping timeout: 264 seconds). 08:17:20 -!- DHeadshot has joined. 08:28:04 zzo: does don't take > 0 time? 08:28:46 "don't" is surely an overhead 08:36:32 -!- atriq has joined. 08:51:52 -!- kinoSi has quit (Read error: Connection reset by peer). 08:52:19 -!- kinoSi has joined. 09:09:51 -!- ineiros has quit (Ping timeout: 240 seconds). 09:10:05 -!- ineiros has joined. 09:31:49 -!- nooga has joined. 09:41:47 It occurs to me that I have no idea how to write a parser 09:41:47 atriq: You have 2 new messages. '/msg lambdabot @messages' to read them. 09:41:52 @messages 09:41:52 Phantom__Hoover said 10h 51m 42s ago: don't not learn parsec 09:41:52 oerjan said 10h 49m 48s ago: pattern guards _are_ vanilla haskell, they were added in haskell 2010 09:42:18 @tell Phantom_Hoover I won't not learn parsec! 09:42:18 Consider it noted. 09:42:34 @tell oerjan Wow, I better learn them too! 09:42:34 Consider it noted. 09:46:18 -!- FreeFull has quit (Ping timeout: 264 seconds). 09:46:57 -!- FreeFull has joined. 09:48:22 atriq: You take some kind of input, and produce a parse tree or some other kind of parsed result; that's how you write a parser. 09:48:37 Wow 09:48:42 You learn something every day 09:48:47 And it's not even 11 o'clock yet! 09:49:12 Here, it is. 09:49:19 Wow! 09:49:52 @localtime fungot 09:49:53 fizzie: we are become more happy and less fnord, now that/ law is :) universal fnord but many good observers to rank as a geographical race; and possibly hereafter out :)/ mouth have to be admitted. 09:50:05 Oh, right, that was based on CTCP time. 09:50:15 -!- Phantom_Hoover has joined. 09:50:21 Maybe I should add some CTCP replies some day; VERSION, at least. 09:52:59 -!- impomatic has joined. 09:55:12 -!- ais523 has joined. 10:08:38 -!- ais523 has quit. 10:38:07 -!- derdon has joined. 10:50:14 -!- Arc_Koen has joined. 10:50:38 hello 10:50:55 atriq: so how's that Haskell interpreter going? 10:51:19 also, I had a question: in the initial program, is it possible to use negative numbers? 10:51:45 if so, what's the distinction between "the function - followed by a positive number" and "a negative number"? 10:54:49 -!- ais523 has joined. 11:00:53 30 kilobel per second is far too slow for a software package download, right? 11:01:02 (I assume it means kilobyte) 11:04:23 -!- TeruFSX has quit (Ping timeout: 265 seconds). 11:07:10 I don't know; it could also mean, you know, 30 kilobel; i.e. 300 000 dB. Did it mention a bandwidth too? You could use that and the Shannon-Hartley theorem to get bits per second out of it. 11:07:31 no obvious bandwidth mentioned 11:07:42 30 kilobel is a really good channel, anyway. 11:07:58 also loud enough to destroy the Earth if interpreted as sound intensity 11:08:14 -!- MoALTz has joined. 11:08:42 global security recommends that you don't download this package 11:08:45 Assuming the standard reference value, at least. 11:08:47 I'm waiting for cygwin to install all packages matching *ocaml* on a work computer 11:08:56 and it's spending a long time just on the download 11:09:02 Arc_Koen: huh, didn't expect to see you here 11:09:07 small world indeed… 11:09:34 well, you're kind of the one who brought me here 11:09:36 It's a bit hard to say whether the "kilobel" is a kilobyte or a kilobit without any other context. It's reasonably slow in both cases, though. 11:12:32 I don't think I've seen capital B for bit before 11:12:37 although it's commonly misused for byte 11:12:59 would be like using capital M for the minimum function 11:13:25 I guess it's possible to argue that KB genuinely does mean kilobyte or perhaps even kibibyte (because capital K is not an SI prefix), but kB, as shown in the Cygwin installer, is pretty uncontroversially kilobel :) 11:14:06 Ah, it was as "KB". 11:14:07 incidentally, *ocaml* seems like too broad a pattern (it includes, for instance, Emacs' ocaml-mode, which means it pulls in all of Emacs), but it's not me who's doing the install, just me who's waiting for it to finish 11:15:41 hmm TIL: trollface.{png,jpg} dates from 2008, I somehow assumed it was much older 11:17:04 Anyway, kB is as uncontroversially kilobel as kb is a kilobarn. 11:17:20 -!- ais523 has quit (Read error: Connection reset by peer). 11:17:35 -!- ais523 has joined. 11:19:33 -!- ais523 has quit (Read error: Connection reset by peer). 11:19:40 -!- ais523_ has joined. 11:19:45 -!- ais523_ has changed nick to ais523. 11:21:29 That was noisy. 11:26:59 -!- mig22 has joined. 11:29:02 -!- impomatic has quit (Quit: impomatic). 11:29:55 -!- hogeyui_ has quit (Ping timeout: 244 seconds). 11:32:47 Arc_Koen, it isn't possible to have negative numbers in the initial program 11:33:01 ok 11:33:14 my ocaml interpreter seems to be following all specifications then :) 11:33:16 I'm struggling to write a parser because I suck at parsers 11:33:26 Also I can't type because Guitar Hero 11:33:32 -!- itidus20 has joined. 11:33:34 My fingers hurt now 11:33:38 haha 11:34:10 Do not let me try to do Cliffs of Dover past medium difficulty 11:34:36 out of curiosity, what are you using for blocks? 11:34:44 the same structure as for the main queue? 11:34:46 Yeah 11:35:08 that's what I was doing with the C version but in Ocaml it sounded way more natural to use simple lists 11:35:08 That was what I intended when I wrote the spec, I tried to make them as close to actual queues as possible 11:35:22 For some reason I had the thought "Guitar hero? But then shouldn't that mean it's your feet that hurt." 11:35:27 Brains: sometimes they don't work. 11:35:35 :) 11:35:42 since blocks are not executed, they don't need to be in an actual queue 11:36:27 the only functions on them are "add one element" and "deblock it all" 11:36:42 -!- itidus21 has quit (Ping timeout: 264 seconds). 11:36:47 It's convenient to have them the same as the main queue, because they are essentially the same as the main queue in terms of how they can be used 11:37:09 Arc_Koen, the elements are added to the back, but when it's deblocked, they are deblocked front first 11:37:17 I know 11:37:32 OMG no. You didn't just write "Some of the GNU Fortran runtime is written in m4." 11:37:39 the deblock function reverses the list, which is not constant time, but I think it's worth it 11:37:51 Arc_Koen: you have an OCaml interp? 11:37:55 what language is it written in? 11:37:57 for Fueue 11:38:05 no, a Fueue interpreter written in ocaml 11:38:09 ah, OK 11:38:21 I thought it was a bit of a large lang for writing custom interps for 11:38:29 indeed 11:38:52 I had the project to write an interpreter in ocaml for a reduced set of ocaml 11:39:00 but it was so boring 11:39:32 it was all "if you meet a sum, then sum it. if you meet a function application, then applicate the function. if you meet an x, do an x." 11:40:25 (by "reduced set" I mean "lists, variables, constants, let...in, if...then...else, function application, and very very few other things" 11:41:35 -!- hogeyui_ has joined. 11:43:12 Arc_Koen: that's how interpreters generally work 11:43:17 and why they're often quite easy to write 11:43:43 yep, but writing it in its own language made it even more redundant 11:44:20 at some point the question "why the hell did I want to do that?" must have become too loud for me to continue 11:47:40 We ran a thing in one of our courses on the SICP meta-circular interpreter. 11:47:54 Because it had some resource limits (counted as Scheme primitives) to apply. 11:52:45 my automarker script does its resource limits with alarm and prctl 11:53:22 prctl is kind-of neat for the purpose, because if something uses too much memory, then malloc ends up getting sigkilled when it tries to call brk 11:55:17 I think my parser works 11:57:42 ais523: But are the time limits exactly fair in terms of executed things? (We later went to Java and setrlimit anyway, though.) 11:57:51 So, ignoring the 72 line function and the fact it doesn't actually do anything yet, I think I've got a good program 12:14:03 I always make my programs do something first and then iterate 12:14:30 Ah, the top-down approach 12:14:57 I take the "I have no idea what I'm doing" approach 12:15:01 I don't finish many things 12:15:20 i do depth first 12:15:25 and sometimes A* 12:15:37 but never top down or bottom up, that's just silly 12:16:26 Starting with a program does something has the advantage of you being able to see it do something each time you make a change 12:16:54 -!- Phantom_Hoover has quit (Ping timeout: 264 seconds). 12:17:04 usually that means you play with it for half an hour every time you do anything. 12:17:26 If you have a REPL you can just test parts of the program in the same way, rather than the whole program at once 12:18:02 oklopol: So I should write it all at once and then figure out that I did everything wrong and have to redo it? 12:18:26 I think oklopol's opinion is that you shouldn't write it wrong in the first place. 12:18:29 (He doesn't.) 12:18:34 Unless I'm remembering someone else. 12:18:42 first of all i'm just saying random things. second of all imo the sensible way is to write a few tests for each function. 12:18:44 Sometimes you don't even know what you want 12:19:27 oklopol: Let's say I want to write a program for the purpose of "displaying something pretty" 12:19:36 How do I write an automatic test for prettiness? =P 12:20:20 well true true, and similar with games which are nowadays my main projects 12:20:41 but anyhow you will probably have most of the actual functions doing well-defined things which you can test 12:20:55 the prettiness is done by finding a nice way to mangle these together 12:21:00 maybe. 12:21:02 maybe not. 12:21:03 But those I tend to write correctly 12:21:11 right 12:21:27 well that's the important part. 12:21:33 who cares if it actually works 12:21:42 I imagine tests are useful if you have a large project and don't want to break anything 12:22:10 atriq: can I get a look at your program? I've never seen haskell before 12:22:23 This probably won't be the best example 12:23:08 http://hpaste.org/73936 12:23:49 I'm not the most literate programmer 12:24:46 oh 12:25:09 my items are just "Fun of char, Num of int, Block of item list" 12:25:28 I prefer it like this, due to the enhanced safety 12:25:46 Any illegal character is caught during parsing, and I don't have to worry about adding some later 12:26:08 atriq: That code looks very C-ish 12:26:40 How so? 12:26:56 what an insult 12:32:19 How is that C-ish at all? 12:32:37 Other than being nigh-unreadable 12:36:56 it looks like a simple pattern matching on the functions but I have no idea what it does with those functions 12:37:37 It doesn't work 12:44:18 compare « (FPop :< fs) -> case viewl fs of EmptyL -> modify succ >> return prog (_ :< fs') -> put 0 >> return fs' » and « | Fun '!' -> if (matchpeek Any Zero) then ignore (pop ()) else (push (Fun '!'); whatsnext := Sentback) » 12:46:03 I really need to start using pattern guards 12:46:04 -!- boily has joined. 12:49:28 -!- ais523 has quit (Ping timeout: 256 seconds). 12:49:39 atriq: I'm thinking in C it'd be just a giant switch statement 13:00:40 I really need to use more comments, too 13:00:48 hum apparently my fueue interpreter discards blocks instead of sending them back to the end 13:01:03 and the deblock function is always sent back even when followed by a block 13:03:25 Arc_Koen: Regarding debugging prints and whatever, you could consider adding a trace/single-step kind of mode that'd print the fueue contents (or maybe say up to K first and last items) at each step; it might even be useful for all the Fueue developers, in addition to making debugging easier. 13:03:29 YES 13:03:31 Brilliant 13:03:39 I worked out what I was doing wrong 13:03:42 I had < instead of >= 13:04:06 So it receiving input all the time 13:04:32 fizzie: good idea; I already have a print_queue function I use for debugging but when it works i'll try to add an option to do that 13:11:36 atriq: are empty blocks allowed in fueue programs? I may have asked that already 13:12:42 -!- DHeadshot has quit (Ping timeout: 264 seconds). 13:13:24 -!- atriq has quit (Ping timeout: 248 seconds). 13:19:21 -!- ais523 has joined. 13:20:20 ok, I think it works 13:20:26 let's try it on the ABCD program 13:20:58 http://qdb.us/307731 13:21:42 -!- atriq has joined. 13:22:06 )$ 2[)$-------- 2~)~~[)[)~(~[~[$~H~]~)%+~ 91-):]~ 1+:])]]~[$~H~])%+- 91)[ 65][ 65] 13:22:06 ABCDEFGHIJKLMNOPQRSTUVWXYZthis has properly ended 13:22:27 atriq: both my Ocaml and C versions of the interpreter work 13:22:47 though the ocaml versions has some issues with input 13:22:52 Yay! 13:23:09 fungot: See nortti's link; maybe you could be friends? 13:23:10 fizzie: dunno what ephemeral arrays are, i'll leave it at that. any custom adt. 13:29:07 Mine seems to have a problem with it 13:30:01 echo "ABCD" | ./ofueue ' ' prints ABCD then raise an End_of_file error 13:30:43 ./ofueue ' ' without the pipe waits for me to make an input, prints it, and then things become weird 13:30:54 > ord '\n' 13:30:55 10 13:31:21 -!- ais523_ has joined. 13:31:48 -!- ais523 has quit (Read error: No route to host). 13:32:16 that could be fixed with something like "try (input_char stdin) with | End_of_file -> wait for more" except I have no idea how to make it understand "wait for more" 13:34:38 Not just End_of_file -> -1? 13:34:46 Assuming that's the "standard". 13:35:13 well if I did that it wouldn't wait for my input 13:35:37 -!- augur has quit (Remote host closed the connection). 13:36:04 What, so "input_char stdin" is some kind of a non-blocking thing? That'd be weird. 13:36:32 well I'm trying to understand why sometimes it blocks and sometimes not 13:37:54 -!- ais523_ has quit (Ping timeout: 252 seconds). 13:38:48 I don't know OCaml, but I'd certainly expect it would always block unless there is input available to be read, or the end of file has happened. (And after the latter, there won't be any more input ever.) 13:39:52 yes, but how do you know whether there is input available to be read? 13:40:20 apparently "there is no input available" and "the next input is end_of_file" are the same 13:40:29 -!- monqy has quit (Quit: hello). 13:40:56 That sounds very unlikely, but certainly possible. 13:41:15 It's just that normally, if you don't do any kind of tricks, input functions will in fact wait if there is no input. 13:42:25 I mean, if there is no input but there is still a chance that there could be some input later. 13:42:42 well, it kind of waits, but (at least in the case of the infinite cat loop) it doesn't actually print anything until it reaches end_of_file 13:42:53 I guess the problem is with the print_char function then 13:43:34 the same thing happened yesterday in C when I used printf to debug and the printf didn't print anything cause I hadn't included \n in it 13:44:23 Yes, stdout-y things tend to be line-buffered by default; but I suppose in most cases your input would have a \n in it, and therefore the output too, and things should become visible at that point. 13:44:49 that's what it does with the C program 13:45:54 that is, if I type a char followed by enter, it takes the char and the \n; if I type a char and ^D, it takes the char only 13:46:09 but with the ocaml version ^D has absolutely no effect 13:46:27 and "enter" does give him a \n but without making things visible 13:47:26 You need to change the buffering settings 13:47:33 I think I know how to do it in Haskell 13:47:59 Possibly you could just "flush stdout" manually after every output? 13:48:36 Some googling would sort of indicate that OCaml's stdout/stderr channels are fully buffered by default. 13:50:05 Well, that's an interesting error 13:50:26 At least based on someone complaining that when he writes complete lines to stdout and stderr, the ordering still gets mixed up. 13:50:47 ~ was broken 13:50:47 --- Possible commands: dice, duck, echo, eval, fortune, metar, ping, yi 13:51:10 ~ab... became b...ba 13:51:12 What's ~duck do? 13:51:17 ~duck 13:51:17 --- ~duck query 13:51:18 --- Query information from Duck Duck Go 13:51:23 ~duck hello 13:51:23 hello definition: an expression or gesture of greeting used interjectionally in greeting, in answering the telephone, or to express surprise. 13:51:31 ~duck laconic 13:51:31 A laconic phrase is a concise or terse statement, named after Laconia, a polis of ancient Greece surrounding the city of Sparta proper. 13:51:32 Oh, so it's like Google except with a duck. 13:51:40 More like a dictionary 13:51:46 ~duck fiery 13:51:46 fiery definition: consisting of fire. 13:51:52 ~duck ironic 13:51:52 Irony is a rhetorical device, literary technique, or situation in which there is a sharp incongruity or discordance that goes beyond the simple and evident intention of words or actions. 13:51:55 ~duck ways to make soap 13:51:55 --- No relevant information 13:51:57 aw. 13:52:22 YES 13:52:26 oerjan's program works 13:52:41 I was under the impression that DDG was a general-purpose search engine, with all kinds of small inventions. 13:53:01 ~duck Hexham 13:53:01 --- No relevant information 13:53:07 ~duck Helsinki 13:53:08 Helsinki is the capital and largest city of Finland. 13:53:15 ~duck Istanbul 13:53:16 Formerly Constantinople The largest city of Turkey, in the northwest part of the country on both sides of the Bosporus at its entrance into the Sea of Marmara. 13:53:28 Istanbul isn't Constantinople! 13:55:03 ~duck Constantinople 13:55:04 --- No relevant information 13:56:02 It seems to be what DDG returns for "define X". 13:56:31 Or maybe not quite, because that also knows about Hexham. 13:56:45 (Returning a Wikipedia reference.) 13:56:56 All the matching definitions so far have been the Free Dictionary ones. 14:06:02 Okay, the final bit of this interpreter is being annoying 14:14:16 -!- mig22 has quit (Quit: mig22). 14:16:35 ~duck Constantinopole 14:16:36 Constantinople (ɽıĹ, ɽıĹ - Konstantinopolis, Konstantinopoli; Constantinopolis; - Qostantiniyye; and modern 0stanbul) was the capital of the Eastern Roman Empire, the Latin and the Ottoman Empire. 14:17:07 What!? 14:17:15 ~duck Hexhaom 14:17:15 --- No relevant information 14:19:34 ~duck Hexham 14:19:34 --- No relevant information 14:23:10 -!- soundnfury has quit (Remote host closed the connection). 14:23:52 -!- augur has joined. 14:25:38 there I am, gently working my day out, and when I switch to IRC what do I see: people abusing my bot once again. 14:25:59 I knew you guys were reliable for this kind of matters :D 14:26:41 ~duck duck duck 14:26:42 Software description: duck duck is a quick application launcher for Gnome. 14:27:07 -!- Phantom_Hoover has joined. 14:27:13 ~duck XChat 14:27:14 XChat is a popular Internet Relay Chat client. 14:27:25 ~duck Firefox 14:27:26 Firefox A very popular open source Web browser for Windows, Mac and Linux from the Mozilla project. 14:27:32 ~duck Edinburgh 14:27:33 The capital of Scotland, in the eastern part of the country on the Firth of Forth. 14:27:40 ~duck Forth 14:27:41 hey taneb 14:27:41 Phantom_Hoover: You have 1 new message. '/msg lambdabot @messages' to read it. 14:27:41 A river of south-central Scotland flowing about 187 km eastward to the Firth of Forth, a wide inlet of the North Sea. 14:27:44 Phantom_Hoover, hey 14:27:47 did you do that thing 14:27:57 The thing that I think you mean? 14:27:58 Yeah 14:32:31 Okay, for my Fueue interpreter 14:32:34 The Interpreter works 14:32:38 The Parser works 14:32:42 The input doesn't work 14:32:52 input schminput 14:34:11 File input, that is 14:34:25 Well, file input and parsing aren't playing nice 14:34:28 I think they both work 14:47:22 @ask oerjan Can I get you to write the main function for me? 14:47:22 Consider it noted. 14:47:43 I saw a van today marked "Elliot [sic] Hird and co." 14:49:15 atriq: my C version is working, and can use --print as an option to print the current queue at each iteration 14:49:34 :) 14:49:38 Wow 14:50:08 if you have a corner of the web dedicated to fueue I would be glad to have the interpreter there, so that we can get rid of the "unimplemented" on the wiki 14:50:44 and we could also add a few programs on the wiki, such as (empty), hello world, the infinite loop ):[):], and oerjan's ABCD... 14:51:26 Gregor, can Arc_Koen put his interpreters for Fueue in the Esoteric File Archive? 14:52:14 btw, yesterday I had an idea for my first esoteric language 14:52:18 -!- kinoSi has quit (Read error: Connection reset by peer). 14:52:23 it'd be called "Ftack" 14:52:30 atriq: Do I have access to the Esoteric File Archive? >_> 14:52:37 Gregor, the wiki says you do 14:52:46 -!- kinoSi has joined. 14:52:49 Are you the same Gregor as normal? 14:52:57 Why does the wiki say I do <_< 14:53:08 Maybe because you do? 14:53:27 I might… 14:53:52 http://esolangs.org/w/index.php?title=The_Esoteric_File_Archive&diff=prev&oldid=8132 14:53:56 Your past self thinks you do 14:54:35 atriq: so in Ftack, everything is like Fueue except we're using a stack instead; if the first value is a function which cannot be executed immediately, or if it's a block, it is sent back to the top of the stack 14:54:56 So it's a deque? 14:55:01 no, it's a stack 14:55:15 (it's a joke, actually) 14:55:16 Oh, I read that wrong 14:55:19 Gee, even I forgot I have write access I guess. 14:55:27 Well, if I can remember my username and password, gimme dem files. 14:55:53 shall I send you an email, or may I try the dcc stuff? 14:55:53 Arc_Koen, send Gregor your interpreters, he'll put them in the esoteric file archive 14:56:10 atriq, stop pretending nobody but you knows what they're doing 14:56:21 Feel free to try DCC. 14:57:03 Anybody know if you can check whether you have svn commit access without committing? X-D 14:57:57 "In this analogy, the orange is the Trojan, the person is Earth, and the Ferris wheel is our orbit around the sun." 14:58:26 "In this analogy, the orange is the Trojan™, the person is Earth, and the Ferris wheel is our orbit around the sun." 14:58:32 Oh what a difference a ™ can make. 14:59:06 can it still be edited once it's in the archive? 14:59:20 It's svn, it can always be updated. 14:59:27 ok 14:59:45 I'm just asking in case someone points out how dirty my code is, or something 15:00:05 Your code is bad and you should feel bad. 15:01:20 -!- pikhq_ has joined. 15:01:29 Received a malformed DCC request from Arc_Koen. 15:01:36 Mayhap email ;) 15:01:38 well that's a start 15:02:01 -!- pikhq has quit (Ping timeout: 268 seconds). 15:02:45 is that better? 15:02:55 I clicked 'accept' but nothing is happening. 15:04:06 ok, then it's probably not working 15:10:24 aaand sent 15:21:24 Arc_Koen: How about something with circular buffers? 15:21:43 With the feature that one of the elements possible of the circular buffer is a circular buffer 15:22:16 the first would seem cool, but I'm not quite sure I understand how the second works 15:23:04 Let's say you have a circular buffer with the values 1, 2, 'a', "something" and another circular buffer as a value 15:23:10 That's what I mean 15:23:33 You could make the circular buffers fixed size so that it's harder 15:23:49 Or variable size for ease 15:24:15 ok, but how do you use the buffer? 15:31:26 > 1077379 / 60 15:31:27 17956.316666666666 15:33:47 atriq: if $ is to be applied to a negative number, does it result in an error or is $ sent back? 15:33:57 also if the top value is a negative number? 15:34:07 For $, an error, I would think 15:34:21 You basically would use the buffer as a circular stack 15:34:26 Possibly also an error as the second 15:34:44 And I'm thinking you'd get 1 non-buffer register, or access to two separate buffers 15:35:09 And you can go to a sub-buffer, where all operations now will apply to the sub-buffer 15:35:10 I think wherever the specs are ambiguous or lacking, it's implementation-depenedant 15:35:16 -!- atriq has quit (Quit: guitar hero time). 15:35:50 The program is ran in an infinite loop unless a halt statement is encountered 15:35:53 don't try to do cliffs of dover past medium difficulty!!! 15:36:09 ohhhhhh you're talking about fueue? 15:36:19 the word "buffer" confused me 15:36:35 No, I'm talking about a theoretical language 15:36:43 -!- boily has quit (*.net *.split). 15:36:43 -!- lifthrasiir has quit (*.net *.split). 15:36:43 -!- fizzie has quit (*.net *.split). 15:36:45 -!- Cryovat has quit (*.net *.split). 15:36:50 That doesn't exist yet 15:36:54 ok :) 15:37:19 So let's say you want to create a program that calculates fibbonacci numbers 15:37:43 I'm not sure how this works though 15:39:42 so, when the next value is encountered 15:39:48 { 0 1 } v dup 1 rot + . 15:40:13 { } creates a sub-buffer 15:40:14 "rot" basically acts as "send it back to the end of the queue", right? 15:40:30 Arc_Koen: Sure, but you can also rotate a negative amount 15:40:31 -!- ais523 has joined. 15:40:31 -!- boily has joined. 15:40:31 -!- lifthrasiir has joined. 15:40:31 -!- Cryovat has joined. 15:40:31 -!- fizzie has joined. 15:40:35 right 15:41:08 And code on a buffer by default loops 15:41:12 and what happens with functions like "dup" and "+", where is the result stored? 15:41:35 (that is, is there an automatic "rot 1" after every function?) 15:41:42 (or rot 2 for dup) 15:42:21 Basically, if you have { 0 1 }, after the dup you have { 0 1 1 }, and after the 1 rot you have { 1 0 1 } 15:42:31 rot rotates right by default 15:42:36 -!- donmarquis has joined. 15:42:47 so v means "get one level deeper" or something? 15:43:15 Yes 15:43:29 ^ would go up one level (or stop the program) 15:43:38 so the instructions are still in the main buffer, but apply to the subbuffer? 15:44:38 v creates a new code buffer, and ^ ends it 15:45:12 So in lisp, code and data is lists, in cbuf, it's circular buffers 15:45:21 yeah but I mean if v stucks us into the subbuffer we cannot access the dup 1 rot + any longer 15:45:42 No, the dup 1 rot + only apply to the subbuffer 15:46:48 ok, so the program is always the main buffer, and subbuffers are only data? 15:50:08 The code between the v and ^ has no way of accesing the data in the external buffer 15:50:37 -!- AnotherTest has joined. 15:50:48 Other than by moving it into the secondary buffer 15:50:51 Hello 15:50:56 Hi 15:52:48 -!- zzo38 has joined. 15:52:53 If you create a function, that function can only accept only one argument 15:53:02 But you can make that argument a buffer 15:54:27 dup could be defined as something like dup: x x 15:54:47 Where x is the value passed 15:55:45 well that looks interesting but I think I need more "visual" explanations 15:56:18 Were there some versions of Anarchist Cookbook that were not released to the public? 15:57:02 Arc_Koen: It's basically like programming with stacks of arbitrary elements, except you can rotate the stack 15:57:17 yes, that part I understand 15:57:30 I'm having trouble visualizing what the subbuffers are 15:57:40 are they inside the main buffer? 15:57:47 Yes 15:58:21 And you can do something like { } v { 1 2 } { 3 4 } ^ 15:58:37 Which creates a buffer, with two buffers as elements 15:59:34 -!- ais523_ has joined. 15:59:37 What is between the { and } is just the initial values for the buffer 15:59:53 To change what's in it afterwards, you use v 16:00:03 -!- ais523 has quit (Ping timeout: 252 seconds). 16:00:46 -!- ogrom has joined. 16:01:25 I'm thinking about the logistics of putting code in the initial values too 16:02:01 { 0 dup . } e 16:02:10 This would print an infinite amount of zeroes 16:02:26 Although 16:02:33 It might have to be { dup . 0 } 16:02:55 So that you always start with the rightmost value at the top 16:03:23 e means execute 16:03:36 Hmm, how would you push code in as data... 16:05:42 I should write an interpreter for this 16:08:15 x would explode a buffer 16:08:24 So { 1 2 3 } x is the same as 1 2 3 16:08:42 how about a command "flatten" that explodes all buffers 16:09:41 That could be implemented as a function 16:12:55 * FreeFull looks up where he left the source of his RPN calculator 16:16:13 Writing it in C would be a bit inconvienient because I'd have to handle resizing the buffers myself 16:16:27 But that shouldn't be too complicated 16:16:55 Famous last words 16:17:35 The bigger challenge would be having arbitrary types of elements 16:17:44 unions 16:18:02 oh, you mean like bools, chars, ints, etc.? 16:19:04 I would recommend ocaml though, it's perfect for interpreters 16:22:10 -!- itidus20 has changed nick to itidus21. 16:27:40 Sometimes I wish the US had political parties with platforms more sophisticated than “we hate the other political party”. 16:28:29 -!- ais523_ has quit. 16:28:55 this millenium it's all about website law 16:29:54 my life is so boring o.o 16:30:58 -!- AnotherTest has quit (Quit: Leaving.). 16:31:05 -!- AnotherTest has joined. 16:35:33 and i know the ugly truth about marriage.. if you go into it unwilling to change.. you will come out of it, much like leaving an elevator, unchanged 16:36:40 or maybe more to the point, if you go into it expecting or needing it to change you, it will let you down 16:36:55 Arc_Koen: But then I would have to learn OCaml before writing the interpreter =P 16:37:15 two birds one stone! 16:37:17 somehow at age 30 change seems impossible 16:37:26 or maybe two stones one bird, depending on how you look at it 16:38:38 i guess you have to be open to change, which means a risk that things could get better while also getting worse 16:39:49 Arc_Koen: Please add attribution and copyright/licensing headers to these files. 16:40:07 or, maybe at 30 you realize that a change is simply a new routine replacing an old routie 16:40:27 ok 16:40:54 is there a list of infos I'm supposed to put in there or should I go with my imagination? 16:41:25 works of art seem to be mere dice which invoke this emotion or that emotion 16:42:51 just how it can seem 16:43:13 Arc_Koen: Go to copyfree.org, click a random license, and splat it at the top with your name or pseudonym. Or, if you want to actually think, then do something else. I'm just not going to upload files with no attribution or licensing. 16:44:04 \0 17:01:04 sent! 17:02:34 As usual, you give someone without experience using licenses license to license [read that three times fast], and inevitably they will write something obnoxious and non-F/OSS themselves. 17:02:36 I'll add it. 17:05:40 Hm. 17:05:47 And now we play the "guess what my password might have been" game. 17:06:04 Gregor: Try "1234" or "passwort". 17:07:09 begin by creatin--- 17:07:17 try "1234" or "passwort" 17:07:47 does it sound obnoxious? 17:07:50 it was not intended to 17:08:22 In principle, I have commit access. In practice, I haven't committed anything in six years and don't really recall my password, which may very well have been specific to this account. 17:08:41 Arc_Koen: It's not F/OSS. 17:08:48 oh guess your own password. that game sucks 17:09:16 Describe what you have written. And then we can see that it is obnoxious and non-F/OSS, and then fix both problems. 17:10:04 uh well I meant to write that people were free to use it or do whatever with it, but that it would be very appreciated if they could let me know what use they made of it 17:10:33 You restricted commercial use. That's non-F/OSS. And quite ridiculous given that nobody under any circumstances is going to use it commercially. 17:10:36 and then I thought maybe I have to add something about the use being for non-profit goals or something 17:11:21 then maybe I should just delete that line 17:11:50 Or maybe you shouldn't try to be clever and write your own license when there are dozens, if not hundreds, of good ones out there already X_X 17:11:55 The bigger issue right now is that I simply don't have access to commit this X-D 17:11:56 Arc_Koen: Write that it is appreciated but not required to let you know what use they make of it. And you also have to not restrict commercial use (except possibly trademark licenses) 17:11:57 I mean, maybe I do. 17:12:09 But it's been six years. 17:12:41 isn't there a standard license for the esoteric file archive? 17:12:47 No. 17:13:17 So long as it's legal o distribute it via the file archive, it can be put there. I take objection to your license on personal grounds. 17:13:23 *legal to 17:13:53 But it's all moot since you're going to have to find somebody else to put it online X-D 17:15:30 well I'll try to find something better until I can find someone else then :) 17:15:33 I can make a copy too, if the license is acceptable. Send it using netcat or sprunge and I will then make a public backup copy. 17:19:59 Arc_Koen: Can you host it yourself? 17:20:08 not really no 17:21:09 I can host it under my HTTP server and/or gopher server if the license is acceptable, if you want to. 17:22:29 that would be great - I'm kind of in a hurry now though 17:22:31 thank you 17:22:36 -!- Arc_Koen has left. 17:22:46 -!- atriq has joined. 17:26:06 Well, the parser section of my PROgram is 22 lineS 17:26:27 THis IS agAInsT THE iNTERpretER seCTIon OF my CODE whicH IS 72 17:26:34 welL 17:26:36 74 17:27:04 IT IS HArder TO Type WHEN your BROTHer is sPOradiCALLy hOLDING DOwn ThE sHiFt BuTtOn 17:27:09 @wn archive 17:27:10 *** "archive" wn "WordNet (r) 3.0 (2006)" 17:27:10 archive 17:27:10 n 1: a depository containing historical records and documents 17:27:10 v 1: put into an archive [syn: {archive}, {file away}] 17:27:12 I see the esoteric file archive is living up to its name, if it can't be written to. 17:27:26 !rot13 atriq 17:27:28 ngevd 17:27:36 I never even realized that! 17:27:53 ~duck ngevd 17:27:54 --- No relevant information 17:27:58 meh. 17:28:17 I WAS deMoNSTAtING thE etYmoLogy OF my NIck TO THe aFOREMENtioNED sIBLiNg 17:28:48 `WeLcOmE atriq 17:28:49 HI 17:28:52 AtRiQ: wElCoMe tO ThE InTeRnAtIoNaL HuB FoR EsOtErIc pRoGrAmMiNg lAnGuAgE DeSiGn aNd dEpLoYmEnT! fOr mOrE InFoRmAtIoN, cHeCk oUt oUr wIkI: hTtP://EsOlAnGs.oRg/wIkI/MaIn_pAgE. (FoR ThE OtHeR KiNd oF EsOtErIcA, tRy #EsOtErIc oN IrC.DaL.NeT.) 17:29:00 Tell your brother to go away 17:29:40 I Have doNe SO> hE proMises To DepArt sooN 17:30:05 atriq: i think its fun to share the keyboard with your brother 17:30:23 You would. 17:30:25 zzo is a bit uptight about it 17:30:28 oh NO HE'S BACK 17:30:35 BOOM 17:30:50 God he's a quick typer 17:31:03 That was with one finger 17:31:12 AND I COULDN'T STOP HIM 17:32:12 sorry zzo, i guess i am living in my childhood still 17:33:06 -!- Phantom_Hoover has quit (Ping timeout: 264 seconds). 17:36:12 -!- atriq has quit (Quit: Leaving). 17:36:24 !rot13 AND I COULDN'T STOP HIM 17:36:25 NAQ V PBHYQA'G FGBC UVZ 17:36:48 guess his bro won the complete access to their computer... 17:37:00 hmm 17:37:34 i guess i don't understand what happened 17:39:53 but still, nations are born and die within the minds of men, and yet, for all this, mortality does not retire for the individual 17:40:29 really a nation is just a toy 17:40:58 something fabricated by bored individuals 17:41:39 I doubt they were bored 17:41:47 It's possible though 17:43:14 well, at least i am wrong 17:43:19 its a good start 17:46:46 AnotherTest: well its 3:40am, and i have an appointment at 9:40am... still not sure if i'll be sleeping or staying awake 17:47:09 it gets me agitated whenevr i have to do something the next day 17:49:46 Why do you get up at 3:40 AM when you have your first (I assume) appointment of the day at 9:40 AM 17:51:05 ive been awake since about 1:30pm 17:51:16 ahahaha 17:51:26 anyway, check out this screenshot of ebay http://oi45.tinypic.com/og9htf.jpg 17:52:37 itidus21: that still does not answer my question 17:53:16 first = only :D 17:53:40 well 17:55:09 having an appointment actually increases my inability to sleep 17:55:23 because i see it as a constraint on how much i can do that night 17:55:31 and so suddenly i want to do more that night 17:55:53 but the appointment is not at night 17:56:05 so how is it a constraint on what you can do at night? 17:56:40 because having to sleep means i lose control of when i sleep 17:59:08 So now you are bored because you have no idea what to do? 17:59:23 Well, that's generally the case. 17:59:37 What you should do is: 17:59:41 make yourself useful 18:00:09 i like sleeping because i'm the sort of person who very quickly gets tired without sleep 18:01:03 then sleep, for it is most useful 18:01:28 -!- Eladith has quit (Ping timeout: 268 seconds). 18:01:50 i don't get bored though :D 18:01:56 i have that on my side 18:02:45 i get tired and anxious.. those could be related to broed 18:02:48 ^bored 18:03:15 anxious how so? 18:03:23 i don't know :) 18:03:33 is this appointment a presentation? 18:03:37 the person i am seeing is a psychologist 18:03:39 :P 18:04:10 ah 18:04:19 so you don't have to actually talk too much? 18:04:32 oh.. its very active 18:05:02 But there are not many people around...? 18:05:26 yeah, its not like i am being paid 18:06:36 but its going well... slowly some things in my life becoming healthier 18:07:15 like he talked me into having showers 18:08:32 great 18:08:37 why wouldn't you take a shower? 18:09:06 im not entirely sure 18:09:47 So you always took a bath instead of a shower? Well not sure what's wrong with that either. 18:09:57 i never said i took a bath 18:10:06 Although showers take less time than baths. 18:10:16 I assumed you did. 18:10:20 ya 18:10:43 this is the aha moment of why i am seeing psychologist 18:10:57 I already knew 18:10:58 -!- Arc_Koen has joined. 18:11:06 i mean, not shower, not bath 18:11:21 its just one facet of things 18:12:01 -!- Arc_Koen has quit (Quit: Are you telling me you can build a time machine but you can't cook a cheese soufflé? You've got your priorities all wrong!). 18:12:22 -!- Arc_Koen has joined. 18:14:14 -!- soundnfury has joined. 18:24:45 -!- donmarquis has quit (Remote host closed the connection). 18:34:32 -!- AnotherTest has quit (Quit: Leaving.). 18:50:17 r 18:50:20 replacing string code-building with closures = joy 18:52:25 -!- kinoSi has quit (Read error: Connection reset by peer). 18:52:53 -!- kinoSi has joined. 18:55:35 -!- atriq has joined. 19:06:21 -!- krofna has joined. 19:07:29 -!- krofna has quit (Remote host closed the connection). 19:15:26 -!- oerjan has joined. 19:17:51 @messages 19:17:52 atriq said 9h 35m 17s ago: Wow, I better learn them too! 19:17:52 atriq asked 4h 30m 29s ago: Can I get you to write the main function for me? 19:18:03 atriq: maybe 19:18:32 @massages 19:18:32 You don't have any new messages. 19:18:41 oerjan, http://hpaste.org/73947 19:19:00 Actually, that's not right 19:23:37 -!- hagb4rd has quit (Read error: Operation timed out). 19:24:47 -!- ogrom has quit (Quit: Left). 19:35:49 -!- atriq has quit (Ping timeout: 268 seconds). 19:38:18 @hoogle IO String 19:38:19 Did you mean: :: IO String 19:38:19 System.IO.Error ioeGetErrorString :: IOError -> String 19:38:19 System.IO.Error ioeSetErrorString :: IOError -> String -> IOError 19:38:24 @hoogle :: IO String 19:38:24 Prelude getContents :: IO String 19:38:24 System.IO getContents :: IO String 19:38:25 Prelude getLine :: IO String 19:40:16 :t readFile 19:40:18 FilePath -> IO String 19:43:12 oerjan: thanks to zzo38 my interpreters are accessible now 19:43:31 http://zzo38computer.cjb.net/esoteric/Arc_Koen/ 19:55:02 -!- nortti- has joined. 19:56:48 -!- pikhq has joined. 19:57:08 -!- pikhq_ has quit (Ping timeout: 248 seconds). 19:58:55 -!- asiekierka has quit (Remote host closed the connection). 20:01:47 -!- pikhq_ has joined. 20:01:54 -!- pikhq has quit (Ping timeout: 244 seconds). 20:06:04 :t hPutStr 20:06:05 Not in scope: `hPutStr' 20:06:19 @hoogle Handle -> String -> IO () 20:06:19 System.IO hPutStr :: Handle -> String -> IO () 20:06:19 GHC.IO.Handle hPutStr :: Handle -> String -> IO () 20:06:20 System.IO hPutStrLn :: Handle -> String -> IO () 20:08:20 -!- atriq has joined. 20:11:09 > error "Test" 20:11:32 argh 20:11:32 > 2+2 20:11:36 @ping 20:11:39 :( 20:11:50 pong 20:11:50 4 20:11:51 mueval-core: L.hs: removeLink: does not exist (No such file or directory) 20:11:59 > error "Test" 20:12:00 *Exception: Test 20:16:53 -!- esowiki has joined. 20:16:57 -!- esowiki has joined. 20:16:57 -!- esowiki has joined. 20:17:14 -!- esowiki has joined. 20:17:18 -!- esowiki has joined. 20:17:18 -!- esowiki has joined. 20:18:01 -!- esowiki has joined. 20:18:01 -!- glogbot has joined. 20:18:01 -!- glogbackup has left. 20:18:05 -!- esowiki has joined. 20:18:05 -!- esowiki has joined. 20:18:17 -!- sivoais has quit (Ping timeout: 256 seconds). 20:19:59 oh wait darn 20:20:24 -!- sivoais has joined. 20:20:31 Yeah, I tried before and it failed for some strange reason 20:21:03 -!- Phantom_Hoover has joined. 20:23:45 atriq: pasted again, i got some things in the wrong order 20:24:01 (ironically half cancelling each other out, but not quite) 20:27:32 -!- impomatic has joined. 20:27:47 -!- boily has quit (Quit: Poulet!). 20:27:47 atriq: i leave to you to actually test it >:) 20:28:15 -!- cuttlefish has quit (Remote host closed the connection). 20:29:40 -!- FireFly has joined. 20:32:00 -!- boily has joined. 20:34:44 It occurs to me that I have no idea how to write a parser <-- you seem to have learned fast :P 20:34:59 I mostly guessed and got lucky 20:35:38 atriq: why are the fueue functions characters rather than words like "dup", "pop", etc.? 20:35:53 it would probably have been more readable 20:35:54 Arc_Koen, inspired by Underload 20:36:06 I was following underload'lead 20:36:19 *+s\ 20:36:26 ah, everybody here seems to be praising that mysterious language... 20:36:30 I careful did not step into it 20:39:14 ^ul (12)S(*a(~:)~*^~):((1)S)~*~((2)S:*)~*:(~:()~)~*^(a(:^)*~a(*()~)~*^~^):^ 20:39:16 122112122122112112212112122112112122122112122121121122122112122122112112122121122122112122122112112212112122122112112122112112212112112212211212212112212212112112212211212212112112212112122112112122121122122112122122112112122112112212212112122112112212112112212212112122112112122122112122121121122122121122122112122122112112 ...too much output! 20:39:20 * oerjan whistles innocently 20:39:56 ^bf +[+.] 20:39:56 .. !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ... 20:40:02 >_> <_< 20:40:16 but that's not the kolakoski sequence. 20:42:57 * oerjan obviously stepped _way_ too deeply in it, seeing as he is the source of most of the wiki page. 20:46:53 also loud enough to destroy the Earth if interpreted as sound intensity <-- * the universe hth 20:47:50 (no, a mere vacuum isn't going to stop 300000 dB. trust me.) 20:50:51 i think compiling underload minus S (but including (...)S) into fueue should be doable 20:51:41 (the "minus S" is so we don't need to preserve the string representations) 20:51:50 i hear no one knows pretty much anything about the kolakoski sequence 20:52:18 oklopol: all computational evidence says it's 50% 1's, but no one knows for sure 20:53:43 -!- MoALTz_ has joined. 20:53:43 ah yes. they study this stuff in my uni but i haven't really touched it (CA are 50% more awesome). 20:54:11 i think there are many simpler open problems about it which have partial answers 20:57:13 -!- MoALTz has quit (Ping timeout: 268 seconds). 20:59:13 Arc_Koen, it isn't possible to have negative numbers in the initial program <-- added to wiki 21:00:05 feel free to mark it as no longer unimplemented :) 21:00:39 here are the fueue.c and fueue.ml implementations: http://zzo38computer.cjb.net/esoteric/Arc_Koen/ 21:01:19 -!- FireFly has quit (Changing host). 21:01:19 -!- FireFly has joined. 21:01:20 I also asked him a few other questions, like what happens when trying to divide by 0, or to apply $ with a negative first argument 21:02:15 apparently, for all functions: if arguments of the right type are present but some have invalid values, then it results in an error 21:02:22 -!- TeruFSX has joined. 21:02:44 is arc koen your real name? 21:02:57 also an error for negative numbers to be output 21:03:01 nope 21:03:12 how shall i refer to you on the wiki? 21:03:14 but I did include my real name in the files 21:03:19 oh hm 21:03:46 Is colorburst a greenish-yellow color? 21:05:13 ok your real name is now on the wiki 21:07:30 sweet! what about a few programs: (empty), "72 101 108 108 111 44 32 119 111 114 108 100 33 10 H", "):[):]", and your dazzling alphabet ")$2[)$--------2~)~~[)[)~(~[~[$~H~]~)%+~91-):]~1+:])]]~[$~H~])%+-91)[65][65]" 21:07:31 -!- Vorpal has joined. 21:09:09 > chr . read <$> words "72 101 108 108 111 44 32 119 111 114 108 100 33 10" 21:09:11 "Hello, world!\n" 21:13:45 -!- nooga has quit (Ping timeout: 244 seconds). 21:15:19 Arc_Koen: done! 21:16:44 oerjan: I had an idea for a new language! 21:16:50 it would be called: "Ftack" 21:18:10 it works exactly like fueue, except with a stack; if the top element isn't either a number or a function with appropriate values directly behind it, it is sent back to the top of the stack. 21:18:31 -!- boily has quit (Quit: Poulet!). 21:18:44 Arc_Koen: um that's basically underload. 21:18:51 oh 21:18:53 is it? 21:18:58 No it isn't 21:18:58 oh wait not with the type checks 21:19:09 ok then 21:19:12 It's an almost useless joke language 21:19:17 yes :) 21:19:59 -!- augur has quit (Remote host closed the connection). 21:20:05 well we _do_ have a joke languages category :) 21:21:50 ironically I'm guessing some small programs that were hard to write in fueue would be easy to write 21:22:08 because the duplicating works well for loops 21:24:16 PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANTS 21:24:41 The pants of Narcissus? 21:25:10 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANTS in the PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANTS. 21:27:03 -!- nortti- has quit (Quit: AndroIRC - Android IRC Client ( http://www.androirc.com )). 21:28:37 oh hm 21:28:55 :: is another infinite loop for both fueue and ftack :) 21:29:06 atriq: Indeed. 21:29:11 atriq: I have three more pair now. 21:29:18 Oh dear god 21:29:30 Are you sure they aren't just reflections of the first pair in a pool? 21:30:22 Well, they're different colors. 21:30:23 So yeah. 21:31:01 have a good night 21:31:11 -!- Arc_Koen has quit (Quit: Are you telling me you can build a time machine but you can't cook a cheese soufflé? You've got your priorities all wrong!). 21:34:14 in ftack, it's useless to duplicate (with : or $) anything other than a number and :~! 21:35:05 anything else will either give you something which doesn't evaluate, or something which turns soon into a block (which doesn't evaluate) or halts. 21:36:01 in particular < and ( are completely useless 21:38:22 this means you can never usefully increase the number of blocks in a program... 21:40:54 also duplicating a : gives you immediately an infinite loop. anything else reduces the number of :'s in the program. 21:41:00 pretty useless indeed. 21:48:51 Hmm. Silliest possible way of running Win3.1 programs on modern Windows: Desqview/X hosting Windows 3.1 programs, served over X, onto a Windows X server. 21:52:11 Didn't know it did that too; just thought it was a X server. 21:54:06 It runs Windows 3.1 and DOS as X programs via hax. 21:54:35 DOS by using a virtual VGA framebuffer and scraping it, Windows 3.1 by installing a video driver that makes it render via X11. 21:56:28 I thought it ONLY did that, I don't think it was an X server. 21:56:40 It does have an X server too. 21:56:43 It is an X server. 21:56:48 And a partial UNIX. 21:56:59 *ports Microcosm* 21:57:15 (that is, it provides enough of a libc that you can have native X programs without Pain and Agony) 21:57:26 I've IRC'd from it before. 21:58:20 -!- Vorpal has quit (Ping timeout: 265 seconds). 22:00:09 It actually ships with TWM and the Motif WM. 22:00:48 -!- MoALTz_ has quit (Quit: brb). 22:02:20 o.O' 22:02:25 They had a real mode xlib? 22:04:34 -!- pikhq has joined. 22:06:54 -!- pikhq_ has quit (Ping timeout: 268 seconds). 22:07:05 -!- atriq has quit (Remote host closed the connection). 22:15:58 -!- augur has joined. 22:38:22 Idea for Magic: the Gathering card: All "may" must always be selected instead of being that player's choice. 23:40:06 and what if another choice must be made? 23:50:31 The player still makes the choice such as targets and so on. If something says "you may discard a card" then he must discard a card if he has one but he can select which one. 23:52:01 If this card is in effect and another effect says "you may draw a card", then the player must draw a card (there are no other choices to be made); if he has no cards to draw, he loses the game. 23:56:40 ok 23:56:46 you could also have a variant which gives the choice to someone else 23:57:13 -!- monqy has joined. 23:58:21 Yes, that is another possible variant.