←2007-01-01 2007-01-02 2007-01-03→ ↑2007 ↑all
00:00:01 <CakeProphet> ....
00:00:08 <NK`> :)
00:00:10 <calamari> hehe
00:00:19 <NK`> !help
00:00:21 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
00:00:23 <EgoBot> 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
00:00:24 <GregorR> YhwOS, the OS for the True Believer.
00:00:41 -!- ooooo has left (?).
00:01:31 <calamari> http://kidsquid.com/images/irdr-01Jan2007.jpg
00:02:08 <calamari> (that's a pic of my ipod screen)
00:02:38 <calamari> not too good at macro photography yet
00:03:54 <calamari> next step is to be able to click links :)
00:05:02 <bsmntbombdood> wifif
00:08:24 <calamari> what does "wifif" mean?
00:09:50 <CakeProphet> hmmm... stack-based languages are pretty easy to inspect...
00:10:05 <CakeProphet> since you can put in a debugging command to have the program print out its stack.
00:12:16 <bsmntbombdood> s/wifif/wifi/
00:13:14 <CakeProphet> but you could achieve the same effect in other languages.
00:13:36 <pikhq> With some difficulty.
00:13:38 <CakeProphet> Like in PYthon you can print globals() and locals() and get the program state from your perspective.
00:13:47 <bsmntbombdood> ja
00:13:49 <pikhq> Brainfuck's equivalent is printing out the entire memory.
00:13:54 * bsmntbombdood departs
00:14:07 <CakeProphet> Or dir(object) you peek into the scope of an object.
00:14:10 * CakeProphet waves.
00:20:39 * pikhq says "Sayounara".
00:20:50 <pikhq> Anyone seen RazorX lately?
00:27:43 <oerjan> certainly, just not under that name.
00:29:01 <pikhq> What name?
00:29:59 * GregorR points at Sukoshi
00:30:17 <pikhq> Sukoshi: Anata ga iru!
00:45:46 * bsmntbombdood hasn't seen Razor-Z long time
00:45:59 <bsmntbombdood> Razor-X
00:46:03 <bsmntbombdood> or whatever
00:52:36 -!- Asztal has joined.
00:56:56 -!- clog has joined.
00:56:56 -!- clog has joined.
00:57:27 -!- meatmanek has joined.
01:14:09 -!- fizzie has joined.
01:17:38 <Sukoshi> もしかしたら、pikhq.
01:17:43 <Sukoshi> bsmntbombdood: I'm Razor-X.
01:18:53 <pikhq> Sukoshi: Meaning?
01:19:02 <Sukoshi> ``Maybe''.
01:19:05 <pikhq> Ah.
01:19:06 <pikhq> ;)
01:21:57 <Sukoshi> あら!忘れた!あけましておめでとうございます。新年で強く生きます!!!
01:24:02 <pikhq> What's 忘 and 強 mean?
01:24:11 <Sukoshi> Your Kanji's not very strong, is it? :P
01:24:16 <pikhq> No.
01:24:32 <Sukoshi> 忘れる == わすれる, 強い == つよい
01:24:47 <pikhq> Also, what's the reading for "new year" there?
01:24:54 <Sukoshi> しんねん
01:25:04 <Sukoshi> Both are pretty easy Kanji, so :P
01:25:04 <pikhq> . . . I should've known that.
01:25:23 <Sukoshi> Annoying Kanji : 風
01:25:33 * pikhq wonders what tsuyoi means
01:25:42 <Sukoshi> Strong.
01:25:44 <pikhq> Ah.
01:26:18 <pikhq> (I can't be expected to know the kanji for words I don't know. . . As for wasureru. . . Yeah, I need to know that for class. My bad.)
01:26:56 <Sukoshi> Advantages of not taking a Japanese class.
01:27:29 <pikhq> Yeah, yeah, yeah.
01:27:38 * pikhq still doesn't have an IME set up. :/
01:28:08 <Sukoshi> 大変だわ。
01:28:30 <pikhq> 変 means. . .?
01:28:54 <pikhq> (furigana, please)
01:29:01 <Sukoshi> へん、かわ --> Strange, exchange.
01:29:10 <pikhq> Hmm.
01:29:11 <Sukoshi> Yeah. It's a Kanji which makes no sense :P
01:29:17 <Sukoshi> Here used as たいへん
01:29:20 <CakeProphet> http://deadbeefbabe.org/paste/3099 beautiful... my first esolang (that I built an interpreter for)
01:29:26 <pikhq> Ah.
01:29:29 <Sukoshi> Look. Even the J2's in my school beat you!
01:29:40 <pikhq> I'm Japanese 3.
01:29:47 <Sukoshi> J2 == Japanese 2.
01:29:56 <CakeProphet> Now I just need to add in maybe a few more commands (I kinda like it the way it is... with minimal commands though).. and maybe something weird like a preprocessor.
01:29:56 <pikhq> (to be fair, the first two years had the world's. Stupidest. Teacher.)
01:30:07 <pikhq> He waited until second year to teach *kana*.
01:30:15 <Sukoshi> .......................................................................................................
01:30:27 <pikhq> Much less kanji.
01:30:37 <Sukoshi> Almost every piece of literature I've come across, and my own experiences, scream that you should learn as little Romaji as humanly possible.
01:30:53 <pikhq> I self-taught kana first year.
01:30:57 <pikhq> Only student to do so.
01:31:14 <Sukoshi> Ouch.
01:31:26 <Sukoshi> Kana is easy to self learn though, heh.
01:32:51 <Sukoshi> 語 is also a Kanji with a lot of readings.
01:34:34 <pikhq> "Go" is the one that comes to mind.
01:35:16 <Sukoshi> こ、ご、かた、がた.
01:35:20 <Sukoshi> Ok. Not as bad as I thought.
01:35:33 <pikhq> (if that's wrong, well, it looks kind of. . . tiny on my screen.)
01:35:36 <Sukoshi> And かだ Heh.
01:42:26 <bsmntbombdood> oooh Sukoshi
01:46:07 <CakeProphet> hmmm... there's no conditional jumps in Stew though...
01:46:16 <CakeProphet> unless you can create one from the minimal tools given.
02:15:46 <oerjan> One thing I suspect is that the booleans are entirely useless for computation - you cannot do anything with them other than comparing, giving you just a new boolean.
02:17:36 <oerjan> However, it seems to me that numbers can be used to select an operator from a stack, which can then be run, giving you conditional execution.
02:20:55 <CakeProphet> hmmm... ooh yeah :D
02:21:01 <CakeProphet> I didn't think about that.
02:21:11 <CakeProphet> the @ command with some comparison operations.
02:21:42 <CakeProphet> 0 would give the current queue... 1 would give the second Queue
02:22:30 <CakeProphet> Neat.
02:22:33 <CakeProphet> That works out nicely too.
02:22:52 * CakeProphet loves it when an unintentional feature arises.
02:23:22 <CakeProphet> I also need a string-to-int int-to-string builtin.
02:23:33 -!- Asztal has quit (Read error: 113 (No route to host)).
02:23:45 <CakeProphet> maybe just call it "flip"... strings becomes ints (if possible)... ints become strings.
02:24:00 -!- Asztal has joined.
02:25:26 <CakeProphet> division and mod could easily be used as conditionals.
02:27:06 <CakeProphet> well... divsion plus floor (Python divison will be "true" division by default in later releases... but you can go ahead and specify it now using the __future__ module)
02:27:21 <CakeProphet> so uneven division will return floats.
02:28:33 <oerjan> it is also a well-known fact that 1-x and x*y with 0/1 gives you boolean not and and
02:30:26 <oerjan> you can get integer division by combining true division with mod
02:30:32 <CakeProphet> Yeah.
02:30:45 <CakeProphet> or floor.
02:31:15 <oerjan> ah yes, you have all three.
02:31:34 <CakeProphet> I might get rid of the lolno function then
02:31:56 <oerjan> isn't that negation on numbers?
02:32:07 <CakeProphet> no... right now it's boolean not
02:32:09 <CakeProphet> but..
02:32:12 <CakeProphet> since I'm removing booleans
02:32:42 <CakeProphet> True converts to 1... False and None to 0
02:32:45 <CakeProphet> should they ever pop up
02:33:23 <CakeProphet> so boolean not would work... we just don't need it.
02:33:33 <CakeProphet> I want to strip out everything :D
02:33:40 <CakeProphet> that can be done otherwise.
02:33:49 <CakeProphet> in a more unconvential way.
02:35:03 <CakeProphet> Except random :D
02:35:13 <CakeProphet> I don't want to fool with building a random number generator myself.
02:36:01 <oerjan> although that _is_ considered one of the canonical programs for a new esoteric language. :)
02:36:25 <CakeProphet> well... it's not a full blown random generator.
02:36:37 <CakeProphet> It just allows randit from 1 to a given int
02:37:08 <CakeProphet> and if the value on the queue isn't an integer... it does the from-zero-to-one-float-random-thing (forogot the name of it)
02:38:15 <CakeProphet> floor can also be sumulated with round(x - 0.5)
02:38:21 <oerjan> sounds about as much as you can expect without a full-blown library of statistical distributions.
02:38:54 <CakeProphet> I could put a shitload of the standardlb into the specification... if I wanted.
02:38:56 <oerjan> and everything else can be constructed from those two cases.
02:39:22 <CakeProphet> sockets, file IO, etc
02:39:50 <CakeProphet> which I might do as an "extended stew"... for OS related juju
02:41:06 <CakeProphet> hmm.. oh I need to add greater than and less than.
02:41:23 <CakeProphet> greaterthan-and-equal-to is just a superset of multiple operations.
02:43:21 <oerjan> i thought you said you could use div and floor.
02:43:55 <CakeProphet> I could?
02:44:26 * CakeProphet doesn't know how to do gt and lt any other way.
02:44:33 <CakeProphet> than by simply having them present :D
02:45:28 <Sukoshi> The INTERCAL stdlib has random number generation in it.
02:45:54 <CakeProphet> I like the way the syntax oscilates from postfix to prefix
02:46:03 <CakeProphet> it's really bizzare.
02:47:50 <CakeProphet> I have the urge to add a little hack to do in-line Python....
02:47:54 <CakeProphet> :D
02:49:06 <Sukoshi> You need to try out other languages.
02:49:32 <CakeProphet> Yeah.
02:49:40 <CakeProphet> I can do some schemish stuff... nothing huge though.
02:49:44 <CakeProphet> I attempted C but got bored.
02:49:46 <oerjan> let's say you have a non-zero integer and you want to test if it is positive or negative.
02:49:47 <CakeProphet> Perl looks interesting.
02:49:53 <oerjan> look at floor (1/x)
02:50:13 <Sukoshi> Write an infix->prefix translator in Scheme.
02:50:27 <CakeProphet> >.>
02:50:56 <oerjan> actually, floor (1/(2*x))
02:50:57 <CakeProphet> I can do Glass fairly well... out of all the esolangs it's the one I'm most proficient at.
02:51:25 <oerjan> on second thought, zero is not a problem either.
02:51:35 <CakeProphet> I can read most of C... I still need to learn what structs are :D
02:51:38 <oerjan> floor (1/(2*x-1))
02:51:45 <CakeProphet> don't really want to code it though.
02:52:11 <oerjan> eh, wait
02:52:17 <CakeProphet> I can do FORTH... never actually used it... but the syntax is so simple how can you -not- use FORTH?
02:52:33 <CakeProphet> -1 would give you a division by zero
02:52:47 <CakeProphet> er... 1
02:52:52 -!- Asztal has quit (Read error: 104 (Connection reset by peer)).
02:53:06 <oerjan> nope.
02:53:10 -!- digital_5e has joined.
02:53:20 <oerjan> but it isn't quite there yet.
02:53:22 <CakeProphet> oh yeah... anything multiplied by zero is one
02:53:28 <CakeProphet> duh, stupid math
02:53:54 <oerjan> floor (1/(4*x-2))
02:54:20 <CakeProphet> eh... I think I'll just use builtins for comparison :P
02:54:31 <oerjan> that should have only two possible values, -1 and 0.
02:55:12 <CakeProphet> I guess it wouldn't be too hard to implement in Stew... since it's functional, I can abstract.
02:55:30 <CakeProphet> more properly... it's "procedural" (everything is on a global stew)
02:55:45 <oerjan> so -floor (1/(4*x-2)) == (x<=0)
02:56:29 <CakeProphet> new builtins.
02:57:01 <oerjan> for floats you would take floor before doing this, giving (x<1)
02:57:02 <CakeProphet> CHORD (yes, all caps... it felt like the thing to do) switches integers to ASCII... and ASCII to integers.
02:57:23 <CakeProphet> FLIP changes ints to strings, and strings to ints.
02:57:30 <CakeProphet> er... flip
02:57:32 <CakeProphet> lower case
02:58:05 <oerjan> so a CHORD is not a string? :)
02:59:34 <CakeProphet> hehe...
02:59:42 <CakeProphet> it's a combination of chr and ord
03:00:01 <CakeProphet> which are the functions that do the underlying magic.
03:00:25 <CakeProphet> CHORD was something that would have been waaay too tedious to implement in Stew.
03:00:36 <CakeProphet> and flip was just impossible
03:01:54 <CakeProphet> I suppose you could build a BF interpreter in Stew.
03:02:02 <ihope> Yum, Stew.
03:02:22 <CakeProphet> just have a queue representing each possible symbol... and do a bunch of conditional rotations via comparisons.
03:02:35 <CakeProphet> then call the function at the top que.
03:02:38 <CakeProphet> queue
03:02:58 <CakeProphet> except... there's always that pesky while loop.
03:05:53 <oerjan> just make sure that the op for the while loop places itself back in the queue
03:06:26 <oerjan> oh, you mean the bf loop
03:06:31 <CakeProphet> yeah
03:06:37 <CakeProphet> Stew doesn't have whiles.
03:06:49 <bsmntbombdood> [] is hard to implement
03:06:50 <ihope> Trying to prove Stew Turing-complete?
03:07:00 <CakeProphet> Nah...
03:07:12 <CakeProphet> just wondering -if- it could do a BF interpreter.
03:07:15 <oerjan> can a stack contain stack elements?
03:07:15 <CakeProphet> so... I guess so :P
03:07:21 <CakeProphet> Nope.
03:07:31 <CakeProphet> Just a single of stack of queues.
03:07:41 <CakeProphet> all data is in the queues... and all the queues are in the stack.
03:07:45 <CakeProphet> it's a little weird to get used to :D
03:07:57 <oerjan> so no queues in the queues either.
03:08:12 * bsmntbombdood eats Cake(Prophet)
03:08:12 <CakeProphet> No unless you can find a bug that lets you do so.
03:08:15 <CakeProphet> which is highly likely.
03:09:08 <CakeProphet> If you push all the values from the top queue... it's removed and the one below it takes its place... if that paticular quirk helps an.
03:09:10 <CakeProphet> y
03:09:47 <RodgerTheGreat> back
03:10:02 <CakeProphet> the only loop construct in Stew (at the moment) is a function mapper()
03:10:09 <CakeProphet> which... I haven't tested yet.
03:10:11 <oerjan> is there a way to get to queues other than the top one?
03:10:36 <CakeProphet> Yeah.
03:10:47 <oerjan> how?
03:11:22 -!- digital_5e has quit (Connection timed out).
03:11:24 <CakeProphet> @ takes the topmost int from the top-most queue as a stack looker-backer.
03:11:27 <CakeProphet> like DUP in Forth.
03:11:40 <CakeProphet> pushes an old queue back to the top.
03:11:54 <CakeProphet> it's how you would do conditionals in Stew.
03:12:24 <CakeProphet> give it a comparison... it returns either 1 or 0... and use that to conditionally flip between the top two queues.
03:13:34 <oerjan> is there a way to swap or rotate the top queues?
03:13:36 -!- ihope_ has quit ("Leaving").
03:13:39 <CakeProphet> and I'm guessing... if you used negative integers it would get the bottom most queue... since I didn't really specify any sort of check for that thing... and that's how Python would do it.
03:13:49 <CakeProphet> Like I just said :P
03:13:55 <oerjan> aha!
03:13:59 <CakeProphet> Use comparisons in combination with @
03:14:10 <oerjan> that means you can use the bottom queues for globals!
03:14:29 <CakeProphet> An order list of globals :/
03:14:33 <CakeProphet> ordered
03:14:40 <bsmntbombdood> facny
03:14:44 <bsmntbombdood> *fancy
03:15:43 <CakeProphet> % is the foreach operator... it calls a function for each item in the top queue (using some fancy voodoo to make sure that each item is at the front of the queue at some point.
03:16:25 <oerjan> can you use % to delete the topmost queue?
03:16:59 <CakeProphet> hmmm... don't think you could...
03:17:19 <CakeProphet> well... if your function didn't put anything in the queue.
03:17:39 <CakeProphet> I'd need to tweak the interpreter a bit to parse an empty function though :D
03:17:47 <CakeProphet> it would take all of two seconds.
03:18:02 <oerjan> OneOrMore -> ZeroOrMore ? :)
03:18:18 <CakeProphet> yup
03:18:20 <CakeProphet> just did it.
03:18:22 <bsmntbombdood> abacus
03:18:25 <bsmntbombdood> oops
03:20:56 <CakeProphet> The queue-based counterpart to @ is .
03:20:59 <oerjan> let's say you made each BF loop into a queue.
03:21:14 <CakeProphet> you can get a specific element from the topmost queue as well.
03:21:28 <CakeProphet> allowing for inter-queue conditionals :D
03:21:33 <oerjan> placing it in a specific position from the bottom.
03:21:34 * CakeProphet forgot about .
03:22:16 <CakeProphet> (by the way "stew" is the phonetical squashing of stack and queue)
03:22:40 <bsmntbombdood> s/stew/stueue/
03:22:48 <CakeProphet> that looks silly.
03:22:51 <CakeProphet> stew is much better :D
03:22:57 <bsmntbombdood> that's the point
03:23:09 * CakeProphet likes stew better for some reason.
03:23:54 <oerjan> although stue is norwegian for living-room
03:24:10 <CakeProphet> I can't imagine stew being very efficient... pretty much any operation on it involves messing with a two-dimensional array.
03:24:13 <oerjan> or a cottage
03:24:22 <CakeProphet> stue might work nicely :D
03:24:40 <CakeProphet> it has the -ue end of queue
03:24:47 <CakeProphet> and the st- beginning of stack.
03:25:08 <oerjan> what about quack?
03:25:15 <CakeProphet> hahahaha
03:25:24 <CakeProphet> stue quack?
03:25:29 <CakeProphet> quack stue?
03:25:41 <CakeProphet> I like quack stue :D
03:25:42 <oerjan> or maybe just quack.
03:25:54 * bsmntbombdood likes
03:25:54 <CakeProphet> ...
03:26:11 <CakeProphet> meh... now I can't decide on a name.
03:26:14 <CakeProphet> so many good choices.
03:27:40 <CakeProphet> eh... for now I'll just call it stew
03:27:45 <CakeProphet> for reference purposes :D
03:28:30 <CakeProphet> hmm... wait
03:28:36 <CakeProphet> It'll be hard to get foreach to work properly.
03:28:57 <oerjan> why?
03:29:02 <CakeProphet> As functions that call will eat up their arguments and return new ones... which go on a fancy result list to the side.
03:29:15 <CakeProphet> it would be difficult to make it implicitly "eat up" values...
03:29:26 <CakeProphet> unless you just like... outputed them.
03:29:47 <CakeProphet> that's one of the few functions that eat up values and don't spit anything back.
03:29:53 <oerjan> is there a way to simply remove a value?
03:30:04 <oerjan> ah.
03:30:13 <CakeProphet> You could make it an instrinsic property of foreach... but then it would eat -too- many.
03:30:22 <CakeProphet> there's currently not a pop...
03:30:25 <CakeProphet> :D
03:30:57 <CakeProphet> pops just sorta happen as the low level commands and functions start consuming values...
03:31:42 * CakeProphet -could- add a delete command...
03:31:44 <CakeProphet> it would be nice.
03:32:53 <CakeProphet> better yet... make it a builtin... so you can foreach it :D
03:33:35 <CakeProphet> builtin functions have the advanage of being treated as data... commands have the advantage of you-don't-need-to-explicitly-call-them-they-just-happen.
03:37:56 -!- Metuk has quit (Read error: 110 (Connection timed out)).
03:39:30 <oerjan> eh, why is Stew.q not being initialized?
03:40:32 <CakeProphet> it doesn't exist anymore :D
03:40:43 <CakeProphet> It was causing problems with referencing.
03:41:08 <CakeProphet> Now it just slices from the stack each operation... which is... kind of dirty... but eh.
03:41:18 <oerjan> so the pastebin is not accurate? (http://deadbeefbabe.org/paste/3099)
03:41:22 <CakeProphet> Nope.
03:41:43 <CakeProphet> as soon as I make a little tweak, I'll post up the latest.
03:44:12 <CakeProphet> a minor tweak in how Stew does symbols allows the interpreter to call any arbitrary string as though it were an op. :D
03:44:29 <CakeProphet> ( op is the "official" term for a procedure in the Stew lingo...)
03:44:33 <CakeProphet> OFFICIAL
03:44:37 <CakeProphet> ADHERE TO IT
03:50:26 <oerjan> NEVER
03:50:43 <oerjan> WE WILL CALL IT A "DUWN"
03:51:36 <RodgerTheGreat> alright, I think I have a functioning def-bf interpreter...
03:51:52 <RodgerTheGreat> would anyone like to help me make some test programs?
03:52:11 <bsmntbombdood> +[>+]
03:52:22 <CakeProphet> hehe... got my own interpreter testing to do :P
03:52:50 <pikhq> RodgerTheGreat: Test any normal Brainfuck code.
03:52:56 <pikhq> If that fails, j00 fail.
03:53:01 <RodgerTheGreat> pikhq: already did that
03:53:06 <RodgerTheGreat> works like a champ
03:53:08 <pikhq> Mmkay.
03:53:15 <bsmntbombdood> +[<+]
03:53:17 <pikhq> Hmm. . .
03:53:29 <pikhq> Not sure what to do.
03:53:40 * bsmntbombdood dies and goes to bed
03:53:52 <CakeProphet> oerjan, oh... and functions have the nifty ability to be constants :D
03:54:03 <RodgerTheGreat> and I'm working on testing pointer control...
03:54:04 <CakeProphet> since they just push values to the stack... you can use them as constants to values.
03:54:18 <RodgerTheGreat> program counter control is going to be tricky to test...
03:54:21 <CakeProphet> I mean... ops]
03:54:23 <CakeProphet> :D
03:54:27 <pikhq> Yeah. . .
03:56:41 <RodgerTheGreat> alright, # pushes pointer location, and ; pops it.
03:56:59 <RodgerTheGreat> so if my program is >>,<++#.,;[->.<]
03:57:23 <RodgerTheGreat> with an input of "ab"
03:57:34 <RodgerTheGreat> I should get an output of "abb", right?
04:00:52 <oerjan> ah!
04:01:11 <oerjan> you can create a constant function
04:01:25 <oerjan> just use eq to start with
04:01:41 <oerjan> eh, i mean, op :)
04:02:12 <CakeProphet> :P
04:02:22 <CakeProphet> the OP needs to be called though.
04:02:34 <CakeProphet> and... currently my interpreter is printing ouit strange results.
04:02:45 <CakeProphet> ...I messed it up again. :P
04:03:11 <oerjan> what i mean is, you can use it with foreach to turn every element of a queue into the same value.
04:03:57 <CakeProphet> ...aaaah
04:04:33 <RodgerTheGreat> pikhq: er... did I code that right?
04:04:58 <CakeProphet> hehe... using esoteric languages is the fine art of misusing every bit of the languages features.
04:07:29 <oerjan> eh, is recursion the only way to do a loop in Stew?
04:07:50 <oerjan> because it might be hard on the Python stack.
04:08:21 <CakeProphet> as far as I can tell.
04:08:41 <CakeProphet> indefinite loops anyways
04:08:45 <pikhq> Um. . .
04:08:50 <CakeProphet> there's iterations.
04:08:55 <pikhq> Maybe?
04:09:28 <RodgerTheGreat> well, shit- I'm getting stack underflows. It's either a faulty program or my interpreter
04:09:38 -!- Sukoshi has left (?).
04:09:44 -!- Sukoshi has joined.
04:10:21 <CakeProphet> my interpreter keeps printing the stack with no apparent reason to do so.
04:10:29 <CakeProphet> I've searched the whole program for a reason why.
04:10:45 <RodgerTheGreat> hi, Sukoshi
04:10:47 <oerjan> you might want to adjust run to do proper tail call optimization.
04:10:52 <Sukoshi> Hey.
04:11:18 <RodgerTheGreat> I'm working on getting a functioning Def-BF interpreter going
04:11:21 <CakeProphet> oerjan, run doesn't do function calls.
04:11:23 <oerjan> so that recursion can be safely used for loops.
04:12:05 <CakeProphet> oerjan, it retrieves the functions as data... the call is from the ^ command... which calls the call() method... which calls the __call__ method of an Op object :D
04:12:30 <CakeProphet> which might be unnesiary.
04:12:50 <CakeProphet> I could easily reduce it to a call to run()
04:21:05 <CakeProphet> alright...
04:21:15 <CakeProphet> fixed some stuff... but it still prints out the stack a bunch..
04:23:35 <CakeProphet> hmmm... to make it do optimization for tail recursion you simply return the call right?
04:24:00 <CakeProphet> that ensures that Python no longer has to keep track of the functions local state.
04:24:48 * pikhq discovers that SMB3 kicks ass with a game genie. . .
04:25:01 <pikhq> Hammer Mario. All. Day. Long.
04:25:03 <pikhq> :)
04:26:08 <oerjan> or you turn the call into iteration.
04:27:43 <Sukoshi> RodgerTheGreat: Has someone finished the spec?
04:28:07 <RodgerTheGreat> I wrote the original spec, and the low-level portion is complete.
04:28:20 <Sukoshi> Link me up, Rodger.
04:28:27 <oerjan> if you check in run whether the last command in the list is ^, and then whether its argument is an op, then you can shortcut and use the same invocation of run to do it.
04:28:53 <RodgerTheGreat> The only change I made to what you've seen before is that I replaced the @ symbol with %, to free up @ as a reserved "word". One moment...
04:29:29 <RodgerTheGreat> http://nonlogic.org/dump/text/1167711731.html
04:30:06 <RodgerTheGreat> I'm implementing the low-level spec outlined in "Basic Commands"
04:30:28 <RodgerTheGreat> Currently, I've left out ? just to save myself some minor headaches
04:31:00 <Sukoshi> So, the low-level commands perform definite jumps?
04:31:06 <RodgerTheGreat> yes
04:31:26 <Sukoshi> Like +++++%. should output what?
04:31:35 <RodgerTheGreat> %: control the program counter, and #; control the pointer
04:32:14 <RodgerTheGreat> I think that ought to output CHR$(5)
04:32:42 <Sukoshi> But doesen't % jump to location 5?
04:32:51 <RodgerTheGreat> wait, no- that would infinite loop
04:32:53 <RodgerTheGreat> yes
04:32:57 <RodgerTheGreat> zero-indexed
04:33:26 <Sukoshi> Hooray. Def-BF -- More ways to infinite loop.
04:33:32 <RodgerTheGreat> yeah...
04:34:04 <RodgerTheGreat> anyway...
04:34:11 * RodgerTheGreat snaps his fingers
04:34:13 -!- BrainMachine has joined.
04:34:22 <RodgerTheGreat> bfmode
04:34:22 <BrainMachine> execution mode is currently: defbf
04:34:29 <Sukoshi> What about +++++#, inputs 'a' .
04:34:46 <Sukoshi> BrainMachine: +++++#,
04:34:49 <RodgerTheGreat> that would store a in location 5
04:34:55 <RodgerTheGreat> the syntax is
04:35:01 <RodgerTheGreat> bfprog +++++#
04:35:03 <RodgerTheGreat> er
04:35:07 <RodgerTheGreat> bfprog +++++#,
04:35:12 <RodgerTheGreat> bfinput a
04:35:13 <RodgerTheGreat> bfrun
04:35:29 <RodgerTheGreat> and that's pretty much that
04:35:44 <Sukoshi> bfprog +++++#,.
04:35:46 <Sukoshi> bfinput a
04:35:48 <Sukoshi> bfrun
04:35:48 <BrainMachine> a
04:35:52 <Sukoshi> Yay.
04:36:22 -!- oerjan has quit ("Good night.").
04:36:22 <RodgerTheGreat> bfprog +++++>>>>,<<<<#.
04:36:24 <RodgerTheGreat> bfrun
04:36:39 <RodgerTheGreat> whoops
04:36:43 <Sukoshi> Heh.
04:36:44 <RodgerTheGreat> bfprog +++++>>>>,<<<<#<.
04:36:46 <RodgerTheGreat> bfrun
04:36:46 <BrainMachine> a
04:36:54 <RodgerTheGreat> so, that aspect works
04:37:26 -!- calamari has quit ("Leaving").
04:37:26 <Sukoshi> Man. I wish I could play some more with this.
04:37:29 <pikhq> bfprog +++++#,<+++++;.
04:37:33 <pikhq> bfinput a
04:37:34 <pikhq> bfrun
04:37:35 <BrainMachine> Pointer stack underflow error. Amazing.
04:37:36 <Sukoshi> But, I must finish my homework.
04:37:36 <BrainMachine>
04:37:45 <RodgerTheGreat> lol
04:38:01 <Sukoshi> Why does it spit out some erroneous character at the end?
04:38:08 <pikhq> bfprog +++++#,<<<<<[-]>>>>>.
04:38:11 <pikhq> bfinput a
04:38:15 <pikhq> bfrun
04:38:15 <BrainMachine> a
04:38:24 <pikhq> Whoo.
04:38:35 <RodgerTheGreat> Sukoshi: oh, that's a bug/feature of the way error messages work
04:39:03 <RodgerTheGreat> it just adds a "\nError Message\n" to the output stream
04:39:29 <Sukoshi> Aha.
04:39:33 <Sukoshi> Anywho, homework time.
04:39:38 <RodgerTheGreat> cya
04:39:43 <Sukoshi> I might come up with my own interpreter tonight too.
04:39:47 <RodgerTheGreat> sweet
04:39:51 <RodgerTheGreat> the more the merrier
04:40:20 <Sukoshi> Oh, how does ? work, by the way?
04:40:44 <RodgerTheGreat> once I can get this interpreter firing on all cylinders, I'll start working on the High-Spec->Low-Spec compiler
04:41:21 <RodgerTheGreat> Sukoshi: the plan is for it to read the next n characters as long as they're numbers. Inelegant, but it works
04:41:58 <Sukoshi> How'll you tell that they're numbers? Do an ASCII bound check?
04:42:06 <RodgerTheGreat> yeah
04:42:14 <Sukoshi> Aha.
04:42:36 <RodgerTheGreat> or, since it's Java, I can repeatedly try Integer.parseInt()
04:42:49 <RodgerTheGreat> I'm not really sure which would be easier
04:42:59 <Sukoshi> Well, in the all cylinders world, there's nothing that fancy.
04:42:59 <RodgerTheGreat> it'll end up being ugly code, I know it
04:44:49 <RodgerTheGreat> if you can think of a better way for ? to work, by all means let me know
04:45:28 <RodgerTheGreat> I was thinking about having it just read in the next ascii char, but that limits values to 8-bit, and makes it hard to use interactive interpreter
04:45:29 <RodgerTheGreat> s
04:48:26 * pikhq jumps off of cliffs in SMB3, singing "Suicide is painless, it brings on many changes, I can take or leave it if I please."
04:48:58 <RodgerTheGreat> the philosophical side of nintendo.
04:49:09 <GregorR> http://www.codu.org/Kill_Yourself.org
04:49:10 <GregorR> Erm
04:49:13 <GregorR> http://www.codu.org/Kill_Yourself.ogg
04:49:13 <pikhq> Actually, it's the song from MASH.
04:49:18 <pikhq> GregorR: I've got it.
04:49:32 <pikhq> http://en.wikipedia.org/wiki/Suicide_Is_Painless
04:49:42 <GregorR> Uh, different song ...
04:49:53 <pikhq> I've got the Kill Yourself song.
04:49:57 <GregorR> Ah, OK :P
04:50:24 <pikhq> "Take out your favorite limb, take out your favorite eye, it doesn't matter how so long as you die!"
04:50:49 <pikhq> RodgerTheGreat: I'm doing Mash *and* Nintendo.
04:51:15 <RodgerTheGreat> lmao: http://en.wikipedia.org/wiki/List_of_songs_about_suicide
04:52:46 <GregorR> I should add my Kill Yourself song to that 8-D
04:53:23 <RodgerTheGreat> wtf? "Strawberry Fields Forever" isn't on the list.
04:58:30 <RodgerTheGreat> "Let me take you down/'cause I'm going to/Strawberry fields-/nothing is real/-and nothing to get hung about/"
05:03:53 <pikhq> Don't use Wikipedia to gain relevance.
05:05:37 <RodgerTheGreat> ?
05:15:20 -!- anonfunc has quit.
05:16:48 -!- anonfunc has joined.
05:32:39 <RodgerTheGreat> good night, everyone
05:32:50 -!- RodgerTheGreat has quit.
05:32:55 -!- BrainMachine has quit (Remote closed the connection).
06:39:51 <Sukoshi> I ... eat ... babies.
06:48:01 <GregorR> High-five!
06:48:29 <GregorR> http://www.donotputthebaby.com/index.php?s=Mouth
07:56:22 * pikhq would like to salute the RIAA for their claims on a) the rampancy of piracy b) the cost of each song
07:57:58 <pikhq> They have recently valued a single song to be worth $150,000. . .
07:59:05 <Sukoshi> Well, if each person is worth $1,000,000 then their songs must be some fraction of them, no?
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:00:34 <pikhq> Let's estimate that maybe 20% of the US population (6,000,000 people here) pirate songs.
08:01:00 <pikhq> Let's say each of these downloads, say, 3 albums of 12 songs a year.
08:01:23 <pikhq> 2,160,000,000 songs.
08:01:32 <pikhq> This is, obviously, a low estimate.
08:02:13 <pikhq> Now, with each worth $150,000, we get $324,000,000,000,000 worth of songs pirated.
08:02:16 <Sukoshi> I'd say 40%.
08:02:30 <pikhq> 324 trillion dollars.
08:02:56 <Sukoshi> That's more than the entire GDP of France.
08:03:10 <pikhq> For comparision, the USA GDP is $12.485 trillion dollars.
08:03:22 <Sukoshi> :
08:03:23 <Sukoshi> P
08:05:17 <pikhq> Wow.
08:05:28 <pikhq> That's an order of magnitude larger than the world's GDP.
08:06:00 <pikhq> $44,454,843,000,000 dollars.
08:06:06 <pikhq> 44 trillion dollars.
08:06:08 <pikhq> Dear god.
08:10:01 <pikhq> Shift my calculations by an order of magnitude.
08:10:51 <pikhq> 60,000,000, people, 21,600,000,000 songs, $3,240,000,000,000,000 songs pirated.
08:15:06 <Sukoshi> Well, in the RIAA's heart, that's how much is being pirated.
08:15:41 <pikhq> Only in the US.
08:16:04 <pikhq> Applying this to global scale gets us having lost every year the amount of value produced since the dawn of mankind.
08:16:20 <pikhq> (just guessing on that, but hey. Sounds about right.)
08:20:49 <pikhq> In conclusion: balding men with more cash than sense should not be allowed to talk about money at all.
08:21:07 <Sukoshi> In conclusion: We should sue the RIAA.
08:22:18 <pikhq> In conclusion: We should just let the RIAA's recent decision to sue a front company for the Russian mafia take its course.
08:22:25 <pikhq> I'm buying the popcorn. ;)
08:22:34 <Sukoshi> Ah. Russia.
08:22:53 <pikhq> They decided to sue AllOfMP3.
08:22:54 <Sukoshi> The We're-still-totalitarian-you-bums nation.
08:23:02 * Sukoshi laughs.
08:23:13 <pikhq> For. . . More than the GDP of Russia.
08:23:24 <Sukoshi> Hahahahahahaha.
08:23:42 <pikhq> Since AllOfMP3 has mafia ties, this should be rather amusing.
08:23:52 <Sukoshi> Yeah, if that happened, AllOfMP3 would own Russia by now and they'd have their own corporate army and their own figurehead President.
08:24:35 <pikhq> s/AllOfMP3/RIAA/ s/Russia/America/
08:24:38 <pikhq> Creepy.
08:24:45 <Sukoshi> Yup.
08:25:05 <pikhq> It's RIAA vs. EquallyHugeGiant.
08:25:37 <pikhq> (I've also heard rumors of the RIAA having American mafia ties. . . This gets more and more amusing.)
08:25:46 <Sukoshi> This 'aint exactly ripe fields for Socialism in the world now.
10:01:40 -!- jix_ has joined.
11:43:17 -!- tgwizard has joined.
11:49:05 -!- Asztal has joined.
12:19:24 -!- oklopol has joined.
12:32:01 -!- jix__ has joined.
12:33:20 -!- oerjan has joined.
12:40:29 -!- jix_ has quit (Read error: 113 (No route to host)).
14:33:38 -!- Asztal has quit (Read error: 113 (No route to host)).
14:46:32 -!- anonfunc has quit.
14:57:11 -!- Sph1nx has joined.
15:11:01 -!- ihope_ has joined.
15:12:33 -!- Sph1nx has quit (" !").
15:28:49 -!- ihope has quit (Read error: 110 (Connection timed out)).
15:35:43 -!- oerjan has quit ("leaving").
16:23:47 -!- RodgerTheGreat has joined.
16:23:58 <RodgerTheGreat> hi
16:28:23 -!- RodgerTheGreat_ has joined.
16:28:23 -!- RodgerTheGreat has quit (Read error: 104 (Connection reset by peer)).
16:31:18 -!- RodgerTheGreat_ has changed nick to RodgerTheGreat.
18:09:31 -!- oerjan has joined.
18:43:54 <oerjan> hey, lambdabot@#haskell also has a BF interpreter
18:51:38 <oklopol> not that shocking since a bf interpreter takes 15 minutes to write
18:52:09 <oerjan> yeah
19:04:14 -!- RodgerTheGreat has quit (Read error: 104 (Connection reset by peer)).
19:04:25 -!- RodgerTheGreat has joined.
20:21:16 -!- Asztal has joined.
20:24:48 -!- Asztal has quit (Client Quit).
21:50:46 <bsmntbombdood> using minimal evaluation with boolean and/or makes for nice looking code
21:51:28 <RodgerTheGreat> you mean making use of logical short-circuiting?
21:52:18 <bsmntbombdood> char *editor = getenv("VISUAL") || getenv("EDITOR") || (command_exists_p("emacs") && "emacs") || "vi";
21:53:05 <GregorR> Yes, making use of logical short-circuiting :P
21:54:05 <oerjan> actually it is not essential in that example.
21:54:50 <GregorR> True ... but it would be fairly inefficient without :P
21:56:03 <bsmntbombdood> void *p=malloc(x) || exit(1)
21:57:19 <pikhq> That *works*. . . But I'd rather not use such a thing.
21:57:23 <pikhq> void *p;
21:57:26 <pikhq> Err.
21:57:32 <pikhq> void *p=malloc(x);
21:57:43 <pikhq> if(!p) exit(1);
21:57:49 <pikhq> Seems a bit clearer to me.
21:57:56 <bsmntbombdood> conciseness is good
21:58:28 <pikhq> Clarity is worthwhile, IMO.
21:58:52 <oerjan> some languages call that operator 'orelse'.
21:59:12 <oerjan> which is pretty clear.
21:59:30 <RodgerTheGreat> I like the idea of making threats to your compiler
21:59:49 <oerjan> and (...) or die(1); is idiomatic perl.
21:59:50 <RodgerTheGreat> it'd be like the opposite of INTERCAL
22:00:37 <bsmntbombdood> oerjan: is that good or bad?
22:00:40 <oerjan> hm, that probably should be die("..."). my perl is getting rusty.
22:02:10 * GregorR hates perl's proponderance of silly conditional keywords.
22:02:11 <oerjan> it's good. perfectly clear, too.
22:02:28 <GregorR> Also, I hate this: do something if (x); instead of if (x) do something;
22:02:45 <GregorR> And 'unless', I hate that too.
22:02:53 <GregorR> Really, I just hate Perl.l
22:03:16 <pikhq> I hate executable line noise.
22:03:24 <oerjan> and here i was going to mention that Haskell has when and unless in the Control.Monad module.
22:03:25 <bsmntbombdood> python > perl
22:03:36 <oerjan> prefixed though, being functions.
22:03:40 <GregorR> Brainfuck > Python
22:03:54 <bsmntbombdood> GregorR: that is nice sometimes
22:03:57 <bsmntbombdood> closer to english
22:04:07 <GregorR> Closer to English != nice
22:04:29 <oerjan> Malbolge > Brainfuck :)
22:05:49 <oerjan> but what is perl > ?
22:06:02 <GregorR> A pile of horse dung?
22:06:08 <GregorR> Mind you, that's only in terms of programming.
22:06:10 <oerjan> maybe COBOL.
22:06:13 <GregorR> In general, the horse dung is more useful.
22:07:22 <oerjan> darn, has someone made a BF interpreter in COBOL yet?
22:07:36 <pikhq> oerjan: Undoubtedly.
22:07:44 <GregorR> I made one in ORK, that's like COBOL++ :)
22:07:50 <pikhq> :)
22:07:53 <bsmntbombdood> I still need to do BF in my OISC
22:08:07 <pikhq> Actually, it's ADD 1 TO COBOL GIVING COBOL.
22:08:22 <GregorR> pikhq: Sooo much typing ;)
22:08:31 <GregorR> When you say OISC, are you referring to OISC the general concept with no specific implementation or a specific implementation, such as MISC?
22:09:03 <bsmntbombdood> GregorR: MY oisc
22:09:06 <oerjan> of course that is anecdotical, i believe the GIVING COBOL is redundant.
22:09:10 <GregorR> bsmntbombdood: Ahhhhhhhh
22:09:19 <pikhq> Perhaps even INCREASE COBOL BY 1.
22:09:24 <pikhq> :p
22:09:32 <GregorR> There is such a thing as a programming language.
22:09:37 <GregorR> A programming language can be incremented.
22:09:38 <GregorR>
22:09:46 <GregorR> There is a programming language named COBOL.
22:09:50 <GregorR> COBOL is to be incremented.
22:09:58 <pikhq> Not quite.
22:10:10 <oerjan> and i think there is some reasonable expression notation in cobol as well. perhaps.
22:10:17 -!- RodgerTheGreat_ has joined.
22:10:26 <pikhq> Make your class be operated on by a mathematician named Gregor.
22:10:34 <GregorR> Oh right.
22:10:39 -!- RodgerTheGreat has quit (Read error: 104 (Connection reset by peer)).
22:10:50 <GregorR> There is a mathematician named Gregor.
22:10:54 <GregorR> Gregor's first operand is COBOL.
22:10:58 <GregorR> Gregor's second operand is 1.
22:11:01 <GregorR> Gregor is to add.
22:11:13 <GregorR> ORK is Gregor's result.
22:11:51 <GregorR> Or, the acronym for that: MNGGFOCOBOLGSO1GAORKGR
22:34:33 -!- ihope_ has quit (pratchett.freenode.net irc.freenode.net).
22:34:33 -!- tgwizard has quit (pratchett.freenode.net irc.freenode.net).
22:34:34 -!- GregorR has quit (pratchett.freenode.net irc.freenode.net).
22:35:49 -!- ihope_ has joined.
22:35:49 -!- tgwizard has joined.
22:35:49 -!- GregorR has joined.
22:41:10 -!- ihope_ has quit (pratchett.freenode.net irc.freenode.net).
22:41:10 -!- tgwizard has quit (pratchett.freenode.net irc.freenode.net).
22:41:10 -!- GregorR has quit (pratchett.freenode.net irc.freenode.net).
22:41:33 -!- ihope_ has joined.
22:41:33 -!- tgwizard has joined.
22:41:33 -!- GregorR has joined.
22:50:46 -!- ihope_ has quit (pratchett.freenode.net irc.freenode.net).
22:50:46 -!- tgwizard has quit (pratchett.freenode.net irc.freenode.net).
22:50:46 -!- GregorR has quit (pratchett.freenode.net irc.freenode.net).
22:51:08 -!- ihope_ has joined.
22:51:08 -!- tgwizard has joined.
22:51:08 -!- GregorR has joined.
23:03:50 -!- ihope_ has quit (pratchett.freenode.net irc.freenode.net).
23:03:50 -!- tgwizard has quit (pratchett.freenode.net irc.freenode.net).
23:03:50 -!- GregorR has quit (pratchett.freenode.net irc.freenode.net).
23:04:14 -!- ihope_ has joined.
23:04:14 -!- tgwizard has joined.
23:04:14 -!- GregorR has joined.
23:39:49 -!- Asztal has joined.
23:43:48 -!- ihope_ has quit ("http://tunes.org/~nef/logs/esoteric/06.08.09").
23:48:00 -!- Fordsway has joined.
23:50:12 -!- Fordsway has left (?).
←2007-01-01 2007-01-02 2007-01-03→ ↑2007 ↑all