00:00:23 <ihope> ~exec self.raw("QUIT")
00:00:23 -!- bsmntbombdood has quit.
00:00:58 -!- bsmnt_bot has changed nick to bsmnt_bot_.
00:01:03 -!- bsmnt_bot has joined.
00:01:35 -!- bsmnt_bot has changed nick to bsmntbombdood.
00:01:38 <ehird`> ~exec self.raw("PRIVMSG :#esoteric No, I am sparctacus!")
00:01:46 -!- bsmnt_bot_ has changed nick to bsmnt_bot.
00:01:52 <ehird`> ~exec self.raw("PRIVMSG #esoteric :No, I am sparctacus!")
00:02:04 * ehird` wonders if you did that manually
00:02:13 <ihope> Did what manually?
00:02:29 <ihope> ~exec self.raw("PRIVMSG #esoteric :%s" + 193751234*123984726)
00:02:29 <bsmntbombdood> TypeError: cannot concatenate 'str' and 'long' objects
00:02:37 <ihope> ~exec self.raw("PRIVMSG #esoteric :%s" % 193751234*123984726)
00:02:47 <ihope> ~exec self.raw("PRIVMSG #esoteric :%s" % (193751234*123984726))
00:02:49 <ehird`> ~exec self.raw("PRIVMSG #esoteric :" + str(193751234*123984726))
00:02:53 <ihope> Can't quite do that manually :-P
00:03:12 <ehird`> maybe he is very good at mental arithmetic
00:03:24 <ihope> ~exec self.raw("PRIVMSG #esoteric :" * 23)
00:03:25 <bsmntbombdood> PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :PRIVMSG #esoteric :
00:04:00 <bsmnt_bot> ~exec self.raw("privmsg #esoteric :ihope" * 69)
00:04:01 -!- bsmntbombdood has quit (Excess Flood).
00:04:19 -!- bsmnt_bot has changed nick to bsmntbombdood.
00:04:20 <ehird`> i know the perfect test!
00:04:24 -!- bsmnt_bot has joined.
00:04:36 -!- bsmnt_bot has changed nick to bsmntbombdood_.
00:05:09 <ehird`> ~exec self.raw("PRIVMSG #esoteric :%i" % (math.pi))
00:05:15 <ehird`> ~exec self.raw("PRIVMSG #esoteric :%d" % (math.pi))
00:05:23 <ehird`> ~exec self.raw("PRIVMSG #esoteric :%r" % (math.pi))
00:05:31 <ehird`> very good at memorizing pi i see
00:05:40 <jix> i know more digits
00:05:46 <ihope> Nah, mental calculation.
00:06:11 <jix> 3.14159265358979323846264 i know so many but i knew more once...
00:06:14 <jix> but forgot some of them
00:06:30 <ihope> ~exec self.raw("PRIVMSG #esoteric :%r" % (math.e))
00:06:34 <ehird`> ~exec self.raw("PRIVMSG #esoteric :%r" % math.exp(math.pi))
00:06:43 <ehird`> he is very good at mental calculation.
00:06:47 <ehird`> ~exec self.raw("PRIVMSG #esoteric :%r" % math.sqrt(math.pi))
00:06:58 <ihope> Pff, how do you know those are right?
00:07:06 <ihope> ~exec self.raw("PRIVMSG #esoteric :%r" % (math.exp(math.pi)^j))
00:07:10 <ihope> ~exec self.raw("PRIVMSG #esoteric :%r" % (math.exp(math.pi)^J))
00:07:16 <ihope> ~exec self.raw("PRIVMSG #esoteric :%r" % (math.exp(math.pi)^1j))
00:07:21 <bsmntbombdood_> TypeError: unsupported operand type(s) for ^: 'float' and 'complex'
00:07:43 <bsmntbombdood_> OSError: [Errno 13] Permission denied: '/bot/keep_running'
00:07:51 <ihope> ~exec sys.stdout(1j^1j)
00:07:52 <bsmntbombdood_> TypeError: unsupported operand type(s) for ^: 'complex' and 'complex'
00:07:53 <jix> ehird`: the imaginary unit is i not j
00:08:05 <ehird`> ~exec self.raw("PRIVMSG #esoteric :%r" % math.hypot(math.exp(math.pi)))
00:08:06 <bsmntbombdood_> TypeError: hypot() takes exactly 2 arguments (1 given)
00:08:13 <ehird`> jix: also in engineering it's i
00:08:17 <ehird`> ~exec self.raw("PRIVMSG #esoteric :%r" % math.hypot(math.exp(math.pi), 1j))
00:08:18 <jix> but j and k are used too for quaternions
00:08:25 <ehird`> ~exec self.raw("PRIVMSG #esoteric :%r" % math.hypot(math.exp(math.pi), abs(1j)))
00:08:38 <ehird`> bsmntbombdood_: you are exceedingly gifted
00:08:43 <ihope> Are you sure quaternions aren't symmetrical
00:08:46 <ehird`> may i suggest you join MENSA rather than posing as a bot?
00:08:52 <ihope> ~exec sys.stdout("Thank you!")
00:09:10 <ehird`> ~exec self.raw("PRIVMSG #esoteric :%r" % math.sqrt(1j))
00:09:15 <ehird`> ~exec self.raw("PRIVMSG #esoteric :%r" % math.sqrt(abs(1j)))
00:09:19 <ehird`> ~exec self.raw("PRIVMSG #esoteric :%r" % abs(1j))
00:09:21 <jix> ihope: sym what?
00:09:21 <ihope> ~exec sys.stdout("Do they have an IRC interface? I'm afraid I'm connected directly to IRC.")
00:09:22 <bsmntbombdood_> Do they have an IRC interface? I'm afraid I'm connected directly to IRC.
00:09:39 <ehird`> ~exec self.raw("PRIVMSG #esoteric :%r" % math.tan(math.exp(math.pi)*1j))
00:09:43 <ehird`> ~exec self.raw("PRIVMSG #esoteric :%r" % math.tan(math.exp(math.pi)))
00:10:06 <lament> do you honestly expect python stdlib functions to work on complex numbers
00:10:13 <ihope> ~exec sys.stdout(math.e ^ math.pi - math.pi)
00:10:13 <bsmntbombdood_> TypeError: unsupported operand type(s) for ^: 'float' and 'float'
00:10:23 <ihope> ~exec sys.stdout(math.e ** math.pi - math.pi)
00:10:26 <jix> isn't ^ xor
00:10:38 <ehird`> ~exec sys.stdout(1j ** 42j)
00:10:43 -!- kwertii has joined.
00:10:46 <ehird`> ~exec sys.stdout(1j ** 42j)[0]
00:10:49 <ihope> ~exec self.raw("PRIVMSG #esoteric :%r" % (math.exp(math.pi)**1j))
00:11:03 <ehird`> ~exec sys.stdout("%r" % (1j ** 42j))
00:11:09 <ehird`> amazing mental calculation
00:11:38 -!- bsmntbombdood_ has quit.
00:11:39 <ehird`> ~exec self.nick = "lookhowfasticantypetochangenicks"
00:12:06 <ihope> Actually, bsmntbombdood_ merely has an elaborate collection of macros.
00:12:31 <bsmntbombdood> a macro to give ~exec ... to a python interpreter?
00:12:49 <ihope> A Python interpreter is an elaborate collection of macros.
00:17:12 <bsmntbombdood> i wonder how hard it would be to write a python interpreter
00:22:07 <ehird`> people have done it before
00:25:27 <ihope> Plenty easy to write a Python interpreter in Python.
00:25:55 <ihope> Not so much to write it in a language without such a specialized feature.
00:26:39 <bsmntbombdood> as easy as it is to write a scheme interpreter in scheme?
00:27:27 <ehird`> since the exprstatement difference
00:27:51 <lament> not all things which you don't understand are stupid.
00:28:07 <ehird`> you've used that one before when i've mentioned the seperation being stupid
00:28:47 <lament> well, i see you still don't understand it, so my point stands :)
00:33:47 <ihope> The only things that are stupid are those that *I* don't understand.
00:34:28 <ihope> Therefore, all languages that do not follow Haskell philosophy are stupid.
00:35:52 -!- ehird` has changed nick to ehird`sleep.
00:36:56 <jix> no it's me who is stupid!
00:37:06 <jix> and stopid
00:43:14 -!- jix has quit ("CommandQ").
00:44:06 -!- cherez has quit ("Leaving.").
00:46:42 <Tritonio> bsmntbombdood, what that new brainfuck variation that I saw on the esolang forum? with the two new commands: & % ?
00:47:14 <Tritonio> i didn't even got what the continuations is.
00:49:59 -!- oerjan has joined.
00:50:01 <Tritonio> has it got to do with calling blocks of brainfuck code that return and argument? or am I completely wrong?
00:50:31 <bsmntbombdood> you won't understand it unless you understand continuations
00:51:02 <ihope> I'm not sure I quite understand it.
00:51:21 <ihope> I probably do, but...
00:51:30 <Tritonio> http://en.wikipedia.org/wiki/Continuation
00:51:47 <ihope> Ah, yes, I get it.
00:53:19 <bsmntbombdood> i of course thought continuations were much cooler
00:53:47 <Tritonio> what's a continuation? a block of code?
00:54:06 <Tritonio> wiki says it is the rest of the code you have to execute to finish a calculation
00:54:27 <Tritonio> so you are going to have many code tapes?
00:55:40 <bsmntbombdood> you have a sparse array, that stores (tape, code pointer) pairs
00:57:01 <bsmntbombdood> ok, & stores the current tape and code pointer in that sparse array, the index being the value of the current cell, then keeps executing normally
00:58:16 <Tritonio> and what about: "...and change the current cell to 0 if we come from & or the argument if we come from %."
00:59:20 <bsmntbombdood> there has to be a way to distinguish between normall execution of &, and jumping there with a %
01:00:15 <Tritonio> and % is like jumping to that label.
01:00:46 <bsmntbombdood> % replaces the stack and code pointer with the pair indexed by the current cell, and puts the value of the next cell in the the cell where the & was
01:00:58 <bsmntbombdood> it's more than goto, because the environment is replaced
01:01:15 <Tritonio> and you also can pass a value while jumping.
01:02:12 <bsmntbombdood> & is like (call/cc (lambda (x) (set! <value of current cell> x) (set! current-cell 0)))
01:02:25 <Tritonio> ok i think I got it now. I've never heard of continuations...
01:02:36 <bsmntbombdood> % is like (<value of current cell> <value of next cell>)
01:03:39 <oerjan> Tritonio: check out the Io language (not the object-oriented one)
01:04:08 <Tritonio> i thought there was a brainfuck implementation with support for "subroutines"
01:04:25 <oerjan> it's a language where nearly everything is a continuation, instead of functions.
01:04:55 <oerjan> so you cannot return from a function/continuation, you have to call another continuation from it instead
01:04:57 <Tritonio> oerjan, not the OO one? I found the OO.
01:06:26 <oerjan> documentation may be a bit hard to find
01:07:21 <oerjan> http://www.guldheden.com/~sandin/amalthea.html
01:07:54 <bsmntbombdood> defining a function is like: "load desired function number"&[ "function code" [->+<]%]
01:10:27 <oerjan> in case you don't notice the link in there, http://www.nondot.org/sabre/Mirrored/AdvProgLangDesign/ is where the language is described
01:16:10 <oerjan> it's hard to browse in separate files, you want http://www.nondot.org/sabre/Mirrored/AdvProgLangDesign/finkel02.pdf, page 43
01:20:48 <Tritonio> strange language. and there was no implementation before amalthea?
01:21:06 <oerjan> there probably was but it was lost?
01:24:37 <oerjan> btw the original paper exists but requires a subscription: http://portal.acm.org/citation.cfm?id=70931.70934
01:24:59 <Tritonio> http://en.wikipedia.org/wiki/Io_%28programming_language%29
01:25:22 <oerjan> for Raph Levien's continuation language Io
01:27:04 -!- Sgeo has joined.
01:30:27 <Tritonio> Lua is wonderful. I wonder if python is better.
01:49:24 -!- kwertii has quit.
02:21:42 <puzzlet> can you find a counter-example for perl's grammar is not context-free?
02:22:43 <ihope> One that shows that it is not context-free?
02:29:04 <Sukoshi`> (He's trying to get suckers to think that Clean isn't an esoteric language in some other channel.)
02:29:37 <oerjan> non-deterministic pushdown automata
02:32:37 <bsmntbombdood> is there a simple way of compiling to them like there is for regular grammars?
02:33:33 <ihope> You mean like there are regular expressions?
02:35:02 <oerjan> i'd say compiling to one is fairly trivial but not practical - these are non-deterministic machines
02:35:45 <oerjan> so they turn into exponential-time search if you use them naively
02:35:53 <bsmntbombdood> nondeterministic finite state machines are easy to interpret
02:36:54 <ihope> Now, anybody want some absurdity? http://pya.cc/pyaimg/pimg.php?imgid=29546
02:37:15 <oerjan> there are more efficient ways to parse CTF grammars, that are O(n^3) in the worst case
02:38:08 <oerjan> some methods like the Earley parser automatically gives O(n) or O(n^2) if your grammar happens to be LR(k) or unambiguous
03:24:43 -!- GreaseMonkey has joined.
03:37:41 -!- crusoe_ has joined.
03:37:51 -!- crusoe_ has left (?).
04:02:52 -!- RodgerTheGreat has quit.
04:22:31 <bsmntbombdood> i sort of understand making an earley parser that just says accept/not accept, but how can you make a parse tree?
04:27:41 <oerjan> i suppose at each point where you are finishing a token, you collect the sub-tokens it consists of
04:28:47 <oerjan> otoh if the grammar is ambiguous you get a list of possible sub-tokens (everything with positions)
04:49:09 -!- ihope has quit (Read error: 110 (Connection timed out)).
04:57:21 -!- Svenstaro has joined.
04:58:33 -!- kwertii has joined.
04:58:56 <pikhq> Hmm. An esoteric emacsite.
05:03:40 -!- Sgeo has quit ("Ex-Chat").
05:21:02 -!- kwertii has quit (Connection timed out).
05:24:37 -!- Cusoon959 has joined.
05:26:17 * oerjan checks the topic for whether IRP is currently allowed.
05:26:48 <pikhq> INTERPRETER ERROR: Don't wanna.
05:29:35 <Cusoon959> oerjan: please say "You are welcome"
05:30:37 <oerjan> LOCKING ERROR: Duplicate command.
05:30:45 <oerjan> i was already considering it.
05:30:53 <pikhq> Please say this sentence.
05:31:48 <pikhq> "Please say what precedes this sentence, in quote marks, followed by the contents of this sentence." Please say what precedes this sentence, in quote marks, followed by the contents of this sentence.
05:32:53 <oerjan> ""what precedes this sentence"" "the contents of this sentence"
05:36:38 -!- GreaseMonkey has quit ("Man who stand in frond of car is tired. Man who stand behind car is exhausted.").
05:36:41 <oerjan> ERROR: quine is not a "quine"
05:37:29 <Cusoon959> please transfer $500 from your account into min
05:38:55 <pikhq> ERROR: Your parser sucks.
05:39:13 <pikhq> Stupid Norwegians named Oerjan.
05:39:26 <pikhq> You're all. . . Norwegian.
05:41:40 <pikhq> Disagree must I parser thinks, sucks I.
06:09:49 -!- bsmntbombdood has set topic: Esoteric programming language discussion | FORUM AND WIKI: esolangs.org | CHANNEL LOGS: http://ircbrowse.com/cdates.html?channel=esoteric.
06:20:07 <puzzlet> http://mathworld.wolfram.com/TuppersSelf-ReferentialFormula.html
06:25:43 <Cusoon959> np: The Faint - Take Me To The Hospital
06:26:31 <bsmntbombdood> that's like calling (write (read-file "foo")), with "(write (read-file "foo"))" in "foo" a quine
06:38:39 -!- oerjan has quit ("Lost terminal").
07:04:08 -!- Svenstaro has quit (Read error: 104 (Connection reset by peer)).
07:09:56 -!- Svenstaro has joined.
07:14:26 -!- kwertii has joined.
07:26:42 -!- oklopol has quit (Read error: 110 (Connection timed out)).
07:27:34 -!- ololobot has quit (Read error: 110 (Connection timed out)).
07:27:48 -!- oklokok has quit (Read error: 110 (Connection timed out)).
07:36:24 -!- oklopol has joined.
07:43:49 -!- oklokok has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
09:07:12 -!- ehird`sleep has quit.
09:11:32 -!- RedDak has joined.
10:01:35 -!- kwertii has quit.
10:28:09 -!- jix has joined.
11:12:57 -!- Svenstaro has quit.
11:13:00 -!- RedDak has quit (Read error: 113 (No route to host)).
12:03:17 -!- ehird`sleep has joined.
12:03:25 -!- ehird`sleep has quit (Client Quit).
12:20:35 <Tritonio> has anyone made a befunge interpreter in brainfuck?
12:27:58 -!- Tritonio has quit (Remote closed the connection).
12:31:49 <oklokok> yeah, that departure was a slap in the face
12:36:52 -!- Tritonio has joined.
13:26:14 -!- RodgerTheGreat has joined.
13:35:37 -!- ehird` has joined.
13:37:43 -!- jix has quit (Nick collision from services.).
13:37:57 -!- jix has joined.
14:25:49 -!- ihope has joined.
14:58:06 -!- oerjan has joined.
15:58:20 -!- Tritonio has quit (Read error: 104 (Connection reset by peer)).
16:00:20 -!- poiuy_qwert has joined.
16:45:56 -!- sebbu has joined.
16:52:16 -!- devnonsense has joined.
17:47:33 -!- devnonsense has quit (Remote closed the connection).
18:49:58 -!- Tritonio has joined.
19:24:25 -!- poiuy_qwert has quit.
20:20:00 -!- kwertii has joined.
21:17:26 <Sukoshi`> ``Can I have a storm sewer map?'' ``Sure'' ``Yay''
21:18:02 <Sukoshi`> Yeah. You probably didn't say yay :P
21:18:05 <RodgerTheGreat> bonus points for 3d panoramic pictures or taking them in a sequence so that we can assemble them into our own myst-esque game
21:18:14 <bsmntbombdood> ``Can I have a storm sewer map?'' ``Fuck you, you're just a kid''
21:19:31 <Sukoshi`> Isn't it public information though?
21:19:57 <Sukoshi`> Or at least, threatened to sue.
21:21:16 <Sukoshi`> To deny a person the right to inform themselves about their public facilities that they pay for through their money is a hefty crime indeed.
21:22:05 <Sukoshi`> More likely than not though, he'd just give you the map and settle it out of court.
21:22:51 <bsmntbombdood> they are allowed to charge for the price of the materials
21:23:04 <oklokok> it's fun paying for no reason.
21:23:06 <Sukoshi`> It costs $5 to print on a piece of cheap paper and the ink involved?
21:23:20 <Sukoshi`> At most I can see it costing $2.
21:23:22 <oklokok> i'd gladly pay $5 for something free
21:24:02 <oklokok> maps are expensive, and you can't just copy them just like that
21:24:14 <oklokok> in finland that is... i know nothing about america of course
21:24:56 <RodgerTheGreat> oklokok: don't you know? Every american home is equipped with an 8 foot drum printer
21:25:20 <Sukoshi`> oklokok: If the maps are stored in an image though, you can copy them just like that.
21:25:27 <oklokok> i meant, they can't legally be copied
21:25:31 <Sukoshi`> The awesome power of modern technology, huh? :P
21:25:42 <Sukoshi`> The government doesen't have its own map copies?
21:25:55 <oklokok> well i guess if they are public property, you can just copy them just like that.
21:26:00 <RodgerTheGreat> maybe the idea is that only the government can copy them
21:26:17 <RodgerTheGreat> which could be good, simply for purposes of keeping rough track of who has the information
21:26:55 <oklokok> anyway, someone's gotta pay the map drawer ppl, the fact the map is public doesn't mean a commoner buying it doesn't have to pay his share to them.
21:27:48 <bsmntbombdood> oklokok: the idea is that the map drawer is payed with taxes
21:28:23 <RodgerTheGreat> another thing is, charging even a small fee could help reduce the number of people requesting maps for no reason
21:28:49 <oklokok> but i've been wrong from the beginning.
21:28:52 <RodgerTheGreat> you don't want some yahoo taking a copy of every map in the records department just because he can
21:30:10 <RodgerTheGreat> shit, I'd pay $5 to use something like that as a wall poster
21:39:47 <oerjan> bsmntbombdood: what about the roof?
21:41:10 <bsmntbombdood> you can't really look at a map on the ceiling though
21:42:01 <oklokok> you can look at it while you sleep
21:48:23 -!- jix has quit ("CommandQ").
22:10:01 -!- sebbu has quit ("@+").
22:18:34 -!- oerjan has quit ("leaving").
23:33:42 -!- Tritonio has quit ("Bye...").
23:35:21 -!- Tritonio has joined.