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 in brainfuck, can you nest []? 01:40:43 yes 01:40:51 right on 01:41:05 so I need to implement a loop stack of sorts... 01:41:21 you're writing an interpreter? 01:41:24 yep 01:41:31 you don't need a loop stack 01:41:58 you can just move the instruction pointer forwards/backwards to the corresponding [/] 01:42:42 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 I suppose could count the ']'s and do it that way, but I don't see how that's any easier... 01:43:23 counting is easy. 01:43:33 but feel free to use a stack 01:43:47 I'm writing it in ocaml, and using lists to store the program... it's easier to just keep a stack 01:43:57 a stack should be more efficient as well 01:44:06 it's a direct jump that way, I don't have to traverse backwards... 01:44:08 as you can jump directly to the right address 01:44:13 exactly 01:44:46 well, thanks :) 01:45:38 you're welcome. and good luck :) 01:45:41 also, have you heard about braintwist? 01:45:51 yes 01:46:01 can't remember which that one is though 01:46:14 there are so many bf-like languages 01:46:58 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 ah, that one. 01:47:20 that's quite nice 01:47:24 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 twobitsprite: another way is to keep a dictionary 01:47:32 of all loop starts and ends 01:47:41 so that you look up where to jump to 01:48:08 the dictionary is only built once when the program is loaded. 01:48:19 this might be faster, i'm not sure 01:48:29 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 right 01:48:43 * twobitsprite ponders 01:48:49 but small programs are fast anyhow :) 01:48:54 true... 01:49:01 besides, who writes small programs in BF anymore ;) 01:49:06 and I'll probably be dealing with fairly large programs... 01:49:09 lol 01:49:14 well, if you scan the programs before execution there are of course a lot of optimizations you *could* do... 01:49:41 kipple: i.e. remove superfluous commands, i.e. "+-" etc... 01:49:56 merging ++++++++++++++++ into a singe instruction 01:50:01 kipple: yeah 01:50:13 twobitsprite: also, [->>+++<<] gets optimized into a single instruction, hopefully 01:50:18 and swapping [-] with A[P]=0 01:50:21 and any other expression of that form 01:51:09 indeed... this is slowing becoming a larger project, but much more interesting... I might have to do some of this... :) 01:51:31 the effect is very very noticeable, btw 01:51:56 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 brainfuck is very nice for that purpose :) 01:52:33 I figured it would be at least fun/interesting :) 01:52:51 I was thinking about using OISC, but bf seemed more fun to implement... 01:53:06 then I see why you want a very efficient interpreter :) 01:53:12 indeed! 01:53:36 optimizing brainfuck past the things already mentioned is quite a challenge 01:53:50 I plan on having thousands of these programs running at a time, competing round-robbin :) 01:54:06 hm, that might be slow :) 01:54:35 it will... but I also plan to have this distributed, a la SETI@home... 01:54:38 * twobitsprite has high asperations... 01:54:39 that's normal for genetic algorithms 01:55:23 have you seen this, by the way? 01:55:23 http://esoteric.voxelperfect.net/wiki/FukYorBrane 01:55:50 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 kipple: no text in that page... 01:56:27 what? 01:56:28 strange 01:56:45 works fine for me 01:57:45 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 lol... that's awesome... I'll have to start hacking that 01:58:45 unfortunately it seems like the homepage is down 01:59:07 befunge.org is usually pretty reliable, too.. 01:59:43 I'm assuming by "bomb" they mean stops executing somehow? 02:00:21 IIRC a program is terminated if the IP reaches a certain instruction 02:00:40 interesting... 02:04:12 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 can someone cite an example of a "post canonical system"? 02:56:05 -!- wildhalcyon has joined. 03:01:30 The whole goal of my language design is to implement a genetic "digital organism" scenario for a fungeoid 03:01:53 so this is interesting 03:03:54 a braintwist corewars simulation would be cool, but Im not sure how they would fare in a genetic organism sense. 03:08:53 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 wildhalcyon: which would those be? 03:20:27 Wasn't Thue based on a tag system? 03:20:27 I know fundamentally its based on semi-thue grammar 03:20:27 which still makes it cool 03:20:27 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 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 hehe. you're not the only one 03:24:25 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 Hmm. I'll have to say I have NO idea what the heck a functor is.. I'll google it 03:25:26 Hmmm, okay. No clue! 03:25:28 wildhalcyon: check out the core language manual for OCaml, they talk about modules and functors quite a bit... 03:26:16 http://caml.inria.fr/pub/docs/manual-ocaml/manual018.html 03:26:58 but maybe you'd have to understand OCaml to get anything useful out of that 03:29:23 http://en.wikipedia.org/wiki/Functor 03:29:25 Well, I guess that helps me understand functors in a more applicative setting 03:30:22 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 "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 yeah, sounds scary... 03:32:00 :P 03:32:14 Well, not necessarily. I understand abelian groups themselves.. but when they're MENTIONED. I just dont like group theory much 03:32:37 ahh... I just want to know the difference between group theory and set theory... 03:32:46 does group != set? 03:33:17 I believe groups have a structure to the elements. In set theory the order of the elements don't matter, correct? 03:33:26 ahh 03:33:55 * twobitsprite hopes that "?" is rhetorical, lest you be asking the wrong person... 03:34:29 a group = a set plus an operation on that set 03:34:31 although, I seem to remember something about that in my descrete math class I took, so you might be right... 03:34:42 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 and the operation has to fulfil certain properties 03:34:50 Mr. Pressey saves the day! 03:36:44 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 How hard do you have to try? 03:40:30 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 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 blew my mind :) 04:15:51 Hmm.. okay, that's kind of freaky 04:24:02 It seems like everything is turing complete nowadays 04:24:43 I guess regex's arent TC, but they can solve linear algebra systems 04:26:33 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 what would one have to add to regexps to make them TC? 04:49:27 the easiest thing is to be able to reapply a regex 04:49:45 er 04:49:56 i mean, reapply a substitution 04:50:06 recursion? 04:50:06 i.e. running a substitution in a loop until it fails to match anything is TC 04:50:22 but that's probably not what you meant :) 04:50:58 (actually, i'm not sure about this. hrm) 04:50:59 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 not sure how that would be a compiler. 04:51:35 compilers produce code of some sort. 04:52:16 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 how's that "code"? 04:52:50 * twobitsprite thinks... 04:53:02 er 04:53:02 wait 04:53:06 i guess you're right 04:53:11 blah 04:53:42 the rexeg would have to have some way to modify itself or at least create new regex to be applied, no? 04:54:03 otherwise regex is just a recursive function being applied to its output... 04:56:16 I guess the problem is, regex can't branch really... 04:57:19 I think I might just be confusing myself 04:59:46 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 The channel always this jumpin'? 06:40:05 always 06:40:28 you missed our discussion about turing-complete regexps... :P 06:43:58 * Arrogant is making BF with functions 06:44:15 Somehow I think it's against all that BF stands for. 06:44:23 Like. Fucking with brains. 06:46:36 also, turing-complete regexps... isn't that what Perl is all about :D 06:53:58 -!- nooga has joined. 06:54:05 hi 06:54:26 brainfuck with functions? there's several. 06:56:52 heh 07:00:20 Yeah. 07:00:27 There're too many variations to count. 07:00:33 I just felt like making my own. 07:01:15 i beg you to reconsider :) 07:01:23 It's already done. 07:01:33 ouch 07:01:50 Uses a real parser to do it too XD 07:01:56 pyparsing library 07:02:17 It's probably the most flexible Brainfuck, at least. 07:02:43 disgusting. 07:02:52 Indeed. 07:03:11 you should use words as tokens, then. 07:03:35 That'd take a change in a couple lines of code 07:03:39 begin subtract left add left add right right end 07:03:49 I don't want to though :/ 07:03:56 macro brainfuck lol :D 07:05:12 i just thought about macros in brainfuck :> 07:05:41 I think there're a couple of those 07:06:14 Arrogant: what esolang is your favourite? 07:06:31 nooga: Befunge 07:06:58 Anyway 07:07:24 {zero:[-]} /* Sets cell to 0 */ ++++{zero}! /* Outputs 0 */ 07:08:17 A function is passed a NEW memory array, with the current cell's value in cell 0 of that array. 07:08:59 On call, the current cell is set to the value of tempContext.mem[tempContext.pointer] 07:09:17 aha 07:09:18 I'll probably make macros too, would take minimal effort. 07:10:24 tokigun 07:18:55 Hmm. I seem to be hitting some nasty STOP DOING ANYTHING with this 07:26:37 my favourite esolang is smetana :( 07:35:04 my favourite is SADOL ;p 07:38:53 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 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 Hello 14:15:37 hi 14:16:17 How are you senor kipple? 14:16:32 fine thank you. and you? 14:20:13 Just dandy 14:20:34 My university made a fantastic decision to turn down my loan however... so Im scrambling for funding 14:21:23 that's too bad 14:22:29 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 where do you live? 14:23:03 Raleigh, NC. 14:23:31 ah, the US. so you get loans form your universities? 14:24:31 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 Apparently, in order for the bank to award the loan, it has to go through a certification process through my school. 14:25:26 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 So I have to find another way of getting some money for school 14:27:51 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 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 I think it is fungeoid 14:31:05 though I don't think you'll find it in the dictionary 14:31:07 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 Hey Jix! 14:33:42 Alright folks, its been fun, but I unfortunately have to head to class. 14:34:04 -!- wildhalcyon has quit ("Chatzilla 0.9.68.5 [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 Hello again 17:23:56 moin wildhalcyon 17:23:56 /away 17:23:57 how's the day goin jix? 17:23:57 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").