←2005-09-14 2005-09-15 2005-09-16→ ↑2005 ↑all
00:05:51 -!- GregorR has quit (Remote closed the connection).
00:12:33 -!- kipple has quit (Read error: 104 (Connection reset by peer)).
00:14:17 -!- kipple has joined.
00:15:34 -!- lament has joined.
00:29:41 -!- {^Raven^} has joined.
01:40:36 <twobitsprite> in brainfuck, can you nest []?
01:40:43 <kipple> yes
01:40:51 <twobitsprite> right on
01:41:05 <twobitsprite> so I need to implement a loop stack of sorts...
01:41:21 <kipple> you're writing an interpreter?
01:41:24 <twobitsprite> yep
01:41:31 <kipple> you don't need a loop stack
01:41:58 <kipple> you can just move the instruction pointer forwards/backwards to the corresponding [/]
01:42:42 <twobitsprite> well... if I have "[...[...]...]" and I'm at the right-most ']' I need to know where the corresponding '[' which would be the left-most...
01:43:11 <twobitsprite> I suppose could count the ']'s and do it that way, but I don't see how that's any easier...
01:43:23 <kipple> counting is easy.
01:43:33 <kipple> but feel free to use a stack
01:43:47 <twobitsprite> I'm writing it in ocaml, and using lists to store the program... it's easier to just keep a stack
01:43:57 <kipple> a stack should be more efficient as well
01:44:06 <twobitsprite> it's a direct jump that way, I don't have to traverse backwards...
01:44:08 <kipple> as you can jump directly to the right address
01:44:13 <twobitsprite> exactly
01:44:46 <twobitsprite> well, thanks :)
01:45:38 <kipple> you're welcome. and good luck :)
01:45:41 <twobitsprite> also, have you heard about braintwist?
01:45:51 <kipple> yes
01:46:01 <kipple> can't remember which that one is though
01:46:14 <kipple> there are so many bf-like languages
01:46:58 <twobitsprite> its the one where the program resides in one array, and the data in the other, and there is a new operation '@' (or something) which causes the arrays to change locations so that now you are executing from the data array, or something
01:47:14 <kipple> ah, that one.
01:47:20 <kipple> that's quite nice
01:47:24 <twobitsprite> I can't find much about it, but it seems like a fun one, I'm just trying to figure out how it would work...
01:47:27 <lament> twobitsprite: another way is to keep a dictionary
01:47:32 <lament> of all loop starts and ends
01:47:41 <lament> so that you look up where to jump to
01:48:08 <lament> the dictionary is only built once when the program is loaded.
01:48:19 <lament> this might be faster, i'm not sure
01:48:29 <twobitsprite> lament: that might be good... it would optimize larger programs better than small ones though, because you have an extra scanning pass at the beginning of execution...
01:48:35 <lament> right
01:48:43 * twobitsprite ponders
01:48:49 <lament> but small programs are fast anyhow :)
01:48:54 <twobitsprite> true...
01:49:01 <lament> besides, who writes small programs in BF anymore ;)
01:49:06 <twobitsprite> and I'll probably be dealing with fairly large programs...
01:49:09 <twobitsprite> lol
01:49:14 <kipple> well, if you scan the programs before execution there are of course a lot of optimizations you *could* do...
01:49:41 <twobitsprite> kipple: i.e. remove superfluous commands, i.e. "+-" etc...
01:49:56 <kipple> merging ++++++++++++++++ into a singe instruction
01:50:01 <twobitsprite> kipple: yeah
01:50:13 <lament> twobitsprite: also, [->>+++<<] gets optimized into a single instruction, hopefully
01:50:18 <kipple> and swapping [-] with A[P]=0
01:50:21 <lament> and any other expression of that form
01:51:09 <twobitsprite> indeed... this is slowing becoming a larger project, but much more interesting... I might have to do some of this... :)
01:51:31 <lament> the effect is very very noticeable, btw
01:51:56 <twobitsprite> btw, fyi, I'm using brainfuck to implement genetic algorithms :) I.e. bf programs will be randomly generated, executed and "bred"/etc... :)
01:52:16 <kipple> brainfuck is very nice for that purpose :)
01:52:33 <twobitsprite> I figured it would be at least fun/interesting :)
01:52:51 <twobitsprite> I was thinking about using OISC, but bf seemed more fun to implement...
01:53:06 <kipple> then I see why you want a very efficient interpreter :)
01:53:12 <twobitsprite> indeed!
01:53:36 <lament> optimizing brainfuck past the things already mentioned is quite a challenge
01:53:50 <twobitsprite> I plan on having thousands of these programs running at a time, competing round-robbin :)
01:54:06 <lament> hm, that might be slow :)
01:54:35 <twobitsprite> it will... but I also plan to have this distributed, a la SETI@home...
01:54:38 * twobitsprite has high asperations...
01:54:39 <kipple> that's normal for genetic algorithms
01:55:23 <kipple> have you seen this, by the way?
01:55:23 <kipple> http://esoteric.voxelperfect.net/wiki/FukYorBrane
01:55:50 <twobitsprite> kipple: well, not many do an actual round-robbin... most do double or single elimination because it's easier, but you also run the risk of premature convergance that way...
01:56:19 <twobitsprite> kipple: no text in that page...
01:56:27 <kipple> what?
01:56:28 <kipple> strange
01:56:45 <kipple> works fine for me
01:57:45 <twobitsprite> ahh, sorry, gnome-terminal doesn't interpret a \n as whitespace in URLs, and appended the timestamp from the next line onto it...
01:58:31 <twobitsprite> lol... that's awesome... I'll have to start hacking that
01:58:45 <kipple> unfortunately it seems like the homepage is down
01:59:07 <twobitsprite> befunge.org is usually pretty reliable, too..
01:59:43 <twobitsprite> I'm assuming by "bomb" they mean stops executing somehow?
02:00:21 <kipple> IIRC a program is terminated if the IP reaches a certain instruction
02:00:40 <twobitsprite> interesting...
02:04:12 <kipple> anyway, doing some genetic programming with an esolang has been something that I've wanted to try myself, but it's on the list of unfulfilled hobby projects ;)
02:33:05 <twobitsprite> can someone cite an example of a "post canonical system"?
02:56:05 -!- wildhalcyon has joined.
03:01:30 <wildhalcyon> The whole goal of my language design is to implement a genetic "digital organism" scenario for a fungeoid
03:01:53 <wildhalcyon> so this is interesting
03:03:54 <wildhalcyon> a braintwist corewars simulation would be cool, but Im not sure how they would fare in a genetic organism sense.
03:08:53 <wildhalcyon> Also, Im afraid I can't give any good definitions of post canonical systems, but there are a couple nice esolangs that implement tag systems
03:20:27 <cpressey> wildhalcyon: which would those be?
03:20:27 <wildhalcyon> Wasn't Thue based on a tag system?
03:20:27 <wildhalcyon> I know fundamentally its based on semi-thue grammar
03:20:27 <wildhalcyon> which still makes it cool
03:20:27 <wildhalcyon> Hmm, now I feel humbled, not finding any tag system languages. I swear I remember reading at least one spec that mentions tag systems
03:22:27 <wildhalcyon> Someone should write a wang tile esolang
03:23:20 * twobitsprite is overwhelmed by the jargon, maybe I should spend a day meditating on the esolang wiki...
03:23:42 <kipple> hehe. you're not the only one
03:24:25 <twobitsprite> I'm still trying to grok "functor" and have only a cursory understanding of "monad"...
03:24:29 * wildhalcyon is overwhelmed by jargon in his own head
03:24:51 <wildhalcyon> Hmm. I'll have to say I have NO idea what the heck a functor is.. I'll google it
03:25:26 <wildhalcyon> Hmmm, okay. No clue!
03:25:28 <twobitsprite> wildhalcyon: check out the core language manual for OCaml, they talk about modules and functors quite a bit...
03:26:16 <twobitsprite> http://caml.inria.fr/pub/docs/manual-ocaml/manual018.html
03:26:58 <twobitsprite> but maybe you'd have to understand OCaml to get anything useful out of that
03:29:23 <kipple> http://en.wikipedia.org/wiki/Functor
03:29:25 <wildhalcyon> Well, I guess that helps me understand functors in a more applicative setting
03:30:22 <wildhalcyon> the wikipedia entry scared me. I generally get scared when I see "abelian groups" mentioned anywhere
03:30:43 * twobitsprite googles abelian
03:31:40 <twobitsprite> "A group for which the elements commute (i.e., AB==BA for all elements A and B) is called an Abelian group. "
03:31:44 <twobitsprite> yeah, sounds scary...
03:32:00 <twobitsprite> :P
03:32:14 <wildhalcyon> Well, not necessarily. I understand abelian groups themselves.. but when they're MENTIONED. I just dont like group theory much
03:32:37 <twobitsprite> ahh... I just want to know the difference between group theory and set theory...
03:32:46 <twobitsprite> does group != set?
03:33:17 <wildhalcyon> I believe groups have a structure to the elements. In set theory the order of the elements don't matter, correct?
03:33:26 <twobitsprite> ahh
03:33:55 * twobitsprite hopes that "?" is rhetorical, lest you be asking the wrong person...
03:34:29 <cpressey> a group = a set plus an operation on that set
03:34:31 <twobitsprite> although, I seem to remember something about that in my descrete math class I took, so you might be right...
03:34:42 <wildhalcyon> It was rhetorical in the sense that you don't need to answer it, but I can't really tell you what is correct
03:34:46 <cpressey> and the operation has to fulfil certain properties
03:34:50 <wildhalcyon> Mr. Pressey saves the day!
03:36:44 <cpressey> i've been reading some weird stuff about finite automata as semigroups lately... it's pretty strange. you can do linear algebra on regexps if you try hard enough :)
03:37:27 -!- kubient has quit ("running(out)").
03:38:14 <wildhalcyon> How hard do you have to try?
03:40:30 <wildhalcyon> Chris, I have to admit, you come up with good language names
03:44:34 -!- kubient has joined.
03:48:47 -!- kipple has quit (Read error: 110 (Connection timed out)).
03:55:06 -!- kubient has quit (Remote closed the connection).
04:05:28 <cpressey> wildhalcyon: well, you have to treat alternation (a|b) as addition, and concatenation (ab) as multiplication, and you can solve sets of simultaneous equations of the form X = CX + Y where X, C, and Y are regular expressions
04:05:32 <cpressey> blew my mind :)
04:15:51 <wildhalcyon> Hmm.. okay, that's kind of freaky
04:24:02 <wildhalcyon> It seems like everything is turing complete nowadays
04:24:43 <wildhalcyon> I guess regex's arent TC, but they can solve linear algebra systems
04:26:33 <wildhalcyon> Oh well, me and my fractured rib are calling it a night. G'night!
04:27:56 -!- wildhalcyon has quit ("Whoops, There I go").
04:42:30 <twobitsprite> what would one have to add to regexps to make them TC?
04:49:27 <lament> the easiest thing is to be able to reapply a regex
04:49:45 <lament> er
04:49:56 <lament> i mean, reapply a substitution
04:50:06 <twobitsprite> recursion?
04:50:06 <lament> i.e. running a substitution in a loop until it fails to match anything is TC
04:50:22 <lament> but that's probably not what you meant :)
04:50:58 <lament> (actually, i'm not sure about this. hrm)
04:50:59 <twobitsprite> well... running a sub in a loop would simply be a compiler, in which case the thing you are applying the regex to is the actual language, right?
04:51:25 <lament> not sure how that would be a compiler.
04:51:35 <lament> compilers produce code of some sort.
04:52:16 <twobitsprite> but I would imagine that the "code" being produced is the state the string you're applying this to after each step of the process, no?
04:52:46 <lament> how's that "code"?
04:52:50 * twobitsprite thinks...
04:53:02 <lament> er
04:53:02 <lament> wait
04:53:06 <lament> i guess you're right
04:53:11 <lament> blah
04:53:42 <twobitsprite> the rexeg would have to have some way to modify itself or at least create new regex to be applied, no?
04:54:03 <twobitsprite> otherwise regex is just a recursive function being applied to its output...
04:56:16 <twobitsprite> I guess the problem is, regex can't branch really...
04:57:19 <twobitsprite> I think I might just be confusing myself
04:59:46 <twobitsprite> one article on slash-dot (not that they can always be trusted) says that Perl's regex _is_ turing complete... but I think that might just be because you can embed Perl expressions in regex...
06:37:40 -!- Arrogant has joined.
06:38:47 <Arrogant> The channel always this jumpin'?
06:40:05 <twobitsprite> always
06:40:28 <twobitsprite> you missed our discussion about turing-complete regexps... :P
06:43:58 * Arrogant is making BF with functions
06:44:15 <Arrogant> Somehow I think it's against all that BF stands for.
06:44:23 <Arrogant> Like. Fucking with brains.
06:46:36 <Arrogant> also, turing-complete regexps... isn't that what Perl is all about :D
06:53:58 -!- nooga has joined.
06:54:05 <nooga> hi
06:54:26 <lament> brainfuck with functions? there's several.
06:56:52 <nooga> heh
07:00:20 <Arrogant> Yeah.
07:00:27 <Arrogant> There're too many variations to count.
07:00:33 <Arrogant> I just felt like making my own.
07:01:15 <lament> i beg you to reconsider :)
07:01:23 <Arrogant> It's already done.
07:01:33 <lament> ouch
07:01:50 <Arrogant> Uses a real parser to do it too XD
07:01:56 <Arrogant> pyparsing library
07:02:17 <Arrogant> It's probably the most flexible Brainfuck, at least.
07:02:43 <lament> disgusting.
07:02:52 <Arrogant> Indeed.
07:03:11 <lament> you should use words as tokens, then.
07:03:35 <Arrogant> That'd take a change in a couple lines of code
07:03:39 <lament> begin subtract left add left add right right end
07:03:49 <Arrogant> I don't want to though :/
07:03:56 <nooga> macro brainfuck lol :D
07:05:12 <nooga> i just thought about macros in brainfuck :>
07:05:41 <Arrogant> I think there're a couple of those
07:06:14 <nooga> Arrogant: what esolang is your favourite?
07:06:31 <Arrogant> nooga: Befunge
07:06:58 <Arrogant> Anyway
07:07:24 <Arrogant> {zero:[-]} /* Sets cell to 0 */ ++++{zero}! /* Outputs 0 */
07:08:17 <Arrogant> A function is passed a NEW memory array, with the current cell's value in cell 0 of that array.
07:08:59 <Arrogant> On call, the current cell is set to the value of tempContext.mem[tempContext.pointer]
07:09:17 <nooga> aha
07:09:18 <Arrogant> I'll probably make macros too, would take minimal effort.
07:10:24 <nooga> tokigun
07:18:55 <Arrogant> Hmm. I seem to be hitting some nasty STOP DOING ANYTHING with this
07:26:37 <lament> my favourite esolang is smetana :(
07:35:04 <nooga> my favourite is SADOL ;p
07:38:53 <Arrogant> Night.
07:39:02 -!- Arrogant has quit (" HydraIRC -> http://www.hydrairc.com <- Leading Edge IRC").
07:53:59 -!- calamari has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:25:43 <nooga> heh
08:50:10 -!- nooga has quit (Read error: 104 (Connection reset by peer)).
11:12:41 -!- calamari has quit (Read error: 110 (Connection timed out)).
14:09:53 -!- kipple has joined.
14:15:16 -!- wildhalcyon has joined.
14:15:26 <wildhalcyon> Hello
14:15:37 <kipple> hi
14:16:17 <wildhalcyon> How are you senor kipple?
14:16:32 <kipple> fine thank you. and you?
14:20:13 <wildhalcyon> Just dandy
14:20:34 <wildhalcyon> My university made a fantastic decision to turn down my loan however... so Im scrambling for funding
14:21:23 <kipple> that's too bad
14:22:29 <wildhalcyon> I'll survive. I just bought a new used car though, so I've got some additional expenses to worry about this year
14:22:38 <kipple> where do you live?
14:23:03 <wildhalcyon> Raleigh, NC.
14:23:31 <kipple> ah, the US. so you get loans form your universities?
14:24:31 <wildhalcyon> Yes. They gave me one loan, but they're definition of my budget << my definition of my budget, so I decided to take out an additional private student loan through my bank
14:24:57 <wildhalcyon> Apparently, in order for the bank to award the loan, it has to go through a certification process through my school.
14:25:26 <wildhalcyon> The school not only refused to certify the loan (on the basis that my budget didn't need it), but they also failed to tell both my bank AND me about this non-certification
14:26:52 <wildhalcyon> So I have to find another way of getting some money for school
14:27:51 <wildhalcyon> Anyhow, rather than live in this world of funding and part-time jobs, I escape to the world of esolangs. Trying to find ways to make SMETANA TC and Wang Tile background patterns for CAs
14:30:17 <wildhalcyon> They're related problems. I didn't know it was an issue, until I started looking for ways to implement an inifinite, but varied, background topology for my fungoid (or is it fungeoid?)
14:30:36 <kipple> I think it is fungeoid
14:31:05 <kipple> though I don't think you'll find it in the dictionary
14:31:07 <wildhalcyon> Okay. I dont expect to see it in Merriam-Webster or Oxford soon.. hmm, maybe I should submit the words to the OED for the next printing? ;-)
14:31:59 -!- jix has joined.
14:32:39 <wildhalcyon> Hey Jix!
14:33:42 <wildhalcyon> Alright folks, its been fun, but I unfortunately have to head to class.
14:34:04 -!- wildhalcyon has quit ("Chatzilla [Firefox 1.0.6/20050716]").
14:57:24 -!- J|x has joined.
14:57:58 -!- jix has quit (Nick collision from services.).
14:58:00 -!- J|x has changed nick to jix.
17:10:22 -!- wildhalcyon has joined.
17:23:56 <wildhalcyon> Hello again
17:23:56 <jix> moin wildhalcyon
17:23:56 <jix> /away
17:23:57 <wildhalcyon> how's the day goin jix?
17:23:57 <wildhalcyon> aside from being away I guess
17:30:48 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
17:47:07 -!- {^Raven^} has quit (Remote closed the connection).
18:20:58 -!- jix has joined.
19:02:50 -!- J|x has joined.
19:02:54 -!- J|x has quit (Remote closed the connection).
19:03:05 -!- xxxxxx has joined.
19:03:20 -!- jix has quit (Nick collision from services.).
19:03:24 -!- xxxxxx has changed nick to jix.
19:40:04 -!- wildhalcyon has quit (Read error: 110 (Connection timed out)).
20:24:30 -!- int-e has joined.
21:41:12 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
23:22:33 -!- int-e has quit ("Client exiting").
←2005-09-14 2005-09-15 2005-09-16→ ↑2005 ↑all