00:09:57 hmm 00:11:48 oerjan: if smetana+1 compacts the infinite smetana program to finite size, then it's obviously turing-complete 00:12:43 oerjan: the question is whether we can consider smetana to be turing-complete, despite infinitely large programs 00:14:11 and "smetana+1 is just a notation" would be a good argument for that. 00:15:15 if it is turing complete 00:15:19 it can hardly be said to be just a notation 00:15:59 ehird`: that doesn't make any sense. 00:20:49 ehird`: Any more pebble.bfm insanity? 00:20:55 pikhq: damnit!!! i forgot 00:21:02 pikhq: =( 00:21:18 pikhq: it'll also be harder than i thought due to lack of strings in pebble 00:21:37 Meaning that you'd have to do string functions first. 00:21:44 yes 00:21:56 the hardest part would be coming up with an efficient representation 00:22:16 i mean, H1e1l1l1o1w1o1r1l1d is... bigger than neccessary 00:24:30 Only by a constant factor. 00:24:38 i mean linear. 00:24:43 And "Hello world\0x00" is. . . Not useful for string insertion in Brainfuck. ;) 00:25:38 lament: yeah well :( 00:25:51 i guess, i'll do the swapping-algorithm 00:25:55 -!- jix has quit ("This computer has gone to sleep"). 00:25:55 Helloworld0 00:25:58 to insert to string 00:26:15 make 0 the index of the string from the end you want to access 00:26:19 swap and -1 repeatedly 00:26:37 of course, to iterate 00:26:43 just go from H until you find 0 00:27:51 good algorithm? 00:27:57 though the swapping could be inefficient 00:29:18 pikhq: lament: comments? 00:29:41 i bought sheet music paper! 00:30:02 related comments? 00:30:33 10 staves per sheet, 40 sheets (related to my previous comment) 00:31:00 related to my algorithm 00:32:19 :) 00:36:57 i guess the swapping would be slow 00:36:58 no? 00:40:03 -!- RedDak has quit (Read error: 113 (No route to host)). 00:51:15 no/yes? ;) (lament,pikhq) 00:55:59 Are you looking for minimal Turing-complete systems? 00:56:21 and PEBBLE in PEBBLE 00:59:25 * ihope creates a parser called convertNewZealand 00:59:35 haha, what 00:59:39 oh -- welcome back 00:59:43 hm 00:59:45 Ello. :-) 00:59:55 It converts from unary to decimal with New Zealand. 00:59:57 is the unary->anything converter actually possible/easy in your subst lang? 01:00:03 It's certainly possible. 01:00:04 hahahaha 01:00:04 one second difference 01:00:18 so how does it utilize new zealand 01:00:40 By New including a Zealand if the string is "". 01:00:57 ...including New Zealand, I mean. 01:01:23 so what is a New Zealand 01:01:25 apart from a country 01:01:40 A backronym for "no zero". 01:01:57 And now for another regex mnemonic: "Look up there! It's money!" 01:02:10 I'm dumb. explain 01:02:22 (By the way, what regexps do you use? Custom?) 01:02:24 "" is converted to "" instead of "0". 01:02:30 Undefined, really. 01:02:39 ah 01:02:43 Though $ is a pretty important part of it. 01:04:21 Does your language have a way of putting anything to the screen? 01:04:35 A primitive or something, that does no substitutions, but has a side effect of output 01:04:44 It could easily be extended to include one. 01:05:03 Input as well. 01:05:32 Because you could make a program basically identical to fibonacci.b 01:05:41 bleach(): {/[ab]/; "w" + bleach()} 01:05:42 Writes out fibonacci numbers in decimal, one per line, until halted. 01:05:51 (With an invisible period on the end.) 01:05:58 ihope: what does that do? 01:06:07 It replaces a and b with w. 01:06:15 And... why. 01:06:22 ...and gives an error when it reaches the end of the string. 01:06:46 It was going to make input more friendly for convertNoZero, but I just realized it's actually completely unnecessary. 01:07:08 Just match . instead of w :-) 01:07:31 Well, I was thinking [ab]. 01:07:34 But yeah. 01:07:39 * ihope ponders 01:07:47 You want it to be generalized 01:07:53 I guess so. 01:08:05 since unary is just a way of encoding a string as its length, the actual contents is arbitary 01:08:27 * ihope nods 01:10:06 * ihope decides to go for little-endian increment 01:10:29 So what is your language called? 01:10:32 is it implemented? 01:11:11 No implementation. I think I'll call it Redivider. 01:11:26 It's really interesting, I might implement it :) 01:11:44 Should I finish the program or the spec first? 01:11:45 Does it have a spec or similar? I mean, defining regexps beyond the basics could be hard... 01:11:49 hahah 01:11:53 :-) 01:11:54 <1 second difference 01:12:01 and program! :) 01:12:10 Will do! 01:16:13 Is it okay if I use the word "guts" in the spec? :-P 01:16:28 Sure 01:16:29 :P 01:16:31 As in ::= "/" "/" 01:16:35 But I want to see the program first! 01:16:37 oh 01:16:40 as long as you define regexguts 01:16:41 ;) 01:16:42 Yes, I'm still doing that. 01:16:49 Pff, why would I do that? :-) 01:17:01 because otherwise i won't implement it, having no spec :P 01:17:08 i'm not going to use a third-party regexp spec 01:17:11 Okay. 01:17:14 that'd be inconsistant with other implementations! 01:17:19 I'll write my own minimalistic one, then. 01:17:22 think of all the regexp libs... you gotta define your own for portability ;) 01:17:28 just give it enough to be comfy for use 01:17:33 * ihope nods 01:17:41 Ranges, exclusion... 01:17:51 Plus /[]/, the regex that doesn't match. 01:17:53 there's not much to regexps 01:18:11 So is Redivide TC? 01:18:21 i doubt it, personally, but.. 01:18:34 I might try and write a bf interp in it. :) 01:18:46 Redivider is almost certainly TC. 01:18:48 hm, i think that would be possible 01:18:50 even simple 01:18:52 that would be cool :) 01:18:55 If http://pastebin.ca/679421 has no bugs, it is. 01:19:09 Of course. 01:19:11 But brainfuck = far more fun 01:19:12 ;) 01:19:46 very crazy suggestion for regexps 01:20:08 means "anything function x matches" 01:20:20 this would make, e.g. parsing brainfuck braces trivial 01:20:24 That sounds rather complicating. 01:20:25 though perhaps it's too bloated in your mind ;) 01:20:35 i don't know, it'd just make a lot of stuff you could think of easier 01:20:49 This language is inspired by Parsec, which is a completely ordinary combinator parser as far as I can tell :-) 01:21:28 Well, yeah, but with parsec you could insert random haskell in the middle 01:21:33 Something like (i don't know haskell) 01:21:44 match "abc" ++ callParser ++ match "def" 01:21:48 with these regexps, you can't 01:22:02 I think you can still do that here. 01:22:20 Hmm 01:22:20 how? 01:22:32 /abc/ + parser() + /def/ will work and return "abcwhatevertheparserreturneddef". 01:23:04 oh, cool 01:23:04 so 01:23:11 /[/ + bf() + /]/ 01:23:11 First it runs /abc/, which consumes the abc and returns "abc", then it runs parser(), which consumes something and returns something, then it runs /def/, which consumes the def and returns "def". 01:23:14 should parse braces? 01:23:18 right? 01:23:22 Yup. 01:23:46 If bf() parses "foo" into "bar", that'll parse "[foo]" into "[bar]". 01:24:23 If you don't like the brackets around it, then there's {/[/; x <- bf(); /]/; x} 01:24:29 hmm 01:24:35 what is a function that parses nested parens with anything in 01:24:36 i.e. 01:24:36 That parses "[foo]" into "bar". 01:24:53 (abc) ((ab)c) (a(b)(c((d)))) parses, (a etc don't 01:25:05 More importantly: some way to get the inner contents 01:25:09 (abc) returns abc 01:25:14 ((ab)c) returns (ab)c 01:25:22 but, of course, ONLY if the whole thing has well-formed braces 01:25:25 Is it possible? 01:25:26 What does (ab)c return? 01:25:32 Possible, yes. Probably easy, too. 01:25:33 ihope: ab 01:25:35 well 01:25:37 i guess that's undefined 01:25:45 but yeah ab 01:25:52 i just mean, if you can do that, then you can parse brainfuck 01:26:13 check(): /(/ + check() + /)/ + check() | /[^()]/ + check() 01:26:16 if you have "code[SENTINEL]tape", then you can run a brainfuck program trivially, iirc 01:26:19 ...with that invisible period. 01:26:28 That just checks for well-formedness. 01:27:08 grab(): {/(/; x <- check(); /)/; x} 01:27:13 Cool. 01:27:17 ...period again, gah. 01:27:21 So what are these "x"s etc? 01:27:28 Just arbitary variables that are "" by default? 01:27:36 By default, they're errors. 01:27:40 Otherwise, yes. 01:27:46 So how does grab(): {/(/; x <- check(); /)/; x} work 01:27:48 They always hold strings, never parsers. 01:28:23 It runs /(/ and throws away the result, then runs check() and stores the result in x, then runs /)/ and throws away the result, then runs x and returns the result. 01:28:31 A string is the same thing as a parser that does nothing and returns that string. 01:28:35 But what is x 01:28:40 It should be an error 01:28:43 x is a local variable, I guess. 01:28:43 You did not define it 01:28:55 x <- check() is what introduces it. 01:28:56 <- is append right? 01:29:09 No, it stores. 01:29:12 Ah 01:29:14 How do you append? 01:29:15 Or creates or some such. 01:29:17 x <- x + y? 01:29:21 <- is obviously borrowed from haskell's do notation 01:29:32 I guess you can do it that way. You might as well do z <- x + y, though. 01:29:49 These behave pretty much exactly the same way as in Haskell's do notation, yeah. 01:29:56 Why, ihope? Why have unneeded vars? 01:30:20 Less confusion, I guess, if you find that sort of thing confusing. 01:31:53 I think this is right, apart from the fact that it outputs the numbers all smooshed together if output doesn't automatically add a newline: http://pastebin.ca/755940 01:32:25 a few questions 01:32:43 is main a special name? or is it just what you called it as a convention? and, what's []? 01:33:03 There's not necessarily anything special about it. 01:33:24 foo()[blah] makes foo parse blah; otherwise, it parses from whatever it's called in. 01:33:32 Could you like put it in the spec? "If there is a main function, it is called at runtime, otherwise you are dropped in to a REPL?" 01:33:39 The "current string", I guess. 01:33:44 Sure. 01:33:48 foo()[blah]... why not just foo(blah)? 01:33:53 I can't see the ()s being used for anything else there 01:34:13 Plus it would look nicer. 01:34:41 They're for when you want parsers to take parameters other than the current string. 01:35:07 so foo(extra)[str]? 01:35:13 If so, may I humbly suggest just foo(str, extra)? 01:35:25 Good idea, yes. 01:35:30 :) 01:35:37 Though I rather feel foo(extra, str) would be better. 01:35:46 Although... What if you want extra args, but default string? 01:35:54 Maybe some kind of seperator 01:35:57 foo(str | extra) 01:36:05 no, no... that won't work nicely 01:36:06 hmm 01:36:13 how to resolve that? 01:36:22 Extra arguments but the default string would just be foo(extra). 01:36:37 How can it tell the difference between foo(str) and foo(extra)? 01:37:04 Each parser has a parameter number. If it's given that many parameters, then they're all actually parameters; if it's given one more, the last one is the input string. 01:37:28 Parser with 1 parameter number: 01:37:30 foo(str) 01:37:34 I just want to pass it a special string. 01:38:03 If foo's parameter number is 1, then str is the parameter. 01:38:16 Right! BUt I don't want it to be. 01:38:21 If foo's parameter number is 0, then str is the input string. 01:38:24 I just want to pass it an extra string, with no extra parameters. 01:38:29 Foo's parameter number is 1. 01:38:31 Tell me how. 01:38:41 If foo's parameter number is 1, then use foo(parameter, inputstring). 01:38:49 I don't want to give it an extra parameter 01:39:03 If foo's parameter number is 1, it must take a parameter. 01:39:09 Ah, ok. 01:39:12 No optional parameters 01:39:14 Right. 01:39:46 If you like those optional parameters, go the Haskell Way and use foo("J" + parameter) or foo("N") :-) 01:39:47 I suggest making inputstring the first 01:40:02 It feels like it's what the parser is being called /with/ 01:40:06 Everything else is just additional info 01:40:15 Also, it makes sense. 01:40:25 I sort of have the opposite opinion for the same reason. 01:40:28 For increasing parameter num: foo(str), foo(str,1), foo(str,1,2) etc 01:40:41 str - the main part of the parser, it's what its actually parsing - moves, in your smantics 01:40:43 which is not nice 01:41:19 Well, if parameter numbers can vary, you need some way of differentiating a parameter from an input string. 01:41:32 First parameter: string 01:41:38 Rest: parameters, function dependena 01:42:01 Function what? 01:42:13 dependant 01:42:21 The string is there regardless of the function 01:42:25 The rest is stuff added on "after the tail" 01:42:36 The input string's being optional is sort of necessary. 01:42:36 It makes so much more sense for the string to be first. 01:43:27 You need some way of making reference to the current string... or maybe this could be done without the current string stuff? Hmm. 01:43:42 look: 01:43:47 func() # current string 01:43:54 oh 01:43:55 wait 01:43:59 i get you 01:44:04 you can call a function with a parameter 01:44:06 but with the current string 01:44:10 OK, you're right, yours is better 01:44:19 Hmm. 01:44:22 Some way to mark it 01:44:23 How about 01:44:32 [abc] means "abc as string argument" 01:44:38 and can be anywhere, but is generally at the start 01:44:46 for a function with parameter value 2: 01:44:49 func(1,2) # normal 01:44:53 func([str], 1, 2) # using str 01:45:07 How would varying numbers of parameters work, anyway? 01:45:12 They wouldn't 01:45:15 I'm not talkng about that 01:45:18 But, 01:45:22 func(1,2) and func(1,[str],2) would work 01:45:28 i.e. [] just mean "string argument" 01:45:34 Seems a little pointless. 01:45:34 func2(str) # I guess, for parameter value 0, the []s would be optional, for nicety 01:45:52 so, progression: func(str) func([str],1) func([str],1,2)... 01:46:09 ihope: Well, it's nicer than allowing one additional argument. Think of the bugs - it's just not obvious at a glance 01:46:28 * ihope ponders 01:46:41 I think it's nicer, IMO 01:46:42 Just cleaner. 01:46:44 More free-form 01:46:45 Well, the input string is quite a bit like just another parameter. 01:47:02 Yes, but: 01:47:06 func(1,2,oops-an-additional-arg) 01:47:11 That could so easily be a bug. 01:47:15 And explicitness is better, I'd say 01:47:18 Indeed, it could. 01:47:29 func(1,2,oops) would be an error - "too many arguments, perhaps you need []?" 01:47:38 func(1,2,[oops]) would do what you intend 01:47:43 Though I like the look of semicolons better. 01:47:51 (Probably [] would by convention go at the start, though - func([oops], 1, 2)) 01:47:56 func(1, 2, oops;) and func(1; 2, oops) and such. 01:47:57 So, I think that'd be good. 01:48:03 but [oops] at the start or end by convention? 01:48:11 ihope: Well, it just seems not noticable enough to me 01:48:25 Hmm... 01:48:40 "It's an esoteric language; get over it"? :-P 01:48:51 Esoteric language != unplanned language 01:49:02 I think that [] here makes more sense 01:49:13 OK, How about this 01:49:20 How about func(1, 2; oops] and func[oops; 1, 2)? 01:49:23 Instead of func()[blah] 01:49:29 func[blah]() 01:49:32 or just func[blah] 01:49:33 yeah 01:49:34 so: 01:49:36 func[blah] 01:49:37 func() 01:49:41 func[blah](1,2) 01:49:47 Ah, I like that. 01:49:55 func[blah] would be sugar for func[blah](), since the former looks nicer 01:50:01 * ihope nods 01:50:09 Though maybe func[blah]() would be nicer, as its more consistant - func[blah] is the parser that matches on blah 01:50:31 Hmm 01:50:42 Well, there are no first-class parsers here. 01:50:46 output[reverse[unary()]] output[reverse[unary()]()]() 01:50:49 The former is definately nicer 01:50:50 OK 01:50:52 Yeah. 01:51:00 a[b] is a[b]() 01:51:05 a() is a[current_str]() 01:51:07 Hey, maybe we could get rid of () entirely. 01:51:12 I mean, make it optional. 01:51:14 a[b](c,d) is what you expect 01:51:21 a(b,c)[d] is an error 01:51:22 And how? 01:51:28 a[b],c,d? Ugly. 01:51:36 I think the above is probably the best 01:51:40 I mean just (), not (stuff). 01:51:49 No foo(); just foo. 01:51:49 run(): {x <- step(); output()[reverse()[unary()]]; run()[x]}. 01:51:49 -> 01:51:56 output[reverse[unary]] 01:51:57 run(): {x <- step(); output[reverse[unary()]]; run[x]}. 01:52:01 Hmm 01:52:08 ihope: I think in that case () provides more information 01:52:13 Because, otherwise 01:52:17 You could mistake it for a variable. 01:52:25 Yes, that's true. 01:52:36 I'll rewrite your paste using that proposed syntax 01:53:04 http://pastebin.ca/755956 01:53:10 IMO, it looks really clean and easy to understand. Very nice. 01:53:36 Likewise, func[a](b,c) follows naturally from that syntax. 01:53:38 Yes, you're right. 01:53:40 * ihope nods 01:53:41 OK. 01:53:49 So, can I expect a spec tomorrow maybe? ;) 01:53:50 I'm going now 01:53:57 Yup. Bye. 01:53:59 Very interesting langugae 01:54:05 It's esoteric but looks really easy to program in too 01:54:09 * ihope nods 01:54:16 OK. Leave me a memo with MemoServ if you get it done :) 01:54:20 Will do. 01:55:20 -!- ehird` has quit (Read error: 104 (Connection reset by peer)). 04:25:58 -!- tokigun has joined. 04:51:12 THIN FUNCTIONS WILL BE THE DEATH OF ME 04:52:52 GAUNT ZOMBIE FUNCTIONS, LOOKING FOR BRAINS... 04:56:22 Unfortunately, I believe that the solution is to abandon my dictum that all blocks are functions :( 04:56:50 You *could* do it as Tcl does. . . 04:57:08 Provide an "uplevel" command, which executes something up a level in the stack. 04:57:21 -!- ihope has quit (Read error: 110 (Connection timed out)). 04:57:40 Wow that's gross >_> 04:58:19 that's not very higher-order. a function should not necessarily know where it was called. 04:58:23 I guess it's not Plofy, though. 04:58:28 Mind you, it's better than thick and thin :P 04:59:52 But not much better. 05:01:51 hm... isn't a thick function essentially one that binds its escape continuation to return? 05:19:05 That's a truly bizarre way of looking at it :P 05:19:46 A thick function is the point in the call stack that a return will drop do. 05:33:48 alternately, a thick function is one which catches the return exception. you could generalize that. 05:33:57 and good night. 05:34:03 -!- oerjan has quit ("leaving"). 05:34:38 Oooh, that's a good way to think about it. 05:34:43 Returns become throws with special syntax. 05:35:01 Thick functions are just functions with implicit try/catch blocks. 05:35:18 Now, how can I use that to get rid of thick functions :P 06:58:56 -!- staplegun_ has joined. 06:59:47 -!- staplegun_ has changed nick to i4nic8. 07:00:55 howzit 07:03:24 -!- i4nic8 has quit (Client Quit). 07:03:44 -!- i4nic8 has joined. 07:05:10 piss 07:17:54 -!- i4nic8 has quit ("ChatZilla 0.9.78.1 [Firefox 2.0.0.8/2007100816]"). 07:26:42 -!- puzzlet has quit (Remote closed the connection). 07:26:50 -!- puzzlet has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 10:20:10 Hm. 10:26:33 -!- puzzlet has quit (Remote closed the connection). 10:26:37 -!- puzzlet has joined. 10:32:34 -!- puzzlet has quit (Remote closed the connection). 10:32:40 -!- puzzlet has joined. 11:09:34 -!- bsmntbom1dood has joined. 11:21:20 -!- bsmntbombdood has quit (Read error: 110 (Connection timed out)). 11:49:14 -!- jix has joined. 11:49:24 -!- jix has quit (Remote closed the connection). 11:49:51 -!- jix has joined. 12:15:15 o 12:37:45 -!- Tritonio has joined. 13:56:49 -!- puzzlet has quit (Read error: 104 (Connection reset by peer)). 13:58:26 -!- puzzlet has joined. 15:08:29 -!- ehird` has joined. 15:12:55 GregorR: that try/catch idea for thick functions is good but it doesn't help you vanquish thick/thin functions 15:13:25 Hence, " Now, how can I use that to get rid of thick functions :P" 15:13:52 :P 15:13:59 in fact it probably complicates it 15:14:07 because you introduce syntactic sugar etc and even more thick/thin semantics 15:14:28 ok, show me a recursive factorial again so i can see thick vs thin and i'll try and figure out a way to resolve it 15:16:23 :) 15:16:24 http://www.pastebin.ca/756432 15:23:32 GregorR: make it always run the program with every single combination of thick and thin functions at the same time, and introduce another, declarative, language, you have to use with the actual plof code to tell the interpreter what the correct behavior is; it can then resolve the right combination of thick/thin functions automatically 15:23:38 you're welcome. 15:23:50 wow 15:24:25 so 15:24:27 {} = thin 15:24:32 :{} = thick 15:34:32 right? GregorR? 15:34:55 -!- Tritonio has quit (Read error: 110 (Connection timed out)). 15:36:16 pikhq: pebble.bfm will be called Calculus ;) I'm working on it no 15:36:17 w 15:36:20 -!- Tritonio has joined. 15:48:44 -!- bsmntbombdood has joined. 15:48:55 -!- oerjan has joined. 15:57:39 pikhq: how does eval work? does it run at compile-time? 16:00:02 -!- bsmntbom1dood has quit (Read error: 110 (Connection timed out)). 16:24:18 * GregorR reappears. 16:24:20 ehird`: Yes. 16:24:21 oklopol: No. 16:24:32 :D 16:24:42 GregorR: How about 16:24:49 If {} is seen in the context of an assignment 16:24:54 It's thick 16:24:56 Otherwise, it's thin 16:25:03 You still have thick/thin, but it's internal only. 16:25:05 The first argument to 'if' is thick. 16:25:14 it does not need to be, though. 16:25:26 Yes it does, it returns a value that 'if' needs to catch. 16:25:40 wait, is this a new language? 16:25:44 Yeah, but {value} works 16:25:47 You don't need to use "return" 16:25:50 RodgerTheGreat: plof is not new 16:25:59 oh, ok- false alarm 16:26:08 RodgerTheGreat: there is a new language though! 16:26:13 :D 16:26:22 ehird`: Well, in Plof2, returning and evaluating to a value are identical, but I suppose that doesn't need to be the case :) 16:26:34 GregorR: Exactly. 16:26:35 So, lemme mull over cases where that might be wrong. 16:26:49 GregorR: return will zoop down the stack, but a value at the end will just evaluate to it. 16:26:55 Right 16:27:11 "zoop" being of course the technical term. 16:27:17 RodgerTheGreat: It's ihope's. It's called Redivide, and it's a turing complete substitution language. Fibonacci numbers: http://pastebin.ca/755956 16:27:48 http://pastebin.ca/679421 SK calculus implementation 16:27:53 Actually 16:27:53 no 16:27:57 that syntax is the old version 16:28:03 I'l update it (the SK calculus one) 16:28:03 interesting 16:28:24 http://pastebin.ca/756513 new SK calculus 16:28:37 to explain () vs []: 16:28:50 [x] means "parse string x", it defaults to the current string if not speciified 16:29:01 you can also pass extra parameters (if defined in the function) with (a,b...) 16:29:08 but, you cannot omit both [] and () 16:29:35 so, parser() for no arguments, parser(a) for one argument, etc. or with a different string: parser[str] (note no () - it looks nicer), parser[str](a), parser[str](a,b) etc 16:29:48 apart from that, the rest is pretty self-evident I think 16:30:25 zomg halloween 16:30:30 main(), of course, is run with an empty string by default if it's there, when interpreting/running the compiled version 16:30:34 if it's not there, it drops into a REPL. 16:30:42 A full spec is being written by ihope, it should be ready sometime today 16:30:46 But I thik it's very interesting. 16:37:46 bsmntbombdood: BOO! 16:37:53 eek! 16:38:01 :O 16:58:32 -!- bsmntbombdood has quit (Read error: 110 (Connection timed out)). 17:11:34 -!- jix has quit ("CommandQ"). 17:15:19 -!- jix has joined. 17:26:56 -!- jix has quit (Nick collision from services.). 17:27:06 -!- jix has joined. 18:03:05 -!- jix has quit ("CommandQ"). 18:09:09 -!- jix has joined. 18:58:49 -!- RedDak has joined. 19:33:29 -!- oerjan has quit ("leaving"). 19:55:33 lalaalalalalala 19:57:03 i wish i could fly 20:07:19 -!- sebbu2 has joined. 20:27:19 -!- sebbu has quit (Connection timed out). 20:37:26 -!- Tritonio_ has joined. 20:37:33 -!- Tritonio has quit (Read error: 110 (Connection timed out)). 21:23:45 oi 21:23:47 er 21:23:50 typo 21:40:58 -!- bsmntbombdood has joined. 21:42:18 -!- sebbu2 has changed nick to sebbu. 21:44:16 -!- ehird` has quit ("Leaving."). 21:45:45 -!- ehird` has joined. 22:00:37 -!- ihope has joined. 22:03:25 -!- ihope has quit (Client Quit). 22:12:33 -!- ihope has joined. 22:15:24 Ello! 22:15:34 !ollE 22:15:38 Huh? 22:16:19 ihope: yay 22:16:20 you're here 22:16:31 Yup. 22:16:40 any work on the redivide spec? :) 22:17:46 I'm still working on it. 22:17:48 woo 22:18:00 RodgerTheGreat said that redivide was interesting earlier today :P 22:18:16 Yay. 22:18:41 one comment though 22:19:14 output[str] gets away from non-purity by saying "Does no substitutions. (In an interactive interpreter, this is printed as debug output)" sneakily, 22:19:17 hah, i said it was interested before it was famous! 22:19:20 but what about input()? 22:19:31 *interesting 22:19:35 oklopol: I was interested in it when ihope first mentioned it ages ago 22:19:38 I just didn't mention it at the time :P 22:19:43 heh 22:20:07 ehird`: can't input() be the same way as output()? 22:20:24 ihope: Well, no, because it has to return the string from input. 22:20:41 ihope: You can't get away from non-purity there, unlike my above output[] definition 22:20:53 Oh, right. 22:21:02 Who cares about purity? :-P 22:21:12 Evaluation order already matters. 22:21:18 Well, if it's a substitution language it's expected that you know what's happening to the program :P 22:21:37 You know what I mean? It's like a list of rules... putting non-purity in there (that isn't carefully worded) could damage that 22:21:44 Hmm... 22:22:23 I still don't think there's much of a problem if evaluation order already matters. 22:23:25 I guess 22:24:50 multithreaded parsing! 22:25:00 ihope: please add thread support <3 22:25:07 NO! 22:25:14 ihope: you should at least allow multi threading 22:25:33 but 22:25:35 implicit 22:25:43 so an implementation can run it concurrently! :D 22:25:50 In a way that doesn't affect semantics, you mean? 22:25:53 hmm, how exactly would that be possible :P 22:26:01 ihope: yeah! 22:26:22 the fastest parser gets the string! 22:26:32 foo(bar(),baz()) 22:26:40 Evaluate bar() and baz() simultaneously if possible. 22:27:21 hmm, it's pretty hard to evaluate two parsers simultaneously unless you know how much they'll gorge already 22:28:14 ihope: yeah# 22:28:42 since there's no first-class parsers there's another easy thing 22:28:45 forbid it if IO is done 22:29:02 (no first class parsers = you can just check for output/input in them) 22:34:02 Hmm. Is it okay if .|*()[ are the only special characters outside brackets and \^-] the only special characters inside brackets for regexes? 22:34:30 Um, I guess 22:34:32 :P 22:34:37 You need \ everywhere, though 22:34:42 if you can't escape something in any place, fix that 22:35:09 ...er, yes, \ outside brackets as well. 22:35:51 Now lemme take 37.5 moments to reboot. 22:37:15 -!- ihope has quit (Read error: 104 (Connection reset by peer)). 22:38:42 -!- oerjan has joined. 22:39:51 37.5 moments = 56.25 minutes 22:39:57 Apparently it takes ihope nearly an hour to reboot. 22:40:07 what? 22:40:13 (9:46:17 PM) ihope: Now lemme take 37.5 moments to reboot. 22:40:16 (9:50:17 PM) GregorR: 37.5 moments = 56.25 minutes 22:40:26 that's not nearly an hour 22:40:59 he may have meant moment in the sense of rotation physics. maybe he passed out from it. 22:41:07 heh 22:41:09 :P 22:41:20 ehird`: How is 56.25 minutes not nearly an hour? 22:41:24 It's only 3.75 minutes short 22:41:38 GregorR: ... ihope said blah blah reboot at 9:46 22:41:42 you said that at 9:50 22:41:46 4min != 1hr 22:42:10 ihope isn't back yet .. 22:42:22 yes but it has not been nearly an hour 22:42:44 "Moment" used to be a defined unit of time measurement being 1.5 minutes. 22:42:48 37.5 moments = 56.25 minutes 22:48:30 -!- ihope has joined. 22:48:36 Okay, so maybe that was actually 387.98 moments. 22:48:58 That's slow even for my Windows machine. 22:48:58 GregorR: defines a moment as about 1.5 minutes 22:49:19 Oh, I see. 22:50:05 You calculate how many moments that actually was. 22:51:57 From now on, I will assume that all users choose their nickname in the same way that I do. 22:52:14 e.g. Ihop Erickson and Ehird `-$*@/\\\ 22:52:52 hah 22:52:58 Actually my nick is ehird 22:53:03 ehird` is just because ehird got stolen :( 22:53:06 so Ehir Dick 22:53:10 or something 22:53:14 Well, then Ehir Dickinson :P 22:53:18 At least make it a last name ;) 22:53:25 ehird`'s real name is not particularly secret 22:53:25 but I am a dick. 22:53:26 Erickson and Dickinson? 22:53:27 (Which apparently means ending it with "son") 22:53:30 oerjan: :P 22:53:45 oerjan: how come? i haven't told anyone in here it, i don't think... 22:53:49 (it's Elliott Hird anyway) 22:53:58 What's your obsession with ck and son? 22:54:09 -!- ihope has changed nick to IhopE. 22:54:49 -!- ehird` has changed nick to ehirD. 22:54:52 -!- ehirD has changed nick to EhirD. 22:54:56 Damnit 22:55:12 Van Von O'McSonovichstein 22:55:13 -!- EhirD has changed nick to EhirD`. 22:55:25 oerjan: so how is it not particularly secret? :P 22:55:33 Maybe it's Ehir Donald `-$*@/\\\. 22:55:42 EhirD`: well i did know it didn't i? 22:56:10 oerjan: i think so, but how? :P 22:56:12 it's not in my whois atm 22:56:21 maybe it was before 22:56:27 probably 22:56:40 Your name is purple? 22:56:46 My. 22:56:57 no 22:57:03 pidgin->libpurple 22:57:05 default name = purple 22:57:16 GregorR: So what is RodgerTheGreat's name? 22:57:36 * RodgerTheGreat grins 22:58:21 Rodger Therrickson Handlebrock Entrepreneur Gullible Russell Ensonava Aeota Therrickson? 22:58:50 "Gullible" = awesome name :P 22:59:01 "Wow. My name isn't in the dictionary" 22:59:12 "Gullible is one of my middle names" 22:59:15 "What's your name?" "Gullible." "Really? Wow!" "No, gotcha bitch!" 22:59:24 "...actually, yes it is." 22:59:26 haha 22:59:29 EhirD`: hm, you actually don't have a presence on the esolangs wiki? 22:59:39 thought that might have been it 22:59:43 Rodger Thomas Harry Elliot Graetz-Russell-Erickson-Aritz-Thomson! 22:59:58 I'm totally renaming myself Gregor Van Von O'McFitzsonovichstein 23:00:06 believe it or not, my name in real life *isn't even Rodger!* 23:00:14 RodgerTheGreat: WHAT 23:00:17 It's Susan. 23:00:23 wait 23:00:26 * EhirD` is gullible 23:00:32 ... i think? 23:00:36 Or Rodger Tokigun Helios EgoBot Gregor-Reddak-Ehird-Anmaster-Tritonio, which would be very weird. 23:00:47 IhopE: indeed 23:00:50 * EhirD` has a reflex that coils on sight of "Elliot" and corrects people to "Elliott" 23:00:55 RodgerTheGreat: of course not, your real name is Spot 23:01:00 But it's "Elliot"! 23:01:06 my name is Elliott 23:01:07 :< 23:01:14 Well, too bad! :-P 23:01:46 today's special VISUAL CLUE! 23:01:46 http://rodger.nonlogic.org/dump/images/1190852142-understanding.png 23:01:51 i knew EhirD`'s name. 23:02:04 yes but that's because its littered in various code and i might have told you 23:02:35 EhirD`: maybe i got it from your code too 23:02:44 i doubt it, though 23:02:48 i haven't shown all that much code here 23:02:50 that was my second theory anyway 23:05:08 EhirD`: perhaps, although i'm pretty sure i've just deduced it from your behavior, just like i did with GregorR 23:05:24 you deduced Elliott Hird from my behaviour? 23:05:31 well, of course you could deduce E Hird 23:05:34 But Elliott? i doubt it 23:05:42 RodgerTheGreat: olds! 23:05:50 olds? 23:05:53 EhirD`: no no i'm pretty sure 23:05:57 i mean, i've seen that :P 23:06:08 I'm aware 23:06:10 oklopol: james randi might want to giv e you $1mil 23:06:22 fine, have some doodles from my statistics class today: http://nonlogic.org/dump/images/1193866302-sket2.png 23:06:25 i'm pretty sure being able to determine names from behaviour is psychic 23:06:26 http://nonlogic.org/dump/images/1193866315-sket1.png 23:06:26 i don't like randy men 23:07:16 hehe, a guy in my class does that too 23:07:22 IhopE: how's the spec going? 23:07:37 if there's a pause in taking notes, he draws a random picture 23:08:21 as you can see, I don't really wait for a pause 23:08:33 what do you mean? 23:08:47 you use both hands and take notes while drawing? 23:08:52 EhirD`: I'll post it in exactly one moment. 23:08:52 or he omits notes 23:08:56 I generally don't take notes 23:08:56 IhopE: :D 23:09:02 What I have, I mean. Not the whole thing. 23:09:13 i'm pretty sure i saw a graph in there! :) 23:09:31 because I find statistics extremely uninteresting, considering how many times I've done it in various classes over the years 23:10:12 statistics does have an ugly sound to it. 23:10:25 anyway, i'll sleep for a moment now, you all have fun -> 23:10:35 I have oodles of fun in my CS classes 23:10:56 Or Rodger Tokigun Helios EgoBot Gregor-Reddak-Ehird-Anmaster-Tritonio, which would be very weird. <-- huh? 23:11:08 AnMaster: don't you think that would be a very weird name? 23:11:09 AnMaster: hello 23:11:22 IhopE, stupid highlights 23:11:23 hate them 23:11:35 anyway yes 23:11:45 IhopE, none of these are real names 23:11:46 so what? 23:12:12 GregorR mentioned pretending everyone's nick was derived the same way as his. 23:12:34 why is stdcall right to left with arguments ? 23:12:44 Gregor isn't a real name? :) 23:12:44 bartw: because stdcall is evil 23:12:52 could have fooled me 23:12:54 is it ? 23:13:12 GregorR mentioned pretending everyone's nick was derived the same way as his. <-- and how is it? 23:13:22 mine IS based on my initials (AN) yes 23:13:28 First name, last initial. 23:13:52 my name is obviously Oerja Nilsson. Sorry for fooling you all about my gender so long. 23:13:54 my real name is oklovonimol polokolmonopotol 23:14:08 Ehir Dickinson 23:14:18 oerjan, hm, sounds Scandinavian 23:14:25 * AnMaster is from Sweden 23:14:39 Norwegian here 23:14:42 ah 23:14:50 oerjan: YOU FAKED YOUR PHOTO?!12567862874623784234 23:14:51 oerjan: Gotta tell you, "Oerja" doesn't strike me as male or female :P 23:14:54 oerjan, still don't know gender of name 23:15:03 EhirD`: no i'm just very ugly. 23:15:12 RodgerTheGreat: nice drawings 23:15:25 thanks 23:15:26 oerjan, wait, "oe" O with / in? 23:15:35 oerjan, same as Swedish örjan then? 23:15:37 luckily im BartW 23:15:41 then male 23:15:42 AnMaster: yeah 23:15:43 GregorR: well if it was norwegian it would be female. The only exception i recall is "Ola" 23:15:54 AnMaster: yep 23:16:04 (ending in -a that is) 23:16:53 -!- IhopE has quit ("http://tunes.org/~nef/logs/esoteric/06.08.09"). 23:17:27 my name can be found in the source code of the brainfuck interpreter in bash I coded: http://rage.kuonet.org/~anmaster/bzr/index.py/get/bashfuck/head/bashfuck 23:17:32 optimizing, using byte code 23:17:35 yes I'm insane 23:17:49 I'm also working on a modular irc bot in bash (http://envbot.org) 23:17:50 In bash? 8-D 23:17:53 That = awesome 23:18:15 I imagine you have a library of functions that turns bash into a bit more of a general-purpose language? 23:18:16 GregorR, still, just compiling LostKing.b to byte code = about 10 minutes on my amd64 23:18:16 yeah, he is insane 23:18:20 * GregorR has always enjoyed writing shell scripts :) 23:18:22 i was about to say 23:18:27 his lostkng.b performance is terrible 23:18:34 EhirD`, yes indeed it is 23:18:44 GregorR: and no, iirc 23:18:46 he just uses bash 23:18:48 if someone can make it faster, please branch it 23:19:45 "We're all mad here. I am mad. You're mad." "How do you know that I am mad?" asked Alice. "You must be," said the Cat, "or you wouldn't have come here." 23:20:04 GregorR, I do have some stuff I reuse sometimes, stack functions, associative array emulation 23:20:13 ah yes -- quoting alice in wonderland. The post-ironic hippy way to be cool on the internet. 23:20:14 but for bashfuck I didn't reuse anything 23:20:22 EhirD`, ahahaha 23:20:57 I guess quoting Terry Pratchett doesn't work? 23:21:09 no, that's the post-hippy ironic way 23:21:35 EhirD`, eh? I got all Terry Pratchett books (except a few short stories that are out of print) 23:21:54 EhirD`, and what is the post-hippy post-ironic way? 23:21:59 actually i am quoting Narbonic, which quoted Alice in Wonderland. 23:22:01 killing yourself 23:22:05 sort of anyhow :) 23:22:09 EhirD`, I see 23:22:21 oerjan, "Narbonic"? 23:22:44 my favorite mad science webcomic so far 23:22:55 link? 23:23:04 (hm what is a "mad science webcomic"?) 23:23:05 AnMaster: google gives it as #1 result 23:23:14 * AnMaster just reads user friendly 23:23:22 http://www.narbonic.com/ 23:23:28 for the last 5 years or so 23:23:35 pff, user friendly 23:24:13 EhirD`, what? I used to read that nethack one too, dudly or whatever the name was 23:24:53 oerjan, there is no strip on the page? 23:24:54 ?? 23:25:00 or do I have to enable java script 23:25:02 I hope not 23:25:25 no JS there 23:25:31 sheesh, you could just view source 23:25:35 and also stop being JS-paranoid 23:25:36 AnMaster: the webcomic is finished, read the archive 23:25:40
23:25:42 EhirD`, ? 23:25:51 alright then 23:25:53 noscript tells me there is java script 23:25:54 :P 23:26:16 disable noscript becaues it's a stupid, paranoid extension with no real practical value 23:26:30 GregorR, btw envbot's performance is very good 23:26:41 EhirD`, what? I use tor when I browse 23:26:44 I AM paranoid 23:26:46 oh right, director's cut rerun. i haven't read that. 23:26:54 :| hah, tor 23:27:02 i guess you wear a tinfoil hat too 23:27:46 heh, today's rerun is pretty good 23:27:56 i guess you wear a tinfoil hat too <-- no? 23:34:24 Not Invented Here strikes again! 23:34:29 I have found myself writing a code editor. 23:34:54 AnMaster: does http://www.webcomicsnation.com/shaenongarrity/narbonic/series.php?view=archive&chapter=9763 work better? it's the first page of the archive. 23:37:23 whoa, AnMaster 23:37:44 oerjan, yes it does 23:37:46 bsmntbombdood, what? 23:37:52 nothing 23:38:10 bsmntbombdood, yes I coded brainfuck interpreter in bash. Yes I'm mad. Do you want anything else? :P 23:38:29 writing a brainfuck interpreter in bash doesn't make you mad around here 23:38:36 http://rage.kuonet.org/~anmaster/bzr/index.py/get/bashfuck/head/bashfuck and http://envbot.org is proof enought I'm mad 23:38:57 bsmntbombdood, using bytecode and optimiztions in the interpreter AND coding it in bash IS mad 23:39:04 writing bash in brainfuck, that would make you mad 23:39:09 bsmntbombdood: haha 23:39:18 mad for doing the impossible 23:39:53 impossible is nothing 23:40:36 bsmntbombdood, what about bash to C translator coded in bash? 23:40:48 possibly 23:44:39 wow 23:44:40 wxPython is nice 23:49:54 mad science webcomics, eh? How about Phil Foglio's Girl Genius? (http://nonlogic.org/dump/images/1193870414-idee.png) 23:50:32 RodgerTheGreat: reading that too :) 23:51:32 among other defunct/ended ones: Casey and Andy, A Miracle of Science 23:53:13 lmao. "..It heartens me to look ahead and see the bright future each and every one of you will create, using your disciplines to improve our world. Except for the computer-science majors. They're more likely to perpetrate evil."