2007-03-01: 00:05:16 -!- _D6Gregor1RFeZi has changed nick to GregorR. 00:24:07 -!- nazgjunk has joined. 00:35:57 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 00:36:08 -!- UpTheDownstair has joined. 00:37:44 -!- UpTheDownstair has quit (Client Quit). 00:38:06 -!- digital_me has quit ("Lost terminal"). 00:38:36 -!- digital_me has joined. 00:43:12 -!- digital_me has quit (Client Quit). 00:47:20 -!- digital_me has joined. 01:12:03 -!- nazgjunk has joined. 01:20:49 -!- crathman has joined. 01:26:24 -!- digital_me has quit ("leaving"). 01:27:27 -!- wooby has quit. 01:29:49 -!- nazgjunk has quit ("Leaving"). 01:58:23 -!- digital_me has joined. 02:18:02 -!- tgwizard has quit (Remote closed the connection). 03:01:12 -!- SevenInchBread has joined. 03:23:46 -!- wooby has joined. 03:33:01 -!- digital_me has quit ("leaving"). 03:38:22 -!- SevenInchBread has quit (Read error: 104 (Connection reset by peer)). 03:38:31 -!- SevenInchBread_ has joined. 03:39:36 -!- SevenInchBread_ has changed nick to SevenInchBread. 04:02:16 -!- crathman has quit (Read error: 104 (Connection reset by peer)). 04:02:38 -!- crathman has joined. 04:18:43 -!- crathman has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.2/2007021917]"). 04:22:28 -!- SevenInchBread has quit (Read error: 113 (No route to host)). 05:15:54 -!- ShadowHntr has joined. 05:24:05 -!- ShadowHntr has quit ("End of line."). 05:27:58 -!- ShadowHntr has joined. 06:17:04 -!- RodgerTheGreat has quit. 06:17:21 -!- oerjan has quit ("leaving"). 06:35:40 -!- GreaseMonkey has joined. 06:44:36 -!- ShadowHntr has quit ("End of line."). 07:30:16 -!- wooby has quit. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:14:15 -!- GreaseMonkey has quit ("gnight0r"). 08:20:53 -!- anonfunc has quit (Read error: 145 (Connection timed out)). 08:22:41 -!- bsmnt_bot has quit (Read error: 145 (Connection timed out)). 08:31:37 -!- Sukoshi` has joined. 08:32:31 -!- kxspxr has joined. 08:34:27 -!- kxspxr has quit (Client Quit). 08:34:32 -!- kxspxr has joined. 08:34:38 -!- kxspxr has quit (Remote closed the connection). 08:50:33 -!- oklofok has joined. 09:00:01 -!- oklopol has quit (Read error: 110 (Connection timed out)). 09:01:38 -!- AfterDeath has quit (Read error: 104 (Connection reset by peer)). 09:02:35 -!- AfterDeath has joined. 09:31:15 -!- sebbu has joined. 10:07:12 -!- Sukoshi` has quit ("Neh."). 10:13:17 -!- AfterDeath has quit (Read error: 104 (Connection reset by peer)). 10:14:24 -!- AfterDeath has joined. 10:14:50 -!- nazgjunk has joined. 10:35:08 -!- pgimeno has quit (Read error: 104 (Connection reset by peer)). 10:35:25 -!- pgimeno has joined. 10:43:08 -!- jix__ has joined. 10:52:40 -!- nazgjunk has quit (Read error: 131 (Connection reset by peer)). 10:53:01 -!- nazgjunk has joined. 10:57:21 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)). 10:57:51 -!- nazgjunk has joined. 11:20:33 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 11:20:57 -!- nazgjunk has joined. 12:34:16 -!- tgwizard has joined. 13:39:39 -!- goban has joined. 14:00:24 -!- jix__ has quit (Read error: 110 (Connection timed out)). 14:00:43 -!- jix__ has joined. 14:27:46 -!- oerjan has joined. 14:37:01 -!- goban has quit (Connection timed out). 14:37:11 -!- goban has joined. 15:40:15 -!- goban has quit (Connection timed out). 15:52:18 -!- crathman has joined. 16:01:19 -!- sebbu2 has joined. 16:20:00 -!- sebbu has quit (Read error: 110 (Connection timed out)). 16:20:00 -!- sebbu2 has changed nick to sebbu. 17:08:49 -!- RodgerTheGreat has joined. 17:09:03 hi everyone 17:10:20 hi 17:11:15 how goes it, oerjan? 17:11:31 writing a Forte interpreter 17:11:40 cool 17:11:50 what language are you coding it in? 17:11:54 Haskell 17:13:05 using a purely functional parsing library to parse an interactive interpreter with continuation lines has its, ahem, issues. 17:13:17 heheh 17:13:34 well, that's why this is #Esoteric 17:13:47 it wouldn't be proper if it wasn't a challenge 17:14:31 well - there are many esoteric languages that are much easier to implement than to use. 17:16:56 like bitwise cyclic tag. 17:16:59 * RodgerTheGreat shudders 17:19:56 !help 17:19:59 help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon 17:20:01 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl 17:33:09 -!- oerjan has quit ("leaving"). 17:55:32 -!- goban has joined. 19:13:43 -!- ShadowHntr has joined. 19:24:03 -!- UpTheDownstair has joined. 19:24:16 -!- UpTheDownstair has quit (Client Quit). 19:41:55 -!- ShadowHntr has quit (Client Quit). 19:45:03 -!- Arrogant has joined. 19:57:01 -!- nazgjunk has quit (Connection reset by peer). 19:57:07 -!- UpTheDownstair has joined. 19:57:59 -!- UpTheDownstair has changed nick to nazgjunk. 20:04:04 -!- Arrogant_ has joined. 20:12:04 -!- goban has quit (Read error: 104 (Connection reset by peer)). 20:12:25 -!- goban has joined. 20:21:33 -!- UpTheDownstair has joined. 20:21:52 -!- nazgjunk has quit (Read error: 131 (Connection reset by peer)). 20:23:17 -!- goban has quit (Read error: 104 (Connection reset by peer)). 20:23:36 -!- goban has joined. 20:25:39 -!- Arrogant has quit (Read error: 113 (No route to host)). 20:35:27 -!- UpTheDownstair has quit ("Leaving"). 21:19:52 -!- goban has quit (Read error: 104 (Connection reset by peer)). 21:20:04 -!- goban has joined. 21:23:00 -!- Arrogant_ has quit ("Leaving"). 21:27:24 -!- goban has quit (Read error: 104 (Connection reset by peer)). 21:27:39 -!- goban has joined. 21:32:55 -!- oerjan has joined. 21:35:07 -!- nazgjunk has joined. 21:40:11 -!- wooby has joined. 21:44:28 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 21:47:12 -!- goban has quit (Read error: 104 (Connection reset by peer)). 21:47:27 -!- goban has joined. 22:23:37 -!- goban has quit (Read error: 104 (Connection reset by peer)). 22:23:49 -!- goban has joined. 22:41:30 -!- goban has quit (Connection timed out). 22:44:11 -!- nazgjunk has quit ("sleep :/"). 22:44:58 -!- goban has joined. 23:17:37 -!- goban has quit (Connection timed out). 23:17:55 -!- goban has joined. 23:25:29 -!- sebbu has quit ("@+"). 23:29:29 -!- crathman has quit (Read error: 113 (No route to host)). 23:36:27 -!- tgwizard has quit (Read error: 110 (Connection timed out)). 23:59:38 -!- crathman has joined. 2007-03-02: 00:04:13 -!- crathman has quit (Read error: 104 (Connection reset by peer)). 01:00:10 -!- lament has joined. 01:00:14 | 01:00:35 _ 01:00:56 \ 01:02:30 I guess I'm left with /, then. 01:03:50 . 01:05:24 : 01:06:25 ⁝ 01:06:30 01:06:44 oh no, Unicode 01:07:32 I hope my character was a correct U+205D TRICOLON (also called "Epidaurean acrophonic symbol three"); it looks correct elsewhere but not in this terminal. :/ 01:08:44 i'm afraid even on second attempt I just got the usual square... 01:13:06 hi 01:14:57 'lo 01:40:34 I wonder how to simplify things like ``SKx 01:41:03 exstentionaly 01:42:19 well it's simple in lambda calculus, but i don't know about SKI. 01:43:16 yeah 01:53:21 ok i've got it to do one variable to I and K 01:54:18 ``SKx ==> I 01:54:47 ``S`Kx`Ky ==> `K`xy 01:58:59 and of course ``S`KxI = x 02:01:02 ? 02:03:57 can't do ``S`KKI = K yet 02:05:21 why not? 02:05:41 It's possible, but the algorithm doesn't 02:05:51 aah, there 02:08:43 -!- SevenInchBread has joined. 02:08:58 now for multiple variables.... 02:09:05 hmmm... this is interesting... 02:09:41 I accidentally created an algorithm that produces (I think) a circle or maybe an ellipsis (I could only see half of it because the turtle window wasn't big enough) 02:10:01 I'll pastebin it so someone can explain the math behind it. 02:10:26 fun 02:11:52 http://deadbeefbabe.org/paste/3839 02:12:05 * SevenInchBread is messing around with fractals, thue, and turtles :) 02:14:49 what are some multiple argument extensional simplifications? 02:15:35 ....uh, what? 02:15:42 * SevenInchBread doesn't understand your lingo. 02:16:11 ``SKK is extensionaly equal to I 02:16:23 because ```SKKx = x 02:16:26 i think it may be simpler to convert to lambda calculus, eta-reduce, then convert back. 02:17:01 I don't understand eta reduction 02:17:24 \x.fx = f where f does not contain x 02:17:59 oh 02:18:20 you mean Kf 02:18:33 plus some beta-reductions too, i guess. 02:18:37 so... any clue why the numbers behave in such a way to create a circle(like) shape? 02:18:46 no. 02:19:48 But a SKI interpreter shouldn't need a lambda calculus interpreter 02:19:50 hmm... changing the right() method call to left() simply makes a smaller circle... weird 02:20:18 let's see. 02:20:38 the only changing parameter is dist. 02:20:52 it just flips back and forth from what I can tell. 02:21:00 to True and False for that condition. 02:21:23 * SevenInchBread breadcrumbs to find out for sure. 02:21:24 ooh, it does ``S`KxI now 02:22:06 i think i understand. 02:22:09 yup... it just goes back and forth betwen true and false. 02:22:56 essentially dict just fluctuates in some interval. 02:23:38 just... minute enough to... draw a circlish thing? 02:24:18 I looks almost like a perfect circle to me... although it could be oblongated mathematically. 02:24:54 _anything_ that goes through a lot of identical small turtle movements must create a circle. 02:25:30 because each cycle will move by the same amount, then turn the same amount. 02:25:39 ``S``S`KSK`KI 02:25:46 is equal to I 02:26:20 ah... yeah that makes sense. 02:26:38 darn... I thought I might have found some weird mathematical pattern. 02:27:10 alas 02:27:11 ... 8, 3, and 5 (the only numbers I used other than phi) are all heavily related with phi. 02:27:28 ...I picked them mainly because they're a few of my favorite numbers. 02:27:57 i believe any change in the constants which doesn't cause dist to diverge will still produce a circle. 02:28:51 until then I just got freaky scribble patterns... for an unrelated alg using a bunch of randomly pieced together computations. 02:29:11 you might change dist by functions that don't match quite as well as *= prod and /= prod 02:29:51 **= and /= maybe :) 02:29:56 then dist could change in a more complicated pattern. 02:30:40 hmmm.. 02:31:09 changing it to exponentiation makes the circle spin in a very tight spiral to the right... like the original except veering to the right very slightly each loop. 02:31:37 oh. 02:31:50 still a cyclic interval though... the distance is simply being gradually altered. 02:32:35 i think that must be roundoff errors in the Turtle graphics. It they were perfect you couldn't go in a particular direction. 02:32:43 *If 02:33:01 could be floating point? 02:33:07 yeah 02:33:16 * SevenInchBread uses Python's decimal format thing. 02:33:21 just to see. 02:33:28 -!- crathman has joined. 02:36:40 hmm... switching to decimal representation made exponentiation no longer work with phi as the exponent. 02:38:13 decimal.InvalidOperation: x ** (non-integer) 02:40:08 yessss it works now 02:40:55 ``S``S`KSK`KI ==> I 02:42:20 bah... using Decimal just makes the floating point math done in the turtle module screw up. 02:42:20 sweet 02:43:41 It's noticably slower now though 02:44:37 `x`x`x`x`x`xx takes like 1.5 seconds 02:44:44 hmmm... is decimal arithmetic considerably slower than good ol' floating point? 02:45:44 * bsmntbombdood disappears 03:08:29 I was thinking for Sophia I could automatically convert between floating point, long intergers, short integers, and decimally-represented numbers without having to worry about it. 03:09:21 ...as long as there's a way to predict which floating point operations won't be accurate... you could convert to decimal format for the operations. 03:10:10 ...huh? 03:11:41 decimal format... instead of binary floating point. 03:12:04 it basically mimics "schoolhouse" algorithms for doing math... so it's more accurate but takes more time 03:12:25 decimal format is not that much better. 03:13:00 you'll have to round off eventually, in any case. 03:15:11 adding more bits increases accuracy just as much as adding more decimals. 03:15:37 rationals for the win 03:15:43 It's mostly used in nitpicky computations... like finance and science... 03:15:53 yeah, but even they only work for arithmetic 03:16:03 just finance, i think. 03:16:14 yeah... mostly finance. 03:16:29 and that's not really because decimals are more accurate. 03:16:39 more... precise? or something like that? 03:17:01 because .1 has to be 1/10 03:17:22 it's because financial calculations are strictly defined by old traditions from before there were binary computers. 03:18:00 this simplifier is sloow now 03:19:05 aaah.... legal standardization more so than any gains in accuracy. 03:19:30 ``````````aaaaaaaaaaa takes like 5 minutes to return 03:19:44 the more simplifications you try to catch the closer you get to having to solve the halting problem :) 03:19:54 heh 03:20:15 although that does sound like maybe you need a better algorithm 03:20:22 or maybe you have bugs. 03:20:27 maybe 03:20:34 * SevenInchBread is reading up on number representations. 03:20:43 as in, repeating work bugs 03:21:10 yeah, there is one 03:23:50 http://pastebin.ca/377911 03:40:05 -!- SevenInchBread has quit (Read error: 113 (No route to host)). 04:04:08 -!- oerjan has quit ("Good night"). 04:46:05 -!- crathman has quit (Read error: 131 (Connection reset by peer)). 04:47:21 -!- crathman has joined. 04:51:34 -!- crathman has quit (Client Quit). 04:59:03 -!- Arrogant has joined. 06:18:45 -!- anonfunc has joined. 06:19:05 -!- ShadowHntr has joined. 06:19:06 -!- anonfunc has quit (Remote closed the connection). 07:32:34 -!- goban has quit (Remote closed the connection). 07:33:12 -!- goban has joined. 07:34:55 -!- wooby has quit. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:01:29 -!- Sukoshi` has joined. 08:04:42 -!- Sukoshi has changed nick to Sukoshi``. 08:04:47 -!- Sukoshi` has changed nick to Sukoshi. 08:08:48 -!- ShadowHntr has quit (Read error: 110 (Connection timed out)). 09:20:20 -!- Sukoshi has quit ("Bleh. Go time."). 09:21:24 -!- sebbu has joined. 10:18:18 -!- Arrogant has quit ("Leaving"). 10:27:16 -!- ShadowHntr has joined. 10:59:51 -!- ShadowHntr has quit ("End of line."). 13:21:03 -!- clog has joined. 13:21:03 -!- clog has joined. 13:30:48 -!- sebbu2 has joined. 13:36:24 -!- sebbu has quit (Nick collision from services.). 13:37:07 -!- sebbu2 has changed nick to sebbu. 13:50:28 -!- goban has quit (Read error: 104 (Connection reset by peer)). 13:50:31 -!- goban has joined. 13:59:54 42 14:11:10 -!- ais523 has quit. 14:29:00 -1 14:29:04 -!- oklofok has changed nick to oklopol. 14:39:51 -!- nazgjunk has joined. 15:17:14 -!- goban has quit (Read error: 110 (Connection timed out)). 15:17:26 -!- goban has joined. 15:37:16 -!- goban has quit (Connection timed out). 15:38:01 -!- goban has joined. 15:44:24 -!- UpTheDownstair has joined. 15:45:56 -!- nazgjunk has quit (Read error: 110 (Connection timed out)). 15:46:36 -!- UpTheDownstair has changed nick to nazgjunk. 16:53:20 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 16:53:50 -!- nazgjunk has joined. 18:53:32 -!- clog has joined. 18:53:32 -!- clog has joined. 19:18:12 -!- nazgjunk has quit ("Leaving"). 19:37:52 -!- ShadowHntr has joined. 20:29:05 -!- ShadowHntr has quit ("End of line."). 21:00:32 -!- jix__ has joined. 21:09:33 -!- jix has quit (Read error: 113 (No route to host)). 21:49:47 -!- ShadowHntr has joined. 22:39:06 -!- ShadowHntr has quit (Client Quit). 22:54:36 -!- wooby has joined. 23:00:18 I wrote a runtime ELF loader 8-D 23:00:35 It segfaults mysteriously >_> ... but only after the program has finished. 23:04:01 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 23:08:31 -!- kxspxr has joined. 23:32:06 -!- sebbu2 has joined. 23:34:18 -!- kxspxr has quit. 23:39:34 -!- sebbu has quit (Read error: 145 (Connection timed out)). 23:40:48 -!- wooby has quit. 2007-03-03: 00:46:17 -!- tgwizard has quit (Remote closed the connection). 00:56:51 -!- sebbu2 has quit ("@+"). 01:41:13 -!- nazgjunk has joined. 01:46:34 -!- EgoBot has quit (calvino.freenode.net irc.freenode.net). 01:46:34 -!- tokigun has quit (calvino.freenode.net irc.freenode.net). 01:46:34 -!- Sukoshi`` has quit (calvino.freenode.net irc.freenode.net). 01:46:34 -!- GregorR has quit (calvino.freenode.net irc.freenode.net). 01:46:35 -!- oklopol has quit (calvino.freenode.net irc.freenode.net). 01:46:35 -!- SimonRC has quit (calvino.freenode.net irc.freenode.net). 01:46:35 -!- NK` has quit (calvino.freenode.net irc.freenode.net). 01:46:35 -!- sekhmet has quit (calvino.freenode.net irc.freenode.net). 01:46:37 -!- nooga has quit (calvino.freenode.net irc.freenode.net). 01:46:37 -!- mtve has quit (calvino.freenode.net irc.freenode.net). 01:46:55 -!- wooby has joined. 01:47:12 -!- SimonRC has joined. 01:47:12 -!- NK` has joined. 01:47:12 -!- sekhmet has joined. 01:47:12 -!- oklopol has joined. 01:47:12 -!- GregorR has joined. 01:47:12 -!- EgoBot has joined. 01:47:12 -!- tokigun has joined. 01:47:12 -!- Sukoshi`` has joined. 01:47:12 -!- nooga has joined. 01:47:12 -!- mtve has joined. 02:02:51 -!- nazgjunk has quit ("Leaving"). 03:14:21 -!- nooga_ has joined. 03:22:59 -!- nooga has quit (Read error: 110 (Connection timed out)). 03:31:38 -!- ShadowHntr has joined. 04:35:50 -!- oerjan has quit ("Good night"). 05:17:10 -!- Remi__ has joined. 05:20:03 -!- Remi__ has quit ("Ex-Chat"). 07:56:03 -!- ShadowHntr has quit (Read error: 145 (Connection timed out)). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:35:44 -!- jix__ has joined. 08:51:38 -!- jix__ has quit (Read error: 104 (Connection reset by peer)). 08:52:06 -!- jix__ has joined. 09:02:56 -!- sebbu has joined. 10:11:45 -!- wooby has quit. 11:19:39 -!- goban has joined. 12:01:45 -!- UnrelatedToQaz has joined. 12:02:12 !help 12:02:15 help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon 12:02:18 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl 12:06:44 !help funge93 12:06:48 To use an interpreter: Note: can be the actual program, an http:// URL, or a file:// URL which refers to my pseudofilesystem. 12:07:18 !help bf 12:07:21 To use an interpreter: Note: can be the actual program, an http:// URL, or a file:// URL which refers to my pseudofilesystem. 12:07:52 funge93 "h".@ 12:08:02 didn't think so 12:08:17 -!- UnrelatedToQaz has left (?). 12:39:00 -!- tgwizard has joined. 12:56:00 -!- sebbu2 has joined. 13:14:36 -!- sebbu has quit (Read error: 110 (Connection timed out)). 13:16:32 -!- nazgjunk has joined. 14:30:33 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 14:33:58 -!- nazgjunk has joined. 14:46:23 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 14:46:54 -!- nazgjunk has joined. 15:04:52 -!- goban has quit (Read error: 110 (Connection timed out)). 15:05:06 -!- goban has joined. 15:10:15 -!- nazgjunk has quit ("Leaving"). 15:15:06 yo yo yyo 15:22:14 -!- goban has quit (Read error: 104 (Connection reset by peer)). 15:22:28 -!- goban has joined. 15:35:38 -!- nooga_ has quit ("leaving"). 15:39:36 -!- goban has quit (Connection timed out). 15:42:50 -!- goban has joined. 15:59:51 -!- helios24 has quit (Read error: 60 (Operation timed out)). 16:13:58 -!- nazgjunk has joined. 16:22:02 -!- goban has quit (Success). 16:22:37 -!- oerjan has joined. 16:35:58 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 16:41:30 -!- goban has joined. 16:43:37 -!- nazgjunk has joined. 16:58:07 -!- nazgjunk has quit (Connection reset by peer). 17:00:52 -!- goban has quit (Connection timed out). 17:00:54 -!- goban has joined. 17:04:49 -!- UpTheDownstair has joined. 17:04:51 -!- UpTheDownstair has quit (Client Quit). 17:18:17 -!- wooby has joined. 17:22:11 -!- wooby has quit (Client Quit). 17:22:32 -!- nazgjunk has joined. 17:33:18 -!- UpTheDownstair has joined. 17:33:26 -!- nazgjunk has quit (Read error: 131 (Connection reset by peer)). 17:34:07 -!- goban has quit (Connection timed out). 17:44:41 -!- goban has joined. 17:56:43 -!- UpTheDownstair has changed nick to nazgjunk. 18:49:32 -!- nazgjunk has quit ("Leaving"). 19:00:48 -!- oerjan has quit ("leaving"). 19:03:27 -!- nazgjunk has joined. 19:32:53 An ELF loader, eh? 19:32:57 how does that work? 19:34:28 Can that be just a user program? 19:34:32 GregorR: ^ 19:56:59 -!- tgwizard has quit (Remote closed the connection). 20:04:31 * GregorR reappears. 20:04:37 bsmntbombdood: Well, there's a nasty trick to it. 20:04:56 bsmntbombdood: The only place that you can count on /not/ clobbering while loading a program is the stack. 20:05:09 bsmntbombdood: So ... I copy all the code I need to the stack before loading ^^ 20:05:46 bsmntbombdood: The threat of stack-smashing arbitrary code execution is moot, since the purpose of a binary loader is to execute arbitrary code *shrugs* 20:07:02 hmm 20:07:38 How do you load the program? 20:08:18 mmap is your friend - it allows you to map anonymous memory /anywhere/, including areas inhabited by the text or data segment. 20:13:56 -!- SevenInchBread has joined. 20:24:49 -!- UpTheDownstair has joined. 20:24:50 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 20:25:04 -!- UpTheDownstair has changed nick to nazgjunk. 20:52:45 hmmm... 20:52:52 so... 20:53:09 I've come to a problem with Sophia. 20:53:18 I'm not sure what specifies one "statement" from another.. 20:53:34 I don't want to use newlines... but I don't want semicolons either. 20:53:55 I was kind of hoping something could just implicitly separate lines. 20:59:14 -!- jix__ has quit (Read error: 145 (Connection timed out)). 20:59:45 -!- jix__ has joined. 21:06:00 Lisp using parenthesis to know when to split from the expression yeah? 21:06:11 but... I don't think that will work with this. 21:08:59 you've got expression := "(" expression* ")" | word | StringLiteral | NumberLiteral 21:09:05 ...which is a lot like lisp 21:09:53 but it's OO... instead of (func arg1 arg2 ...) you've got (object message arg) 21:11:53 ... 21:13:01 ... 21:13:01 ... 21:13:01 YOU THERE 21:13:01 HELP ME OUT WITH THIS... IT'LL BE FUN. 21:13:01 It's my Lisp/Erlang/Smalltalk thing. 21:13:27 OH 21:13:28 I KNOW 21:13:49 I'll do the implicit-line-continuation-on-parenthesis thing... like Python. 21:34:28 -!- SevenInchBread has quit ("haaaaaaaaaa"). 21:34:53 -!- SevenInchBread has joined. 21:47:26 bsmntbombdood, aaaaah 22:18:45 -!- sekhmet has quit (Read error: 104 (Connection reset by peer)). 22:18:47 -!- sekhmet has joined. 22:24:14 what? 22:24:44 SevenInchBread: 22:25:14 >.> 22:25:18 nothing. :) 22:25:44 I'll do the implicit-line-continuation-on-parenthesis thing... like Python. 22:25:47 ? 22:25:59 I don't know of a lisp that doesn't 22:26:14 lisps don't have a concept of lines 22:27:06 well... lisp uses -only- parenthesis... where I'll be using newlines-but-only-if-no-parenthesis-are-open. 22:27:16 because my syntax doesn't play nice with that. 22:28:10 hmm 22:29:18 so everything on a line would be one sexp? 22:29:34 "foo bar baz\n" is (foo bar baz)? 22:31:11 -!- SevenInchBread has quit (Read error: 113 (No route to host)). 22:31:28 -!- SevenInchBread has joined. 22:31:47 ? 22:33:15 You see what I said? 22:34:05 that's not going to work well 22:35:35 better to keep the syntax nice and regular 22:44:26 well see... 22:45:16 method calls sort of skew the syntax away from being Lispable. 22:45:36 (SophiaObject method 2) + 2 22:47:04 parenthesis don't signify the start and end of an expression. 22:47:18 -!- GreaseMonkey has joined. 22:47:35 huh? 22:49:07 >.> 22:49:09 well... 22:49:20 ... 22:49:31 (send object 'method)? 22:51:46 or (object 'method), same thing 22:52:13 ooh @ moon 22:56:56 -!- Rugxulo has joined. 22:57:05 -!- Rugxulo has quit (Remote closed the connection). 22:57:47 * bsmntbombdood went out and howled last night 22:59:18 hmmm... 22:59:29 see.... parenthesis don't signify a call in Sophia... they just group expressions. 22:59:41 so that can't be used to separate lines. 23:00:32 I like just using newlines unless there's an open parenthesis 23:01:38 or I could change the syntax to object (message arg ...) and say that each line is a message to the module. :) 23:02:45 or you could change the syntax to object.message(arg) and just use python 23:03:29 nope... the semantics are totally different from Python. :P 23:03:54 it's a bastard mix of Lisp, Smalltalk, and my own doing. 23:04:11 ok then, (method object arg) and use CLOS 23:05:10 -!- ShadowHntr has joined. 23:09:03 bsmntbombdood: No you twallock I was talking about the eclipse. 23:09:15 eclipse? 23:09:27 duh 23:09:47 http://news.bbc.co.uk/1/hi/sci/tech/6411991.stm 23:11:07 fun 23:20:41 -!- sebbu has joined. 23:20:52 sebbu: have you been watching? 23:21:02 ~raw PRIVMSG #esoteric :bsmntbombdood 23:21:25 -!- bsmnt_bot has joined. 23:21:30 wtf? 23:22:21 ~raw PRIVMSG #esoteric :bsmntbombdood 23:22:21 bsmntbombdood 23:39:20 -!- sebbu2 has quit (Connection timed out). 2007-03-04: 00:05:32 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 00:05:36 -!- UpTheDownstair has joined. 00:05:46 -!- UpTheDownstair has changed nick to nazgjunk. 00:27:46 I have a great urge to do something incredibly esoteric with pointers right now 00:28:54 And I need your help to fulfil this urge 00:28:58 Ideas please. 00:29:17 * GreaseMonkey points: (::''' 00:30:01 ? 00:30:41 not much you can do with an integer pointer to make it esoteric... floating point, imaginary, rational? 00:31:00 ...quaternion? 00:31:05 The actual pointer doesn't have to be esoteric, just its use 00:31:21 ...make it point to a pointer. 00:31:31 boring 00:31:38 that points to an integer, which becomes to pointers new value. 00:31:51 SimonRC, watching what ? 00:31:56 what for? 00:32:22 well... it gives you some moderate form of control flow. 00:32:44 sebbu: the moon 00:32:52 the eclipse is nearly over now 00:33:43 bsmntbombdood: you can use pointers as your only primitive type? 00:33:55 sure 00:33:56 actually, make that cons cells as your only primitive type 00:34:07 ... 00:34:11 nil is a cons cell that points to itself twice 00:34:17 hahaha... lists with nothing to put in them :) 00:35:13 more lists 00:35:23 a number might become a listy-kinda thing 00:35:49 with clever sharing, a number could easily be a tree with NILs at the leaves 00:35:55 yeah. 00:35:56 in log-space 00:36:05 how? 00:36:08 so then concatenation of the trees would be like addition. 00:36:22 well, you have 0 = nil... 00:36:32 ah, wait, no... 00:36:38 oh, yes 00:36:41 0 = NIL 00:36:50 1 = a pair of differnt NILs 00:36:55 or maybe that would be 1 and 2 00:37:10 2 would be two pointers to the same copy of 1 00:37:21 3 would be a pointer to one and 2 00:37:26 oh 00:37:30 I am sure you can think of a way 00:37:52 (cons (cons (cons (cons (cons nil))))) ...5, and then use the properties of lists to do arithmetic. 00:38:14 SevenInchBread: cons takes two arguments 00:38:26 ... just assume all of those have nill on them or whatever :P 00:38:42 basically what simon said 00:38:49 nil = (nil . nil), BTW 00:38:56 because all pointer have to be valid 00:39:15 actually, you can do this a better way... 00:39:16 nil = NULL 00:39:27 * SimonRC searches for the thing he needs 00:39:31 bsmntbombdood: nonono 00:39:35 or maybe yes 00:39:58 yeah, I'm pretty sure nil is a null pointer by itself. 00:40:11 1 doesn't make sense 00:40:20 not a pointer to nils... that's a recursive definition and you'd never be able to end a list. :) 00:40:32 if the value of a node is the sum of its children... 00:40:58 1 = (nil nil) 00:41:01 here we go: http://www.cs.st-andrews.ac.uk/~eb/writings/bignums.ps 00:41:07 "Every Number Has At Most Two Digits" 00:41:09 you basically making a base-1 nuimeral system. 00:41:10 just what we need 00:41:20 and it works in log-space 00:41:29 bah, ps 00:41:52 and sideways 00:42:16 for me it is upside-down 00:42:26 just tell your viewer to turn it the right way up 00:42:34 0 = nil 1 = (0 nil) 2 = (1 nil) 3 = (2 nil) 4 = (3 nil) etc 00:43:29 there 00:43:46 xpdf renders it nicely 00:44:15 -!- thematrixeatsyou has joined. 00:44:37 -!- GreaseMonkey has quit (Nick collision from services.). 00:44:44 -!- thematrixeatsyou has changed nick to GreaseMonkey. 00:45:57 bsmntbombdood: basically, a number is either: all zero or first half zero + second half non-zero, or first half non-zero + second half anything. 00:46:13 I don't understand the notation though 00:46:34 page 5 00:47:10 ah, that's the magic type theory notation 00:47:21 it comes from the types-as-proof-specifications thingy 00:47:58 the things on top are the data and types you start off with, and the bit at the bottom is the data or type that you can construct 00:48:19 it's not really much beyond Haskell's GADTs 00:48:55 I really wish OSes had some easy way for languages to easily communicate without whole processes. 00:49:04 if we represent a zero in either half as a pointer to the cons cell itself, we have a high-efficiency representation not only for small numbers, but also for sparse bit vectors (if we are clever when the first half is non-zero and the second half is zero). 00:49:43 If we are not clever in that latter case, we get an efficient notation for small numbers but not for all sparse ones 00:49:59 SevenInchBread: it's called "threads" 00:50:10 -!- oerjan has joined. 00:50:19 ...I've never actually figured out what threads are... 00:50:32 like processes, but they share an address space 00:50:33 lightweight proceses 00:50:49 http://en.wikipedia.org/wiki/Image:PM1%2B1%3D2lemma.jpg 00:50:52 eh... so then you'd communicate solely by address? 00:50:58 that's some dense notation right there 00:51:24 SevenInchBread: eh? 00:51:36 nonono, I mean they share a heap and globals between them 00:52:17 yeah... they share a heap... so in order to communicate they need to alter data on the heap yeah? 00:53:00 yeah 00:53:02 of course, properly you should not share address space without a proper shared-address-space system. Channels from Erlang are good, STM from Haskell is good, even though they got it from the database world, and locks and monitors suck with a suckage of several Lovelace. 00:53:14 -!- sebbu has quit (Client Quit). 00:53:45 Channels are good if you know how the data will flow, and STM (transactions) is good if you don't care much about the exact order updates happen. 00:54:29 STM has a horrible overhead sometimes, but it is still a win if it lets you use 8 cores rather than 1. 00:54:34 How do you make a thread exactly? 00:56:23 you start by RTFM 00:56:26 pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg); 00:56:34 like that 00:56:49 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 00:57:21 Then you give up and write it in a language with some actual concurrency *support* rather than a concurrency *burden*. 00:59:17 Then you remember that it was implemented in C 01:00:04 like I said, C=bad for this 01:00:35 * oerjan wonders if you could do reverse pointers - like COME FROM. 01:00:58 I've seen COME FROM somewhere 01:01:06 you might be able to do some dreadful hashing trick 01:01:07 um, with an instruction trap perhaps? 01:01:15 in INTERCAL, but that is for program flow. 01:01:15 bsmntbombdood: INTERCAL 01:01:24 ph 01:01:27 oh 01:01:34 i meant for data. 01:01:37 some Fortrans had an "AT", which was like a COME FROM 01:01:54 and of course COME FROM is back in fasion with the emergence of AOP. 01:05:44 ...reverse pointers... like... 01:05:59 ... 01:06:02 hmmm... 01:06:11 FORTRAN's DO loop is somewhat come-from-y, since you just give the line number where the loop ends, and there's nothing at that line marking the end of the loop. (Most people would probably stick a CONTINUE statement there, though.) 01:06:35 * SimonRC lols at the "reverse-find" algorithm 01:06:56 ...what would a reverse pointer do? Point to itself? 01:07:23 It's complexity bound has possibly the world's slowest-growing function that tends to infinity and is yet useful for something. 01:07:41 it contains the inverse of the ackermann function 01:09:28 hm... googling reverse-find + ackermann gives me nothing 01:09:55 or more precisely, one page in Hebrew. 01:10:11 which is about equivalent. :) 01:11:22 -!- ihope_ has joined. 01:11:34 ~ctcp #esoteric ACTION ACTION ACTION 01:11:35 * bsmnt_bot ACTION ACTION 01:11:46 Mm-hmm. 01:11:51 SimonRC: That was supposed to be a hint to get a URL, btw :) 01:12:01 ~exec self.raw("PRIVMSG #esoteric :\001ACTION ACTION\001") 01:12:02 * bsmnt_bot ACTION 01:12:06 ah... 01:12:10 http://www.scottaaronson.com/writings/bignumbers.html 01:12:21 ...Never mind? 01:12:25 I meant "union-find" 01:12:26 thank you. 01:17:29 Oh, huh. 01:17:36 ~exec self.raw("PRIVMSG #esoteric :Foobar\001") 01:17:36 Foobar 01:17:48 ~exec self.raw("PRIVMSG #esoteric :Foo\001ACTION bar\001") 01:17:48 FooACTION bar 01:17:57 hm... 01:18:19 My client failed to display that one. 01:18:40 Mine too. Not quite RFC-compliant. 01:19:07 But then the RFC doesn't seem very useful in this case. 01:20:07 did anyone see it properly? 01:20:35 (I.e. Foo and bar on separate lines, the last as an emote) 01:22:26 Is it supposed to do that? 01:22:34 Mine didn't show it at all. 01:22:42 ~exec self.raw("PRIVMSG #esoteric :\001ACTION bar\001"Foo) 01:22:42 SyntaxError: invalid syntax 01:22:50 ~exec self.raw("PRIVMSG #esoteric :\001ACTION bar\001Foo") 01:22:50 ACTION barFoo 01:22:59 Didn't see that either. 01:23:27 That one came out as an emote to me, but with an \A inside. 01:23:30 ~exec self.raw("PRIVMSG #esoteric :foo\001bar\001\r\nPRIVMSG #esoteric :\001bar\001foo") 01:23:30 foobar 01:23:30 barfoo 01:23:45 I didn't see anything there either. 01:24:06 you mean you saw absolutely nothing? 01:24:20 Absolutely nothing. 01:24:30 I didn't realize bsmnt_bot replied at all until I read the logs. 01:25:00 ~exec self.raw("PRIVMSG #esoteric :foo\001\001bar") 01:25:00 foobar 01:25:07 ~exec self.raw("PRIVMSG #esoteric :foo\001\001") 01:25:08 foo 01:25:15 ~exec self.raw("PRIVMSG #esoteric :\001\001bar") 01:25:16 bar 01:25:32 ...wait a minute... 01:25:34 -!- ihope_ has quit ("Reconnecting..."). 01:25:48 -!- ihope_ has joined. 01:25:59 it seems my client uses the first character to decide whether it is an emote, but then ignores anything inside. 01:26:05 ~exec self.raw("PRIVMSG #esoteric :\001\001bar") 01:26:06 bar 01:26:35 bsmnt_bot [i=gavin@abacus.kwzs.be] requested unknown CTCP Abar from #esoteric: 01:26:45 ~exec self.raw("PRIVMSG #esoteric :\001\001") 01:26:45 01:26:52 *A=\A 01:27:10 ~exec self.raw("PRIVMSG #esoteric :\001ACTION throws a \001 at ihope_\001") 01:27:10 * bsmnt_bot throws a at ihope_ 01:27:19 ~exec self.raw("PRIVMSG #esoteric :\001\001\001") 01:27:20 01:27:53 unknown CTCP \A 01:28:06 (I am using \A for inverted A on my screen) 01:28:18 === Unknown CTCP [\0x01] () from bsmnt_bot 01:28:41 that seems standard-compliant, at least. 01:28:49 or, wait. 01:28:57 not quite. 01:29:27 it should have been unknown CTCP "" followed by a single \A in a message, I think. 01:29:58 All so very weird. 01:30:03 anyhow, the conclusion is that you can count on \A working only at the ends of messages. 01:30:21 *beginning and end 01:30:43 It looks to me that if there's more than one \1 in a message, it fails to show. 01:30:52 Naturally, our clients are different... 01:30:57 -!- GreaseMonkey has quit (Read error: 60 (Operation timed out)). 01:31:22 Do most clients implement CTCP as "if it starts with \1 and ends with \1 then the first word of what's in between is the command and everything else is the parameters"? 01:31:40 mine seems to only look at "starts with \1" 01:32:22 (irssi) 01:32:24 Maybe #tapthru would be a better place to ask... 01:32:53 probably 01:34:12 it occurs to me that it is reasonable to ignore multiple CTCPs, since they could be used to flood your screen. 01:45:45 ackerman function is funny 01:47:37 gah 01:47:45 * bsmntbombdood wants to understand that bignums paper 01:48:14 anything in particular? 01:48:40 the notation 01:49:10 I'm lost after page 3 01:49:38 eh, the pages aren't numbered 01:50:02 "Representation of natural numbers" is page 3 01:51:00 oh. i don't think we are reading the same URL... 01:51:16 http://www.cs.st-andrews.ac.uk/~eb/writings/bignums.ps 01:51:56 -!- manveru has left (?). 02:16:43 -!- nazgjunk has quit ("Leaving"). 02:23:52 -!- GreaseMonkey has joined. 02:28:52 -!- ihope_ has changed nick to ihope^. 02:32:13 -!- ihope^ has changed nick to ihope_. 02:41:05 mmm... parsers are very easy to make messy. :) 02:43:37 the solution is the Use a parser-generator or a monadic parsing library 02:43:42 *to use 02:44:11 the latter give you unbelievably awful code but you never have to look at it. 02:44:15 *former 02:44:38 the latter give you nice lear code, though it might be fiddly to use sometimes 02:49:45 I'm just using a... class-with-some-event-methods approach. 02:52:38 hm... do the methods correspond to tokens of the grammar? 02:53:34 otherwise you might indeed end up messy, if you try to make it input-driven rather than grammar-driven. 02:55:20 but recursive descent can be simple if the grammar is suitable for it. 02:57:59 predictive is trivial even in Pascal 03:03:50 well... I see it happening in "stages" so to speak... 03:04:18 this part of it is building the AST by just finding literal characters and reacting to them. 03:04:45 so far I've managed to keep it fairly clean. 03:08:29 What's the... uh.. typical way to do it? 03:09:14 -!- GreaseMonkey has quit (Nick collision from services.). 03:09:20 -!- thematrixeatsyou has joined. 03:13:54 the typical way is to make the parser call the input routines rather than the other way around. 03:14:25 and to let the parser branch and do recursive calls to sub-parsers based on what was read. 03:15:07 oooh... I've got a really good way to implement that... 03:15:14 I made it for a different purpose... 03:15:21 but... it would work great for parsing. 03:15:59 (sometimes it would be useful to recurse even before anything was read) 03:16:15 like with operator precedence. 03:16:27 SevenInchBread: do tell 03:16:39 let me see if I can find it... 03:17:06 oh, and usually you need lookahead for input, since sub-parsers and post-parsers may need to look at a token again. 03:17:31 yeah... I used that... having a readuntil() makes things way less messy. :) 03:19:00 http://deadbeefbabe.org/paste/3859 03:19:34 _read will be the most relevant 03:19:35 incidentally the parser generators mentioned before are input-driven, and as SimonRC said, the resulting code is horribly messy (but efficient) 03:20:50 well... that's a bad demostration of it... since it just shows thei internals... lemme find where I used it. 03:21:02 being based around a constructed finite automaton which few would want to create by hand. 03:22:18 basically you give it a coroutine that yields output and will be sent input. 03:23:06 if it yields a string, the string if outputted... if it yields another coroutine, it'll make that coroutine the "sub-reader" for as long as its active.. 03:23:53 ... 03:24:14 you'd need to modify the concept some... but it could effectively be the basis for a parser. 03:24:59 except that it is the coroutine that is the real parser. 03:25:51 you could have the parser do an event-based call thing... and take the return value of the callback as its yield. 03:25:54 or something. 03:26:07 so this is exactly the opposite of what i suggested. 03:26:18 ...probably 03:26:26 if you let the parser do the calling, you don't need coroutines. 03:26:42 ...it does 03:26:51 that's what I'm doing right now... 03:28:06 ok to be more precise: if you let the parser do the calling and let the result be passed as the return value of the call. 03:30:44 that's what Im... doing? :) 03:31:13 ok then 03:31:19 -!- calamari has joined. 03:31:24 hi 03:34:42 I suddenly want to see the results of one of those "uptime games" in this channel. 03:34:52 Voice everybody, see who stays voiced the longest. 03:35:09 And hope the network doesn't catastrophic(al)ly fail. 03:35:15 wouldn't be me.. I shut down every night 03:35:19 I will last weeks usually 03:35:46 Who'd last the longest? 03:35:49 clog? 03:35:52 :-P 04:01:34 -!- GreaseMonkey has joined. 04:01:50 -!- thematrixeatsyou has quit (Nick collision from services.). 04:29:58 * SimonRC goes to bed 04:31:28 9:28PM up 83 days, 4:38, 1 user, load averages: 0.10, 0.09, 0.08 04:31:54 Irssi uptime: 39d 2h 31m 20s 04:31:55 :) 04:32:09 Who's that, now? 04:32:16 me 04:32:23 39 days? 04:32:32 Not bad :-) 04:33:00 that's actually not running on one of my boxes 04:33:04 but the 83 days is 04:37:54 -!- oerjan has quit ("leaving"). 04:52:15 -!- GreaseMonkey has quit (Nick collision from services.). 04:52:33 -!- GreaseMonkey has joined. 05:44:17 -!- ihope_ has changed nick to ihope. 06:18:43 -!- calamari has quit ("Leaving"). 07:43:48 -!- GreaseMonkey has quit (Read error: 110 (Connection timed out)). 07:50:35 -!- RodgerTheGreat has quit. 07:55:22 -!- RodgerTheGreat has joined. 07:55:34 -!- RodgerTheGreat has quit (Client Quit). 07:56:32 -!- RodgerTheGreat has joined. 07:56:44 -!- RodgerTheGreat has quit (Client Quit). 07:57:15 -!- RodgerTheGreat has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:05:35 -!- ShadowHntr has quit (Read error: 110 (Connection timed out)). 08:15:06 -!- helios24 has joined. 09:13:24 -!- wooby has joined. 09:22:30 -!- Sukoshi has joined. 09:28:14 -!- sebbu has joined. 09:45:10 -!- sebbu2 has joined. 10:04:18 -!- sebbu has quit (Connection timed out). 10:13:58 -!- ShadowHntr has joined. 10:22:37 -!- Sukoshi has quit ("ERC Version 5.1 (CVS) $Revision: 1.796 $ (IRC client for Emacs)"). 10:29:04 -!- wooby has quit. 10:42:05 -!- ihope_ has joined. 10:45:45 -!- nazgjunk has joined. 10:47:15 -!- cmeme has quit (Remote closed the connection). 10:59:39 -!- ihope has quit (Read error: 110 (Connection timed out)). 11:06:56 -!- cmeme has joined. 12:03:18 -!- ShadowHntr has quit ("End of line."). 12:12:22 -!- jix__ has joined. 12:43:16 -!- Sukoshi`` has quit (Read error: 110 (Connection timed out)). 12:46:11 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 12:46:43 -!- nazgjunk has joined. 13:04:16 -!- jix__ has changed nick to jix. 13:08:43 -!- tgwizard has joined. 13:12:01 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 13:28:28 -!- nazgjunk has joined. 13:31:49 -!- sebbu has joined. 13:47:10 -!- nazgjunk has quit ("Leaving"). 13:51:13 -!- sebbu2 has quit (Read error: 110 (Connection timed out)). 14:22:57 -!- ihope_ has quit (Connection timed out). 14:28:02 -!- nazgjunk has joined. 15:01:10 -!- nazgjunk has quit ("Leaving"). 15:02:18 -!- helios24 has quit ("Leaving"). 15:15:19 -!- nazgjunk has joined. 15:34:41 -!- oerjan has joined. 16:11:45 -!- tgwizard has quit (Connection timed out). 16:12:15 -!- tgwizard has joined. 16:15:24 hmmmm 16:15:25 .... 16:15:32 this window is broken. 16:16:03 you better get it changed then. 16:25:45 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)). 16:27:52 -!- nazgjunk has joined. 16:28:19 yeah... just had to read the logs first 16:28:25 here goes! 16:28:27 -!- oklopol has left (?). 16:28:31 -!- oklopol has joined. 16:28:52 * oklopol enjoys his brand new window <3 16:31:01 is it made with Glass? 16:31:22 i doubt it 16:31:25 indeed, why doesn't Glass have a window system? 16:31:33 yep, wondering the same thing 16:31:35 it's illogical! 16:31:49 it should have a lot of inbuilt window stuff 16:32:00 class W to be precise 16:33:10 it'd be poor object-oriented design. Windows should extend glass, adding special properties, while Glass is a more general case, also extended by classes like PetriDish and MagnifyingGlass 16:34:07 the windows system has to be made out of Glass, not just written in C++. 16:36:21 something like fluidic logic? 16:36:43 it'd be difficult to make anything mechanical entirely out of glass 16:39:11 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 16:39:44 -!- nazgjunk has joined. 16:39:57 I guess there's always optical computing as well 16:41:09 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)). 16:41:17 right... we need an F class for fibers. 16:41:56 -!- nazgjunk has joined. 16:49:28 are fibers just faster threads? 16:49:56 they also have less overhead, I believe, unless that's what you mean by "faster" 16:50:31 i meant better 16:52:12 -!- UpTheDownstair has joined. 16:53:00 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 17:06:08 -!- UpTheDownstair has quit (Read error: 104 (Connection reset by peer)). 17:06:47 -!- UpTheDownstair has joined. 17:07:49 -!- UpTheDownstair has quit (Read error: 54 (Connection reset by peer)). 17:08:14 -!- UpTheDownstair has joined. 17:11:11 -!- UpTheDownstair has quit (Read error: 104 (Connection reset by peer)). 17:16:06 -!- nazgjunk has joined. 17:38:13 -!- digital_me has joined. 17:59:18 -!- SevenInchBread has quit (Read error: 104 (Connection reset by peer)). 18:11:05 -!- digital_me has quit ("Lost terminal"). 18:26:03 -!- helios24 has joined. 18:32:58 -!- ShadowHntr has joined. 18:39:24 -!- goban has quit (Read error: 104 (Connection reset by peer)). 18:39:39 -!- goban has joined. 18:45:34 -!- helios24 has quit ("Leaving"). 18:48:42 -!- helios24 has joined. 18:56:01 -!- jix__ has joined. 18:59:54 -!- jix has quit (Nick collision from services.). 18:59:56 -!- jix__ has changed nick to jix. 19:23:28 -!- kxspxr has joined. 19:24:27 -!- kxspxr has quit (Client Quit). 19:27:00 -!- pgimeno has left (?). 19:35:45 -!- ihope has joined. 19:35:53 ~ctcp #esoteric Foo 19:36:03 Eh. 19:37:25 ~ctcp #esoteric Version 19:37:42 ~ctcp #ruby-de Version 19:37:44 Heh. 19:38:56 ...I could have just used /names, eh? 19:39:24 hm? 19:39:33 yeah 19:45:05 * bsmntbombdood writes a VM 19:45:10 register machine 19:47:21 for no particular reason 19:48:43 Minsky? 19:50:23 no 19:53:04 Segmentation fault (core dumped) 19:53:25 wtf. 19:54:21 hmmm 19:54:38 that's odd 19:54:46 off-by-one error? 19:55:27 hint: add bounds checks 19:55:30 it segfaults at cur = code[state.pc], saying "Cannot access memory at address &cur" 19:55:39 * SimonRC sends oerjan to get the keys to the spin-lock. 19:55:52 ??? 19:56:31 now that does sound strange 19:56:50 maybe cur is the result of a cast? 19:56:59 And while you're there, could you kill the idle process? 19:57:02 :-P 19:57:11 nope 19:57:16 struct instruction cur; 19:57:41 is it a global? 19:57:46 Sorry, I've just been reading about fictional objects and tasks that noobs are sent to fetch/do. 19:57:51 no, local 19:58:09 bsmntbombdood: some architectures pass structs by reference in C. 19:58:15 I have read about such things. 19:58:27 -!- SevenInchBread has joined. 19:58:43 But you'd only be able to break that by writing an ill-typed program. 19:58:58 other locals are broken too 19:59:04 :-S 19:59:20 is cur a parameter? 19:59:36 no 19:59:58 stack is undereferenceable too 20:00:17 Wait... is this Python or no? 20:00:22 * SimonRC asks bsmntbombdood to find out the password for the root window. 20:00:42 * bsmntbombdood laughs at ihope 20:00:47 have you set any strange options? 20:01:02 nope 20:01:04 gcc -g 20:01:31 (The root window in X Windows is "root" in the graph theory sense, not like the "root user".) 20:01:58 mmm hmmm 20:02:04 * SimonRC asks ihope to fetch an optical mouse ball from the cupboard. 20:02:13 heh 20:02:17 sorry, i am having an attack of silly creativity. 20:02:29 * ihope does so 20:02:42 :D 20:03:10 this is weird 20:03:32 what other variables are broken? 20:03:47 stack, an array 20:03:49 hmmm... bugSophia actuallys looks pretty fun... I should implement it. 20:04:06 of struct state s 20:04:33 maybe your linker fucked up 20:05:04 It's all one file 20:05:19 pastebin 20:06:07 http://pastebin.ca/381344 20:06:32 line 17 is where is segfaults 20:08:47 immediately, or does it go throught the loop? 20:09:40 immediatly 20:09:42 what happens if you make cur global? 20:11:05 segfaults on line 18 20:11:39 -!- ShadowHntr has quit ("End of line."). 20:12:39 -!- helios24 has quit ("Leaving"). 20:14:11 well i give up 20:25:34 -!- oerjan has quit ("leaving"). 20:26:35 this is weird 20:28:06 * jix is writing a compiler 20:28:13 but it's for a non esoteric language 20:28:17 so it's a bit offtopic 20:28:37 we don't care 20:28:38 i just coded a working game ai in python 20:28:43 took about 3 hours 20:28:47 ...and now it's gone 20:28:56 how could that happen?! 20:29:03 i have no idea. 20:29:13 i opened the file and it loaded a 4 hour old version 20:29:14 :) 20:29:28 maybe python doesn't save on alt-f-s 20:29:31 like notepad 20:29:41 i just do thatit does 20:29:44 *it does 20:29:52 so... no idea 20:30:08 hmm... maybe i'll rewrite it... what could be more fun 20:30:17 uhm how could python save? 20:30:22 pyidle 20:30:30 hmm 20:30:31 dunno 20:30:46 idle is the name i think 20:30:51 an ide for python 20:30:51 -!- sebbu2 has joined. 20:31:27 i'm writing my compiler using test driven development 20:31:55 i don't really feel like coding anymore... i'll go kill myself or something -> 20:32:04 oklopol: nah don't do that 20:32:26 oh and i don't have a girlfriend anymore! 20:32:32 and i do! 20:32:40 just got one 20:32:41 oklopol: you have one? 20:32:44 yeah 20:32:47 i got one a month ago 20:32:53 :D 20:33:08 so you know what will happen to you in a month 20:33:10 i don't agree with your "prefer spending time with her over programming" though 20:33:15 what? 20:33:42 oklopol: you'll turn into jix, of course. 20:33:45 You know German, right? 20:33:54 If not, you have a month to learn it. 20:34:00 Aye. 20:34:05 And to move to Germany. 20:34:16 Or at least proxy through Germany, or something. 20:34:29 oklopol: no i don't hope those things will happen to me... i got really depressed and everything before we decided to uhm ... "break up" (sais my dictionary) 20:34:30 hmm... i'm not sure if that's what jix was about to say 20:34:46 ....business programming always makes me nauseas... 20:35:05 SevenInchBread: is it always done in COBOL? 20:35:06 *will happen to you 20:35:22 jix i'm not that social... i think i'll manage a break-up 20:35:33 oklopol: no the break-up wasn't the problem 20:35:46 but... taking 3 hours to type out the (truncated) 99 bottles of beer song in a language that doesn't even have an implementation... is the kind that gets me excited. 20:35:47 the time before that 20:35:50 :P 20:35:57 1.5 weeks before that 20:36:15 one would think being social makes it _easier_ to manage a break-up 20:36:31 hmm... social is not the word 20:36:34 human 20:36:36 maybe 20:39:34 well but now i have time to code :) 20:40:41 i'm pretty furious now, fuck this 20:40:49 python 20:40:52 i'll strangle it 20:40:59 python is nice. 20:41:13 WHY YOU SEGFAULT! 20:41:14 python is mean 20:43:29 -!- sebbu3 has joined. 20:50:26 -!- sebbu has quit (Connection timed out). 21:02:02 -!- sebbu2 has quit (Read error: 110 (Connection timed out)). 21:07:24 ok, figured it out 21:07:35 I was requesting too much memory from the stack 21:32:01 I am confused 21:34:32 -!- goban has quit (Read error: 104 (Connection reset by peer)). 21:34:37 -!- goban has joined. 21:42:47 -!- goban has quit (Read error: 104 (Connection reset by peer)). 21:43:02 -!- goban has joined. 21:48:45 ok my vm fails 21:50:04 mmm... http://esolangs.org/wiki/BugSophia#99_bottles_of_beer_.28truncated_lytics.29 <--coolest looking 99BoB ever. 21:50:32 heh 21:51:59 I thought I had a good idea but I didn't 21:53:58 >.> 21:54:37 Can't figure out how to return values from subroutines 21:55:23 in? 21:55:47 This little vm I was writing 21:56:19 I've never figured out what a vm was other than some kind of abstract-assembly type thing. 21:56:26 yeah 21:57:09 either way... your system architecture needs to be able to work with the vm... so I don't get how it's any better than without it. :P 21:57:49 ? 21:58:45 that's supposed to be the advantage of a VM right? You don't need to be compatable with the architecture underneath. 21:58:51 yeah 21:59:34 hmmm.... once I make a bS interpreter... I should give it a count mode so that it'll keep track of how many "threads" were created during execution. 21:59:53 the 99 BoB would be at least a hundred. 22:00:37 they're not really threads to the OS... but they work concurrently... 22:04:07 i remade the ai :DDDDDDDDDDDDDDDDDD 22:04:16 was a 20 min job on the second attempt :P 22:04:20 okay, 30 22:04:23 maybe 40 22:04:26 but you get the point 22:04:32 bsmntbombdood, but doesn't the VM have to be compatable with the architecture? 22:04:45 -nod- things are way easier once you know how you're going to do them. :) 22:05:24 let's see.... the minimum amount of threads the 99 bottles program would create is.... 22:06:32 SevenInchBread: The point of a vm is to play with it's assembly language 22:06:44 It's nothing more than an implementation of a language 22:08:00 (25 * 99) for the strings.... 1 for the counter... and 1 + (27 * 99) for the main loop 22:08:11 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 22:09:29 2 + (52 * 99) ...mmm, -opens up Python to do the next bit- 22:09:50 5150 22:11:31 zomg, that's the sum of all numbers below 100, + 200 22:13:30 -!- goban has quit (Read error: 104 (Connection reset by peer)). 22:13:39 -!- goban has joined. 22:13:42 ...wow... what a coincidence? 22:16:37 indeed 22:20:36 oklopol, What kind of ai? I admit I'm a little curious... I wouldn't know where to begin with ai. 22:20:51 -!- sebbu has joined. 22:21:25 a brute force ai :) 22:21:46 the game's rules are somewhat complicated... i took the short road 22:22:27 just a board game by me and a friend... would have rules online, but once again in finnish 22:22:28 brute force... that's where the ai simply simulate every possible situation that could occur and determine which is best? 22:22:35 yes 22:22:57 How far do you go with each of them? 22:23:12 you can specify it for the 22:23:13 ai 22:23:32 but, the problem is never depth, it's width 22:23:35 bredth 22:23:37 whatever 22:24:15 O think a fun game to play would be like "befunge hockey chess"... where you have two goals and take turns placing befunge characters on the field inbetween instruction ticks or something. 22:24:45 because a human will easily recognize it does not matter in which order he does some 20 moves... while it's very hard to make the computer do the same 22:24:54 and try to be the first to complete the specified object and output the results to your output stream. :) 22:25:27 the game is kinda sick, every turn means putting a piece on the board and doing a lot of recursive jumping... 22:25:40 hmm, sounds like fun :D 22:25:53 i wish i had irl friends who could program befunge... 22:26:15 heh 22:26:25 could rig up some over-the-network thing with a basic GUI 22:26:38 yeah, actually not that hard 22:26:43 IN TKINTER. 22:26:45 do it and well have fun together ;D 22:26:45 :) 22:26:51 ...suuure 22:26:53 *we'll 22:27:21 ...I really don't want to have to swap IP addresses... not for security or anything... I'm just really lazy 22:29:10 http://freedns.afraid.org/ 22:29:47 ....sweet. :) 22:31:46 ...will they spam your email? :) 22:34:14 -!- UpTheDownstair has joined. 22:34:35 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 22:35:30 -!- UpTheDownstair has changed nick to nazgjunk. 22:37:44 no 22:40:12 -!- sebbu3 has quit (Connection timed out). 22:41:37 (am bored i) 22:41:55 okay... anybody wanna explain something to me 22:41:59 (wait, i'll tell) 22:42:27 i made a timeout for my algo, it only does 300000 iterations before terminating 22:42:41 heh 22:42:46 this way i get 35 moves (the algo tries to find the longest combo) 22:43:49 okay, i have no idea why, but i put if iterations>100000 and random.random()<0.1: return combo << a short termination randomly in every 10th recursive call 22:44:23 and suddenly it finds length 50 combos 22:44:58 (i have manually archieved a 15 combo from that starting point :P) 22:45:48 It's a sign from the jeebus 22:46:27 hmm... alright. 22:46:37 * SevenInchBread got a subdomain... now just needs to figure out how to access it. 22:46:41 actually... it of course does the 300000 iterations anyway, because i just increase the counter when i call the function... so it won't be increased when short terminating 22:46:56 aah.. wait nevermind. 22:47:05 duh... it just goes to my IP address. :P 22:47:25 you gotta love it when you get a feeling you should do something no matter if it seems not to make sence... and it doubles the capability of your program 22:48:55 hmm... now I need to find a decent befunge interpret that works incrementally instead of all at once. 22:49:01 otherwise I'll just make my own. 22:51:08 make your own! 22:51:30 * oklopol loves torturing his computer 22:52:11 ...I wonder how terrible of a server my computer makes. :) 22:52:22 * SevenInchBread has the cheapest Dell he could have bought. 22:53:31 -!- tgwizard has quit (Remote closed the connection). 22:53:43 muahaha! two million iterations! 22:54:01 hmmm... usually servers are designed to have a lot of storage space and RAM right? 22:54:09 i don't know 22:54:17 i don't play with hardware 22:54:21 never seen a computer naked 22:54:35 I doubt you'd design one with high-end graphics cards. ;) 22:54:51 huh? 22:54:56 server you mean? 22:55:02 ah yeah 22:55:10 true, might be kinda redundant 22:56:41 i've done 3 semesters of cisco ccna... but i have no idea how to set up a server 22:57:02 and proccessor...and bus speed... 22:58:56 and 1337n355 23:02:36 it would depend on what you're using it for though. 23:03:25 a large website would want a lot of disk space... while a search engine would want massive massive hoards of anything good. 23:14:35 kay... a combo of 901 moves... record move is 35 from last night... 23:14:57 i don't think this is such a good training opponent after all -______- 23:25:54 * SimonRC procedes to write a program with a runtime that explodes like ackermann's function. 23:26:11 It is only for the purpose of writing a proof, though. 23:26:20 I just need to show something is copmputable. 23:26:37 1+1 is pretty computable 23:26:48 doesn't explode though 23:27:03 nonono, a particular thing 23:27:36 i misread your typo, sorry 23:27:37 :P 23:27:46 hmm 23:27:49 there was no typo 23:27:56 yes there was 23:34:13 ....this is basically just an echo server. 23:34:28 takes input and shouts it out to everyone. 23:38:32 ...with a number next to it. 23:38:53 what's the point of ackermann's function 23:39:20 -!- oerjan has joined. 23:39:50 -!- nazgjunk has quit ("Leaving"). 23:53:03 -!- Asztal has joined. 23:56:02 bsmntbombdood: in general, or in SimonRC's program? 23:56:17 in general 23:56:56 it was invented in order to show that there are functions that can be computed with general recursion but not with primitive recursion. 23:57:15 yaaay... got the server done.. 23:57:39 now I just need to flesh out the GUI and an interpreter thing. 23:58:17 in order to do this, it had to grow at a whopping speed. 23:58:18 -!- RobHu has joined. 23:58:19 in the meantime... I shall turn my domain name into AN AWESOME WEBSITE. 23:58:31 where's a lazy-to-use HTML server program I could use. 23:58:40 er... 23:58:42 HTTP 23:59:09 camping! 23:59:16 ...heh, I'll just write one... while I'm at it. 23:59:37 Asztal: Here? And did you bring a tent? 2007-03-05: 00:05:22 well, actually, camping is a nice little 4kB framework on top of acres of other code ¬_¬ 00:05:22 -!- lupine_85 has joined. 00:05:22 http://code.whytheluckystiff.net/camping/browser/trunk/lib/camping.rb <- that's pretty much why I like it 00:05:22 please print the sequence 1 to 10 00:05:22 1..10 00:05:22 link? 00:05:22 lol 00:05:22 1 2 3 4 5 6 7 8 9 10 00:05:22 lupine_85: http://esoteric.voxelperfect.net/wiki/IRP 00:05:22 thank you :-) 00:05:22 ....that's the whole program? 00:05:22 that's most of the code, there's a bit more to run it as a standalone server (via Mongrel, FastCGI or Webrick) :P 00:05:22 ...is there a lazier way to get it? 00:05:22 it's more of a joke framework, I think, but I love it 00:05:22 through rubygems 00:05:22 people write real stuff in camping 00:05:22 ....pardon? 00:05:22 Do you know any Ruby? That would be a nice start. 00:05:22 RobHu: ah... 00:05:22 sleep(lupine_85); 00:05:22 ...nope 00:05:34 * SevenInchBread is on Windows... probably doesn't have a Ruby interpreter thing. 00:05:52 Please output the proof that P=NP. 00:05:53 BUT I SHALL GET IT 00:06:53 bsmntbombdood: Sorry, that question is undecidable. Of course that cannot be proved. 00:07:29 x^2 - x^2 = x^2 - x^2 00:07:41 x(x - x) = (x + x)(x - x) 00:07:48 x = x + x 00:07:50 1 = 2 00:07:52 BZZT!!!! wrong! 00:08:29 I know, I know 00:08:39 bsmntbombdood no you don't 00:08:52 U R ZEH IGNORANT 00:09:10 I DIVIDE BY ZERO ALL THE TIME! 00:09:43 mm, me too 00:09:51 I'M DIVIDING SOMETHING INTO ZERO PARTS ALL THE TIME. 00:10:15 hmmm... I wonder if you could use division by zero to do computations. 00:10:17 It's ok to divide by zero if you are working in an appropriately defined superset of Q or R. 00:11:53 lol tk is the best GUI toolkit evar 00:12:10 use curses 00:12:18 It's also possible (with the right flags set) to divide by zero in F, though F is not a ring, field, or anything nice like that. 00:12:35 what is F? 00:12:36 ha, rings 00:12:42 F being the set and operations of IEEE floating point numbers. 00:12:45 I tried to understand GNFS once 00:12:51 ?? 00:13:01 generalised normal forms? 00:13:18 general number field sieve 00:13:29 fast(est) factoring algorithm 00:14:04 BTW, you know that primality-testing is in P, right? 00:14:18 it was proven a few years ago, with a rather simple algorithm. 00:14:37 oh? 00:14:55 I just know of the probabalistic primality testing algorithms 00:15:48 just because it's in P doesn't mean it's fast. 00:16:17 The probabilistic ones are actually fast, rather than just being in P. 00:16:34 I am, of course, considering the length of teh prime, not its value. 00:16:38 what's the algorithm? 00:19:10 someday i'll understand p/np 00:19:27 yaay... I'm getting Ruby. 00:19:43 rube all over you 00:19:44 * SevenInchBread has been procrastinating geting other language interpreters... now he'll have more incentive to try out Ruby. 00:19:49 someday the world might understand p/np. 00:20:25 oerjan i don't even understand what's there to understand 00:20:30 well said... 00:21:35 * SevenInchBread should make an EsoUI toolkit. 00:21:37 well p/np is about _how_ much harder it is to check a solution than to find it in the first place. 00:21:50 eh, the other way around. 00:22:59 Ruby is OK, as long as you don't try to interop with it. It's C API is so horribly mangled... 00:23:42 It looks a lot less conservative than Python... which is kinda good... I'm starting to get bored with Python. 00:23:48 It's -too- consistent. :P 00:26:41 ...wow... rubygems is the easiest thing I've used ever. 00:27:54 oerjan i know it's something like that... but is it just that? 00:30:26 hmmm... so... I'll need to brush up on some Ruby to use camping nyah? 00:30:36 doesn't ruby kinda suck? 00:31:53 well you have to define it precisely mathematically of course. And then there are the NP-complete problems, which are the hardest among those that have easy to check solutions. 00:33:11 how so, lament? I'd say the C side of things does suffer from quite a bit of suckage, but the language ideas seem quite nice. 00:35:16 heh... if Ruby sucks the tuitorial reading sure shows some convincing examples. 00:36:20 Does ruby have an interactive prompt? 00:36:25 irb 00:36:39 yes 00:36:50 in a sense the most fundamental NP-complete problem is this: Given a Turing-machine with input, does it halt in a "yes" state after a polynomially bounded number of steps? 00:37:02 heh 00:37:52 *nondeterministic 00:37:59 always that. 00:38:19 Asztal: Perl heritage. 00:39:28 It's a lot more usable than Perl, if you ask me (which for me, was the main problem) 00:39:39 %@$£@£x means what exactly? 00:40:00 I always thought Ruby inherited a lot from Smalltalk and Eiffel? 00:40:08 It doesn't really seem all that Perly. 00:40:13 or maybe an other equivalent definition: Given a Turing-machine with _part_ of its input specified, is there an assignment for the rest of its input that makes it halt yadda yadda. 00:40:18 Asztal: sure it's more usable, but i'm talking about the heritage. 00:40:34 ...what does that have to do with anything then? 00:40:34 Asztal: the conscious decision on the part of the language designers to borrow from Perl. 00:40:45 ...Perl isn't all bad. 00:40:50 Asztal: that is a sign of deep brain damage 00:41:03 heh 00:42:01 And then Cook's theorem shows that you can reduce all that to the much simpler SAT problem. 00:42:29 I'd agree that many parts of Perl (esp. its syntax and reference semantics) are brain damaging, but it wasn't all bad, was it? 00:49:20 Nothing special, but nothing terrible either. 00:50:09 Ruby looks cool so far... I like the non-symboly syntax so far... but the "end" thing might be annoying. :P 00:54:23 I wish they wouldn't use => for hashes though. That's so annoying to type! 00:55:45 I would use like -> or something. 00:56:01 I would use : 00:56:06 I'd just use : like normal people :) 00:56:16 pfft.. normal people. 00:56:51 like python 00:57:36 It's pretty rare that you use that syntax unless you're just making a really simple lookup table. 00:57:47 a is for apple, b is for banana 00:58:02 that's what i'd use 00:58:30 and I'd use string keys by default... 00:58:42 ...the quotes get kind of tiring when you're a lazy bastard. 00:59:15 well... nevermind 00:59:19 it could be a variable. :P 00:59:40 yeah 01:01:39 I like the ! and ? convients too... with Python you just have to know from experience. 01:01:43 conventions 01:02:57 why do i have my greatest programming urges at 3 o'clock in the morning?!?! :< 01:03:04 i gotta sleep... --------> 01:06:48 this ruby code is valid: 01:06:50 wazup?!!!?!??1:! 01:06:50 ...I like the range syntax. 01:07:03 wait, that wasn't all of it, wazup?!!!?!??1:!!?? 01:10:29 the strange range syntax? 01:13:12 better than deranged syntax. 01:16:58 Asztal: what does that mean? 01:18:03 wazup? is a function name, ?? is equal to the character literal '?' (so !!?? == 1), I don't know about the rest, I'm very sleepy >_< 01:18:53 -!- sebbu2 has joined. 01:24:57 what do ? and ! do? 01:26:17 here, they do different things in different places :/ 01:27:22 it calls wazup?(true), eventually 01:29:38 I thought they were just naming conventions 01:30:27 oh, you mean inside the name, yes, they are 01:31:27 ! is generally applied to mutator methods,, and ? to question-like methods ( "flibble".empty?() ) 01:31:29 Huh? 01:32:55 -!- Asztal has quit ("+++ Insufficient cheese error +++"). 01:37:19 -!- sebbu has quit (Connection timed out). 01:37:25 a convention borrowed from scheme. 01:39:50 -!- sebbu2 has quit (Read error: 110 (Connection timed out)). 01:42:05 both conventions are fairly easy to actually enforce 01:42:30 -!- pikhq has joined. 01:45:50 the predicate one? 01:46:08 * pikhq returns, not wishing to declare his ressurection. . . 02:01:33 * oerjan stealthily calls the pope. 02:03:44 * pikhq stealthily calls protestantism 02:04:54 * oerjan stealthily calls the Russian patriarch. 02:05:11 * SimonRC sealthily calls main() 02:05:38 973,694,665,856,161 02:05:40 * pikhq stealthily calls in the Chewbacca Defense 02:05:59 bsmntbombdood: ??? 02:06:04 the pope is the biggest cardinal 02:06:10 but every pope has a successor 02:06:21 hmmm... 02:06:31 which way do you guys like to work? 02:06:32 SimonRC: a charmicheal number 02:06:38 top-to-bottom or bottom-to-top? 02:07:12 I find it easier to play with the glue before I make the parts... I'll call a bunch of methods I haven't defined yet. 02:08:02 with this Forte interpreter I started bottom-up but now i am doing top-down. 02:08:18 hmmm... actually I do that a lot too. 02:08:40 I'll make a few little parts to begin with... but later on I start going the other way.. 02:08:52 heh... so I guess I "meet in the middle" when I'm done. 02:11:03 bsmntbombdood: define 02:13:23 n is a charmicheal number iff n is not prime and a^(n-1) cong 1 (mod n) for-all integers a that are relatively prime to n 02:14:39 Ah, they are to do with a quick test for primality that occasionally flags a composite as prime, right? 02:14:59 fermat primality test, yes 02:15:47 I guessed that from "n is not prime" and the fact the the number you named was so large 02:16:21 there's small charmicheal numbers too 02:16:33 http://www.research.att.com/~njas/sequences/?q=id%3aA002997&p=1&n=10&hl=0 02:30:17 * ihope stealthily and unexpectedly calls the Spanish Inquisition 02:30:46 that second part is redundant, ihope. 02:32:18 Aww. 02:32:24 NOBODY expects the Spanish Inquisition! 02:45:24 ...so... 02:45:53 Yes. We're a bunch of geeks who need lives. . . 02:45:58 yes. 02:46:04 ooh fun 02:46:31 Why else would we know what the hell an infinite tape allows us to do? 02:47:50 n is a fibonacci number if the intersection of [phi*n - 1/n, phi*n + 1/n] and the set of positive integers is not empty 02:48:04 s/if/iff/ 02:48:40 And that demonstrates what I'm talking about quite well. :) 02:49:07 that is, the interval contains a positive integer 02:50:01 what if you take negative integers? do you get the continuation of fibonacci numbers to the left? 02:50:59 a few trials say yes 02:51:04 hm, somewhat dubious ...,8,-5,3,-2,1,-1,0,1,1, 02:51:25 eh wait. 02:51:31 that -1 is an error. 02:52:28 not much better ...,-8,5,-3,2,-1,1,0,1,1, 02:52:47 what? 02:53:27 every number is the sum of the two left ones. 02:53:37 *to the left 02:54:05 oh 02:54:16 so the continuation is not quite the same as the negatives. 02:54:27 but the test is 02:54:32 yep 02:54:36 I'm rather positive that one couldn't extend the fibonacci sequence purely to the negatives. . . 02:54:43 It'd be a different sequence. 02:54:52 0,-1,-1,-2,-3... 02:56:16 another sequence of the form a*phi^n + b/phi^n. 02:56:23 * SimonRC goes to bed. 02:59:33 eh, a*phi^n + b/(-phi)^n, I think. 03:03:00 * bsmntbombdood watches 2 2 18^^p scroll by in dc 03:04:09 2 2 20^^p, even better 03:07:34 2 2 20^^p20^p20^p20^p20^p20^p is better still. 03:07:42 More abuse of RPN! MORE!!! 03:08:22 dc is pretty esoteric 03:09:12 No it's not. Seems pretty clean to me unless you try to use it as a Turing machine. :p 03:09:41 it's esoteric 03:11:57 0[2 2 12^^plax]salax 03:13:07 oops i mean 0[2 2 12^^+plax]salax 03:14:56 prints 2^(2^12), 2^(2^12)*2, 2^(2^12)*3... 03:20:04 and it can pretty easily be used as a turing machine 03:20:15 it has 257 stacks 03:26:27 hahahaa 03:26:30 1000k26o2vp 03:28:45 print 1000 decimal places of sqrt(2) in base 36 03:28:59 s/36/26/ 03:30:11 dc will be my sole language from now on 03:30:32 it's functional too! 03:30:51 Now implement regexps in it. 03:31:06 I've never done that in a real language 03:32:57 too bad it doesn't optimize tail recursion 03:33:06 [7aPlax]salax segfaults 03:33:59 oooh 03:34:05 the openbsd version doesn't 03:35:11 looks like it optimizes tail recursion! 03:35:53 Or else it has infinite storage. 03:36:20 Maybe. 03:36:20 :P 03:36:50 up to a million tail calls... 03:40:09 brainfuck: 03:40:14 + is 1+ 03:40:18 - is 1- 03:40:23 > is Sa 03:40:27 < is La 03:40:42 . is daP 03:43:36 Input's a bitch. 03:44:39 so is [] 03:46:08 oh cool it's got arrays too 03:48:29 -!- GreaseMonkey has joined. 03:48:34 -!- SevenInchBread has quit (Read error: 113 (No route to host)). 03:54:25 -!- oerjan has quit ("leaving"). 03:54:58 hrm 03:55:30 do this: if pop() is zero, push 1, else 0 03:55:30 ? 03:55:45 I only see if, not if-then-else 04:16:43 doing macros through registers in = is annoying 04:16:50 why not just take it off the stack? 04:24:43 0sa1sb20sl[lalb+stlbsaltsblbpll1-dsl0!=c]sclcx 04:24:51 ^^ print the first 20 fibonacci numbers 04:25:14 uh, what lang is this? 04:26:00 dc 04:26:08 sweet, eh? 04:26:33 is it under development? 04:26:37 no 04:26:40 see dc(1) 04:29:33 how sweet is that 04:30:22 -!- chuckfromchan has joined. 04:30:28 -!- chuckfromchan has left (?). 04:30:38 he must've seen me 04:30:46 -!- pikhq has quit (Read error: 110 (Connection timed out)). 04:37:23 can't figure out drop either 04:38:10 wait, where's the dc reference? 04:38:20 dc(1) 04:38:35 at? 04:38:49 i looked at man 1 dc, nothing came up 04:38:52 /usr/share/man 04:38:59 one sec 04:39:03 http://www.gnu.org/software/bc/manual/dc-1.05/html_mono/dc.html 05:02:51 gah 05:02:55 how to do drop? 05:03:44 [SaSbScLaLcLbdSa+LarSaSbScLbLaLc1-d0!=f]sf 05:03:53 does fibonacci numbers nicer 05:04:03 without using registers for storage 05:04:53 funny how long it took for me to come up with those few characters 06:06:44 heh 06:11:41 afk food 06:43:36 back 07:12:07 ~help 07:18:11 -!- GreaseMonkey has changed nick to ^_`. 07:50:11 -!- RodgerTheGreat has quit. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:25:21 -!- Sukoshi` has joined. 08:34:39 -!- Sukoshi has joined. 08:35:02 -!- ^_` has quit ("gtg gnight"). 08:35:40 -!- RodgerTheGreat has joined. 08:45:50 -!- jix has joined. 08:55:53 -!- ome has joined. 08:56:19 -!- ome has quit (Client Quit). 09:01:29 -!- helios24 has joined. 09:21:23 -!- nazgjunk has joined. 09:35:42 -!- sebbu has joined. 09:37:36 -!- Sukoshi has quit ("ERC Version 5.1 (CVS) $Revision: 1.796 $ (IRC client for Emacs)"). 09:42:43 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 09:48:11 -!- nazgjunk has joined. 09:50:45 -!- anonfunc has joined. 09:52:36 -!- nazgjunk has quit (Client Quit). 10:09:33 -!- sebbu2 has joined. 10:28:44 -!- sebbu has quit (Read error: 110 (Connection timed out)). 10:30:30 -!- Sukoshi` has quit (Read error: 110 (Connection timed out)). 10:42:20 -!- ihope_ has joined. 10:59:26 -!- ihope has quit (Read error: 110 (Connection timed out)). 11:04:05 -!- oerjan has joined. 12:55:01 -!- nazgjunk has joined. 13:16:04 -!- pikhq has joined. 13:29:46 -!- oerjan has quit ("leaving"). 13:49:37 -!- sebbu2 has changed nick to sebbu. 14:04:13 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 15:58:32 -!- Asztal has joined. 16:04:29 -!- anonfunc has quit. 16:21:19 -!- Asztal has quit (Remote closed the connection). 16:28:24 -!- goban has quit (Read error: 104 (Connection reset by peer)). 16:28:42 -!- goban has joined. 16:54:36 -!- crathman has joined. 17:32:16 -!- goban has quit (Read error: 104 (Connection reset by peer)). 17:32:47 -!- goban has joined. 17:45:38 -!- goban has quit (Read error: 104 (Connection reset by peer)). 17:45:51 -!- goban has joined. 17:49:58 -!- goban has quit (Remote closed the connection). 17:50:14 -!- goban has joined. 17:50:37 * SimonRC fwaps goban 17:53:02 -!- goban has quit (Read error: 104 (Connection reset by peer)). 17:53:28 -!- goban has joined. 17:58:27 -!- goban has quit (Read error: 104 (Connection reset by peer)). 17:58:41 -!- goban has joined. 18:29:54 -!- tgwizard has joined. 18:30:23 goban: get a better ISP! 18:35:38 lament: i will :( comcast discconnects me all the time 18:37:39 -!- crathman has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.2/2007021917]"). 18:47:07 * lament throws stones at goban 18:47:28 e2e4! 18:47:41 -!- jix__ has joined. 18:49:05 c7c5! 18:53:41 e4xe8#!! 18:57:41 -!- sebbu2 has joined. 19:01:34 -!- kxspxr has joined. 19:02:23 -!- kxspxr has quit (Client Quit). 19:03:52 oh noes!~ 19:04:27 that's why i don't like chess 19:04:29 it's too easy :) 19:04:49 -!- jix has quit (Read error: 110 (Connection timed out)). 19:04:55 yeah, thats why computers are better than humans now 19:05:41 hey i just had an idea for a really pathological language 19:06:16 make it so each of the tokens have to be moves in a legal chess game! 19:16:48 -!- sebbu has quit (Connection timed out). 19:20:18 goban: ouch 19:20:45 goban: i suppose it's not that bad if we waive the 50-turn rule or whatever it is 19:21:14 goban: then we can get into the endgame with just a couple pieces left and hope that the moves of those pieces are enough for TC 19:23:09 lament: go would be SOOO Much easier! 19:23:28 eh 19:23:31 you mean harder 19:23:47 well there are many more possible moves, and captures make more space 19:23:53 in chess, once you have a few pieces left, it's very easy to move the remaining ones forever without ever interfering 19:24:15 you have to worry about the same position existing 3 times in chess 19:24:19 no unbounded memory 19:24:34 same with go, but its 19x19 so much more :) 19:29:22 you could have the chess game terminate with checkmate (or a drawn position) too :) 19:52:19 -!- crathman has joined. 21:18:20 -!- nazgjunk has joined. 21:23:05 -!- GreaseMonkey has joined. 21:28:21 -!- Rugxulo has joined. 21:29:02 -!- Rugxulo has left (?). 21:29:13 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 21:31:35 -!- nazgjunk has quit ("Leaving"). 22:13:25 -!- goban has quit (Read error: 104 (Connection reset by peer)). 22:13:40 -!- goban has joined. 22:32:08 0 1[dSa+Larplbx]dsbx 22:32:10 :D 22:32:41 prints all the fibonacci numbers 22:34:49 -!- sebbu has joined. 22:41:44 -!- sebbu2 has quit (Read error: 145 (Connection timed out)). 22:42:01 -!- goban has quit (Read error: 104 (Connection reset by peer)). 22:42:13 -!- goban has joined. 23:06:45 hmm that's dissapointing 23:06:54 using the stack is slower than using registers in dc 23:07:14 how is that disappointing? 23:07:30 because it's supposed to be stack based 23:07:39 the stack should be fast 23:08:26 time dc -e "10 4^3*sc 0 1[dSa+Lar lc1-dsc 1!=b]dsbx" 23:08:35 real 0m4.118s 23:08:44 time dc -e "10 4^3*sa 0sb 1sc [lb d lc + sb sc la1-dsa0!=f]dsfx" 23:08:52 real 0m1.963s 23:09:22 both of those calculate the 30000 fibonacci number, the first with the stack and the second with registers 23:10:09 ooh that's interesting 23:10:19 those times were with the implementation that came with openbsd 23:10:38 the gnu implementation running on a faster box takes 2s for both 23:22:44 -!- goban has quit (Read error: 104 (Connection reset by peer)). 23:22:50 -!- goban has joined. 23:26:38 -!- ShadowHntr has joined. 23:45:06 gah 23:45:10 I need drop 23:46:11 I guess for numbers only it could be d-+ 23:46:28 I thought there was a drop or discard command 23:46:37 not that i could find 23:51:00 d-+ is good enough 23:58:03 -!- crathman has quit (Read error: 148 (No route to host)). 2007-03-06: 00:03:16 -!- goban has quit (Read error: 104 (Connection reset by peer)). 00:03:27 -!- goban has joined. 00:43:45 -!- sebbu2 has joined. 00:45:34 -!- pikhq has quit (Remote closed the connection). 01:02:56 -!- sebbu has quit (Read error: 110 (Connection timed out)). 01:06:08 -!- lament has quit ("I lost an eye in a drunken ko fight!"). 01:13:34 -!- crathman has joined. 01:13:49 -!- crathman has quit (Remote closed the connection). 01:15:22 I'd write a brainfuck interpreter in dc if its string manipulations weren't so crappy 01:15:29 -!- tgwizard has quit (Remote closed the connection). 01:19:08 bsmntbombdood: just tokenise everything as numbers and use a few register-stacks. 01:19:34 not good enoough 01:20:03 I'll just figure out conversions 01:23:36 ok 01:25:14 i think [] goes to [ LrdSr 0!=f] Sf LrdSr 0!=f LfSz 01:25:34 assuming l and r are used as the tape, and z is only used to throw away values 01:27:09 Sz should be sz 01:29:07 aaaand it works 01:29:27 all the other conversions are obvious 01:30:16 except input 01:31:12 01:31:44 -!- oerjan has joined. 01:42:25 -!- sebbu2 has quit ("Leaving"). 01:47:23 aha. 01:47:42 darn. 01:47:49 ahoo 01:48:05 i see how to pop a string in dc but only if what's below is a number. 01:48:32 1r 01:48:37 pop = drop? 01:48:41 yes 01:48:45 how? 01:49:18 use Z to turn anything into a length 01:49:39 oh right 01:51:44 well, storing in an un used register works 01:51:47 hm, and then you can use something like d>r I think. 01:51:55 Zd>r should pop. 01:52:33 what's in r? 01:52:49 any register name. it is not used, since the test always fails. 01:54:06 clever 01:54:15 * oerjan bows 01:56:37 But input still looks like a bitch. I guess you do need to convert characters to numbers on I/O. 02:02:35 arrr 02:02:43 loading an empty stack isn't 0 02:03:03 indeed not? 02:03:36 lr is, Lr isn't 02:03:50 that complicates things 02:05:14 Indeed. Also, it looks like only the main stack has a depth command. 02:05:24 yep 02:05:58 Although that is OK if you use an array that is only infinite to the right. 02:06:27 Which is enough for TC brainfuck. 02:06:36 ? 02:06:43 turing-complete 02:06:54 not that 02:07:04 what? 02:07:05 how do you make the array infinite 02:07:25 by using the main stack for the right part. 02:07:40 hmm 02:07:50 and check depth 02:07:55 right. 02:10:35 you could make it twosided with more work, if you are willing to add flags to the stacks. 02:11:05 or rather, keep track of the depth yourself. 02:11:48 or fill it with zeros 30000st [0Sr lt 1- d st 0!=f]dsfx 02:12:50 well if you want fixed size it would be easier to use arrays, wouldn't it? I don't know how big they are. Or the stacks for that matter. 02:13:03 arrays are 2048 long 02:14:18 A bit small. 02:23:03 bah 02:23:06 still doesn't work 02:23:31 http://pastebin.ca/383054 02:31:22 I presume a contains [0]. 02:31:41 yeah 02:31:46 You need to invoke it at the beginning of the program too. 02:31:57 [0]sa0 goes at the beginning 02:32:05 Right. 02:32:38 So I assume it is ] that isn't working, then? 02:33:31 yeah 02:35:33 oops 02:35:43 there was a problem in the translation file 02:36:35 - wasn't getting recognized 02:36:36 oh. because what you pasted seems right to me. 02:36:43 it is, to a human 02:38:11 hello world prints hello world, after a few "stack empty" errors 02:38:36 hm. 02:38:45 so it is still buggy? 02:38:49 yeah 02:39:04 oh 02:39:55 did you forget the prefix [0]sa0? 02:40:04 no 02:41:10 I was thinking that the ] rule needed some z0=a, but that doesn't change anything 02:41:28 It shouldn't. 02:41:47 why not? 02:41:54 it takes from the stack 02:42:01 The main stack should never be empty. 02:42:44 yeah 02:42:51 after a > on an empty stack 02:42:52 oh wait. 02:43:05 right. > is slightly wrong. 02:43:19 It should be Sr first. 02:43:32 z0=a Sr z0=a 02:43:43 that too 02:43:44 You don't need the first z0=a 02:43:54 it works 02:44:04 Of course, but it is redundant. 02:44:12 it works to the whole thing 02:44:13 It will never be triggered. 02:45:01 hooray 02:45:43 * oerjan plays a fanfare. 02:50:29 http://pastebin.ca/383081 02:51:28 i don't think you need z0=a in . 02:51:32 oops, . is wrong too 02:52:09 right 02:58:04 -!- SevenInchBread has joined. 03:07:07 -!- SevenInchBread has quit (Read error: 104 (Connection reset by peer)). 03:07:21 -!- SevenInchBread has joined. 03:10:45 fell asleep in my armchair and woke up now... 10 hours later 03:11:13 heh 03:11:49 sounds like you are ready for a new day :) 03:13:25 it's 5 am 03:13:31 and my back hurts like hell 03:34:33 :-S !!! http://en.wikipedia.org/wiki/House_of_Leaves#Format 03:34:34 * SimonRC goes to bed 03:48:51 SimonRC: neat 04:01:45 -!- lament has joined. 04:09:40 -!- ShadowHntr has quit ("End of line."). 04:17:50 [1Sa [d La*Sa 1- d 0r La]sf 04:17:52 factorial 04:20:15 in what language? 04:20:19 dc 04:20:51 I think i'm going to get a new screen name and say I got a "gnu screen name" 04:23:01 =D 04:23:52 Ha. BTW do you know that all GNU programs must terminate? 04:25:11 huh? 04:25:37 Because they are antiloops. 04:27:36 haha 04:42:14 -!- SevenInchBread has quit (Read error: 113 (No route to host)). 04:48:02 i'm very disappointed, my ai just discovered eternal loops were possible in the game 04:49:04 i spent an hour figuring out how it did it... quite trivial but requires a lot of moves before the loop can be done 04:50:19 there is only one possibility - turn your game into a Turing-complete esoteric language! 04:50:41 i've been thinking about that 04:51:12 it's just you can always choose which triggers to use and in which order... that has to be dropped 04:51:43 plus it should still be playable by humans in situation created with humans playing 04:52:03 or it kinda loses the coolness of being a turing complete game 04:52:10 *situations 04:52:46 because first i thought threads for each trigger..... it's kinda impossible to actually use 04:52:47 :) 05:27:48 -!- ShadowHntr has joined. 05:30:41 too many esolangs are turing tarpits 05:34:02 nah 05:34:39 too many esolangs are minor variations on the same plot. 05:35:28 Not enough esolangs are Perl. 05:37:31 perl is an esolang in itself 05:38:00 oh, the other way is to have as many instructions as you can ;D 05:38:05 nah perl is at _least_ two esolangs. 05:38:45 At least three I'd say. 05:40:50 the third way would be having an unusual basic concept. 06:03:01 ok guys, afk 06:25:23 back 06:32:04 -!- RodgerTheGreat has quit. 06:33:52 -!- RodgerTheGreat has joined. 06:46:04 hey guys, are any of you in an aware state when the mention of esoteric english is presented? 06:46:26 NO PARSE 06:47:07 that's a sentence in eso-english, which is the more esoteric side of english 06:47:56 well in that case it looks like a kind of buzzword speak. 07:01:30 tarpits are cool. 07:06:11 there is a high degree of the cool factor which tarpits are allocated 07:28:06 -!- ShadowHntr has quit ("End of line."). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:31:31 ok, gtg, gnight 08:33:01 -!- GreaseMonkey has quit ("Site updated, and a blog post: http://greasemonkey.nonlogic.org"). 08:52:55 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 08:56:22 -!- oklofok has joined. 09:13:03 -!- Sukoshi has joined. 09:37:45 -!- sebbu has joined. 09:42:54 No. 09:55:48 -!- jix has joined. 09:58:05 -!- nazgjunk has joined. 10:00:38 -!- jix has quit (Client Quit). 10:19:08 -!- Sukoshi has quit (Read error: 110 (Connection timed out)). 10:19:36 -!- ihope__ has joined. 10:21:55 -!- jix has joined. 10:37:07 -!- ihope_ has quit (Read error: 110 (Connection timed out)). 10:39:01 -!- jix has quit ("This computer has gone to sleep"). 11:03:39 -!- oklofok has quit (Read error: 104 (Connection reset by peer)). 11:06:15 -!- oklopol has joined. 11:18:52 -!- jix has joined. 11:35:54 -!- ihope__ has quit (Client Quit). 12:02:01 -!- jix has quit ("This computer has gone to sleep"). 12:34:36 -!- jix has joined. 12:47:12 -!- UpTheDownstair has joined. 13:00:48 -!- UpTheDownstair has quit (Read error: 104 (Connection reset by peer)). 13:01:57 -!- UpTheDownstair has joined. 13:04:07 -!- nazgjunk has quit (Connection timed out). 13:09:04 -!- UpTheDownstair has changed nick to nazgjunk. 14:43:03 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 14:43:04 -!- UpTheDownstair has joined. 14:44:23 -!- UpTheDownstair has changed nick to nazgjunk. 15:23:03 -!- oerjan has quit ("leaving"). 15:34:30 -!- tgwizard has joined. 15:38:50 -!- UpTheDownstair has joined. 15:39:11 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 15:51:32 -!- UpTheDownstair has quit (Read error: 54 (Connection reset by peer)). 15:52:01 -!- nazgjunk has joined. 16:05:06 -!- goban has quit (Read error: 104 (Connection reset by peer)). 16:05:21 -!- goban has joined. 17:03:41 -!- UpTheDownstair has joined. 17:04:48 -!- UpTheDownstair has quit (Read error: 54 (Connection reset by peer)). 17:06:09 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 17:36:31 -!- nazgjunk has joined. 17:37:10 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)). 17:39:31 -!- nazgjunk has joined. 17:48:59 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)). 17:48:59 -!- UpTheDownstair has joined. 17:49:51 -!- UpTheDownstair has changed nick to nazgjunk. 18:19:22 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 18:22:53 -!- nazgjunk has joined. 18:30:37 -!- Black_Phoenix has joined. 18:40:15 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)). 18:40:32 -!- UpTheDownstair has joined. 18:45:14 -!- UpTheDownstair has changed nick to nazgjunk. 18:47:38 Hello 18:53:58 I have an idea for a language 18:55:17 hello 19:00:00 I will prepare something and show you later 19:00:02 -!- Black_Phoenix has left (?). 19:16:08 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 19:48:20 -!- nazgjunk has joined. 20:25:15 -!- Arrogant has joined. 20:59:48 -!- Arrogant has quit ("Leaving"). 21:06:05 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)). 21:08:16 -!- nazgjunk has joined. 21:47:21 -!- goban has quit (Read error: 104 (Connection reset by peer)). 21:48:17 -!- lupine_85 has quit (Remote closed the connection). 21:59:27 -!- tgwizard has quit (Remote closed the connection). 22:00:40 -!- kxspxr has joined. 22:00:59 -!- kxspxr has quit (Client Quit). 22:21:57 -!- expose has joined. 22:22:40 -!- expose has left (?). 22:39:13 -!- nazgjunk has quit (Connection reset by peer). 22:40:02 -!- sebbu2 has joined. 22:48:27 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 22:59:15 -!- sebbu has quit (Connection timed out). 23:48:57 -!- sebbu2 has quit ("Leaving"). 2007-03-07: 00:07:24 * bsmntbombdood wonders what "Bitte waehlen Sie eine Beerdigungnachricht" means 01:04:37 -!- oerjan has joined. 01:06:01 It means "Please select a funeral message". 01:12:36 * oerjan wonders what kind of government a hypocracy is. :) 01:13:00 Rule by stupid people who cannot spell? 01:14:52 Rule by doctors [joke no one will get]. 01:21:35 Well it is a bit dated, given the computer revolution in medicine. 01:23:05 or maybe that _is_ the modern version. hm. 01:24:57 dirty little logreader 01:24:58 :P 01:26:35 oh and the "hypocracy" was not from the logs. i just read it once again on the web. 01:27:15 i mean when a word is used that often it's got to mean something, right? 01:30:10 -!- crathman has joined. 01:41:49 :-S 02:28:21 -!- ShadowHntr has joined. 02:44:21 nooo they be takin my bucket 02:46:15 -!- GreaseMonkey has joined. 03:07:06 Argh! Which complete imbecile decided to put a uniform RealFloat constraint on Haskell Complex numbers? 03:07:17 hehehe 03:07:31 Haskell numeric classes are a bloody mess. 03:07:43 square the circle, man! 03:08:12 i want Complex Rational! 03:08:33 and i might sometime want Gaussian integers too. 03:09:35 have you looked at the definition of Real 03:09:48 Me thinks computer science is not math 03:10:16 Acoording tp haskell typeclasses, the definig property of real numbers is that you can convert them to fractions 03:10:20 duhbdbdbdbdd 03:11:47 rationals for the wi 03:11:48 n 03:11:59 well well. i guess i'll just have to define complex multiplication explicitly. 03:14:26 -!- crathman has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.2/2007021917]"). 03:21:21 According that is indeed a statement 03:21:50 because it follows the "noun, verb" format 03:22:02 with quite a few modifiers 03:22:32 i'm in ur $location $verbing (your|my) $noun 03:23:11 that is a *statement*. 03:23:36 i believe that most sentences spoken in english are statements, including this sentence. 03:24:39 No. 03:24:47 Yes! 03:24:57 * oerjan is feeling paradoxical. 03:26:27 hm 03:27:16 well? 03:28:07 the verb "is" can accept a verb as an adjective. 03:28:36 "No." and "Yes!" are expressions. 03:28:56 "well?" is an incomplete query 03:29:48 The verb 'is' cannot accept a verb as an adjective X_X 03:29:51 He is eat? 03:29:58 -ing turns a verb into an adjective. 03:30:10 yah 03:30:27 So does -ed IIRC 03:30:45 sometimes requires -ed to be -en 03:30:53 sometimes IT requires -ed to be -en 03:30:57 I live in a happy universe where things are consistent ;) 03:32:14 Wow, can I have your interdimensional communication technology? 03:32:58 Sorry, it can only exist in my universe. 03:46:17 ^expression tagged onto a statement 03:46:39 you can tie types of sentences together 03:47:20 eg: "i'm a fag, so are you?" <- statement + incomplete query 03:47:31 (i'm straight though) 03:48:37 taylor series are the shit 03:52:05 Darn I just realized why Complex needs at least Floating. That stupid abs operation in Num requires square root for complex extension! :( 04:37:55 * bsmntbombdood calculates e and sqrt(e) 04:42:44 http://pastebin.ca/384562 04:42:48 for no particular reason 04:48:24 wow, that actually crashed Hugs. 05:00:46 O.o 05:01:05 that approxamation of e is accurate to within 3/(799!) 05:02:29 Naturally. The exp taylor series converges fast. 05:03:57 yeah 05:04:37 I would expect (1+x)/(799!) where x ~ 1/800 05:13:25 -!- anonfunc has joined. 05:36:36 afk food 06:00:27 -!- oerjan_ has joined. 06:01:05 -!- oerjan_ has quit (Client Quit). 06:01:16 -!- oerjan has quit (Remote closed the connection). 06:01:23 -!- oerjan has joined. 06:02:24 back 06:25:19 -!- ShadowHntr has quit ("End of line."). 06:55:29 -!- oerjan has quit ("leaving"). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:36:36 -!- GreaseMonkey has quit (Read error: 104 (Connection reset by peer)). 09:25:31 -!- sebbu has joined. 09:30:37 -!- nazgjunk has joined. 09:41:10 -!- kxspxr has joined. 09:41:25 -!- kxspxr has quit (Client Quit). 10:06:59 -!- UpTheDownstair has joined. 10:07:02 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 10:08:27 -!- UpTheDownstair has changed nick to nazgjunk. 10:19:13 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 10:22:26 -!- nazgjunk has joined. 10:52:45 -!- UpTheDownstair has joined. 10:52:49 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 10:58:21 -!- UpTheDownstair has changed nick to nazgjunk. 11:18:25 -!- nazgjunk has quit (Read error: 131 (Connection reset by peer)). 11:18:34 -!- UpTheDownstair has joined. 11:20:34 -!- anonfunc has quit. 11:28:35 -!- UpTheDownstair has changed nick to nazgjunk. 12:08:06 -!- UpTheDownstair has joined. 12:08:30 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 12:08:40 -!- UpTheDownstair has changed nick to nazgjunk. 12:54:00 -!- jix has joined. 13:24:30 -!- nazgjunk has quit ("really really need to study now"). 13:53:42 -!- nazgjunk has joined. 14:21:56 -!- UpTheDownstair has joined. 14:22:21 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 14:22:30 -!- UpTheDownstair has changed nick to nazgjunk. 14:24:01 -!- tgwizard has joined. 14:54:18 -!- nazgjunk has quit ("lunch + voting + work, bbl +- 10 CET"). 14:58:25 -!- nazgjunk has joined. 15:00:02 -!- nazgjunk has quit (Connection reset by peer). 15:00:08 -!- UpTheDownstair has joined. 15:02:01 -!- UpTheDownstair has changed nick to nazgjunk. 15:17:40 -!- nazgjunk has quit ("Leaving"). 17:45:19 -!- jix has quit (Read error: 113 (No route to host)). 19:31:07 -!- dddh has joined. 19:32:33 -!- dddh has left (?). 20:02:16 -!- crathman has joined. 20:24:12 -!- nazgjunk has joined. 20:33:39 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 20:33:56 -!- nazgjunk has joined. 20:41:26 -!- UpTheDownstair has joined. 20:41:42 -!- nazgjunk has quit (Connection reset by peer). 20:51:06 -!- crathman has quit (Remote closed the connection). 20:57:26 -!- UpTheDownstair has quit (Read error: 104 (Connection reset by peer)). 20:59:21 -!- nazgjunk has joined. 20:59:45 -!- jix__ has joined. 21:15:37 -!- UpTheDownstair has joined. 21:16:26 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 21:40:37 -!- Arrogant has joined. 21:42:48 -!- UpTheDownstair has changed nick to nazgjunk. 21:48:51 -!- UpTheDownstair has joined. 21:50:09 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 21:53:09 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 21:55:47 -!- UpTheDownstair has changed nick to nazgjunk. 22:04:37 -!- Arrogant has quit ("Leaving"). 22:05:43 -!- UpTheDownstair has joined. 22:10:34 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 22:12:40 -!- nazgjunk has joined. 22:20:16 -!- nazgjunk has quit (Connection reset by peer). 22:22:58 -!- UpTheDownstair has quit (Connection timed out). 22:23:25 -!- UpTheDownstair has joined. 22:30:54 -!- sebbu2 has joined. 22:34:22 -!- Sgeo has joined. 22:38:33 -!- nazgjunk has joined. 22:39:41 -!- nazgjunk has quit (Connection reset by peer). 22:39:48 -!- UpTheDownstair has quit (Read error: 104 (Connection reset by peer)). 22:46:14 -!- nazgjunk has joined. 22:49:36 -!- sebbu has quit (Connection timed out). 22:55:09 -!- tgwizard has quit (Read error: 110 (Connection timed out)). 23:03:54 -!- crathman has joined. 23:09:49 -!- UpTheDownstair has joined. 23:25:26 -!- nazgjunk has quit (Success). 23:35:39 -!- UpTheDownstair has quit (Success). 23:51:05 -!- crathman has quit (Read error: 113 (No route to host)). 2007-03-08: 00:13:01 -!- sebbu2 has quit (Client Quit). 00:40:05 ell 00:49:54 o? 00:50:02 or as in "bloody ell" 00:50:05 ? 00:54:33 Unspecified 00:57:08 yay, recursion without using registers 00:57:25 1[r 2*p r dx]dx 01:24:28 neato 01:26:11 dc is sweet 01:37:25 -!- crathman_ has joined. 01:37:49 -!- crathman_ has changed nick to crathman. 01:37:52 -!- crathman has quit (Remote closed the connection). 01:39:59 -!- graue has joined. 02:55:43 -!- calamari has joined. 02:57:45 -!- GreaseMonkey has joined. 04:51:14 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)). 05:02:42 -!- goban has joined. 05:08:29 -!- cmeme has quit ("Client terminated by server"). 05:08:39 -!- cmeme has joined. 05:15:25 hi 05:18:42 hi 05:18:49 im working on an IRC bot :D 05:19:44 how exciting. 05:19:50 *yawn* 05:27:47 Anybody got an Intel OS X box that wants to help me port crosslibc? 05:28:37 My suspicion is that it works as-is, since OS X uses the same syscall format as the rest of the BSD family. 05:30:34 -!- GreaseBot has joined. 05:30:56 Hehe, I'm only a slavebot for now :D 05:31:12 #PRIVMSG #esoteric :test 05:31:13 test 05:31:29 ok, so i now have a bot. cool? 05:31:31 #QUIT Hahaha 05:31:39 :( 05:31:40 nice try 05:31:47 but it's nick-dependent 05:32:00 #QUIT :OK GregorR, I give up 05:32:00 -!- GreaseBot has quit (Client Quit). 05:32:21 wtf? why didn't i get a quit message? 05:32:40 Go look it up on the freenode FAQ. 05:32:47 Everybody asks that the first time they write a bot :P 05:33:41 do i have to register to get a quit message? 05:33:58 Go look it up on the freenode FAQ. 05:33:59 Everybody asks that the first time they write a bot :P 05:35:51 i can't find the question :( 05:39:12 IIR, basically: If you're not registered, you need to be on for a few minutes before it will allow quit messages, and also certain activities cause it to penalize that time. 05:41:31 *IIRC 05:41:35 I hate this keyboard X_X 05:48:49 GregorR: I have an intel-based mac 05:49:32 RodgerTheGreat: If you'd like to help, one of two options: Either compile a few things for me and see if they run, or give me SSH so I can do the same. 05:50:23 hand me a tar and I'll take a crack at compiling its contents 05:53:02 [uploading] 05:53:22 http://www.codu.org/rtload-r10.tar.bz2 05:53:41 Just 'make' to compile rtload, then: ./rtload test-xlibc.elf 05:53:47 Should say Hello, world 1! I believe. 05:53:57 alright, one sec 05:54:09 [If it segfaults after that, don't worry about it, rtload is still a bit funky :P ] 05:55:17 hrm.. 05:55:19 wads-5-232-13:~/Desktop/rtload-r10 Rodger$ make 05:55:19 gcc -g -DRTLOAD_STATICELF -DRTLOAD_AOUT -c rtload.c -o rtload.o 05:55:20 gcc -g -DRTLOAD_STATICELF -DRTLOAD_AOUT -c ldrs.c -o ldrs.o 05:55:20 gcc -g -DRTLOAD_STATICELF -DRTLOAD_AOUT -c bbuffer.c -o bbuffer.o 05:55:20 bbuffer.c: In function 'bbuffer': 05:55:20 bbuffer.c:143: error: PIC register 'ebx' clobbered in 'asm' 05:55:21 make: *** [bbuffer.o] Error 1 05:55:43 Hm, apparently Mac OS X does all code as PiC ... 05:55:45 I can fix that. 05:56:57 Whoops - hahaha, it doesn't even actually clobber it, it just claims to :P 05:57:17 ... meaning? 05:57:33 In bbuffer.c, on line 118, remove: , "ebx" 05:58:21 so the line is just 05:58:22 : "eax",); \ 05:58:24 ? 05:58:31 No comma ther 05:58:38 ah, alright 05:58:46 that's what I was about to ask 05:59:03 I did put a comma in what I told you to remove ;) 05:59:10 oh 05:59:32 it builds cleanly now, but then I get this: 05:59:33 wads-5-232-13:~/Desktop/rtload-r10 Rodger$ ./rtload test-xlibc.elfBus error 05:59:47 Bus error ... always a nice one :P 05:59:49 there's a newline in there somewhere... 06:00:03 what next, chief? 06:01:15 I'll be back in a few minutes ;) 06:01:21 ok 06:01:29 Unfortunately, debugging rtload and crosslibc is about as big of a PITA as there is >_> 06:01:39 I can only imagine 06:03:27 wow- not a bad deal: http://www.woot.com/ 06:04:29 pop some more ram and a video card in that thing and it'd be a damn decent machine 06:05:04 and considering the parts, it wouldn't be easier to build one for cheaper 06:05:12 *easy 06:10:54 afk, food 06:12:52 -!- Arrogant has joined. 06:12:55 * GregorR reappears. 06:14:18 RodgerTheGreat: Do you want to be indoctrinated into the crosslibc cult [help debug where that error is]? 06:14:52 erm... well, I'm no C-coder myself- I'm not sure how much of a help I could be 06:15:22 You could give me SSH ;) 06:15:56 nothing personal, dude, but I'm not in the habit of giving random people from the internet shell access to my machine 06:16:07 if I still had my backup box, I'd say have at it 06:16:40 but one of my roommate's friends gave that computer a bath, and it has mysteriously ceased working 06:16:44 if you get my meaning 06:16:49 Heh 06:35:15 -!- calamari has quit ("Leaving"). 06:38:08 back 06:54:47 'night all- GregorR: if you need anything done, I'll be here most of tomorrow 07:10:13 -!- oerjan has joined. 07:40:17 -!- Arrogant has quit ("Leaving"). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:09:53 my bot works 08:10:06 and it's pretty cool 08:10:09 wanna see? 08:16:01 -!- jix__ has joined. 08:23:42 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 08:25:13 night everyone 08:26:46 -!- GreaseMonkey has quit ("I should make more bots. It's fun. Roger_The_Bum, nice try, but you use SupyBot. And that's generic. Generic bots are kinda g). 08:47:37 -!- helios_ has joined. 09:05:03 Well, I think I am finished writing obscenely inefficient programs. My computability theory homework is finished. 09:06:19 I really do mean obscenely inefficient. How about f(n,n) runtimes where f(0,y) = y and f(x+1,y) = 2^f(x,y) ? 09:06:26 on purpose, I assume. :) 09:06:52 no, it's just that they don't matter, so we ignore the runtime 09:06:58 all that matters is computability 09:07:06 oh. 09:07:18 that's not even Ackermann. 09:07:58 I think there are some ackerman runtimes around too. 09:08:34 i suppose if you do complexity theory you might have to do it again. 09:08:44 Want to recurse? Just make your program a quine and include a universal interpreter whereever recursion is required. 09:08:52 he 09:08:52 heh 09:09:26 and then it _definitely_ would be on purpose. 09:09:34 see here for example: http://www.dur.ac.uk/s.s.dantchev/Teaching/ATC-CT/ 09:09:55 want to make a datastructure? well the only type available is Nat, but that's ok... 09:10:33 and the only operation is Succ? :) 09:10:39 you just do = 2^x*(2*y + 1) - 1 09:10:50 oerjan: no, you have limited predecessor too 09:11:01 also JNZ 09:11:26 and a clever macro system that is not too bad at replacing subroutines 09:11:28 Minsky machines 09:12:10 no indexing of course 09:12:30 * SimonRC goes to breakfast 09:38:22 -!- jix__ has joined. 09:41:57 -!- sebbu has joined. 10:16:59 -!- helios_ has quit ("Leaving"). 10:21:29 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 10:35:04 -!- goban has quit (Remote closed the connection). 10:41:58 -!- nazgjunk has joined. 10:53:01 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 10:53:15 -!- UpTheDownstair has joined. 10:53:37 -!- UpTheDownstair has changed nick to nazgjunl. 10:53:41 -!- nazgjunl has changed nick to nazgjunk. 11:24:00 -!- UpTheDownstair has joined. 11:28:28 -!- nazgjunk has quit (Read error: 145 (Connection timed out)). 11:38:01 -!- nazgjunk has joined. 11:38:57 -!- UpTheDownstair has quit (Read error: 104 (Connection reset by peer)). 11:50:09 -!- oerjan has quit (Read error: 104 (Connection reset by peer)). 12:04:26 -!- nazgjunk has quit (Client Quit). 13:41:01 -!- calamari has joined. 14:22:23 -!- jix__ has joined. 14:35:10 -!- calamari has quit ("Leaving"). 14:36:25 -!- Arrogant has joined. 14:55:51 -!- jix__ has changed nick to jix. 16:21:03 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 16:23:50 -!- jix has joined. 17:18:28 hmm 17:18:43 can i find the list of argument a function need somehow? 17:18:43 eh 17:18:46 in python 17:18:48 *arguments 17:18:53 at runtime of course 17:19:04 *needs 17:45:02 there's foo.func_code_co_argcount 17:45:26 and foo.func_code.co_varnames 17:51:34 __import__("pydoc").inspect.getargspec(my_funx) was what #python told me 17:51:41 that seems to work fine 17:52:25 that thing probably uses the fields i mentioned :) 17:56:31 -!- nazgjunk has joined. 17:59:19 -!- RodgerTheGreat has quit. 18:03:49 yeah, i thought that might be the case :P 18:04:10 but it's not important, as long as it works 18:40:45 -!- UpTheDownstair has joined. 18:42:46 -!- nazgjunk has quit (Nick collision from services.). 18:42:50 -!- UpTheDownstair has changed nick to nazgjunk. 18:54:36 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 18:54:47 -!- UpTheDownstair has joined. 18:58:56 -!- nazgjunk has joined. 18:59:49 -!- UpTheDownstair has quit (Connection reset by peer). 19:11:26 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 19:11:47 -!- nazgjunk has joined. 19:13:20 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 19:14:25 -!- nazgjunk has joined. 19:19:41 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 19:20:07 -!- nazgjunk has joined. 19:29:36 -!- UpTheDownstair has joined. 19:30:36 -!- nazgjunk has quit (Connection reset by peer). 19:30:55 -!- UpTheDownstair has changed nick to nazgjunk. 19:32:27 -!- ShadowHntr has joined. 19:41:24 -!- sebbu2 has joined. 19:57:31 -!- UpTheDownstair has joined. 19:58:11 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 19:59:41 -!- UpTheDownstair has changed nick to nazgjunk. 20:06:24 -!- sebbu has quit (Connection reset by peer). 20:17:32 -!- UpTheDownstair has joined. 20:18:31 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 20:18:51 -!- UpTheDownstair has changed nick to nazgjunk. 20:37:03 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 20:49:11 -!- RobHu has quit ("leaving"). 20:56:55 i think hq9 should archive turing completeness with X so that X prevents execution of h, q and 9 but h still returns "hw" in the stream and 9 returns the number 9, q somehow applies two thing together so that it is possible to combine hello worlds and 9's into something sensible 20:57:09 i'm sure i soon get an idea how to do this :\ 20:57:20 *thigs 20:57:22 *things 20:57:49 X would thus be the opposite of unlambda's ` (maybe) 21:14:45 what's the opposite of application? 21:15:06 displication 21:17:21 well, in application you give the function some arguments... so in displication you make (\a -> f) where f is the function to be displicated 21:17:23 i'd say 21:18:14 so H will not be executed since it is now required to get an argument before outputting Hello, world 21:19:14 X9 -> (\a->9) 21:19:14 XXH -> (\a->(\a->H)) 21:19:22 i still have no idea what you can do with this 21:19:26 :) 21:21:41 so, delay 21:21:53 maybe. 21:26:39 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 21:39:07 -!- Rugxulo has joined. 21:39:37 -!- Rugxulo has left (?). 21:44:21 -!- nazgjunk has joined. 21:52:39 -!- Sgeo has joined. 22:17:47 -!- sebbu2 has changed nick to sebbu. 22:28:11 -!- Arrogant_ has joined. 22:30:37 -!- Arrogant_ has quit (Client Quit). 22:36:42 -!- nazgjunk has quit ("Leaving"). 22:43:10 -!- sebbu2 has joined. 22:53:10 -!- Arrogant has quit (Read error: 113 (No route to host)). 23:01:31 -!- Sgeo has quit ("Leaving"). 23:01:44 -!- sebbu has quit (Connection timed out). 23:14:51 -!- sebbu2 has quit ("@+"). 23:27:52 hmmm 23:27:54 http://en.wikipedia.org/wiki/Lagrange_inversion_theorem 2007-03-09: 01:18:24 -!- Insineratehymn has joined. 01:18:36 hey EgoBot 01:19:28 -!- Insineratehymn has quit (Client Quit). 01:20:10 :( Aw, I thought I had a friend. 01:22:53 you did 01:22:57 just not anymore 01:24:03 heh 01:24:25 I have lots of friends! 01:44:21 a prize of infinite money!! 01:44:38 $1 the first day, 1/2 the next, 1/3, 1/4... 01:44:41 :P 02:08:05 how did you win that? 02:08:43 i didn't 02:08:45 it was a joke 02:10:24 -!- SevenInchBread has joined. 02:12:03 i wonder for how much money you could sell that prize 02:12:09 quite a lot, probably 02:13:25 or maybe not 02:13:32 you get 6 bucks the first year 02:13:52 then only 70 cents the next year 02:14:48 that's not all that great 02:15:00 (as compared with the market) 02:17:33 yeah 02:19:09 the market gets you infinite money faster :) 02:27:46 isn't 11.7% interest pretty good? 02:28:41 it is 02:28:53 but it's not real 11.7% interestt 02:28:59 it's only like that the first year :) 02:29:37 how much do you get the third year? 02:29:41 real interest would correspond to a sequence with increasing terms. The market even outperforms some of those. 02:29:48 about 30 cents. 02:30:17 after the 3rd year you have $7.575 02:30:51 And if you live 70 years, you almost but not quite get to $11. Yay. 02:31:01 after 20 years it's 9.4728 02:31:20 100 years, $11 02:32:22 even if the prize was a dollar a day, it would still be outperformed by a small initial investment 02:32:32 1000 years, $13 02:33:38 therefore the "value" of the prize is smaller than the value of the investment 02:33:52 10,000 years, $15.6 02:34:31 we can actually calculate how much the "prize" is worth 02:34:50 under specific market conditions 02:34:50 what do you mean? 02:35:09 how much money would it make sense to pay for it 02:35:16 as opposed to just invest that money 02:35:31 ...it wouldn't 02:36:20 well no 02:36:25 it's clearly worth more than a dollar 02:36:45 i mean no 02:36:53 nevermind 02:36:59 i mean it's not :) 02:37:10 sure it is 02:37:28 pay a dollar for it and you'd have $1.50 the next day, that's worth it 02:39:29 http://www.mathbin.net/8782 02:39:41 where x is the amount worth it to pay 02:41:55 or something link that 02:41:57 graue: oh yeah, that's true 02:42:26 graue: if you can do that repeatedly, and buy unlimited prizes a day, that outperforms the market easily :) 02:42:40 yeah, there you go 02:49:23 after 2 days, the prize is worth $1.49 02:49:36 at 10% per year 02:50:17 after 1 year, it's worth $5.86 02:53:00 hmm 02:53:08 5 years only $4.9 02:56:30 hehehe 02:56:33 find the peak price 02:56:59 somewhere between 2 and 5 years 02:57:34 i'm surprised it ever gets to more than 5 bucks 02:58:45 -!- Sgeo has joined. 03:03:24 looks like 2 years 03:03:26 about 03:03:58 i'm just trying random stuff here 03:04:47 maybe it's e years :) 03:05:51 nope 03:05:58 -!- GreaseMonkey has joined. 03:06:00 e years is $5.69 03:06:14 2 years is $5.87 03:06:47 2*$5.87=e*5.69 03:06:54 2*$5.87/5.69=e 03:07:05 solved 03:07:18 thanks 03:07:21 you're a genius 03:07:33 ah whoops 03:07:39 2*5.69/5.87=e 03:07:43 except, no 03:07:58 1.938671209540034 years 03:08:05 what was it for? 03:08:27 GreaseMonkey: 'e' is Euler's constant :) 03:08:43 GreaseMonkey: and the relationship is highly non-linear 03:08:51 GreaseMonkey: a harmonic series prize 03:08:54 k 03:08:59 GreaseMonkey: compared to investing the money 03:09:21 you never know, it might come in handy 03:09:38 just in case you have something that says $5.87 for 2 years 03:09:53 and you only want 1.938671209540034 years 03:10:01 so you know it's $5.69 03:12:45 uuuuh 03:25:35 I'm going to make a killing selling these for 6 dollars 03:29:48 assuming you can actually invest at 10% 03:30:53 yeah :P 03:31:53 (for the rest of eternity) 03:33:49 ooh 03:33:53 mistake 03:34:01 we have to invest the return 03:36:00 the 1, 1/2, 1/3... 03:36:06 dunno how to do that 04:01:56 * Sgeo created http://uncyclopedia.org/wiki/SpySheriff 04:02:14 oh, you like uncyc, huh? 04:02:25 yep 04:04:55 that's a good article, made me lol 04:05:08 ty 04:22:32 -!- SevenInchBread has quit (Read error: 113 (No route to host)). 05:09:57 \sum_{n=1}^{x} 1/x is pretty well aproximated by .79 + .95*ln(x) 05:11:32 hey, what lang should i use for adding custom bot messages to GreaseBot 05:12:05 what language is it written in? 05:22:11 actually, it's pretty far off for big numbers 05:22:22 guess it grows a little faster than ln 05:25:11 ha 05:25:21 off by x/c 05:26:29 um, GreaseBot is coded in C 05:26:50 logfuck 05:27:24 dc 05:27:25 hmm, i'll look into it 05:27:49 ah, yes, good idea, VERY good idea 05:28:02 what? 05:29:28 dc 05:30:17 dc rocks 05:31:16 i cud build my own lang tho 05:31:39 like miniscript but using single-symbol stuff and more strin-oriented 05:32:51 Apparently, %-1% gives it %1%% at %2% 05:32:55 stuff like that 05:33:11 say = %1% 05:33:46 act = $01ACTION %1%$01 05:33:56 wait 05:34:14 act = PRIVMSG %-1% $01ACTION %1%$01 05:34:17 better 06:27:35 afk, food, pulling GreaseBot offline 06:44:54 -!- GreaseMonkey has quit (Read error: 110 (Connection timed out)). 06:45:09 -!- GreaseMonkey has joined. 07:19:04 -!- helios24 has quit (Remote closed the connection). 07:19:40 -!- helios24 has joined. 07:25:12 -!- jix has joined. 07:30:31 -!- Sgeo has quit ("Leaving"). 07:54:52 -!- ShadowHntr has quit (Read error: 145 (Connection timed out)). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:24:44 -!- ShadowHntr has joined. 08:29:38 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 08:54:19 -!- ShadowHntr has quit ("End of line."). 08:59:42 gnight 09:01:44 -!- GreaseMonkey has quit ("Goodnight everyone. (Ahh, I love my bot :D)"). 09:56:04 -!- sebbu has joined. 11:45:46 * sebbu search the apprentice, from lewis libby 12:35:21 -!- ais523 has joined. 13:06:41 !ps d 13:06:43 1 ais523: daemon ul bf 13:06:46 2 ais523: daemon deadfish funge93 13:06:48 3 ais523: ps 13:07:26 !help 13:07:29 help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon 13:07:32 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl 13:10:50 EgoBot needs an HQ9+ interpreter 13:12:36 * ais523 googles HQ9+ 13:12:42 Hey, there's a language called HQ9+- 13:12:57 - causes a different error depending on which command it's adjacent to 13:14:07 -!- jix has joined. 13:15:08 and checking http://99-bottles-of-beer.net it seems that there's a language that can do 99 bottles of beer in even fewer characters than HQ9+ 13:17:55 yeah in 99 the empty program does that iirc 13:18:57 as does every other program 13:19:43 What's confusing me now is there seems to be quite a bit of HQ9+ discussion in news:perl.perl6.internals 13:22:42 :D 13:23:09 are they going to add HQ9 capabilities in perl? 13:25:26 It's not entirely clear from the newsgroup messages 14:06:27 * ais523 has just written an HQ9+ interpreter in Thutu 14:06:42 because I couldn't find enough HQ9+ interpreters in esoteric programming languages 14:06:56 http://pastebin.ca/raw/387587 14:07:45 I even made sure it had a genuine accumulator (although not one that does anything useful, naturally) 14:08:23 but I'd really prefer an HQ9+ interpreter in a language that Egobot has 14:08:30 so that we can daemon it 14:16:30 -!- ais523 has quit ("So as to be not logged in when leaving the computer"). 14:25:03 -!- ais523 has joined. 14:44:28 -!- crathman has joined. 15:01:35 -!- crathman_ has joined. 15:12:25 -!- nazgjunk has joined. 15:12:34 -!- helios24 has quit ("Leaving"). 15:17:38 -!- crathman has quit (Read error: 110 (Connection timed out)). 15:22:48 -!- UpTheDownstair has joined. 15:25:01 -!- UpTheDownstair has quit (Read error: 104 (Connection reset by peer)). 15:25:28 -!- UpTheDownstair has joined. 15:31:00 -!- grmbla has joined. 15:32:09 -!- nazgjunk has quit (Nick collision from services.). 15:32:24 -!- grmbla has changed nick to nazgjunk. 15:35:43 -!- UpTheDownstair has quit (Read error: 145 (Connection timed out)). 15:41:16 -!- UpTheDownstair has joined. 15:42:29 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 15:43:14 -!- oerjan has joined. 15:51:53 -!- nazgjunk has joined. 15:54:18 -!- UpTheDownstair has quit (Read error: 145 (Connection timed out)). 15:54:51 * ais523 has written a Forte interpreter that seems to handle LET properly 15:55:02 I haven't programmed any of the other commands yet, though 15:55:10 nor tested it with tricky things like continuation lines 15:55:39 right... i'm still bogged down in parsing, it seems. 15:55:57 My interpreter doesn't really parse the input at all 15:56:18 I wrote it by extending Thutu to have arithmetic built-in, and then using the new language 15:56:39 so it uses regexps to parse commands on-the-fly at the last possible moment 15:57:00 q 15:57:10 how do you keep track of assigned numbers? 15:57:24 I use a list of redefinition pairs 15:57:34 the clever part is that the list can redefine later in the list 15:57:47 so for instance, (10)(8) means that 10 is redefined to 8 15:58:07 and if later 8 is redefined to 12, I have (8)(12),(10)(8) 15:58:17 which the program automatically changes to (8)(12),(10)(12) 15:58:57 Except, as it's Thutu, I use a % sign in front of every punctuation mark to avoid ambiguities, so it looks like %(8%)%(12%)%,%(10%)%(12%) 15:59:10 which is much the same but harder to read in the Perl debugger I'm using to test this 16:03:00 -!- UpTheDownstair has joined. 16:03:15 Argh! When I test a line with a colon in, the length of the memory increases exponentially with lots of duplicates of the program 16:03:19 I'm sure that's not meant to happen 16:03:39 i should think not. 16:04:23 i noticed a discussion in the logs about a $1/n prize... 16:04:40 I was reading that in the logs too 16:05:30 It's related to a similar problem I was wondering about: how much money would you pay for a St. Petersburg return? 16:06:05 I believe that to find the current value given interest p, you need to sum 1/n * 1/(1+p/100)^n 16:06:17 (Flip a coin. If you flip tails, you win $2. Otherwise, flip again; with tails you get $4, with heads flip again, then you get $8 for tails on the third flip, $16 for tails on the fourth flip, etc.) 16:06:37 which is a tailor series. 16:06:48 eh, i'm still talking about the log problem. 16:07:20 crossed messages can be a problem in IRC 16:07:29 even though they're delivered so fast 16:07:34 because you have to spend time typing 16:09:35 sum x^n/n = integral of sum x^(n-1) = integral of 1/(1-x) = -log|1-x|, with some fixing of indices. 16:10:32 * ais523 has found and fixed the problem 16:10:48 ah. 16:10:50 Thutu's so conducive to writing multithreaded programs in, it's even possible to do it by accident 16:10:59 heh 16:11:13 I managed to create a forkbomb by mistake 16:11:51 that st petersburg return obviously has infinite expectation in dollars. 16:12:21 yep, but you wouldn't pay $1000000 to get the St. Petersburg payoff in return, would you? 16:13:11 partly because there's no chance that the person offering you the bet would own enough dollars to pay you off if you flipped 1000000 heads in a row 16:13:28 and if they can't afford it, the expectation would be less than $1000000 16:13:41 Assuming they could afford it: 16:14:00 you need to take into account that money itself has diminishing value. 16:14:43 I agree; the payoff, even though it's potentially very large, isn't really worth all that much 16:14:55 the inflation would be immense. 16:15:18 s 16:15:36 (Sorry, I keep sending debugger commands to my IRC client rather than my Perl debugger by mistake) 16:16:47 -!- grahza has joined. 16:17:05 -!- nazgjunk has quit (Nick collision from services.). 16:17:14 -!- grahza has quit (Read error: 104 (Connection reset by peer)). 16:21:03 Wow, Mark C Carroll is showing Thutu as this week's pathological language! 16:21:14 ais523: i just sent svn commands into irc (different channel) 16:21:44 -!- UpTheDownstair has quit (Connection timed out). 16:23:04 i guess i need to catch up on the thutu craze 16:27:42 graue: you need to fix the logo on the esolang wiki. 16:28:32 graue: the logo, and the 'public domain' image, have gone wrong during the upgrade. The other thing that changed during the upgrade was the syntax for enlarging images, but I've fixed that myself. 16:33:50 oerjan: Thanks for pointing me to that Mark C Carroll page! I don't think I'd have found it otherwise. 16:35:58 you're welcome 16:51:55 hey ais523: i couldn't find anything on mediawiki.org about the captchas you say are in mediawiki 1.9 16:52:41 I know they're implementable somehow; after all, I've come across those capchas before (on Wiktionary as it happens). 16:52:51 * ais523 looks for the MediaWiki CAPCHAs 16:54:10 It seems to be a well-supported extension originally in 1.6, but it was updated recently 16:54:37 Look on Meta rather than mediawiki.org: http://meta.wikimedia.org/wiki/ConfirmEdit_extension 16:56:13 yep, I've just tested it. It's definitely ConfirmEdit that's being used on the Wikimedia sites, and it's set to trigger when an anon adds an external link 16:56:38 cool, thanks 16:58:41 the description of the extension's _meant_ to be on mediawiki.org, but they haven't got round to moving it yet 17:03:07 ais523: i see no mention anywhere of that multithreading you mentioned... 17:03:23 No, it's not a language feature, it sort of comes out from the way the language works 17:03:42 ? 17:03:50 The most practical way to program is to use markers (%% is one I often use, because % has no regexp meaning) to mark what you're doing 17:04:06 but if the marker accidentally gets duplicated, the program starts acting from both points 17:04:17 ah 17:04:33 and often, the behaviour from the markers ends up more-or-less interleaved, like it does in a multithread program 17:05:12 Because Thue is non-deterministic, duplicating the data string in Thue would always lead to an effectively multithread program 17:05:27 In Thutu, which is deterministic, it just _usually/ 17:05:35 leads to an effectively multithread program 17:05:45 * ais523 wonders why they had to put newline next to backspace 17:06:06 pure evil 17:07:07 btw, does I/O happen in the main loop if you use < and replacement, or if you use > or step-off-end? 17:09:32 ais523: ^ 17:09:32 < doesn't cause I/O to happen if used in the main loop (like a replacement, it steps back to the top). > does. 17:10:28 right. It is a bit confusing between iterations of the main loop and iterations of the program. 17:10:41 The main loop is the program, pretty much 17:10:59 no. 17:11:13 that's exactly the point where they are different. 17:11:54 the I/O loop is _not_ the same as the main @ loop, but contains it. 17:12:10 The I/O is sort of an extra line outside the program 17:12:13 that you never see 17:12:54 oerjan: I see what you mean now when you say the main loop isn't the program 17:13:05 the reason i'm mentioning this is because i suspect Mark CC misunderstood it. 17:13:09 The input program is in its' own implied @ loop 17:13:26 but the I/O is outside that in some other loop (a /=9/! loop?) 17:14:07 right. 17:15:16 (or at least he made it even more ambiguous.) 17:18:16 This sort of thing makes me glad I defined Thutu in terms of a reference interpreter 17:40:40 -!- nazgjunk has joined. 18:29:19 -!- UpTheDownstair has joined. 18:29:32 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 18:35:10 -!- digital_me has joined. 18:35:38 Yay, Esolang now has CAPCHAs to help against the spam. Thanks, graue! 18:39:59 hah 18:40:06 -!- UpTheDownstair has changed nick to nazgjunk. 18:55:32 -!- ais523 has quit ("I have utterly failed to leave this space intentionally blank"). 19:01:18 -!- crathman_ has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.2/2007021917]"). 19:48:39 -!- ShadowHntr has joined. 20:43:12 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 20:43:45 -!- nazgjunk has joined. 21:38:14 -!- oerjan has quit ("leaving"). 22:01:24 -!- ShadowHntr has quit (Client Quit). 22:29:42 -!- Rugxulo has joined. 22:30:12 -!- Rugxulo has left (?). 22:31:04 -!- Rugxulo has joined. 22:31:50 -!- Rugxulo has quit (Client Quit). 22:32:01 -!- Rugxulo has joined. 22:32:59 -!- Rugxulo has left (?). 22:48:33 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 22:55:05 -!- Sgeo has joined. 23:01:33 durée 12h43m07s, cpu time 54min53s <-- pour défrag 134go 23:08:24 suuure. 23:14:09 -!- sebbu has quit ("@+"). 23:32:24 -!- jix__ has joined. 23:40:43 -!- jix has quit (Read error: 110 (Connection timed out)). 23:47:41 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 2007-03-10: 00:21:21 bah 00:27:06 -!- ShadowHntr has joined. 00:30:52 -!- RodgerTheGreat has joined. 00:30:59 hi everyone 00:32:59 i 00:54:48 http://www.cs.duke.edu/~rodger/baking/cs030327.html 00:58:54 hunh 00:59:06 Original, I guess 01:32:45 edible turing machines, eh? 01:35:03 if you could execute the program by eating the muffins, that would make it better 01:35:45 like, a muffin could be an unpunched cell on a tape 01:36:09 bitwise cyclic tag would be awesome with an infinite series of muffins extending to the right 01:37:18 no, not infinite, remember, just unbounded 01:37:41 haha- true, true 02:18:14 -!- GreaseMonkey has joined. 03:03:36 what's the difference? 03:03:58 infinite muffins is too expensive and nobody can afford it 03:04:08 but unbounded muffins just means you have to be ready to go out and buy another one if need be 03:04:24 in reality, there has to be a bound, but you can fake it 03:05:06 what lang is this? 03:06:47 i believe it's a turing machine 03:06:59 yeah 03:40:28 -!- GreaseMonkey has changed nick to ^_`. 03:53:08 -!- calamari has joined. 03:54:06 -!- GregorR_ has joined. 03:55:21 -!- oklopol has quit (calvino.freenode.net irc.freenode.net). 03:55:21 -!- sekhmet has quit (calvino.freenode.net irc.freenode.net). 03:55:21 -!- NK` has quit (calvino.freenode.net irc.freenode.net). 03:55:21 -!- SimonRC has quit (calvino.freenode.net irc.freenode.net). 03:55:21 -!- GregorR has quit (calvino.freenode.net irc.freenode.net). 03:55:41 -!- ^_` has quit (Killed by ballard.freenode.net (Nick collision)). 03:55:42 -!- oklopol has joined. 03:55:42 -!- sekhmet has joined. 03:55:42 -!- GregorR has joined. 03:55:42 -!- NK` has joined. 03:55:42 -!- SimonRC has joined. 03:55:45 -!- GregorR has quit (Nick collision from services.). 03:56:13 -!- thematrixeatsyou has joined. 03:56:14 -!- GregorR_ has changed nick to GregorR. 03:56:57 -!- thematrixeatsyou has changed nick to GreaseMonkey. 04:07:42 -!- SimonRC has quit (calvino.freenode.net irc.freenode.net). 04:07:42 -!- sekhmet has quit (calvino.freenode.net irc.freenode.net). 04:07:42 -!- NK` has quit (calvino.freenode.net irc.freenode.net). 04:07:42 -!- oklopol has quit (calvino.freenode.net irc.freenode.net). 04:09:12 -!- oklopol has joined. 04:09:12 -!- sekhmet has joined. 04:09:12 -!- NK` has joined. 04:09:12 -!- SimonRC has joined. 04:11:22 good night everyone 04:11:46 -!- RodgerTheGreat has quit. 04:35:38 the wiki db backups were messed up for a few days 04:35:48 i think they're good now 05:03:06 -!- Sgeo has quit ("Leaving"). 05:30:37 -!- Arrogant has joined. 05:41:23 afk food 05:50:32 -!- digital_me has quit (Read error: 110 (Connection timed out)). 05:52:39 -!- calamari has quit (Remote closed the connection). 05:58:36 back 06:10:56 -!- ShadowHntr has quit ("End of line."). 06:50:28 -!- anonfunc has joined. 07:28:45 getting off now, cya 07:30:01 -!- GreaseMonkey has quit ("There's always another bug to fix"). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:18:46 -!- anonfunc has quit. 08:19:39 -!- anonfunc has joined. 08:20:38 -!- anonfunc has quit (Client Quit). 08:21:51 -!- anonfunc has joined. 08:54:43 -!- Arrogant has quit ("Leaving"). 09:03:04 -!- anonfunc has quit. 09:15:46 -!- sebbu has joined. 10:27:32 -!- jix has joined. 10:37:13 -!- nazgjunk has joined. 11:32:11 -!- jix__ has joined. 11:40:36 -!- jix has quit (Read error: 110 (Connection timed out)). 11:45:17 -!- jix__ has changed nick to jix. 12:25:02 -!- tgwizard has joined. 12:27:18 -!- UpTheDownstair has joined. 12:28:05 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 12:30:29 -!- UpTheDownstair has changed nick to nazgjunk. 12:43:30 -!- nazgjunk has quit ("Leaving"). 15:33:51 -!- mike_the_person has joined. 15:36:12 !help 15:36:15 help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon 15:36:17 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl 15:45:25 -!- mike_the_person has quit ("Chatzilla 0.9.77 [Firefox 1.5.0.10/2007021601]"). 15:52:41 -!- oerjan has joined. 17:04:28 -!- sekhmet_ has joined. 17:05:04 -!- sekhmet has quit (Read error: 104 (Connection reset by peer)). 17:09:59 -!- sekhmet_ has changed nick to sekhmet. 18:43:33 -!- twice11 has joined. 18:44:05 -!- Sgeo has joined. 18:51:20 On the wiki, it says 0x29A is turing complete. Are there any references supporting that claim? 18:57:49 it seems to contain combinator calculus as a subset, by using the sk~ commands. 18:58:48 I did not succeed in finding out how to create a function on the stack that increments the accumulator by to when executed (getting passed enough arguments to start running). 19:00:18 And I am quite lost in finding out how to do anything useful if i can't somehow save the accumulator to the stack (in form of a function). 19:00:23 (+(+x)y)y 19:00:27 i think 19:01:02 You mean ++x~y~~y~? 19:01:49 eh... 19:01:58 That does not work, because (+x)y gets already executed when I try to build the function. 19:02:06 oh. 19:03:18 use the abstraction elimination of \z. +(+xy)y 19:05:14 Sorry, I can't follow you on that. 19:05:34 -!- tgwizard has quit (Remote closed the connection). 19:06:05 let me use Unlambda notation. 19:06:34 \z. ``+``+xyy = 19:06:58 ``s``s`k+``s``s`k+`kx`ky`ky 19:08:11 I am not used to unlambda, but you apply the s combinator to (k+). I already tried that 19:08:49 It does not work, because (((s(k+))x)y) gets converted to (((k+)x)y) 19:09:16 This does not get anything, because the k combinator is too deep inside the parens to match any of the reduction rules. 19:09:22 you mean (+x)y 19:10:00 oh? 19:10:14 My implementation of 0x29A does *not* to the step from (((k+)x)y) to ((+x)y) 19:10:36 I think this is according to the documentation. 19:11:05 well then you mean (((k+)y)(xy) 19:11:07 Oops. It should do the step from (((k+)x)y) to (+x), of course... 19:11:25 Sorry, yes. 19:12:04 To put it right. I meant (((s(k+)x)y) gets (((k+)y)(xy)), and this gets stuck. 19:13:09 You get stuck as soon as the "x" in (((sx)y)z) is anything but a k-like combinator (k,+-.,) or s, maybe applied to something. 19:13:14 i see. so there is an error in the embedding of combinator calculus into 0x29a. 19:14:09 I admit to have overlooked in my search for a possibility of doing something useful what happens if x in (((sx)y)z) is is of the form (sx). 19:16:50 right. it evaluates only the top level of the function, if you take the description literally. 19:17:58 seems like a bug in the language description to me. 19:18:24 Might be. 19:18:45 I think I suceeded in writing a +2 function. 19:19:14 (((s(sa))b)c) with a=(+), b=(+x) and c=y 19:19:33 [where x, y are don't care functions] 19:20:57 Yes, I tried it. It works. 19:20:58 =sac(bc) = a(bc)(c(bc)) 19:22:02 = ++r, bc = ++r, ++r, x 19:22:21 looks good 19:23:07 See http://pastebin.ca/389482. 19:24:56 The haskell 0x29A interpreter is at http://pastebin.ca/389491 19:31:26 there seems to be no way to duplicate values on the stack. 19:31:55 so a function can only be evaluated once. 19:32:23 Yes. This is also a problem. 19:33:15 But I did not yet prove whether it is impossible to create a function that runs the function and returns the function on the stack. 19:33:22 This would solve the problem. 19:34:02 i was pondering whether you could make a pair of functions simulate a brainfuck tape. 19:35:07 I got lost at simulating the tape when I found out that there is no way to access anything but top-of-stack and next-to-top-of-stack. 19:36:00 -!- twice11 has quit ("taking a break."). 19:41:33 -!- RodgerTheGreat has joined. 19:43:50 hi, everyone 19:44:01 hi 20:07:31 -!- bsmntbombdood has changed nick to xor. 20:21:09 -!- ShadowHntr has joined. 21:18:28 -!- twice11 has joined. 21:18:48 hi, i think i solved the tape implementation 21:19:33 i put a description on the wiki. 21:20:23 I think I also have an idea. You use two functions as stack. 21:20:38 One for the values before current, one for values after currents. 21:20:51 that was my idea too :) 21:21:12 I will try to implement it on my own, just as an exercise. 21:21:37 But this has the problem that brainfucks + and - operations get O(N). 21:21:53 I don't see a way around it. 21:22:00 eh, i save the _current_ cell in the register. 21:22:28 maybe you mean > and < ? 21:22:39 Oh, sorry. Yes, of course. 21:23:14 actually not O(N), but with a possible constant factor <= 256. 21:23:33 so still technically O(1). 21:23:54 OK, I used to use 16 or 32 bit cells on brainfuck with numeric I/O 21:24:16 So I am used to cells containing 5-figure numbers. 21:24:28 0x29A has byte registers. 21:24:44 *register 21:25:21 Yes :-). So it seems like emulating byte-brainfuck with ascii-code I/O is the simplest thing. 21:26:24 BTW, is there literature on doing binary arithmetic in bf where cells are used as bits, to get O(logN) addition. 21:26:39 That was a strange idea I had some year ago. 21:27:03 This kind of bf use seems to translate into 0x29A without too high performance penalties. 21:27:18 i think i've seen it mentioned. Try looking at boolfuck. 21:28:03 or similar variants. 21:29:50 Yes, the translation they offer is mainly the same idea. 21:31:05 But the problem with boolfuck compared to my brainfuck-with-binary approach 21:31:19 is that I can't detect carries in boolfuck. 21:31:46 And of course, performance is complete gone after translation from boolfuck to brainfuck. 21:35:24 heh, i wonder... 21:36:01 maybe the broken S combinators work if you use continuation passing style. 21:36:20 because that corresponds to always staying at the top expression. 21:36:40 The whole language seems to work only with CPS. 21:37:05 And I currently think about the k-style combinators (+-,.) just as 21:37:20 operators that get a continuation and a "start-now" flag as parameters. 21:37:52 I am still puzzled about how to write a +3 function, but don't tell me. I will find out on my own. 21:38:15 I seem to have run into the "broken S combinators" on my first attempt. 21:38:25 don't look at the wiki then because i have exactly that as the example 21:38:50 I just plugged the +2 function into the +2 function. Probably I should have changed the other + to +2. 21:38:52 essentially. 21:41:09 -!- twice11 has quit ("tearing down dial-up line. back later. reading logs."). 22:21:08 -!- twice11 has joined. 22:21:36 oerjan: I got the same results as you. 22:22:15 I use "ss+~~%~" to add one to the result of the function currently on the stack 22:22:33 and "k%~" to separate to functions. 22:22:34 by coincidence? although i did start with that +2 function you mentioned earlier. 22:23:11 well then it simply has to work :) 22:23:22 And I got the idea for the two-functions-make-a-tape by your comment from 11:34:02 22:23:31 "i was pondering whether you could make a pair of functions simulate a brainfuck tape." 22:24:00 I fell into the trap that i did not remember that ] does not 22:24:15 decrement the register, so my first attempt for the reg-to-stack loop 22:24:20 got an endless loop. 22:24:42 The second attempt showed that my 0x29A parser (a real hack) 22:25:01 stops parsing after the first looped. After fixing, it worked. 22:25:36 run "+%~k~+%~k~+%~k~ k%~[ss+~~%~-%~k~] k~" 22:26:00 puts the number 3 into the register (first part), saves it into a function (second part) 22:26:07 and executes it (third part). 22:26:40 As output is destructive, I still have to develop a clone-value 22:26:59 right 22:27:08 function (so of course a run function with itself as continuation function) 22:27:34 But currently I think it should be possible using the s combinator somehow. 22:27:35 btw i suggest applying to i to execute the function. 22:28:04 because then i works also as the end of tape 22:28:46 The function applied to execute gets omitted by the k-like combinators. 22:28:58 I don't think it matters at all, which one I use. 22:29:12 it matters if you want the tape to expand automatically. 22:30:17 unless you manage to make the unlambda v combinator. 22:32:32 for the output value cloning it may be simpler to make the loop build two independent functions. 22:33:13 You are right. Applying k to the end of tape puts k to the stack. Putting i there is better. 22:35:03 hm, wait... 22:35:17 it actually doesn't matter that much. 22:35:38 applying to k just make you flip between k and (kk). 22:35:40 Building two functions in the loop works. 22:35:45 and is shorter. 22:36:00 *makes 22:36:43 To build two functions, the loop looks like k%~k%~ [ss+~~%~%ss+~~%~ -%~k~] 22:42:39 There is a catch: one should start the function (at least the later-executed one) with i 22:42:49 to get completely rid of it with %~ 22:43:53 right 22:50:01 A working translation for bf "." is: 22:50:06 sk~s~ sk~s~ [ss+~~%~%ss+~~%~ -%~k~] k~.%~ %~ 22:54:38 i'm not sure that last %~ is quite right. Remember that . loses its second argument. 22:54:55 eh wait 22:56:37 Oops, there is a fault. The working (tested) version has 22:57:13 (sk~s~)~.%~k~ ~ %~ past the loop 23:00:05 somehow i suspect it can be done shorter somehow with just k's than with sk~s~ 23:02:42 note that a final drop can also be done with %k%~%~ 23:06:23 Yes. Independent of the start value. You are right. 23:10:07 -!- graue has quit ("Leaving"). 23:12:43 -!- graue has joined. 23:15:31 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 23:16:45 -!- SevenInchBread has joined. 23:17:45 Except for ".", where I seem to have something messed up by simplification, my bf->0x29A seems to work now. 23:17:58 s/by/on/ 23:18:25 cool 23:18:54 I will put it to the pastebin when it's ready. 23:19:29 -!- graue has quit ("Leaving"). 23:19:56 * SevenInchBread is looking at ways to encrypt information so that it can't be censored or subject to copyright law. 23:19:59 some links on the wiki would be nice too 23:20:11 mainly steganography, anonymous proxies and stuff. 23:20:27 How permanent is the pastebin? Can I link to there? 23:21:03 LOL CRYPTO-ANARCHISM 23:25:11 http://www.cs.duke.edu/~rodger/baking/cs.html 23:25:29 Actually, I just got that from here, didn't I? 23:25:32 D'oh. 23:25:32 SimonRC: old 23:26:01 haha 23:26:06 CompSci 4: Alice Programming Language" 23:26:14 "CompSci 6: Introduction to Java" 23:26:45 * xor screams about misuse of CS 23:28:15 indeed 23:28:22 twice11: you could submit it to one of the maintainers of the esolangs archive. 23:28:27 they shouldn't be teaching languages 23:28:33 They should be teaching paradigms 23:29:09 I put the brainfuck -> 0x29A translation to the wiki. It's short. 23:29:27 that too :) 23:29:38 The 0x29A interpreter needs some polishing, it's worst WFM quality. 23:29:54 I will put it to some webspace I own and link it from the wiki. 23:46:06 The translation is on the wiki now. 2007-03-11: 00:04:23 Well, good night. 00:04:43 -!- oerjan has quit ("All in a good day's play"). 00:18:00 -!- twice11 has quit (Read error: 113 (No route to host)). 00:26:23 -!- ShadowHntr has quit ("End of line."). 00:48:06 -!- GreaseMonkey has joined. 00:58:17 -!- nazgjunk has joined. 01:29:58 -!- nazgjunk has quit (Connection reset by peer). 01:30:17 -!- nazgjunk has joined. 01:36:54 -!- sebbu has quit ("Leaving"). 01:46:29 -!- nazgjunk has quit ("Leaving"). 03:04:00 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 03:13:17 -!- oklopol has joined. 04:49:14 -!- xor has changed nick to bsmntbombdood. 04:52:38 hello bsmnt 04:52:44 hi 04:53:04 hey, are you gonna set your bot up to return a CTCP VERSION request? 04:53:34 no 04:53:36 like: :Host PRIVMSG chanOrNick \1VERSION\1 04:53:38 k 04:53:42 my bot does that 04:53:44 why? 04:55:25 it's always a nice feature 04:56:02 -!- GreaseBot has joined. 05:07:56 afk, getting a life 05:08:58 If anyone abuses me, please kick me. 05:33:34 -!- RodgerTheGreat has quit. 05:35:49 -!- RodgerTheGreat has joined. 05:36:22 'night, all 05:36:43 -!- RodgerTheGreat has quit (Client Quit). 05:55:36 -!- SevenInchBread has quit (No route to host). 06:04:44 -!- anonfunc has joined. 06:33:38 -!- Arrogant has joined. 07:05:16 -!- GreaseBot has quit ("recompiling"). 07:12:36 -!- Sgeo has quit ("Leaving"). 07:15:46 -!- GreaseBot has joined. 07:16:45 -!- ShadowHntr has joined. 07:23:15 -!- helios24 has joined. 07:45:51 -!- oerjan has joined. 07:47:37 -!- nazgjunk has joined. 07:48:22 -!- maverickbna has joined. 07:48:43 -!- maverickbna has quit (Read error: 131 (Connection reset by peer)). 07:51:48 -!- GreaseMonkey has changed nick to thematrixeatsyou. 07:51:55 -!- thematrixeatsyou has changed nick to GreaseMonkey. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:05:28 -!- ShadowHntr has quit (Connection timed out). 08:26:22 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 08:27:03 -!- nazgjunk has joined. 08:31:06 -!- UpTheDownstair has joined. 08:31:12 -!- nazgjunk has quit (Read error: 131 (Connection reset by peer)). 08:31:35 -!- UpTheDownstair has quit (Read error: 104 (Connection reset by peer)). 08:32:03 -!- nazgjunk has joined. 08:32:20 ok, i'm going to bed, gnight 08:33:25 -!- GreaseMonkey has quit ("It was fun writing - Our own haikus in #haiku - But now it's bedtime."). 08:33:47 -!- GreaseBot has quit ("Gnight."). 08:52:11 -!- Arrogant has quit ("Leaving"). 09:12:06 -!- sebbu has joined. 09:30:19 i had the idea to make brainfuck addition logn by binary arithmetic too 09:30:28 O(logn) 09:31:12 it's nice since you can then easily translate any assembly code into brainfuck 09:31:14 ... 09:43:05 hmm in python how do i check if something is an integer? 0.__class__ is wrong :\ 09:44:06 a.__class__==''.__class__ is how i check for string :P 09:44:22 numbers aren't objects in python then i guess 11:44:35 oklopol, isinstance(0, int). 11:45:03 0.__class__ is tokenized as 0. and __class__, so you have to write as (0).__class__. 11:46:55 well, indeed, quite obvious 11:47:17 maybe i subconsciously wanted to believe in such inconsistency because i don't like python 11:47:41 well, dunno if that's be inconsistency, it'd suck though 12:13:04 -!- jix__ has joined. 12:14:32 -!- jix__ has changed nick to jix. 12:22:10 -!- tgwizard has joined. 12:24:37 -!- jix__ has joined. 12:24:45 -!- jix has quit (Nick collision from services.). 12:24:57 -!- jix__ has changed nick to jix. 16:10:44 -!- SevenInchBread has joined. 16:11:26 -!- Sgeo has joined. 16:36:20 -!- crathman has joined. 16:43:07 -!- crathman has quit (Read error: 104 (Connection reset by peer)). 16:43:22 -!- crathman_ has joined. 16:43:26 -!- crathman_ has changed nick to crathman. 16:44:15 -!- crathman has quit (Remote closed the connection). 16:57:38 -!- oerjan has quit ("leaving"). 16:57:41 -!- graue has joined. 17:08:54 -!- UpTheDownstair has joined. 17:09:47 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 17:52:09 -!- Arrogant has joined. 17:54:49 -!- nazgjunk has joined. 17:55:16 A PROGRAMMING LANGUAGE CONSISTING ENTIRELY OF HEX PHRASES. 17:56:01 DEAD BEEF C0FFEE BABE CAFE FADE 18:11:33 -!- UpTheDownstair has quit (Connection timed out). 19:01:36 -!- RodgerTheGreat has joined. 19:01:44 howdy, folks 19:44:56 -!- twice11 has joined. 19:46:19 -!- twice11 has quit (Client Quit). 19:48:24 SevenInchBread, lovely idea. 19:55:06 -!- twice11 has joined. 19:55:58 Announce: I wrote a 0x29A implementation, so this language is no longer unimplemented. 19:56:15 It is currently online at http://userpage.fu-berlin.de/~mkarcher/0x29A 19:56:54 I would like to see it included in the esoteric file archives, if appropriate. 19:57:16 rofl 19:57:29 Currently, it is BSD licensed, but I am open to other licenses if needed. 19:58:31 Also the brainfuck-to-0x29A converter discussed yesterday is online. 19:59:00 -!- helios24 has quit ("Leaving"). 19:59:07 It has been tested with some brainfuck examples from Daniel Cristofani. 19:59:17 It works, except for the terrible performance. 20:06:17 I would expect an optimizing BF->0x29A translator to be exceedingly nontrivial 20:07:44 wiki down? 20:10:11 http://esolangs.org/wiki works here. 20:10:21 nevermind 20:12:58 dc for the win 20:17:26 -!- twice11 has quit ("Leaving"). 21:10:32 -!- nazgjunk has quit ("Leaving"). 21:32:56 -!- Arrogant has quit (Read error: 113 (No route to host)). 21:42:00 -!- AfterDeath has left (?). 21:56:19 -!- nazgjunk has joined. 21:59:41 -!- graue has quit ("Leaving"). 22:08:19 -!- bsmntbombdood has changed nick to xor. 22:19:54 -!- nazgjunk has quit ("Leaving"). 22:33:56 -!- xor has changed nick to bsmntbombdood. 22:38:21 ok 22:39:38 -!- sebbu has quit ("@+"). 22:39:38 ~exec globals()["popen2"] = __import__("popen2") 22:41:13 ~exec self.ev_dc = lambda x: popen2.popen2("dc -e '%s'" % x)[0].read() 22:41:25 ~exec sys.stdout(self.ev_dc("1p")) 22:41:40 ~exec sys.stdout("foo") 22:41:40 foo 22:42:24 ~exec self.ev_dc = lambda x: popen2.popen2("/usr/bin/dc -e '%s'" % x)[0].read() 22:42:34 ~exec sys.stdout(self.ev_dc("1p")) 22:42:40 grar 22:43:14 ~exec sys.stdout( popen2.popen2("/usr/bin/dc -e '%s'" % "1p")[0].read() ) 22:43:19 ~ps 22:43:19 None 22:44:12 ~exec sys.stdout( popen2.popen2("/usr/bin/dc -e '%s'" % "1p") ) 22:44:12 (', mode 'r' at 0xb7cacb18>, ', mode 'w' at 0xb7cac140>) 22:44:21 ~exec sys.stdout( popen2.popen2("/usr/bin/dc -e '%s'" % "1p")[0] ) 22:44:21 ', mode 'r' at 0xb7cac140> 22:44:26 ~exec sys.stdout( popen2.popen2("/usr/bin/dc -e '%s'" % "1p")[0].read ) 22:44:27 22:44:29 -!- nazgjunk has joined. 22:44:42 ~exec self.x = popen2.popen2("/usr/bin/dc -e '%s'" % "1p")[0].read 22:44:52 ~exec sys.stdout(x) 22:44:53 NameError: name 'x' is not defined 22:44:56 ~exec sys.stdout(self.x) 22:44:56 22:45:10 ~exec self.foo = self.x() 22:45:21 ~exec sys.stdout(self.foo) 22:45:28 ~exec sys.stdout(type(self.foo)) 22:45:28 22:45:38 ~exec sys.stdout(len(self.foo)) 22:45:38 0 22:45:41 arghh 22:45:43 hehe 22:46:25 ~exec sys.stdout(self.x()) 22:46:39 wtf 22:46:58 o.O 22:47:20 ~exec self.x = popen2.popen2("/usr/bin/dc -e '1p')[0].read() 22:47:20 SyntaxError: EOL while scanning single-quoted string 22:47:25 ~exec self.x = popen2.popen2("/usr/bin/dc -e '1p'")[0].read() 22:47:35 ~exec sys.stdout(self.x) 22:47:40 .. 22:47:45 ~exec sys.stdout(len(self.x)) 22:47:45 0 22:47:48 gah! 22:48:14 ~exec os.system("/usr/bin/dc -e '[hello, world]p'") 22:48:37 weird 22:49:02 ~exec sys.stdout(os.system("/usr/bin/dc -e '[hello, world]p'")) 22:49:02 32512 22:50:03 ~exec self.x = popen2.popen2("/usr/bin/THIS_COMMAND_IS_NOT_THERE -e '1p'")[0].read() 22:50:12 great. 22:50:24 ~exec sys.stdout(type(self.x)) 22:50:24 22:50:30 ~exec sys.stdout(len(self.x)) 22:50:30 0 22:51:41 ~exec self.x = popen2.popen2(["/usr/bin/dc", "-e", "1p"])[0].read() 22:51:50 ~exec self.x = popen2.popen2(["/usr/bin/THIS_COMMAND", "-e", "1p"])[0].read() 22:52:12 how is that not an exception 22:53:27 ~exec self.x = os.popen("/usr/bin/dc -e '1p'", "r") 22:53:38 ~exec sys.stdout(self.x) 22:53:39 22:53:44 ~exec sys.stdout(self.x.read()) 22:53:49 oh come on 22:53:54 ~exec sys.stdout(self.x.read()) 22:56:00 that works fine in my python repl 22:56:33 hmm 22:56:39 not in a chrooted repl though 22:59:56 ~exec sys.stderr(os.environ) 23:03:06 -!- oerjan has joined. 23:10:59 -!- ShadowHntr has joined. 23:17:29 -!- twice11 has joined. 23:34:27 -!- twice11 has quit ("Leaving"). 23:46:02 -!- calamari has joined. 23:48:52 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 23:52:34 -!- ShadowHntr has quit (Read error: 104 (Connection reset by peer)). 2007-03-12: 00:07:11 -!- nazgjunk has quit ("Leaving"). 00:16:59 -!- bsmntbombdood has changed nick to Zorpon. 00:32:55 hmm 00:32:59 I should learn smalltalk 00:38:11 -!- Zorpon has changed nick to Zorpon_. 00:38:53 -!- Zorpon_ has changed nick to Zorpon. 00:43:20 Zorpon: yes 00:43:39 * Zorpon makes it so 00:43:43 It's a *real* OO language, unlike Java 00:48:04 eww java 01:02:32 what's with the : on the end of messages 01:03:36 it distinguishes them from variables 01:03:42 if i remember correctly. 01:12:18 yeah smalltalk is nifty. 01:12:27 it's just the call syntax. 01:12:54 * SevenInchBread is basing his Sophia language partially on Smalltalk. 01:15:26 I think it has something to do with arguments 01:16:04 well, each : part is followed by an argument, if that's what you mean. 01:18:38 i love smalltalk syntx 01:19:44 I like the fuck-around-with-ability of it 01:20:09 you can re-define classes and all instances will immediately start using the new version 01:20:25 reminds me of ruby 01:20:31 1 to: 20 do: [:x| x printNl ] ! 01:21:17 Haskell: mapM_ print [1..20] 01:21:25 That's about as good as you can get 01:21:42 Haskell: also the world's best imperative language. 01:21:44 :-P 01:22:25 I don't see any others with such elegant rules for handling first-class code blocks 01:22:54 especially the issue of creating new variables versus using existing ones. 01:27:47 This tutorial isn't too good 01:28:09 I liked the Dolphin Smalltalk tutorial. 01:34:05 Ruby was partially based off of Smalltalk 01:36:41 !ps d 01:36:43 1 ais523: daemon ul bf 01:36:45 2 ais523: daemon deadfish funge93 01:36:47 3 GregorR: ps 01:47:21 interesting at the use of lambda for if 01:55:46 -!- tgwizard has quit (Remote closed the connection). 02:04:50 -!- ShadowHntr has joined. 02:32:11 -!- calamari has quit ("Leaving"). 02:56:04 -!- Sukoshi has joined. 02:56:08 Java users home? 02:56:18 (I'm sorry, I'm in a big hurry.) 03:03:27 eew java 03:09:52 -!- Sukoshi has quit ("ERC Version 5.1 (CVS) $Revision: 1.796 $ (IRC client for Emacs)"). 03:13:25 -!- calamari has joined. 03:26:35 haha! Nonlogic has absorbed yet another denizen of #Esoteric! 03:26:43 * RodgerTheGreat cackles maniacally. 03:37:12 Someone could make a movie about an evil Internet entity which absorbs people. 03:37:22 They could call it The Blog. 03:37:39 heheh 03:43:09 -!- oerjan has quit ("Good night"). 03:50:19 -!- SevenInchBread has quit (Read error: 113 (No route to host)). 04:11:14 good night, guys 04:11:31 -!- RodgerTheGreat has quit. 04:17:44 -!- ShadowHntr has quit ("End of line."). 04:58:46 -!- Zorpon has changed nick to bsmntbombdood. 06:00:42 -!- ShadowHntr has joined. 06:08:30 -!- Arrogant has joined. 06:11:58 -!- calamari has quit ("Leaving"). 06:14:37 -!- GreaseMonkey has joined. 06:29:12 -!- ShadowHntr has quit ("End of line."). 06:36:56 afk food 06:56:15 back 07:10:58 -!- anonfunc_ has joined. 07:11:22 -!- anonfunc has quit (Read error: 104 (Connection reset by peer)). 07:13:37 -!- anonfunc_ has quit (Read error: 104 (Connection reset by peer)). 07:15:04 -!- anonfunc has joined. 07:18:35 -!- anonfunc has quit (Read error: 104 (Connection reset by peer)). 07:19:34 -!- anonfunc_ has joined. 07:20:08 -!- anonfunc_ has quit (Remote closed the connection). 07:59:59 -!- clog has quit (ended). 08:04:58 -!- clog has joined. 08:04:58 -!- Arrogant has quit ("Leaving"). 08:10:25 -!- Sgeo has quit ("Leaving"). 09:19:31 -!- Sukoshi has joined. 09:27:25 -!- GreaseMonkey has quit (Remote closed the connection). 09:28:44 -!- Sukoshi has quit ("ERC Version 5.1 (CVS) $Revision: 1.796 $ (IRC client for Emacs)"). 09:31:00 -!- jix__ has joined. 09:31:58 -!- jix__ has changed nick to jix. 09:44:58 -!- oerjan has joined. 12:06:35 -!- oerjan has quit ("leaving"). 12:23:03 -!- ais523 has joined. 12:32:52 -!- jix__ has joined. 12:33:16 * ais523 has written one of the slowest 99 bottles of beer programs in history 12:33:45 because Forte is an order of n slower than every other language 12:33:56 so bottles-of-beer programs are O(n^2) 12:34:21 and on top of that, it's running on an inefficient implementation 12:43:01 -!- jix has quit (Read error: 110 (Connection timed out)). 12:49:10 I was wondering whether C was, in fact, Turing-complete 12:49:29 traditionally it's been said to be bounded-storage because sizeof(void*) has to be finite 12:49:54 but I think it's a push-down automaton, due to the possibility of using register variables (which don't have to have addresses) and recursion 13:01:34 ~exec eval("for n in [1,2,3,4]:\n sys.stdout(n)\n") 13:01:35 SyntaxError: invalid syntax 13:02:36 ~exec eval("for n in count(4):\n sys.stdout(n)\n") 13:02:36 SyntaxError: invalid syntax 13:02:47 ~exec eval("sys.stdout(4)") 13:02:48 4 13:02:54 ~exec eval("sys.stdout(4)\n") 13:02:55 4 13:03:07 ~exec eval("sys.stdout(n)\n") 13:03:08 NameError: name 'n' is not defined 13:03:23 ~exec eval("for n in (count(4)):\n sys.stdout(n)\n") 13:03:24 SyntaxError: invalid syntax 13:04:49 ~exec eval("for n in [1, 2, 3]:\n sys.stdout(n)\n") 13:04:49 SyntaxError: invalid syntax 13:06:06 ~exec eval("for n in [1, 2, 3]:\n sys.stdout(n)\nsys.stdout('Finished.')\n") 13:06:06 SyntaxError: invalid syntax 13:06:43 ~exec eval("sys.stdout(1)\nsys.stdout(2)") 13:06:43 SyntaxError: invalid syntax 13:06:59 so eval seems not to accept multi-line strings 13:07:12 ~exec eval("sys.stdout(1)\rsys.stdout(2)") 13:07:13 SyntaxError: invalid syntax 13:07:26 ~exec sys.stdout(1)\nsys.stdout(2) 13:07:26 SyntaxError: invalid token 13:07:32 ~exec sys.stdout(1)\n sys.stdout(2) 13:07:38 SyntaxError: invalid syntax 13:09:35 ~exec eval('''sys.stdout(1)\nsys.stdout(2)''') 13:09:35 SyntaxError: invalid syntax 13:09:46 ~exec sys.stdout("1\n2") 13:09:46 1 13:09:46 2 13:09:53 ~exec sys.stdout("1\r2") 13:09:53 1 13:10:02 ~exec sys.stdout("1\t2") 13:10:02 12 13:11:10 ~exec sys.stdout("for n in [1, 2, 3]: sys.stdout(n)") 13:11:11 for n in [1, 2, 3]: sys.stdout(n) 13:11:18 ~exec eval("for n in [1, 2, 3]: sys.stdout(n)") 13:11:18 SyntaxError: invalid syntax 13:11:24 ~exec exec("for n in [1, 2, 3]: sys.stdout(n)") 13:11:27 1 13:11:29 2 13:11:31 3 13:11:39 ~exec sys.stdout("for n in [1, 2, 3]:\n sys.stdout(n)") 13:11:40 for n in [1, 2, 3]: 13:11:40 sys.stdout(n) 13:11:52 ~exec exec("for n in [1, 2, 3]:\n sys.stdout(n)") 13:11:53 1 13:11:53 2 13:11:53 3 13:13:14 ~exec exec("self.t='Hello, world!'\nsys.stdout(t)") 13:13:15 NameError: name 't' is not defined 13:13:20 ~exec exec("self.t='Hello, world!'\nsys.stdout(self.t)") 13:13:21 Hello, world! 13:13:30 ~exec exec("self.t='Hello, world!'\nsys.stdout(self.t.length)") 13:13:30 AttributeError: 'str' object has no attribute 'length' 13:13:39 ~exec exec("self.t='Hello, world!'\nsys.stdout(self.t.size)") 13:13:39 AttributeError: 'str' object has no attribute 'size' 13:14:03 ~exec exec("self.t='Hello, world!'\nsys.stdout(self.t[0])") 13:14:03 H 13:14:17 ~exec exec("self.t='Hello, world!'\nsys.stdout(self.t[13])") 13:14:17 IndexError: string index out of range 13:14:27 ais523: actually, I think you'll find that the program could be re-run form the beginning with a bigger word size every time it ran out of memory, if you wanted. 13:14:52 I'm just trying to use bsmnt_bot to learn Python 13:15:22 "< ais523> I was wondering whether C was, in fact, Turing-complete" 13:15:22 SimonRC: wait a moment, what context was your last comment in? 13:15:38 you thought not 13:15:56 I don't think an implementation's allowed to dynamically change sizeof(void*) 13:16:10 although maybe that isn't against the rules if the program never asks what it is 13:16:34 I mean: if you run out of address space, re-compile for a bigger architecture. 13:16:42 then re-run 13:16:59 assuming the usual strict-function-style TC. 13:17:02 but you can do that in MISC, and it isn't Turing-complete 13:17:35 yeah, but you now have no reason for C not to be Turing-complete 13:18:38 ~exec exec("self.n=4\nwhile self.n>0:\n sys.stdout(n)\n n=n-1\nsys.stdout('Finished!')") 13:18:39 NameError: name 'n' is not defined 13:18:48 ~exec exec("self.n=4\nwhile self.n>0:\n sys.stdout(self.n)\n self.n=self.n-1\nsys.stdout('Finished!')") 13:18:48 4 13:18:48 3 13:18:48 2 13:18:50 1 13:18:52 Finished! 13:19:02 I don't see why that makes C TC 13:19:24 because recompiling for a bigger architecture and rerunning isn't something you're necessarily allowed to do from within the language 13:19:38 unless you're suggesting something like #pragma make_me_Turing_Complete 13:20:29 ~exec exec("self.tape=0\nself.tape[10]=self.tape[10]+5\nsys.stdout(self.tape[10])") 13:20:29 TypeError: unsubscriptable object 13:20:40 ~exec exec("self.tape=[]\nself.tape[10]=self.tape[10]+5\nsys.stdout(self.tape[10])") 13:20:40 IndexError: list index out of range 13:20:56 ~exec exec("self.tape=[0]*30000\nself.tape[10]=self.tape[10]+5\nsys.stdout(self.tape[10])") 13:20:57 5 13:23:24 ais523: Ok, the language is Turing-complete, but no implementation can be. 13:23:42 ~exec exec("self.t=[0]*30000\nself.p='+++++.!'\nself.i=0\nself.l=0\nwhile self.p[self.i]!='!':\n if self.p[self.i]=='+': self.t[self.l]++\n if self.p[self.i]=='.': sys.stdout(self.t[self.l])") 13:23:42 SyntaxError: invalid syntax 13:23:55 You could port C to the Turing machine will a little work, then it really *could* be TC. 13:24:08 no, because even the Turing machine couldn't access an infinite store of memory 13:24:22 because the sizeof operator exists, there has to be a hard limit on every data type 13:25:11 ~exec exec("self.t=[0]*30000\nself.p='+++++.!'\nself.i=0\nself.l=0\nwhile self.p[self.i]!='!':\n if self.p[self.i]=='+':\n self.t[self.l]++\n if self.p[self.i]=='.':\n sys.stdout(self.t[self.l])\n self.i=self.i+1") 13:25:12 SyntaxError: invalid syntax 13:25:36 ~exec sys.stdout(1==2) 13:25:36 False 13:25:39 ~exec sys.stdout(1!=2) 13:25:39 True 13:25:45 ais523: hmm 13:25:52 I wonder... 13:26:11 At least, what I've been arguing is what I've come to believe the conventional wisdom is 13:26:15 but I wonder too 13:26:32 so, a subset of C is Turing-complete, but the whole of C isn't. 13:26:33 weird 13:26:45 I think it's at least a PDA, because register variables need not have addresses and you can get an infinite number of them using recursion 13:27:25 ~exec exec("self.t=[0]*30000\nself.p='+++++.!'\nself.i=0\nself.l=0\nwhile self.p[self.i]!='!':\n if self.p[self.i]=='+':\n self.t[self.l]=self.t[self.l]+1\n if self.p[self.i]=='.':\n sys.stdout(self.t[self.l])\n self.i=self.i+1") 13:27:25 5 13:28:27 ~exec exec("self.t=[0]*30000\nself.p='+++++.!'\nself.i=0\nself.l=0\nwhile self.p[self.i]!='!':\n if self.p[self.i]=='+':\n self.t[self.l]=self.t[self.l]+1\n if self.p[self.i]=='-':\n self.t[self.l]=self.t[self.l]-1\n if self.p[self.i]=='.':\n sys.stdout(self.t[self.l])\n self.i=self.i+1") 13:28:28 5 13:30:00 ~exec exec("self.t=[0]*30000\nself.p='++>--<+++.>.!'\nself.i=0\nself.l=0\nwhile self.p[self.i]!='!':\n if self.p[self.i]=='+':\n self.t[self.l]=self.t[self.l]+1\n if self.p[self.i]=='-':\n self.t[self.l]=self.t[self.l]-1\n if self.p[self.i]=='<':\n self.l=self.l-1\n if self.p[self.i]=='>':\n self.l=self.l+1\n if self.p[self.i]=='.':\n sys.stdout(self.t[self.l])\n self.i=self.i+1") 13:30:00 5 13:30:00 -2 13:33:53 ~exec exec("self.bf=lambda(p): t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='+':\n t[l]=t[l]+1\n if p[i]=='-':\n t[l]=t[l]-1\n if p[i]=='<':\n l=l-1\n if p[i]=='>':\n l=l+1\n if p[i]=='.':\n sys.stdout(t[l])\n i=i+1") 13:33:54 SyntaxError: invalid syntax 13:34:27 ~exec exec("self.bf=lambda(p):\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='+':\n t[l]=t[l]+1\n if p[i]=='-':\n t[l]=t[l]-1\n if p[i]=='<':\n l=l-1\n if p[i]=='>':\n l=l+1\n if p[i]=='.':\n sys.stdout(t[l])\n i=i+1") 13:34:28 SyntaxError: invalid syntax 13:34:47 ~exec exec("self.test=lambda(x):\n sys.stdout(x)") 13:34:47 SyntaxError: invalid syntax 13:34:57 ~exec exec("self.test=def test(x):\n sys.stdout(x)") 13:34:58 SyntaxError: invalid syntax 13:35:06 ~exec exec("def test(x):\n sys.stdout(x)") 13:35:11 ~exec self.test("Hello, world") 13:35:14 AttributeError: IRCbot instance has no attribute 'test' 13:35:21 ~exec test("Hello, world") 13:35:26 NameError: name 'test' is not defined 13:35:46 ~exec exec("def test(x):\n sys.stdout(x)\nself.test=test") 13:35:52 ~exec self.test("Hello, world") 13:35:53 Hello, world 13:36:21 ~exec exec("def bf(p):\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='+':\n t[l]=t[l]+1\n if p[i]=='-':\n t[l]=t[l]-1\n if p[i]=='<':\n l=l-1\n if p[i]=='>':\n l=l+1\n if p[i]=='.':\n sys.stdout(t[l])\n i=i+1\nself.bf=bf") 13:36:37 ~exec self.bf("++>+++.<.!") 13:36:37 3 13:36:37 2 13:36:56 ~exec exec("def bf(p):\n p=p+"!"\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='+':\n t[l]=t[l]+1\n if p[i]=='-':\n t[l]=t[l]-1\n if p[i]=='<':\n l=l-1\n if p[i]=='>':\n l=l+1\n if p[i]=='.':\n sys.stdout(t[l])\n i=i+1\nself.bf=bf") 13:36:57 SyntaxError: invalid syntax 13:37:23 ~exec exec("def bf(p):\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='+':\n t[l]=t[l]+1\n if p[i]=='-':\n t[l]=t[l]-1\n if p[i]=='<':\n l=l-1\n if p[i]=='>':\n l=l+1\n if p[i]=='.':\n sys.stdout(t[l])\n i=i+1\nself.bf=bf") 13:37:37 ~exec self.bf("++++>----<.>.<.") 13:37:37 4 13:37:37 -4 13:37:37 4 13:38:55 ~exec sys.stdout(true or false) 13:38:55 NameError: name 'true' is not defined 13:39:02 ~exec sys.stdout(True or False) 13:39:02 True 13:41:39 ~exec exec("def bf(p):\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='[' and t[l]==0:\n c=1\n while c>0:\n i=i+1\n if p[i]=='[': c=c+1\n if p[i]==']': c=c-1\n if p[i]==']' and t[l]!=0:\n c=1\n while c>0:\n i=i-1\n if p[i]==']': c=c+1\n if p[i]=='[': c=c-1\n if p[i]=='+':\n t[l]=t[l]+1\n if p[i]=='-':\n t[l]=t[l]-1\n if p[i]=='<':\n l=l-1\n if p[i]=='>':\n l=l+1\n if p[i]=='.':\n sy 13:41:40 SyntaxError: EOL while scanning single-quoted string 13:42:34 ~exec exec("def bf(p):\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='\[' and t[l]==0:\n c=1\n while c>0:\n i=i+1\n if p[i]=='\[': c=c+1\n if p[i]=='\]': c=c-1\n if p[i]=='\]' and t[l]!=0:\n c=1\n while c>0:\n i=i-1\n if p[i]=='\]': c=c+1\n if p[i]=='\[': c=c-1\n if p[i]=='+':\n t[l]=t[l]+1\n if p[i]=='-':\n t[l]=t[l]-1\n if p[i]=='<':\n l=l-1\n if p[i]=='>':\n l=l+1\n if p[i]=='.':\ 13:42:34 SyntaxError: EOL while scanning single-quoted string 13:43:47 ~exec exec("""def bf(p):\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='[' and t[l]==0:\n c=1\n while c>0:\n i=i+1\n if p[i]=='[': c=c+1\n if p[i]==']': c=c-1\n if p[i]==']' and t[l]!=0:\n c=1\n while c>0:\n i=i-1\n if p[i]==']': c=c+1\n if p[i]=='[': c=c-1\n if p[i]=='+':\n t[l]=t[l]+1\n if p[i]=='-':\n t[l]=t[l]-1\n if p[i]=='<':\n l=l-1\n if p[i]=='>':\n l=l+1\n if p[i]=='.':\n 13:43:48 SyntaxError: EOF while scanning triple-quoted string 13:45:20 ~exec exec("def bf(p):\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='[' and t[l]==0:\n c=1\n while c>0:\n i=i+1\n if p[i]=='[': c=c+1\n if p[i]==']': c=c-1\n if p[i]==']' and t[l]!=0:\n c=1\n while c>0:\n i=i-1\n if p[i]==']': c=c+1\n if p[i]=='[': c=c-1\n if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': sys.stdout(t[l])\n i= 13:45:20 SyntaxError: EOL while scanning single-quoted string 13:45:56 I seem to have exceeded some sort of maximum input length for bsmnt_bot 13:46:33 ~exec self.bf1="def bf(p):\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='[' and t[l]==0:\n c=1\n while c>0:\n i=i+1\n if p[i]=='[': c=c+1\n if p[i]==']': c=c-1\n if p[i]==']' and t[l]!=0:\n c=1\n while c>0:\n i=i-1\n if p[i]==']': c=c+1\n if p[i]=='[': c=c-1\n" 13:46:40 ~exec self.bf2=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': sys.stdout(t[l])\n i=i+1\nself.bf=bf" 13:46:51 ~exec exec(self.bf1+self.bf2) 13:47:14 ~exec self.bf("+++[->++<]>.") 13:47:15 6 13:47:20 yay! 13:47:30 !bf_txtgen Hello, world! 13:48:16 121 ++++++++++++++[>+++++>+++++++>+++><<<<-]>++.>+++.+++++++..+++.>++.------------.<++++++++.--------.+++.------.--------.>+. [609] 13:49:39 ~exec self.bf("++++++++++++++[>+++++>+++++++>+++<<<-]>++.>+++.+++++++..+++.>++.------------.<++++++++.--------.+++.------.--------.>+.") 13:49:40 72 13:49:40 101 13:49:40 108 13:49:40 108 13:49:40 111 13:49:40 44 13:49:42 32 13:49:44 119 13:49:46 111 13:49:48 114 13:49:50 108 13:49:52 100 13:49:54 33 13:54:43 ~exec self.bf2=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': sys.stdout(unichr(t[l]))\n i=i+1\nself.bf=bf" 13:54:51 ~exec exec(self.bf1+self.bf2) 13:55:02 ~exec self.bf("++++++++++++++[>+++++>+++++++>+++<<<-]>++.>+++.+++++++..+++.>++.------------.<++++++++.--------.+++.------.--------.>+.") 13:55:02 H 13:55:03 e 13:55:03 l 13:55:03 l 13:55:03 o 13:55:03 , 13:55:05 w 13:55:07 o 13:55:09 r 13:55:11 l 13:55:13 d 13:55:15 ! 13:55:18 Huh? 13:55:55 ~exec self.bf1="def bf(p):\n o=''\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='[' and t[l]==0:\n c=1\n while c>0:\n i=i+1\n if p[i]=='[': c=c+1\n if p[i]==']': c=c-1\n if p[i]==']' and t[l]!=0:\n c=1\n while c>0:\n i=i-1\n if p[i]==']': c=c+1\n if p[i]=='[': c=c-1\n" 13:56:05 ~exec self.bf2=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': o=o+unichr(t[l])\n i=i+1\nself.bf=bf" 13:56:13 ~exec exec(self.bf1+self.bf2) 13:56:17 ~exec self.bf("++++++++++++++[>+++++>+++++++>+++<<<-]>++.>+++.+++++++..+++.>++.------------.<++++++++.--------.+++.------.--------.>+.") 13:56:30 ~exec self.bf2=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': o=o+unichr(t[l])\n i=i+1\nself.bf=bf\nsys.stdout(o)" 13:56:33 ~exec exec(self.bf1+self.bf2) 13:56:33 NameError: name 'o' is not defined 13:56:42 ~exec self.bf2=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': o=o+unichr(t[l])\n i=i+1\nself.bf=bf\n sys.stdout(o)" 13:56:47 ~exec exec(self.bf1+self.bf2) 13:56:47 SyntaxError: invalid syntax 13:57:34 ~exec self.bf2=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': o=o+unichr(t[l])\n i=i+1\n sys.stdout(o)\nself.bf=bf" 13:57:37 ~exec exec(self.bf1+self.bf2) 13:57:43 ~exec self.bf("++++++++++++++[>+++++>+++++++>+++<<<-]>++.>+++.+++++++..+++.>++.------------.<++++++++.--------.+++.------.--------.>+.") 13:57:43 Hello, world! 14:02:24 ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~bf(.*)", lambda x,y: self.bf(y.group(2))") 14:02:25 SyntaxError: EOL while scanning single-quoted string 14:02:30 ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~bf(.*)", lambda x,y: self.bf(y.group(2))) 14:02:45 ~bf ++++++[->++++++<]. 14:02:45 -!- bsmnt_bot has quit (Remote closed the connection). 14:02:50 -!- bsmnt_bot has joined. 14:04:09 ~exec self.bf1="def bf(p):\n o=''\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='[' and t[l]==0:\n c=1\n while c>0:\n i=i+1\n if p[i]=='[': c=c+1\n if p[i]==']': c=c-1\n if p[i]==']' and t[l]!=0:\n c=1\n while c>0:\n i=i-1\n if p[i]==']': c=c+1\n if p[i]=='[': c=c-1\n" 14:04:14 ~exec self.bf2=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': o=o+unichr(t[l])\n i=i+1\n sys.stdout(o)\nself.bf=bf" 14:04:24 ~exec exec(self.bf1+self.bf2) 14:04:39 ~exec self.bf("+++++[->+++++<]>.") 14:04:40 14:04:47 ~exec self.bf("++++++[->++++++<]>.") 14:04:47 $ 14:05:06 ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~bf(.*)", lambda x,y: self.bf(y.group(2))) 14:05:17 ~bf ++++++[->++++++<]>. 14:05:17 -!- bsmnt_bot has quit (Remote closed the connection). 14:05:20 -!- bsmnt_bot has joined. 14:05:26 ~bf ++++++[->++++++<]>. 14:05:33 ~exec self.bf1="def bf(p):\n o=''\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='[' and t[l]==0:\n c=1\n while c>0:\n i=i+1\n if p[i]=='[': c=c+1\n if p[i]==']': c=c-1\n if p[i]==']' and t[l]!=0:\n c=1\n while c>0:\n i=i-1\n if p[i]==']': c=c+1\n if p[i]=='[': c=c-1\n" 14:05:35 ~exec self.bf2=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': o=o+unichr(t[l])\n i=i+1\n sys.stdout(o)\nself.bf=bf" 14:05:46 ~exec exec(self.bf1+self.bf2) 14:05:59 ~exec self.bf(" ++++++[->++++++<]>.") 14:06:00 $ 14:06:22 ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~cat(.*)", lambda x,y: sys.stdout(y.group(2))) 14:06:27 ~cat Hello, world! 14:06:27 Hello, world! 14:06:39 ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~catv(.*)", lambda x,y: sys.stdout(y.group(2))) 14:06:43 ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~cat (.*)", lambda x,y: sys.stdout(y.group(2))) 14:06:47 ~cat Hello, world! 14:06:48 Hello, world! 14:06:48 Hello, world! 14:06:57 ~exec self.pop_raw_regex_queue() 14:06:57 AttributeError: IRCbot instance has no attribute 'pop_raw_regex_queue' 14:06:58 ~exec self.pop_raw_regex_queue() 14:07:00 AttributeError: IRCbot instance has no attribute 'pop_raw_regex_queue' 14:07:24 ~exec self.raw_regex_queue().pop() 14:07:24 TypeError: 'list' object is not callable 14:07:28 ~exec self.raw_regex_queue.pop() 14:07:31 ~exec self.raw_regex_queue.pop() 14:07:32 ~exec self.raw_regex_queue.pop() 14:07:37 ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~cat (.*)", lambda x,y: sys.stdout(y.group(2))) 14:07:41 ~cat Hello, world! 14:07:41 Hello, world! 14:08:10 ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~catrepr (.*)", lambda x,y: sys.stdout(repr(y.group(2)))) 14:08:15 ~catrepr Hello, world! 14:08:16 'Hello, world!' 14:08:48 ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~bf (.*)", lambda x,y: self.bf(y.group(2))) 14:09:02 ~bf ++++++[>++++++<-]>. 14:09:02 -!- bsmnt_bot has quit (Remote closed the connection). 14:09:05 -!- bsmnt_bot has joined. 14:09:19 ~exec self.bf1="def bf(p):\n o=''\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='[' and t[l]==0:\n c=1\n while c>0:\n i=i+1\n if p[i]=='[': c=c+1\n if p[i]==']': c=c-1\n if p[i]==']' and t[l]!=0:\n c=1\n while c>0:\n i=i-1\n if p[i]==']': c=c+1\n if p[i]=='[': c=c-1\n" 14:09:25 ~exec self.bf2=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': o=o+unichr(t[l])\n i=i+1\n sys.stdout(o)\nself.bf=bf" 14:09:31 ~exec exec(self.bf1+self.bf2) 14:09:56 ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~catrepr (.*)", lambda x,y: sys.stdout(repr(y.group(2)))) 14:10:04 ~catrepr ++++++[>++++++<-]>. 14:10:05 '++++++[>++++++<-]>.' 14:10:17 gah! get a loca python interpreter! 14:10:28 There are ones for windows too, you know. 14:10:35 Sorry! I was trying to get bsmnt_bot to do Brainfuck 14:10:47 ah, ok 14:10:48 it works, but I can't get it to respond to commands of the form ~bf 14:11:08 ~exec self.bf("++++++++++++++[>+++++>+++++++>+++<<<-]>++.>+++.+++++++..+++.>++.------------.<++++++++.--------.+++.------.--------.>+.") 14:11:09 Hello, world! 14:11:12 Sorry, I thought you were still learning python. 14:11:27 * SimonRC goesr 14:11:28 Like this? It wouldn't be very good 14:11:28 * SimonRC goes 14:13:48 bsmntbombdood: I've got bsmnt_bot to do Brainfuck, but I can't get it to work properly on the raw regex queue (for some reason, it just quits whenever I try) 14:16:18 ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~bf (.*)", lambda x,y: sys.stdout("!ul (~exec self.bf("+y.group(2)+"))S")) 14:16:28 ~bf ++++++[>+++++++<-]>. 14:16:28 !ul (~exec self.bf(++++++[>+++++++<-]>.))S 14:16:32 ~exec self.bf(++++++[>+++++++<-]>.) 14:16:32 SyntaxError: invalid syntax 14:16:46 ~exec self.raw_regex_queue.pop() 14:17:01 ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~bf (.*)", lambda x,y: sys.stdout("!ul (~exec self.bf(\'\'\'"+y.group(2)+"\'\'\'))S")) 14:17:06 ~bf ++++++[>+++++++<-]>. 14:17:06 !ul (~exec self.bf('''++++++[>+++++++<-]>.'''))S 14:17:10 ~exec self.bf('''++++++[>+++++++<-]>.''') 14:17:11 * 14:17:21 There's always a way.... 14:17:41 ~bf ++++++++++++++[>+++++>+++++++>+++<<<-]>++.>+++.+++++++..+++.>++.------------.<++++++++.--------.+++.------.--------.>+. 14:17:42 !ul (~exec self.bf('''++++++++++++++[>+++++>+++++++>+++<<<-]>++.>+++.+++++++..+++.>++.------------.<++++++++.--------.+++.------.--------.>+.'''))S 14:17:46 ~exec self.bf('''++++++++++++++[>+++++>+++++++>+++<<<-]>++.>+++.+++++++..+++.>++.------------.<++++++++.--------.+++.------.--------.>+.''') 14:17:47 Hello, world! 14:20:35 You know you've spent too much time programming when, like I just did, you try to save a directory after renaming a file 14:21:48 ~exec self.bf3="def bfarg(x,y):\n p=y.group(2)\n o=''\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='[' and t[l]==0:\n c=1\n while c>0:\n i=i+1\n if p[i]=='[': c=c+1\n if p[i]==']': c=c-1\n if p[i]==']' and t[l]!=0:\n c=1\n while c>0:\n i=i-1\n if p[i]==']': c=c+1\n if p[i]=='[': c=c-1\n" 14:23:07 ~exec self.bf4=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': o=o+unichr(t[l])\n i=i+1\n sys.stdout(o)\nself.register_raw(r'\S+ PRIVMSG (\S+) :~bf (.*)',bfarg)" 14:23:13 ~exec self.raw_regex_queue.pop() 14:23:23 ~exec exec(self.bf3+self.bf4) 14:23:34 ~bf ++++++[->++++++<]>. 14:23:34 $ 14:23:45 yay again! 14:25:20 ~bf ++++++++++++++[>+++++>+++++++>+++<<<-]>++.>+++.+++++++..+++.>++.------------.<++++++++.--------.+++.------.--------.>+. 14:25:20 Hello, world! 14:33:14 ~exec sys.stdout("Hello, world!"[1:]) 14:33:15 ello, world! 14:35:26 ~exec self.bf4=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': o=o+unichr(t[l])\n if p[i]==',':\n t[l]=ord(y.group(4)[0])\n y.group(4)=y.group(4)[1:]\n i=i+1\n sys.stdout(o)\nself.register_raw(r'\S+ PRIVMSG (\S+) :~bf (.*)(!(.*))?',bfarg)" 14:35:39 ~exec self.raw_regex_queue.pop() 14:35:42 ~exec exec(self.bf3+self.bf4) 14:35:42 SyntaxError: can't assign to function call (, line 28) 14:36:03 ~exec self.bf3="def bfarg(x,y):\n p=y.group(2)\n a=y.group(4)\n o=''\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='[' and t[l]==0:\n c=1\n while c>0:\n i=i+1\n if p[i]=='[': c=c+1\n if p[i]==']': c=c-1\n if p[i]==']' and t[l]!=0:\n c=1\n while c>0:\n i=i-1\n if p[i]==']': c=c+1\n if p[i]=='[': c=c-1\n" 14:36:30 ~exec self.bf4=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': o=o+unichr(t[l])\n if p[i]==',':\n t[l]=ord(a[0])\n a=a[1:]\n i=i+1\n sys.stdout(o)\nself.register_raw(r'\S+ PRIVMSG (\S+) :~bf (.*)(!(.*))?',bfarg)" 14:36:34 ~exec exec(self.bf3+self.bf4) 14:36:52 ~bf ,>,>,.<.<.!abc 14:37:27 ~bf ++++++[->++++++<]>. 14:37:34 ~bf ++++++[->++++++<]>.! 14:38:03 ~exec self.raw_regex_queue.pop() 14:38:04 ~exec self.raw_regex_queue.pop() 14:38:10 ~exec exec(self.bf3+self.bf4) 14:38:26 ~exec sys.stdout(repr(self.raw_regex_queue)) 14:38:26 [(<_sre.SRE_Pattern object at 0xb7cc1c98>, >), (<_sre.SRE_Pattern object at 0x80d2290>, >), (<_sre.SRE_Pattern object at 0x80d24c8>, >), (<_sre.SRE_Pattern object 14:38:27 at 0x80d1cc0>, >), (<_sre.SRE_Pattern object at 0x80d26e0>, >), (<_sre.SRE_Pattern object at 0x80d2918>, >), (<_sre.SRE_Pattern object at 0x80c1010>, thod IRCbot.do_ps of <__main__.IRCbot instance at 0xb7c2e16c>>), (<_sre.SRE_Pattern object at 0x80d2b80>, >), (<_sre.SRE_Pattern object at 0x80d6980>, )] 14:38:55 ~ps 14:38:56 None 14:39:12 ~exec sys.stdout(self.bf4) 14:39:13 if p[i]=='+': t[l]=t[l]+1 14:39:13 if p[i]=='-': t[l]=t[l]-1 14:39:13 if p[i]=='<': l=l-1 14:39:13 if p[i]=='>': l=l+1 14:39:14 if p[i]=='.': o=o+unichr(t[l]) 14:39:15 if p[i]==',': 14:39:16 t[l]=ord(a[0]) 14:39:18 a=a[1:] 14:39:19 i=i+1 14:39:21 sys.stdout(o) 14:39:23 self.register_raw(r'\S+ PRIVMSG (\S+) :~bf (.*)(!(.*))?',bfarg) 14:39:50 ~quit 14:40:04 ~exec exec(self.bf3+self.bf4) 14:40:12 ~bf ,.!a 14:40:40 ~exec sys.stdout(repr(self.raw_regex_queue.pop())) 14:40:40 (<_sre.SRE_Pattern object at 0x80d6980>, ) 14:41:25 ~exec self.bf3="def bfarg(x,y):\n p=y.group(2)\n a=y.group(3)\n o=''\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='[' and t[l]==0:\n c=1\n while c>0:\n i=i+1\n if p[i]=='[': c=c+1\n if p[i]==']': c=c-1\n if p[i]==']' and t[l]!=0:\n c=1\n while c>0:\n i=i-1\n if p[i]==']': c=c+1\n if p[i]=='[': c=c-1\n" 14:41:44 ~exec self.bf4=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': o=o+unichr(t[l])\n if p[i]==',':\n t[l]=ord(a[0])\n a=a[1:]\n i=i+1\n sys.stdout(o)\nself.register_raw(r'\S+ PRIVMSG (\S+) :~bf (.*)!(.*)',bfarg)" 14:41:50 ~exec exec(self.bf3+self.bf4) 14:41:56 ~bf ,.!a 14:41:56 a 14:42:29 ~exec self.raw_regex_queue.pop() 14:43:12 ~exec self.bf4=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': o=o+unichr(t[l])\n if p[i]==',':\n t[l]=ord(a[0])\n a=a[1:]\n i=i+1\n sys.stdout(o)\nself.register_raw(r'\S+ PRIVMSG (\S+) :~bf ([^!]*)!?(.*)',bfarg)" 14:43:17 ~bf ,.!a 14:43:28 ~exec exec(self.bf3+self.bf4) 14:43:29 ~bf ,.!a 14:43:30 a 14:43:38 ~bf ++++++[->++++++<]>. 14:43:38 $ 14:45:09 ~bf ,[.,]!Hello, world! 14:45:10 -!- bsmnt_bot has quit (Remote closed the connection). 14:45:13 -!- bsmnt_bot has joined. 14:45:29 ~exec self.bf3="def bfarg(x,y):\n p=y.group(2)\n a=y.group(3)\n o=''\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='[' and t[l]==0:\n c=1\n while c>0:\n i=i+1\n if p[i]=='[': c=c+1\n if p[i]==']': c=c-1\n if p[i]==']' and t[l]!=0:\n c=1\n while c>0:\n i=i-1\n if p[i]==']': c=c+1\n if p[i]=='[': c=c-1\n" 14:45:48 ~exec self.bf3="def bfarg(x,y):\n p=y.group(2)\n a=y.group(3)+unichr(0)\n o=''\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='[' and t[l]==0:\n c=1\n while c>0:\n i=i+1\n if p[i]=='[': c=c+1\n if p[i]==']': c=c-1\n if p[i]==']' and t[l]!=0:\n c=1\n while c>0:\n i=i-1\n if p[i]==']': c=c+1\n if p[i]=='[': c=c-1\n" 14:45:54 ~exec self.bf4=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': o=o+unichr(t[l])\n if p[i]==',':\n t[l]=ord(a[0])\n a=a[1:]\n i=i+1\n sys.stdout(o)\nself.register_raw(r'\S+ PRIVMSG (\S+) :~bf ([^!]*)!?(.*)',bfarg)" 14:45:57 ~exec exec(self.bf3+self.bf4) 14:46:04 ~bf ,[.,]!Hello, world! 14:46:05 Hello, world! 14:46:59 ~bf ,[.,]!This implementation returns 0 on EOL. 14:47:00 This implementation returns 0 on EOL. 14:48:05 ~bf ++++++++++++++++[->++++++++<]>-[.-] 14:48:05 ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! 14:48:06 15:13:05 ~bf >,[>,]<.[<.]!Hello, world! 15:13:05 !dlrow ,olleH 15:13:09 Huh? 15:19:45 !bf >,[>,]<.[<.] 15:19:53 !i 1 Hello, world! 15:20:02 !i 3 Hello, world! 15:20:04 !eof 3 15:20:07 !dlrow ,olleH 15:20:19 !ul (I haven't broken this, have I?)S 15:20:21 I haven't broken this, have I? 15:26:56 -!- nazgjunk has joined. 15:27:48 ~bf ,[.,]!Hello, nazgjunk! 15:27:50 Hello, nazgjunk! 15:27:57 ! 15:27:59 hi 15:28:01 Huh? 15:28:22 I spent ages trying to get bsmnt_bot to do Brainfuck 15:28:30 * brainfuck 15:38:56 -!- UpTheDownstair has joined. 15:44:15 -!- fushd has joined. 15:44:29 -!- nazgjunk has quit (Nick collision from services.). 15:46:05 -!- fushd has changed nick to nazgjunk. 15:54:48 -!- jix__ has changed nick to jix. 15:59:07 -!- UpTheDownstair has quit (Connection timed out). 16:02:05 -!- oerjan has joined. 16:02:22 ~bf ,[.,]!Hello, oerjan! 16:02:23 Hello, oerjan! 16:17:15 hello 16:17:32 i don't see why Forte has to be O(n^2). 16:17:55 Basically, because you need to keep generating new line numbers for lines 16:18:06 so when you do a loop, the redefinition table grows at O(n) 16:18:13 * as 16:18:37 but I suppose it might be possible to do the redefinition table more efficiently 16:19:52 Trees. 16:20:45 So, let me put it this way: 99 bottles of beer written in Forte written in Thutu is probably O(99^2) minimum 16:20:59 (and yes, I did test it with other values of 99) 16:22:23 it's at least going to be O(n) in space when it should be O(1), with any language used to write the interpreter 16:22:40 (but if it were O(n) in space before, it may still be O(n) in space after Forteisation) 16:22:55 Yeah, space is hard to keep down. 16:30:21 By the way, the compiled version of my interpreter is http://pastebin.ca/391947 16:30:53 (I hacked the Thutu interpreter to support arithmetic and a few string operations natively, so if I gave the Thutu source code you couldn't run it anyway) 16:31:47 * ais523 wonders why Perl syntax-highlighters never seem to be able to handle regexps correctly 16:33:44 that leads to the obvious question: can Perl regexps parse Perl regexps? 16:34:18 No. You can't do nested brackets with regexps (it's a computational class thing) 16:34:42 yeah, that old pumping lemma 16:34:52 to handle nested brackets in Thutu, the easiest way is to change them to some other sort of bracket from the inside out, in pairs 17:04:28 -!- kxspxr has joined. 17:04:40 -!- kxspxr has quit (Client Quit). 17:10:05 -!- tgwizard has joined. 17:51:31 What do people think of the idea of using a separate pastebin (e.g. esoteric.pastebin.ca) instead of the main pastebin.ca pastebin? 17:52:02 Advantages: our stuff is separated from people using the pastebin for other things. 17:52:39 Disadvantages: slightly extra hassle to get it set up, slightly longer URL, we would need at least one post every 3 months (which is easy enough to manage) to keep the pastebin active 17:54:08 -!- digital_me has joined. 17:57:29 "meh" 17:58:00 la "meh" nt 18:11:25 ais523, sounds like a plan 18:12:27 I'll go and set up esoteric.pastebin.ca, then, if there are no objections soon 18:13:04 i have an objection! 18:13:19 what is it? 18:13:31 "why" 18:13:36 Second. 18:14:00 The idea would be that if #esoteric's posts were separated, then we could look back through them in the future 18:14:11 it would sort of reduce the attrition rate of esolang-related material 18:14:20 would it. 18:14:36 Public pastebins die after 3mo. 18:14:44 (Of unuse) 18:15:29 3 months of disuse, yes. I listed that as a potential disadvantage. 18:15:38 what are the chances of that happening? 18:16:02 almost 100% 18:16:38 Oh well, in that case we can just use the main one 18:16:44 and use clog to find all the relevant post numbers 18:16:54 it depends on your time frame, of course :) 18:17:09 I guessed your answer would be in that sense 18:28:10 but people here are right, it's likely that our pastebin archiving services are good enough already 18:30:38 Now, if somebody wrote a custom esoteric pastebin with highlighting for Brainfuck and Befunge ... :P 18:33:07 I already have a brainfuck-mode on Emacs 18:33:16 someone was having fun with bsmnt_bot ... 18:33:17 * ais523 looks into their own filesystem 18:33:24 !ps d 18:33:25 1 ais523: daemon ul bf 18:33:25 ~bf ,[.,]!that was me 18:33:26 that was me 18:33:27 2 ais523: daemon deadfish funge93 18:33:29 3 GregorR: ps 18:35:09 bsmntbombdood: anyway, I don't see why bsmnt_bot shouldn't have a BF interpreter too 18:35:23 because EgoBot has one? 18:36:27 that's like saying "no need to make any more esolangs, INTERCAL is Turing-complete" 18:36:41 heh 18:36:44 go ahead 18:36:54 No, I've done it already 18:37:14 ~bf ,[.,]!This is a complete Brainfuck interpreter (EOF = 0) 18:37:15 This is a complete Brainfuck interpreter (EOF = 0) 18:37:27 fun 18:37:31 and ! separates program from input (can be omitted if you don't want input) 18:37:49 I can set it up in 3 commands, too 18:38:03 (It would be 1 but that exceeds the maximum line length I can send) 18:38:52 !bf_txtgen bsmnt_bot does Brainfuck! 18:39:57 208 ++++++++++++++[>+++++++>++++++++>++++++++>++<<<<-]>.>+++.>---.+.<+.<---.+++.>>+.<.>>++++.<<<++.>>.----------.<-.>>.<<<----------------------------------.>-.>----.++++++++.+++++.--------.<+++.>---.++++++++.>+. [409] 18:40:09 ~bf ++++++++++++++[>+++++++>++++++++>++++++++>++<<<<-]>.>+++.>---.+.<+.<---.+++.>>+.<.>>++++.<<<++.>>.----------.<-.>>.<<<----------------------------------.>-.>----.++++++++.+++++.--------.<+++.>---.++++++++.>+. 18:40:09 bsmnt_bot does Brainfuck! 18:41:08 come to think of it, I haven't tested it with nested square brackets yet 18:42:00 ~bf >,[>,]<[.[-]<[.<]>[-]>[.>]<]!123456789 18:42:00 98765432123456788765432345677654345665455 18:42:36 ~bf >,[>,]<[.<[.<]>[-]>[.>]<[-]<]!123456789 18:42:37 987654321234567898765432345678765434567654565 18:43:08 ~bf >,[>,]<.[-]<[.<[.<]>[-]>[.>]<[-]<]!123456789 18:43:08 9876543212345678765432345676543456545 18:43:15 that's what I was aiming for 18:47:45 ~bf >,[>,]<.[-]<[.<[.<]>[-]>[.>]<[-]<]!_,.-'^ 18:47:46 ^'-.,_,.-'-.,.-. 18:48:21 ~bf >,[>,]<.[-]<[.<[.<]>[-]>[.>]<[-]<]!<({[|]})> 18:48:21 >)}]|[{(<({[|]})}]|[{({[|]}]|[{[|]|[| 18:49:36 My brain hurts. 18:50:59 why are you in #esoteric, then? 18:51:11 I can see why it would make your brain hurt, 18:51:25 but it isn't a very good place for soothing a brain that's already been hurt 18:51:37 :P 18:52:32 yes, one's brain does hurt when it is repeatedly fucked. 19:16:01 -!- ais523 has quit. 19:32:05 -!- sebbu has joined. 20:22:18 -!- sebbu2 has joined. 20:23:14 -!- calamari has joined. 20:30:01 -!- sebbu has quit (Read error: 60 (Operation timed out)). 20:37:40 -!- sebbu2 has changed nick to sebbu. 20:42:31 -!- Sgeo has joined. 20:47:41 -!- graue has joined. 20:55:51 -!- UpTheDownstair has joined. 20:59:07 -!- kxspxr has joined. 21:00:23 -!- kxspxr has quit (Client Quit). 21:01:26 -!- calamari has quit ("Leaving"). 21:04:44 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 21:05:29 -!- nazgjunk has joined. 21:16:39 -!- oerjan has quit ("leaving"). 21:22:32 -!- UpTheDownstair has quit (Connection timed out). 21:38:41 -!- calamari has joined. 21:55:48 -!- oerjan has joined. 22:22:07 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 22:31:01 -!- calamari has quit ("Leaving"). 23:25:31 -!- kxspxr has joined. 23:25:50 -!- kxspxr has quit (Client Quit). 23:33:56 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 23:34:32 -!- nazgjunk has joined. 2007-03-13: 00:11:52 -!- oerjan has quit (calvino.freenode.net irc.freenode.net). 00:12:05 -!- oerjan has joined. 00:18:31 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)). 00:25:21 -!- calamari has joined. 00:34:52 -!- calamari has quit ("Leaving"). 00:41:50 -!- oerjan has quit ("leaving"). 00:48:25 -!- NK`_ has joined. 00:51:26 -!- NK` has quit (Read error: 111 (Connection refused)). 00:59:09 -!- NK`_ has quit (Read error: 145 (Connection timed out)). 01:01:11 -!- NK` has joined. 01:36:45 -!- SevenInchBread has joined. 01:41:01 -!- calamari has joined. 02:24:40 -!- tgwizard has quit (Remote closed the connection). 02:25:54 -!- sebbu has quit ("Leaving"). 02:47:55 -!- SevenInchBread has changed nick to CakeProphet. 03:15:06 -!- CakeProphet has changed nick to SevenInchBread. 04:04:56 -!- GreaseMonkey has joined. 04:34:56 oh joy 05:08:11 -!- Sgeo has quit ("Leaving"). 05:08:12 -!- SevenInchBread has quit (Read error: 113 (No route to host)). 05:17:26 -!- Arrogant has joined. 05:17:29 -!- ShadowHntr has joined. 05:28:28 -!- maverickbna has joined. 05:28:37 -!- ShadowHntr has quit (Nick collision from services.). 05:28:45 -!- maverickbna has changed nick to ShadowHntr. 05:39:38 -!- digital_me has quit (Read error: 110 (Connection timed out)). 05:42:37 -!- ShadowHntr has quit (Read error: 145 (Connection timed out)). 05:55:06 -!- Arrogant has quit ("Leaving"). 06:11:52 -!- lament has quit (calvino.freenode.net irc.freenode.net). 06:12:09 -!- lament has joined. 06:12:49 -!- lament_ has joined. 06:15:00 -!- lament has quit (Remote closed the connection). 06:46:16 -!- lament_ has changed nick to lament. 07:00:46 afk food 07:16:09 back 07:59:23 -!- jix__ has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:00:35 -!- jix__ has quit (Client Quit). 08:00:48 -!- jix__ has joined. 08:23:57 -!- calamari has quit ("Leaving"). 08:38:19 -!- ShadowHntr has joined. 09:17:47 -!- thematrixeatsyou has joined. 09:19:45 -!- thematrixeatsyou has quit (Client Quit). 09:20:18 -!- jix__ has quit (Read error: 110 (Connection timed out)). 09:21:46 -!- GreaseMonkey has quit (Read error: 110 (Connection timed out)). 09:40:25 -!- ShadowHntr has quit (Read error: 145 (Connection timed out)). 10:21:54 -!- oerjan has joined. 12:04:35 -!- jix__ has joined. 12:05:01 -!- jix__ has changed nick to jix. 12:56:44 -!- oerjan has quit ("leaving"). 15:57:39 -!- nazgjunk has joined. 16:15:29 -!- UpTheDownstair has joined. 16:17:05 -!- nazgjunk has quit (Nick collision from services.). 16:17:09 -!- UpTheDownstair has changed nick to nazgjunk. 16:22:19 -!- puzzlet has quit (Read error: 131 (Connection reset by peer)). 16:22:58 -!- jix has quit ("This computer has gone to sleep"). 17:04:08 -!- puzzlet has joined. 17:22:32 -!- jix__ has joined. 19:34:10 -!- clog has joined. 19:34:10 -!- clog has joined. 19:56:18 -!- crathman has quit (Read error: 145 (Connection timed out)). 21:01:15 -!- tgwizard has joined. 21:05:41 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 21:05:43 -!- sebbu2 has joined. 21:05:50 -!- UpTheDownstair has joined. 21:06:12 -!- UpTheDownstair has changed nick to nazgjunk. 21:06:36 -!- nazgjunk has quit (Connection reset by peer). 21:10:21 -!- ShadowHntr has joined. 21:15:01 Reading books that require concentration has proven to be ineffective after taking the CSAP 21:22:46 CSAP? 21:24:30 -!- sebbu has quit (Connection timed out). 21:27:02 required standardized tests in colorado 21:27:34 http://en.wikipedia.org/wiki/CSAP 21:27:58 it fuckin sucks 21:30:00 hm. reminds me of the MEAP we use in Michigan 21:30:49 At least this is the last year I have to take it 21:39:26 -!- oerjan has joined. 21:41:22 -!- Arrogant has quit ("Leaving"). 21:51:57 -!- nazgjunk has joined. 22:10:06 bsmntbombdood: link to the research in question? 22:10:17 or were you just extrapolating from personal experience? 22:20:07 if anyone's into game theory, this is really neat: http://www.connectfour.net/Files/connect4.pdf 22:30:36 i thought connect 4 was a draw 22:30:50 i also seem to remember the checkers in connect 4 as being red and black, not white 22:33:27 -!- UpTheDownstair has joined. 22:33:41 -!- UpTheDownstair has quit (Read error: 54 (Connection reset by peer)). 22:37:41 yeah 22:37:53 the paper describes them as normally being yellow and red 22:39:23 the colors must differ in the dutch market; every set i've seen has had them red and black 22:43:47 -!- nazgjunk has quit (Read error: 131 (Connection reset by peer)). 22:44:01 -!- UpTheDownstair has joined. 22:44:54 -!- sebbu2 has changed nick to sebbu. 22:48:24 -!- nazgjunk has joined. 22:48:39 -!- UpTheDownstair has quit (Read error: 104 (Connection reset by peer)). 22:50:10 graue: in american markets, the game is similarly played with red and black game pieces. 22:54:58 the dutch get htem in standard tulip colors. 22:57:05 i'm in an american market. i meant because the authors of that paper are dutch 23:02:09 -!- tgwizard has quit (Remote closed the connection). 23:05:00 -!- UpTheDownstair has joined. 23:06:32 -!- Sgeo has joined. 23:12:59 graue: huh? 23:15:02 graue: what research? 23:15:29 -!- foekd has joined. 23:15:51 -!- nazgjunk has quit (Nick collision from services.). 23:16:01 -!- foekd has changed nick to nazgjunk. 23:25:41 -!- UpTheDownstair has quit (Connection timed out). 23:27:53 -!- sebbu has quit ("@+"). 23:36:59 -!- RodgerTheGreat has quit. 23:47:51 -!- RodgerTheGreat has joined. 2007-03-14: 00:05:53 made my board game ai into an irc bot 00:05:54 [01:02:13] Human 48 - computer 2644 00:05:59 :P 00:09:58 i lasted for like 10 rounds though! 00:23:59 what board game? 00:30:51 sujomilo... my own 00:31:01 sounds esperantoish 00:31:04 bsmntbombdood: research to support the thesis that you can't concentrate on reading books after taking that test 00:31:19 graue: oh, that's just my own experience 00:32:10 it doesn't mean anything though 01:05:27 -!- nazgjunk has quit (Read error: 110 (Connection timed out)). 01:13:12 -!- nazgjunk has joined. 01:48:45 -!- nazgjunk has quit ("Leaving"). 02:05:53 -!- Caphi has joined. 02:11:49 Will someone please say a random number between 1 and 20, inclusive? 02:12:23 14 02:12:29 Thank you. 02:12:55 You're welcome. 02:13:02 \[\]=a 02:13:07 0 02:13:22 Sorry. Someone else tried to take my computer. 02:17:07 56`1 02:20:58 oerjan: 17 has been proven to be more random than 14 02:21:01 :D 02:22:10 Hey, you think I'll give away my best random number for free? 02:23:25 I like the number 17. 02:23:48 14 is a good random number. Half perfect, in fact. 02:24:49 Quite so. 02:25:05 man 02:25:15 prefix application makes parsing so easy 02:25:21 (unlambda style) 02:25:26 I just realized, I didn't actually specify an integer. 02:26:07 Or indeed a rational number. 02:26:35 e^pi - pi 02:27:10 OK, try e*sqrt 2 - pi/omega 02:27:33 just to be completely surreal 02:27:47 Omega? I'm not familiar with that constant. 02:28:14 probably because it isn't a real number. 02:28:58 BB(144) 02:29:03 By which you mean that it's complex or that it's undefined? 02:29:10 it is perfectly well ordered though. 02:29:18 nope :) 02:29:30 So it's complex? 02:29:34 nope 02:29:49 it's surreal 02:29:54 defined, but uncomputable 02:30:19 oh that too. omega means too many different things. 02:30:25 Oo. I learned stuff today. 02:30:36 although the uncomputable number is still real 02:30:48 Out of curiosity 02:30:54 What's the definition for it 02:31:37 i can never remember the correct notation for surreals. 02:32:03 but something like (0,1,2,... | ) 02:32:21 the simplest infinite surreal. 02:32:35 Caphi: for what purpose do you request this number? 02:32:42 Just curious. 02:33:01 so am I, that's my point. :) 02:33:11 No other reason. Oerjan mentioned it. 02:33:25 on the other hand, omega comes from the ordinal numbers as well. 02:33:53 the ordinal numbers can be considered a subset of the surreals. 02:34:33 those with empty right parts, i believe 02:49:35 hmm, that's interesting 02:50:09 my combinator iterpreter fails to simplify ``S``S`KS``S`KK``S`KS``S``S`KS``S`KKI`KI`K``S``S`KS``S`KKI`KI 02:50:36 (extensionally equal to S) 02:52:15 I'm writing an abstraction eliminator 02:54:22 oh man 02:54:25 ``S``S`KS``S`KK``S`KS``S`K`S`KS``S`K`S`KK``S``S`KS``S`KKI`KI`K``S``S`KS``S`K`S`KS``S`K`S`KK``S``S`KS``S`KKI`KI`K`KI 02:54:39 church numeral addition 02:56:01 my simplifier completely fails to do anything with that, even though there are obvious simplifications 02:57:32 that ``S`KKI inside is pretty severe. 03:00:04 ``S`KxI -> x is the most trivial case of eta reduction. 03:01:06 yeah :/ 03:02:28 wonder why it doesn't reduce it 03:02:52 oh 03:03:30 When reducing extensionally, it only works with the whole expression 03:06:18 ahh, now it at least does something 03:06:36 and ``S``S`KS``S`KK``S`KS``S``S`KS``S`KKI`KI`K``S``S`KS``S`KKI`KI is reduced to S 03:11:36 -!- oerjan has quit ("Good night"). 03:24:04 dummy variables are annoying 04:14:36 -!- GreaseMonkey has joined. 04:27:57 good night, guys 04:28:47 -!- RodgerTheGreat has quit. 05:05:41 -!- Sgeo has quit ("Leaving"). 05:54:02 -!- GreaseMonkey has quit ("gtg guys, cya"). 07:17:11 -!- ShadowHntr has quit ("End of line."). 07:44:53 Will someone please produce two random numbers between 1 and 10, inclusive, and tell me their sum? 07:46:48 Never mind. I was trying to demonstrate to someone, but that person left. 07:47:36 18. 07:59:52 Request noted. Minding disabled. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:45:13 -!- Caphi has quit ("Miranda IM! Smaller, Faster, Easier. http://miranda-im.org"). 10:04:04 -!- oerjan has joined. 11:02:17 -!- jix has joined. 14:31:11 -!- oerjan has quit ("leaving"). 16:03:38 -!- nooga has joined. 16:03:41 y0 16:05:16 -!- graue has quit ("Leaving"). 16:13:13 SADOL.com wtf?!?!?!? 16:36:31 -!- jix__ has joined. 16:36:37 -!- jix has quit (Nick collision from services.). 16:36:45 -!- jix__ has changed nick to jix. 16:38:33 -!- RodgerTheGreat has joined. 16:38:47 hi everybody 17:39:55 -!- Robdgreat has joined. 17:47:30 -!- oerjan has joined. 17:54:50 -!- tgwizard has joined. 18:07:18 -!- Robdgreat has quit. 19:01:41 -!- jix has quit ("This computer has gone to sleep"). 19:30:20 -!- oerjan has quit ("leaving"). 19:31:05 -!- oerjan has joined. 19:38:12 -!- sebbu has joined. 20:34:24 -!- nazgjunk has joined. 20:37:01 -!- jix has joined. 21:06:02 -!- sebbu2 has joined. 21:24:48 -!- sebbu has quit (Read error: 110 (Connection timed out)). 21:35:10 -!- sebbu has joined. 21:45:09 -!- UpTheDownstair has joined. 21:46:30 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 21:48:40 -!- tgwizard_ has joined. 21:52:51 -!- UpTheDownstair has changed nick to nazgjunk. 21:54:51 -!- sebbu2 has quit (Read error: 110 (Connection timed out)). 22:00:10 -!- tgwizard has quit (Read error: 110 (Connection timed out)). 22:07:23 -!- Caphi has joined. 23:02:20 -!- jix has quit ("This computer has gone to sleep"). 23:20:08 ooh fun 23:20:20 the max shifts function solves the halting problem 23:30:01 wha? 23:32:23 The value of the max shifts function is uncomputable 23:33:33 But given the value of S(n), you can solve the halting problem on an n state turing machine 23:35:16 This gave me an idea which I don't know if I've seen the answer to: 23:35:19 ah, I see 23:35:41 hmm 23:35:41 Are there uncomputable problems strictly weaker than the halting problem? 23:35:58 sounds unlikely 23:36:02 S(4) on a 2 symbol machine is known 23:36:26 so on a 4 state, 2 symbol turing machines, the halting problem is solvable 23:38:03 it is analogous to how there are, if P!=NP, problems strictly between them. 23:39:18 (that is, problems which are neither in P nor NP-complete) 23:39:31 what's strictly weaker anyway 23:39:59 is it trivial to map one type of turing machine to another via any well-understood algorithm? 23:40:00 is the problem of sorting apples strictly weaker than the problem of sorting oranges? 23:40:02 say you have a problem which you can solve if you have a halting oracle, but not vice versa 23:40:50 I mean by "strictly weaker" that you have a reduction one way but not the other. 23:41:19 oerjan: is the problem of deciding the halting of a program equipped with a halting oracle strictly stronger than just the regular halting problem? 23:41:33 yes. 23:41:41 one would assume so 23:42:07 in fact that is the premise of one of the languages on the wiki. 23:43:08 actually two: Banana Scheme and Brainhype. 23:43:16 hm 23:43:21 interesting 23:43:54 -!- nazgjunk has quit ("Leaving"). 23:44:58 brainhype doesn't really care 23:45:20 but going downward in strength (while still being uncomputable) seems harder. 23:45:45 (banana scheme mostly appeared exactly because it was unclear what could interpret brainhype) 23:56:18 hm, this /// lang seems cool 23:56:30 i totally missed it 2007-03-15: 00:18:54 -!- RodgerTheGreat has quit. 00:20:05 -!- RodgerTheGreat has joined. 00:23:06 #$@% cars 00:23:10 *cats 00:25:37 -!- Sgeo has joined. 00:28:57 -!- oerjan has quit ("leaving"). 00:29:30 sweet 00:29:37 my dad got me a pocket protector 00:29:39 :P 00:29:51 ooh, neat 00:30:07 indeed 00:30:30 if I had shirts with pockets, I'd wear one all the time 00:30:54 me too 00:31:13 -!- oerjan has joined. 00:31:19 I can see myself using a pocket protector, if I wore shirts with pockets 00:31:56 what logo does your pocket protector have on it? 00:32:02 -!- tgwizard_ has quit (Remote closed the connection). 00:32:26 a very small "JM" imprint 00:32:43 nothing else 00:33:04 classy 00:48:54 -!- cmeme has quit (Read error: 104 (Connection reset by peer)). 00:49:09 -!- cmeme has joined. 00:52:15 holy crap 00:52:15 http://mathforum.org/kb/message.jspa?messageID=1375971&tstart=0 00:56:48 is that written by *the* John Conway? 00:57:06 -!- sebbu has quit (Client Quit). 00:57:07 I know pi to 51 decimal places 00:57:43 I never find myself needing more than the first seven- I've never really tried memorizing them 01:00:18 RodgerTheGreat: yes 01:00:28 cool 01:00:36 that's what impressed me 01:00:50 cellular automata and memorizing pi. 01:00:53 although his technique is pretty nice too 01:00:57 I agree 01:01:11 bsmntbombdood: how did you memorize it? 01:01:16 it's often easy to memorize sequences of numbers by their spoken "beat" 01:01:48 sine-cosine-cosine-sine-three-point-one-four-one-five-nine and the like 01:02:49 this is probably made easier if you combine some groups of 2 digits into one number 01:03:07 three fourteen fifteen etc 01:03:48 what's interesting about John Conway is that among this crowd, he's a celebrity, whereas most places nobody would bat an eyelash at the name 01:06:22 lament: yeah- chunking numbers is another extremely effective way of reducing the difficulty of memorizing things 01:10:03 lament: couple boring days in middle school math 01:10:16 haha 01:10:36 it breaks itself up into easily memorizable pieces 01:11:58 1415 92 653 5897 9323 846264 3383... 01:12:54 another way to "memorize" it could be to memorize an algorithm for finding successive places.... 01:13:12 slower in recall, but at least as useful 01:13:32 that would be terrible difficult 01:14:41 before you've played with esolangs, something like BF is difficult to wrap your head around. Now, it comes naturally to all of us. 01:19:22 that's true 01:22:25 one of the reasons I like esolangs is the fact that they have a way of liberating one's mind with respect to programming. 01:22:59 I feel sad for people who only think of programming in terms of C++ and Java 01:23:16 concur 02:08:00 -!- oerjan has quit ("Good night"). 03:06:07 Today is (ln -1)/i day! 03:06:55 cool 03:07:11 we need to do something special at 1:59 03:07:23 Whose 1:59? 03:07:34 mmm, pi 03:10:08 Sgeo: good question 03:10:29 GMT-92 ? 03:10:41 Whatever that turns out to be equivelent to? 03:10:51 sounds equitable 03:11:09 what would be an appropriate celebration? 03:31:23 bsmntbombdood: i like conway's division more than yours :) 03:31:41 * lament memorized pi to 30 places with conway's thing 03:31:56 hmm 03:32:27 his is almost like a poem 03:33:22 "1415 9265 35" - rhymes 03:33:53 reading it doesn't make any sense 03:35:07 8979 (rhyme) 3238 (rhyme the other way) 4626 (rhyme) 4338 (rhymes with the second quadruplet) 03:36:12 just express rhymes like you would if you were analyzing poetry: ABAB 03:36:31 at last, taking AP English seems worthwhile 03:36:57 Next time I have to write some poetry for class I'm just going to mark v. shaney some poe 03:42:05 1233564- quoth the constant, nevermore. 03:43:18 it would be interesting writing a program that would translate a sentence into a series of numbers that had the same rythm when read 03:44:01 it might be as simple as assigning numbers based on rhyme pairs 03:44:13 but I'm not certain that would always work 03:46:29 -!- GreaseMonkey has joined. 03:46:31 -!- thematrixeatsyou has joined. 03:46:46 howdy GreaseMonkey, thematrixeatsyou 03:47:12 -!- thematrixeatsyou has left (?). 03:48:04 sorry bout that, accidentally connected twice D: 03:48:31 I was wondering if it was you and your bot or something 03:50:24 GreaseMonkey: how do you think we should celebrate the upcoming pi day? 03:50:24 i accidentally opened two server tabs 03:50:33 \sum_{i=1}^\infty{10^{-i}i} 03:50:39 hmm.... 03:50:46 what's the formula for pi again? 03:50:50 i can never remember it 03:50:53 lots 03:51:06 there's a couple of tangents in it 03:51:12 1/1 - 1/3 + 1/5 + 1/7... 03:51:15 is one 03:51:35 converges very slowly though 03:52:32 should that second + be a -? 03:52:53 i think so 03:52:56 terms usually alternate in a mclaurin series (which that vaguely resembles) or stay constant 03:53:06 if you get my meaning 03:53:30 the upcoming pi day? 03:53:46 yeah 03:53:49 typed wrong 03:53:52 lament: today 03:54:14 I'm defining the official celebration as 1:59, GMT 03:54:19 because that makes sense 03:54:20 and that's actually pi/4 03:54:53 why GMT? 03:55:00 it should be GMT-pi 03:55:55 http://en.wikipedia.org/wiki/Leibniz_formula_for_pi 03:56:24 that sounds clumsy to calculate, unless we use metric time or something 04:02:28 we should write a "pidaydaemon" that interrupts whatever you're doing with the terminal at the precise moment of pi day and encourages you to celebrate 04:02:54 impossible. 04:02:56 pidaymon 04:04:23 lament: brilliant! 04:04:55 #EsoMon: gotta appt-get 'em all! 04:27:13 good night, folks 04:27:23 -!- RodgerTheGreat has quit. 04:30:17 -!- ShadowHntr has joined. 04:40:29 -!- ShadowHntr has quit (zelazny.freenode.net irc.freenode.net). 04:40:29 -!- Caphi has quit (zelazny.freenode.net irc.freenode.net). 04:40:29 -!- bsmnt_bot has quit (zelazny.freenode.net irc.freenode.net). 05:43:18 -!- Sgeo has quit ("Leaving"). 06:49:22 -!- ShadowHntr has joined. 06:59:15 afk, food 07:19:44 back 07:50:05 -!- maverickbna has joined. 07:50:22 -!- maverickbna has quit (Read error: 104 (Connection reset by peer)). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:08:56 -!- ShadowHntr has quit (Connection timed out). 08:29:48 -!- sekhmet has quit (Read error: 104 (Connection reset by peer)). 08:34:04 -!- sekhmet has joined. 08:40:04 -!- sebbu has joined. 09:09:43 -!- jix has joined. 09:16:52 -!- ShadowHntr has joined. 10:05:18 gtg, gnight 10:07:19 -!- GreaseMonkey has quit ("gnight - avoid encyclopediadramatica at all costs."). 10:29:19 -!- ShadowHntr has quit ("End of line."). 11:57:05 -!- jix__ has joined. 12:06:13 -!- jix has quit (Read error: 113 (No route to host)). 12:46:32 -!- oerjan has joined. 12:55:47 all this talk about celebrating pi at 3/14 1:59 (GMT/GMT-pi) and none of the Americans noticed that those times had long since passed. 13:35:03 -!- oerjan has quit (zelazny.freenode.net irc.freenode.net). 13:35:24 -!- oerjan has joined. 13:45:35 -!- jix__ has changed nick to jix. 14:13:34 -!- helios24 has joined. 15:56:10 -!- crathman has joined. 16:12:52 -!- RodgerTheGreat has joined. 16:13:06 hello everyone 17:26:57 -!- crathman has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.2/2007021917]"). 18:00:10 -!- oerjan has quit ("leaving"). 18:25:46 -!- tgwizard has joined. 19:11:47 -!- nazgjunk has joined. 19:13:07 -!- nazgjunk has quit (Read error: 131 (Connection reset by peer)). 19:16:48 -!- nazgjunk has joined. 19:54:50 -!- UpTheDownstair has joined. 19:55:06 -!- nazgjunk has quit (Read error: 131 (Connection reset by peer)). 19:55:33 -!- UpTheDownstair has changed nick to nazgjunk. 19:58:18 -!- jix has quit ("This computer has gone to sleep"). 21:29:16 -!- UpTheDownstair has joined. 21:32:02 -!- nazgjunk has quit (Read error: 145 (Connection timed out)). 21:36:19 -!- sebbu2 has joined. 21:43:14 -!- sebbu has quit (Read error: 60 (Operation timed out)). 22:23:42 haha 22:23:56 C is a sad language, because most lines end with ); 22:24:03 ); 22:28:38 haha 22:29:24 even worse, all those curly brackets make fun of people with cleft palates- :{ 22:30:09 'course, that exact combination doesn't happen very often that I can think of... 22:36:50 -!- oerjan has joined. 22:38:40 is :{ possible in C at all? 22:39:31 can an expression begin with just { ? 22:40:29 hm 22:40:36 a good question 22:41:24 Plof has a lot of }); 22:41:31 I know one way it's *possible*, but not in a functional expression 22:41:43 A static struct. 22:41:57 there you go 22:41:58 struct foo a = { b:{stuff in a.b} }; 22:42:10 ah 22:42:16 I haven't used that syntax in a while, I may be a bit off ;) 22:43:06 indeed it seems a bit weird to have that inner { } 22:43:41 Well, that much I know is legit :) 22:43:51 If a struct contains a struct, and you're declaring one statically, that's how you do it. 22:44:06 ok 22:45:49 huh? 22:45:52 :{ ? 22:50:53 found a BNF for C at http://www.cs.man.ac.uk/~pjj/bnf/c_syntax.bnf 22:51:02 i don't think you can have that 22:51:10 however, i cannot make your suggestion parse with it. 22:51:34 first, it's = not : but that is not so important. 22:52:04 worse is that the part to the right of = cannot contain a nested struct. 22:53:09 oh wait. 22:53:21 the _outer_ ={ still works. 22:53:24 -!- nazgjunk has joined. 22:53:49 -!- UpTheDownstair has quit (Read error: 104 (Connection reset by peer)). 22:54:03 ={ 22:54:05 it could of course be an erroneous BNF. 22:57:13 oh, and label :{ block } works. 22:59:09 or, less goto-tainted: case const :{ block } 22:59:45 which looks like it could actually be used. 23:01:51 *snaps* 23:01:59 Oh, heheh, the syntax I gave was D :P 23:03:24 I guess it is probably also available in modern C compilers, being an obvious gap in the original language. 23:05:13 oerjan do you know C? 23:05:49 a bit 23:06:12 C is fun 23:06:23 quite 23:06:38 C is my native language. It was difficult learning an ... unstructured language like English when I was a boy. 23:06:45 :D 23:06:47 struct foo a = { .b = initializer_for_field_b }; is C99 (and a GCC extension for other modes). 23:08:43 Same goes for arrays; int array[256] = { [42] = 1, [69] = 1 }; works if you want to initialize few elements to 1 and keep the rest as 0. 23:09:23 fizzie: wtf? 23:09:29 I've never seen that syntax 23:10:07 Well, full C99-compliant compilers aren't anywhere yet, so I'm not sure it's sensible to use in published code. Perhaps in GCC-specific projects, though. 23:10:59 busy beaver! 23:11:48 hm... you could extend that to function memoing. 23:12:12 See chapter 6.7.8 Initialization in your friendly ISO/IEC 9899:1999 standard; the syntax is "initializer-list: designation_opt initializer --" and a designator can be either "[ constant-expression ]" or ". identifier". 23:12:33 http://eden.dei.uc.pt/~machado/research/bb/BB.html 23:12:56 int fib(int n) { return (fib(n) = fib(n-1)+ fib(n-2)); } = { (0) = 0, (1) = 1 }; 23:13:35 That might be a "bit" too high-level to exactly be very C-like. 23:13:51 hey, i'm just generalizing :) 23:15:52 I want a turing machine interpreter 23:16:13 -!- sebbu has joined. 23:17:13 i saw mention of one with a good graphical interface, perhaps at Good Math/Bad Math. 23:17:34 I had a Turing machine interpreter written in Befunge and syntax-highlighted in the great "messy HTML table with a dozen different background colors for various functional regions" fashion, but I lost it. :/ 23:17:42 The "user interface" wasn't very friendly, though. 23:18:16 abA!6!0!a!1!A!R!0!b!5!b!R!1!a!1!a!R!1!b!2!b!R!2!a!2!a!R!2!A!3!A!L!2!!!3!! 23:18:24 Ngah, borken copypaste. 23:18:53 oh and Mark CC wrote an interpreter himself too 23:18:53 Well, you just fed it a string a bit like that, except that it's not supposed to cut off there, the example I was trying to copypaste continues for a while. 23:19:49 -!- nazgjunk has quit ("Leaving"). 23:19:49 http://scienceblogs.com/goodmath/2007/02/basics_the_turing_machine_with_1.php 23:20:44 a bit verbose syntax though 23:21:05 it is a shame that one of the most historically important esoteric languages is not even recognized as such 23:21:16 all because Turing used a different terminology 23:22:10 what, turing machines? 23:22:57 the JFLAP mentioned in the same thread was the good one i was thinking of. 23:23:00 turing machines are programs in this language 23:23:25 (not that i have tested it myself) 23:23:28 the language does not have a name or syntax. I find that to be a shame. :) 23:23:49 you could say the same about combinatory logic. 23:23:51 There's just more than one 23:24:05 except that does have a name and syntax 23:24:11 oerjan: ... :) 23:24:44 it makes sense to talk of a "combinatory logic" language, in which something like "s k" is a program 23:25:34 no issues there... 23:25:40 among turing tarpits, the distinction between "computational model" and "esoteric language" is mainly based on the apparent seriousness of the inventor. 23:26:07 yes, yes, and yet, combinatory logic and lambda calculus are both easily accepted as languages 23:26:18 hmph 23:26:23 I think the automagical homework checking eggine in one of our courses was JFLAP-based. 23:26:24 and turing machines aren't because the terminology used by the inventor is just too bizarre 23:26:28 With a halting oracle, the max-shifts function is computable 23:26:35 what about the busy beaver function? 23:26:43 oh, it is 23:27:06 generate all n-state turing machines, remove ones that don't halt, then run them all 23:29:29 i could do that standing on my head 23:30:10 haha 23:30:35 your MOM doesn't halt! 23:32:54 I know, she just bitches forever 23:33:11 loop(bitch) 23:34:59 -!- sebbu2 has quit (Connection timed out). 23:50:00 -!- sebbu has quit ("@+"). 2007-03-16: 00:11:06 (Y (lambda (f) (cons 'bitch (f))) 00:12:07 -!- ShadowHntr has joined. 00:13:39 heh 00:14:03 that seems a bit too strict. You need lazy evaluation for any conses to actually happen. 00:14:30 let f = Bitch:f in f 00:15:05 or you could do it in reverse: 00:16:15 yeah 00:16:33 10:BITCH:GOTO 10 00:16:41 ((Y (lambda (f) (lambda (l) (f (cons 'bitch l))))) '()) 00:17:24 RUN 00:18:22 sequence_ $ repeat $ bitch 00:18:27 I don't think a Y combinator is even possible in scheme 00:18:57 yeah, that might need lazy evaluation too 00:19:31 ok then: 00:20:16 SII is simpler anyway 00:20:36 ((lambda (f l) (f f l)) (lambda (f l) (f f (cons 'bitch l))) '()) 00:21:10 ((lambda (x) (x x)) (lambda (f) (cons 'bitch (f f))))) 00:21:28 no, that won't work. 00:22:04 ? 00:22:15 without lazy evaluation, you cannot apply (f f) without another intervening lambda. 00:22:45 yeah you can 00:22:49 it just doesn't halt 00:22:58 it never bitches either 00:23:19 because it doesn't get to that part 00:23:34 yeah it does 00:23:54 ((lambda (f) (cons 'bitch (f f))) (lambda (f) (cons 'bitch (f f)))) 00:23:56 -!- tgwizard has quit (Remote closed the connection). 00:24:25 (cons 'bitch ((lambda (f) (cons 'bitch (f f))) (lambda (f) (cons 'bitch (f f))))) 00:24:30 and so on 00:24:32 ok it evaluates 'bitch, perhaps. but it never conses. 00:25:36 ((lambda (x) (x x)) (lambda (f) (bitch) (f f))) 00:25:45 that should satisfy all camps :) 00:26:31 it's even tail recursive 00:26:42 but not functional 00:28:11 I guess bitching does have side effects, though 00:28:17 you bet 00:28:31 in fact it has nothing _but_ side effects :) 00:30:35 ((lambda (x) (x x)) (lambda (f) (cons-stream 'bitch (f f))))) 00:32:26 bah, you got lazy and used a macro ;) 01:18:44 dummy variables are no fun 01:23:38 that's probably not the right word 01:24:25 fix (bitch>>) 01:24:57 what? 01:25:45 your comment made me think about how to remove all dummy variable names from that bitch recursion :) 01:26:38 on the downside, it requires an import Control.Monad.Fix 01:27:48 what kind of variables were you thinking of? 01:28:24 the x in \x.E 01:28:55 or \forall x.E 01:28:57 and so on 01:30:42 you mean unused variables? 01:31:40 in Haskell/ML, you use _ for those. 01:32:25 no, x can be used in E 01:33:08 so it's actually basic lambda calculus abstraction you don't like? :) 01:33:16 yeah 01:33:24 combinatory logic for the win! 01:33:50 there is also pointfree (pointless) style in Haskell 01:34:01 like my fix (bitch>>) above 01:34:57 and the whole Forth/Joy style of languages 01:36:00 ooh, I didn't think about a stack 02:34:06 interesting, disjunct types 02:50:08 -!- RodgerTheGreat has quit. 02:51:22 -!- RodgerTheGreat has joined. 03:34:51 -!- ShadowHntr has quit ("End of line."). 03:41:57 'night everyone 03:42:18 -!- RodgerTheGreat has quit. 03:51:24 -!- GreaseMonkey has joined. 04:08:31 -!- bsmntbombdood has quit (Read error: 54 (Connection reset by peer)). 04:21:36 -!- oerjan has quit ("Good night"). 04:43:21 -!- bsmntbombdood has joined. 04:46:35 -!- bsmnt_bot has joined. 04:48:02 what are the input symbols of a turing machine? 04:55:37 hmmm 04:56:00 I read that the halting problem is solvable on machines that have finite memory 04:57:06 so the number of steps needed before a repition occurs is known 04:57:11 -!- Arrogant has joined. 04:59:10 which means it is solvable on real computers 05:00:45 if it doesn't halt after 2**(number of bits in memory), it doesn't halt at all 05:01:30 2**(number of bits in memory) steps, that is 05:05:19 i reckon that turing machines should have more than one tape 05:20:36 bsmntbombdood: that would be true if "real computers" performed no IO of any kind. 05:21:58 -!- ShadowHntr has joined. 05:22:00 as it is, a simple +[,] stumps every oracle 05:34:48 lament: IO is included in the input 05:35:03 The halting function is given the program and its input 05:39:22 goodnight 05:51:10 gnight 05:51:29 sleep tight dood, even though there's bombs in your bsmnt 06:46:58 -!- NK` has quit (Read error: 54 (Connection reset by peer)). 06:50:19 -!- ShadowHntr has quit ("End of line."). 07:07:07 -!- Arrogant has quit (Read error: 104 (Connection reset by peer)). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:30:39 !bf-txtgen all your base aare belong to me! 08:30:42 Huh? 08:30:50 !help 08:30:52 help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon 08:30:54 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl 08:31:38 for guitar players: http://users.adelphia.net/~cygnusx_1/equal_temperament.html 08:52:06 -!- nazgjunk has joined. 08:59:17 !ps 08:59:20 3 helios24: ps 09:03:41 !ps d 09:03:44 1 ais523: daemon ul bf 09:03:46 2 ais523: daemon deadfish funge93 09:03:48 3 GreaseMonkey: ps 09:04:02 !ul testing 09:04:11 !ul sfda 09:04:14 !ul 09:44:40 gtg, gnight 09:45:16 -!- GreaseMonkey has quit ("gnight"). 10:18:19 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 10:18:46 -!- nazgjunk has joined. 10:23:36 -!- jix__ has joined. 10:26:16 -!- UpTheDownstair has joined. 10:35:42 -!- UpTheDownstair has quit (Connection reset by peer). 10:38:37 -!- nazgjunk has quit (Read error: 110 (Connection timed out)). 10:53:14 -!- nazgjunk has joined. 11:04:42 -!- nazgjunk has quit ("Leaving"). 11:24:58 -!- jix__ has quit ("This computer has gone to sleep"). 11:26:35 -!- nazgjunk has joined. 11:27:58 -!- UpTheDownstair has joined. 11:31:56 -!- UpTheDownstair has quit (Read error: 54 (Connection reset by peer)). 11:32:56 -!- nazgjunk has quit (Connection reset by peer). 11:43:11 -!- nazgjunk has joined. 12:32:08 -!- UpTheDownstair has joined. 12:32:22 -!- UpTheDownstair has quit (Client Quit). 12:39:09 -!- nazgjunk has quit (Read error: 145 (Connection timed out)). 12:41:13 -!- nazgjunk has joined. 13:02:52 -!- oerjan has joined. 13:17:30 -!- jix__ has joined. 13:55:46 -!- jix__ has quit ("This computer has gone to sleep"). 14:08:58 -!- helios24 has quit (Read error: 60 (Operation timed out)). 14:09:14 -!- fizzie has quit (Read error: 60 (Operation timed out)). 14:11:33 -!- helios24 has joined. 14:13:30 -!- fizzie has joined. 14:41:09 -!- ais523 has joined. 14:41:36 ~bf ,[.,]!Is this still working? 14:42:49 ~exec self.bf3="def bfarg(x,y):\n p=y.group(2)\n a=y.group(3)+unichr(0)\n o=?\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='[' and t[l]==0:\n c=1\n while c>0:\n i=i+1\n if p[i]=='[': c=c+1\n if p[i]==']': c=c-1\n if p[i]==']' and t[l]!=0:\n c=1\n while c>0:\n i=i-1\n if p[i]==']': c=c+1\n if p[i]=='[': c=c-1\n" 14:43:03 ~exec self.bf4=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': o=o+unichr(t[l])\n if p[i]==',':\n t[l]=ord(a[0])\n a=a[1:]\n i=i+1\nsys.stdout(o)\nself. register_raw(r'\S+ PRIVMSG (\S+) :~bf ([^!]*)!?(.*)',bfarg)" 14:43:06 bsmnt_bot needs a better persistence system. 14:43:10 ~exec exec(self.bf3+self.bf4) 14:43:11 SyntaxError: invalid syntax 14:43:13 o.O 14:43:41 damn, something must have gone wrong with my copy-paste 14:43:49 * oerjan gives up on SWI-prolog 14:43:56 you program in Prolog? 14:44:02 i wanted to try 14:44:13 I've written a few simple Prolog programs somewhere 14:44:20 never got to run them though, I don't have an interpreter 14:45:13 ~exec self.bf3="def bfarg(x,y):\n p=y.group(2)\n a=y.group(3)+unichr(0)\n o=''\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='[' and t[l]==0:\n c=1\n while c>0:\n i=i+1\n if p[i]=='[': c=c+1\n if p[i]==']': c=c-1\n if p[i]==']' and t[l]!=0:\n c=1\n while c>0:\n i=i-1\n if p[i]==']': c=c+1\n if p[i]=='[': c=c-1\n" 14:45:14 06:45:54 ~exec self.bf4=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': o=o+unichr(t[l])\n if p[i]==',':\n t[l]=ord(a[0])\n a=a[1:]\n i=i+1\n sys.stdout(o)\nself.register_raw(r'\S+ PRIVMSG (\S+) :~bf ([^!]*)!?(.*)',bfarg)" 14:45:23 umm... 14:45:40 ~exec self.bf3="def bfarg(x,y):\n p=y.group(2)\n a=y.group(3)+unichr(0)\n o=''\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='[' and t[l]==0:\n c=1\n while c>0:\n i=i+1\n if p[i]=='[': c=c+1\n if p[i]==']': c=c-1\n if p[i]==']' and t[l]!=0:\n c=1\n while c>0:\n i=i-1\n if p[i]==']': c=c+1\n if p[i]=='[': c=c-1\n" 14:45:51 ~exec self.bf4=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': o=o+unichr(t[l])\n if p[i]==',':\n t[l]=ord(a[0])\n a=a[1:]\n i=i+1\n sys.stdout(o)\nself.register_raw(r'\S+ PRIVMSG (\S+) :~bf ([^!]*)!?(.*)',bfarg)" 14:45:57 ~exec exec(self.bf3+self.bf4) 14:46:10 ~bf ,[.,]!Hopefully this works now. 14:46:10 Hopefully this works now. 14:46:12 i thought SWI prolog should be so simple. But i have now spend more time than i want to try and make it work properly with gvim as external editor. 14:46:19 *spent 14:46:42 is it the language that's the problem, or the development environment 14:46:48 s/$/?/ 14:47:29 the environment. i end up being infuriated by a bug, and then even more because their bug tracking system wants me to log in and _they_ select my password. 14:48:00 I tried to write my own Prolog interpreter once, but that was when all my programs were in VBA for Excel 14:48:03 naturally, I failed 14:48:25 nowadays I mostly use C, unless I'm using an esolang (often a better choice!) or am forced to use Java 14:48:31 well it is possible in theory :) 14:49:27 !ul (Is this still working too?)S 14:49:28 Is this still working too? 14:49:50 EgoBot does have some useful persistence. 14:50:15 the thing that's surprising me is that the daemon hasn't crashed yet, considering it's written in BF and has no error checking 14:50:27 and that people keep insisting on feeding it illegal programs 14:50:56 the persistence of the deadfish daemon is less surprising 14:53:21 !daemon bct bf http://www.bf-hacks.org/hacks/bct.b 14:54:09 !bct 111001010011110 14:54:13 !bct 1110111 14:54:23 1110111 14:54:48 !kill 3 14:55:16 uh oh, maybe I shuldn't feed it programs without checking what they do first 14:55:18 !pd 14:55:20 !ps 14:55:38 3 ais523: ps 14:55:46 !ps d 14:55:50 1 ais523: daemon ul bf 14:55:52 2 ais523: daemon deadfish funge93 14:55:53 it would be nice if bsmntbombdood would make at least one directory writable. Then we could place nice scripts there. 14:55:54 3 ais523: ps 14:56:18 the process must have ended naturally before I could kill it 14:56:34 but yes, oerjan, I agree that a persistent-daemon directory would be nice 14:56:43 so we could store interpreters in it 14:57:33 I've found myself rather wanting a Thutu interpreter here so I could write esolangs in it. BCT is easy: 14:58:31 /^0.*?!./$1/ 14:58:51 ~exec list_dir("/") 14:58:52 NameError: name 'list_dir' is not defined 15:00:42 no, BCT is less easy through an IRC client when you can't think sensibly about what you're doing 15:01:44 hey, self-modifying BCT looks interesting 15:02:27 0 deletes at the left, 1x inserts at the right, and the instruction pointer cycles along the program 15:02:35 ~exec sys.stdout(os.listdir("/")) 15:02:35 ['bin', 'bot', 'etc', 'lib', 'usr'] 15:02:46 ~exec sys.stdout(os.listdir("/bot")) 15:02:46 ['betterbot.py', 'test.pickle', 'foo.py~', 'ski_repl.py', 'foo.py', 'ircbot.py~', 'start.sh', 'better.sh', 'ircbot.py'] 15:03:31 ~exec sys.stdout(os.listdir("/lib")) 15:03:31 ['libm.so.6', 'libreadline.so.5', 'libacl.so.1', 'libdl-2.4.so', 'libresolv.so.2', 'libutil.so.1', 'libncurses.so.5', 'libattr.so.1', 'libcrypt.so.1', 'ld-linux.so.2', 'libdl.so.2', 'libpthread.so.0', 'libpam_misc.so.0', 'libpam.so.0', 'libc.so.6', 'librt.so.1'] 15:04:46 might be too simple to be turing complete 15:05:04 it's not obviously not TC 15:05:25 let's see. Any 00 will force synchronization 15:06:45 wait, exactly how do you mean 15:06:59 there's a description on the page linked from the wiki 15:07:27 the instruction pointer takes the command after the current one, looping back to the start when it reaches the end 15:07:44 and the commands operate on the program itself. Apart from that, it's just BCT 15:08:12 (The 'start' is the first non-deleted command. So the logic of self-modifying BCT is more like Muriel than a tag system.) 15:08:18 -!- UpTheDownstair has joined. 15:08:51 The problem seems to be that the number of 0s has to be kept quite low, or they'll end up demolishing the program 15:08:58 but obviously you can't have nothing but 1s 15:10:34 So essentially you have a cycle with two pointers in it, one data and one instruction 15:11:30 that's it. And they both increase and cycle through. Wow, it's like a cross between tag systems, Muriel, and Malbolge 15:11:44 (more like Dis, actually, as there isn't encryption confusing the issue too) 15:11:56 the example seems buggy from step 4 to 5 15:12:07 -!- UpTheDownstair has quit (Read error: 104 (Connection reset by peer)). 15:12:36 I agree, there should be an extra 1 at the end 15:13:14 hm, what happens if the modified data is inside the current instruction? 15:13:15 -!- UpTheDownstair has joined. 15:13:51 I'm not sure if that can happen. A 0 can delete itself, but then you just go onto the next instruction, and a command can't add inside itself 15:14:25 why not? There could be 0...*1 15:14:30 I just noticed that 15:14:50 in that case, presumably you go on to the command after the 0 at the start, with an extra 0 at the end 15:15:33 and then what about 0...*0 15:15:52 ok it's obvious what it should do 15:17:07 there is a problem with the obvious linked list implementation though 15:17:59 if you are not careful, you will end up with the instruction pointer at a deleted node. 15:18:26 no matter which order you choose for the operations 15:18:26 I'm writing it in Thutu at the moment, which has problems of its own 15:18:44 (Unfortunately, Thutu is 'the obvious implementation' for just about everything for me at the moment) 15:26:09 -!- nazgjunk has quit (Read error: 110 (Connection timed out)). 15:43:45 hm, another subtlety: 15:44:21 with ...1x, does execution continue before or after the added x? 15:44:42 I've just written an interpreter, so I'll check 15:45:09 before the way I've written it 15:45:33 http://pastebin.ca/raw/397461 15:48:59 from my experiments so far, it seems that if the program contains any 0s the density of 0s increases until they end up swamping the program 15:54:50 If 1s and 0s are distributed randomly, with a proportion p of 0s, then there's a chance p(1-p) of deleting a 1, a chance p^2 of deleting a 0, a chance (1-p)^2 of adding a 1, a chance p(1-p) of adding a 0 15:55:54 -!- RodgerTheGreat has joined. 15:56:08 howdy, everybody 15:56:22 from that description one would expect the proportion to stay constant. 15:56:25 hello, RogerTheGreat! We were discussing self-modifying Bitwise Cyclic Tag 15:56:37 I know, there's something slightly stranger going on 15:56:39 ooh, neat! 15:56:53 glad I showed up, then 15:57:43 starting with 1111111110, the number of 0s grows gradually, with the 0s getting clumpier and clumpier, until the whole thing collapses 15:59:19 aha! Consider the number of 1s between consecutive 0s 15:59:40 if it's odd, then it adds a string half that length to the end of the input 15:59:54 if it's even, it ends up combining with the next string 16:00:21 so if there's even one odd string, all the strings before it in the program will combine to it 16:00:58 no, wait; my argument doesn't work due to the 0s changing the length of the initial string 16:01:25 but the point is that newly-generated strings of 1s tend to be shorter than the strings of 1s that generated them 16:01:45 so the 1s-in-a-row count tends to decrease, which is what causes the programs to tend to terminate 16:02:39 does this imply that a bitwise cyclic tag system must halt? 16:02:59 no, BCT is turing-complete. It's self-modifying BCT that I was talking about 16:03:05 ah 16:03:07 nvm 16:05:31 * RodgerTheGreat rifles through the logs 16:09:33 -!- nazgjunk has joined. 16:09:48 hm... 16:09:59 -!- UpTheDownstair has quit (Read error: 104 (Connection reset by peer)). 16:14:47 alright, I think I have a better handle on the topic now 16:15:10 hm... I wonder what I should write an implementation in? 16:21:18 standard BCT could probably be expressed very concisely in BASIC using strings, with the minor caveat that most BASIC interpreters have arbitrary string length limitations 16:21:32 it's hard to dynamically allocate storage in BASIC. <:| 16:22:21 there was a pragma in the version of BASIC I used that allowed for dynamic arrays, and it had a REDIM command to resize them 16:24:41 neat- what was the implementation called? 16:24:57 QBASIC, if I remember. It was bundled with some versions of DOS 16:25:08 ah, yes- QBASIC 16:25:17 Perl should be fairly compact, even more so if you write it directly rather than compile to it ;) 16:25:36 I've used it quite a bit, although I was never aware of REDIM 16:25:46 oerjan: more readable too without the compilation, and also more efficient 16:26:04 I'd say my favorite BASIC implementations are DarkBASIC and Cbaspad for PalmOS 16:27:36 what, not BFBASIC? 16:28:40 -!- nazgjunk has quit (Success). 16:29:11 Calamari's opus is truly an achievement, but it isn't particularly handy when I find myself without a Java runtime environment 16:30:37 and believe me, Cbaspad is an esoteric language in it's own right. It's the only BASIC interpreter I've found for palmOS that offers peek() poke and call(), making inline ASM possible 16:30:59 not to mention a number of additional low-level hardware access and I/O functions 16:31:40 that was possible in QBASIC too IIRC. It had a CALL ABSOLUTE that would jump to a particular location in memory, and you could find where in memory a variable was stored 16:32:52 yes, it's a standard feature on most BASIC implementations from the '80s and earlier 16:33:35 -!- nazgjunk has joined. 16:34:35 hi, nazgjunk 16:34:44 -!- jix__ has joined. 16:36:35 -!- jix__ has changed nick to jix. 16:38:01 -!- UpTheDownstair has joined. 16:40:17 hello jix, UpTheDownstair 16:40:30 hello RodgerTheGreat 16:41:08 ~bf ,[.,]!Hello everyone 16:41:08 Hello everyone 16:41:52 heh 16:46:08 -!- nazgjunk has quit (Connection reset by peer). 16:52:12 -!- UpTheDownstair has quit (Connection reset by peer). 16:57:49 -!- nazgjunk has joined. 16:58:27 -!- ShadowHntr has joined. 17:00:19 * ais523 has just written a Dupdog interpreter 17:01:10 http://pastebin.ca/raw/397555 17:01:39 I don't have any Dupdog programs to test it on, though 17:06:04 wow. I can see the essential features necessary for computation, but that would be tricky as hell to program with. 17:06:35 I can't even figure out "Hello, world!". 17:06:45 -!- oerjan has quit ("My brain is toast"). 17:06:46 unfortunately, I don't see any way to do input, so I don't think cat is possible either. :S 17:07:38 ~ and ! provide a facility for looping, and Mfit's ? seems to allow for branching 17:08:02 ...in an extremely painful and weird way 17:08:49 no, it doesn't, so the language can't be TC. The problem is that the only way to increase the program's length is by doubling it, so a nonterminating program is always odd for Mfit and even for Shanty 17:09:03 no, I'm wrong: Mfit can double it too 17:09:15 it would be a lot easier if instructions for each interpreter could act as NOPs for the other... 17:09:34 ...or if there were any NOPs at all 17:09:53 as it stands, it seems like it'd be very difficult to manipulate program length enough to generate useful output 17:10:25 hm 17:10:47 is the program length mod 255ed before it's converted to ASCII? 17:10:56 (when you're doing output) 17:11:00 if the program length is odd for Mfit, then ??...?? is a NOP 17:11:10 RogerTheGreat: I don't know. It isn't with my interpreter 17:11:27 (I just pass the length to chr() and see what happens.) 17:11:35 You get something like this: 17:11:35 hm 17:11:53 ~bf +++++++++++++++++[->+++++++++++++++++<]>. 17:11:54 -!- bsmnt_bot has quit (Remote closed the connection). 17:12:30 wait, why did the bot just crash when I did that? Outputting 17*17 can't be that hard, surely? 17:12:46 :/ 17:12:46 it might be easier to grow the program to fit into a character you needed by modding than to reduce it *and* increase it to generate strings 17:13:12 would get round the problem of output being impossible in sufficiently complex programs too 17:13:30 although, if we have a NOP, we can arbitrarily shorten the program whenever we want to 17:13:49 perhaps both of these techniques can be combined to achieve output 17:14:20 A sufficiently complex program needs a sufficiently large number of characters to represent it 17:14:25 yes 17:14:46 and so can't do output except right at the end, and even then only a limited amount of output 17:14:46 I get what you meant about output in complex programs 17:15:03 so the language isn't BF-complete or even Underload-complete, at least 17:15:19 but it might still be Turing-complete, because that doesn't depend on I/O 17:15:34 thus, I would suspect that modding of program length is the intent 17:15:53 hm... wait.. 17:15:59 "...Because dupdog is only capable of storing a single value (the source code itself) in memory at a time, which may correspond to a finite set of 256 states..." 17:16:14 that implies that a program must have <= 255 characters. 17:16:17 bollocks 17:16:30 I think that line at the bottom is probably wrong 17:16:49 yeah 17:17:01 let's deal without the arbitrary limit, and argue that as ASCII is a 7-bit code, it repeats every 128 characters. Then at least we might be able to get somewhere 17:17:13 ok 17:18:08 * ais523 updates their interpreter accordingly 17:18:08 and if we allow for modding, the program length can be any number- an infinite state automaton. I'm fairly certain that one-register turing machines exist, so turing completeness *may* be possible 17:21:11 alright, so we know that we can halt at any time by having a character other than ! or ? at an odd space in the initial source code. 17:21:12 updated interpreter: http://pastebin.ca/raw/397577 17:21:26 yes, we even get a nice error number as output 17:21:50 I think it's acceptable to generate some junk output as a consequence of halting 17:22:12 it's probably easier than making a program that ends by eating itself completely 17:22:38 I don't even think that's possible without generating more output 17:22:39 in theory the program could be reversed, and maybe a bit of duplication, so a non-command character won't necessarily halt wherever you put it 17:22:58 ???????? ends without output 17:23:04 (it's two nested NOPs) 17:23:11 oh- I see 17:23:22 I was forgetting the consequences of reversing the source... 17:23:41 and ~ might not end, because it might not be a ~ by the time you reach it 17:24:29 I get the sense that this will probably require a bit of malbolge-esque code buffering to ensure commands do what you expect them to 17:26:22 unfortunately, 128 is divisible by 4, so some duplication's needed to print characters with both odd and even ASCII codes 17:26:26 s/4/2/ 17:27:08 wrapping a code-reverse in an Mfit ? seems like a way to do some primitive branching, but it's necessary to make sure that you don't leave any ~'s for Shanty to encounter... 17:27:21 at least, no time soon 17:27:31 I guess that would allow for a conditional halt, at least 17:28:00 One of the more fundamental parts of the program state is whether Mfit or Shanty is seeing the even-length programs 17:28:28 In fact, it sort of seems more sensible to consider two-character commands than one-character commands 17:28:36 hm 17:29:11 we can look at it this way- the two ways we can manipulate the program size, "s" are to subtract one or to multiply s by two 17:29:22 yep 17:29:37 every time we muliply s by two, we are assured it is even 17:29:57 if the program is even for mfit, it will be odd for shanty 17:30:04 and vice versa 17:30:05 Yes. To think about it another way, the program+interpreter parity stays the same unless the odd-length interpreter duplicates 17:30:16 yes 17:30:58 although, I was wrong- we can only either do s-1 or (s*2)-1 17:30:58 Another point: we have to duplicate or reverse the program _every time_ Shanty executes, which is every other command 17:31:29 thus, we always have an *odd* after a duplicate 17:31:31 no, ~abc changes to abcabc (see the wiki Talk page) 17:31:32 true 17:31:44 oh 17:31:47 hm 17:33:07 It's going to be easiest if we just let duplication roam free up to infinity. After all, it doesn't change either end of the program unless the program is very short; it only changes the length 17:33:36 true 17:34:21 if we use both "ends" of the program to store our useful code, they will be preserved through duplication. 17:34:39 I agree that the ends are what matters 17:34:59 so, we can use them as two "branches" that we'll probably need to interleave code between, using reverses as a compact way to NOP 17:35:29 reverse and duplicate are both NOPs in a way 17:35:37 they just have different effects on the program length 17:36:08 (Now I'm beginning to see why the language might not be TC; data storage is going to have to be /very/ non-localised) 17:36:49 -!- tgwizard has joined. 17:37:59 if we design a program that doesn't fit evenly into 128 or 255, it should be a relatively simple matter of duplicating a specific number of times to get to each desired character, followed by an Mfit non-coding character 17:38:09 I think this will be huge 17:38:31 the problem of data being dependent on final program length is a tough one 17:38:44 yep. The parity isn't trivial to deal with, but it's workable-around 17:39:21 *or* we can just assume it's bigger than we need it to be and pad the center with a bunch of noncoding characters to make it the right sie 17:39:24 *size 17:40:07 an optimal solution is hard, but an extremely nonoptimal one is much easier 17:40:49 since there doesn't seem to be a lot of sourcecode handy, doing it at all seems like enough of an accomplishment 17:40:56 -!- jix has quit ("This computer has gone to sleep"). 17:42:57 so... what's an easy way to find the number of duplications we'll need to get each modulus value? 17:43:14 brute-forcing it? 17:43:28 I guess that works 17:43:46 come to think of it, it's easiest just to get a bit higher than needed and NOP your way down 17:44:07 that's effectively what I'm saying 17:44:32 there are two kinds of NOPs- nops the interpreters skip over and nops that are never encountered at all 17:44:50 we can use anything as that second kind, and keep them in the creamy nougat center of our program 17:45:54 even better, adding 128 junk characters to the middle of the program has no visible effect on anything, until we reach them 17:46:18 use mfit's duplicate to make duplicates and either reverse (code continues from the opposite end, nop) or duplicate with shanty 17:46:31 then do an mfit output when appropriate 17:46:42 you need the right interpreter to cause a duplicate according to whether the output character is odd or even 17:46:58 so the hello world will look like "codecodecodeJUNKJUNKedocedocedoc" 17:47:07 If you're not doing loops, it's actually not too hard to output arbitrary text, just generate the program from the outside in 17:47:16 exactly 17:47:23 that's how I'm thinking 17:47:37 and all you need to code is the transition from one character to the next 17:47:59 and at the end, we can encounter the junk as shanty to terminate 17:48:03 yep 17:48:38 In fact, ~!~!~!~ multiplies the source length by 128, so if we don't care about being optimal we can just generate code for each character. 17:49:01 We can even use Mfit's ? as a NOP whether the program length is odd or even; just take it into account in all future code 17:49:33 OTOH, a 99 bottles of beer program shorter than the song itself would be difficult and/or impossible 17:49:41 so we just need to estimate an upper limit to the number of instructions we need to use for initial program length purposes, determine the actual number of flips and dups, generate the code and add padding as necessary 17:49:48 I agree 17:50:22 largely because storing strings seperately from counter data is effectively impossible 17:50:36 unless you get unhealthily creative 17:50:52 I'd go further and say storing counter data is incredibly difficult regardless of whether you have strings or not 17:50:58 3.141592653589793238462643383279......... 17:50:59 like storing it implicitly in the nesting of duplicates of something equally painful 17:51:10 ais523: haha- true 17:51:58 The problem is that we only have effectively 6 states to play with: reversed or not * three possible permulations of ?!~ 17:52:30 I think ultimately your idea of Mfit ? NOPs could lead to a more compact solution, but would drastically increase the complexity of the program 17:52:52 the problem is that duplicating, reversing, and permuting are all independent of each other 17:53:07 hm 17:53:17 so the only way you can store data in the program is the /amount of the program/ that was still there last time you duplicated 17:54:26 oh, jesus- I hadn't thought of that. This makes determining the number of flips and dups to arrive at a value is entirely dependent on the sequence of instructions that came before... 17:54:57 you'd have to build it an instruction at a time to get working right, I think. 17:55:21 precalculating wouldn't get you very far 17:55:54 no. But I think I know how I can write a Hello World-program-generating-program now 17:55:59 It might be best to write a program to generate this program, to reduce the potential for error 17:56:08 (i.e. a program in another language that generates Hello World in Dupdog) 17:56:13 lol- we both arrived at the same conclusion. 17:56:32 I think we're operating on the same wavelength here 17:56:59 -!- ShadowHntr has quit ("End of line."). 17:58:19 * ais523 sets out to try to write the program 18:03:48 * RodgerTheGreat cheers ais523 on! 18:04:08 there's nothing like the thrill of groundbreaking esolang coding 18:04:25 thanks 18:07:55 -!- sebbu has joined. 18:08:01 hi, sebbu 18:08:34 hi 18:09:34 ais523 and I have been figuring out how to do something vaguely useful in dupdog (http://www.esolangs.org/wiki/Dupdog) 18:10:15 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 18:10:22 we have a rough method that should create the first hello world in the language 18:16:45 -!- nazgjunk has joined. 18:38:59 grr, it isn't working at the moment 18:40:59 well, it's a pretty non-trivial task 18:41:27 and I have a theory that the resulting program is going to be fucking *huge* 18:41:52 you have to work from the inside and outside simultaneously 18:42:28 and getting the right value means hopping around a lot- rather like doing hello world in BF without - 18:42:35 only much worse, naturally 18:45:05 average case, I estimate it should take something around 128 instructions to get a value from 0-255 as output. The number of hops could be much greater if your program doesn't try to get an optimal solution 18:46:18 and all the interdependencies for size make things really tricky 18:50:29 Do you think that genetic algorithms might be a good approach for this sort of thing? It worked for malbolge 18:50:50 no idea. I think that working it out deterministically will probably work better, though 18:51:59 I was just thinking that since we have a rough idea of how we want the program to "look", we could start the GA software with something pretty close to a correct answer, meaning reasonably rapid results 18:52:15 I'll give up for the time being; I just realised why the method I was using wouldn't work. I still think it's possible to do it deterministically, though 18:52:29 doing things deterministically will probably reap more benefits in terms of future work with the language 18:52:42 what was the problem you were encountering? 18:53:07 The problem's that you want to end up with a program to print 'ello, World!' after printing the H 18:53:31 but that you can't design the program to do that until you know what the H code is like, as it'll have to have a specific structure 18:53:52 and you can't design the H code until you know what code you're aiming for... 18:54:36 wait, most Dupdog programs don't care if they're duplicated, as long as they end up with the right length 18:57:18 that is correct- perhaps design each character's code segment to reset the code size to a multiple of some predictable value? 18:57:31 how do you do output 18:57:31 it adds more padding, but then you can build pieces independently 18:57:34 that's it, ~!~!~!~ resets the code size to a multiple of 128 18:57:46 lament: output's done when Mfit encounters an unrecognized character 18:57:57 it outputs a character depending on the length of the program 18:58:01 lament: the esolang page is here: http://www.esolangs.org/wiki/Dupdog 18:58:19 oh, okay 18:59:26 looks interesting 18:59:36 we chose to interpret the spec as saying that we take the program length modulo 128/256 to determine the printed char, so all we care about is that modulus 18:59:57 thus, you can have a program of any size and still be capable of output 19:01:02 it's in the Implemented category 19:01:24 is there a ref. implementation? 19:01:31 I wrote an implementation just now; however, the category was there before I wrote it. 19:01:55 Of course, we'll need a new optimizing implementation to have any chance of fitting Hello, World! into memory the way I plan to write it 19:02:56 and if our interpretation of the spec leads to the first "useful" program, I imagine it will become canonical for exactly that reason 19:03:27 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)). 19:04:49 -!- nazgjunk has joined. 19:04:49 damn, my latest idea doesn't work either; ~!~!~!~ resets the code size to something that isn't a multiple of 128 because those characters are disappearing all the time 19:05:17 damn 19:05:31 it does have a fixed value modulo 128, though 19:06:02 well, any reset value works as long as it's the same modulo 128 every time 19:06:29 If we only want to print characters with odd ASCII codes, we can just write a really long sequence of ??...?? NOPS and change appropriate characters to output characters 19:07:36 something similar can be done with even ASCII codes 19:08:15 Actually... the best way to think about a half-finished Dupdog program is as a sequence of commands at the start, commands at the end, and a /length/ for the whole thing 19:08:22 then it might be possible to do it outside-in 19:08:43 the specification is pretty bad 19:09:06 it's not clear whether the current command is counted as part of the source 19:09:15 lament: a few things are vague, but it's understandable. The talk page helps 19:09:26 no for duplicate/reverse, yes for length measurement, as far as I can tell 19:13:12 lament: we're pretty sure the "computational class" description is incorrect, although we're not certain it's turing-complete 19:13:46 we haven't really proven anything yet with regards to arbitrary branching (or an analogue), and data storage is a bitch 19:25:22 (was he on crack when he came up with this?) 19:25:39 quite possibly 19:26:00 If I remember correctly, they were messing around with the bots. 19:26:06 Someone did something like this: 19:26:08 I would be fascinated to know the meaning of "mfit" and "shanty" 19:26:31 !daemon dog bf >,[>,]<[.<] 19:26:59 !daemon dup bf >,[>,]<[<]>[.>]<[<]>[.>] 19:27:05 !dog Hello, world! 19:27:17 !eof dog 19:27:19 ah- that makes sense 19:27:33 'cept my coding hasn't worked 19:27:34 !ps d 19:27:36 still doesn't explain the names completely 19:27:41 1 ais523: daemon ul bf 19:27:41 2 ais523: daemon deadfish funge93 19:27:41 3 ais523: daemon dog bf 19:27:43 4 ais523: daemon dup bf 19:27:45 5 ais523: ps 19:27:48 !kill 3 19:27:49 Process 3 killed. 19:27:50 !kill 4 19:27:53 Process 4 killed. 19:28:03 EgoBot is 10=newline, isn't it? 19:28:26 so after the source code is duplicated, for the next instruction the length of source code is always EVEN? 19:28:36 lament: yes 19:28:39 yeah 19:28:42 okay. 19:29:02 it might be worthwhile to skim the logs from earlier today 19:29:13 !daemon dog bf +[->,----------[>,-----------]<[+++++++++++.[-]<]+] 19:29:21 !dog Hello, world! 19:29:42 !kill 3 19:29:43 Process 3 killed. 19:29:50 !daemon dog bf +[->,----------[>,-----------]<[+++++++++++.[-]<]++++++++++.[-]+] 19:29:55 !dog Hello, world! 19:30:12 Now what have I done wrong? 19:30:26 !kill 3 19:30:29 Process 3 killed. 19:31:16 bsmntbombdood: bsmnt_bot didn't come back online after last time I tried to give it a BF program 19:31:25 (and it wasn't even an infinite loop) 19:38:57 !daemon dog befunge 0>~# :# 5# 5# +# -# _> .# _,$ 19:38:59 Huh? 19:39:06 !help 19:39:09 help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon 19:39:12 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl 19:39:19 !daemon dog funge93 0>~# :# 5# 5# +# -# _> .# _,$ 19:39:20 all i can see so far is that dupdog really likes printing the fourth character. 19:39:35 !dog Hello, world! 19:39:49 !undaemon dog 19:39:51 10 100 114 119 44 108 101 0 19:39:53 Process 3 killed. 19:40:06 o_O 19:40:20 !daemon dog funge93 0>~# :# 5# 5# +# -# _> ,# _,$ 19:40:32 !dog Hello, world! 19:40:41 !dog Try another line 19:40:43 drw,le 19:41:00 !dog WTF? 19:41:04 nlrhoayT 19:41:20 !undaemon dog 19:41:21 FW 19:41:23 Process 3 killed. 19:41:48 !daemon dog funge93 0>~# :# 5# 5# +# -# _$> :# ,# _,$55+, 19:41:54 !dog Hello, world! 19:41:57 !dlrow ,olleH 19:42:49 !dog .won gnikrow eb ot smees tI 19:42:51 It seems to be working now. 19:43:01 haha 19:43:17 One-line Befunge has a logic very like REVERSE. 19:44:13 except that in Befunge, loops always return true to the left, and in REVERSE it depends on the direction you're going in. 19:47:49 stupid mfit 19:49:10 lament: you said it 19:49:35 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)). 19:50:00 -!- nazgjunk has joined. 19:50:05 it seems like just using mfit to do duplications and relying on shanty to make up most of your code logic is a more predictable way to code 19:50:31 but mfit's replacement command is pretty necessary... 19:50:46 then we'll need a new interpreter that can handle the colossally large progam that will result 19:51:06 yeah 19:51:14 Maybe one that stores the program compressed? (It's going to consist of lots of repeated stuff.) 19:51:28 like RLE? 19:52:06 not exactly, because we need to store near-repetitions and repetitions of groups of more than one character 19:52:20 ah 19:52:21 It would probably also need a way to store nested repetitions 19:52:38 some kind of "duplication stack"? 19:53:03 You could store it as a stack of pointers into the original program and into itself 19:59:52 -!- ais523 has quit ("Sorry I couldn't get that Dupdog Hello, World! to work"). 20:00:04 cya... 20:29:07 -!- sebbu2 has joined. 20:35:35 http://i15.photobucket.com/albums/a379/GregorRichards/lcarssshot.png 20:40:31 nice desktop theme, GregorR 20:41:01 ^^ 20:41:06 It's awesome for a tablet PC :) 20:41:12 sweet 20:41:21 I am in envy of your tabletPC 20:41:38 The new tablet PC I'm getting in a week or so allows you to use your finger for input instead of just the pen. 20:41:52 I've wanted one for quite a while, but I keep hoping that apple will make one 20:41:54 And even though LCARS isn't real, it's definitely very finger-clickable ;) 20:44:06 this may be the next best thing, though: http://axiotron.com/ 20:44:36 ... no keyboard? 20:44:57 nah 20:45:30 but OSX has built in keyboard emulation and pretty spiffy handwriting recognition, so no huge biggie 20:46:05 I wouldn't give up the keyboard ... programming with handwriting recognition and/or onscreen keyboard == basically impossible. 20:46:10 I probably wouldn't use one of these for writing school papers or coding anyway- I'd be too busy doodling 20:46:17 Ah :P 20:46:26 See, I have a tablet PC as my general-purpose laptop. 20:46:33 So I can't sacrifice the keyboard. 20:46:33 typing is what my laptop is for 20:46:38 heh 20:47:14 well, I'll bet when Apple finally gets off their asses and makes a proper tablet they'll have a good solution to the problem 20:47:21 for now, I'll lust after the modbook 20:47:51 -!- sebbu has quit (Success). 20:47:58 Yeah ... like a rotating screen :P 20:49:11 I'm not a huge fan of the iPhone... mainly because I don't like cellphones and I dislike phone bills even more. If it had been designed as more of a PDA, I'd probably already have one 20:49:58 -!- jix__ has joined. 20:49:59 fortunately, the iPod seems to be slowly aiming in that direction, so I may see my dream device in a couple of years 20:51:21 Heh 20:52:44 if Apple just released an iPod SDK to take advantage of what the "games" feature opened up, we wouldn't need things like Rockbox or iPodLinux, and a lot of people would be happy 20:53:16 I can't really say "everybody's happy", because bleeding-heart open-sourcers and the linux crowd are rarely if ever happy. 21:02:05 -!- jix__ has quit ("This computer has gone to sleep"). 21:03:34 I hate Apple because of their interaction with the F/OSS community, not because they write proprietary software. 21:04:27 Their interaction with the F/OSS community has been incredibly dishonest and immoral, carefully crafted to make naive people think they're a F/OSS-supporting company. 21:05:00 At least Microsoft doesn't /pretend/ to support F/OSS. 21:06:00 it has a lot to do with the underlying differences between the BSD license and the GPL 21:06:38 -!- jix__ has joined. 21:07:24 No, it doesn't. Everything GPL that they use, they do /precisely/ what they're legally required to do, no more. BSD software they mix with proprietary software to create non-F/OSS software. The original chunk of BSD-licensed code they use, they do usually continue to distribute, but they have no qualms with making it worthless in isolation. 21:08:11 Mind you, I'm not saying they've done anything /illegal/, as they haven't. Just unethical. 21:08:24 A.K.A. good business >_> 21:10:57 -!- jix__ has quit (Client Quit). 21:13:11 -!- jix__ has joined. 21:20:10 i'm beginning to suspect a 'hello world' might be impossible 21:22:32 -!- sebbu2 has quit ("reboot"). 21:25:04 o.O 21:25:39 i have no proof though... 21:26:27 -!- Sgeo has joined. 21:26:56 RodgerTheGreat: you there? 21:27:05 yeah 21:27:09 RodgerTheGreat: http://www.esolangs.org/w/index.php?title=Dupdog&diff=6607&oldid=6606 21:27:21 at some point he put an implementation in 21:28:16 note how he apparently wraps by 257 21:28:31 that might be just a typo of course 21:29:04 if it's not a typo, it changes everything :D 21:29:07 odd 21:29:18 man, that is fucked up 21:29:21 probably a typo, though 21:29:33 no need to raise our hopes too high 21:30:27 well, it *could* be intentional- this is #Esoteric, after all 21:30:27 -!- UpTheDownstair has joined. 21:30:45 fortunately, it doesn't break our general solution to the problem, just the details of how it works 21:31:06 as far as i'm concerned, it would make things a lot easier 21:31:47 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 21:32:14 -!- UpTheDownstair has changed nick to nazgjunk. 21:32:27 lament: how so? 21:32:41 intuition :) 21:32:54 aside from confirming the theory that we do in fact wrap... 21:33:55 -!- sebbu has joined. 21:42:51 -!- oerjan has joined. 21:45:09 okay 21:45:18 i have written hello world for the case where we wrap on 257 21:45:59 it's 2386 characters long. 21:46:31 the case where we wrap on 256 is much much harder. 21:46:42 i still think it's just a typo 21:47:26 need to ask cakeprophet... 21:47:59 wait, woah 21:48:08 it seriously makes that much of a difference? 21:48:52 absolutely 21:49:07 the problem with 256 is that it's an even number 21:49:11 ah 21:49:18 I think I see what you mean 21:49:38 you end up needing to do less "nop" things to shave off an instructions 21:49:56 suppose we want to print an 'even' char 21:49:59 could you pastebin what you've come up with? 21:50:04 like 'H' = 72 21:50:26 if we wrap on 256, that means the program that prints this char has to be of even length 21:50:34 if we wrap on 257, the program could be either even or odd 21:52:35 gotcha- it does make a difference 21:53:05 well, if the hello world works and it's the first program coded in the language, doesn't that instantly make it canon? 21:53:28 well, 257 is a strange thing to wrap on, and he did remove that implementation from the wiki 21:54:11 i'm not sure pastebin likes being sent stuff to 21:54:22 oh, .ca 21:54:31 or use nonlogic.org/dump 21:54:48 21:55:27 http://pastebin.ca/397942 21:56:22 It's practically trivial. In particular, the source is never doubled. 21:56:38 hunh 21:57:02 -!- nazgjunk has quit ("Leaving"). 21:57:17 can you try it in the other interpreter? 21:57:24 in case mine's buggy 21:57:36 sweet jesus I do not understand that... wait, are you using a series of NOPs to gradually decrease the program value, and using a C to dump out each character? 21:57:50 yes :) 21:58:24 I believe the proper response to that lies here: http://www.myconfinedspace.com/wp-content/uploads/2007/03/omgwtfbbq-39352.jpg 22:00:59 hold on a sec 22:01:55 lemme see if I can find ais523's source... 22:03:47 got it. Now I need to find where he specified wrapping... 22:04:23 I haven't read all the logs yet, but it occurs to me that there should be a way to compress the program with all that duplication in it, so you could worry less about space. 22:04:31 yes 22:04:43 we discussed the possibility of doing that 22:04:58 although, lament's solution doesn't depend on duplication at all 22:05:36 augh. good lord perl is impenetrable 22:06:07 http://pastebin.ca/raw/397577 <- I'm having difficulty figuring out what part of this to modify for mod 257 wrapping... 22:06:33 prettified: 22:06:34 http://pastebin.ca/397959 22:06:42 That's not perl, that's thutu2perl 22:06:59 oerjan: ok, that explains why it's unreadable 22:07:14 RodgerTheGreat: i'm guessing you need to change those '128' to '257'? 22:07:19 lament: haha 22:07:50 lament: that's what I was thinking, but there seemed to be more than I was expecting- I'll just give it a shot and see what happens. 22:08:00 heh 22:08:37 might be an idea to use the original thutu source. 22:08:43 he didn't publish it. 22:09:10 RodgerTheGreat: use the prettified version, it's way more informative :) 22:09:38 * RodgerTheGreat strips newlines... 22:10:10 i would presume that everything from the original thutu is within that large while loop. 22:13:46 on the other hand the original thutu may not be much better, the part before the and's is probably the same and the part after just boilerplate for each thutu primitive command 22:15:03 which means we could probably reverse the compilation rather easily. 22:15:43 well, I'm not sure if it doesn't work or I'm just using the interpreter properly. :/ 22:15:54 *improperly 22:19:31 oh well 22:21:28 now we need to figure out how to create 99bob 22:22:25 which is currently looking fairly impossible without bruteforcing 22:22:26 i still think it's wrong to wrap on 257 22:22:32 probably 22:22:44 his interpreter is full of typos and doesn't even run 22:22:48 he never tested it 22:22:52 yeah 22:23:06 that's probably why it was removed 22:23:21 and that's probably why nobody else has tried to code in this language 22:24:02 -!- bsmnt_bot has joined. 22:24:25 oerjan: it has save_callbacks 22:24:28 where's seven inch bread when you need him? 22:25:14 writing a dupdog interpreter directly in perl should be trivial. 22:25:56 k, /bot/scripts is writable 22:26:02 hopefully 22:26:10 yoohoo 22:27:21 ~exec self.foo = open("/bot/scripts/foo", "rw") 22:27:22 IOError: [Errno 2] No such file or directory: '/bot/scripts/foo' 22:27:35 ~exec self.foo = open("/bot/scripts/foo", "w") 22:27:51 ~exec self.foo.write("fooo\n") 22:27:59 ~exec self.foo.close() 22:51:00 -!- nazgjunk has joined. 22:54:04 -!- nazgjunk has quit (Client Quit). 23:09:47 hmph 23:10:00 is BB(n+1) > BB(n)? 23:10:07 BB is busy beaver 23:11:30 yes 23:12:21 simply add a new initial state to the initial state of the maximal one for n, which transitions to the original immediately. Thus BB(n+1) >= BB(n)+1. 23:13:25 oh 23:14:38 in fact i think that can be improved to something approximately like BB(n+1) >>= BB(n)*(1+1/n) 23:15:07 namely, let s be the _most_ used state for the maximal one for BB(n). 23:15:58 Now make a new one which always pass through s and the new state in sequence. Thus at least 1/n of the steps will be doubled. 23:16:30 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 23:17:31 but intuition tells that it of course grows much more rapidly than that from some point. 23:18:30 because in fact there can be no computable function f such that f(BB(n)) >= BB(n+1) 23:18:45 yeah 23:21:23 although proving that f(BB(n)) < BB(n+1) for _every_ n greater than some limit might require some cleverness. 23:23:27 f(x) = BB(invBB(x)+1) 23:24:17 f(BB(n)) < BB(n+k) for some k and all n seems like it could be done, if k is big enough to embed computation of f in 23:25:26 What does "grows faster than" mean? 23:26:17 "computable function f such that f(BB(n)) >= BB(n+1)" 23:26:18 ? 23:27:51 it means at a minimum that lim (x -> inf) f(x)/BB(x) = 0 23:28:06 i.e. f(x) = o(BB(x)) 23:28:53 * Sgeo doesn't understand "f(x) = o(BB(x)) 23:28:59 * Sgeo understands the limit 23:29:12 well it's a notation for the limit 23:29:46 -!- ShadowHntr has joined. 23:31:27 WHERES CAKEPROPHET 23:31:41 Can there exist a computable function f(x) such that f(x) > BB(x) when x is less than an arbitrary integer a? 23:31:43 HE WAS EATEN BY THE COOKIE MONSTER 23:31:56 of course. 23:32:20 just let f(y) = 1 + max (x <= a) BB(x) 23:32:39 as you see it can even be constant 23:33:22 umm... BB(x) isn't computable.. am I missing something? 23:33:37 mind you the constant exists in theory but we cannot actually find it for any but a finite number of a's 23:34:19 well the point is that every constant is computable in isolation. 23:34:47 it's only functions that can be theoretically uncomputable 23:35:53 so it is sort of cheating 23:37:40 the constant "exists", but its decimal sequence cannot be proven to satisfy its definition (or for that matter, written down within the space of our universe). 23:38:14 "our universe"? So it's a finite amount of space? 23:38:22 the busy beaver function is able to solve the halting problem too 23:38:31 the visible universe, then. 23:38:58 No, I meant the space the number would require 23:38:58 S(n) < Sigma(3n+6) 23:39:26 BB(x) is finite for finite x 23:39:37 well it is a finite number, so it has a finite, but totally impractical and perhaps physically non-existing size. 23:40:59 but even writing down the _size_ would be impossible in practice. That's what being greater than any computable functions you can think of does. 23:42:01 oh nice, the busy beaver function is able to prove theorems experimentally 23:42:03 i.e. the number is greater than Ackermann(1000,1000), which is itself an entirely computable number but still of massively "unphysical" size. 23:42:23 By telling you how many test cases you need 23:43:07 *computable number = computable function of reasonable numbers 23:44:33 grr I don't have haskell installed I think 23:44:40 * Sgeo is reading about factorials 23:44:44 and the gamma function 23:45:10 yeah, factorials are a cool Haskell feature. 23:45:20 apropos haskell, the Data.Sequence module seems eminently suited for optimizing Dupdog, since it can concatenate in logarithmic time 23:45:23 what's a factorial? 23:45:37 and what's dupdog? 23:46:01 the language everyone was discussing during most of today 23:46:48 in fact you arrived just about when the discussion ended (just as i left just before it began) 23:46:56 oh 23:47:01 dupdog: it's hip and trendy! 23:47:12 and seveninchbread was probably stoned when he made it 23:59:33 -!- tgwizard has quit (Remote closed the connection). 2007-03-17: 00:40:50 i fast-forwarded the whole conversation as pointless... then at some point found out dupdog does a modulo when outputting making it sensible... but decided not to read again :P 00:44:31 Argh. Wait a minute. The Data.Sequence module cannot be used anyhow. 00:45:02 It stores lengths as Ints, making it useless for massively nested duplications. 00:45:48 Darn. 00:46:25 * oerjan throws his beginning Dupdog implementation in the garbage bin. 00:46:50 ok, maybe not literally. 00:47:55 oerjan: that's pretty dumb :( 01:05:51 -!- sebbu has quit ("@+"). 01:18:23 Hm, a BSD style license means you can bundle freely, doesn't it? 01:18:51 given the discussion previous today 01:18:59 *ly 01:19:08 -!- RodgerTheGreat has quit. 01:20:35 -!- RodgerTheGreat has joined. 01:28:16 I found a downloadable Data.FingerTree module in which you can select any Monoid as your size measure. 01:28:30 (Including the trivial ()) 01:54:52 FingerTree! 01:55:54 yes? 01:56:07 nothing 01:56:43 (it's the underlying representation for Data.Sequence) 02:10:20 -!- RodgerTheGreat has quit. 02:12:16 -!- RodgerTheGreat has joined. 03:06:48 -!- oerjan has quit ("leaving"). 03:35:56 -!- oerjan has joined. 04:17:42 -!- ShadowHntr has quit ("End of line."). 04:26:05 -!- GreaseMonkey has joined. 04:28:46 -!- oerjan has quit ("leaving"). 04:31:39 -!- GreaseMonkey has quit ("eek, pc going awol, back in 5"). 04:42:50 -!- RodgerTheGreat has quit. 04:44:00 -!- RodgerTheGreat has joined. 05:13:44 /// is interesting, but I'm not sure you could really implement arbitrary looping: http://www.esolangs.org/wiki/Slashes 05:13:57 wait... I'm wrong 05:14:52 I think you could take a sequence like Code*, and then have "Code" contain instructions to rewrite "*" as "Code*" 05:15:12 it'd be interesting to see if this language is turing complete... 05:15:41 has anyone ever seen any TC proofs for string rewriting languages? 05:22:01 hm 05:23:14 if looping could be implemented, it might be possible to implement some kind of cyclic tag system from within a string rewriting language, proving computational usability... this could be interesting 05:26:59 well, goodnight everyone- I might play with /// tomorrow... 05:27:12 -!- RodgerTheGreat has quit. 06:30:16 -!- Sgeo has quit ("Leaving"). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:22:28 -!- Sukoshi has joined. 09:23:07 -!- GreaseMonkey has joined. 09:53:55 -!- Sukoshi has quit ("待っているね、永遠の彼女。素晴しい楽園が二人だけの為に見付かった。忍ばせない。彼女). 10:05:13 -!- sebbu has joined. 10:24:16 -!- nazgjunk has joined. 10:26:35 gonna get off now, cya 10:28:54 -!- GreaseMonkey has quit ("Think you're a sore loser? Go to ED. They'll make you look angelic."). 10:50:43 RodgerTheGreat, Thue has a brainfuck interpreter in it, so cyclic tag should be trivial... 10:50:49 ...and he's not here 10:51:07 might read the logs though /megone-> 11:48:53 -!- jix__ has joined. 12:12:10 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 12:12:31 -!- nazgjunk has joined. 12:27:01 -!- jix__ has changed nick to jix. 12:46:04 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 12:46:37 -!- nazgjunk has joined. 14:24:21 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 14:45:11 -!- oerjan has joined. 15:18:44 -!- nazgjunk has joined. 16:26:17 -!- tgwizard has joined. 16:54:27 huhu 16:54:32 hyhuh 17:03:51 huh? huh? 17:35:54 -!- oerjan has quit ("leaving"). 17:45:04 -!- nazgjunk has quit ("Leaving"). 18:15:36 hehe reading english grammar, "in oldish english the infinitive can be used as the subject of a sentence" and thinking why did they demote functions to second-class citizens :P 18:16:00 (the grammar was finnish, it didn't say 'oldish') 18:20:45 -!- nazgjunk has joined. 18:28:38 -!- graue has joined. 18:32:57 huhu 18:36:57 jah 19:04:20 -!- nazgjunk has quit ("Leaving"). 19:50:50 -!- SevenInchBread has joined. 19:51:03 so..... 19:51:37 anyone know the Windows equivalent of.... 19:51:38 wget -q --read-timeout=0.0 --waitretry=5 --tries=400 --background http://foo.bar/ 19:55:55 wget runs on windows 20:13:45 graue, is it on by default? I can use it from the command prompt 20:18:20 -!- nazgjunk has joined. 20:18:33 ...the domain name system annoys me. 20:19:29 all the systems suck 20:21:27 DNS is (other than ISPism) the only part of the Internet I can think of that is mandatorially business-ized. 20:22:41 trues, is that what annouy you? 20:22:50 because i dislike the system itself 20:23:56 it's kind of confusing... but I really don't like the commercial aspect. 20:25:09 *annoy 20:25:25 *annoys 20:25:33 all the rest of the Internet proves that "you get what you pay for" is false... except this weird internet real-estate system that gives commercial entities more sway than the average socket connection. 20:26:56 mm i don't really care for the practical aspect so... i'll talk about my new language lopoda 20:26:58 it's great 20:27:04 that is all 20:29:44 the entire basis for registrars is that it ensures you can trust the nameservers you're dealing with... but in all my experience anything on the internet involving money is usually more manipulative than free services. 20:38:27 GRAND ESOLANGERS 20:38:31 I PRESENT TO YOU... A PROPOSAL. 20:39:37 SevenInchBread: okay 20:39:44 shut up with your proposals and explain dupdog 20:39:57 Let's create an experimental computer network... so we can fiddle around with ways to make the existing Internet better, without the worrys of standardization and convention 20:40:12 dupdog is completely useless.... I can't even figure out how to do Hello, World! with it. 20:40:19 no, no 20:40:24 what i need explained is 20:40:45 you had at one point put up a buggy not-working implementation on the wiki page 20:40:51 AN ESOTERIC INTERNET. ... 20:41:04 in this implementation, when mfit output characters, it wrapped on 257 20:41:10 yeah, that one didn't work... not sure why... haven't bothered delving further. 20:41:14 is that a typo, or you did you actually mean it to wrap on 257 20:41:26 because if it does wrap on 257, i have written hello world for it 20:41:35 ...should be 256 20:41:37 and if it doesn't, it might be impossible to do so 20:41:46 ... 20:41:47 oh 20:41:52 well... -ahems- alright it does 20:41:55 haha 20:42:17 257 is the "termination character" :P 20:42:25 http://pastebin.ca/397959 20:43:05 if it wraps on 257 there is no 257 20:43:17 256 is the termination character 20:43:21 ....do the words have any signifigance? 20:43:52 er... the letters 20:44:00 C you mean? 20:44:04 SevenInchBread: no 20:44:14 well, they spell hello world 20:44:20 SevenInchBread didn't you make this language? :D 20:44:31 >.> what? 20:44:40 the problem with esoteric internet is that we'd have to use the existing infrastructure which only understands IP 20:44:52 so we could only build stuff on top of IP, which is lame 20:45:04 right right... but it would be easy to make a high-level emulation of a low-level internet. 20:45:07 unless we physically connect our computers ourselves 20:45:21 not really, since it could be easily converted to non-ip dependant 20:45:33 for proof-of-concept more than any practical advantage. 20:45:47 so something like Tor? 20:46:25 not necessarily... i was thinking more or less as a sandbox for making protocols and systems and testing how awesome they are. 20:46:53 the problem with a huge international network is that a status quo of accepted standards emerges - even if they're not necessarily the best way to do it. 20:48:13 something tells me that, this being #esoteric, you perhaps don't have the optimal efficiency in mind 20:48:17 :D 20:48:50 ...yeah, don't care how fast it is... unless the point of the experiment is to test faster methods of communication. 20:49:17 well, all we need for this is protocol specification 20:49:43 vpn? 20:49:54 A protocol without an implementation is jsut a.... protocol. 20:50:11 :) 20:50:32 well, a protocol specification + at least one person actually bothering to write an implementation. 20:51:44 communication requires multiple parties that understand the protoocl.... thus, to test out new protocols, you need a network of talking heads that speak the same language. 20:52:05 plus.... AN ESOTERIC INTERNET 20:52:12 ...this is too good to pass up. 20:52:32 \:/\:/:\ 20:52:55 we can incorporate it into esoOS... when it's first released 20 years from now. 20:53:01 .... :D 20:54:06 i have an idea! When you send a packet, you send it to a random address. If the computer at that address is not the recipient, it must pass the packet along to another random address - but only after adding some more stuff to the packet. 20:54:16 .....okay maybe that's not such a brilliant idea :D 20:54:51 ... :) 20:55:28 I like IP myself... not sure what you could do differently with it. 20:56:25 maybe "esoteric wide web" is more a descriptive term for what I had in mind. 20:56:35 we could just use gopher 20:56:45 it's already extensively implemented, and it's still completely esoteric. 20:56:55 lament: brilliant! 20:57:14 if you _really_ want to experiment with other low-level protocols, get into amateur radio. 20:57:17 they do that. 20:58:57 a protocol for defining protocols would be sweet... even though it would basically entail creating an entire programming language and sending it across lines... and it would be the biggest security hazard ever. 21:00:25 you know what's pretty cool? termcast 21:00:31 lets other people look at your terminal 21:00:53 hmmm 21:00:55 screen 21:02:04 one of the common issues I see with networking is that.... while it's easy to talk to the other end, it's hard to create a persistent conversation. 21:02:44 ...you mean like TCP? 21:03:30 it's all so bad one starts crying the first time they learn about it 21:03:55 I'm not sure what I mean exactly.... I'm kinda thinking specifically of HTTP and other stateless protocols... and dynamic IP addresses. But I don't think getting rid of a dynamic address is such a hot idea. 21:04:48 it can be done, certainly 21:05:14 but that takes away a lot of the awesomeness of the Internet. 21:05:43 ...mainly, anonymity. It's why the internet is a cloud and not a city. 21:07:33 not really. 21:07:39 your IP is static to a fairly large extent. 21:08:09 that is, your registrar has some subnet or whatever 21:08:15 err 21:08:18 i mean provider 21:08:28 and you get an IP from their, and they have IPs assigned to them 21:08:35 and there's a central authority that manages it all 21:08:45 ...straying back to programming languages for a second, I've got an idea for a language read concurrently by multiple interpreters with different meanings for different symbols... and a bitwise brainfuck with some basic ideas of quantum entanglement. 21:08:56 i could get to your ip by just randomly checking all the computers on your subnet 21:09:19 wouldn't take not really... just all possible bit combinations. 21:09:24 *take long 21:09:27 no 21:09:40 wait 21:09:46 i remember something like that 21:10:04 (brainfuck) 21:10:25 quantum entanglement with bitwise brainfuck basically makes an event-programming-type thingy. 21:10:47 changing one bit changes another. 21:11:01 haven't i implemented that? 21:11:03 yes, i have 21:11:13 i even put it in egobot 21:11:38 !qb . 21:11:40 Huh? 21:11:50 no idea what the syntax would be 21:12:25 ohh 21:12:28 http://esolangs.org/wiki/Quantum_brainfuck 21:12:52 ...so..... what's the idea behind the dupdog program? Found any properties that can be exploited? 21:13:17 yes, the fact that 257 is an odd number :) 21:13:43 the program is almost trivial, it's a sequence of NOPs and prints 21:13:46 there's no duplication 21:15:09 just a print every time the program size is the right size mod 257? and one char is cut off every cycle? 21:15:17 yes. 21:15:30 the only trick is that only mfit can print. 21:15:34 hmm, can you explain why 256 would've been bad? 21:15:35 hmm 21:15:47 so if the program is of even size, and mfit prints 21:16:00 then every time mfit runs, the program will still be of even size 21:16:11 since one character is removed each step, and new ones are never added 21:16:28 so if we wrap on an even number (256), mfit can never print a half of all characters 21:16:44 what's mfit do? or is it faster to read it? 21:17:02 faster to read it! 21:17:03 mfit uses different semantics. 21:17:18 link it if you have it open 21:17:29 i never remember the page :D 21:17:39 oh, found! 21:17:40 dupdog was a strange attempt at playing with the semtantic interpretation of syntax. 21:19:22 If I knew it has any sort of properties to it for creating abstractions, I'd add macro substitution into it... 21:19:32 but I don't think it does. 21:20:45 y65\ 21:21:36 dupdog isn't very conceptually awesome... so I think my next attempt in that area will involving concurrently running interpreters on the same characters. 21:22:22 * SevenInchBread adds laments Hello, World! to the page. 21:23:17 58 of them! 21:25:57 ....suuure 21:26:08 everybody makes one, SevenInchBread tells us what the interpreters can or can't do 21:26:14 and everyone willing makes one interpreter 21:26:22 oooooh 21:26:27 and each is assigned the same char simultaneously 21:26:33 making up the language 21:26:36 SOUNDS LIKE A JOB FOR THE EDUCATED BLIND ESOLANG COMMITEE. 21:26:40 thing 21:26:42 :D 21:26:43 * SevenInchBread forgot the name of it 21:29:10 i used to be pretty confident about my english... i seem to know nothing about articles though now that i've read the grammar... 21:29:32 lament, what's your name on the wiki? 21:29:40 mm...lament? 21:29:47 Nikita Ayzikovsky 21:30:02 oklopol, that sounds like a corny joke... but I haven't figured out the punch line. 21:30:25 mm what? 21:30:28 :O 21:31:15 i'm reading english grammar, there is no logic on the 'the' article when it comes to buildings, countries etc 21:31:43 and i thought i'd've known them all... just like that... but most come a suprise for me 21:31:49 ? 21:32:52 -!- nazgjunk has quit ("Leaving"). 21:32:56 ? ? 21:33:42 what's the rule? 21:33:53 the rule? 21:33:57 yeah. 21:34:02 sad how brainfuck is so popular 21:34:09 6 pages of rules for when to use 'the' 21:34:29 * SevenInchBread is monolingual.... much to his dismay. 21:34:30 bsmntbombdood you've complained that before 21:34:44 and still i think it deserves it :) 21:37:36 the unfortunate side-effect of living in a entirely-English region is not having any urgent need to learn multiple language. 21:37:38 s 21:38:27 oklopol: the articles are very very tricky 21:38:34 basically the only way to learn them is through use 21:39:03 I don't understand P'' 21:40:12 yeah, i know, what discouraged me was i did so many errors... and i use this language more than my native one :\ 21:40:38 ....I know them, but I don't know the rules... using an article incorrectly simply doesn't "sound right". 21:41:47 that's what fluency is all about 21:43:34 anyone have access to jstor.org? 21:43:59 well, i knew most of them... maybe my skillzorz will automatically improve with time 21:44:04 or portal.acm.org? 21:44:06 bsmntbombdood what don't you understand? 21:44:11 seems simple 21:44:19 * SevenInchBread wants to learn like... Polish or something. 21:44:25 I just need like, an active soure of practice. 21:44:29 oklopol: r ≡ λR, r′ ≡ rn, L ≡ r′λ, R 21:44:35 :o 21:44:42 SevenInchBread: heh, my dad speaks polish 21:44:44 lot's of squares 21:45:47 r R, 21:47:29 if you mean you don't understand how to code in that, i can't help you 21:47:38 because i can't figure it out 21:47:54 i guess that's what you meant 22:00:40 hmmm... studying the morphology of a language sounds like a good way to make the language more intuitive... since it's based on the patterns recognized by fluent speakers. 22:00:53 SevenInchBread, i'm pretty sure you couldn't tell all of the cases of 'the' no matter how native you were 22:01:12 yeah I doubt it too. :P 22:01:13 if the book is correct, british bridges aren't 'the' while american bridges are 22:01:34 so... you'd have some memory :D 22:01:40 hmmm... that's odd. :) 22:01:58 like... a Golden Gate Bridge? 22:02:13 the of course 22:02:21 oh 22:02:24 without article? 22:02:32 that'd be Golden Gate Bridge 22:02:41 i was fishing under Golden Gate Bridge 22:02:47 in British-english 22:02:49 yes 22:02:52 read above 22:03:25 aaaah. 22:03:30 but golden gate is american 22:03:33 so it's 'the' 22:03:33 hmm, "london bridge" but "the golden gate bridge"? 22:03:51 I thought you meant British English used a instead of the. :P 22:04:00 yeah, that would be strange. 22:04:49 graue, you can correct me if the book is wrong 22:05:00 but yes, that's what is says 22:05:51 except for british rivers that carry the name of the river they're built across... they're 'the' 22:05:53 :) 22:06:01 *british bridges 22:06:16 -!- oerjan has joined. 22:07:20 hmmm... being native to United Statesian English... hearing "Let's go fishing for large octupii below FooBar Bridge" does sound paticularly Britishy to me, if not some kind of non-American accent. :P 22:07:46 er.. dialect. 22:07:50 or whatever the term is 22:09:13 hmmmm.... yeah, English articles are definetely weird. 22:09:26 octupii? 22:09:40 octopi? 22:10:23 yeah. 22:11:10 sorry, i get some serious hard-on when correcting americans' english 22:11:11 :) 22:11:35 ...I'm terrible with grammar 22:12:23 half-decent with spelling. 22:12:55 i'm terrible with decency. 22:13:01 and half-grammatical with spelling. 22:14:19 "london bridge" and "the golden gate bridge" sound right to me 22:14:43 English is.... a deformed fusion of Germanic and Romanic rules. 22:14:55 all natural languages suck 22:15:00 * SevenInchBread likes them. 22:15:29 infidel 22:15:43 I'd kill myself if natural languages took on the consistent design of artifical ones. 22:15:51 i don't think english has much romance grammar 22:16:14 well, vocabulary anyway 22:16:42 Most of the romance influence is in some word etymologies 22:17:59 well, a million per cent of english vocabulary is directly from french 22:18:08 i don't see why dupdog with even wrapping cannot work, you can use duplication to turn odd into even and both Mfit and Shanty can do that. 22:18:14 and i believe that's romance 22:21:53 French is Germanic. Scanning over German I see tons of German words that resemble English words... more so than French words. 22:22:40 French influence is a recent addition to English. 22:22:45 ...historially. 22:22:51 -historically 22:22:52 -!- RodgerTheGreat has joined. 22:23:11 i thought it was romance... what is romance? :P 22:23:18 so English has Germanic grammar with tons of Romance vocabulary, French has Romance grammar with tons of Germanic vocabulary 22:24:10 how's going, guys? 22:24:57 Romance is Spanish, italian, Romania, Portugese, and.... 22:25:22 oooh wait 22:25:28 French is Romanic. 22:27:07 it decended from Latin.... but I can see much more Germanic influences in French than I can the other Romance languages. 22:28:19 oh... Catalan is also a Romance language... 22:28:41 France was rather thoroughly invaded by the Germanic Franks... 22:29:26 Germany and France used to be one kingdom for a while 22:29:53 * SevenInchBread nod. 22:30:30 an Reto-Romansch, Sardinian, probably Corsican 22:30:32 *and 22:30:52 and Occitan 22:31:18 so yeah... Romance grammar with tons of Germanic vocabulary. 22:31:22 (probably mispled some) 22:33:19 what spurred a discussion regarding the origin of human languages? 22:33:31 SevenInchBread please don't confuse me like that 22:33:44 ....well... we are the esoteric language channel. ;) 22:33:45 my systems get all mized upz 22:33:47 :P 22:34:08 >.> 22:34:14 * SevenInchBread confused oklopol. 22:34:19 er... confuses 22:34:29 lessee it started with oklopol complaining how he didn't know all the rules for using "the" 22:34:42 -!- nazgjunk has joined. 22:35:47 oh, and if we ever try doing the "EsoInternet" thing, the equivalent of IPs or routing codes or whatever should be a TC scripting language 22:36:55 .....???? 22:37:50 like, rather than knowing a remote computer's IP, you obtain a program that can traverse the network and find that specific computer 22:38:12 and you need a different tiny program, as simple or complex as the coder makes it, to find each machine 22:38:53 and doing tunneling or something TOR-like would just imply a different way of designing these traversal programs 22:39:17 heyyy that sounds fun :D 22:39:23 yeah 22:39:25 :D 22:39:46 heeh 22:40:16 and it could be non-trivial to determine wether two programs pointed to the same machine if the scripts can do queries of some kind from each machine they meet along the way. :D 22:40:43 * SevenInchBread has always wanted to create his own natural language. 22:40:56 me too 22:40:57 sounds pretty cool... 22:41:00 been making one just now 22:41:12 actually, it's a group of languages 22:41:19 I'd probably be more interested in making a written language than a spoken one 22:41:39 yes 22:41:48 i never even considered soken 22:41:50 *spoken 22:41:56 Kind of both... for me. I like unusual pronounciation rules and sounds. 22:42:03 but, I'd start on paper first. 22:42:11 since when designing, it never occured to me langs can be spoken :) 22:42:16 -!- sebbu2 has joined. 22:43:14 haha 22:43:27 I don't like the organizedness of artifical languages though... I'd try to make it purposefully natural by incomporating bits and pieces of other languages. 22:43:30 i was explaining my system to a friend today... he assumed i meant a spoken language 22:43:47 and i was like what the fuck are you saying when he said something about pronunciation 22:44:33 I'd like to design a language that focussed on brevity and syntactic conciseness. Most human languages contain a great deal of redundant information. 22:44:52 like, create an entire alternate history with multiple languages... tracking historical events to create natural-like influences and evolution. 22:45:11 like four or five symbols representing a complex idea 22:45:27 the system has some interesting ideas, there are no nouns in the core language for one, you have noun packs, which you can master and they can then be used in the conversation if both speakers know them 22:45:36 * SevenInchBread likes the ambiguities... lots of words, with lots of ways to combine them 22:45:58 and very simple glyphs that can be combined and superimposed, with intuitive modifications of expressed meaning 22:46:22 yep... sounds like a lot of artifical languages... very modular and consistent. 22:46:33 oklopol: like, a human language with libraries? 22:47:27 well, that was just one thing... i'm not gonna share the whole spesification on an irc chan, and it's not done yet 22:47:44 another interesting idea would be a written language with self-repairing syntax. Design it so that you can be missing half of the characters and reconstruct the whole meaning, without being explicitly redundant 22:47:52 the core language, common, is pretty much just a way to express logic 22:48:03 ah 22:48:22 so, you have the "control structure", and you're still working on the "command set" 22:48:43 yeah, that is already done implicitly in normal langs, the redundancy you mentioned 22:48:46 but not well 22:48:50 because it's so random 22:49:02 hmm... to a certain extent you can do that informally with English and other natural languages. 22:49:16 sometimes you can understand a sentece with only the first few words of it, sometimes a sentence has multiple semantics 22:49:33 yeah 22:49:37 i just have guidelines i'm going to follow 22:49:39 ....I like that. 22:49:56 there aren't any sequences of characters in the language 22:50:15 you can use whatever you want, probably words of your own previous native tongue 22:50:32 because the presentation of nouns is not important 22:50:37 Humor, is highly linguistical. Good prose is often concisely ambiguous 22:50:41 if you designed an entire language in a consistent manner, you could achieve a very nice human/machine readable manner for expressing ideas. Most programming languages are unsuitable because programming languages are designed for expressing algorithms 22:50:56 they are just referenced by indeices in the noun pack 22:51:04 lol 22:51:38 ...humor would be nigh impossible if every word and morphological structure had one clear meaning. 22:51:41 you convert them to whatever char sequences you want 22:52:05 SevenInchBread, i've never enjoyed wordplays that much 22:52:15 * SevenInchBread loves it. 22:54:09 RodgerTheGreat, most comp langs are for algorithms, native langs are more like regexes, they define a structure, not a sequence or a clear action 22:54:14 that was bad said 22:54:22 but still understood 22:54:26 good 22:54:30 :D 22:54:32 :) 22:54:52 ...well... 22:55:26 hmm 22:55:38 i have so much to say i think i won't say anything anymore 22:56:02 i hate it when i think about something and find a conversation about it later 22:56:11 and all the info bangs into my head 22:56:21 anyway 22:56:24 this one language 22:56:26 just about this 22:56:43 not always.... I'd relate natural languages more to... communication protocols. regexes express a definite pattern, algorithms define a definite sequence of actions... communication protocols send desired characteristics to a receiver, and leave the task of interpretation up to it. 22:57:18 did anyone read my comments last night about /// ? 22:57:38 a language that says everything you want it to say and is interpreted exactly as it was intended is... boring. 22:57:46 * SevenInchBread shakes his head. 22:58:28 SevenInchBread sending stuff has nothing to do with natural language 22:58:31 I was wondering if this could be TC: http://www.esolangs.org/wiki/Slashes 22:58:39 you can just as well send code to a remote server 22:58:45 oklopol, communication has everything to do with natural language. 22:58:51 has anyone seen any TC proofs for string rewriting languages? 22:59:00 RodgerTheGreat thue has bf 22:59:19 SevenInchBread no. 22:59:39 how is it not? 22:59:59 you could as well say pressing buttons is somehow an intrinsic part of programming languages 23:00:02 looping is a bit of a trick, but I think I can see a way to pull it off 23:00:02 (intrinsic?) 23:00:43 and you can say bugs are the same as misinterpreting natural language 23:00:46 what other purpose does a spoken word have than to be heard and understood.... what other purpose does a book have than to be read? 23:00:49 but it's not a critical part 23:01:30 i know exactly what the critical part (difference between natural and comp langs) so... my mind is made 23:01:52 what other purpose does code have than to be tokenized and run? 23:01:55 I'm trying to think of a nontrivial task that cannot be bruteforced and requires no input, which would demonstrate the plausibility of /// being TC. Think a cyclic tag system would be possible? 23:03:59 -!- nazgjunk has quit ("gah sleep"). 23:04:33 hmm 23:04:35 you could try the Ackermann function 23:04:43 it seems you can't duplicate anything 23:04:52 something is taken off every run, right? 23:04:59 and nothing can be added? 23:05:09 i might've gotten it wrong : ) 23:05:13 basically, all you can do are replacements 23:05:41 if you use a two-step copy you could duplicate your main code over and over, simulating a loop 23:05:53 can /// emulate thue? 23:05:59 dunno 23:06:06 wouldn't be hard. 23:06:25 if it's based off of string replacement... it's hard not to emulate thue. 23:06:40 yeah, it's similar to thue except no input 23:06:51 although, there's a language extension for that 23:07:02 it's self-modifying unlike Thue 23:07:18 hmm 23:07:25 can you show me an eternal loop? 23:07:30 erm 23:08:00 the main idea is that you have code like Code* 23:08:11 then you replace * with % 23:08:21 and then you replace % with "Code*" 23:08:34 or something vaguely like that 23:08:41 Copying / and \ needs some cleverness. 23:08:48 is it possible? 23:08:52 ....should probably be TC then... sounds like Thue - except for some minor rules about order of replacement 23:08:53 if you do the copy all in one step, you get an infinite loop 23:09:00 since / cannot be escaped 23:09:06 it can. 23:09:07 (in the interpreter, not the program) 23:09:12 -!- sebbu has quit (Connection timed out). 23:09:13 ah 23:09:13 \ escapes 23:09:25 "and again escaped characters are treated as themselves." 23:09:38 so, I think looping is possible... 23:09:39 why can't he just say \ escapes, use common sence :) 23:10:00 yeah, the wiki entry is a little hard to read 23:10:51 It's very similar to Thue... just a bit hard to read the specification. 23:11:07 but... does it loop forever? 23:11:15 I think so 23:11:51 you could halt in my example above by doing something to get rid of the % before you copy your main body again 23:12:02 conditionals are a bit tricky 23:12:16 but every replacement is a conditional in a sense 23:12:46 aaah... I get it. 23:13:19 It's basically self-modifying Thue. Where the replacement rules are embedded in the input. 23:13:41 so, a simple way of explaining the language is, /A/B/ replaces each instance of A with B, and \ works as an escape character 23:14:21 and everything encountered outside /// is just printed 23:15:46 yep... it looks like the writer tried to algorithmically reproduce what the interpreter does in English. 23:16:06 haha 23:16:09 indeed 23:16:20 Converting an algorithm into English results in a terrible explaination. 23:16:24 '/a/ \/a\/b\/ \/a\/b\/ /a' 23:16:24 -> '/a/b/ /a/b/' 23:16:24 -> 'b/b/' 23:16:24 -> '' 23:16:28 did i get this right? 23:16:51 well, the interpreter given was written after the language description (by me) 23:17:10 ah 23:18:18 oklopol: I think if you had "b/b/" it would just print out that string- it represents less than a complete /// expression, so that's where it halts 23:18:25 oh 23:18:27 indeed 23:18:59 efefefefe /a/b/ c would evaluate /a/b/ though? 23:19:18 yeah 23:19:30 it just wouldn't effectively do anything 23:19:54 you forget that the substitution is repeated until the result no longer contains the source string. 23:20:23 hm 23:20:45 so you cannot replace something immediately with something that contains it 23:21:02 oh 23:21:03 yeah 23:21:08 -!- nazgjunk has joined. 23:21:22 that's why I suggest the "two-step" process for duplicating source code 23:21:26 so /a/a/a is an infinite loop? 23:21:38 Yep. 23:21:39 yeah 23:21:42 so... you can do an infinite loop... but so far there's no way discovered to anything else while looping infinitely. :) 23:22:08 no, you could easily do other things in the main code body 23:22:15 indeed those hardly count 23:22:38 escaping would probably get really bad though... 23:23:42 as i said, copying / and \ will take some cleverness. 23:25:54 probably coding them as something else, and substituting them back. but while preserving the "something else" somehow to repeat the process. 23:26:11 sounds like a quine 23:26:15 hm. sounds like a good approach 23:26:41 well, the 99bob example has some things in common with most quine designs 23:26:45 well you would expect to need a quine-like approach. 23:27:15 99bob is currently the least trivial code example we have on our hands 23:27:53 perhaps we should work with the input extension and see if we can create a cat program as a proof-of concept of looping 23:29:45 a simpler idea: try to write a program that actually outputs something repeatedly. 23:30:10 hm 23:30:57 i would expect the greatest problem is to get any nontrivial loop at all, so that should be enough for proof of concept. 23:31:47 if we get a loop working, what else would we need for a TC proof? 23:32:41 conditionals probably 23:32:49 RodgerTheGreat, I like the double-step thing to... the main problem with effectively using substitution to representTC is that it's too eager. 23:34:05 yeah- the main trick is limiting the scope of substitutions, which I think would depend on leaving a bunch of "flags" and things to create less aggressive replacements 23:34:19 i am suddenly wondering whether there is any way at all to remove a string from the program and then bring it back, repeatedly 23:34:40 as long as you keep a copy of it encoded somehow... 23:35:04 like replace / with # and \ with ? and store everything as a literal perhaps 23:35:19 but how can you avoid destroying all # and ? on the first iteration? 23:35:24 hm 23:35:40 escapes? 23:35:43 yeah- 23:35:53 escape every single character of the encoded copy 23:36:11 then replaces won't touch it, but you can replicate it at will 23:36:18 hm... 23:37:06 hmmm... 23:37:09 -!- nazgjunk has quit ("tonight, we sleep in HELL!"). 23:37:10 the ultimate solution,. 23:37:11 I believe. 23:37:34 rests in the smiley face and the bogley eyes. 23:37:40 lol 23:37:50 :) is / and O.o and \ 23:37:58 er... is 23:38:15 or some sufficiently unused string of text.. 23:38:17 I look forward to the elucidation of this idea 23:38:34 hmmm.... 23:38:39 what are we trying to do again? 23:38:50 * RodgerTheGreat dies laughing 23:38:52 P -> aP somehow, for example 23:40:49 if a could contain escapes too, we would have achieved even more 23:41:30 but without would be a start 23:42:59 /the ness of /\\/ /|:o|/\// 23:43:42 with a sufficiently confounded syntax... you need no ponder escape characters.... at least practically. 23:43:57 hmph 23:44:01 god i'm dim 23:44:09 what would '/ aa / \/a\a\/a\a\/a / aaaaa' become? 23:44:15 would it loop forever? 23:44:33 are the spaces included? 23:44:37 no 23:44:42 forgot to say that 23:46:25 the substitution is aa -> /aa/aa/a so it will loop uselessly 23:46:53 mmyeah 23:48:45 hmmmmmmmm 23:57:54 -!- jix__ has joined. 23:58:37 -!- sebbu2 has quit ("@+"). 23:58:53 meh, i'm so bad at making quines... 2007-03-18: 00:00:26 -!- Sgeo has joined. 00:01:01 quines are a bit tricky 00:01:22 hmm 00:01:27 /\//\\\// 00:01:27 / -> \/ 00:01:30 could this be used? 00:01:49 no 00:01:54 nah... it would convert everything and you need just some 00:02:02 i don't know if that's why though :)= 00:02:27 plus, a \ in the "source" has to be escaped as \\, I think 00:02:28 it would loop. You can _never_ have the result contained in the source, even after unescaping 00:04:44 /a\/\a/\\\// 00:04:44 a/ -> a\/ 00:04:48 :D 00:04:54 but 00:05:04 won't help... i'd need an interpreter... 00:05:08 secondly, you cannot essentially have any source be a single character. 00:05:14 yeah 00:05:21 the interpreter is on the wiki page 00:05:25 perl? 00:05:27 isn't it 00:05:28 yep 00:05:31 hmm 00:05:41 i should do some dl'ing then 00:05:46 oh 00:05:53 i just considered adding a debugging option 00:05:59 i'd have to do that anyway :P 00:06:06 if it was an executalbe 00:06:07 *bl 00:06:09 -!- jix has quit (Read error: 110 (Connection timed out)). 00:06:12 sounds like a good addition 00:17:47 /sufficiently nonsential enough for much mass production/\/ (but mother(\/\\/pancreas polly\\/\\\/\\/\/ //pancreas polly/\/sufficiently nonsential enough for much mass production\/\ 00:18:04 .... 00:18:29 I have no clue what that will turn out as... but it seems like a step in the right direction... despite being utterly mind bending. 00:18:42 :D 00:19:49 ...attempting to interpret myself just leaves me going in circles.... but I'm hoping it's asynchronous circles. :) 00:21:57 you loos snefmmp right away there 00:22:01 *lose 00:22:19 ....snefmmp? 00:22:44 i won't write it 00:22:49 sufficiently nonsential enough for much mass production 00:22:58 ok the implementation now prints the program at each step if you give it the -d option. 00:23:39 well.... that was indended to be an "inbetween" encoding... I was hoping it would turn out as (mother being the equivalent of / 00:24:11 mm hmm 00:24:16 i don't know what that means 00:24:16 :\ 00:24:32 there is no use in an inbetween encoding 00:24:48 basically I'm thinking you need a replacement that replaces something with a replacement followed by / 00:25:35 ...or something equally convuleted. 00:26:44 in order to be able to recreate an inbetween coding you need something like storing it somewhere as two separate subpieces 00:30:20 well... my head is about to explode. 00:32:45 hm, this debugging was hard to separate from the output. Adding some brackets. 00:36:38 I SHALL TURN THIS INTO AN EASY TO THINK ABOUT GAME. 00:36:57 :) 00:37:43 i am sure that trusty old Mfit and Shanty will be happy to use different characters for / and \ :) 00:38:37 hmmmm.... good idea. 00:39:05 that's essentially what we need.... multiple interpreters. 00:39:39 btw someone asked whether the names Mfit and Shanty mean anything? 00:40:25 their names are fairly important to their function. 00:40:47 ...cleverly disguised iin nonsense words. 00:42:44 too cleverly :< 00:46:24 shanty isn't a nonsense word. 00:46:33 and miff it is neither 00:46:54 that doesn't help though 00:48:19 there are several things called Mfit apparently. 00:48:32 all things are help 00:48:42 and all things are true 00:59:00 i don't think i'm capable of making anything with ///, it took me 15 minutes to figure out how to make a quine in python :D 00:59:03 or 10 00:59:55 -!- tgwizard has quit (Remote closed the connection). 01:07:41 s='s=%r;print s%%s';print s%s 01:11:25 yeah, i win 01:11:49 win what? 01:12:46 a kitschy plastic cup with inscription? 01:14:45 well, i didn't remember you can do ';', neither that you can do "%s" 01:14:48 :) 01:15:35 ? 01:15:48 i think you mean %r 01:16:03 there is no actual %s format in that code 01:16:33 print(lambda a:a+chr(34)+a+chr(34)+chr(41))("print(lambda a:a+chr(34)+a+chr(34)+chr(41))(") 01:16:58 that is not the original though, took me < 2 min this time 01:17:00 much better 01:17:15 i shall learn it by heart 01:17:20 so i can make it in 20 sec 01:18:05 hehe wrote an interpreter for slashes... and python jammed, it's gone :D 01:18:31 how does python crashing make you lose your source? 01:18:40 why do they make all interpreters such that infinite loops kill them? 01:18:54 because i don't save it anywhere 01:18:57 ^C? 01:19:05 too late for that 01:19:30 don't you have perl? 01:19:35 nope 01:19:45 i think i just installed it though 01:19:57 activeperl build 5.8.8 01:20:03 i wonder what that means 01:20:33 this is a triumph of speech recognition: http://www.youtube.com/watch?v=KyLqUf4cdwc&mode=related&search= 01:21:00 and this is why speech recognition is a really flawed idea for coding 01:21:33 hmmm... 01:21:33 It would be terrible to code with speech recognition 01:21:48 I'm writting up the info for my collaboration thing.... 01:21:53 it might work with some languages, maybe forth, which has few delimiters 01:22:40 basically you just need to submit an interpreter in any language... the main process will feed the tokens one by one to the interpreters... 01:22:40 Perl is pretty much the worst language he could be using here in terms of character use 01:23:24 the only problem is that.... I don't have languages like C easily accessible on my computer (I still haven't figured out how to properly run C in Windows) 01:23:39 god that's good :o 01:23:49 i didn't know speech recognition is that good yet 01:24:42 obviously speech recognition *UI* isn't that good yet 01:25:11 -!- graue has quit ("Leaving"). 01:26:04 he just doesn't know how to use it 01:26:33 if 'press capital I' means 'I', i think it's pretty obvious 'capital I' does not work 01:26:57 -!- GreaseMonkey has joined. 01:28:23 i'd prefer it to understand certain syllables as 0,1,2,3...E,F and do the rest myself 01:29:04 man, that's terrible 01:29:26 are there better one's? 01:29:33 i've never seen anything like that :| 01:30:05 *ones 01:32:53 OSX has pretty nifty recognition, but it isn't designed to control the whole interface 01:33:08 It is cool how it can control everything 01:33:11 I wouldn't be surprised if 10.5 has better integration 01:33:24 But controlling everything would be infuriating 01:33:31 depends 01:33:47 http://www.youtube.com/watch?v=S9T3RXFDtfo&NR 01:33:48 Pressing keys is faster than verbalizing 01:34:08 M-k n, or "go to next window" 01:34:08 not really :\ 01:37:20 how long does it take to say "go to active window", compared to M-k k? 01:37:51 why do you have to day "go to active window"? 01:38:00 why can't you say "em kay kay" 01:38:20 or "em 'n' kay kay" 01:38:34 or just 'zwaf' 01:38:46 or just use my keyboard 01:39:10 well, i talk faster than type 01:39:13 so i wouldn't know 01:39:22 I've heard of speech recognition software causing speech problems 01:39:34 from changing your voice so it can recognize it 01:40:00 well, i don't see why you'd want to use english 01:40:38 you could easily make it recognize certaing murmurs 01:40:54 a phone did that 5 years ago i recall 01:41:35 of course, coding would be idiotic if you have hand to do it with 01:42:01 but i think it's be a faster way to navigate around the os 01:42:20 i don't like moving 01:43:07 (that last part had no relation to the former ones) 01:45:18 i'm starting to think it'd not be faster, but i still think it's cooler 01:51:35 star trek 01:54:00 speech recognition in star trek is pretty crazy, because LCARS (the OS, kinda) is supposed to use speech commands to assemble application software on the fly to perform the requested commands 01:54:36 essentially, LCARS has no programs- they're all created from LCARS's modular libraries at runtime 01:54:45 well, at that point i don't think there'd really be any need for humans on the ship... 01:54:49 fun 01:54:57 yeah... 01:55:25 LCARS would require a ludicrous amount of AI under the hood to work in speech mode 01:55:32 the GUI is pretty spiffy, though 01:55:40 or keykeyboard mode... 01:56:26 the idea of an interface consisting almost entirely of contextual menus and controls seems pretty workable 01:58:23 eh, if a GUI makes something easier, then I'm all for it. 01:59:00 .. 01:59:07 * SevenInchBread just saw what you guys were talking about. 01:59:11 in most cases, the minimalist GUIs we see on TV would never work, but LCARS is actually very well thought out 02:00:34 it's only real failing is multitasking, but multitasking isn't always what it's cracked up to be 02:01:02 plus, on star trek there's always plenty of screens allocated for the various tasks being done 02:01:52 methinks someone's a little too into it 02:02:00 * RodgerTheGreat shrugs 02:03:02 I just like how the operating system and the interface are deeply integrated, rather than the latter being an afterthought built seperately 02:07:58 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 02:09:05 http://esoteric.voxelperfect.net/wiki/Kallisti 02:11:29 u r teh clevar!!!!!!!!!!! 02:11:41 oh god, it begins again 02:12:47 hm 02:13:34 i don't get it 02:13:40 I dunno, it seems somehow less elegant than dupdog 02:13:42 :D 02:15:24 too bad. 02:15:30 Messiness == fun 02:18:06 SevenInchBread i don't get that :D 02:18:47 I couldn't think of a way to allow an arbitrary number of interpreters globally alter the source code... 02:18:59 so it can't be totally self-modifying. 02:19:07 they get the code, they return the code 02:19:12 it's that easy 02:19:29 plus, they always get a number indicating which token they are running 02:19:41 and they return another number indicating the next token 02:19:55 right right... but the problem with that is that there's no -order- in which they return them... unless I wait for each of them to output something before sending the token to another one. 02:20:54 well, make stdout the main program running the code 02:21:16 normal output is done like '\info \info' to the main program, 02:21:26 sorry 02:21:26 and if I let the interpreters affect the control flow of every other interpreter... there'd be countless race conditions. 02:21:47 output: ... endvalues: string number 02:21:48 each of the interpreters should be independent. 02:21:50 hmm 02:22:15 well, i meant you'd just assign one at the time 02:22:26 i can't figure out another way to do it with just stdio 02:23:14 it's boring if there's no self-modification 02:23:21 then there's really no language 02:24:04 ...I guess the interpreters could be simply be put in order... 02:24:29 well, that's what i implicitly suggested 02:25:29 not sure how the parser would no where to start over during a self-modification though... 02:26:55 hmm 02:27:10 i'm pretty sure that's not a sentence :| 02:27:16 but... hmm... 02:27:23 know 02:27:24 ah 02:27:36 SevenInchBread i already solver that 02:27:56 they get code and code pointer, they return new code and new code pointer 02:28:03 oh yeah, you're afraid of pointers 02:28:07 just an index :) 02:28:21 *solved goddamnit 02:28:47 not every language has pointers. 02:28:58 mmmm huh? 02:29:05 ...include Python (which I'll probably be implementing it in... or maybe Ruby) 02:29:09 *including 02:29:27 you mean they wouldn't understand a pointer given them? 02:29:28 oh. 02:29:37 you mean... just a number? 02:29:54 that's a little suspicious... but it would work. 02:29:56 1. that's stupid, pointer can't be anything more than a number, because everything is a number 2. yes 02:30:31 pointer is just a way to imply a number means an index, nothing more 02:30:44 just that it usually means an index to all the memory 02:30:54 i don't see why you go all berzerk every time you see it :) 02:31:32 anyways, i have some serious sleeping to do --------------------------> 02:31:45 cya 02:43:10 ...-shrug- just misunderstanding of terminology. 02:43:22 I have nothing against pointers... they're very useful. 02:56:00 ....I could take a dupdog-ian approach that doesn't use tokens. 02:56:48 just sheer... modification of the source code. 02:59:27 sounds awesome 02:59:50 the more this new language becomes like dupdog, the more fun I predict programming with it shall become 03:00:05 I still think Dupdog *might* be tc 03:01:56 -!- ShadowHntr has joined. 03:02:33 hi, ShadowHntr 03:02:47 evening 03:02:50 i just managed to run the Hello World program in the Haskell interpreter 03:03:35 (Dupdog interpreter) 03:03:53 kickass 03:04:01 still works? 03:04:18 Yeah, after I fixed a bug in the interpreter 03:04:53 cool 03:05:53 heh, funny that dupdog remained unnoticed for a couple of months... :) 03:08:21 and then a crack team of bored IRCers found it and started using it 03:14:40 Kallisti 5.0 - http://esoteric.voxelperfect.net/wiki/E%9AE1EBEBE%AFF%83F%84%E1F%83 03:14:48 ... 03:15:08 http://esoteric.voxelperfect.net/wiki/Kallisti 03:21:31 ...dupdog is like, the laziest invention ever. 03:27:25 does this fall under the juristiction of ABCDEF? 03:29:42 augh! 03:29:53 it's explicitly stated to never abbreviate that! 03:30:04 ... 03:30:27 The Adjudicated Blind Collaborative Design Esoteric Factory is an important name that deserves more than an acronym. 03:36:02 >.> 03:36:07 !help 03:36:10 help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon 03:36:12 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl 03:45:43 RodgerTheGreat, where is the Haskell interpreter for dupdog at? 03:45:57 i haven't put it up yet 03:46:02 ah. 03:46:23 need to add a few features such as a main function :) 03:46:25 * SevenInchBread lost interest in dupdog... so never got around to fully fixing his implementation. 03:46:41 there is another implementation in thutu however. 03:46:48 heh, so it's functional now? 03:46:58 any implementation will do. 03:47:39 for some reason ais523 (i think it was him) didn't put a link on the wiki 03:48:08 it was on the channel recently, a pastebin link i think 03:50:50 ...I think Stue is the only one of my languages that had an implementation before it had a specification... still haven't written it up yet. 03:52:32 http://pastebin.ca/raw/397577 but you need to change 128 to 257, the current Hello World assumes mod 257 wrapping 03:54:24 eh... I wanted the source. :P 03:55:37 for some reason ais523 hasn't told us the original thutu. 03:57:54 I think she's a terrorist. 04:01:09 you think she's a she? 04:02:32 anyhow i hope my interpreter will deal better with lots of duplications. Shared functional data structure. 04:02:51 although with Haskell you never know about space. 04:03:32 nah, wasn't sure. I kind of prefer she over he when the gender is unknown. 04:06:08 I guess the wrap mod is implementation defined... 04:06:24 i intend to make it an option 04:06:52 in the meantime I should write the specification for Stue... and maybe fix up the interpreter a bit. 04:07:01 indeed i intend to have two: one used for output and one for internal/debugging use 04:07:18 and work on some of my unfinished languages... I've got one based on gravity sources. 04:07:52 not using any complicated math though... just simple spatial relations. 04:24:36 -!- wooby has joined. 04:32:09 -!- Arrogant has joined. 04:41:51 -!- GregorR_ has joined. 04:43:05 -!- GregorR_ has quit (Remote closed the connection). 04:59:03 deadbeefbabe 04:59:03 -!- wooby has quit (Read error: 104 (Connection reset by peer)). 04:59:16 -!- wooby has joined. 05:02:37 -!- GreaseMonkey has quit (Remote closed the connection). 05:27:15 -!- ShadowHntr has quit ("End of line."). 05:29:50 -!- GreaseMonkey has joined. 05:31:32 ok, my bot works, now it's onto coding the lang 05:33:07 my bot is better~ 05:33:25 :P 05:36:34 i'm still making my own 05:36:38 so yeah 05:36:52 sadly my HD died and took GreaseBot with it 05:36:59 but there's new hope 05:37:35 my new bot is named "RoboMonkey" and has exactly the same functionality as it did in the very early stages of GreaseBot.... raw commands, and that's it. 05:37:55 now i'm working on the BrainSecks interpreter 05:37:58 ~raw TICKLE GreaseMonkey 05:38:54 don't you mean ~ctcp TICKLE GreaseMonkey ? 05:38:58 no 05:39:10 hmm, tickle isn't a command 05:39:16 I know 05:40:07 my new bot has several things of the old bot: the "PASS/NICK/USER" join method, and raw commands are like: 05:40:22 $PRIVMSG #esoteric i challenge you bsmnt_bot 05:57:02 -!- SevenInchBread has quit (Read error: 145 (Connection timed out)). 06:00:15 -!- Arrogant has quit ("Leaving"). 06:39:20 Woooooooh, I have the best LCARS theme evar ^^ 06:39:30 falsehood 06:39:39 >_> 06:39:43 :( 06:40:11 hi gregor, i'm working on an esolang for my bot 06:40:37 GregorR ==> _|_ 06:41:05 bsmnt: i suggest you get your bot to do that 06:41:12 do what 06:41:31 print stull like that 06:41:34 *stuff 06:41:35 like: 06:41:41 ~fu nickname 06:41:50 ...or not. 06:43:13 ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~fu (.+)", lambda x,y: bot.raw("PRIVMSG %s :fuck you, %s" % (y.group(1), y.group(2)))) 06:43:19 ~fu GreaseMonkey 06:43:19 fuck you, GreaseMonkey 06:44:11 lmao 06:44:25 that was absurdly involved 06:44:29 hmm, i cud replicate that in brainsecks code.... 06:44:35 and yet so funny... 06:44:47 >_^ 06:44:49 ^_< 06:46:03 x00>"PRIVMSG "%1[>,]" :"%0[>,]x0A>x00<[<]>[.>] 06:46:07 wait 06:46:14 x00>"PRIVMSG "%1[>,]" :fuck you, "%0[>,]x0A>x00<[<]>[.>] 06:46:23 yays, my code is shorter 06:46:31 what lang is your bot made in, bsmnt? 06:46:37 python 06:46:47 k 06:47:00 im making my second one in C, like the first 06:49:40 ...i love for() loops :D 06:49:54 ...why? 06:50:47 FOR...NEXT loops are the best loops of all time 06:50:54 * RodgerTheGreat high-fives GreaseMonkey 06:54:24 for loops are just glorified while loops 06:55:20 pfft 06:55:32 while loops are just underfeatured FOR...NEXT loops 06:55:57 nnnnnnnnnnnnn 07:00:31 for(i=0;array[i];i++){ /* stuff goes here */ } 07:00:36 beat that 07:01:10 i=0;while(array[i]){/*stuff goes here*/ i++} 07:01:47 in all fairness to whitespace: 07:01:47 for(i=0;array[i];i++){/*stuff goes here*/} 07:01:54 i=0;while(array[i]){/*stuff goes here*/i++;} 07:01:59 =X 07:02:00 =D 07:02:30 just because `while' is more letters than `for' 07:02:39 oh, and there's always: for(p=str;*p;p++){/* stuff goes here */} 07:03:06 i find for(i;c;p){s;} tidier 07:03:21 than i;while(c){s;p;} 07:03:32 yeah 07:07:16 hey, wanna ~fu another bot? 07:07:35 on #uncyclopedia , there's a SupyBot under the nick "AutoRTB" 07:07:42 ~fu AutoRTB 07:07:42 fuck you, AutoRTB 07:07:55 ~fu 1 2 07:07:55 fuck you, 1 2 07:08:05 k, so it doesn't split it into parameters 07:19:06 afk food 07:35:33 back 07:39:37 mmm, food 07:40:14 'night, guys 07:40:19 I need to hit the hay 07:40:49 -!- RodgerTheGreat has quit. 07:50:54 -!- anonfunc has joined. 07:51:20 -!- oerjan has quit ("ZZNNNNRRRKKKK"). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:25:03 -!- ShadowHntr has joined. 09:27:00 -!- ShadowHntr has quit (Client Quit). 09:31:42 twos = iterate (2^) 0 09:31:49 discuss 09:51:31 -!- Sukoshi has joined. 09:53:42 -!- RoboMonkey has joined. 09:53:50 hi 09:54:05 brainsecks interpreter works :D 09:54:15 sadly only one command can be used though 09:54:39 that program: x00>"PRIVMSG "%2[>,]>x01%0[>,]x0A>x00<[<]" :"[<]>[.>] 09:55:07 ?x00>"PRIVMSG "%1[>,]>x01>"ACTION ">x01%0[>,]x01>x0A>x00<[<]" :"[<]>[.>] 09:55:08 twos = iterate (2^) 0 09:55:11 \dances 09:55:12 ACTION dances 09:55:51 ?x00>"PRIVMSG "%1[>,]>x01>x01>"ACTION "%0[>,]x01>x0A>x00<[<]" :"[<]>[.>] 09:55:52 \dances 09:55:53 * RoboMonkey dances 09:55:59 ooh yeah :D 09:56:13 sadly she only responds to me 09:57:12 Someone please find number of digits of 2^(2^(2^(2^(2^(2^(2^0)))))) 09:57:21 Not I. 09:58:38 65536^2 09:58:59 4294967296 09:59:03 10 digits 09:59:19 \10 digits 09:59:20 10 digits 09:59:22 um.. 09:59:26 no 09:59:34 \:( 09:59:35 :( 09:59:39 (2^(2^(2^(2^(2^(2^0))))) has over 19 thousand digits 09:59:50 i doubt it 10:00:01 19729 digits 10:00:22 2^(2^(2^(2^(2^(2^(2^0)))))) -> 2^(2^(2^(2^(2^(2^1))))) -> 2^(2^(2^(2^(2^2)))) 10:00:43 2^(2^(2^(2^(2^2)))) -> 2^(2^(2^(2^4))) -> 2^(2^(2^16)) 10:00:59 In haskell 10:01:00 2^(2^(2^16)) -> 2^(2^256) -> ... oh. 10:01:01 length $ show $ (2^(2^(2^(2^(2^(2^0)))))) 10:01:01 19729 10:01:15 Put another 2^ in front 10:01:19 how many digits? 10:01:19 wait 10:01:22 Someone can do math *clap clap clap*. 10:01:27 2^(2^65536) 10:02:42 $QUIT 10:02:43 -!- RoboMonkey has quit. 10:02:52 actually i gotta sleep 10:03:03 gonna sleep now, gnight 10:03:13 g'night GreaseMonkey 10:04:01 ?x00>"PRIVMSG #esoteric :gnight">x0A>x00<[<]>[.>] 10:04:03 \ 10:04:08 oops i'd quit it 10:04:10 -!- GreaseMonkey has quit ("Woot! RoboMonkey works! Woot again!"). 10:04:46 What's a cheap FPGA? 10:05:38 Or a cheap embedded device preferrably with a FORTH on-die, but not neccessarily so. 10:07:25 * Sgeo asks in Yahoo! Answers 10:10:11 Thanks. That's sure to get answers. 10:11:37 I meant about my question 10:11:42 >.> 10:12:20 Thanks, I guess. 10:13:25 -!- nazgjunk has joined. 10:32:38 -!- wooby has quit (Read error: 104 (Connection reset by peer)). 10:35:25 -!- sebbu has joined. 11:03:11 -!- UpTheDownstair has joined. 11:03:43 -!- Sukoshi has quit ("さあ、ね。もう帰るわ!待ってね!"). 11:14:27 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 11:47:48 -!- UpTheDownstair has changed nick to nazgjunk. 11:52:29 -!- jix has joined. 12:04:59 -!- Sgeo has quit ("Leaving"). 13:04:28 -!- UpTheDownstair has joined. 13:05:45 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 13:05:50 -!- UpTheDownstair has changed nick to nazgjunk. 13:06:56 -!- sebbu2 has joined. 13:19:28 ::= 13:25:41 -!- sebbu has quit (Read error: 110 (Connection timed out)). 13:55:01 -!- RodgerTheGreat has joined. 13:55:21 hi guys 13:56:37 hijay 13:57:00 what are you up to this morning, oklopol? 13:58:35 woke up 2 hours ago, had a kebab, been reading about this racist mp wannabe... not that i'm a racist, but i like it when people have strong opinions, we have the elections today, but i don't think i'll bother to vote 13:58:44 that is all 13:58:51 i'd like to make my lang complete today 13:58:53 but 13:59:02 i gotta read for my matriculation exams tomorrow 13:59:07 the english thingie 13:59:15 ...and ya? 13:59:18 :P 13:59:59 I'm probably going to need to do some homework, but for now I'm just surfing 14:00:24 i had this idea about a lang where you have a concurrent for-each 14:00:31 everything is done at the same time 14:00:45 this is an issue when doing cellular automatons etc 14:00:51 you need to do the same thing for all 14:00:55 hm. so a foreach would essentially just thread everything out? 14:01:10 you can have two lists and copy from one to one, swapping all the time 14:01:20 lol- you should call it a noweach instead of a foreach 14:01:31 BUT that requires the whole array to be copied every time 14:01:34 which is slow 14:01:43 so you have to manually optimize in each case 14:01:47 AND 14:02:10 you can't just have the array and move, for example with wireworld, everything like the rules say 14:02:17 because only some parts move 14:02:34 that's very tedious to do, and the thing inherent in cellular automatons fades 14:02:39 the fact you only have one rule 14:02:54 so noweach would make those optimizations automatically 14:03:00 since i think i know how to do it 14:03:29 you just have to know how far the thingies CAN check for other living things, a living thing being one where rules apply 14:03:55 so... i'd optimize memory usage and cut out redundancy automatically for simple automatons like wirewordl 14:03:56 *ld 14:04:11 had this idea when making lopoda, which is kinda a cellular automaton 14:04:22 it's not really one though 14:04:28 hm 14:04:28 well 14:04:32 maybe it is 14:04:42 god i talk a lot 14:04:43 :\ 14:05:18 cellular automatons can be done like that already, for example with mark something's cellebration 14:05:33 it's just it's not really a language, just a set of modifiable rules 14:05:48 I think a noweach would be a genuinely useful feature- something not often seen in esolangs 14:05:57 you know, textboxes for "live while n neighbours" 14:06:07 'course, some of the side effects might be weird... 14:06:16 why is that? 14:07:04 i'm using an iterator that can change current cell, check neighbour cells and leave messages for current cells 14:07:25 *leave messages for neigbour cells 14:08:04 this is not the language i've designed really, it was just something i couldn't get outta my head when reading english 14:08:31 btw does bnf have a parser? 14:08:38 well, since foreach loops are generally just done on a group of objects, operating on each only individually, there probably wouldn't be a lot of difference. If you did something relating adjacent objects in an array or something your results might be counterintuitive from a programming standpoint, because programmers naturally thing iteratively 14:08:41 i've been making one, i don't think i'm the first :\ 14:08:50 I'm not aware of one... 14:09:13 *think iteratively 14:09:24 hmm, i use bnf with simplified regexes... and regexes postfix -> prefix 14:09:30 because it's easier to parse 14:09:45 and math is pre-/infix, why shouldn't regexes be 14:10:07 and i like it when things are counterintuitive 14:10:18 i suppose that's why i'm on this chan 14:10:40 you got my brain going again :< 14:10:53 how can i read the big book of tautologies now? 14:11:06 *maybe black book 14:11:29 heh 14:12:09 'the' had some sick quirks, but most of it i would've known 8 years ago 14:12:26 remember explaining one of the things i read there to a friend on the first grade 14:12:37 but, still it takes me ages to read 14:12:46 because i'm so slow at understanding text 14:13:04 http://www.vjn.fi/212.htm 14:13:08 something i wrote about this 14:14:13 i hope it's in english 14:14:17 forgot already :D 14:14:21 ya 14:15:42 noweach, lopoda, nopol implementation, oklotalk, nestor 14:15:54 i'd have some esoteric month doing those 14:16:03 oklotalk is not that esoteric though 14:16:36 an apl (or just apl if you consider the 'a' is an article in it's own right) thingie 14:16:48 that borrows the best of haskell and lisp 14:16:57 quoting from lisp, actually 14:17:27 i don't know what's from haskell since i can't remember all the things i've already thought through 14:17:39 but... prolly a lot 14:18:20 because i like python... but it doesn't use tail recursion (i think) and it isn't lazy 14:18:27 well 14:18:53 fib=[1 {--n+-n}] would be haskellish 14:19:11 you can specify a list as it's first values and a lambda to calc the rest 14:19:22 the lambda is fed an iterator object 14:19:40 in this case n, because it's the only free var in the lambda, so no need to specify explicitly 14:20:03 - is unary minus, but with an iterator it means "last" 14:20:19 and actually, the lambda should be {!--n+!-n} since we need the values 14:20:39 adding iterators is defined, as everything is always defined (:P) but makes no sence in this case 14:21:06 -!- anonfunc has quit. 14:21:20 in oklotalk everything is a valid program, but since the debugger makes tokenizing, nesting and running explicit in that you can do it as step by step as you like 14:21:25 it shouldn't be a problem 14:21:45 plus, i'm making all optimizations explicit as well of course 14:21:51 cool 14:21:52 and you can suggest optimizations 14:22:00 without need to alter code 14:22:09 you can have code and optimization separate 14:22:30 but, these are of course the more ambitious things i design for all my langs 14:22:48 that i'm able to code in ten years if i'm lucky :) 14:23:12 i'm making apl purely functional for one 14:24:10 you can quote lambdas to add them in a list `+ `{_*_} `{_-1} would make a list of 3 lambdas, or functions, no difference in oklotalk 14:24:25 you know, your ideas for "intelligent books" would be an interesting thing to apply to wiki-based books, or wikis in general 14:24:26 and that'd be pretty mych exactly the same as . in haskell 14:24:38 yeah, i thought about that too 14:24:53 then again, if it's in my head i consider it done 14:25:02 one reason for me not being that productive that often 14:25:03 hi 14:25:05 hi 14:25:39 i.must.go.feck.this.all------------------------------> 14:25:43 hi, SimonRC 14:29:18 * SimonRC reads oklopol's article. 14:30:04 oklopol: Go read Tim Berners-Lee's writings on the "Semantic Web". 14:31:26 i might, if you link it to me 14:32:21 if you read it in 45 secs, by the way, i'm quite impressed :) 14:32:32 now, really, REALLY really ----------------------------------> 14:33:01 really REALLY 09:31am? 14:34:17 I said that a bit late 14:56:12 ",[.,]" -> 14:56:12 {^(inc=`+)|(dec=`-)|(nxt=`>)|(prv=`<)|(out=`.)|(in=`,)|(loop=`[*.`])} 14:56:12 -> {out _[0]} 14:56:12 >>> 14:56:22 rego ------------------------------> 15:18:24 -!- helios24 has quit ("Leaving"). 15:45:37 -!- oerjan has joined. 15:49:00 -!- UpTheDownstair has joined. 15:51:26 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 15:58:28 -!- UpTheDownstair has quit ("Leaving"). 16:32:25 -!- sekhmet_ has joined. 16:32:43 -!- sekhmet has quit (Nick collision from services.). 16:33:00 -!- sekhmet_ has changed nick to sekhmet. 16:47:49 http://www.vjn.fi/beepiano.py 16:48:02 made this at school :PP fun toy 16:50:37 Somehow I didn't have the impression that okokokoko was about music. 16:50:43 oh, sweet- a simple piano 16:51:06 i wasn't specifically, it's about everything 16:51:13 it's a glorified foo 16:51:15 :) 16:51:46 i see. btw does the word "oklopol" mean anything? 16:52:09 it's a make-believe world we've written a few stories about 16:52:20 www.vjn.fi read when you learn finnish :) 16:52:30 when i first saw your name i assumed you were polish :) 16:52:33 *nick 16:52:33 haha 16:52:42 what's the difference between a real word and a make-believe word? 16:52:50 this is the real world 16:52:52 marketing 16:52:57 make-believe is some other one 16:53:01 a word's meaning is simply what you hold behind it 16:53:14 in oklopol, you'd call this one a bake-believe world 16:53:16 though make 16:53:18 not bake 16:54:07 real is just a this pointer 16:54:22 i have a vague recall that "oklo" means window in Czech, so "oklopol" would be a window Pole whatever that is 16:54:31 lol 16:55:00 we must invent a device known as a "window pole" 16:55:27 or create a language with this name 16:55:28 * oerjan recalls the pole vault exercise from the FRC Hellympics 16:59:20 btw if you can tell me a way to give the loudspeaker values directly, please enlighten me 16:59:34 i can only make square with that obviously 16:59:46 plus, you have to specify lenght beforehand 17:00:03 it'd get ugly to make holding mean a longer tone 17:00:34 i know how to access the pc speaker with asm, but that's no good since pc speaker is just square 17:02:13 hehe learning black diamond now :P 17:02:30 screw the exam, i'm playing beepiano! 17:06:56 i suppose the PlaySound function might be what you want 17:08:19 what lang, what usage 17:08:27 what function 17:09:10 the winsound module you already use 17:09:24 hmmm 17:09:28 i've used that 17:09:29 it seems more flexible than Beep 17:09:37 with my brainfuck player for example 17:09:43 but it requires me to create a wav 17:09:55 which is easy but imo idiotic to do real time 17:11:04 but perhaps you could pregenerate one for each frequency and use SND_LOOP 17:12:16 indeed 17:12:34 i first though i'd make real-time tone creating possible in the player 17:12:41 i might start thinking about that then 17:13:33 whoops. there appears to be a stupid restriction. 17:14:25 you cannot use string data except to play a single time synchronously, it seems 17:18:59 quite rofltastic 17:19:51 and using actual WAV files might give too much delay, though I don't know 17:26:20 -!- SevenInchBread has joined. 17:26:47 delay is not a problem 17:26:59 i'd just be too ashamed to use a file like that 17:27:20 GREETINGS COMRADES 17:27:41 i don't see any such restriction mentioned for the underlying function: http://msdn2.microsoft.com/en-us/library/ms712879.aspx 17:27:47 and great, i'm stuck inside the house now, didn't let my drunk father in so he tried to open a special lock we have in the door that prevents opening from the inside 17:27:52 locking me in 17:28:11 fun stuff. 17:28:15 i tried to tell him i just won't let him in and he kept saying 'don't worry i'll get the door open' 17:28:22 :PP 17:28:25 yar! 17:28:49 OH HO 17:29:30 can such a lock be complying with fire regulations? 17:30:24 haha prolly not :D 17:31:19 i have no idea, but it's a 50 euro fee to get someone to open the door and my father went out getting one since he thought there was something wrong with the door :D 17:31:50 so... 50 euros to open a door given the key to that door 17:32:23 you _do_ realize this event does nothing to relax our stereotypes about the Finnish? ;) 17:32:39 :D 17:32:55 well, i think those stereotypes are correct 17:33:18 since most ppl i know are either drunks or absolutists 17:35:05 It seems like you should be able to write it in C. It occurs to me that Python's problem with strings might have something to do with garbage collection. 17:35:23 hmm sound possible 17:35:39 hmmm, what does Python do with strings? 17:35:43 but you could prolly circumvent that by keeping a pointer to the string in the code 17:36:08 smth="teh str"; and then use smth, i don't see how there could be a problem 17:36:14 best logic ever: "I'm not stereotyping, because the stereotypes are true!" 17:36:24 ....I hear that one all the time. 17:36:51 indeed, that's not my logic there though 17:37:10 yes, but then the module would have to do so automatically, and that might cause sound strings never to be freed if not done properly. I guess the Python implementers didn't bother. 17:37:22 yeah, as long as you've got a reference to the string, it shouldn't go away.... unless Python's GC goes wonky or something. 17:37:37 if it is copying things could be strange. 17:38:30 If I remember correctly, Python stores strings in const variables.... at least on the C end of things. 17:38:34 with the string being moved rather than deleted 17:39:59 i don't think const prevents the GC from moving things 17:40:43 it would have to be saved in some FFI unmovable format. There probably is something like that available, but there would be overhead. 17:41:55 hmmm... what are you trying to do? 17:42:07 oklopol is writing a simple piano program 17:42:49 i can write it in c as well 17:43:01 it's just python was the only one i knew sound stuff with 17:43:23 __import__("winsound").Beep(interva,freq) 17:43:24 *l 17:43:30 temptingly easy 17:43:32 oh 17:43:36 wait a min 17:44:09 hmm i have that same beep in c as well, it seems to be in stdio 17:44:14 BUT again it's just square 17:44:52 yeah but PlaySound is a Windows function. 17:45:28 Winmm.lib it says on the page i linked 17:45:28 that doesn't scare me 17:45:36 i know, i've used it as i said 17:45:42 but you said something about strings 17:46:00 i think that is only a problem with Python strings 17:46:14 but... can you play strings? 17:46:22 playsound plays .wavs 17:46:28 SND_MEMORY 17:46:41 well a memory block in .wav format 17:46:44 i presume 17:46:51 ah 17:46:56 i'll try to find the page 17:47:02 acutally 17:47:05 *actually 17:47:10 link if you have it open 17:47:13 i'd never find it 17:47:18 i already did. 17:47:28 oh :o 17:47:39 >i don't see any such restriction mentioned for the underlying function: http://msdn2.microsoft.com/en-us/library/ms712879.aspx 17:47:40 shoops 17:47:42 *hoops 17:47:44 *whoops 17:47:52 indeed 17:47:57 i never saw that line 17:48:03 * oklopol reads well 17:48:33 anyhow i found it just by googling for PlaySound 17:48:45 mm well, maybe i'd have as well then 17:48:50 well well 17:51:13 nice... i can't both read and scroll that page simultaneously 17:51:50 hmmm i can only play one sound at a time with that? 17:52:21 SND_ASYNC, SND_NOSTOP 17:53:16 wait... you may be right. 17:53:37 then you must end all at once 17:54:12 i'd like being able to pres a key down and play a melody at the same time 17:54:14 *press 17:56:34 i suppose you could calculate the sum on the fly then 17:56:56 ah yeah 17:57:28 i'll just make a string for the next 50 ms every time 17:57:32 and play thta 17:57:34 *that 17:57:39 seems trivial 17:58:01 * SevenInchBread is playing around with stenography. 17:58:11 though, i've noticed an awful click in the beginnin when playing stuff with playsound 17:58:30 yeah, boundary condition worries me too 17:58:54 you really want something that can change sound smoothly 17:59:04 you mean waves going .-'-.-'-.-'--'-.-'-.-'-.-'--'-.-'-.-'- 17:59:06 ? 17:59:58 that is easy, you just check where that wave leaves by sin(clicks in 50 ms * current tone pitch) 18:00:07 and continue there 18:00:35 i am also thinking of the inevitable short timing mismatch 18:00:50 because of delay and imprecision 18:00:52 i mean, you can create the whole sound at once, then cut it into sequences of 50 ms and adding the wav header 18:00:57 well, true 18:01:11 but i think strings don't have much delay 18:01:20 because there's no file openage 18:04:02 by the way, piano is confusing since i use the accordions note system 18:04:17 i just named it piano because people don't know what an accordion is :) 18:04:21 -!- nazgjunk has joined. 18:04:51 i know what an accordion is. i think. 18:05:42 well, in finnish it's 'haitari', so not everyone knows what it is in english 18:05:52 or 'harmonikka' 18:06:45 -!- Sgeo has joined. 18:16:14 You might want to look at http://msdn2.microsoft.com/en-us/library/ms713503.aspx 18:16:26 A more powerful system, it seems 18:21:30 i'd like unsigned char set_lp(unsigned char newvalue) best :P 18:21:38 but there is none 18:21:55 'cept of course in my brainfuck... and many of my unimplemented langs 18:23:13 haha i can play stratovarious's black diamond on beepiano now :DD 18:24:34 afk 18:56:13 http://pb.vjn.fi/p245463223.txt black diamond 18:56:48 Basically set_lp is only going to work in a system with hard real timing, which does not include the modern consumer OSes 18:58:03 indeed i sometimes feel slightly annoyed at esoteric languages that call themselves concurrent while having exact scheduling. 18:59:39 are you referring to... what? 18:59:43 noweach? :D 19:00:09 i don't think you were particularly precise on that 19:01:03 i wasn't true 19:01:09 because i don't know the spesifics 19:01:17 although i don't understand why you don't use a purely functional updating for it. 19:01:18 just wondering what you were referring to 19:01:33 mmh maybe because i don't know what you mean 19:01:40 *what that is 19:02:05 -!- sekhmet has quit ("ups ftw \o/"). 19:02:15 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 19:02:22 -!- UpTheDownstair has joined. 19:02:28 ok yours is strictly scheduled as dataflow (because it's CA inspired) but not in exact timing 19:02:59 what i mean is that each step could simply calculate the next in parallel. 19:03:06 not really 19:03:13 or maybe 19:03:16 dunno 19:03:23 since the previous step is not modified, you don't get those timing issues 19:03:47 i think that might result in deadlock 19:03:47 *s 19:03:53 since they can refer to each other 19:04:18 no, because each refers only to the _previous_ state of the others, not to the one currently being calculated. 19:04:19 they can refer to the new state as well 19:04:28 if that's what you mean 19:04:30 in that case you have a problem 19:04:44 i might. 19:04:49 -!- UpTheDownstair has changed nick to nazgjunk. 19:04:59 but, indeed it's still easiest to do concurrently 19:05:38 and, it's not supposed to be used in anything where that might result in problems 19:05:41 CAs don't require copying, btw. You just switch which array you calculate from 19:05:43 just simple automatons 19:05:51 i know 19:05:59 but that's copying, 19:06:05 you have to move nops too 19:06:08 well 19:06:10 okay, not 19:06:11 :) 19:06:22 nops? 19:06:41 anyway, i think cellular automatons are easier to optimize in lang development than in an existing lang 19:06:49 nops, places that aren't used currently 19:07:04 it automatically skips those when optimizing 19:07:09 ah you mean things that don't change. 19:07:12 yes 19:07:38 well you can keep those in big blocks 19:08:05 so you only copy block pointers 19:08:30 hmm 19:08:41 ah 19:08:53 i think that's how the popular CA engines do it 19:09:36 seems like the easiest way out 19:09:44 i had a lot more complicated thing in mind 19:10:05 who can come up with the slowest way to calculate fibonacci numbers? 19:10:12 Me. 19:10:14 ... 19:10:20 the usual recursion without memoing is pretty slow. 19:10:27 not slow enough 19:11:01 then you can define addition using succ. 19:11:31 int fib(int n){sleep(2^2^2^2^2^2);if(n==1||n==2)return 1;return fib(n-1)+fib(n-2);} 19:11:38 oklopol: no 19:11:51 you did not specify that as illegal 19:11:59 you mean sleep(ackermann(n,n)) :) 19:12:15 much better 19:12:19 that should be okay 19:12:52 that's cheating 19:13:40 I don't understand when people say stuff like "add a (succ b) = succ (add a b)" 19:13:57 How do you compute that without a predeccesor function? 19:13:58 ...create an entire network of processes that pass around data and perform single computations one at time... communicating the data in the least signifigant bits of manipulated bitmaps of adorable kittens. 19:14:06 bsmntbombdood take a bf interpreter in bf, then make a function that takes a number n and makes bf interpret bf interpret bf... n times, the last one calculating next fib 19:14:10 you need a base case of course 19:14:11 then use it recursively 19:14:15 add a 0 = a 19:14:35 oh i see. 19:14:46 * SevenInchBread wins. 19:15:20 ...provided the kitten bitmaps are very large files. 19:15:37 the idea is to think of natural numbers as defined as being either zero or the succ of something. 19:15:44 I know 19:15:55 but how do you compute add? 19:15:56 so the first succ is simply pattern matching on the definition 19:16:04 without pred 19:16:12 add a b = succ (add a (pred b)) 19:16:13 you do have pred 19:16:22 in Haskell, essentially: 19:16:36 bsmntbombdood the same way as prev_num (n+1) = n 19:16:39 data Nat = Zero | Succ {pred :: Nat} 19:17:14 pred is not an ordinary function, but a field 19:17:14 you can pattern match certain things when ...their counterfunction is obvious :) 19:17:21 But our only operation on natural numbers is succ 19:17:25 *with functions in the pattern 19:17:52 well, it's magic 19:18:23 yes, but Succ is a constructor, so it is not just a function but also a pattern you can match on. Thus it really contains pred implicitly. 19:19:10 (and Haskell allows you to name both simultaneously) 19:20:38 -!- sekhmet has joined. 19:21:17 you could think of it another way: add a (Succ b) = Succ (add a b) is a defining axiom, not just a calculation. 19:22:43 hmm 19:23:33 the book i'm reading informally defines it using that definition, then formally defines it in lambda calculus using some primitive recursion function 19:24:03 you might want to look at something like the Coq proof assistant, which has inductive type definitions built in. 19:24:21 of course you cannot do it in pure lambda calculus. 19:25:34 consider the function to be constructed in order to fit the defining axiom, however. 19:27:11 there is a standard trick for embedding such datatypes and pattern matching into lambda calculus, however. 19:27:22 add = \m.\n.prim n m (\p.\q.(succ q)) 19:27:36 where 19:27:44 prim 0 c f = c 19:27:55 prim (succ n) c f = f n (prim n c f) 19:29:33 i think that prim is something like what Coq defines automatically given the data type definition 19:33:02 later 19:33:11 -!- oerjan has quit ("Hunting for food"). 19:45:10 How do you get wget to... not write to a file? 19:49:06 -O - 19:49:12 to write to stdout 19:51:17 cool. Thanks. 20:07:16 ...hrm, I can't get my HTTP server to work. Help? http://deadbeefbabe.org/paste/4036 20:15:25 -!- nazgjunk has quit ("Leaving"). 20:25:42 -!- nazgjunk has joined. 20:27:32 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 20:28:00 -!- nazgjunk has joined. 21:31:12 ...I wonder... 21:31:34 if it would be possible to fund the operation of an ISP without charging. 21:32:01 juno? 21:34:28 >.> 21:35:12 I'd love it if it were possible to make the Internet -completely- free... 21:35:23 yeah 21:40:13 omg commies in my internets! :D 21:42:33 the internet is a breeding ground for what amounts to communisim anyway... 21:42:44 piracy, creative commons... 21:43:11 yeah 21:43:14 true, i don't like any of those though 21:44:14 i'm under the impression it makes programming kinda a payless occupation 21:44:29 if i understand 'creative commons' right 21:44:32 i might not :) 21:46:42 well, things like open-source tend to de-emphasize the value of creative or innovative programmers, representing coding as more of a form of skilled labor. 21:47:26 I think of programming as more of an art than a manufacturing job. 21:47:49 me too, but i'd like to get my pay out of it as well 21:47:56 since there is nothing else i can do 21:48:18 well, i could do porno maybe, but that's it 21:49:50 the main problem is that because you can get so many things on the internet for free, people *expect* everything to be free, and feel entitled to everything without charge 21:50:13 yeah 21:50:20 big players can survive on ad revenue, but it's impossible to make a profit as a small developer that way 21:50:29 true 21:52:20 I suppose that's my main problem with open-source philosophy. I give away the source to most of what I make freely, but sometimes I want to make the decision to hang on to what I create. It should be my decision, but things like the GPL take that decision away and make it impossible to maintain control over software built on anything GPLed 21:53:02 it's kinda "forced freedom" that could be considered good for the community, but it fucks over the individual 21:54:00 and since I see programming as an art and something that is valuable when done properly, rather than hacked together, I think the individual should be important 21:55:25 not everyone can have the luxury of living off of people's donations like Stallman. I think he's a little detached from market reality, which should make people question his motivations 21:57:00 true 21:57:01 If I release software, it's either under the "Do whatever the fuck you want License" or the source is mine to keep. 21:57:27 what else could it be? 21:58:02 GPLed. BSD licensed. Any number of things that get in the way and create false illusions of openness or freedom. 21:58:38 If I cared wether someone else "stole" the code I distributed, I wouldn't have given it away in the first place 21:59:10 heh 21:59:29 the GPL is just a viral method for allowing the FSF (which I find dubiously trustworthy) to control the flow of code. 21:59:41 Yeah, I don't like the GPL 22:00:29 and in the same vein, I don't trust any "licenses", because all they serve to do is limit what people can do with code that's supposedly offered to a community for free 22:00:46 ............................................................................................... 22:01:00 Licenses, by definition, can only give freedoms. 22:01:49 In a copyright system, licenses and copyright assignment are the only ways to give anyone other than the original creator the right to copy the work. 22:02:09 Or rather, licenses are the only way to give anyone but the copyright holder(s) said rights. 22:02:15 So licenses by definition can only give freedoms. 22:04:03 if you ask me, the only license that isn't a lie is this one, which I urge everyone here to adopt: http://sam.zoy.org/wtfpl/ 22:04:50 -!- nazgjunk has quit ("Leaving"). 22:05:30 Your philosophy is both bizarre and completely stupid. 22:06:18 I prefer all rites reserved 22:06:33 *reversed 22:07:24 *rights too? 22:07:30 No 22:07:32 http://allritesreversed.com/ 22:07:53 indeed, the first one wasn't a correction either 22:42:16 -!- ShadowHntr has joined. 22:42:25 -!- sebbu has joined. 22:42:33 ...why is math terminology so confusing? 22:42:50 couldn't you like, simplify it some? 22:44:11 which part? 22:46:34 ...like, all of it. 22:46:48 -!- oerjan has joined. 22:49:20 it's not 22:49:57 most of the time 22:50:32 -!- sebbu2 has quit (Read error: 145 (Connection timed out)). 22:54:49 because it has to be precise 22:55:11 and it is already extremely simplified 22:55:49 i.e. who do you think invented overloading? :) 22:56:03 but there's like... ten billion different forms of notation. 22:56:22 I thought math was supposed to keep some uniformity? 22:56:30 where does it not? 22:57:18 math notation is designed for extreme consiseness without being unreadable by those who use it 22:57:26 *conciseness 23:00:29 * SevenInchBread is trying to figure out the notation behind the Fourier transform. 23:00:53 Which notation? 23:00:53 which is? 23:01:05 mathmaticians just make up stuff 23:01:42 specifically, http://en.wikipedia.org/wiki/Fourier_transform#Definition 23:02:02 I can't find an explaination on how to read the integral thing. 23:02:44 integrate the thingie, then take f(upper bound) and subtract f(lower bound) 23:02:51 you don't understand integrals? 23:02:53 where f is it integrated 23:03:09 heh 23:03:22 the bounds are infinite however. 23:03:26 ..... 23:03:43 well, true, you need a big calculator 23:03:46 so... if it helps any - I've never touched calculus... 23:03:58 well then you have a problem 23:04:04 then you are probably going to have some troubles... 23:04:54 I've only done high school algebra. 23:05:08 well, you can't blame math for you not knowing it 23:06:40 ...well, the problem is that I'm trying to learn it... but it's proving extremly difficult. 23:06:47 everything from the elongated s to dt is an integral, with upper bound infinity and lower bound minus infinity (this combines to mean integrate over all real numbers) 23:07:07 trying to pick it up quickly for reading that page? 23:07:15 ...pretty much. 23:07:32 well, i can't blame you, i've done the same thing 23:07:32 the part between is essentially a lambda term with free variable t 23:07:45 can't say i understand fourier transform either... 23:08:47 hmm i seem to get that now 23:09:01 but, suppose i have an array full of random stuff 23:09:08 upper bound is length of it 23:09:10 lower is 0 23:09:18 essentially you can think of integral as a higher-order function 23:09:18 so... what's the result of that notation? Is it a function, a number? 23:09:19 how do i integrate an array? :P 23:09:37 the result is a complex number in this case 23:09:40 i don't understand fourier transforms 23:09:40 SevenInchBread integration is func -> func 23:09:58 ah... hmmm... 23:10:23 -!- sekhmet has quit ("kernel++;"). 23:10:44 turns a function a into another function b that at x slopes a(x) 23:10:53 i think :) 23:10:57 integral :: Measure a -> (a -> Complex) -> Complex 23:12:01 oerjan why will that result in complex numbers? 23:12:04 the integral 23:12:10 ...yeah, I've never understood that little bit of Haskell-ish notation... :) 23:12:13 because there is an i in the function 23:12:22 but, it's in e^(_) 23:12:36 e^(x) always results in a real number i think 23:12:40 nope 23:12:43 oki 23:12:48 not if x is complex 23:13:02 e^(ix) is a unit complex number if x is real 23:13:06 I'm trying to read up on concepts related to sound waves. 23:13:16 or any wave for that matter. 23:13:20 e^(a+bi) = e^a * (cos b + i sin b) 23:13:22 e^(ix) = cos(x) + i*sin(x) 23:13:36 oh yeah 23:13:38 true 23:13:47 sorry, i'm bad at this 23:14:44 I'd like to translate the Fourier transform into an algorithm... so how do you get compute the integral of something? 23:15:17 i asked oerjan already, but he never answered :< 23:15:27 symbollically or numerically? 23:15:48 actually, i just threw it in the air 23:16:12 then again, most of what i say is implicitly a question for oerjan 23:16:15 numerically is obviously easier than symbolically 23:16:26 hmmm... it looks liike, in the most cases, it's just the area underneath the curve between those limits... in this case infinity. 23:16:38 if the function x is stepwise continuous you can use numerical methods 23:16:41 yeah 23:16:52 so.....how do you compute the area of something that's infinite. :P 23:17:06 what if it's a wav file for example? 23:17:09 by an integral of course :) 23:17:29 .... 23:17:49 the simplest way is to divide into small intervals and approximate it as constant on each 23:17:56 -!- sekhmet has joined. 23:18:09 then for each interval it is just the area of a square 23:18:21 riemann sum 23:18:27 yeah... just the chunk of the wave that is repeated would be all you need. 23:18:57 when you take the limit of smaller intervals, that is the riemann integral 23:19:20 the limit? 23:19:22 ah, that's why you use sum in actual implementations of fourier 23:19:24 right? 23:19:24 although there are more efficient methods if your function is also differentiable 23:19:33 exactly 23:19:56 because often you don't need fourier when you've made the function yourself 23:20:05 because you prolly know what it is if you made it 23:20:08 (requiring less subdivisions for accuracy) 23:20:35 * oklopol goes to sleep now -----> 23:21:04 if it is already a sum of sine waves then it is easier to transform using the known expression for them, yeah 23:21:27 ...what is fourier useful for exactly? 23:21:45 lots of things 23:22:37 but expressing a signal as a limit sum of sine waves is the most basic 23:23:02 >.> 23:23:35 dividing it up by frequency rather than time 23:23:59 hmm 23:24:39 so X(a) is the amplitude of the sine wave at frequency a? 23:24:47 is the fourier transform used to reproduce chords and multiple waves at the same time? 23:24:53 amplitude and phase 23:25:37 actually a and -a together give the sine and cosine wave parts. Complex numbers mix them a bit 23:26:01 That e^ix = cos x + i sin x thing 23:27:06 reversed as e^ix + e^(-ix) = 2 cos x and e^ix - e^(-ix) = 2 sin x 23:29:18 a sum of multiple waves, two for each frequency 23:32:09 if a signal is truly periodic with frequency f, then only frequencies that are integer multiples of f will appear 23:32:21 the rest will be 0. 23:33:20 SevenInchBread no, addition is for that 23:33:50 hmmm... so you just add the outputs? 23:33:56 That is essentially the point of Fourier _series_ 23:34:12 Yeah, the Fourier transform is linear so it preserves addition 23:34:35 I mean... the outputs of the sine waves. 23:34:53 SevenInchBread yes 23:35:07 you do fourier transforms for the opposite 23:35:17 figuring out what waves have been added 23:35:32 (and once again correct me if i'm wrong...) 23:35:51 Except there are some weird problems with summing the sine waves if the original function is not nice enough. 23:36:10 You need to do the limit in a more clever way than simple integration 23:39:10 This is because the result of the Fourier transform is not necessarily itself directly Fourier transformable 23:39:58 otherwise it would just be a matter of repeating the process with some constants and signs changed 23:41:08 I was thinking about making an interactive programming language for playing around with sound samples mid-play.. 23:41:33 like... some weird cross between programming and a synthesizer. 23:43:22 You might want to look at http://en.wikipedia.org/wiki/Discrete_Fourier_transform 23:45:17 It is for the case when you have a finite set of time points. 23:45:49 Incidentally all these different forms of Fourier transforms are united by the theory of dual groups. 23:46:51 Essentially for every kind of time group there is a dual frequency group. The real numbers are their own dual, as are the integers mod n 23:47:23 *every = every sufficiently nice (commutative, locally compact) 23:48:05 -!- sekhmet has quit ("ups tests..."). 23:48:06 -ahem- as a precaution... none of your explainations have helped me so far. -gentlemanly smile- 23:48:07 however the unit circle is dual to the integers, which explains why you get a Fourier _series_ from a periodic signal. 23:48:24 Not even the discrete fourier transform? 23:48:43 I admit the general stuff was mostly in case someone else was interested 23:49:06 time group and dual frequency group means nothing to me. :( 23:49:07 oerjan i don't think he'll need a fourier transform for what he defined 23:49:30 Well he needs a way to get frequencies from samples, doesn't he? 23:49:41 i don't think we will :\ 23:50:04 if he's doing what i think he's doing 23:50:14 I don't need to create sound files... I just want to mix multiple sound files together... among other things. 23:50:21 just a programmer's version of logic audio or guitar pro or such 23:50:54 .....yeah,.. ish 23:51:00 Well in that case you just add amplitudes together with coefficients 23:51:11 that's what i've been planning to do for ages 23:51:24 but i've never had a direct acces to the speaker 23:51:34 though oerjan maybe showed me the way 23:51:37 don't know yt 23:51:38 *yet 23:52:05 *acces 23:52:12 that Windows audio wave thing sounds complicated but it apparently solves the time gap problem 23:52:23 ...probablly heavily concurrent... because you need multiple "processes" playing all at once... like an interactive programming language mixed with a GUI. 23:54:12 There was something about mixing there too 23:55:37 You need that nowmap thing and a way to sum the result :) 23:56:54 But then concurrency may not be so important if they are independent - just loop over them for each time block, summing 23:57:15 assuming it is not so heavy you need multiple cores... 23:57:26 well, if they are done at the same time, it must be O(1) ! 23:57:29 :D 23:58:12 -!- jix__ has joined. 23:58:14 anyhow if it is anything like that audio wave thing then it will actually be event driven. 23:58:51 i saw something about getting a callback when the audio device is finished playing a data block 23:59:06 that might help 23:59:10 i hate events though 23:59:16 in fact there seemed to be a bunch of alternatives listed for how to do that 2007-03-19: 00:00:51 hating events? 00:01:39 no for how to get the information back 00:01:54 mm yeah 00:02:59 ah yes, it was the links at the end of http://msdn2.microsoft.com/en-us/library/ms705672.aspx 00:03:33 seems so 00:03:40 i'll read tomorrow maybe 00:04:12 i wants my set_lp :< 00:04:20 lp... why lp? 00:04:24 ls maybe 00:04:36 i don't actually know what you call it 00:04:36 set_audio 00:04:47 since /dev/lp is the printer 00:05:08 oki 00:05:24 this made up out of thin air, naturally 00:05:58 i mean, the thingie that moves around in the loudspeaker, what's it called? 00:06:03 the cone of death? 00:06:26 -!- jix has quit (Read error: 110 (Connection timed out)). 00:09:12 wikipedia says "diaphragm" 00:09:33 and also cone 00:10:00 oh 00:10:09 i wonder where i've seen that then :| 00:10:17 cone wanted to come out 00:10:41 even though i was thinking about tree cones 00:13:58 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 00:18:02 -!- sekhmet has joined. 00:19:27 hot swapping is interesting... I wonder how smalltalk and Erlang do it. 00:19:54 zomg! 00:19:58 http://www.swiss.ai.mit.edu/classes/6.001/abelson-sussman-lectures/ 00:21:44 ... 00:21:47 whooooo... a lecture. 00:23:04 my impression from Lambda the Ultimate is that they highly recommend those 00:23:22 * bsmntbombdood is downloading 00:23:45 I still haven't finished SICP though 00:23:47 -!- SevenInchBread has quit (Read error: 104 (Connection reset by peer)). 00:25:39 -!- SevenInchBread has joined. 00:26:14 there's probably some way to make wget download all the .avi files from that page 00:27:06 I, however, don't know it 00:29:53 have you consider looking at the man page? :) 00:31:10 * oerjan is sorry already. 00:31:31 aha 00:31:45 wget -r -l1 -A.avi 00:32:46 yes, man pages are nice 00:33:11 mind you that page is big 00:33:20 huge 00:33:22 wget's man page is fairly overwhelming. 00:33:43 1593 lines 00:34:22 heh, i don't have enough space for everything 00:35:00 even compressed? 00:35:26 the total is about 10GB 00:35:39 slightly less 00:36:11 actually I guess it is compressed already 00:36:16 being video 00:36:43 yeah 00:52:14 \n c f. n (\m.f m) c 00:52:25 -!- sebbu has quit ("http://www.parti-geek.com/programme.php"). 00:54:03 == \n c f. n f c 00:54:13 the "prim" function for church numerals 00:59:20 no 00:59:45 hmm 01:01:15 and with a little reordering, == I 01:01:45 \n c f.n (\m.f m (prim m c f)) c 01:01:48 essentially church numerals _are_ primitive recursion 01:13:52 * bsmntbombdood watches sussman 01:18:05 er, abelson 01:20:10 -!- ShadowHntr has quit ("End of line."). 01:20:45 and he is incredibly boring 01:33:36 agh 01:33:46 i hate the "box" analogy for functions 01:56:00 -!- ShadowHntr has joined. 01:59:57 -!- ShadowHntr has quit (Client Quit). 02:16:10 I think of functions as.... do-ers 02:16:34 or just a tool. 02:16:39 it has one purpose. 02:17:29 OO-style objects.... are more like swiss army knives. 02:24:07 or just a function. 02:24:41 not everything needs an analogy 02:26:23 does anyone know a PHP function that can do the same as java.String.startsWith() ? 02:26:40 or do I have to do something using strpos? 02:26:48 haha, php 02:26:50 haha, java 02:27:07 an evil and a greater evil 02:27:16 hey, make fun of Java all you want. PHP is useful. 02:28:02 What's the deal with people who serve everything through one php/cgi script? 02:28:20 Why would you want to write a slow and buggy webserver on top of a real one? 02:28:56 that's not what I do... 02:29:16 I just use PHP to tie mysql tables into my pages 02:36:19 databases ftl 02:38:18 ...because hardcoding everything is infinitely superior 02:38:52 or do you prefer flat-file storage systems? Mind-bleedingly efficient 02:39:24 anyway, nvm. I managed to find documentation. 02:39:29 Nah we just use literal sector numbers 02:39:47 flat file storage systems 02:39:53 must be interesting finding a FORTH plugin for apache 03:50:07 -!- SevenInchBread has quit (Read error: 145 (Connection timed out)). 05:33:41 -!- wooby has joined. 05:34:41 good night everyone 05:35:22 -!- RodgerTheGreat has quit. 05:47:44 databases have more than one dimension then? 05:47:49 though he's gone again 05:51:28 i suppose dependent on how you look at it, a relational database could have either two dimensions (row and column) or as many as they have columns 05:52:39 w 05:52:53 hat? 05:53:00 bad focus 05:59:31 then again, that's only an abstraction, any file can be considered having multiple dimensions if it seems appropriate 05:59:56 -!- wooby has quit (Read error: 113 (No route to host)). 06:27:57 -!- Sgeo has quit ("Leaving"). 06:39:34 -!- GreaseMonkey has joined. 06:43:04 -!- oerjan has quit ("Good night"). 06:58:44 -!- wooby has joined. 07:57:42 afk food 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:14:29 -!- Sukoshi has joined. 08:20:20 -!- ShadowHntr has joined. 08:40:56 ha' 08:41:20 my raytracer written in SADOL almost works 08:42:37 ha' 08:42:46 my bot written in C almost works 08:42:54 wait. what's SADOL? 08:42:55 http://pastebin.ca/401307 :D 08:43:22 http://esolangs.org/wiki/SADOL 08:44:01 almost like perl :} 08:49:01 sadol looks quite nice 08:49:41 thx 08:50:37 vector operations look kool 08:51:34 #### #### ### :D 08:54:51 I would clap if I knew what a raytracer was. 08:55:38 * GreaseMonkey claps 08:55:40 i know 08:56:46 http://en.wikipedia.org/wiki/Ray_tracing 08:57:10 this one has only diffuse lightning and ball primitive 08:58:01 but i'll code reflection and some cool shaders 08:58:07 Is that an actually helpful article, or something like Mathworld's definition of a bounded function being ``A property which a closed topological space exhibits''. 08:59:39 here :P http://fuzzyphoton.tripod.com/howtowrt.htm 09:06:17 hm 10:12:18 gtg to bed, gnight everyone 10:12:55 -!- GreaseMonkey has quit ("RoboMonkey works....ish"). 10:43:00 -!- fizzie has quit (Read error: 60 (Operation timed out)). 10:45:11 -!- Sukoshi has quit ("今、眠っていい。留守番電話でメッセジを入ったいなら、電話番号は555ー5555。普通"). 11:37:29 -!- wooby has quit. 11:55:36 -!- ais523 has joined. 11:56:19 And first, an apology. 11:56:32 * ais523 apologises for not providing the source code to their Dupdog interpreter 11:56:48 because I wrote it in a Thutu wimpmode, and so nobody else could have run it 11:57:25 But now, it's in the pastebin: http://pastebin.ca/raw/401416 (Dupdog interpreter), http://pastebin.ca/raw/401410 (Thutu2 wimpmode; work in progress) 11:58:28 ~exec self.bf3="def bfarg(x,y):\n p=y.group(2)\n a=y.group(3)+unichr(0)\n o=''\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='[' and t[l]==0:\n c=1\n while c>0:\n i=i+1\n if p[i]=='[': c=c+1\n if p[i]==']': c=c-1\n if p[i]==']' and t[l]!=0:\n c=1\n while c>0:\n i=i-1\n if p[i]==']': c=c+1\n if p[i]=='[': c=c-1\n" 11:58:48 ~exec self.bf4=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': o=o+unichr(t[l])\n if p[i]==',':\n t[l]=ord(a[0])\n a=a[1:]\n i=i+1\n sys.stdout(o)\nself.register_raw(r'\S+ PRIVMSG (\S+) :~bf ([^!]*)!?(.*)',bfarg)" 11:59:16 ~exec exec(self.bf3+self.bf4) 11:59:27 ~bf ,[.,]!bsmnt_bot needs better persistence 11:59:28 bsmnt_bot needs better persistence 12:02:47 -!- ais523 has quit ("I'm about to be thrown out of the room with my IRC client in (one of the hazards of public computers)"). 12:10:26 -!- jix has joined. 12:38:54 -!- RodgerTheGreat has joined. 12:40:47 'morning, guys 12:44:56 http://img.waffleimages.com/7a1f19b0d0ba1e5bac2d3ef48bb1c9de7a8efaef/bikecrash.gif 13:11:17 i assume that's you 13:13:13 you are entitled to assume that 13:13:36 the truth of that assumption, however, is questionable 13:14:11 and I think we can all agree that's an esoteric way to say "no" 13:17:20 bbl 13:17:29 bie 13:26:31 ug 13:38:45 bak 15:25:48 -!- tgwizard has joined. 15:29:25 -!- tgwizard has quit (Client Quit). 15:29:30 -!- tgwizard has joined. 15:31:39 -!- tgwizard has quit (Client Quit). 16:01:29 -!- ais523 has joined. 16:06:32 !ps d 16:06:35 1 ais523: daemon ul bf 16:06:37 2 ais523: daemon deadfish funge93 16:06:39 3 ais523: daemon dog funge93 16:06:41 4 ais523: ps 16:07:05 ~ps 16:07:05 None 16:10:22 -!- nazgjunk has joined. 16:11:40 ~bf ,[.,]!!ul (~bf ,[.,]!!ul ):SaS(:SaS):SaS(:SaS):SaS(:SaS):SaS 16:11:40 !ul (~bf ,[.,]!!ul ):SaS(:SaS):SaS(:SaS):SaS(:SaS):SaS 16:11:43 ~bf ,[.,]!!ul (~bf ,[.,]!!ul ):SaS(:SaS):SaS(:SaS):SaS(:SaS) 16:11:45 !ul (~bf ,[.,]!!ul ):SaS(:SaS):SaS(:SaS):SaS(:SaS) 16:11:47 ~bf ,[.,]!!ul (~bf ,[.,]!!ul ):SaS(:SaS):SaS(:SaS) 16:11:48 !ul (~bf ,[.,]!!ul ):SaS(:SaS):SaS(:SaS) 16:11:51 ~bf ,[.,]!!ul (~bf ,[.,]!!ul ):SaS(:SaS) 16:11:52 !ul (~bf ,[.,]!!ul ):SaS(:SaS) 16:11:55 ~bf ,[.,]!!ul (~bf ,[.,]!!ul ) 16:11:56 !ul (~bf ,[.,]!!ul ) 16:14:44 ~bf >,[>,]<[<]>.[>.]<[<]>.[>.]!~bf >,[>,]<[<]>.[>.]<[<]>.[>.]! 16:14:44 ~bf >,[>,]<[<]>.[>.]<[<]>.[>.]! 16:15:12 ~bf >,[>,]<[<]>[.>]<[<]>[.>]!~bf >,[>,]<[<]>[.>]<[<]>[.>]! 16:15:13 ~bf >,[>,]<[<]>[.>]<[<]>[.>]!~bf >,[>,]<[<]>[.>]<[<]>[.>]! 16:15:49 seems that it interpreted outputting a NUL as end-of-string 16:26:05 this gives me an idea for an Easy quine 16:26:57 +[->,[>,]<[<]>.[>.]<[<]>.[>.]<[<]]+[->,[>,]<[<]>.[>.]<[<]>.[>.]<[<]] 16:27:21 (where EOF is 0, and the entire second half of the program is interpreted as input as soon as the square brackets become balanced). 16:51:44 -!- ShadowHntr has quit ("End of line."). 17:04:46 hm 17:28:15 hm what? 17:30:34 * SimonRC eats lunch 17:45:41 -!- FabioNET has joined. 17:51:08 -!- FabioNET has quit (Remote closed the connection). 18:00:34 -!- FabioNET has joined. 18:15:01 !ul ((!ul )SaS(:^)S):^ 18:15:05 !ul ((!ul )SaS(:^)S):^ 18:19:54 ~bf >,[>,]<[.<]>[>]<[.<]!~bf >,[>,]<[.<]>[>]<[.<]! 18:19:54 !]<.[<]>[>]<.[<],>[,> fb~!]<.[<]>[>]<.[<],>[,> fb~ 18:19:57 Huh? 18:20:15 wow, i actually figured out someone else's quine's idea 18:20:36 this sort of thing is what's nice about Easy 18:20:48 it's more or less Brainfuck, but you can intersperse expected input with the program 18:20:59 in quite a similar way to using ! for input like bsmnt_bot's interpreter does 18:21:09 oh, easy is a language, i thought it was a glorified way to say i'm a noob :P 18:21:30 come to think of it, I don't think the bots have an Easy interpreter 18:21:33 !help 18:21:35 help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon 18:21:37 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl 18:21:58 nope 18:22:47 I don't think it would be too hard to write one for bsmnt_bot 18:23:50 -!- sebbu has joined. 18:24:12 ~exec self.bf5="def bfarg(x,y):\n p=y.group(2)+unichr(0)\n o=''\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='[' and t[l]==0:\n c=1\n while c>0:\n i=i+1\n if p[i]=='[': c=c+1\n if p[i]==']': c=c-1\n if p[i]==']' and t[l]!=0:\n c=1\n while c>0:\n i=i-1\n if p[i]==']': c=c+1\n if p[i]=='[': c=c-1\n" 18:25:29 ~exec self.bf4=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': o=o+unichr(t[l])\n if p[i]==',':\n t[l]=ord(t[l+1])\n t=t[:l]+t[l+2:]\n i=i+1\n sys.stdout(o)\nself.register_raw(r'\S+ PRIVMSG (\S+) :~easy ([^!]*)!?(.*)',bfarg)" 18:25:43 ~exec exec self.bf5+self.bf4 18:26:08 ~easy ,H.,e.,l.,l.,o., .,w.,o.,r.,l.,d.,!. 18:26:24 hmm 18:26:25 nope, not working 18:26:36 besides I hadn't allowed for , inside square brackets 18:26:37 where did you tell it ~easy? 18:26:45 ~bf ,[.,]!Hope I haven't crashed this 18:26:46 Hope I haven't crashed this 18:26:57 "~easy" was at the end of bf6's definition 18:27:03 yeah 18:27:06 indeed 18:27:11 which I called bf4 by mistake, but at least I was consistent 18:27:37 ~easy +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++. 18:27:59 ~exec sys.stdout(self.raw_regex_queue()) 18:27:59 TypeError: 'list' object is not callable 18:28:02 ~exec sys.stdout(self.raw_regex_queue) 18:28:03 [(<_sre.SRE_Pattern object at 0xb7d09c98>, >), (<_sre.SRE_Pattern object at 0x80d8a60>, >), (<_sre.SRE_Pattern object at 0x80d2220>, >), (<_sre.SRE_Pattern object 18:28:07 at 0x80d2020>, >), (<_sre.SRE_Pattern object at 0x80d2690>, >), (<_sre.SRE_Pattern object at 0x80d28c8>, >), (<_sre.SRE_Pattern object at 0x8061cb8>, thod IRCbot.do_ps of <__main__.IRCbot instance at 0xb7c7816c>>), (<_sre.SRE_Pattern object at 0x80d2b30>, >), (<_sre.SRE_Pattern object at 0x80d8078>, at 0xb7c795a4>), (<_sre.SRE_Pattern object at 0x80d7b60>, at 0xb7c836bc>), (<_sre.SRE_Pattern object at 0x80d6088> 18:28:17 , )] 18:28:18 #bsmnt_bot_errors 18:28:26 he's crying. 18:28:28 is that a real channel? 18:28:31 yes 18:28:36 /whois oklopol 18:29:03 ~easy +++++++++++++++++++++++++++++++++++. 18:29:20 ~easy ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++. 18:29:33 no obvious errors are coming out there 18:29:57 ~exec This is not a real Python command. 18:29:58 SyntaxError: invalid syntax 18:30:43 ~exec self.pop_raw_regex_queue() 18:30:43 AttributeError: IRCbot instance has no attribute 'pop_raw_regex_queue' 18:30:50 ~exec self.raw_regex_queue.pop() 18:31:54 ~exec self.bf6=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': o=o+unichr(t[l])\n if p[i]==',':\n t[l]=ord(t[l+1])\n t=t[:l]+t[l+2:]\n i=i+1\nsys.stdout(o)\nself. register_raw(r'\S+ PRIVMSG (\S+) :~easy (.*)',bfarg)" 18:32:07 ~exec exec self.bf5+self.bf6 18:32:07 IndentationError: expected an indented block (line 27) 18:32:35 ~bf ,[.,]!Is this still working? 18:32:43 :< 18:33:11 ~exec self.bf4=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': o=o+unichr(t[l])\n if p[i]==',':\n t[l]=ord(a[0])\n a=a[1:]\n i=i+1\n sys.stdout(o)\nself.register_raw(r'\S+ PRIVMSG (\S+) :~bf ([^!]*)!?(.*)',bfarg)" 18:33:17 ~exec self.bf3+self.bf4 18:33:28 ~bf ,[.,]!Should be working now 18:33:46 no errors, no response... 18:33:58 ~exec sys.stdout("Is bsmnt_bot still running?") 18:33:59 Is bsmnt_bot still running? 18:34:05 ~bf ,[.,]!Should be working now 18:34:53 ~exec sys.stdout(repr(self.raw_regex_queue.peek())) 18:34:53 AttributeError: 'list' object has no attribute 'peek' 18:35:05 ~exec sys.stdout(repr(self.raw_regex_queue[0])) 18:35:05 (<_sre.SRE_Pattern object at 0xb7d09c98>, >) 18:35:18 ~exec sys.stdout(repr(self.raw_regex_queue[10])) 18:35:18 IndexError: list index out of range 18:35:21 ~exec sys.stdout(repr(self.raw_regex_queue[8])) 18:35:22 (<_sre.SRE_Pattern object at 0x80d8078>, at 0xb7c795a4>) 18:35:44 ~exec sys.stdout(repr(self.raw_regex_queue[8][2])) 18:35:44 IndexError: tuple index out of range 18:35:58 ~exec sys.stdout(repr(self.raw_regex_queue[8][1])) 18:35:59 at 0xb7c795a4> 18:36:08 ~exec sys.stdout(repr(self.raw_regex_queue[8][0])) 18:36:09 <_sre.SRE_Pattern object at 0x80d8078> 18:36:21 ~exec sys.stdout(repr(self.raw_regex_queue[8][0].group(1))) 18:36:21 AttributeError: group 18:36:58 OK, I've just managed to get myself confused. It's quite hard to poke around bsmnt_bot's internals when you don't actually know much Python 18:41:23 heh 18:43:09 what are you trying to do? 18:43:23 program bsmnt_bot to do Easy 18:43:35 easy? 18:43:48 http://esolangs.org/wiki/Easy 18:43:58 like BF, but input is interspersed with the program 18:44:05 it's considerably better for quines than BF is 18:44:24 Python Is Easy :) 18:44:47 I interpreted your smiley as a TM marker there for a bit 18:50:41 a what marker? 18:51:02 the little TM that you put at the end of something to show it's a company or if you're just being ironic 18:51:58 :) 19:07:44 !dog )"?gnikorw I mA"(toudts.sys cexe~ 19:07:45 ~exec sys.stduot("Am I wroking?") 19:07:51 !dog )"?gnikorw I mA"(tuodts.sys cexe~ 19:07:55 ~exec sys.stdout("Am I wroking?") 19:10:46 !ps d 19:10:46 now both bots have crashed... 19:10:46 !quit 19:10:46 sometimes restarting EgoBot helps... 19:10:49 Huh? 19:10:51 1 ais523: daemon ul bf 19:10:53 2 ais523: daemon deadfish funge93 19:10:55 3 ais523: daemon dog funge93 19:10:57 4 ais523: ps 19:12:33 ~ul (Test)S 19:12:41 !ul Test(S) 19:12:47 !ul (Test)S 19:12:49 Test 19:14:50 well, that's EgoBot back up at least 19:17:11 !ul (~exec sys.stdout("Is bsmnt_bot not listening to me or not listening to anyone?"))S 19:17:13 ~exec sys.stdout("Is bsmnt_bot not listening to me or not listening to anyone?") 19:17:23 not to anyone, it seems 19:27:03 -!- FabioNET has quit (Client Quit). 19:45:04 -!- RodgerTheGreat has quit. 19:51:16 -!- UpTheDownstair has joined. 19:56:46 -!- ais523 has quit ("It seems my IRC client pre-empted Underload's quoting scheme by several years by trapping quit messages in parentheses"). 20:09:54 -!- nazgjunk has quit (Connection timed out). 20:12:06 -!- sebbu2 has joined. 20:21:42 -!- EgoBot has quit (Read error: 104 (Connection reset by peer)). 20:21:51 -!- GregorR has quit ("leaving"). 20:30:57 -!- sebbu has quit (Read error: 110 (Connection timed out)). 21:36:10 -!- oerjan has joined. 21:42:31 ~exec list_dir("/bot") 21:42:55 ~exec sys.stdout(list_dir("/bot")) 21:43:07 ~exec sys.stdout("Anyone there?") 21:44:04 ~exec self.raw("PRIVMSG #esoteric :I'm here") 21:44:17 dead as a doornail 21:47:04 -!- UpTheDownstair has quit (Read error: 104 (Connection reset by peer)). 21:47:30 -!- nazgjunk has joined. 21:58:43 -!- UpTheDownstair has joined. 22:03:52 -!- Sgeo has joined. 22:05:45 -!- nazgjunk has quit (Read error: 145 (Connection timed out)). 22:06:27 -!- nazgjunk has joined. 22:12:43 -!- GregorR has joined. 22:21:16 -!- UpTheDownstair has quit (Connection timed out). 22:24:31 geg 22:24:36 *heh 22:24:37 hmm 22:25:08 foo 22:25:11 -!- bsmnt_bot has quit (Read error: 131 (Connection reset by peer)). 22:25:14 -!- bsmnt_bot has joined. 22:25:15 odd 22:27:39 :-S 22:30:18 ~exec sys.stdout(list_dir("/bot")) 22:30:18 NameError: name 'list_dir' is not defined 22:30:48 ~exec sys.stdout(dir_list("/bot")) 22:30:48 NameError: name 'dir_list' is not defined 22:31:12 what the hell is list_dir 22:31:16 or dir_list 22:32:20 ~exec sys.stdout(os.listdir(os.getcwd())) 22:32:21 ['bin', 'bot', 'etc', 'lib', 'usr'] 22:32:32 ~exec sys.stdout(os.listdir('bot')) 22:32:32 ['scripts', 'betterbot.py', 'test.pickle', 'foo.py~', 'ski_repl.py', 'foo.py', 'ircbot.py~', 'start.sh', 'better.sh', 'ircbot.py'] 22:33:26 ~exec sys.stdout(os.listdir("/bot/scripts")) 22:33:26 ['foo'] 22:33:52 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 22:34:24 os.listdir 22:38:08 ~exec with open("/bot/scripts/foo") as f: sys.stdout(f.readline()) 22:38:08 SyntaxError: invalid syntax 22:38:24 python2.4 22:40:09 #!%&/= 22:41:19 ~exec f = open("/bot/scripts/foo"); sys.stdout(f.readline()); f.close() 22:41:19 fooo 22:41:42 ~exec f = open("/bot/scripts/foo"); sys.stdout(f.readlines()); f.close() 22:41:42 ['fooo\n'] 22:42:17 ~exec sys.stdout(os.listdir("/lib")) 22:42:18 ['libm.so.6', 'libreadline.so.5', 'libacl.so.1', 'libdl-2.4.so', 'libresolv.so.2', 'libutil.so.1', 'libncurses.so.5', 'libattr.so.1', 'libcrypt.so.1', 'ld-linux.so.2', 'libdl.so.2', 'libpthread.so.0', 'libpam_misc.so.0', 'libpam.so.0', 'libc.so.6', 'librt.so.1'] 22:42:24 ~exec sys.stdout(os.listdir("/")) 22:42:24 ['bin', 'bot', 'etc', 'lib', 'usr'] 22:42:30 ~exec sys.stdout(os.listdir("/bot")) 22:42:30 ['scripts', 'betterbot.py', 'test.pickle', 'foo.py~', 'ski_repl.py', 'foo.py', 'ircbot.py~', 'start.sh', 'better.sh', 'ircbot.py'] 22:42:36 ~exec sys.stdout(os.listdir("/bin")) 22:42:37 ['ls', 'bash'] 22:42:40 ~exec sys.stdout(os.listdir("/usr")) 22:42:41 ['bin', 'lib', 'include'] 22:42:44 ~exec sys.stdout(os.listdir("/usr/lib")) 22:42:45 ['libpthread.so', 'libskey.so.1', 'python2.4', 'libdl.so', 'libpython2.4.so.1.0'] 22:42:52 ~exec sys.stdout(os.listdir("/usr/include")) 22:42:52 ['python2.4'] 22:43:00 ~exec sys.stdout(os.listdir("/usr/include/python2.4")) 22:43:00 ['dictobject.h', 'pyerrors.h', 'traceback.h', 'Numeric', 'structmember.h', 'pyfpe.h', 'pymem.h', 'pymactoolbox.h', 'osdefs.h', 'bitset.h', 'parsetok.h', 'timefuncs.h', 'py_curses.h', 'tupleobject.h', 'pgenheaders.h', 'sliceobject.h', 'compile.h', 'bufferobject.h', 'weakrefobject.h', 'enumobject.h', 'pydebug.h', 'marshal.h', 'pyconfig.h', 'stringobject.h', 'pythonrun.h', 'c 22:43:00 odecs.h', 'pygetopt.h', 'structseq.h', 'rangeobject.h', 'ucnhash.h', 'datetime.h', 'metagrammar.h', 'cStringIO.h', 'graminit.h', 'methodobject.h', 'eval.h', 'descrobject.h', 'genobject.h', 'token.h', 'cobject.h', 'classobject.h', 'cellobject.h', 'boolobject.h', 'Python.h', 'grammar.h', 'symtable.h', 'longobject.h', 'node.h', 'pythread.h', 'floatobject.h', 'pgen.h', 'opcode 22:43:01 .h', 'pystate.h', 'object.h', 'patchlevel.h', 'setobject.h', 'intobject.h', 'intrcheck.h', 'objimpl.h', 'pystrtod.h', 'abstract.h', 'frameobject.h', 'complexobject.h', 'errcode.h', 'import.h', 'unicodeobject.h', 'pyport.h', 'sysmodule.h', 'fileobject.h', 'iterobject.h', 'ceval.h', 'funcobject.h', 'modsupport.h', 'listobject.h', 'moduleobject.h', 'longintrepr.h'] 22:43:35 ~exec sys.stdout(os.listdir("/usr/bin")) 22:43:36 ['dc', 'nice', 'python2.4'] 22:52:54 ~exec f = __import("urllib").urlopen("http://oerjan.nvg.org"); sys.stdout(f.readline()); f.close() 22:52:54 NameError: name '__import' is not defined 22:53:01 ~exec f = __import__("urllib").urlopen("http://oerjan.nvg.org"); sys.stdout(f.readline()); f.close() 22:53:02 IOError: [Errno socket error] (-2, 'Name or service not known') 22:53:19 ~exec f = __import__("urllib").urlopen("http://oerjan.nvg.org/"); sys.stdout(f.readline()); f.close() 22:53:27 IOError: [Errno socket error] (-2, 'Name or service not known') 22:55:04 ~exec f = __import__("urllib").urlopen("http:/129.241.210.70/~oerjan/"); sys.stdout(f.readline()); f.close() 22:55:04 IOError: [Errno http error] no host given 22:55:14 ~exec f = __import__("urllib").urlopen("http://129.241.210.70/~oerjan/"); sys.stdout(f.readline()); f.close() 22:55:19 IOError: [Errno socket error] (-2, 'Name or service not known') 22:55:27 darn. 22:55:43 more than just DNS lacking, i see 22:56:51 it's going to be a pain to download scripts then. 22:57:40 otoh i can appreciate you don't want to give us that much power :) 22:58:44 hm... 22:59:12 ~exec f = __import__("urllib").urlopen("http://129.241.210.70/~oerjan/"); sys.stdout(f.readline()); f.close() 22:59:13 IOError: [Errno socket error] (-2, 'Name or service not known') 23:00:00 wow that is some error list 23:01:29 -!- calamari has joined. 23:02:53 ~bf ++++++++[->++++++++<]>. 23:08:56 heh 23:09:24 it's not intentional 23:10:43 indeed? 23:11:57 not sure what's wrong with the internets inside the chroot 23:15:25 http://bsmntbombdood.mooo.com/knight_lambda.png 23:15:32 how's it look? 23:16:12 huge 23:18:08 that's better 23:20:10 it looks slightly unbalanced, maybe put the lambda and shield a bit more to the right 23:21:13 perhaps a slightly larger shield too 23:21:29 not sure about the last one 23:21:40 hmm 23:23:17 how about that? 23:23:31 about what? 23:23:41 why are you drawing knights of lambda calculus stuff. 23:25:23 perhaps a thicker shield border to balance the lambda more too 23:27:10 and then we might start thinking about colors. 23:27:18 colors are icky 23:27:31 lament: because 23:28:40 gah 23:28:44 I suck at inkscape 23:28:48 i think by this point in history it's quite a bit lame to claim to be in any way affiliated with the KotLC unless you're at least an MIT student. 23:28:49 in theory F could be a color map, so the shields could have different colors 23:30:03 maybe you could be a knight of SKI calculus. that would suit #esoteric better. :) 23:30:26 We would have to come up with some clever design 23:31:23 is that design based on anything official of the KotLC (which i know little about) ? 23:31:47 yeah 23:31:58 http://en.wikipedia.org/wiki/Image:Lambda.png 23:32:16 that image was too small, so i vectorized it and made it bigger 23:32:47 oh. 23:33:08 it seems like most of my suggestions amounted to making your design more similar to the original. 23:33:45 the edge detection didn't work so well 23:39:14 we could do something like YF above = above F(F(...)), and Y written out in SKI terms 23:39:35 or perhaps even: 23:39:44 eh no. 23:40:45 anyhow the inside of parenthesis would be shrunk of course 23:40:54 now what was it 23:46:26 wikipedia mentions the combinator by John Tromp: S S K (S (K (S S (S (S S K)))) K) 23:48:13 is that Y? 23:48:47 essentially yes, but a shorter version than the usual one 23:53:51 http://pastebin.ca/raw/402527 23:54:01 the ackermann function in lambda calculus for church numerals 2007-03-20: 00:01:07 heh. 00:01:58 Yk = (L L L L L L L L L L L L L L L L L L L L L L L L L L) where L = \abcdefghijklmnopqstuvwxyzr. (r (t h i s i s a f i x e d p o i n t c o m b i n a t o r)) 00:05:53 -!- sebbu2 has quit ("@+"). 00:05:53 -!- bsmnt_bot has quit (Remote closed the connection). 00:05:56 -!- bsmnt_bot has joined. 00:07:14 -!- ShadowHntr has joined. 00:09:07 oerjan: wget is in the chroot now 00:10:54 you really want to be hacked? :) 00:11:37 ...? 00:17:14 -!- bsmnt_bot has quit (Remote closed the connection). 00:17:16 -!- bsmnt_bot has joined. 00:21:51 -!- bsmnt_bot has quit (Read error: 131 (Connection reset by peer)). 00:22:28 -!- nazgjunk has quit ("Leaving"). 00:24:50 -!- bsmnt_bot has joined. 00:25:01 ~exec sys.stdout(os.listdir("/bot")) 00:25:02 ['files.img', 'a.out', 'scripts', 'betterbot.py', 'test.pickle', 'foo.py~', 'ski_repl.py', 'foo.py', 'ircbot.py~', 'start.sh', 'better.sh', 'start.sh~', 'ircbot.py'] 00:25:10 ~exec sys.stdout(os.listdir("/bot/scripts")) 00:25:10 ['lost+found'] 00:26:30 there's about 50MB you can use now 00:28:27 hm - it occurs to me there is nothing now preventing the download of binaries. 00:28:57 nope 00:29:05 but there is something preventing the execution of them 00:29:23 aha? 00:29:28 noexec 00:30:24 ~exec f=open("/bot/scripts/foo", "w"); f.write("foo\n"); f.close() 00:30:24 IOError: [Errno 13] Permission denied: '/bot/scripts/foo' 00:33:17 -!- bsmnt_bot has quit (Remote closed the connection). 00:33:22 -!- bsmnt_bot has joined. 00:35:42 -!- bsmnt_bot has quit (Remote closed the connection). 00:41:08 what is this noexec thing and how does it stop os.chmod? 01:02:37 -!- bsmntbombdood has quit ("Lost terminal"). 01:03:05 -!- bsmntbombdood has joined. 01:04:52 -!- bsmnt_bot has joined. 01:05:00 let's try this again 01:06:02 ~exec f=open("/bot/scripts/foo", "w"); f.write("foo\n"); f.close() 01:06:20 finally 01:06:47 ~exec f=open("/bot/scripts/foo", "r"); sys.stdout(f.read()); f.close() 01:06:48 foo 01:07:29 k 01:08:10 ~exec os.system("wget 64.233.167.99 -O /bot/scripts/google.html") 01:08:41 ~exec f=open("/bot/scripts/google.html", "r"); sys.stdout(f.readline()); f.close() 01:08:41 IOError: [Errno 2] No such file or directory: '/bot/scripts/google.html' 01:08:45 grrr 01:09:19 ~exec sys.stdout(os.system("wget 64.233.167.99 -O /bot/scripts/google.html")) 01:09:20 32512 01:09:25 32512? 01:09:44 ~exec sys.stdout(os.listdir("/bot/scripts")) 01:09:44 ['lost+found', 'foo'] 01:11:38 ~exec self.fds = __import__("popen2").popen4("wget 64.233.167.99 -O /bot/scripts/google.html".split()) 01:11:46 ~exec sys.stdout(self.fds) 01:11:47 (', mode 'r' at 0xb7c62c80>, ', mode 'w' at 0xb7c62ba8>) 01:12:07 ~exec sys.stdout(repr(self.fds[0].read()) 01:12:08 SyntaxError: unexpected EOF while parsing 01:12:19 ~exec sys.stdout(repr(self.fds[0].read())) 01:12:19 "--00:10:19-- http://64.233.167.99/\n => `/bot/scripts/google.html'\nConnecting to 64.233.167.99:80... connected.\nHTTP request sent, awaiting response... 200 OK\nCookie coming from 64.233.167.99 attempted to set domain to google.com\nLength: unspecified [text/html]\n\n 0K .. ??% \n\n00:10:19 (62.18 MB/s) - 01:12:20 `/bot/scripts/google.html' saved [2770]\n\n" 01:12:45 ~exec self.fds[0].close(); self.fds[1].close() 01:12:54 ~exec f=open("/bot/scripts/google.html", "r"); sys.stdout(f.readline()); f.close() 01:12:55 Google