00:06:38 -!- Pikhq has joined.
00:15:16 <ehird`> what's a good way to determine if a language is turing complete or not?
00:15:39 <ehird`> what fun that will be.
00:15:58 <lament> ehird`: there's several popular options for this
00:16:04 <lament> brainfuck, register machine
00:16:21 <ehird`> brainfuck probably the easiest.
00:16:25 <lament> whatever's the closest to your language
00:38:17 -!- ehird` has quit.
01:28:21 -!- ihope_ has joined.
01:45:29 -!- oerjan has joined.
01:45:46 -!- oerjan has quit (Client Quit).
01:48:28 -!- digital_me has joined.
01:53:55 -!- oerjan has joined.
01:54:00 -!- oerjan has quit (Client Quit).
02:11:58 -!- oerjan has joined.
02:20:27 -!- nooga_ has quit (zelazny.freenode.net irc.freenode.net).
02:20:27 -!- oklopol has quit (zelazny.freenode.net irc.freenode.net).
02:20:27 -!- bsmnt_bot has quit (zelazny.freenode.net irc.freenode.net).
02:20:28 -!- puzzlet_ has quit (zelazny.freenode.net irc.freenode.net).
02:20:28 -!- lament has quit (zelazny.freenode.net irc.freenode.net).
02:20:28 -!- fizzie has quit (zelazny.freenode.net irc.freenode.net).
02:20:28 -!- ville_ has quit (zelazny.freenode.net irc.freenode.net).
02:20:28 -!- helios24_ has quit (zelazny.freenode.net irc.freenode.net).
02:20:28 -!- oerjan has quit (zelazny.freenode.net irc.freenode.net).
02:20:28 -!- EgoBot has quit (zelazny.freenode.net irc.freenode.net).
02:20:28 -!- SimonRC has quit (zelazny.freenode.net irc.freenode.net).
02:41:42 -!- EgoBot has joined.
02:41:42 -!- SimonRC has joined.
02:42:20 -!- fizzie has joined.
02:42:20 -!- helios24_ has joined.
02:42:20 -!- ville_ has joined.
02:42:36 -!- puzzlet_ has joined.
02:42:36 -!- lament has joined.
02:42:51 -!- oklopol has joined.
02:42:51 -!- nooga_ has joined.
02:43:31 -!- bsmnt_bot has joined.
02:48:37 -!- oerjan has joined.
03:34:52 -!- ihope_ has quit (Read error: 110 (Connection timed out)).
04:14:24 <bsmntbombdood> "The object-oriented model makes it easy to build up programs by accretion. What this often means, in practice, is that it provides a structured way to write spaghetti code." -- Paul Graham
05:44:19 -!- digital_me has quit ("leaving").
05:50:59 <SimonRC> (yay! got to the castle in NH!)
06:20:58 -!- oerjan has quit ("leaving").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
12:06:52 -!- nooga_ has quit (zelazny.freenode.net irc.freenode.net).
12:06:52 -!- oklopol has quit (zelazny.freenode.net irc.freenode.net).
12:08:37 -!- oklopol has joined.
12:08:37 -!- nooga_ has joined.
13:06:39 -!- oerjan has joined.
13:18:28 -!- Pikhq has quit (Read error: 110 (Connection timed out)).
13:52:41 -!- jix__ has joined.
13:54:02 -!- Pikhq has joined.
14:14:51 -!- Pikhq has quit (Read error: 110 (Connection timed out)).
15:51:55 <SimonRC> hmm, there has been no apology or explanation for last night's outage.
15:55:04 <oerjan> actually i may not have noticed because i couldn't reach this account i use for irc because nvg's home directories went down.
15:55:45 <oerjan> although somehow i doubt you are speaking of _that_ outage.
15:56:51 <SimonRC> there was a mungo netsplit which lasted 20 mins and the netowrk came back in bits and pieces
15:58:50 <oerjan> interesting that irc has so many netsplits because it is tree structured without cycles, and somehow they cannot fix that fundamental flaw
15:59:37 <oerjan> when i think about it i read it in the original rfc
16:04:08 <SimonRC> routing in a non-tree is a PITA
16:04:36 <SimonRC> you need to keep a databse of comments that people have said in the last few seconds, and keep comparing
16:04:45 <SimonRC> assuming you want something USENET-like
16:08:13 <oerjan> on the other hand once a netsplit is detected there shouldn't have to be 20 minutes to make a new route.
16:08:52 <oerjan> but of course i don't know how smart irc networks actually are about that.
16:13:19 <SimonRC> Oooh, wise words from Stroustrup: "I particularly dislike classes with a lot of get and set functions. That is often an indication that it shouldn't have been a class in the first place. It's just a data structure. And if it really is a data structure, make it a data structure."
16:17:28 <SimonRC> Oooh, more (from the interviewer): "Anything that's just using the data, but not defending the invariant, doesn't need to be in the class."
16:20:00 <SimonRC> puzzlet_: that regex mtches an awful lot
16:20:26 -!- puzzlet_ has changed nick to puzzlet.
16:23:26 <oerjan> will someone else try an emote?
16:25:34 <oerjan> somehow the nick of whoever "worships B.S." did not show up on my screen. I just got colors in irssi after someone removed an old version, but now i seem to have some invisible text.
16:27:31 -!- oerjan_ has joined.
16:28:03 -!- oerjan_ has quit (Client Quit).
16:28:25 <oerjan> yep, the nicks of emotes don't show up at all.
16:29:59 <oerjan> it's white on white. the nick is invisible but does affect the indentation of the following text.
16:34:58 -!- oerjan_ has joined.
16:35:45 -!- oerjan_ has quit (Client Quit).
16:39:28 <oerjan> it's white bold on white, and i have set them equal.
16:48:11 * oerjan boggles at whoever decided "white" in ANSI should not mean white.
16:49:29 -!- sebbu has joined.
16:50:59 <SimonRC> oerjan: it comes in two varieties: dark whit and light white
16:51:08 <SimonRC> sigh: "The halting problem proves that no algorithm can be proven correct."
16:51:20 * SimonRC fwaps the person who said that
16:52:35 <oerjan> yes, but the dark white is for some reason the default background, unless they go one "better" and make it black.
16:54:31 <oerjan> hmph, from the look on my screen it seems like irssi is assuming my text is white on black, because all the highlighted colors are light.
16:55:08 <oerjan> of course dark white on dark black makes more sense than the other way around.
16:56:38 -!- crathman has joined.
17:12:58 -!- sebbu2 has joined.
17:16:48 -!- sebbu3 has joined.
17:20:01 -!- Feuermonster has joined.
17:20:48 -!- sebbu has quit (Connection timed out).
17:36:01 -!- sebbu2 has quit (Connection timed out).
17:46:58 <SimonRC> "Scheme programmers *do* know about OO. They have each implemented it at least a dozen times."
17:55:02 -!- sebbu3 has changed nick to sebbu.
18:21:22 <oklopol> or just randomly googolating for quotes?
18:29:03 -!- Feuermonster has quit (Read error: 110 (Connection timed out)).
18:38:04 -!- atrapado has joined.
19:05:25 -!- ehird` has joined.
19:05:45 <ehird`> http://esoteric.sange.fi/brainfuck/bf-source/prog/oobrain.b oh my go
19:09:32 * sebbu regarde heroes 122
19:11:02 <oerjan> interesting. there is already something non-esoteric by that name.
19:11:46 <oerjan> as well as an actual brainfuck extension.
19:12:31 * ehird` wonders what INTERCAL++ would be called
19:12:47 * ehird` honestly has no idea how to add one to a number and assign the var to it in intercal
19:13:15 <oerjan> that's in the INTERCAL standard library.
19:17:53 <SimonRC> I would be nice as a BFM library I suspect.
19:18:16 <ehird`> it was written in 2003
19:18:45 -!- nooga_ has quit (Read error: 110 (Connection timed out)).
19:20:01 <ehird`> mod_bf OOP framework? ;;)
19:21:54 <SimonRC> it's a framework rather than a library for BF programs because it determines the structure of the code you write
19:22:53 <ehird`> you fit libraries to your code, frameworks fit your code to them
19:25:47 <SimonRC> The stack paradigm actually makes BF not-totally-insane, by increasing the locality of things
19:27:00 * ehird` pasted http://pastie.textmate.org/61810
19:27:05 <ehird`> worse than befunge, methinks..
19:27:50 <SimonRC> linear typing might help too
19:28:32 <ehird`> a horridly morphed 2d language
19:29:00 <SimonRC> I will now attempt to decrypt...
19:29:33 <SimonRC> : = dup, ! = halt, ? = go up if false and down if true
19:30:11 <ehird`> : is "get a character of input and push its ascii value to the stack"
19:30:20 <ehird`> but the rest is correct
19:30:26 <SimonRC> digits push themselves, - subtracts
19:30:36 <SimonRC> or do *numbers* puh themselves?
19:30:49 <ehird`> it basically walks forward until it stops finding digits.
19:30:57 <ehird`> - pops two numbers off the stack, subtracts them, and pushes the result
19:31:32 <ehird`> < swaps two items on the stack
19:31:39 <ehird`> [1,2,3] < results in [1,3,2]
19:31:54 <ehird`> why i do that is revealed when you figure out what c does
19:31:58 <SimonRC> and the program area must wrap
19:32:10 <ehird`> it /does/, but that's not used here
19:32:45 <ehird`> a character. c pushes the character below itself as an ascii value
19:32:58 <ehird`> which i suspect could be used in quines if going downwards.
19:33:16 <ehird`> you see, . the printer, since everything on the stack is just a number, can't tell where the string starts
19:33:22 <ehird`> so i just make it stop when it finds ^ ;)
19:33:30 <ehird`> (^, $ - regexp start/end of line)
19:34:06 <oerjan> hm... instead of having a language parse sequences of digits, it could treat a digit as "multiply by ten, then add this".
19:34:41 <ehird`> it's not wtf-inspiring though :)
19:34:50 <SimonRC> does ? throw away the value at the top of the stack?
19:34:55 <ehird`> i'm considering making the implementation of ? replace itself with j or h depending on the condition, then going back one
19:35:07 <ehird`> and it does, but i've realised it shouldn't
19:35:11 <ehird`> as then i can't print the character
19:35:16 <ehird`> thanks, i was trying to fix that bug!
19:35:49 <SimonRC> you need to be consistant, the tradition with stacks is that everything uses up all its input unless there is a very good reason not to.
19:36:11 <ehird`> tradition? this is an esolang, is it not? :)
19:36:40 <SimonRC> you should really follow befunge and make the if operators use up their predicate
19:37:22 * oerjan wonders if SimonRC ever looked at Glass.
19:37:27 <ehird`> awkward languages are the only fun esoteric ones ;)
19:38:22 <SimonRC> I disagree. We all failed to invent linear types, despite them being very esoteric, and *they* are fun and esoteric.
19:39:01 <oerjan> it may not abuse the stack in _that_ particular way, but it is certainly awkward.
19:42:34 * ehird` pasted http://pastie.textmate.org/61817
19:42:39 <ehird`> hmmm/.. it's hanging after two lines
19:42:46 <ehird`> god knows why it even DIES on two lines
19:56:09 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
20:00:42 <SimonRC> ehird`: I think you are mixing up your l with your 1
20:01:11 <SimonRC> the third line of the program should be something like: l10+c<.j
20:02:12 -!- coatgrinder has joined.
20:04:30 <SimonRC> Do you know much about C++?
20:05:14 -!- atrapado has quit (Read error: 110 (Connection timed out)).
20:06:31 <ehird`> ? moves up or down, it doesn't change the direction of execution
20:07:19 <ehird`> i add 10 because i had subtracted it previously
20:07:22 <ehird`> that's on another copy
20:09:41 -!- sebbu2 has joined.
20:12:20 -!- jix__ has joined.
20:14:02 <ehird`> (C++)-- has no seq points, it is undefined.
20:14:16 <ehird`> Possible solution: Seperate the expression into multiple statements.
20:14:41 * ehird` reads too many compiler errors
20:18:34 <ehird`> int C = 0; (C++)--; is undefined, but it probably results in C being 0
20:21:12 <coatgrinder> i reached mental condition when i can understand the i = i++ + ++i
20:23:50 <oerjan> eh, * doesn't have to be applied to an lvalue.
20:24:08 <oerjan> indeed, x++ probably isn't one.
20:26:04 <ehird`> coatgrinder: undefined.
20:26:11 <ehird`> you just understand it as your compiler does.
20:26:32 <ehird`> int i = 15; i = ++i + ++i should be 17 if your compiler is worth its salt
20:26:45 <ehird`> it translates to int i = 15; increment i; increment i; i = i + i
20:26:52 <ehird`> otherwise, it uses a tmp variable and that's slower.
20:28:28 -!- sebbu has quit (Connection timed out).
20:29:37 <coatgrinder> i.e. both ways would make a correct compiler
20:30:49 <ehird`> having it explode would be correct
20:30:54 <ehird`> so would having it cry
20:33:52 <oerjan> http://c-faq.com/expr/evalorder2.html
20:35:55 <ehird`> a language entirely made out of the letter Q
20:36:50 <ehird`> QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ
20:40:08 <ehird`> i'm making it basically http://esoteric.voxelperfect.net/wiki/BF_instruction_minimalization but depending on a magical counter :P
20:47:25 <fizzie> How does "int i = 15; increment i; increment i; i = i + i" lead to "i == 17"; isn't i+i 34? And anyway, you really can't deduce anything about compiler smartness out of the result; it could easily be running on an architecture where "increment i; increment i;" without some manual delay in-between would result in i being incremented only once, and be a _smart_ compiler and not use the delay, because there really shouldn't be two modifications to i between se
20:48:02 <fizzie> Nothing too interesting there: -- modifications to i between sequence points.
20:48:14 <ehird`> if the standard says it's unspecified, the compiler writers SHOULDN'T bother messing around with making it work on stupid CPUs
20:48:25 <oerjan> "Undefined means that, notwithstanding question 9.2, printf("%d", j++ <= j); can print 42, or ``forty-two.''"
20:49:17 <fizzie> Yes, that's exactly my point: the compiler writer doesn't need to bother adding the manual delay there, because it's undefined.
20:50:19 * ehird` pasted http://pastie.textmate.org/61834
20:50:21 <fizzie> But you can't deduce from the "unexpected" result that the compiler was stupef.
20:50:22 <oerjan> bsmntbombdood: you are trolling
20:50:23 <ehird`> somebody want to prove that's as turing-complete as BF? :)
20:50:41 * ehird` pasted http://pastie.textmate.org/61835
20:50:43 <ehird`> with that change it should be
20:51:39 <ehird`> - can be + 127 times, and > can be ->, and + can be +<
20:52:39 <GregorR> bsmntbombdood: In the above code (j++ <= j), it could legally do the evaluation by getting j into onto the stack twice, then comparing, then incrementing j, or by pushing j, incrementing it in memory, then pushing j again. It is therefore undefined what the result is.
20:55:42 <oerjan> a quantum computer might have registers that do not have a physical value if you try to access them in an illegal order.
20:59:33 -!- coatgrinder has quit.
21:04:13 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
21:12:56 -!- atrapado has joined.
21:16:32 -!- Pikhq has joined.
21:25:12 <oklopol> <oerjan> hm... instead of having a language parse sequences of digits, it could treat a digit as "multiply by ten, then add this". <<< i think sadol does this, though dunno if it's actually meant to do that
21:27:50 <oerjan> it doesn't look like it to me
21:31:00 <oerjan> in a language with such a feature, the digits would have to be commands, and they would ordinarily be prepended with a command meaning "set the register digits act on to 0"
21:33:03 <oklopol> ,41337 is 1337, but ,41,21337 might well be 1000+1300+30+7...
21:33:23 <oklopol> if that's anything close to what you meant earlier :)
21:38:06 <oerjan> i think it is a stretch. it doesn't fit with sadol's general syntax and semantics.
21:38:41 <oerjan> sadol seems no closer than _any_ language allowing sequences of digits to have their usual meaning.
21:39:19 <lament> a digit is a command meaning 'press a similarly labeled button on your phone'
21:39:48 <oklopol> but, 0..9 are just functions that return a value
21:40:05 <oklopol> that's what gave me the impression
21:40:27 <oklopol> that numbers are not parsed as such but instead calculated like that
21:40:27 <lament> oklopol: what's the type signature?
21:40:28 <oerjan> yes but they are the wrong functions, and they work completely differently after ,
21:40:49 <oklopol> it would be cool if it worked like that
21:41:27 <oerjan> indeed in the context of Sadol , is a function with variable number of arguments. _it_ has some of this flavor but not the digits themselves.
21:42:17 <oerjan> i would guess that ,3 x y z is 100*x+10*y+z in general, say
21:43:10 <oklopol> i don't see any real difference... might be this pain in my eyes
21:43:54 <oerjan> well in sadol you give , arguments, which possibly need not be digits.
21:44:52 <oerjan> in my idea a digit modifies a number, which may possibly not start as 0 before the first digit.
21:45:20 <oklopol> i'm beginning to understand i misunderstood you earlier
21:45:32 <lament> personally i think having digit objects is dumb.
21:45:37 <oerjan> say in a stack based language, 3 might modify the top of the stack
21:46:06 <lament> in a way, you're incorporating the decimal system into your language
21:46:19 <oerjan> well it is smart if you are trying to make every token a single character
21:46:20 <lament> and it doesn't deserve such niceties :)
21:46:59 <oerjan> which doesn't deserve such niceties? my language or the decimal system?
21:47:35 <oerjan> anyhow so far my language consists of nothing more than these digit functions, and a command to set the top of stack to 0
21:47:56 <lament> oerjan: ditch digits, use roman numerals
21:48:15 <lament> the semantics of individual commands will be deliciously fucked up
21:49:21 <oerjan> well roman numerals are very close to adding a fixed number
21:49:49 <lament> sometimes, they subtract :)
21:49:57 <oerjan> the subtractions were not in the original system
21:50:59 <oerjan> hm, it might still be possible to make them functions.
21:51:00 <lament> i suppose 'IX' and 'IV' are really single tokens
21:52:03 <oerjan> say a roman numeral adds if it divides the current number
21:53:41 <oerjan> if not, you take the remainder and inverts its sign first
21:54:05 <lament> like i said, deliciously fucked up :)
21:54:24 <lament> and you could have a mix of both notations
21:54:33 <lament> using the same register
21:54:41 <oerjan> in fact you don't need two rules. if the remainder is 0 you don't change anything by inverting it.
21:55:06 <lament> that's much better than the state-based system for parsing them that i've read about somewhere
21:55:29 <lament> of course it doesn't catch erroneous numerals but that's just convention
21:56:53 <oerjan> you could require the remainder to have the right relationship to s.
21:57:21 <lament> not sure if it's really worth it
21:57:33 <lament> and like i said, this way makes it easiest to freely mix roman and arabic digits
21:57:52 <lament> that could potentially save you some space compared to either method
21:57:59 <lament> though i dunno if it actually does in practice
21:58:17 <lament> challenge: write a program to give the shortest 'mixed' numeral for a given number :)
21:59:22 <oerjan> you could do things like 3M = 1997
21:59:23 <lament> kinda hard to beat arabic though, usually
22:01:45 <lament> is there a good way to write 1997?
22:04:20 <lament> at least the algorithm for determining the shortest numeral halts :)
22:04:56 -!- ehird` has quit (Remote closed the connection).
22:05:22 <oerjan> in numerals? exactly who were you calling sick?
22:05:32 <oklopol> you, but it was a complement
22:05:42 <oerjan> i know, i am used to it
22:07:41 <oerjan> time to fire up another copy of Hugs
22:08:10 <oerjan> i baptize these the Arombiac numbers
22:12:34 -!- digital_me has joined.
22:19:40 -!- ehird` has joined.
22:38:32 * lament generates all the numerals with 5 digits or less
22:39:32 <lament> it seems that after 3000 (MMM) there's no more gains
22:40:04 <lament> past that, arabic just wins.
22:40:23 <oerjan> that pesky exponential growth!
22:40:44 <lament> a "saner" numeral anyway
22:41:03 <lament> my entire thing is wrong!!!
22:41:52 <oerjan> yes so there will be infinitely many gains because you can always prolong a winner
22:48:10 <lament> 5009 = D9 but 5010 = L10
22:48:35 <lament> who said roman numerals were useless?
23:25:53 -!- crathman has quit ("ChatZilla 0.9.78.1 [Firefox 2.0.0.3/2007030919]").
23:43:30 -!- ehird` has quit.
23:47:21 -!- oerjan has quit ("Good night").
23:51:56 -!- sebbu2 has quit ("@+").
23:52:51 -!- atrapado has quit ("etch").