00:08:02 * pikhq contemplates making an IRC bot
00:10:28 <RodgerTheGreat> I can link you to a Java lib that could let you finish a BF bot in about half an hour
00:11:11 <pikhq> I'm trying to make one in PEBBLE.
00:11:52 <pikhq> And I'll probably give up soon.
00:12:17 <pikhq> I'll just make a PEBBLE bot, then.
00:12:38 <pikhq> Somehow, I've lost sense of what I want to actually *do*.
00:14:04 <ehird`> pikhq: Write a bot, in PEBBLE, which can interpret PEBBLE via either brainfuck or c.
00:14:44 -!- zbrown has joined.
00:15:22 <pikhq> ehird`: Only if you implement PEBBLE in PEBBLE.
00:15:35 <ehird`> I will! ... just later
00:15:46 <ehird`> pikhq: Actually, yeah. Don't use PSOX or anything, just netcat!
00:15:57 <ehird`> ..wow, that means writing a brainfuck interp in PEBBLE
00:17:28 <ehird`> pikhq: seriously, you want a PEBBLE 2 which does automatic allocation of temporary variables.
00:19:21 <ehird`> http://pc11.2ch.net/test/read.cgi/tech/1173057314/ heh look, my submission is mentioned in the last few posts.
00:19:25 <ehird`> cute, if only i could read japanese
00:28:34 <pikhq> If only I could read *complex* Japanese.
00:29:54 * pikhq begins the PEBBLE 2 stuff
00:30:00 <pikhq> Now that I have time to actually think it over!
00:35:35 <pikhq> I'm thinking one of the things PEBBLE 2 will have is a more useful preprocessing stage.
00:35:55 <RodgerTheGreat> I present new doodles: http://nonlogic.org/dump/images/1202171064-dud1.png, http://nonlogic.org/dump/images/1202171075-dud2.png
00:36:56 <pikhq> Among other things, I'm thinking about axing the add and addvar bit. . .
00:37:28 <pikhq> There will be a += macro, which will act appropriately based upon whether one of its arguments is a variable or a number.
00:39:02 <ehird`> pikhq: omg, you'll have to implement garbage collection of temp vars
00:39:22 <RodgerTheGreat> are you thinking about building some kind of system for configuring a build to target different BF interpreters?
00:39:38 <ehird`> that makes even the c backend non-trivial!
00:39:46 <RodgerTheGreat> Like, the ability to tell the compiler things like wrapping and EOF behavior?
00:40:14 <pikhq> RodgerTheGreat: That's part of *why* I plan on having a better preprocessor.
00:40:36 <pikhq> So, you can do "IF {WRAPPING} {wrapping code} else {non-wrapping code}"
00:40:47 <ehird`> pikhq: shouldn't that be automatic and abstracted away
00:41:03 <pikhq> ehird`: That will be used for implementation of the stdlib macros.
00:41:15 <pikhq> Hopefully, I'll have all that junk abstracted away.
00:41:16 <ehird`> also, why if {wrapping}
00:41:29 <pikhq> The two would be equivalent.
00:42:13 <ehird`> pikhq: could you please write your own parser? :P
00:42:21 <ehird`> writing pebble in tcl syntax is unbearable to say the least
00:42:25 <ehird`> (my vote: s-exp! s-exp!)
00:43:05 <pikhq> Grr. You *have* to say that just as I'm thinking "let's just do proper, full-on Tcl syntax, rather than my abused bits of it".
00:43:48 <RodgerTheGreat> can you make something similar to assert() for debugging?
00:44:11 <RodgerTheGreat> even in a limited form, you could save BF coders a load of sanity
00:44:11 <ehird`> RodgerTheGreat: I can see pikhq is going to have a field day with brainfuck text generation algorithms..
00:44:34 <pikhq> Hmm. There's a thought.
00:44:38 <RodgerTheGreat> I'm looking forward to seeing what he can come up with
00:44:45 <ehird`> pikhq: What? Build text generation in to it? If so, yes.
00:45:00 <pikhq> ehird`: PEBBLE 1 has (limited) text generation already.
00:45:07 <ehird`> Yeah, but not awesome :P
00:45:08 <pikhq> To not have that much would make PEBBLE 2 a *downgrade*.
00:45:13 <ehird`> You should be able to do:
00:45:26 <ehird`> yes -- you must implement arrays!
00:45:36 <RodgerTheGreat> I'd do something like "assert cell = value [error message] " or "assert cells = 'several ascii representations' [error message]"
00:46:16 <RodgerTheGreat> if pikhq and calamari put their heads together I have no doubt the result would be incredible.
00:46:35 <ehird`> pikhq: I venture: PEBBLE2 should be totally self-hosted.
00:46:47 <ehird`> With some kind of crappy, limited tcl interpreter that you can use to compile itself.
00:46:57 <pikhq> In my current syntax, 'assert {$cell == value} "ERROR here"' or some such.
00:47:06 <pikhq> ehird`: Are you fucking insane?
00:47:13 <ehird`> pikhq: Yes. Why shouldn't I be?
00:47:15 <pikhq> I want to actually have an implementation, thanks.
00:47:26 <ehird`> You'd have one. The tcl one.
00:47:31 <ehird`> Which you could use to compile the pebble2 one. :<
00:47:48 <pikhq> If I make PEBBLE2 powerful enough, I *could* manage to do self-hosting.
00:48:03 <ehird`> Exactly! It would evolve around a REAL-WORLD PROBLEM: compiling an esoteric language.
00:48:42 <RodgerTheGreat> on one hand, some of the data structure implementations necessary would probably be excruciating, but on the other hand it would be pretty nifty
00:49:28 <pikhq> RodgerTheGreat: Given sane arrays, one could at least pull it off. ;)
00:49:34 <ehird`> RodgerTheGreat: So give it arrays and structures.
00:49:42 <ehird`> Then you just have to implement a compilation technique for them ;)
00:50:29 <RodgerTheGreat> hm. doing pointers would really suck, but heaps can be done in-place to create a non-pointer based map structure in an array
00:50:37 <ehird`> pikhq: But think how awesome an s-exp syntax would be:
00:52:27 <ehird`> pikhq: Actually, it would be very good for e.g. the macros.
00:52:40 <ehird`> Since macros are just compile-time procedures, a lot of pebble stuff would be trivial
00:52:49 <ehird`> And your preprocessor would be elegant, instead of just dumb replacement.
00:54:18 <pikhq> ehird`: You realise that I don't think functionally, right?
00:54:32 <ehird`> pikhq: s-expression syntax != functional.
00:55:16 <ehird`> pikhq: But macros like that are really elegant. Basically, whenever you see a call to one, in the compiler, you interpret it with the arguments as in the code (well, unevaluated of course). Whatever that returns is used instead of the macro call.
00:55:52 <ehird`> (defmacro thing (...) (if *wrapping* ...return wrapping code... ...return non-wrapping code...))
00:56:04 <pikhq> This is what I'm thinking of ATM: http://pastebin.ca/891941
00:56:24 <pikhq> Sorry for the Tcl syntax; it comes to mind easily.
00:57:09 <ehird`> Well yeah, but that'd be far more elegant with lisp-style macros
00:57:16 <ehird`> Although that is kind of similar
00:57:22 <ehird`> it just exposes some of the internal workings
00:58:02 <pikhq> Of course, that syntax would be a royal PITA to self-host.
00:58:43 <ehird`> The lisp syntax with those macros?
00:58:54 <ehird`> The lisp syntax wouldn't. :P
00:59:12 <ehird`> Since writing an s-expression parser is trivial, and walking one and doing stuff with it too
00:59:35 <pikhq> How would the string substitutions I have work in sexps?
00:59:50 <ehird`> pikhq: I'm not sure exactly what you mean.
01:00:03 <pikhq> "Invalid type for $out in __BRAINFUCK__+=. $out is [TYPE $out]; should be var."
01:00:07 <ehird`> Well, ERROR runs at compile-time right?
01:00:13 <pikhq> $out and [TYPE $out] are both substituted. . .
01:00:19 <ehird`> If so, you'd just make error a normal function, and make it take any arguments
01:00:52 <ehird`> (error "Invlaid type for " out "in brainfuck-+=. " out " is " (type-of out) "; should be var.")
01:00:57 <ehird`> Not the prettiest example, but you get the idea.
01:01:03 <ehird`> You could also implement a formatting langugae.
01:01:17 <ehird`> (format "Invalid type for ~ in brainfuck-+=. ..." a)
01:01:22 <pikhq> You are still not realising one thing. . .
01:01:28 <ehird`> well, maybe something like $~ if ~ is too common
01:01:40 <pikhq> A self-hosting PEBBLE. . .
01:01:48 <pikhq> And you want formatting languages in it. . .
01:01:54 <pikhq> Are you fucking mad?
01:02:09 <ehird`> pikhq: If you have enough high-level stuff in, then it should be ok. But I agree.
01:02:16 <ehird`> so use the regular error form.
01:02:27 <ehird`> And, if you must -- make it compiler-only.
01:03:07 <pikhq> -- evals to -= $out 1 which evals to __-= $out 1. . . Which is done in-compiler.
01:03:26 <ehird`> Like I said: lisp macros.
01:06:03 <ehird`> pikhq: Basically, the compiler is a bunch of functions.
01:06:09 <ehird`> 'defmacro' adds a new function to the compiler.
01:06:14 <ehird`> Whenever that function is seen as being invoked,
01:06:26 <ehird`> the function inside the compiler is called, and then the invokation is replaced with the result of that.
01:06:34 <ehird`> It's very, very simple, and doesn't require any preprocessor.
01:09:04 -!- Sgeo has joined.
01:09:28 <ehird`> pikhq: IMO the compiler would be simpler and more elegant, and so would be the code.
01:09:41 <lament> a poll on a philosophy blog:
01:09:45 <lament> "Will the most common response to this poll be 'No'?"
01:10:09 <ehird`> pikhq: Oh, maybe I should explain HOW you replace the invokation with the result of calling the compiler function (macro)
01:10:17 <ehird`> (defmacro foo () '(+ 2 2))
01:10:23 <ehird`> See? It just returns the code as a list.
01:13:19 -!- olsner has joined.
01:13:24 -!- sarehu has joined.
01:13:39 <olsner> must one join *every* channel? :P
01:14:03 <lament> It's the official one for esolangs.
01:17:02 -!- Corun has quit ("Bleh, Bunnies!").
01:17:19 -!- BMeph has joined.
01:20:54 <sarehu> why did i not join this earlier? :|
01:21:27 <lament> sarehu: are you aware of the esolangs wiki?
01:29:51 -!- calamari has joined.
01:33:29 -!- ehird` has quit (Read error: 113 (No route to host)).
01:37:11 <RodgerTheGreat> calamari: pikhq is working on a new version of Pebble. I encourage you to join forces with him and create something epic.
01:37:23 <pikhq> Mostly discussing planning ATM.
01:37:35 <pikhq> http://pastebin.ca/891941
02:01:08 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)).
02:35:38 -!- olsner has quit ("Leaving").
04:20:12 -!- chuck has quit (Read error: 104 (Connection reset by peer)).
04:21:50 -!- calamari has quit (Read error: 104 (Connection reset by peer)).
04:34:49 -!- oerjan has joined.
04:38:12 -!- calamari has joined.
04:49:03 -!- GreaseMonkey has joined.
04:50:36 <faxathisia> Does anyone have a BF program that prints the prime decomposition of a number?
04:57:08 -!- calamari has quit (calvino.freenode.net irc.freenode.net).
04:57:08 -!- sarehu has quit (calvino.freenode.net irc.freenode.net).
04:57:08 -!- faxathisia has quit (calvino.freenode.net irc.freenode.net).
04:57:09 -!- oklopol has quit (calvino.freenode.net irc.freenode.net).
04:57:09 -!- bsmntbombdood has quit (calvino.freenode.net irc.freenode.net).
04:57:09 -!- AnMaster has quit (calvino.freenode.net irc.freenode.net).
04:57:10 -!- GregorR has quit (calvino.freenode.net irc.freenode.net).
04:59:12 -!- sekhmet has quit (calvino.freenode.net irc.freenode.net).
05:00:48 -!- sekhmet has joined.
05:01:31 -!- oklopol has joined.
05:01:31 -!- calamari has joined.
05:01:31 -!- sarehu has joined.
05:01:31 -!- faxathisia has joined.
05:01:31 -!- bsmntbombdood has joined.
05:01:31 -!- AnMaster has joined.
05:01:31 -!- GregorR has joined.
05:32:57 -!- pikhq has quit ("leaving").
05:55:18 -!- oerjan has quit ("leaving").
05:57:01 -!- calamari has quit (Read error: 104 (Connection reset by peer)).
06:09:45 -!- olsner has joined.
06:18:01 -!- calamari has joined.
06:23:42 -!- calamari_ has joined.
06:23:42 -!- calamari has quit (Read error: 104 (Connection reset by peer)).
06:28:24 -!- calamari_ has quit (Remote closed the connection).
07:39:31 -!- BMeph has quit ("calls it a night").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:32:02 -!- cherez has quit (calvino.freenode.net irc.freenode.net).
08:32:03 -!- Deewiant has quit (calvino.freenode.net irc.freenode.net).
08:32:58 -!- faxathisia has quit (Remote closed the connection).
08:35:18 -!- sekhmet has quit (Remote closed the connection).
08:35:20 -!- sekhmet has joined.
08:36:41 -!- GreaseMonkey has quit ("Hi Im a qit msg virus. Pls rplce ur old qit msg wit tis 1 & hlp me tk ovr th wrld of IRC. and dlte ur files. thx.").
08:48:20 -!- olsner has quit ("Leaving").
08:51:11 -!- Deewiant has joined.
08:51:20 -!- cherez has joined.
09:56:56 -!- Corun has joined.
11:06:33 -!- sarehu has quit (Remote closed the connection).
11:06:43 -!- sarehu has joined.
11:26:44 -!- danopia has quit (Client Quit).
11:28:17 -!- danopia has joined.
11:48:52 -!- Corun has quit ("This computer has gone to sleep").
12:22:16 -!- sarehu has quit (Remote closed the connection).
12:22:32 -!- sarehu has joined.
12:56:52 -!- sebbu has joined.
13:06:52 -!- helios24 has joined.
14:28:11 -!- jix has joined.
16:12:31 -!- timotiis has joined.
16:27:16 -!- Hiato has joined.
16:33:34 -!- sarehu has quit (Remote closed the connection).
16:33:53 -!- sarehu has joined.
16:46:02 -!- oerjan has joined.
17:02:15 -!- Corun has joined.
17:02:43 -!- Hiato has quit (Read error: 110 (Connection timed out)).
17:07:22 -!- Corun has quit ("This computer has gone to sleep").
17:25:30 -!- Hiato has joined.
17:26:01 <Hiato> Meh... what does Machine Check Exception mean? That's my new BSoD flavour of the week :(
17:44:26 <slereah__> It means that the machine only takes cash.
17:44:53 <Hiato> Well, how do I fix it, I use a cheque account
17:51:03 <oerjan> cheques, how quaint. you must be american ;)
17:52:25 <oerjan> saw an article about the SA power shortage in the Economist in the library today, btw
17:52:40 <Hiato> I guess South Africa is in Mexico anyhow ;)
17:52:49 <Hiato> Really, what did it say?
17:52:58 <slereah__> Well, there's still plenty of cheques in France too!
17:53:43 <oerjan> that it's a mess caused by politicians not deciding to fix it in time, was my impression
17:54:15 <oerjan> or rather spending too much time discussing how much to privatize
17:54:50 <Hiato> well, then I guess the partial truth is escaping ;)
17:55:29 <Hiato> but it's got more to do with cheques under the table than handshakes above it (if you get my meaning :P )
17:57:46 <oerjan> oh and it was suggested it might reduce economic growth from 6 to 3 percent
17:58:14 <Hiato> I didn't even know that one
17:59:29 -!- ais523 has joined.
17:59:42 <Hiato> but yes, they shut down all of the mines in SA for about 6 weeks. Our economy is a raw materials/minerals economy. Currently, every time someone flips the switch to cut Sandton (a wealthy business suburb), SA loses in the tens of millions per hour...
18:00:11 <Hiato> that is excluding the fact that we make a vast majority of the GDP of Gold mining, which is currently not really hapenning
18:00:48 <oerjan> yeah the article mentioned the shutdown too
18:01:10 <oerjan> and that the mines managed to get a promise of reliable power out of it
18:01:26 <Hiato> yeah, they did, a 90% increase
18:02:37 <ais523> 90% of 0 is still 0...
18:03:14 <Hiato> very very true, that's the irony :P
18:04:23 <Hiato> but, that is of course, only true if you are cynical - like asi523 and I :P
18:04:34 -!- RedDak has joined.
18:13:55 <ais523> Hiato: according to Wikipedia, a Machine Check Exception is really bad
18:14:12 <ais523> it seems to mean that something went badly wrong with the hardware
18:14:18 <ais523> i.e. checksum failure on RAM or cache
18:14:28 <ais523> and it apparently is often caused by overheating
18:14:36 <ais523> at least, you have to hope that's what's causing it
18:15:40 <Hiato> yeah, I was originally under the impression that this is what occurs when I use my X86_64 cpu heavily (really heavily, been brute forcing my own encryption methods, and breadth searching conway's game of life for methuselahs) in 32bit mode.
18:16:25 <ais523> you could always try filling the computer with liquid nitrogen
18:16:35 <ais523> ISTR that method was used to set an overclocking record at one time
18:16:55 <Hiato> yes, while that would be fun, it would most certainly burn through both my tower and my pockets :P
18:17:15 <Hiato> yeah, something stupendous like 6Ghz of a Pentuim 4
18:17:28 <ais523> the computer still managed to overheat eventually even though the outside was frozen. They only just had enough time to take a photo of the screen showing the fast clock speed before the computer turned itself off for heat reasons
18:23:15 -!- AnMaster has changed nick to AnMaster_.
18:23:21 -!- AnMaster_ has changed nick to AnMaster1.
18:24:01 -!- AnMaster1 has changed nick to AnMaster.
18:28:25 -!- sarehu has quit (Remote closed the connection).
18:28:35 -!- sarehu has joined.
18:41:26 -!- RedDak has quit (Remote closed the connection).
18:42:19 <ais523> in reference to the topic:
18:42:38 <ais523> lament: wow, that was unexpected
18:44:53 <oerjan> a bit before my estimate, that
18:45:53 <ais523> besides, I didn't even finish writing the line that is actually needed to make that into an infinite loop
18:46:16 -!- ais523 has left (?).
18:46:19 -!- ais523 has joined.
18:48:32 * ais523 thinks that all langs should have some easy way to implement multithreading and backtracking
18:48:45 <ais523> because they can be hard to implement if the language doesn't give specific features that allow it
18:48:58 <ais523> call/cc is normally enough to write an implementation, though
18:49:46 <oerjan> call/cc + mutable state gives you all monads
18:50:33 <ais523> it strikes me as being more of an antimonad
18:50:42 <ais523> because monads cause things to happen in order
18:50:50 <ais523> and threading causes things to happen in an apparently random order
18:50:51 <oerjan> backtracking certainly is
18:51:50 <oerjan> cooperative threading can probably be put in a monad
18:52:33 <ais523> one thing I like about INTERCAL's threading model is the way that it's cooperative threading allows guarantees on the relative speed of threads
18:52:41 <ais523> which can be used for logic on occasion
18:52:47 <ais523> e.g. the C-INTERCAL Hello, World on the wiki
18:53:38 <ais523> OTOH, the model is completely impractical for serious langs as far as I can tell
18:53:48 <ais523> the backtracking model, on the other hand, is quite elegant while still being unusual
19:49:39 -!- oerjan has quit ("Good night").
20:11:26 -!- ehird` has joined.
20:18:21 -!- ehird` has set topic: OLD TOPIC IS GONE.
20:18:53 -!- fax has joined.
20:19:15 <fax> Anyone know anything about ABSYS?
20:20:54 <ehird`> fax: i have a question -- are you the same fax as faxastheisdfsdkf or however you spell it or are there two confusingly-similarly-named people in here
20:20:59 <fax> the first logic programming language, appanetly
20:21:29 <fax> yeah, It's me
20:22:17 <ehird`> fax: hmm, i didn't know you were UK. :p
20:22:32 <ehird`> fax: http://en.wikipedia.org/wiki/ABSYS well, one publication
20:22:35 <ehird`> i hope you have fun tracking it down
20:23:02 -!- ais523 has quit (Remote closed the connection).
20:23:47 <ehird`> there is a suprisingly large number of british folk in here
20:24:07 <fax> must be something in the water..
20:24:42 <fax> I tried to add mutable conses to haskell but failed :/
20:25:15 -!- ais523 has joined.
20:25:48 <ais523> it seemed as though the window manager went crazy; no window frames were available, just the client areas of the windows, which acted as normal
20:26:46 <ehird`> ais523: your WM crashed
20:26:51 <ehird`> morale: always keep an xterm open
20:27:09 <ais523> but logout/login solved it
20:27:50 <ais523> ehird`: was it you who added the latest anarchy golf challenges?
20:27:52 <ehird`> use twm, that never crashes :-)
20:28:08 <ais523> two versions of multiply
20:28:12 <ehird`> (speaking of which, it seems the japanese userbase of anarchy golf call it anagolf, which is far easier to type)
20:28:14 <ais523> and a simple program interpreter
20:28:19 <ehird`> i did the simple program one
20:28:25 <ehird`> which is of course not simple at all :-)
20:28:39 <ais523> well, I have a /genuine/ entry for it
20:28:49 <ehird`> ais523: show the code? that's pretty cool :D
20:28:53 <ais523> although it doesn't nest parens more than 2 deep in all circumstances
20:29:13 <ehird`> ais523: my "Multiply" entry is clever
20:29:24 <ehird`> p eval gets(nil).gsub(",","*")
20:29:35 <ais523> http://pastebin.ca/892988
20:29:38 <ehird`> $<.map{|x|p eval x.gsub(",","*")}
20:29:45 * fax is forbidden .. http://www.absysinfo.com/
20:29:51 <ehird`> ais523: wow, it compiles.
20:30:06 <ehird`> ais523: it doesn't actually do any parsing stuff though, does it?
20:30:06 <ais523> more a s/// to change the code into Perl
20:30:11 <ehird`> just transforms the non-perl bits into perl
20:30:15 <ais523> it doesn't nest parens more than 1 level deep either
20:30:37 <ais523> I could actually write a shorter version that did, but only if they upgraded Perl to 5.010
20:30:45 <ais523> which I don't think has been released yet
20:30:53 <ehird`> ais523: the thing about yours is that it isn't as conceptually elegant
20:31:02 <ehird`> well, it isn't implemented as one
20:31:04 <ehird`> but it's called as one
20:31:09 <ehird`> since {...} is a lambda
20:31:16 <ais523> I thought you might be doing that
20:31:24 <ais523> but if is your only combinator, so I optimised for that
20:31:42 <ais523> there are some shortcomings as well; you can't call a variable i or f, for instance, because those letters are part of the word if
20:31:51 <ais523> and the lexer doesn't distinguish word boundaries in keywords
20:31:58 <ehird`> the cool thing about mine is that it's... pretty hard to parse properly
20:32:07 <ehird`> that's either two lambdas, or a call to a lambda
20:32:15 <ehird`> (note: \n is not a seperator)
20:32:19 <ehird`> ack 3 4 fact 4 would work.
20:32:48 <ais523> \n in my compiler means "print the result of evaling the next expression unless it's a subroutine definition"
20:33:00 <ais523> I look for a : on a line to see whether to print or not
20:33:01 <ehird`> you know the evil c compiler entry?
20:33:18 <ais523> I have it up at the moment
20:33:29 <ehird`> ais523: yeah, well i underestimated those japanese
20:33:33 <ehird`> http://www.nmt.ne.jp/~ysas/diary/?200705b#200705161 someone made a real compiler for it.
20:33:35 <ehird`> compiles to postscript.
20:33:46 <ehird`> http://www.google.com/translate?u=http%3A%2F%2Fwww.nmt.ne.jp%2F%7Eysas%2Fdiary%2F%3F200705b%23200705161&langpair=ja%7Cen&hl=en&ie=UTF8 translated page, but the source is messed up
20:34:03 <ehird`> 'Evil C Compiler to the ANAGORU finally written in PostScript. とりあえず短くする以前に動作するものを、取り急ぎバイナリ化もせず生でコミット。 Shorten work in the meantime before that, without a moment to raw binary also committed. すんごくでかいけど、これ、インチキなりにちゃんとコンパイルする。 So very big, but this one, and the pseudo-respectable compilation.
20:34:03 <ehird`> たとえばFizzBuzzならこう。 For example if I FizzBuzz.'
20:34:15 <ehird`> those japanese chars weren't in my browser.
20:34:19 <ais523> is that the same person who submitted a genuine entry for the Underload compiler in PostScript?
20:34:33 <ehird`> ais523: not sure. ysas is the url name
20:34:37 <ais523> and ehird`, it's worse over here, I ended up with a paste full of mojibake
20:35:05 <ais523> the Underload entry was by yshl, not ySas
20:35:11 <ais523> but it's possible that they're the same person
20:35:34 <ehird`> ais523: there's such a language gap on anagolf, especially with the ruby focus and ruby being the biggest in japan :-)
20:36:05 <ais523> Ruby vs. Perl is probably the biggest language war in golfing
20:36:18 <ehird`> ais523: ruby's quite a newcomer to golfing though
20:36:21 <ehird`> but it's *great* at it
20:36:36 <ais523> both Ruby and Perl are pretty good
20:36:44 <ais523> and which one wins tends to depend on the details of the problem
20:36:50 <ais523> that war is interesting because it's so close
20:37:36 <ais523> ehird`: does Haskell have an eval?
20:37:44 <ehird`> ais523: no, it's a static, compiled language
20:37:48 <ehird`> even Hugs doesn't have one
20:37:49 <ais523> a 'simple language' to Haskell 'compiler' might work better than compiling into Perl
20:37:53 <ais523> because the syntax is more similar
20:38:06 <ehird`> ais523: You could call out to ghc. :-) Unless exec is denied
20:38:12 <ais523> but as you denied exec I can't even call out
20:38:37 <ais523> exec is usually denied, as it's the default
20:38:40 <ehird`> but yeah, despite haskell's dynamic 'feel', it's very very static
20:38:54 <ais523> although exec can be useful when testing
20:39:19 <ais523> while testing that simple language compiler I used recursive calls to perl rather than eval so that error messages came up on stderr
20:40:17 <ehird`> ais523: it's funny, anagolf's architechture at fisrt appears simple
20:40:21 <ehird`> but if you look at the code it's crazy
20:40:26 <ehird`> all the sandboxing tricks and all that
20:40:39 <ais523> I was writing a message about how the sandboxing must be difficult but you beat me to it
20:41:17 <ais523> pity that anagolf doesn't allow 1-byte palindromic quines
20:41:28 <ais523> because <newline> is a palindromic quine in GolfScript
20:41:32 <ehird`> ais523: http://pc11.2ch.net/test/read.cgi/tech/1173057314/ yours and mine challenges are mentioned near the end :-P
20:41:46 <ehird`> all the rest is completely unintelligable, of course.
20:41:56 <ehird`> but if you scroll down to 141 it's there
20:42:29 <ais523> I can't figure the page
20:42:37 <ais523> the links are all mailto: aimed at invalid addresses
20:42:49 <ehird`> ais523: oh, that's random wacky 2channel stuff
20:42:53 <ehird`> it stops the thread being bumped.
20:42:53 <ais523> and there seems to be no content other than the challenge names
20:43:02 <ehird`> not on that post, it appears
20:43:10 <ehird`> [all this knowledge re: 2ch is probably useless since i know no japanese]
20:43:19 <ehird`> [but i know it's the largest bbs in the world, with over 2million visitors a day]
20:44:40 <ehird`> ais523: sometimes in that thread you can work out posts from the ones following it
20:44:51 <ehird`> like, someone mentiones goruby in 122, and then what follows appears to be an implementation of it
20:45:01 <ais523> a golfing version of Ruby?
20:45:22 <ais523> I'm not surprised that that has a built-in uudecode, because it must be useful for compressing code into binary
20:45:35 <ais523> (actually, uuencode is more commonly useful for that)
20:45:50 <ehird`> ais523: yes, its included in ruby 1.9
20:45:54 <ehird`> for No Apparent Reason (TM)
20:46:13 <ehird`> 'make golf' is the best command-line invokation ever, though
20:46:22 <ais523> that cheat BF entry for the uudecode still has me amused
20:46:29 <ais523> I'm sure a genuine entry would be shorter
20:46:38 <ais523> but a BoolFuck entry would be shorter still
20:48:46 <ehird`> ais523: http://en.wikipedia.org/wiki/2ch with wikipedia articles like this, who needs knowledge of japanese?
20:49:01 <ehird`> still not any closer to reading that anagolf thread though :P
20:50:38 <ais523> hmm... I wonder how easy it is to do bitwise BF arithmetic?
20:52:54 <ais523> it would probably be easiest to split the number into bits first
20:53:12 <ais523> for that you just need a divide/modulo instruction
20:53:25 <ehird`> I wonder whether, if I find a K interpreter, I could convince shinh to add it to anagolf?
20:53:44 <ehird`> http://golf.shinh.org/langs.html there seems to be one or two propeitery interps there, so it should be ok
20:54:05 <ais523> why not write your own non-proprietary reimplementation?
20:54:12 <ehird`> ais523: it's too comprehensive, K.
20:54:16 <ehird`> also, because anagolf considers speed too.
20:54:22 <ehird`> K is incredibly fast on tons of stuff
20:54:23 <ehird`> and the interp si tiny
20:54:27 <ehird`> (fits in lvl1 cache of cpu)
20:54:51 <ais523> that's why reimplementing it shouldn't be too difficult
20:55:00 <ais523> the new version probably wouldn't be as high-quality
20:55:09 <ais523> but hopefully wouldn't take very long to write
20:55:35 <ehird`> ais523: the library is comprehensive
20:55:46 <ais523> and that's proprietary too?
20:55:51 <ais523> that could be a problem
20:56:05 <ehird`> they offered a free K3 interpreter before, it was just one binary
20:56:14 <ehird`> i can find it with google, but yeah
20:56:17 <ehird`> you have the binary, that's it
20:56:25 <ais523> what license is it under
20:56:34 <ais523> if it's public domain, it might be possible to decompile it
20:56:44 <ehird`> ais523: 'all rights reserved' kind of thing
20:56:44 <ais523> especially if you have the same code for multiple OSs
20:57:19 <ehird`> if k was easier to googlle. :|
20:59:25 <ais523> wow, searching via Wikipedia I found a page elsewhere called "K for Joy Programmers"
20:59:40 <ehird`> no stinkin' loops, that's the best k site
20:59:45 <ehird`> http://www.nsl.com/k/bf.k they have a bf interp and a ->c compiler
20:59:51 <ehird`> c:{`bf.out.c 0:"char m[9999];char*p=m;int main(){",(,/@[256#"";_ic"<>+-.,[]"
20:59:52 <ehird`> :;("--p;";"++p;";"++*p;";"--*p;";"putchar(*p);";"*p=getchar();";"while(*p){"
20:59:52 <ehird`> "}")]_ic x), "}"; `4:"gcc -o bf.out -O3 -w bf.out.c"; `3: "rm -f bf.out.c";}
21:00:33 <ais523> they're working on an Unlambda implementation as well
21:00:43 <ais523> so they certainly seem esolang-aware over there
21:00:46 <ehird`> ais523: http://www.nsl.com/k/befreak.k <-- Befreak in K, *with a gui*... certainly a new implementation would be hel
21:01:04 <ehird`> http://www.nsl.com/papers/befreak.htm take a look at how comprehensive the gui is
21:01:58 <ais523> a gui isn't very useful for golfing, generally speaking
21:02:09 <ehird`> but i wouldn't want to impact on MY k experience
21:03:42 <ehird`> is cat in unlambda even possible?
21:03:50 <ehird`> without a huge switch table for every 255 char
21:04:19 <ais523> you can use the | command
21:04:28 <ais523> sorry, combinator-like action-like object
21:06:02 -!- jix has quit ("CommandQ").
21:06:47 <ais523> that K implementation of Unlambda looks excessively long
21:07:02 <ais523> I may have to get on with writing my Underload/Unlambda/Brainfuck hybrid lang
21:07:31 <ais523> which Unlambda can be trivially compiled into
21:07:45 <ais523> and yet which can be interpreted simply as well
21:08:12 <ais523> then combining an Unlambda->Underlambda compiler and an Underlambda interp would give an Unlambda interp
21:08:13 <ehird`> ais523: want to help me find a k interp for linux? :P
21:09:29 <ais523> it was on nsl, but the link seems to be broken
21:09:32 <ais523> that is, the link from Wikipedia to it
21:09:44 <ais523> is Wayback working for you? It wasn't for me earlier
21:09:58 <ehird`> aha, wayback! good idea
21:10:30 <ais523> sufficiently slow that my browser timed out when I tried
21:10:58 <ehird`> so i'm telling it to go fish for kx.com
21:12:40 -!- helios24 has quit ("Leaving").
21:12:48 <ehird`> http://www.nsl.com/misc/k/
21:14:57 -!- GreaseMonkey has joined.
21:15:58 <ais523> incidentally, do you think that $/=$] is an abusive way to switch Perl into slurp mode?
21:16:16 <ais523> it's a golfing trick I use myself; set the newline separator to the Perl version string
21:16:21 <ais523> which is unlikely to be anywhere in the input
21:20:28 -!- ais523 has quit (Remote closed the connection).
21:22:46 -!- ais523 has joined.
21:23:06 * ais523 's window manager crashed again
21:23:31 <ehird`> (also, that's SCARY ambiguity with a /= b)
21:24:14 <ais523> not equals is != in Perl
21:24:24 <fax> doesn't it stringify 0 ?
21:24:34 <ais523> and not really, because a lone $ always gobbles up the next character at least
21:24:40 <ehird`> no golf challenges have 0 in the info iirc
21:24:42 <ais523> and yes, 0 is stringified
21:24:47 <ehird`> stringified as its char
21:25:02 <ehird`> http://web.archive.org/web/*/http://www.kx.com/download/download.htm <-- ais523: archives, but inaccessable
21:25:30 <ais523> I suppose there's probably a special variable that's undef by default, but I can't be bothered to find out which one when $] works almost as well for this purpose
21:25:59 <ais523> and ehird`: I'm the sort of person who's idealistic enough to avoid using a language if it doesn't have an open-source implementation I can mess around with
21:26:09 <ais523> although not exclusively
21:26:14 <ehird`> ais523: you owe it to yourself to try k :)
21:26:24 <ais523> but enough to not download closed-source interps for languages like K
21:26:25 <ehird`> i think kx systems have every right to keep it under wraps
21:26:28 <ehird`> it's like a secret weapon
21:26:47 <ais523> if it's really that good, someone should reimplement it
21:26:57 <ais523> sort of like the dmd/gdc thing
21:27:04 <fax> Why's k so good?
21:27:11 <fax> I couldn't really see why..
21:27:25 <ais523> it reminds me a lot of the things I like to look for in a language
21:27:28 <ehird`> ais523: gdc is not a reimplementaiton!
21:27:32 <ehird`> it shares the open source backend with dmd.
21:27:33 <ais523> although I don't like it as much as ehird`, I think
21:27:39 <ehird`> it just layers it on top of gcc.
21:27:49 <ehird`> fax: that and extreme conciseness and *speed*
21:27:51 <ais523> gcc is the backend, I think
21:27:54 <fax> I like J a lot.. I couldn't get into K
21:27:55 <ehird`> it outperforms c in a lot of cases
21:27:59 <ehird`> ais523: it uses the dmd backend.
21:28:13 <ais523> I think we're arguing over which end is the backend and which end is the frontend
21:28:17 <ehird`> fax: k is like j, but taken to the logical extreme and then whipped around until it was just that bit faster and shorter
21:28:25 <ehird`> ais523: it uses the 'guts' of dmd.
21:28:37 <ehird`> the only reason dmd isn't open is that the frontend has code by other people.
21:30:09 <ehird`> Y:{{x[{x[x]y}[y]]z}[x][{x[{x[x]y}[y]]z}[x]]y}
21:30:25 <ais523> it looks better in most syntaxes
21:30:31 <ehird`> it utilizes the fact that by default 'x,y,z' are your first arguments
21:30:35 <ehird`> you don't need to name them
21:30:47 <ais523> yes, but other langs do that as well
21:30:49 <ehird`> since most k functions take 3 or less arguments, that's probably good
21:30:54 <ais523> Mathematica uses #1, #2, #3 for instance
21:31:01 <ais523> and the pattern doesn't end there
21:31:06 <fax> longer than arc :P?
21:31:15 <ais523> on the other hand, Mathematica is even worse for excessive brackets
21:31:19 <ehird`> arc is like java compared to k!
21:31:32 <ais523> so what is Java like compared to K?
21:31:53 <lament> this K sounds like a piece of proprietary junk.
21:32:06 <ehird`> lament: proprietary, but not junk.
21:32:29 * ais523 still thinks that with enough effort it would be possible to come up with something even smaller and faster
21:32:41 <fax> (fn (m) ([_ _] (fn (y) (m [(y y) _]))))
21:32:41 -!- Tritonio_ has joined.
21:32:51 <ehird`> fax: sure, but that is in a different style
21:32:55 <ehird`> you do [_ _] and call that
21:32:57 <ehird`> you could do that in k too.
21:33:01 <ehird`> lament: http://www.kuro5hin.org/story/2002/11/14/22741/791
21:33:07 <lament> ais523: probably in forth.
21:33:12 <ehird`> ais523: k is tried and tested, though.
21:33:17 <ehird`> lament: forth is not short
21:33:24 <ehird`> ais523: KDB is used by tons of banks and governments and shiz
21:33:25 <ais523> either that or you've just fallen for their advertising
21:33:27 <ehird`> and just plain K is too
21:33:29 <fax> so it's that long for.. readability? :D
21:33:42 <ehird`> ais523: naw, kx don't acknowledge k any more
21:34:03 -!- RedDak has joined.
21:34:03 <ehird`> kx just updated their home page :|
21:34:46 <ais523> what, during this conversation?
21:36:06 * ais523 was wondering for a moment if they were monitoring #esoteric so that they could alter their website to fit the conversations
21:36:53 <ehird`> kx-if you're reading me, put up a free k3 trial. thanks
21:37:21 <ehird`> ais523: it seems, though, that concatentative languages might be the wrong way for conciseness...
21:37:28 <ehird`> i feel ninjacode2 is needed! :P
21:37:40 <ais523> what makes you think that?
21:37:46 <ais523> K is quite concatenative-like
21:37:49 <ais523> just with infix notation
21:37:56 <ehird`> well, you know what i meant
21:38:11 <ehird`> ais523: not strictly, though... because of the monadic/dyadic stuff
21:38:31 <ehird`> which seems like a really good way to pack code into small boxes
21:38:38 <ais523> the infixness is a way to use two functions on each character
21:38:58 <ais523> OTOH it makes it considerably harder to create virtual temporary variables
21:39:19 <ehird`> ais523: personally i think three would be cool
21:39:27 <ehird`> but that's basically impossible
21:39:31 <ais523> that would be ambiguous
21:39:35 <ehird`> since a!b is either a postfix, then b
21:39:54 <ehird`> i can handle only two options, but three?! no way ;)
21:40:05 <ais523> !a! would be just as bad
21:40:48 <ehird`> though infix, in itself, is ambiguious
21:41:55 <ais523> K enforces right-to-left evaluation for some reason
21:42:02 <ais523> left-to-right is more natural, I would have thought
21:42:05 <ehird`> because that's the most useful, ais523
21:42:09 <ehird`> it reduces parens in more cases
21:42:22 <ehird`> unintuitive, but they have years of practice with that kind of stuff :P
21:44:25 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
21:52:57 -!- Hiato has quit (Read error: 110 (Connection timed out)).
22:01:41 -!- Tritonio_ has quit (Remote closed the connection).
22:03:12 -!- slereah__ has joined.
22:21:08 -!- ais523 has quit ("bye").
22:49:46 -!- RedDak has quit (Remote closed the connection).
22:54:26 -!- olsner has joined.
22:58:49 -!- Corun has joined.
23:00:30 -!- timotiis_ has joined.
23:07:52 -!- timotiis_ has quit ("leaving").
23:15:27 -!- pikhq has joined.
23:21:15 -!- Geekthras has joined.
23:27:03 <ehird`> pikhq: any thoughts re: pebble2?
23:27:35 <pikhq> Geekthras: From #xkcd, I see. ;)
23:28:38 -!- timotiis has quit (Read error: 110 (Connection timed out)).
23:35:13 <pikhq> Geekthras: So, what brings you here?
23:35:30 -!- Geekthras has changed nick to Geekthras|Dinnar.
23:42:58 -!- Geekthras|Dinnar has changed nick to Geekthras.
23:46:38 <Geekthras> finally got around to making a bf compiler
23:47:18 <pikhq> I'm finally getting around to revising PEBBLE.
23:47:36 <pikhq> ehird`: BTW, I'm thinking of implementing PEBBLE2 in Plof.
23:47:56 <ehird`> pikhq: :( but .. self-hosting lisp syntax!
23:48:29 <pikhq> I never said what syntax I'd use.
23:48:37 <pikhq> Remember: Plof has a runtime-modifiable syntax.
23:51:17 <ehird`> okay, yeah, but .. macros
23:55:20 <ehird`> http://web.archive.org/web/20041014021225/http://kx.com/cgi-bin/getSoftware_new.pl?klin.zip=y i hope this works :)
23:56:21 <pikhq> ehird`: Plof can have *everything* replaced at runtime.
23:56:42 <ehird`> i want a self-hosted, lisp-syntax pebble! :P
23:56:46 <ehird`> maybe i should make it. heh
23:57:01 <pikhq> Well, everything except for the PSL semantics, which are about as hard to replace as the machine code on a traditional CPU. . .
23:57:11 <pikhq> And I've yet to rule out sexp syntax.
23:58:27 <ehird`> pikhq: OK, but self-hosting