00:22:39 -!- sebbu2 has joined.
00:30:30 -!- puzzlet has quit (Remote closed the connection).
00:30:31 -!- puzzlet has joined.
00:39:20 -!- puzzlet has quit (Remote closed the connection).
00:39:23 -!- puzzlet has joined.
00:42:46 -!- sebbu has quit (Connection timed out).
00:42:46 -!- sebbu2 has changed nick to sebbu.
00:48:50 -!- puzzlet has quit (Remote closed the connection).
00:48:51 -!- puzzlet_ has joined.
00:53:26 -!- ehird` has quit (Remote closed the connection).
01:00:08 -!- sebbu2 has joined.
01:02:09 -!- sebbu3 has joined.
01:05:34 -!- sebbu2 has quit (Nick collision from services.).
01:05:35 -!- sebbu has quit (Nick collision from services.).
01:33:09 -!- puzzlet has joined.
01:43:20 -!- puzzlet_ has quit (Read error: 110 (Connection timed out)).
02:20:58 -!- sebbu3 has quit ("@+").
02:55:45 -!- puzzlet has quit (Remote closed the connection).
02:55:45 -!- puzzlet_ has joined.
03:14:38 -!- puzzlet has joined.
03:24:59 -!- puzzlet_ has quit (Read error: 110 (Connection timed out)).
04:29:27 -!- RodgerTheGreat has quit.
04:36:12 * pikhq goes to celebrate his status as an Agoran Spy
05:09:49 -!- puzzlet has quit (Remote closed the connection).
05:09:50 -!- puzzlet has joined.
05:32:55 -!- puzzlet has quit (Remote closed the connection).
05:32:55 -!- puzzlet_ has joined.
05:55:39 -!- puzzlet_ has quit (Remote closed the connection).
05:55:40 -!- puzzlet has joined.
07:17:58 -!- dbc has joined.
07:23:05 -!- pinwee has joined.
07:30:30 <oklopol> Slereah-: why are bunting and becard the same combinator :o
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:29:05 <oklopol> why doesn't freenode ping off my bot :<
08:29:10 <oklopol> guess i should register it...
08:29:41 -!- puzzlet_ has joined.
08:30:54 <oklopol> right, can't register it because ololobot is online too :D
08:39:51 -!- puzzlet has quit (Read error: 110 (Connection timed out)).
09:01:51 -!- Jontte has joined.
09:20:03 -!- pinwee has quit (Read error: 110 (Connection timed out)).
09:30:32 <oklopol> fun looking at random #esoteric logs and finding myself talking crap every 15 sentences :D
11:02:09 -!- Jontte has quit ("Konversation terminated!").
11:30:54 -!- faxathisia has joined.
11:33:26 -!- puzzlet_ has quit (Remote closed the connection).
11:35:03 -!- puzzlet has joined.
11:39:55 -!- AnMaster has quit ("mouse broken, restarting to fix related issue").
12:10:50 -!- AnMaster has joined.
12:28:51 <oklopol> >>> F={};F![/N]=(/N*8);f"a"
12:31:47 <Slereah-> PLEASE SAY HELLO WORLD, LOUSY INTERPRETER
12:49:45 -!- sebbu has joined.
12:49:48 <Slereah-> I won't even ask you to take that bottle of beer of the wall, you'll probably get drunk before the end of it!
13:41:55 -!- jix has joined.
14:08:03 -!- mtve has quit ("Terminated with extreme prejudice - dircproxy 1.0.5").
14:08:26 -!- mtve has joined.
14:10:31 -!- mtve has quit (Client Quit).
14:10:54 -!- mtve has joined.
14:16:04 <SimonRC> oklopol: what lang was that?
14:21:32 <oklopol> oh, oklotalk, of course :)
14:45:32 <SimonRC> where is the definition online
14:46:31 <Slereah-> http://en.wiktionary.org/wiki/online
14:47:00 <oklopol> SimonRC: none published yet
14:47:08 <oklopol> since it still constantly evolves :o
14:47:29 <oklopol> i'm aiming for perl6, with some features and syntactic sugar added!
14:48:05 <oklopol> (well, the language is completely different, the reference was purely to the amount of... stuff)
14:49:50 -!- Maxdamantus has quit (Remote closed the connection).
15:04:20 <faxathisia> It's very nice but I don't know what I'm doing :p
15:06:59 <SimonRC> http://www.cs.chalmers.se/~ulfn/talks/agda2-060510.pdf ??
15:11:07 -!- RedDak has joined.
15:12:17 -!- puzzlet has quit (Remote closed the connection).
15:12:19 -!- puzzlet has joined.
15:13:27 <SimonRC> I have s little understanding of this kind of thing
15:13:35 -!- jix has quit (Nick collision from services.).
15:13:45 -!- jix has joined.
15:13:49 <faxathisia> I'm trying to write a function, plus_s : (m : Nat) -> (n : Nat) -> suc (m + n) == (m + suc n)
15:13:56 <SimonRC> it is not really much beyond Generalised Algebraic Data Types in Haskell
15:14:22 * faxathisia reads about Generalised Algebraic Data Types
15:15:53 <SimonRC> well I think you need some lambdas in there...
15:16:14 <SimonRC> faxathisia: you seem to have mixed up a type sig and a definition
15:18:14 <SimonRC> pikhq: what was the last thing you said before I said that to you?
15:19:06 <SimonRC> faxathisia: I would think you need one type sig, one case for m = 0, and one case for m > 0
15:19:52 <SimonRC> plus_s : Nat -> Nat -> Nat
15:20:09 <pikhq> SimonRC: My logs don't go *back* that far.
15:20:16 <pikhq> At least a few days ago. ;)
15:20:36 <SimonRC> pikhq: it was about being an "Agoran Spy"
15:20:48 <pikhq> It's a patent title in Agora.
15:20:53 <pikhq> (newly defined for my sake)
15:22:22 <pikhq> Agora is a Nomic; a game whose rule-changing procedures are rule-defined.
15:22:42 <SimonRC> is it possible to back a nomic into a dead-end?
15:23:02 <SimonRC> is it possible to make it undefined using temporar loops
15:23:13 <pikhq> That's one possible means.
15:23:26 <pikhq> Some Nomic rulesets are better at handling that than others.
15:23:39 <SimonRC> actually, every Noic ruleset is equally bad at it
15:24:01 <faxathisia> SimonRC: This stuff is cool http://www.iis.sinica.edu.tw/~scm/2007/agda-exercise-proving-that-mergesort-returns-ordered-list/
15:24:10 <pikhq> B Nomic, for example, can only survive that because they have a rule allowing for the temporary suspension of the rest of the rules to reset the game.
15:24:35 <SimonRC> which is fine unless you remove that rule
15:24:49 <pikhq> Agora survives that sort of thing because such events are usually done wrong via a technicality. During which time the bug will be fixed.
15:25:00 <pikhq> I believe that one requires unanimous support.
15:26:09 <SimonRC> there needs to be something between a nomic and an orgdinary game maybe
15:26:27 <pikhq> But that loses the fun of a Nomic.
15:26:29 <SimonRC> where you can make most rule changes, but not any that screw up the game
15:26:47 <pikhq> Nomic in Agora is *kinda* like that. . .
15:26:53 <pikhq> In theory, you can make any rule change.
15:27:01 <pikhq> In practice, you won't be *allowed* to.
15:27:12 <pikhq> Agorans care quite a bit about their precious Nomic.
15:27:51 <pikhq> (not that I can blame them. . . It's really a *hard* ruleset to abuse, for one thing. . . Representing 14 years of rule-changing)
15:33:09 <SimonRC> I just realised I failed to say what I was thinking just then
15:33:20 <SimonRC> I was lookking at nomics from a programming PoV
15:33:43 <SimonRC> there must always be some immutable base to it all, I think
15:34:03 <SimonRC> (That is one of my objections to "changing laws of physics" theories, too.)
15:34:30 <Slereah-> It is actually moar of a "changing constants"
15:36:29 <Slereah-> Is there a particular process to change lambda expressions int combinators?
15:36:31 <SimonRC> but if laws of physics "change", then time can't be all the mutable or one of them would have fucked it up by now
15:36:46 <SimonRC> what is an "int combinator"?
15:37:02 <Slereah-> By just applying the transformation pretty much randomly, I end up on some variables that can't bbe changed.
15:37:26 <SimonRC> ISTR that unlambda homepage has a method
15:37:41 <Slereah-> I suppose there's a particular order for it, but...
15:37:47 <SimonRC> it causes an exponential blowup in program size in the general case
15:38:19 <SimonRC> it is a simple recursive method
15:39:32 <Slereah-> I suppose it's under "Abstraction elimination"
15:40:25 <SimonRC> and "Making abstraction elimination more efficient"
15:40:47 <SimonRC> if you are using Haskell, it should be easy to implement
15:41:06 <faxathisia> abstraction elimination is eta reduction I think
15:57:45 <oklopol> ololobot_ does the conversion with pl
15:57:56 <oklopol> i mean, the one described on the unlambda page
16:20:16 <faxathisia> I couldn't get epigram to run though >:|
17:01:54 -!- Sgeo has joined.
17:50:30 <Slereah-> Holy fuck. Abstraction elimination is some ugly business.
17:51:41 <oklopol> http://projecteuler.net/ i'm hooked :P
17:54:55 <Slereah-> So far, it looks like this : http://membres.lycos.fr/bewulf/Russell/AE.jpg
17:55:09 <Slereah-> I'm not sure all the parenthesis are in the right place.
17:55:23 <faxathisia> You're not doing this manually.. are you?
17:55:43 <faxathisia> wouldn't it be easier to write a program?
17:55:56 <oklopol> please stop bullying the deity
17:56:03 <Slereah-> Well, I usually prefer to do such things by hand first.
17:56:27 <faxathisia> maybe this helps http://www.angelfire.com/tx4/cus/combinator/birds.html !
17:56:30 <Slereah-> Remember the addition program? I got the idea after doing this : http://membres.lycos.fr/bewulf/Russell/5+12.txt
17:57:04 <Slereah-> And I programmed my Turing machine because I had a hard time doing the examples in Turing original article.
17:57:59 <Slereah-> (Starting with the second one. Being a Turing machine is a thankless job!)
18:07:55 <SimonRC> Slereah-: you know, I think you are supposed to start from the outside lambda inwards...
18:13:15 <Slereah-> I decomposed the thingy into T[^ T[^ T[^ ...]]] and started by the innermost lambda in it.
18:13:38 <SimonRC> yeah, the op[posit of what I said
18:13:50 <SimonRC> the first thing to eliminate would be the \m
18:14:27 <Slereah-> http://membres.lycos.fr/bewulf/Russell/AE2.jpg
18:14:55 <Slereah-> I don't suppose anyone has the combinator version of multiplication somewhere.
18:15:50 <Slereah-> I get ((S((S((S(KS))((S(KS))((S((S(KS))((S(KK))(KS))))((S((S(KS))((S(KK))(KK))))((S(KK))I))))))(KI))((S(KK))(KI)))
18:17:34 <SimonRC> Slereah-: you mean multiplication of church numerals?
18:18:10 <SimonRC> as in: 5 = \x\y.x(x(x(x(xy)))) ?
18:19:44 <SimonRC> surely if m and n are church numerals, (mn)f == m(nf)?
18:20:34 <SimonRC> \mnf->(mn)f is exponentiation
18:21:37 <SimonRC> e.g. it turns 5,4,x into (5 4) x == (\y. 4 (4 (4 (4 (4 y))))) x = 4(4(4(4(4x))))
18:22:14 <SimonRC> multiplication of church numerals is composition
18:23:06 <SimonRC> "The function <mul> which multiplies two Church integers (by applying them consecutively to the same function) is ^m^n^f`$m`$n$f, i.e. ``s`ksk"
18:23:22 <Slereah-> Oh. I actually made a typo when I wrote it on the first line.
18:24:03 <Slereah-> I forgot Unlambda's notation. Is `ab = (ab)?
18:33:10 <Slereah-> I did spend 20 lines doing the wrong problem didn't I.
18:34:09 <Slereah-> I'll try some combinator with a known SKI decomposition instead.
18:35:17 <Slereah-> The Mockingbird. Three combinators.
18:51:43 -!- jix has quit ("CommandQ").
18:53:23 <Slereah-> I just can't keep track of the parenthesis.
18:53:43 <faxathisia> I wrote some code to it but it doesn't work!
18:54:53 <Slereah-> Hell, I don't even have any idea how to deal with brackets!
18:55:05 <Slereah-> But well, let's see if I can cook up something.
18:56:25 <faxathisia> are not free and bound two different things?
18:56:48 <Slereah-> They are different thing, that is.
18:57:16 <Slereah-> Free variables are in the expression without some lambda to cramp their style.
18:58:24 <Slereah-> From what I've seen on the abstract elimination thingy, a variable that isn't at all in the expression is considered not free for the rule T[^x.E] = K T[E], with x not free in E.
19:08:35 <faxathisia> I wrote something which seesm to do it but it only works in one direction
19:14:28 <Slereah-> I wonder if there's a shorter set of rules for it.
19:14:35 <Slereah-> Free and bound variables are bothersome.
19:15:21 <oklopol> i guess that comes once you've made it pointless?
19:16:00 <faxathisia> Yes free and bound vars are the problem
19:17:19 <faxathisia> but I doubt sidestepping it is possible :|
19:17:23 <oklopol> i meant, i guess what you are doing is exactly reducing it to the shorter set of rules
19:17:42 <Slereah-> Well, you can get rid of a lot of the free-bound rules in logic for instance.
19:17:55 <oklopol> guess, because i just skimmed your conversation for keywords :)
19:17:56 <Slereah-> But then again, LC seems pretty much based on it.
19:21:56 -!- oerjan has joined.
19:38:27 -!- tesseracter has joined.
19:39:55 <tesseracter> i was actually looking for a obfuscated code channel
19:40:08 * oerjan strangely hears something out of another dimension
19:40:19 <Slereah-> Well, esolangs are quite obfuscated
19:40:59 <tesseracter> right, but python oneliners arent exactly esoteric, more obfuscated.
19:41:36 <oerjan> people here have been known to make IOCCC entries...
19:42:07 <Slereah-> For instance, this is somehow obfuscated : http://membres.lycos.fr/bewulf/Russell/99Turingprog5.txt
19:42:33 <Slereah-> Mostly because I can't find how to strip the code of LF.
19:43:26 <Slereah-> I have a somehow commented version, but it's commented in French.
19:44:43 -!- weilawei has joined.
19:45:41 <tesseracter> for some reason Slereah-, you remind me of a bot. kinda spooky.
19:45:42 <faxathisia> what do you mean strip the code of LF?
19:46:13 <Slereah-> Since I'm not that good at manipulting strings, it just reads it like one big block.
19:46:46 <oerjan> tesseracter: Why do you think Slereah-, I remind me of a bot. kinda spooky.
19:46:46 <faxathisia> strings are in general really awkward to deal with :|
19:47:16 <faxathisia> It's nice to have logic programming or some combinator parser someone else wrote around
19:47:29 <Slereah-> The solution would have been to just put strip(LF), but I would need the curses module
19:47:42 <Slereah-> And it doesn't exist on windows.
19:48:55 <oklopol> faxathisia: what language have you been using 8|
19:49:12 <faxathisia> oklopol: what do you mean? I used a lot of languages
19:49:38 <oklopol> "strings are in general really awkward to deal with" i feel the exact opposite, so... just wondered
19:49:55 <Slereah-> What languages have *you* been using?
19:50:07 <faxathisia> especially awkward in c, javascript and python
19:50:23 <faxathisia> and yes, what have you been using!? :D
19:50:25 <Slereah-> Well, I'm incompetent, but I assume faxathisia isn't.
19:50:45 <oklopol> i use python almost exclusively these days
19:51:08 <faxathisia> you chould show some good string processing code?
19:51:22 <oerjan> python has reasonably simple regexps
19:51:49 <oklopol> regexps + a way to use a string like a file, and i don't really see how anything could be awkward
19:52:33 <oklopol> and no, i can't show you any *good* code, since i don't know what that means
19:52:54 <Slereah-> We need a philosopher on that one.
19:53:49 <oklopol> i don't think anyone has called my code readable
19:54:43 <oklopol> add descriptive lambdas into the language like i did with oklotalk for comments
19:55:00 <oklopol> err... i mean declarative or smth
19:55:11 <tesseracter> oklopol: comments should only need to explain _why_ you implemented something the way you did.
19:55:13 <oklopol> like, lambdas that describe the result.
19:55:24 <faxathisia> in the future we don't need comments :)
19:55:44 <faxathisia> sometimes they are required though, like: Don't give an empty list to this!
19:56:02 <oklopol> tesseracter: in that use, i consider then fully useless :)
19:56:10 <oklopol> as if that's anyone's business.
19:56:26 -!- puzzlet has quit (Remote closed the connection).
19:56:37 <oklopol> faxathisia: that can be done using the language itself.
19:56:47 <oklopol> if not, the language sucks, not my problem :)
19:57:23 <oklopol> if something is easy in oklotalk - a non existent language sofar - i consider it something that should be easy in other languages too
19:57:48 <faxathisia> being a programming language is not about making things easy for programmers :p
19:57:50 <oklopol> i've been talking about ot for years
19:57:57 <oklopol> but i finally have a real reason to finish it
19:58:04 <oklopol> it's my high-school graduation project
19:58:36 <oklopol> heh, oklotalk makes up for it's nice debugging facilities in being extremely obfuscatable :)
20:03:05 <oklopol> if that was for "mostly oklotalk", i meant i don't know what other languages provide for the stuff i have in mind, since i only know python, java and c++ well enough to confidently know what's doable in them
20:03:12 * oerjan imagines several options for oklopol flunking high school now...
20:03:45 <oklopol> another reason is i don't have a course i need to have, and it's not given anymore
20:04:40 -!- puzzlet has joined.
20:04:43 <oklopol> a spoken english course :D
20:05:40 <weilawei> six function calculator in one line of python: http://dresstosurvive.wordpress.com/2007/12/21/six-function-calculator-in-one-line-of-python/
20:05:53 <weilawei> i think tesseracter spoiled my surprise >_>
20:06:24 * oerjan must have greatly misremembered the time zone of germany
20:07:07 <oklopol> i'll show my bf interpreter oneliner again!
20:07:09 <oerjan> thought so, and hier ist kein gute morgen
20:07:43 <faxathisia> aww I did a bf interp one liner but I lost it
20:07:57 <faxathisia> it had to be < 512 chars for lambdabot to understand
20:13:18 * Slereah- plans on doing some BF interpreter on his Turing machine
20:13:25 <Slereah-> And well, it will have to be one line.
20:13:35 <Slereah-> But first, I need to install them penguins.
20:14:06 <Slereah-> Linux for sale? What a bargain!
20:14:07 <faxathisia> every turing machine program is a one liner because i t uses infinite tape
20:14:11 <tejeez> then do some turing machine with bf!
20:14:27 <tejeez> and run that bf interpreter again with that
20:14:29 <Slereah-> faxathisia : The instructions themselves aren"t on the tape.
20:14:38 <weilawei> ((lambda: "penguin") for x in customers)
20:14:47 <weilawei> it generates penguins for customers =D
20:14:50 <oklopol> yes! and calculate the eigenratio
20:14:54 <Slereah-> also, my Turing Machine supports multi tapes :o
20:15:25 <Slereah-> I will probably use 3 for the BF interpreter.
20:15:27 <weilawei> the lambda was gratuitous, i admit
20:15:44 <Slereah-> One for the code, one for the "tape" of BF, and one to keep track of the brackets.
20:15:54 * weilawei isn't sure whether penguins or lambdas are cuddlier
20:16:26 <tejeez> hardware bf cpu sounds very.. useful!
20:17:01 <Slereah-> You could run your BF programs in record time!
20:18:28 <tesseracter> tejeez: ok ok, howabout a water-based bf cpu? the output would drip on your head.
20:18:58 <tejeez> well, a bf cpu made with discrete components or simple logic chips would be quite interesting project
20:19:39 -!- sekhmet has quit (Read error: 104 (Connection reset by peer)).
20:22:16 -!- sekhmet has joined.
20:23:07 <tesseracter> http://science.slashdot.org/article.pl?sid=04/10/06/2026222 tejeez, this is what i was talking about...
20:24:06 <tejeez> yeah, that would be even cooler way to implement a brainfuck cpu!
20:25:17 <tesseracter> "theres a bug. is it hardware or software?"
20:25:33 <Slereah-> There's an ant drinking the sweet sweet computer juice
20:26:37 <Slereah-> Try to use 1's rather than 0. They're aerodynamics, less turbulence in the water
20:27:38 <tejeez> but as every cell in brainfuck is initially 0, it'd be better to make 0's more aerodynamic
20:28:09 <weilawei> i think 0's are naturally more aerodynamic due to the curvature
20:28:49 <Slereah-> Well, unless that curvature is infinite, the water is going to bump on its cross-section!
20:29:40 <Slereah-> Then again, there's worse I guess.
20:30:27 -!- sekhmet has quit (Read error: 104 (Connection reset by peer)).
20:30:31 <weilawei> CPU lag/queue? you dont get your water till something else comes down the pipe...
20:30:57 <Slereah-> Could you overclock it with a bicycle pump?
20:31:16 <weilawei> i think a simple siphon might help..
20:31:32 <weilawei> but.. overclocking it would.. make it run cooler?
20:32:22 <tesseracter> ok guys, combine the fluid gates with http://blog.wired.com/wiredscience/2007/12/macgyver-scienc.html and you can make your own BF water CPU at home!!!
20:34:15 <Slereah-> http://www.clifford.at/bfcpu/bfcpu.html
20:35:11 <tejeez> tesseracter: a lot of cups that should be filled (1) or left empty (0)
20:35:26 <tejeez> three such cups would be one instruction
20:35:31 * weilawei and tesseracter are plotting...
20:36:54 <tejeez> or maybe a lot of valves?
20:37:05 * oerjan envisions the Zen fluid bf cpu, where the cups are either half full or empty.
20:37:17 <Slereah-> Steam? This isn't even Clockpunk!
20:37:45 <tejeez> this if brainfuck, not some (brain)fucking steampunk
20:37:50 <tesseracter> Slereah-: you need 2 different density fluids
20:38:04 <oerjan> aka: the indifference engine
20:39:02 -!- sekhmet has joined.
20:39:37 <Slereah-> http://content.answers.com/main/content/wp/en/1/14/William_Stanley_Jevons_Logic_Piano.jpg
20:40:24 <oklopol> oerjan: quantum brainfuck?
20:40:45 * oerjan is disappointed brainpunk does not appear to denote a musical genre
20:41:05 <Slereah-> Quantum Brainpunk is when you fill the cup randomly.
20:41:19 <Slereah-> Like you just use some cups lying around your house.
20:41:58 <oerjan> quantum is not the same as random! there needs to be entanglement...
20:42:24 <Slereah-> Well, with cup, I'm not sure I can do it.
20:43:26 <tesseracter> weilawei was worried that you couldnt use a bf water cpu in space...turns out, you can just spin it. need overclocking? spin faster!
20:43:41 * weilawei is planning to market it to NASA
20:43:52 <Slereah-> Spinning it will induce coriolis forces
20:43:59 <Slereah-> That could screw up the results!
20:44:10 <weilawei> Slereah-, see, i said use an impeller or a pump..
20:44:28 <weilawei> in space though.. once it was spinning..
20:44:54 <tesseracter> it would be hard to read the results weilawei...
20:44:59 <Slereah-> You know that pesky law of thermodynamic?
20:45:29 <weilawei> yes we know, but we're aiming to preserve our natural environment as best as possible
20:45:59 <Slereah-> Let's train monkeys to do symbol manipulation.
20:46:11 <weilawei> Slereah-, forget that. too easy
20:46:42 <weilawei> train chihuahuas to be quiet and you should win a nobel
20:46:58 <Slereah-> I can, but it would qualify as animal cruelty.
20:47:17 * tesseracter tried to make a little dog punter once. it didnt get many investors tho...
20:55:20 <tesseracter> i wonder what cpu has the least amount of logic gates...
20:55:56 -!- ehird`_ has joined.
20:56:02 <weilawei> the infinite improbability drive? or the bistromath drive?
20:56:08 <Slereah-> Zero I assume. Unless you mean "Turing complete" as well.
20:56:26 <tesseracter> Slereah-: i definitely mean turing complete.
20:56:57 <tejeez> probably some very simple 1-bit cpu :-o
20:58:13 <tejeez> http://www.esolangs.org/wiki/SCAB_computer?
21:04:34 * weilawei thinks tesseracter is scheming to limit his time on #esoteric
21:05:18 <weilawei> if you're so busy @work, what're you doing here?
21:07:20 <tesseracter> hmm. is a water cpu a clock or an asynchronous system?
21:08:20 <tejeez> brainfuck can be easier to do with clocked..?
21:12:42 <tesseracter> tejeez: yeah, but the difficulty is with the water, not brainfuck.
21:20:57 -!- ihope_ has joined.
21:24:52 <tesseracter> Slereah-: i just read what i wrote again. scary.
21:28:55 <ehird`_> ridiculous, esoteric scheme compiling idea
21:29:41 <ehird`_> first reduce all begins to two subforms. (begin x y z) -> (begin x (begin y z)), etc. Then, reduce (begin x y) to (and (or x #t) (or y #t))
21:30:16 <ehird`_> (begin x y z) -> (and (or x #t) (or (and (or y #t) (or z #t)) #t))
21:30:24 <ehird`_> ihope_: begin executes all its arguments one after another
21:30:46 <ehird`_> (if cond (begin (display 1) (display 2)) (begin (display 3) (display 4)))
21:31:03 <ehird`_> of course it's trivial to compile in the first place :-)
21:31:24 <ehird`_> to most imperative languages, for instance, it can simply be ignored and used merely as a grouper
21:32:31 <oerjan> ehird`_: um, begin should return its last argument so you don't want to use or there?
21:32:48 <ehird`_> but it's the only way to get and to work
21:33:24 <oerjan> (and (or x #t) y) should work?
21:34:29 <faxathisia> just for the sake of generating horrible code
21:34:42 <faxathisia> e.g. context = new Context(Symbol.intern("succ"), new Lambda(new Cons(Symbol.intern("n"), new Nil()), new Lambda(new Cons(Symbol.intern("f"), new Cons(Symbol.intern("x"), new Nil())), new Cons(Symbol.intern("n"), new Cons(Symbol.intern("f"), new Cons(new Cons(Symbol.intern("f"), new Cons(Symbol.intern("x"), new Nil())), new Nil()))))), context);
21:35:11 <ehird`_> that's just parsing and convertnig to something that calls out to an interp
21:35:17 <ehird`_> also, new Nil()? there's only one ()
21:36:01 <ehird`_> oerjan: make a language with that, now
21:36:51 <faxathisia> i thought that's the definition of compiling
21:37:06 <ehird`_> compiling would remove the need for the scheme interpreter underneath all that :-)
21:37:24 <faxathisia> There's got to be -an- interpreter somewhere
21:37:54 <oerjan> sure, the jvm interpreter in your case
21:38:28 <faxathisia> it seems arbitrary (that to the JVM or x86 assembly) is compiling but this isn't
21:38:45 <oerjan> actually what faxathisia pasted doesn't seem that much interpreted.
21:38:55 <oerjan> it's just using lots of constructors
21:40:15 <oerjan> nah i'm speaking nonsense
21:40:29 <ehird`_> oerjan: well, evidently that's in a function somewhere but new Lambda(...) is NOT compiled by any reasnable definition :-)
21:41:05 <faxathisia> when I said compiling.. I meant changing something from one language to another
21:42:09 <ehird`_> speaking of compiling scheme, i've made myself a compiler and compiled the factorial scheme definition to a reasonable definition that would be easy to compile to. i'm thinking of making SCM_if a C if, though. CPS. http://paste.lisp.org/display/52894
21:42:17 <faxathisia> like abstraction elimination from \x\y -> SK combinators is compiling too ?
21:42:33 <ehird`_> hmm, SCM_OBJECT * returns should really be SCM_CALL returns
21:45:35 -!- cmeme has quit (Excess Flood).
21:46:25 <oerjan> faxathisia: i think the issue that your java version contains both the AST and an interpreter for it
21:46:30 <ehird`_> http://paste.lisp.org/display/52894#1 version 2
21:47:00 <ehird`_> oerjan: see any way i could improve that compiler output? :-)
21:47:26 -!- cmeme has joined.
21:47:30 <ehird`_> (of course, it uses absolutely 0 stack space so "fact" will never die even if you give it 384797435987359834759345 or something, and call/cc is extremely efficient)
21:48:03 * oerjan suddenly has an urge to press Mark as Spam >:)
21:50:36 * oerjan never said he actually did so
21:55:14 <ehird`_> SO, any comments on it? :P
21:58:15 <oerjan> how can it not use stack space? it is not tail recursive.
22:00:01 <oerjan> even if you allocate scheme frames on the heap there could still be plenty of them
22:00:11 <ehird`_> it returns a SCM_RETURN structure
22:00:16 <ehird`_> a trampoline handles the rest
22:00:40 <oerjan> ok it doesn't use C stack
22:00:41 <ehird`_> res = func(...); while (res != OK_STOP) { res = res.func(res.args); }
22:00:53 <oerjan> but still it uses plenty of scheme "stack"
22:01:11 <ehird`_> and this is nothing new. this is standard continuation-passing style
22:02:05 <oerjan> a continuation is a "stack"
22:02:40 <ehird`_> yes, but it still won't run out
22:03:04 <oerjan> but your scheme program is not tail recursive
22:03:21 <oerjan> it must remember the n's somewhere
22:03:38 <ehird`_> but it's goinig to run out a lot further in time than an actually recursive C version
22:03:42 <ehird`_> next on my list: scheme->python translator with CPS
22:06:17 -!- Sgeo has quit (Success).
22:07:10 -!- bsmntbombdood has quit (Read error: 110 (Connection timed out)).
22:09:43 <ehird`_> http://paste.lisp.org/display/52897 voila
22:40:25 -!- RedDak has quit (Remote closed the connection).
23:08:21 -!- puzzlet has quit (Remote closed the connection).
23:08:22 -!- puzzlet_ has joined.
23:17:39 -!- calamari has joined.
23:30:29 -!- puzzlet_ has quit (Remote closed the connection).
23:30:30 -!- puzzlet has joined.
23:37:24 -!- puzzlet_ has joined.
23:41:17 -!- ehird`_ has quit (Read error: 113 (No route to host)).
23:44:30 -!- puzzlet__ has joined.
23:47:01 -!- ehird` has joined.
23:47:43 -!- puzzlet has quit (Connection timed out).
23:49:46 -!- calamari has quit ("Leaving").
23:50:43 -!- puzzlet has joined.
23:54:45 -!- puzzlet_ has quit (Connection timed out).
23:56:19 -!- puzzlet has quit (Remote closed the connection).
23:56:20 -!- puzzlet_ has joined.