←2008-02-18 2008-02-19 2008-02-20→ ↑2008 ↑all
00:00:11 -!- BrainF has joined.
00:00:11 <BrainF> Hi all. I wrote this BF program with the help of a horrible horrible generator I wrote.
00:00:11 -!- BrainF has quit (Client Quit).
00:00:17 <Sgeo> It's so slow in connecting though
00:01:09 <Sgeo> I need a better syntax for scripts
00:03:53 <oklopol> it's actually pretty cool now that i see it in action
00:04:09 <Sgeo> oklopol, PSOX?
00:04:27 <oklopol> btw. unlambda cannot output any possible byte (right?), can psox be used with it?
00:04:50 <Sgeo> oklopol, um.. what do you mean by "cannot output any possible byte"?
00:05:00 <oklopol> psox seems to need null bytes a lot?
00:05:02 <oklopol> i mean, zeroes.
00:05:07 <Sgeo> oklopol, yes
00:05:17 <oklopol> i don't think you can output that in unlambda.. :<
00:05:18 <oerjan> oklopol: unlambda can output anything in principle
00:05:25 <oklopol> hmm
00:05:32 <oklopol> you need to have the chars in the source? :P
00:05:36 <oerjan> yep
00:05:37 <oklopol> .<null>
00:05:41 <oklopol> heh
00:06:02 <oerjan> my self-interpreter has a table of all the ?x'es
00:06:17 <oerjan> (the .x's can be generated from the input using |)
00:06:31 <oklopol> it'd be awesome to have a system where just being able to output two different bytes would suffice.
00:06:42 <oklopol> psox for dummies
00:07:23 <Sgeo> hm?
00:07:37 <oerjan> heh this means you actually cannot do PSOX with just null-terminated C strings
00:07:42 <oklopol> i mean, so that those two could be anything... you would have a clever initialization where the language tells psox what it can do.
00:08:09 <oklopol> after which an encoding rises somewhat naturally, for languages where not everything is easy to output
00:08:39 <oklopol> oerjan: well who cares about such turing tarpits anyway
00:08:42 <oerjan> i think PESOIX or something had such an adjustable I/O encoding at least intended
00:09:13 <Sgeo> trivial-idiotic way to do it: have a represent 0s and b represent ones, and put in a layer between that and PSOX
00:09:19 <Sgeo> oerjan, oh?
00:09:58 <oerjan> Sgeo: there was some blurb about the languages needing only some way to _represent_ the required range of numbers, anyhow
00:10:48 <Sgeo> hm.. I suppose I could make a command line option, like -n
00:11:01 <oklopol> oerjan: that's trivial if external settings are used, but could the program actively ask for an encoding using its limited facilities?
00:11:09 <Sgeo> -n a would tell the interpreter to subtract ord('a') from each character except those escaped as output
00:11:33 <oklopol> i mean, could it do that in that vague idea you were describing :P
00:11:40 <Sgeo> Not going to work on it ATM, but it's an idea
00:11:45 <oerjan> oklopol: for languages such as original INTERCAL which has only a _very_ limited I/O format, external settings seem necessary
00:12:30 <oklopol> oerjan: in case nonsense is taken as a calibration sequence, i don't think they are necessary.
00:12:37 <oklopol> how limited is intercal?
00:12:52 <oklopol> tbh i still don't know much about it :|
00:12:59 <oerjan> roman numerals in one direction, explicit english words in the other, or something like that
00:13:13 <oklopol> xD
00:13:17 <oklopol> good old intercal <3
00:13:56 <Sgeo> Scary that there exist languages that PSOX doesn't currently support..
00:15:14 <oklopol> oerjan: but why english, why not sanscrit
00:15:45 <slereah_> Well, you can't write sanskrit on a keyboard!
00:16:09 <lament> you can't?
00:16:11 <Sgeo> I can write nulls on a keyboard: \x00\x00\x00\x00
00:16:17 <oerjan> oklopol: i recall a list of supported languages
00:16:31 <oerjan> most of which were highly weird
00:17:25 <Sgeo> Can modern INTERCAL do PSOX?
00:17:47 <Sgeo> And does anyone want to write a decent IRC bot in BF+PSOX?
00:17:57 <Sgeo> or INTERCAL+PSOX
00:17:57 <Sgeo> ?
00:18:30 <oerjan> Sgeo: modern intercals have binary I/O extensions
00:18:37 <Sgeo> oerjan, cool
00:18:43 <slereah_> I'm already sick, don't try to kill me Sgeo.
00:18:50 <Sgeo> slereah_, get well soon!
00:20:10 <Sgeo> </knack-for-taking-things-too-literally-maybe-unless-half-of-that-line-was-serious-and-half-was-silliness-which-makes-sense-must-stop-writing-in-html-now-cant-stop-here>
00:20:10 <oerjan> slereah_: of course you can write sanskrit on a keyboard. the script is in UNICODE, and besides is also used for modern Hindi
00:20:20 <oklopol> lol, i never thought simulating a fibonacci heap manually could be this boring.
00:20:59 <oklopol> if i ever get to teach a class, i'm gonna make 'em pay for this. decrease min WILL FUCKING RECURSE.
00:22:20 * oklopol has simultaneously found the teacher AND the sadist in him.
00:23:27 <slereah_> Will the child molester follow soon?
00:25:11 <oklopol> people in general dislike molesting so bad i don't think i'll ever try that.
00:25:38 <oklopol> some seem to think getting fucked is actually worse than getting beaten.
00:25:57 <oklopol> but then again, some people listen to abba.
00:26:13 <oklopol> people are different, in a sick way.
00:26:13 <slereah_> What, you don't like ABBA?
00:26:21 <slereah_> That's worst than molesting children!
00:26:24 <oklopol> it was an example, but no, not really
00:26:51 <oklopol> not liking abba might be worse than molesting children, but i don't have to go to jail for it :)
00:27:11 <oklopol> i think
00:27:14 <oklopol> not sure though
00:27:16 <Sgeo> http://trac2.assembla.com/psox/browser/trunk/utils/TEXT2BF.py
00:28:33 <oklopol> Sgeo: is that a generated generator?
00:28:37 <oklopol> it's kinda trivial.
00:28:39 <Sgeo> oklopol, lol no
00:28:54 <Sgeo> trivial?
00:29:10 <oklopol> well... isn't it?
00:29:12 <oklopol> dunno
00:29:15 <Sgeo> I guess
00:29:24 <oklopol> my head is full of dancing oklotrees right now
00:29:42 <oklopol> they're a combination of fibonacci trees and pure insanity
00:29:47 <oklopol> *heaps
00:29:48 <Sgeo> lol
00:30:39 <oklopol> oklotrees, do not execute extract-min in O(log n), but they look EXPONENTIALLY COOL
00:30:44 <oklopol> you should see it
00:31:06 <oklopol> nice place for a comma
00:34:46 <oklopol> i was quite dissappointed though when the professor told fibonacci heaps are one of the weirdest :|
00:35:15 <oklopol> with math you always know you can take any sub-subject and there's always 30000 pages of material about it
00:35:41 <oklopol> i want millions of weird heaps...
00:36:18 * oklopol is obsessed, once again
00:41:22 -!- Corun|pants has changed nick to Corun.
00:42:15 <oerjan> oklopol> my head is full of dancing oklotrees right now
00:42:18 <oerjan> oklopol> they're a combination of fibonacci trees and pure insanity
00:42:30 * oerjan gets Cthulhu mythos associations
00:43:30 <oklopol> i don't know much about cthulhuism
00:43:45 <oklopol> i get pop culture a bit slow.
00:43:48 <slereah_> It mostly involves dissin' on niggas.
00:43:58 <oklopol> xD
00:44:09 <slereah_> Well, Cthulhu is 90 years old.
00:44:13 <oerjan> oklopol: believe slereah_. that is safer than the real thing.
00:44:18 <oklopol> slereah_: you're one of my favorites :)
00:44:30 <oerjan> take or give a few dozen zeros
00:44:36 <oklopol> remind me of me
00:44:56 <oklopol> hmm
00:44:58 -!- timotiis has quit ("leaving").
00:45:02 <slereah_> Hell, Turing might have read some Cthulhu!
00:45:04 <oklopol> not many zeroes to take
00:45:20 <oklopol> unless you cound the invisible ones
00:45:23 <oklopol> *count
00:45:56 <oerjan> the insane ones!
00:46:11 <oklopol> TAINTED ZEROES KILL KILL AOIFSDJTGO
00:46:15 <oerjan> no, forget those. move on. nothing to see here.
00:47:43 <oklopol> hmm...
00:47:59 <Sgeo> Maybe I could make a BfEcho bot/
00:48:17 <slereah_> What would it do!
00:48:30 <Sgeo> Hm, but I'd need to examine the text coming in from the socket
00:48:30 <oklopol> i think i should make some generic tools for operating on trees, and make a program to randomize tree structures for me
00:48:45 <Sgeo> There's no builtin IRC stuff, just sockets
00:48:49 <oklopol> that would be FUCKING HOT LAVA OH BABY YEAH
00:48:59 <oklopol> i hope lament isn't awake.
00:49:08 <Sgeo> oklopol, why?
00:49:31 <oklopol> Sgeo: lament is the banbot of this channel, "fuck" triggers it
00:49:46 <slereah_> Fuck you lament
00:49:49 <slereah_> :D
00:49:53 <oklopol> also flooding and ascii penises.
00:49:53 <Sgeo> oklopol, that can't be serious, you'd be banned if you were
00:50:02 <slereah_> 8===D
00:50:03 <Sgeo> fuck
00:50:03 <pikhq> Nah; he just has the bot to say 'OMG you said fuck'
00:50:06 <pikhq> Fuck on
00:50:10 <pikhq> Fuck.
00:50:17 <pikhq> Guess he disabled it.
00:50:17 <oklopol> Sgeo: just assume everyone is always kidding ;)
00:52:32 <oklopol> you never know quite what to answer when an ex girlfriend tells you they brought a dildo with 10 different vibration modes.
00:52:46 <oklopol> we should share more, ppl, this is great
00:52:52 <slereah_> "Can I try it?"
00:52:58 <oklopol> :D
00:52:59 <ehird`> immibis is the one with the bot
00:53:08 <oklopol> she'll prolly suggest that anyway
00:53:12 <oklopol> anyway, megoes ->
00:53:14 <oklopol> cya
00:53:21 <slereah_> Bai.
00:53:36 <ehird`> pikhq probably swears more than oklopol, though when oklopol swears its in a tightly concentrated space
00:53:41 <ehird`> i just swear all the fucking time
00:53:54 <pikhq> ehird`: I also curse multilingually.
00:54:03 <ehird`> pikhq: That must be..interesting
00:54:06 <oklopol> i mostly swear for the fuckarous fuck of it
00:54:25 <oerjan> 10 different modes? is this a dildo or a musical instrument?
00:54:29 <Sgeo> How often do I swear? Almost never?
00:54:47 <ehird`> Sgeo: Never.
00:54:47 <oerjan> (could be a combination of course)
00:54:48 <slereah_> Can you combine them?
00:55:01 <oklopol> oerjan: that's what i wondered too... i'm fairly sure the human pussy only distinguishes like 3...
00:55:02 <slereah_> Maybe find the resonance frequency of your prostate or something!
00:55:06 <Sgeo> ehird`, well I swore just before, after the mention of lament..
00:55:18 <pikhq> "And now, Beethovens' Fifth, in the key of C, on the Dildo."
00:56:10 <ehird`> well, yes
00:56:19 <slereah_> Maybe you could hook it up to your computer, and connect it to some game.
00:56:52 <slereah_> "TEN THOUSAND POINTS, ONE ORGASM"
00:59:01 <Sgeo> I'm not quite sure how to test server sockets
01:13:31 * lament bans slereah_
01:13:39 <slereah_> Noooooes
01:24:44 -!- Corun has quit ("This computer has gone to sleep").
01:24:54 <ehird`> lament: fuck
01:26:03 <lament> my punishment shall be swift
01:26:11 <lament> and, er, horrible
01:27:26 <lament> you will cry like a japanese schoolgirl being raped by a giant radioactive octopus
01:27:56 <oerjan> wouldn't that be _rewarding_ oklopol though
01:29:53 <pikhq> I thought that the tentacle rape was actually a high honor?
01:31:27 <lament> wanna find out?
01:31:52 * lament wiggles his tentacles
01:32:24 * oerjan scratches out lament's species on his #esoteric score card
01:37:08 <lament> i meant "his or her tentacles", of course
01:37:16 -!- Corun has joined.
01:37:57 <oerjan> what, just two possible sexes?
01:38:17 <oerjan> i won't bother scratching out "home planet", then.
01:40:20 <lament> "his or her" is one sex!
01:41:38 <Tritonio_> hello
01:41:50 <Tritonio_> everyone
01:42:00 <ehird`> Tritonio_: quick
01:42:03 <ehird`> you must escape
01:42:10 <Tritonio_> huh?
01:42:12 <ehird`> lament is raping everyone with his or her tentacles
01:42:16 <Tritonio_> lol
01:42:40 <Tritonio_> i read about the radioactive octapus and i really loled...
01:42:42 <Tritonio_> :-P
01:43:46 <Tritonio_> btw i updated the brainfuck algorithms page on the wiki
01:44:07 <Tritonio_> i would be really happy if someone checked if the update is ok. :-)
01:46:40 <Tritonio_> how often does calamari log in here??
01:47:41 <slereah_> Not enough that I can remember him
01:48:44 <oerjan> er i don't think it was _that_ long ago he was here?
01:49:32 <lament> Tritonio_: you prefer to be raped by squid?
01:50:44 <Tritonio_> lament, i am reallllllyyyy drunk right now so i am not even sure what a squid is
01:50:57 <lament> Tritonio_: the same animal as "calamari"
01:51:04 <Tritonio_> although i think it is that ocapus like thing that spits ink
01:51:26 <Tritonio_> oh yes... and calamari is a greek word too
01:51:32 <Tritonio_> i should now... :-D
01:51:43 <ehird`> he was here yesterday
01:51:46 <Tritonio_> i know
01:52:00 <ehird`> Tritonio_: dsof, slo utiua?
01:52:08 <Tritonio_> we talked yesterday about that 1 byte / array cell table implementation i made
01:52:16 <Tritonio_> ehird`, WTF?
01:52:20 <ehird`> Tritonio_: oh. i see thn..e
01:53:05 <ehird`> Trinioo_t: So, whtear euaf i?
01:53:10 <Tritonio_> calamari told me to update the esolang wiki with the new algo... but i want to know if i must do something with calamari's implementation on the same page
01:53:26 <ehird`> Airu. Ajgfunp, xkauf. ua.
01:53:38 <Tritonio_> ehird`, lol
01:53:50 <Tritonio_> whatever... maybe i must go to sleep.....
01:53:51 <ehird`> Tritonio_: Auuee! If you kanu, tigo aodi.
01:54:08 <Tritonio_> suuuu... nigGOODhtt
01:54:14 <Tritonio_> re
01:54:14 <ehird`> sopaof ubnajd.
01:54:17 <ehird`> fo.
01:54:21 <lament> ehird`: I agrue. You puroesj trjacgr.
01:54:22 <ehird`> diaoc oasirng ioaisd.
01:54:33 -!- Corun has quit ("Delight of Turkishness").
01:54:46 <Tritonio_> >[>>>[-<<<<+>>>>]<[->+<]<[->+<]<[->+<]>-]
01:54:47 <Tritonio_> >>>[-]<[->+<]<
01:54:47 <Tritonio_> [[-<+>]<<<[->>>>+<<<<]>>-]<<
01:54:48 <lament> Tritonio_: scose daneroush rcga?
01:55:01 <Tritonio_> is this a REAL language?
01:55:10 <Tritonio_> or jist ehird'ish?
01:55:12 <ehird`> Tritonio_: It's enlgirs..
01:55:30 <Tritonio_> c i oh
01:56:01 <Tritonio_> enoyreve thgin doog yawyna
01:56:08 <Tritonio_> eyb
01:56:17 <Tritonio_> )-:
01:56:18 <lament> reebyebe
01:56:21 <ehird`> Tritonio_: ??? Irua. I dnot udnajrtsnd ua.
01:56:32 <oerjan> lament: LIES. y nt befol skwat.
01:56:44 <lament> oerjan: GC!
01:56:52 <Tritonio_> i splipli dnot ndagerstand u
01:57:06 <ehird`> lament: Auu, I dnta thnkgi I will undnernstnd thtat for lngo..
01:57:20 <Tritonio_> will someone Ckeck the UwPiDkAiTE
01:57:21 <Tritonio_> ?
01:57:44 <Tritonio_> rhapsody are simply perfect
01:57:45 <lament> are you drunk or what? You're talking nonsense.
01:57:50 <Tritonio_> i am
01:57:57 <lament> jglu?
01:58:01 <Tritonio_> em
01:58:10 <Tritonio_> loipon tha arxiso kai ego na milao ellinika
01:58:20 <Tritonio_> giati poly moy ta priksate an kai exo psofisei sta geleia
01:58:39 <oerjan> Tritonio_: lkos fin to me
01:58:41 <ehird`> Aufu... iaminitan, AWESOME!!!
01:58:41 <lament> perdon, yo no hablo chino
01:58:52 <Tritonio_> kala den pame kala edo mesa....
01:58:55 <Tritonio_> xaxaxaxa
01:59:14 <oerjan> N gr det over alle stvleskaft her
01:59:17 <Tritonio_> oloi oi kamenoi toy eleytherokomboy se ena domatio
01:59:25 <Tritonio_> gamato
01:59:36 <Tritonio_> kalinixta kayles
01:59:40 <Tritonio_> =goodnight
01:59:46 <ehird`> Wuaut? Drnkju, I think you arear. ... you don't smem to be ablkgl to undasnernst su.....
01:59:46 <Tritonio_> :-)
01:59:48 <lament> jag alska bananer
02:00:00 <ehird`> Yuo shdoul go tobde..
02:00:04 <oerjan> lament: lskar
02:00:38 * Tritonio_ 's nonsense filter log's him out automaticaly.
02:00:55 <Tritonio_> PS: we are all european here?
02:01:23 <lament> i'm Pacific.
02:01:30 <slereah_> I'm from the moon.
02:01:35 <Tritonio_> what;s that?
02:01:36 <Tritonio_> lamen
02:01:38 <Tritonio_> lament
02:01:44 <slereah_> It's a small rock around the earth
02:01:54 <lament> I live in the Pacific ocean.
02:01:58 <Tritonio_> i know about the moon. my grandma was from there
02:02:05 <Tritonio_> lament, i c
02:02:17 <oerjan> slereah_: don't be ridiculous. the earth is far too large for a small rock to fit around it.
02:02:34 <ehird`> Tritonio_: We couldn't trick you.
02:02:35 <ehird`> :(
02:02:42 <Tritonio_> oerjan, SDOING
02:02:49 <Tritonio_> lolol
02:02:51 <Tritonio_> anyway
02:02:58 <Tritonio_> see you 2morrooooooooooooooow
02:03:14 <lament> oerjan: i think he meant inside, not around
02:04:00 <oerjan> oh
02:04:31 <lament> but there's a complicated system of mirrors which makes it appear in the sky
02:06:39 <slereah_> It's the moon conspiracy.
02:06:55 <slereah_> Man didn't land on the moon, he fell on it.
02:21:54 <Sgeo> I'm American
02:22:17 -!- kwertii has joined.
02:22:20 -!- kwertii has quit (Remote closed the connection).
02:22:28 <ehird`> Sgeo: Who asked?
02:22:35 <Sgeo> <Tritonio_> PS: we are all european here?
02:22:48 -!- kwertii has joined.
02:23:44 <Sgeo> eso.b
02:23:48 -!- BrainF has joined.
02:23:48 <BrainF> Hi all. I wrote this BF program with the help of a horrible horrible generator I wrote.
02:23:48 -!- BrainF has quit (Client Quit).
02:25:25 <Sgeo> http://pastebin.com/m6f8e6cdc
02:27:01 <Sgeo> And a more readable version: http://pastebin.com/m58f2748
02:33:56 * Sgeo modifies the generator to take the scripts in a simpler form and also to automatically add linebreaks
02:41:05 -!- ehird` has quit ("K-Lined by peer").
02:57:13 <Sgeo> Hm, I wonder if I can make a text generator that uses up N number of cells
03:03:35 * Sgeo is too lazy
03:03:43 <pikhq> 22 packets transmitted, 2 received, 90% packet loss, time 21014ms
03:03:48 <pikhq> Someone out there hates me.
03:04:23 <Sgeo> pikhq, are you going to try sockets?
03:04:27 <Sgeo> Sockets are working now >.>
03:04:32 <Sgeo> I tested them in here
03:04:39 <Sgeo> At least, writing to sockets
03:04:47 <Sgeo> I haven't tested server sockets or UDP or anything
03:04:55 <Sgeo> And I think I might need to add a function
03:24:43 <Sgeo> But still, I've connected to IRC in Brainfuc
03:24:47 <Sgeo> Brainfuck
03:49:40 * Sgeo pokes pikhq
03:49:47 <Sgeo> Ok, File domain thoughts:
03:50:02 <Sgeo> Directories gotten by the equiv. of LS are represented as FDs
03:50:13 <Sgeo> Except seeking is per file
03:50:35 <Sgeo> the first byte in each entry is whether the entry is a file or a directory
03:53:26 <Sgeo> pikhq, are you alive? oerjan, GregorR?
03:53:41 <GregorR> Well, I'm undead.
03:53:43 <GregorR> That's close enough.
03:53:53 <pikhq> !(dead)
03:54:04 <GregorR> No, not NOT dead.
03:54:12 <GregorR> UNdead
03:54:21 <GregorR> It can't be represented by simple boolean logic.
03:54:37 <pikhq> Fine, then.
03:55:03 <pikhq> enum gregor {DEAD, NOTDEAD, UNDEAD};
03:55:04 <Sgeo> Is my scheme ok?
03:55:09 <pikhq> We will call it, Gregorian logic.
03:55:24 <Sgeo> Or should I have directories separate from the FD scheme?
03:55:29 <GregorR> Sgeo: Idonno, are you coming from Elisp or CL?
03:55:41 <GregorR> (hyuck hyuck hyuck)
03:56:46 <GregorR> So, rather than having a readdir call, you just have a stream of data in a predefined pattern?
03:57:27 <oerjan> BRAINS...
03:58:11 <Sgeo> GregorR, I think it is a readdir call of sorts..
04:09:06 -!- kwertii has quit (kornbluth.freenode.net irc.freenode.net).
04:09:06 -!- puzzlet has quit (kornbluth.freenode.net irc.freenode.net).
04:09:06 -!- lifthrasiir has quit (kornbluth.freenode.net irc.freenode.net).
04:09:08 -!- BMeph has quit (kornbluth.freenode.net irc.freenode.net).
04:09:08 -!- RodgerTheGreat has quit (kornbluth.freenode.net irc.freenode.net).
04:09:08 -!- sekhmet has quit (kornbluth.freenode.net irc.freenode.net).
04:09:08 -!- slereah_ has quit (kornbluth.freenode.net irc.freenode.net).
04:09:08 -!- Sgeo has quit (kornbluth.freenode.net irc.freenode.net).
04:09:08 -!- sebbu has quit (kornbluth.freenode.net irc.freenode.net).
04:09:08 -!- AnMaster has quit (kornbluth.freenode.net irc.freenode.net).
04:09:09 -!- Tritonio_ has quit (kornbluth.freenode.net irc.freenode.net).
04:09:09 -!- bsmntbombdood has quit (kornbluth.freenode.net irc.freenode.net).
04:09:11 -!- oklopol has quit (kornbluth.freenode.net irc.freenode.net).
04:09:11 -!- cmeme has quit (kornbluth.freenode.net irc.freenode.net).
04:09:11 -!- GregorR has quit (kornbluth.freenode.net irc.freenode.net).
04:09:12 -!- EgoBot has quit (kornbluth.freenode.net irc.freenode.net).
04:09:12 -!- Overand has quit (kornbluth.freenode.net irc.freenode.net).
04:09:12 -!- pikhq has quit (kornbluth.freenode.net irc.freenode.net).
04:09:12 -!- lament has quit (kornbluth.freenode.net irc.freenode.net).
04:09:12 -!- johnl has quit (kornbluth.freenode.net irc.freenode.net).
04:09:13 -!- atsampson has quit (kornbluth.freenode.net irc.freenode.net).
04:09:13 -!- cherez has quit (kornbluth.freenode.net irc.freenode.net).
04:09:13 -!- mtve has quit (kornbluth.freenode.net irc.freenode.net).
04:09:14 -!- SimonRC has quit (kornbluth.freenode.net irc.freenode.net).
04:10:10 -!- kwertii has joined.
04:10:10 -!- slereah_ has joined.
04:10:10 -!- pikhq has joined.
04:10:10 -!- Sgeo has joined.
04:10:10 -!- BMeph has joined.
04:10:10 -!- Tritonio_ has joined.
04:10:10 -!- sebbu has joined.
04:10:10 -!- bsmntbombdood has joined.
04:10:10 -!- puzzlet has joined.
04:10:10 -!- lament has joined.
04:10:10 -!- RodgerTheGreat has joined.
04:10:10 -!- EgoBot has joined.
04:10:10 -!- oklopol has joined.
04:10:10 -!- atsampson has joined.
04:10:10 -!- lifthrasiir has joined.
04:10:10 -!- AnMaster has joined.
04:10:10 -!- mtve has joined.
04:10:10 -!- Overand has joined.
04:10:10 -!- cmeme has joined.
04:10:10 -!- GregorR has joined.
04:10:10 -!- SimonRC has joined.
04:10:10 -!- johnl has joined.
04:10:10 -!- sekhmet has joined.
04:10:10 -!- cherez has joined.
04:12:12 <Sgeo> ev5rn'slive?
04:12:24 <slereah_> wut?
04:12:45 <Sgeo> u should srr me now in my seat
04:25:36 * Sgeo sits back up in his chair
04:31:30 <Sgeo> Hm, pikhq GregorR should the mkdir function fail if there's already such a directory, or not?
05:10:03 -!- Asztal has joined.
05:10:42 <Sgeo> Hi Asztal
05:10:57 <Sgeo> Watch this:
05:11:05 <Asztal> :o
05:11:11 -!- BrainF has joined.
05:11:11 <BrainF> Hi all. I wrote this BF program with the help of a horrible horrible generator I wrote.
05:11:11 -!- BrainF has quit (Client Quit).
05:11:39 <Asztal> I'm intrigued.
05:11:59 <Sgeo> At a BF program going online?
05:12:37 <Asztal> Yes. Does it have its input/output hooked up to a socket?
05:13:17 <Sgeo> Not quite
05:13:24 <Sgeo> It uses a thing called PSOX
05:13:31 <Sgeo> http://esolangs.org/wiki/PSOX
05:13:43 <Sgeo> Currently has sockets
05:14:11 <Sgeo> erm, sockets and HTTP
05:14:33 <Sgeo> It will also soon support file access
05:15:19 -!- immibis has joined.
05:15:55 <Sgeo> Hi immibis. Did you see my latest PSOX demo?
05:16:28 <immibis> no. i'm not interested in psox.
05:17:25 -!- BrainF has joined.
05:17:25 <BrainF> Hi all. I wrote this BF program with the help of a horrible horrible generator I wrote.
05:17:25 -!- BrainF has quit (Client Quit).
05:18:53 * Sgeo goes to change the program I but.
05:18:56 <Sgeo> a bit
05:19:09 <immibis> lol
05:21:19 -!- BrainF has joined.
05:21:19 <BrainF> Hi all. This client is written in Brainfuck (albeit written with a generator), believe it or not. It uses PSOX. You can get information about PSOX at http://esolangs.org/wiki/PSOX .
05:21:19 -!- BrainF has quit (Client Quit).
05:21:28 <Sgeo> grr
05:23:08 <Sgeo> Why is it so slow?
05:23:10 <immibis> you don't need psox for that. "mkfifo irc_fifo; bf irc_bot.bf < irc_fifo | nc irc.freenode.net 6667 > irc_fifo"
05:23:20 <immibis> because it's brainfuck?
05:24:01 <pikhq> immibis: But that's not what he's doing.
05:24:42 <pikhq> He's got a fancy API. ;)
05:24:48 <immibis> no, it isn't. but he doesn't need psox to connect to a remote server, send commands, and read responses.
05:25:14 <Sgeo> immibis, for the client to choose the server, yes it does
05:25:37 <pikhq> Let's say, hypothetically, he wrote an IRC client in Brainfuck.
05:25:48 <pikhq> (which is quite possible, if you're sufficiently insane).
05:25:58 <pikhq> Would you be more impressed with that?
05:26:21 <immibis> sgeo: I'm sure that could be done with a bash script too.
05:26:34 <Sgeo> immibis, but I'm doing it with Brainfuck
05:27:14 <Sgeo> oh, you mean BF controlling the server
05:27:19 <immibis> mkfifo irc_fifo; bf irc_bot.bf < irc_fifo > >( read server port ; nc $server $port > irc_fifo)
05:27:27 -!- BrainF has joined.
05:27:27 <BrainF> Hi all. This client is written in Brainfuck (albeit written with a generator), believe it or not. It uses PSOX. You can get information about PSOX at http://esolangs.org/wiki/PSOX .
05:27:27 -!- BrainF has quit (Client Quit).
05:27:42 <Sgeo> Why does it work when I have the nickname be BrainF but not SgBrainfuck?
05:27:53 <Sgeo> Erroneous nickname
05:28:38 <Sgeo> The script for BrainF: http://pastebin.com/d51adfde7
05:29:14 <Sgeo> The first line is PSOX-Init
05:29:18 <Sgeo> The second line:
05:29:31 <Sgeo> 0x00 0x08 0x00 represents calling function 0x00 in domain 0x08
05:29:47 <Sgeo> The 0x00 after that represents TCP v. UDP
05:29:57 <Sgeo> 0x1A 0x0B is the port
05:30:12 <Sgeo> Then the next part is the address
05:30:15 -!- immibis has quit (Remote closed the connection).
05:30:18 <Sgeo> and 0x0A terminates all functions
05:30:33 -!- immibis has joined.
05:30:41 <Sgeo> wb
05:30:45 <Sgeo> <Sgeo> and 0x0A terminates all functions
05:31:15 <immibis> the last message i got from you was [18:27] <Sgeo> oh, you mean BF controlling the server
05:31:27 <immibis> not sure what you meant by that tho
05:33:46 <immibis> what's 0x00 0x02 0x10 0x04?
05:33:50 <immibis> never mind, gtg
05:33:52 -!- immibis has quit (Client Quit).
05:33:56 <Sgeo> Bye immibis
05:34:38 <Sgeo> For anyone who wants to read in the logs: the function 0x10 in domain 0x02 switches where output goes to. In this case, we're switching to 0x04 because that's where the "file descriptor" for the socket was made
05:34:45 <Sgeo> 0x04 was the first available FD slot
05:35:18 <Sgeo> 0x00 is current outFD, 0x01 is current inFD, 0x02 is stdout, 0x03 is stdin
05:35:31 <Sgeo> Then the next lines simply output the necessary commands
05:36:23 <oerjan> Sgeo: my guess is "fuck" is censored in nicknames
05:36:40 <Sgeo> Indeed
05:39:49 -!- BrainF has joined.
05:39:49 <BrainF> Hi all. This client is written in Brainfuck (albeit written with a generator), believe it or not. It uses PSOX. You can get information about PSOX at http://esolangs.org/wiki/PSOX .
05:39:49 -!- BrainF has quit (Client Quit).
05:57:42 <Sgeo> I guess I really should go to sleep now
06:01:50 -!- oerjan has quit ("Later").
06:24:04 -!- devicenull has joined.
06:24:22 -!- BrainF has joined.
06:24:22 <BrainF> Hi all. This client is written in Brainfuck (albeit written with a generator), believe it or not. It uses PSOX. You can get information about PSOX at http://esolangs.org/wiki/PSOX .
06:24:22 -!- BrainF has quit (Client Quit).
06:25:02 <Sgeo> :D
06:25:02 -!- habnabit has joined.
06:25:16 -!- BrainF has joined.
06:25:16 <BrainF> Hi all. This client is written in Brainfuck (albeit written with a generator), believe it or not. It uses PSOX. You can get information about PSOX at http://esolangs.org/wiki/PSOX .
06:25:16 -!- BrainF has quit (Client Quit).
06:25:31 -!- devicenull has left (?).
06:25:41 <Sgeo> The script that I fed to the generator is at http://pastebin.com/d51adfde7
06:28:08 <Sgeo> I should get going now
06:53:37 -!- Sgeo has quit (Read error: 110 (Connection timed out)).
07:20:50 -!- bsmntbombdood has quit (Remote closed the connection).
07:31:22 -!- kwertii has quit ("bye").
07:35:58 -!- BMeph has quit ("calls it a night").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:01:37 -!- olsner has joined.
08:09:00 -!- Sukoshi` has joined.
08:09:21 <Sukoshi`> Yo.
08:12:42 <slereah_> Hi.
08:12:56 <Sukoshi`> Hi.
08:13:11 <Sukoshi`> Is anyone here enough of a loser to go on Direct Connect networks?
08:38:07 -!- olsner has quit ("Leaving").
09:10:19 <oklopol> Sukoshi`: i'm enough of a loser for that
09:10:26 <oklopol> i have other reasons not to go on them
09:15:58 -!- habnabit has quit (Read error: 110 (Connection timed out)).
09:23:49 <Sukoshi`> I was wondering because I'm writing a DC client.
10:40:23 <slereah_> I used to.
10:40:35 <slereah_> But really, it's now not very useful.
10:44:11 <Sukoshi`> I used to longz agoz.
10:44:18 <Sukoshi`> Like 6-7 years ago.
11:01:03 -!- jix has joined.
11:09:49 <Tritonio_> dc sucks...
11:17:27 -!- Corun has joined.
11:21:05 <Sukoshi`> It does.
11:21:48 <Sukoshi`> The protocol was written by an HS student who used terms like $ValidateDenide and $LogedIn
11:23:38 <Tritonio_> HS=?
11:23:44 <Tritonio_> high school?
11:24:01 <Tritonio_> anyway it sucks because it's nothing new... it is server based
11:24:28 <Tritonio_> there are no firewall2firewall conections....
11:24:29 <Tritonio_> etc
11:24:50 <Sukoshi`> High School.
11:24:53 <Sukoshi`> What ?
11:25:00 <Sukoshi`> How can a firewall connect to a firewall?
11:25:35 <Tritonio_> firewall2firewall is in fact firewalled user to firewalled user.
11:25:48 <Sukoshi`> It can do passive connections.
11:25:49 <Tritonio_> two users behind two firewalled router
11:26:08 <Tritonio_> i know but with passive connections it is much slower
11:26:13 <Sukoshi`> The protocol itself has no basic firewall support, true, but.
11:26:35 <Sukoshi`> How else would you propose to do it? Is opening a port that difficult?
11:26:48 <Tritonio_> sometimes it is imposible... :-(
11:26:53 <Tritonio_> if you do not own the router
11:27:16 <Sukoshi`> You can't tunnel through SSH?
11:27:24 <Sukoshi`> Or even as a last resort, use an HTTP proxy.
11:27:45 <Tritonio_> O_o how slow is this going to be?
11:28:16 <Tritonio_> and what do you mean to tunnel through SSH?
11:29:37 <Sukoshi`> Google holds many of these answers.
11:39:09 -!- oerjan has joined.
11:43:14 <Tritonio_> i still don't see how an SSH tunnel would help
12:08:24 -!- timotiis has joined.
12:17:10 -!- Corun has quit ("This computer has gone to sleep").
12:30:51 <Sukoshi`> You SSH tunnel through an open port.
12:31:14 <Tritonio_> can't you just tell dc to use that port?
12:40:09 <Sukoshi`> Yeah.
12:40:25 <Sukoshi`> Or an HTTP proxy works, which tunnels traffic through an HTTP port.
12:40:43 <Tritonio_> but what if the route directs no port to your pc.
12:40:50 <Tritonio_> router*
12:41:06 <Tritonio_> which is the case normally
12:41:13 <Sukoshi`> So you can't access the internet at all?
12:41:24 <Tritonio_> huh? of course you can
12:41:48 <Tritonio_> you can connect to everyone else. but nobody else can connect to you.
12:41:55 <Sukoshi`> If you can't pass outgoing/incoming traffic through port 80, then what?
12:42:33 <Sukoshi`> A port works two ways, source and destination. A typical firewall allows you to use a port as a source port, but not use it as a destination port.
12:42:46 <Tritonio_> i am talking about routers.
12:42:47 <Sukoshi`> However you cannot do that with port 80, because it is an HTTP port.
12:42:59 <Sukoshi`> The router uses a firewall ... the difference is the same.
12:43:10 <Tritonio_> i can close all ports on my router and still access the internet
12:43:17 <Tritonio_> but there will be no incoming connections
12:43:40 <Tritonio_> you can make an outgoing connection using any local port even if the router has all ports closed
12:43:48 <Tritonio_> (for incoming connections)
12:43:55 <Sukoshi`> That means the router is being smart and allowing an HTTP connection to work synchronously, but now allowing one directional connections to occur.
12:44:14 <Tritonio_> i don't get it
12:44:25 <Sukoshi`> A router can't perform magic. It has to do something with ports.
12:44:36 <Sukoshi`> There's no option in the IP RFC that says "block a port but let traffic through".
12:44:43 <oerjan> obviously for tunneling you keep an outgoing connection open, which is still two-way for data
12:45:16 <Sukoshi`> In an HTTP proxy, the connection looks just like a typical HTTP connection. A server is connected to, data is requested, more data is sent back, data is further requested, etc.
12:45:27 <Tritonio_> the router is a network node. if you try to connect to someone's router on port 60 (4eg) it will have to forward this connection to some internal ip:port
12:45:40 <Tritonio_> right?
12:45:56 <Sukoshi`> Yes.
12:46:13 <Tritonio_> so what happens if no redirections have been setup?
12:46:25 <Tritonio_> the internal network still has access to the internet, right?
12:46:26 <Sukoshi`> ....
12:46:29 <Sukoshi`> How?
12:46:35 <oerjan> Tritonio_: you don't try to connect to someone's firewalled router. you allow them to connect to you, or you both connect to a server which does the tunneling.
12:46:52 <Sukoshi`> Data is transmitted outgoing or incoming.
12:47:39 <Tritonio_> oerjan, that's what i am saying. if you haven't setup and redirections then you cannot access a pc in an internal network until it makes a connections to you
12:48:10 <Sukoshi`> What is the theory behind this? Data can go out of a device and into a device.
12:48:18 <Tritonio_> after the pc behind the router connects to you, you can transmit and recieve data
12:48:26 <Sukoshi`> The way a router works is that, data is redirected.
12:48:42 <Tritonio_> ok wait. i
12:48:51 <Sukoshi`> So when you make an HTTP connection, you send the text "GET / HTTP/1.0". This data is sent out and transmitted via the router to the server of choice.
12:49:01 <Tritonio_> i'll close all redirections in my router, and UPnP too. ok?
12:49:18 <Sukoshi`> The router then sends back a response, the HTML code, and this is intercepted by the router, and then sent back to you.
12:49:25 <Tritonio_> according to you. i will not be able to talk here afterwards?
12:49:37 <Sukoshi`> Notice that you have an asynchronous connection here. Data is being transmitted one way and received another.
12:50:04 <Sukoshi`> Tritonio_: Not neccessarily, your router could be smart (which is very normal) and if a connection is made first from a requesting machine, that connection can be allowed into the clear by the router.
12:50:19 <Sukoshi`> Stop treating the router as a black box. "The router can do x" is not an explanation.
12:50:38 <Tritonio_> i still don't get it.
12:50:45 <Tritonio_> if i disconnect from the chat
12:50:54 <Tritonio_> then cancel all redirections.
12:51:01 <Tritonio_> will i be able to reconnect?
12:51:06 <Tritonio_> (i say yes)
12:51:10 <Sukoshi`> Your machine sends a SYN packet to the router dest. the IRC server
12:51:27 <Sukoshi`> The router sees the SYN packet, and adds the connection to a connection table, then routes the SYN packet out to the server.
12:51:36 <Tritonio_> right
12:51:39 <Sukoshi`> The server sends back a response, SYN/ACK.
12:51:46 <Tritonio_> right
12:51:55 <Sukoshi`> The router then cross-references the SYN/ACK with its connection table. If it finds an entry, it lets this through to you.
12:52:07 <Sukoshi`> If it does not, the packet gets dumped into /dev/null.
12:52:08 <Tritonio_> ok
12:52:22 <Tritonio_> so there will be a connection.
12:52:42 <Sukoshi`> So an HTTP tunnel works exactly this way. It creates an outgoing connection, and sends the traffic through this. The proxy then is in charge of handling all the traffic with the external server.
12:53:08 <Tritonio_> an outgoing connection to who?
12:53:15 <Sukoshi`> To the proxy.
12:53:30 <Tritonio_> wait
12:53:34 <Sukoshi`> C <-> P <-> S (C: Client, P: Proxy, S: Server.)
12:53:38 <Tritonio_> if i am behind a router
12:53:47 <Tritonio_> and you are behind a router.
12:53:59 <Tritonio_> how can we use the http proxy to communicate?
12:54:38 <Sukoshi`> Okay, I'll give the simple explanation and leave for the night (it's 4:52 AM here): Because for all intents and purposes, an HTTP proxy connection looks the same as any HTTP connection.
12:54:50 <Tritonio_> ok
12:55:11 <Sukoshi`> I suggest you do some IP reading in the mean time to get an understanding of it.
12:55:18 -!- Sukoshi` has left (?).
12:56:44 -!- faxathisia has joined.
12:57:08 -!- oerjan has quit ("Too much noise").
13:00:31 <Tritonio_> anybody here?
13:01:04 <faxathisia> Tritonio_: <response>
13:01:54 <Tritonio_> was i wrong about the HTTP proxy not been helpful if both routers (NATs) do not redirect incoming connections to the two users that want to communicate???
13:45:27 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
13:46:31 -!- slereah_ has joined.
13:56:50 -!- ehird` has joined.
13:59:00 -!- ehird`_ has joined.
13:59:22 -!- ehird` has quit (Read error: 113 (No route to host)).
14:01:23 <ehird`_> i just realised what a good curse 'Bjarne, stroustroup!' is
14:01:36 <ehird`_> Bjarne sounds like a foreign insult and 'stroustroup' sounds like..well, stroustroup
14:01:40 <ehird`_> [note: spelling may suck]
14:18:23 <ehird`_> we need a glass debugger
14:19:24 <RodgerTheGreat> wouldn't that constitute a wimpmode? I don't think Gregor would approve
14:31:43 -!- ais523 has joined.
14:33:55 <ehird`_> RodgerTheGreat: No, not really...
14:34:00 <ehird`_> It would be edlin-style
14:34:08 <RodgerTheGreat> ah
14:34:10 <ehird`_> it would execute a line at a time
14:34:24 <ehird`_> '<ENTER>' would execute the line, then print out the next one
14:34:36 <ehird`_> and you'd have a command to print out the stack in an inscrutable format
14:34:39 <RodgerTheGreat> maybe make it use commands that are rot13ed to make it harder to memorize?
14:34:42 <ehird`_> add about 3 or 4 more commands and you've got the glass debugger
14:34:50 <ehird`_> RodgerTheGreat: all one character
14:34:54 <ehird`_> with seemingly no relation to what they do
14:34:58 <ehird`_> (Just like Glass!)
14:36:14 <ehird`_> hello ais523
14:39:08 <ehird`_> GregorR: Is cpkt yours?
14:39:13 <ehird`_> ckpt
14:39:17 <ehird`_> in egobot tree
14:39:23 <ehird`_> because JB_SP is undefined
14:40:25 <ehird`_> $ grep JB_SP *
14:40:25 <ehird`_> mem.c:jbuf[0].__jmpbuf[JB_SP] = stack_base;
15:02:12 -!- ehird has joined.
15:02:16 <ehird> testing
15:02:28 <ehird> testy
15:02:30 <ehird> testy4
15:02:43 <ehird> fooby
15:02:45 -!- ehird has quit (Client Quit).
15:20:50 -!- puzzlet has quit ("Lost terminal").
15:26:53 <faxathisia> ehird :(
15:27:09 <ehird`_> faxathisia: xD
15:28:07 <faxathisia> my code kind of sucks but I don't really care because it works
15:28:16 <faxathisia> http://rafb.net/p/QEsaFY55.txt
15:28:37 <faxathisia> but this puts every bf program in a list and runs them all.. extracting the ones that terminate
15:29:01 <faxathisia> so ... I run it for like half an hour and there isn't any good output
15:29:09 <faxathisia> just \0\1\0 and stuff
15:31:48 <faxathisia> this sucks!
15:31:58 <faxathisia> making shortest programs in VERY hard
15:45:29 <Asztal> what does it do when it generates []?
15:46:10 <faxathisia> I actually filter out any programs with [] because there's always an equivalent shorter program or it gets stuck
15:46:24 <faxathisia> er not stuck.. but infinite loop
15:46:39 <faxathisia> If there is an infinite loop .. I just keep evaluating it forever
15:47:04 <faxathisia> but lots of programs are run in parralel
15:48:49 <oklopol> faxathisia: do you filter other infinite loops?
15:49:02 <faxathisia> no
15:49:27 <faxathisia> I filter any redundancy like +- <> >< -+ ..
15:49:53 <faxathisia> and any expression that isn't well parenthesized but that's it
15:50:34 <oklopol> if you have a balanced loopie, it's very simple to check whether conditions have changed after a cycle
15:50:41 <oklopol> ..?
15:50:48 <oklopol> ".."?
15:51:27 <faxathisia> the program could be made more sophisticated but I run it for ages and it didn't produce anything
15:51:41 <faxathisia> I think this whole approach is just too slow
15:52:14 <oklopol> well, ofc it's slow
15:53:44 <oklopol> you're actually trying to do something?
15:54:22 <faxathisia> Well the aim is find the shortest possible programs to print given strings,
15:54:37 <faxathisia> now I know this is impossible but it's still worth trying
15:54:50 <oklopol> well, you're a lunatic if you think that approach could work :D
15:55:05 <faxathisia> hehee
15:55:38 <oklopol> if you're going for more than 4 characters
16:01:45 <ais523> are you filtering out expressions that don't end in . followed by some number of ]s?
16:02:34 <ais523> you may also be able to optimise, at least if you restrict your search to loops with balanced <>, by compiling into some other language first
16:11:51 -!- habnabit has joined.
16:21:36 <ehird`_> ais523: hmm
16:21:39 <ehird`_> what was i going to say?
16:21:40 <ehird`_> i forgot.
16:21:51 * ais523 is incapable of reading ehird`_'s mind
16:22:12 <ehird`_> <shapr> Haskell separates Church and state!
16:23:49 <ais523> heh
16:24:44 <ehird`_> ais523: i wrote a haskell program that makes ghc use 100% cpu and never halt
16:24:49 <ehird`_> i think i beat the typechecker.
16:24:55 <ehird`_> (iirc, it is non-decidable)
16:25:08 <ais523> "Loop in the flow analysis" was one of my favourite Prolog compiler error messages
16:25:16 <ais523> even though I never ran the compiler, just read the manual
16:25:20 <ehird`_> ais523: Really? I preferred '42'.
16:25:29 <ais523> what was your compiler-breaking program?
16:25:35 <ehird`_> (SWI-Prolog outputs '42' if you tell it to do something impossible, like 'X.')
16:26:20 <ehird`_> http://hpaste.org/5758
16:28:01 <ehird`_> aha
16:28:02 <ehird`_> hugs halts on it
16:28:04 <ehird`_> with a type error
16:28:14 <ais523> I can't figure out what pred is trying to do
16:28:23 <ais523> how many arguments would it normally be called with?
16:28:35 <ais523> from the name, I'm guessing it subtracts one from its argument, so 1
16:29:01 <ehird`_> ais523: yes. this is church numeral stuff.
16:29:11 <ehird`_> i don't personally understand 'pred', to be honest
16:29:16 <ehird`_> you should see the type thouhg:
16:29:18 <ais523> predecessor
16:29:30 <ehird`_> (((t -> t2) -> (t2 -> t3) -> t3) -> (t4 -> t1) -> (t5 -> t5) -> t6) -> t -> t1 -> t6
16:29:33 <ehird`_> and i know what 'pred' stands for
16:29:37 <ehird`_> i mean i don't understand the definition
16:29:38 -!- uvanta has joined.
16:29:41 <ais523> sorry, I misinterpreted your comment
16:29:49 <ehird`_> *** Expression : dechurch
16:29:49 <ehird`_> *** Expected type : ((a -> a) -> a -> a) -> Integer
16:29:49 <ehird`_> *** Inferred type : ((((a -> a) -> a) -> (a -> a) -> a) -> ((a -> a) -> a) -> (a -> a) -> a) -> Integer
16:31:05 <ais523> your implementation of dechurch is inefficient
16:31:36 <ais523> dechurch n = n (1+) 0
16:33:28 <ehird`_> i was doing it purely
16:33:43 <ais523> in fact, your implementation is probably wrong, because comparing functions is uncomputable
16:33:57 <ais523> so you can hardly expect the compiler to match functions based on Church number equality
16:34:23 <ehird`_> ais523: well, we'll see what it does
16:34:23 <ehird`_> :P
16:34:24 <ais523> the 'dechurch zero' pattern won't match a Church numeral unless it's a literal 'zero' or you're lucky, even if the Church numeral has the value 0
16:35:26 <ais523> hmm... I wonder if the recursive definition 'succ n = n succ one' would work, or whether it would confuse the compiler
16:35:41 <ais523> I doubt it would work in Haskell, because it looks like an infinite loop
16:35:53 <ais523> but there's a slim chance that laziness might save it
16:36:24 <ais523> no, it is an infinite loop, because 'succ one' ends up being defined to be 'succ one'
16:36:25 <ais523> pity
16:36:54 <ais523> it would work in that uncomputable language I was talking about yesterday, if written as Succ(N)=N(Succ(One))
16:37:20 <ais523> but I wonder if that would give more than one solution for Succ...
16:37:47 -!- Corun has joined.
16:38:31 <ehird`_> ais523: succ one = ...; succ n = n succ one
16:38:43 <ehird`_> well
16:38:45 <ehird`_> succ n | n == one
16:38:47 <ehird`_> :-P
16:38:55 <ais523> you can't compare functions with ==
16:39:00 <ehird`_> exactly
16:39:00 <ehird`_> but:
16:39:01 <ais523> or with anything else, for that matter
16:39:16 <ehird`_> succ n | dechurch n == 1 = two
16:39:17 <ehird`_> | otherwise = n succ one
16:39:27 <ehird`_> but...
16:39:31 <ehird`_> you need Integer -> Integer stuff
16:39:34 <ehird`_> i'm going to do a newtype
16:39:41 <ais523> hmm...
16:39:56 <ehird`_> ais523: the type system doesn't like it, y'see
16:39:57 <ais523> succ two = two succ one = succ (succ one) = succ two = ...
16:40:18 <ais523> so defining succ recursively, although mathematically true, doesn't really help a computer
16:40:39 <ehird`_> ais523: anyway, newtype Church a = Church ((a -> a) -> a -> a) is problematic
16:40:43 <ehird`_> because you need
16:40:46 <ehird`_> a = Church a
16:40:48 <ehird`_> so:
16:40:52 <ehird`_> class time
16:41:08 <ehird`_> class Church a
16:41:09 <ehird`_> instance (Church a) => Church ((a -> a) -> a -> a)
16:41:10 <ehird`_> ... i think
16:41:17 <faxathisia> :o
16:41:27 <faxathisia> I like this idea
16:41:48 <faxathisia> although is it valid?
16:41:55 <ehird`_> lmao:
16:41:56 <ehird`_> instance Churchy Church ...
16:43:03 <ais523> it's so much simpler in Underload/Underlambda
16:43:07 <ais523> zero is !()
16:43:10 <ais523> one is
16:43:13 <ais523> two is :*
16:43:14 <ehird`_> ais523: is that strongly typed?
16:43:17 <ais523> three is ::**
16:43:19 <ais523> and so on
16:43:23 <ais523> ehird`_: not exactly
16:43:27 <ais523> there's just the one type, function
16:43:39 <ehird`_> 'xactly
16:43:39 <ais523> each function maps a stack of functions to another stack of functions
16:43:52 <ais523> strong typing messes up sii quite badly
16:44:00 <ais523> and the ability of sii is needed to write loops
16:44:26 <ais523> OTOH, I suppose you could say it was strongly typed, except with just the one type, defined recursively as type = [type]->[type]
16:44:36 <faxathisia> you might be able to write sii using lets?
16:45:00 <ais523> I can't think of a way to do that
16:45:02 <faxathisia> because you can get Y using a let
16:45:08 <faxathisia> I'm just guessing..
16:45:09 <ais523> the naive definition is sii X = X X
16:45:10 <ehird`_> faxathisia: not in haskell
16:45:19 <faxathisia> ehird`_: proof?
16:45:25 <ehird`_> faxathisia: it doesn't type
16:45:28 <ehird`_> a = a -> a
16:45:29 <faxathisia> y types
16:45:29 <ehird`_> but
16:45:34 <faxathisia> y f = f (y f)
16:45:34 <ehird`_> no, it doesn't
16:45:37 <ehird`_> that is not y
16:45:37 <faxathisia> yes it does....
16:45:39 <ehird`_> THAT IS NOT Y
16:45:41 <faxathisia> Yes it is...
16:45:47 <ais523> there are two Ys
16:45:52 <ais523> a lazy version and an eager version
16:45:59 <ehird`_> ais523: and that is neither
16:46:02 <ehird`_> y is a COMBINATOR
16:46:07 <ehird`_> and #haskell are informing you now, faxathisia
16:46:14 <faxathisia> no they aren't :P
16:46:29 <faxathisia> YOU are a combinator!
16:46:40 -!- Corun has quit ("This computer has gone to sleep").
16:46:50 <ehird`_> ais523: i haven't seen him justify his belief as of yet.
16:46:51 <ehird`_> oh well.
16:47:14 <ehird`_> faxathisia: http://r6.ca/blog/20060919T084800Z.html
16:47:19 <ais523> a combinator can be a function
16:47:23 <ais523> id is a combinator, after all
16:47:26 <ais523> but it's also a function
16:47:37 <faxathisia> ehird`_: Yeah, I've seen that
16:47:51 <ais523> Y g = g (Y g), according to Wikipedia
16:48:11 <ehird`_> ais523: that's not y.
16:48:23 <ais523> that's a quote
16:48:32 <ais523> Y = λf·(λx·f (x x)) (λx·f (x x))
16:48:46 <ais523> is how you defined it without using the argument in terms of lambdas
16:49:31 -!- cherez has quit (Read error: 110 (Connection timed out)).
16:54:43 <ehird`_> type Church a = ((a -> a) -> a -> a)
16:54:43 <ehird`_> class Churchy a
16:54:43 <ehird`_> instance Churchy Church
16:58:42 <ehird`_> http://hpaste.org/5759 getting there
16:59:33 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
16:59:49 -!- slereah_ has joined.
17:00:04 <ais523> "Churchy" == "something that acts kind of like a Church numeral or its argument"?
17:00:15 <ehird`_> ais523: 'Churchy' == 'a church numeral'
17:00:19 <ehird`_> remember,
17:00:32 <ehird`_> the only arguments to church numerals are (ChurchNumeral -> ChurchNumeral) and another ChurchNumeral
17:00:32 <ais523> but church numerals can be applied to non-church-numeral arguments
17:00:41 <ais523> like the (1+) I gave as an example above
17:00:44 <ehird`_> ais523: not if we want everything to type properly..
17:00:51 <ehird`_> anyway -- so we have a recursive type, so we need that class hack
17:00:59 <ais523> oh dear
17:01:08 <ais523> the typechecker strikes again
17:01:14 <ehird`_> er no
17:01:17 <ehird`_> just the sane type system
17:01:26 <ehird`_> anything more and you could get full polymorphism
17:01:29 <ehird`_> because you need type 'a = a -> a'
17:01:34 <ehird`_> which is the type of all lambda expressions
17:01:36 <ais523> yes, but it gets in the way if you want to do Unlambda-style pure functional programming
17:01:55 <ehird`_> presumably, they thought that real programs were more important
17:01:58 <ais523> because that leads to infinite types with ease
17:01:59 <ehird`_> i have no idea why
17:02:04 <faxathisia> this is why we have data types :P
17:02:09 <ehird`_> faxathisia: :)
17:02:22 <ais523> I'm aware that the typechecker is useful in practice
17:02:32 <ais523> but it's really annoying in theory
17:02:51 <faxathisia> In theory a typechecker needn't exist
17:03:02 <ehird`_> in theory, it's great
17:03:05 <faxathisia> well .. you have to do the proofs yourself
17:03:11 <ehird`_> its the sweet spot for usability and ... well, computability
17:03:29 <ehird`_> church numerals are 'weird' anyway... i would say that a type system not including them is not odd
17:03:30 <ais523> removing the typechecker wouldn't make the language uncomputable...
17:03:44 <ais523> Unlambda is computable, and so is lambda calculus
17:04:00 <ehird`_> uhh, duh
17:04:03 <ehird`_> but then you have no types...
17:04:06 <ais523> to me, though, the main point of Church numerals in practice is to give a simple way to write loops
17:04:06 <ehird`_> and haskell is designed to be strongly typed
17:04:20 <faxathisia> I guess ehird; mean that typechecking is computable?
17:04:37 <ehird`_> succ :: Churchy a => ((a -> a) -> a -> a) -> (a -> a) -> a -> a
17:04:38 <ais523> say I want to print something out 6 tiems
17:04:39 <ehird`_> doesn't :(
17:05:18 <ais523> then with the monad chaining argument explicit, it would just be a case of writing six (printChained "Hello") InitialIOChain
17:05:33 <ais523> where printChain has the type String -> IOChain -> IOChain
17:05:43 <ais523> and the IOChain is the underlying chaining element inside the monad
17:06:02 <ais523> of course, Haskell doesn't let you access that directly, because it would allow you to fork timelines, which is just weird
17:07:01 <ais523> a non-monad example: to make 12 copies of the string "test", I need only do '(church 12) (++"test") ""'
17:07:04 <ehird`_> ais523: you can access the io chain
17:07:05 <ehird`_> in ghc.
17:07:08 <ehird`_> it's... magical
17:07:10 <ais523> oh good
17:07:20 <ais523> that would at least be better for my sanity than unsafePerformIO
17:07:27 <ehird`_> newtype IO a
17:07:27 <ehird`_> = GHC.IOBase.IO (State# RealWorld -> (# State# RealWorld, a #))
17:07:27 <ehird`_> -- Defined in GHC.IOB
17:07:36 <ehird`_> (# ... #) is strictness annotations, btw
17:07:41 <ais523> RealWorld being the IO chain, presumably
17:08:20 <ais523> I wonder what happens when you deliberately fork it?
17:08:20 <ehird`_> ais523: segfault, i assume
17:08:23 <ehird`_> ask in #ghc or #haskell
17:08:27 <ais523> not that I'd ever do something that evil in practice
17:08:28 <ehird`_> ais523: but the important thing
17:08:35 <ehird`_> is that with this IO, you can define IOT
17:08:36 <ehird`_> and...
17:08:48 <ehird`_> type TwoDucks = IOT Cont
17:09:05 <ais523> I was having similar thoughts in my megaProlog
17:09:16 <ais523> TwoDucksness falls out naturally from the syntax
17:09:42 <ais523> with no time travel involved, just starting with the (infinite) set of all possible timelines and eliminating them until only a few are left at the end of the program
17:10:31 <ehird`_> aww damn, ais523 --
17:10:35 <ehird`_> dechurch :: Church a -> Integer
17:10:37 <ehird`_> doesn't type
17:10:40 <ehird`_> dechurch :: Church Integer -> Integer
17:10:40 <ehird`_> does
17:10:42 <ehird`_> but obviously
17:10:47 <ehird`_> that means you can't "dechurch one"
17:11:00 <ais523> what about my dechurch definition?
17:11:07 <ehird`_> I am using yours
17:11:08 <ehird`_> dechurch (Church n) = n (1+) 0
17:11:14 <ais523> that probably won't type the way you've defined the typeclasses
17:11:31 <ehird`_> look
17:11:37 <ais523> the real problem is that all the Church numerals have different types
17:12:03 <ais523> so, for instance, one would be a -> a in an ideal world
17:12:31 <ais523> two would be (a -> b AND b -> c) -> (a -> c)
17:12:45 <ais523> three would be (a -> b AND b -> c AND c -> d) -> (a -> d)
17:13:11 <ais523> but ANDs in types are apparently not allowed, even though I've wanted to use them in RL before
17:13:51 <ais523> two three would be allowed; its type signature would even tell you that the result was six!
17:14:02 <ais523> come to thing of it, succ and pred would likely be fine too
17:15:34 <ehird`_> ais523: I've decided type-level church numerals are far more fun.
17:16:14 <ehird`_> data Zero
17:16:14 <ehird`_> data Succ a
17:16:36 <ehird`_> err
17:16:36 <ehird`_> peanos
17:20:50 <ais523> ehird`_: I have no problem with Church numerals, succ, and dechurch typing for me
17:21:06 <ais523> although they type as (a -> a) -> a -> a, which is likely the best that Haskell can do
17:21:28 <ehird`_> ais523: yes, the problems come later
17:21:33 <ais523> succ :: ((b -> c) -> a -> b) -> (b -> c) -> a -> c
17:21:40 <ehird`_> ais523: anyway, type-levels are so fun
17:21:43 <ehird`_> you can have
17:21:44 <ehird`_> succ = const undefined
17:21:48 <ehird`_> and just define the type
17:22:07 <ehird`_> did you know that haskell's type system (well, with 1 or 2 extensions turned on) can have SK embedded in it??
17:22:24 <ais523> so you can't get sii in the lang itself
17:22:28 <ais523> but you can get sii in its type system
17:22:31 <ehird`_> but you can get it in the type system.
17:22:31 <ehird`_> yes.
17:22:36 <ais523> because the type system itself isn't typechecked so strictly
17:22:39 <ehird`_> yes.
17:22:49 <ehird`_> well, you can't get it without the 2 extensions
17:22:52 <ais523> that says a lot about Haskell's typechecker
17:22:56 <ehird`_> and one is -XUndecidableInstances
17:23:02 <ehird`_> so, to be honest, you're really saying 'LET ME DO THIS'
17:23:43 <ais523> well, of course, something that doesn't allow undecidable types is hardly going to allow TC types
17:23:50 <ehird`_> ais523: here's how you use peano-types: > :t pred (undefined :: (Succ Zero))
17:23:56 <ehird`_> should give you:
17:24:04 <ehird`_> pred (undefined :: (Succ Zero)) :: Zero
17:24:27 <ais523> the real test will be if you can multiply and divide them
17:24:33 <ehird`_> pred :: Succ a -> a
17:24:33 <ehird`_> pred = const undefined
17:24:37 <ehird`_> ais523: of course you can.
17:24:44 <ehird`_> there's a fscking *type-level quicksort*
17:25:01 <ehird`_> interestingly, with that definition of pred
17:25:05 <ehird`_> you get (pred Zero) checking for free
17:25:20 <ais523> yes, but I was wondering about if it was possible with that sort of simple definition
17:25:27 <ais523> and how complicated the type signature needed would be
17:25:55 <ehird`_> ais523: also worth noting is that its impossible to get the type into a haskell Integer
17:25:56 <ehird`_> well
17:26:04 <ehird`_> you can define a Show instance
17:26:06 <ehird`_> then read that
17:26:06 <ehird`_> :D
17:26:22 <ais523> that only gets you a finite number of possible outputs, right?
17:26:39 <ais523> therefore, you should define Show to output ASCII chars rather than integers
17:26:46 <ais523> so you can have BF-style IO
17:27:05 <ais523> and write atoi in the type system
17:27:05 <ehird`_> instance Show Zero where show = const "0"
17:27:05 <ehird`_> instance Show (Succ a) where show = const ("S" ++ show (undefined :: a))
17:27:05 <ehird`_> unfortunately, does not actually work
17:27:05 <ais523> sorry, itoa
17:29:07 <ais523> ehird`_: what goes wrong?
17:29:19 <ais523> and why the underscore on your nick?
17:29:22 <ehird`_> ais523: well, if you add (Show a) => Show (Succ a):
17:29:32 <ehird`_> /home/ehird/calc.hs:13:20:
17:29:32 <ehird`_> Ambiguous type variable `a' in the constraint:
17:29:32 <ehird`_> `Show a'
17:29:32 <ehird`_> arising from a use of `show' at /home/ehird/calc.hs:13:20-33
17:29:32 <ehird`_> Probable fix: add a type signature that fixes these type variable(s)
17:29:45 <ehird`_> ais523: and:
17:29:47 <ehird`_> i use 'ehird' now (got it back)
17:29:51 <ehird`_> but ehird` was when ehird was cracked
17:29:54 <ehird`_> and i crashed before
17:29:57 <ehird`_> leaving a ghost
17:29:59 <ehird`_> so: ehird`_
17:30:09 <ais523> OK
17:30:27 <ais523> Show a might not be enough
17:30:32 <ais523> what about (Show a, Peano a)?
17:30:39 <ehird`_> define 'Peano a'
17:30:41 <ehird`_> there is no such thing
17:30:46 <ehird`_> just 'data Zero' and 'data Succ a'
17:30:57 <ais523> oh, so Zero and Succ are different data types
17:31:10 <ais523> just for fun, what happens if you say "deriving Show"?
17:31:20 <ehird`_> ais523: they have no constructors.
17:31:27 <ehird`_> that would therefore do nothing
17:31:32 <ais523> OK
17:31:42 <ehird`_> ah wait
17:31:42 <ais523> for a while I thought you were using the constructors to do your Peano arithmetic
17:31:44 <ehird`_> i can use my pred function
17:31:49 <ehird`_> ais523: that would be runtime
17:31:58 <ais523> you're right, it would be
17:32:02 <ehird`_> when you do 5*2 in this, it's worked out at compile-time.
17:32:08 <ehird`_> and you get a value of type (Succ^10 Zero)
17:32:20 <ehird`_> the value itself is just 'undefined' as some value so it's pretty opaque
17:32:57 <ehird`_> *Main> undefined :: Succ (Succ Zero)
17:32:57 <ehird`_> SS0
17:33:05 <ehird`_> instance Show Zero where
17:33:05 <ehird`_> show _ = "0"
17:33:05 <ehird`_> instance Show a => Show (Succ a) where
17:33:05 <ehird`_> show a = "S" ++ show (pred a)
17:36:22 <slereah_> Is it possible to implement the µ function?
17:36:35 <slereah_> I can't think of a general way to do it.
17:36:53 <ehird`_> what is it
17:37:46 <slereah_> You know, for general recursive functions. µy f(y, x1, x2, x3, ...) = smallest value of y that makes the function vanish if it exists, 0 otherwise.
17:40:30 <ehird`_> ais523: heyyy, I just realised
17:40:34 <ehird`_> an instance for Eq on Succ a or Zero
17:40:38 <ehird`_> is const const True
17:40:42 <ehird`_> because..
17:40:47 <ehird`_> == with two non-equal arguments, with that
17:40:50 <ehird`_> doesn't type!!
17:41:03 <ais523> does Eq return false when it doesn't type
17:41:06 <ais523> or does it just error out
17:41:10 <ehird`_> ais523: no, it won't compile
17:41:17 <ehird`_> so.. you have compile-time assertations of numeric equality
17:41:18 <ehird`_> :P
17:41:24 <ais523> so that would be more assert-equal rather than equal
17:41:26 <ehird`_> you can define an Eq type doing it properly
17:41:27 <ehird`_> of course
17:41:59 <ehird`_> ais523: for Plus i'll need a class...
17:42:03 <ehird`_> actually
17:42:06 <ehird`_> 'plus' can't be a function itself
17:42:14 <ehird`_> i must define a 'plus' class or something
17:42:19 <ehird`_> then do the trick i did with pred/succ for a function
17:44:40 -!- habnabit has quit (Read error: 110 (Connection timed out)).
17:47:33 <ehird`_> ais523: making this hs98 is hard
17:47:33 <ehird`_> :D
17:47:56 <ais523> do you have a link to that type-system quicksort, by the way?
17:48:19 <ehird`_> ais523: yep
17:48:27 <ais523> Google seems not to help that much
17:48:45 <ehird`_> http://www.haskell.org/haskellwiki/Type_arithmetic
17:48:49 <ehird`_> but please don't look at the numeric definitions
17:48:55 <ehird`_> i want to make sure mine are as different as possible
17:49:09 <ehird`_> and
17:49:09 <ehird`_> http://www.haskell.org/haskellwiki/Type_SK
17:49:14 <ehird`_> brb
17:57:25 -!- ehird`_ has quit ("K-Lined by peer").
18:02:48 -!- ehird` has joined.
18:03:25 <ehird`> ehird` missed what?
18:03:39 <ais523> no comments between when you left and when you rejoined
18:03:43 <ais523> at least not in this channel
18:03:50 <ais523> nor either of the others I'm in
18:04:05 <ais523> either of the others I'm all alone in, for that matter, since you left
18:04:12 <slereah_> The internet awaited your return
18:04:48 <ehird`> ais523: anyway, i'm testing with hugs now
18:04:50 <ehird`> without extensions
18:04:52 <ehird`> to ensure portability
18:06:00 <ehird`> ais523: apart from plus/minus etc
18:06:04 <ehird`> what would you say is a good operation?
18:06:09 <ehird`> since plus/minus are too hard, for now
18:06:09 <ais523> for testing?
18:06:52 <ais523> with Church numerals, exponentiation is easier than plus, minus, times, or divide
18:06:53 <ais523> I don't think Peano numbers are so well behaved, though
18:07:00 <ais523> what about mod-2
18:07:06 <ais523> that's pretty simple
18:07:29 <ehird`> that requires comparison
18:07:30 <ehird`> i think
18:07:38 <ais523> only to 0 and 1
18:07:45 <ehird`> i guess so..
18:10:28 <ehird`> ais523: crazy -- i'm writing a toPeano
18:10:32 <ehird`> i guess, that might be impossible
18:10:35 <ehird`> fromPeano is easy
18:10:43 <ehird`> class Peano a where
18:10:43 <ehird`> fromPeano :: a -> Integer
18:10:43 <ehird`> instance Peano Zero where
18:10:43 <ehird`> fromPeano _ = 0
18:10:43 <ehird`> instance Peano a => Peano (Succ a) where
18:10:43 <ehird`> fromPeano a = 1 + fromPeano (pred a)
18:10:47 <ais523> what are you passing in as an argument to toPeano?
18:10:51 <ehird`> ais523: Integer
18:10:54 <ehird`> which is why I think it's hard
18:10:58 <ais523> clearly impossible
18:10:59 <ehird`> I would need run-time types.
18:11:04 <ais523> the Integer's value isn't known at compile time
18:11:07 <ehird`> exactly
18:12:26 <ais523> write a fromChurchToPeano instead
18:12:35 <ais523> that reads a Church numeral in SKK form...
18:12:38 <ehird`> ais523: Churchs values aren't known at compile-time either
18:12:39 <ehird`> :-P
18:12:48 <ais523> you can implement the Churches in types
18:12:57 <ais523> probably easier than implementing them as functions...
18:13:06 <ehird`> mehh
18:13:32 <ais523> it's actually remarkably simple, because you just apply the Church numeral to succ and 0
18:21:08 <ehird`> ais523: i am unsure if plus is possible with just hs98
18:21:54 <ais523> I don't know enough Haskell typesystem stuff yet to be sure either
18:22:03 <ais523> I'm just busy on getting the Underlambda Tier 1 spec finished
18:22:38 <ais523> it's exactly the Underload spec, except taht S has been relaxed to print out a serialisation of the code in the top stack element, rather than the source code of the top stack element
18:22:44 <ais523> and everything's described in a lot more detail
18:23:02 <ais523> oh, and I changed the quoting rules because everyone ignored them anyway
18:23:15 <ais523> and added a magic word for the start of the program
18:24:15 <ais523> but if the forbidden characters #!{} are avoided, all Underload interpreters are lenient conforming bounded Underlambda Tier 1 interpreters
18:24:57 <ehird`> ais523: i just had an idea
18:25:02 <ehird`> if haskell's typesystem is TC
18:25:06 <ehird`> then what about a language with just a type system?!
18:25:49 <ais523> but then it wouldn't really be a just-a-type-system lang
18:25:59 <ais523> but a lang with untyped data
18:26:01 <ais523> (i.e. the types)
18:26:06 <ais523> unless you're using metatyping as well
18:26:09 <ehird`> ais523: yes
18:26:13 <ehird`> a turtles-all-the-way-down approach
18:26:24 <ais523> I want to have metakinds of metatypes!
18:27:23 <ehird`> ais523: and
18:27:26 <ehird`> the values ARE needed
18:27:31 <ehird`> because a 'djinn'-alike is involved
18:27:33 <ehird`> if you want to do IO.
18:27:55 <ais523> unless your IO chain is made of types rather than values
18:28:00 <ais523> I don't see how you could do input otherwise
18:28:07 <ehird`> it is made up of types, yes.
18:28:08 <ais523> because the input would be runtime but the output compile-time...
18:28:18 <ehird`> you are right -- the chain is made up of types, then
18:28:20 <ais523> and if your IO chain is made of types you don't need the values
18:28:27 <ehird`> well, you will
18:28:39 <ehird`> by making the type specify that the 'values' (dummies) depend on the previous 'values' (also dummies, but of just the right type)
18:29:09 <ais523> maybe you could combine the dummy values with random operators that happened to have the right type signature
18:29:20 <ais523> and just plug some random dummy values in to see what happened
18:29:30 <ais523> at runtime, after your program has already run
18:31:50 <ehird`> yep
18:31:52 <ehird`> well
18:31:53 <ehird`> no
18:31:57 <ehird`> what happens is that
18:32:05 <ehird`> to find a variable of type '<insert some kind of io type here involving input>'
18:32:19 <ehird`> it must satisfy the constraints which amount to 'a line of input whicih is inputted RIGHT NOW'
18:32:22 <ehird`> so the compiler gets it
18:32:30 <ehird`> (the compiler is also a djinn)
18:32:35 <ehird`> and then hardcodes that value into the output
18:32:40 <ehird`> just like a very clever djinn
18:32:42 <ehird`> so basically
18:32:46 <ehird`> all IO happens at compile-time
18:32:51 <ehird`> the final program is a no-op
18:33:00 <ais523> or indeed not necessary at all
18:33:02 <ehird`> ais523: http://pastebin.com/m64be26a5 this bash prompt is epic -- see http://reddit.com/info/697cu/comments/c037ztj
18:33:46 <ais523> are bash prompts TC, like the rest of bash is?
18:33:59 <ais523> probably not, unless there's a way to loop
18:39:19 <ehird`> ais523: check the source fo that one
18:39:32 <ehird`> it uses prompt_command
18:39:51 <ais523> I did, but I don't understand it that much
18:40:11 <ais523> it appears to be mostly switches so that it's portable to different terminal types
18:40:13 <ehird`> ais523: basically, bash lets you run a command for a prompt
18:41:35 <ehird`> ais523: also, i have an idea
18:41:45 <ehird`> a prompt creation library
18:41:49 <ehird`> called Epic $PS1
18:41:58 <ehird`> which lets you configure it emacs-style, and call various init functions on variables
18:42:00 <ehird`> to have it manage them
18:42:06 <ehird`> so prompt creation is a lot easier
18:42:08 <ehird`> since it's modular etc
18:42:12 <ais523> your comment "also, i have an idea" reminded me of the adventure game in UMIX
18:42:20 <ehird`> you could make a prompt whose colour was the last exit code converted to rgb
18:42:21 <ehird`> :D
18:42:45 <ais523> it kept spouting stuff like "also, it is broken; it is missing a circuit board missing a (radio missing an antenna)"
18:43:10 <ais523> the idea being that before long you would get bored and write a program to solve the puzzles, all of which were of the same nature and some of which were extremely long
18:43:11 <ehird`> heh
18:43:31 <ehird`> umix=
18:43:48 <ais523> the main thing you interacted with in the 1006 ICFP
18:43:56 <ehird`> oh wait
18:43:59 <ehird`> is that the ancient machine
18:43:59 <ehird`> thing
18:44:01 <ais523> yes
18:44:20 <ais523> where they just give you some self-extracting bytecode containing most of the challenges and you have to write the VM yourself
18:44:21 <ehird`> i love icfp's award texts
18:44:44 <ais523> if you ever try, I recommend writing the VM in C, because it needs to be extremely fast
18:44:57 <ehird`> heh, why?
18:45:02 <ais523> I have a fast interp for it, but it assumes 32-bit pointers becaues it makes things simpler
18:45:13 <ais523> ehird`: because even with my fast interp the self-extract took about an hour
18:45:32 <ehird`> o.o
18:45:32 <ais523> I had a Perl interp originally, but I got bored before the program even finished the selfcheck
18:45:59 <ais523> even worse, I had to run it twice, because I didn't have anything capturing stdout the first time
18:46:28 <ais523> obviously, I meant 2006, not 1006
18:46:56 <ehird`> hah
18:47:20 <ais523> on a similar note, does anyone know how to get past the wildcat in Lost Kingdoms?
18:47:26 <ais523> I'm completely stumped
18:47:29 <ehird`> lmao
18:47:32 <ehird`> people play that?
18:47:35 <ehird`> i just wait until it starts.
18:47:39 <ehird`> to test my interps.
18:47:44 <ais523> I have done, but I'm stuck on the wildcat
18:47:50 <ais523> nothing I do seems to work
18:48:03 <ais523> you can't go past it, because then it puts up a fake prompt and kills you whatever you type
18:48:05 <ehird`> ais523: what should i call that turtle-types language?
18:48:07 <ehird`> (logo? ;))
18:48:09 <ais523> but there's no obvious way to kill it either?
18:48:26 <ais523> whenever I try, it just says "you can't see it clearly enough" or something similar
18:48:41 <ehird`> ais523: write a brainfuck interp that lets you serialize+reload a tape & program counter
18:48:43 <ehird`> then i'll try
18:48:44 <ehird`> :P
18:48:53 <ais523> shouldn't be too hard
18:49:06 <ehird`> ais523: well, then you have to play up to the wildcat and serialize.
18:49:07 <ehird`> :P
18:49:13 <ehird`> so it'd better be pretty quick; for lostkng
18:49:31 <ais523> I'll find a fast opensource bf interpreter and modify it a bit
18:50:01 <ehird`> ais523: bff.c
18:50:19 <ehird`> I would say 'mine' but it isn't written yet
18:50:34 <ehird`> oh
18:50:38 <ehird`> ais523: apparently http://mazonka.com/brainf/ is faster
18:50:46 <ehird`> than http://swapped.cc/bf/
18:50:50 <ehird`> which used to have a pretty design. odd
18:50:50 <ais523> I'm using the one that comes with Lost Kingdoms
18:51:30 <ehird`> yeah, that's slow
18:51:35 <ehird`> mazonka.com/brainf/ is a lot faster
18:51:39 <ehird`> and since you're saving more state
18:51:40 <ehird`> that's important
18:51:56 -!- habnabit has joined.
18:52:00 <ehird`> http://mazonka.com/brainf/bff4.c with -DLNR
18:53:47 <ehird`> ais523: how do i print up to something matching a regexp in ed?
18:54:03 <ehird`> trying to edit some C with it :)
18:54:03 <ais523> I don't know ed
18:54:15 <ais523> in sed it would be 1../regexp/ p
18:54:22 <ais523> and ed often uses the same commands
18:54:23 <ehird`> we need ised
18:54:24 <ais523> but not always
18:54:25 <ehird`> interactive sed
18:54:29 <ais523> I was writing that
18:54:31 <ais523> in INTERCAL
18:54:39 <ehird`> heh
18:54:47 <ais523> but I shelved it after a while to work on other things
18:55:11 <ais523> it would have been quite a torture-test for the backtracking code if I finished it
18:55:23 <ehird`> ais523: ken thompson's favourite editor used to be ed
18:55:26 <ais523> it was basically sed
18:55:45 <ehird`> then it was sam (ed, but with a gui: a top, scrollable command window, and various file buffers below, which just display the current file)
18:55:48 <ais523> except that you could enter a blank line to cause everything since the last blank line to run as a self-contained program
18:55:55 <ehird`> (you could use the mouse and everything to move around windows and stuff)
18:56:00 <ehird`> but he may have moved on to acme
18:56:01 <ais523> and there was an extra command 'display on screen'
18:56:48 <ehird`> ais523: ah, you don't want bff4
18:56:51 <ehird`> it uses dbfi input
18:57:03 <ais523> I can't modify it anyway
18:57:07 <ais523> no explicit license agreement
18:57:15 <ehird`> ais523: you are PARANOID
18:57:28 <ais523> no, I just like to stay legal
18:57:53 <ehird`> ais523: i am sure you could send off an email
18:57:58 <ehird`> in the esolang world, nobody cares
18:57:59 <ais523> worse, bff has an explicit "all rights reserved"
18:58:22 <ais523> so I'll stick to Lost Kingdom's interp
18:58:29 <ais523> which is pretty responsive for me once it's loaded
18:59:47 <ehird`> *The program is distributed under terms of BSD license.
18:59:47 <ehird`> *You can obtain the copy of the license by visiting:
18:59:47 <ehird`> *
18:59:47 <ehird`> *http://www.opensource.org/licenses/bsd-license.php
18:59:47 <ehird`> */
18:59:49 <ehird`> from
18:59:51 <ehird`> bff.c
19:00:06 <ehird`> ais523: all rights reserved is just the readme
19:00:23 <ehird`> so hah
19:00:27 <ais523> hmm... nice misleading license
19:00:39 <ehird`> yeah, well who cares, the source file says it's bsd -- that's what is important
19:00:55 <ais523> let me finish working on the Lost Kingdom's version, anyway, as I've done quite a bit on that already
19:01:16 <ehird`> ais523: ok. but bff.c is crazy fast
19:02:13 <ehird`> it runs mandelbrot.b in 19sec on this old, crusty machine
19:02:37 <ehird`> ais523: btw, do you think Epic $PS1 is a good idea? :P
19:02:44 <ais523> yes
19:02:50 <ais523> I wouldn't use it but probably lots of people would
19:02:53 <ehird`> hehe
19:03:07 <ais523> actually, I might use it just to test for you, but I'm reasonably happy with my current boring default prompt
19:03:23 <ais523> on Windows (where I also run bash) my prompt is even more boring; I set it to a single $
19:03:27 <ais523> and a space
19:04:03 <ehird`> ais523: mostly, my prompt would be in the title
19:04:09 <ehird`> but i think two-line prompts are pretty good
19:04:10 <ehird`> imagine:
19:04:14 <ehird`> <cwd>
19:04:15 <ehird`> $ ...
19:04:20 <ehird`> where $ is a # when root
19:04:22 <ehird`> and bold
19:04:31 <ehird`> # is red
19:04:33 <ais523> you should turn the entire line a different colour when you're root
19:04:37 <ehird`> yes
19:04:38 <ehird`> exactly
19:04:49 <ehird`> and, <cwd> gets coloured according to the last commands output
19:04:51 <ais523> or maybe even if the command merely starts with sudo, if there's some way to do that
19:04:53 <ehird`> when you're root, that's tinted red
19:05:06 <ehird`> so, '1' might give dark gray on normal
19:05:09 <ehird`> whereas 0 = blue
19:05:12 <ehird`> but on root
19:05:15 <ehird`> '1' = dark crimson
19:05:16 <ehird`> 0 = red
19:07:15 <ehird`> ais523: hmm, i'm giong to take a hand at writing a fastfast brainfuck interp
19:07:22 <ehird`> i take it you're not interested? :-P
19:07:34 <ais523> not immediately
19:07:40 -!- Tritonio_ has quit ("Bye...").
19:07:45 <ehird`> ais523: anyway, got that stateful interp yet?
19:07:52 <ais523> almost finished writing
19:08:04 <ais523> I probably would have done by now if it weren't for constantly seeing why #esoteric is flashing at me
19:08:08 -!- Tritonio_ has joined.
19:08:43 <ehird`> haha :(
19:09:06 -!- cherez has joined.
19:09:43 <ehird`> ais523: ok, what about turtles
19:11:24 <ehird`> typedef struct _turtle {
19:11:25 <ehird`> struct _turtle *metatype;
19:11:25 <ehird`> struct _turtle *type;
19:11:25 <ehird`> struct _turtle *supertype;
19:11:25 <ehird`> void *data;
19:11:25 <ehird`> } Turtle;
19:15:10 <ehird`> you know i've never implemented bignums
19:15:12 <ehird`> i should do that sometime
19:15:23 <Asztal> it's boring ;)
19:15:25 <faxathisia> ehrid`: Sure you have *g*
19:15:37 <faxathisia> data N = Zero | Succ N
19:19:48 <ehird`> heh
19:19:50 <ehird`> i meant in c
19:21:42 -!- Tritonio_ has quit ("Bye...").
19:24:31 <ais523> faxathisia: it's even easier than that
19:24:35 <ais523> you just use type Integer...
19:27:06 <ehird`> thats not an implementation thugh.
19:35:32 <ehird`> hm
19:35:40 <ehird`> 8 seconds to calculate 100000
19:35:42 <ehird`> err
19:35:44 <ehird`> 100000!
19:35:48 <ehird`> not bad
19:42:32 -!- Tritonio_ has joined.
19:43:29 <ehird`> ais523: hmm............
19:43:36 <ehird`> should a bigint library handle negative numbers?
19:43:39 <ehird`> ah! of course,
19:43:44 <ehird`> on the root node i can just include a 'sign' bit
19:46:26 <ehird`> ais523: i'll just make the actual leaves unsigned long's tgeb
19:47:30 <ehird`> hmm
19:47:31 <ehird`> then
19:47:38 <ehird`> base = sizeof(unsigned long)*8
19:51:53 <ais523> ehird`: I finished the bf serialiser/unserialiser
19:52:00 <ais523> and I've played through to the wildcat bit
19:52:03 <ehird`> ok
19:52:07 <ehird`> show me the interp&serialized
19:52:08 <ehird`> :)
19:52:25 * ais523 pastes
19:54:56 <ais523> http://filebin.ca/ytdzpo/bf-ser.c
19:55:01 <ais523> is the BF interp with serialisation
19:55:09 <ais523> http://filebin.ca/hcaczt/wildcat.ser
19:55:16 <ais523> is the save file for the point in the game I reached
19:55:30 <ehird`> ais523: you should handle SIGSUSPEND
19:55:32 <ehird`> aka ^Z
19:55:33 <ehird`> for serialize
19:55:37 <ehird`> what if i want to input `
19:55:37 <ehird`> :P
19:55:46 <ais523> I don't think that comes up
19:55:54 <ais523> but this is just a quick hack
19:55:54 <ehird`> well, what if i want to in some program :P
19:56:00 <ehird`> (and, with ^Z, you can display a prompt)
19:56:04 <ais523> it doesn't support loops nested more than 63 deep either
19:56:12 <ais523> I may improve it at some point
19:56:30 <ais523> oh, and serialisations are always written to the file ./bf.ser, but you can rename/copy it once it's been created
19:56:42 <ais523> to load from a serialisation, it's bf-ser <program> <serialisation>
19:57:14 <ais523> and type L <newline> when it loads, to get it to repeat the last prompt, or it's terribly out of context
19:58:44 <ehird`> hmm
19:58:53 <ehird`> checking whether some integer operations overflows in c is.. hard
19:59:18 <ehird`> ais523: link to lostkng.b?
19:59:25 <ehird`> i lost it
20:00:10 <ais523> looking for it now
20:00:12 <ehird`> damn, you can't even do:
20:00:27 <ehird`> (a+b)<a || (a+b)<b
20:00:32 <ehird`> because it might overflow an awful lot
20:00:37 <ais523> http://jonripley.com/i-fiction/games/LostKingdomBF.html
20:00:43 <ais523> it's inside a .zip container, unfortunately
20:01:05 <ais523> I strongly suggest you type ?2 at some prompt to find out the controls
20:01:11 -!- cherez has quit ("Leaving.").
20:01:48 <ehird`> ais523: does it start up immediately?
20:01:50 <ehird`> from serialization
20:01:52 <ais523> yes
20:01:54 <ehird`> yep
20:01:54 <ehird`> wow
20:01:55 <ehird`> that's nice
20:01:56 <ais523> but at a stdin prompt
20:02:03 <ehird`> serialize that start of lostkng.b after startup
20:02:09 <ehird`> then you can lie about your interps speed ;)
20:02:22 <ais523> it's not quite immediate-start, TBH
20:02:25 <ehird`> 'starts lostkng in 0sec!!!'
20:02:37 <ais523> but it's O(n) in the number of instructions the IP is deep in the program
20:02:38 <ehird`> ais523: about instant for me
20:02:41 <ais523> yes
20:02:44 <ais523> because there's no looping
20:02:48 <ais523> it just goes straight there
20:02:55 <ais523> the delay is due to seeking by index in a linked list
20:02:59 <ais523> and that's hardly noticeable
20:04:09 <ehird`> ais523: using this game is like programming in an esolang
20:04:24 <ehird`> (nigh-on impossible the first time)
20:04:28 <ehird`> i can't get it to do anything
20:04:55 * ais523 is used to it
20:05:00 <ais523> ?2 gives a list of commands
20:05:07 <ais523> i will tell you which number corresponds to which item you own
20:05:17 <ais523> then it's a case of typing <letter> or <letter> space <number>
20:05:19 <ais523> to give the commands
20:05:49 -!- cherez has joined.
20:05:50 -!- cherez has quit (Remote closed the connection).
20:06:05 -!- cherez has joined.
20:06:05 -!- cherez has quit (Remote closed the connection).
20:06:42 -!- cherez has joined.
20:06:42 -!- cherez has quit (Remote closed the connection).
20:07:04 <ehird`> ais523: what about that axe you have..?
20:07:10 <ais523> try using it
20:07:12 -!- cherez has joined.
20:07:14 <ais523> it doesn't work because you can't aim it
20:07:24 <ehird`> i did but i don't know the controls properly so im having trouble.
20:07:24 <ais523> BTW, I'm pretty sure I've got all the items in the game up to that point
20:07:35 <ais523> killing the cat doesn't work
20:07:40 <ais523> throwing the axe at the cat doesn't work
20:07:48 <ais523> and walking deeper kills you
20:08:09 <ehird`> ais523: its a port of an older game
20:08:16 <ehird`> so why not look around for that one
20:08:24 <ais523> written in BASIC IIRC
20:08:30 <ais523> one thing I tried was to write a decompiler
20:08:38 <ais523> but when I found there were unbalanced loops I gave up
20:08:53 <ais523> maybe I should find a copy of BFBASIC and see if I can write something to reverse its effect
20:09:09 <ehird`> ais523:
20:09:10 <ehird`> >h 1
20:09:10 <ehird`> You hear the creature stir but the beast remains hidden.
20:09:19 <ehird`> and ... more than just from BFBASIC:
20:09:24 <ehird`> http://jonripley.com/i-fiction/games/LostKingdom.html
20:09:35 <ais523> you just threw away your box of matches!
20:09:39 <ais523> how could you!
20:09:42 <ehird`> no
20:09:45 <ehird`> my rusty old lamp.
20:09:48 <ais523> ...and yes, I tried that as well
20:09:49 <ehird`> but it made the creature stir
20:09:54 <ais523> sorry, misread the number
20:09:58 <ais523> but I tried that too
20:10:05 <ehird`> no inventory works
20:10:33 <ehird`> sorry, ais523 -- i think it's a dead end
20:10:43 <ais523> there is nowhere else
20:10:51 <ais523> and that area was well-guarded
20:11:26 <ehird`> LostKingdom,ffb is the Acorn BBC BASIC version.
20:11:27 <ehird`> LostKingdom.bbc is the non-Acorn BBC BASIC version.
20:11:32 <ehird`> i believe those are sources.
20:11:37 * ais523 has actually written BBC Basic
20:11:44 <ais523> but those sources don't correspond to the BF version
20:11:46 <ehird`> oh they appear to be binary files
20:13:12 <ais523> yes, they are
20:13:18 <ais523> and with no recognisable text fragments
20:13:33 <ais523> most of the text was new for the BF version, anyway, IIRC
20:14:11 <ehird`> ais523: We need an esolang that is optimized for writing Hunt the Wumpus and simmilar.
20:14:13 <ehird`> Befunge does a good job of it.
20:14:48 <ehird`> http://en.wikipedia.org/wiki/Image:Wumpus.jpg wow, the wumpus SO does not look like that
20:15:04 <ehird`> The wumpus looks like a walrus, but bigger, and stands more on its hind legs.
20:15:10 <ehird`> and eviller. red eyes.
20:15:37 -!- uvanta has quit ("사회주의적 신념, 자연주의적 이성").
20:17:50 <ehird`> what's the best befunge interp out there?
20:17:52 <ehird`> that recompiling one
20:18:11 <ais523> ccbi is apparently the only standard-compilant Funge-98 interp, so that's the one I use
20:18:55 <ais523> and Funge-98 > Befunge-93 in so many ways
20:19:15 <ais523> TC-ness, for one
20:19:22 <ehird`> i like -93 more.
20:19:24 <ehird`> it's simpler.
20:19:30 <ehird`> 98 is such complex crap.
20:19:35 <ehird`> -93 + infinite board = yum
20:19:50 <ehird`> besides
20:19:56 <ais523> 98 is 93+infinite board+actual specifications for some things that weren't specified before
20:19:57 <ehird`> the bef wumpus is written in -93
20:20:02 <ehird`> ais523: + complex crap
20:20:04 <ais523> and a whole lot of useful commands that you can ignore if you like
20:20:13 <ehird`> http://catseye.tc/projects/befunge93/eg/wumpus.bf hunt the befunge-93
20:20:27 <ais523> ehird`: input behaviour on EOF is something that badly needed specifying
20:20:38 <ehird`> brainfuck does fine without
20:20:42 <ais523> no it doesn't
20:20:53 <ais523> the EOF thing is responsible for most BF incompatibilities
20:21:00 <ais523> BF would be a much better lang without that particular problem
20:21:09 -!- olsner has joined.
20:21:10 <ais523> and it's pretty good as it is
20:21:56 -!- chere1 has joined.
20:21:57 -!- chere1 has quit (Remote closed the connection).
20:22:01 -!- chere1 has joined.
20:22:02 -!- chere1 has quit (Remote closed the connection).
20:22:16 <ais523> on another note, I'm working on an esolang-based text adventure
20:22:18 -!- cherez has quit ("Leaving.").
20:22:19 <ehird`> speaking of which i should write a brainfuck specification
20:22:19 <ehird`> formally
20:22:20 <ehird`> in TeX
20:22:24 <ehird`> or texinfo
20:22:30 <ais523> that is, esolangs form the basis of the plot
20:22:37 <ais523> although the adventure is itself written in C
20:22:45 * ais523 likes texinfo
20:22:58 <ais523> so far I have a BF-based, INTERCAL-based, and SMETANA-based puzzle
20:23:25 -!- cherez has joined.
20:23:35 <ais523> in most of the puzzles, the player plays an intelligent IP that can choose to change direction out of free will and execute a different set of commands
20:23:55 <ais523> and some of the langs were made 2D so that people could walk around them in a more interesting way
20:24:07 <ais523> it's slow going, though, because good puzzle ideas are hard to come by
20:24:29 <ehird`> ais523: why write in c?
20:24:38 <ais523> because I started it years ago
20:24:50 <ais523> back when I was mostly writing C in files with a .cpp extension
20:24:55 <ais523> because I didn't really realise the difference
20:25:04 <ais523> it would be easy enough to translate, if necessary
20:25:18 <ais523> oh, and the portability's the other reason
20:27:12 <ehird`> ais523: Ok --
20:27:20 <ehird`> I think I want to write Be Your Funge.
20:27:26 <ehird`> It's FukYorBrane, but for befunge.
20:27:34 <ehird`> (93, of course -- the limitations are an advantage)
20:27:40 <ais523> in this case, yes
20:27:55 <ais523> FYB's main problem, by the way, is that [] loops can run for 0 repetitions
20:27:58 <ehird`> ais523: Actually, I think it will be short.
20:28:02 <ehird`> and
20:28:04 <ehird`> that's an advantage
20:28:07 <ehird`> it's a strategy
20:28:15 <ais523> If I ever hold a FYB contest, I'll force them to run at least once each
20:28:21 <ehird`> rubbish
20:28:36 <ais523> otherwise you can just start your program by defecting, pointing at a NOP, and skipping 100000000000000 bytes of junk
20:28:48 <ais523> and do whatever you like because the opponent can only move their data pointer one step at a time
20:29:12 <ais523> so you have trillions of instruction cycles before the opponent can get anywhere near affecting your program
20:30:00 <ais523> it leads to degenerate competitions where the length of the original junk is all that determines who wins
20:30:12 <ehird`> ais523: beyourfunge will use p and g
20:30:15 <ehird`> to point at the opponent
20:30:22 <ais523> naturally
20:31:09 <ehird`> ais523: um, should i do:
20:31:12 <ehird`> run ins on A
20:31:13 <ehird`> run ins on B
20:31:14 <ehird`> ...
20:31:17 <ehird`> or something more sophisciated?
20:31:28 <ais523> although you lose one thing I liked about fyb, which was that setting a square to a bomb was much harder than setting it to a low-numbered instruction in terms of time spent
20:31:42 <ais523> ehird`: alternate either instructions or torus squares
20:31:56 <ais523> probably instructions as that's how most of the commands seem to be defined
20:32:00 <ais523> i.e. spaces take 0 time to run
20:32:22 <ais523> oh, it's also probably a good idea to have some way to determine where the enemy instruction pointer is
20:32:36 <ehird`> ais523: my way is nicer because it requires no language extensions
20:32:44 <ais523> maybe radar-style: "how many spaces from point (x,y) is the enemy IP?"
20:32:56 <ehird`> assuming a sitting duck B, a non-modifying (of its own code) befunge program will behave normally
20:32:59 <ais523> otherwise you either have to analyse the enemy program (ridiculously time-consuming) or guess
20:33:09 -!- cherez has quit ("Leaving.").
20:33:11 <ehird`> ais523: well, are you sure spaces should take 0 to run?
20:33:25 <ais523> not sure
20:33:31 <ais523> but it fits the language better
20:33:43 <ais523> and it doesn't make too much difference in terms of making the IP hard to find
20:34:30 <ais523> because in a 2D language like Befunge it's hard enough anyway
20:35:07 <ais523> if there's no way to pinpoint the enemy IP, programs are effectively just going to be guessing where to put bombs (quit instructions?), or else covering the entire torus systematically
20:35:14 <ais523> and I can't see much of a scope for better strategies
20:41:17 <ehird`> @ end program is indeed the bomb
20:42:02 <ehird`> hmm, ais523 --- how else do you end a prog in befunge apart from @?
20:42:10 <ais523> you don't
20:42:16 <ais523> Funge-98 has q as well, though
20:43:42 <ehird`> ais523: how big are befunge stack elements?
20:43:52 <ais523> normally 32-bit signed integers
20:44:14 <ehird`> ais523: linked list stack or..
20:44:25 <ais523> the stack is infinite
20:44:31 <ais523> making Befunge-93 a PDA
20:44:34 <ehird`> OK.
20:46:50 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
20:47:04 -!- slereah_ has joined.
20:50:11 <ehird`> right=0
20:50:12 <ehird`> left=1
20:50:13 <ehird`> up=2
20:50:15 <ehird`> down=3
20:51:00 <ais523> what, no diagonally? Now I remember another reason why I don't like Befunge-93
20:51:43 <ehird`> ais523: horizontal if is:
20:51:55 <ehird`> if(pop()){d=left;}else{d=right}
20:51:59 <ehird`> and up/down for vertical
20:52:00 <ehird`> correct?
20:52:10 <ais523> for some reason I only memorised horizontal
20:52:15 <ais523> but it goes left on non-zero, yes
20:52:24 <ehird`> * _ acts like < if the value is true or > if it is false; and
20:52:24 <ehird`> * | acts like ^ if the value is true or v if it is false.
20:52:35 <ais523> so right on both counts
20:52:43 <ais523> right as in correct, that is
20:52:45 <ehird`> if (pop(s, n)) {
20:52:46 <ehird`> *d = 1;
20:52:46 <ehird`> } else {
20:52:46 <ehird`> *d = 0;
20:52:46 <ehird`> }
20:52:47 <ehird`> --->
20:52:51 <ehird`> *d = pop(s, n) % 2;
20:52:52 <ehird`> :D
20:52:59 <ehird`> i think
20:52:59 <ais523> no
20:53:01 <ehird`> oh
20:53:01 <ehird`> no
20:53:03 <ehird`> of course
20:53:04 <ehird`> damn
20:53:07 <ehird`> is there any way to do that?
20:53:10 <ehird`> ah
20:53:15 <ehird`> *d = pop(s, n) & 1;;
20:53:15 <ais523> *d = !!pop(s,n)
20:53:19 <ehird`> hmm
20:53:21 <ais523> &1 is also wrong
20:53:23 <ehird`> oh
20:53:24 <ehird`> && 1
20:53:25 <ehird`> heh
20:53:28 <ais523> because even values > 1 have to give true
20:53:30 <ais523> && 1 works
20:53:34 <ais523> but !! is shorter and more idiomatic
20:54:03 <ehird`> then | is !!pop(s,n)+2
20:54:04 <ehird`> right?
20:54:11 <ehird`> if ^ = 2 and v = 4
20:54:12 <ehird`> *3
20:54:50 <ais523> no
20:54:56 <ais523> !pop(s,n)+2
20:55:05 <ais523> because true needs to give 3 and false needs to give 4
20:55:19 <ais523> so only one exclamation mark, to reverse the sense of the test
20:56:38 <ehird`> ais523: on an unrelated note, my stringmode handler in an 'if' jumps to a goto inside the else branch
20:56:49 <ais523> that's fine
20:56:52 <ehird`> yes
20:56:53 <ehird`> but amusing
20:56:56 <ais523> if a little unusual
20:57:13 <ehird`> ais523: I could structure it more without goto. But there are about 5 lines between jump and label.
20:57:17 <ehird`> So I don't think it's important.
21:02:14 <ehird`> ais523: stack for g
21:02:15 <ehird`> x y <TOP>
21:02:17 <ehird`> or y x <TOP>
21:02:26 <ais523> can't remember
21:02:31 <ais523> probably wisest to look it up
21:04:00 <ais523> ehird`: y is on top of the stack, according to the original docs
21:05:00 <ehird`> i just looked it up
21:05:00 <ehird`> heh
21:05:00 <ehird`> :)
21:05:47 <ais523> the main thing to be careful of is #
21:05:59 <ais523> which apparently skips all whitespace in the IP's direction, and the next non-whitespace character
21:06:22 <ehird`> ais523: it does??
21:06:27 <ais523> I think; I'm just looking it up again
21:06:28 <ehird`> skip whitespace, that is
21:06:32 <ehird`> it seems to not skip whitespace
21:07:00 <ais523> hmm... the spec is ambiguous about that
21:07:12 <ehird`> what does the ref interp do?
21:07:20 <ehird`> i can't find it
21:07:21 <ehird`> :P
21:08:00 <ehird`> http://quadium.net/funge/tbc/core.int
21:08:41 <ehird`> hm
21:08:42 <ehird`> x += dx
21:08:44 <ehird`> let's find dx..
21:08:50 <ehird`> ah
21:08:52 <ehird`> ais523: you're wrong
21:08:54 <ehird`> it just steps one
21:08:55 -!- Asztal has quit (Read error: 104 (Connection reset by peer)).
21:09:00 <ais523> you're right
21:09:12 <ais523> I was thinking of the complicated situation when there's a # at the end of a line
21:09:18 <ais523> and the line is not exactly 80 chars long
21:09:22 -!- Asztal has joined.
21:09:24 <ehird`> ais523: should I disable IO in Be Your Funge programs?
21:09:38 <ehird`> or will the multithreaded outputfuck be funny :D
21:09:43 <ehird`> (and the inputfuck, well, useless i guess :D)
21:09:56 <ehird`> ais523: and hm
21:09:56 <ais523> allowing input would mean that you would have to generate the input somehow
21:10:02 <ehird`> in mine that would advance it into the next space
21:10:04 <ehird`> is that correct?
21:10:10 <ais523> you could do it like Easy, where the input is embedded in the program
21:10:24 <ais523> ehird`: jumping over the edge is undefined
21:10:35 <ehird`> ok
21:10:35 <ais523> many interps do it differently for horizontal and vertical
21:10:38 -!- Sgeo[College] has joined.
21:10:38 <ehird`> then who cares what happens
21:10:41 <ehird`> right?
21:10:43 <Sgeo[College]> Hi all
21:10:47 <Sgeo[College]> Hi all
21:10:48 <ais523> so the testsuite measures what happens but doesn't give it a pass or fail
21:10:49 <Sgeo[College]> Hi all
21:10:49 <Sgeo[College]> Hi all
21:10:49 <Sgeo[College]> Hi all
21:10:50 <Sgeo[College]> Hi all
21:10:50 <Sgeo[College]> Hi all
21:10:51 <Sgeo[College]> Hi all
21:10:53 <Sgeo[College]> Hi all
21:10:53 <ehird`> Sgeo[College]: Go to hell.
21:10:55 <Sgeo[College]> Hi all
21:10:55 <ais523> and hi Sgeo
21:10:57 <Sgeo[College]> Hi all
21:10:59 <Sgeo[College]> Hi all
21:11:01 <Sgeo[College]> Hi all
21:11:02 <ehird`> Shut the fuck up.
21:11:03 <ais523> but stop spamming, there's something wrong with your client
21:11:06 <ehird`> oh
21:11:08 <ehird`> is it his client
21:11:12 <ais523> must be surely?
21:11:13 <ehird`> i thought he was being highly annoying
21:11:14 <ehird`> :|
21:11:37 <ehird`> ais523: and also
21:11:40 <ais523> must be the client
21:11:40 <ehird`> in Easy the program is 'RUN'
21:11:42 <faxathisia> lol wtf
21:11:43 <ehird`> no input there!
21:11:48 <ais523> as it isn't responding to ctcp version or ping
21:11:56 <ehird`> its an ajax one
21:11:57 <Sgeo[College]> Client I think *winces*
21:11:58 <ehird`> mibbit.com
21:12:06 <ais523> ehird`: I treat an Easy program as being what's typed into stdin
21:12:12 <ais523> so the input and program are all mixed up
21:12:13 <faxathisia> Sgeo[College]: you soid Hi all about 50 times!
21:12:18 <ehird`> ais523: but easy is all about being pedantic with things like that
21:12:20 <ais523> it leads to some nicer programs, though
21:12:25 <ais523> Hello, world in Easy:
21:12:35 <ehird`> ais523: anyway, what do undefined instructions do in befunge-93??
21:12:42 <ehird`> s/\?\?/?/
21:12:44 <ais523> ,H.,e.,l.,l.,o.,,., .,w.,o.,r.,l.,d.
21:13:10 <ais523> ehird`: error in befunge-93
21:13:41 <ais523> in Funge-98 pretty much all errors, including undefined instructions, cause a rebound where the IP changes direction 180 degrees
21:15:28 * ehird` figures out shortest way to do 1->2,2->1
21:16:01 <ais523> the classic a^=b^=a^=b is unfortunately not portable, and is technically undefined behaviour
21:16:13 <ehird`> ais523: i mean
21:16:15 <ehird`> 1 maps to 2
21:16:17 <ehird`> 2 maps to 1
21:16:24 <ais523> 3-x
21:17:39 <ais523> although that's a classic INTERCAL problem (as 1 and 2 are the usual logic levels), with the usual answer being something like '?#1$.1'~#3
21:18:02 <ais523> i.e. premingle 1, take XOR of consecutive bits, select the bottom two bits
21:19:19 <ais523> ehird`: http://esoteric.voxelperfect.net/files/befunge/src/kquine.bf that's insane
21:19:27 <ais523> can't figure out whether it counts as a cheat or not...
21:20:28 <ais523> the code is simultaneously inside and outside a string due to the unmatched string delimiter
21:20:46 <ais523> so it reads it as data, then when the IP overflows, it hits the original string delimiter and re-reads the program as code...
21:21:33 <ehird`> that's not cheating
21:21:38 <ehird`> that's how you do befunge quines
21:22:06 <ehird`> ais523: whoa, awesome -- byf is 255 lines XD
21:22:10 <ehird`> 256 lines counting last \n
21:22:18 <ehird`> i must not add another line
21:22:18 <ehird`> :P
21:22:20 <ais523> have you finished writing it already, then?
21:22:27 <ehird`> first prototype
21:22:29 <ehird`> hasn't even been compiled
21:22:42 <ais523> besides, you ought to fit it into a space 80x25, really
21:22:45 <ehird`> i wrote it all without compiling it
21:22:47 <ehird`> :P
21:22:57 <ehird`> ais523: even with huge obfuscation and minimalization, i don't think that would be possible
21:23:08 <ais523> you can write multiple commands on a line
21:23:19 <ehird`> whoa, more than a SCREENFUL of errors!!!!!!!
21:23:21 <ehird`> ais523: of course
21:23:23 <ais523> or just string assignments together with commas
21:23:27 <ehird`> yes
21:23:28 <ehird`> but even so.
21:23:37 * ais523 has seen entire C programs written in a single statement
21:23:42 <ehird`> byf.c:8: warning: built-in function ‘y1’ declared as non-function
21:23:45 <ehird`> 'y1' is a built in function?
21:23:47 <ehird`> what the fuck does that do?
21:24:02 <ais523> try recompiling with -ansi
21:24:10 <ais523> y1 certainly isn't a reserved identifier
21:24:10 <ehird`> ah
21:24:12 <ehird`> it's math.h stuff
21:24:13 <ehird`> bastards
21:24:14 <ehird`> :P
21:24:24 -!- Sgeo[College] has quit ("http://www.mibbit.com ajax IRC Client").
21:24:59 <ais523> incidentally, a shorter Easy Hello, world!: ,[.,]Hello, world\0
21:25:03 <ais523> where \0 is the NUL character
21:25:16 <ais523> sorry, ,H[.,]ello, world!\0
21:28:31 <ehird`> ais523: urgh
21:28:39 <ehird`> gcc insists char [x][y]
21:28:45 <ehird`> is really really different from char **
21:28:51 <ehird`> and comparisons without casts - well, i'd better warn you!
21:28:55 <ais523> it is very different
21:28:59 <ais523> because of the sizeof issue
21:29:01 <ehird`> ais523: not in this context
21:29:02 <ehird`> sdfjksdf
21:29:08 <ehird`> and i think warning about it by default is evil
21:29:10 <ehird`> very evil
21:29:16 <ais523> OK, but does gcc realise that it's different in this context?
21:29:29 <ehird`> ais523: no but it can not warn about it by default!!
21:29:45 <ais523> which warning flags are you using?
21:29:46 <ehird`> gcc should have an -fi-dont-know-c for the newbies that does do the while (x=y) warnings
21:29:50 <ais523> and can you paste the code?
21:29:55 <ehird`> and by default let you do stuff like while (x=y) without doing while ((x=y))
21:29:59 <ehird`> ais523: none, suprisingly
21:30:04 <ehird`> it warns about it with no flags at all
21:30:04 <ais523> and BTW, you can turn that one off by writing while ((x=y)) which is deliberate
21:30:05 -!- habnabit has quit (Read error: 110 (Connection timed out)).
21:30:06 <ehird`> well -- -ansi :)
21:30:10 <ehird`> ais523: see above.
21:30:12 <ehird`> that's **lame**
21:30:52 <ais523> it at least reminds me which of my single-=s are deliberate
21:30:53 <ais523> I tend to put double parens around any = whose value is used in a situation more complicated than a=b=c
21:30:58 <ais523> to remind me that's what I meant
21:31:01 <ais523> and to tell gcc that's what I meant
21:31:12 <ais523> and it doesn't disrupt other compilers because it's still legal C
21:31:33 <ehird`> personally i write c code that compilers should shut up and compile
21:31:41 <ehird`> and it's still clear
21:31:46 <ehird`> just not annotated for a bloody program
21:31:49 <ehird`> :)
21:32:03 <ehird`> though it must be said...
21:32:12 <ehird`> byf.c only has one comment, and that's the top-of-file header
21:32:18 <ehird`> the rest is pretty much self-evident.. it's not complex
21:32:32 <ais523> the fact that some programmers have got into the habit of writing while(0==x) shows that some way of marking deliberate = signs is needed
21:32:38 <ehird`> assuming you have an editor which can jump between definitions properly - concepts aren't introduced in a chronological order :P
21:32:45 <ehird`> ais523: only bad programmers.
21:32:50 <ehird`> IMO. :P
21:33:12 <ais523> I consider myself to not be a bad programmer, but still typo a==b on occasion
21:33:25 <ehird`> editors can help here
21:33:28 <ehird`> not compilers
21:33:46 <ais523> yes, but sometimes I don't have access to a decent editor
21:33:53 <ais523> I'm not always on this computer, after all...
21:34:09 <ais523> and wouldn't you still have to write ((a=b)) to tell your editor it was deliberate?
21:34:47 <ehird`> no
21:34:51 <ehird`> it can just highlight it differently
21:35:02 <ehird`> step(p1, &s1, &x1, &y1, &d1, &sm1, 1);
21:35:08 <ehird`> does & not result in t -> t *?
21:35:15 <ehird`> void step(char p[25][80], bef_stack_t **s, int *x, int *y, int *d, int *sm,
21:35:16 <ehird`> int n)
21:35:43 <ais523> ehird`: when you look back at the code a while later, you need to know if it was deliberate
21:35:56 <ehird`> ais523: generally, the context explains that for me
21:36:01 <ais523> and & gives you the address of a non-array variable
21:36:12 <ehird`> right
21:36:16 <ehird`> which should do int -> int *
21:36:17 <ais523> or the address of the first element of an array variable
21:36:20 <ehird`> but gcc says incompatible pointer type
21:36:26 <ais523> which is the same tpe as the array
21:36:32 <ais523> ehird`: which arg?
21:36:39 <ais523> and what is the type of the variable you're &ing?
21:36:43 <ehird`> ais523: 3&4
21:36:53 <ehird`> oh
21:36:57 <ehird`> x and y are chars
21:37:01 <ehird`> because they only store 25 and 80
21:37:06 <ehird`> duhhhh
21:37:07 <ehird`> :)
21:37:38 <ehird`> actually, ais523 --
21:37:50 <ehird`> typedef union { char v:1; } onebyteunion;
21:37:52 <ehird`> i wish you could do:
21:37:59 <ehird`> char v:1;
21:38:00 <ehird`> and:
21:38:06 <ehird`> typedef char bit:1;
21:38:21 <ais523> some compilers allow that
21:38:27 <ais523> but taking the address of a bit would be too difficult
21:38:41 <ais523> the compiler would have to store bits in separate bytes, avoiding the benefits
21:39:00 <ehird`> ais523: true... but it would be nice if you could do
21:39:02 <ais523> the compilers that do allow it are generally for microcontrollers and other small devices that need the memory saving
21:39:07 <ehird`> typedef char boolean:1;
21:39:10 <ehird`> is the usage i was imagining
21:39:18 <ais523> and a variable that acts like it's one bit is available as _Bool in C99
21:39:24 <ehird`> yes but it's actually bigger
21:39:28 <ais523> as in, _Bool is the data type to declare it as
21:39:38 <ehird`> ais523: http://rafb.net/p/626wHG90.html i think p and g have off-by-one errors here..
21:39:39 <ais523> and it's actually bigger because it needs to be for the computer to handle it well
21:39:49 <ehird`> but my head doesn't want to wrap itself around it :-)
21:40:50 <ais523> (0,0) is the top-left corner of the playfield
21:41:13 <ais523> so there's nothing obviously wrong with the code with respect to off-by-one
21:41:20 <ehird`> i mean
21:41:21 <ehird`> b vs a
21:41:27 <ehird`> i think i have the order mixed up
21:41:29 <oklopol> so i hear about this PSOX thing
21:41:31 <oklopol> is it any good
21:41:40 <ehird`> oklopol: no
21:41:45 <ais523> oklopol: yes
21:41:58 <ais523> Sgeo just left, though, and they're probably the best person to ask for information
21:42:00 <ehird`> oklopol: no
21:42:07 <ais523> although ehird` and Sgeo have been arguing about its merits for a while
21:42:11 <ehird`> ais523: singular they club??!?! *high-5*
21:42:18 <oklopol> ais523: i know it all, just being an oklopol.
21:42:26 * ais523 has even been known to refer to themselves using singular they
21:42:33 <ais523> or maybe that should be themself...
21:42:40 <ais523> I normally use themself, actually
21:42:45 <oklopol> just woke up, and it's 11:46 pm :)
21:42:45 <ehird`> ais523: '* ais523 has'
21:42:48 <ehird`> that reads realy badly
21:42:56 <oklopol> why does my sleep cycle always end up fucked up
21:43:08 <ais523> themself would have been better, I just typed the wrong thing
21:44:00 <oklopol> ais523: i know what you use. not much gets past me that happens here.
21:44:31 <ais523> ehird`: if byf doesn't have a defect instruction, or some way to modify your own source, then there's no sensible way for a program to detect and clean up @-bombs the enemy's aiming at it
21:44:39 <oklopol> although i had a week of self-searching a while ago, and actually missed some of the logs :|
21:45:04 <ehird`> ais523: what about my a/b mixup though? ... i want to fix that first
21:45:05 <ehird`> :-)
21:46:01 <ais523> y-coordinate is on the top of the stack
21:46:17 <ehird`> the nit is mixed up
21:46:34 <ais523> so if you're doing p1[x][y], p and g have a and b the wrong way round
21:47:00 <ehird`> ehird@ehird-desktop: ~/byf
21:47:01 <ehird`> $ ./byf wumpus.bf wumpus.bf
21:47:01 <ehird`> Unknown command 0 in program -1209218860
21:47:03 <ehird`> wowzers :D
21:47:48 <ehird`> fixed the program
21:47:51 <ehird`> but still unknown command 0
21:47:51 <ehird`> oh
21:47:52 <ehird`> of course
21:47:53 <ehird`> i need digits
21:47:54 <ais523> you didn't pass the second data arg to fprintf at all
21:47:58 <ehird`> and yes
21:48:06 <ais523> I think -Wall warns you about that nowadays
21:50:05 <ehird`> if (p[*x][*y] >= '0' && p[*x][*y] <= '9') {
21:50:05 <ehird`> push(s, p[*x][*y] - '0');
21:50:06 <ehird`> }
21:50:13 <ehird`> ais523: it looks just like the original atoi! :)
21:50:36 <ais523> good thing C89 and C99 both insist that '0' to '9' be contiguous
21:51:01 <ais523> although they don't guarantee that sort of thing for any other set of characters, due to EBCDIC
21:51:16 <ehird`> ais523: Which is better - a deflect instruction or two new p/g alikes?
21:51:29 <ais523> probably p/g-alikes
21:51:48 <ais523> that saves the problem of special-casing dropping defects into the opponent's code
21:52:15 <ehird`> ais523: i'll reuse input&output chars
21:52:17 <ehird`> 'cause i'm evil
21:52:21 <ehird`> and like breaking existing programs
21:52:24 <ais523> multithreading may or may not be useful, too; FYB certainly does it a lot
21:53:31 <ehird`> ais523: yikes! that would be non-trivial with my current design.
21:53:35 <ehird`> well, i could use fork()
21:53:39 <ehird`> but pthreads... urrrgh, pthreads.
21:54:07 <ehird`> ais523: . or , for 'put to this program'
21:54:20 <ehird`> i think ,
21:54:21 <ehird`> since it's for ascii
21:54:33 <ais523> I suppose you could just have g and p to aim at yourself, as usual, and . and , could aim at the opponent
21:55:08 <ais523> or other variations thereof, . and , would be mean as they're two versions of the same instruction
21:55:10 <ehird`> ais523: should i come up with entirely new names, then?
21:55:16 <ais523> no
21:55:19 <ehird`> ok
21:55:26 <ehird`> yeah i guess not - breaking existing programs is FUN! :)
21:55:31 <ais523> use an input instruction and an output instruction
21:55:36 <ehird`> ok
21:55:39 <ais523> rather than two output instructions, one of which does input...
21:56:44 <ehird`> ais523: OK
21:56:51 <ehird`> so, standard BF command characters, sans & and .
21:57:01 <ehird`> and IO instructions work like g and p on the other person's board
21:57:10 <ehird`> ais523: do i need a 'find IP' instruction?
21:57:21 <ais523> I think so
21:57:37 <ais523> maybe that just pushes its coords on the stack, but that might make things too easy
21:57:56 <ais523> maybe a 'distance from my IP to the enemy IP'; that would be interesting!
21:58:09 <ais523> you'd have to check at lots of different points in your own program
21:58:15 <ais523> encouraging people to spread about a bit
21:58:40 <ehird`> ais523: pushing coords to the stack would not be easy
21:58:45 <ehird`> well, maybe
21:59:00 <ais523> you just instantly write a @ where the opponent was, and repeat continuously
21:59:02 <ehird`> you could constantly do it, add one @ to x+1 and one @ to y+1
21:59:06 <ehird`> haha
21:59:10 <ehird`> we think alike
21:59:22 <ehird`> ok, distance from my ip would work but then you'd need to get your own ip
21:59:30 <ais523> you know where it is
21:59:33 <ehird`> and your radar idea is kind of crappy -- it would be mostly shooting in the dark
21:59:41 <ais523> yes, I agree
22:00:01 <ais523> maybe you find out where the enemy IP was x cycles ago, where x is some positive number
22:00:11 <ehird`> ais523: if you do '1', then you can just do the same trick, but add 2
22:00:22 <ais523> you don't get to choose x
22:00:27 <ais523> it's, say, 10
22:00:47 <ais523> so programs in tight loops, or that twist and turn, avoid that strategy
22:01:04 <ais523> but tight loops are risky because you can aim at where the opponent was in the hope they'll go back to that square again
22:03:59 <ehird`> ais523: hmm
22:04:02 <ehird`> i can't decide which would be the best
22:04:07 <ehird`> i mean -- how does fukyourbrane avoid this?
22:04:27 <ais523> it has a 'loop until my data pointer is the same as the enemy's instruction pointer' loop
22:04:35 <ais523> which works better in a 1D language than a 2D language
22:05:36 <ehird`> ais523: yeah.
22:05:36 <ehird`> oh, i know!
22:05:36 <ehird`> how about a
22:05:36 <ehird`> 'make my ip the enemy's ip'
22:05:36 <ehird`> XD
22:05:36 <ehird`> you'd have to be 're-entrant'... haha
22:05:45 <ais523> that seems a bit too random for me
22:05:55 <ehird`> indeed.
22:06:13 <ais523> maybe you could place some sort of 'warning beacon' in your own code
22:06:14 <ehird`> on another note, zzo38 is not very good at designing web apps; http://zzo38computer.cjb.net/chrono/zzo38/mainpage is basically inscrutable
22:07:04 <ehird`> http://zzo38computer.cjb.net/chrono/_show_source yikes
22:07:06 <ais523> I understand it
22:07:10 <ais523> the UI, that is
22:07:55 <ehird`> it's very awkward
22:08:18 <ehird`> reminds me of an old bbs system, actually.
22:08:27 <lament> yeah.
22:08:32 <ais523> hmm... is it usual to use changequote(#,|) in m4?
22:08:39 <ais523> that's what I'm doing right now
22:08:40 <lament> it woludn't be so bad without the crossed-out buttons.
22:09:06 <ehird`> zzo38's ideas are quite odd in general, actually
22:09:08 <ehird`> second post on this blog:
22:09:09 <ehird`> 'I invented a Sub-Wikipedia in ScribbleWiki. You can use it for anything, but mostly for things that isn't on Wikipedia because some administrators deleted it or whatever, maybe because there aren't enough verifiable sources, or maybe for some other reason.'
22:09:13 <ehird`> read as:
22:09:17 <ais523> many people have had that idea
22:09:19 <ehird`> 'trashcan of non-notable crap wiki'
22:09:29 * ais523 is a Wikipedia administrator
22:09:37 <ehird`> ais523: yes, i know you're a wp admin :P
22:09:41 <ais523> so I know more about the problem than most
22:09:47 <ehird`> before even coming to #esoteric i kept seeing you dotted around the talk pages, actually
22:10:09 -!- cherez has joined.
22:10:17 -!- cherez has left (?).
22:10:23 -!- cherez has joined.
22:10:25 <ehird`> http://subwikipedia.scribblewiki.com/Special:Recentchanges active thing.
22:11:04 <ais523> http://en.wikipedia.org/wiki/Special:Search?go=Go&search=Nine on that wiki is pretty interesting
22:11:18 <ais523> no idea if it's meant to be true or humorous or both, though
22:11:23 <ehird`> it's .. barely interesting
22:11:24 <ehird`> :P
22:11:34 <ais523> interesting in the attitude it shows, anyway
22:11:46 <ais523> you can probably tell a lot about people from random wiki scribbles
22:12:03 <ais523> just like the way I tried to implement a cyclic tag system in MediaWiki once
22:12:21 <ehird`> http://zzo38computer.cjb.net/chrono/zzo38/1198908097
22:12:51 <lament> wow, he's a nut
22:12:58 <ehird`> lament: quite
22:13:03 <ehird`> but his esolangs are good
22:13:08 <ehird`> 'It's sometimes claimed that prayer doesn't work, it doesn't increase the probability of getting whatever you prayed for. I think probabilities are not calculated like that. I also think that assigning material efficacy to prayer is like greed, and greed should be avoided.'
22:13:14 <ehird`> i don't see how else you should calculate probabilities
22:13:17 <lament> a typical, run-of-the-mill math cook
22:13:21 <ehird`> .. he's probably in here right now, being offended
22:13:27 <ehird`> lament: he did make TwoDucks..
22:13:34 -!- bsmntbombdood has joined.
22:13:46 <ehird`> And, well, all of these: http://esolangs.org/wiki/User:Zzo38
22:13:49 <ais523> TwoDucks is great
22:14:15 <ehird`> does anyone know if english is his first language?
22:14:21 <ehird`> i hope not but i can't find any source of him using another
22:14:25 <ais523> wow, I knew zzo38 had made a lot, but didn't realise it was quite that many
22:15:47 <ehird`> you know what would be cool?
22:15:48 <ehird`> a gopher cgi.
22:15:48 <ehird`> imagine a gopher blog
22:15:48 <ais523> even better, make it stateful
22:15:48 <ehird`> or a gopher bbs
22:15:48 <ehird`> yes
22:15:52 <ehird`> ...
22:15:55 <ehird`> continuation-based gopher server.
22:16:01 <ais523> so that if only one user uses it at a time, you can actually send instructions just by following a certain pattern of links
22:16:01 <ehird`> THAT WOULD BE SO AWESOME
22:16:18 <ais523> continuation-based websites would be interesting enough by themselves
22:16:23 <ais523> anyway, I'm being thrown out again...
22:16:30 -!- ais523 has quit ("about to lose my Internet connection").
22:16:33 <ehird`> ais523: continuation based websites have already been done...
22:16:36 <ehird`> ... crap
22:16:54 <ehird`> ok
22:17:00 <ehird`> oklopol: interested in Be Your Funge?
22:17:06 <ehird`> (Fuk yor brane for befunge-93)
22:20:28 <oklopol> the name is awesome at least
22:20:31 <ehird`> oklopol: yes
22:20:32 <ehird`> well
22:20:36 <oklopol> i never tried fukyorbrane
22:20:42 <ehird`> oklopol: do you know wo it works?
22:20:44 <bsmntbombdood> hi oklopol
22:20:52 <oklopol> i've read the spec
22:20:55 <ehird`> ok
22:21:03 <oklopol> so, i vaguely know how it works.
22:21:06 -!- Tritonio_ has quit (Remote closed the connection).
22:21:06 <oklopol> bsmntbombdood: hi :)
22:21:07 <ehird`> so, oklopol -- i have instructions like 'p' and 'g' but on the opponents program
22:21:16 <ehird`> now, how should a program determine where the enemy's ip is?
22:21:22 <ehird`> just getting it as a value makes a perfect program too easy
22:21:26 -!- Tritonio_ has joined.
22:21:35 <ehird`> bsmntbombdood can answer too
22:21:36 <ehird`> :-P
22:21:41 <lament> hm
22:21:43 <lament> http://www.esolangs.org/wiki/Musical-X
22:21:49 <bsmntbombdood> i have no idea what you are talking about
22:21:56 <oklopol> ehird`: does that have to be easily determined
22:22:03 <lament> that language looks a lot like Prelude
22:22:21 <ehird`> oklopol: well, otherwise how are you going to insert a bomb at a good plcae
22:22:37 <oklopol> lament: a bit too syntax-oriented imo
22:22:53 <oklopol> well, tbh i'm mostly just assuming that.
22:23:59 <ehird`> what's the best brainfuck way to get 64?
22:24:00 <oklopol> seems i guessed right
22:24:11 <ehird`> i imagine the same will be true for befunge
22:24:36 <oklopol> hmm
22:24:45 <oklopol> !bf_txtget @
22:24:47 <oklopol> ...
22:24:50 <oklopol> !bf_txtgen @
22:25:00 <oklopol> !bf_textgen @
22:25:10 <oklopol> it's impossible to remember whether there's an e.
22:25:29 <oklopol> oh, right
22:25:36 <oklopol> the ip doesn't really leave any trace
22:25:45 <slereah_> !help
22:25:54 <slereah_> !help me damn robot!
22:25:57 <ehird`> there is no e
22:26:00 <ehird`> txtgen
22:26:03 <oklopol> perhaps you can observe the stack and deduce what instructions they've run!
22:26:30 -!- jix has quit ("CommandQ").
22:26:39 <ehird`> aha
22:26:39 <ehird`> 8*8
22:26:46 <ehird`> oklopol: you have your own stack
22:26:54 <oklopol> yeah..
22:26:57 <oklopol> aaand?
22:27:05 <ehird`> 00::88*pv
22:27:05 <ehird`> ^ <
22:27:07 <oklopol> i meant the stack of the other guy's
22:27:14 <ehird`> ^^ that's the simplest BeYourFunge program
22:27:15 <ehird`> err
22:27:15 <ehird`> wait
22:27:44 <oklopol> wuzzit do
22:27:45 <ehird`> 00::88*p1+\1+\v
22:27:45 <ehird`> ^ <
22:27:57 <ehird`> oklopol: puts @ at 0,0 then at 1,1 .. oh, wait
22:28:03 <ehird`> i want 0,1,0,2,0,3...
22:28:04 <ehird`> damn
22:28:05 <ehird`> this will be hard
22:28:06 <ehird`> :)
22:28:13 <ehird`> @ = end program = LOSE
22:28:38 <oklopol> hmm...
22:28:41 <oklopol> hard?
22:28:53 <oklopol> how come, isn't befunge fairly simple
22:29:15 <oklopol> i'll glance at the spec
22:29:44 <ehird`> oklopol: because
22:29:47 <ehird`> i need to do this
22:29:48 <ehird`> 0,0
22:29:49 <ehird`> 0,1
22:29:50 <ehird`> 0,2
22:29:50 <ehird`> ...
22:29:52 <ehird`> 0,79
22:29:54 <ehird`> 1,0
22:29:55 <ehird`> 1,1
22:29:57 <ehird`> 1,2
22:29:57 <ehird`> ...
22:29:58 <ehird`> 1,79
22:29:59 <ehird`> 2,0
22:30:01 <oklopol> the idea is you can modify the other guy's code, and executing @ makes you lose?
22:30:01 <ehird`> etc
22:30:03 <ehird`> up to 24
22:30:07 <ehird`> oklopol: yes
22:30:16 <ehird`> and you can find the other guy's instruction pointer but jumping through hoops
22:30:23 <oklopol> ehird`: why not go diagonally?
22:30:31 <ehird`> oklopol: because that isn't brute-force
22:30:56 <oklopol> guess that might be a bit more difficult.
22:31:02 <oklopol> well... not really
22:31:15 <oklopol> at least shouldn't be much longer
22:31:41 <oklopol> was just thinking you may wanna extend to infinite grids
22:31:44 <oklopol> or not
22:32:04 <ehird`> no
22:32:10 <ehird`> then you can run off at great speed
22:32:12 <ehird`> at the start
22:34:11 <oklopol> true.
22:46:41 <ehird`> oh my god, zzo's english is atrocious http://zzo38computer.cjb.net/wmskins/Command-Skin.txt
22:48:54 <oklopol> ehird`: must be intentional
22:49:02 <ehird`> i hope not
22:49:15 <oklopol> ..?
22:49:27 <oklopol> why's that
23:00:43 -!- Corun has joined.
←2008-02-18 2008-02-19 2008-02-20→ ↑2008 ↑all