←2008-03-20 2008-03-21 2008-03-22→ ↑2008 ↑all
00:00:09 <oklopol> slereah__: obfuscation is something you do to code, you don't usually call languages that
00:00:10 <slereah__> Nah.
00:00:16 <slereah__> Most are just minimal
00:00:21 <oklopol> but false does nested functions, and suchamathing.
00:00:36 <oklopol> i have no idea what you mean by obfuscation here
00:00:54 <slereah__> I'll just read up False on the wiki
00:00:58 <oklopol> that it looks like line noise? ofc it does, if you want it to
00:01:10 <oklopol> i'll have to read too, ages since i did
00:01:16 -!- GreaseMonkey has joined.
00:01:20 <AnMaster> <oklopol> slereah__: obfuscation is something you do to code, you don't usually call languages that
00:01:20 <AnMaster> um
00:01:23 <AnMaster> malbolge?
00:01:31 <SimonRC> heh
00:01:50 <AnMaster> <oklopol> that it looks like line noise? ofc it does, if you want it to <-- oh we are talking about perl?
00:01:54 <oklopol> malbolge might be an obfuscated language
00:01:56 <slereah__> Heh.
00:02:04 <oklopol> perl has an entry in esolang wiki, i think :)
00:02:10 <AnMaster> :D
00:02:11 <slereah__> Yes, there is
00:02:18 <slereah__> http://www.esolangs.org/wiki/Perl
00:02:26 <slereah__> Although the follow up has not arrived!
00:02:34 <SimonRC> Is there a good one for J or K?
00:03:23 <slereah__> Making substitution rules in Schönfinkel's combinator is hard.
00:03:47 <slereah__> It seems it's hard to replace variables when there aren't variables anymore :o
00:05:05 <lament> heh, what is that perl program? It just prints 30.
00:05:32 <slereah__> it's a metaphore, apparently!
00:05:55 <AnMaster> lament, it actually works!
00:05:56 <AnMaster> !?!?!
00:06:16 <lament> i don't know if it works or not, but it prints 30
00:06:35 <lament> plenty of stuff which prints 30 doesn't work.
00:07:18 <slereah__> Does Linux have a Perl interpreter?
00:07:34 <slereah__> I just typed that in the console shell, and it's doing nothing :o
00:07:38 <slereah__> Not even an error message
00:08:14 <slereah__> slereah@Vixem:~$ perl -wlne'END{print$n}eof&&$n++;/<title>([^<]+)/i&&$n--' *
00:08:14 <slereah__> 929
00:08:16 <slereah__> D:
00:08:19 <slereah__> This isn't 30.
00:08:23 <slereah__> This isn't 30 at all!
00:09:01 <oklopol> i spot a regex matching the contents of the title
00:09:12 <oklopol> but i don't really know perl
00:09:51 <slereah__> And I really don't know Perl
00:10:00 <oklopol> i :)
00:10:04 <oklopol> ...
00:10:06 <oklopol> :)
00:10:22 <oklopol> i'm such an egoist i like to type an "i" and just look at it
00:10:28 <oklopol> sometimes i forget to delete it
00:10:47 * SimonRC grins at the censoring: http://answers.yahoo.com/question/index;_ylt=Ah4pBKeFFHxVdUWNrNoikqGIxQt.;_ylv=3?qid=20080320073519AA7zuRZ
00:10:55 <SimonRC> "What is moby-***** connection to romanticism?"
00:18:53 <oerjan> lament: i think that perl program counts the number of files in the current directory, minus the number of lines in those files containing something matching /<title>([^<]+)/i
00:19:37 <lament> oh! useful.
00:20:02 <oerjan> i'm sure someone has needed it at some point, since it was invented :)
00:20:24 <lament> not invented, discovered!
00:20:48 <slereah__> You don't write programs that you need to post them on the esowiki
00:21:17 <oerjan> slereah__: no parse
00:21:26 <oklopol> ditto
00:22:03 <slereah__> Wut?
00:22:25 <lament> oerjan: imagine somebody looking with a telescope into a vast universe of perl one-liners. "Hey! That one could be useful for something, one day! Let's write it down!"
00:22:32 <oerjan> slereah__: your sentence is hard to get the meaning of, and possibly ungrammatical
00:22:51 <slereah__> Program that you actually need XOR program that you post on the esowiki
00:23:06 <slereah__> Well, forgot the turnstile at the beginning of the sentence.
00:23:35 <oerjan> turnstile? is may client censoring characters i wonder
00:23:52 * oerjan brings up the logs
00:24:42 <oerjan> hm no, still incomprehensible in proper unicode
00:25:37 <oerjan> lament: sounds like Erdos's big book
00:25:50 <lament> erdos had a book?
00:26:12 <oerjan> no he had a metaphor of a Big Book that contained all interesting mathematics
00:26:48 <oerjan> "God has the Big Book, the beautiful proofs of mathematical theorems are listed here." . Paul Erdos
00:27:41 <oerjan> now for the Perl book we might want to ask the competition instead.
00:28:09 <SimonRC> That reminds me of the reasoning that people should be able to copyright numbers.
00:28:20 <SimonRC> large ones with no easy pattern, at least
00:28:37 <SimonRC> imagine a huge pile of sand...
00:29:08 <SimonRC> on one grain of that sand is enscribed a novel that will sell 100,000 copies, if published
00:29:34 <SimonRC> if you find that grain of sand and publish the novel, you should have the right to the money
00:30:07 <SimonRC> because though you didn't create it, you did a hell of a lot of work and society benefited from it
00:30:23 <SimonRC> the analogy with copyrighting the numbers that represent movies etc should be obvious
00:30:48 <lament> that's not a good argument for copyrighting. That's a good argument for _some_ form of compensation.
00:30:48 <oklopol> sure, but it was fairly obvious without the analogy too :)
00:30:59 <oklopol> it's just a number can represent anything
00:31:06 <SimonRC> lament: yes
00:31:20 <oklopol> this is why we always simultaneously copyright the way in which to interpret the number
00:31:41 <SimonRC> huh?
00:32:03 <oklopol> you can have an infinite number of numbers representing a certain book
00:32:14 <SimonRC> ah, ok
00:32:41 <slereah__> Heh. That reminds me.
00:32:57 <slereah__> I once saw one of those IQ-test type of question
00:33:09 <slereah__> With the following number of a sequence.
00:33:18 <slereah__> I then thought "This is fucking stupid".
00:33:30 <slereah__> And found a handful of numbers that fitted.
00:33:59 <SimonRC> indeed
00:34:22 <SimonRC> with polynomial curves, you can make any next number fit
00:34:39 <oerjan> A given IQ-test only works within a range of IQs i think. you mustn't be so smart as to overanalyze it...
00:34:51 <slereah__> The following number of <1,4,9,16> was then 27, 90, 27 again, 31, 17, 81, 20.25
00:35:01 <slereah__> Also "any number", "any set"
00:35:03 <slereah__> And 25.
00:35:50 <slereah__> The solutions were the following : http://paste-it.net/7475
00:35:59 <oerjan> now that is rather silly. 25 _is_ the obvious answer.
00:36:57 <slereah__> I was rather amused that p(n) + f(n-1) fitted the description :D
00:37:44 * oklopol is not
00:42:24 <oklopol> Not just toy programs have been written in False, the list of programs in the distribution includes various useful convertion utilities, a compression program, Life, an expression evaluator, a module ripper, queens, tic-tac-toe, a html-table generator, and, probably the biggest False program ever, a complete working BreakOut clone.
00:42:28 <oklopol> breakout :o
00:42:50 <oklopol> what are these people...
00:42:58 <oklopol> i should make something fun too
00:43:10 <slereah__> A party?
00:43:33 <SimonRC> Does false have anything that can model a TM tape?
00:44:27 <SimonRC> I thought it only had 26 variables and the stack
00:44:44 <SimonRC> though you can peek arbitrarily far down the stack, that isn't very nice.
00:44:44 <vixey`> I finished a Prolog interpreter in Scheme
00:44:52 <vixey`> anyone want it?
00:45:08 <slereah__> Sure, why not
00:45:14 <vixey`> http://paste.lisp.org/display/57253,6/raw
00:45:47 * vixey` failed at coding a WAM a couple times.. :(
00:47:13 <SimonRC> vixey`: "WAM"?
00:48:00 <vixey`> that's the typical VM people compile Prolog, the first Prolog compiler was VAM based
00:48:03 <vixey`> oops WAM
00:48:08 <vixey`> VAM is a vastly different beast
00:48:45 <SimonRC> ok
00:48:47 <vixey`> compile Prolog to*
00:49:08 <vixey`> this code is really slow for making magic squares :/
00:49:36 <AnMaster> oklopol, make breakout in befunge!
00:49:59 <SimonRC> befunge lacks non-blocking input
00:50:02 <vixey`> you can actually do interactive realtime graphic stuff with befunge?
00:53:15 <AnMaster> vixey`, sure
00:53:21 <AnMaster> vixey`, use a fingerprint
00:53:34 <AnMaster> vixey`, there is one for ncurses
00:53:37 <AnMaster> should work well
00:54:50 <AnMaster> SimonRC, so with NCRS fingerprint you get non-blocking indeed :D
00:55:03 <AnMaster> SimonRC, and clients may have that anyway
00:55:09 <AnMaster> err
00:55:12 <AnMaster> interpreters
00:55:14 * AnMaster is tired
00:55:29 <AnMaster> look, 1y will tell you what kind of IO is used
00:55:44 <AnMaster> and NCRS will always be non-blocking
01:11:09 -!- BMeph has joined.
01:13:09 <SimonRC> BMeph: yo
01:13:32 <BMeph> SimonRC: Hey
01:35:11 -!- timotiis has quit ("leaving").
02:01:45 * SimonRC goes
02:04:19 -!- vixey` has changed nick to vixey.
02:12:57 -!- jix has quit ("CommandQ").
02:22:36 <vixey> an Algol implementation with the J operator would be cool
02:23:10 <vixey> has nobody implemented ISWIM yet? :S
02:24:38 <GreaseMonkey> " "90" "26* v
02:24:38 <GreaseMonkey> p <
02:24:55 <GreaseMonkey> ^ program to freeze fully-compliant befunge-98 interpreters
02:32:15 -!- puzzlet has joined.
03:30:00 -!- puzzlet has quit (Remote closed the connection).
03:30:05 -!- puzzlet has joined.
04:05:18 -!- Corun has quit ("This computer has gone to sleep").
04:42:53 -!- olsner has joined.
05:36:24 <RodgerTheGreat> pikhq: http://www.nonlogic.org/dump/images/1206074168-preview4.png
05:42:10 <pikhq> :D
05:49:52 <oerjan> new page?
05:56:24 <RodgerTheGreat> possibly
05:57:01 <RodgerTheGreat> I'm thinking about going back and reorganizing the panel layouts a bit- I think the current format is a little too rigid and boring
05:57:16 <RodgerTheGreat> so, for now, all bets are off on page numbers
05:58:45 <RodgerTheGreat> anyway, goodnight folks
05:59:08 -!- RodgerTheGreat has quit.
07:03:09 -!- BMeph has quit ("calls it a night").
07:10:05 -!- oerjan has quit ("leaving").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:06:40 <Sgeo_> G'night all
08:07:13 -!- Sgeo_ has quit (Read error: 104 (Connection reset by peer)).
08:51:41 -!- lifthrasiir has joined.
09:21:02 -!- rutlov has joined.
09:29:02 -!- rutlov has left (?).
10:04:37 -!- GreaseMonkey has quit ("Read error: 110 (Connection chickened out)").
12:36:33 -!- timotiis has joined.
13:16:10 -!- Corun has joined.
13:23:24 -!- sebbu has joined.
13:40:40 -!- Taggard has joined.
14:04:55 -!- Taggard has left (?).
14:17:03 -!- bsmntbombdood has quit (Read error: 110 (Connection timed out)).
14:18:03 -!- bsmntbombdood has joined.
14:30:21 -!- jix has joined.
14:37:35 <Judofyr> AnMaster: Check out http://yr.judofyr.net now
14:37:40 <Judofyr> added some more data :)
14:40:17 -!- Corun has quit ("This computer has gone to sleep").
14:47:20 * AnMaster tests
14:47:50 * AnMaster waits while browser is locked up for about 30 seconds after clicking add button
14:48:10 <AnMaster> Judofyr, apart from the slow speed it looks very nice
14:48:30 <AnMaster> Judofyr, my connection is 8 mbit down / 1 mbit up so it isn't that slow
14:48:30 <Judofyr> yeah, it sucks to bridge :(
14:48:44 <Judofyr> it's rather the connection to the server
14:48:46 <AnMaster> ADSL from Swedish Tele2
14:49:15 <Judofyr> you asks for data -> server fetches from api.yr.no -> server sends them to you -> you receive them
14:49:28 * Judofyr want cross-site Ajax!
14:49:32 <oklopol> Judofyr: the speech bubble goes under the "weather everywhere" title
14:49:44 <Judofyr> oklopol: I know
14:49:55 <oklopol> not that nice for us scandinavians
14:50:05 <Judofyr> yeah
14:50:08 <Judofyr> I'll fix it
14:50:44 * Judofyr loves Firebug
14:50:49 <AnMaster> Judofyr, what about google maps bit then?
14:51:13 <Judofyr> the maps shouldn't load slow, or that's not my fault
14:51:24 <AnMaster> Judofyr, odd btw, google maps fails to load some of the bits, there are some grey rectangles in misc places
14:51:34 <AnMaster> like one near the top and one just in the middle
14:51:42 <AnMaster> zooming in and then out again fixes it
14:51:48 <AnMaster> waiting a long time doesn't
14:51:58 <Judofyr> sometimes the map won't load in Safari
14:52:07 <AnMaster> Judofyr, not safari, konqueror
14:52:11 <Judofyr> zooming in and out again fixes that also
14:52:22 <AnMaster> Judofyr, it doesn't fix it always btw
14:52:26 <AnMaster> but often it does
14:52:36 <Judofyr> AnMaster: noted. just wanted to say my problems
14:52:49 <AnMaster> oh changing to sattelite mode helps all the time
14:53:11 <AnMaster> though the satellite data over Örebro area is crappy
14:53:41 <Judofyr> AnMaster: you're interested in Örebro :P
15:40:29 -!- vixey has quit ("Leaving").
16:26:42 -!- puzzlet_ has joined.
16:27:27 -!- puzzlet has quit (Remote closed the connection).
16:46:53 <AnMaster> Judofyr, just random, and not too far away from where I live (I live out in the middle of nowhere though, but Örebro is the closest large city)
16:49:00 -!- ais523 has joined.
17:30:51 -!- Sgeo has joined.
18:00:03 <ais523> hmm... my entire terminal window is just full of PINGs, PONGs and Sgeo's join message
18:00:37 <ais523> anyone care to start a conversation?
18:02:46 -!- Hiato has joined.
18:03:12 <Hiato> Hello, world! ;)
18:03:28 <ais523> Hiato: hello!
18:03:43 <ais523> were you logreading, or was that just good timing?
18:03:55 <Hiato> good timing I suppose
18:04:02 <Hiato> no logs for me - yet :P
18:04:04 <Hiato> why?
18:04:21 <ais523> I had got bored of a terminal-full of PINGs and PONGs and asked someone to say something
18:04:49 <Hiato> oh, lol. Well then, fate has it's means :P
18:05:05 -!- slereah_ has joined.
18:05:18 <ais523> hello slereah_
18:05:28 <Hiato> ditto
18:05:55 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
18:06:02 <ais523> suppose you have a certain number of people inside and outside an IRC channel
18:06:18 <ais523> each of which likes each other person a certain amount, and has a certain boredness
18:06:19 <Hiato> (on a side note, any opinions http://rafb.net/p/5Uodtk56.html )
18:06:52 <ais523> challenge: given that bored people are more likely to say hello, and people are more likely to say hello to people they like, and people join and part at random, create an esolang
18:07:07 <Sgeo> Delayed, but if I started the conversation, you know what it would be about..
18:07:08 <Sgeo> lol
18:08:05 <Hiato> heh, now there's an idea. Not sure how one could influence branching/looping if people (variables?) leave and appear at random though
18:08:23 <ais523> Sgeo: actually, I've been meaning to ask you about that
18:08:31 <Sgeo> ais523, oh?
18:08:36 <ais523> is there any way in PSOX to read from multiple input sources at once?
18:08:50 <Sgeo> ais523, you could switch between file descriptors
18:08:54 <ais523> i.e. read user input and a socket simulataneously, and get the first message from either?
18:09:00 <Sgeo> oh
18:09:08 <Sgeo> currently, no
18:09:11 <ais523> Sgeo: that would require knowing which one would be next to send a message
18:09:28 <ais523> the lack of ability to do that is holding up my INTERCAL IRC client
18:09:31 -!- Corun has joined.
18:10:01 <Sgeo> ais523, you're writing an INTERCAL IRC client w/ PSOX?
18:10:02 <Sgeo> Cool!
18:10:59 <ais523> Hiato: I've looked at your paste, it looks interesting but I don't really understand the syntax
18:11:26 <ais523> Sgeo: I was thinking of implementing the CLC-INTERCAL syscall library using C-INTERCAL's ffi
18:11:48 <Sgeo> ais523, so not PSOX, you're wondering if PSOX solved a problem?
18:12:03 <Hiato> heh, probably entirely my fault, I didn't really intend this so much as a publication, but an internal doccy for my own benefits. Would you like me to explain, or would you prefer to leave it as a mystery? :P
18:12:33 <ais523> Hiato: an explanation would be interesting; Sgeo: I was wondering how PSOX handled the situation
18:12:55 <ais523> Sgeo: because it's quite a complicated thing to do in many languages
18:13:03 <ais523> the relevant syscall is 'select'
18:13:16 <ais523> in POSIX
18:13:55 <Sgeo> Well, all I know is that Windows select() can only use things from Winsock
18:14:10 <Sgeo> So incorporating select() into PSOX would be problematic
18:14:20 <Sgeo> (The only reason I know that is from the Python docs)
18:14:39 <ais523> yes, Windows isn't very good at selecting by default
18:14:58 <ais523> that's actually a big problem, though, because some way to select is necessary to write an IRC client
18:15:15 <Hiato> Well, lets see. Look at every chunk of code as a function. It all returns a value of some kind or another. Whether the value is stored, where it is stored and for how long is entirely up to the user. the basic structure is this {Operation} {Variable/Constant} ( {arguments/code} ) {imperative/questionative/no signal}
18:15:35 <ais523> (it's either that, or using a second IRC username to repeatedly ping the one you're logged in on, thus ensuring that the first one gets data at an acceptable rate, and using a separate process for input from the user)
18:15:57 <Hiato> so, the various operations are listed in the file, then, the variable is a variable of the form {lower case letter}{number} eg z7643 or a2
18:16:22 <ais523> (actually, I just thought of a simpler way to select, which is to use three processes, two in input loops that communicate to the third asynchronously)
18:16:22 <Hiato> finally, the arguments may be a list of variables seperated by a comma, or more code in the same form
18:16:38 <Sgeo> ais523, I suppose asynchnorous reading would also work?
18:16:43 <Sgeo> Maybe something for PSOX 1.1 ...
18:16:59 <ais523> which leads to the nested pattern that things like + and - create?
18:17:05 <Hiato> yep
18:17:12 <Hiato> (if that was aimed at me)
18:17:14 <ais523> Sgeo: that works but uses up more CPU time than it ought to
18:17:27 <ais523> Hiato: it was
18:17:51 <ais523> having two conversations in the same channel can be confusing at times, though
18:18:04 <ais523> especially if other people say something immediately after you've made a typo
18:18:19 <ais523> I have to get better at touch-typing to do this properly...
18:18:31 <SimonRC> hi
18:18:33 <Hiato> thus, we can assign a10 to 65 through the following
18:18:34 <Hiato> : 65 (a1)
18:18:34 <Hiato> that tells us to use the assignment operator, and apply 65 to a1 using it. This does infact return something (nil) but it is un-important so we can disregard it
18:18:50 <Sgeo> I don't touch type
18:19:06 <Sgeo> I used to hunt-n-peck, but I've done that for so many years that it's now know-and-peck
18:19:07 <Hiato> meh, I made a typo too ;)
18:19:09 <ais523> hello SimonRC
18:19:15 <SimonRC> Sgeo: yes
18:19:46 <ais523> Hiato: many languages with assignment statements return the value that was assigned
18:19:56 <ais523> s/assignment statements/assignment expressions/
18:20:25 <ais523> Perl is slightly different, and returns the variable that was assigned to
18:20:38 <ais523> it comes to much the same thing, except in cases like ($a=4)++
18:20:42 <SimonRC> so an assignment is an lvalue?
18:20:57 <ais523> SimonRC: yes
18:21:09 <Hiato> hrmm... yeah, something worth considering, but It doesn't really matter because you can do multiple assignments using lists. :64(a1,a2,a3) in place of grabbing the returned value like this- :(:65(a1))(a2) etc
18:21:32 <ais523> one of the most famous lines of C code went like this:
18:21:43 <SimonRC> op, value, variable is a funny order to put it in
18:21:45 <ais523> while(*dest++=*src++);
18:21:52 <SimonRC> Sgeo: yup
18:21:54 <SimonRC> oops
18:21:57 <SimonRC> ais523: yup
18:22:07 <ais523> that's a one-liner strcpy implementation
18:22:15 <Hiato> SimonRC: yeah, but it's nice and different for a change ;)
18:22:17 <ais523> which relies on the return value of =
18:22:30 <SimonRC> Hiato: it's a bit forth-like
18:22:39 <SimonRC> Forth has value, var, op
18:23:05 <Hiato> well, I'm afraid you have me there, I've never really heard of Forth before (well, I've *heard* , but that's as far as it goes)
18:23:29 <ais523> when concatenative languages have variables, they generally go value, [var], op
18:23:35 <Hiato> asi523: I should just probably nod :P
18:23:43 <Hiato> about the earleir c line
18:24:00 <SimonRC> no, you must understand
18:24:02 <ais523> it isn't that difficult to understand
18:24:15 -!- Judofyr has quit.
18:24:39 <ais523> *ptr++ returns the memory location that ptr points to, and then increments ptr
18:24:51 <Hiato> oooh, aaah
18:24:56 * Hiato sees the light
18:25:05 <Hiato> ingenious :)
18:25:11 <SimonRC> specifically, ++ increments pointer after evaluation but before the next sequence point
18:26:13 <ais523> ah, the whole 'sequence points' thing, which fugged up comp.lang.c for months despite being in the FAQ
18:26:49 <ais523> people kept on asking about the infamous statement i=i++; (which doesn't actually do anything defined, because you're trying to assign two different values to i simultaneously)
18:27:19 <SimonRC> indeed
18:27:51 <SimonRC> or things like (i++ * i++)
18:27:52 <Hiato> well, can't it be broken down recursively. i = i + 1 forever onwards ?
18:28:12 <ais523> it's defined to be undefined behaviour in the C standard
18:28:25 <SimonRC> I found a good way of showing the ambiguity:
18:28:29 <ais523> which means that a C compiler can do anything it likes, even if it doesn't make logical sense, on encountering the statement
18:28:52 <Hiato> oh, I see. Hrmm... interesting that. Predefined ambiguity ;)
18:28:53 <ais523> most compilers either do nothing or add 1 to i
18:29:03 <oklopol> hmm, can it actually decide to do *neither*?
18:29:07 <oklopol> that i didn't know
18:29:15 <ais523> oklopol: yes
18:29:19 <oklopol> Hiato: most languages have that
18:29:28 <SimonRC> for example, if the compiler keeps a flag on each variable that is set if the variable must be incremented after the current expression, it would be expected to only increment once in the expression (i++ * i++)
18:29:32 <ais523> the archetypal example is 'demons flying out of the user's nose'
18:29:42 <SimonRC> ais523: indeed
18:29:42 <ais523> no known compiler does that, but it's allowed by the Standard
18:29:45 <Hiato> really? Shows where I've been (glances over shoulder at rock)
18:30:05 <oklopol> :)
18:30:12 <SimonRC> ISTR that for a while gcc would launch nethack if it encountered an unknown #pragma, too
18:30:25 <ais523> it was any pragma, if I remember
18:30:30 <SimonRC> ok
18:30:38 <ais523> because #pragma can do anything as long as the implementation documents it
18:30:42 <SimonRC> indeed
18:30:51 <ais523> but I think nethack was something like third in the list of things it tried to do
18:31:05 <ais523> it first attempted to start Emacs running a Towers of Hanoi simulation
18:31:08 <SimonRC> heh
18:31:26 <Hiato> awesome :)
18:31:34 <ais523> presumably the nethack was a fallback for if Emacs wasn't installed
18:32:11 <SimonRC> lol: http://www.galactanet.com/comic/view.php?strip=307
18:32:19 <SimonRC> (a good comics strip generally
18:32:20 <SimonRC> )
18:32:36 <ais523> actually, I just looked it up, it was nethack, then rogue, then towers of Hanoi on Emacs
18:32:57 <ais523> and if all of those failed, it printed "You are in a maze of twisty compiler features, all different."
18:33:26 <Hiato> awesome comic there :)
18:36:53 <ais523> hmm... does anyone here know if it's possible to open a write handle to a socket with one process, and a read to the same socket with a different process
18:37:09 <ais523> as in, connecting to freenode on port 6667, but having one process writing to it and another process reading?
18:37:36 <oklopol> who here did J?
18:37:46 <oklopol> or was it faxathisia
18:38:38 <ais523> ehird was talking about it a lot, but I'm not sure whether they used it
18:39:07 <oklopol> doubt they did
18:39:27 * ais523 is inclined to agree
18:39:42 <oklopol> i recall it was mostly K they were interested in
18:39:54 <oklopol> am i supposed to say "were" or " they was" :P
18:40:09 <oklopol> i like the latter <3
18:40:16 * ais523 usually says 'they were' along the lines of 'you were'
18:40:36 <ais523> but I prefer 'themself' in the singular context
18:40:52 <oklopol> yarrr
18:43:18 <oklopol> the two problems with me learning new languages are that i always have to read all the documentation before i even start considering using the language, and that i usually never learn to use the interp/compiler
18:43:42 <oklopol> god there's a lot of foreigns
18:44:44 <ais523> oklopol: if you read all the C-INTERCAL documentation, you would know how to use the compiler
18:44:50 <ais523> I spent ages writing it
18:45:12 <ais523> it's decent as a reference source as well, although not as good at being a tutorial
18:47:56 <oklopol> i'll put intercal on my list of implementing-something-in
18:49:43 <ais523> there's already Unlambda and Befunge-93 interps in INTERCAL
18:51:09 <oklopol> no brainfuck?
18:51:36 <ais523> suprisingly, no
18:51:59 <ais523> you have an unlimited number of stacks available, so a brainfuck interp shouldn't be very difficult
18:52:30 <oklopol> i'll make on as my test project, well, try to make on at least
18:52:37 <oklopol> *one
18:52:49 <ais523> dealing with the I/O model is likely to be one of the harder parts
18:53:21 <ais523> by the way, http://intercal.freeshell.org has the manuals for CLC-INTERCAL and C-INTERCAL, and downloads for the implementations
18:53:37 <oklopol> this isn't intercal day, this is jayday
18:53:49 <ais523> there are a lot of other references, but they're mostly out of date
18:54:07 * ais523 goes to write an IRC bot in Thutu
19:02:58 -!- ais523 has quit ("for testing, will be back soon").
19:03:25 -!- ais523 has joined.
19:22:54 -!- Tritonio_ has joined.
19:26:52 -!- Hiato has quit (Read error: 110 (Connection timed out)).
19:37:57 <ais523> grr... why is it so hard to connect a program's stderr and stdout to telnet using shellscript?
19:39:26 -!- Corun has quit ("This computer has gone to sleep").
19:51:57 -!- thutubot has joined.
19:52:11 <ais523> \hello
19:52:28 <Tritonio_> hi
19:52:39 <ais523> hmm, it doesn't work
19:52:42 <Tritonio_> why is it hard?
19:52:59 <ais523> partly because I'm having problems linking the bot to freenode in both directions
19:53:10 <ais523> and also I've probably made a mistake in one of my regexps
19:53:20 <ais523> \quit
19:53:44 -!- thutubot has quit (Remote closed the connection).
19:54:33 <Tritonio_> do you use a named pipe?
19:55:11 <ais523> I tried that, but it didn't work for some reason
19:55:33 <ais523> the info went down the named pipe OK, but perl wasn't reading telnet's output for some unknown reason, not even when I piped them together directly
19:56:01 <ais523> maybe telnet was sending control codes on stdout that shouldn't have been involved, or something like that
19:56:03 <Tritonio_> O_o
19:56:09 <ais523> or maybe it just wasn't flushing its output
19:56:31 <Tritonio_> then maybe you should rewrite e telnet app... ;-)
19:58:03 -!- Tritonio_ has quit (Remote closed the connection).
20:07:37 <oklopol> i love j already
20:08:08 <ais523> neat, isn't it?
20:10:20 -!- puzzlet has joined.
20:13:07 <oklopol> fun stuff, although oklotalk still would own its ass if only i managed to write an efficient interp for it
20:13:16 <oklopol> at least i think it would
20:13:51 <oklopol> oklotalk is very much like J, K and APL, but with pattern matching and OOP if you want the use them
20:14:09 <oklopol> well, not exactly OOP... message passing
20:14:58 <oklopol> just so general you can easily write functions for inheritance and suh
20:14:59 <oklopol> *such
20:15:09 <ais523> recursive regexps need a proper sort of replace ability
20:15:22 <oklopol> hmm?
20:15:26 <oklopol> replace?
20:15:57 <oklopol> recursive here means you can do x = (.*); y = x|a x c? and such?
20:16:00 <oklopol> or just plain recursion
20:16:04 <oklopol> i mean
20:16:08 <oklopol> what do you mean? :)
20:16:36 <oklopol> my example was an example of just being able to call other regexes, whereas recursion would just be calling the current regex
20:16:51 <oklopol> probably didn't come through
20:17:05 <oklopol> eh
20:17:22 <oklopol> my example was an example of being able to call any regex from inside a regex
20:17:30 <ais523> a recursive regex lets you use part of the regex inside itself
20:17:41 <oklopol> what does that mean
20:17:43 <oklopol> part of it?
20:18:22 <oklopol> like, you can tag a certain place in its parse tree and reuse it, like reg = X@(a | b) | (X)+
20:18:29 <oklopol> :D
20:18:34 <ais523> e.g. a regex to match nested angle brackets could be (|<$1>$1)
20:19:25 <ais523> that is, a string consists of nested angle brackets if either it's empty, or it's a string consisting of angle brackets surrounding a string consisting of nested angle brackets followed by a string consisting of nested angle brackets
20:19:27 <oklopol> $1 meaning what exactly
20:20:15 <oklopol> oh, $1 means the whole thing
20:20:38 <oklopol> it's just $1 should mean the *matched* thing, not the actual regex
20:21:03 <oklopol> so... whatever it matched, we'll call that M, would have to be of the form M = <M>
20:21:10 <oklopol> which is impossible, unless the string is infinite
20:21:21 <oklopol> i may be totally clueless here, just wondering
20:21:26 <ais523> in Cyclexa (my work-in-progress regex language)
20:21:33 <ais523> $1 means the code of group 1
20:21:41 <oklopol> ah
20:21:41 <ais523> whereas \1 means the text matched by group 1
20:21:46 <oklopol> oh, right, i see
20:22:08 <ais523> so (|<$1>$1)
20:22:13 -!- puzzlet_ has quit (Read error: 110 (Connection timed out)).
20:22:19 <oklopol> can it have infinite strings and (|<\1>\1)? :)
20:22:42 <oklopol> haha
20:22:49 <oklopol> \w
20:22:50 <ais523> I'm not entirely sure what happens if you put \1 inside group 1 itslef
20:22:57 <oklopol> for cardinals
20:22:59 <oklopol> like
20:23:00 <oklopol> omega
20:23:02 <oklopol> whaddyacallit
20:23:29 -!- Corun has joined.
20:23:46 <oklopol> well, that should match the string infinity*"<" ++ infinity*">", for instance
20:24:20 <ais523> sorry, could you write the original example again? I got slightly confused due to the way my low-tech IRC client works
20:24:34 <oklopol> (|<$1>$1)
20:24:36 <oklopol> this one?
20:24:42 <ais523> yes
20:25:02 <ais523> it's equivalent to (|<(|<$2>$2)>(|<$3>$3))
20:25:06 <ais523> and so on
20:25:23 <oklopol> yes
20:25:34 <ais523> now, one of Cyclexa's features is that it's possible to match antitext
20:25:43 <oklopol> meaning?
20:25:51 <ais523> so instead of removing text from the input string, you add text to the input string
20:26:08 <ais523> this, and one extra feature, allow Cyclexa to be TC with an empty input string
20:26:54 <oklopol> probably even with just one regex
20:27:06 <ais523> a program is just one regex
20:27:25 <oklopol> ah okay
20:27:48 <oklopol> can you do something like "don't match this at all"
20:27:49 <oklopol> like a nop
20:27:55 <ais523> the syntax for antitext is, e.g. (abc)^ adds (abc) to the group
20:28:01 <oklopol> i mean, you could make regex variables like that, quite neatly
20:28:04 <ais523> probably, it depends on exactly what you want
20:28:07 <oklopol> like
20:28:22 <ais523> (abc)^+ does nothing to the input string
20:28:26 <oklopol> that you could have all your regexps in $n's
20:28:34 <oklopol> without having to declare them as you use the
20:28:36 <oklopol> "declare"
20:28:59 <ais523> for predeclaring groups, doing something like (''(group)(group)(group))? would do
20:29:11 <ais523> '' is like fail in Prolog; it never matches anything
20:29:12 <oklopol> ''?
20:29:17 <oklopol> ah
20:29:22 <oklopol> why not _
20:29:24 <oklopol> hmm
20:29:29 <oklopol> not sure how that's good.
20:29:39 <oklopol> just felt it was a failure character :P
20:29:40 <ais523> because it's an empty character class
20:29:52 <ais523> [abc] becomes 'abc' in Cyclexa
20:30:14 <ais523> but the apostrophes are cleverer than []; 'ab+c' matches a, c, or any number of bs
20:30:14 <oklopol> that's actually pretty neat, i always hated that in regexes
20:30:30 <oklopol> having nestable characters for an unnestable group
20:30:55 <ais523> 'a(bc)d' matches a, d, or bc
20:31:08 <ais523> and so is equivalent to (a|bc|d)
20:31:17 <oklopol> yep
20:31:24 <ais523> in fact, (??a|bc|d) because the group shouldn't be given a group number (that's what the ?? does)
20:31:43 <ais523> I overload a lot of characters, particularly ^$+*?\
20:31:54 <ais523> they can mean many different things in different contexts
20:32:04 <oklopol> does (??a (b c)) still give the inner group a number?
20:32:08 <ais523> because I don't like character sequences that have no sensible meaning
20:32:11 <ais523> yes
20:32:28 <ais523> you can also give a group a particular number like (?4this)
20:32:37 <oklopol> have ?!?!?!!?!? for nor giving nested ()'s group number either
20:32:39 <oklopol> *not
20:32:45 <oklopol> *numbers
20:33:01 <ais523> maybe that would be (?^nonumber(nonumbereither))
20:33:14 <ais523> that would be more orthogonal, because the ^ has a meaning of 'not' in many group modifiers
20:33:21 <ais523> and ? sets a group number
20:33:48 <oklopol> yes, also, ^ is one of the characters that have a "nesting" feeling in them, i mean, in my head
20:34:06 <oklopol> usually exactly that of unnesting stuff
20:34:27 <ais523> one thing that amuses me is that the ^ and $ are implemented completely differently to each other in the Cyclexa regex ^abc$
20:34:28 <oklopol> well, because of how it looks, and the fact it does that in oklotalk, now that come tpo i think of it :)
20:34:30 <oklopol> *to
20:34:41 <ais523> the $ means 'only match at end of string' in this context
20:34:58 <ais523> and the ^ means 'don't put an implied .* at the start of the program' in this context
20:35:28 <oklopol> you switched their meanings?
20:36:04 <ais523> no, a ^ at the start of a regex still anchors it to the start of the string, and a $ at the end still anchors it to the end of the string
20:36:13 <ais523> they're just implemented in really different ways
20:36:32 <ais523> because Cyclexa basically treats a string as a stack of characters, whose top is at the start of the string
20:38:00 <ais523> http://pastebin.ca/951922
20:38:13 <ais523> what I've done so far on the Cyclexa spec and implementation
20:38:29 <ais523> but the implementation isn't done enough to even be able to interpret a single program
20:38:38 <ais523> so far it's just the parser, which was hard enough to do
20:40:26 <oklopol> is C<...> for cyclexa?
20:40:29 <oklopol> i mean
20:40:41 <oklopol> is that your "cyclexa regex" bracketing
20:41:01 <ais523> because strings of +*?^ often tokenize in many different ways
20:41:01 <ais523> and there are precedence rules to say which way is correct
20:41:01 <ais523> it's POD
20:41:01 <oklopol> i usually ask before reading the next line explaining it.
20:41:05 <ais523> a markup language normally used to document Perl programs
20:41:16 <ais523> it's equivalent to <tt>...</tt> in HTML
20:41:28 <ais523> so basically just marking the code as code
20:41:38 <oklopol> i c
20:42:26 <oklopol> #
20:42:26 <oklopol> In some cases, a single Cyclexa expression can completely
20:42:26 <oklopol> #
20:42:26 <oklopol> translate one language to another, although this is unusual.
20:42:33 <oklopol> what prevents it?
20:42:55 <ais523> the translation is often too hard to manage by regex alone
20:43:04 <ais523> for instance, imagine compiling BASIC into C
20:43:10 <oklopol> ah, you mean, in practise.
20:43:20 <ais523> you'd have to figure out which type each variable was, and add declarations
20:43:49 <oklopol> well yeah, but you *can* do it for any language, right?
20:44:02 <ais523> well, Cyclexa is TC
20:44:16 <oklopol> that doesn't mean you can do any translation, necessarily
20:44:21 <oklopol> but you can?
20:44:21 <ais523> so in theory it can do any compilation from one language to another that's theoretically possible
20:44:30 <ais523> some translations aren't possible
20:44:41 <ais523> such as TwoDucks -> Malbolge, for instance
20:44:58 <slereah_> TIME TRAVELLING MALBOLGE
20:45:01 <slereah_> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH
20:45:23 <oklopol> i meant, can you do any translation you can do in, say, perl?
20:45:48 <oklopol> tcness doesn't exactly say you can, it comes to questions about io
20:46:05 <oklopol> i mean
20:46:12 <ais523> it's BF-complete as well, for that matter
20:46:15 <oklopol> cyclexa programs take a string and return a string, basically?
20:46:21 <ais523> yes
20:46:25 <oklopol> hmm, yeah, that's a better way to put it
20:46:34 <oklopol> i always forget we already have that concept too
20:46:35 <oklopol> :P
20:46:56 <ais523> there's an input command
20:47:10 <ais523> there's going to be some way to do output too, but I haven't yet figured out the details
20:47:52 <oklopol> btw, is there a purely functional language, that does io by having two infinite lists, popping heads from which, and putting heads to which, perform input and output
20:48:02 <oklopol> so that you'd carry those around and at recursion, do io
20:48:07 <oklopol> perfectly pure
20:48:11 <oklopol> and doesn't need monads
20:48:18 <ais523> that's basically a monad that you've defined there
20:48:22 <slereah_> Heh.
20:48:25 <oklopol> :P
20:48:27 <ais523> just with an explicit monad chain
20:48:28 <slereah_> Zing!
20:48:30 <oklopol> i see
20:48:31 <oklopol> isee
20:48:51 <slereah_> All you need to do for a purely functional language is to print the expression at every step!
20:48:59 <slereah_> Then you only have to read the expression!
20:49:07 <slereah_> And possibly understand it.
20:49:07 <oklopol> ais523: i see no explicit infinite input list in haskell.
20:49:23 <ais523> oklopol: it's the monad chain for the IO monad
20:49:29 <oklopol> hmm
20:49:31 <oklopol> right
20:49:46 <oklopol> i hate this world
20:49:50 <ais523> the monad chain is hidden by monads, though, because otherwise you could perform IO twice on an earlier monad chain, which doesn't make a whole lot of sense
20:49:59 <oklopol> right.
20:50:07 <oklopol> that's exactly what i was thinking for the lists
20:50:14 <oklopol> hiding them exactly like that
20:50:21 <oklopol> "you could've invented monads"
20:50:54 <ais523> Underlambda has only one monad
20:51:04 <ais523> whose chain is the stack that all commands operate on
20:51:16 <ais523> so despite being purely functional, all commands run in a strict order
20:53:44 <oklopol> wow, i just realized that's a real fuckload of text :P
20:53:55 <oklopol> i'll read cyclexa later...
20:55:07 <ais523> anyone who wants to help me implement it, feel free; it's really difficult!
20:55:33 * oklopol makes that his first J project!
20:55:35 <oklopol> ...or not
21:00:03 <oklopol> hmm
21:00:17 <oklopol> i should make a turing-complete Tree using a new construct called "seed"
21:00:35 <ais523> how does it work?
21:00:39 <oklopol> dunno :P
21:00:48 <oklopol> the stack is a bit non-tree
21:00:56 <oklopol> i want something like a worm holding the stack...
21:01:01 <oklopol> :D
21:01:27 <oklopol> i like languages with real life origin in syntax to have real life semantics too, as much as possible
21:02:42 <oklopol> Receives two characters as input and outputs the greater of the two inputs
21:02:42 <oklopol> ^
21:02:42 <oklopol> # |
21:02:42 <oklopol> \<| ~~
21:02:42 <oklopol> |/
21:02:43 <oklopol> v |
21:02:45 <oklopol> \| v
21:02:47 <oklopol> |/
21:02:49 <oklopol> i don't get this
21:02:54 <oklopol> first v -> stack = A
21:02:58 <oklopol> second v -> stack = A B
21:03:04 <oklopol> ~ -> stack = A B B
21:03:11 <oklopol> ~ -> stack = A B B B
21:03:19 <oklopol> then <, which is false
21:03:23 <oklopol> so outputs B
21:03:39 <ais523> that reminds me slightly of HOMESPRING
21:04:15 <oklopol> tell me how that works, if you have the 30 seconds
21:04:26 <oklopol> or is it fucked up?
21:04:38 <ais523> how HOMESPRING works?
21:04:56 <oklopol> errrrrrrr i mean, how that *program* works
21:05:01 <oklopol> http://esoteric.voxelperfect.net/wiki/Tree
21:05:10 <ais523> I don't know either
21:05:45 <oklopol> Tslil? interesting name
21:06:31 <ais523> oklopol: ?
21:06:39 <oklopol> anyway, my seed idea was something like dropping seeds that grow a similar tree, and start new execution
21:07:04 <oklopol> possibly not the exact same tree, you'd have to do something real clever to keep semantics intact :P
21:07:12 <oklopol> ais523: creator of the lang = tslil
21:07:48 <ais523> ok
21:33:41 -!- boily has joined.
21:34:21 <ais523> hello boily
21:37:04 <boily> hello ais523
21:38:16 * ais523 is saying hello to people when they join in the hope of resparking a conversation
21:40:49 <boily> hmm... uh... how are you? (i know it's not much for a conversation, but it's a start!)
21:40:59 <slereah_> Y HULO THAR
21:40:59 <ais523> fine, but a little tired
21:41:11 <slereah_> My name is Epic Fail Guy, and I am here to ruin your esolang.
21:41:31 <ais523> sleareah_: I'd be interested to see how you would go about doing that
21:41:52 * ais523 finished an 8-month project on Wednesday
21:42:10 <ais523> so now I have time to waste doing things like using telnet as an IRC client
21:42:20 <boily> eh?
21:43:24 <ais523> I'm typing in IRC commands by hand
21:43:48 <ais523> it's one reason why I'm anxious to start a conversation, because repeatedly PONGing is boring
21:44:03 <oklopol> http://jsoftware.com/help/dictionary/dccapdot.htm okay J owns.
21:44:51 <ais523> wow, there are a lot of irssi users here
21:45:06 <boily> conversation starter: i was recently thinking about an assembly-based esolang.
21:45:24 <ais523> assembly's reasonably esoteric as it is, so that might be a good starting point
21:45:34 <ais523> most OISCs can be seen as assembly-based esolangs
21:48:20 <boily> about your remark that assembly is obfuscated enough by itself, you are right.
21:49:03 <ais523> I like some of the DSP assemblies that have commands that do crazily specific things
21:49:10 <boily> such as?
21:49:35 * boily hates 8086 assembly, and my homeworks.
21:49:35 -!- Deformati has changed nick to Deformative.
21:49:45 <oklopol> add ax to bx, when ax = 4, bx = 2 and cx < 100
21:49:47 -!- GreaseMonkey has joined.
21:49:58 <oklopol> otherwise divide 5/8, and lose result
21:50:00 <ais523> One I used had a command to multiply two registers and add the result to an accumulator, load another two numbers from memory into those registers, increment the pointers that said which address to load those two numbers from, and also store another accumulator into memory elsewhere
21:50:13 <oklopol> :D
21:50:16 <oklopol> lol awesome
21:50:17 <boily> good one!
21:50:22 <ais523> oklopol: what a pointless task
21:50:30 <slereah_> In what is it used?
21:50:36 <oklopol> ais523: the one i said?
21:50:58 <ais523> oh, and if adding to the acccumulator gave a value above 4294967295, it saturated at that value
21:51:05 <ais523> oklopol: yes
21:51:21 <ais523> slereah_: it's useful in doing a Fast Fourier Transform
21:51:30 <ais523> also in taking the product of two vectors
21:52:54 <ais523> it had lots of variants too; for instance, one subtracted the two numbers being loaded from memory and stored their difference in a register, rather than storing both of them
21:53:07 <ais523> that was useful for calculating the length of a vector
21:53:33 <ais523> the instruction looked kind of ridiculous in the assembly code because it took so many arguments
21:53:55 <ais523> oh, and it wasn't restricted to just incrementing the pointers; it could add or subtract 1, 2, or 3
21:55:19 <boily> bus time
21:55:21 <boily> bye!
21:55:22 -!- boily has quit ("WeeChat 0.2.6").
21:59:50 -!- Tritonio_ has joined.
22:00:12 <ais523> hello Tritonio
22:16:32 -!- oerjan has joined.
22:17:37 <ais523> hello oerjan
22:17:46 <AnMaster> just found a very nice tool, helps you find holes in your structs due to alignment issues: http://git.kernel.org/?p=linux/kernel/git/acme/pahole.git;a=summary sadly it seems you have to use git, can't find it anywhere else
22:18:25 <AnMaster> ais523, ah you are?
22:18:26 <oerjan> hello
22:18:27 <AnMaster> ok
22:19:14 <ais523> I can't think of any sensible way to write an IRC client without the ability to select()
22:19:31 <slereah_> What about a crazy way?
22:19:32 <AnMaster> ais523, intercal lacks that?
22:19:34 <ais523> there's a method involving three processes and two usernames, but it isn't sensible
22:19:45 <AnMaster> ais523, why two usernames?
22:19:49 <ais523> it lacked even the ability to read its own output for several decades
22:20:39 <ais523> the crazy way involves one thread to interact with the user, one to read from the server and write things back, and one to repeatedly ping the thread that's writing to the server on a second username so that it writes data every now and then
22:20:53 <ais523> the repeated pinging prevents the need to select
22:20:57 <AnMaster> ais523, hah
22:21:35 <AnMaster> ais523, ok that is plain crazy, well that is also why I couldn't do a sane irc client in bash, but it is fully possible to do a bot in bash
22:22:01 <ais523> I agree; I tried to write a bot in Thutu, but it wasn't getting messages back from the server for some reason
22:22:19 <ais523> I'd used a named pipe to connect my program to telnet in a loop, but the communication only seemed to be one way
22:22:25 <AnMaster> one issue however remains, that to do periodic events I do read with timeout of 5 seconds, and then look for periodic events that should have happened the during the last 5 seconds
22:22:33 <ais523> either that, or telnet was sending control chars that confused Thutu
22:24:00 <ais523> did you get that problem in your bashbot?
22:27:22 <AnMaster> nop
22:28:09 <AnMaster> it can use: socat, gnutls-cli, netcat, openssl sclient, /dev/tcp (fake device built in into bash, selectable at compile time of bash)
22:28:18 <AnMaster> so called transport modules
22:28:21 <AnMaster> easy to add new ones
22:28:51 <ais523> ah, so you didn't use telnet
22:29:09 <AnMaster> it just defines a set of methods: "get list of supported features and check deps installed", connect, disconnect, get line, send line
22:29:10 <AnMaster> :)
22:29:35 <AnMaster> unlike normal envbot modules you can only load one transport module
22:29:46 <AnMaster> and not unload or reload at runtime
22:30:27 <AnMaster> ais523, :D
22:30:53 <AnMaster> envbot is very advanced, and has the potential of getting to the same level as, say, supybot
22:31:05 <AnMaster> apart from multiple networks
22:32:39 -!- pikhq has quit ("Leaveth").
22:32:58 <ais523> I'll just have to add a select() syscall to INTERCAL
22:33:08 <ais523> but first I'll have to get the ffi working so I can implement it
22:34:00 -!- Judofyr has joined.
22:34:41 <AnMaster> ais523, what about poll?
22:35:07 <AnMaster> err, wait that just does one fd
22:35:18 <AnMaster> wouldn't help at all
22:35:29 <ais523> polling isn't really much use if you don't have the syscall for that either
22:35:41 <AnMaster> hah true
22:37:44 <AnMaster> ais523, what about doing async IO?
22:37:51 <AnMaster> aio_read/write/whatever
22:38:23 <ais523> or set the async flag on the file descriptor
22:38:36 <ais523> but the dearth of syscalls affects me again
22:38:45 <AnMaster> dearth?
22:38:51 <ais523> there are only something like 7 in CLC-INTERCAL, and I haven't implemented any in C-INTERCAL yet
22:38:57 <AnMaster> ais523, does that work on anything but linux, setting async flag I mean
22:39:01 <ais523> maybe I used the wrong word
22:39:09 <ais523> O_NONBLOCK is POSIX IIRC
22:44:41 -!- okofolor has joined.
22:44:56 <okofolor> rofl, switching back to linux is starting to feel like a good idea, my j interp crashed, took me like 5 minutes to get my computer running again :D
22:45:09 <okofolor> (on vista now)
22:45:51 -!- okofolor has changed nick to okopol.
22:45:57 -!- marshmallows has joined.
22:46:15 -!- oklopol has quit (Read error: 113 (No route to host)).
22:46:58 * oerjan picks up a stray 'l' from the floor. wonder who it belongs to?
22:47:23 <ais523> oerjan: any idea why there are stray lowercase letters on the floor?
22:47:36 <oerjan> i guess someone must have lost one, ais523
22:48:22 <oerjan> hm lais523, doesn't look like
22:48:33 <oerjan> *right
22:49:36 <AnMaster> http://rafb.net/p/gWAc2P69.html <-- interesting tool that pahole
22:49:48 <oerjan> and i don't think anyone called me loerjan since primary school or thereabouts
22:50:49 <ais523> AnMaster: what is that? it looks Befunge-related
22:51:16 <AnMaster> ais523, yes the struct is, but the output is from pahole, a tool that find holes in your structs due to alignment issues
22:51:30 <marshmallows> oh I wrote that
22:51:32 <AnMaster> developed by linux kernel people originally
22:51:38 <AnMaster> marshmallows, !?
22:51:40 <okopol> oerjan: could you hand that to me?
22:51:50 <okopol> or just insert it yourself
22:52:07 * oerjan gives okopol the 'l'. Be careful with it!
22:52:14 <okopol> yeah yeah, i've done this before
22:52:17 -!- okopol has changed nick to oklopol.
22:53:07 <oerjan> mind you, LanMaster sounds sorta cool
22:53:17 <oklopol> :P
22:53:22 <oerjan> but it was the wrong case anyhow
22:53:35 <oklopol> AnMalster sounds like "an molester"
22:53:56 <AnMaster> marshmallows, you wrote what?
22:54:33 <oerjan> oh no not marshmallows again.
22:54:39 <AnMaster> oklopol, oerjan: why the "l" discussion?
22:54:45 <oerjan> he is such a jerk, not like that nice guy faxathisia
22:55:49 <oerjan> AnMaster: oklopol lost an 'l' a while ago
22:56:03 <AnMaster> oerjan, oh?
22:56:23 <oerjan> fortunately it was recovered
22:56:52 <ais523> oerjan: are you sure that was the right 'l'? There's several over here that could fit
22:57:01 <oerjan> ooh
22:57:43 <oerjan> nah, none of them have the right black metal look
22:58:52 <ais523> that's a relief
22:58:59 * AnMaster someone left two dots here, they look like they would fit you oerjan
22:59:11 <AnMaster> örjan maybe?
22:59:16 <oerjan> no
22:59:26 <AnMaster> oh you want the dash over there then?
22:59:38 <oklopol> rjan usually leaves his dots home, they're strictly forbidden here
22:59:44 <oklopol> ah
22:59:46 <oklopol> indeed
22:59:51 <AnMaster> oklopol, I think he want an Ø not an Ö
22:59:52 <oerjan> don't think so, clashes with the e
22:59:59 * ais523 just came across this: http://catless.ncl.ac.uk/Risks/24.93.html#subj10.1
23:00:32 <ais523> strikes me as being a somewhat ambitious attempt
23:00:38 <oerjan> a is just a crumbled e anyhow
23:00:53 <ais523> but presumably the sort of people who fall for spam emails would fall even for that
23:01:08 <ais523> however, the plan would be thwarted due to such people's inability to use a fax machine
23:01:51 * marshmallows cries
23:02:22 <oklopol> i wish i had more money
23:02:29 <oklopol> i would gladly fund phisters
23:02:32 <oklopol> *phishers
23:02:56 <ais523> oklopol: why?
23:03:21 <marshmallows> I just bought this http://www.info.ucl.ac.be/~pvr/book.html
23:03:37 <oklopol> because in a perfect world, everyone would fall for that, and i could get rich doing something like that
23:03:51 <oklopol> donating money, clearly, makes the world a bit better.
23:04:08 <oerjan> marshmallows: i've heard great praise of it over at lambda the ultimate
23:04:10 <oklopol> my logic is flawless, as always
23:04:23 * ais523 is laughing out loud again, but at least this time there's nobody else in the lab to hear
23:04:45 <oklopol> :D
23:05:34 <oerjan> oklopol: too bad the world doesn't work on logic
23:06:00 <oklopol> too bad your mother doesn't work on logic
23:06:11 <oklopol> i'm on fire today
23:06:15 <oklopol> better continue my j's
23:06:41 <Judofyr> oklopol: I'm very sorry, but I can't make the header go under the box :(
23:06:47 <marshmallows> bleh
23:06:51 <ais523> oklopol: you'll have to change your nick to oklorofl some time if you continue reasoning like that
23:06:56 <marshmallows> can't find my code
23:07:07 <ais523> Judofyr: context?
23:07:19 <Judofyr> ais523: http://yr.judofyr.net
23:07:25 <Judofyr> click the marker
23:07:30 <Judofyr> (very beta)
23:07:57 <marshmallows> btw I'm really annoyed at IRC
23:08:05 <oklopol> ais523: good idea
23:08:08 <marshmallows> I just realised how silly this is (I mean other than #esoteric)
23:08:10 <oklopol> i love playing with my nick
23:08:15 <oklopol> i wish i could do it with my real name
23:08:22 <marshmallows> Why do we segregate into programming language specific channels?
23:08:42 <marshmallows> Would it not make so much more sense to have paradaigm specific channels instead?
23:08:49 <ais523> marshmallows: so that people don't have to be in conversations that don't interest them?
23:09:02 <ais523> much of IRC is "how do I do X in programming language Y"
23:09:21 <ais523> there's #concatenative, anyway
23:09:26 <marshmallows> yeah sort of like that ais523, but it ends up that people use a single programming language instead of many
23:09:34 <marshmallows> I thought that was the factor channel :p
23:09:39 * oklopol joined
23:10:21 <oklopol> they said "hi", what a nice channel :)))
23:10:24 <marshmallows> hmf :[
23:10:40 <oerjan> oklopol: there is this tv guy in norway who added "Vrsgod Takkskalduha" to his surname, legally
23:10:49 * marshmallows is alone in #declarative #functional and #procedural
23:10:58 <oerjan> spelled slightly differently, i think
23:11:04 <oklopol> heh
23:11:16 -!- Corun has quit ("This computer has gone to sleep").
23:11:18 <oklopol> well, the problem is, while you can do that here, too, you cannot change it back.
23:11:42 <oerjan> marshmallows: there is a #concatenative i believe
23:11:53 <ais523> oerjan: what does that translate as?
23:11:56 <oklopol> hmph, i cannot translate that to english, just finnish
23:12:46 <oklopol> here you are | thanks?
23:12:54 <oerjan> something like that
23:13:47 <oerjan> yeah i think there is some limit on how often you can change your name
23:14:03 <marshmallows> It just seems totally wrong to me
23:14:12 <oklopol> we have once in a lifetime / for a *good reason* / marriage
23:14:23 <oklopol> marshmallows: still on the paradigm topic?
23:14:26 <marshmallows> I am thinking of the story with all the blind people trying to figure out what an elephant is
23:14:27 <oerjan> he did it after the laws were greatly liberalized
23:14:28 <oklopol> or changeing names
23:14:37 <oklopol> changing
23:14:46 <marshmallows> they are all expert in one thing, so none of them really understand it
23:15:15 <oklopol> i haven't heard that story
23:15:19 <oklopol> will you tell it?
23:15:22 * marshmallows wants to merge all the procedural channels in one.. all the functional into one..
23:15:28 * oklopol gathers by the fire
23:16:08 <oklopol> #haskell is quite different from #scheme...
23:16:24 <ais523> and likewise C++ is quite different from Java
23:17:16 <marshmallows> It just feels like segregation
23:17:30 <marshmallows> and I think it's bad but I'm probably wrong and worrying about nothing
23:18:16 <ais523> on Usenet there are newsgroups at all levels
23:18:49 <ais523> so for instance comp.lang.c only talks about 100% ANSI- (or K&R-) compliant C, or occasionally about whether code is conforming
23:19:01 <ais523> to discuss things like POSIX C, you would go to comp.unix.programmer
23:19:20 <ais523> but to discuss algorithms (which are language-dependent), comp.programming would be the best place
23:19:29 <marshmallows> I see
23:19:36 <oklopol> language-dependent?
23:19:38 <oklopol> or independent?
23:20:05 <ais523> I meant independent
23:20:13 <oklopol> yrar
23:20:56 <marshmallows> anyway I'm happy I got someone into logic programming today :P
23:21:09 -!- Corun has joined.
23:21:36 <ais523> marshmallows: which language?
23:22:00 <marshmallows> I used Prolog, http://reddit.com/r/programming/info/6cwnk/comments/ , but they will probably learn Oz, I guess.. which I also want to do
23:22:32 <marshmallows> Oz is this witches cauldron language seems pretty cool
23:23:11 * ais523 likes Prolog but doesn't think it goes far enough
23:23:25 <ais523> it has lots of restrictions, just to make it implementable...
23:23:27 <marshmallows> Yeah Prolog is severely flawed in many ways..
23:24:03 <marshmallows> Still it's one of the best :/
23:24:39 -!- slereah_ has changed nick to Slereah.
23:25:24 <marshmallows> always looking for new Logic langs/implementation techniques :)
23:25:44 * ais523 is planning a Prolog-like esolang
23:25:49 <ais523> that's very uncomputable
23:26:03 <ais523> it manages to be above-TC (and therefore TC) despite having no way to loop
23:26:14 <ais523> because it can perform uncountably many computations in parallel
23:26:21 <marshmallows> :D
23:26:22 <marshmallows> cool
23:26:37 <oklopol> the one that could actually check its own halting if implemented perfectly?
23:26:38 <Slereah> How will it do it!
23:26:58 <Slereah> Perfect proof generator? :o
23:26:59 <ais523> basically, a program contains a certain number of variables
23:27:14 <marshmallows> There was a nice thought exercise, adding the language construct infinity { ... } to C
23:27:16 <ais523> which can take on infinitely many values
23:27:29 <ais523> 'untyped function' is one of the possible data types
23:27:41 <ais523> A program consists of constraints on those variables
23:28:29 <oklopol> can you do "recursion"?
23:28:41 <ais523> of course
23:28:44 <oklopol> define constraints in terms of other constraints
23:28:50 <oklopol> i guess would be more appropriate
23:28:59 <oklopol> hmm
23:29:18 <oklopol> or not, that might sound more confusing
23:29:41 <ais523> as for recursion, you simply add an argument to a function that represents recursion depth and place a constraint on the relationship between values of the function at different depths
23:30:14 <oklopol> yeah, sure
23:30:30 <oklopol> i think we need some help from the matlab people
23:30:45 <oklopol> it obviously needs to be able to do all mathematics known to man!
23:31:18 <oklopol> can you do algebra?
23:31:19 <oklopol> hmm
23:31:34 <oklopol> i guess you can just make tree constraints and use the parse trees of algebraic expressions
23:31:39 <ais523> algebra's fine
23:32:19 <marshmallows> give it a MAXIMA FFI :D
23:32:36 * ais523 tries to remember what MAXIMA is
23:32:51 <marshmallows> nice algebra system written in Common Lisp
23:33:07 <oklopol> can you just do stuff like A*x^2 + Bx + C == 0 <==> x = (-B+sqrt(B^2-4*A*C))/(2*A)
23:33:11 <oklopol> to add mathematical truths :-)
23:33:23 <oklopol> +-
23:33:34 <oklopol> or <==> -> ==>
23:33:38 <oklopol> errr
23:33:40 <oklopol> <==
23:33:44 <oklopol> errrr
23:33:46 <oklopol> you fix it
23:33:46 * marshmallows whines about introducing such compilex axioms
23:33:57 <marshmallows> why not just prove it in the language itself?
23:33:59 <ais523> that's easy enough to deduce without that rule using completing-the-square
23:34:08 <oklopol> indeed
23:34:18 <oklopol> but can you hint the program?
23:34:26 <Quendus> bah, why can't esolang creators do anything more interesting than brainfuck-derivatives? :(
23:34:42 <marshmallows> Quendus: Check out #esoteric!
23:34:45 <oklopol> you should be able to give it that axiom *and* deduce that
23:34:55 <ais523> many esolang creators do
23:34:56 <oklopol> Quendus: some can, look deeper
23:34:58 <marshmallows> Quendus: they are talking about something totally different ovwer there
23:35:17 <Quendus> RLY???
23:35:18 <ais523> look at the list of esolangs I've created, for instance, or that any of the regulars here have created
23:35:25 <marshmallows> :(
23:35:30 * marshmallows hasn't made any esolang...
23:35:43 <ais523> http://esolangs.org/wiki is a good starting point
23:35:43 <oklopol> most of esolangs.org are brainfuck-derivatives, or at least clearly imperative, and very close
23:36:02 <oklopol> but there are many languages completely unlike it
23:36:08 <ais523> http://esolangs.org/wiki/User:ais523 contains a list of the ones I've created
23:36:10 <Quendus> I looked at the list of things on the wiki and found very little else
23:36:19 <oklopol> and some of the brainfuck-derivatives really do have a point.
23:36:19 <ais523> I don't think many of them are Brainfuck-based
23:36:24 <marshmallows> oh well I implemented an esotericish lang (one that lets you run programs forwards or backwards in ..)
23:36:24 <Quendus> and so far nothing that more fun than befunge to write in
23:36:33 <marshmallows> I guess that's something..
23:36:38 <marshmallows> ?
23:36:49 <ais523> Quendus: try Underload if you haven't already
23:37:24 <oklopol> Quendus: also unlambda and lazy k are based on a different mathematical model than brainfuck
23:37:33 <oklopol> very different
23:37:38 <Quendus> ok, thanks
23:37:57 <ais523> yes, the functionals are pretty different
23:38:09 <ais523> you might also want to look at languages like Thue and ///
23:38:17 <ais523> which is a different paradigm again
23:38:23 <Slereah> Writing a mathematical function in Brainfuck is as easy to do as a CAT program in Unlambda :D
23:38:49 <marshmallows> hehe
23:39:01 <oklopol> in thue, the way i program, is basically to simulate something like a a turing machine
23:39:06 <oklopol> just much harder
23:39:11 <marshmallows> thue is so cool o_o
23:39:23 * Slereah never had the courage to read up Thue
23:39:31 <marshmallows> oh I wrote a thue-ish interpreter too!
23:39:35 <ais523> what other paradigms are there?
23:39:45 <marshmallows> I have implement lots of langs but not invented :/
23:39:54 <ais523> there are object-oriented langs like Glass and ORK
23:39:56 <Slereah> Cellular automatons?
23:39:58 <Slereah> Also bully
23:40:02 <marshmallows> Procedural, Logic, Functional
23:40:04 <oklopol> hmm... weird kolmogorov thing no one understands, are there esolangs based on it?
23:40:10 <oklopol> Slereah:
23:40:13 <oklopol> ^
23:40:14 <Slereah> oklopol: Well, I'm trying.
23:40:22 <ais523> oklopol:Andrei Machine 9000
23:40:25 <marshmallows> Declarative, Constraint, Term Rewriting, Cellular
23:40:27 <Slereah> Although right now, I have a lot of school.
23:40:28 <oklopol> oh, right :D
23:40:34 <ais523> there are langs like Flip, BackFlip, and Black
23:40:51 <oklopol> *the weird
23:41:13 <Quendus> ok, that should be enough to distract me from matrices :>
23:41:14 <Slereah> And multi-paradigm.
23:41:20 <Slereah> Like the dysfunctional languages :D
23:42:02 <oklopol> no one mentioned stack based langs?
23:42:07 <oerjan> Smetana and Smatiny
23:42:09 <oklopol> concatenative
23:42:24 <oklopol> also destructor-based languages, they are a bit hit
23:42:26 <oklopol> :D
23:42:30 <ais523> well, I mentioned Underload
23:42:32 <Slereah> Destructor based?
23:42:43 <oerjan> well yeah if they weren't just vaporware i guess :)
23:42:44 <oklopol> Slereah: oerjan's reaper
23:42:50 <ais523> there's also Sceql, a queue-based lang
23:42:50 <oklopol> oh
23:42:55 <oklopol> then there's nopular programming
23:42:59 <oklopol> for instance nopol
23:43:00 <oerjan> o_O
23:43:09 <oklopol> where no program does absolutely anything.
23:43:11 <oklopol> hmm
23:43:14 <oklopol> err
23:43:14 <ais523> and OISCs like Subskin, SMATINY (not quite an OISC but similar), and MiniMAX
23:43:20 <oklopol> where every program does absolutely nothign.
23:43:21 <Slereah> Oh, like Unecessary or minimal
23:43:23 <oklopol> *nothing
23:43:32 <marshmallows> LAZY!
23:43:34 <oerjan> oklopol: i preferred the first explanation
23:43:52 <oklopol> hmm, just sounded weird at first
23:43:53 <Slereah> There's the social esolangs.
23:43:55 <marshmallows> Stacky, Consey, Array-based
23:43:56 <Slereah> Such as IRP
23:43:56 <oklopol> irp!
23:44:02 <oklopol> chirp chirp
23:44:05 <marshmallows> hash table based ;p
23:44:32 <oklopol> hash tables are a special function, paradig...mically speaking
23:44:33 <oerjan> would Turkey Bomb be a social esolang?
23:44:36 <marshmallows> is there any good IRP -bot-?
23:44:48 <oklopol> special case of functions
23:44:58 <oklopol> asdasdf, i can't form sentences today
23:45:00 <oerjan> marshmallows: i made an IrpBot but i wouldn't call it good...
23:45:04 <ais523> is there a hashtable-based esolang?
23:45:05 <marshmallows> :D
23:45:19 <ais523> oerjan: if it just did all the examples on the wiki page, it would probably be good enough
23:45:23 <marshmallows> ais523: I think adu described one here but didn't implement it
23:45:50 <oerjan> ais523: oh nothing like that
23:45:55 <oklopol> oh, then there's tag systems... not sure if they actually belong to some category
23:46:02 <oklopol> i'd call them queue-based languages
23:46:14 <ais523> how could I have forgotten cyclic tag?
23:46:26 <oklopol> indeed, you're the WCT guy
23:46:26 <ais523> it's really good at proving TCness of /very/ simple systems
23:46:45 <ais523> and it's the lang I proved the 2,3 Turing machine could emulate
23:47:03 <Slereah> Also, uncomputable langs
23:47:10 <oklopol> hmm... aren't they actually the ideal model for queue-based langauges? i think people have talked about making a queue-based language, but haven't heard the comparison to tag systems
23:47:11 <Slereah> Although they're kind of uncomputable.
23:47:15 <oklopol> *languages
23:47:30 <oklopol> *i haven't heard
23:47:51 <ais523> yes, I wonder why nobody mentioned that during the creation of Qdeql and Sceql
23:50:54 <ais523> there's ordinary tag as well as cyclic tag, of course
23:51:35 <Slereah> No freeze tag?
23:52:01 <ais523> Slereah, what's that?
23:52:26 <oklopol> a game
23:52:32 <oklopol> kids play it
23:52:43 <Slereah> A variation of the one the tag system is based on.
23:52:51 <Slereah> Well, named from
23:53:20 <oklopol> what's ordinary tag?
23:53:24 <ais523> Slereah: how does it work?
23:53:41 <ais523> oklopol: you repeatedly disregard the first n characters of a queue
23:53:49 <Slereah> IIRC, like normal tag, but when someone is it, he can't move
23:53:59 <Slereah> He can move again if another player unfreeze him
23:54:01 <ais523> then put something on the end of the queue that depends on the head of the queue
23:54:33 <ais523> it can be compiled into cyclic tag easily
23:54:37 * oerjan thinks a tag game where 'it' cannot move would be a tad boring
23:54:42 <oklopol> umm, and cyclic tag different how?
23:54:59 <oklopol> actually, 'it' doesn't change
23:55:01 <Slereah> oerjan: The "it" guy remains the same
23:55:10 <Slereah> But he has to tag everyone.
23:55:10 <oerjan> thought so ;)
23:55:12 <Slereah> I think
23:55:16 <Slereah> It's been a while
23:56:01 <ais523> ah, you can't move if you're tagged, and you can be released by anyone who hasn't been tagged?
23:56:03 <oklopol> *tag is
23:56:10 <oklopol> ais523: yeah
23:57:04 <oklopol> fun game for everyone except the poor bastard who happens to be 'it'
23:57:10 <Slereah> Heh.
23:57:41 <ais523> oklopol: you remove the first character from the queue each time. If it's a 1, you add a string to the end of the queue that depends on the number of steps the system has run, modulo some constant
23:57:57 <oklopol> oh, right
23:58:16 -!- Judofyr has quit.
23:59:00 <ais523> so a tag system examines every nth character, and has often more than two characters available, but adds something at every step
23:59:25 <oklopol> hmm... i may have asked before, but does anyone know anything about the complexity of the 1 -> 11 -> 21 -> 1211 -> 111221 -> 312211 thing?
23:59:29 <ais523> whereas a cyclic tag system examines every character, adds something only on one character (so only two characters are available), but what is added depends on the number of steps the system has been running
23:59:48 * ais523 has to go home
23:59:52 -!- ais523 has quit ("bye!").
←2008-03-20 2008-03-21 2008-03-22→ ↑2008 ↑all