←2007-12 2008-01 2008-02→ ↑2008 ↑all
2008-01-01
00:01:25 <ehird`> oh, happy 2008
00:02:12 -!- Traveler2 has joined.
00:02:27 -!- pikhq has quit (Read error: 104 (Connection reset by peer)).
00:03:06 -!- Traveler2 has quit (Client Quit).
00:16:32 <calamari> ΧΧΠΙΙΙ
00:16:47 <bsmntbombdood> not for another 7 hours
00:16:59 <ehird`> no
00:17:01 <ehird`> it's 00:17
00:17:01 <ehird`> :P
00:17:05 <ehird`> in gmtland
00:17:06 <bsmntbombdood> no
00:17:09 <bsmntbombdood> it's 17:17
00:17:20 <ehird`> (getchar()+1 || 1) - 1 /* clever trick for a BF-getchar */
00:22:47 <calamari> 二千八
00:23:57 <ehird`> hello calamari
00:24:05 <calamari> hi ehird`
00:25:44 -!- pikhq has joined.
00:26:23 <ehird`> hello pikhq
00:27:08 <calamari> ‫תשס״ח
00:27:22 <ehird`> damnit haskell
00:28:13 <slereah_> What does this mean? Happy jew year?
00:28:40 <ehird`> hahaha
00:30:06 <calamari> ፳፻፰
00:30:30 <calamari> hope you guys have all these fonts, otherwise sorry for the line noise :)
00:30:50 <slereah_> Don't have the last one.
00:30:59 <ehird`> all but last
00:31:28 <ehird`> random esoteric idea
00:31:36 <ehird`> there's probably irc-alikes with s-expressions
00:31:39 <calamari> Ge'ez or Ethiopic has been assigned Unicode 3.0 codepoints between U+1200 and U+137F
00:31:51 <ehird`> but what about irc alikes with stack-based text
00:31:51 <ehird`> like forth
00:31:51 <ehird`> or postscript
00:32:12 <slereah_> Random esoteric idea. Transmit pieces of code to a million monkey with a million typewriter.
00:32:18 <slereah_> Then, magic happens.
00:32:30 <bsmntbombdood> unicode is evil
00:32:56 <ehird`> bsmntbombdood: no, unicode is wonderful
00:32:59 <ehird`> i luff unicode
00:34:19 <faxathisia> Why is yunicode evil?
00:35:01 <slereah_> Unicode is full of chars you will never use.
00:35:22 <slereah_> 3 terabites of it are just asian characters.
00:35:24 -!- slereah_ has changed nick to Slereah.
00:35:42 <oerjan> English is evil!
00:35:57 <oerjan> English is full of words you will never use.
00:36:11 <ehird`> Slereah: I think asian people may disagree.
00:36:31 <oerjan> The phone book is evil!
00:36:43 <oerjan> The phone book is full of people you will never speak with.
00:36:56 <faxathisia> bsmntbombdood
00:37:01 <bsmntbombdood> what
00:37:07 <oerjan> And let me not even _start_ on wikipedia.
00:37:07 <faxathisia> you keep saying this but I don't understand why
00:37:10 <Slereah> My sister was once bitten by a mse
00:37:39 <ehird`> R6RS is evil, it's full of stuff you'd never want to use.
00:37:41 <oerjan> is that like a moose, except with an Inspector Closeau accent?
00:37:42 <ehird`> oh wait, that's true
00:38:01 <Slereah> Heh.
00:38:01 <faxathisia> who the hell wrote R6RS
00:38:07 <bsmntbombdood> lol r5rs
00:38:09 <bsmntbombdood> *6
00:38:25 <ehird`> faxathisia: various people's arses
00:38:26 <Slereah> Everytime I read this acronym, I can't help but think of a little robot
00:38:37 <faxathisia> yeah
00:38:39 <Slereah> R2D2's cousin or something
00:39:29 <ehird`> R2RS was pretty sucky
00:39:29 <ehird`> :P
00:40:06 <faxathisia> hebrew don't celebrate new year anyway
00:40:14 <faxathisia> not today at least
00:40:42 <Slereah> I'm a jew, and I don't care for the jew calender!
00:40:50 <ehird`> Slereah: are you jewish or are you a jew
00:40:57 <bsmntbombdood> hey what a coincedence, i'm not a jew either!
00:40:58 <ehird`> big difference :-)
00:41:09 <ehird`> bsmntbombdood: Slereah *is* a jew
00:41:11 <ehird`> or jewish
00:41:17 <Slereah> Define both terms.
00:41:53 <bsmntbombdood> oh i misread
00:42:32 <ehird`> Slereah: Jewish means you adhere to the Abrahamic, one-mega-psychotic God religion
00:42:45 <ehird`> Jew means your heritage is Jewish
00:42:57 <Slereah> I'm an atheist.
00:43:47 <calamari> http://en.wikipedia.org/wiki/Quinary
00:43:53 <calamari> someone figure out 2008 in that
00:43:58 <calamari> :)
00:44:20 <calamari> I get lost between 100 and 125
00:44:44 <calamari> according to the calculator I need to encode 401 + 3
00:44:55 <faxathisia> 31013
00:45:05 <calamari> err 5 * 401 + 3
00:45:43 <Slereah> 1013?
00:46:34 <oerjan> hmph
00:46:37 <Slereah> Hm. Maybe not
00:46:57 <Slereah> Fuck that, I'll just use Mathematica
00:46:58 <ehird`> 'hello world' * 'main' channel say
00:47:01 <calamari> dambumiriw dambumirri rulu vs dambumirri dambumirri rulu
00:47:06 <ehird`> * 'main' channel join
00:47:13 <ehird`> hm.
00:47:31 <oerjan> showIntAtBase 5 intToDigit 2008 ""
00:47:32 <Slereah> 31013
00:47:45 <Slereah> Forgot the 3.
00:47:51 <pikhq> pslbnf { primary = /2+2/ => "4" print null };
00:47:55 <ehird`> (say (channel 'main') 'hello world') -> 'Hello, world!' 'main' channel say
00:52:00 <ehird`> i'm going to write a self-applicable scheme->forth compiler
00:52:02 <ehird`> that is all
00:52:30 <faxathisia> what does self-applicable mean\a
00:57:15 <ehird`> faxathisia: it can compile itself
00:57:20 <ehird`> and the result can compile itself again
00:57:20 <ehird`> etc
00:59:28 * oerjan has seen the term self-hosting for this
00:59:36 <ehird`> oerjan: yes
00:59:47 <ehird`> but self-applicable is a better term
01:00:01 <ehird`> self-hosting implies that if you repeat the process multiple times, it'll 'stack up' on self-hosts
01:00:45 -!- bsmntbombdood has quit (Connection reset by peer).
01:01:22 -!- bsmntbombdood has joined.
01:03:56 <faxathisia> ehird: Why don't you finish ISWYM first :P
01:05:35 <ehird`> faxathisia: 'cause it'll be a pain in the neck :P
01:12:11 -!- bsmntbombdood_ has joined.
01:17:15 -!- oerjan has quit ("Good night").
01:17:35 <ehird`> someone should write a brainfuck->unlambda translator
01:17:47 <ehird`> then, reduced-unlambda->ski
01:17:50 <ehird`> then ski->iota
01:17:55 <ehird`> voila, bf->iota
01:18:13 -!- bsmntbombdood has quit (Connection timed out).
01:18:18 <Slereah> I don't feel very motivated right now.
01:18:20 <faxathisia> brainfuck->unlambda translator souynds hardest
01:19:01 <ehird`> ok, bf->something-with-a-path-to-ski
01:19:08 <Slereah> How do you even make some sort of memory in Unlambda? Keep pairing elements?
01:19:55 <ehird`> Presumably, consing, yeah
01:20:00 <ehird`> bf->lambda-calculus might be easier
01:20:12 <ehird`> input should be specified in the prog!input form pre-compilation
01:20:22 <ehird`> and output should be extractable, somehow
01:20:36 <ehird`> so with a wrapper script, we could really have the slowest BF interp ever
01:20:47 <Slereah> Even slower than mine?
01:21:09 <Slereah> Don't be so sure, I'm working on a 1 tape version as we speak!
01:21:12 <ehird`> Probably
01:26:13 <ehird`> C question
01:26:24 <ehird`> does a signal handler call unwind the s tack?
01:33:45 <bsmntbombdood_> brainfuck->unlambda isn't that hard
01:34:01 <bsmntbombdood_> first just write a brainfuck->scheme
01:34:22 <pikhq> Then a scheme->unlambda. :p
01:34:24 <bsmntbombdood_> reduced scheme
01:36:43 <ehird`> brainfuck->scheme should be simple, yeah
01:36:55 <ehird`> if you ensure no imperatives, you can ->unlambda
01:36:58 <ehird`> well, you could do imperative IO
01:37:02 <ehird`> but that won't survive the translation
01:37:09 <ehird`> thus output is not in R-unlambda
01:37:28 <Slereah> R-unlambda?
01:41:35 <GregorR> ehird`: No, the signal is called in the current context - the program continues executing where it was when the signal handler ends. So, no unwinding is done.
01:41:53 <ehird`> excellent
01:42:07 <ehird`> so, assuming i can get myself an invalid page in the right place, my signal handler just needs to realloc
01:42:13 <ehird`> the invalid page bit is the hard part
01:42:23 <ehird`> since even mmap makes no guarantees, unless you pass it the right flag, which can then make it fail
01:55:43 <ehird`> GregorR: any bright ideas?
02:24:14 <ehird`> GregorR: pingify
03:15:46 <Slereah> BF on a one tape Turing machine is quite annoying to do.
03:16:03 <Slereah> I don't have a simple way to load a file on it.
04:50:38 -!- GreaseMonkey has joined.
06:14:14 <dbc> The program and the input both have to be in the tape to start with. Both are finite, and then you put the infinite brainfuck array after them. How are you setting tape state in the first place?
06:14:56 <dbc> You'll need a marker to distinguish the program from its input. I suggest '!' of course :)
06:17:09 <dbc> And then to separate the input from the array, hm. Maybe an EOF stored on tape. Then there are 257 tape symbols in total, which makes sense.
06:19:31 <pikhq> Well, of *course* you suggest !.
06:25:14 <Slereah> dbc : No need for input in the program
06:25:23 <Slereah> It's not just any Turing machine!
06:25:27 <Slereah> It's a choice machine!
06:26:17 <Slereah> I think my version work right now.
06:28:20 <Slereah> The tape looks something like this : http://farm3.static.flickr.com/2143/2153953116_145ff9967d_o.jpg
06:28:50 <Slereah> @ indicates the beginning of the code, $ the current position, LF the end of it.
06:29:12 <Slereah> for the beginning of the memory, or for the current position.
06:29:31 -!- faxathisia has left (?).
06:29:48 -!- faxathisia has joined.
06:30:29 <Slereah> Since the machine has to travel most of the memory and code for each instruction, it will probably be a whole lot slower than the 3 tapes version.
06:47:21 <dbc> So it only handles brainfuck programs that don't take any input?
06:47:33 <pikhq> So, it handles P'' programs?
06:48:01 <Slereah> The Turing machine has an input function.
06:48:07 <dbc> Ahhh.
06:48:33 <Slereah> choice machine being this :
06:48:35 <Slereah> "For some purposes we might use machines (choice machines or c-machines) whose motion is only partially determined by the configuration (hence the use of the word possible in 1). When such a machine reaches one of these ambiguous configurations, it cannot go on until some arbitrary choice has been made by an external operator. "
06:50:08 <dbc> That's right, I think you said the 3 tapes version was slow. Why was that?
06:50:24 <Slereah> Well, because it is.
06:50:44 <Slereah> I tried some programs, some never finished
06:51:09 <Slereah> The mandelbrot.b ran for 10 hours, outputing two lines before I turned it off.
06:51:22 <dbc> Does it average more than ten Turing instructions per brainfuck instruction?
06:51:50 <dbc> Or did it take a long time to do each Turing machine instruction...
06:52:05 <Slereah> See for yourself!
06:52:07 <Slereah> http://paste-it.net/5500/
06:52:10 <dbc> Okay.
06:52:43 <Slereah> The number of instructions isn't fix. But there's less than 5 states per instructions read.
06:53:00 <Slereah> I think it's mostly the fault of the Love Machine 9000.
06:53:47 <Slereah> Well, actually, there's exactly 5 states for the brackets.
06:53:57 <Slereah> But other than that, it's usually 2.
06:54:30 <Slereah> One state to do the instruction, one to go back on the code and increment it.
06:57:08 <dbc> Ah. Increment it, meaning move the code head right?
06:57:18 <Slereah> Yes.
06:57:32 <Slereah> That's the state g in the code.
07:05:39 <Slereah> I should put the unicode-like version online, too.
07:05:46 <Slereah> Errr, ASCII.
07:26:02 -!- calamari has quit ("Leaving").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:59:18 -!- GreaseMonkey has quit ("Welcome to 2008. I will be your tour guide.").
10:12:38 <GregorR> http://www.codu.org/wiki/?title=Hydra // card game we invented at the New Years party
10:45:09 -!- slereah_ has joined.
10:57:53 -!- Slereah has quit (Read error: 110 (Connection timed out)).
12:09:24 -!- oerjan has joined.
13:24:13 -!- Hiato has joined.
13:24:25 <Hiato> Wassabi all :)
13:24:28 -!- RedDak has joined.
13:29:41 <oerjan> just chili'ng out...
13:29:58 <Hiato> cool, same here, after last night ;)
13:31:09 <oerjan> oh yeah, happy new year
13:31:17 <Hiato> yip, you too :)
13:31:46 <Hiato> PS: 8tt.org is back so Full 0 now sits back at http://www.full0.8tt.org
13:34:55 -!- Hiato has quit ("Leaving.").
13:50:29 -!- jix has joined.
14:21:05 <bsmntbombdood_> "the new years party"
14:21:13 <bsmntbombdood_> GregorR likes to pretend he's sociable
14:21:44 <bsmntbombdood_> GregorR: it's ok, we understand you here
14:48:06 <oerjan> hey, he didn't say it was an offline party...
14:49:00 <oerjan> hm actually GregorR has to be sociable. he has to show off his hats after all...
14:50:39 <slereah_> Well, he could send photos on the interwebs!
15:11:11 -!- jix has quit (Read error: 145 (Connection timed out)).
15:12:05 -!- jix has joined.
15:25:34 -!- biribau has joined.
15:26:18 <biribau> hi, prolog basics questions have site here?
15:33:39 -!- oerjan has quit ("Dinner").
15:39:07 -!- biribau has left (?).
15:47:35 -!- Sgeo has joined.
15:48:59 <Sgeo> Hi all
15:52:15 <Sgeo> Anyone awake?
15:52:33 * Sgeo threatens to not work on PSOX if no one talks
16:00:47 <slereah_> Hi.
16:01:06 -!- slereah_ has changed nick to Slereah.
16:02:05 <Sgeo> hi
16:28:12 <oklopol> <ehird> wow, er, that's impressive.. i didn't know you could patternmatch lambdas
16:28:12 <oklopol> <ehird> oklopol: you'd like that!
16:28:16 <oklopol> what?
16:28:29 <oklopol> why :\
16:36:22 <Sgeo> ((?:[^\x00]|\x00{2}(?:.|\Z))*)(\x00.*)? is the most important regex in PSOX?
16:37:38 <Sgeo> Can that regex be made more efficient?
17:07:02 -!- Hiato has joined.
17:07:46 <Sgeo> Hi Hiato
17:07:58 <Hiato> Wassup Sgeo :)
17:08:09 <Sgeo> ((?:[^\x00]|\x00{2}(?:.|\Z))*)(\x00.*)?
17:08:25 <Hiato> say what?
17:08:46 <Sgeo> That's the most important regex in PSOX
17:09:12 <Hiato> lol, regexp's are not my strong point :P (especially in Ruby)
17:09:18 <Hiato> Why, what does it do?
17:09:47 <Sgeo> breaks a line apart into the outputted text with 0x00 0x00 etc. and the command part with 0x00
17:09:55 <Hiato> aha
17:10:03 <Hiato> oh yeah huh, ^\xoo
17:10:04 <Hiato> :)
17:10:26 <Hiato> so, anything news, perhaps a version I can start meesing with?
17:10:30 <Hiato> *messing
17:11:21 <Hiato> *new
17:11:38 <Hiato> meh, I hat tyops :P
17:12:23 <oklopol> x:xs can be used as a pattern matcher because a list can be represented as just one cons. a+b cannot pattern match because there's an infinite amount of conses for addition, 6=6+0=5+1=... now, if one were to introduce the concept of virtual cons cells into a language, and make a cons be a set of rules of dependence, so that an addition cell knows it's (result - b, result - a).
17:12:25 * Sgeo is working on the psox.types module
17:12:45 <oklopol> this way you could pattern match like the haskell n-1 pattern, but in a more sophisticated fashion.
17:13:11 <oklopol> well, haskell prolly has a much more sophisticated reason for that to work, but i don't know it, and i prefer my own ideas.
17:14:01 <Sgeo> ??
17:14:22 <Hiato> :), I generally prefer my own ideas too, over others that is. Some call it stubbornness ;) Oh, and I agree with Sgeo: ??
17:15:26 <oklopol> these would be virtual cells of course, so when doing a pattern match for 5 on (n+3), 5 would be converted to an addition cell as (result-b, 3), where b=3 = (2,3), so n=2
17:15:50 <oklopol> IF the conversion into an addition cons cell should fail, the pattern match simply would fail.
17:16:11 <oklopol> this would be correct at least in this case, since only numbers can be subtracted from
17:16:19 <Hiato> I'm still not quite with you... but I guess it's not aimed at me :) (Otherwise ti would be allot longer)
17:16:25 <Sgeo> Is this anything to do with PSOX? If so, please be warned that I don't have a drop of understanding of what you're talking about
17:16:51 <oklopol> but, you could also have the possibility to specify domains for which the conversion always works
17:17:13 <Hiato> is this part of the Graphica spec?
17:17:35 <oklopol> oh, right, in case in the final pattern, there were still cells that are defined in terms of other cells, the pattern itself would be incorrect, for example if you tried to pattern matchon (a+b)
17:17:37 <oklopol> *match on
17:17:53 <Hiato> ...
17:18:08 <oklopol> although, that could just take a random cons cell that represents 5 as an addition.
17:18:41 <oklopol> sometimes, all that matters might be that you separate the object into *some* other objects that, when consed, result into the original object.
17:18:56 <oklopol> not in the case of numbers and addition, prolly, but with lists, for example.
17:19:08 <Hiato> Sgeo: is he talking to us?
17:19:20 <oklopol> :)
17:19:30 <oklopol> this is very esolang-related, and not that high-level
17:19:33 <oklopol> so... yes?
17:19:37 <oklopol> anyway, i'll continue
17:19:40 <oklopol> :P
17:19:50 <Hiato> sure, don't let me stop you
17:19:58 <Sgeo> If it's PSOX related, you are hereby REQUIRED to translate it into something that makes sense..
17:20:01 <oklopol> just /ignore me for a while in case not interested, this is just may way to clear my thoughts, if okay.
17:20:22 <Hiato> Sure, proceed
17:20:38 <oklopol> so, for instance quicksort's pivoting, pmatch the list into lpart++[pivot]++rpart
17:20:41 <Hiato> I will interject when (rather if) I have something to say
17:20:47 <oklopol> because all we want is *some* pivot
17:21:15 <oklopol> (++ lpart (++ [pivot] rpart))
17:21:36 <oklopol> if i didn't have this headache, i'd manually pattern match that
17:21:46 <oklopol> might be an interesting concept
17:22:04 <oklopol> but once again it's so clever yet simple it must already be in use.
17:22:08 <Hiato> er.. yes .. amm.. no .. whichever is more appropraite :)
17:22:18 <oklopol> well, not clever, but... fun?
17:23:07 <oklopol> sorry, was lost in my thoughts, so didn't read what you said between my messages
17:23:22 <oklopol> you didn't *get* that? in that case i'll happily explain
17:23:26 <Hiato> sure, no problem, and believe me, it wasn't important
17:23:28 <oklopol> i just assumed you don't care :-)
17:23:49 <Hiato> lol, I care, but don't *concentrate*
17:23:53 <oklopol> hehe
17:23:53 <Hiato> :)
17:24:01 <oklopol> do you know what pattern matching is?
17:24:14 <Hiato> amm, well yes (I think)
17:24:40 <Hiato> as in "The cat ate the mouse" pattern would be "at' twice?
17:24:47 <Hiato> or not
17:24:48 <Hiato> ....
17:24:51 <Hiato> nevermind
17:24:55 <Hiato> amm.. No
17:24:59 <Hiato> I don't
17:26:11 <oklopol> hehe
17:26:13 <oklopol> sooooo
17:26:20 <oklopol> like, if you have the list [1,2,3]
17:26:26 <Hiato> yip
17:26:33 <oklopol> that's basically (cons 1 (cons 2 (cons 3 nil)))
17:26:38 <oklopol> in lispy fashion
17:26:40 <oklopol> do you get that?
17:26:41 <Hiato> cons?
17:26:49 <Hiato> well, other than the cons, yes
17:26:51 <oklopol> construct, i guess
17:26:55 <Hiato> oh, ok
17:26:56 <Hiato> sure
17:27:08 <oklopol> it means (cons head-of-list tail-of-list)
17:27:14 <oklopol> where tail-of-list is usually the rest of the list
17:27:15 <Hiato> aha
17:27:19 <Hiato> cool
17:27:22 <Hiato> proceed
17:27:32 <Hiato> (with caution ;) )
17:27:45 <oklopol> now, let's define a function that takes the second element of a list and returns that *2
17:28:03 <Hiato> ok sure
17:28:17 <oklopol> you could do it with L -> (tail tail List) * 2
17:28:26 <oklopol> where tail does (cons a b) -> b
17:28:29 <oklopol> got it?
17:28:33 <Hiato> 1 sec
17:28:39 <oklopol> sdfapojoaifjg
17:28:42 <oklopol> sorry.
17:28:47 <Hiato> lol, wait, thinking
17:28:50 <oklopol> L -> (tail head List) * 2
17:28:59 <oklopol> think about the correct one, though :) the latter
17:29:00 <Hiato> ? which one
17:29:02 <oklopol> ---
17:29:04 <oklopol> FUCK.
17:29:06 <Hiato> ok, wait some more
17:29:08 <Hiato> :)
17:29:12 <oklopol> OKAY, that's incorrect too, sorry
17:29:14 <oklopol> headache.
17:29:17 <Hiato> meh
17:29:20 <oklopol> L -> (head tail List) * 2
17:29:36 <oklopol> means, take L as param
17:29:42 <Hiato> ooh
17:29:42 <oklopol> then return what's after ->
17:29:43 <Hiato> ok
17:29:52 <Hiato> wait
17:29:59 <Hiato> tail list of head is 2,3
17:30:02 <Hiato> not just 2
17:30:02 <oklopol> could explain my code if i invent the notation on the fly...
17:30:18 <oklopol> L = 1,2,3
17:30:21 <Hiato> yip
17:30:24 <oklopol> so tail L = 2,3
17:30:28 <Hiato> yes
17:30:30 <oklopol> so head tail L = 2
17:30:35 <Hiato> oh, I see
17:30:39 <oklopol> for a more imperative version
17:30:40 <Hiato> not tail of head
17:30:44 <Hiato> but head of tail
17:30:45 <Hiato> roger
17:30:47 <Hiato> :)
17:30:50 <Hiato> gotcha
17:30:53 <Hiato> im with you
17:31:27 <oklopol> L -> ListTail = tail List; SecondHead = tail ListTail; return SecondHead*2
17:31:33 <oklopol> although you already got it.
17:31:39 <oklopol> i just wanted to write that for some reason
17:31:45 <Hiato> sure
17:31:46 <Hiato> :)
17:32:22 <oklopol> okay, no the idea of pattern matching is, instead of explicitly taking the *head* of a list, we just take the list in as if it were already spliced into a head and a tail.
17:32:24 <oklopol> so
17:33:11 <oklopol> (: 1 (: 2 (: 3 Nil))), ":" is cons here, it's just a shorter word so i don't have to type cons, although this explanation is longer than all the conses i've ever written, so it is pretty useless.
17:33:34 <Hiato> ok
17:33:37 <Hiato> go on
17:33:40 <oklopol> so, we define the function as (: A (: B L)) -> 2*B
17:33:51 <oklopol> so, instead of just putting the param into a variable
17:33:59 <oklopol> we have a pattern we match for the parameter
17:34:10 <Hiato> aha
17:34:14 <oklopol> and inside the pattern, there are variables, that hold the parts of the parameter.
17:34:20 <Hiato> L being significant of the rest of the list?
17:34:32 <oklopol> this works because most data can be, and is often represented by a tree.,
17:34:43 <oklopol> which you prolly know?
17:34:49 <Hiato> trees
17:34:51 <Hiato> yip
17:35:00 <Hiato> and somewhat Alpha Bet Pruning
17:35:08 <Hiato> *Alphabeta
17:35:11 <Hiato> and minimaxing
17:35:18 <oklopol> BFStmt=+|-|>|<|[BFStmt]|,|.
17:35:26 <Hiato> no, sorry
17:35:27 <oklopol> hmmm
17:35:31 <oklopol> alphabeta?
17:35:31 <Hiato> what the hell is that
17:35:38 <oklopol> what is what?
17:35:38 <Hiato> never seen it like that
17:35:45 <Hiato> BFStmt=+|-|>|<|[BFStmt]|,|.
17:35:47 <oklopol> oh
17:35:51 <Hiato> you claim it to be alphabeta
17:35:52 <oklopol> just a random notation.
17:35:57 <Hiato> oh, ok
17:36:05 <oklopol> | was jsut my way to separate possibilites for a branch
17:36:18 <oklopol> actually a pretty standard way
17:36:23 <oklopol> i don't know alphabeta...
17:36:25 <Hiato> oh, ok
17:36:36 <Hiato> well, its pruning, like minimaxing
17:36:37 <oklopol> anyway, L was the rest of the rest of the list.
17:36:40 <Hiato> except different
17:36:42 <Hiato> :)
17:36:49 <Hiato> cool
17:37:29 <oklopol> (: A (: B L)) -> 2*B can be written A:B:L->2*B if we notate : as infix and right grouping, right
17:37:31 <oklopol> ?
17:37:41 <oklopol> 1:2:3:Nil is the list.
17:37:56 <Hiato> yip
17:37:59 <Hiato> get it
17:38:02 <oklopol> so... we pattern match as 1->A, 2->B, 3:Nil->L
17:38:30 <oklopol> actually, the cons representation is much clearer when you pattern match, just felt it'd look bad if i wrote it on irc.
17:38:34 <Hiato> so, actually L = 1->A, 2->B, 3:Nil
17:38:37 <Hiato> in other words
17:38:44 <oklopol> nope!
17:39:02 <oklopol> L would just be (: 3 Nil)
17:39:09 <Hiato> wa?
17:39:13 <oklopol> because A and B take the first two elements
17:39:18 <oklopol> L only gets the last.
17:39:25 <Hiato> oh, I see
17:39:37 <Hiato> just that the 3:NIL->L got me
17:39:39 <Hiato> yip
17:39:41 <Hiato> 3:Nil
17:39:45 <Hiato> is the last one
17:39:48 <Hiato> roger
17:39:51 <Hiato> back with you
17:40:20 <oklopol> in (: A (: B L)) -> 2*B, (: 1[place of A] (: 2[Place of B] (: 3 Nil)[place of C]))
17:40:32 <oklopol> uhh that was ugly.
17:40:44 <Hiato> but
17:40:46 <Hiato> yueah
17:40:48 <Hiato> I get it
17:41:04 <Hiato> (: 3 Nil)[place of C] surely place of L
17:41:12 <Hiato> not C
17:41:13 <oklopol> anyhow, do you see what the function (4+A) -> A*2 would do given 2 as a parameter?
17:41:18 <oklopol> sorry, you are correct
17:41:35 <oklopol> i'm very bad at keeping the details right
17:41:40 <Hiato> sure, no prob
17:41:42 <Hiato> lets see
17:41:55 <Hiato> (4+A) -> A*2
17:41:58 <Hiato> given 2
17:42:17 <oklopol> it cannot actually be executed as straightforwardly as the list one, because a list IS (cons Head Tail), while a number is NOT (+ A B), but just a number.
17:42:18 <Hiato> surely 4
17:42:29 <oklopol> -4.
17:42:33 <Hiato> oh
17:42:39 <Hiato> A-4 * 2
17:42:49 <oklopol> indeed.
17:42:51 <Hiato> was my third guess
17:42:55 <Hiato> :)
17:43:05 <oklopol> (4+A) find such A that (4+A) = param, basically.
17:43:15 <Hiato> yeah, ok
17:43:33 <oklopol> just as the pattern match (: A (: B L)) meant "find A, B and L so that (: A (: B L)) equals the parameter"
17:44:03 <Hiato> ooh, ok, im starting to see the light now
17:44:08 <oklopol> good.
17:44:25 <oklopol> this is a trivial concept, but *very* interesting if you ask me
17:44:41 <Hiato> I'm glad I learnt it :)
17:44:42 <oklopol> not trivial as in "lol you should know it already", i meant like simple
17:44:49 <Hiato> cool
17:45:01 * Sgeo fails to understand Lispy stuff
17:45:19 <Hiato> no worries Sgeop, it took me this long to get it :)
17:45:24 <Hiato> *Sgeo
17:45:26 <oklopol> Sgeo: (Function Argument1 Argument2 ... ArgumentN)
17:45:42 <oklopol> where arguments can be sexps too.
17:46:00 <oklopol> (sexp is (A B C ... N) that is.)
17:46:43 <oklopol> basically, in lisp you take the program, which is a list (A B C .. N), you evaluate B, C.. N first, then evaluate the function A with the evaluated arguments.
17:46:58 <oklopol> B.. N are evaluated just like in A, in a recursive fashion
17:47:06 <oklopol> also, i suck at explaining right now, sorry.
17:47:38 <Hiato> :) No worries, teaching fools is a great gift (with reference to me, for the fools part)
17:47:47 <oklopol> anyway, Hiato: do you see why pattern matching for *any* pattern would be impossible?
17:47:57 <oklopol> i mean, for operators you can define yourself.
17:48:21 <Hiato> yes, infinte possibilties
17:48:25 <Hiato> *infinite
17:48:31 <oklopol> i did not mean that.
17:48:41 <oklopol> in the list case, you can do A:B unambiguously
17:48:42 <Hiato> then, no
17:48:47 <Hiato> yes
17:49:02 <oklopol> and with most operators, you can pattern match on some elements
17:49:08 <oklopol> like 5 -> (A+3)
17:49:17 <Hiato> a=2
17:49:20 <Hiato> sure
17:49:26 <oklopol> and [1,2,3,4,5] -> [1,2,3]++A
17:49:38 -!- RedDak has quit (Remote closed the connection).
17:49:49 <Hiato> a=5
17:49:51 <Hiato> roger
17:50:02 <oklopol> in there, A++B could do any split for a list, BUT if you do [1,2,3]++A you only get one list.
17:50:21 <Hiato> aha, yes, I see
17:50:27 <Hiato> ambiguity in pattern search
17:50:38 <Hiato> results in multiple possibilites
17:50:47 <oklopol> often, that is true for binary operators, : just happens to be an example of an operator where you can do it with two vars
17:50:49 <Hiato> or vagueness
17:50:53 <oklopol> yes, indeed
17:51:00 <oklopol> but, that was not my point
17:51:08 <Hiato> ok
17:51:14 <oklopol> a pattern should never have these ambiguities.
17:51:26 <Hiato> alright
17:51:41 <oklopol> it's the programmer's job to make them correct, and such that there is only one way to cut the object pmatched.
17:51:43 <oklopol> BUT
17:52:56 <oklopol> there is another problem
17:53:11 <Hiato> which is what?
17:53:16 <oklopol> we can make a function, whose converse makes us solve the halting problem or something.
17:53:47 <Hiato> amm.. ok
17:53:56 <oklopol> and, often functions are only easy to do one way, even though they actually have just one converse.
17:54:01 <oklopol> i'll show an example
17:54:13 <Hiato> sure
17:54:16 <Hiato> please do
17:54:18 <oklopol> @ is a function that takes a list of primes, and multiplies them.
17:54:25 <Hiato> ok
17:54:25 <oklopol> easy to implement
17:54:27 <Hiato> understand
17:54:34 <Hiato> no need to go urther
17:54:37 <Hiato> *further
17:54:38 <oklopol> L -> reduce * L
17:54:42 <Hiato> like modulus
17:54:54 <oklopol> modulus?
17:54:57 <oklopol> it doesn't mod :)
17:55:02 <oklopol> it multiplies the elements
17:55:04 <Hiato> no, no
17:55:10 <Hiato> I meant an easy one way thingy
17:55:13 <Hiato> remainder
17:55:17 <oklopol> @ [2,3,3,7] -> 16
17:55:19 <Hiato> 5 mod 2 = 3
17:55:19 <oklopol> ...
17:55:26 <oklopol> lol, actually not 16 xD
17:55:27 <Hiato> but 3 * X =5 ?
17:55:34 <Hiato> blah
17:55:40 <Hiato> the other way areound
17:55:46 <oklopol> modulus doesn't have an unambiguous converse :)
17:55:47 <Hiato> but you get what I'm saying
17:55:53 <Hiato> that's the point
17:55:55 <Hiato> :)
17:55:56 <oklopol> no!
17:56:05 <Hiato> with the halting problem
17:56:14 <Hiato> and stuff
17:56:16 <Hiato> the primes
17:56:20 <Hiato> all the same
17:56:22 <oklopol> it's the programmer's job to ensure there always is an unambiguous converse for the function we are cutting.
17:56:27 <oklopol> err
17:56:31 <oklopol> pattern matching
17:56:33 <oklopol> ...
17:56:36 <Hiato> never mind
17:56:40 <oklopol> function we are pattern matching with
17:56:41 <Hiato> ok, anyway proceed
17:56:44 <Hiato> yeah
17:56:55 <Hiato> @ [2,3,3,7] -> 16
17:57:00 <Hiato> we where there
17:57:02 <oklopol> so, no if you have *any number*, you can always do the pattern match @L
17:57:14 <oklopol> and it's always unambiguous.
17:57:14 <Hiato> yes
17:57:17 <Hiato> yes
17:57:22 <Hiato> limited selection of primes
17:57:32 <Hiato> who's product is Number
17:57:34 <Hiato> get it
17:57:41 <oklopol> now, @ does multiplication, it's inverse does factorization.
17:57:48 <Hiato> roger
17:58:14 <oklopol> my idea was just to inject into an operator knowledge about it's reversibility
17:58:42 <Hiato> so, given @, you idea would be to say @(fatcorise)
17:58:43 <Hiato> ?
17:58:54 <Hiato> or !(ambigous)
17:58:56 <Hiato> ?
17:59:01 <oklopol> ?
17:59:19 <Hiato> ! being, say the modulus function
17:59:24 <oklopol> i'll show how it's used, not sure you got me fully here
17:59:26 <oklopol> or did you...
17:59:27 <Hiato> rather !(irreducibnle)
17:59:28 <oklopol> hmm
17:59:36 <Hiato> well, go ahead
17:59:41 <Hiato> provide an example
17:59:50 <Hiato> then I''l be able to say whether I understood or not
18:00:56 <oklopol> well, basically, you could do a factorizing function as follows: first the multiplication of primes: L :: [Prime] -> Int = L -> Product L
18:01:12 <oklopol> let's say our language defines a number type Prime
18:01:16 <oklopol> which represents any prime number.
18:01:26 <Hiato> go on
18:01:33 <oklopol> now, the factorizing function would be "@ L -> L"
18:01:37 <oklopol> whoooops
18:01:43 <Hiato> ...
18:01:45 <Hiato> lost me
18:01:51 <oklopol> @ :: [Prime] -> Int = L -> Product L
18:01:56 <oklopol> you see
18:02:02 <Hiato> aha
18:02:04 <Hiato> yes
18:02:11 <oklopol> @ L means multiply the primes in L to get the number they represent.
18:02:30 <oklopol> so, @ L as a *pattern match* means find such L that @ L is the parameter.
18:02:40 <Hiato> yes
18:02:41 <Hiato> I see
18:02:46 <oklopol> now, since the parameter is an integer, and @ multiplies a list of primes, it would factorize the number.
18:02:52 <Hiato> so kind of linear equationns
18:03:05 <Hiato> yeas
18:03:13 <Hiato> OOOHH OOOH
18:03:13 <Hiato> wait
18:03:21 <oklopol> were we to make @ also check that the list it's used on is sorted, @ L would automatically return a sorted list of prime divisors.
18:03:21 <Hiato> I think I get thwe whole plot
18:03:26 <oklopol> good :)
18:03:48 <Hiato> so, we can't make a universal patten mathcer
18:03:49 <oklopol> now, this is all my own thinking, i don't know if others think about patterns that much.
18:03:50 <Hiato> because
18:03:58 <Hiato> it has no way of knowing what the inverse is??
18:04:12 <Hiato> rather
18:04:12 <oklopol> that is the basic problem, yes
18:04:16 <Hiato> the inverse procedure
18:04:21 <Hiato> hooray for me :)
18:04:28 <Hiato> and congratulations to you :D
18:04:39 <oklopol> there is a way to find a problem whose inverse is the halting problem
18:04:54 <Hiato> go ahead
18:05:06 <oklopol> it's just half the stuff i *taught* you i made up on the fly, i don't yet have that good an intuition on the general pattern matching.
18:05:12 <oklopol> i have no idea how to construct it.
18:05:16 <Hiato> (PS: THis is actually interesting now that I understand it :) )
18:05:24 <oklopol> heh, i think so too
18:05:30 <Hiato> hrmm
18:05:31 <Hiato> well
18:05:32 <oklopol> perhaps i should add it into graphica........
18:05:36 <Hiato> Yeah
18:05:39 <Hiato> that would be nice
18:05:48 <Hiato> not sure how it would come into play
18:05:52 <oklopol> actually, i was thinking, i'd make an esolang that provides automatical converses.
18:05:55 <Hiato> unlence referencing node trees
18:06:07 <Hiato> hrmm
18:06:10 <oklopol> and put it in the "super-turing" category
18:06:13 <Hiato> that would be aweosme
18:06:16 <Hiato> if possible
18:06:19 <Hiato> Oh yeah
18:06:28 <Hiato> then simply give it a function garunteed to terminate
18:06:33 <Hiato> and you solve the halting problem
18:06:38 <Hiato> (Hopefully)
18:07:10 <oklopol> yeah, it could be made a *best-effort* compiler.
18:07:20 <Hiato> Yeah, true
18:07:29 <oklopol> you can actually do stuff like A+3=7 in prolog too.
18:07:30 <Hiato> would be insanely hard though
18:07:36 <Hiato> really?
18:07:37 <oklopol> that just hangs, but it's there.
18:07:43 <Hiato> :)
18:07:44 <oklopol> well yeah, it's just it doesn't find it :)
18:07:58 <oklopol> but, the language allows you to ask it questions it cannot answer.
18:08:03 <Hiato> but I doubt you could go x^2 - 4 = 0
18:08:07 <Hiato> wicked
18:08:08 <oklopol> so, mine isn't more superturing than prolog.
18:08:15 <Hiato> it would be
18:08:25 <oklopol> you can't, and you can't really go A+5=0 either, since it just hangs...
18:08:33 <Hiato> if it could reduce things down to simpler elements
18:08:40 <Hiato> which are by default reducabel
18:08:48 <Hiato> and then solves for, or pmatches
18:08:53 <oklopol> hmm
18:09:09 <oklopol> indeed, i didn't even realize it'd automatically solve equations
18:09:10 <Hiato> so take x^2 - 4 =0
18:09:15 <Hiato> yip
18:09:17 <Hiato> :)
18:09:18 <oklopol> was thinking more list'y.
18:09:27 <Hiato> true
18:09:30 <Hiato> but even so
18:09:33 <oklopol> since i'm more interested in trees and graphs than numbers, usually
18:09:37 <Hiato> it would still be hellkish powerful
18:09:42 <Hiato> oh, I see
18:09:49 <Hiato> but no worries
18:09:56 <Hiato> you get it working in lists
18:10:00 <Hiato> and I gruntee
18:10:04 <oklopol> well, given that the language would *guarantee* that it find the inverse, yes, it would be powerful :)
18:10:09 <Hiato> that it will be able to do anything
18:10:20 <Hiato> :D
18:10:28 <Hiato> what you waiting for, get cracking :)
18:10:38 <oklopol> hehe
18:10:40 <oklopol> oh, hey
18:10:43 <oklopol> every function
18:10:50 <oklopol> is Pattern match -> Variable
18:10:52 <oklopol> xD
18:10:57 <Hiato> but anyway, I still say find things that are unambiguously reducable, and redice them, then pmatch, then build back up
18:10:58 <oklopol> you cannot do *any* computation!
18:11:07 <Hiato> true
18:11:09 <Hiato> very true
18:11:23 <oklopol> well, any computation in the result part.
18:11:37 <Hiato> simply proven by uncertainty principle ;)
18:11:46 <oklopol> actually, you could just have the pattern match, and have the result be a variable with # prepending it or something :)
18:11:50 <oklopol> hmm?
18:11:57 <Hiato> yeah, I like
18:12:05 <Hiato> the yopu can do mathematics in it :)
18:12:19 <Hiato> hrmm
18:12:31 <Hiato> but that would be more difficult to execute
18:12:31 <oklopol> that would actually be *really* esoteric, and actually i'm starting to feel this is quite brilliant! AND then i realize i'm making prolog ;)
18:12:41 <oklopol> ::::::::)
18:12:47 <Hiato> Well, not entirely ;)
18:12:50 <Hiato> lol
18:12:53 <Hiato> as you said
18:13:02 <Hiato> prolog dies when it sees a + 5 =1
18:13:03 <oklopol> well, prolog, but with a very different idea.
18:13:07 <Hiato> or whatever
18:13:09 <Hiato> precisely
18:13:17 <Hiato> I see real purpose for this creation of yours
18:13:20 * Sgeo keeps working on psox.types
18:13:22 <Hiato> beyond esotericality
18:13:29 <Hiato> ( :) )
18:13:47 <Hiato> imagine that
18:14:06 <Hiato> a language which could solve functions, or pmatch, as the case may be
18:14:15 <Hiato> and then, naturally calculate inverses
18:14:24 <Hiato> that would be soo powerful
18:14:31 <oklopol> hmmmm, actually, it would lessen it's prologity, if you could help the language with the inverse, like specify that A+B=C --> A=C-B, B=C-A
18:14:42 <Hiato> yeah
18:14:48 <Hiato> call them, helper functions
18:14:49 <Hiato> :)
18:14:52 <Hiato> aha
18:14:56 <Hiato> then we get towards AI
18:14:56 <oklopol> yeah!
18:15:07 <oklopol> every function = helper annotations + pattern match
18:15:14 <Hiato> (wonders if the labgauge could solve for : itself)
18:15:18 <Hiato> wooho
18:15:21 <Hiato> I like that
18:15:35 <Hiato> very cool
18:15:40 <Hiato> *language
18:15:56 <oklopol> i'll start right after i've looked at the other channels, i was highlighted at about the time i wrote the initial idea on the chan ;)
18:16:09 <Hiato> lol, sure, go for
18:16:09 <oklopol> which was like an hour ago xD
18:16:10 <Hiato> it
18:16:12 <Hiato> lol
18:16:22 <Hiato> please please please, keep me updated on this one
18:16:48 <Hiato> (Oh, and this will also provide the freedom of sytax choice, removing all the funcky prolog)
18:16:52 <Hiato> *funky
18:16:56 <Hiato> *syntax
18:18:06 <oklopol> indeed.
18:18:09 <oklopol> oh, fuck.
18:18:09 <Hiato> *** A language is born ****
18:18:12 <Hiato> >
18:18:15 <Hiato> *?
18:18:16 <oklopol> a problem.
18:18:19 <Hiato> so : ?
18:18:22 <Hiato> ?
18:18:37 <oklopol> a chick told me to go fuck her, bluntly put :-)
18:18:44 <Hiato> damn
18:18:56 <Hiato> you missed it :P
18:18:58 <Hiato> ...
18:19:15 <oklopol> i'd actually prefer doing the language, to be honest, but i'm too polite to say no
18:19:16 <Hiato> run run
18:19:22 <Hiato> oh, lol, ok
18:19:25 <oklopol> and that was not a joke :\
18:19:28 <oklopol> asdf
18:19:30 <oklopol> fdsafdsadf
18:19:32 <Hiato> aksdjl
18:19:37 <Hiato> ditto
18:19:43 <Hiato> so
18:19:44 <Hiato> say yes
18:19:49 <Hiato> and just take some paper with
18:19:51 <Hiato> ;)
18:20:01 <oklopol> okay, see ya, i'll keep ya updated ->
18:20:02 <oklopol> hehe
18:20:07 <Hiato> lol, cool
18:20:09 <Hiato> :)
18:20:16 <Hiato> cheers
18:20:18 <Sgeo> oklopol, waiait, on IRC?
18:20:24 <oklopol> Sgeo: ?
18:20:26 <Hiato> lol
18:20:28 <Hiato> classic
18:28:56 <Hiato> Well, just grabbed Menuet OS 0.74b so gonna look around, be back late
18:28:57 <Hiato> cheers
18:29:03 -!- Hiato has left (?).
18:30:42 <oklopol> Sgeo: she asked that on irc, yes; the sex will prolly be the offline-type, though.
18:31:25 <oklopol> also, cya, 'll keep ya up to date on the lang ->
18:32:18 * pikhq laughs his ass off
18:34:11 -!- lby has joined.
18:34:25 -!- lby has quit (Client Quit).
18:39:52 <Sgeo> "This is a python program that can convert bianry number( binary is a language that computers use to comunicate with other) to a normal digital number and the other way around."
18:39:55 <Sgeo> http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/496778
18:40:01 <Sgeo> Excuse me while I hurt someone
18:45:40 <Slereah> Hey Sgeo, 010010101000101010111
19:04:24 -!- ehird` has quit (Success).
19:28:21 -!- faxathisia has quit ("Leaving").
19:29:06 <pikhq> Sgeo, that program is just awful.
19:34:59 -!- Hiato has joined.
19:35:07 <Hiato> Back
19:35:09 <Hiato> :)
19:39:36 <Sgeo> wb Hiato
19:43:02 <Hiato> any notable progress Sgeo?
19:43:11 <Sgeo> Working on types.py
19:43:17 <Hiato> cool
19:43:28 <Hiato> would you say Python is a good language to learn?
19:43:34 <Hiato> better than Perl or C, for example
19:43:38 <Hiato> or Ruby
19:48:03 <Sgeo> Yes
19:48:08 <Sgeo> Though I might be biased
19:48:33 <Hiato> Well, that's impossible as I asked for your opinion ;)
19:50:14 <Hiato> Any funky esolangs that you specifically enjoy?
19:50:26 <Hiato> Just trying to get some ideas, I want to design another lang
19:50:47 <Hiato> because the unnamed one is way to hard to programme in
19:50:55 <Hiato> and Full 0 is way to easy :)
19:54:49 <Hiato> *too
19:55:06 <Hiato> a man of few words :P
19:55:08 -!- calamari has joined.
20:07:05 -!- oerjan has joined.
20:13:31 -!- RedDak has joined.
20:37:33 <Sgeo> Hi calamari and oerjan and RedDak
20:37:44 <calamari> hi Sgeo
20:37:47 <oerjan> hi
20:38:06 <oerjan> and Happy New Year to anyone i haven't said it to yet
20:58:34 -!- RedDak has quit (Read error: 104 (Connection reset by peer)).
21:18:16 -!- RedDak has joined.
21:18:44 <Sgeo> FNUMs are giving me a headache
21:19:19 <Sgeo> and so will LNUMs
21:19:21 <Sgeo> ARGH
21:28:50 <Hiato> Here we are:
21:28:50 <Hiato> "Hello, World!" in my (as of yet) unnamed esolang:
21:28:50 <Hiato> {{>>~~~~{-<}~~~~~~~~~{-<-<}<<}</(<<<){[<]}:>:{>>{~~~~~~~~
21:28:50 <Hiato> {<}~{>}}<<}\~>{{~{v}}>>>v{~}^<<<}/(<<<){[<<]}:>:{>>{~~~~~
21:28:50 <Hiato> ~~~{<<}~{>>}}<<}\~{>>{vvvvvvvv~~~~~~~~~~~~~~~}<<}~{>>{vvv
21:28:50 <Hiato> v~~~~~~~~~~~~~}<<}~{>>{^^^^^^^^^^~}<<}~{>>{v~~~~~~~{{<<}~}
21:28:52 <Hiato> v{~}vvvvvvv{~{>>}}^^^^^^~~~{{<<}~}vvvv{~{>>}}v~~~}<<}~<{{^
21:28:54 <Hiato> ^^}}~{>>{vvvvvv~{{<<}~{>>}}^^^^^^^~~~~~~~~~~~{{<<}~{v>}}^^
21:28:56 <Hiato> ^^^^}}/{{()}}{[<<<<]}:>:{{~v}}\}
21:34:12 -!- RedDak has quit ("I'm quitting... Bye all").
21:35:02 -!- RedDak has joined.
21:48:40 <Sgeo> re RedDak
21:50:35 <Hiato> alrighty, well cheers all
21:50:58 -!- Hiato has left (?).
22:05:16 <Sgeo> pikhq, Overand oklopol anyone else who cares, is it ok if PSOX.py is 2.5?
22:05:25 <Sgeo> relies on Python 2.5 I mean?
22:06:12 <pikhq> I think I have Python 2.4 ATM. . .
22:09:48 -!- Dagide has joined.
22:12:51 <Sgeo> Actually, n/m maybe
22:14:50 -!- RedDak has quit (Read error: 113 (No route to host)).
22:35:33 -!- Sgeo has quit (Connection timed out).
22:36:14 -!- Sgeo has joined.
22:36:38 <Sgeo> Would anyone miss the extended function names "feature"?
22:42:33 <Sgeo> Anyone?
22:48:04 -!- GreaseMonkey has joined.
22:48:40 <Sgeo> Hi GreaseMonkey
22:48:52 <GreaseMonkey> oh hai
22:49:36 <GreaseMonkey> {{print($1);}("Hello ".concat($1,"!"));}("Sgeo");
22:50:08 -!- Dagide has quit (Remote closed the connection).
22:57:00 <Sgeo> "Removing extended functions to make my life easier.. yes, I'm being mean …"
22:58:32 <Sgeo> Also, all the implementations of the domains are going to go right in the same directory with everything else
23:02:40 <Sgeo> pikhq, you awake?
23:02:43 <Sgeo> Anyone else awake?
23:03:07 <pikhq> NO.
23:04:50 <Sgeo> ??
23:05:01 <pikhq> No, I'm not awake. ;)
23:22:55 <Sgeo> http://trac2.assembla.com/psox/browser/trunk/impl/psox/domain.py
2008-01-02
00:17:21 <Sgeo> pikhq, Slereah Overand oklopol others
00:17:22 <Sgeo> http://trac2.assembla.com/psox/browser/trunk/ex/example_domain.py
00:34:29 -!- jix has quit (Read error: 131 (Connection reset by peer)).
00:37:54 -!- jix has joined.
00:58:06 <Sgeo> Bye all
00:59:17 -!- Sgeo has quit (Remote closed the connection).
01:31:48 -!- pikhq has quit (Read error: 104 (Connection reset by peer)).
01:33:58 -!- pikhq has joined.
01:38:56 -!- oklofok has joined.
01:39:05 <oklofok> mörning y'all
01:39:13 <Slereah> Well, it's 2 AM here.
01:39:19 <oklofok> here too
01:39:22 <oklofok> oh
01:39:24 <oklofok> 4,
01:39:26 <oklofok> lol
01:39:32 <oerjan> good mourning
01:40:04 <Slereah> But mrning.
01:40:04 <oklofok> i think it's coding time now.
01:40:23 <oklofok> lucky i found this computer
01:40:34 <Slereah> In your dreams?
01:40:46 <oklofok> ...my dreams?
01:40:55 <Slereah> Well, it is 4 AM!
01:41:00 <oklofok> :o
01:41:03 <oklofok> oh my god...
01:41:09 <oklofok> non ascii ...mileys
01:41:14 <oklofok> *smileys...
01:41:16 <Slereah> :
01:41:43 <oklofok> i instaneously hate any client that has the option for that.
01:41:54 <oklofok> who wants to see a yellow idiot.
01:42:18 <tejeez> 8--D
01:42:32 <Slereah> Even if it's this little fellow?
01:42:36 <Slereah> http://www.encyclopediadramatica.com/%E0%B2%A0_%E0%B2%A0
01:45:35 <oklofok> 07:12:01 <oklopol> i wish i were as cool as you all <<< i love reading random #esoteric logs <3
01:46:47 <oklofok> it's a bit scary i usually remember every conversation
01:47:55 <oklofok> 11:31:22 <oerjan> i guess if your head explodes from laughing that would a lollipop.
01:47:57 <oklofok> xD
01:48:16 <oklofok> waking people up here lolling.
01:48:31 <oklofok> guess i'm tired or something
01:48:34 <oklofok> OK, i'll stop now
01:55:56 <oklofok> heh, can't find a text editor in vista :)
01:55:57 <oklofok> )
01:56:23 <Slereah> What, no Notepad?
01:56:38 <oklofok> no, just idiot user.
01:56:48 <oklofok> does someone have vista experience?
01:56:56 <oklofok> hey
01:57:00 <oklofok> windows\!
01:57:06 <Slereah> I didn't hear many good things from Vista.
01:57:10 <oerjan> windows, yes.
01:57:16 <Slereah> So I'm not buying it.
01:57:35 <oerjan> i saw this great link, think it was in the IWC forum...
01:57:59 <oklofok> found notepad
01:59:36 <oerjan> this was it: http://dotnet.org.za/codingsanity/archive/2007/12/14/review-windows-xp.aspx
02:01:05 <oklofok> (+ a 0) {a}
02:01:07 <oklofok> (+ a (S b)) {+ (S a) b}
02:01:08 <oklofok> [@-#2 @-#1]
02:01:33 <oklofok> the syntax is mostly from graphica, which none of you know... but it's pretty intuitive ;-)
02:01:45 <oklofok> the [...] is the part of interest
02:02:00 <oklofok> it describes the mechanism to *reverse* addition
02:02:31 <Slereah> The unholy process of substraction?
02:02:45 <oklofok> with an equation that finds the original params given the result and part of the params.
02:03:11 <oklofok> Slereah: yes, but reversing subtraction is a bit more complex
02:03:19 <oklofok> and real functions are *very*
02:04:24 <Slereah> Very what?
02:05:10 <oklofok> (- a 0) {a}
02:05:12 <oklofok> (- (S a) (S b)) {- a b}
02:05:14 <oklofok> [@+#2 #1-@]
02:05:27 <oklofok> lol, was soooo hard to solve a-b=c for b xD
02:05:39 <oklofok> @ is the result.
02:05:50 <Slereah> Is this Oklotalk or something?
02:05:54 <oklofok> no
02:06:04 <oklofok> this is something we discussed earlier with hiato
02:06:04 <Slereah> Reminds me of recursive functions.
02:06:13 <oklofok> well, sure
02:06:21 <Slereah> With the silly f(a,b) notation for operatos
02:06:23 <oklofok> the interesting part is the pattern matching thingie.
02:06:50 <oklofok> i'm not reinventing the whole way we think about computation when i make a language...
02:07:58 <oklofok> numbers can be described with anything that can be inc'd, dec'd and checked for null, tuples offer a trivial way
02:08:08 <oklofok> oh, right, multiplication and division
02:08:20 <oklofok> or at least multiplication :-)
02:08:31 <oerjan> go forth and multiply!
02:08:44 <Slereah> Even adders?
02:08:52 <Slereah> I heard they need logs to multiply.
02:08:54 <oerjan> use a log table, silly!
02:09:23 <oklofok> oerjan: much easier with peano arithmetic! thanks, why didn't i think of that...
02:09:46 <oklofok> hmm... even divisors might be interesting when it comes to pattern matching...
02:10:02 <Slereah> Wlel, it is quite easy with Peano!
02:10:04 <Slereah> http://membres.lycos.fr/bewulf/Russell/Calc9.txt
02:10:21 <oklofok> the pattern n@(_%3) would only pmatch numbers divisible by 3
02:10:24 <Slereah> I should finish that Peano calculator someday.
02:10:31 <oklofok> @ is what it is in haskell
02:10:54 <oklofok> if division is only defined when numbers actually are divisible, that is.
02:11:49 <oklofok> it'd be nice if that actually arose naturally from what i'm currently doing here... but i don't think it's possible to get even trivial stuff like that to work...
02:11:52 <oklofok> we'll see i guess
02:12:45 <oklofok> (- 0 b) :(
02:12:50 <oklofok> nice syntax for failing? :P
02:21:26 <oklofok> (/ a 0) (/ a@(a<b) b) <>
02:21:27 <oklofok> (/ 0 b) {0} (/ (a+b) b@(S bt)) {S a*bt}
02:21:29 <oklofok> {- a/b=c <=> a=bc <=> b=a/c -}
02:21:31 <oklofok> [@*b @/a]
02:21:39 <oklofok> shall i explain?
02:21:51 <oklofok> i shall.
02:22:25 <oklofok> a function consists basically of patterns
02:22:33 <oklofok> (...) is a pattern
02:22:56 <oklofok> if a pattern matches the argument, the vars are set and the next {...} after that is evaluated
02:23:16 <oklofok> unless before that, a <> is found
02:23:23 <oklofok> in which case the whole function fails.
02:23:37 <oklofok> so, if it was used in a pattern match or something, that would fail.
02:23:52 <oklofok> now, division fails when a number is divided by another number bigger than it
02:24:00 <oklofok> and, if you divide by zero
02:24:14 <oklofok> also, it's wrong... whoops
02:25:14 <oklofok> second line should be (/ 0 b) {0} (/ a (S 0)) {a} (/ (a+b) b@(S bt)) {S a/bt}
02:26:00 <oklofok> so, zero divided by something is 0, something divided by one is something, and the last is the general case
02:26:11 <oklofok> notice the (a+b) pattern there
02:27:03 <oklofok> it would first find b, which gets the value of the second arg, while bt get's that-1, after that, the a pattern (a+b) gets the value of b
02:27:14 <oklofok> now, we defined the inverse of addition earlier
02:27:22 -!- jix has quit ("This computer has gone to sleep").
02:27:23 <oklofok> that will be used to find the value of a for a given b
02:27:29 <oklofok> anyone at all interested?
02:28:04 <oklofok> (a<b) is interesting, basically booleans are represented as fail/no fail
02:29:09 <Slereah> Hm.
02:29:23 <Slereah> Maybe I should try some interpreter for recursive functions.
02:29:27 <Slereah> For the lulz.
02:31:37 <oklofok> haha, cons works without any code, actually xD
02:32:00 <Slereah> Cons?
02:32:24 <oklofok> (Cons a b) will produce the tuple (Atom(cons) ... ...); if there is no pattern starting with that atom, there will be no substitution and that will just stay as it is!
02:32:29 <oklofok> i love tree rewriting <3
02:32:31 <oklofok> Cons?
02:32:44 <oklofok> the cons lisp uses to represent lists
02:32:51 <oklofok> among other langas
02:32:55 <oklofok> *langies
02:32:57 <Slereah> I don't speak Lisp.
02:33:25 <oklofok> [1, 2, 3] -> (Cons 1 (Cons 2 (Cons 3 Nil)))
02:33:43 <oklofok> basically just a way to use tuples for lists.
02:34:08 <oklofok> although in list cons is lowercase, but i guess not important
02:36:44 <oklofok> *lisp
02:49:41 <oklofok> (Qsort list@(Scramble (++ (lpart@(PivotBy <=! list pivot)
02:49:43 <oklofok> pivot:rpart@@(PivotBy >! list pivot)))) {(Qsort lpart)++pivot:(Qsort rpart)}
02:49:44 <oklofok> (PivotBy Test (Scramble list)@(Reduce (Test pivot) list) pivot) {list}
02:49:57 <oklofok> xD
02:50:11 <oklofok> i have to rethink a bit ;)
02:50:35 <oklofok> but, i think it's entirely possible to do quicksort by pattern matching, guess i should see how prolog does it
02:51:11 <oklofok> the part to notice there is lpart++pivot:rpart, letting the interps choose how to cut it :D
02:51:29 <oklofok> could be random by default, when ambiguous match.
02:51:49 <oklofok> also, @@->@
02:52:49 <oklofok> the function that scrambles a list in random order, Scramble, can be used to signify there is no information about the list's structure, and it can be bruteforced to fit the rest of the pattern
02:54:31 <oklofok> where the actual quicksort algo comes in, is that the brute force will instantly find the solution for a single step, since it knows the whole list needs to be cut in to rpart, pivot and lpart (defined in ++...) and the rules do not overlap
02:55:54 <oklofok> but, requires a lot of increase in sophistication of course.
02:57:48 <oklofok> oh, right, i could call Scramble Perm like prolog... would sound a bit less hacky :)
02:57:53 <oklofok> hacky as in hack'y
03:06:51 <oklofok> okay, some operations are used for their failure detection, like < and == sometimes
03:06:57 <oklofok> and others just for their result.
03:07:06 <oklofok> some operators, however, need both
03:07:26 <oklofok> i was thinking <! for the "strict" one which may fail
03:07:34 <oerjan> General failure eating hard disk
03:07:38 <oklofok> but then again, <? for "does this work? :\"
03:08:06 <oklofok> what do ya think? this is just convention, so feel free to answer without much thinking.
03:10:07 <oklofok> hmm... actually, booleans could be failure/identity
03:10:14 <oklofok> so you could match on (> n 3)
03:10:30 <oklofok> to get anything bigger than 3 in, and failing otherwise
03:17:04 -!- oerjan has quit ("Good night").
03:18:11 <oklofok> (Tobin 0) {0} (Tobin 1) {1}
03:18:13 <oklofok> (ToBin n*!2) {0:(ToBin n)}
03:18:15 <oklofok> (ToBin n*2) {1:(ToBin n)}
03:19:01 <oklofok> actually...
03:19:21 <oklofok> i have no idea what it means for multiplication to be strict... :)
03:20:44 <oklofok> oh, right...
03:21:07 <oklofok> non strict multiplication can produce either 4 or 5 when 2 is multiplied by 2 :)
03:31:32 <Slereah> What's the difference between [a,b] and (a,b) on the snake?
03:31:48 <Slereah> I suddenly get parenthesis when I was expecting some list brackets.
03:32:01 <oklofok> list, tuple
03:32:07 <oklofok> in that order
03:32:43 <Slereah> Why do I suddenly get tuples?
03:33:09 <oklofok> i have no idea.
03:33:27 <oklofok> you obviously have () where you should have [] somewhere?
03:34:54 <Slereah> Well, I don't use use [] or ().
03:35:03 <Slereah> Just sequence functions.
03:35:10 <oklofok> oh
03:35:16 <Slereah> But well, let's just cheat.
03:35:37 <oklofok> yeah
03:35:40 <oklofok> let's
03:37:12 <Slereah> Poifect.
03:41:43 <Slereah> [[['plus', ['n1', '0']], ['p', ['1', '1'], 'n1']], [['plus', ['n1', ['s', 'n2']]], ['s', [['p', ['3', '3'], ['n1', 'n2', ['plus', ['n1', 'n2']]]]]]]]
03:41:46 <Slereah> Thar.
03:41:51 <Slereah> That should do it.
03:42:00 <Slereah> Now, to make stuff with that.
03:42:23 <oklofok> p [1 1] n1?
03:42:36 <Slereah> It's from this :
03:42:37 <Slereah> plus(n1,0()) = p(1,1)(n1)
03:42:37 <Slereah> plus(n1,s(n2)) = s(p(3,3)(n1,n2,plus(n1,n2)))
03:43:13 <oklofok> oh, right, aren't those trivial recursive functinos?
03:43:16 <oklofok> functions
03:44:09 <Slereah> Primitive, even.
03:44:15 <oklofok> errr, right
03:44:25 <oklofok> sounded a bit weird
03:44:45 <oklofok> but all i could think was partial or trivial
03:52:29 <oklofok> okay, my second idea for the night
03:52:43 <oklofok> this is for Cise, my conciseness oriented lang
03:52:47 <oklofok> Afl*2+
03:52:49 <oklofok> 1,0,0,1,1 -> 19
03:52:50 <oklofok> (((((1*2 + 1)*2 + 0)*2 + 0)*2 + 0)*2 + 1)
03:53:01 <oklofok> Afl takes two functions, and a list
03:54:04 <oklofok> it then makes the list's head "result", then continuously applies the first function to the list and combines it with the next element of the list with the second function
03:54:10 <oklofok> now, the beauty lies in parsing.
03:55:33 <oklofok> so...
03:56:10 <oklofok> Afl needs two functions as params. if it should parse what follows it as (Afl * 2), it would only get one function
03:56:17 <oklofok> so it gathers 2 muct belong to *
03:56:31 <oklofok> so, this becomes (Afl (* 2) +)
03:56:34 <oklofok> which is correct.
03:56:51 <oklofok> currying + prefix - spaces == rox
03:57:01 <oklofok> rox as in cool, i guess
03:57:21 <oklofok> also type inference to determine parsing :)
03:57:44 <oklofok> blah
03:58:21 <oklofok> you're not getting at al excited :-)
03:58:25 <oklofok> *all
03:58:33 <oklofok> gonna do another invention ->
03:58:41 <oklofok> this time something totally awesome.
04:10:14 <oklofok> hmm, think i got it
04:38:56 <oklofok> 10:33:34 <lament> people put in in the url in programming-related channels because of flooding
04:38:57 <oklofok> 10:33:38 <lament> i don't think we ever had that problem
04:52:38 <Slereah> Man. That primitive function idea is harder than originally thougt!
04:54:36 <oklofok> hehe
04:54:41 <oklofok> i think i need to sleep a while.
04:54:44 <oklofok> cya ->
04:55:06 <Slereah> Bye.
04:55:15 -!- GreaseMonkey has quit ("Welcome to 2008. I will be your tour guide.").
05:03:01 -!- calamari has quit ("Leaving").
06:39:26 -!- Slereah has quit (Read error: 110 (Connection timed out)).
06:52:02 -!- slereah_ has joined.
06:52:13 -!- slereah_ has changed nick to Slereah.
06:52:15 -!- Slereah has changed nick to slereah_.
06:52:36 -!- slereah_ has changed nick to Slereah.
07:10:26 -!- slereah_ has joined.
07:19:57 <slereah_> "It is not immediate that the predecessor function can be reduced to an iteration, and hence is representable in the ?-Calculus. It was Kleene [1935] who saw how to do this, apparently during a visit to the dentist."
07:19:59 <slereah_> Heh.
07:28:12 -!- Slereah has quit (Read error: 110 (Connection timed out)).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:44:37 -!- faxathisia has joined.
09:43:20 -!- Hiato has joined.
09:50:11 <Hiato> Wassabi
09:56:24 <Hiato> Oklopol, did you get time yesterday to start on the spec? Or were you too busy ;) (heh)
10:15:16 -!- Hiato has quit ("Leaving.").
12:11:45 -!- Sgeo has joined.
12:12:08 <Sgeo> I think I dreamed about PSOX last night :/
12:13:37 <faxathisia> hehe
12:15:59 -!- jix has joined.
12:17:22 <Sgeo> Hi [PSOX] jix [MUST.. WORK.. ON.. PSOX!!!]
12:21:42 <Sgeo> I considered taking a hiatus from PSOX, but can't help thinking that I shouldn't do that until PSOX 1.0
12:21:55 <jix> hi
12:21:57 <jix> brb
12:21:58 -!- jix has quit ("CommandQ").
12:22:26 -!- jix has joined.
12:23:41 <Sgeo> wb
12:24:17 -!- helios_24c3 has joined.
12:24:28 -!- helios_24c3 has quit (Connection reset by peer).
12:54:23 -!- Sgeo has quit (Remote closed the connection).
13:16:35 -!- Sgeo has joined.
13:16:52 * Sgeo wonders if he can finish the core of PSOX.py today
13:17:02 <Sgeo> Then all that would be left is speccing and implementing the builtin domains
13:21:01 -!- oerjan has joined.
13:28:12 -!- pikhq_ has joined.
13:28:59 -!- pikhq has quit (Read error: 104 (Connection reset by peer)).
13:29:52 <oerjan> slereah_: kleene's dentist had this weird habit of removing all his teeth and then reinserting those that were healthy.
14:15:55 -!- jix has quit ("CommandQ").
14:20:03 -!- RedDak has joined.
14:25:48 <Sgeo> Hi RedDak
14:25:56 * Sgeo makes healthy progress on PSOX
14:26:08 <Sgeo> Although I'm starting to think that PSOX may be bad for my health
14:27:28 -!- mwizard has joined.
14:27:54 -!- mwizard has left (?).
15:51:05 <Sgeo> PSOX.py is for Python 2.5 now
15:56:01 -!- puzzlet has quit (Remote closed the connection).
15:56:08 -!- puzzlet has joined.
16:06:05 -!- puzzlet has quit ("Lost terminal").
16:06:25 -!- puzzlet has joined.
16:21:32 -!- RedDak has quit (Remote closed the connection).
16:25:28 -!- pikhq_ has changed nick to pikhq.
16:26:36 -!- puzzlet has quit (Remote closed the connection).
16:26:43 -!- puzzlet has joined.
16:41:00 * slereah_ just received this book : http://www.amazon.com/Undecidable-Propositions-Unsolvable-Computable-Functions/dp/0486432289/ref=pd_bbs_sr_1/002-0209491-2396801?ie=UTF8&s=books&qid=1191580925&sr=8-1
16:42:02 <faxathisia> oh that looks well good
16:42:05 <faxathisia> I want that
16:43:19 -!- faxathisia has quit ("Leaving").
16:44:50 <slereah_> The cover seems to be made of those m-functions of Turing
16:45:49 -!- pikhq has quit (Read error: 104 (Connection reset by peer)).
16:50:04 -!- tesseracter has quit (Remote closed the connection).
16:50:24 -!- pikhq has joined.
16:55:46 -!- oerjan has quit ("Fnord, er Food").
16:56:25 -!- slereah_ has changed nick to Slereah.
16:58:49 <Sgeo> Hi pikhq
16:59:00 <Sgeo> Is it ok if PSOX.py requires Python 2.5?
17:00:18 <Slereah> "No, start over!"
17:01:59 -!- pikhq_ has joined.
17:02:10 -!- pikhq has quit (Nick collision from services.).
17:02:15 -!- pikhq_ has changed nick to pikhq.
17:06:15 -!- puzzlet has quit (Remote closed the connection).
17:06:19 -!- puzzlet has joined.
17:06:48 -!- wooby has joined.
17:10:52 -!- wooby has quit (Client Quit).
17:11:30 -!- tesseracter has joined.
17:23:02 -!- RedDak has joined.
17:28:30 -!- puzzlet has quit (Remote closed the connection).
17:28:37 -!- puzzlet has joined.
17:55:53 -!- puzzlet has quit (Remote closed the connection).
17:56:01 -!- puzzlet has joined.
18:07:53 <Sgeo> http://trac2.assembla.com/psox/browser/trunk/impl/psox/psoxtypes.py
18:09:07 <Sgeo> Anyone awake?
18:09:44 <Slereah> I'm typing in my sleep.
18:40:20 <SimonRC> hi
18:40:57 * SimonRC wonders if LL actually have enough cash to handle everyone withdrawing their L$ at once...
18:42:25 -!- puzzlet_ has joined.
18:42:30 -!- puzzlet has quit (Remote closed the connection).
19:09:40 -!- jix has joined.
19:25:04 -!- ihope has joined.
19:25:15 <ihope> Ello.
19:25:25 -!- ihope has quit (Client Quit).
19:26:51 -!- ihope has joined.
19:26:57 <ihope> Well, that was interesting.
19:27:22 <ihope> I guess freenode and ircatwork don't like each other right now.
19:27:42 <ihope> Anyway, is there any hope of me being able to make an esolang based on knot theory?
19:31:07 <ihope> I'm considering tossing out the knots and making it links of unknots.
19:36:04 <ihope> Or have a tape of "strings" forming an infinite braid.
19:36:08 <Sgeo> re ihope
19:36:17 * Sgeo is working on PSOX
19:36:29 <Sgeo> I got psoxtypes.py down
19:36:39 <Sgeo> First part of the implementation that's FINISHED
19:36:50 <Sgeo> http://trac2.assembla.com/psox/browser/trunk/impl/psox/psoxtypes.py
19:36:51 <ihope> Yay :-)
19:37:10 <Sgeo> Also, is http://trac2.assembla.com/psox/browser/trunk/impl/psox/fd.py sane?
19:47:56 <ihope> Oh, if you orient each unknot and span them with surfaces, you can count the number of times each unknot goes through each other unknot's surface and in which direction, and say that opposite directions cancel each other out...
19:49:38 <Sgeo> There is a definate lack of ihope in Sine
19:50:38 <ihope> Indeed.
19:51:43 <ihope> What was that CGI:IRC one?
19:57:37 -!- puzzlet_ has quit (Read error: 104 (Connection reset by peer)).
19:57:42 -!- puzzlet has joined.
20:04:26 -!- pikhq_ has joined.
20:04:39 -!- puzzlet has quit (Remote closed the connection).
20:04:42 -!- puzzlet has joined.
20:05:48 -!- pikhq has quit (Read error: 104 (Connection reset by peer)).
20:07:16 -!- pikhq_ has changed nick to pikhq.
20:12:40 -!- puzzlet has quit (Remote closed the connection).
20:12:44 -!- puzzlet has joined.
20:17:06 -!- Jontte has joined.
20:58:28 -!- pikhq has quit (Read error: 104 (Connection reset by peer)).
21:01:55 -!- pikhq has joined.
21:05:31 -!- jix has quit (Nick collision from services.).
21:05:41 -!- jix has joined.
21:11:19 -!- puzzlet_ has joined.
21:11:24 -!- puzzlet has quit (Remote closed the connection).
21:27:59 -!- jix has quit (Nick collision from services.).
21:28:09 -!- jix has joined.
21:44:47 -!- calamari has joined.
21:46:37 -!- oerjan has joined.
21:55:07 -!- jix has quit (Nick collision from services.).
21:55:17 -!- jix has joined.
22:24:20 -!- GreaseMonkey has joined.
22:28:53 -!- oklofok has left (?).
22:33:32 -!- Jontte has quit ("Konversation terminated!").
22:36:18 -!- Jontte has joined.
22:47:18 -!- Jontte has quit (Remote closed the connection).
22:49:53 -!- Jontte has joined.
23:55:12 -!- jix has quit ("CommandQ").
23:58:31 -!- RedDak has quit (Remote closed the connection).
2008-01-03
00:09:55 -!- pikhq has quit (Read error: 110 (Connection timed out)).
00:16:28 -!- pikhq has joined.
00:26:21 <Sgeo> pikhq, how would you react if I said that I was scrapping PSOX?
00:26:56 <pikhq> That depends: why are you scrapping PSOX?
00:27:03 <pikhq> Something better, or just fed up?
00:27:20 <Sgeo> pikhq, I'm not. I just want to know how you'd react >.>
00:27:25 <pikhq> Ah.
00:27:39 <pikhq> I'd appreciate it if you're moving on to something better.
00:27:43 -!- jix has joined.
00:27:51 <pikhq> Be a bit annoyed if it was just you being fed up.
00:28:00 <pikhq> And pissed off if you were selling it to Microsoft. :p
00:28:04 <Sgeo> lol
00:28:18 * Sgeo is getting fed up with PSOX File Descriptors, tbh
00:29:20 <Sgeo> Also, I don't know what license to put it under, but that's not too relevent right now
00:29:48 <Sgeo> Maybe MIT?
00:29:49 <pikhq> GPL.
00:30:13 <Sgeo> All this license stuff just goes over my head
00:30:36 <Sgeo> I'm a programmer, not a lawyer, dangit!
00:30:43 <Sgeo> >.>
00:31:37 <pikhq> Just GPL it.
00:32:07 <Sgeo> pikhq, also, can you help make the file descriptor stuff sane?
00:33:03 <Sgeo> http://trac2.assembla.com/psox/browser/trunk/spec/psox.txt
00:40:22 <Sgeo> grr I don't know how to implement the input pseudodomain
00:40:37 <Sgeo> hm, n/m maybe
00:42:54 <Sgeo> I think I can do this
00:45:00 <Sgeo> "EOF status is 0x01 if there was no EOF encountered, 0x00 if there was an EOF"
00:45:04 <Sgeo> Should I reverse that?
00:45:09 <Sgeo> n/m
00:54:25 <Sgeo> Ok, I finished db_input.py
00:54:41 <Sgeo> Almost
00:56:34 <Sgeo> pikhq, look at this horribleness
00:56:34 <Sgeo> http://trac2.assembla.com/psox/browser/trunk/impl/psox/db_input.py
01:08:47 <Sgeo> pikhq, you awake? Or at least capable of typing in your sleep? >.> lol
01:09:35 <pikhq> Heh.
01:10:36 <pikhq> Hrm.
01:14:07 -!- UnrelatedToQaz has joined.
01:14:11 <UnrelatedToQaz> hey all
01:15:07 <Sgeo> Hi UnrelatedToQaz
01:18:50 -!- calamari has quit ("Leaving").
01:27:45 * oerjan wonders who Qaz is
01:31:16 <Slereah> Well, not that guy.
01:32:13 <UnrelatedToQaz> I don't know who he is
01:32:22 <UnrelatedToQaz> I just know that I'm unrelated to him.
01:32:30 <UnrelatedToQaz> Or her or it.
01:32:39 <oerjan> ic
01:33:03 <Slereah> What if he's your long lost twin?
01:33:35 <UnrelatedToQaz> He can't be, as that would mean s/he was related to me. And s/he isn't.
01:33:47 <Slereah> Well, that's why I said "lost".
01:34:36 <UnrelatedToQaz> But it's the definition of Qazness that I am unrelated to Qaz. If a claimant to the title of Qaz was related to me, they couldn't be Qaz.
01:34:39 <UnrelatedToQaz> Uc?
01:36:24 <Slereah> I see
01:37:24 * oerjan found a Qaz computer virus or something when googling
01:37:47 <oerjan> good you're not related :)
01:39:41 <ihope> I think I've figured out my knot programming language, slightly.
01:39:59 <UnrelatedToQaz> Oh?
01:40:03 <ihope> "Knot" meaning "link of unknots", which really isn't a knot at all.
01:40:20 <UnrelatedToQaz> Elucidate, if you would.
01:40:47 <ihope> Though I guess they wouldn't have to be unknots... anyway, I guess ponderings are required.
01:41:39 <Slereah> Ponder away thn!
01:43:19 <ihope> First, the unknots-only version, I guess.
01:44:10 <ihope> Memory consists of a single link. The only operation I can really think of right now is destroying one knot.
01:45:34 <ihope> Every knot in the link is oriented.
01:46:25 <ihope> "Reading" a knot consists of grabbing a list of all knots which must "go through" the knot and which direction they go through.
01:47:00 <ihope> Going through a knot is defined as crossing a Seifert surface of the knot. I guess that means that "must go through" would be crossing all Seifert surfaces of the knot.
01:47:57 <oklopol> i hope i'm not the only one who doesn't know what seifert surface is and will not google.
01:48:03 <oklopol> because you'll have to explain.
01:48:16 <oklopol> and i need coke
01:48:19 <ihope> What, doesn't everybody automatically know what a Seifert surface is? :-P
01:48:25 <oerjan> oklopol: he's not :D
01:48:32 <ihope> A Seifert surface is just any surface whose boundary is the knot.
01:49:28 <ihope> Stick a knot in bubble solution and hopefully you'll end up with one of its Seifert surfaces. :-)
01:49:43 <oklopol> are we talking about the same kind of knots?
01:49:47 <UnrelatedToQaz> So "crossing a Seifert surface" basically means "going through the knot".
01:50:09 <ihope> Yes.
01:50:20 <UnrelatedToQaz> Me or oklopol>
01:50:33 <ihope> As in yes to Unrelated, possibly not to oklopol.
01:50:45 <oerjan> well - anything must probably cross _some_ seifert surface
01:50:56 <oklopol> are knots the stuff that you do with rope :)
01:51:01 <UnrelatedToQaz> Is this "knot" as in "thing tied in string, rope, flax or hemp"?
01:51:08 <ihope> Indeed, but it's harder to cross all Seifert surfaces.
01:51:23 <ihope> This is a knot: http://en.wikipedia.org/wiki/Image:ThreeFoldKnot.jpg
01:52:05 <oerjan> a knot is an embedding of a topological circle in R3, iirc
01:52:10 <UnrelatedToQaz> Ah, that sort of knot. As in knot theory knots.
01:52:17 <ihope> Yes yes.
01:52:26 <oklopol> graphica with the possibility to specify how the nodes are connected!
01:52:28 <oklopol> knottica
01:52:33 <oklopol> ...or, a better name.
01:52:47 <ihope> Why would I be speaking of Seifert surfaces of actual knots? :-P
01:54:02 <Slereah> "Knot another knot language"
01:54:56 <UnrelatedToQaz> So, once you've read your knot...?
01:55:17 <Slereah> Profits!
01:55:21 <ihope> Yeah, that.
01:55:37 <oklopol> ohh... the seifert surface is the 2d surface of the knot there?
01:56:16 <oklopol> i assumed you'd think of knots are a logical structure rather than a presentation of the rope's surface...
01:56:23 <oklopol> unless i'm wrong and that's true.
01:56:32 <oklopol> in which case i'd also be right.
01:57:02 <ihope> A Seifert surface isn't the surface of a torus that's tied in a knot.
01:57:25 <ihope> This is a Seifert surface, though it's a Seifert surface of an entire link: http://en.wikipedia.org/wiki/Image:Moebiusband_wikipedia.png
01:58:16 <Slereah> WIKIPEDIAAAAA
01:58:22 <Slereah> This is just silly.
02:00:25 <ihope> A trefoil knot's Seifert surface: http://www.josleys.com/show_gallery.php?galid=303
02:01:48 <ihope> And that Seifert surface has a hole in it, so I guess you can pass another knot through that hole and it wouldn't really be going through the trefoil knot, kind of.
02:03:12 <oklopol> asdf, why can't i even get anything without inventing it myself :-)
02:03:49 <oklopol> *ever
02:05:04 <oklopol> seifert surface is a *surface* though? it's a 2d (or other) plane?
02:05:24 <oerjan> surface = 2d but may be curved
02:05:34 <oerjan> e.g. a sphere
02:05:52 <oklopol> right
02:22:40 <ihope> Hmm, I just got another idea.
02:22:58 <UnrelatedToQaz> a surface is like a manifold, right?
02:23:08 <Slereah> Yes.
02:23:10 <ihope> Instead of just a link, you have a bunch of oriented "strands" which can be open or closed. If they're closed, they
02:23:21 <Slereah> Although there's surfaces which aren't manifolds.
02:23:45 <ihope> If they're closed, they're just knots, but if they're open, they begin and end at surgery points.
02:23:53 -!- jix has quit ("CommandQ").
02:24:08 <UnrelatedToQaz> Surgery...that sounds familiar.
02:24:30 <UnrelatedToQaz> It's a topology thing, right? Cutting and stitching.
02:24:50 <ihope> A surgery point has two "in" slots and two "out" slots, and each may or may not be filled. If all of them are filled, the surgery point can be replaced by a crossover in either direction or... um, lemme get a picture.
02:25:03 <ihope> Removing a section of something and replacing it with something that... fits.
02:25:54 -!- Jontte has quit ("Konversation terminated!").
02:25:58 <ihope> Think of surgery points as the yellow things under this section: http://en.wikipedia.org/wiki/Knot_theory#Knot_polynomials
02:29:57 <ihope> So I guess you can create surgery points in random places, and you can create strands going between them, and you can delete the surgery points to connect the strands.
02:30:29 <ihope> I guess more pondering will definitely be required before I can turn this into a language, eh?
02:31:27 <Slereah> Well, at least I don't have any clue of how to do it!
02:32:19 <oklopol> i wonder if you could make a borromean ring with any number of rings...
02:32:31 <oklopol> i smell awesome kinetic experiment
02:32:56 <ihope> I'm pretty sure you can.
02:33:10 <oklopol> not sure whether you can make a chain reaction out of that
02:33:23 <ihope> Wikipedia is nice, isn't it? http://en.wikipedia.org/wiki/Brunnian_link
02:34:00 <oklopol> hehe
02:34:11 <UnrelatedToQaz> i suppose the chain reaction thing depends on how tight they are
02:34:14 <UnrelatedToQaz> whoa, deja vu
02:34:49 <oklopol> i'm currently playing with continuations trying to make subtle cough tc, or at least more powerful, by creating new kinds of continuations
02:35:19 <oklopol> i'm gonna call it supercough if i find something interesting, i'm just that lame :-)
02:35:59 <ihope> http://www.google.com/search?q=supercough... >:-)
02:36:58 <UnrelatedToQaz> Oh yips, continuations. Fancy basing a language on the only Unlambda primitive I don't understand...
02:37:45 <oklopol> UnrelatedToQaz: it's easy
02:38:00 <oklopol> it's just never made that explicit...
02:39:39 <oklopol> my way to get it was to make a new notation for it and play with unlambda a bit
02:39:45 <Slereah> Finally, my FTP works again.
02:39:46 <UnrelatedToQaz> as you do
02:40:05 <Slereah> http://membres.lycos.fr/bewulf/Russell/BRAINFUCK%20INTERPRETER%20ON%20A%20ONE.htm
02:40:08 <oklopol> although, like always, i had to guess how it might work before i understood it
02:40:37 <oklopol> luckily, everything that is in any way meaningful seems to be inventable in a few hours of thinking
02:40:52 <oklopol> i mean, the simple kind of stuff :)
02:41:59 <UnrelatedToQaz> Hmm...let's see...
02:42:14 <UnrelatedToQaz> So a continuation is a way of storing the current state of a program?
02:42:18 <oklopol> yes
02:43:14 <oklopol> i used a notation for a continuation, where i actually took the whole program and put it in braces with * where the value would be returned
02:43:43 <oklopol> need to see the whole state at once, or it feels too magical to be understandable
02:44:12 <oklopol> like ``cc`cc, the first `cc is evaluated first to make ``c{`*`cc}`cc
02:44:42 <oklopol> the current continuation is the place where c was called, with the knowledge about where to return if the continuation is called.
02:45:08 <UnrelatedToQaz> It's like going back in time, then?
02:45:53 <oklopol> kinda. but using my notation (or some other that turns it into simple combinatorics..) you can just think of it as string transformations
02:46:30 * oerjan thought it was his notation...
02:46:34 <oklopol> i didn't understand the notation used on the unlambda page, it's prolly much better.
02:46:36 <oklopol> hehe :P
02:46:46 <oklopol> well, it's kinda trivial
02:47:00 <oerjan> i added it to the Unlambda page after all
02:47:01 <oklopol> and * was from the unlambda page notation, which i did not understand.
02:47:06 <oklopol> oh.
02:47:44 <oklopol> in that case i read your notation's description, didn't understand it, and then invented it myself :P
02:48:20 <oklopol> perhaps i subconsciously got it or something, although i myself don't believe in that kinda magic.
02:48:54 <UnrelatedToQaz> incidentally, I'm writing an interpreter for a language of my own
02:49:01 <UnrelatedToQaz> (a parser, more like)
02:49:07 <oerjan> well the * was the important part, at least as i used it in the Subtle Cough page
02:49:10 <oklopol> oerjan: the notation actually shows the whole continuation as a lambda inside the partially evaluated program?
02:49:38 <UnrelatedToQaz> in Perl. Could anyone advise me on how I'd later add - well, modules - to it?
02:50:02 <UnrelatedToQaz> There'd have to be some modification of the actual interpreter, as I see it.
02:50:11 <oerjan> oklopol: um, yes?
02:50:18 <oerjan> well not in lambda notation
02:50:49 <oklopol> can you show me how ``cc`cc evolves?
02:51:08 <oklopol> in your notation... or is that an example on the page :P
02:51:34 <oklopol> i can't find the notation on the page anymore... i kinda suck ;)
02:52:10 <oerjan> yep, on the subtle cough page:
02:52:12 <oerjan> ``cc`cc = `(`*`cc)`cc = `(`*`cc)(`(`*`cc)*) = `(`(`*`cc)*)`cc = `(`*`cc)`cc (circular, because (`(`*`cc)*) = (`*`cc)).
02:52:46 <oerjan> that is using some shortcuts from the others i think
02:52:53 <oerjan> `cc = (*)
02:53:31 <oklopol> hehe
02:53:34 <oklopol> i don't get that :)
02:53:36 <oklopol> ``cc`cc -> ``c{`*`cc}`cc -> `{`*`cc}{`*`cc}`cc -> `{`*`cc}`cc -> ``cc`cc
02:53:38 <oklopol> my version
02:53:51 <oklopol> i'll look more closely, it may be 100% identical
02:54:14 <oklopol> hmm
02:54:16 <oerjan> your 4th step is my second
02:54:27 <oklopol> oh.
02:54:53 <oklopol> "circular, because..." why don't you just evaluate until it becomes the original prog :\
02:54:58 <oklopol> i mean, ihope
02:55:10 <oerjan> um it never quite does i think...
02:55:21 <oklopol> is my evaluation wrong there?
02:55:50 <oklopol> {...} is a function, that when called, forgets the current context and puts the arg where the * is
02:56:00 <oklopol> i used that to represent a continuation
02:56:02 <oerjan> you are missing the evaluation of the `cc at the end
02:56:27 <oklopol> oh
02:56:35 <oklopol> didn't think it's necessary to do that ;-)
02:56:45 <oerjan> it has to be evaluated before applying the continuation
02:56:55 <oklopol> righties.
02:57:01 <oklopol> i'll try again ->
02:57:29 <UnrelatedToQaz> bye folks
02:57:33 <UnrelatedToQaz> 3am :)
02:57:59 -!- UnrelatedToQaz has left (?).
03:01:25 <oklopol> hehe, the only difference was the fact i used {} and you used () then :P
03:02:03 <oerjan> that's what i thought
03:03:25 <oerjan> hm i wonder if it _does_ return properly ever, or if i recall correctly that it somehow grows while staying equivalent
03:03:51 <oklopol> i'll make an interp, and see
03:03:57 <oklopol> that's hell to do by hand.
03:04:16 <oklopol> although, i think it grows infinitely...
03:04:22 <oklopol> had a *feeling*
03:04:46 <oklopol> i'm sure someone here could just *see* it.
03:04:52 * oklopol highlights everyone
03:05:18 <oerjan> we were at `(`(`*`cc)*)`cc before i "cheated"
03:05:39 <oklopol> hey, wait!
03:05:48 -!- ihope has quit (Read error: 110 (Connection timed out)).
03:05:52 <oerjan> = `(`(`*`cc)*)(`(`(`*`cc)*)*)
03:06:22 <oerjan> =`(`*`cc)(`(`(`*`cc)*)*)
03:06:38 <oerjan> = `(`(`(`*`cc)*)*)`cc
03:06:47 <oklopol> right
03:06:58 <oerjan> it seems to grow one extra level per iteration
03:07:02 <oklopol> indeed
03:07:34 <oklopol> but given ø-reduction, it stays the same.
03:07:40 <oerjan> heh :D
03:07:56 <Slereah> ø-reduction?
03:08:13 <oklopol> Slereah: oerjan
03:08:15 <oklopol> "oe"
03:08:39 <Slereah> Heh.
03:08:52 <oklopol> i'm assuming oerjan did the ``cc`cc proof here, even though subtle cough is ihope's, am i correct?
03:09:16 <oklopol> "before i cheated"
03:09:20 <oklopol> i'm such a detective.
03:09:36 <pikhq> http://www.technologyreview.com/printer_friendly_article.aspx?id=19845
03:09:53 <oklopol> (yes, i read the unlambda page; if it was there, lol :))
03:10:34 <oerjan> yep
03:11:27 <oerjan> actually i think i started with the subtle cough proof and after i finished it i wrote the notation in the unlambda page so others might have a hope of understanding it
03:11:43 <oklopol> ah.
03:12:07 <oklopol> so, ihope comes up with a language, and you ruin it by telling him it only has 3 progs? :)
03:12:08 <oerjan> plus some ideas of how to make the notation more powerful
03:12:15 <oerjan> yeah :D
03:12:23 <oklopol> :P
03:12:56 <oklopol> although, ihope was probably happier with that, than if it would just have been left without any research.
03:13:02 <oerjan> otoh i cannot prove noone else has made such a notation before in the context of lambda calculus with continuations or something
03:13:50 <oklopol> well
03:14:03 <oklopol> considering my notation, i'd say it's not *that* improbable
03:14:34 <oklopol> i first used x
03:14:56 <oklopol> then realized there will always be just one thing arg, since further conts would be nested anyway
03:16:22 <oklopol> * is one of the chars i consider objokenish enough to be used as a value, not an operator.
03:16:46 <oklopol> the other non-ascii chars that have this property are @, and ¤
03:16:55 <oklopol> i'd seen * on the page, so i used it.
03:17:10 <oklopol> just trying to prove to myself i didn't steal your notation
03:17:18 <oklopol> what's the point? no idea.
03:17:22 <oklopol> i'll continue my prog ->
03:19:24 <oklopol> perhaps the point is i represented it as *my* notation, which is kinda rude :P
03:21:08 <oerjan> "Bad artists copy. Great artists steal." -- Pablo Picasso
03:21:52 <pikhq> "I stand on the shoulders of giants." -- Isaac Newton (paraphrased)
03:22:11 <oklopol> "Sometimes you need to ruin it with something completely random" -- oklopol
03:22:34 <oerjan> "Argle bargle, glop glyf" -- Douglas Adams
03:22:58 <pikhq> Adams' insight never ceases to astound.
03:24:21 <Slereah> "Dragons logically follow evolution, so they would be able to wield metal" -- Kenneth Eng
03:28:06 <oerjan> hm, Zzo38 is also using continuations in his latest.
03:31:51 <oklopol> in the forum or what?
03:33:31 <oerjan> on the wiki
03:36:39 <oklopol> hmm, looks fun
03:42:34 <oklopol> OK, i need to start reading the wiki, that language was actually a mindblowing experience :)
03:44:40 <Sgeo> G'night all
03:45:00 <Slereah> Bai.
03:45:15 <oklopol> oerjan: did you mean continuousequation?
03:45:24 <oklopol> or what was "latest"
03:45:34 <oerjan> not that one
03:45:38 <oklopol> thought so
03:45:56 <oklopol> since it doesn't use continuations, just the word continuation
03:45:58 <oerjan> Ctonia
03:46:00 <oklopol> oh
03:46:02 <oklopol> i'll look
03:46:24 <oerjan> but Zzo38 is incredibly prolific...
03:46:28 <Sgeo> Why is channel awake NOW, when I need to leave?
03:47:11 <Slereah> It's a secret conspiracy against you.
03:47:25 <Slereah> Don't eat the muffin on your table.
03:47:53 <oerjan> ooh, muffin
03:47:59 <oerjan> right, time for food
03:48:02 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)).
03:48:23 <oklopol> xD
03:48:29 <oklopol> searching for zzo: View (previous 500) (next 500) (20 | 50 | 100 | 250 | 500).
03:48:38 <oklopol> okay, quite prolific
03:48:58 <oklopol> i guess... i didn't actually look what are listed there.
03:49:15 <oklopol> for a second i thought they were just the wiki pages he had authored :P
03:49:26 <oklopol> and actually
03:49:29 <oklopol> seems they are.
03:49:46 <oklopol> hehe
03:50:02 <oklopol> just 30, i just fail to understand the ui on the search page.
03:50:13 <Slereah> Ooooh, he did the Twoducks.
03:50:22 <Slereah> I liek it.
03:51:27 * Slereah tries to make some sort of unlambdaish interpreter on the Love Machine 9000
03:54:16 <oklopol> i've thought about something twoduck'ish... i'm fairly sure all my ideas exist on the esolang wiki already
03:54:22 <oklopol> someday i'll read it.
03:54:24 <oklopol> all of it
03:54:35 <Slereah> Heh.
03:56:27 * Slereah passes his finger over some unlambda expression, thinking "What would Turing do?"
03:57:50 <oklopol> i wonder if twodux has an interp
03:58:10 <oklopol> turing would own us all at esolangs :)
03:58:11 <Slereah> Depends. Do you have a flux capacitator?
03:58:45 <oklopol> he did a lot of code on paper, even a program that played a board game or something, or do i remember totally wrong here?
03:58:59 <oklopol> i wonder if all that code actually works
03:59:27 <Slereah> Well, back then, he couldn't just fire up his computer to try it!
03:59:45 <oklopol> indeed. this is why i wonder
04:00:24 <Slereah> I don't envy Turing and the like. Doing a Turing machine by hand is bothersome.
04:00:31 <oklopol> i mean, i rarely get a program right the first time
04:01:31 <oklopol> doing or running?
04:01:40 <oklopol> can you do them automatically? :-)
04:01:44 <Slereah> Running.
04:02:19 <Slereah> I wonder if he had some tape at home, and wrote symbols on it, while going "beep boop".
04:02:31 <oklopol> hmm... actually, i rarely get a program 100% correct in a normal language, but for some reason esolang programs usually work on the first attempt
04:02:38 <oklopol> most likely because i give it more thought
04:02:51 <oklopol> with python, i just write a few lines of random code every now and then
04:02:55 <Slereah> Lucky you.
04:03:01 <Slereah> I don't have that luck!
04:03:14 <oklopol> and my program is almost ready now even though i've been chatting this whole time :P
04:03:25 <Slereah> What program?
04:03:56 <oklopol> making a subtle cough interp to test my idea
04:04:23 <oklopol> and also perhaps to be able to visualize continuations a bit better in general.
04:15:49 <Slereah> Is an Unlambda combinator always made up of x primitive combinators and x-1 `?
04:16:04 <oerjan> yep
04:21:00 <Slereah> Hm. If I get `iC, can I just erase `i from the tape?
04:21:52 <oerjan> i think so
04:24:09 <oklopol> hmm, d never makes it matter?
04:24:17 <oklopol> i don't know how d works really...
04:24:23 <Slereah> I won't include d.
04:24:28 <oerjan> d matters
04:24:45 <oklopol> d matters, or d makes i matter?
04:24:52 <Slereah> It will probably be pretty much Lazy k with the .x combinator
04:25:21 <oklopol> yay, the interp worked on the first attempt
04:25:32 <oerjan> oh you mean that
04:26:00 <oerjan> no i don't think d affects removing `i
04:26:22 <oklopol> i'm not doing a deepcopy everywhere where i copy the whole program into a continuation... guess i should add that, or i may get something too interesting.
04:26:57 <oklopol> can you sum up d in a sentence so i don't need to open the page again? :P
04:26:58 <oerjan> unlambda has no mutable structures
04:27:04 <oklopol> nope, but python has.
04:27:08 <oerjan> so deep copying is unnecessary
04:27:18 <oklopol> hmm
04:27:51 <oklopol> you see, when i swap '*' inside the continuation
04:28:00 <oklopol> i destroy the whole program, why not?
04:28:05 <oerjan> for an expression `EF if after evaluating E it happens to be d, then F is not evaluated
04:28:06 <oklopol> i actually don't
04:28:46 <oklopol> i see, it will *never* be evaluated, or when it is further applied, like ``d.xi
04:28:59 <oklopol> or what would that do
04:29:18 <oerjan> oh if you implement continuations like that, yes it sounds dangerous
04:29:35 <oklopol> indeed.
04:30:15 <oklopol> i'm implementing them that way because i'm going to extend that a bit
04:30:25 <oklopol> so i actually want the program to be inside the continuation.
04:30:27 <oerjan> ``dFG : first evaluate G e.g. to g. then evaluate `Fg
04:30:33 <oklopol> explicitly
04:31:10 -!- GreaseMonkey has quit ("Welcome to 2008. I will be your tour guide.").
04:31:27 <oklopol> oh, right, it will evaluate the d'd expression once the d expression is further applied, then, like i suggested?
04:31:34 <oerjan> right
04:31:46 <oklopol> okay, then i invented the d combinator.
04:31:48 <oklopol> :)
04:32:02 <oklopol> well, learning is inventing for everyone, i guess
04:32:17 <Slereah> I discovered salt, and invented FM radio.
04:38:42 <oklopol> hehe, quite ironic the first time i actually have a need to use a continuation is when implementing subtle cough :)
04:39:20 <oerjan> well that certainly gives a minimal implementation
04:40:06 <pikhq> The *D* combinator?
04:40:15 <oklopol> oh, i'd never use call/cc for the c combinator
04:40:16 <pikhq> Care to give me a lambda expression of it?
04:40:19 <oklopol> that'd be cheating
04:41:09 <Slereah> IIRC, d isn't really a combinator
04:41:29 <oklopol> that's not what i'd've used it for, just so i could replace the whole program with the contents of the {...} without having to unwind the call stack, if i'm inside another expression when evaluating it
04:41:30 <Slereah> Combinatorial sugar or something!
04:41:39 <oklopol> well, basically the same thing, but less obvious.
04:41:46 <oklopol> "obvious"
04:41:50 <oklopol> asd, whatever
04:42:42 -!- calamari has joined.
04:42:48 * oerjan was going to paste d from unl2caml but it was a bit complicated
04:43:37 <oklopol> what's the lambda expression of c?
04:44:07 <oerjan> well c isn't in lambda calculus either
04:44:48 <oerjan> s,k,i, and v are combinators though
04:45:56 <oklopol> yeah, my point was c and d are called combinators just because it's more convenient than calling them "those things unlambda has that aren't exactly combinators, but you know what i mean"
04:46:15 <Slereah> Heh.
04:46:23 <oerjan> "functions"
04:46:36 <oklopol> ...your mother :)
04:46:40 <Slereah> Aren't combinators functions?
04:46:48 <oerjan> sure
04:47:01 <oerjan> but not all functions are combinators, especially impure ones
04:47:23 <Slereah> What defines impurity?
04:48:08 <oerjan> side effects, non-local control...
04:48:24 <oerjan> non-referential transparency
04:48:28 * Slereah lacks concepts.
04:49:22 <oerjan> pure functions: evaluates a result given arguments, no other effect
04:49:39 <oerjan> giving the same arguments always gives the same result
04:54:08 <oklopol> i'm gonna call them fumbinators from now on.
04:54:51 <Slereah> Schmombinator
04:57:07 <oklopol> how the heck do i check whether two objects are in the same memory location in python...
05:07:13 -!- oerjan has quit ("Good night").
05:09:23 <oklopol> http://www.vjn.fi/pb/p346643411.txt
05:11:23 <oklopol> i guess i should implement ø-reduction :D
05:12:31 <Slereah> Oh hell. Already a problem.
05:16:59 <Slereah> Ah yes, a marker deleted a piece of code, that's why.
05:22:42 <oklopol> whatcha cooking?
05:25:09 <Slereah> Unlambda-ish interpreter.
05:25:23 <Slereah> A minimal one. s, k, i, .x
05:25:33 <Slereah> Maybe some other combinators for kicks.
05:26:08 <Slereah> So far I have some piece of code to at least check if the program has the right number of combinators and `
05:26:35 <oklopol> cise (bit of speccing), graphica (version 0.5), supercough (currently just an idea i haven't tested) and ...that one language (example code + lots of ideas), and 82 problems in project euler
05:26:40 <oklopol> this has been a good holiday.
05:27:17 <oklopol> what language are you using?
05:28:01 <Slereah> The Love Machine 9000.
05:28:16 <oklopol> ohh, then it may not be that trivial :)
05:28:52 <Slereah> The idea will be to use 4 tapes.
05:30:02 <Slereah> If I encounter some other combinator than i, the tapes 3 and 4 counts the ` and primitive combinators until I'm sure to have a whole combinator, and then the evaluation is copied on tape 2.
05:31:01 <oklopol> i see (no i don't)
05:31:24 <Slereah> Well, I'm not exactly sure of a simple way to use the counter either.
05:31:28 <Slereah> But I'll figure it out.
05:31:41 <oklopol> i'm sure you will
05:31:51 <oklopol> now... what should *i* be cooking
05:32:02 <oklopol> feel kinda lazy.
05:32:13 <Slereah> But well, for instance, if I have ``k(C1)(C2), C1 will be copied on the second tape.
05:32:25 <oklopol> i'll go outside, perhaps i come up with something
05:32:27 <oklopol> oh, right
05:32:39 <Slereah> Because it would be complicated to rewrite the expression on one tape
05:32:44 <oklopol> i guess i do understand
05:32:59 <Slereah> Writes it on the second tape, erase the first, and copy the second tape onto the first.
05:33:53 <oklopol> yeah, or you can duplicate your code and move back and forth and do a step each time.
05:34:43 <oklopol> also, if you're doing .x, you have side-effects, so remember to change the copying head into the identity head once you've made one rewrite.
05:35:02 <oklopol> identity head just copies without evaluating, that is :)
05:35:13 <Slereah> No need. The `i is just removing `i
05:35:32 <Slereah> Or, for .x, printing x and removing `.x
05:36:00 <oklopol> i mean
05:36:40 -!- weilawei has quit (Nick collision from services.).
05:37:18 <oklopol> if you have ``a`bc`de, you can't evaluate both `bc and `de in one step
05:38:00 <oklopol> because a might apply after evaluation of `bc
05:38:49 <Slereah> Probably. But I'll try the simple way first.
05:38:56 <oklopol> because there's no referential transparency guaranteed, you have to be sure to just do one thing per step; this is why after evaluating one subexpression inside the whole thing, you need to copy it all to the next tape
05:39:02 <Slereah> Wait, what am I saying.
05:39:05 <Slereah> I misread
05:39:07 <oklopol> well, that's not necessarily more complicated
05:39:23 <Slereah> Every step will only evaluate one combinator, oklopol
05:40:14 <Slereah> It looks at the first combinator, checks if there's enough combinators in front to evaluate it, and if there are, returns the evaluation on the second tape.
05:40:23 <Slereah> Or if not, just continues.
05:41:30 <oklopol> okay, xchat started lagging too much now
05:41:34 <oklopol> i think i'll restart it
05:43:34 <oklopol> should i do a time traveling language, or a program that wraps up a given ca based on sending messages between the nodes of a graph and visualizing it by showing the messages move between the nodes?
05:43:46 <oklopol> both useless to the max
05:44:21 <Slereah> Well, if you want, there's useful equations for it in here : http://membres.lycos.fr/bewulf/Russell/incomplete_equation.jpg
05:44:40 <Slereah> First one is useful for timetravel
05:45:26 <oklopol> jailbatylicious
05:45:38 <oklopol> hmm
05:45:54 <oklopol> i'm not sure i can use use that media.
05:46:04 <oklopol> too powerful encryption
05:46:43 <oklopol> the eyes cannot make out the text
05:46:56 <Slereah> What text?
05:47:09 <oklopol> there is some scribble in their backs
05:47:17 <Slereah> Equations.
05:47:23 <Slereah> First one is general relativity
05:47:30 <Slereah> Second one is electromagnetism.
05:47:36 <Slereah> Third one is mechanic.
05:47:44 <Slereah> Last one is quantum mechanic.
05:47:48 <oklopol> yes, but my eyes are too distracted
05:53:32 <Slereah> Hm. I think I can probably make the interpreter with just one counter.
05:53:58 <Slereah> Starts at 1, adds 1 for every `, substract 1 for every primitive combinator
05:55:13 <Slereah> Although I probably should make the code every two cells to have some markers in here.
06:16:55 <oklopol> http://www.veling.nl/anne/lang/lambda/ i wonder how lambda calculus inspired this :D
06:17:33 <oklopol> oh, invented by a girl
06:25:48 <Slereah> Oh hell. Once again, the problem of a state that deals with characters!
06:38:27 <oklopol> okay, i'll stop using python for a while now, just too trivial
06:38:34 <oklopol> it feels like cheating :\
06:39:45 <Slereah> Heh.
06:39:51 <Slereah> It does write itself!
06:40:13 <oklopol> i'll make an interp for a small concurrent language in scheme
06:40:33 <oklopol> should finally try *using* it for something
06:41:08 <Slereah> @ ` # r # ` # ` # ` # ` # ` # ` # ` # ` # ` # ` # ` # . H # . e # . l # . l # . o # . b # . w # . o # . r # . l # . d # i # #
06:41:12 <Slereah> Poifect.
06:41:31 <oklopol> works already?
06:41:51 <Slereah> No.
06:41:59 <oklopol> ah, okay
06:42:00 <Slereah> But it writes that code every two cells!
06:42:03 <oklopol> how many stacks are you using?
06:42:13 <Slereah> Stacks?
06:42:18 <oklopol> tapes, sorry
06:42:24 <Slereah> Three.
06:42:33 <oklopol> if you use 1, there should be a trivial mapping to brainfuck
06:43:22 <Slereah> I'm not so sure. Since it's based on states, not instructions, I can't think of a trivial isomorphism.
06:44:35 <oklopol> hmm... three tape code -> one tape code: take the three tapes, and make an empty cell between every two cells, then zip the cells getting [1,2,3...],[5,3,7...],[67,3,6...] -> [1,0,5,0,67,0,2,0,3,0... etc]
06:44:48 <oklopol> now, put a 1 into 2nd, 4th and 6th cell
06:45:02 <oklopol> [1,1,5,1,67,1...]
06:45:57 <oklopol> then, when you change tape from ath tape to bth tape, move (b-a)*2 cells backwards
06:46:10 <oklopol> then find the 1 on that tape
06:46:43 <oklopol> when moving, move the one, when checking / using the value, use the number that is in the cell just left of the current cell, which should hold the 1
06:47:08 <oklopol> basically simulate multiple tapes using a separate token for show where the head is
06:47:33 <oklopol> hmm... i guess you need to have 2's in every cell *before* the head.
06:47:38 <oklopol> so you know which way to look
06:48:09 <oklopol> this can be done after you are ready of course, and if you don't wanna do it, perhaps let me, since ski->brainfuck would be great
06:48:40 <Slereah> Well, right now, I'm still on making the code pretty for the Love Machine 9000.
06:49:07 <oklopol> no hurry, it's just i've been thinking about ski->brainfuck, but i haven't gotten much done
06:49:12 <Slereah> I have one combinator/`operator every two cells on the second tape so far
06:50:04 <Slereah> Well, not exactly, but there's an empty cell between 'em all.
06:58:22 -!- calamari has quit ("Leaving").
07:04:52 <oklopol> hehe, tried making a page on esowiki, and failed badly :P
07:05:43 <oklopol> http://www.esolangs.org/wiki/YABC
07:06:17 <oklopol> i think that's tc via a not-too-trivial isomorphism to bf
07:07:01 <oklopol> but, anyone with any skill, please fix that, i can't figure out how to get the instructions on separate lines or to look nice otherwise :-)
07:13:05 <oklopol> http://www.esolangs.org/wiki/YABC lol getting closer :)
07:13:18 <oklopol> oh, right, the link isn't a fixed one
07:13:23 <oklopol> i mean... immutable
07:14:37 <oklopol> basically, you have a language with do while loops instead of while loops
07:14:56 <oklopol> and you have to make the value to jump with on the tape yourself
07:15:09 <oklopol> i think this has been discussed sometime
07:15:40 <oklopol> i mean, the do...while thing
07:16:52 <oklopol> perhaps later today i'll put something real there
07:16:53 <oklopol> now food ->
07:22:34 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
07:25:31 -!- oklopol has joined.
07:27:46 <Slereah> Everything nice on the first tape. Now, to evaluate!
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:15:37 <Slereah> H
08:15:37 <Slereah> l
08:15:37 <Slereah> o
08:15:37 <Slereah> w
08:15:37 <Slereah> r
08:15:37 <Slereah> d
08:15:52 <Slereah> Well, I've seen better, but it's a start.
08:16:40 <oklopol> :D
08:22:17 <Slereah> "H"
08:22:22 <Slereah> Aw hell/
08:22:29 <Slereah> I'll just put the tape display on.
09:13:44 <Slereah> Ah, finally.
09:13:52 <Slereah> i, r and .x works
09:14:01 <Slereah> Now, to tackle the big un's.
09:17:21 <Slereah> What's a nice short Unlambda program with s's and k's?
09:20:50 <Slereah> Hm.
09:21:06 <Slereah> Idea : Replace all s by ```kiss
09:29:16 <oklopol> :D
09:29:26 <oklopol> that'd be just ``sik
09:29:30 <oklopol> oh
09:29:33 <oklopol> ```sick
09:30:28 <oklopol> ``ik`ck -> `k`k(`k*)
09:30:41 <Slereah> Hm. Kisses would be ((se)s)
09:30:50 <oklopol> ?
09:30:59 <Slereah> So applying a kiss to something would be (eC)(sC)
09:31:12 <Slereah> Terminating the program?
09:32:02 <oklopol> what's e
09:32:02 <Slereah> "When applied, e exits the program, possibly providing its argument as the program's result."
09:32:09 <oklopol> oh
09:32:13 <oklopol> what's that
09:32:21 <Slereah> So kisses on some operator outputs the operator!
09:32:45 <Slereah> Errr, combinator
09:33:21 <oklopol> heh
09:34:14 <oklopol> ``````kisses X -> ```sesX -> ``ex`sx, indeed
09:34:21 <oklopol> i'm a bit schlow.
09:35:27 <Slereah> "Kiss your program goodbye!"
09:36:35 <oklopol> >>> i o
09:38:21 -!- Jontte has joined.
09:39:03 <Slereah> I'm going to have to rewrite it entirely after I'm done with this version.
09:39:09 <Slereah> It's full of redundant states.
10:35:32 -!- weilawei has joined.
12:43:36 -!- jix has joined.
13:10:21 -!- Jontte has quit (Remote closed the connection).
13:10:53 -!- Jontte has joined.
13:15:34 -!- oerjan has joined.
13:49:13 -!- SimonRC has quit (Connection timed out).
13:57:03 -!- RedDak has joined.
15:01:50 -!- SimonRC has joined.
15:29:04 -!- jix has quit (Nick collision from services.).
15:29:14 -!- jix has joined.
15:32:34 -!- RedDak has quit (Remote closed the connection).
15:32:59 -!- oerjan has quit ("Dinner").
16:44:54 -!- mtve has joined.
17:13:34 -!- Jontte has quit (Remote closed the connection).
17:14:02 -!- Jontte has joined.
17:39:28 -!- Jontte has quit (Remote closed the connection).
17:39:56 -!- Jontte has joined.
18:42:05 -!- calamari has joined.
20:18:22 -!- calamari has left (?).
21:07:32 -!- oerjan has joined.
21:11:23 -!- RedDak has joined.
21:27:10 <oerjan> oklopol: Anne Veling is male
21:33:43 <oklopol> in that case i cannot resort to the "women can't code" stereotype, and ask how lambda is related to lambda calculus
21:33:50 <oklopol> *hva to ask
21:33:57 <oklopol> *have
21:34:02 <oklopol> anne is a male name? where?
21:34:16 <oerjan> in holland, according to his homepage
21:34:47 <oklopol> oh holland, you crack me up!
21:34:57 <oerjan> he probably gets to point it out a lot :D
21:35:28 <oklopol> hehe, prolly, it's a female name in english, finnish and pretty much all over europa... i think
21:36:24 <oerjan> well france is worse. you know that joke about Jean Marie... they found out everything about the person except the gender
21:37:00 * pikhq wonders how a programming language can claim to be 'inspired by lambda calculus' without lambda expressions
21:37:07 * oerjan wouldn't advise telling that joke to le Pen, he thinks
21:37:11 <bsmntbombdood_> what language is that?
21:37:29 <pikhq> http://www.veling.nl/anne/lang/lambda/
21:38:17 <pikhq> It's a fairly basic assembly kinda thing, apparently.
21:39:15 <oklopol> indeed.
21:39:34 <oklopol> it does seem to be done not that seriously, i just don't get the joke...
21:42:12 <Slereah> Mistah sir oerjan!
21:42:36 <Slereah> Can I assume that a k is evaluated only if preceded by ``?
21:43:49 <oerjan> yeah
21:44:02 <Slereah> Same with s and ```?
21:44:06 <oerjan> of course
21:44:11 <Slereah> Thanks.
21:47:43 <Slereah> Let's see how those k states fares.
21:52:43 <oerjan> btw maybe you could use the idea from my unlambda meta-notation of having a different symbol (e.g. ') for expressions that have already been fully evaluated
21:53:21 <Slereah> I'm not sure how that works out.
21:53:23 <Slereah> Got an example?
21:53:39 <oerjan> hm...
21:54:26 <Slereah> "Not enough tapes. Program interrupted.
21:54:29 <Slereah> Oh hell.
21:55:10 <Slereah> Wrong state on the end of k.
21:58:12 <oerjan> wait a moment, are you using lazy or strict evaluation?
21:58:23 <Slereah> What would be the difference.
21:58:50 <oerjan> do you evaluate the arguments of s and k before applying them?
21:59:00 <Slereah> No.
21:59:15 <oerjan> ok then my ' suggestion is probably useless
21:59:31 <Slereah> If there's a s or k and enough arguments, it rewrites the string in the proper form on the second tape.
21:59:52 <oerjan> and you probably take the first s or k you find too :)
22:00:05 <Slereah> The first of everything.
22:00:16 <Slereah> Unless there's not enough argument.
22:00:34 <oerjan> that's lazy, or perhaps rather call-by-name, since i assume you have no sharing among copied terms
22:00:53 <oerjan> this being string-based
22:02:06 <Slereah> Here's an example :
22:02:07 <Slereah> # ` # ` # k # ` # i # . x ` # i # . i # # # # # # # # # # # # # # # # # # #
22:02:07 <Slereah> # # # # # # # # # # # # @ ` # i # . x # # # # # # # # # # # # # # # # # # # # #
22:07:17 -!- wooby has joined.
22:07:52 <wooby> GregorR: has c2bf seen any recent development?
22:07:56 <Slereah> Well, ``k`i.x`i.i prints x.
22:07:59 <Slereah> So far so good!
22:08:18 <oerjan> Slereah: um, that's a bit different from unlambda
22:08:34 <oklopol> Slereah: prints or evaluates to?
22:08:42 <oerjan> in unlambda .x prints when _applied_, not when evaluated
22:08:45 <oklopol> oh, x.
22:08:46 <Slereah> Prints.
22:09:00 <oklopol> what oerjan said.
22:09:09 <Slereah> Good enough for me.
22:09:13 <oerjan> of course in a lazy language your way may be just as fine
22:09:22 <Slereah> The laziest!
22:09:31 <Slereah> You should see the code, it's full of redundant states.
22:10:10 <Slereah> http://membres.lycos.fr/bewulf/Russell/Unlambda%202.txt
22:10:30 <Slereah> Still need to deal with s and not enough argument for k.
22:12:02 <Slereah> (It might actually be shorter if the printing of characters was just the character and the combinator preceded by ., but well)
22:14:11 <Slereah> ``k````.p.e.n.i.s```.b.u.t.t -> penis
22:14:14 * Slereah thumbs up
22:15:33 <Slereah> Let's see what will happen for only one argument!
22:31:13 <Slereah> Ah yes. i->erase `i only works for when i is applied.
22:31:52 <Slereah> If I have something of the form `k.x, is it reasonable to evaluate .x and change it to `ki?
22:33:22 <oerjan> it would be unusual, but your language already is...
22:33:26 <oklopol> it's reasonable if it'd be tons harder to do it like unlambda does it
22:33:50 <oklopol> ...i tried to wait for you to answer, and when i do, you answer on the same second :)
22:33:53 <Slereah> Well, I suppose it wouldn't be too hard.
22:34:14 <Slereah> I could just check if there's ` before to change it.
22:34:30 <oklopol> or just print when a .x is applied
22:34:46 <oklopol> unless you meant just that
22:35:27 <Slereah> Sort of. Although I think that with the current code, it will still print it if only .x remains.
22:35:50 <Slereah> Or maybe not if I add the ` condition.
22:36:01 <oklopol> well, if the ski part works, count me happy.
22:36:08 <Slereah> I should also add a halting condition if only i remains.
22:36:21 <oerjan> now in weak head-normal evaluation, you can just stop if your k doesn't have enough arguments
22:36:24 <Slereah> Otherwise, it will be bothersome.
22:37:27 <Slereah> So far, the halting condition is that the evaluation reach the end of the program, meaning that nothing must remain at the end.
22:37:30 <oerjan> because any program can be written such that the first primitive always is the next to be applied
22:37:49 <oklopol> oerjan: your unlambda in unlambda, does it just convert the string to an unlambda expression and then evaluate that, or do you simulate the whole thing or something?
22:37:51 <oklopol> "just"
22:38:11 <oerjan> it's almost the first
22:38:27 <oerjan> it does an eta-expansion, essentially
22:39:02 <oerjan> expand `FG -> ``s expand F expand G
22:39:20 <oerjan> expand primitive = `k primitive
22:40:12 <oerjan> and when the result is applied to anything, it works equivalently to evaluating the original unlambda expression
22:41:06 <oerjan> although i made one exception: the e function is implemented as i, meaning that the argument passed to the expression must be e or some continuation to quit the program
22:41:08 * Slereah will continue later.
22:41:23 <Slereah> Self-rewriting code puts a strain on my smile.
22:41:27 <oerjan> *implemented = expanded
22:43:46 <oerjan> this exception means that you could theoretically embed the interpreter in a larger program and have it return in the larger program when the interpreted program calls e
22:44:45 <Slereah> Or ``````kisses
22:48:08 <oerjan> oh and expand F = abstraction elimination of \e -> F, essentially
22:53:36 -!- RedDak has quit (Remote closed the connection).
23:04:27 -!- tesseracter_ has joined.
23:11:03 -!- tesseracter__ has joined.
23:14:37 -!- weilawei has quit (Read error: 110 (Connection timed out)).
23:17:56 -!- tesseracter has quit (Read error: 110 (Connection timed out)).
23:22:20 -!- tesseracter_ has quit (Connection timed out).
2008-01-04
00:05:04 -!- tesseracter__ has changed nick to tesseracter.
00:45:16 <Slereah> Heh. Explaining lambda calculus is a hard task.
00:48:13 <pikhq> It's remarkably easier when one can assume an understanding of functions.
00:49:26 <pikhq> "Alright, you have functions, right?" "Right." "You just pass those around. That's your entire semantic setup." "Whoa. . ."
01:03:09 <tesseracter> .
01:06:37 <tesseracter> Slereah: i was most confused by the FoG syntax. F(G(x)) is sooooo much simpler
01:07:15 <tesseracter> math dudes have so many symbols.
01:07:49 <lament> errr yeagh.
01:07:54 <tesseracter> i learned 4 notations for boolean logic, thats just insane.
01:08:12 <lament> FoG, of course, doesn't mean the same as F(G(x)).
01:08:36 * oerjan had a secret idea of trying to sneak in a couple :-) :-( smileys as dual operators in a math paper
01:08:36 <tesseracter> lament, GoF or FoG....its been a while.
01:08:42 <lament> it means the same as lambda x -> F(G(x)), which is rather painful to write out.
01:08:53 <lament> and it introduces an unnecessary symbol.
01:09:44 <tesseracter> oerjan: i think i did those in C at one point...
01:10:45 <oerjan> hm, :-> and :-< would work in haskell
01:11:15 <tesseracter> or maybe it was :- as a post operation and a function, so :-(x, y:-)
01:13:20 <oerjan> (-: "only" )-: "joking"
01:13:42 <oerjan> i've got to try that in lambdabot
01:13:51 <tesseracter> heh.
01:14:25 <oerjan> if i can find a way to make it well-typed
01:16:31 <oerjan> hm needs polymorphism at least
01:20:57 <pikhq> oerjan, if you get that in a math paper, I will worship you.
01:20:59 <pikhq> (more)
01:21:01 <pikhq> :p
01:30:52 <Slereah> Well, lambda calculus doesn't have FoG as far as I know:
01:31:12 <Slereah> It's just fg or `fg, unlambda style.
01:34:45 <Slereah> But the hard part is explaining the lambda itself, it seems.
01:38:25 * Slereah tried to do some Unlambda loop
01:38:32 <Slereah> ```sii``s`k`.xi``sii
01:38:37 <Slereah> I get stack overflow.
01:42:17 <Slereah> What be the problem?
01:42:23 <oerjan> hm
01:43:31 <Slereah> Well, after printing one x, the C stack overflow, that is.
01:43:46 <oerjan> -> ``i``s`k`.xi``sii`i``s`k`.xi``sii
01:44:46 <Slereah> Why can't the doubling be just a SII?
01:46:17 <oerjan> -> ```s`k`.xi``sii`i``s`k`.xi``sii -> ```k`.xi`i``s`k`.xi``sii```sii`i``s`k`.xi``sii
01:46:26 <oerjan> argh
01:46:43 <Slereah> I do it on paper with parenthesis. Less strain on the brain.
01:46:55 <Slereah> The thing was :
01:47:08 <Slereah> (SII)(S(K(.xi))(SII))
01:47:17 <Slereah> (S(K(.xi))(SII))(S(K(.xi))(SII))
01:47:44 <Slereah> [(K(.xi))(S(K(.xi))(SII))][(SII)(S(K(.xi))(SII))]
01:47:56 <Slereah> (.xi)[(SII)(S(K(.xi))(SII))]
01:48:06 <Slereah> And then back to (SII)(S(K(.xi))(SII))
01:48:24 <Slereah> But with a bonus x on the screen.
01:48:59 <Slereah> But it seems to overflow my stack or something.
01:49:20 <oerjan> um how fast are you removing the I's?
01:49:52 <Slereah> Wut?
01:50:08 <oerjan> you ignored the I's
01:50:26 <oerjan> I((S(K(.xi))(SII))I(S(K(.xi))(SII))
01:50:27 <Slereah> Let me redo that.
01:50:43 <oerjan> er no
01:50:56 <Slereah> Oh, that.
01:51:09 <Slereah> Well, I apply SII as ^x.xx
01:51:12 <Slereah> Faster to do.
01:51:33 <oerjan> how does a turing machine stack overflow anyway?
01:51:40 <oerjan> or is this something else?
01:51:43 <Slereah> That's on your interpreter.
01:52:08 <Slereah> The Turing (or Love) machine (9000) is right now resting.
01:52:16 <oerjan> mine? which one?
01:52:21 <Slereah> Haskell one.
01:52:25 <oerjan> oh
01:52:27 <Slereah> On them winhugs.
01:52:41 <oerjan> oh dear
01:53:46 <Slereah> The Love Machine cannot stack overflow. Maybe tape-overflow, but well.
01:56:17 <oerjan> argh! why oh why can't winhugs paste into a running program :(
01:57:49 <Slereah> Well, it's only 20 chars.
01:58:16 <oerjan> ` is horrible to type on a norwegian keyboard :(
01:59:00 <Slereah> It is particularly annoying to type on Winhugs, because you have to type ` + space, or it crashes.
01:59:48 <oerjan> hm where is it on an english keyboard?
01:59:58 <Slereah> I don't have an english keyboard.
01:59:59 <pikhq> oerjan, seeing the Norwegian keyboard layout, that is not my idea of a keyboard that's good for coding. . .
02:00:16 <pikhq> On the US QWERTY keyboard, ` is to the right of 1.
02:00:19 <pikhq> s/right/left/
02:00:34 <oerjan> ah
02:00:40 * Slereah has : http://upload.wikimedia.org/wikipedia/commons/thumb/c/ca/Azerty_fr.svg/800px-Azerty_fr.svg.png
02:00:50 <Slereah> ` is alt + 7
02:01:50 <pikhq> Single keystroke here. w00ts.
02:02:13 <oerjan> shift-\ space here
02:02:16 <pikhq> Granted, the US keyboard layout is kinda handy for most coding, since the most you'll have to do is hit shift.
02:02:26 <Slereah> I wonder why keyboards still have keys that have no longer any purpose.
02:02:33 <Slereah> At least not that often.
02:02:39 <pikhq> (unless you decide to use US international, which has deadkeys)
02:02:54 <Slereah> Like pause, inser or num lock
02:03:16 <pikhq> Num lock changes the behavior of the number bad.
02:03:16 <oerjan> oh now wait
02:03:29 <Slereah> Yes it does. But does anyone use it?
02:03:31 <oerjan> we were doing lazy evaluation
02:03:35 <pikhq> Some people do.
02:03:51 <pikhq> I don't even touch the number pad, so. . . ;)
02:03:58 <Slereah> Last time I used it, I think it was for Civilisation 2.
02:04:09 <Slereah> Because the diagonal arrows were somehow useful.
02:04:57 <oklopol> the numpad makes no sense, who in their right mind would want to write numbers with right hand only
02:05:06 <oklopol> unless left-handed of course
02:05:21 <oklopol> i should get a leftie keyboard
02:05:57 <oerjan> ah, the C interpreter doesn't print more than one either :)
02:06:05 <Slereah> oerjan : Does the interpreter change (SII)(S(K(.xi))(SII)) in (SII)(S(KI)(SII)) directly.
02:06:19 <oerjan> unlambda is a strict language
02:06:21 <Slereah> Or something similar, that is.
02:06:28 <oerjan> it evaluates arguments first
02:06:51 <oerjan> the `.xi is only evaluated once
02:07:11 <oerjan> although i am still disappointed haskell stack overflows, a bit :(
02:07:21 <Slereah> That's why I copied it via some fixpoint combinator.
02:07:33 <Slereah> But apparently, not good enough!
02:09:03 -!- Jontte has quit ("Konversation terminated!").
02:10:05 <oerjan> try adding `d before `k
02:11:20 <oerjan> hmph, it eventually stack overflows then too
02:11:33 <oerjan> but at least it prints x'es galore
02:13:38 <Slereah> Ah yes!
02:14:01 <Slereah> Was it because the interpreter evaluated the (.xi) inside the expression first?
02:14:06 <oerjan> right
02:14:43 <Slereah> Is the non-lazy evaluation done for optimisation purpose?
02:15:09 <oerjan> only madore knows :)
02:15:39 <Slereah> Damn him!
02:15:42 <oerjan> but strict is usually more efficient than lazy
02:16:11 <oerjan> when naively implemented at least
02:16:20 <oerjan> oh one more thing
02:16:47 <oerjan> continuations depend on strictness
02:19:13 <Slereah> I wonder if I could make some sort of lazy unlambda.
02:19:41 <Slereah> Well, on something else than the Love Machine 9000.
02:19:51 <oerjan> you know about Lazy K, right?
02:19:54 <Slereah> It puts a strain on my good mood, with all those chars.
02:20:02 <Slereah> Yes, but Lazy K has horrible I/O
02:20:16 <oerjan> so does unlambda, I at least
02:21:09 <Slereah> What would be a good input for a purely functional language?
02:21:39 <oerjan> heh
02:22:04 <oerjan> lazy K's basic idea (stream -> stream function) is pretty neat
02:22:53 <Slereah> The only output I ever got from Lazy K was more combinators. I don't know if it's because that's supposed to be or because I don't know how to use it.
02:22:59 <oerjan> (neat enough that haskell as an interact function which uses it)
02:23:19 <oerjan> you wrote your own interpreter?
02:23:44 <Slereah> No.
02:24:01 <oerjan> weird maybe it has different modes of running
02:24:12 <Slereah> Or I just don't know how to use it.
02:24:31 <oerjan> i mean, you actually got it to print combinators?
02:25:11 <Slereah> If it surprises you, I doubt it.
02:26:41 <Slereah> I think what I got was the Scheme - Lazy K translator and the program never was interpreted.
02:27:05 <oerjan> aha
02:29:40 <Slereah> Is the interpreter only available as the C++ one and the .exe one?
02:30:09 <oerjan> i don't recall
02:30:56 <Slereah> If so, that would explain it. I never got them working.
02:56:35 -!- puzzlet_ has quit (Read error: 104 (Connection reset by peer)).
02:56:40 -!- puzzlet has joined.
03:07:15 -!- wooby has quit (Read error: 104 (Connection reset by peer)).
03:14:02 * Slereah made some sort of minimalist lazy Unlambda on Python.
03:14:48 <Slereah> I get my gallore of x's, but apparently the expression keeps increasing in size.
03:14:58 <Slereah> `i's all over the place.
03:16:29 <Slereah> Something like this : http://membres.lycos.fr/bewulf/Russell/Loop.txt
03:17:55 -!- puzzlet has quit (Read error: 104 (Connection reset by peer)).
03:18:00 -!- puzzlet has joined.
03:37:19 <Slereah> When it is said that SKK is equivalent to I, isn't it actually SK[any combinator]?
03:37:29 <bsmntbombdood_> yeah
03:37:45 <Slereah> Good. Makes abstraction elimination easier.
03:38:34 -!- bsmntbombdood_ has changed nick to bsmntbombdood.
03:38:51 <oklopol> no tail for bsmnt
03:39:31 <Slereah> Or does it?
03:39:33 <Slereah> Damn.
03:39:52 <oerjan> in actual unlambda there is a bit restriction, SKxy = Ky(xy) so x must be something which has no effect when evaluated or applied
03:40:19 <Slereah> Well, since I'm doing it lazy style, no problem
03:40:37 <Slereah> Although I'm not sure it works perfectly.
03:40:52 <Slereah> When I try actual Unlambda programs, I get errors.
03:41:24 <oerjan> actual unlambda programs usually depend on strictness
03:41:44 <Slereah> Well, I would expect screwed up text display.
03:41:48 <Slereah> But not errors.
03:42:07 <oerjan> hm errors?
03:42:33 * pikhq wonders why Unlambda assumes strictness
03:42:53 <Slereah> Index out of range, mostly.
03:43:19 <Slereah> http://membres.lycos.fr/bewulf/Russell/Lazylambda.py
03:43:28 <Slereah> I think it's linked to the argument checker.
03:45:33 <oerjan> you might write a test that the program remains well-formed at eah step...
03:45:41 <oerjan> *each
03:46:53 <Slereah> Well, right now I'm mostly trying some simple programs with the lambda expressions displayd at each step.
03:47:18 -!- puzzlet has quit (Remote closed the connection).
03:47:27 -!- puzzlet has joined.
03:47:29 <oerjan> i can see that you would get index out of range if the first primitve is applied to too few parameters
03:48:17 <Slereah> Probably. I tried to avoid that, but I guess I'll just have to check manually.
03:49:08 <oerjan> ah yes you have a check for single remaining primitve
03:49:21 <oerjan> *primitive
03:49:29 <Slereah> Well, that's only to stop the program.
03:49:48 <Slereah> I was referring to the if k == len(lambexp) : and such
03:50:23 <Slereah> Well, so far s and k with few arguments work
03:50:32 <oerjan> um, i am referring to index out of bounds < 0
03:51:12 <Slereah> Wut?
03:51:51 <oerjan> `ki e.g. will crash at lambexp[i-2]=="`":
03:52:32 <Slereah> `ki doesn't crash.
03:52:45 <Slereah> Heh. ```sii``sii has the expected effect!
03:53:13 <Slereah> I should make a combinator for SII that doesn't leave `i's everywhere.
03:53:13 <oerjan> oh wait you continue at `
03:53:50 <Slereah> Lazy evaluation make that sort of loop hard on the memory
03:55:01 <oerjan> hm wait
03:55:11 <oerjan> how is it possible that `ki does not crash?
03:55:27 * oerjan doesn't have python
03:56:10 <Slereah> `ki doesn't have the required ``, so it doesn't transform into anything.
03:56:20 <Slereah> It just remains `ki forever.
03:56:26 <oerjan> er i mean the test for `` crashes it
03:56:49 <oerjan> that's my point
03:57:00 <oklopol> sleeps ->
03:57:08 <Slereah> What's the problem in that?
03:57:41 <oerjan> when i=1 and it reaches the k, it gets to the line:
03:57:51 <oerjan> if lambexp[i]=="k" and lambexp[i-1]=="`" and lambexp[i-2]=="`":
03:58:24 <oerjan> the lambexp[i-2] then gives an index out of bounds error afaics
03:58:39 <Slereah> I would expect it to, but for some reason, it doesn't.
03:58:58 <Slereah> The problem boys are usually if lambexp[l]=="`":
04:01:09 <oerjan> oh wait
04:01:28 <oerjan> negative indices in python restart from the end of the string don't they.
04:01:41 <oerjan> that explains it.
04:01:43 <Slereah> Yes.
04:01:51 <Slereah> This might cause problems now that you mention it.
04:02:12 <oerjan> although no expression should ever end in `
04:02:23 <Slereah> I should make if lambexp[i-2]=="`": inside the other conditional
04:02:31 <Slereah> Yes, but well, you never know!
04:02:54 <oerjan> if you test for well-formed-ness at the start...
04:04:04 <oerjan> oh wait
04:04:11 <oerjan> in theory it could end in .`
04:04:19 <Slereah> That too.
04:05:38 * Slereah added if i>1
04:05:55 <Slereah> It's not a lazy program for nothing!
04:14:35 <Slereah> What's a compact way to do Chuch numerals in SKI?
04:14:49 <Slereah> ``s`k``s``s`k``s`ksks`kk``s`k`sik isn't very compact.
04:15:42 <oerjan> i cannot quite decipher that this late...
04:16:00 <Slereah> Don't bother, I'm not even sure they're proper Church numerals.
04:16:19 <oerjan> but i've usually started with 2 and 3 and used arithmetic
04:17:23 <oerjan> powers are just application, multiplication is composition
04:18:01 <oerjan> addition is composition after application
04:35:00 <Slereah> ``s``s`ks``s`kki``s``s`ks``s`kki`ki
04:35:13 <Slereah> Well, I was hoping for something somehow shorter.
04:35:27 <Slereah> But applied to .x and i, it gives the expected result.
04:35:55 <oerjan> hm...
04:36:03 -!- puzzlet has quit (Remote closed the connection).
04:36:08 -!- puzzlet has joined.
04:36:34 <oerjan> ``s`kki = k
04:37:06 <oerjan> eta-reduction
04:37:55 <Slereah> That man is a combinator machine!
04:38:55 <Slereah> I should make a small file of combinators.
04:39:15 <oerjan> 18 and 256 are in my unlambda self-interpreter, btw
04:39:28 <Slereah> Why 18?
04:39:44 <oerjan> length of a table
04:40:09 <Slereah> Well, I have 0 and 2. Let's try 1:
04:40:57 <oerjan> ``s``s`kski = 2 can be extracted from those
04:41:44 <oerjan> and yours above after that reduction
04:42:39 <Slereah> So ``s`kki``s``s`ksk`ki = `ki?
04:42:48 <oerjan> 1 = i
04:42:59 <Slereah> Or maybe not.
04:43:05 <Slereah> Aaaargh
04:43:11 <Slereah> ` notation is hard to read
04:45:05 -!- puzzlet has quit (Remote closed the connection).
04:45:10 -!- puzzlet has joined.
04:47:32 <Slereah> How can 1 be i?
04:47:39 <Slereah> Or...
04:47:42 * Slereah thinks
04:48:02 <Slereah> Eta reduction?
04:48:08 <Slereah> Dang.
04:48:21 <oerjan> 1 f x = f x
04:48:58 <oerjan> 0 f x = x = i x = k i f x, so 0 = k i
04:49:14 <Slereah> It was the (^fx.fx)C = ^x.Cx that worried me
04:49:20 <Slereah> But then I thought of Eta reduction.
04:50:15 <oerjan> haskell puts foralls on automatically, but outermost
04:50:58 * oerjan throws a holy hand grenade after Mr. Wong. after counting to 3.
05:15:07 <Slereah> ````s`k``s``s`kski``s``s`kski.1i
05:15:07 <Slereah> Yay
05:19:53 <Slereah> Argh. It's not even a valid expression apparently
05:31:19 <Slereah> Or not.
05:31:31 <Slereah> Why can't http://www.angelfire.com/tx4/cus/combinator/birds.html give me correct answer?
05:53:24 -!- oerjan has quit ("Good night").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:23:27 <Slereah> Turing fixpoint combinator >> Curry fixpoint combinator
10:18:37 -!- faxathisia has joined.
13:17:12 -!- RedDak has joined.
14:20:05 -!- tejeez_ has joined.
14:25:52 -!- tejeez has quit (Read error: 145 (Connection timed out)).
14:35:14 -!- AnMaster has joined.
14:36:47 -!- oerjan has joined.
15:01:59 -!- Jontte has joined.
15:02:37 -!- Jontte has quit (Remote closed the connection).
15:03:43 -!- Jontte has joined.
15:12:25 -!- Jontte has quit (Remote closed the connection).
15:12:53 -!- Jontte has joined.
15:13:09 -!- Jontte has quit (Remote closed the connection).
15:17:10 -!- Jontte has joined.
15:17:53 -!- Jontte has quit (Remote closed the connection).
15:18:21 -!- Jontte has joined.
15:29:16 -!- jix has quit (Nick collision from services.).
15:29:26 -!- jix has joined.
15:51:36 -!- AnMaster_ has joined.
15:58:48 -!- AnMaster has quit (Connection timed out).
16:10:32 -!- AnMaster_ has quit (Connection timed out).
16:12:58 -!- AnMaster_ has joined.
16:20:04 -!- RedDak has quit (Remote closed the connection).
16:20:56 -!- AnMaster_ has changed nick to AnMaster.
16:26:27 -!- oklopol has quit (Read error: 110 (Connection timed out)).
16:58:09 -!- AnMaster_ has joined.
16:58:20 -!- AnMaster has quit (Connection timed out).
16:59:15 -!- AnMaster_ has changed nick to AnMaster.
17:59:08 -!- Jontte has quit (Remote closed the connection).
17:59:34 -!- Jontte has joined.
17:59:54 -!- Jontte has quit (Remote closed the connection).
18:07:45 -!- Jontte has joined.
18:22:06 * Slereah added the m combinator on the interpreter for SII
18:22:15 <oerjan> m?
18:22:39 <Slereah> http://www.angelfire.com/tx4/cus/combinator/birds.html
18:23:06 <Slereah> SII leaves a lot of `i in the interpreter when using lazy evaluation.
18:23:13 <oerjan> ah yes
18:23:33 <oerjan> i had a similar thought that Lazy K needed it
18:24:04 <oerjan> ideally you would memoize its results somehow. then you would get genuinely cached cyclic structures
18:24:53 <Slereah> Ah, index string out of range.
18:25:08 <Slereah> What to do what to do.
18:25:12 <oerjan> still haven't solved that problem?
18:25:25 <Slereah> Still haven't found the problem.
18:25:40 <Slereah> It's the first time some code I made have the problem.
18:25:44 <Slereah> `m``s`k`.xim
18:25:56 <oerjan> does this show up on the first iteration?
18:26:31 <oerjan> otherwise i repeat my suggestion to make a test that the expression remains well-formed at each stage
18:26:32 <Slereah> Yes. and unsurprisingly, it's in the m combinator section.
18:29:01 <Slereah> Ah yes, I just forgot to add the case where there's another m combinator.
18:30:15 -!- oerjan has quit ("Going, going, gone").
18:30:30 -!- calamari has joined.
18:34:10 <pikhq> Allow me to give you hell's weather report. . .
18:34:23 -!- Sgeo has joined.
18:34:28 <pikhq> "Cold, with a blizzard expected for the next week. Visibility, 0."
18:35:20 * Sgeo didn't work on PSOX or go on IRC yesterday..
18:36:07 <pikhq> There are, as of today, no major labels not offering or soon going to be offering DRM-free music for download.
18:49:22 <tesseracter> pikhq: well, motley fools just told investors not to invest in record labels.
18:49:42 <tesseracter> let us pray to the almighty buck.
18:50:20 <pikhq> I still wouldn't invest in them.
18:50:28 <pikhq> I don't see them lasting out the decade at this rate.
18:50:42 <tesseracter> and indies topping billboard charts? bye bye big record companies.
18:51:50 <pikhq> And fairly major artists leaving the record companies? That's *got* to hurt.
18:54:11 <tesseracter> everything points to it. only thing left is the pa-ra-dig-em shift.
18:54:24 <pikhq> Which is in progress.
19:09:17 -!- ais523 has joined.
19:17:20 <Slereah> Hello sir.
19:17:51 <ais523> hello
19:18:17 * ais523 is busy handling the fallout from the recent release of C-INTERCAL 0.27
19:20:23 <ais523> I actually had a crazy idea for functional INTERCAL
19:20:37 <ais523> where you could create virtual threads with frozen values for variables
19:20:45 <ais523> that could still steal control of the program from the main thread
19:20:53 <ais523> as a complicated way of implementing lambda
19:40:58 <Slereah> Maybe I should write an abstraction eliminator with lambda calculus written unlambda style.
19:40:58 <pikhq> You are insane.
19:41:06 <Slereah> Parenthesis are bothersome to deal with.
19:46:32 * ais523 has one of those, in elisp
19:46:41 <ais523> not on this computer, though, so I can't post it right now
19:46:45 <ais523> and it was buggy anyway
19:47:19 <ais523> besides, if it was fully parenthesised before, all you need to do is get rid of all the closing parens
19:47:24 <Slereah> I have one, but it's in my pen.
19:49:18 <ais523> I used it to write a P'' interpreter in Unlambda
19:49:47 <ais523> it was pretty poor-quality Unlambda code, though. Just abstraction-eliminated s, k, and i, apart from a single c
19:50:01 <ais523> the c was to handle Unlambda's silly I/O model
19:50:57 <Slereah> I'm doing this for some sort of lazy unlambda.
19:51:23 <Slereah> 'cause I don't do very well with strict evaluation.
19:57:16 -!- oklopol has joined.
20:02:20 <ais523> you could always use `d before everything
20:02:57 <ais523> BTW, I like the way that d can be dynamically moved around the program in Unlambda, so you can decide whether evaluation is lazy or not at runtime
20:05:23 <Slereah> Well, that would increase drastically the size of programs
20:05:42 <Slereah> Which aren't that small to begin with.
20:10:28 <ais523> clearly the way to go is full Unlambda virtualisation
20:10:44 <oklopol> did something happen while i was gone?
20:12:37 <Slereah> We solved the halting problem.
20:13:45 <pikhq> We also made an infinite tape.
20:14:44 <Slereah> And we made a Malbolge interpreter in Malbolge.
20:15:00 <ais523> correction: Malbolge-T, there isn't enough memory otherwise
20:15:00 <oklopol> but nothing interesting?
20:15:13 <Slereah> Same old, same old.
20:16:25 <oklopol> ais523: halting problem + infinite tape, but a malbolge self-interpreter is impossible? :)
20:16:47 <Slereah> Well, we're not that good!
20:16:58 <Slereah> Solving the halting problem is easy next to Malbolge!
20:18:16 <pikhq> I'm not too impressed.
20:18:28 <ais523> infinite tape should be possible; you synthesize it out of materials in the environment
20:18:47 <pikhq> Frankly, a Brainfuck interpreter in Malbolge would be much more significant than an infinite tape or a function H.
20:18:57 <Slereah> Well, even if there's infinite materials, it will take an infinite time.
20:19:15 <ais523> you can solve the halting problem if you have infinite time
20:19:23 <Slereah> I'm not even going into the energy problem.
20:19:24 <ais523> I suppose you've seen how it's possible in TwoDucks?
20:19:28 <Slereah> Yes.
20:19:37 <Slereah> I've also read the papers on hypercomputation.
20:19:50 <pikhq> A hypothetical Infinity Machine would actually make the halting problem trivial.
20:19:54 <pikhq> http://www.chiark.greenend.org.uk/~sgtatham/infinity.html
20:19:56 <Slereah> Although it can only solve the halting problems of Turing machine.
20:20:01 <Slereah> Not its own.
20:20:28 <Slereah> http://www.hypercomputation.net/
20:22:45 -!- tejeez_ has changed nick to tejeez.
21:35:54 -!- oerjan has joined.
21:39:04 -!- ais523 has quit (""""").
21:40:18 -!- RedDak has joined.
21:54:17 <Slereah> Does this look okay as an abstraction eliminator? http://membres.lycos.fr/bewulf/Russell/AE4.py
21:54:31 <Slereah> For instance, `^a`^ba
21:54:37 <Slereah> gives ``s`kki
21:55:24 <oerjan> the string index handling makes me shiver these days :(
21:55:55 -!- faxathisia has left (?).
21:56:00 -!- faxathisia has joined.
21:56:28 <oerjan> wait a minute, why ` ?
21:56:31 <Slereah> And `^a`^b`^c``ac`bc gives ``s``s`ks``s``s`ks``s`kk`ks``s``s`ks``s``s`ks``s`kk`ks``s``s`ks``s`kk`kk``s`kki``s`kk`ki``s``s`ks``s``s`ks``s`kk`ks``s``s`ks``s`kk`kk`ki``s`kk`ki
21:56:52 <oerjan> you really need some optimizations
21:56:56 <Slereah> I use unlambda notation, because string handling gets that much worse with parenthesis.
21:57:34 <faxathisia> :S
21:57:36 <faxathisia> really?
21:57:45 <Slereah> Well, for me at least.
21:57:45 <oerjan> um, the notation from the unlambdaifier is ^a^b$a
21:58:06 <Slereah> Well, not the exact lambda notation of unlambda.
21:58:18 <oerjan> you need eta reduction. ``s`kfi = f
21:58:27 <Slereah> I use `^xC for lambda x.C
21:58:39 <oerjan> the ` is deceptive
21:59:13 <oerjan> you're not really applying anything
21:59:21 <Slereah> I guess so.
21:59:37 <Slereah> I though I would run in some ``^x situation, but you're right.
22:00:01 <oerjan> also, the $x notation prevents trouble if you have a variable called s k or i ...
22:01:34 <oerjan> anyway the pain of doing this with indices into strings rather than an actual data structure... >_<
22:02:06 <Slereah> I don't know the difference, so there's that.
22:02:27 <oerjan> of course avoiding pain may not be a big goal here :D
22:02:50 <oerjan> well, an AST
22:02:59 <Slereah> Wait.
22:03:07 <Slereah> I think `^x is still useful.
22:03:32 <Slereah> For the C1 function, which looks for the end of the combinator applied.
22:04:46 <Slereah> So that ^x(^y.y) is counted as one combinator.
22:05:18 <Slereah> `^x`^yy - 2 apply operator, 3 "variables"
22:05:55 <oerjan> nah, all you need to do is treat ^ as you treat `
22:06:09 <Slereah> Oh.
22:06:28 <Slereah> Well, let's try that.
22:14:34 <Slereah> String index isn't hard to make
22:14:38 <Slereah> It's hard to modify.
22:24:42 <Slereah> Well, seems to work so far
22:24:49 <Slereah> Let's try eta reduction now.
22:33:03 <Slereah> Works for k.
22:33:39 <Slereah> s doesn't seem to eta reduce that easily though
22:37:24 <Slereah> Maybe replace ``skf by i.
22:38:31 <oerjan> with lazy evaluation that is fine
22:38:56 <oerjan> although, i don't think ``skf is produced by abstraction elimination
22:39:14 <oerjan> hm or could it?
22:39:54 <oerjan> ^x`kx`fx
22:40:12 <oerjan> after eta reduction, that would become ``skf
22:40:16 <Slereah> I can't see it in the AE of s at least.
22:40:40 <oerjan> er, missing a `
22:42:38 <oerjan> oh you mean reducing ^x^y^z``xz`yz to s somehow?
22:42:57 <Slereah> Yes.
22:43:12 <Slereah> So far, with eta reduction, it's ``s``s`ks``s``s`ks``s`kk`ks``s``s`ks``s``s`ks``s`kk`ks``s``s`ks``s`kk`kkk``s`kk`ki``s``s`ks``s``s`ks``s`kk`ks``s``s`ks``s`kk`kk`ki``s`kk`ki
22:43:23 <Slereah> Which works fine on the lazy interpreter, but well.
22:43:38 <oerjan> -> ^x^y``sxy
22:44:08 <oerjan> the trick is to do abstraction elimination and eta reduction fully on the innermost lambda first
22:44:30 <Slereah> Ah. Right now, the eta reduction is only on the end of the process.
23:16:22 -!- RedDak has quit (Read error: 104 (Connection reset by peer)).
23:34:37 <Slereah> The abstraction elimination seems to work okay.
23:35:55 <Slereah> Or maybe not.
23:36:08 <Slereah> Index out of range for half the Turing combinator.
23:37:01 <Slereah> Oh. I just wrote it wrong.
23:48:10 -!- timotiis has joined.
23:48:49 <pikhq> Slereah: Out of immense curiosity, why are you so intent on inventing new combinators/making a lazy Unlambda? :p
23:50:53 <Slereah> I'm not inventing them.
23:51:00 <Slereah> All those combinators already exist!
23:51:21 <Slereah> The lazy is because I'm just not that eager to use strict evaluation.
23:51:33 * oerjan groans
23:51:52 * oerjan wonders if Slereah knows he just made a pun
23:52:17 <Slereah> What, lazy?
23:52:32 <oerjan> strict and eager are synonyms :D
23:52:39 <Slereah> Oh. Then no.
23:52:48 <faxathisia> woah
23:53:16 <faxathisia> That was such an incredibly bad pun
23:53:34 <faxathisia> amazing coincidence
23:55:22 <oerjan> everyone can make a pun others don't understand. but to make one you don't understand yourself... :D
23:56:51 <Slereah> Boy, now that I know, I'm thinking of an even worst pun!
23:57:30 * pikhq groans
23:59:14 -!- timotiis has quit ("leaving").
2008-01-05
00:02:43 <Slereah> http://membres.lycos.fr/bewulf/Russell/AE6.py
00:05:04 <Slereah> There's nothing to distinguish variables from combinators, so I would avoid s-k-i.
00:05:22 <Slereah> Although I'm not even sure what it might do.
00:07:15 <Slereah> Well, it screw it up apparently.
00:50:50 -!- faxathisia has quit ("Leaving").
01:15:31 -!- Sgeo has quit ("Ex-Chat").
01:55:43 -!- SimonRC has quit (Read error: 110 (Connection timed out)).
02:05:34 -!- tesseracter has changed nick to weilawei.
02:08:32 -!- weilawei has changed nick to tesseracter.
02:21:05 <Slereah> Damn. The predecessor function won't pass through the ABSTRACTOR
02:48:46 -!- Jontte has quit (Remote closed the connection).
04:00:03 -!- calamari has quit ("Leaving").
04:49:33 -!- slereah_ has joined.
05:08:48 -!- Slereah has quit (Read error: 110 (Connection timed out)).
05:09:05 -!- oerjan has quit ("Good night").
05:48:25 -!- slereah_ has changed nick to Slereah.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
10:52:53 -!- SimonRC has joined.
10:59:00 -!- Jontte has joined.
11:48:39 -!- sebbu has joined.
11:50:47 -!- AnMaster_ has joined.
12:01:50 -!- AnMaster has quit (Connection timed out).
12:19:22 <sebbu> [amsg] carte mère, cpu, ram, carte graphique, alim changés, windows marche encore
12:25:20 -!- faxathisia has joined.
12:25:24 -!- Hiato has joined.
12:25:34 <Hiato> Wassabi all :)
12:26:16 -!- AnMaster_ has changed nick to AnMaster.
12:34:52 <Hiato> alright fine, Hi all
12:35:19 <faxathisia> Hello
12:36:11 <Hiato> Anything new happening in the eso community? (Wasn't here since Wednesday...)
12:37:26 <faxathisia> hmm I'm not sure
12:37:39 <Hiato> ok cool
12:37:44 <faxathisia> I'm trying to decide if this language is esoteric or not
12:37:56 <Hiato> which?
12:38:06 <faxathisia> It's called Janus
12:38:15 <faxathisia> Here is bubblesort http://rafb.net/p/woIN0k75.txt
12:38:31 <Hiato> hrmm
12:38:39 <Hiato> looks Lua-esque to me
12:38:43 <faxathisia> it does look so odd (it's almost exactly like the While language), but you can any valid program in it forwards and backwards
12:38:51 <faxathisia> which is certainly not usual :)
12:38:59 <Hiato> woow
12:39:03 <Hiato> that's cool
12:39:04 <faxathisia> so I'm not sure how to classif y it
12:39:13 <Hiato> did you make it?
12:39:27 <faxathisia> well I read a paper on it, then I emailed the authors asking for their interpreter..
12:39:35 <Hiato> I see
12:39:36 <faxathisia> they didn't reply though.. so I have written one
12:39:42 <Hiato> lol, awesome
12:40:06 <Hiato> hrmm
12:40:07 <Hiato> well
12:40:08 * faxathisia (is doing a compiler now so I can hopefully run the self interpreter)
12:40:18 <Hiato> that would be wicked
12:40:30 <Hiato> I must say, that it is not what I would expect from an eso lang
12:40:44 <faxathisia> yeah, it might not count
12:40:49 * faxathisia isn't sure
12:40:52 <Hiato> I generally expcet either obfuscation or minimisation
12:41:07 <Hiato> seems to be a very structured language to
12:41:11 <Hiato> very keywordy
12:41:13 <Hiato> ;)
12:42:18 <faxathisia> the only things are += -= ^=, if_then_else_fi_, from_do_loop_until, call_, uncall_ and skip, and the only data is numbers
12:42:34 <Hiato> oh... hrmm...
12:42:41 <faxathisia> (32 bit integers)
12:42:44 <Hiato> I see
12:42:47 <Hiato> ^=?
12:42:50 <faxathisia> XOR
12:42:54 <Hiato> cool
12:43:05 <faxathisia> += -= are inverse, ^= is it's own inverse
12:43:13 <Hiato> yeah
12:43:16 <Hiato> and procedure
12:43:20 <Hiato> is that also a keyword?
12:43:23 <faxathisia> Yes
12:43:33 <Hiato> hrmm
12:43:36 <Hiato> maybe it's eso
12:43:40 <Hiato> so hard to tell
12:43:42 <Hiato> ;)
12:43:45 <faxathisia> It's kind of on-the-edge :D
12:43:49 <Hiato> yip
12:43:57 * faxathisia should try to come up with an esolang...
12:44:07 <Hiato> Yeah, that's a nice idea
12:44:16 <Hiato> I'd like to see what your mind can create :P
12:44:50 -!- timotiis has joined.
12:45:24 * faxathisia would really like to see more interesting sub-turing languages though
12:45:41 <Hiato> well, Im working on one as we speak
12:45:51 <faxathisia> oo
12:45:57 <Hiato> actually though
12:46:03 <Hiato> it might be Turing complte
12:46:07 <Hiato> but who knows :)
12:46:23 <faxathisia> someone will soon have proof by implementing brainfuck in it
12:46:24 <faxathisia> :D
12:46:31 <Hiato> lol, yip
12:46:36 <faxathisia> What is it?
12:46:43 <Hiato> I'll link now
12:46:46 <Hiato> one sec
12:48:53 <Hiato> http://rafb.net/p/TFMAVK60.txt
12:49:08 <Hiato> if stuff is mis-aligned, it's cause it cam out of word
12:49:11 <Hiato> ;)
12:49:22 <Hiato> sorry about the quantity
12:53:15 <faxathisia> It's got loops and conditional branching.. probably universal
12:53:24 <Hiato> true
12:53:25 <faxathisia> mad though :p
12:53:29 <Hiato> thanks :)
12:55:52 <faxathisia> hmm
12:55:58 <Hiato> ?
13:01:38 <Hiato> be back soon(ish)
13:10:38 <faxathisia> esolang propsal 1: Nothing -- Only valid program is the empty program, this language can compute everything in the NONE complexity class
13:14:20 <Hiato> back
13:14:22 <Hiato> hrmm
13:14:26 <Hiato> faxasthisia
13:14:34 <Hiato> I'm not so keen on that one
13:14:42 <Hiato> for some odd reason ;)
13:14:54 <Hiato> that would be leaning towards joke language
13:15:35 <Hiato> even though scientifically accurate, it can compute anything of zero complexity
13:15:48 <faxathisia> http://qwiki.stanford.edu/wiki/Complexity_Zoo#none
13:16:29 <Hiato> lol
13:16:31 <Hiato> well
13:16:36 <Hiato> yes, you have a point
13:16:53 <Hiato> but then the interpreter would be int main() {return0};
13:16:55 * faxathisia provides an implementation, in Nothing:
13:16:56 <Hiato> fascinating
13:16:59 <Hiato> :P
13:17:01 <Hiato> lol
13:17:26 <Hiato> ok, I wrote up the hello world prog : ""
13:17:31 <Hiato> and fib
13:17:33 <faxathisia> That's impossible
13:17:35 <Hiato> ;)
13:17:37 <Hiato> true
13:17:44 <Hiato> what about a self interpreter
13:17:47 <Hiato> """"
13:18:05 <faxathisia> I already pasted a self interpreter :P
13:18:14 <Hiato> :)
13:18:23 <faxathisia> ok ok *tries harder*
13:18:29 <Hiato> lol
13:18:36 * faxathisia is reading the complexity zoo for inspiration
13:18:54 <Hiato> preferably come up with something with >=1 dimension of complexity
13:18:56 <Hiato> :)
13:18:59 <Hiato> enjoy ;)
13:19:01 <faxathisia> hehe
13:32:04 <Hiato> ok, going somewhere, be back later
13:32:08 -!- Hiato has left (?).
15:28:51 -!- jix has quit (Read error: 60 (Operation timed out)).
15:29:18 -!- jix has joined.
15:57:05 -!- sebbu2 has joined.
16:01:10 -!- iEhird has joined.
16:01:26 <iEhird> esilang idea.
16:01:54 <iEhird> haskellesque type definitions only
16:02:08 <iEhird> they are much more powerful though
16:02:40 <iEhird> function bodies ate inaccessivle and determined by something like lambdabots djinn
16:03:24 <iEhird> Turing complete. hopefully.
16:03:56 <iEhird> thr ultimate dwcparative Lang
16:05:39 <faxathisia> iEhird I love it!!
16:06:07 <faxathisia> this is what I want to code in
16:06:14 <faxathisia> though it is not very eso..
16:06:39 <faxathisia> Do you know this sort of exists already?
16:07:01 <faxathisia> (just that the djinn bit is mostly done by the programmer)
16:08:18 -!- iEhird has quit (Remote closed the connection).
16:08:21 -!- oerjan has joined.
16:14:39 -!- sebbu has quit (Read error: 110 (Connection timed out)).
16:14:59 -!- iEhird has joined.
16:18:51 <oerjan> faxathisia: i say there are at least two kinds of esolangs, those that are syntactically esoteric and those that are semantically esoteric. Janus should not be disqualified just for not being in the first group.
16:19:48 <oerjan> especially since a bit of the second makes a language much more interesting...
16:20:37 <oerjan> it's just that making a weird syntax is so much easier that those tend to be a huge majority
16:22:09 <faxathisia> in that case, Do you think it is one or not?
16:23:13 <faxathisia> I mean I know of only.. 5 I think reversible languages
16:23:20 <oerjan> i think reversible languages are pretty esoteric :)
16:23:30 <faxathisia> cool :D
16:23:48 <oerjan> there's a category on the wiki for them
16:24:20 <oerjan> however, we have a tradition that the intention of the language author counts too
16:24:37 <faxathisia> oh right..
16:24:56 <faxathisia> I really have no idea what the authors intended
16:25:06 <faxathisia> might be research
16:26:19 <oerjan> indeed
16:26:26 -!- faxathisia has left (?).
16:26:29 -!- faxathisia has joined.
16:27:38 <iEhird> type Integer = a -> Integer -> Integer
16:27:42 <iEhird> I think
16:27:59 <faxathisia> huh ?
16:28:25 <iEhird> zero :: a -> b -> b
16:28:26 <oerjan> Error: Recursive type
16:28:41 <iEhird> oerjsn this ain't Gaskell
16:29:03 <faxathisia> It's twelf!
16:29:03 <oerjan> Error: Lousy typing
16:29:04 <iEhird> thisbis Tc type system and nothing elsev-skell
16:29:18 <faxathisia> Nat : Type, Z : Nat, S : Nat -> Nat
16:29:19 <iEhird> error iPhone youvhedreej tuppbg
16:29:25 <iEhird> touchscree
16:29:44 <iEhird> fax not enough without bodies
16:29:46 <faxathisia> I don't think turing complete type system is good idea
16:29:48 <iEhird> anyway
16:29:49 <faxathisia> but almost turing
16:30:05 <faxathisia> if everything terminates you can encode proofs
16:30:27 <faxathisia> otherwise you can prove false and proofs don't mean anything anoymore
16:30:46 <faxathisia> Qi has TC type system apparently though
16:31:24 <iEhird> hmm anyone know a func rep of into that isn't church numerals
16:31:32 <oerjan> afair the point is if your type system is not terminating then you have to actually _run_ the types in your program
16:31:50 <oerjan> to check that they do terminate
16:32:03 <oerjan> you cannot just do them statically
16:32:04 <iEhird> oerjsn the types terminate the functions autogrnned by them may not
16:32:24 <faxathisia> if you can encode a fixpoint in the type system then you basically got X : (a -> a) -> a, which lets you prove any 'a'?
16:32:40 <faxathisia> e.g. everything is provable
16:32:57 <oerjan> yep - except the proof will not terminate
16:33:19 <oerjan> so if you actually run the proof you are still safe from reaching an erroneous conclusion, i think
16:33:26 <faxathisia> hmmmmm
16:33:35 <iEhird> type Recur = Recur -> a
16:33:52 <oerjan> now this as usual my vague understanding from reading discussions...
16:33:57 <oerjan> *is as
16:34:22 <iEhird> Y :: Recur a -> ...
16:34:33 <iEhird> CBS to type the rest Oman iPhone
16:34:44 <iEhird> someone else fi I'd :P
16:34:49 <faxathisia> lol
16:35:29 * oerjan half thinks iEhird must be wearing boxing gloves as well :D
16:35:50 <iEhird> no just typing really fast and ompeefixely
16:35:54 <iEhird> imprecicelt
16:36:22 <oerjan> doesn't it have spelling correction or something?
16:36:28 <iEhird> yes
16:36:39 <iEhird> that's the main problem
16:37:17 * faxathisia agrees about it being the ultimate declarative language
16:37:45 <faxathisia> The kind of theorm proving required would be ... a lot of work to code in the first place though
16:38:39 <iEhird> I guess
16:38:46 <iEhird> I would just do
16:39:22 <iEhird> djinn(defs)
16:39:37 <iEhird> and die if we run into problems
16:39:49 <faxathisia> actually they should add #djinn to haskell
16:40:00 <faxathisia> #djinn curry :: ((a, b) -> c) -> a -> b -> c
16:40:20 <iEhird> IMO the best strategy would be compiling to c using some vm like stuff for dtnamicism
16:40:36 <iEhird> compiler written I'm hadell for pat matching
16:41:22 <iEhird> I think I lost xobbecton???
16:41:30 <oerjan> hm a language based on spelling errors...
16:41:39 <oerjan> iEhird: still hearing you
16:42:09 <faxathisia> lol xobbecton
16:42:30 <iEhird> oerjsn Yes
16:42:34 <iEhird> :D
16:43:34 <iEhird> I want iEmacs for iphone
16:43:51 <iEhird> write my compiler right here
16:43:53 <iEhird> :P
16:47:09 -!- iEhird has quit (Remote closed the connection).
16:53:08 -!- iEhird has joined.
16:56:44 -!- iEhird has quit (Remote closed the connection).
17:58:30 <Slereah> *yawn* Hello people.
18:02:18 * pikhq is of the opinion that an iPhone has a horrible keyboard, as do most portable devices.
18:04:24 <timotiis> hm, I wasn't a great fan of it when I played with one
18:05:50 <Slereah> Here, have some propaganda : http://www.thebestpageintheuniverse.net/c.cgi?u=iphone
18:06:22 <timotiis> no thanks, I don't feel like having propaganda
18:06:40 <faxathisia> I do, but not right now
18:07:17 <pikhq> The iPhone actually has a decent interface, aside from that damnable keyboard.
18:07:28 <pikhq> The big thing that I hate is that it's all locked up.
18:07:37 <pikhq> I enjoy things like Rockbox and OpenMoko.
18:07:52 <pikhq> There's just something wonderful about sticking Doom on your MP3 player.
18:08:51 <Slereah> I have a mp3 of some vaguely Doom inspired song on mine.
18:08:55 <Slereah> "Blood on the wall"
18:09:06 <pikhq> Mine also runs the Game of Life.
18:10:02 <timotiis> my phone runs the game of life. useful when bored
18:10:57 <pikhq> Mine would if a) I had money b) the damned Neo 1973 would ship already.
18:11:26 <Slereah> http://rome.ro/sounds/Blood_On_The_Walls.mp3
18:11:35 <Slereah> Heh, still online.
18:19:42 <timotiis> hehe
18:19:53 <timotiis> there's a pretty nifty little java implementation out there
18:21:14 -!- iEhird has joined.
18:21:24 -!- iEhird has quit (Client Quit).
18:21:35 -!- iEhird has joined.
18:21:54 <iEhird> now THAT'S clever
18:22:36 <iEhird> a scheme interp that has really efficient continuations: it actually portable c
18:22:45 <iEhird> plies the c stack
18:23:51 <iEhird> now if you did that in a compiler scheme-c interaction would be trivial
18:24:17 <iEhird> scm proc = c proc
18:25:19 <iEhird> tail calls could be done using setjmp
18:25:34 <pikhq> Gah! Long jumps!
18:25:34 <pikhq> :p
18:25:43 <iEhird> like a macro TAIL(func,arg...)
18:26:19 <iEhird> setjmp(buf); func(buf,arg...);
18:26:37 <iEhird> dunno
18:27:22 <iEhird> basically: every function that tailcalls has a trampoline embedded
18:28:36 <pikhq> You want fun? int foo __attribute__((cleanup (foo_deconstructor))) = 0;.
18:28:44 <pikhq> Mmm. Attributes. :p
18:29:39 <iEhird> :)
18:29:57 <iEhird> no gcc specifics!
18:31:06 <pikhq> But GCC runs everywhere!...
18:32:20 <iEhird> SCMVAL scm_fact(SCMENV env, struct jmp_buf tail, SCMVAL n) {
18:32:43 <iEhird> hmm make that jmo buf *
18:33:14 <iEhird> hm
18:33:20 <iEhird> not sure...
18:35:22 <iEhird> pikhq
18:35:36 <iEhird> I guess if you are stack smashing already
18:36:19 <iEhird> then you could mangle sp-1 then jump
18:51:33 * pikhq observes that stack smashing might *not* work on this system. . .
18:52:05 <pikhq> My system, being AMD64, enforces the NX bit.
18:52:14 * Slereah imagines the incredible Hulk, smashing stacks
18:53:04 <iEhird> there's probably a way pikhq
18:53:21 <iEhird> stack smashing is quite a common trick
18:54:39 -!- iEhird_ has joined.
18:55:00 <pikhq> Um. . . Surely stack smashing is something that shouldn't be used?
18:55:19 <pikhq> (no more than actually *using* a buffer overflow?)
18:56:40 <iEhird_> controlled stack smashing is useful in cases like this :-)
18:57:19 <iEhird_> most/all common arch/os's support it somehow
18:57:33 <pikhq> It's also non-portable as fuck, *and* liable to break on systems like OpenBSD, NX-bit supporting systems, etc.
18:57:51 <iEhird_> you can do it on openbsd
18:57:59 <pikhq> (granted, you can disable the stack-smashing protection on those systems. . . Doesn't make that a good idea.)
18:58:13 <iEhird_> writing a libcstack would be good
18:58:16 <pikhq> Yeah; you have to compile with -fno-stack-protector
18:58:47 <iEhird_> pikhq several common prigs do it
18:58:49 <iEhird_> progs
18:58:51 -!- Sgeo has joined.
18:59:10 <pikhq> Doesn't make it a good idea.
18:59:50 <pikhq> It's almost *exactly* like relying on buffer overflows in your code.
18:59:57 <iEhird_> void *dest; cstack_copy(dest);
19:00:25 <iEhird_> cstack_unwind(); cstack_pushall(dest);
19:00:58 <iEhird_> or something
19:04:52 -!- iEhird_ has quit.
19:05:14 -!- iEhird_ has joined.
19:05:54 -!- iEhird has quit (Read error: 113 (No route to host)).
19:13:59 <iEhird_> pikhq ping
19:14:42 <pikhq> Pnog.
19:15:57 <Slereah> Gnap
19:18:20 <iEhird_> I wonder how this will interact with gnu c
19:19:06 <pikhq> That depends.
19:19:28 <pikhq> If it depends upon undefined behavior, GCC will shoot you, then hand you a few errors and warnings.
19:19:30 -!- iEhird has joined.
19:19:45 <iEhird> actually I wonder the most portable way to find the srams
19:19:47 <iEhird> stack
19:21:06 -!- Hiato has joined.
19:21:29 <Hiato> Alright, back :)
19:21:32 <Hiato> Wassup all
19:22:03 <Hiato> Faxasthisia, how's the inspiration going?
19:22:08 <iEhird> another fun trick: call out native compiler then cast object code to func
19:22:25 <iEhird> = traditional interactive scheme system
19:22:52 -!- _KS has joined.
19:31:47 -!- oerjan has quit ("Sup").
19:35:37 <iEhird> ping
19:36:06 -!- calamari has joined.
19:42:59 -!- Hiato has left (?).
19:45:52 -!- iEhird_ has quit (Read error: 113 (No route to host)).
19:57:20 -!- iEhird has quit.
19:58:01 -!- iEhird has joined.
20:06:08 <SimonRC> There is one way to make tail recursion really easy to do:
20:06:16 <SimonRC> seperate the data and return stacks
20:06:27 <SimonRC> It is trivial for forth-like languages
20:07:10 <bsmntbombdood> how does that make it easy?
20:08:54 <SimonRC> all calls have either a look-ahead or the compiler modifies the call into a jump
20:10:09 <SimonRC> and every defined word ends in a call to another word, so there are lots of oportunities for tail-recusion
20:10:13 <SimonRC> optimisation
20:10:15 <iEhird> ("hello".^#)^#
20:10:18 <SimonRC> iEhird: ?
20:10:43 <iEhird> stack based esolang requiring quoting and unwrapping to loop!
20:11:05 <iEhird> (...) is a list
20:11:21 <iEhird> with elements "hello", ., etc
20:11:29 <iEhird> ^ is dup
20:11:39 <iEhird> . is output and pop
20:12:14 <iEhird> # is append the list on the top of the stack to the program and pop
20:12:25 <iEhird> so (x)# == x
20:13:15 -!- Hiato has joined.
20:15:44 <SimonRC> iEhird: cool
20:15:52 <SimonRC> seems familiar though
20:16:21 <iEhird> oh damn underload foes it
20:16:38 <iEhird> ok how about this
20:16:58 <iEhird> # wraps the rest I'd the prog
20:17:13 <iEhird> #abc -> (abc)
20:17:26 <iEhird> wait, no
20:17:44 <iEhird> hm
20:18:27 <iEhird> what about a Lang involving rewriting its own code by virtue of it being concatenrive and lists cab store code
20:20:04 <iEhird> ("hello".$0@$+$0!)$0@$+
20:20:11 <iEhird> I think that's right
20:20:27 <Hiato> woow
20:20:45 <iEhird> where $ the program as a list
20:20:54 <iEhird> @ nth element
20:21:00 <iEhird> + append
20:21:05 <iEhird> ! delete
20:22:09 <SimonRC> nasty
20:22:19 <timotiis> just put the whole program down, and have the output be the code after an illegal operation is executed. The only things you can modify are progra msource
20:22:25 <iEhird> simonrc but fun
20:23:51 <iEhird> ("hello"0\$@)0\$@
20:24:15 <iEhird> @ get element call func with it
20:24:31 <iEhird> \ quote func
20:24:33 <iEhird> hmmm
20:24:37 * SimonRC goes.
20:25:31 <iEhird> ("hello"!+@0)+@0
20:26:03 <timotiis> hm
20:26:22 <iEhird> hm
20:26:58 <timotiis> I think that a language where the only thing you can do is modify the program itself would be interesting. Then the prog itself is simply read left to right, and each symbol has it's effect
20:27:00 <iEhird> +(!"hello"+@0)
20:27:11 <iEhird> no more stack
20:27:14 <timotiis> as soon as something illegal happens, the whole program exits, printing the current source
20:27:25 <iEhird> next remove @
20:30:34 <iEhird> if you have a :xyz
20:30:41 <iEhird> x index
20:30:43 <iEhird> y list
20:30:49 <iEhird> z thing
20:31:01 <iEhird> append to y at x z
20:31:10 <iEhird> then that's possible
20:31:10 -!- calamari has quit ("Leaving").
20:36:40 -!- calamari has joined.
20:37:40 <Hiato> Is daar iemand hier wat verstaan my as ek Afrikaans praat?
20:38:49 <timotiis> ??
20:39:00 <Hiato> Ek het so gedink.
20:39:14 <timotiis> Come again, preferably in English
20:39:23 <Hiato> I said, "Is there anyone who will understand me if I speak Afrikaans?"
20:39:31 <Hiato> then I said "I though so" :P
20:40:05 <timotiis> I see
20:40:19 <timotiis> I got Afrikaans, but that was about it
20:40:24 <Hiato> lol
20:40:27 <Hiato> I suspected as much
20:40:30 <Hiato> what about
20:40:47 <Hiato> Mih mevin oti ca-usher uni ma-duber Ivrit?
20:40:49 <Slereah> Well, the verstaan is close enough to other germanic languages to understand too
20:40:55 <Hiato> yip
20:41:03 <Hiato> well, Afrikaans is nearly Dutch
20:41:05 <Slereah> For the rest, it will be hard!
20:41:09 <Hiato> :)
20:41:15 <Hiato> and the Hebrew?
20:41:19 <Hiato> no-one? ;)
20:41:27 <Slereah> I once spoke hebrew.
20:41:32 <Hiato> :D
20:41:34 <Slereah> When I was six years old.
20:41:40 <Slereah> Now, I've forgotten most of it.
20:41:45 <Hiato> Aha, well, I see
20:41:53 <Hiato> where are you from, Slereah?
20:41:56 <Slereah> France.
20:41:59 <Hiato> Cool
20:42:04 <Slereah> But my dad taught me.
20:42:04 <Hiato> so let me try:
20:42:15 <Hiato> Ja na par pa Franscois...
20:42:18 <Hiato> or something
20:42:20 <Hiato> cool
20:42:21 <tejeez> puhutteko suomea
20:42:21 <Slereah> Lulz
20:42:29 <tejeez> (= do you speak finnish)
20:42:36 <Slereah> Perkele!
20:42:36 <Hiato> nien
20:42:53 <Hiato> Ngia Kwazi Ogokoolooma Isizulu?
20:43:00 <Hiato> (I can't spell)
20:43:11 <Hiato> (=do you speak zulu?)
20:43:33 <Slereah> I got the zulu part!
20:43:36 <Slereah> Heh.
20:43:39 <Hiato> Hooray :)
20:43:56 <Hiato> there should be lots of "h" s though
20:44:30 <Hiato> Slereah, if you don't mind my asking, where was your dad from?
20:44:41 <Slereah> France as well!
20:44:46 <Hiato> :)
20:44:59 <Hiato> So where did the Hebrew pop out from ;) ?
20:44:59 <Slereah> But my great-grand-father was from Turkey.
20:45:04 <Hiato> Aahh
20:45:05 <Hiato> ok
20:45:09 <Hiato> mystery solved
20:45:10 <Slereah> And his ancestors from Spain.
20:45:15 <Hiato> hrmm
20:45:18 <Slereah> And their ancestors from Judea.
20:45:22 <Hiato> Woow
20:45:23 <Slereah> So that's that.
20:45:28 <Hiato> Ok, I see
20:45:37 <Hiato> nice to know your family history :)
20:45:48 <Hiato> I don't really know mine...
20:45:56 <Slereah> I have three relatives interested in genealogy, so it's not hard
20:46:05 <Hiato> lol, classic :D
20:46:36 <Hiato> Hrmm.. what is Haskel for?
20:46:43 <Slereah> Programming?
20:46:43 <Hiato> can it actually be used as a language?
20:46:47 <Hiato> yeah, yeah
20:46:50 <Hiato> but I mean
20:46:53 <timotiis> being laughed at because you don't use scheme, of course
20:46:53 <iEhird> ofc
20:47:05 <Hiato> should I bother writing anything in it
20:47:09 <Hiato> oh, I see
20:47:09 <Slereah> Oh timotiis, you minx.
20:47:11 <Hiato> right
20:47:11 <iEhird> its one of the best production lands
20:47:21 <iEhird> along with scheme
20:47:23 <Slereah> Hiato : Well, if you bother writing in Brainfuck, does it matter at all?
20:47:32 <timotiis> Slereah: I've been called a lot of things, but I think minx is a first
20:47:34 <Hiato> lol, so very true Slereah
20:48:05 <Hiato> but say, I distribute a prog (script?) in Haskell, is everyone gonna laugh and say :"Go learn a real language"?
20:48:29 <Hiato> compaered to FPC, Ruby etc
20:48:34 <timotiis> nah, it's a good language
20:48:37 <Slereah> I won't, but that's because I'm not in the programming communauty.
20:48:57 <Slereah> I also have a Haskell interpreter, to run the classic Unlambda.
20:49:15 <timotiis> I need to grab the scheme unlambda interpreter one of these days
20:49:20 <Hiato> Roger that timotiis, thanks. Slereah, that's a shame :(
20:49:27 <iEhird> no hiato
20:49:37 -!- iEhird has quit.
20:49:39 <Hiato> lol, wow, plenty of confidence there
20:49:42 <Hiato> ha
20:49:57 -!- iEhird has joined.
20:49:59 <Hiato> guess you can't give him a comeback, because he's not here
20:50:01 <Hiato> lol
20:50:09 <iEhird> yes I am
20:50:09 <Hiato> nevermind
20:50:15 <Slereah> Me, when I program, it has to be really easy or really hard.
20:50:21 <Slereah> Either Python or esolands.
20:50:25 <Slereah> g*
20:50:32 <Hiato> hrmm
20:51:04 <Hiato> Python + me = :(
20:51:04 <Hiato> Ruby + me = :\
20:51:04 <Hiato> Delphi + me = :)
20:51:04 <Hiato> Eso + me = :D
20:51:16 <Slereah> But, python is awesome! :o
20:51:24 <Hiato> I can't use it though
20:51:31 <Hiato> I keep getting indentation blah blah
20:51:46 <timotiis> I like scheme, never really got into anything with too much syntax to learn
20:51:46 <Slereah> Heh.
20:52:15 <iEhird> scheme+haskell+c for objcode
20:52:18 <iEhird> yum
20:52:27 <Hiato> :)
20:52:31 <timotiis> hm
20:52:44 <timotiis> I should go back to haskell someday
20:53:12 <Slereah> Is that the Mecca of programmers?
20:53:13 <timotiis> incidentally, does anyone know if TeX is turing complete?
20:53:16 <timotiis> maybe
20:53:23 <iEhird> yes it is
20:53:26 <timotiis> I liked the XKCD on lisp, as far as they go
20:53:29 <Hiato> Well, other than Haskell, is there any *interesting* _easy_ (ish) and pleasant language that yanyone can recommend
20:53:36 <Hiato> *anyone
20:53:39 <timotiis> Scheme!
20:53:39 <iEhird> scheme.
20:53:45 <Hiato> cool
20:53:48 <Hiato> will check it out
20:53:52 <Slereah> I don't use many languages.
20:54:00 <timotiis> it's a dialect of lisp, so you'll have to get the hang of the parens
20:54:08 <timotiis> but it's really quite fun to use
20:54:14 <Hiato> O, I'll dig arounf
20:54:15 <Hiato> cool
20:54:17 <Hiato> *around
20:54:27 <Hiato> I've been wanting to move from delphi for a long time..
20:54:34 <Hiato> but the C group brings me to tears
20:54:35 <iEhird> use my risk scheme compiler! oh wait its not written yet :P
20:54:41 <Hiato> and ruby has no real purpose
20:54:44 <Hiato> ;)
20:54:48 <Hiato> lol
20:54:54 <iEhird> use chicken. for now.
20:54:59 <Hiato> well, I'd like to iEhird
20:55:03 <timotiis> ruby could be worse. I've just never liked anything with more than two types of brackets
20:55:07 <Hiato> but PETA has something to say
20:55:20 <Hiato> Timotiis
20:55:22 <Hiato> I think
20:55:25 * Slereah is eating chicken right now.
20:55:29 <iEhird> heh.
20:55:31 <Slereah> Come and get me, PETA!
20:55:32 <timotiis> Therefore you are?
20:55:40 <Hiato> that how much you like a language, is directly related to the tutiorials you use
20:55:44 <Slereah> Yes. I are eating chicken.
20:55:46 <Hiato> :)
20:55:46 <iEhird> chicken = scheme compiler
20:55:47 <Hiato> lol
20:55:52 <timotiis> Maybe. I got into scheme with SICP
20:55:52 <Hiato> :D
20:56:11 <Hiato> Well, Ruby for me was hilarious because of Why's poignant guide
20:56:49 <timotiis> dangit, keep forgetting I have screen running. It's C-a a C-k to kill the line
20:57:38 <Hiato> :)
20:59:33 <Hiato> woow
20:59:39 <Hiato> Scheme looks daunting
21:00:00 <timotiis> why?
21:00:11 <timotiis> I could give you a basic primer in about 10 mins
21:00:19 <Hiato> yes please
21:00:21 <Hiato> :)
21:00:26 <Hiato> I get the reverse polish notation
21:00:28 <Hiato> but the rest....
21:00:32 <timotiis> no, that's just polish notation
21:00:41 <Hiato> lol, shows how much I know
21:00:54 <timotiis> rpn is 3 2 +, pn is + 2 3
21:01:01 <Hiato> oh, I see
21:01:04 <Hiato> right o
21:01:09 <Slereah> rpn?
21:01:14 <Hiato> about that primer...
21:01:17 <timotiis> reverse polish notation
21:01:23 <Slereah> Oh.
21:02:00 <iEhird> hiato
21:02:02 <timotiis> okay...
21:02:05 <timotiis> let me see
21:02:14 <iEhird> what part is hard
21:02:18 <Hiato> yes iEhird
21:02:31 <Hiato> well, the whole thing in the wikipedia entry
21:02:38 <timotiis> syntax of define: (define (name arg1 arg2 ... argn) <body of function>)
21:02:38 <Hiato> (define a 10) (define eval-aplus2 (delay (+ a 2))) (define a 20) (force eval-aplus2) => 22
21:02:49 <Hiato> ok
21:02:51 <Hiato> roger
21:03:19 <iEhird> hiato
21:03:26 <Hiato> yes iEhird
21:03:28 <timotiis> (define (square x) (* x x))
21:03:32 <timotiis> that should make sense, yes?
21:03:34 <iEhird> (lambda (args) code )
21:03:34 <Hiato> yes
21:03:38 <Hiato> crystal clear
21:03:50 <iEhird> that square syntax
21:03:51 <Hiato> ooh, ok
21:03:54 <Hiato> yes
21:03:55 <iEhird> us short for
21:04:12 <iEhird> (define square (lambda (x) ...
21:04:20 <Hiato> aha
21:04:21 <Hiato> well
21:04:23 <timotiis> what's wrong with this one?, (define (fib n) (+ (fib (- n 1) (- n 2))))
21:04:36 <Hiato> as in synatx
21:04:38 <Hiato> or logic?
21:04:40 <timotiis> logic
21:04:45 <iEhird> timoriis
21:04:46 <Hiato> well thta's obious
21:04:51 <iEhird> silly
21:04:54 <iEhird> :P
21:05:00 <timotiis> intentional, I promise
21:05:15 <Hiato> 1 argument is taken for fib for starters, yet 2 are provided
21:05:16 <Hiato> then
21:05:21 <Hiato> its gonna go negative
21:05:26 <Hiato> very quickly
21:05:28 <Hiato> needs to be
21:05:35 <timotiis> no, the arguments aren't a problem. the lack of a test is a problem
21:05:48 <iEhird> timoriis wrong
21:05:53 <iEhird> (fib a b)
21:06:12 <iEhird> lawl yuu dum
21:06:13 <timotiis> generates the nth fib. what's wrong with that, apart from the fact it never stops computing?
21:06:32 <Hiato> hrmm
21:06:35 <timotiis> well, and it's tree recursive, so it's hopelessly ineffiecient
21:06:38 <Hiato> well
21:06:44 <iEhird> dude
21:06:50 <iEhird> read your code
21:06:52 <Hiato> I don't see it
21:06:55 <timotiis> I have, I wrote it
21:07:05 <timotiis> Hiato: doesn't test for 0 or the like
21:07:09 <iEhird> you give fib two args
21:07:19 <Hiato> Oh, ok I see
21:07:21 <timotiis> ah, shoot. typo
21:07:24 <Hiato> well I said it would go negative
21:07:27 <iEhird> lawl
21:07:34 <timotiis> (define (fib n) (+ (fib (- n 1)) (fib (- n 2))))
21:07:35 <Hiato> (11:05:36 PM) Hiato: 1 argument is taken for fib for starters, yet 2 are provided
21:07:43 <timotiis> that's now correctly wrong
21:07:43 <Hiato> ;)
21:07:59 -!- iEhird has quit.
21:08:12 <Hiato> so if you feed in 0
21:08:18 -!- iEhird has joined.
21:08:20 <Hiato> its gonna give the fib's in negative
21:08:26 <Hiato> ?
21:09:00 <timotiis> yeah
21:09:05 <Hiato> cool
21:09:12 <timotiis> it never tests for reaching the bottom of the recursion
21:09:13 <Hiato> I grasp it :)
21:09:20 <Hiato> yeah
21:09:27 <Hiato> (11:05:42 PM) Hiato: its gonna go negative
21:09:33 <iEhird> hiato
21:09:33 <Hiato> Hooray ;)
21:09:36 <iEhird> suggestion
21:09:38 <Hiato> yes iEhird
21:09:51 <iEhird> read the little sxhener
21:09:55 <iEhird> sxhener
21:09:59 <timotiis> yes, read that
21:10:04 <iEhird> schemer
21:10:05 <timotiis> (define (fib n)
21:10:05 <timotiis> (if (zero? n) 0
21:10:05 <timotiis> (if (= n 1) 1
21:10:06 <timotiis> (+ (fib (- n 1)) (fib (- n 2))))))
21:10:09 <timotiis> that's better
21:10:32 <iEhird> timoriis! remember tls? use cond
21:10:33 <timotiis> although it would break on a negative input
21:10:46 <timotiis> I much prefer if when it's a small statement like that
21:10:54 <Hiato> ok, I see now the structure of scheme
21:11:02 <iEhird> nested ifs are bad
21:11:03 <Hiato> but, where does a prgramme enter etc
21:11:13 <iEhird> hiato anywhere
21:11:15 <timotiis> (define (fib n)
21:11:16 <timotiis> (cond
21:11:16 <timotiis> ((zero? n) 0)
21:11:16 <timotiis> ((= n 1) 1)
21:11:16 <timotiis> (else (+ (fib (- n 1)) (fib (- n 2))))))
21:11:22 <Hiato> and does (if (zero? n) 0 return zero?
21:11:30 <iEhird> you just put your code there
21:11:32 <timotiis> if n was 0, it does
21:11:39 <Hiato> cool
21:11:43 <iEhird> mostly
21:11:54 <iEhird> you interact with scheme via a
21:11:55 <Hiato> mostly?
21:11:58 <iEhird> repl.
21:12:02 <timotiis> zero? n returns #t if n was 0, so the if takes the first option, which was 0
21:12:14 <iEhird> you enter an expression it shows the results
21:12:26 <Hiato> oh, I see
21:12:34 <Hiato> iEhird, so like a shell
21:12:38 <iEhird> you do (load "file") to load some code you wrote
21:12:48 <timotiis> or just paste it in
21:12:48 <Hiato> cool, I get it
21:12:51 <Hiato> ok
21:12:54 <iEhird> when you're done developing that iteration
21:13:03 <Hiato> well, now I see the light ;]
21:13:03 <iEhird> then you use a batch compiler
21:13:12 <iEhird> and produce an executable
21:13:17 <Hiato> w00t
21:13:20 <Hiato> ;)
21:13:26 <Hiato> I like Scheme already
21:13:28 <timotiis> iEhird: happier with this then?
21:13:29 <timotiis> (define (fib n)
21:13:29 <timotiis> (if (or (zero? n) (= n 1))
21:13:29 <timotiis> n
21:13:30 <timotiis> (+ (fib (- n 1)) (fib (- n 2)))))
21:13:39 <timotiis> there you go, properly written with a single if
21:13:42 <Hiato> and is functional stuff actually built with it?
21:13:47 <timotiis> it is functional
21:13:53 <Hiato> meh
21:13:55 <Hiato> I meant
21:13:55 <timotiis> although taht wasn't quite your question
21:14:04 <iEhird> it is imperative with a functional core
21:14:05 <Hiato> fully functional programmes
21:14:06 * Slereah is writing the help file for his pseudo-unlambda.
21:14:11 <Slereah> It's full of bird names.
21:14:14 <Hiato> (cool)
21:14:18 <iEhird> there is a set! func
21:14:23 <Hiato> ( :) )
21:14:25 <timotiis> da, so it's not quite pure
21:14:25 <Hiato> meh
21:14:30 <Hiato> no no
21:14:33 <Hiato> I mean
21:14:34 <timotiis> but it's pretty good, and still generally usable for things
21:14:43 <timotiis> oh, what is it used for?
21:14:48 <Hiato> has Bob written stuff in Scheme
21:14:54 <Hiato> that you and I use
21:14:55 <Hiato> etc etc
21:15:03 <Hiato> yes, essentially timotiis
21:15:41 <timotiis> it's occasionally an extension language. I think the gimp is scripted in scheme. guile is a scheme dialect. you can do some pretty neat web stuff with it as well iirc, and there's an implementation for shell scripting
21:15:42 <iEhird> brb
21:15:47 <Hiato> k
21:16:00 <Hiato> awesome
21:16:00 <timotiis> but you probably don't use something written in it daily
21:16:06 <Hiato> understood
21:17:07 <Hiato> shceme vs haskell (because I like languages that can do [99,98..0] )
21:17:10 <Hiato> which one?
21:17:46 <Hiato> http://99-bottles-of-beer.net/language-scheme-582.html
21:17:50 <Hiato> http://99-bottles-of-beer.net/language-haskell-1070.html
21:20:09 <timotiis> your call, really. I'd tend to rate scheme as easier to learn, but that's my opinion
21:20:31 <Hiato> ok, thanks
21:20:39 <Hiato> I'm just interested
21:20:44 <Hiato> because they both look the part
21:20:49 <Hiato> and both are unique
21:21:01 <Slereah> Does this work as an SKI-unlambda translator? http://membres.lycos.fr/bewulf/Russell/ski-unlambda.py
21:22:31 -!- Jontte has quit (Remote closed the connection).
21:22:35 <timotiis> I'm actually half-working on writing an infix notation system for scheme, including operator precedence :)
21:23:09 -!- Jontte has joined.
21:23:15 <bsmntbombdood> why?
21:23:20 <timotiis> for the hell of it
21:25:09 <timotiis> it's an interesting project to work on, really
21:25:22 <timotiis> and some of the functions I'm building as a part of it are quite useful
21:34:17 -!- RedDak has joined.
21:41:11 <Slereah> The iszero function seems to go okay through the Abstractor.
21:42:13 <Slereah> Why won't pred or succ go through!
21:44:18 <oklopol> Hiato: i got that.
21:44:18 <oklopol> that afrikaans
21:44:29 <Hiato> really
21:44:31 <Hiato> awesome
21:44:55 <Hiato> As ek nou Afrikaans pratt, sal net ons dit verstaan!
21:45:13 <Hiato> Praat jy Hollandse of Deutsch?
21:45:19 <faxathisia> Hiato: "because they both look the part" -- What part?
21:45:55 <Hiato> by "the part" I mean "interesting, new to my eyes and different from everything I have seen thus far"
21:45:58 <oklopol> "Mih mevin oti ca-usher uni ma-duber Ivrit?" <<< this one i have no idea about, though, perhaps "i opine"?
21:45:58 <oklopol> :P
21:46:22 <Hiato> lol, well oklopol
21:46:26 <faxathisia> ah right, I agree.. they are very unique
21:46:34 <Hiato> hebrew is next to impossible to write out in enlgihs letters
21:46:36 <Hiato> *English
21:46:54 <Hiato> yes faxathisia, even though I finally went with Haskell
21:47:04 <Hiato> because of lazy evalutaion and less brackets
21:47:23 <faxathisia> should learn both though
21:47:51 <Hiato> yeah, I will eventually, but first I want to understand functional programming, and what better way to do it then Haskell
21:47:58 <timotiis> scheme, of course
21:47:59 <Hiato> then I can move onto scheme
21:48:06 <faxathisia> I don't think there is a better place to find out what the hell call-with-current-continuation does than scheme
21:48:09 <Hiato> well, I see Haskell as being easier
21:48:18 <Hiato> true
21:48:26 <Hiato> though haskell is just, well I don't know really
21:48:35 <Hiato> I just think it looks easier to learn
21:49:30 <timotiis> faxathisia: I use scheme, and I still haven't figured out what it does
21:49:54 <timotiis> not properly, anyway
21:49:56 <timotiis> I have a few ideas
21:50:31 -!- ehird` has joined.
21:50:54 <faxathisia> haha
21:51:09 <ehird`> anyhow.
21:51:21 <timotiis> ah, on a better machine at last?
21:51:57 <Hiato> Faxathisia: Did you ever come up with an Esolang in the end, or did the zoo prove useless?
21:52:17 <faxathisia> well I kind of just watched Dune
21:52:20 <faxathisia> :(
21:52:28 * faxathisia is going to try agian
21:52:30 <Hiato> oh
21:52:35 <Hiato> yes, I like that idea
21:52:47 <Hiato> Dune<Esolang<Mad Max :P
21:52:56 <Slereah> Made a Dune esolang?
21:53:05 <Hiato> lol, nope
21:53:08 <Slereah> "More spice required"
21:53:14 <Hiato> :)
21:53:45 <Slereah> Hm.
21:53:50 <Slereah> A D&D esolang.
21:54:03 <Hiato> that would be cool
21:54:08 <oklopol> Hiato: did it have something to do with "i opine"? :P
21:54:15 <Slereah> Variables would be in your backpack
21:54:19 <Hiato> though I think it is in the work in progress thing
21:54:21 <oklopol> fucking 40 minutes of logs
21:54:27 <Hiato> what is I opine
21:54:28 <Hiato> lol
21:54:43 <Slereah> Let's see if it is!
21:54:45 <oklopol> that thingie i tried to translate earlier
21:55:20 <Hiato> the hebrew, I understand that part, but what is "i opine" ?
21:55:22 <Slereah> There's one based on "a roguelike game"
21:55:30 <Hiato> there we go Slereah
21:55:52 <Slereah> I liek the idea.
21:56:02 <Hiato> Knock yourself ou
21:56:07 <Hiato> *out
21:56:07 <Hiato> :P
21:56:20 <Hiato> anyone: what is "i opine" ?
21:56:22 <Slereah> I already have trouble parsing minimalist languages.
21:56:33 <Hiato> lol, swithc to Ruby of FPC
21:56:41 <Hiato> then you just do case when/if
21:56:44 <Hiato> very easy
21:56:46 <Slereah> I'm not sure I could parse something with actual text.
21:56:50 <Hiato> lol
21:57:10 <Hiato> check out the Full 0 source, and you'll see it's just one big case statement
21:57:21 <Hiato> I will gladly write the interpreter though
21:57:25 <Hiato> if you want
21:57:35 <Hiato> oklopol
21:57:38 <Slereah> Well, I still need to finish my unlambda thingy.
21:57:41 <Hiato> don't leave me hanging
21:57:44 <Slereah> Maybe later.
21:57:46 <Hiato> sure Slereah
21:57:47 <Hiato> cool
21:58:32 <Hiato> oklopol, the Hebrew meant "Who will understand me when I speak Hebrew"
21:58:44 <oklopol> that was what you said first
21:58:54 <Hiato> yes
21:59:03 <oklopol> oh, afrikaans, then same in hebrew?
21:59:04 <Slereah> Maybe numbers could be, liek, a LEVEL N SWORD
21:59:21 <Hiato> yes, I did say the same thing in as many languages as I couldoklopol :P
21:59:25 <Slereah> "I hit input with my LEVEL N SWORD"
21:59:31 <Hiato> slereah, I like :)
21:59:42 <Hiato> perhaps, casting spell x calls the function
21:59:48 <Slereah> Yes!
21:59:48 <Hiato> and the mana is the argument
21:59:50 <Hiato> :P
22:00:02 <ehird`> timotiis: ?
22:00:08 <Hiato> and you need to move to an in to declare vars
22:00:10 <Hiato> or something
22:00:11 <Hiato> :P
22:00:20 <Hiato> *inn
22:00:22 <Slereah> Well, I think the argument would be more of a "cast spell on arg"
22:00:27 <Hiato> true
22:00:30 <Hiato> fair enough
22:00:37 <Hiato> and talking to an NPC would be output
22:00:42 <Hiato> or input
22:00:44 <Hiato> depending
22:00:46 <oklopol> puhutteko suomea? pratar ni svenska? sprechen sie deutsch? do you speak english? xu do tavla la lojban, plus a syntax error in the lojban one prolly.
22:01:00 <Hiato> wooow
22:01:06 <Hiato> Swedish!! :)
22:01:10 <Slereah> Input number : "YOU RECEIVE A LEVEL N SWORD!"
22:01:12 <Slereah> Yay!
22:01:12 <oklopol> heh
22:01:14 <Hiato> spechten?
22:01:15 <Hiato> surely
22:01:23 <Slereah> Although it would suck if your old word was better!
22:01:32 <Hiato> lol, yip
22:01:33 <Slereah> but you don't refuse a gift from the MJ!
22:01:40 <Hiato> oh yeah
22:01:41 <Slereah> err, GM.
22:01:47 <oklopol> sorry, i make no errors.
22:01:53 <Hiato> :)
22:01:53 -!- calamari has quit (Read error: 104 (Connection reset by peer)).
22:01:55 <Hiato> no worries
22:02:07 <Hiato> I don't even speak German, but I knew that much ;)
22:02:11 <oklopol> ...
22:02:22 <oklopol> i don't think you understood me :)
22:02:24 <Hiato> that it was german
22:02:29 <Hiato> I understood you
22:02:32 <Hiato> you were right
22:02:35 <Hiato> and I was wrong
22:02:36 <Slereah> A loop could be casting a spell on a monster with n health point, until he's dead! :o
22:02:42 <Hiato> but I recognised it was german
22:02:53 <oklopol> oh, i guess i misunderstood you too, a bit :)
22:02:55 <Hiato> that's what I was saying
22:02:59 <Slereah> Although you'd have to specify the damage of the spell in the function.
22:03:05 <oklopol> or then just i misunderstood anything.
22:03:06 <Hiato> a mutual misunderstanding :)
22:03:08 <oklopol> heh
22:03:24 <oklopol> i'll be fullscreen now, or i'll never get anything eaten...
22:03:24 <oklopol> ->
22:03:30 <ehird`> int Check_Stack_Grows_Down () {
22:03:30 <ehird`> char foo;
22:03:30 <ehird`> return &foo < stkbase;
22:03:30 <ehird`> }
22:03:30 <Hiato> Yes, though what would that mean Slereag
22:03:32 <ehird`> clever, clever
22:03:35 <Hiato> *h
22:03:40 <Hiato> :)
22:03:49 <Hiato> oklopol ^
22:03:50 <Slereah> What would what mean?
22:03:58 <Hiato> damage of the spell in the function.
22:04:06 <Slereah> Well, for instance.
22:04:11 <Slereah> You have this monster.
22:04:15 <Slereah> He has 99 HP!
22:04:20 <Hiato> gasp
22:04:22 <Slereah> Then, you hit it with magic missile
22:04:30 <Slereah> With 1 damage point.
22:04:35 <Slereah> Until he's dead.
22:04:37 <Hiato> (cough someones been playing NWN ;) )
22:04:44 <Hiato> I see, but why
22:04:45 <Slereah> Actually, no.
22:04:51 <Hiato> there needs to be incentive
22:04:55 <Hiato> we need to say that
22:04:56 <Hiato> XP
22:04:57 <Slereah> That way, the function is used 99 times!
22:05:03 <Hiato> ahahaha
22:05:08 <Hiato> that's brilliant
22:05:10 <Hiato> :D
22:05:14 <Hiato> recursion
22:05:19 <Hiato> so you can play as the DM
22:05:22 <Hiato> and summon a monster
22:05:22 <Slereah> Well, maybe the conclusion of the program would be "YOU WIN A MILLION XP"
22:05:26 <Hiato> then switch to hero
22:05:31 <Hiato> lol
22:05:31 <Slereah> Yes, the user is the DM.
22:05:34 <Hiato> then when hero
22:05:41 <Hiato> you cast spell x for n times
22:05:43 <Hiato> wicked
22:05:55 <Hiato> hrmm
22:05:56 <Slereah> He summons input monsters, and random number monster encounter!
22:06:03 <Hiato> Oh yeah!
22:06:09 <Slereah> And output would be talk to DM
22:06:12 <Hiato> xp = buy new functions premade
22:06:16 <Hiato> yeah
22:06:24 <Hiato> so 10 xp = fibonacci etc
22:06:35 <Hiato> or not actually....
22:06:40 <Slereah> Heh. Maybe not.
22:06:49 <Slereah> The idea would be to have it usable.
22:06:56 <Hiato> true
22:06:59 <ehird`> Risk will be suuch a fast compiler :P
22:07:07 <Hiato> so where do NPC's fit in
22:07:10 <Hiato> :)
22:07:20 <Hiato> why bother talking
22:07:22 <Hiato> to them
22:07:25 <Slereah> I'm not sure so far.
22:07:28 <Hiato> aha
22:07:31 <Hiato> conditional
22:07:35 <Hiato> ooh
22:07:38 <Hiato> say you have stas
22:07:53 <Hiato> and you can only talk to an NPC if impress>10 and muscle>15 etc
22:08:00 <Hiato> so you can do if's like that :D
22:08:03 <Hiato> *stats
22:08:18 <Slereah> Well, if variables are objects, I guess conditional would be if you possess the object.
22:08:23 <Hiato> meh
22:08:27 <Hiato> I like the stats idea
22:08:28 <Slereah> For instance, a boolean could be a key to some dungeon door.
22:08:45 <Hiato> but okay
22:08:47 <Hiato> sure
22:08:51 <Hiato> it's you lang ;)
22:08:59 <Slereah> It's just an idea thrown around.
22:09:07 <Slereah> Not sure I will actually do something with it.
22:09:27 <faxathisia> wait so programming is like you use a level editor
22:09:29 <Slereah> But it's true that it would be better to include NPC's, instead of just monster grinding.
22:09:31 <faxathisia> then some AI plays your game?
22:09:43 <Hiato> well, kinda
22:09:51 <Hiato> I was thinking that you can be both DM
22:09:53 <Hiato> and Hero
22:09:57 <Hiato> to make it easier
22:10:01 <Hiato> but I suppose
22:10:08 <Hiato> that if we make it imperitive
22:10:12 <Hiato> then the hero
22:10:18 <Hiato> would just follow instructions
22:10:22 <Slereah> Maybe the input could be of two kinds.
22:10:24 <Hiato> and react acrdingly
22:10:33 <Hiato> *accordingly
22:10:44 <Slereah> Monster and object variables from the DM, and actions from the hero
22:10:50 <Hiato> yeah
22:10:52 <Hiato> there we go
22:10:53 <Hiato> :)
22:11:14 <Hiato> and it needs flashy 2D ascii graphics :P
22:11:17 <Hiato> like @ and #
22:11:19 <Hiato> ;)
22:11:29 <Slereah> The general words "monster" and "object" would be a cue for input
22:11:38 <Slereah> "A monster appear!"
22:11:53 <Hiato> hrmm
22:11:59 <Hiato> sounds like a script to me
22:12:02 <Slereah> While specific monsters would be values without requiring input
22:12:05 <Hiato> I imagined it differently
22:12:18 <Hiato> yes, that would be cool
22:12:26 <Hiato> each monster is the value of it's XP
22:12:30 <Hiato> and thus
22:12:34 <Hiato> killing it
22:12:48 <Hiato> adds it to the currently equipped item/variable
22:12:59 <Hiato> and casting on it casuses a loop
22:13:05 <Hiato> for it's Hp number of times
22:13:14 <Hiato> I like where this is going :)
22:13:14 <Slereah> Something like that.
22:13:33 <Slereah> But what would be strings?
22:13:45 <Slereah> Magic books or something?
22:13:56 <Slereah> I always carry a bunch of these in Oblivion.
22:13:57 <Hiato> yeah tomes of knowledge
22:14:00 <faxathisia> Could you actually cannibalize an existing rouge-like? and use that for computing
22:14:01 <Hiato> :)
22:14:13 <Hiato> lol, I like
22:14:30 <Hiato> Perhaps, lists would be quests
22:14:35 <faxathisia> :D
22:14:36 <Hiato> and Strings would be boks/tomes
22:14:48 <Hiato> and spell books would list the functions avaliable
22:14:49 <Hiato> :)
22:14:58 <Hiato> *books
22:15:05 <Slereah> "You find item n on your quest list"
22:15:09 <Slereah> And bam, you can use it
22:15:17 <Hiato> I like
22:15:33 <Hiato> or perhaps, quest lists could also be arrays
22:15:38 <Hiato> but yeah, it works anywho
22:15:42 <Slereah> a premature exit function would be when you die! :O
22:15:48 <Slereah> "You are eaten by a grue"
22:15:53 <Hiato> Ooh, sucks
22:15:55 <Hiato> :)
22:15:59 <Hiato> yes, though
22:16:02 <Hiato> that would be nice
22:16:11 <Hiato> and portals would return from a function
22:16:17 <Hiato> or quest
22:16:33 <Hiato> ?
22:16:36 <faxathisia> call-with-current-continuation is when you go to a save point?
22:16:49 <Slereah> I don't know what that is, but sure, why not.
22:16:50 <Hiato> :D, but I like
22:17:13 * faxathisia is not sure if hat is close enough semantically
22:17:18 <Hiato> static main void would be the world (naah, just kidding)
22:18:00 <Slereah> Maybe you can include sentences without any program-specific meaning, to avoid doing a linear adventure.
22:18:11 <Hiato> Bandits would be the "garbage collectors" or variable destroyers as they raid unused variables
22:18:17 <ehird`> faxathisia: i'll explain call with current continuation
22:18:21 <Slereah> Heh.
22:18:21 <Hiato> yes, that would be nice
22:18:42 <Hiato> Say, you can only have x variables on you
22:18:48 <Hiato> so you go back through a portal
22:18:53 <Hiato> to you private stash
22:18:58 <Hiato> and exchange variables
22:19:06 -!- calamari has joined.
22:19:13 <ehird`> (call/cc f) copies the call stack, and constructs a function k. It then does (f k). When k is called with the argument x, the saved call stack is reinstated and the top call - that is, call/cc - returns x
22:19:17 <Slereah> Well, maybe your stash could be the other players.
22:19:33 <Hiato> and we could have the "Gardens of Negativity" from within which, if you drink the water, it applies NOT to all you equipped variables
22:19:33 <Slereah> "Take this, my back is killing me!"
22:19:41 <ehird`> alternatively: in (+ 2 (* 3 4) 5), when you get to (* 3 4), your continuation is (+ 2 [_] 5)
22:19:46 <ehird`> and the hole gets fileld in by the result
22:19:47 <Hiato> "I am encumbered, and cannot move!"
22:19:58 <ehird`> (call/cc f) calls f with a function that takes an argument to fill the hole
22:20:01 <Slereah> "Backpack overflow!"
22:20:15 <Hiato> lol :)
22:20:17 <Hiato> awesome
22:20:25 <Hiato> I Like ver much
22:20:27 <Hiato> :D
22:20:33 <Hiato> *y
22:20:50 <Hiato> Anyway, sorry to cut the "brainstorm" short
22:20:55 <Hiato> it's been fun
22:21:03 <Hiato> but its late here in GMT+2 land
22:21:09 <Slereah> Okay, bye.
22:21:14 <Hiato> so, I'll see you guys some other time
22:21:16 <Hiato> cheers
22:21:25 -!- Hiato has quit ("Leaving.").
22:26:54 <Slereah> I should really try to solve my lazy unlambda's problem, but now, there's no way I can think about it until I have some ideas written down.
22:27:26 <Slereah> "Dungeons and Data"
22:27:42 * ehird` is reinventing Foobrain with multiple files because it was getting bloated
22:27:45 <ehird`> and using Parsec
22:27:57 <ehird`> who wants to help make a brainfuck compiler that in the end will probably do the most optimizations evarr? :P
22:27:59 <Slereah> Parsecs? That's going to be a large program!
22:28:08 -!- elsa22 has joined.
22:28:13 <Slereah> I can't write machine code.
22:28:19 <Slereah> I got a note from my doctor!
22:29:21 <oklopol> faxathisia: getting to a save point would be calling a continuation, call/cc would be saving
22:30:22 -!- elsa22 has quit (Client Quit).
22:32:02 -!- Arrogant has joined.
22:35:53 <ehird`> no-one? :-)
22:36:10 <Arrogant> Nope
22:36:50 -!- oerjan has joined.
22:37:04 <Slereah> It is far more exciting to be involved in a glorious medieval fantastic adventure, I guess!
22:37:13 * faxathisia doesn't know what optimizations you can do
22:37:16 <faxathisia> (other than trivial stuff)
22:37:29 <faxathisia> seems a very hard language to do optimizations with
22:37:54 <ehird`> nahh
22:38:03 <ehird`> there's even a compiler that optimizes 'if' algorithms
22:38:08 <ehird`> with haskells pattern matching!
22:38:12 <ehird`> it'll be easy!
22:41:30 <faxathisia> wait
22:41:40 <faxathisia> I was assuming Brainfuck -> Brainfuck
22:41:51 <faxathisia> but you actually meant something else didn' tyou?
22:42:05 <ehird`> yes
22:42:05 <ehird`> Brainfuck -> C
22:45:06 <oklopol> ehird` and his crazy best-ever brainfuck compilers :-)
22:45:18 <ehird`> same one all the time
22:45:20 <ehird`> :P
22:45:22 <oklopol> heh
22:45:41 <oklopol> have you read egobf?
22:45:42 <Slereah> The important thing is that no one notice!
22:50:01 <ehird`> egobf is fun :P
22:50:43 <Slereah> Hm. What would be a good way to define a real variable in Dungeons and Datas?
22:51:00 <faxathisia> drop some item in a specific place?
22:51:16 <Slereah> Yes, but what kind of item!
22:51:45 <Slereah> Integers are either n xp with some weapon including the name of the variable, or just some level n weapon.
22:52:33 <Slereah> Booleans are keys.
22:52:45 <Slereah> Strings are books.
23:14:30 <Slereah> I think I will have to make more than one process for loops.
23:20:22 -!- timotiis has quit ("leaving").
23:27:46 <ehird`> oerjan: you there?
23:28:18 <oerjan> yep, just posting an interpretation of the obfuscated Perl code on the wiki
23:28:35 <oerjan> *ahem*
23:29:00 <ehird`> X_X
23:29:02 <ehird`> ANYWAY.
23:29:13 <ehird`> Doest though know the `Parsec'?
23:29:23 <oerjan> Indeed I do.
23:30:13 <ehird`> how doth my parser `infini-loop'?!
23:30:24 <ehird`> exampl~e:
23:31:14 <ehird`> http://hpaste.org/4818
23:32:30 <ehird`> :S
23:32:42 <ehird`> maybe i need a terminating case but i think it's more than that
23:32:51 <oerjan> no that's it
23:33:03 <ehird`> ok
23:33:07 <ehird`> so what would that be? :)
23:33:09 <oerjan> brainfuck = many oneIns <?> "program"
23:33:58 <oerjan> you should browse the combinators in the parsec manual
23:34:13 <ehird`> possibly! :-)
23:34:27 <ehird`> my brain was thinking many (oneOf "abc")
23:34:30 <ehird`> instead of many PARSER
23:34:31 -!- RedDak has quit (Remote closed the connection).
23:34:42 <ehird`> aha, oerjan
23:34:44 <ehird`> you are wrong
23:34:48 <ehird`> oneIns returns [BF]
23:34:51 <ehird`> wait
23:34:53 <ehird`> that's unneeded
23:34:56 -!- Arrogant has quit ("Leaving").
23:35:21 <oerjan> indeed
23:36:27 <oerjan> the <|> oneIns is wrong
23:36:48 <ehird`> kay
23:36:48 <ehird`> what should it be
23:37:03 <oerjan> or wait
23:37:30 <oerjan> the thing is, in Parsec you nearly always want to skip whiteSpace and comments before starting a real parser
23:37:45 <ehird`> OK
23:37:49 <ehird`> elaborate
23:37:50 <ehird`> :P
23:38:23 <oerjan> because of the way Parsec works, you don't want to have to back up more than necessary
23:39:26 <oerjan> put another way, your parser as written has the same problem of ] or eof following comments as your hand-written one had at one point
23:39:55 <ehird`> okay.
23:40:05 <ehird`> so how do i do skipping?
23:40:09 <oerjan> because you are entering oneIns before you know that there _is_ a non-comment operation available
23:40:11 <ehird`> i assume there's a combinator for it
23:40:22 -!- sebbu has joined.
23:40:29 <oerjan> skipMany (noneOf "[]<>+-.,")
23:41:09 <ehird`> in oneIns?
23:41:32 <faxathisia> why not do like: map (fromJust . lookup [('+',Add 1),...] $ filter (any "[]<>+-,.") $ text
23:41:41 <faxathisia> or whatever the syntax is
23:41:48 <ehird`> faxathisia: plz give me the [ and ] entries.
23:41:50 <oerjan> at the beginning, and after every operator
23:41:53 <ehird`> kthx
23:41:56 -!- iEhird_ has joined.
23:42:03 <faxathisia> oh right I get you
23:42:05 <ehird`> oerjan: hm, example?
23:42:14 <oerjan> faxathisia: that will lose position information
23:42:49 <oerjan> like the lexeme parsers in Parsec
23:42:54 <oklopol> oerjan: perl interpretation obfuscated posting?
23:43:07 <oerjan> oklopol: my last wiki post
23:43:29 <oerjan> someone added Perl to the wiki
23:43:35 <oklopol> :D
23:43:47 <ehird`> arguably justified
23:43:49 <oerjan> and i was inspired
23:44:59 <oklopol> that your interpretation?
23:45:14 <oklopol> sorry, i'm bad at using the fancy wiki features...
23:45:32 <oerjan> ehird`: i use to define a function op c = char c >> skipSpace >> return c or equivalent
23:45:46 <ehird`> hm
23:45:48 <oklopol> probably, you did say something about interpretation...
23:45:55 <ehird`> oerjan: where would that be used, though?
23:45:57 <ehird`> oneIns?
23:45:58 <oerjan> yes i added that section
23:46:11 <oerjan> ehird`: also loop
23:46:30 <oerjan> everywhere you use char, since in brainfuck every character can be followed by comments
23:46:36 <oklopol> i think that's a pretty perfect description of what the code does
23:47:02 <oklopol> anyone happen to know what "continuation" is in finnish :-)
23:47:16 <oerjan> i'm not even sure of norwegian...
23:47:17 <ehird`> i use char in loop
23:47:19 -!- iEhird_ has quit (Remote closed the connection).
23:47:21 <ehird`> but oneOf in bfIns
23:47:23 <ehird`> :-)
23:47:40 <oerjan> oh right oneOf
23:47:51 <oerjan> then you want the skip function right after oneOf
23:47:57 <oklopol> i've tried searching in a few dictionaries... unfortunately it seems these web dictionaries are made by java queers who don't know what a continuation is :)
23:48:22 <oerjan> also, skip at the beginning of program
23:48:22 * oklopol apologises to any java queer residing here
23:48:44 <ehird`> oerjan: so what would the oneOf become?
23:49:00 <oerjan> the oneOf is as before
23:49:17 <oerjan> but on the next line, add your skip operation
23:49:48 -!- iEhird has quit (Remote closed the connection).
23:49:55 <oerjan> hm it may not actually be worth having an op that takes an argument
23:50:55 <oerjan> just make a skipComment function
23:51:31 <oerjan> add it (1) after char ']' (2) after oneOf (3) at the beginning of brainFuck
23:51:57 <ehird`> skipComment :: ?
23:52:06 <oerjan> skipComment :: Parser ()
23:52:49 <ehird`> oneIns surely has to change?
23:52:49 <oerjan> after char '[' is not necessarily because it passes straight to brainfuck which already starts with one
23:53:07 <oerjan> yes, add one as a second line
23:53:26 <ehird`> ?
23:53:45 <oerjan> you want to do skipComment right after you do oneOf
23:54:32 <oerjan> oh btw the return's can be moved outside the case
23:54:37 <ehird`> it doesn't handle unmatched ]s now :(
23:54:39 <oerjan> just put $ between
23:55:51 <oerjan> hm? surely the parser would stop with an error if oneIns hits ] without being in ... oh right
23:56:13 <oerjan> you want your main parser to do an eof after calling brainfuck
23:56:40 <ehird`> i..see
23:56:44 <ehird`> explainerate :P
23:57:14 <oerjan> brainfuck just reads up until eof or ], it doesn't raise any error itself
23:57:26 <oerjan> so its caller must take care of the check
23:57:37 <ehird`> ok
23:57:38 <ehird`> esplain
23:57:40 <ehird`> :P
23:57:42 <ehird`> :P
23:58:28 <oerjan> mainParser = do prog <- brainfuck; eof; return prog
23:58:29 -!- sebbu2 has quit (Connection timed out).
2008-01-06
00:00:35 <ehird`> i'm providing a non-monadic [BF] parseBF, is that good parsec style? :P
00:01:21 <oerjan> sure
00:04:39 <ehird`> also
00:04:40 <ehird`> case (parse program name code) of Left e -> error (show e)
00:05:58 <oerjan> that's one way
00:06:59 <ehird`> by the way, oerjan, is this a good way to cut down on overflow checks in compiled bf code:
00:07:03 <ehird`> >>><+ compiles to:
00:07:11 <ehird`> well, without >< reduction, ofc:
00:07:18 <oerjan> actually i would probably make it use a print statement and let the Right p -> part call the actual interpreter
00:07:28 <ehird`> "p++;p++;p++;p--;CHECKMEM;t[p]++;"
00:07:37 <ehird`> interpreter? :-)
00:07:42 <faxathisia> why not p+=3;
00:07:50 <oerjan> or compiler
00:07:53 <ehird`> faxathisia: plz read
00:07:53 <oerjan> sorry :D
00:08:00 <ehird`> "well, without >< reduction, ofc:"
00:08:03 * oerjan has never written a real compiler
00:10:09 <oerjan> i recall that strictly speaking any of the p++ might fail if more than 1 beyond the allocated array... may not be a real problem
00:10:46 <oerjan> i.e. actual pointer arithmetic is undefined behavior in that case, possibly
00:10:53 <Slereah> Making some sort of Dungeons and Datas programs is hard.
00:11:06 <Slereah> It has to make sense to be of any interest!
00:11:37 <Slereah> Well, some sort of sense at least.
00:12:25 <ehird`> oerjan: oh well
00:12:29 <ehird`> oerjan: who cares :)
00:12:43 <ehird`> compiler goals: 1. be fast 2. don't use things that are machine-specific by design
00:12:45 <ehird`> that's it
00:23:06 -!- ehird` has left (?).
00:23:11 -!- ehird` has joined.
00:23:13 <ehird`> wedge :: String -> String -> String -> String
00:23:17 <ehird`> wedge :: String -> String -> String -> String
00:23:17 <ehird`> beautiful
00:24:34 <oerjan> eek
00:27:10 <ehird`> actually it's
00:27:12 <ehird`> wedge :: (Show a) => a -> String -> String -> String
00:30:02 <ehird`> oerjan: i CANNOT figure out the type errors i get with this: http://hpaste.org/4820
00:30:56 <oerjan> hm
00:31:26 <oerjan> what _are_ the type errors?
00:31:39 <ehird`> Couldn't match expected type `Char' against inferred type `String'
00:31:39 <ehird`> Expected type: BF -> [Char]
00:31:39 <ehird`> Inferred type: BF -> [String]
00:31:39 <ehird`> In the first argument of `map', namely `(indent . compile')'
00:31:39 <ehird`> In the first argument of `(++)', namely
00:31:39 <ehird`> `map (indent . compile') prog'
00:31:46 <ehird`> and:
00:31:50 <ehird`> Couldn't match expected type `Char' against inferred type `String'
00:31:51 <ehird`> Expected type: BF -> String
00:31:51 <ehird`> Inferred type: BF -> [String]
00:31:53 <ehird`> In the first argument of `map', namely `(indent . compile')'
00:31:54 <ehird`> In the first argument of `(++)', namely `map (indent . compile') b'
00:31:54 <ehird`> oops, sorry for spam
00:32:20 <oerjan> oh...
00:32:32 <oerjan> you want concatMap instead of map i think
00:32:46 <ehird`> ah, yes
00:36:39 <ehird`> oerjan: flatten [[1,2],[3,4]] -> [1,2,3,4]
00:36:49 <ehird`> in prelude?
00:37:01 <faxathisia> concat
00:37:21 <oerjan> concatMap f l = concat (map f l)
00:38:03 <ehird`> heh, that IS concat
00:38:05 <ehird`> amusing
00:38:45 <ehird`> hm
00:38:49 <ehird`> gcc optimizes a+0 i hope
00:38:50 <ehird`> :P
00:39:05 <oerjan> one might assume
00:39:52 <ehird`> oerjan: what's that haskell function that acts as a filter?
00:40:00 <ehird`> that is, stdin->func->stdout
00:40:18 <oerjan> interact
00:43:24 <ehird`> gcc also optimizes x -= -x i hope :P
00:44:03 <ehird`> % wc -l mandelbrot.c
00:44:05 <ehird`> 11471 mandelbrot.c
00:44:05 <ehird`> impressive
00:44:05 <ehird`> :P
00:44:09 <oerjan> exactly _where_ was your compiler going to do its optimizations you said? ;)
00:44:40 <ehird`> in the Optimize module
00:44:49 <ehird`> which ain't written yet
00:44:49 <ehird`> :)
00:44:53 <ehird`> 3.63sec to execute
00:44:55 <ehird`> not too bad
00:45:45 <ehird`> oerjan: iterative optimization, too!
00:45:49 <ehird`> imperative pseudo-code:
00:46:29 <ehird`> while optimize(prog) != prog { prog = optimize(prog) }
00:46:38 <ehird`> there's probably a nice haskelly way to express that :P
00:48:49 <ehird`> oerjan: right? :P
00:49:05 <oerjan> iterate optimize somehow
00:49:31 <ehird`> thank you you are helpful
00:49:52 <oerjan> er, iterate is a function :)
00:50:16 <oerjan> that equality comparison may be expensive though
00:50:51 <ehird`> yeah, it would be like
00:50:58 <ehird`> let opt = optimize(prog) in ...
00:51:21 <ehird`> anyway, iterate useful for...?
00:51:33 <oerjan> well maybe this easier with explicit recursion
00:51:38 <ehird`> it seems to produce a list
00:52:19 <oerjan> you usually search the resulting list until you find the point you want
00:52:59 <oerjan> ah yes there is until
00:53:21 <ehird`> hm confusing definition
00:53:23 <ehird`> usage?
00:53:33 <oerjan> however it may need some cleverness to avoid calculating things twice
00:54:28 <oerjan> see #haskell
00:55:54 <oerjan> in principle until (\x -> x == optimize x) optimize would do _but_ it might calculate optimize twice
00:56:19 <ehird`> i can't see a way out of that
00:56:46 <oerjan> recursion is easier
00:57:20 <ehird`> :-) ok
00:57:53 <oerjan> untilEq f x | x == y = x
00:58:15 <oerjan> | otherwise = untilEq f y
00:58:27 <oerjan> where y = f x
00:59:30 <ehird`> optimizeFully p = case optimize p of p -> p x -> optimizeFully x
00:59:31 <oerjan> doesn't appear to exist
00:59:43 <ehird`> hm
00:59:45 <ehird`> no worky
00:59:46 <ehird`> :-)
01:00:00 <oerjan> unfortunately the of p binds a new variable
01:00:43 <Sgeo> Maybe I'll start working on PSOX again on Monday..
01:01:22 <oerjan> you _could_ do something with pairs but it wouldn't be any clearer than explicit recursion
01:01:44 <oerjan> or would it, hm
01:03:39 <oerjan> fst . head . dropWhile (uncurry (/=)) . tail . iterate (fst &&& optimize . snd) . (,) undefined
01:03:55 <ehird`> drunk on lambdabot, oerjan?
01:04:18 <oerjan> lambdabot? i did that in my head
01:04:27 <ehird`> heh, wow
01:04:37 <ehird`> i meant the pointless
01:04:39 <ehird`> :)
01:04:59 <oerjan> i expect @pl would produce something far worse
01:05:07 <oerjan> well yeah
01:05:36 <oerjan> @pl'ing is a rather esoteric thing to do :)
01:06:37 <ehird`> optimizeFully p = let opt = optimize p in if opt == p then p else optimizeFully opt
01:06:38 <ehird`> fugly!
01:06:39 <ehird`> :)
01:06:42 <oerjan> of course it's just a slightly more civilized abstraction elimination
01:06:53 <ehird`> No instance for (Eq Jill.Core.BF)
01:06:57 <ehird`> oshit
01:07:03 <oerjan> deriving (Eq)
01:07:15 <ehird`> yep
01:07:55 <oerjan> but as i said, i think that could be expensive, especially if optimizations happen only deeply
01:08:32 <ehird`> Chicken does it
01:09:41 <oerjan> comparing this step to the next, recursively?
01:09:46 <ehird`> i think so
01:10:05 <ehird`> oerjan: damn, optimizing BFSet will be hard with patmatching
01:10:13 <ehird`> Set/Inc/Read/Write ... BFSet
01:10:16 <ehird`> BFSet Inc...
01:10:17 <ehird`> etc
01:10:35 <oerjan> what's BFSet?
01:10:41 <ehird`> t[p+a] = b
01:10:44 <ehird`> note = instead of +=
01:10:53 <ehird`> e.g. [-] is BFSet 0 0
01:10:57 <ehird`> [-]+ is BFSet 0 1
01:12:10 <ehird`> hm
01:12:39 <ehird`> for what values of n in BFLoop x [BFInc y n] can it be proved to be BFSet (x+y) n?
01:12:44 <ehird`> I think just 1, -1
01:12:58 <ehird`> err, 0
01:13:00 <ehird`> in the BFSet
01:13:37 <oerjan> if you assume a binary representation with wrapping on a fixed bitwidth
01:13:42 <oerjan> then any odd n will do
01:13:52 <ehird`> yes, they're chars
01:13:54 <ehird`> so 0..255
01:15:21 <ehird`> optimize (BFInc x a):(BFInc x b):xs = (BFInc p (a+b)):xs
01:15:22 <ehird`> parse error in pattern!
01:15:27 <ehird`> why :(
01:16:23 <oerjan> optimize ((BFInc x a):(BFInc x b):xs) = (BFInc p (a+b)):xs
01:16:32 <oerjan> actually
01:16:54 <oerjan> optimize (BFInc x a : BFInc x b : xs) = BFInc p (a+b) : xs
01:17:14 <ehird`> Conflicting definitions for `x'
01:17:15 <ehird`> In the definition of `optimize'
01:17:30 <ehird`> can't i use the same name for 'equal'? :(
01:17:34 <oerjan> nope
01:17:58 <oerjan> optimize (BFInc x a : BFInc x' b : xs) | x == x' = BFInc p (a+b) : xs
01:19:11 <ehird`> guards are ugly :)
01:19:24 <oerjan> ARE NOT
01:19:38 <ehird`> optimize (BFLoop x [BFInc x' n] : xs) | mod n 2 == 1 && x == x' = BFSet x 0 : xs
01:19:42 <ehird`> that is ugly
01:19:43 <faxathisia> OTHERWISE!
01:20:05 <faxathisia> hm..... you know
01:20:12 <faxathisia> that gives me the feeling this code would be easier in lisp
01:20:22 <oerjan> it may help to include a line break
01:20:22 <ehird`> heh
01:20:23 <ehird`> why
01:20:33 <ehird`> oerjan: but where
01:20:43 <oerjan> before the | perhaps
01:20:49 <faxathisia> so you can express the optimizations however you like (and hide a big confusing macro somewhere no noe looks)
01:20:56 <oerjan> line break + at least one space
01:21:08 <faxathisia> (not that I'd do that!)
01:21:26 <oerjan> mod n 2 == 1 = odd n
01:24:46 <ehird`> p += 1; t[p+0] = 0; p += 1; t[p+0] = 0;
01:24:49 <ehird`> repeated loads of times
01:24:53 <ehird`> i have a feeling that's optimizable :P
01:25:13 <ehird`> that is, code X repeated N times = for (tmpvar=0;tmpvar<N;tmpvar++){X}
01:25:27 <ehird`> bit tricky for a pattern match though
01:26:50 <oerjan> finding repeating subsections of a list, hm
01:29:59 <oerjan> hm if you consider sort . tails you get equal sublists nearby each other
01:30:04 <ehird`> heh
01:30:08 <ehird`> not much help
01:30:18 <oerjan> it could be the basis of an algorithm.
01:30:27 <oerjan> probably a bit expensive though
01:31:22 <oerjan> you could somewhat identify subfunctions that way
01:31:57 <ehird`> heh, now that IS interesting, but implausible
01:32:06 <ehird`> but finding repeating subsections would be useful.
01:32:14 <ehird`> i also want to identify 'if's
01:34:48 <ehird`> sheesh, gcc should have a -Ocs
01:34:52 <ehird`> optimize for compilation speed
01:34:56 <ehird`> this thing takes ab out 20 seconds to compile
01:35:23 <ehird`> oh, wonderful, it seems mandelbrot.b tape underflows forn o reason
01:35:50 <ehird`> hmm
01:35:51 <ehird`> does it?
01:35:58 <ehird`> oh!
01:36:00 <ehird`> duh
01:37:04 <ehird`> p = 0;
01:37:14 <ehird`> p += -1; if ((p+(-1))==0) { ... }
01:37:17 <ehird`> that should execute, right?
01:38:18 <ehird`> wait no
01:38:21 <ehird`> \damn
01:38:27 <ehird`> silly me
01:43:02 <ehird`> wtf, 9 seconds for mandelbrot
01:44:12 <Slereah> That's pretty fast!
01:45:12 <Sgeo> Why have I not been working on PSOX??
01:46:43 <Slereah> You've been thinking "I'll just do it later" for several days?
01:46:51 <ehird`> Slereah: No, I got 3 seconds before
01:47:07 <Slereah> That's still pretty fast.
01:47:22 <Slereah> Compared to the... roughly 3 hours per line I got on the Love Machine 9000.
01:47:36 <ehird`> 9 seconds is the speed that BF interps get for mandelbrot.b
01:47:38 <ehird`> I compile to C!
01:48:13 <ehird`> hm, did i lose my network connection?
01:48:14 <ehird`> anyone? ping?
01:48:20 <Slereah> Pong.
01:49:54 <oerjan> Png
01:56:00 * ehird` just uses the OS' memory protection, for simplicity
01:56:03 -!- jix has quit ("CommandQ").
01:56:14 <ehird`> And a sigsegv handler to expand
01:56:41 <ehird`> Now, who wants to tell me how to calculoate the page size in C...
01:57:09 <Slereah> I want to, I just don't know how to do it!
01:57:34 <ehird`> oerjan: Confusing isn't it!
01:58:10 <oerjan> what?
01:58:42 <ehird`> the low-elvel useful things that c can't do
01:58:59 <oklopol> Pöng
01:59:48 <oklopol> for some reason i wanna know how fast egobf is, please, ehird`, find it out for me :D
01:59:55 <ehird`> not that fast
01:59:58 <ehird`> not as fast as bf2c.hs
02:00:01 <oklopol> i have no idea why, one of my random obsessions
02:00:08 <ehird`> pretty good, though
02:00:18 <oklopol> mandelz?
02:01:06 <ehird`> iirc. about 3 seconds.
02:01:15 <ehird`> but it bus errors on this mac.
02:01:20 <ehird`> so: that's just a guess
02:03:32 <ehird`> but yeah: page size determination.
02:03:34 <ehird`> someone tell me how!
02:04:30 <ehird`> who runs unix?
02:04:34 <ehird`> oerjan? oklopol?
02:04:39 <ehird`> GregorR? Slereah?
02:04:54 <ehird`> sgeo?
02:05:03 <Sgeo> ehird`?
02:05:11 <ehird`> necvermind
02:05:13 <ehird`> i figured it out
02:05:15 <Sgeo> hm?
02:06:33 <oklopol> i run unix
02:06:43 <oklopol> but most of what i know i've learned from you.
02:07:28 * oklopol is very proud for actually having learned to use linux in just *six months*
02:10:21 <ehird`> woot
02:10:23 <ehird`> % time ./mandelbrot > /dev/null
02:10:23 <ehird`> ./mandelbrot > /dev/null 3.41s user 0.02s system 98% cpu 3.477 total
02:10:27 <ehird`> hooray for SIGSEGV
02:26:56 <Slereah> Aaaaargh
02:26:58 -!- Jontte has quit ("Konversation terminated!").
02:27:17 <Slereah> It's hard to check an abstraction eliminator when you can't even do it by hand correctly!
02:27:58 <faxathisia> Slereah: One check is shoving them through a type checkera
02:28:27 <oklopol> ,
02:29:15 <oklopol> (is he correcting a grammar error or making a very complicated comma pun, we'll never know...)
02:29:43 <Slereah> maybe it was a ? without the shift!
02:30:10 <Slereah> I'm trying to correct one error of my Abstractor,.
02:30:33 -!- ehird` has quit.
02:30:58 <Slereah> Apparently, it doesn't like very much something of the form ^abc...(^xyz...)fgh...
02:31:21 <Slereah> Although even the successor function doesn't seem to work too well.
02:32:52 <oerjan> well deeply nested lambdas do blow up exponentially with the naive AE algorithm
02:35:08 <Slereah> Blow up as in "size increase" or "Make them wrong"?
02:35:18 <oerjan> size
02:35:56 <Slereah> That doesn't worry me too much, that's why I made a program.
02:36:14 <Slereah> it's the wrong expression I find worrying
02:36:32 <Slereah> Although I can't be too sure if it's the abstractor or the interpreter.
02:39:52 -!- calamari has quit ("Leaving").
02:40:25 <oerjan> i would offer my eliminator but it's heavily tailored to unlambda (uses d and is careful about strictness)
02:42:02 -!- Sgeo has quit (Connection timed out).
02:42:31 <Slereah> Can you try this pred. function on unlambda, if you can copypasta on it? http://membres.lycos.fr/bewulf/Russell/Pred.txt
02:42:41 <Slereah> Just to see which program is the problem.
02:43:01 -!- Sgeo has joined.
02:44:32 <oerjan> well it's accepted and does nothing
02:45:01 <oerjan> and it is well-formed, because changing the final i to ! causes an error
02:45:48 <oerjan> hm...
02:46:47 <Slereah> Well, I try it with ``pred n `.xi
02:47:00 <Slereah> In a lazy evaluation, that is.
02:47:04 <oerjan> my optimizer simplifies it to ``s``s`ks``s`k`s`ks``s``s`ks``s`k`s`ks``s``s`ks``s`k`s`ks``s`k`s`kkk`k``s`k`s`k`s`k`si``s`k`s`k`s``s`ksk``s`k`s`k`s`kk``s`k`s`kkk`k`kk`k`k`ki
02:47:28 <Slereah> It always only prints 1 x for all values of n on mine
02:50:52 <oerjan> um shouldn't that be ```pred n .x i ?
02:51:50 <oerjan> then it works nicely here
02:51:59 <Slereah> Hm.
02:52:03 <Slereah> Let me think.
02:52:40 <oerjan> with ``pred n `.xi you are applying `pred n to too few arguments
02:53:05 <oerjan> so it just passes on to evaluating `.xi itself i assume, and just once
02:53:07 <Slereah> `n`.xi seems to work though
02:53:18 <oerjan> it shouldn't
02:53:22 <Slereah> ...
02:53:25 <Slereah> Damn.
02:53:59 <Slereah> Where's my pen.
02:54:04 <oerjan> here is the 256 from my self-interpreter: ```s``s`kski
02:54:04 <oerjan> ```s``s`kski
02:54:04 <oerjan> ```s``s`kski
02:54:31 <oerjan> ``s``s`kski
02:55:21 <oerjan> with that, ```pred n .x i prints 255 x'es in the unlambda C (i think) interpreter
02:57:20 <Slereah> (^f^x.f(f(f(...f(x)...)))) (.xi) = ^x.(.xi)((.xi)((.xi)(...(.xi)(x)...))) no?
02:57:30 <Slereah> It should at least evaluate more than 1?
02:57:55 <Slereah> Although I'm not too sure what it would be in combinators.
02:58:25 <oerjan> er it takes 2 arguments
02:58:31 <oerjan> f and x
02:58:52 <oerjan> oh wait
02:59:51 <Slereah> Here's a run for `2`.xi : http://membres.lycos.fr/bewulf/Russell/2%20run.txt
03:00:27 <oerjan> hm...
03:00:45 <oerjan> you may be right. however:
03:01:20 <oerjan> ``pred n f may not expand to the same as `(n-1) f
03:01:31 <Slereah> Oh.
03:01:45 <oerjan> rather, it may expand to something which waits for another argument before even starting to copy f's
03:02:14 <Slereah> So f is evaluated first, and only one x is printed?
03:02:58 <oerjan> well...
03:03:12 <oerjan> the thing is, while expanding top-level, f is never evaluated
03:03:50 <oerjan> it is only when your interpreter gives up the top-level because there isn't anything more to evaluate there, that it gets down to the f
03:04:49 <Slereah> ```pred n .x i seems to work
03:05:46 <Slereah> Let's see how succ n fares.
03:06:56 <Slereah> Also seems to work!
03:07:16 <Slereah> Output isn't easy to deal with under any evaluation!
03:09:28 <Slereah> When I'm more enthusiastic, I should try to see the evaluation of ``pred n`.xi
03:09:31 <oerjan> i think I/O behaves more reasonably if you only evaluate those operations at top level. then it works almost like monads...
03:10:13 <oerjan> (in a lazy setting)
03:11:28 <Slereah> What is exactly meant by top level?
03:12:49 <oerjan> the top of the parse tree
03:13:06 <oerjan> or in your case, only the start of the string for finding operators
03:14:49 <Slereah> Rebooting the modem, brb.
03:15:27 <Slereah> Or maybe not, the connection seems to be back
03:15:47 <Slereah> Sort of.
03:18:57 <Slereah> I'd check the run of the predn`.xi, but it looks like this : http://membres.lycos.fr/bewulf/Russell/Pred%20run.txt
03:19:30 <Slereah> Although I could try in your optimized version.
03:20:27 <Slereah> It's more reasonably sized.
03:20:51 <oerjan> i haven't checked it, it just came out of ulify2.scm :)
03:21:57 <Slereah> Well, at least the predn.xi seems to print the right number of x's.
03:22:16 <oerjan> ah yes, yours contains things like ``s`kk`ks
03:22:23 <oerjan> which = `k`ks
03:22:35 <Slereah> Is that a conversion of some sort?
03:22:48 <oerjan> ``s`kf`kg = `k`fg
03:23:10 <Slereah> I should add it with the eta conversion.
03:23:40 <oerjan> except in unlambda you need to add d's to it
03:23:52 <oerjan> but somehow i didn't see any in the result you saw
03:24:21 <oerjan> (my optimizer also tries to remove d's again)
03:24:36 <Slereah> Well, it's made of only primitive combinators. I assume that the evaluation isn't very important without IO
03:24:58 <oerjan> it depends. it can still be non-terminating.
03:25:22 <Slereah> ?
03:25:58 <oerjan> if `fg doesn't terminate, then ``s`kf`kg cannot be simplified to `k`fg
03:26:03 <oerjan> in strict unlambda
03:26:33 <Slereah> Oh.
03:26:57 <Slereah> Wouldn't ``s`kf`kg be ``Sfg?
03:27:36 <oerjan> no
03:28:15 <Slereah> ```s`kf`kgz = ```kfz``kgz = ``fz`gz = `sfg?
03:30:00 <oerjan> = `fg
03:30:17 <Slereah> Oh right.
03:30:44 <oklopol> "<Slereah> maybe it was a ? without the shift!" <<< sorry, that'd be +
03:31:02 <Slereah> On what moonspeak keyboard are you typing?
03:31:21 <oerjan> if oklopol's keyboard is like mine it could be ; without the shift, though
03:31:30 <oerjan> mine also has + below ?
03:31:30 <Slereah> (Does this conversion have a name? It's just to look pretty in the code)
03:32:45 <oerjan> well when you do it directly on lambdas it's just ^x`fg = `k`fg instead of ``s`kf`kg
03:33:09 <oerjan> so it's a shortcut, which madore mentions on the unlambda page
03:33:17 <oerjan> (noting that it is unsafe in unlambda)
03:33:20 <Slereah> So just an artefact of the conversion.
03:33:28 <Slereah> *abstraction elimination
03:35:44 <oklopol> hmm, if it was ";", it was obviously a request to change the subject
03:35:47 <oklopol> or shut up
03:35:51 <oklopol> hmm
03:36:05 <oklopol> or "you make too long sentences, wrap it up"
03:36:12 <oklopol> okay, not that obvious :-)
03:36:45 <oklopol> did someone here link maddox' rants?
03:37:12 <oerjan> who's maddox?
03:39:09 <oklopol> http://maddox.xmission.com/
03:39:51 <oklopol> i've written similar articles, although more, and of worse quality (or at least not better)
03:40:03 <oklopol> probably the reason i found them interesting
03:40:29 <Slereah> ```s`k`ab`k`cdk -> ```ab`cdk
03:40:32 <Slereah> Yes.
03:41:28 <Slereah> A much shorter result for pred!
03:41:37 <oerjan> um you're missing a `k
03:42:46 <oklopol> Slereah: did you paste the original link? asdf guess i need to press ctrl+f :'(
03:43:02 <oklopol> haha!
03:43:07 <oklopol> it was ya :)
03:44:26 <Slereah> oerjan : I guess that explain the infinite loop I got for pred
03:45:15 <oerjan> heh :)
03:46:53 <Slereah> Any other ways to reduce ski to ski?
03:48:26 <Slereah> Although the pred down to ``s``s`ks``s`k`s`ks``s``s`ks``s`k`s`ks``s``s`ks``s`k`s`ks``s`k`s`kkk`k``s`k`s`k`s`k`si``s`k`s`k`s``s`ksk``s`k`s`k`s`kk``s`k`s`kkk`k`kk`k`k`ki is already pretty neat.
03:48:53 <Slereah> Seems to be the same as yours
03:51:58 <oerjan> yep, you now have the two main optimizations of mine
03:52:10 <oerjan> and the rest i think are unlambda-specific
03:52:36 <Slereah> Well, thanks.
03:53:18 <oerjan> you're welcome :)
03:53:41 <Sgeo> Can a forkbomb cause lasting damage to a system?
03:53:52 <Sgeo> I'm contemplating using a forkbomb to force myself off the computer
03:54:10 <Slereah> You could ask your mom to do that.
03:54:16 <Slereah> She'll gladly oblige.
03:54:21 <Slereah> "Get some fresh air!"
03:55:25 <Slereah> Do you have a particular way of finding those optimisation?
03:55:45 <Slereah> I'm thinking of trying it for some other combinators.
03:58:33 <Slereah> (And maybe combining the ski-unlambda translator, the abstractor and the interpreter to write programs in some unholy combination of SKI combinators, unlambda and lambda calculus!)
03:59:01 <oerjan> nah
04:05:28 -!- Sgeo_ has joined.
04:14:03 -!- _KS has quit.
04:15:18 -!- Sgeo has quit (Read error: 110 (Connection timed out)).
04:27:03 <Slereah> There's the unholy Frankenstein : http://membres.lycos.fr/bewulf/Russell/Lazylambda4.py
04:36:38 <Slereah> When I'm done with this, every damn letter will be a combinator! :o
04:44:38 <oklopol> lol i made a bit of a miscalculation when saying i have more articles than this guy, i now realize i haven't read more than 30%, thought i was finished :)
04:44:53 <oklopol> the scroll bar... it's just too complex.
04:45:38 <Slereah> There's 10 years of article!
04:45:39 <Slereah> s
04:46:27 <Slereah> Writing in that mix of calculi is more pleasant.
04:46:44 <Slereah> For instance, some sort of iszero checker : ```^n((n(^x`ki))k)(^a^b`a`ab)`.0i````.F.a.u.xi
04:46:56 <Slereah> Where (^a^b`a`ab) can be any number.
04:47:36 <Slereah> With some hodgepodge of ` and parenthesis just for pleasure!
04:49:47 <Slereah> Hm.
04:49:55 <Slereah> `.^i generates an error.
04:50:06 <Slereah> It thinks I want to use i as a lambda variable.
04:51:39 <Slereah> Either I remove the ^s ^k ^i checker or find some way around it.
04:53:42 <Slereah> .^ in general seems to be a nuisance.
04:53:46 <oerjan> it's too simplistic, not skipping .'s
04:54:02 <Slereah> ?
04:54:20 <oerjan> i mean, checking for the literal string ^s etc. anywhere
04:54:47 <Slereah> That's what it does.
04:55:05 <Slereah> But if there's `.^i, it will find the string ^i in it.
04:55:27 <Slereah> And think I'm trying to sneak in some ski as variables.
04:56:06 <Slereah> And since `fg has ^ in it, the Abstractor will try to abstract it, instead of leaving it alone.
04:56:15 <oerjan> perhaps you could put the check in something like wff instead?
04:56:24 <Slereah> I should make some function to differentiate .^ from ^
04:57:01 <oerjan> don't forget you can have ..^ etc.
04:57:08 <Slereah> I know.
04:57:22 <Slereah> That's why I'm thinking of a function instead of a lazy ass workaround.
04:57:43 <Slereah> (I had plenty of similar problems on the Love Machine 9000!)
04:59:46 <Slereah> I should check for an odd number of . before ^ I guess.
05:12:15 <Slereah> Seems to work.
05:15:14 <oerjan> question: do you allow ^. ?
05:16:58 <Slereah> Let's see!
05:17:14 <Slereah> ^.^b.
05:17:22 <Slereah> Gives k.
05:17:39 <Slereah> It's a lambda smiley.
05:18:00 -!- Sgeo_ has quit (Remote closed the connection).
05:18:06 <Slereah> Although a (^x`.yi) expression seems to pose problem.
05:18:23 <Slereah> When it tries to abstract ^x.y
05:18:38 <Slereah> Not sure why
05:19:39 <Slereah> Oh.
05:19:45 <oerjan> well my question was because it could break your odd number of . 's rule
05:19:58 <Slereah> It thinks that ^x.y is actually two combinators.
05:20:01 <Slereah> . and y.
05:20:31 <Slereah> Printing functions are quite annoying to implement.
05:25:11 <Slereah> Found the error.
05:25:29 <Slereah> Just a number error in the T[^x.y] -> `ky
05:26:17 <Slereah> Let's see the ^. case.
05:26:57 <oerjan> ^...^s
05:27:42 <Slereah> It doesn't crash, but it's not that good either.
05:27:48 <oerjan> oh and not to forget ^^ :D
05:28:11 <Slereah> ^..^ gives i, ^...^s gives ``si`ks
05:28:16 <Slereah> I'm not even sure why.
05:28:30 <Slereah> ^^ makes some infinite loop.
05:28:50 <Slereah> Although ^^^ translates as i okay.
05:28:55 <oerjan> my suggestion is to disallow ^ and . as variables
05:29:07 <Slereah> That too.
05:33:24 <Slereah> Well, right now, the program will change all non-printing ( into ` (or delete them if they're before ^), delete all non-printing ), change all variables and combinators into lowercase, eliminate abstraction from the result and read the result as Unlambda would.
05:33:46 <Slereah> Any parsing pitfall in mind?
05:35:30 <oerjan> ( -> variable number of ` 's right?
05:36:16 <Slereah> I think so.
05:36:30 <oerjan> um ( before ^ shouldn't be deleted should it
05:36:45 <oerjan> or...
05:37:13 <Slereah> Well, the ^abc... abc... in parenthesis is just for a clear way to see the whole lambda expression if I want to write it.
05:38:21 <Slereah> It poses problems if I want to write something like `(^a^b`ba)np
05:38:24 <Slereah> Errr, `(^a^b`ban)p
05:38:31 <oerjan> however you could then have an error if the lambda expression stops before the corresponding )
05:38:43 <oerjan> right
05:39:13 <oerjan> what about instead saying ( before ^ moves past the ^+variable?
05:39:55 <oerjan> then you could drop ` 's inside
05:39:55 -!- slereah_ has joined.
05:40:08 <slereah_> [06:39] <Slereah> Although I guess I could check the length of the lambda expression to delete or not the parenthesis
05:40:09 <slereah_> [06:39] <Slereah> What?
05:40:56 <oerjan> oerjan> however you could then have an error if the lambda expression stops before the corresponding )
05:41:06 <oerjan> oerjan> right
05:41:26 <oerjan> oerjan> what about instead saying ( before ^ moves past the ^+variable?
05:41:38 <oerjan> oerjan> then you could drop ` 's inside
05:41:43 <oerjan> whew
05:41:45 <slereah_> That's what the "what?" was for.
05:42:52 <oerjan> `(^a^b`ban)p -> `^a^b(`ban)p -> `^a^b``banp
05:44:16 <slereah_> Well, except it should be ``^a^b`bap
05:44:37 <oerjan> huh?
05:44:48 <slereah_> Wait.
05:45:01 * slereah_ uses the power of mental thinking
05:45:37 <slereah_> `(^a^b`ban)p wouldn't be legal.
05:45:57 <slereah_> That's ^a^b`ban applied to p, but `ban lacks one apply.
05:47:00 <oerjan> it's legal in lambda calculus to be applied too little
05:47:17 <oerjan> um wait
05:47:25 <oerjan> the point i was saying was
05:47:32 <oerjan> (ban) = ``ban right?
05:47:38 <slereah_> Yes.
05:47:56 <oerjan> and in ordinary lambda calculus a ^ usually continues until the next )
05:48:22 <slereah_> For instance.
05:48:26 <oerjan> so why not say that (^a^bban) = ^a^b``ban
05:48:45 <slereah_> Well, I could do that for all variables.
05:49:15 <slereah_> Replace n non-printing letters by ````...````abcd...xyz
05:49:54 <oerjan> although it may be weird if you mix things, hm
05:50:04 <slereah_> I mix many thing already.
05:50:14 <oerjan> since ^a without parentheses only takes one following expression
05:50:37 <slereah_> I don't know about weirdness, but it might be hard to check for accuracy.
05:50:49 <slereah_> That would be a whole lot of combinations to try.
05:51:26 <oerjan> well lessee
05:51:48 <oerjan> you could say ` introduces unlambda syntax and ( introduces lambda calculus syntax
05:52:08 <slereah_> The thing is, I'm mixing both.
05:52:15 <oerjan> yes
05:52:24 <slereah_> For instance if I'm lazy and just want to copypasta some expression.
05:52:43 <oerjan> so if a subexpression starts with ` or ( you change to the other
05:53:28 <slereah_> Actually, both notations are used for both.
05:53:33 <oerjan> it would be safe as long as what you paste either is parenthesized or is a single expression starting with `
05:53:50 <oerjan> well they have ^ in common
05:59:31 <slereah_> Well, it can now differentiate s=s[:i]+s[i+1:]
05:59:32 <slereah_> i=i-1
05:59:33 <slereah_> Oop
05:59:46 <slereah_> `(^a^b`ban)p and ``(^a^b`ba)np
06:00:06 <slereah_> But I don't know what will happen if there's more lambda inside the parenthesis.
06:00:25 -!- Slereah has quit (Read error: 110 (Connection timed out)).
06:00:30 -!- slereah_ has changed nick to Slereah.
06:00:58 <oerjan> ah yes there could be trouble
06:01:15 <oerjan> (^aa^bba) for example
06:01:33 <oerjan> the ^b would probably scope only the b
06:01:38 <Slereah> I was thinking more of ((^aa)(^bb)a)
06:02:09 <Slereah> `^aa^bba
06:02:12 <Slereah> Hm.
06:02:19 <oerjan> that should be fine if the outer ( is handled first
06:02:28 <oerjan> turning into ``
06:02:29 <Slereah> I guess so.
06:02:41 <Slereah> What of (^aa(^bb)a)!
06:03:00 <oerjan> i think that's fine
06:03:49 <oerjan> -> ^a(a(^bb)a) -> ^a``a(^bb)a -> ^a``a^bba
06:03:50 <Slereah> Reads it as `^aa^bba. But it should be... What should it be, actually?
06:04:30 <Slereah> Doesn't read it like that.
06:04:38 <Slereah> It's `ii for it.
06:06:49 <oerjan> subtle stuff
06:06:50 <Slereah> But well, I guess it's not too important.
06:15:50 <Slereah> Hm. Would a combinator-to-text be something like iszero n [print char 0] [iszero pred(n) [print char1] [...]]]?
06:17:11 <Slereah> So something actually like (^x . iszero x [print char 0] [iszero pred(x) [print char1] [...]]]) n
06:18:22 <oerjan> there is a church numeral printer hidden in my deadfish-in-unlambda code
06:18:36 <oerjan> it might be using d though
06:19:09 <Slereah> I guess I could just generate it in python for ASCII chars.
06:19:33 <oerjan> oh you want num->ascii
06:19:52 <Slereah> Well, num->any set of char, actually.
06:20:12 <Slereah> ASCII works okay, especially since I want to do a _ combinator.
06:20:41 <Slereah> Awaits input from the keyboard, and then converts it to some ASCII Church numeral.
06:20:48 <oerjan> but i wouldn't use pred. i would use a church-encoded list of the chars
06:21:13 <oerjan> and then do `head ``n tail list
06:21:34 <Slereah> Ah yes. I should read the list function for lambda calc.
06:22:09 <Slereah> Might be useful later!
06:22:21 <faxathisia> (define (cons x y) (lambda (k) (k x y))) (define (car cons) (cons (lambda (x y) x))) (define (cdr cons) (cons (lambda (x y) y)))
06:22:40 <Slereah> I can't really read Haskell.
06:23:10 * faxathisia doesn't understand this ^ notation :S
06:23:14 <oerjan> given that that was scheme, i believe you :D
06:23:31 <Slereah> Heh.
06:23:35 <oerjan> er, possibly CL
06:23:40 <Slereah> Scheme, Haskel, same thing!
06:23:52 <Slereah> ^ is just a fancy ASCII for lambda.
06:24:40 <faxathisia> well to make a cons (pair of things), you can make a closure which takes a function an applies it to those args
06:24:48 <faxathisia> cons = (^h t . ^k. (k h t))
06:25:03 <oerjan> in fact haskell is closer
06:25:15 <oerjan> cons = \h t -> \k -> k h t
06:25:30 <faxathisia> so to select the head, such that (head (cons a b)) = a, head = (^cons. (cons (^head tail . head)))
06:25:57 <oerjan> though sadly, church-encoded lists soon hit against the type system
06:27:17 <Slereah> Why is a pairing noted as "cons"?
06:27:28 <oerjan> old lisp tradition
06:27:36 <faxathisia> A cons is a pair of things
06:28:06 <faxathisia> like the link of a linked list
06:28:16 * Slereah wikis
06:28:19 <Slereah> Oh, construct.
06:28:34 <oerjan> http://en.wikipedia.org/wiki/Cons
06:28:46 <Slereah> But, pair has the same number of letters! :o
06:29:11 <Slereah> Is there a Lisp function called pair?
06:29:30 <faxathisia> scheme has pair?
06:29:50 <faxathisia> (pair? (cons 'x 'y)) ;=> #t
06:30:09 <Slereah> What is this moonspeak!
06:30:15 <faxathisia> scheme
06:30:27 <oerjan> ;=> ?
06:30:27 <Slereah> ````^m^n^f^x``nf``mfx^f^x`f`f`f`f`f`fx^f^x`f`f`f`fx.xi
06:30:30 <Slereah> Yay, addition!
06:30:43 <faxathisia> ; <- comment => <- evaluates to
06:30:56 <oerjan> ah
06:31:05 * faxathisia should probably shut up and stop confusing people
06:31:23 <Slereah> Well, this is #esoteric
06:31:41 <Slereah> If we weren't allowed to confuse, it would be pretty silent.
06:32:11 <oerjan> and then, what would the alligators do?
06:32:21 <puzzlet> cross the road?
06:32:26 <Slereah> You are confusing me oerjan.
06:32:34 <oerjan> you don't say.
06:32:34 <Slereah> My lazy unlambda has one clear advantage on the love machine 9000.
06:32:41 <oerjan> speed?
06:32:44 <Slereah> I have a perfect name for it.
06:32:51 <oerjan> oh?
06:32:55 <Slereah> It will be called "Lazy bird".
06:33:14 <Slereah> Since its combinators will be the combinator birds from "To mock a mockingbird".
06:33:50 <Slereah> And it's a name I can post on Esolang without shame, unlike "Love Machine 9000".
06:34:31 <Slereah> Although I came up with a srs business name for it.
06:34:37 <Slereah> "NTCM"
06:34:53 <Slereah> n-tape choice machine.
06:35:39 <oerjan> Srpska Radikalna Stranka?
06:35:51 <Slereah> Lulwut?
06:36:01 <oerjan> srs
06:36:21 <Slereah> http://www.encyclopediadramatica.com/The_Internet_is_serious_business
06:38:21 * oerjan has a lightbulb go off
06:40:30 <oerjan> you mean srs is _not_ an acronym? doesn't sound like serious business to me.
06:40:52 <Slereah> Merely a contraction!
06:41:15 <oerjan> ah, a contradiction.
06:41:37 <oerjan> that splains it.
06:42:52 <Slereah> There's a dick that shouldn't be in your sentence.
06:43:49 <oerjan> my sentience is none of your business.
06:52:22 <Slereah> Fixed point combinators are not especially rare (there are infinitely many of them). Some, such as this one (constructed by Jan Willem Klop) are useful chiefly for amusement:
06:52:22 <Slereah> Yk = (L L L L L L L L L L L L L L L L L L L L L L L L L L)
06:52:22 <Slereah> where:
06:52:22 <Slereah> L = ?abcdefghijklmnopqstuvwxyzr. (r (t h i s i s a f i x e d p o i n t c o m b i n a t o r))
06:52:25 <Slereah> Heh.
06:52:52 <Slereah> Let's see if I can make something similar!
07:01:50 <Slereah> Well, it might take a while.
07:02:34 <Slereah> It's doing the w's right now, and increasing in size!
07:02:50 <Slereah> I hope it eta-reduces a whole lot.
07:11:45 <oerjan> well 10 of the variables are not used
07:13:17 <oerjan> including w
07:13:23 <Slereah> ^a^b^c^d^e^f^g^h^|^j^<^l^m^n^o^p^q^$^t^u^v^w^x^y^z^r`r``````````````````````````th|$|$af|xedpo|ntcomb|nator is still running :o
07:18:05 <Slereah> http://membres.lycos.fr/bewulf/Russell/noyoucanthaveaneuralnetwork.jpg
07:18:07 <Slereah> Heh.
07:33:11 <Slereah> Hm. For the input ASCII -> Church numerals, what would be the best idea?
07:33:54 <Slereah> Just a correspondance number -> church numerals, or number->succ(succ(succ(...succ(KI)....)))?
07:37:58 <Slereah> I guess it's space against time.
07:45:53 <oerjan> succ(succ(...)) is easier to build up recursively
07:46:38 <oerjan> in case you need to use a table, like in unlambda
07:48:31 <Slereah> Yes, but won't it blow up for big numbers?
07:48:39 <Slereah> Lazy K seems to use such a table.
07:50:59 <oerjan> lazy K uses church numerals for I/O
07:51:41 <oerjan> you mean input in decimal digits?
07:52:11 <Slereah> No, just for any key.
07:52:16 <Slereah> From 0 to 255.
07:53:07 <oerjan> the table will be somewhat big i guess
07:53:26 <oerjan> do you use ?x input like unlambda?
07:53:46 <oerjan> oh wait
07:54:08 <oerjan> you don't really need all the numbers in a table
07:54:12 <Slereah> Just a _ combinator that will change into the Church integer.
07:54:48 <oerjan> oh so you do input ascii as church numerals
07:54:56 <Slereah> Yes.
07:55:16 <oerjan> so your question is not about how to use it, but what python should send into the program
07:56:35 <oerjan> you might use binary
07:56:50 <oerjan> adding 1 and multiplying by 2 should be simple enough
07:57:37 <oerjan> it might still get blown up when the program tries to analyze it, i suspect
07:58:58 <Slereah> Well, Lazy K has a table of ways to get short ASCII -> Church
07:59:02 <Slereah> I'll see how this fares.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:02:05 <Slereah> Hm. apparently, plenty of them have the combinator ``s`ksk
08:02:10 <Slereah> Which is the B combinator
08:02:47 <Slereah> 2 is just ``sbi
08:25:35 -!- oerjan has quit ("Bye").
10:14:31 -!- Hiato has joined.
10:14:38 <Hiato> Hello all
10:15:02 <Hiato> Can anyone help me with some Haskell quickly?
10:16:16 <Hiato> faxathisia?
10:17:33 <Hiato> show map Char.isLower "aBCde"
10:18:02 <Hiato> would that produce [True,False,False,True,True]?
10:23:27 -!- Hiato has left (?).
11:56:22 -!- timotiis has joined.
11:56:53 -!- faxathisia has quit ("Leaving").
12:15:16 -!- RedDak has joined.
12:33:05 <Slereah> I think I'll just define the input as succ(succ(succ(...succ(KI)....)))
12:33:11 <Slereah> A table is too big.
12:49:33 <Slereah> But then again, the succ idea is painfully slow!
12:50:41 <Slereah> Aaaargh.
13:10:32 -!- jix has joined.
13:30:55 -!- sebbu2 has joined.
13:43:41 -!- sebbu has quit (Read error: 110 (Connection timed out)).
13:43:42 -!- sebbu2 has changed nick to sebbu.
13:56:15 -!- bsmntbombdood has quit (Read error: 110 (Connection timed out)).
13:57:11 -!- bsmntbombdood has joined.
14:24:37 -!- Hiato has joined.
14:24:45 <Hiato> Hello
14:27:01 <Hiato> can anyone help me with a Haskell exercise in Yet Another Haskell Tutorial?
14:27:08 <Hiato> it way hard
14:27:22 <Hiato> *its
14:30:00 * oklopol HELPs!
14:30:10 -!- lifthrasiir has quit (Read error: 104 (Connection reset by peer)).
14:30:57 <Hiato> "Exercise 3.5 We’ve seen how to calculate sums and products using folding functions.Given that the function max returns the maximum of two numbers, write a function using a fold that will return the maximum value in a list (and zero if the list is empty). So, when applied to [5,10,2,8,1] it will return 10. Assume that the values in the list are always ≥ 0. Explain to yourself why it works."
14:31:03 <Hiato> Can't get it
14:31:11 <oklopol> oh
14:31:17 <Hiato> but I guess I should check out #Haskell
14:31:27 <oklopol> i assumed i actually wouldn't be able to do it, but that's trivial )
14:31:28 <oklopol> :)
14:31:39 <Hiato> oh, really?
14:31:49 <Hiato> I just don't get what the folds will need to do
14:31:54 <Hiato> but could you explain?
14:32:04 <oklopol> you have a list A B C D E .. Z, and you need the max. basically, a max takes two values and returns the maximum of the two
14:32:10 <Hiato> yes
14:32:25 <oklopol> because max is... i lack terms :-)... it does A m B = B m A
14:32:37 <oklopol> and all the other funny features like that
14:32:38 <Hiato> yes
14:32:43 <oklopol> you can just do the maxes in any order
14:32:49 <Hiato> yes, I see
14:33:02 <oklopol> so... A B C -> A (B C) -> (A B C) would be a way to get the max of A B and C
14:33:06 <oklopol> now...
14:33:12 <oklopol> fold takes a list, and a function
14:33:26 <oklopol> it then takes a certain pair of values in the list, and performs the operation
14:33:35 <Hiato> ooh...
14:33:39 <Hiato> I think I get it
14:33:41 <oklopol> then, it takes that pair, and performs the operator on that pair, and another value in the list
14:33:43 <oklopol> good
14:33:55 <oklopol> on a related note, i think i need to poo ->
14:34:05 <Hiato> foldr (max) 0 [balh]?
14:34:13 <Hiato> lol, sure, er... don't let me stop you
14:34:18 <Hiato> *blah
14:34:20 <oklopol> looks correct
14:34:26 <oklopol> except you don't need the parens
14:34:33 <Hiato> ok, cool
14:34:36 <Hiato> thanks oklopol
14:34:39 <Hiato> now go forth
14:34:41 <Hiato> and make doodo
14:34:45 <Hiato> *doodoo
14:34:48 <Hiato> :P
14:34:51 <oklopol> ah, indeed! ->
14:35:44 <Hiato> hrmm
14:35:46 <Hiato> yes, it works
14:35:54 <Hiato> but why does it say you need two folds?
14:36:46 <Hiato> and is the fold direction important?
14:37:29 <Hiato> nevermind, it says a fold
14:37:37 <Hiato> still, is the direction relevant?
14:38:15 -!- slereah_ has joined.
14:49:40 <oklopol> (A m B) cmp (B m A)
14:49:49 <oklopol> where m is max.
14:50:10 <oklopol> and cmp is "compare these with yer braines"
14:50:35 <oklopol> did you compare?
14:52:27 <oklopol> aaaaactually
14:52:40 <oklopol> i'm globbing crap here
14:52:59 <oklopol> (A m (B m C)) cmp ((A m )B m C)
14:53:03 <oklopol> ...
14:53:06 <oklopol> more crap
14:53:10 <oklopol> (A m (B m C)) cmp ((A m B) m C)
14:53:12 <oklopol> better.
14:53:43 <oklopol> now, take your brain, stuff that in, wait a mo, tell it to generalize, wait a mo, and hope for the best
14:54:01 <Hiato> lol
14:54:02 <Hiato> ok
14:54:05 <Hiato> I'll try
14:54:07 <oklopol> hehe
14:54:35 <Hiato> alrighty
14:54:37 <Hiato> makes sense
14:54:40 <Hiato> (ish)
14:54:42 <Hiato> Hooray
14:54:44 <Hiato> :)
14:55:01 <Hiato> I like Haskell
14:55:05 <Hiato> it's so...
14:55:06 <Hiato> er
14:55:13 <Hiato> for the lack of a better word
14:55:15 <Hiato> strange
14:55:16 <oklopol> the max-function is a socalled "bag" function
14:55:17 <Hiato> ;)
14:55:21 <Hiato> ?
14:55:26 <oklopol> meaning it conceptually takes a *set* of arguments
14:55:27 -!- Jontte has joined.
14:55:32 <Hiato> aha
14:55:33 <oklopol> you can give it's args in any order that is.
14:55:38 <Hiato> yes
14:55:39 <oklopol> just like + and xor too
14:55:40 <Hiato> I see
14:55:43 <Hiato> yip
14:55:47 <Hiato> and *
14:55:55 -!- Slereah has quit (Read error: 110 (Connection timed out)).
14:56:05 <oklopol> and of course set operations except set substraction.
14:56:06 <oklopol> yeah, also *
14:56:09 <Hiato> (*=X=times=multiplication)
14:56:22 <Hiato> yes
14:56:39 <Hiato> meh, I'll continue with the tut some other itme
14:56:39 <oklopol> that is a helpful thing to know about a function, or not
14:56:48 <oklopol> i just wanted to coin a term for it
14:56:55 <Hiato> He
14:57:08 <Hiato> as in Heh as in laughter ;)
14:57:54 <Hiato> Haskell is exactly like ad-maths class
14:57:59 <Hiato> piece wise functions
14:58:01 <oklopol> i actually guessed what you meant there! :)
14:58:04 <Hiato> compliments etc
14:58:06 <oklopol> with "he"
14:58:09 <Hiato> yay :)
14:58:50 <oklopol> i've actually been wanting to make a language with a type system for a long time... could have my dream of having a language where args are given in arbitrary order come true
14:58:58 <oklopol> basically, the only list would be the set
14:59:10 <oklopol> and you could only give unary args
14:59:11 <Hiato> that would be cool, but also, confusing :)
14:59:40 <oklopol> no no! basically you'd have a distinct type for everything, how ELEGANT!
15:00:03 <oklopol> lol... lisp with sets instead of lists xD
15:00:09 <Hiato> Ah, yes well if Char is Different from String which is Different from Array of Char
15:00:12 <Hiato> then cool :)
15:00:20 <Hiato> :-\
15:00:27 <Hiato> actually
15:00:30 <Hiato> I don't know
15:00:33 <Hiato> it might be aweosme
15:00:34 <oklopol> oh, no, that's not enough...
15:00:36 <oklopol> i mean
15:00:44 <oklopol> catenating strings...
15:01:00 <oklopol> you need to make a LeftAppendor object and a RightAppendor object
15:01:08 <Hiato> w00t
15:01:12 <Hiato> I like that :)
15:01:17 <oklopol> :DD
15:01:20 <Hiato> annoying, painful, stupid - but awesome
15:01:22 <Hiato> :)
15:01:24 <oklopol> indeed!
15:02:02 <oklopol> i've been thinking i could take all these millions of stupid features i'd concocted over the years, remove them from oklotalk and make a new language for them
15:02:17 <oklopol> i mean, that's sometimes pretty nice
15:02:17 <Hiato> :)
15:02:39 <oklopol> like, you wanna have the program in the form oper func oper func oper func etc
15:02:43 <Hiato> Well, I don't really mind, as long as we get to _eventually_ see the langauge
15:02:47 <Hiato> and it _exists_
15:02:50 <Hiato> ;)
15:02:55 <oklopol> because then you don't need parens then.
15:02:56 <Hiato> woow
15:03:01 <Hiato> that would be cool, yip
15:03:07 <oklopol> and it's nice an sequelz
15:03:18 <oklopol> now, if types make up the order of usage of argumens
15:03:22 <oklopol> *arguments
15:03:40 <oklopol> then you can almost always have execution be linear if it's conceptually linear
15:03:44 <oklopol> if you know what i mean...
15:04:00 <Hiato> I think I get it...
15:04:12 <Hiato> but im not too sure
15:04:15 <oklopol> hehe
15:04:19 <Hiato> talking about flow control??
15:04:21 <oklopol> i'll try and find a weird example
15:04:23 <oklopol> yes
15:04:23 <Hiato> or time
15:04:28 <Hiato> oh
15:04:34 <Hiato> then I get what yoyu are saying
15:04:45 <Hiato> in a twisted kind of abstract sense...
15:04:52 <oklopol> okay, very stupid example, but anyway
15:05:21 <Hiato> yes, im all eyes
15:05:24 <Hiato> ;)
15:05:35 <oklopol> let's say you wanna do "A - (B - C)", but don't want the parens...
15:05:41 <Hiato> yes
15:05:57 <oklopol> A - B - lparam C
15:05:58 <oklopol> xD
15:06:04 <Hiato> lol
15:06:06 <Hiato> funky
15:06:08 <Hiato> and I like it
15:06:16 <Hiato> makes programming truly painful :P
15:06:16 <oklopol> OH, C IS AN LPARAM, THEN THE OTHER MUST BE RPARAM!
15:06:22 <oklopol> indeed! :D
15:06:39 <Hiato> good luck with the interpreter though
15:06:55 <Hiato> trying to make it run in linear time :X
15:07:10 <oklopol> hehe, actually i'd just really like to do static typing, so this might be a nice thingie to test with.
15:07:19 <Hiato> :)
15:07:24 <Hiato> wait
15:07:26 <oklopol> i've always had either dynamic or brainfuck typing
15:07:27 <Hiato> nontheless
15:07:31 <Hiato> good luck :P
15:07:36 <oklopol> (where everything is statically a number...)
15:07:37 <Hiato> Heh
15:07:44 <Hiato> understood
15:08:16 <Hiato> http://esoteric.voxelperfect.net/wiki/Betterave
15:08:25 <Hiato> But, unlike these three languages, it is not tape- nor stack-based. Instead, programs are written as expressions. Like Scheme, it has a prefix notation, but unlike Scheme, there are no parentheses; each operator knows how many arguments must follow it. Thus, for example, the parameters of an addition come after the "+" symbol.
15:08:28 <oklopol> yeah, it runs everything in linear time, of course... hmm, i think static typing isn't the hard part anymore
15:08:30 <Hiato> perhaps too late
15:08:40 <oklopol> oh, no
15:08:56 <Hiato> yaeh
15:08:59 <oklopol> 1. that's completely different 2. i had that idea 3 years ago
15:09:03 <Hiato> it's nearly everything you were o about
15:09:04 <oklopol> and thought it was original
15:09:14 <Hiato> lol
15:09:14 <Hiato> well
15:09:16 <oklopol> it's called "polish notation", i learned then
15:09:17 <Hiato> it's similar
15:09:20 <Hiato> yes
15:09:25 <Hiato> like FALSE
15:09:26 <oklopol> oh, no, that's polish notation.
15:09:29 <oklopol> nope
15:09:35 <Hiato> wait
15:09:35 <oklopol> false is rpn, reverse polish notation
15:09:38 <Hiato> FALSE is rpn
15:09:50 <Hiato> lol, we both realised
15:09:56 <oklopol> stack-based, you might say
15:09:59 <Hiato> it took me 2 seconds longer :P
15:10:06 <Hiato> (5:09:58 PM) oklopol: false is rpn, reverse polish notation
15:10:07 <Hiato> (5:10:00 PM) Hiato: FALSE is rpn
15:10:16 <oklopol> i just typed slow :)
15:10:24 <Hiato> Heh, good excuse
15:10:31 <Hiato> ;)
15:11:44 <oklopol> 1. that's completely different. 2. i had that idea. 3. years ago, when i was in lapland, i saw a reindeer eat its own shit
15:12:21 <Hiato> haha, Must have been a truly inspiring sight
15:12:25 <Hiato> ;)
15:12:35 <oklopol> oh, sorry, that's not true, i just added something :)
15:13:02 <Hiato> oh I see, so what you meant is: 1. i had that idea. 3 years ago, when i was in lapland, i saw a reindeer eat its own shit ?
15:13:05 <oklopol> i mainly ogled at girls last time i was in lapland :)
15:13:25 <Hiato> unsurprisingly, I am not surpirised
15:13:32 <Hiato> and that is a helathy habbit nontheless
15:13:38 <Hiato> *healthy
15:13:40 <oklopol> no, i wanted to change the "3 years ago" into "part 3. years ago..."
15:13:58 <Hiato> I know, I was merely toying with you mortal mid
15:14:00 <Hiato> *mind
15:14:03 <Hiato> or *mud
15:14:07 <Hiato> whicheever
15:14:09 <oklopol> and in that you did succeed!
15:14:21 <Hiato> Hooray!
15:14:30 <oklopol> oh, btw, i played a bit with the idea of pattern matching
15:14:44 <Hiato> oh, and?
15:14:53 <oklopol> sofar, quicksort looks unbelievably weird, but i found comfort in that the prolog one i found is very similar :D
15:15:11 <Hiato> Cool
15:15:14 <oklopol> i thought i had the world's stupidest and ugliest idea ever when i invented scramble
15:15:24 <oklopol> the function that randomly scrambles a list
15:15:31 <Hiato> but?
15:15:43 <oklopol> used for sorting, that is
15:15:47 <Hiato> It turned into OgroSort (random sorting)
15:15:54 <oklopol> prolog has "perm", i then found out
15:16:00 <Hiato> lol
15:16:01 <Hiato> shame
15:16:08 <oklopol> and permutation is just fancy talk for scrambling :)
15:16:11 <Hiato> I wrote a permuatation algortihm once
15:16:23 <Hiato> I called it TVPA
15:16:31 <Hiato> and permutation is just fancy talk for scrambling :) ... er sure
15:16:32 <Hiato> :)
15:16:37 <oklopol> oh, i'm not even disappointed anymore when i found my ideas already in use,
15:16:43 <oklopol> they always are
15:16:55 <Hiato> what a horrible and demaning experience
15:17:02 <Hiato> I would threaten
15:17:08 <Hiato> to kill kittens unless I was credited
15:17:10 <Hiato> :P
15:17:19 <oklopol> and i usually found out about them right after i've invented them (usually because of my own googling, but often also by randomly looking at #haskell or somethign)
15:17:27 <oklopol> heh
15:17:51 <oklopol> i actually then renamed Scramble into Perm
15:18:14 <Hiato> aha, I see
15:18:23 <Hiato> http://rafb.net/p/jRzJ6635.txt
15:18:25 <oklopol> which is kinda lame because i'm trying to keep the concepts of pattern matching and constraint programming separate :P
15:18:29 <Hiato> it's in delphi
15:18:32 <oklopol> or is it logic programming...
15:18:37 <oklopol> i mean that thing.
15:18:45 <Hiato> I don't have the faintest clue
15:19:27 <Hiato> That's a perfect demonstration of my horrible procedural style
15:19:41 <Hiato> which is why I want to become proficient in functional languages
15:19:46 <Hiato> ala Haskell
15:21:30 <oklopol> i don't get much of that
15:21:34 <oklopol> well, i don't get all of that
15:21:43 <Hiato> hrmm
15:21:50 <Hiato> well grab FPC or something
15:21:54 <Hiato> and Permute away :P
15:22:05 <Hiato> FPC = Free Pascal Compiler
15:22:14 <Hiato> which is what Lazarus IDE is
15:22:27 <Hiato> anyway
15:22:34 <Hiato> that's besides the point
15:22:38 <Hiato> the point is the style
15:22:41 <Hiato> :)
15:22:45 <oklopol> for k := 0 to sizeof(p)-1 do if PosRightGreater(k) then maxp := k;
15:22:54 <oklopol> ...does that find the max of a list?
15:22:58 <Hiato> nope
15:23:02 <Hiato> what it does is
15:23:13 <Hiato> finds the furthest possible number from the left hand side
15:23:20 <Hiato> which has a number graeter than it on it's right
15:23:25 <Hiato> *greater
15:24:48 <oklopol> i think that's quite a slow way to do it...
15:24:55 <Hiato> it's the only way I could think of...
15:25:01 <Hiato> but you are correct
15:25:05 <Hiato> it is slow
15:25:19 <Hiato> fast, but slow in terms of cycles per permuttation
15:25:30 <oklopol> start from the right
15:25:38 <Hiato> it takes about 0.5 secs to rubn through 8! permuataions, I think
15:25:42 <Hiato> yes
15:26:23 <oklopol> hmm...
15:27:15 <oklopol> oh, right, just iterate from right to left, store the first number as max, and when you find a number > max, return the index of that
15:27:29 <oklopol> first == last in the lsit
15:27:30 <oklopol> list
15:27:34 <Hiato> hrmm
15:27:36 <oklopol> just first because started from the end...
15:28:03 <Hiato> but that won't be in lexicographical order
15:28:10 <Hiato> at all
15:28:32 <oklopol> that will find the last index in the list for which there are no greater numbers on the left
15:28:39 <oklopol> *right
15:28:40 <oklopol> lol
15:29:07 <Hiato> wait
15:29:08 <Hiato> oh
15:29:12 <Hiato> let me think
15:29:13 -!- jix has quit (Read error: 60 (Operation timed out)).
15:29:13 <Hiato> ...
15:29:31 <Hiato> well
15:29:42 -!- jix has joined.
15:29:42 <Hiato> I think that that won't be too much faster than what I am doing
15:29:45 <oklopol> let's say you have [9 5 6 8], store 8 as max, then go until you find a number greater than it
15:29:52 <oklopol> that's 9
15:29:55 <oklopol> oh, it's faster
15:30:01 <oklopol> like this you go through half the list
15:30:01 <Hiato> im just saying
15:30:06 <Hiato> true
15:30:07 <Hiato> well
15:30:11 <Hiato> yes, I do start on the left
15:30:13 <oklopol> your way you go through the list for every element of the list
15:30:21 <Hiato> true
15:30:30 <oklopol> mine is O(n), yours O(n^2), unless i read the code entirely wrong
15:30:39 <Hiato> no, you are right
15:30:50 <Hiato> yes, it's definitely not linera
15:30:53 <Hiato> *linear
15:31:02 <Hiato> wait
15:31:04 <Hiato> I don't get it
15:31:10 <Hiato> with
15:31:13 <oklopol> what don't you get
15:31:17 <Hiato> [9 5 6 8]
15:31:20 <Hiato> 8 is max
15:31:23 <Hiato> go left
15:31:28 <Hiato> 9 is then max
15:31:35 <Hiato> then that will be wrong
15:31:41 <oklopol> what should it return?
15:31:49 <Hiato> it should, return, in this example
15:31:50 <Hiato> 5
15:31:55 <oklopol> well, yeah
15:31:57 <Hiato> as 5 has something to its right
15:32:00 <Hiato> which is greater
15:32:02 <oklopol> but do you see the connection between the algos?
15:32:04 <Hiato> 8 doesn't
15:32:09 <Hiato> kind of
15:32:12 <oklopol> okay
15:32:14 <Hiato> but not really
15:32:19 <oklopol> wait a second
15:32:25 <oklopol> i'll give the hint.
15:32:30 <Hiato> sure
15:32:45 <oklopol> my algo finds the last number that does *not* have a greater number on its right
15:33:02 <oklopol> now, every number after it in the list will have a certain property
15:33:04 <oklopol> do you know what?
15:33:08 <Hiato> yes
15:33:16 <Hiato> a number graeter than it on it's right
15:33:22 <Hiato> *greater
15:33:22 <oklopol> yes
15:33:27 <oklopol> do you see the connection?
15:33:31 <Hiato> but that still is one step away
15:33:32 <Hiato> yes
15:33:35 <Hiato> as I did before
15:33:37 <Hiato> because
15:33:38 <oklopol> it is so trivial i didn't consider them a separate algo at all.
15:33:46 <Hiato> I still need the largest possible number
15:33:53 <oklopol> hmm
15:34:11 <oklopol> largest possible number?
15:34:12 <oklopol> whut
15:34:31 <Hiato> sorry
15:34:35 <Hiato> not he largest possible
15:34:36 <oklopol> you see i have no idea what you are doing with this since i haven't read the code, i'm just telling you the best algo to do what you explained :)
15:34:39 <Hiato> the furthest possible
15:34:45 <oklopol> indeed
15:34:56 <Hiato> but
15:34:58 <Hiato> in that case
15:35:01 <Hiato> I now know
15:35:05 <Hiato> that everything save 8
15:35:18 <Hiato> is valid in the 9 5 6 8
15:35:33 <oklopol> "valid"?
15:35:41 <Hiato> so, I guess I can just chosser the one before it
15:35:49 <Hiato> valid = something greater on it's right
15:35:55 <oklopol> well
15:36:00 <oklopol> then it won't be the leftmost.
15:36:01 <Hiato> and nine
15:36:05 <Hiato> yes
15:36:07 <Hiato> the problem
15:36:08 <oklopol> ohhhhh
15:36:15 <Hiato> actually
15:36:17 <Hiato> no
15:36:19 <oklopol> indeed, mine doesn't quite solve it ;)
15:36:20 <Hiato> not the problem
15:36:24 <oklopol> but, it's a trivial change.
15:36:30 <Hiato> the problem is rightmost
15:36:36 <Hiato> and your's would report 9
15:36:41 <Hiato> instead of 6
15:36:47 <oklopol> you want the rightmost? :D
15:36:50 <Hiato> yes
15:36:52 <oklopol> you said leftmost earlier
15:37:03 <oklopol> oh, in that case, it even simpler than my original one
15:37:32 <Hiato> (5:36:11 PM) Hiato: valid = something greater on it's right
15:37:38 <oklopol> take the last of the list, go to the left unless the new number is smaller than the last number
15:37:49 <Hiato> oh yeah huh
15:37:53 <Hiato> that would be way easier
15:38:20 <Hiato> but
15:38:27 <Hiato> that would yield false results
15:38:29 <Hiato> because
15:38:38 <Hiato> in 9 5 6 8
15:38:45 <Hiato> we would stop on 8
15:38:50 <Hiato> as 6<8
15:38:50 <oklopol> **until
15:38:54 <oklopol> s/unless/until
15:38:55 <oklopol> xD
15:38:58 <Hiato> aha
15:38:59 <Hiato> lol
15:39:16 <Hiato> then we have another problem
15:39:22 <Hiato> in 9 5 6 8
15:39:25 <Hiato> we go left
15:39:28 <Hiato> and stop on 5
15:39:33 <Hiato> as 5<9
15:39:37 <oklopol> no
15:39:38 <Hiato> which is not part of the condition
15:39:47 <Hiato> ?
15:39:52 <oklopol> at 6, the new number (6) is smaller than the last number (8)
15:39:55 <oklopol> so we return 6
15:39:59 <oklopol> of the index of it.
15:40:01 <oklopol> *or
15:40:01 <Hiato> oh yeah
15:40:03 <Hiato> huh
15:40:04 <Hiato> thanks
15:40:16 <Hiato> that will decrease the CPU cycles
15:40:16 <Hiato> :)
15:40:37 <Hiato> I just then have to change the code a bit
15:40:42 <Hiato> to say if it is the 1st number
15:40:44 <Hiato> then we are done
15:40:50 <oklopol> it's a big algorithmic improvement, i recommend you read a bit about complexities in general
15:40:52 <Hiato> instead of if PosRightGreater returns false
15:41:02 <Hiato> yes, I would like to
15:41:38 <oklopol> since i'm fairly sure i'd've lolled my ass off if i didn't know who you are :)
15:41:51 <oklopol> programmers are sometimes like that
15:42:07 <oklopol> i mean, if i'd just seen that algo on the net
15:42:10 <Hiato> I'm not sure whether to take that as a compliment or insult
15:42:13 <Hiato> but thanks :)
15:42:14 <oklopol> hehe
15:42:25 <Hiato> yes, if you'd have seen it on the net
15:42:25 <Hiato> ...
15:42:39 <oklopol> i mean, without knowing whose it is.
15:42:49 <Hiato> yes (I'm listening :P )
15:42:54 -!- RedDak has quit (Remote closed the connection).
15:42:57 <Hiato> (no worries, I won't take offense)
15:43:05 <Hiato> (it was stupid ;) )
15:43:55 <oklopol> it's just you get a bit obsessed about complexities after being around them constantly
15:44:11 <Hiato> fair enough :)
15:44:19 <Hiato> what is it that you do?
15:44:21 <oklopol> an algorithm that obviously does what it does inefficiently is actually very funny after that.
15:44:40 <Hiato> Hehe, I can see where you're coming from
15:44:53 <Hiato> if you don't mind my previous question
15:45:02 <Hiato> would you answer it ;)
15:45:10 <oklopol> sometimes also because a tabsize of 8 instead of 4 is enough, though, people are pretty obsessed with prettiness of code too :)
15:45:15 <oklopol> oh
15:45:21 <oklopol> wonder what that was
15:45:45 <Hiato> "people are pretty obsessed with prettiness of code too :)" unfortunately true
15:45:51 <Hiato> Well
15:45:57 <Hiato> what is it that you do?
15:46:02 <Hiato> for a living, or whatever?
15:46:03 <Hiato> ;)
15:46:36 <oklopol> oh, i'm in high school, possibly failing it, taking a few courses from the uni on the side
15:46:52 <Hiato> nice
15:46:55 <Hiato> me too
15:47:04 <oklopol> they just let me on one course at a time :-(
15:47:06 <Hiato> well, im not sure about failing (:P) or courses
15:47:12 <Hiato> shame
15:47:13 <Hiato> well
15:47:25 <Hiato> I have my sincere doubts that you are failing :)
15:47:41 <oklopol> well, after the first few weeks of high school i realized it has nothing to offer me (or anyone non retard.)
15:47:51 <oklopol> so... haven't really done anything there.
15:47:57 <oklopol> i lack a few courses i should have
15:47:58 <Hiato> Hahah, so very (sadly) true :)
15:48:11 <Hiato> oh, I see
15:48:28 <Hiato> I go to school, to come home
15:48:33 <Hiato> it's that simple :)
15:49:08 <oklopol> i don't really go, since i have 4 hours of lectures a week
15:49:17 <oklopol> no courses in high school anymore, just the one course in cs
15:49:22 <oklopol> in the uni
15:49:24 <Hiato> nice :)
15:50:14 <oklopol> basically, a course about heaps.
15:50:17 <oklopol> :)
15:50:39 <Hiato> :D
15:50:55 <oklopol> different ways to keep them balanced, stuff you could explain in a few lines for those who've never heard about them :)
15:51:25 <oklopol> i've actually done this, a whole course about ordos, i taught them to a friend in a few nights.
15:51:58 <Hiato> ordos?
15:52:02 <Hiato> http://rafb.net/p/0YrGtq15.txt
15:52:03 <oklopol> orderz
15:52:06 <oklopol> O()
15:52:09 <Hiato> oh
15:52:14 <Hiato> Big O notation
15:52:20 <Hiato> check it out
15:52:23 <Hiato> its way smaller now
15:52:26 <Hiato> haven't tested
15:52:28 <Hiato> but hey
15:53:38 <Hiato> be back later
15:53:43 <Hiato> got to do some stuff
15:53:45 <Hiato> cheers
15:53:46 -!- Hiato has left (?).
15:54:16 <oklopol> 8|
15:54:26 <oklopol> people can be so weird... leaving irc...
16:20:00 <oklopol> what's the shortest brainfuck interpreter in a language not spesifically designed for brianfuck?
16:20:04 <oklopol> brain...
16:20:30 <oklopol> and by specific design i mean stuff like a language that executes brainfuck code.
16:40:19 -!- oklopol has quit ("for the need to encumber").
16:47:25 -!- oklopol has joined.
17:00:57 -!- oerjan has joined.
17:17:49 -!- ehird` has joined.
17:21:44 -!- helios24_ has joined.
17:21:58 -!- helios24 has quit (Read error: 113 (No route to host)).
17:24:37 -!- Hiato has joined.
17:24:48 <Hiato> Wassabi
17:25:24 <oklopol> no thanks, but it is a bit chili outside.
17:25:47 <oerjan> oklopol: no fair, i was going to...
17:25:47 <Hiato> Hehe
17:25:52 <oklopol> (finally, a chance to pun-answer that)
17:25:52 <Hiato> :)
17:26:08 <Hiato> Souther Hemisphere - Oh Yeah :D
17:26:17 <oerjan> although i did it a previous time so...
17:26:18 <oklopol> warm there?
17:26:22 <oklopol> oerjan: i know
17:26:24 <Hiato> Summer!
17:26:26 <oklopol> and i was sooo jealous :\
17:26:28 <Hiato> I know orejan
17:26:30 <Hiato> :)
17:26:51 <oklopol> i read all teh logs, although i usually skip the long discussions over debugging something :D
17:27:11 <Hiato> Hah, I also try to
17:27:21 <oklopol> well not skip, but not read memorizingly
17:27:25 <Hiato> whenever I go to slleep
17:27:27 <oklopol> skim
17:27:39 <Hiato> I'm garunteed to miss out on the *actual*
17:27:41 <Hiato> discussion
17:27:59 <Hiato> yes, well I just do Ctlr+F
17:28:00 <Hiato> :P
17:28:03 <Hiato> in the logs
17:28:06 <oerjan> ah yes. how come you started asking haskell questions just when i left ;)
17:28:21 <Hiato> Couldn't help it :)
17:28:29 <Hiato> That's when the exercises got hard in the tut
17:28:29 <oklopol> the fold thing?
17:28:31 <Hiato> ;)
17:28:32 <Hiato> yip
17:28:44 <oerjan> although oklopol handled that well :)
17:28:55 <oklopol> thanks, i thought so too :P
17:29:11 <Hiato> Yes, I must hand it to him: Oklopol, you taught me folds in ~3 lines, and the whole tut didn't make sense (about them)
17:29:33 <oklopol> i couldn't add the insightful "BUT, you can also do that with a StateT monad, and it's much COOLER" oerjan could've added!
17:29:42 <oklopol> *though
17:29:47 <oerjan> hm...
17:29:53 <Hiato> StateT?
17:29:54 <oklopol> (not would've, but could've)
17:30:28 <oerjan> no, State is sufficent ;)
17:30:35 <oklopol> i'm not sure what a monad would have to do with a fold, but i'm fairly sure you can put a bit of monad to everything :-)
17:30:36 <Hiato> amm, err... ok
17:30:52 <Hiato> sure, whatever floats your boat oklopol :P
17:31:02 * oklopol has a monad fetish
17:31:07 <Hiato> aha
17:31:17 <Hiato> well that explains everything
17:31:23 <Hiato> naah
17:31:25 <ehird`> someone should write a haskell fibonacci that uses just monads
17:31:27 <ehird`> nothing else
17:31:27 <Hiato> pulling your leg(s)
17:31:30 <ehird`> mmmk
17:31:38 <oerjan> or actually... nearly anything you do with lists will be essentially folds at the bottom anyhow, even if you use monad functions
17:31:49 <oklopol> i guess
17:32:11 <oklopol> (from the little understanding i have about the subject)
17:32:17 <Hiato> sure (desperately searches the tutorial for what monads are)
17:32:30 <oerjan> Hiato: they may have left that out out of mercy ;)
17:32:45 <Hiato> oh, ok
17:32:49 <oklopol> Hiato: yeah, quickly look them up so you can have a conversation about them :)
17:32:49 <oerjan> or just considered IO
17:32:53 <Hiato> in which case: I'm not interested :P
17:33:26 <Hiato> naah
17:33:28 <oerjan> actually you must have at least one monad eventually: IO to do I/O
17:33:29 <Hiato> I am
17:33:34 <Hiato> in a twisted way
17:33:49 <oklopol> "monad? i'll check wikipedia" *minute* "ah, now i see what you meant by that seven lines of monadic line noise"
17:34:23 <Hiato> Yes.. er.. no... am... maybe
17:34:32 <Hiato> choose the more appropriate one
17:35:03 <oklopol> oklopol: chooses "am", for he is such an egois.
17:35:04 <oklopol> Ät
17:35:05 <oklopol> *t
17:35:07 <oklopol> *egoist
17:35:10 <oklopol> *typoist
17:35:15 <oklopol> also
17:35:20 * oklopol != ok+tab
17:35:21 <oklopol> xD
17:35:24 <Hiato> Lol :)
17:35:27 * oerjan wonders if t means something in finnish
17:35:32 <oklopol> FUCK, i'm failing a bit too much heree..
17:35:38 <oklopol> "/me" != "ok+tab"
17:35:54 <oklopol> oerjan: @, or "at" is pronounced "ät"
17:36:19 <oklopol> although you rarely see it in use as such, since it looks awful, that's what "ät" would mean
17:36:24 * Hiato wonders if "/me" will come out right
17:36:47 <oerjan> well that's just borrowing english pronunciation i take
17:36:52 <oklopol> yes
17:37:06 <Hiato> Watter taal praat jy oklopol?
17:37:21 <oklopol> "what language do you speak?"=
17:37:21 <oklopol> ?
17:37:25 <Hiato> yes
17:37:27 <Hiato> correct
17:37:27 <oklopol> actually
17:37:32 <Hiato> and the winner is....
17:37:38 <oklopol> i remember praat and jy from yesterday
17:37:43 <oklopol> so... shouldn't have had to ask.
17:37:44 <Hiato> :D nice
17:38:00 * oerjan actually got that since "prat" is norwegian too
17:38:05 <Hiato> Dutch I take it....
17:38:08 <Hiato> cool
17:38:13 <oklopol> well it's sprache in german and prata is talk in swedish, it's not like it's hard to remember something you almost remember already
17:38:14 <Hiato> or is memory failing
17:38:23 <oerjan> almost certainly borrowed from dutch though
17:38:28 <Hiato> yip
17:38:29 <oklopol> Hiato: also, finnish.
17:38:40 <Hiato> ah yes, we went through this yesterday :P
17:38:44 <oklopol> well, i use english more, but finnish is my native language
17:38:44 <Hiato> weel orejan
17:38:47 <oklopol> i guess we did
17:38:53 * oerjan has read that the only native word starting with in norwegian is "p"
17:39:05 <Hiato> Afrikaans = 90% Duthc + 5% English + 5%Randomness
17:39:06 <oerjan> *with p, sheesh
17:39:09 <oklopol> starting with? :D
17:39:10 <Hiato> *Dutch
17:39:10 <oklopol> oh
17:39:13 <oklopol> what :o
17:39:21 <oklopol> wtf
17:39:25 <oklopol> that's sick :D
17:39:36 <Hiato> not really
17:39:42 <Hiato> because every time you learn a rule
17:39:54 <Hiato> there are more exceptions then are things that confomr :(
17:39:57 <Hiato> *conform
17:40:35 <oklopol> all i know about dutch is from porn
17:40:38 <oerjan> ah, just like english then :D
17:40:50 <Hiato> ahahahahaah
17:40:56 <Hiato> and to orejan
17:40:58 <Hiato> too true
17:41:03 <Hiato> took me years to learn English
17:41:07 <oklopol> they make very sucky erotic comedies.
17:41:13 <Hiato> heh
17:41:31 <Hiato> I'll take it you're the expert
17:41:34 <Hiato> oklopol
17:41:49 <oklopol> i can't really think of anything funnier than an ugly guy having sex with three girls in fast motion with carneval music on the background :)
17:42:00 <oklopol> expert?
17:42:03 <oklopol> in porn?
17:42:03 <Hiato> lol, true
17:42:11 <Hiato> yes, well Dutch pron that is
17:42:21 <Hiato> typo?
17:42:22 <oklopol> oh, well probably any kind
17:42:26 <oklopol> :)
17:42:28 <Hiato> Ah, I see
17:42:43 <Hiato> http://esoteric.voxelperfect.net/wiki/2006_Esolang_Contest
17:42:48 <Hiato> Holy Guacamole
17:42:57 <Hiato> there is no way 3/4 of the Esolangs out ther
17:43:05 <Hiato> can do any of "The Tasks"
17:43:14 <Hiato> someone weas on something real good :)
17:43:16 <Hiato> *waz
17:43:18 <Hiato> *was
17:43:20 <Hiato> *blah
17:43:58 <oerjan> oh they _can_, if they're turing complete
17:44:13 <Hiato> treu, but you know what I meant
17:44:19 <Hiato> what I meant is:
17:44:35 <oerjan> i mean, _someone_ wrote a mandelbrot generator in bf...
17:44:43 <oklopol> hehe
17:44:45 <Hiato> No single human (or multiple humans) has/have the capacity to concentrate for a long enough period of time
17:44:53 <oklopol> true.
17:44:54 <Hiato> Yeah, I saw that
17:45:07 <Hiato> It's not hard really
17:45:12 <Hiato> at least the maths part
17:45:12 <timotiis> nonsense. first, write the program for a turing machine, secondly, implement the turing machine in language of choice
17:45:17 <Hiato> I did one in ruby easily
17:45:26 <Hiato> meh
17:45:28 <Hiato> fin
17:45:30 <Hiato> *fine
17:45:32 <oklopol> timotiis: now that you put it that way, can't think of anything simpler.
17:45:33 <Hiato> the house wins
17:46:11 <oerjan> as i recall, a mandelbrot in basic was one of the first programs i ever wrote, long long ago
17:46:15 <Hiato> is Pikhq the resident Brainfuck god?
17:46:23 <oklopol> dbc is, i think.
17:46:29 <Hiato> oh, I see
17:46:54 <oklopol> pikhq is the author of pebble, i'm assuming he owns at brainfuck, although i don't know what he's done with it
17:47:04 <Hiato> Cool'
17:47:09 <oklopol> also, i know he's said "brainfuck is easy once you've used it a bit"
17:47:16 <oklopol> not in those words, but something along those line
17:47:16 <oklopol> s
17:47:24 <Hiato> :D
17:47:30 <Hiato> Lunacy I tell you :P
17:47:35 <oklopol> heh
17:47:37 <Hiato> http://rafb.net/p/OXHki823.html
17:47:40 <Hiato> there we are
17:47:41 <oklopol> well, it's true, it's not that hard ;)
17:47:43 <Hiato> the madelbrot set
17:47:45 <Hiato> in Ruby
17:47:48 <Hiato> my own script
17:47:50 <Hiato> very easy
17:47:51 <oerjan> hm i think the uuencode task might be the simplest...
17:48:00 <Hiato> maybe
17:48:04 <Hiato> im not sure though
17:48:13 <Hiato> sed is definitely difficult
17:48:19 <Hiato> in non-stringy languages
17:55:20 <Hiato> Wise man once say: "Mandelbrot Set make IRC silent, Phoenix set make noise"
17:56:16 <oerjan> what is the Phoenix set?
17:56:28 <Hiato> its alos an infintely repeating set
17:56:31 <Hiato> hrmm
17:56:34 <Hiato> a fractal too
17:56:38 <Hiato> let me get the link
17:58:06 <Hiato> http://www.jamesh.id.au/fractals/mandel/Phoenix.html
18:00:34 <oerjan> aye
18:00:48 <Hiato> not pretty, hence it makes noise :P
18:02:46 <oklopol> interesting note: "aye" means "no" in finnish
18:02:52 <oklopol> although it's written "ei"
18:02:56 <Hiato> cool
18:03:01 <Hiato> I learnt some finnish
18:03:04 <Hiato> :)
18:03:09 <oklopol> interesting note: "aye" means "egg" in german, although it's spelled "ei"
18:03:09 <Hiato> what is yes?
18:03:11 <oklopol> also
18:03:16 <oerjan> ei har jeg hrt slikt
18:03:24 <Hiato> heh, and some german
18:03:37 <oklopol> it's not pronounced the same, i failed :)
18:03:44 <oklopol> "yes" is "kyllä"
18:03:50 <Hiato> pronounced?
18:03:52 <oerjan> (i.e. ei means "not" in norwegian, although it's a bit rare)
18:04:02 <Hiato> wicked
18:04:19 <oklopol> Hiato: i'm not sure how to type how it's pronounced in finnish in english...
18:04:31 <Hiato> sure, no problem
18:04:41 <oklopol> "ej" in swedish.
18:05:06 <Hiato> wow
18:05:07 <Hiato> well
18:05:18 <Hiato> I won't remmeber half of these, but cool nonetheless
18:05:25 <Hiato> *remember
18:05:40 <oklopol> "kule" pronounced a bit like "dune" and then "la" as in the beginning of "lag"
18:05:50 <oklopol> kule la
18:05:59 <oklopol> very bad explanation :)
18:06:20 <Hiato> I think I get it though :)
18:07:06 <oklopol> you can't really explain the exact pronunciation like that, since everything is pronounced a bit differently
18:07:10 <oklopol> but it's close
18:07:22 <Hiato> cool, thanks nonetheless
18:07:24 <Hiato> anywhodel
18:07:25 <Hiato> brb
18:07:27 <Hiato> supper
18:07:35 <Hiato> well, not right back but hey
18:18:44 <ehird`> 0x20FF33
18:19:08 <oerjan> 2162483
18:28:34 <ehird`> no, toffee
18:28:37 <ehird`> 0x20FF33
18:30:20 <Hiato> back
18:35:44 -!- calamari has joined.
18:38:26 <pikhq> oklopol: I've done a small amount of things in Brainfuck, yes.
18:38:27 <pikhq> ;)
18:40:14 <oklopol> you yourself have said dbc is the guru, i think. this is why i had no trouble putting him above you in the brainfuck-capability meter i have in my head
18:40:36 <oklopol> i used to be pretty good myself..
18:40:39 <oklopol> i think
18:40:55 <oklopol> a million years ago, when i was able to program in other languages than python.-
18:41:46 <Hiato> I think I caught Eso-fever
18:41:49 <Hiato> ...
18:41:52 <Hiato> :(
18:42:10 <Hiato> I already want to make a new language, and I haven't even named the current one :(
18:42:15 <oklopol> :P
18:44:33 <Hiato> Doctor, is it curable?
18:55:23 <pikhq> No.
18:55:33 <pikhq> However, with longterm treatment, it can be managed.
18:55:45 <pikhq> (side effects include severe geekiness_
18:55:46 <pikhq> )
18:58:27 <Hiato> :D
18:58:33 <Hiato> er.. I mean :(
19:00:12 <Hiato> Alright, I need some _community_ (winces) suggestions for a name for my esolang so that I can write an interpreter and not feel guilty about thinking about my next one
19:00:26 <Hiato> its the funky obfuscated one
19:00:56 <Hiato> where helloworld is : {{>>~~~~{-<}~~~~~~~~~{-<-<}<<}</(<<<){[<]}:>:{>>{~~~~~~~~{<}~{>}}<<}\ ~>{{~{v}}>>>v{~}^<<<}/(<<<){[<<]}:>:{>>{~~~~~~~~{<<}~{>>}}<<}\ ~{>>{vvvvvvvv~~~~~~~~~~~~~~~}<<}~{>>{vvvv~~~~~~~~~~~~~}<<}~ {>>{^^^^^^^^^^~}<<}~{>>{v~~~~~~~{{<<}~}v{~}vvvvvvv{~{>>}}^^^^^^~~~ {{<<}~}vvvv{~{>>}}v~~~}<<}~<{{^^^}}~{>>{vvvvvv~{{<<}~{>>}}^^^^^^^~~~~~~~~~~~{{<<}~{v>}}^^^^^^}}/{{()}}{[<<<<]}:>:{{~v}}\}
19:01:20 <Hiato> and outputting T using Fibonacci is: {{>>}~~~~~~~~~~~{{-<~}<<} /{{(<){[<<]}}}:>:~{>>{<<}}~{<<{>>~<<}>>}~{<<{>>}}\{>>v}~{^}~~~~~{<}~ {<{~}v>}~}
19:02:21 * Hiato wonders if ever anyone will respond, appropriately
19:04:04 <pikhq> Hmm. . .
19:06:33 <pikhq> Phlegethon.
19:06:45 <Hiato> Nice name, does it mean anything?
19:07:11 <pikhq> It's the outer ring of the 7th level of hell in /The Divine Comedy/.
19:07:24 <Hiato> aha
19:07:24 <pikhq> The naming, obviously, inspired by Malbolge.
19:07:33 <Hiato> yes, I see :)
19:07:49 <Hiato> though this is actually _possible_ to programme in, well just
19:08:07 <Hiato> hrmm
19:08:09 <Hiato> well
19:08:19 <Hiato> in the absence of any other suggestions
19:08:22 <Hiato> I will say
19:08:28 <Hiato> I Like :)
19:08:28 <pikhq> The 7th level of hell is reserved for those violent against people and property.
19:08:34 <Hiato> and it will now be processed
19:08:38 <pikhq> Which you will be after coding in that. :p
19:08:49 <Hiato> lol :P
19:08:51 <Hiato> Nice
19:09:12 <Hiato> (Even though in my religion, there is no hell, but hey ;) )
19:09:23 <Hiato> Plegethon
19:09:29 <Hiato> it has a nice ring to it
19:10:00 * Hiato contemplates naming it Plegethon 2, to suggest some kind of advancement
19:13:01 <Hiato> Perhaps though
19:13:12 <Hiato> something less...er for the lack of a better word, evil
19:14:07 <Hiato> like Fluffy Bunny Esolang :P
19:19:11 <pikhq> Generic evil: Inferno.
19:21:04 <Hiato> I like
19:21:16 <Hiato> I dub the language Inferno
19:21:32 <Hiato> for no apparent reason too ;)
19:33:29 -!- oerjan has quit ("Coffee").
19:48:10 <ehird`> exists, hiato
19:48:41 <Hiato> inferno exists? or call it exists. I'm confused...
19:48:58 <ehird`> a language named that exists
19:49:02 <Hiato> damn
19:49:04 <ehird`> well an os named that with a language called limbo
19:49:07 <ehird`> but yeah :P
19:49:11 <Hiato> ok, undo the dub process
19:49:26 <Hiato> oh yeah, I think I even heard of it
19:49:27 <Hiato> :P
19:49:40 <ehird`> plan9-related
19:49:43 <Hiato> thanks ehird1
19:49:46 <Hiato> yeah
19:49:50 <Hiato> that's right
19:49:52 <Hiato> bell labs
19:49:52 <ehird`> ehird`
19:49:53 <ehird`> :P
19:49:58 <Hiato> woops
19:50:00 <Hiato> typos
19:50:01 <ehird`> http://en.wikipedia.org/wiki/Limbo_programming_language quite clean code actually
19:50:01 <Hiato> sorry
19:50:02 <Hiato> ;)
19:50:49 <Hiato> ok, so any suggestion s for a new name?
20:08:37 <Hiato> what about Citizen II
20:08:38 <Hiato> ?
20:09:40 <ehird`> nftlLEMONtafn
20:09:51 <ehird`> name for the language LEMON that's all for now
20:10:04 <Hiato> sorry, I dpnt speak fruit
20:10:08 <Hiato> *don't
20:10:49 <Hiato> ehird` : would you so kindly explain what that was about, feel free to decline ;)
20:10:57 <ehird`> that's the name
20:11:02 <Hiato> for what?
20:11:03 <ehird`> nftlLEMONtafn is what you should call your language
20:11:09 <Hiato> oh I see
20:11:14 <ehird`> standing for: "name of the languge LEMON that's all for now"
20:11:55 <Hiato> am.. thank you for your.. err.. generous contribution, we value all of our customers equally, please hold
20:11:58 <Hiato> ...
20:11:59 <Hiato> ...
20:12:00 <Hiato> ...
20:12:01 <Hiato> ..
20:12:06 <Hiato> Ok, I see
20:12:22 <Hiato> I felt inspired too :P
20:14:54 <ehird`> come on, esoteric names for esoteric languages
20:15:17 <Hiato> well, I think the LEMON one was a bit too far away from anywhere, really
20:15:22 <Hiato> I don't mind changing the name
20:15:29 <Hiato> but not to that ;)
20:16:10 <Hiato> actually, I quite like just notlLEMON
20:16:27 <Hiato> as in name of the language (is) LEMON
20:16:31 <Hiato> that's wicked
20:16:33 <Hiato> :D
20:17:17 <oklopol> give it a mutable name global between each interpreter for it
20:17:21 <ehird`> nftlLEMONtafn is good though
20:17:25 <oklopol> and add a few command to change the name
20:17:29 <oklopol> *commands
20:18:12 <Hiato> not sure I'm with you oklopol... ehird` the stuff after lemon looks kind of stupid though
20:18:41 <ehird`> cool though
20:18:50 <Hiato> heh
20:18:55 <Hiato> or rather meh
20:19:42 <Hiato> rather how's about just LEMON
20:20:33 <oklopol> Hiato: not with me as in don't agree that'd be awesome, or didn't understand what i meant?
20:20:45 <Hiato> didn't understand
20:20:48 <Hiato> (a word)
20:20:48 <oklopol> oh
20:20:56 <oklopol> what word?
20:20:58 <oklopol> mutable?
20:21:13 <Hiato> well, really the whole thing, but yes, mutable
20:21:13 <oklopol> if something is mutable that means you can change it.
20:21:17 <Hiato> aha
20:21:32 <Hiato> so what is the interchangeable global?
20:21:37 <Hiato> and what should it do
20:21:49 <Hiato> interchangeable=mutable (methinks)
20:22:45 <Hiato> nevermind
20:23:09 <Hiato> what do you mean " give it a mutable name global between each interpreter for it"
20:26:59 <oklopol> hmm
20:27:10 <oklopol> :)
20:27:34 <oklopol> basically, that the name of the language could be changed by a primitive in your language.
20:27:34 <Hiato> Hah, im not even so sure you knew what you meant :P
20:27:40 <Hiato> ooh
20:27:43 <Hiato> nice
20:27:49 <Hiato> I see
20:27:53 <oklopol> no, it's not nice, but it's an idea :)
20:28:11 <Hiato> no, it is nice, because (I say so :P ) I like it :)
20:28:30 <oklopol> haha, well, the problem is it's a bit hard to implement :D
20:28:41 <Hiato> Oh yeah, you got that right :D
20:28:43 <oklopol> it could change the name on the wiki page xD
20:28:48 <Hiato> aweomse
20:28:54 <Hiato> but I would need PSOX
20:28:58 <oklopol> well, actually would have to move the page to another location :D
20:29:04 * Hiato waits for SGEO to storm in...
20:29:10 <Hiato> true
20:29:22 <oklopol> should a language with the new name already exist, it would just give a runtime error.
20:29:24 <Hiato> ok log in->create a page with the template
20:29:30 <Hiato> and then update the name part
20:29:31 <Hiato> :D
20:29:37 <Hiato> heh
20:29:44 <oklopol> xD
20:29:44 <Hiato> Runtime error... amm 404 :P
20:30:04 <oklopol> and for starters you can name it The Language That Changes Its Own Name
20:30:17 <Hiato> yeah
20:30:23 <Hiato> but then voxelperfect would die
20:30:33 <Hiato> because everyone would execute progs
20:30:37 <Hiato> just for fun
20:30:44 <oklopol> :D
20:30:47 <Hiato> to see if "it lives up to its name"
20:31:32 <Hiato> currently though, it's LEMON
20:31:38 <Hiato> codename, that is
20:31:43 <Hiato> until further notice ;)
20:32:23 <oklopol> :P
20:39:55 <ehird`> no
20:39:56 <ehird`> no hiato.
20:40:02 <ehird`> lemon is a parser generator, qutie common
20:40:03 <ehird`> used by sqlite
20:40:10 <ehird`> and its accompaning input language
20:40:25 <ehird`> nftlLEMONtafn isn't taken!
20:40:41 <oklopol> i'd prefer nftlltafn
20:40:47 <oklopol> for nftlLEMONtafn
20:43:29 -!- pikhq has quit (Read error: 110 (Connection timed out)).
20:47:34 <ehird`> no
20:47:37 <ehird`> LEMON can stand for:
20:47:55 <ehird`> Language Eminating Monstrous Ontologies: nftlLEMONtafn
20:47:59 <ehird`> To recap:
20:48:12 <ehird`> nftlLEMONtafn = name of the language LEMON that's all for now
20:48:21 <ehird`> LEMON = Language Eminating Monstrous Ontologies: nftlLEMONtafn
20:48:27 <ehird`> it's like HURD
20:48:31 <ehird`> but cooler
20:49:44 <Hiato> alright
20:49:48 <Hiato> you have convinced me
20:49:53 <Hiato> it will be called
20:49:58 <Hiato> nftlLEMONtafn
20:50:03 <Hiato> rather
20:50:14 <Hiato> notlLEMONtafn
20:50:32 <Hiato> o=of /= f
20:50:35 -!- Tritonio_ has joined.
20:52:15 <Hiato> but
20:52:18 <Hiato> that is not final
20:53:05 <Hiato> Ontology is a study of conceptions of reality and the nature of being.
20:53:07 <Hiato> interetsing
20:55:42 <Hiato> though, if LEMON is taken, perhaps it would be better not to have it form part of the name
20:56:15 <Tritonio_> hello everyone and happy new year!
20:56:37 <Hiato> Hello Tritonio
20:56:46 <Hiato> and happy new year to you to
20:56:50 <oklopol> Tritonio_: happy easter!
20:57:02 <Hiato> (even though today is the 6th for me :P )
20:57:11 <Tritonio_> happy new easter!
20:58:33 <oklopol> Hiato: you see Tritonio_ lives a few trips around the world away from you
20:58:41 <oklopol> he's just celebrating new years'
20:58:49 <Hiato> :D heh
20:59:14 <Hiato> No way, but hehe anyway
20:59:28 -!- pikhq has joined.
21:03:40 <Hiato> what about this for the name:
21:03:41 <Hiato> TEPLTIAOAUHAUA (The Esoteric Programming Language That Is Absurdly Obfuscated And Unfortunately Has An Unpronouncable Acronym)
21:04:02 <ehird`> unpronouncable acronym rips on INTERCAL (Language With No Pronouncable Acronym)
21:04:09 <Hiato> meh
21:04:16 <Hiato> even though I just though of it
21:04:24 <Hiato> ok, well, Ill try again
21:05:03 <Hiato> actually (believe it or not) I'm glad ehird` is looking out for these things, otherwise this language would be cheap. Thanks :)
21:05:14 <ehird`> :D
21:05:36 <Hiato> Should I go the funky Acronym route?
21:06:17 <Hiato> BLAH (This is not an acronym for the language)
21:06:32 <Hiato> or BLAH (Not An Acronym For the Language)
21:07:36 <Hiato> BLAH (Blatently Lazy Acronym, Hey?)
21:10:35 <ehird`> call it: ACRONYM, Recursive (Languge Without Self-Reference In The Name)
21:13:30 <Hiato> :D
21:13:53 <Hiato> NCTOAN (Nope, Couldn't Think Of A Name)
21:13:53 <Hiato> NAMELESS ()
21:14:09 <Hiato> or N/A
21:14:22 -!- Tritonio_ has quit (Read error: 104 (Connection reset by peer)).
21:14:42 <Hiato> N/A (Not Applicable and Non-Acronym)
21:15:37 <Hiato> I like N/A
21:15:44 <Hiato> and ACRONYM
21:18:06 <Hiato> well done ehird`
21:18:13 <ehird`> Nononono
21:18:14 <Hiato> ACRONYM wins! :D
21:18:15 <ehird`> it's
21:18:18 <ehird`> ACRONYM, Recursive
21:18:19 <ehird`> :(
21:18:24 <ehird`> aww ok then :P
21:18:38 <Hiato> :)
21:18:55 <Hiato> congratulations and thank you :D :D
21:19:03 <Hiato> I like ACRONYM very much :D
21:19:55 <Hiato> thanks ehird`
21:19:56 <Hiato> :D
21:19:59 <timotiis> "You have a doomsday device? You have a doomsday device and you didn't tell me?"
21:20:02 <timotiis> "Frank! Frank, Frank. Boss. Of course I have a doomsday device. What do I look like, a sane person?"
21:20:14 <ehird`> timotiis: sam hughes!!!
21:20:44 <timotiis> ehird`: congratulations
21:20:53 <ehird`> ,o/ \o, \o/
21:22:18 <ehird`> i found him on freenode once
21:22:24 <ehird`> he was away through
21:22:29 <ehird`> i think his nick was rashakil or similar
21:24:02 <timotiis> cool
21:32:07 -!- jix has quit ("CommandQ").
21:33:06 -!- Jontte has quit ("Konversation terminated!").
21:41:03 -!- Tritonio_ has joined.
21:41:14 -!- Tritonio_ has quit (Read error: 104 (Connection reset by peer)).
21:48:56 -!- calamari has quit ("Leaving").
21:55:23 <Hiato> I like the angle of incidence 1l, why was it abandoned
21:55:37 <Hiato> don't make me take it onto myself to complete.....
21:55:43 <Hiato> *upon
22:10:31 <Hiato> Well, I finished th spec for 1L_AOI
22:12:21 <Hiato> http://rafb.net/p/VC26oA18.txt
22:15:23 <Hiato> Does anybody know Gregor Richards' email address
22:15:30 <Hiato> I want to contact him
22:16:23 <pikhq> No idea. But he's in the channel.
22:16:32 <pikhq> GregorR: You paying attention to IRC today? :p
22:16:33 <Hiato> GregoR
22:16:37 <Hiato> oh yeah, huh
22:16:46 <Hiato> well GregorR
22:17:03 <Hiato> I would like you to check out the brief 1L_AOI spec I wrote
22:17:05 <Hiato> and perhaps
22:17:23 <Hiato> give it your blessing and continue the wonderful project that is the 1L language
22:17:59 <Hiato> GregorR
22:18:00 <Hiato> ?
22:18:04 <Hiato> oh well
22:22:49 -!- Aardwolf has joined.
22:28:05 <Hiato> woops
22:28:11 <Hiato> made a mistake in the spec
22:29:06 <Hiato> it would have been impossible to do anything with
22:29:13 <Hiato> because of a catch 22
22:30:08 <Hiato> you need to be moving down to increase something, but in order to move down, you need to increase something, and the original direction was right
22:30:16 <Hiato> thus it would have been impossible :P
22:30:18 <Hiato> fixed now though
22:32:27 <Hiato> ok GregorR and anyone else interested, here is the corrected spec for my idea of 1L_AOI (Angle Of Incidence)
22:32:28 <Hiato> http://rafb.net/p/VMGMTC23.txt
22:33:50 <Hiato> cheers
22:33:52 -!- Hiato has quit ("Leaving.").
22:37:04 -!- oerjan has joined.
22:41:41 <slereah_> I should add the i combinator of iota to Lazy Bird.
22:41:48 <slereah_> As an archeopterix or something.
22:42:02 <oerjan> ooh
22:44:13 <slereah_> Is the i combinator thusly? ``s``si`ks`kk
22:46:42 <slereah_> Hm. I'm trying to find a simple lambda form, but I'm not sure there's one beside the definition.
22:47:06 <oerjan> i = .x.xsk
22:47:15 <oerjan> er, \x.xsk
22:47:34 <slereah_> Yes, but well, I need a form for the string rewriting.
22:48:10 <oerjan> -> ^x``xsk -> ``s``si`ks`kk
22:48:15 <oerjan> which is what you had
22:48:32 <slereah_> Unfortunately, it seems that ``````...````iabcd...xyz = ````...````askbcdef....xyz
22:49:16 <slereah_> I could rewrite all occurence of the combinator as ``s``si`ks`kk, but well, I'd rather find a quicker method
22:49:38 <oerjan> oh.
22:49:59 <oerjan> well the obvious thing is to rewrite `ix as ``xsk
22:50:34 <slereah_> Well, there's that.
22:50:59 <slereah_> Good enough I guess.
22:54:25 <slereah_> Although...
22:54:47 <slereah_> Since it's supposed to be unique, maybe I should switch s and k to their translation.
22:55:57 <slereah_> ``x`i`i`i`ii`i`i`ii
22:56:36 <oerjan> problem is, you then need to add rules to recognize the translations.
22:57:13 <slereah_> Well, the i combinator will be added to the program itself.
22:58:13 <oerjan> i mean, i = ^x``x`i`i`i`ii`i`i`ii is not enough to define it
22:58:19 <slereah_> The problem is, I'm not sure how it would play out since ``x`i`i`i`ii`i`i`ii uses the combinator itself
22:58:22 <slereah_> Yes, that.
22:58:59 <slereah_> Ah, iota defines it just as a lambda expression.
22:59:17 <slereah_> Well, I'll just do the ``xsk
23:01:39 <slereah_> On another matter, I defined _ as replacing it with the ASCII input with s="```s`k`s``s`ksk``s``s`ks``s`k`s`ks``s``s`ks``s`k`s`ks``s`k`s`kkk`kk`k`ki"+s
23:01:48 <slereah_> And s=`ki
23:02:00 <slereah_> But it is quite slow.
23:02:19 <slereah_> I think I'll have to finish the table, but so far, I didn't even reached A.
23:02:23 -!- timotiis has quit ("leaving").
23:05:55 <oerjan> table?
23:07:27 <slereah_> Thusly : http://membres.lycos.fr/bewulf/Russell/Lazy%20Bird/Church%203.txt
23:08:48 <oerjan> i think 23 is too long, surely you can double and add 1 to the 11 version faster than that
23:10:20 <oerjan> your + is a bit deceptive i think
23:10:54 <oerjan> it assumes passing m and n as arguments, but for constructing numbers you would just put them in directly
23:11:48 <slereah_> Well, that's how I use my addition.
23:11:50 <oerjan> so ``+mn = ^f^x``mf``nfx = ^f``s`k`mf``s`k`nfi
23:12:03 <slereah_> In the lambda form
23:12:07 <slereah_> Easier to enter.
23:12:12 <slereah_> Just ``+ab
23:12:23 <oerjan> except then it is useless for constructing short numbers
23:12:31 <slereah_> succ *2 11 gives me ``s``s`ksk``s``s`ks``s`k`s`k``s`k``s``s`kski``sb``s``s`ks``s`k`s`k``s`k``sbi``sb``s``s`ks``s`k`s`k``s`k``sbi``sbik`kik`kik`ki
23:12:43 <slereah_> I use the Lazy K table to construct them.
23:13:16 <oerjan> ic
23:13:44 <slereah_> After shortening the 23, I get ``sb``s``s`ks``s`k`s`k``s`k``sbi``sb``s``s`ks``s`k`s`k``s`k``sbi``sb``s``s`ks``s`k`s`k``s`k``sbi``sbik`kik`kik`ki
23:13:50 <slereah_> Which is indeed shorter.
23:14:44 <slereah_> And ``23.xi prints the right number of x's.
23:15:22 <ehird`> oklopol: oklotalk!
23:15:32 <slereah_> Or simplify to `a`a`a`a`a`a`a`a`a`a`a`a`a`a`a`a`a`a`a`a`a`a`ax with some dummy combinators.
23:18:49 <oerjan> oh right
23:19:15 <oerjan> the most obvious way to make this efficient would be to embed decimal notation...
23:20:22 <oerjan> it would even be possible to define #,0-9 such that ``#102 = church numeral 102 i think
23:20:33 <oerjan> although your 0 is already taken
23:21:11 <oerjan> # = church numeral 0, digit d = multiply by 10, add d
23:21:20 <oerjan> oh wait nonsense
23:21:46 <oerjan> it would have to be written ``201# for that
23:21:49 <slereah_> My 0 is already 0.
23:21:57 <slereah_> It's `ki.
23:22:06 <oerjan> thought so
23:22:13 <oerjan> = `sk
23:22:20 <slereah_> Also that.
23:22:54 <slereah_> (I made a Lazy Bird -> SK translator, in case I want it less readable)
23:36:03 -!- calamari has joined.
23:42:49 <ehird`> what's basically the biggest bf program out there?
23:42:54 <ehird`> it's 2mb lostkng.b right?
23:44:50 <slereah_> Probably.
23:55:06 -!- slereah_ has changed nick to Slereah.
23:56:14 <Slereah> Is a list of the form ``s``si`k[as many as size f the list - 1]``s``si`k[1]`k[2]`k[3][...]`k[n]?
23:56:17 <ehird`> there's an odd shortage of bf->machine code translators
23:56:28 <ehird`> Slereah: i know the lambdacalculus for it
23:56:36 <ehird`> CONS := \x y z. z x y
23:56:44 <ehird`> TRUE := \x y. x
23:56:47 <ehird`> FALSE := \x y. y
23:56:54 <ehird`> CAR := \x. x TRUE
23:56:59 <ehird`> CDR := \x. x FALSE
23:57:05 <ehird`> and have NIL := FALSE or similar
23:57:11 <Slereah> That's what I used.
23:57:17 <ehird`> maybe have NIL := CONS NIL NIL, with the y-combinator
23:57:17 <ehird`> :D
23:57:21 <Slereah> What's CAR-CDR-NIL?
23:58:05 <Slereah> I suppose CAR-CDR are the take first-second element
2008-01-07
00:02:57 <ehird`> CAR is FIRST
00:02:59 <ehird`> CDR is REST
00:03:03 <ehird`> NIL is terminator
00:03:12 <Slereah> Terminator?
00:03:17 <ehird`> from lisp. the list (a b c) is (a . (b . (c . NIL)))
00:03:23 <ehird`> (car that-list) -> a
00:03:28 <ehird`> (cdr that-list) -> (b . (c . NIL))
00:03:46 <ehird`> where (x . y) is CONS x y of course.
00:03:50 <Slereah> Oh, end of the list.
00:04:42 <ehird`> yes
00:04:54 <ehird`> when talking about cons-pair lists, it's wise to use lisp terminology
00:04:55 <ehird`> :-)
00:05:17 <Slereah> Yeth.
00:06:20 <ehird`> i don't know sk very well
00:06:31 <ehird`> what's S = again?
00:07:02 <oerjan> \xyz -> xz(yz)
00:07:03 <Slereah> S = ^abc.(ac)(bc)
00:07:13 <Slereah> Yes.
00:07:21 <ehird`> that's pretty close to CONS
00:07:23 <ehird`> i guess
00:07:33 <Slereah> NIL is ^x.True sez Wikipedia
00:07:40 <ehird`> naww, that sounds wrong
00:07:53 <oerjan> True or False is an arbitrary choice
00:07:54 <ehird`> i'd make NIL: "cons NIL NIL"
00:07:55 <Slereah> CONS is ``s``s`ks``s`k`s`ks``s`k`s`k`si``s`k`s`kkk`kk
00:07:58 <ehird`> just because that's cool :-)
00:08:05 <oerjan> ehird`: that's not going to work
00:08:10 <ehird`> why not, oerjan
00:08:13 <Slereah> TRUE is the combinator k.
00:08:16 <oerjan> it means you cannot have NIL as an element of the list
00:08:30 <ehird`> yes, it does
00:08:38 <oerjan> also, you cannot actually _test_ when you have reached the end
00:08:38 <ehird`> (NIL . NIL) is a list with just NIL as the element
00:08:46 <oerjan> ok that's the real reason
00:08:47 <ehird`> hmm, that is a good point
00:08:55 <ehird`> NIL := \x. FALSE
00:08:57 <ehird`> seems the best choice to me
00:09:07 <ehird`> since, i mean, there's nothing "YES", "TRUE" about the end of the list
00:09:08 <ehird`> :-)
00:09:25 <Slereah> Well, it would just be `kk
00:09:35 <Slereah> That's not very yessy.
00:10:04 <ehird`> what's FALSE?
00:10:07 <ehird`> `SK, no?
00:10:10 <ehird`> no, wait
00:10:11 <ehird`> well
00:10:21 <Slereah> It is actually.
00:10:30 <Slereah> But us little people prefer `KI
00:10:59 <ehird`> pff, in my day we didn't have I
00:11:05 <ehird`> we thought ``SKK was perfectly suitable
00:11:16 <Slereah> *ii
00:12:04 <ehird`> \x. x
00:16:56 <ehird`> i should make TRADLISP
00:17:00 <ehird`> tried to be as much like old lisps as possible!
00:17:06 <ehird`> like LISP 1.0 with extensions
00:17:41 <ehird`> :P
00:17:46 <ehird`> that would be pretty esoteric, nowadays
00:18:08 <ehird`> hm, anyone know how LISP 1.0 or 1.5 did pretty-printing of e.g. functions?
00:18:51 <oerjan> what was that esolang that was an alternative history BASIC again...
00:20:12 <ehird`> beats me
00:20:24 <ehird`> but i could write all symbols in uppercase
00:20:27 <ehird`> :D
00:20:31 <ehird`> and use odd indentation styles
00:21:07 <ehird`> I could write it in itself, and make it compile to machine code on the fly, for extra silliness
00:24:08 <Slereah> "If the nazis won WWII, what would BASIC look like?"
00:24:30 <ehird`> 10 HEIL HITLER
00:24:37 <ehird`> 20 GAS 10
00:24:46 <ehird`> ok that was lame :|
00:25:10 <Slereah> GOTO AUSCHWITZ
00:25:53 <ehird`> yes!
00:26:18 <ehird`> GOTO AUSCHWITZ
00:26:23 <ehird`> AUSCHWITZ:
00:26:25 <ehird`> REM RETURN
00:32:09 <oerjan> ah, http://esoteric.voxelperfect.net/wiki/VENIAL was it
00:32:53 <oerjan> i think the one you just described could be called GODWIN :)
00:36:26 <ehird`> behold! RETROLISP: http://rafb.net/p/8qu6qQ34.txt
00:36:37 <ehird`> things to note: ; is the only comment seperator that coders use.
00:36:40 <ehird`> and no space after it either!
00:36:55 <ehird`> symbols are ALWAYS in uppercase, just don't even question it (sure, it might work in any case, but just..DON'T)
00:37:02 <ehird`> also: symbols are bad, mainly.
00:37:07 <ehird`> the repl prompt is a single *
00:37:32 <oerjan> er, MULT vs. TIMES?
00:37:40 <ehird`> err, yeah
00:37:41 <ehird`> pick one
00:37:42 <ehird`> :P
00:37:47 <ehird`> old lisp used TIMES
00:37:48 <ehird`> so i guess that
00:37:57 <oerjan> and PRINT is not actually used
00:38:03 <ehird`> yeah, that's true
00:38:06 <ehird`> it was when i wrote that comment
00:38:27 <ehird`> did old lisp have strings?
00:38:39 <ehird`> didn't it just have symbols with some weird way to have special chars in it
00:38:42 <ehird`> some sort of special form
00:39:02 <ehird`> (did it even have LIST?)
00:40:22 <ehird`> :P
00:42:11 <oerjan> EXPLODE? or was that prolog
00:54:21 <ehird`> probably lisp
00:54:27 <ehird`> hm
00:54:37 <ehird`> retrolisp is crap, i want an alternate history lisp
00:55:57 <ehird`> oerjan: i wonder what's the most low-level fundamental change i can make while still being able to call it 'althistory lisp'
00:57:18 <oerjan> don't use parentheses...
00:57:33 <ehird`> then it's not lisp
00:57:46 <oerjan> ah but use something equivalent
00:58:27 <oerjan> although that might merely turn it into LOGO
00:58:45 <ehird`> nah
00:58:47 <ehird`> i think parens have to say
00:58:50 <ehird`> *stay
00:58:56 <ehird`> (A B C) should be valid
00:59:44 <oerjan> then... don't use cons cells
01:00:55 <ehird`> what then
01:00:57 <ehird`> not a vector
01:01:00 <ehird`> that's not elegant :P
01:01:09 <ehird`> since lisp was originally 100% theoretic
01:01:52 <oerjan> hmph you're being difficult :D
01:02:00 <ehird`> let's think a little less fundamental ;P
01:02:13 -!- Aardwolf has quit ("Leaving").
01:02:18 <oerjan> well you could use german...
01:02:40 <ehird`> hahaha
01:02:44 <ehird`> :)
01:02:57 <oerjan> (FUNKZION FAK (N) IST
01:03:22 <oerjan> or something like that
01:03:36 <oerjan> somehow i think i spelled Funkzion wrong
01:03:51 <ehird`> heh, naw
01:03:58 <ehird`> however
01:04:01 <ehird`> instead of:
01:04:02 <ehird`> ; blah
01:04:06 <ehird`> i'm going to have a special form like
01:04:12 <ehird`> (DROP ...)
01:04:15 <ehird`> which is ignored
01:04:22 <oklopol> oerjan: funktion i think
01:04:22 <ehird`> literally ignored
01:04:23 <ehird`> not a NOP
01:04:28 <ehird`> but:
01:04:36 <oklopol> "tion" is just pronounced "tzion"
01:04:43 <ehird`> literally ignored
01:04:47 <oerjan> that's semantically weird...
01:04:54 <ehird`> oerjan: why :D
01:04:56 <oklopol> as it is in norwegian (swedish-based guess, because i know you love those :))
01:04:58 <ehird`> (so is most old lisp)
01:05:05 <ehird`> ((a b c)) was '(a b c)
01:05:06 <oerjan> "funksjon"
01:05:07 <ehird`> in lisp 1.5
01:05:20 <oklopol> oerjan: i meant the pronunciation
01:05:47 <oerjan> no, no t sound in it
01:05:57 <oerjan> f-u-nk-sj-o-n
01:06:13 <oklopol> hmm, what's "induction" or "penetration"?
01:06:18 <oklopol> sjon there too?
01:06:29 <oerjan> always -sjon
01:06:33 <oklopol> oh
01:06:41 * oklopol is surprised
01:06:56 <oklopol> <weird emoticon here!>
01:07:09 <oerjan> latin/french words are heavily regularized
01:07:21 <oklopol> i'm always surprised i don't know something i had no way to know anyway.
01:07:29 <ehird`> oerjan: hm, drop is kinda silly i agree :P
01:08:29 <oklopol> just read the last 5 years of maddox, i have to say that man knows his shit
01:14:18 -!- slereah_ has joined.
01:26:22 <ehird`> who wants to tell me the simplest language with a trivial self-interpreter that isn't the null language and doesn't have a blatant 'eval'
01:26:23 <ehird`> :P
01:27:34 <oerjan> if it's "trivial" doesn't that amount to having eval...
01:37:58 <oklopol> perhaps he doesn't like the word.
01:38:08 <oklopol> selfify()
01:38:40 <oklopol> selfarize
01:38:46 <oklopol> selfisticate
01:38:51 <ehird`> oerjan: well, less trivial than eval()
01:38:53 <ehird`> :|
01:39:05 <ehird`> maybe i should say: simpl
01:39:06 <ehird`> e
01:40:11 <oerjan> well lisp has a simple self-interpreter, which just happens to be included under the name "eval"
01:40:19 <ehird`> :)
01:40:25 <ehird`> lisp's self interpreter isn't that simple.
01:40:30 <oklopol> add the p combinator to unlambda, a combinator that parses an input string as an unlambda program
01:40:40 <oklopol> *function
01:41:24 <oklopol> input string would of course be represented as a list of peano numbers or smth, but anywayz
01:41:26 <oklopol> asdfdsaf
01:42:57 <ehird`> :|
01:43:00 <ehird`> but that's basically eval.
01:44:05 -!- Slereah has quit (Read error: 110 (Connection timed out)).
01:45:31 <oklopol> ehird`: the parser is done in an eval fashion there, yes
01:46:27 -!- sebbu has quit ("@+").
02:18:51 -!- ehird` has changed nick to ehirdsleep.
02:19:08 -!- ehirdsleep has quit.
02:20:32 -!- ehirdsleep has joined.
04:19:44 -!- lifthrasiir has joined.
04:35:56 -!- slereah_ has changed nick to Slereah.
04:36:12 * Slereah tries to make a factorial function.
04:36:18 <Slereah> But it doesn't seem to ever stop!
04:46:07 -!- oerjan has quit (Remote closed the connection).
04:52:14 -!- oerjan has joined.
05:16:59 <Slereah> Hm. For a factorial using recursion, would I have to get out the result, the step, and print it if it's the last step and then deleting the recursion?
05:17:06 <Slereah> With some sort of v combinator
05:17:56 -!- oerjan has quit ("Lost terminal").
05:19:38 <bsmntbombdood> huh?
05:21:17 <Slereah> Well, so far my attempts at a factorial function never stopped.
05:47:00 -!- calamari has quit ("Leaving").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:09:34 -!- sebbu has joined.
09:58:09 -!- sebbu2 has joined.
10:05:25 -!- oerjan has joined.
10:07:56 <Slereah> One of the Turing paper uses a delta symbol in lambda calculus.
10:09:58 <Slereah> With { {delta} M } (M) = ^f[^x[{f}({f}(x))]] if M's a combinator and { {delta} M } (N) = ^f[^x[{f}(x)]] if N and M's are and N isn't M.
10:10:09 <Slereah> Anyone got any idea on the deeper meaning of it?
10:10:48 <Slereah> Since mister T said "We have not as yet assigned any meanings to our formulaes, and we do not intend to do so in general"
10:12:43 <oerjan> right...
10:13:02 <oerjan> it's an equality testing predicate
10:13:06 -!- sebbu has quit (Read error: 110 (Connection timed out)).
10:13:20 <oerjan> a hypothetical one
10:13:33 <Slereah> Oh. It's impossible to do one with only lambdas?
10:13:43 <oerjan> i assume he later proves it's inconsistent that it exists
10:14:30 <Slereah> When I say "different", I don't mean that you can convert one into the other.
10:14:49 <Slereah> Well, it is that, but much restricted. Only to alpha conversion.
10:14:55 <oerjan> i see.
10:15:45 <Slereah> "If N and M are in normal form, are not transformable into one another by repeated application of (i), and have no free variables"
10:15:50 <oerjan> ok maybe delta M itself is not considered a combinator. ah, it's the usual delta function
10:16:17 -!- sebbu2 has changed nick to sebbu.
10:16:18 <oerjan> except with result defined as combinators instead of numbers
10:16:36 <Slereah> Well, (dM)N can be replaced by the combinator 1 or 2.
10:16:38 <oerjan> well, church numerals
10:16:52 <Slereah> What's the delta function?
10:17:04 <oerjan> usually delta_x(y) = 0 if x /= y, 1 otherwise
10:17:05 <Slereah> Or which one, more accurately.
10:17:22 <Slereah> Ah, Kronecker delta.
10:20:34 -!- Hiato has joined.
10:20:44 <Hiato> Hello all
10:20:57 <Hiato> GergorR, are you paying attention today?
10:21:03 <Slereah> Hello sir.
10:21:12 <Hiato> Hello Slereah
10:21:29 <Hiato> Where you on last night with the 1l_AOI spec?
10:22:16 <Slereah> Depends if you need logs or my memory.
10:22:26 <Hiato> lol, well your memory
10:22:32 <Hiato> and then you opinion
10:22:40 * oerjan assumes GregorR is still sleeping. also if you want him to notice you better spell his nick correctly.
10:22:46 <Slereah> I wasn't there.
10:22:58 <Hiato> lol, thanks orejan
10:23:13 <Hiato> ok well Slereah, and possible orejan (if he's interested)
10:23:25 <Hiato> you know that the 1l spec is incomplete
10:23:28 <Slereah> [11:22] [GregorR TIME reply]: Mon Jan 7 02:22:57
10:23:32 <Slereah> Prolly sleep.
10:23:36 <Hiato> Yeah
10:24:00 <Hiato> anyway, the 1l Angle of Incidence was such a cool idea
10:24:08 <Hiato> an esolang with 1 symbol!
10:24:19 <Slereah> Describe!
10:24:23 <Hiato> so I couldn't help but complete the spec
10:24:25 <Hiato> http://rafb.net/p/VMGMTC23.txt
10:24:50 <Slereah> The only such idea I had was a lazy Gdel numbering of the program
10:24:52 <Hiato> essentially, it's like befunge where you ave a command pointer moving though the code
10:25:12 <Hiato> oh, :)
10:25:13 <Hiato> anyway
10:25:31 <Hiato> then, depending on whether it passes through or by a + sign
10:25:35 <Hiato> various things happen
10:25:52 <Hiato> if it passes by, it gets deflected if the current cell is non-zero
10:25:52 <Slereah> Are all programs valid?
10:25:56 <Hiato> yes
10:26:05 <Hiato> and anything not a + is a nop and comment
10:26:17 <Hiato> if it passes through a plus
10:26:21 <Hiato> stuff happens
10:26:31 <Hiato> and it is turing complete
10:26:37 <Hiato> because it is essentially BF
10:26:42 <Hiato> but way cooler :)
10:27:09 <Hiato> oh, and execution halts when the CP pases through the top or right hand edge of the code
10:27:13 <Hiato> *passes
10:27:28 <Slereah> Do you have a sample program?
10:27:29 <Hiato> there is no bottom or left edge
10:27:35 <Hiato> unfortunately, not
10:27:40 <Hiato> but I am working on one
10:27:49 <Slereah> I'm having a hard time reading it.
10:27:53 <Hiato> it's just difficult to see the stuff
10:27:55 <Slereah> Well, just use a bunch of +'s!
10:28:01 <Hiato> heh
10:28:09 <Hiato> :)
10:28:15 <Hiato> I want to output the letter A
10:28:22 <Hiato> just like 1l_a
10:28:27 <Hiato> or 1l_105
10:28:36 <Hiato> but, it will be wasy easier in this one
10:28:42 <Hiato> as you can just have a line of stuff
10:28:45 <Hiato> :)
10:28:49 <Hiato> anyway
10:28:52 <Hiato> I have tennis now
10:29:06 <Hiato> but I will be back in ~1hour 30mins
10:29:13 <Slereah> Bye.
10:29:14 <Hiato> and hopefully will show you the prog
10:29:15 <Hiato> :)
10:29:21 -!- Hiato has quit ("Leaving.").
12:22:24 -!- puzzlet has quit (Read error: 104 (Connection reset by peer)).
12:22:28 -!- puzzlet has joined.
13:23:31 -!- Hiato has joined.
13:23:44 <Hiato> I'm back :)
13:24:02 <Slereah> Welcome back
13:24:05 <Hiato> ok here we are http://rafb.net/p/e7f7cE36.txt with an example
13:24:07 <Hiato> thanks :)
13:24:12 <Hiato> it outputs "1"
13:24:14 <Hiato> :)
13:24:22 <Hiato> I was too lazy to do otherwise
13:24:24 <Slereah> Ah, it's 2D!
13:24:31 <Hiato> yip
13:24:35 <Slereah> I'm somehow disappointed!
13:24:42 <Hiato> Am.. Ok...
13:25:00 <Hiato> Do you know what the whole "L" language group is about?
13:25:06 <Slereah> No.
13:25:09 <Hiato> Well
13:25:33 <Hiato> its attempting to implement BF in a funge like manner using minimal commands
13:25:51 <Slereah> 1 is pretty minimal I guess!
13:25:57 <Hiato> Aha :D
13:26:08 <Hiato> This is why I wanted to show GregorR
13:26:10 <Hiato> because 2L
13:26:14 <Slereah> Unless you make some sort of 0 command language.
13:26:19 <Hiato> has 3 commands, and 1l_a/105 has 2
13:26:24 <Hiato> but mine has 1!
13:26:27 <Hiato> Hah
13:26:29 <Slereah> But it's hard to make them Turing complete.
13:26:39 <Hiato> yes, although this one is
13:26:41 <Hiato> :D
13:26:51 <Slereah> I was talking about 0 commands!
13:26:55 <Hiato> it is trivial to convert any given BF programme into 1l_AOI
13:26:57 <Hiato> oh, yes
13:27:03 <Hiato> that would be very difficult :P
13:27:25 <Slereah> 99 has zero instructions, but isn't very TC!
13:27:38 <Hiato> :)
13:27:42 <Hiato> woops, wait
13:27:49 <Hiato> there is an error in the prog
13:27:50 <Hiato> meg
13:27:52 <Hiato> *meh
13:28:01 <Hiato> time to fix
13:28:31 <Hiato> actually, it's a problem with the spec
13:28:33 <Hiato> blah
13:31:23 <Hiato> http://rafb.net/p/wJ5SQL87.txt
13:31:25 <Hiato> ok, fixed
13:31:30 <Hiato> there was another catch 22
13:32:13 <Hiato> in order to get to a specific cell, you would have to turn, but in order to turn, that cell would have to be non-zero, and in order for it to be non-zero, you would have to turn :P
13:32:54 <Slereah> Turn manually!
13:33:03 <Hiato> Haha :)
13:33:18 <Hiato> Ubuntu arrived!
13:33:19 <Hiato> brb
13:33:23 <Hiato> gonna fetch the CD's
13:33:40 <Slereah> Wow, you know Ubuntu himself?
13:33:43 <Slereah> I'm impressed!
13:35:18 <Hiato> Hehe, cute :D
13:36:08 <Hiato> Wait
13:36:16 <Hiato> why did I order Ubuntu 7.10
13:36:23 <Hiato> I wanted Kubuntu :( :(
13:36:25 <Hiato> oh well
13:36:30 <Hiato> I already have ubuntu
13:36:33 <Hiato> but hey
13:36:42 <Hiato> I got stickers though, on the plus side :D
13:37:35 <Hiato> how do you check someones time, Slereah?
13:37:45 <Hiato> you did it earlier
13:38:24 <Hiato> "/time" just gives me the server's time ...
13:39:52 <Slereah> Well, right-click on the name, CTCP, time
13:39:52 <Slereah> At least on mIRC
13:40:13 <oerjan> /ctcp ... TIME possibly
13:40:37 <oerjan> hm nah
13:40:40 <Hiato> yep
13:40:44 <Hiato> unknown command for me
13:40:53 <Hiato> bets I get is "/time"
13:40:57 <Hiato> *best
13:41:09 <oerjan> you don't have /ctcp ?
13:41:17 <Hiato> nope, not in pidgin
13:41:25 <oerjan> hm
13:41:26 <Hiato> Unknown command.
13:41:52 <oerjan> can you insert ^A control chars in your messages?
13:42:14 <Hiato> not sure what that means
13:42:19 <Hiato> ^A
13:42:30 <Hiato> amm.... that didn't work
13:42:32 <oerjan> ascii code 1
13:42:42 <Hiato> aha, let me see
13:42:50 <Hiato> nope, no ASCII code's allowed for me
13:42:52 <oerjan> although your client did not respond to my /ctcp time ...
13:43:57 <oerjan> can you at least do /me commands? not that it helps with this
13:44:10 * Hiato thinks he can
13:44:15 <oerjan> ah
13:44:39 <oerjan> what happens if you press ctrl-V ctrl-A ?
13:45:03 <Hiato> as in paste, select all?
13:45:09 * oerjan tests
13:45:19 <oerjan> did that come out as an action?
13:45:28 <Hiato> (3:45:32 PM) ***oerjan tests
13:46:06 <oerjan> well if it actually does paste and select all then it's not what i mean
13:46:23 <Hiato> yep, well that's what happens ;)
13:46:25 <oerjan> in my client ^V^A inserts a ^A control
13:46:42 <Hiato> nope, sorry, which client are you using?
13:46:47 <oerjan> irssi
13:46:50 <oerjan> terminal based
13:46:54 <Hiato> (Pidgin is kinda incomplete)
13:46:58 <Hiato> oh, I see
13:47:02 <Hiato> hrmm
13:47:13 <Hiato> maybe I should move to miranda or something
13:47:16 <Hiato> meh, effort
13:47:38 <oerjan> if you could insert ^A characters then you could /msg someone ^ATIME^A
13:47:42 <Hiato> because I need Gtalk + MSN + IRC
13:47:59 <oerjan> although possibly you would not see the response
13:48:18 <Hiato> hrmm, did you get something?
13:48:28 <oerjan> not from you
13:48:33 <Hiato> ok, well
13:48:38 <oerjan> but Slereah's client responded
13:48:40 <Hiato> I tryd /msg oerjan TIME
13:48:47 <Hiato> ok well
13:48:55 <Hiato> I'll get Miranda now
13:48:55 <oerjan> no i did not see that but i don't think i'm supposed to
13:49:06 <oerjan> oh wait
13:49:09 <Hiato> oh, well I didn't see anything either
13:49:20 <oerjan> without ctrl chars?
13:49:25 <Hiato> well, yes
13:49:33 <oerjan> you are not registered
13:49:42 <Hiato> registered in what
13:49:50 <oerjan> only registered nicks can send private messages on freenode
13:50:06 <Hiato> aha, well, I can send them to myself
13:50:11 <Hiato> do I need to register?
13:50:16 <Hiato> rather should I?
13:50:48 <oerjan> it has advantages
13:50:57 <Hiato> does it cost?
13:51:07 <oerjan> sending private messages, keeping others from using your nick
13:51:10 <oerjan> no
13:51:18 <Hiato> cool, then I'll register
13:51:23 <oerjan> it's an automated thing
13:51:30 <Hiato> I see
13:51:55 <Hiato> how do I initiate it?
13:51:59 <oerjan> although if your client is primitive you may have to send the password manually when you log on
13:52:10 <Hiato> blah
13:52:14 <Hiato> well, miranda is way better
13:52:19 <oerjan> you send messages to nickserv
13:52:37 <oerjan> start with help i guess
13:52:42 <Hiato> ok, sure
13:52:52 <oerjan> oh, and check the freenode webpage perhaps
13:53:11 <oerjan> it has some tips on this
13:53:11 <Hiato> roger
13:53:21 <Hiato> well, im gonna log out, and come back in ith miranda
13:53:25 <Hiato> cheers
13:53:26 <Hiato> rather brb
13:53:28 -!- Hiato has left (?).
13:58:26 -!- Hiato has joined.
13:58:32 <Hiato> Im back
13:58:34 <Hiato> I think
13:58:36 <Hiato> :)
13:58:48 <Slereah> Is it awesome now?
13:58:59 <Hiato> Well, Miranda is way Cooler :D
13:59:14 <Hiato> /time
13:59:18 <Hiato> \time
13:59:26 <Hiato> Meh, I cant do either now
13:59:28 <Slereah> |time
13:59:31 <Slereah> _time
13:59:34 <Slereah> -time
13:59:36 * Hiato ponders if /me will work
13:59:40 <Slereah> <time
13:59:48 <Hiato> thanks Slereah
13:59:56 <Hiato> I was trying to invoke the time command
13:59:57 <Hiato> :)
14:00:22 <oerjan> try /ctcp Slereah TIME
14:00:28 <oerjan> oh wait
14:00:32 <Slereah> How come it even allows sending a / sentence without the use of ctrl?
14:00:37 <oerjan> you still haven't registered
14:01:04 <oerjan> Slereah: hm?
14:01:51 <oerjan> isn't / entirely in the client...
14:02:22 <Slereah> Well, I've used mIRC for... 7 years now.
14:02:35 <Hiato> I have no idea what is going on here anymore :P
14:04:35 <Hiato> well
14:04:39 <Hiato> Miranda sucks for IRC
14:05:04 <Hiato> and for just abut everything
14:05:10 <Hiato> I'm gonna go back tp pidgin :(
14:05:15 -!- Hiato has quit ("Blah").
14:06:06 -!- Hiato has joined.
14:11:33 -!- Jontte has joined.
14:20:51 -!- Hiato has left (?).
14:39:49 -!- Hiato has joined.
14:41:59 <Hiato> Hooray
14:42:03 <Hiato> I think I registered :)
14:42:38 <Hiato> [16:42] CTCP TIME reply from Slereah: Mon Jan 07 15:42:19 2008
14:42:42 <Hiato> Yay :D
14:43:18 <Slereah> Huzzah!
14:43:24 <Slereah> Now we can chat in private!
14:43:32 <Slereah> And diss the others in secret!
14:43:34 <Hiato> :) Woohoo
14:43:41 <Slereah> YOU OTHER PEOPLE HAVEN'T READ THAT
14:43:47 <Hiato> Oh yeah, my childgood dream come true
14:43:53 <Hiato> Haha :D
14:44:02 <Slereah> You're going to be an astronaut?
14:44:14 <Hiato> No, but gonna dis people in private :P
14:44:32 <Slereah> Weren't you already doing that as a child?
14:44:44 <Hiato> Naturally, :)
14:49:41 <Hiato> Hrmm, let me check if I cant use Pidgin now that Im registered
14:49:46 <Hiato> brb
14:49:49 -!- Hiato has quit ("Blah").
14:50:10 -!- Hiato has joined.
14:50:19 -!- Hiato has left (?).
14:50:58 -!- Hiato has joined.
14:51:14 <Hiato> damn
14:51:21 <Hiato> ctcp is still unknown
14:51:47 * Hiato meh
14:55:57 <Hiato> aha
14:56:02 <Hiato> ok there is a plugin pack
14:56:07 <Hiato> which I am downloading
14:56:08 <Hiato> for Pidgin
14:56:21 <Hiato> that will fix all of these stupid issues in pidgin - hooray :D
14:56:50 <oerjan> that, and world peace.
14:57:11 <Slereah> Hiato : Are you aware that you most probably won't use time more than once every two months?
14:59:15 <Hiato> yea, I am
14:59:29 <Slereah> That's a whole lot of efforts for that!
14:59:31 <Hiato> But Slereah, I can't even log in with Pidgin
14:59:37 <Hiato> yes true
14:59:46 <Hiato> I have to manually go /msg balh blah
14:59:51 <Hiato> if I wan to login
14:59:56 <Hiato> and pidign>miranda
15:00:00 <Hiato> for many many reasons
15:00:01 <Hiato> :)
15:00:03 <Slereah> That's also what I have to do.
15:03:06 <oerjan> Slereah: HAH! UR CLIENT SUXORZ!!!!
15:03:14 <Hiato> :)
15:03:29 <Slereah> oerjan : Nah.
15:03:37 <Slereah> I mostly talk on mIRC, so I don't care.
15:04:47 <Slereah> Since my computer tries not to go off, I just need two keys to log in.
15:05:05 <Slereah> "Up" and "enter" in the server window.
15:06:37 <Hiato> ok, installing plugins, brb
15:06:41 -!- Hiato has quit ("Leaving.").
15:07:34 -!- jix has joined.
15:08:07 -!- Hiato has joined.
15:08:21 <Hiato> Ok, time to put hings to the test
15:08:33 <Hiato> damn, ctcp is still unknown
15:08:38 <oerjan> ayeeh!
15:08:40 <Hiato> oh well, what can you do...
15:09:09 <Slereah> Give up?
15:09:13 <Hiato> yeah
15:09:21 <Hiato> that's about all that is left to do :)
15:09:43 <oerjan> you don't happen to have an escape character for inserting controls now?
15:09:59 <Hiato> nope, not that I can see
15:10:15 <oerjan> :(
15:10:19 <Hiato> agreed
15:12:02 <Hiato> "Adds additional IRC features, including a customizable quit message, a customizable CTCP VERSION reply, and the / notice command for notices." - I have no idea what that is on about, but that is the description of the plugin
15:13:35 <Hiato> why can't I do it.... boohoooo :( :(
15:14:44 <Slereah> You want a hug?
15:23:51 -!- timotiis has joined.
15:25:31 -!- ehirdsleep has changed nick to ehird.
15:27:12 <ehird> idea for what-BASIC-could-have-been
15:27:34 <ehird> 'goto' was dropped early on, and replaced with 'superblocks'
15:27:37 <ehird> (..)
15:27:47 <ehird> could contain multiple commands
15:27:55 <ehird> and there were several commands that could 'jump out' of a superblock
15:28:14 <ehird> (COND X>5 \n PRINT "X = ", X \n X = X + 1 \n NEXT)
15:28:21 <ehird> NEXT is a thinly vailed goto :)
15:28:27 <ehird> to the start of the innermost superblock
15:29:34 -!- jix has quit (Nick collision from services.).
15:29:44 -!- jix has joined.
15:29:58 <ehird> actually, an 'alternate history' esolang family would be interesting
15:30:09 -!- slereah_ has joined.
15:30:10 <ehird> i.e. start from an alternate FORTRAN and Lisp, and evolve from there up to the present day
15:30:18 <slereah_> >:|
15:30:28 <ehird> whut
15:30:31 <ehird> don't like my idea?
15:30:34 <ehird> :P
15:32:42 <slereah_> Bad connection.
15:32:42 <slereah_> I disconnected before hearing it.
15:32:42 <slereah_> [16:27] <ehird> idea for what-BASIC-could-have-been
15:32:42 <slereah_> [16:27] <Slereah> Written in German.
15:32:42 <slereah_> [16:27] <Slereah> If the Nazis won WWII.
15:32:43 <slereah_> [16:28] * Disconnected
15:32:56 <ehird> aww, i followed that up actually
15:32:57 <ehird> anyway
15:33:00 <ehird> you said that yesterday
15:33:01 <ehird> :P
15:33:12 <ehird> ircbrowse.com, see today's logs for #esoteric, read what i sid
15:34:43 -!- Hiato has quit (Read error: 110 (Connection timed out)).
15:36:44 <slereah_> That's because all alternative history is about the nazis winning WWII.
15:36:44 <slereah_> Or at least involves the nazis at some point.
15:37:44 <ehird> Naw :P
15:38:12 <slereah_> Hm. What about a language developped from the Analytic Engine?
15:38:18 <ehird> hmm
15:38:24 <ehird> i was thinking less-ancient than that
15:38:29 <ehird> at the time FORTRAN was invented, something changed
15:38:38 <ehird> which influenced LISP to be a lot different
15:38:48 <ehird> and so on -- everything in the modern day completely different
15:39:01 <slereah_> WHAT ABOUT AN ABACCUS BASED LANGUAGE
15:39:09 <oerjan> slereah_: actually some are about the confederates winning the american civil war. or the roman empire never ending.
15:39:27 <oerjan> but that's it, really. ;)
15:39:34 <slereah_> I've got one about discovering stable anti-matter in the 18th century!
15:39:42 <slereah_> It's kinda steam-punky.
15:40:32 * ehird wonders what to name his toy haskell irc client
15:41:03 <slereah_> CurrIRC?
15:41:10 <ehird> nope
15:41:11 <ehird> Hiccup
15:42:31 -!- oerjan has quit ("Good night").
15:45:57 -!- Slereah has quit (Read error: 110 (Connection timed out)).
15:47:30 -!- Slereah has joined.
15:49:45 <ehird> gui libs for haskell!
15:49:47 <ehird> someone suggest.
15:49:55 <ehird> oh damn
15:49:56 <ehird> i meant oerjan
15:49:58 <ehird> but he disappeared
15:49:59 <ehird> :-P
15:50:43 <Slereah> I can offer all my knowledge on the subject.
15:50:50 <Slereah> But boy, are you in for a disappointment!
16:05:23 -!- slereah_ has quit (Read error: 110 (Connection timed out)).
17:12:30 <Slereah> http://esoteric.voxelperfect.net/wiki/Object_disoriented
17:12:43 <Slereah> Was this especially created to include "fap fap fap" in the code?
17:17:37 <ehird> Probably
17:45:04 <ehird> % ./example
17:45:05 <ehird> zsh: bus error ./example
17:45:07 <ehird> my stack smashing has work to do
18:08:11 -!- Hiato has joined.
18:08:35 <Hiato> Wassup all, power went down for the most part of today....
18:14:52 <Hiato> GregorR, can I talk to you?
19:21:30 <ehird> oklopol: I take your scheme interpreter in Python and raise you a fully-R5RS compliant interpreter in Haskell
19:21:34 <ehird> [not yet written, admittedly]
20:00:30 <ehird> 'If a second argument is given, then each element is initialized to fill. Otherwise the initial contents of each element is unspecified.'
20:00:34 <ehird> i think i'll take that literally.
20:00:47 <ehird> (make-vector 3) -> #(unspecified. unspecified unspecified)
20:15:20 -!- Sgeo has joined.
20:37:04 <Hiato> 3 cheers for Midsomer Murders, the best murder mystery show by far :P
20:39:05 <ehird> lol, british tv.
20:39:13 <Hiato> but it's soo good :)
20:39:30 <Hiato> compared to african that is ;)
20:55:47 <Hiato> +++[>>+>+<<<-]>>>[<<<+>>>-]<[<<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<<-]
20:55:57 <Hiato> I think that that is right :)
20:56:04 -!- RedDak has joined.
20:56:08 <Hiato> My second ever BF Prog
20:57:10 <Hiato> Yesp, it works
21:07:28 -!- timotiis_ has joined.
21:07:32 -!- ehird has changed nick to ehird`.
21:08:34 <oklopol> i got three courses in the uni instead of one!
21:08:56 <Hiato> :D
21:14:28 <oklopol> have to admit only one of them doesn't suck
21:14:39 <Hiato> lol, shame :)
21:17:46 -!- jix has quit ("CommandQ").
21:20:30 -!- AnMaster has quit ("quitting to restart xorg for new x config").
21:34:14 -!- timotiis has quit (Read error: 110 (Connection timed out)).
21:34:20 -!- puzzlet has quit (Remote closed the connection).
21:34:24 -!- puzzlet has joined.
22:03:42 <ehird`> oklopol: i found the one case that makes my 'functions = tables of infinite size, precalculated' different from the traditional model
22:03:51 <ehird`> oklopol: it makes quicksort, bubblesort and the rest equivilent.
22:04:01 <ehird`> they all map the same values to the same values.
22:04:02 <ehird`> thus, equiv.
22:04:27 <ehird`> compared to each other, each one is only better because it's efficient at the imagined 'initial calculation'
22:04:38 <ehird`> even if that calculation is lazy :)
22:04:46 <Hiato> What is an easy way to find the two largest possible factors of a number, who's product is the number?
22:05:17 <Hiato> ie should I give 36, it should reply with 6 & 6
22:05:32 <Hiato> should I say 12, it should say 3 &4 not 2 $ 6
22:05:36 <Hiato> *&
22:06:08 <oklopol> Hiato: factorize and take the two biggest...
22:06:11 <Hiato> if there is no easy way, how would I just traditionally factorise a number (being able to deal with 1 and Prime)
22:06:18 <Hiato> yes, but algorithmically
22:06:19 <Hiato> how
22:06:38 <Hiato> loop trhough everyhting <1/2
22:06:42 <Hiato> of the number?
22:06:48 <oklopol> hmm
22:06:51 <oklopol> well
22:06:53 <oklopol> almost
22:07:08 <oklopol> let's assume a number is not a prime
22:07:12 <Hiato> ok
22:07:32 <oklopol> now, if n/2-x is one of it's factors, where x is a small integer
22:07:34 <oklopol> actually
22:07:44 <oklopol> let's say n/2 is one of it's factors
22:07:49 <Hiato> ok
22:07:59 <oklopol> n/(n/2)=2
22:08:12 <Hiato> yes
22:08:16 -!- RedDak has quit ("I'm quitting... Bye all").
22:08:26 <oklopol> there is another limit for smallest factor.
22:09:03 <oklopol> let's say a number has two factors (if it has more, the factors are no doubt smaller than in the case of two factors, and if it just has itself as a factor, it's a prime)
22:09:20 <Hiato> yes
22:09:23 <oklopol> no, in which case would these two factors be smallest?
22:09:23 <oklopol> *now
22:09:35 <oklopol> *the smallest
22:09:54 <Hiato> when the number is a small integer
22:10:04 <Hiato> because than anything is integer and integer/2
22:10:07 <oklopol> asdf, hard to explain anything clearly when it takes a minute for the test to appear after i've written it..
22:10:08 <Hiato> which is small
22:10:20 <Hiato> ;)
22:10:22 <oklopol> Hiato: we think in terms of big numbers
22:10:33 <oklopol> since small numbers are trivial cases.
22:10:48 <Hiato> ok, well then Im not sure I get it, when will a big number's 2 factors be smallest?
22:10:52 <Hiato> si that the question
22:10:59 <Hiato> idiotised
22:11:12 <oklopol> well
22:11:19 <Hiato> oh, wait
22:11:20 <oklopol> let's say the other factor is /n2
22:11:23 <oklopol> n/2
22:11:23 <Hiato> if its even
22:11:25 <oklopol> what's the other?
22:11:30 <Hiato> n
22:11:33 <oklopol> no
22:11:38 <Hiato> 2
22:11:40 <Hiato> woopsies
22:11:47 <Hiato> so when it is even
22:11:58 <oklopol> n*(n/2) = n^2/2
22:12:04 <oklopol> no evenness.
22:12:11 <oklopol> that does not matter here
22:12:15 <Hiato> meh, blah
22:12:25 <oklopol> so, let's say the other factor is n/3
22:12:30 <oklopol> what's the other?
22:12:46 <Hiato> wait
22:12:49 <Hiato> let me think
22:12:51 <oklopol> :)
22:13:18 <Hiato> 3/n ?
22:13:19 <oklopol> (if it has two factors, these factors multiplied amount to the original number)
22:13:25 <Hiato> no
22:13:28 <Hiato> nevermind
22:13:29 <Hiato> 3
22:13:30 <Hiato> ?
22:13:38 <Hiato> where n is the number...
22:13:43 <Hiato> or the factor
22:13:44 <Hiato> ?
22:13:48 <oklopol> (x * n/3 = n <=> x = 3n/n = 3)
22:14:01 <oklopol> sorry, wrote that about a second after my last comment
22:14:18 <oklopol> my xchat is broken
22:14:18 <oklopol> yes, 3
22:14:23 <Hiato> hooray
22:14:27 <oklopol> so, sdo you see in general why the other factor being big amounts to the other one being small?
22:14:29 <Hiato> then I did get it :)
22:14:36 <Hiato> yes
22:14:37 <Hiato> I do
22:14:40 <oklopol> *do
22:14:44 <oklopol> good.
22:14:58 <Hiato> so now, we need to tell which 2 factors tend closest to each other
22:15:17 <oklopol> so... in the case where the two factors are as big as possible
22:15:30 <oklopol> a*b=n, a=b
22:15:38 <oklopol> (i mean, as close to each other as possible)
22:15:43 <Hiato> that's if it's square
22:15:46 <Hiato> oh, I see
22:15:56 <oklopol> yes.
22:15:59 <oklopol> jackpot
22:16:14 <Hiato> that's easy though
22:16:15 <Hiato> :P
22:16:21 <Hiato> it's already part of the function
22:16:31 <Hiato> the first line picks up squares and quits if it is...
22:16:33 <Hiato> ;)
22:16:50 <Hiato> if Sqr(Trunc(Sqrt(n1)))=n1 then begin result := IntToStr(n1)+' '+IntToStr(n1); exit; end;
22:17:42 <Hiato> oklopol, you there?
22:18:07 <oklopol> yes, but i was waiting for the text to reappear
22:18:15 <Hiato> :)
22:18:17 <oklopol> i think i need to restart xchat
22:18:21 <Hiato> go for it
22:18:39 <Hiato> ooh
22:18:44 <Hiato> I have a pretty good idea how
22:18:54 <Hiato> get the approximate Sqrt of a num
22:18:59 <Hiato> and go up/down
22:19:01 -!- oklopol_ has joined.
22:19:04 <Hiato> until you find a number
22:19:09 <Hiato> (12:19:02 AM) Hiato: ooh
22:19:10 <Hiato> (12:19:07 AM) Hiato: I have a pretty good idea how
22:19:10 <Hiato> (12:19:17 AM) Hiato: get the approximate Sqrt of a num
22:19:10 <Hiato> (12:19:22 AM) Hiato: and go up/down
22:19:13 <Hiato> (12:19:27 AM) Hiato: until you find a number
22:19:24 <Hiato> that is a factor
22:19:37 <Hiato> does that get the oklopol stamp of approval?
22:20:09 <oklopol_> Hiato: no need to repaste, i always read the logs if i'm away for more than a second :)
22:20:15 -!- bsmntbombdood_ has joined.
22:20:26 <Hiato> lol, sorry, sure :)
22:20:28 <oklopol_> oh
22:20:37 <oklopol_> you weren't repasting i guess
22:20:53 -!- bsmntbombdood has quit (Connection timed out).
22:20:55 <Hiato> what is going on here?
22:20:58 <Hiato> you never left
22:21:03 <Hiato> and now you're back
22:21:16 <Hiato> ;)
22:21:19 <oklopol_> Hiato: hmmmm
22:21:33 <Hiato> anyway, algorithm, like my idea?
22:21:33 <oklopol_> yes i didn't close the other xchat yet
22:21:39 <Hiato> oh, lol
22:21:41 <Hiato> :D
22:21:49 <oklopol_> there are many ways to find a square root
22:21:57 <oklopol_> what did you mean exactly?
22:22:18 -!- oklopol has quit ("for the need to encumber").
22:22:47 <oklopol_> first time i see my own quit message
22:22:49 <Hiato> what I meant was, I want to return the 2 closest factors of a number, so what I'll do, is assuming it's non-square and non-prime, find the approx square root (easy) then go say down from theat number until I find a factor
22:23:02 <Hiato> then use that and it's compliemtn as the solution
22:23:05 <Hiato> haha :D
22:23:12 <Hiato> *compliment
22:23:33 <Hiato> I think that is the easiest way to find the closest two factors of a non-square, non-prime number
22:23:42 <Hiato> actually, it will work for primes!
22:25:00 <oklopol_> well
22:25:21 <oklopol_> you could just loop from 2 to sqrt_of_n
22:25:24 <Hiato> and for squares
22:25:29 <Hiato> yes, but his is shorter
22:25:34 <oklopol_> because otherwise you'll also find compound factors
22:25:39 <oklopol_> unless that's okay
22:25:47 <Hiato> assuming that the two closest factors are on either side of root n
22:25:52 <oklopol_> you didn't specify *prime* factors, i just assumed for some reason
22:26:07 <Hiato> lol, sure no problem
22:26:09 <Hiato> yes, I don't mind
22:26:19 <Hiato> I don't need prime factors
22:26:22 <Hiato> :)
22:26:45 <oklopol_> oh, right, then use that algo.
22:26:49 <oklopol_> hmm...
22:27:11 <Hiato> Thanks a tone oklopol (_) :D
22:27:15 <Hiato> *ton
22:27:23 <oklopol_> although, in case the number has a lot of small factors, starting from 2 might still be faster....
22:28:02 <Hiato> I don't think so, because I'm working down from root n and stopping on the first factor below or on root n
22:28:04 <oklopol_> since you'd just find them all at once, unlike if starting from the square, in which case you may have to iterate a certain percentage of the number to find the first factor.
22:28:14 -!- AnMaster has joined.
22:28:14 <Hiato> and then dividng to find it's compliment
22:28:24 <Hiato> yes
22:28:26 <Hiato> true
22:28:48 <Hiato> but starting from 2, I would go through many small factors in a non-prim number
22:28:59 <Hiato> gradually getting bigger
22:29:16 <Hiato> whereas I start more or less where I need to be, and get smaller only if necessary
22:29:51 <oklopol_> hmm... so if you have 60, would you want 30 and 20, or two factors that actually, when multiplied, produce the original number?
22:29:53 <oklopol_> because....
22:30:01 <Hiato> yes
22:30:10 <Hiato> so it would be around 10 and 6
22:30:13 <oklopol_> if you want the two *greatest* compound primes, the best way is to factorize.
22:30:25 <oklopol_> ah the latter
22:30:33 <oklopol_> good, in that case my advice was of some use.
22:30:40 <Hiato> aha, definitely
22:30:43 <Hiato> :)
22:30:57 <Hiato> what is approx root 60?
22:31:01 <oklopol_> umm
22:31:08 <oklopol_> i'd say around 7.5
22:31:08 <Hiato> 7.xxx
22:31:08 <Hiato> ?
22:31:12 <Hiato> good
22:31:14 <Hiato> perfect
22:31:20 <Hiato> 1 iteration to solve for 60
22:31:42 <Hiato> p := Trunc(Sqrt(n1));
22:31:42 <Hiato> while frac(n1 / p)<>) do dec(p);
22:31:42 <Hiato> result := IntToStr(p)+' '+IntToStr(n1 div p);
22:31:46 <Hiato> that's all :D
22:31:55 <Hiato> thanks oklopol_ :D
22:31:55 <oklopol_> was closer to 7.75
22:32:06 <Hiato> doesn't matter, Trunc, not round ;)
22:32:06 <oklopol_> oh, niec
22:32:17 -!- oklopol_ has changed nick to oklopol.
22:32:27 <Hiato> about time
22:32:35 <Hiato> "oklopol_ is now known as oklopol"
22:32:43 <Hiato> is what I was referring to, ps
22:32:50 <oklopol> i realized :)
22:33:06 <oklopol> "about time you realized it was nice that it worked!"
22:33:26 <oklopol> i need to do something... what
22:33:31 <Hiato> heh
22:33:39 <Hiato> amm, work on... er....
22:33:53 <oklopol> i've been thinking about writing a tutorial on continuations in finnish, but there seems to be no term for it :D
22:34:05 <Hiato> lol :)
22:34:06 <oklopol> and continuation doesn't really fit the language as a loanword
22:34:16 <Hiato> one would assume :P
22:34:16 <oklopol> kontinuaatio
22:34:22 <Hiato> :)
22:34:30 <Hiato> make up a wor
22:34:32 <Hiato> *word
22:34:38 <Hiato> coin it, become famous etc etc
22:34:40 <Hiato> :P
22:34:45 <oklopol> well, i actually made up a word for it, but it's verrrry comical :)
22:34:53 <oklopol> not that that has ever stopped me before.
22:35:09 <Hiato> I can't say I'd get the joke if you told me it, but sure, hey :)
22:35:14 <oklopol> most unfortunate you wouldn't understand it's funniness if i told it to ya :<
22:35:19 <oklopol> err
22:35:22 <Hiato> yes, a shame
22:35:23 <oklopol> my point exactly :)
22:35:43 <Hiato> Aha, make a limerick about something or other :)
22:35:55 <Hiato> they're always fun to read (if well done)
22:35:57 <Hiato> ;)
22:37:57 <oklopol> looked limerick up on answers (for examples, i knew what it was)
22:37:59 <oklopol> There once was a young man from Kew
22:37:59 <oklopol> Who found a dead mouse in his stew.
22:37:59 <oklopol> Said the waiter, “Don't shout
22:37:59 <oklopol> Or wave it about,
22:37:59 <oklopol> Or the rest will be wanting one too!”
22:38:11 <oklopol> this one was in roald dahl's matilda
22:38:16 <oklopol> which i read when i was a kid
22:38:25 <Hiato> :D
22:38:25 <oklopol> the translation was unbelievably bad :D
22:38:27 <Hiato> awesome
22:38:39 <Hiato> lol, I can believe that :D :D
22:38:41 <oklopol> i haven't realized what the poem meant until now
22:38:43 <oklopol> *limerick
22:38:45 <oklopol> same thing.
22:38:54 <Hiato> ahaha
22:38:57 <Hiato> classic ;)
22:39:15 <Hiato> hrmm... I wrote one somehere
22:39:20 <Hiato> let me see...
22:39:33 -!- bsmntbombdood_ has quit (Read error: 110 (Connection timed out)).
22:40:05 <Hiato> There was a young schoolboy of
22:40:05 <Hiato> Sakes, who enjoyed writing limericks at
22:40:05 <Hiato> breaks. A fault that would
22:40:05 <Hiato> lurk in all of his
22:40:05 <Hiato> work, was his horrible use of line breaks!
22:40:06 -!- bsmntbombdood_ has joined.
22:40:13 <Hiato> what you think?
22:40:27 <Hiato> be kind ;)
22:40:38 <oklopol> i think "break" rhymes well with "break" :)
22:40:44 <oklopol> although that's not very nice :)
22:40:50 <Hiato> gee, thanks :)
22:41:17 <Hiato> I couldn't say line feeds! :D
22:41:26 <oklopol> all i can do really is point out stuff like that, i don't really have opinions on poetry :P
22:41:28 <Hiato> or carriage returns
22:41:34 <oklopol> but, i always like a metareference
22:41:42 <Hiato> Ha, sure, no problem in that case
22:41:53 <oklopol> or whaddyacallit
22:41:59 <Hiato> therefore, I'll accept you insightful observation as a compliment :P
22:42:35 * Hiato curses his slow enter button pushing habit...
22:42:50 * oklopol curses for fun
22:43:03 <Hiato> :D roflol
22:43:06 <Hiato> ;)
22:43:11 <oklopol> i'll try writing something
22:43:20 <Hiato> go for it
22:43:21 <Hiato> :)
22:43:54 <Hiato> I'd like to see what you can come up with, not as a competition but out of interest if someone smart can write poetry :)
22:44:27 * oklopol is vary smort
22:44:49 * Hiato is sure of that fact ;)
22:45:05 * Hiato is especially impressed with the show of spelling
22:48:16 <oklopol> hmm, this one was a bit perverted, i'll try another approach
22:48:30 <oklopol> after a while, i need to do a thing first ->
22:48:41 <Hiato> lol, sure
22:48:51 <Hiato> perhaps that would be a good idea
22:48:53 <Hiato> ;)
22:59:58 <oklopol> could write about malbolge if i knew how it's pronounced.
23:00:00 <oklopol> :)
23:00:18 <Hiato> mell boll-gah
23:00:24 <Hiato> it's hard to explain
23:01:14 <Hiato> Mell as in the name, with a slight a sound, short though, like sAlt
23:01:27 <Hiato> so Me(a)ll
23:01:32 <Hiato> if that makes sense :)
23:01:53 <Hiato> ok, finished the first algorithm for Text2BF
23:01:55 <Hiato> and it works
23:02:13 <Hiato> but it is slightly longer than should be with normal text2bf programmes....
23:02:31 <Hiato> but hey, it was an experiment, now for the next algorithm, that should be shorter by all means
23:03:00 <ehird`> .bf_txtgen Hello, world!
23:03:14 <Hiato> ?
23:03:27 <Hiato> you want to see the generated hello world?
23:03:37 <ehird`> no
23:03:40 <ehird`> !bf_txtgen Hello, world!
23:03:43 <ehird`> i want to show you egobot's
23:04:03 <Hiato> aha, well, were should I search for this?
23:04:05 <oklopol> gimme a name rhyming with brainfuck, and i can show you my sucky limerick.
23:04:12 -!- timotiis_ has quit ("leaving").
23:04:16 <Hiato> hiccup
23:04:18 <Hiato> :P
23:04:28 <Hiato> lorry truck
23:04:30 <Hiato> ;)
23:04:49 <ehird`> Brainfuck/does not rhyme with hiccup/this is not a haiku
23:05:10 <Hiato> it does, it's called a technical rhyme ;)
23:05:13 <oklopol> ehird`: it's not that strict
23:05:19 <ehird`> :D
23:05:22 <oklopol> i mean
23:05:36 <oklopol> it's structure is so bad that makes up for a bad rhyme...
23:05:41 <Hiato> lol
23:06:10 <oklopol> hiccup is not a name though.
23:06:26 <Hiato> true
23:06:34 <ehird`> yes it is.
23:06:36 <ehird`> :|
23:06:37 <Hiato> and it's also spelled hiccough, but hey ;)
23:06:46 <oklopol> There once was a man called Merlock
23:06:46 <oklopol> Who tried to get employed coding brainfuck
23:06:46 <oklopol> But what do you know
23:06:46 <oklopol> He was told esolangs blow
23:06:46 <oklopol> Got depressed and is now hooked on prozak
23:07:03 <Hiato> ROFLOL :D :D
23:07:04 <Hiato> awesome
23:07:16 <ehird`> 4;lpokld$s<f[g@;
23:07:20 <Hiato> now, for the critique, Merlock and the rest don't rhyme
23:07:22 <Hiato> ;)
23:07:30 <Hiato> merluck, perhaps
23:07:30 <ehird`> that is a program that examines the nature of the universe
23:07:43 <Hiato> cool, is it in oklotalk? :P
23:07:49 <ehird`> naw
23:07:52 <ehird`> :P
23:07:56 <Hiato> :)
23:08:05 <ehird`> if it was in oklotalk, it would be *at least* 5 characters shorter
23:09:32 <oklopol> merlock definately rhymes with brainfuck
23:09:37 <oklopol> you're just pronouncing it wrong
23:09:49 <Hiato> aha... rigth ;)
23:11:20 <oklopol> ehird`: it's about 4 characters and a stib in oklotalk.
23:12:09 <oklopol> the real problem with my poem is the forth line has one syllable too many.
23:12:14 <oklopol> limerick
23:12:46 <Hiato> yes, well, if you consider that the real problem :P
23:12:49 <Hiato> naah
23:12:52 <Hiato> just kidding
23:12:53 <ehird`> limerick/dick/now it's a dirty limerick
23:13:03 <Hiato> :)
23:13:52 <Hiato> http://rafb.net/p/EUeKri48.txt
23:13:55 <Hiato> here we gp
23:14:10 <Hiato> describes the algorithm using the algorithm
23:14:12 <Hiato> *go
23:14:20 <Hiato> run it :) PLEASE ;)
23:14:34 <ehird`> with frainbuck?
23:14:35 <ehird`> OK!
23:15:03 <Hiato> lol, I like frainbuck ;)
23:15:13 <ehird`> hehe
23:15:24 <Hiato> woopsies
23:15:29 <Hiato> there is a typo :P
23:15:37 <Hiato> it says taught, instead of thaught
23:15:39 <Hiato> ;)
23:15:44 <Hiato> *thought
23:15:55 <ehird`> 1563 blah.c
23:15:58 <ehird`> 1563 lines of c code
23:15:59 <ehird`> :P
23:16:09 <Hiato> what?
23:16:23 <ehird`> frainbuck compiles that to 1563 lines of c
23:16:33 <Hiato> oh, lol :D
23:16:34 <ehird`> after the first section it mostly looks like this
23:16:34 <Hiato> wicked
23:16:35 <ehird`> p += 14;
23:16:35 <ehird`> putchar(t[p+0]);
23:16:35 <ehird`> p += -12;
23:16:35 <ehird`> putchar(t[p+0]);
23:16:36 <Hiato> :)
23:16:41 <Hiato> yip
23:16:46 <Hiato> lol
23:16:58 <Hiato> that''s so awesome though :D
23:17:13 <ehird`> t[p+0] += 101; /* i dread to think of this program without my optimizations */
23:17:26 <Hiato> aha...
23:17:29 <ehird`> the program takes 0.005sec to run :P
23:17:36 <Hiato> well, actually, it does multiplication
23:17:40 <Hiato> Woohoo
23:17:44 <Hiato> it's fast :)
23:17:54 <oklopol> There once was a sensitive poet
23:17:54 <oklopol> Who tried to get a chick he would covet
23:17:54 <oklopol> He wrote a poem for the dame
23:17:54 <oklopol> But oh what a shame
23:17:54 <oklopol> For nothing good rhymed with "Get in my bed"
23:17:57 <oklopol> okay, i suck at this :)
23:18:10 <Hiato> lol, nice idea
23:18:19 <Hiato> but poet and covet don't rhyme ;)
23:18:27 <Hiato> but otherwise it's awesome :D
23:18:36 <ehird`> where's that brainfuck oop code
23:18:50 <Hiato> what, you made ehird`
23:18:52 <Hiato> ;)
23:18:55 <Hiato> *mad
23:18:59 <ehird`> no
23:19:01 <ehird`> really
23:19:01 <oklopol> they do rhyme, stop pronouncing words correctly!
23:19:02 <ehird`> it exists.
23:19:17 <ehird`> and i want to see allocation, stack management, and pointers in my compiler output :D
23:19:43 <Hiato> oklopol: Sure, my bad ;)
23:19:43 <Hiato> ehird`: You are crazy, don't worry, the nice men in white coats will pick you up soon to go to happy happy fun land :P
23:19:56 <ehird`> once i find it i'll show you
23:20:02 <Hiato> aha...
23:20:26 -!- oerjan has joined.
23:20:43 <ehird`> http://www.angelfire.com/tx4/cus/shapes/brain.html
23:20:45 <ehird`> Q. E. D.
23:21:18 <Hiato> NO WAYS! THIS GUY IS CRAZIEE
23:21:25 <Hiato> holy mother of cheese and whipped cream
23:21:30 <Hiato> damn it
23:21:44 <Hiato> well, I believe you now.....
23:21:51 * Hiato is speachless
23:21:56 <ehird`> 0.056sec to compile it to C with my compiler :D
23:22:07 <ehird`> Hiato: you know there's a C compiler that compiles to brainfuck, right?
23:22:11 <ehird`> c2bf. GregorR wrote it.
23:22:30 <ehird`> % wc -l oop.c
23:22:32 <ehird`> 6193 oop.c <-- only 6x your output code :P
23:22:40 <Hiato> nope, I didn't
23:22:43 <oerjan> <ehird> gui libs for haskell!
23:22:45 <oerjan> I hear gtk2hs recommended
23:23:09 <Hiato> ehird`: where can I lay my hands on this??
23:23:15 <ehird`> oerjan: yeah but it's gtk.
23:23:28 <ehird`> Hiato: http://esolangs.org/wiki/C2BF
23:23:43 <Hiato> w00t :)
23:23:47 <ehird`> algorithms for procedure calls, heaps and stacks, ... are very standard in BF nowadays
23:24:04 <Hiato> ...lol.... no ways :D :D He-hay :D
23:24:13 <ehird`> stacks are easy
23:24:27 <ehird`> VAL 1 VAL 1 VAL 1 ... VAL 1 VAL 0
23:24:34 <Hiato> yeah
23:24:36 <Hiato> true
23:24:39 <Hiato> wow, though
23:24:50 <Hiato> it's a bit too late now to concentarte on this
23:25:05 <ehird`> c only appears hard to compile because of the syntax.
23:25:07 <Hiato> I will definitely dive into it tomorrow though (well, it is tomorrow ;) )
23:25:11 <ehird`> once you get a parse tree it's trivial :)
23:25:38 <Hiato> heh.. I have my doubts... but then again, you've never been wrong, so I'll believe you on this one :)
23:25:50 <ehird`> haha
23:25:51 <ehird`> :)
23:25:52 <Hiato> anyway, late = tired = typos = annoying
23:25:59 <Hiato> so cheers all
23:26:00 <ehird`> reember, stdlib != c
23:26:05 <ehird`> c2bf just has printf
23:26:06 <Hiato> heh
23:26:06 <ehird`> and little else
23:26:09 <ehird`> no malloc()
23:26:10 <Hiato> :D
23:26:14 <Hiato> damn...
23:26:16 <ehird`> you can write a malloc and free in a few lines though
23:26:16 <Hiato> anyway
23:26:23 <Hiato> cool
23:26:23 <ehird`> but networking? haha ;)
23:26:27 <Hiato> will check tomorrow
23:26:30 <oklopol> does it support recursion?
23:26:34 <Hiato> I'll leave it to you
23:26:36 <Hiato> cheers
23:26:41 -!- Hiato has quit ("Leaving.").
23:26:49 <oklopol> or actually any kind of continuations...
23:27:04 <oklopol> i don't see how it would if a function just marks the next function to run
23:27:39 <ehird`> i dunno how it does it
23:27:42 <ehird`> maybe CPS?
23:27:46 <ehird`> but it DOES suppor tit
23:27:54 <ehird`> well, not quite CPS
23:28:16 <ehird`> just, compiled to asm-alike, then CALL -> two functions, and pass the next one
23:28:24 <ehird`> well, don't pass the next one as such
23:28:27 <ehird`> but have a call stack, with it.
23:29:06 <oklopol> i guess you could just split a function into two at every point of a further function call, and then just have a stack
23:29:14 <oklopol> and... there is a stack anyway
23:29:34 <ehird`> i wonder what the opposite of intercal is
23:29:41 <ehird`> ~INTERCAL = ?
23:30:00 <oerjan> extracal
23:30:32 <oerjan> or extercal?
23:31:00 <oklopol> or just TERCAL
23:31:19 <oerjan> oh, or subtercal
23:31:19 <ehird`> i mean: what would it be
23:31:27 <oerjan> like incubus vs. succubus
23:31:28 <ehird`> actually, is there an unlambda compiler out there yet?
23:31:39 <ehird`> (to anything)
23:31:57 <oerjan> define compiler :)
23:32:05 <oklopol> i can make you an unlambda to unlambda one
23:32:17 <oklopol> i'll do it in unlambda: i
23:32:18 <ehird`> oerjan: not this again
23:32:19 <ehird`> :(
23:32:21 * oklopol is so clever
23:32:22 <oerjan> and then have a look at my ocaml one to see if it fits your definition :)
23:32:31 <ehird`> ah yes i saw that one
23:32:37 <ehird`> OK apart from that one :-)
23:32:46 <ehird`> (because I want to write an unlambda->C just because it's so damn impractical)
23:33:05 <oerjan> since it is not faster than an interpreter, i assume it doesn't really count...
23:33:27 <ehird`> i doubt it
23:33:31 <ehird`> but UNLAMBDA TO C!
23:33:33 <ehird`> seriously people! :D
23:33:43 <oklopol> OMG!! :DD
23:33:46 <ehird`> ... is that even POSSIBLE, short of almost-interpreter?
23:33:54 <oerjan> i understand Mandelson's C interpreter is closer. unfortunately he gets some semantics wrong, d doesn't work properly iirc
23:34:27 <ehird`> is this kind of like befunge was a while ago?
23:34:33 <oerjan> i didn't look too hard at it after i realized it failed on some programs
23:35:40 <ehird`> hmm damnit, i was just about to try underload to c instead
23:35:42 <ehird`> but... ^
23:35:43 <oerjan> well scheme pioneered CPS compilation a long time ago
23:35:44 <ehird`> :(
23:36:20 <oerjan> i assume a _real_ unlambda compiler would do abstraction _un_elimination
23:36:21 <ehird`> is there a clever trick i could use to support ^ without having an eval?
23:36:25 <ehird`> ooh, i know...
23:36:34 <ehird`> i could compile everything in (...)s, but push a tuple (func,str)
23:36:37 <ehird`> so you can still do output
23:36:48 <oklopol> isn't ^ then only form of flow control?
23:36:56 <ehird`> yeppers
23:37:05 <oklopol> and, does it return after the call?
23:37:11 <ehird`> huh?
23:37:13 <oklopol> hmm
23:37:23 <oklopol> i'll read the underload page
23:37:24 <ehird`> ^ pops the first element off the stack
23:37:28 <ehird`> then puts it after the ^
23:37:31 <ehird`> without ()s
23:37:33 <oklopol> i see
23:37:49 <ehird`> stack=[], prog=(x)^ ->
23:37:55 <ehird`> stack[(x)], prog=^ ->
23:38:00 <ehird`> stack=[], prog=x
23:38:00 <oklopol> hmm...
23:38:22 <oklopol> (so it does return after the call, btw)
23:38:24 <oerjan> the question (i don't recall) is whether you can construct ()'s at runtime?
23:38:33 <ehird`> no.
23:38:39 <oklopol> no?
23:38:41 <oerjan> if not, compiling all of them should be possible i gues
23:38:42 <oklopol> interesting
23:38:46 <ehird`> yep
23:39:00 <ehird`> so, (...) -> compile ..., and push (compiled,"...")
23:39:51 <oklopol> a Encloses the top element of the stack in a pair of parentheses.
23:40:02 <oklopol> * Concatenate the top element of the stack to the end of the second element of the stack.
23:40:02 <oerjan> hm
23:40:05 <ehird`> oh crap
23:40:08 <ehird`> wait
23:40:11 <ehird`> that still should be compilable
23:40:13 <ehird`> i think?
23:40:15 <ehird`> wait, no.
23:40:20 <ehird`> since you could then do ^
23:40:37 <ehird`> wait, i think it might be ok
23:40:54 <bsmntbombdood_> abstraction _un_elimination
23:40:56 <bsmntbombdood_> :D
23:41:02 <ehird`> you can express the latter as (second . top)
23:41:07 <ehird`> where . is composition
23:41:10 <oklopol> it'd be interesting if you could compile programs that use that for flow control *in a certain way* into straightforward C code
23:41:15 <ehird`> and a is (wrapper-func top)
23:41:15 <oerjan> is the semantics of running the concatenation the same as running the parts in order, always?
23:41:18 <ehird`> now we just need to express those in c
23:41:21 <ehird`> oerjan: yes
23:41:26 <ehird`> oerjan: that is correct
23:41:31 <oerjan> no syntax problems?
23:41:35 <ehird`> nope, none
23:41:44 <ehird`> impossible to have unmatching ()s
23:41:45 <ehird`> or anything
23:41:55 <oerjan> like unsplitting a loop or the like
23:42:05 <ehird`> don't think so
23:42:08 <ehird`> but anyway:
23:42:13 <ehird`> if we have
23:42:20 <ehird`> struct stack_elem
23:42:25 <ehird`> which has:
23:42:27 <ehird`> well
23:42:30 <ehird`> stack_elem_in_parens
23:42:33 <ehird`> which has
23:42:40 <ehird`> a linnked list of all the stack_elem_in_parens to call
23:42:46 <ehird`> and the string value
23:43:07 <ehird`> then * is simple
23:43:18 <ehird`> a is also trivial, i think
23:43:45 <ehird`> oerjan: i think that's all correct
23:44:30 <ehird`> oerjan: hurry up, tell me how clever i am
23:44:43 <oklopol> string value?
23:45:07 <oklopol> oh, right, you can print stuff
23:45:29 <ehird`> yeah
23:45:51 <ehird`> oerjan: hurry up you! ;)
23:46:11 <oerjan> i had to look up underload first :D
23:47:04 <ehird`> am i right?
23:47:05 <oerjan> should work
23:47:13 <ehird`> yay
23:47:18 <ehird`> the hard part is all the manual allocation i have to do
23:47:19 <ehird`> :)
23:48:26 <oerjan> actually a tree might be easier than a linked list
23:48:35 <oerjan> since * is always pairing things
23:48:50 <ehird`> oerjan: no
23:48:53 <ehird`> (a)(b)(c)**
23:48:58 <ehird`> -> stack=[abc]
23:49:24 <oklopol> hmm
23:49:30 <oerjan> don't you mean the stack contains (abc) ?
23:49:39 <oklopol> i think i need a sleep
23:49:41 <oerjan> er, notation may be confusing
23:49:51 <ehird`> no
23:49:54 <ehird`> (a) -> stack=[a]
23:50:02 <ehird`> ((a)) -> stack=[(a)]
23:50:09 <ehird`> (a)a -> stack=[(a)]
23:50:17 <oerjan> what i mean is, you could still store that as cons a (cons b c)
23:50:17 <ehird`> this is pasted on what S says
23:50:48 <oerjan> i mean, consider (a)(b)*(c)(d)**
23:51:46 <oklopol> (a)(b) -> stack=[(a), (b)]
23:51:59 <oklopol> based on the "hello world" example
23:52:37 <oerjan> no, [a, b]
23:52:46 <oerjan> running () unwraps it
23:53:07 <oerjan> ok
23:53:08 <ehird`> ok, good point oerjan
23:53:10 <oklopol> and what would (ab) do then?
23:53:12 <ehird`> so, instead of a full list i just need cons.
23:53:20 <oerjan> [ab]
23:53:22 <oklopol> [a, b] too?
23:53:24 <ehird`> oerjan: what about NIL?
23:53:29 <ehird`> hey look, we got ourselves a scheme linked list.
23:53:30 <oerjan> but that is a single stack element
23:53:30 <ehird`> :P
23:53:35 <oklopol> oh.
23:53:41 <oklopol> a bit ambiguous notation
23:53:43 <oerjan> you don't need NIL, is my point
23:53:51 <ehird`> I think i'll have: void *(*fp)();
23:53:54 <ehird`> and just realloc it when needed
23:53:57 <ehird`> simplest
23:54:25 <oerjan> my point is if you do * as a linked list you will have to do linked list concatenation which is O(n)
23:54:35 <oerjan> while if you just pair, it is O(1)
23:54:51 <ehird`> not linked list
23:54:52 <ehird`> array
23:54:56 <ehird`> and i'll add an array length to it
23:54:59 <oerjan> even worse
23:55:01 <oklopol> also O(n)
23:55:05 <ehird`> as a property
23:55:07 <ehird`> O(1).
23:55:14 <oerjan> no.
23:55:15 <oklopol> ..k
23:55:16 <ehird`> x->fps+x->len
23:55:25 <oerjan> concatenating too arrays is O(n), obviously
23:55:31 <ehird`> oh.
23:55:32 <ehird`> right.
23:55:33 <ehird`> yes.
23:55:34 <ehird`> ok.
23:55:41 <oklopol> it seems once again i'm just being a second oerjan
23:55:48 <oklopol> guess i should sleep
23:55:53 <ehird`> oerjan: so i would do the (a)(b)*S -> ab on output-time?
23:55:56 <ehird`> not on *-time
23:55:57 <oerjan> my long lost evil twin
23:56:03 <oerjan> right
23:56:12 <ehird`> oerjan: what about (x)a
23:56:14 <ehird`> what's that?
23:56:16 <oklopol> ehird`: you don't need to store the string, i think, you can just get the string in real time
23:56:18 <oklopol> i mean
23:56:19 <ehird`> say:
23:56:20 <ehird`> void (*fp)(); char *str;
23:56:22 <ehird`> is my base structure
23:56:25 <ehird`> and i have a cons-tree of them
23:56:25 <oklopol> you can unparse the tree into a string
23:56:32 <oerjan> hm...
23:56:38 <ehird`> oklopol: as long as i have a string at the end
23:56:42 <ehird`> because (abc)S should output abc
23:56:51 <oerjan> ok that needs some tagging
23:56:57 <ehird`> we need a motto: Compiling Unlambda Is Not Trivial, Your Compiler Has A Bug
23:57:02 <oerjan> to distinguish sublists for elements
23:57:18 <oklopol> or Cuinty Chab
23:57:32 <oerjan> i suppose this all depends on what kind of programs you compile
23:57:40 <ehird`> oerjan: all unlambda programs
23:57:44 <oerjan> whether linked lists or trees will be more efficient
23:57:58 <ehird`> typedef struct _ul_obj { void (*fp)(); char *str; struct _ul_obj *cdr; } ul_obj;
23:58:07 <oklopol> sleep ------>
23:58:11 <ehird`> (a) -> cdr is NULL
23:58:22 <ehird`> (a)(b)* -> (a) with cdr as (b) with cdr as NULL
23:58:35 <ehird`> O(1)
23:58:45 <oerjan> oh. for unlambda i would _definitely_ expect a tree to be better
23:59:03 <ehird`> that is a tree!
23:59:10 <ehird`> :|
23:59:12 <ehird`> it's:
23:59:16 <ehird`> (cons a b)
23:59:30 <oerjan> i wasn't looking at your struct
23:59:57 <ehird`> (a)(b)(c)*(d)** -> (cons a (cons (cons b c) d))
2008-01-08
00:00:03 <oerjan> but yeah
00:01:32 <ehird`> void ul_call(ul_obj o) { top: o->fp(); if (o->cdr) { o = o->cdr; goto top; } }
00:01:35 <ehird`> poor man's tail recursion
00:01:51 <ehird`> actually, i should make that pop
00:01:55 <ehird`> instead of take an arg
00:04:01 <ehird`> oerjan: this should actually be pretty fast shouldn't it?
00:04:11 <ehird`> oh...... one problem
00:04:12 <pikhq> Interesting. . .
00:04:13 <ehird`> (x)a
00:04:17 <ehird`> how do i represent that with my struct?
00:04:22 <pikhq> In Agora, I am Champion and Minister Without Portfolio.
00:04:23 <ehird`> pikhq: indeed :)
00:04:26 <ehird`> oh.
00:04:27 <pikhq> But, I never won the game.
00:04:29 <ehird`> :|
00:04:33 <oerjan> oh dear
00:04:39 <ehird`> i thought you meant my unlambda compilation efforts!
00:04:42 <pikhq> ehird`: That, too, is quite interesting.
00:04:42 <oerjan> revisionism, i say!
00:04:50 <ehird`> oerjan: i think i just need another entry in ul_obj
00:04:55 <ehird`> ul_obj *inner;
00:04:59 <pikhq> No, pure stupidity.
00:05:23 <pikhq> Champion was changed so that it was granted by the announcement of the Herald to someone who has won.
00:05:33 <pikhq> Minister Without Portfolio was changed similarly later. . .
00:05:41 <pikhq> But in that proposal, I was granted the patent title.
00:06:44 <oerjan> the obvious solution is to now request the patent title
00:07:01 <pikhq> Well, yes.
00:07:16 <oerjan> Champion Not Created By Winning
00:07:17 <ehird`> i think my compiler architechture is pretty unique :P
00:07:30 <pikhq> :D
00:09:23 <oerjan> ehird`: i don't see how your struct would deal well with (a)(b)*(c)*(d)*
00:10:33 <oerjan> assuming your (*fp)() always is first, that is still essentially a linked list, so needs linked list concatenation
00:11:28 <ehird`> * with stack=[a,b] is a->cdr = pop()
00:11:54 <oerjan> i see
00:11:58 <ehird`> a with stack=[x] is a push with ... wait, i need to rethink this
00:12:09 <ehird`> there's no fp i could reasonably assign a run on 'x'
00:12:21 <ehird`> ah,
00:12:26 <ehird`> not too hard:
00:12:26 <oerjan> then you have to do deep copying when duplicating things
00:12:29 <ehird`> in ul_call,
00:12:35 <ehird`> i just have to check for ->inner
00:12:42 <ehird`> if it's there, push that.
00:13:01 <oerjan> i.e. you are doing hideously mutation there, which _will_ trip you up
00:13:57 <oerjan> i.e. how would you do :*:*:* ?
00:14:29 <ehird`> uh, by duplicating.
00:14:31 <ehird`> then concatting.
00:14:43 <oerjan> oh wait
00:14:49 <oerjan> ehird`> * with stack=[a,b] is a->cdr = pop()
00:15:04 <oerjan> actually my point is, what do you do if a _already_ has a cdr?
00:15:38 <oerjan> (well one point. : may still make things even worse later)
00:16:07 <ehird`> oerjan: that's a good point...
00:16:15 <ehird`> oerjan: So! Suggest another way.
00:16:36 <oerjan> construct a new struct, with car a and cdr b
00:17:07 <ehird`> so typedef void ul_obj;
00:17:11 <ehird`> (so void *)
00:17:14 <ehird`> and have
00:17:17 <ehird`> ul_obj
00:17:19 <ehird`> and ul_pair
00:17:27 <ehird`> with a char tag at the front 0=ul_obj 1=ul_pair
00:17:32 <ehird`> and distinguish them both?
00:17:44 <ehird`> well
00:17:44 <ehird`> ul_atom
00:17:46 <ehird`> and ul_pair
00:18:12 <ehird`> oerjan: ul_atom still has a ul_obj *inner, right?
00:18:14 <ehird`> for a
00:19:19 <oerjan> of course i am really thinking functionally, so i envision all the structs as immutable
00:19:25 <ehird`> nope
00:19:30 <ehird`> well
00:19:34 <ehird`> car a, cdr b is immutable
00:19:43 <ehird`> but ul_atom is not.
00:19:47 <ehird`> inner may change.
00:19:52 <ehird`> but mostly, yeah, i just cons a lot
00:20:08 <oerjan> the point is, if you don't make things immutable then : will require deep copying sometimes
00:20:41 <oerjan> for example, consider ::*::*::*
00:21:04 <oerjan> or anything which leaves a copy of the old version on the stack
00:21:21 <ehird`> i'm doing your way
00:21:26 <ehird`> so it's ALWAYS one cons.
00:21:45 <ehird`> oerjan: it's worth noting you should have thought of the consequences: now ul_call must be recursive.
00:21:55 <oerjan> of course
00:21:56 <ehird`> so i have an arbitary restriction i didn't before.
00:22:06 <ehird`> remember: recursion in C barely ever works well
00:22:13 <ehird`> probably worse than the linked-list slowness.
00:22:13 <oerjan> i see... hm
00:22:20 -!- Jontte has quit ("Konversation terminated!").
00:22:44 <oerjan> you can make your own execution stack
00:22:50 <ehird`> oerjan: yeah right
00:22:54 <ehird`> :)
00:23:06 <oerjan> push the cdr there before going to the car
00:23:20 <ehird`> you do know that all flow control involves lots of lots of ^ right?
00:23:28 <ehird`> normally with hundreds of appends
00:23:31 <ehird`> before my call was tail-recursive
00:23:36 <ehird`> but now i'm going to have Real Big Problems
00:23:43 <ehird`> even with a stack: it
00:23:49 <oerjan> hmph
00:23:49 <ehird`> 's a pain and will probably run out soon
00:24:06 <ehird`> oerjan: do you accept now that my linnked list was better :P
00:24:33 <oerjan> i now accept that there are trade-offs
00:24:38 <ehird`> might be slower but 1. 34583475x faster than any of the interpreters out there anyway (most use O(n) concats anyway) 2. who will notice
00:24:53 <ehird`> mine will at least run all ul programs perfectly
00:24:57 <oerjan> also, that i shouldn't be considered as having the final word on anything involving C or similar low-level languages
00:25:53 <ehird`> so for now i'm going to use a linked list
00:26:27 <oerjan> but anyway, you should think carefully about what is immutable and what requires deep restructuring
00:26:49 <ehird`> the js interp and my scheme interp do the same O(n) concats.
00:27:05 <ehird`> mine is in /C/ fer gods sake, and the code itself is compiled 100%, it's gonna be blazing fast for underload
00:28:11 <oerjan> hm yeah
00:37:38 <ehird`> ok i have my whole prelude/postlude! :D
00:37:45 <ehird`> now for ul2c itself.
00:37:49 <ehird`> that's most of the work done, actually
00:38:22 <ehird`> i defined all of the operations
00:38:24 <ehird`> as functions.
00:38:50 <ehird`> oerjan: my compiler output will be weird :)
00:38:53 <ehird`> there'll be a lot of:
00:39:03 <ehird`> ul_push(ul_func_4, "...code for that...");
00:39:06 <ehird`> in say ul_func_2
00:39:16 <ehird`> and it'll come out in ul_func_1,ul_func_2,... order
00:39:32 <ehird`> so you'll get a ref to the functions and the complete code of the following functions before they come :)
00:39:47 <oerjan> i have sort of assumed that compiler outputs _are_ weird.
00:39:50 <ehird`> if anything this proves you can probably compile unlambda ok
00:39:52 <ehird`> oerjan: heh
00:40:09 <ehird`> my ul2c function will be VERY imperative...
00:40:11 <oerjan> unless the languages compiled from/to are particularly close
00:40:25 <ehird`> mostly define/sets/etc
00:40:35 <ehird`> because i cba to do it another way because my compiler arch is crazy
00:43:13 <ehird`> oerjan: shit, compiling literal nested ()s will be a pain :)
00:44:20 <ehird`> ((abc)def(ghi)) -> ul_push(ul_func_1, "abc"); ul_wrap(); ul_push(ul_func_2, "def"); ul_concat(); ul_push(ul_func_3, "ghi"); ul_wrap(); ul_concat();
00:44:50 <ehird`> to put it another way, ((abc)def(ghi)) -> (abc)a(def)*(ghi)a*
00:45:11 <ehird`> oerjan: but i don't think that will have a big effect on performance.
00:45:45 <ehird`> oerjan: i mean, your original source code isn't used much - mostly you're doing the operations themsevles :)
00:47:54 <oerjan> i don't recall, i guess you cannot declare struct constants involving function pointers?
00:48:04 <ehird`> i use pointers
00:49:04 <oerjan> oh wait
00:50:15 <oerjan> i mean you are not actually compiling the structures themselves, you are compiling how to build them
00:50:22 <ehird`> yeah
00:50:32 <ehird`> i can't compile the structures themselves
00:50:38 -!- calamari has joined.
00:50:45 <oerjan> i suppose C does not support it
00:50:54 <ehird`> it would if ul_push didn't push to a stack
00:50:58 <ehird`> it's just simpler this way anyway
00:51:45 <oerjan> hm no wait
00:52:03 <oerjan> couldn't you still do
00:52:54 <oerjan> ((abc)def(ghi)) -> ul_push(ul_func_0, "(abc)def(ghi)");
00:53:03 <ehird`> no
00:53:10 <ehird`> because what if ul_func_0 wants to execute (abc)
00:53:16 <ehird`> no funcptr there
00:54:01 <oerjan> you would define ul_func_0 as what actually executes (abc)def(ghi)
00:54:22 <oerjan> no need for the ul_concats though
00:55:11 <ehird`> anyway with your ul_func_0
00:55:12 <ehird`> i can't mangle it
00:55:27 <ehird`> like if ul_func_0 did loadsa funky ~ stuff
00:55:47 <oerjan> i.e. ul_func_0 () { ul_push(ul_func_1, "abc"); ul_func_2(); ul_push(ul_func_3, "ghi"); }
00:56:01 <ehird`> more like
00:56:09 <oerjan> (ignoring some stuff)
00:56:16 <ehird`> ul_push(ul_func_1, "abc"); ul_push(ul_func_3, "ghi");
00:56:21 <ehird`> err
00:56:22 <ehird`> 1 and 2
00:56:25 <ehird`> where both 1 and 2 are {}
00:56:27 <ehird`> :)
00:56:28 <ehird`> but yeah
00:56:30 <ehird`> your idea is right
00:56:31 <ehird`> :)
00:57:10 <oerjan> ul_func_2() would be something which called a,b,c in order
00:57:18 <ehird`> uh
00:57:24 <ehird`> no
00:57:28 <ehird`> that would be inline, in ul_func_0
00:57:30 <oerjan> or perhaps just include those directly
00:57:34 <oerjan> right
00:57:34 <ehird`> and
00:57:36 <ehird`> they're NOPs
00:57:40 <ehird`> so: mine is right
00:58:00 <oerjan> um _if_ they're NOPs
00:58:07 <ehird`> they are
00:58:10 <oerjan> i assumed they stood in for something arbitrary
00:58:10 <ehird`> a b and c have no meaning in underload
00:58:12 <ehird`> :P
00:58:15 <ehird`> naw
00:58:16 <ehird`> :P
00:58:26 <oerjan> oh right
00:58:38 <oerjan> because you still want such things for printing
00:58:48 <ehird`> yep
00:59:02 <oerjan> but if they had been :*: instead you would just inline that
00:59:05 <ehird`> funny thought:
00:59:07 <ehird`> i could actually add a debugger to this
00:59:14 <ehird`> since i have the current program at every step of the way...
00:59:18 <ehird`> well, kind of
00:59:19 <ehird`> :D
01:00:12 <oerjan> debugger macros, that you could turn off/on with a flag
01:08:09 * Slereah 's back
01:09:22 <ehird`> if this works first time
01:09:24 <ehird`> i'll eat my hat
01:10:11 <Slereah> Do you have a hat?
01:10:24 <ehird`> ... no.
01:12:25 <oerjan> you'll have to borrow one from GregorR then.
01:14:05 <Slereah> Well, maybe a smaller hat
01:14:12 <Slereah> We don't want him choking.
01:16:36 <Slereah> Is there a Rube interpreter somewhere?
01:16:57 <Slereah> The Cat's eye page isn't even in archives.org
01:17:17 <Slereah> (Well, except the java interpreter)
01:17:54 <oerjan> Slereah: um catseye.webhop.something has been acting up, try catseye.tc i think it is
01:18:15 <Slereah> Ah yes, thanks.
01:19:23 * oerjan wonders if you can put templates in wiki urls
01:19:46 <oerjan> cpressey's webpage moves so often it could need one... :D
01:20:12 <ehird`> i have errorrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrs, oerjan!!!!!!!!!!!!!!!!!!!!!!!!!
01:20:22 <ehird`> I use ul_func_N without predeclaring them
01:20:23 <ehird`> <333333333 C
01:20:34 <oerjan> good!!!!
01:20:46 <ehird`> so gcc HAYTZ MEY
01:20:50 <oerjan> as eating hats can be harmful to your health, i think
01:21:02 <Slereah> Well, depends if it's an edible hat
01:21:09 <Slereah> Like edible panties, but less erotic.
01:22:20 <ehird`> OH YEAH
01:22:21 <ehird`> % ./out
01:22:21 <ehird`> Hello, world!
01:23:22 <oerjan> yay!
01:23:38 <ehird`> damn
01:23:41 <ehird`> (:aSS):aSS doesn't work
01:23:45 <ehird`> % ./out
01:23:45 <ehird`> ERROR -- popped from empty stack
01:24:51 <ehird`> time to add debug code
01:26:15 <ehird`> oerjan: can you check my primitives to see if they have obvious errors?
01:26:24 <ehird`> i think i have a basic logical error in one but i just cant see it
01:26:44 <ehird`> here:
01:26:49 <ehird`> http://rafb.net/p/XEGp7F68.html
01:26:56 -!- sebbu has quit (Success).
01:28:28 <ehird`> oerjan: any ideas?
01:28:35 <ehird`> ohhh
01:28:39 <ehird`> ul_wrap doesn't actually push
01:28:40 <oerjan> ouch i cannot read this
01:28:41 <ehird`> :)
01:28:47 <ehird`> sorry for the lack of indentation, oerjan
01:28:51 <oerjan> whew
01:28:53 <ehird`> it's inlined as a string in my scheme program
01:28:55 <ehird`> and i was very lazy
01:29:02 <oerjan> um i'm not talking about formatting
01:29:02 <ehird`> it's object code, anyway
01:29:03 <ehird`> ;)
01:29:06 <ehird`> what then
01:29:10 <ehird`> the low-levelness of C ;)
01:29:15 <oerjan> yep
01:29:46 <oerjan> i was going to suggest some tests though
01:30:01 <oerjan> (test):SS for : for example
01:31:14 <ehird`> FUCK YEAH!!!
01:31:15 <ehird`> % ./out
01:31:15 <ehird`> (:aSS):aSS
01:31:21 <ehird`> I COMPILED FUCKING >UNDERLOAD<
01:32:04 <ehird`> oh dear
01:32:06 <ehird`> (()(*))(~:^:S*a~^a~!~*~:(/)S^):^ does not compile
01:32:27 <Slereah> Lolass
01:32:35 <ehird`> its an infiniloop :D
01:32:45 <ehird`> void (*ul_func_1)(); ul_push(ul_func_1, "()(*)"); void (*ul_func_2)(); ul_push(ul_func_2, "()(*)");
01:32:47 <ehird`> etc
01:33:19 <oerjan> compile-time infinite loop?
01:33:31 <ehird`> appears so XD
01:33:46 <ehird`> it gets stuck on
01:33:48 <ehird`> "(~:^:S*a~^a~!~*~:(/)S^):^"
01:33:54 <ehird`> and continues outputting that ()(*)
01:33:58 <ehird`> why? no effing idea
01:34:05 <ehird`> oh
01:34:06 <ehird`> duh
01:34:09 <ehird`> i pass prog to find-matching-paren
01:34:10 <ehird`> not p
01:34:35 <ehird`> void ul_func_2(void) {
01:34:36 <ehird`> }
01:34:36 <ehird`> void ul_func_2(void) {
01:34:36 <ehird`> void (*ul_func_1)();
01:34:36 <ehird`> ul_push(ul_func_1, ""
01:34:37 <ehird`> multiple 2s!
01:35:26 <ehird`> oh, duh
01:36:33 <ehird`> grrr
01:45:15 <ehird`> this makes me angry >:(
01:45:45 <Slereah> "You wouldn't like me when I'm angry!"
01:57:10 <ehird`> wtf
01:57:11 <ehird`> zsh: segmentation fault ./out
02:01:17 <ehird`> oerjan:
02:01:29 <ehird`> ((Hello, world!))(S)*^ ; equivilent to (Hello, world!)S
02:01:30 <ehird`> right?
02:02:09 <oerjan> would imagine so
02:10:13 <ehird`> blaahhhh
02:14:56 <ehird`> my fp is being set to NULL somewhere.
02:14:57 <ehird`> WTF.
02:15:35 <oerjan> = vs. == ? :)
02:15:46 <ehird`> nope
02:15:47 <oerjan> (just a guess :D)
02:17:27 -!- Slereah- has joined.
02:17:39 <Slereah-> NEVER HAVE I BEEN MORE ANGRY OR ORANGE
02:17:53 <ehird`> ohhh DUHHH
02:17:58 <oerjan> BUT ARE YOU AGGRY?
02:18:05 -!- Slereah has quit (Nick collision from services.).
02:18:10 <ehird`> i am so dumb.
02:18:10 -!- Slereah- has changed nick to Slereah.
02:18:14 <ehird`> i do funcptr
02:18:15 <ehird`> s
02:18:20 <ehird`> BUT NEVER, EVER ASSIGN TO THEM
02:18:21 <ehird`> :D
02:18:25 <ehird`> retardhird!
02:18:33 <Slereah> Pointers are for squares dude.
02:30:25 <ehird`> my compiler output is slow or: it's broken
02:30:50 <ehird`> well
02:30:52 <ehird`> the bottles of beer works
02:31:02 <ehird`> ill post the source tomorrow
02:31:03 <ehird`> bye guys!
02:31:13 <oerjan> CU
02:32:42 -!- ehird` has changed nick to ehirdsleep.
02:47:22 -!- puzzlet has quit (Remote closed the connection).
02:47:25 -!- puzzlet has joined.
02:53:22 <Slereah> Hm. Wonder if I could make a RUBE-like, but based on Lemmings.
03:03:24 * Slereah slaps Slereah around a bit with a large trout
03:03:33 <Slereah> Oops.
03:03:42 <Slereah> I should play some Lemmings, for further reflexion.
03:04:13 * oerjan sidles carefully away from the lambdabot possessed one
03:04:34 <oerjan> or perhaps that quote is even older, hm
03:04:55 <Slereah> Wut?
03:05:02 <oerjan> * Slereah slaps Slereah around a bit with a large trout
03:05:23 <Slereah> Apparently, there's a button that will cause the action!
03:05:24 <oerjan> last i saw it was with lambdabot's @slap command
03:05:37 <oerjan> oh
03:05:46 <Slereah> Well, when used on a nick, that is.
03:08:36 -!- puzzlet has quit (Remote closed the connection).
03:08:47 -!- puzzlet has joined.
03:08:48 <Slereah> Hm. Lemmings 95 won't run.
03:09:00 <Slereah> I'd better find the original CD and use it on my old laptop
03:16:54 <Slereah> Ah, it's working finally.
04:11:21 <Slereah> Hm. Hello world! would be something like this : http://membres.lycos.fr/bewulf/Russell/Hello%20Lemming.txt
04:13:19 <Slereah> Although, the A should be on the floor.
04:13:38 <Slereah> (Incidentally, this is exactly the first level of the first Lemming game)
04:21:31 <pikhq> Would I be correct in assuming that you are going to design the spec so that that is true?
04:27:43 <Slereah> Well, the O is the gate that drops the little lemmings (waiting in the brackets), and the A is the exit (to the output)
04:28:47 <Slereah> Although the skills for the little buggers are going to be hard to implement.
04:31:53 <Slereah> I'll probably have to make some sort of command for a lemming to destroy or create a new instruction on the path.
05:29:24 -!- Slereah has quit (Read error: 110 (Connection timed out)).
05:41:14 -!- Slereah- has joined.
05:45:52 -!- Sgeo has quit (Read error: 110 (Connection timed out)).
05:51:30 -!- immibis has joined.
05:56:10 -!- oerjan has quit ("Cheap Freudian slips here").
05:57:02 -!- immibis has quit (Read error: 104 (Connection reset by peer)).
06:53:21 -!- calamari has quit ("Leaving").
07:06:52 -!- Jontte has joined.
07:07:35 <oklopol> hi!
07:07:40 <oklopol> just popping by to say nothing
07:07:41 <oklopol> ->
07:08:48 <Slereah-> IT'S A QUINE! :o
07:56:34 -!- tesseracter has quit (Read error: 110 (Connection timed out)).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:15:04 -!- tesseracter has joined.
08:51:04 -!- helios24_ has quit (Read error: 101 (Network is unreachable)).
09:00:42 -!- helios24 has joined.
09:14:25 -!- helios24_ has joined.
09:15:18 -!- helios24 has quit (Read error: 104 (Connection reset by peer)).
09:25:03 -!- helios24_ has quit (Remote closed the connection).
09:28:46 -!- sebbu has joined.
09:33:17 -!- helios24 has joined.
10:01:24 -!- Slereah- has changed nick to Slereah.
10:53:42 -!- JontteG has joined.
10:55:13 -!- JontteG has quit (Remote closed the connection).
13:18:36 -!- jix has joined.
13:24:31 -!- puzzlet_ has joined.
13:24:36 -!- puzzlet has quit (Remote closed the connection).
15:13:02 -!- calamari has joined.
15:29:45 -!- jix has quit (Nick collision from services.).
15:29:56 -!- jix has joined.
15:30:49 -!- calamari has quit ("Leaving").
15:34:28 -!- johnl has joined.
15:58:45 -!- tesseracter has quit (Remote closed the connection).
15:59:33 -!- ehirdsleep has changed nick to ehird`.
16:01:07 <ehird`> ais523 doesn't come here any more, after proving that the world is upside down and becoming filthy rich because of it :(
16:01:11 <ehird`> SO I CAN'T ASK HIM ABOUT UNDERLOAD.
16:02:37 <ehird`> ok i'll just ask people who know about underload. oklopol? maybe? pikhq?
16:02:39 <ehird`> whatever.
16:02:46 <ehird`> which is the most common operation: * or ^
16:02:47 <ehird`> that is:
16:03:12 <ehird`> i can either have ^ potentially die if you use * a few hundred thousand times before using it, and have it relatively inefficient
16:03:17 <ehird`> OR,
16:03:25 <ehird`> i can have * O(n)
16:03:34 <ehird`> where n = the amount of times you've used * before
16:03:45 <ehird`> because it uses a linked list, so it has to follow ->cdr
16:03:48 -!- sebbu2 has joined.
16:11:22 <ehird`> oooh, I hsould write a malbolge compiler
16:11:23 <ehird`> Y/N
16:18:48 -!- sebbu has quit (Connection timed out).
16:25:37 <ehird`> is that even possible?
16:30:03 -!- timotiis has joined.
17:03:32 <ehird`> i don't think it is
17:09:26 <ehird`> unlambda terminaology question:
17:09:32 <ehird`> in `xy, what is 'x' called and what is 'y'?
17:09:38 <ehird`> applicator and applicant?
17:31:26 <oklopol> ehird`: are you just using the underload compiler for compiling unlambda->underload programs?
17:31:41 <oklopol> (unlambda->underload)->C
17:31:42 <ehird`> oklopol: hahaha XD
17:31:52 <oklopol> no haha, just a question :\
17:32:00 <ehird`> that doesn't have c etc
17:32:01 <ehird`> just ski
17:32:05 <oklopol> ...?
17:32:06 <ehird`> != unlambda
17:32:10 <oklopol> i mean, your compiler
17:32:21 <oklopol> it's underload->C right
17:32:21 <ehird`> http://www.esolangs.org/wiki/Underload look at the translations
17:32:25 <ehird`> it isn't full unlambda
17:32:31 <oklopol> what...
17:32:35 <ehird`> oklopol: (unlambda->underload) is missing.
17:32:36 <oklopol> just answer my question :\
17:32:42 <ehird`> i did.
17:33:32 <oklopol> i mean, if you're just doing unlambda->underload programs -> C, then optimizations will be very different from if you want to compile any underload program fast.
17:33:39 <oklopol> i mean, efficiently
17:33:44 <oklopol> i mean, into efficient code
17:34:50 <oklopol> i haven't coded much underload, but i don't think the best way to use it is to do unlambda->underload, and unlambda->underload programs converted using the instructions on the page probably are slower than programs written in 100% underload
17:35:28 <ehird`> ....
17:35:32 <ehird`> what are you talking about.
17:36:05 <oklopol> "which is the most common operation: * or ^"
17:37:47 <oklopol> in case you aren't using your compiler for underload programs as such, but instead translating unlambda to underload to be able to compile unlambda to C
17:37:52 <oklopol> that changes the answer.
17:38:07 <ehird`> i'm compiling underload to C.
17:38:10 <ehird`> very simple.
17:38:40 <ehird`> I can either make * very fast and ^ not guaranteed to always work if the program does an awful, awful lot, or i can make * very slow and ^ guaranteed to work
17:40:04 <oklopol> so unlambda wasn't involved at all?
17:40:14 <oklopol> i thought underload was just an intermediary step.
17:40:44 <oklopol> anyway, i'd say just use a tree structure and have both ^ and * be fast
17:42:02 <ehird`> unl->c and ul->c are two entirely different programs
17:42:11 <ehird`> ul->c, underload->c, is the only non-vaporware one right now
17:42:23 <ehird`> and, oklopol, that's the first option. but ^ then must be recursive.
17:42:34 <ehird`> and recursion in C = lawl, thus what i say about it in my first option
17:43:30 <oklopol> hmm... why would ^ die?
17:43:33 <oklopol> oh, recursion
17:43:42 <oklopol> i don't see why you'd need to use recursion.
17:43:57 <oklopol> you mean when flattening the tree?
17:48:41 <ehird`> um, because
17:48:49 <ehird`> if you have a cons-pair of the tree
17:48:54 <ehird`> where both the car and cdr were once cons'd
17:48:59 <ehird`> then you have to recurse to call them both.
17:50:39 <ehird`> oklopol: and in C, recursion is very shaky
17:50:42 <ehird`> vey very very shaky
17:51:27 <oklopol> i have no idea what you mean by shake, and i don't see why you'd need recursion.
17:52:05 <oklopol> i do know that's easiest to do via recursion, but it's not hard without it...
17:53:12 <ehird`> if i don't have recursion, then i need to manually keep a stack
17:53:16 <ehird`> which is inefficient
17:53:22 <ehird`> also, by shaky, i mean recursion in C /is a bad idea/
17:53:26 <ehird`> you never know when it might fuck up
17:56:53 <ehird`> oklopol: question - does your filesystem support > in filenames
17:57:34 <oklopol> i don't see why it might fuck up, but... err... i guess it does?
17:57:45 <oklopol> what's "my filesystem"?
17:58:49 <oklopol> hmm, so basically what you are saying is you don't wanna use a tree-structure for efficiency because a tree-structure cannot be traversed efficiently?
17:59:09 <ehird`> and yes
17:59:16 <ehird`> but if ^ wasn't nearly as common as *, then ...
17:59:24 <ehird`> also, if i recurse in C then the call stack will run out *QUICKLY*
17:59:29 <ehird`> it's bizzare, really
17:59:35 <ehird`> which is why most people avoid recursion in c
17:59:46 <oklopol> really? in my experience you can recurse as much as you like
18:00:47 <oklopol> hmm...
18:00:55 <ehird`> pff
18:01:00 <ehird`> try writing a recursive factorial in C
18:01:03 <ehird`> then do fact(1000)
18:01:08 <ehird`> watch as you segfault
18:01:10 <oklopol> well, not 1000...
18:01:19 <oklopol> but you'll never get a tree that high
18:01:33 <ehird`> oh yes i will
18:01:39 <ehird`> all unlambda programs cons like crazy
18:02:18 <oklopol> OK, tell me more about these programs doing over 10^300 catenations :-)
18:02:40 <oklopol> (assuming perfect balancing, which of course isn't realistic.)
18:03:15 <oklopol> height grows logarithmically, recursiong depth will *not* be a problem, ever.
18:03:21 * oklopol prepares to eat a hat.
18:03:43 <ehird`> you bet:
18:03:45 <ehird`> http://esoteric.voxelperfect.net/wiki/Underload
18:03:49 <ehird`> (()(*))(~:^:S*a~^a~!~*~:(/)S^):^
18:03:53 <ehird`> that one does infinite conses.
18:04:38 <oklopol> :)
18:04:45 <oklopol> i guess you pwned me bad
18:04:52 <ehird`> yes i did
18:05:15 <oklopol> technicality hats are the best ones
18:05:19 * oklopol takes a bite
18:07:30 <ehird`> mmmmmmm
18:08:58 <ehird`> oklopol: do you think i should have my fancy error messages?
18:09:01 <ehird`> that tell you what went wrong
18:09:09 <ehird`> i could remove all error checking and get super-fast-pwnage programs
18:09:55 <oklopol> error checking is for kids and women!
18:10:24 <oklopol> you could perhaps have both, and like a #define to switch it on/off
18:10:31 <oklopol> in case #define is still cool.
18:10:44 <ehird`> i'd make it a compile-time option
18:10:56 <ehird`> time to rewrite my compiler, I think
18:11:21 <oklopol> HEY, that isn't incremental coding!!
18:11:30 <ehird`> :D
18:11:45 * oklopol kills the heathen
18:12:52 <ehird`> my compiler arch is a bit broken
18:13:29 <ehird`> the problem is: inside a compile, we may need to save some code for later compilation and have the function generated match a name that we can get at the first compile
18:13:32 <ehird`> but they also may depend on others...
18:13:42 <ehird`> right now, it's written in an imperative, global-using type of scheme. :-)
18:16:10 <ehird`> oklopol: and i'm not sure what else i should do
18:18:43 <oklopol> well, currently you are more or less have a c interpreter for underload, and you are just injecting the code
18:18:49 <ehird`> oklopol: no
18:18:52 <ehird`> no i'm not
18:18:52 <oklopol> no?
18:18:54 <ehird`> you are totally wrong
18:18:56 <oklopol> i see
18:19:11 <oklopol> int main(void) {
18:19:11 <oklopol> ul_push(ul_func_0, "(:aSS):aSS");
18:19:11 <oklopol> ul_call();
18:19:11 <oklopol> printf("\n");
18:19:11 <oklopol> return 0;
18:19:12 <oklopol> }
18:19:18 <ehird`> aha, but
18:19:21 <ehird`> ul_func_0
18:19:22 <oklopol> hmmmm
18:19:25 <oklopol> ah!
18:19:26 <ehird`> has that compiled
18:19:29 <ehird`> look
18:19:33 <oklopol> sorry, i didn't look carefully enough.
18:19:42 <ehird`> it's pretty clever :-)
18:19:43 <oklopol> (just looked at main.)
18:19:45 <ehird`> that's an old version of the output though
18:19:58 <ehird`> but yeah i most certainly do compile
18:20:23 <ehird`> oklopol: the thing is ul_func_0 may suddenly need to make a ul_func_1
18:20:27 <ehird`> i have an easy solution to this problem:
18:20:30 <ehird`> pre-parse the code
18:21:37 <oklopol> you indeed do compile it.
18:21:41 <oklopol> quite nice
18:21:44 <ehird`> yes, yes i do
18:21:44 <ehird`> :D
18:21:54 <ehird`> ul_concat is perhaps a little bit cheating, but not really
18:22:10 <ehird`> i still take all the instructions and compile them down to c code that performs those operations natively
18:27:29 -!- pikhq has quit (Read error: 104 (Connection reset by peer)).
18:27:55 <ehird`> my architechture is fucked :P
18:30:09 <oklopol> well, to do * properly, you'd basically need to be able to make machine code at runtime.
18:30:53 <ehird`> exactly :)
18:30:57 <ehird`> so i think mine is a nice trade-off
18:31:00 <ehird`> ooh, wait
18:31:05 <ehird`> i can make an O(1) *!
18:31:10 <ehird`> just add a pointer to 'end'
18:31:12 <ehird`> duuuuuuuh :)
18:31:49 <ehird`> oklopol: now my compiler is truly awesome
18:31:58 -!- pikhq has joined.
18:34:28 <ehird`> pikhq: MY COMPILER CAN HAVE O(1) *.
18:34:35 <ehird`> AS WELL AS TAIL-RECURSIVE ^.
18:34:44 <ehird`> = best underload implementation yet
18:34:49 <oklopol> not a bad idea
18:34:54 <ehird`> the JS one is O(n) *, iirc
18:35:01 <ehird`> dunno, but whatever
18:35:04 <ehird`> it's compiled, too, so yay
18:35:58 <ehird`> now i just have to make the code functional.
18:35:59 <ehird`> :P
18:36:04 <ehird`> functional = non-imperative fubnctional
18:49:48 <ehird`> an underload parser parsing to a list is actually pretty non-trivial
18:49:50 <ehird`> the idea is simple:
18:50:01 <ehird`> ((abc)def)ghi ->
18:50:19 <ehird`> ((1 ghi) (2 def) (abc))
18:50:24 <ehird`> abc(def)ghi ->
18:50:33 <ehird`> ((abc 1 ghi) (def))
18:53:00 -!- ais523 has joined.
18:53:11 <ais523> I saw you were discussing Underload from the logs. How could I not join?
18:54:06 <ais523> <ehird`> ais523 doesn't come here any more, after proving that the world is upside down and becoming filthy rich because of it :(
18:54:27 * ais523 doesn't come here any more, due to being busy from the fallout...
18:54:37 <ehird`> hahahaha
18:54:42 <ehird`> ais523: I wrote an underload compiler!
18:54:44 <ehird`> It compiles to C.
18:54:55 <ehird`> And it runs all underload programs, and doesn't embed an interpreter.
18:55:04 <ehird`> I'm now rewriting it so it isn't such a mess of hideous code!
18:55:05 <ais523> Impressive. I just finished posting my bf (without input) to Underload compiler
18:55:14 <ehird`> :D
18:55:39 <ais523> http://pastebin.ca/847012
18:56:10 * ais523 continues to read the logs
18:57:42 <ehird`> ais523: the main thing is that nested parens have to be unrolled
18:57:49 <ehird`> ((abc)def)ghi -> three functions
18:57:59 <ehird`> with the 'ghi' containing a push of the (abc)def
18:58:03 <ehird`> (abc)def pushing (abc)
18:58:10 <ehird`> and that's ugly in my current compiler
18:58:16 <ehird`> i'm writing a parser that does most of that for me, so.
18:58:18 <ais523> to answer your question about ^ and *, * is more common, but ^ absolutely has to be tail-recursive so that infinite loops are possible
18:58:20 <ehird`> (it's written in Scheme)
18:58:36 <ehird`> ais523: yep, i KO'd oklopol with that beforehand
18:58:42 <ehird`> and i found a way to make * fast
18:58:46 <ehird`> just keep a ptr to 'end'
18:59:01 <ehird`> i know, ridiculously simple, why didn't i think of it before
18:59:31 <ais523> How do you deal with memory allocation?
18:59:46 <ais523> presumably by reallocing the original string if it's too small before copying onto it?
18:59:52 <oklopol> KO'd me?
18:59:54 <oklopol> hmm
19:00:13 <ais523> and doesn't that leave * as O(n) anyway due to the need to copy each byte of the string that's being copied over
19:00:19 <ais523> or are you representing strings as linked lists?
19:01:32 <ehird`> ais523: ul_print handles that
19:01:56 <ais523> are you just referring to bits of the code I can't see or is the source online somewhere?
19:02:14 <ehird`> yes, i am
19:02:33 <ehird`> it cats them and wraps in parens at print-time
19:02:51 <ais523> so are you using linked lists as strings?
19:03:06 <ais523> I wrote an interpreter for some language that did that at one point. Can't remember which language, though
19:03:24 <ehird`> no...
19:03:41 <ehird`> when you concat it appends to the linked list
19:03:44 <ehird`> an object is a linked list.
19:03:52 <ehird`> each has a 'str' which is as big as possible at compile time
19:03:55 <ehird`> print prints these out sequentially
19:04:01 <ais523> linked list of strings is the best of both worlds, I suppose
19:05:21 <ais523> Underload really needs proper I/O extensions, I reckon, so that it's actually possible to do things like self-interpreters and to make it BF-complete
19:05:30 <ehird`> no no no ais523!!!
19:05:32 <ehird`> if you can do input then ^
19:05:35 <ehird`> then my compiler can't work
19:05:39 <ehird`> :(
19:05:55 <ehird`> it relies on having all the code that can ever possibly be reached at compile-time
19:06:02 <ehird`> that's why it's so efficient
19:06:16 <ais523> if you're inputting as Church numerals, then all you need is zero and Church-increment
19:06:17 <ehird`> if you can do input but that makes it un-^able though i guess that's ok :P
19:06:31 <ais523> which are (!()) and (:)~*(*)*
19:06:38 <ehird`> "if you can do input but that makes it un-^able though i guess that's ok :P"
19:06:40 <ehird`> see that
19:06:45 <ais523> I saw that
19:06:54 <ais523> but how else could you determine what it was?
19:07:13 <ehird`> ???
19:07:16 <ais523> OTOH, if input is church numerals, then its behaviour on ^ing is defined; it just repeats the TOS the correct number of times
19:07:23 <ehird`> on input:
19:07:25 <ais523> that's sort of the definition of Church numerals
19:07:27 <ehird`> .evalable=false;
19:07:32 <ehird`> then ^ on it -> BLEEEEP
19:07:52 <ais523> what operations would be available on it other than cat, then?
19:08:12 <ehird`> none?
19:08:13 <ehird`> that's enough.
19:08:17 <ais523> the problem with Underload is that everything has to be evaluated to be able to tell what it actually is...
19:08:21 <ehird`> i think...
19:08:23 <ehird`> ah
19:08:27 <ehird`> then ... no input
19:08:30 <ehird`> please! :-)
19:08:35 <ais523> and there's no point allowing input to a program if all you could do is output it again
19:08:38 <ehird`> actually
19:08:40 <ehird`> do you mean like:
19:08:42 <ehird`> 'abc'
19:08:44 <ehird`> is
19:08:47 <ehird`> church numeral for ascii of a
19:08:48 <ehird`> thenb
19:08:50 <ehird`> then c?
19:08:51 <ais523> that's it
19:08:57 <ehird`> if so, that's good, i can do that without having an interpreter
19:09:06 <ais523> that's what I'd just realised
19:09:15 <ehird`> But. Yeah. I want my new compiler done first :|
19:09:16 <ehird`> :P
19:09:18 <ais523> because you can just have a church-numeral function in the code
19:09:20 <ehird`> goddamn parser
19:09:41 <ais523> that's fine, any input extension would probably be a new language
19:09:52 <ais523> because it would spoil the beautiful tarpitness
19:11:27 <ehird`> ais523! write my parser for me
19:11:43 <ais523> I'd better get clear on the spec first, then
19:11:55 <ais523> and you just know I'll write it in some completely unacceptable language
19:11:58 <ehird`> i understand the spec fine
19:11:59 <ehird`> :P
19:12:05 <ehird`> oh
19:12:05 <ais523> but I don't...
19:12:07 <ehird`> heh
19:12:09 <ehird`> Write it in scheme!
19:12:12 <ehird`> because my compiler's in scheme! :P
19:12:13 <ehird`> haha
19:12:19 <ehird`> naw i'm sure i can figure it out ;)
19:12:21 <ais523> I'm not sure if I have a scheme interpreter just here
19:12:35 <ais523> maybe I should write it in elisp, that shouldn't be too hard to translate from...
19:13:20 <ais523> now, as for implementing the rest of the Unlambda operations in Underload...
19:13:21 <ehird`> aieee :D
19:13:29 <ehird`> hahaha
19:13:31 <ehird`> `cx
19:13:39 <ehird`> -> simple translations,say bye bye
19:13:43 * ais523 has forgotten what x does
19:14:15 <ais523> but as for c, all you need to write is something that can save and restore the current stack
19:14:17 <ehird`> er, it doesn't
19:14:22 <ehird`> i meant `cPLACEHOLDER
19:14:25 <ehird`> and yeah
19:14:55 <ais523> so if you have some way to recognise the bottom of the stack, say by inserting a dummy entry between every stack entry, it shouldn't be too hard
19:15:09 <ehird`> ais523: re: scheme interpreter, I reccomend Chicken Scheme
19:15:14 <ais523> d may be harder, though, as I find it a bit hard to get my head round
19:15:15 <ehird`> well, it's a compiler. But it includes an interpreter.
19:15:28 <ehird`> http://www.call-with-current-continuation.org/ There are windows binaries, too.
19:15:32 * ais523 is currently using a computer on which they can't install software
19:15:38 <ehird`> aww
19:15:42 <ais523> why else do you think I'd be using this aeons-old IRC client?
19:15:42 <ehird`> ooh, that inspires me
19:15:47 <ehird`> I should write a scheme in javascript
19:16:27 <ehird`> but first.
19:16:32 <ehird`> make this damn parser
19:17:14 <ais523> d is actually very hard to translate into reverse-Polish
19:17:27 <ais523> because you have to know the second argument to ` before determining whether to evaluate the first one...
19:17:48 <ais523> s/`/^/
19:17:53 <ehird`> ais523: parse unlambda program, THEN do conversion
19:18:06 <ais523> ignore everything I just said, I was confused
19:18:23 <ais523> what you have to do is not to do evaluation while there's a d on top of the stack
19:18:23 <ehird`> :D
19:19:56 <ais523> not just on top of the stack, what you have to do is not to do evaluating while there's a d anywhere in the stack
19:20:26 <ais523> but a `promise' is fine to have in the stack, and evaluating it should lazily evaluate the original code
19:22:17 <ais523> of course, v is easy, it's ((a(:^)*):^)
19:22:43 <ais523> sorry, that needs a pop... (!(a(:^)*):^)
19:23:22 <ais523> !ul (is this still working?)S
19:23:27 <ais523> !ps d
19:23:46 <ais523> oh, EgoBot isn't here
19:26:36 <ehird`> :D
19:27:20 * ais523 is trying to figure out what happens when a construct like ```kdi`.xi is run through an Unlambda interpreter
19:27:43 <ais523> the ``kdi translates to d, thus preventing the `.xi being run
19:31:36 <ais523> OK, when there's a d anywhere in the stack, ~^ should instead do *(~^)*a rather than what it normally does, to preserve the semantics of d
19:31:42 <ais523> and d itself should be a no-op
19:31:57 <ais523> correction: when there's a d anywhere in the stack below the top element
19:37:50 <ehird`> ais523: Maybe I should pre-parse some programs first.
19:38:46 <ais523> the problem is to change subnodes into pointers, by the look of it
19:39:02 <ais523> that would likely be pretty easy with a parser-generator like yacc
19:40:37 <oklopol> parser-generators are for wimps
19:41:26 <ehird`> ais523: yacc for... scheme.
19:41:28 <ehird`> i seeeeeeeeeeeeeeeeeeeeeeee.
19:41:41 <ais523> there's probably some version knocking around somewhere
19:41:44 <oklopol> hey, fun idea
19:41:47 <oklopol> indeewd
19:41:51 <oklopol> so fun it must exist
19:42:08 <ehird`> no thanks ais523
19:42:09 <ehird`> :P
19:48:27 <ehird`> ais523: i should write a scheme->underload
19:48:42 <ais523> possibly easier than unlambda->underload, I suppose...
19:48:57 <ais523> and easier still than scheme->malbolge
19:55:22 <ehird`> ais523: I mean full scheme
19:55:25 <ehird`> 100% R5RS scheme.
19:55:26 <ehird`> :D
19:55:29 <ehird`> well, sans IO
19:55:35 <ais523> probably harder, in that case
19:55:41 <ehird`> that includes dynamic-wind
19:55:43 <ehird`> dynamic-effing-wind
20:01:29 * ais523 had better go
20:01:33 -!- ais523 has quit.
20:02:30 <ehird`> dmanit
20:02:49 <ehird`> :P
20:24:16 -!- timotiis_ has joined.
20:28:14 -!- bsmntbombdood_ has changed nick to bsmntbombdood.
20:38:56 -!- timotiis has quit (Read error: 110 (Connection timed out)).
20:42:57 -!- Jontte has quit (Remote closed the connection).
21:01:15 -!- Hiato has joined.
21:01:21 <Hiato> Gues who's back :P
21:01:29 <tejeez> you
21:01:37 <Hiato> how'd you know ;)
21:03:36 <tejeez> i've got a crystall ball that tells me everything!
21:04:02 <Hiato> can it solve the halting problem, I've got some code here... :P
21:04:21 <tejeez> at least some very obvious things.. well.. it actually doesn't work with buggy code very well :(
21:04:44 <Hiato> gee, thanks ;)
21:05:56 -!- timotiis_ has changed nick to timotiis.
21:08:38 <Hiato> I wonder if GregorR is even still alive....
21:11:16 <oklopol> i bet he's been playing hydra for 2 weeks straight and is soon the world champuon
21:11:19 <oklopol> champion
21:11:33 <Hiato> what's Hydra?
21:11:46 <oklopol> depends
21:11:53 <oklopol> when did you first join this channel?
21:12:01 <Hiato> isn't it the IRC thingy
21:12:05 <Hiato> hrmm
21:12:13 <Hiato> november ish
21:12:14 <Hiato> I think
21:12:16 <oklopol> GregorR's card game
21:12:20 <Hiato> oh, I see
21:12:35 <oklopol> but i don't like telling people things they *should've* read from the logs!
21:12:36 <Hiato> it is also an IRC client (or was)
21:12:40 <Hiato> heh
21:12:43 <Hiato> ;)
21:13:01 <oklopol> it's not fair just me and oerjan waste our time doing that :)
21:13:21 <oklopol> or then oerjan just checks for highlights.
21:13:39 <Hiato> haha, no don't worry, I bothered reading yesterday and the day beofre's logs (kinda) beofre I came ;)
21:14:17 <oklopol> i kinda wish i was less addicted to irc
21:14:45 <Hiato> heh, join the club, or should I say IRC channel :P
21:15:27 * oklopol joins #club
21:15:41 <Hiato> roflol :D
21:18:59 <Hiato> I wish I could use Ogre3D ... :(
21:23:52 <ehird`> i joined here sometime in 2006
21:24:01 <ehird`> nov 06?
21:24:03 <ehird`> sounds about right
21:24:15 <ehird`> wow, have i really been here a year?
21:24:20 <ehird`> that can't be right...
21:25:54 -!- GreaseMonkey has joined.
21:26:33 <Hiato> http://it.youtube.com/watch?v=Jd3-eiid-Uw
21:26:44 <Hiato> this guy is a genius :D :D :D
21:26:58 <Hiato> can't wait till games turn like this :D
21:30:52 <Hiato> watch it, please
21:30:56 <Hiato> so that you also go wow
21:30:58 <Hiato> ;)
21:31:11 <Hiato> don't know why it's italian
21:31:17 <Hiato> but hey, who cares :D
21:31:26 <Hiato> (PS: It's in english)
21:32:36 <oklopol> Hiato: that's actually not that hard to do
21:33:02 <Hiato> Awesome, but anyway, it is COOL to do ;)
21:33:18 <Hiato> can't wait until Crytek incorporates this ) or valve or whoever :P
21:33:26 <oklopol> if you have a way to do 3d graphics, you will have a virtual camera direction vector and position anyway
21:33:48 <oklopol> so you basically just have to set the virtual cam to move as the real cam moves
21:33:52 <Hiato> yes, but the idea of tracking a players head makes it that much more interesting
21:34:02 <Hiato> yes, I understand how it works
21:34:11 <Hiato> I would just like to see it in commercial games
21:34:15 <Hiato> that's all ;)
21:34:29 <oklopol> yeah, it's awesome
21:34:48 <oklopol> i wouldn't like seeing it in commercial games, since it'd just suck like every other game.
21:35:07 <oklopol> i'd like to see it in a game i've made myself
21:35:11 <Hiato> say waa? I like my games :)
21:35:14 <Hiato> Yeah
21:35:15 <oklopol> have i mentioned my games are awesome
21:35:32 <Hiato> that would be nice, but the camera code in Irrlicht is so screwy, It would never work...
21:35:37 <Hiato> oh, really..
21:35:39 <Hiato> :P
21:35:50 <Hiato> My game is pretty much grouned
21:36:07 <oklopol> shuuure
21:36:12 <Hiato> until I re-write the camera object, which will probably never happen...
21:37:17 <oklopol> you do games?
21:37:53 <Hiato> Yes, I do. Making 2D ones in delphi, I have done a lot. But 3D ones, with Irrlicht
21:37:57 <Hiato> is very difficult
21:38:03 <Hiato> because my C group sucks
21:38:15 <Hiato> and I also don't like the C group of languages
21:38:20 <Hiato> in terms of playing
21:38:28 <Hiato> I'm a serious gamer :D
21:56:44 -!- Hiato has left (?).
22:12:25 -!- jix has quit ("CommandQ").
23:02:40 <ehird`> stack-based lambda calculus:
23:02:52 <ehird`> (:`)(:`)`
23:03:28 <ehird`> 0 = (<)
23:03:54 <ehird`> 1 = ((`))
23:05:25 <pikhq> ehird`: Nice.
23:06:47 <ehird`> hm
23:06:50 <ehird`> with currying, it's hard
23:07:03 <ehird`> essentially the stack becomes useless.
23:08:02 <ehird`> pikhq: since you're alive:
23:08:08 <ehird`> can you name a few languages that people haven't compiled yet?
23:08:28 <ehird`> e.g. when i compiled underload, most people would give it a cursory glance and say that a compiler would be impossible
23:08:30 <ehird`> because of ^ and * and a
23:08:38 <ehird`> i want something like that so i can prove them wrong :D
23:09:58 <pikhq> Dimensifuck.
23:13:03 <ehird`> link
23:14:29 <ehird`> ooh i know what i should do
23:14:35 <ehird`> write a Brainhype interpreter in Scheme-omega!
23:15:43 -!- timotiis has quit ("leaving").
23:22:59 <ehird`> pikhq: Dimensifuck=
23:23:14 <ehird`> ah
23:23:17 <ehird`> you made it
23:23:18 <ehird`> :)
23:23:41 <ehird`> hm pikhq that makes no sense
23:23:41 <ehird`> :)
23:26:39 <pikhq> :D
23:38:06 <ehird`> there should be an esolang X which has a 'wimpmode' X-1. X reads a program, constructs a number from how 'line-noise/random-typing' the program looks, then uses that as a godel number for an X-1 program, which is then run.
23:39:29 <pikhq> I like.
23:40:27 <ehird`> :D
23:40:28 <ehird`> pikhq: Comment, alive person!
23:40:47 <pikhq> Um, that's fuckin' *evil*?
23:40:49 <ehird`> Good, go write a spec.
23:41:08 <ehird`> Yes, I know it's evil that I'm making you do my labours.
23:41:19 <ehird`> But I didn't ask for your opinion, spec-writing slave!
23:42:24 <ehird`> pikhq: I am writing a Glass->C compiler.
23:42:36 <ehird`> Now Glass can run faster than ever!
23:42:54 <pikhq> Try a Glass->C++ compiler. Might be easier.
23:45:10 <ehird`> pikhq: But even better, of course, since it optimizes away the base classes.
23:45:10 <ehird`> pikhq: Think it'd be worth writing it in Glass? Might be a bit painful :P
23:45:43 <pikhq> Glass is actually not that painful.
23:45:53 <pikhq> It's *remarkably* terse, but fairly feature-filled.
23:46:13 <ehird`> C++ is evil
23:46:20 <ehird`> C is far cooler to compile to, also :D
23:46:28 <ehird`> pikhq: I guess, but for the parser...
23:47:07 <ehird`> pikhq: Are there any glass programs apart from beer/bf/fibonacci/hello_world/rand?
23:47:24 <pikhq> Ask Gregor.
23:47:34 <ehird`> GregorR: Ask.
23:47:55 <ehird`> There is an upside to writing the compiler in glass: metacircularness
23:49:26 <ehird`> pikhq: Even so, parsing Glass isn't like your typical trivial esolang...
23:49:42 <ehird`> Plus I'd have to write parsetree objects..
23:50:27 <ehird`> pikhq: OK, you decide for me. :P Should I write the compiler in Glass or something else?
23:50:50 <pikhq> The term is "self-hosting".
23:51:47 <pikhq> Glass.
23:52:12 <ehird`> pikhq: Actually I object to the term 'self-hosting'
23:52:20 <ehird`> it implies that you 'stack up' compilers
23:52:22 <ehird`> whereas it's more like tail recursion.
23:52:30 <pikhq> Then you object to computer science.
23:52:31 <ehird`> pikhq: Got a glass-mode.el? :P
23:52:35 <pikhq> Nope.
23:52:40 <pikhq> If you have one, please let me know.
23:52:44 <pikhq> :p
23:53:04 <pikhq> Hell, a plof-mode.el would be damned spiffy.
23:53:07 <ehird`> pikhq: Yeah, so maybe I do.
23:53:22 <ehird`> pikhq: Oh, I still have to write Calculus/pebble.bfm don't I?
23:53:39 <pikhq> If you're insane, yes.
23:53:45 <pikhq> (you sure may. ;))
23:54:14 <ehird`> pikhq: When I write pebble.bfm, should I write the C backend or the BF backend first?
23:54:47 <pikhq> Either one; your choice.
23:54:57 <pikhq> Although the BF backend is certainly amusing.
23:55:09 <ehird`> 'amusing'? More like 'the main use'
23:55:18 <pikhq> True, true.
23:55:24 <ehird`> You can see it seeping through every part of PEBBLE, from the tempvars to everything else
23:55:43 <pikhq> The C backend is basically just a really fancy Brainfuck optimiser. ;)
23:57:17 <ehird`> exactly
23:57:25 <ehird`> you can use PFUCK for that if you desire
23:57:32 <ehird`> actually I might make an ultra-PFUCK sometime
23:57:47 <ehird`> that has many backends (i guess: C, machine code, and for laughs PEBBLE) and optimizes to hell :P
23:57:58 <ehird`> just for the novelty of having it be brainfuck
23:58:12 <ehird`> and also for compiling itself to brainfuck, then uncompiling that to PEBBLE with itself
23:58:13 <ehird`> :D
23:59:46 <ehird`> Oh by the way, pikhq, does the reference Glass interpreter gc?
2008-01-09
00:01:50 <pikhq> I think it does, but I'm not sure.
00:02:54 <ehird`> Hmmm, that means i'd have to gc in my outoput
00:02:56 <ehird`> :(
00:05:20 * ehird` puts it on the TODO list
00:05:31 <ehird`> pikhq: How many lines is PEBBLE with the BF backend?
00:06:58 -!- pikhq has quit (Read error: 104 (Connection reset by peer)).
00:08:01 -!- pikhq has joined.
00:08:11 <ehird`> in case you didn't get thjat
00:08:12 <ehird`> pikhq: How many lines is PEBBLE with the BF backend?
00:08:28 <pikhq> 1127 lines.
00:08:43 <pikhq> No. I missed a file. 1246.
00:08:48 <pikhq> Ignoring macros.
00:09:03 <pikhq> Ooops. Stuck in the interp backend.
00:09:08 <pikhq> *1075*. Still.
00:09:09 <ehird`> Ignoring the stdlib right?
00:09:11 <pikhq> Quite a few lines.
00:09:26 <ehird`> I want the full compiler's source, without C-related bits, without the stdlib
00:09:29 <ehird`> how many lines?
00:10:44 <ehird`> pikhq: ping :)
00:12:36 <ehird`> pikhq: "CALCULUS - Common Administrator's Language Compilation Unit for Language Unity under Stalin"
00:13:51 <ehird`> pikhq: You have 785 lines without optimization files
00:14:13 <ehird`> pikhq: I think in PEBBLE I might be able to get 2500-3500 lines or so?
00:14:17 <ehird`> With no optimizations at all.
00:15:41 <ehird`> pikhq: Oh, plus the parser, which will be about another 500 lines I guess
00:15:50 <ehird`> pikhq: Am I crazy yet?
00:18:59 -!- sebbu has joined.
00:20:45 <ehird`> pikhq: ping
00:20:55 -!- pikhq_ has joined.
00:23:19 <ehird`> pikhq_: ping?
00:25:29 <pikhq_> Pong.
00:25:38 -!- pikhq has quit (Nick collision from services.).
00:25:39 -!- pikhq_ has changed nick to pikhq.
00:25:47 <ehird`> what is the last message you god
00:25:50 <ehird`> *got
00:25:57 <pikhq> 17:09 < ehird`> I want the full compiler's source, without C-related bits, without the stdlib
00:26:05 <pikhq> 1075 lines of code.
00:26:38 <ehird`> I'll re-say what I said, at a slow pace so you can respond :P
00:26:42 <ehird`> pikhq: "CALCULUS - Common Administrator's Language Compilation Unit for Language Unity under Stalin"
00:27:07 <pikhq> :D
00:27:46 <ehird`> pikhq: You have 785 lines without optimization filespikhq: You have 785 lines without optimization files
00:28:00 <ehird`> pikhq: I think in PEBBLE I might be able to get 2500-3500 lines or so? With no optimization at all.
00:28:04 <ehird`> pikhq: Oh, plus the parser, which will be about another 500 lines I guess
00:28:08 <ehird`> ^^^ end of repetitions ^^^^
00:28:25 <pikhq> Oooh,
00:28:31 <pikhq> I wish you luck.
00:28:50 <pikhq> I will confess: I've been meaning to do a rewrite of PEBBLE some time.
00:28:56 <ehird`> language?
00:28:57 <ehird`> or implementation
00:29:05 <pikhq> Implementation.
00:29:15 <pikhq> Although I might change the language radically, too. . .
00:29:28 <oklopol> ehird`: jix has made a math lib in glass
00:29:30 <ehird`> Yeah -- get rid of the temp vars! >:(
00:29:31 <oklopol> jixmath
00:29:35 <ehird`> oklopol: where?
00:30:07 <pikhq> ehird`: How?
00:30:14 <pikhq> ;)
00:30:26 <ehird`> pikhq: Automatically allocate them.
00:30:36 <ehird`> pikhq: That is: make the compiler less of a dumb macro system. :-)
00:30:36 <pikhq> Mmkay.
00:30:53 <pikhq> Maybe even change the syntax slightly to be more, well, formal.
00:31:03 <ehird`> pikhq: Yes, non-tcl would be nice :P
00:31:15 <ehird`> actually a C-like syntax fits in very well with brainfuck, as opposed to lispy/tcl-y
00:31:25 <ehird`> because you don't think of it as (set! a b)
00:31:31 <ehird`> it's not something you 'call out' to
00:31:33 <ehird`> it's very primitive
00:31:36 <ehird`> so a = b makes sense
00:32:28 <oklopol> i have no idea where jixmath is
00:32:31 <oklopol> i just know it exists
00:32:44 <oklopol> and that it's in egobot
00:32:56 <pikhq> I have an idea.
00:33:12 <pikhq> A set of syscalls, which are like the basic PEBBLE macros. . .
00:33:12 <ehird`> ?
00:33:16 <oklopol> gotta sleep, went to sleep an hour ago actually, but suddenly realized i have to finish a program :\
00:33:24 <ehird`> pikhq: ?
00:33:32 -!- sebbu2 has quit (Connection timed out).
00:33:36 <oklopol> cya --->
00:33:37 <pikhq> And a compiler which runs sanely, parsing expressions and such into calls to those macros . .
00:33:58 <ehird`> pikhq: doesn't seem anything too interesting to me
00:34:02 <ehird`> just a bytecode.
00:34:16 <pikhq> So, one would have "func add(x, y){x+y}" which would compile into the addvar x
00:34:19 <pikhq> > y : temp1
00:34:27 <ehird`> hmm no
00:34:28 <pikhq> I dunno.
00:34:30 <ehird`> don't really like that
00:34:33 <ehird`> too much internals
00:34:43 <ehird`> however, i do think one thing
00:34:47 <ehird`> C-like syntax /with macros/
00:34:55 <pikhq> Then we'd have bfc.
00:35:01 <ehird`> so, say there was no 'func' (probably true, since it's quite a big job to implement them)
00:35:07 <ehird`> (let's call it 'proc')
00:35:12 <ehird`> just 'macro'
00:35:12 <ehird`> we could do:
00:35:49 <pikhq> Actually, at this rate, I may want to call it a completely different language.
00:35:54 <ehird`> macro <proc $name($*args) { $*body }> { ... }
00:36:20 <ehird`> well, maybe more than that would be required
00:36:24 <pikhq> Something much more fully-featured, rather than bare-bones. . .
00:36:29 <ehird`> macro <proc $name($,args) { $*body }> { ... }
00:36:33 <pikhq> Perhaps supporting PSOX out of the box.
00:36:35 <ehird`> if , means 'comma-seperated names'
00:36:44 <ehird`> pikhq: PSOX is bloated vaporware :P
00:36:59 <ehird`> (apologies to Sgeo. :P)
00:37:09 <pikhq> ehird`: I'll grant you the vaporware bit.
00:37:26 <ehird`> also bloated in the over-engineered sense
00:37:32 <pikhq> True, true.
00:37:51 <pikhq> Perhaps a very simple interaction layer could be used to make this insanely more full-featured.
00:37:51 <ehird`> If I were you I'd make the compiler backend agnostic
00:37:56 <ehird`> So you could compile to befunge too or whatever.
00:38:17 <ehird`> and the 'plain BF' backend would just crap out on compiling primitive IO operations other than read/write stdout
00:38:29 <pikhq> Mmkay.
00:38:33 <ehird`> you could have a 'PSOX BF', 'PSOX Befunge', 'EsoAPI BF', ... too
00:38:52 <pikhq> What, then, shall be the syntax?
00:39:01 <ehird`> for what
00:39:07 <pikhq> For this language.
00:39:11 * pikhq hems & haws
00:39:15 <ehird`> Ah.
00:39:17 <ehird`> C-alike I think
00:39:31 <ehird`> I'll write what's in /my/ mind on a pastebin... an example of sorts
00:40:55 <pikhq> Mmkay.
00:45:35 <ehird`> ok:
00:46:04 <ehird`> i just realised recursive macros will work badly, for e.g. factorial
00:46:08 <ehird`> you'd need to know the value at compile-time
00:46:13 <ehird`> so i'm rewriting it as non-recursive :)
00:46:14 <pikhq> Well, yes.
00:47:38 -!- pikhq_ has joined.
00:48:55 <ehird`> pikhq: Give me something other than a factorial to use as an example :P
00:49:06 <ehird`> Preferably something that doesnt' require me to define new variables in the resulting code
00:49:12 <ehird`> (why will be apparent soon)
00:49:32 -!- GreaseMonkey has changed nick to N0body.
00:49:59 -!- N0body has changed nick to GreaseMonkey.
00:52:08 <ehird`> bah
00:52:09 <ehird`> ok
00:52:12 <ehird`> i'll define somethiing simple
00:53:32 <ehird`> ok, pikhq :
00:53:35 <ehird`> http://rafb.net/p/OzgiHQ78.html
00:53:51 <ehird`> i'd expect hygenic macros to be there too, and maybe something that lets you define a pseudo-function without sigils etc :-)
00:54:17 <ehird`> `{...}, of course, is program quoting
00:54:41 <pikhq_> That is going to be a *painful* syntax to parse.
00:55:23 <ehird`> pikhq_: No more than C++. :)
00:55:30 <ehird`> Why is that painful, anyway?
00:55:35 <ehird`> the <...> in macro?
00:55:54 <pikhq_> Yeah.
00:56:09 <pikhq_> Namely, that it appears to entail runtime-modifiable syntax.
00:56:17 <ehird`> noooooo
00:56:22 <ehird`> no it doesn't
00:56:24 <ehird`> why would it?
00:56:27 <ehird`> that's all compile time
00:56:32 <pikhq_> macro <$n+$z> { __builtin($n, $z) }
00:56:43 <pikhq_> Okay, fine. Compiletime-modifiable syntax. Sorry.
00:56:48 <pikhq_> Still, messed up.
00:57:00 <ehird`> pikhq_: you'd need some kind of declarator there to specify it's a binary op
00:57:05 <ehird`> it's not >totally< free syntax
00:57:13 <pikhq_> It's still fairly painful.
00:57:23 <ehird`> plus it allows for implementing e.g. procedures in it even if you don't include them in the core
00:57:24 -!- pikhq has quit (Nick collision from services.).
00:57:24 <ehird`> which is very nice
00:57:25 -!- pikhq_ has changed nick to pikhq.
00:57:34 <pikhq> True.
00:57:41 <pikhq> Painful as fuck, but useful.
00:57:59 <ehird`> painful as fuck for the time when you first write down it in the compiler
00:58:01 <ehird`> after that, wonderful
00:58:02 <ehird`> :-)
00:58:15 <ehird`> Of course, my stuff requires that the compiler has an interpreter.
00:58:28 <ehird`> Since macro definitions are evaluated, then the result as a quoted program is put into the program.
00:58:37 <ehird`> This is, of course, kick-ass.
01:01:47 <ehird`> pikhq: Confirm its kickassery!
01:05:16 <ehird`> pikhq: PIIIING
01:08:28 -!- pikhq has quit (Read error: 104 (Connection reset by peer)).
01:09:24 -!- pikhq has joined.
01:10:42 -!- Sgeo has joined.
01:11:52 <pikhq> Sgeo!
01:11:58 <Sgeo> Hi pikhq
01:12:04 <ehird`> pikhq, what's the last thing you heard
01:12:10 <pikhq> "after that, wonderful".
01:12:27 <pikhq> Sgeo: I have been contemplating a new Brainfuck-targetting macro language.
01:12:29 <ehird`> Of course, my stuff requires that the compiler has an interpreter.
01:12:34 <ehird`> Since macro definitions are evaluated, then the result as a quoted program is put into the program.
01:12:37 <ehird`> This is, of course, kick-ass.
01:12:47 <ehird`> pikhq: I thought it was going to be agnostic?
01:12:54 <pikhq> One which *I* hope will use PSOX.
01:12:55 <ehird`> with esolang-PSOX as one backend
01:12:58 <pikhq> ehird`: That's you.
01:13:05 <pikhq> My language, my taste.
01:13:10 <Sgeo> G2G my dad's being a jackass
01:13:12 <ehird`> :P
01:13:23 <ehird`> ok, guess i should fork
01:13:24 <ehird`> haha
01:13:47 -!- calamari has joined.
01:13:56 <pikhq> Mine will probably be working within the next week.
01:14:07 <pikhq> (PEBBLE went from idea to working implementation in a day. :p)
01:14:21 <ehird`> mine will be too
01:14:27 <ehird`> are you going to steal my c-like syntax? :(
01:14:37 <pikhq> No. It's more C++-like.
01:14:46 <pikhq> With all the requisite problems in compiling.
01:15:05 <ehird`> :(
01:15:09 <ehird`> BUT MY IDEA WOULD BE SO AWESOME
01:15:27 <pikhq> I'm a simple man.
01:15:37 * pikhq has an idea.
01:15:47 <pikhq> I won't bother reworking all the PEBBLE machinery.
01:15:58 <pikhq> My system shall use PEBBLE as an assembly language of sorts.
01:15:58 <ehird`> OK, i'm definately forking
01:15:58 <ehird`> :P
01:16:41 <ehird`> int main(void) {
01:16:43 <ehird`> fork();
01:16:46 <ehird`> language()
01:16:52 * pikhq actually has no simple, quick idea, unlike PEBBLE had. :(
01:17:00 <pikhq> Frankly, I'm at the drawing board ATM.
01:17:27 <ehird`> i have a simple quick idea! :(
01:17:39 <pikhq> No, that's a travesty.
01:18:09 * pikhq has a purely stupid idea.
01:18:31 <pikhq> Implement a Brainfuck macro system as a C library. :p
01:18:44 <ehird`> No! :(
01:18:50 <ehird`> And I could make my idea simple. :P
01:18:52 <pikhq> I said it was stupid.
01:19:47 <ehird`> :P
01:19:59 <ehird`> ARgh you know what I'm sick of all this brainfuck concentration
01:20:05 <ehird`> Let's discuss some other interesting esolang.
01:20:54 * pikhq gets sick of all this PEBBLE replacement junk
01:21:34 * pikhq needs to finish some English homework
01:24:29 * pikhq needs an excuse not to do anything else today. :p
01:24:43 * oklopol made a small genetic algorithm testing language
01:24:44 <oklopol> pool AAAAAAAAA AAAAAAAAA AAAAAAAAA AAAAAAAAA AAAAAAAAA AAAAAAAAA AAAAAAAAA AAAAAAAAA AAAAAAAAA AAAAAAAAA AAAAAAAAA
01:24:44 <oklopol> pts sum \ [BBAAABBAA _] [a b] = a b
01:25:16 <oklopol> basically, you make a pool, and give it a function to use for assigning points to a certain string
01:25:31 <oklopol> BBAAABBAA 9
01:25:31 <oklopol> BBAAABBAA 9
01:25:31 <oklopol> BBAAABAAA 8
01:25:31 <oklopol> BBAABBBAA 8
01:25:45 <ehird`> i see.
01:26:01 <oklopol> after a few steps it finds the correct one, although i'm currently doing so much mutation it keeps giving random shit too :)
01:26:27 <oklopol> i guess i'll add stuff to specify how to reproduce and mutate
01:28:13 -!- cherez has quit ("Leaving.").
01:28:39 -!- ehird` has changed nick to ehirdsleep.
01:28:41 <oklopol> pts is the "points" function definition, sum is a sum of a list, \ [list list list...] [var var var...] expression is map, with variable names though, because lambdas would be stupid for this
01:28:51 <oklopol> although i guess that's obvious.
01:28:58 <ehirdsleep> oklopol: i'll read in the logs later
01:29:00 <ehirdsleep> describe about it.
01:29:03 -!- cherez has joined.
01:29:07 <ehirdsleep> bye for today
01:29:15 <oklopol> well, it was actually there :)
01:29:20 <oklopol> i'll describe if i continue coding
01:30:25 -!- cherez has left (?).
01:37:30 -!- Sgeo has quit ("Ex-Chat").
01:49:08 <oklopol> oh god...
01:49:13 <oklopol> genetal
01:49:17 <oklopol> now i have to name it that.
01:49:54 <oklopol> why did that pop into my head
01:57:40 <oklopol> wow, i never realized how much genetic algos kick ass :)
02:12:23 <oklopol> http://www.vjn.fi/pb/p234266216.txt
02:12:49 <oklopol> last line is the output, in the form (best_found, points_for_best, iterations_taken)
02:13:05 <oklopol> just been adding trivial stuff, but it's a fun toy anyway :P
02:13:53 <oklopol> the bad news is, 6 hours till i need to wake yp.
02:13:55 <oklopol> *up
02:16:55 <Slereah> I wonder what a creationist algorithm looks like.
02:17:08 <Slereah> Maybe it's similar to Turing's Oracle Machine
02:20:01 <oklopol> i was thinking, i'll first extend that enough to be able to make bf text gen, then evolve a human out of a string of A's
02:20:09 <oklopol> that's step 3.,
02:20:11 <oklopol> *.
02:20:55 <oklopol> it's kinda annoying, all day i feel like i really should code something, and then when i finally do, it's ready in an hour or two and i have nothing to code.
02:22:18 <oklopol> i can't code that anymore, since the part i wanted to work works, and i'd have to start thinking again
02:22:38 <oklopol> there's a mood for coding, and a mood for inventing something to code
02:22:45 <oklopol> these moods do not mix.
02:23:18 <oklopol> unfortunately both do mix with the third mood, futurama mood, which kinda overrides both
02:23:29 <oklopol> btw. didn't name it genetal :)
02:23:37 <oklopol> it's called Muture now :D
02:24:21 <oklopol> my initial idea was to make a language for calculating fixed points :D
02:24:42 <oklopol> you'd run some time, then change something in the past, and recalculate if the change actually changed something
02:25:34 <oklopol> (you'd need to be able to set an epsilon of course)
02:26:35 <oklopol> tried to find a clear relation between this kind of mutation and plain old fixed point, but got bored of thinking and just coded something :-)
02:26:49 <oklopol> i'm fairly sure you could make something totally awesome with the fixed point idea
02:26:51 <oklopol> "idea"
02:27:13 <oklopol> the only reason i'm talking really is to get your text to disappear from the screen
02:27:18 <oklopol> ah, and there it is
02:27:24 <oklopol> yes, my font is big.
02:28:30 <oklopol> Slereah: so what's up with the machine of yours whose name i forgot :-)
02:28:36 <oklopol> except the old name
02:28:45 <Slereah> Which one?
02:28:54 <Slereah> The Love Machine 9000?
02:29:05 <oklopol> yeah
02:29:11 <Slereah> It works okay.
02:29:17 <oklopol> i mean
02:29:20 <Slereah> Although I'm sure there's ways to make it faster.
02:29:23 <oklopol> have you been doing fun stuff with it
02:29:40 <oklopol> well, compiling to C seems to be pretty popular these days?
02:29:47 <Slereah> Well, right now I'm working on the lazy unlambda.
02:29:55 <oklopol> oh, right
02:30:03 <oklopol> your the SKI evaluator : )
02:30:27 <Slereah> The lambda-SKI-other combinator-iota thingy.
02:31:04 <oklopol> hmm, wonder if i'd get sleep now if i tried... getting delusional
02:31:18 <oklopol> teh worlds are whirling
02:31:30 <oklopol> i think i'll watch a family guy or something
02:31:43 <oklopol> i guess i can skip one night of sleep
02:33:05 <Slereah> You can. Doesn't mean you should though!
02:34:16 <oklopol> well, there's the minor problem that if i go to sleep, i will definitely not wake yp
02:34:17 <oklopol> up
02:34:31 <Slereah> Are you going to die?
02:34:47 <oklopol> then again, i have 8 hours of school, plus some hobby-related stuff after taht
02:35:08 <oklopol> and i slept through the lectures today too
02:35:13 <oklopol> hmm
02:35:25 <oklopol> i doubt i'll die, i mean i won't wake up in times.
02:37:51 <Slereah> Heh. Reminds me. I should study
02:37:56 <Slereah> The exams are soon! :o
02:38:01 <oklopol> oh
02:38:10 <oklopol> our classes just started
02:38:32 <Slereah> Exams are next week here
02:38:42 <oklopol> what do you have?
02:38:43 <Slereah> And I didn't study all that much.
02:39:11 <Slereah> Quantum physics, relativity, analytic mechanics, mathematics, that sort of things.
02:39:25 <oklopol> sounds fun
02:40:14 <GreaseMonkey> i did a science poster on quantum physics
02:40:39 <oklopol> i'll try falling asleep here on teh armchair, lees comfortable than my bed, so i'll prolly wake up, no?
02:40:41 <oklopol> night ->
02:40:54 <Slereah> Boy are you in for a surprise!
03:18:19 <Slereah> ``^x^y````y.xri``xx```s``s`ks``s`k`s`ks``s``s`ks``s`k`s`ks``s``s`ks``s`k`s`ks``s`k`s`kkk`k``s`k`s`k`s`k`si``s`k`s`k`s``s`ksk``s`k`s`k`s`kk``s`k`s`kkk`k`kk`k`k`kiy^x^y````y.xri``xx```s``s`ks``s`k`s`ks``s``s`ks``s`k`s`ks``s``s`ks``s`k`s`ks``s`k`s`kkk`k``s`k`s`k`s`k`si``s`k`s`k`s``s`ksk``s`k`s`k`s`kk``s`k`s`kkk`k`kk`k`k`kiy^f^x`f`f`f`fx
03:18:30 <Slereah> Hurray, I made a count-down!
03:18:52 <Slereah> Although so far, it only did 4-3-2
03:19:01 <Slereah> Ah, the 1 is here.
03:19:53 <Slereah> The Turing fixpoint combinator is totally awesome.
03:20:05 <Slereah> I want to ^5 Turing.
03:21:30 <Slereah> It is intensely slow, though.
03:27:02 <Slereah> (It is pretty much ((^xy. (```y.xri) (xx pred (y))) ^xy. (```y.xri) (xx pred (y))) n) )
03:31:57 <Slereah> Here's a possibly faster version : ``m``s`k`s``s``s``si`k.x`kr0``s``s`ks``sbk`k``s``s`ks``s`k`s`ks``s``s`ks``s`k`s`ks``s``s`ks``s`k`s`ks``s`k`s`kkk`k``s`k`s`k`s`k`si``s`k`s`k`sb``s`k`s`k`s`kk``s`k`s`kkk`k`kk`k`k0``sb``sb``sb``sb``sb``sb``sb``sb``sb``sb0
03:35:53 <Slereah> Hell, is SB actually equivalent to the successor function?
03:36:09 <Slereah> Holy hell!
03:46:38 <Slereah> That will trim down my input system a whole lot!
04:15:25 -!- calamari has quit (Connection timed out).
04:34:25 -!- oerjan has joined.
04:43:30 <oerjan> <oklopol> or then oerjan just checks for highlights.
04:43:51 <oerjan> not always, but today i don't think i'll read it all
05:07:33 <Slereah> Hm. If I replace ```y.xri by (iszero y) (v) (```y.xri), maybe the program will halt!
05:35:42 -!- cherez has joined.
05:38:37 <Slereah> Hell. It gets complicated!
05:46:31 <pikhq> http://en.wikibooks.org/wiki/Programming:ColdFusion/control_structures
05:46:40 <pikhq> Is it an esolang if it's meant to be used seriously?
05:47:21 <Slereah> Define seriously.
05:47:54 <pikhq> Recommended for usage in website design.
05:48:31 <Slereah> Well, if it's even recommended, maybe not!
05:50:26 * pikhq hurls at the idea of XML programming.
05:50:32 <pikhq> And not even well-formed XML at that.
05:51:46 <Slereah> ``uu```_.xri
05:51:53 <Slereah> A cat program. Sort of.
05:56:59 -!- oerjan has quit ("Caffeine").
07:33:55 -!- lament has quit ("Ducks!").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:03:25 -!- Slereah- has joined.
08:22:17 -!- Slereah has quit (Read error: 110 (Connection timed out)).
08:35:26 -!- cherez has quit (Read error: 110 (Connection timed out)).
08:41:56 -!- GreaseMonkey has quit ("Welcome to 2008. I will be your tour guide.").
08:44:19 -!- sebbu2 has joined.
08:52:01 -!- cherez has joined.
09:00:17 -!- sebbu has quit (Connection timed out).
10:10:48 <oklopol> Slereah-: woke up 4 hours late, good idea to go to sleep :P
10:13:03 <Slereah-> I personnaly use a program to launch some Mp3 when I'm not sure I'll wake up.
10:13:13 <Slereah-> "Chocolate rain" at generous volume works okay.
10:14:54 <oklopol> why the fuck did i wake up in my bed
10:15:04 <oklopol> i went to sleep right here.
10:15:46 <Slereah-> Well, if you woke up in China, that would raise the question.
10:16:03 <oklopol> that'd be awesome
13:12:05 -!- oerjan has joined.
13:31:02 -!- sebbu has joined.
13:37:12 <SimonRC> oklopol: what is up with your sleep
13:37:27 <SimonRC> I couldn't figure out quite what was going on before
13:39:15 <Slereah-> From what I can make out, "It is late and if I sleep, I won't wake up on time!"
13:40:44 <SimonRC> well duh, use an alarm clock
13:41:07 <SimonRC> unless I am missing something here
13:41:12 <Slereah-> Won't work with any pussy alarm clock.
13:41:29 <Slereah-> When I was a kid, I had some real serious business alarm clock.
13:41:43 <Slereah-> It was shaped like a racing car, and made the same noise.
13:41:54 <Slereah-> It woke up everyone in the house.
13:44:08 -!- sebbu2 has quit (Connection timed out).
14:08:18 <Slereah-> Aaaaargh
14:08:34 <Slereah-> Is there any simple combination of combinators for the pred. function?
14:08:42 <Slereah-> Any combinators!
14:09:29 <Slereah-> I've got 16 so far, I might as well continue!
14:10:31 <oerjan> hm... let me lookup my Deadfish implementation
14:11:14 <Slereah-> The shortest version I got is ``s``s`ks``s`k`s`ks``s``s`ks``s`k`s`ks``s``s`ks``s`k`s`ks``s`k`s`kkk`k``s`k`s`k`s`ko``s`k`s`k`sb``s`k`s`k`s`kk``s`k`s`kkk`k`kk`k`k0
14:11:22 <oerjan> argh
14:11:25 <Slereah-> And the rewriting takes ages.
14:11:44 <Slereah-> I can't check slightly more complex formulas for accuracy.
14:12:43 <oerjan> it's somewhere in
14:12:48 <oerjan> ``s``s``s``s`k?d`kii`k
14:12:48 <oerjan> ``s``s``si
14:12:48 <oerjan> `k ``s``s`ks ``s`k`si
14:12:48 <oerjan> ``s`kk ``s``s`ks ``s`k`s`ks ``s`k`s`kk ``si`kk `ki
14:12:48 <oerjan> ``s`kk ``si`kk
14:13:19 <oerjan> `k`k`ki `k`ki
14:14:23 <Slereah-> Do the space inditaces different formulas?
14:14:32 <Slereah-> Or is it just sugar?
14:14:47 <oerjan> possibly the part starting on the third line after `k
14:15:00 <oerjan> i just tried to use a sensible indentation style
14:16:11 <oerjan> this is the part of the program specific to the d operator, which decrements
14:18:34 <oerjan> or it could be all of it except the first line
14:20:27 <oerjan> ah, found my scratch file, which explains some of what's going on
14:21:48 <oerjan> ah yes, it should be what i pasted except the first line
14:22:55 <Slereah-> Let's see how it works out!
14:23:59 <Slereah-> Seems to work.
14:24:27 <Slereah-> In a different way than ``s``s`ks``s`k`s`ks``s``s`ks``s`k`s`ks``s``s`ks``s`k`s`ks``s`k`s`kkk`k``s`k`s`k`s`ko``s`k`s`k`sb``s`k`s`k`s`kk``s`k`s`kkk`k`kk`k`k0 somehow.
14:24:46 <Slereah-> (```pred n .x i prints everything after a while instead of continuously)
14:25:34 <oerjan> it is essentially based on iterating ^p (`$p k + 1, `$p k)
14:27:04 <Slereah-> Well, the slightly trimmed version is ``s``s`o`k``s``s`ks``s`ko``s`kk``s``s`ks``s`k`s`ks``s`k`s`kk`o`kk0``s`kk`o`kk`k`k0`k0
14:27:07 <Slereah-> Thanks
14:28:24 <oerjan> you're welcome :)
14:28:37 <Slereah-> I'd make a special combinator just for it, but since it also contains lambda, I'm not sure it will gain that much time.
14:37:48 <Slereah-> There's apparently some rules for abstraction elimination in the SKIBC system
14:37:53 <Slereah-> Maybe I should try that.
14:51:44 <Slereah-> ``c``bc``b`bc``c``bc``b`bb``c``bbi``b`b`ci``b`cii``bkii
14:51:48 <Slereah-> Let's try it out!
14:53:27 <oerjan> well in a.e. for ^x.E(x)F(x), the rules for K, B and C are just special cases of the rule for S, when at least one of the parts don't mention x
14:54:22 <Slereah-> Yes.
14:54:36 <Slereah-> And it gives more compact expression, for this poor slow interpreter.
14:56:57 <Slereah-> I even already have the combinator for CI!
14:59:55 <Slereah-> ``c``bc``b`bc``c``bc``b`bb``c``bbi``b`bt``bti``bkii
15:00:01 <Slereah-> It is more fashionable that way.
15:01:25 <Slereah-> And ``bki seems to be no one else but our old friend k!
15:03:09 <Slereah-> Is ``b[stuff]i equivalent to [stuff]?
15:03:15 <Slereah-> ``bti seems to be t too.
15:05:00 <Slereah-> Nah, just ^a.Ca apparently.
15:08:17 <oerjan> ``bXi = ``s`kXi which is X by the eta-rule?
15:09:12 <Slereah-> Ah yes, that.
15:09:26 <Slereah-> I don't think enough of the eta rule.
15:09:34 <Slereah-> The orphan of conversions.
15:18:23 <Slereah-> ``c``bc``b`bc``c``bc``b`bb``c`b``b`bttki
15:18:41 <Slereah-> Can't think of anything further, but it's more reasonable alread.
15:20:34 -!- timotiis has joined.
15:21:42 <Slereah-> ``c``bc``b`bc``c``bc``b`bb``cb``b`bttki, more accurately
15:25:09 <SimonRC> if c is call/cc, then you are a sick bastard
15:26:30 <Slereah-> c is the c combinator.
15:26:47 <Slereah-> Or Cardinal, for bird lovers.
15:27:04 <Slereah-> Hell, I can even define substraction in less than a line! ``b`c`t``c``bc``b`bc``c``bc``b`bb``cb``b`bttkii
15:28:40 <Slereah-> And iszero seems to be `t`k0 !
15:28:52 <Slereah-> It's quite a nice way to eliminate abstractions.
15:29:33 <Slereah-> Oh, no. Forgot a `
15:29:56 <Slereah-> ``c`t`k0k actually.
15:45:26 -!- calamari has joined.
15:58:12 -!- Slereah has joined.
16:00:53 -!- jix has joined.
16:08:20 -!- Tritonio_ has joined.
16:12:34 -!- calamari has quit ("Leaving").
16:22:12 -!- Slereah- has quit (Read error: 110 (Connection timed out)).
16:27:15 -!- lulz has joined.
16:27:21 -!- lulz has changed nick to christ.
16:28:22 <christ> hai
16:28:39 <Slereah> Hello.
16:28:50 <christ> what's up slereah ? how're u doing ?
16:29:32 <christ> bah, bai
16:29:34 -!- christ has quit (Client Quit).
16:29:48 <ehirdsleep> hello world.
16:29:51 -!- ehirdsleep has changed nick to ehird.
16:29:56 -!- ehird has changed nick to ehird`.
16:30:34 -!- Slereah- has joined.
16:38:31 -!- puzzlet_ has quit (Read error: 104 (Connection reset by peer)).
16:38:48 -!- puzzlet has joined.
16:44:40 <ehird`> does anybody know when i first came in here?
16:48:50 -!- Slereah has quit (Read error: 110 (Connection timed out)).
16:56:08 -!- oerjan has quit ("leaving").
17:11:27 <Slereah-> Today or in general?
17:15:33 <ehird`> in general
17:15:39 <ehird`> i'm looking through ircbrowse to find
17:15:54 <ehird`> earliest i've found so far is 20070806
17:16:00 <ehird`> but i'm pretty sure it was earlier than that
17:16:24 <sekhmet> ehird`: You joined once on Dec 29 2006 but didn't say anything
17:16:40 <sekhmet> ehird`: Then the next time I've got in my logs was May 14 2007
17:16:45 <sekhmet> Where you did say stuff
17:16:53 <sekhmet> 10:48 < ehird`> i honestly think my language may be worse than malbolge
17:17:02 <ehird`> sekhmet: well, that was fast.
17:17:07 <sekhmet> :)
17:17:10 <sekhmet> I'm quick w/ the logfiles
17:17:19 <ehird`> i wonder why i didn't say anything
17:17:20 <ehird`> :P
17:19:25 <ehird`> side note: that language was worse than malbolge, but the decoding mechanism unfortunately meant that most programs couldn't be encoded
17:19:25 <ehird`> :-)
17:55:32 * ehird` realises this is the first itme sekhmet has actually spoken
18:00:49 <sekhmet> Nah, I spoke for a bit when I first joined here
18:01:09 <sekhmet> Not much though, I mostly lurk and go check out new esolangs when I notice 'em being discussed. :)
18:06:58 <ehird`> anyone here malbolge-knowledgable?
18:16:22 <timotiis> not me
18:21:56 <ehird`> :)
18:31:25 <ehird`> http://esoteric.voxelperfect.net/wiki/Deadfish%7E this seems turing complete to me
18:37:42 -!- RedDak has joined.
19:24:44 <cherez> It might be Turing complete, but I don't see how it would be Turing equivalent.
19:41:34 <ehird`> cherez: what sense does that make.
19:43:14 <ehird`> GregorR: I can has egobot?
19:43:26 <ehird`> in here.
19:48:38 * SimonRC goes
20:07:36 -!- EgoBot has joined.
20:08:40 <bsmntbombdood> http://www.mitadmissions.org/topics/learning/coursework/the_end_of_an_era_1.shtml
20:08:42 <bsmntbombdood> so sad :(
20:11:03 -!- faxlore has joined.
20:15:40 <ehird`> god damn you gregorr, i just compiled netcat to get GlassBot in here
20:15:40 -!- GlassBot has joined.
20:16:10 <ehird`> G! {SAD EHIRD IS SAD}
20:16:13 <GlassBot> OK
20:16:33 <ehird`> G! (a
20:16:35 <GlassBot> OK
20:16:45 <ehird`> GregorR! Your parser is broken.
20:16:49 <ehird`> G! a)
20:16:50 <GlassBot> OK
20:17:09 <ehird`> G! {(a
20:17:11 <GlassBot> OK
20:17:16 <faxlore> G!
20:17:18 <GlassBot> OK
20:17:22 <faxlore> OK!
20:17:42 <ehird`> G! {(asdf(g))}
20:17:44 <GlassBot> OK
20:17:55 <ehird`> i'm trying to figure out t he exact allowed characters in e.g. ()s
20:17:59 <ehird`> for my haskell implementation
20:18:19 <ehird`> !glass (
20:18:21 <EgoBot> OK
20:19:04 <ehird`> GregorR: Ping!
20:19:30 <faxlore> you writing a bunch of interpreters in haskell for esolangs?
20:19:40 <ehird`> and compilers yeah.
20:19:46 <ehird`> haskell, c and scheme
20:22:17 <johnl> i'm supposed to be writing a compiler for kipple...
20:22:35 <ehird`> kipple, i've heard of that before
20:22:42 <ehird`> link me to the esolangs pge and i might implement it :P
20:22:57 -!- Jontte has joined.
20:24:58 <ehird`> i see
20:24:59 <ehird`> looks trivial
20:25:35 <johnl> it is
20:25:41 <johnl> but don't you implement it :P
20:25:48 <ehird`> why not
20:25:54 <johnl> i'll get round to it before the end of the week...
20:26:05 <ehird`> looks like there's already lots of implementations
20:26:07 <johnl> it's just coursework i've procrastinated for weeks
20:26:08 <johnl> yeah
20:26:17 <johnl> i just wanted an easy task for my compiler design course
20:26:27 <ehird`> you won't learn much compiler design from that
20:26:46 <johnl> yeah
20:26:51 <johnl> but i have other tasks to learn that from
20:26:52 <johnl> :)
20:27:05 <johnl> this was just a trivial exercise to implement in CoCo/R
20:28:31 <ehird`> hah, since glass Strings name-clash with haskell strings, I followed by muscle memory and added a prefix - since it's a glass compiler, G.
20:30:36 <johnl> haha
20:30:38 <johnl> nice :)
20:39:08 <ehird`> kipple Q
20:39:10 <ehird`> > Push left operand onto right stack
20:39:10 <ehird`> < Push right operand onto left stack
20:39:13 <ehird`> these are redundant, right?
20:39:17 <johnl> yeah
20:39:27 <johnl> well
20:39:33 <johnl> in simple expressions, i think
20:39:47 <ehird`> what i mean is that i can parse them to be the same
20:39:52 <johnl> yeah
20:40:27 <ehird`> hm, i need to allow arbitary code for the operands too
20:40:28 <ehird`> well
20:40:30 <ehird`> for the left one
20:41:17 <ehird`> hmm
20:41:23 <ehird`> the *parsing* of kipple is non-trivial
20:41:24 <ehird`> :-)
21:26:26 -!- puzzlet_ has joined.
21:27:15 -!- puzzlet has quit (Remote closed the connection).
21:30:38 -!- Tritonio_ has quit (Read error: 113 (No route to host)).
21:31:25 -!- Tritonio_ has joined.
21:41:37 <ehird`> anyone have a language they want implemented? :P
21:41:59 <faxlore> Yes
21:42:39 <ehird`> what is it
21:43:12 <faxlore> well I don't really want a particular language implemented
21:43:18 <ehird`> oh..kay..
21:43:19 <faxlore> just a certain kind of parser
21:43:30 <faxlore> (I was going to hook pu a few different lambca caluclus to it)
21:44:05 <ehird`> i'd do all parsing using parsec, so implementing a certain kind of parser would be a bit...heh
21:44:30 * faxlore would use parsec to write this too probably
21:47:35 <ehird`> OH WELL. anything other than a parser? :P
21:51:42 <faxlore> http://www.esolangs.org/wiki/Thue
21:51:46 <ehird`> :(
21:51:49 <ehird`> ah
21:51:49 <ehird`> thue
21:51:53 <ehird`> heh.
21:52:10 <ehird`> thue, the one language you can't parse because you'd lose the information it needs to evaluate!
21:52:25 -!- Jontte has quit ("Konversation terminated!").
21:52:51 <faxlore> oh foo >:|
21:53:10 <faxlore> you could finish this line "sortPlaces = " :p
21:53:13 <faxlore> that would be nice...
21:53:13 -!- johnl has quit (Read error: 104 (Connection reset by peer)).
21:55:00 <ehird`> sortPlaces = deliciously frozen food!
21:56:15 -!- jix has quit ("CommandQ").
21:57:13 -!- johnl has joined.
21:57:57 <faxlore> oh you know what's a fun problem
21:58:07 <faxlore> I tried this the other day but didn't do well ...
21:58:37 <faxlore> write a program that composes combinators (like solving the puzzles in To Mock A Mockingbird) to match some lambda abstraction
21:58:50 <faxlore> It's not really a language though
21:59:12 -!- GreaseMonkey has joined.
21:59:44 -!- tesseracter has joined.
22:06:01 <ehird`> actually, better:
22:06:03 -!- RedDak has quit ("I'm quitting... Bye all").
22:06:06 <ehird`> an optimizing SKI->lambda calculus
22:06:13 <ehird`> that is, doesn't just do 'dumb' replacement
22:08:18 <faxlore> given the type of some function, you can infer the minimal size term with that type?
22:08:31 <faxlore> is that first or second order unification or something else?
22:09:55 <faxlore> in any case if you do write a SKI-> lambda caluclus thing I wanna see it :D
23:13:41 -!- timotiis has quit ("leaving").
23:24:33 -!- Tritonio__ has joined.
23:24:58 -!- Tritonio_ has quit (Read error: 110 (Connection timed out)).
23:27:18 -!- faxlore has quit ("Leaving").
23:46:08 -!- GregorR has quit (Remote closed the connection).
23:47:37 -!- GregorR has joined.
23:47:57 <ehird`> hey Gregorr
23:48:36 <GregorR> I'm only slightly active.
23:48:38 <GregorR> And will be inactive momentarily.
23:48:44 <ehird`> :P
2008-01-10
00:50:56 -!- ehird` has changed nick to ehirdsleep.
00:51:48 <pikhq> Gregor, you bastard. :p
01:49:14 <GreaseMonkey> i agree
01:53:00 <Slereah-> Hello people.
01:53:47 -!- Sgeo has joined.
01:54:46 <Sgeo> Hi all bye all.
02:02:40 <Slereah-> ``m``s``bs``b`s``c``b``c`t`k0ki#``c``bc``c``bc``b`ci`k.xri``c``bb``sii``b``c``bc``b`bc``c``bc``b`bb``cb``b`bttkii``sb``sbi
02:02:44 <Slereah-> Poifect.
02:02:55 <Slereah-> Maybe now, 99 bottles of beer!
02:03:21 <Sgeo> Maybe, MAYBE, I'll start working on PSOX again tomorrow
02:03:26 <Sgeo> Anyone have any comments about PSOX?
02:03:41 <Slereah-> Not much, not much
02:16:51 <pikhq> Make it work.
02:16:55 <pikhq> ;p
02:17:15 <pikhq> (then I can make my Macro Language to End All Macro Languages working. :p)
02:18:49 * pikhq thinks: language which is moderately full-featured, supporting PSOX: crazy? :p
02:19:50 <pikhq> Lessee here. . . lnum foo=2, anyone?
02:22:04 <Sgeo> foo=2?
02:22:06 <Sgeo> oh
02:22:15 <pikhq> A typesystem.
02:22:16 <pikhq> ;)
02:22:34 <pikhq> "foo+=2" would also work, thanks to types. ;p
02:22:46 <Sgeo> Would this language support the REGEX type?
02:22:59 <pikhq> That would be tricky.
02:23:39 <pikhq> Particularly since I'm thinking of managing operator overloading to handle the types.
02:23:49 <pikhq> (without classes. Just macros. I'm insane. ;))
02:25:29 <GreaseMonkey> :D
02:26:59 <pikhq> Perhaps "new_type lnum;macro lnum_+(x, y){psox_call(ADD_LNUM, x, y);}" etc.
02:31:37 <GreaseMonkey> so you're making a hardcore version of BFM?
02:31:48 <pikhq> s/BFM/PEBBLE/
02:31:55 <pikhq> The name change happened ages ago, people! :p
02:32:59 <pikhq> Sgeo: You know what would be *truly* insane? A way of calling C functions from PSOX.
02:33:16 <Sgeo> pikhq, go write a Domain for it, if you wantr
02:33:18 <Sgeo> *want
03:02:35 <GreaseMonkey> hey guys, i just made a BF interpreter in about 5 minutes
03:02:39 <GreaseMonkey> with python
03:03:07 <Slereah-> That's because Python is awesome.
03:11:15 <puzzlet_> and brainfuck is minimalistic
03:11:23 <Slereah-> Also that.
03:11:53 <pikhq> And because you have been crippled by your lack of malloc.
03:12:34 <oklopol> o
03:16:20 <oklopol> i think i've written one in less than 3 minutes, but i just wrote the same program and took time :-)
03:16:39 * oklopol has weird hobbies
03:18:26 <Slereah-> If you're here, obviously
03:26:54 <GreaseMonkey> heh
03:27:03 <GreaseMonkey> here, i'll pastebin it
03:29:33 <GreaseMonkey> http://rafb.net/p/bXlg4855.html
03:30:48 <Slereah-> Is += the bs = bs + stuff?
03:38:28 <oklopol> GreaseMonkey: bs.append(i) is faster than bs+=[i]
03:39:10 <Slereah-> Oh, that's that.
03:39:12 <oklopol> python will actually do bs = bs + [i], baking a list of i, then concatenating the two lists baking a third list
03:40:44 <oklopol> oh, also bs.pop() for bs=bs[:-1]
03:41:00 * oklopol thinks that's a Very Crappy System
03:41:38 -!- oklopol has quit ("for the need to encumber").
03:41:52 <GreaseMonkey> well, it works.
03:41:58 <GreaseMonkey> and i will take note of that.
03:42:24 -!- oklopol has joined.
03:42:34 <oklopol> how do i always manage to do that...
03:43:25 <oklopol> did i miss something?
03:43:30 <Slereah-> [04:41] <GreaseMonkey> well, it works.
03:43:31 <Slereah-> [04:41] <GreaseMonkey> and i will take note of that.
03:43:41 <oklopol> i see
03:44:00 <GreaseMonkey> btw, what's better:
03:44:05 <GreaseMonkey> inp = inp[1:]
03:44:09 <GreaseMonkey> inp[:1] = ''
03:44:11 <GreaseMonkey> or what?
03:44:25 <oklopol> hmm
03:44:26 <Slereah-> You can't change part of a string.
03:44:28 <oklopol> del inp[0]
03:44:32 <oklopol> oh
03:44:34 <oklopol> it's a string.
03:44:41 <oklopol> then the first one is the only possibility
03:44:45 <GreaseMonkey> ok.
03:45:05 <oklopol> if you do that lots, you can do inp=list(inpt)
03:45:09 <oklopol> *inp
03:45:13 <oklopol> and then del inp[0]
03:45:59 * oklopol thinks that's a crappy system too
03:46:19 <oklopol> dunno... python just lacks beauty...
03:46:32 <oklopol> unlike GRAPHICA, HAVE I MENTIONED GRAPHICA
03:46:36 <oklopol> ...
03:46:40 <Slereah-> MAYBE A LITTLE
03:46:43 <oklopol> :)
03:46:58 <oklopol> i had some totally awesome ideas for it
03:47:10 <oklopol> and here i am, idling and wondering why i'm not coding it.
03:47:19 <oklopol> i'll get something to drink, and then code something
03:47:20 <oklopol> ->
03:56:49 <bsmntbombdood> drinking?!!
03:58:37 -!- Slereah- has quit.
04:04:54 -!- Untitled-13615D has joined.
04:06:39 <Untitled-13615D> Anyone knows how to disable the automatic windows update?
04:06:49 <Untitled-13615D> I can't stand it rebooting my computer behind my back.
04:06:53 -!- Untitled-13615D has changed nick to Slereah.
04:07:15 <oklopol> no one knows :\
04:08:00 <Slereah> I don't know how many data I've lost because of it.
04:15:34 -!- lament has joined.
04:15:41 <lament> I have returned to rule over your channel once again!
04:15:56 <lament> Pray for mercy, and you might be spared!
04:16:13 <Slereah> Or else!
04:16:14 <lament> But probably not.
04:26:05 <oklopol> OMFG
04:30:09 <Slereah> Aw hell. Now the lazy evaluation is playing tricks on me for the input!
04:30:10 -!- Sgeo has quit (Remote closed the connection).
04:30:42 <Slereah> I'll have to find a way to turn it the right way
04:32:07 <lament> everybody knows lazy evaluation and i/o are incompatible :)
04:32:41 <oklopol> everybody knows kung fu fighting
04:36:24 <Slereah> lament : Lies!
04:36:58 <Slereah> I just have to make some lambda expression for the input to be evaluated first, then placed at the end.
04:37:47 <Slereah> Probably just ^ab`ba
04:38:10 <Slereah> Although it would have to be evaluated after.
04:38:12 <Slereah> Damn.
04:38:17 <Slereah> What to do.
04:38:52 <Slereah> I really don't want to make an anti-d combinator.
05:30:54 -!- calamari has joined.
06:05:22 -!- calamari has quit ("Leaving").
06:07:28 -!- immibis has joined.
06:50:36 -!- immibis 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. Man who run behind car get exhauste).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:50:23 -!- 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. Man who run behind car get exhauste).
08:55:17 <AnMaster> Slereah, <Untitled-13615D> Anyone knows how to disable the automatic windows update? <-- sure, 1) change to linux
08:56:13 <AnMaster> and 2) somewhere under "my computer" -> right click -> properties -> somewhere
08:56:17 <AnMaster> if I remember correctly
08:56:19 <AnMaster> in xp
08:56:27 * AnMaster haven't used windows for years
08:59:52 <Slereah> I can't install Linux.
08:59:54 <Slereah> I tried!
09:00:02 <Slereah> I'm just not that computer savvy.
09:06:41 <cherez> I found the Ubuntu installation at least an order of magnitude easier than the XP installation.
09:07:20 <cherez> But immediately after confirming the Ubuntu was that easy, I installed Gentoo by hand, so I might not be the right demographic.
09:07:37 <Slereah> Problem is, I want both on my computers.
09:08:13 <Slereah> For instance, to run most commercially released softwares!
09:09:15 <cherez> I've never met anyone who used more than a tiny fraction of commercially released software.
09:12:55 <Slereah> Well, one would be enough.
09:20:32 <cherez> Which?
09:21:45 <Slereah> No idea, since I can't install it!
09:23:17 <cherez> How did you try to install it?
09:23:26 <Slereah> Using a Kubuntu CD.
09:23:49 <cherez> Did you try the guide?
09:24:11 <Slereah> No.
09:24:13 <Slereah> Didn't saw it.
09:24:55 <Slereah> After I installed it, I couldn't run either Windows or Linux.
09:24:59 <Slereah> So I'm a little shy now.
10:08:25 -!- jix has joined.
10:24:04 -!- jix has quit ("CommandQ").
11:09:35 -!- johnl has quit (Read error: 104 (Connection reset by peer)).
11:13:54 -!- puzzlet_ has quit (Remote closed the connection).
11:14:01 -!- puzzlet has joined.
12:17:26 -!- Tritonio__ has quit ("Bye...").
12:42:08 -!- Visitor-CD3F3 has joined.
12:52:51 -!- Slereah has quit (Read error: 110 (Connection timed out)).
13:05:38 -!- timotiis has joined.
13:49:28 -!- jix has joined.
15:25:44 -!- Visitor-CD3F3 has changed nick to Slereah.
15:28:49 -!- jix has quit (Read error: 145 (Connection timed out)).
15:30:07 -!- jix has joined.
15:42:16 -!- ehirdsleep has changed nick to ehird`.
15:43:33 <ehird`> i have some kind of obsession with writing scheme interpreters...
15:43:37 <ehird`> i'm writing one in javascript, now
15:47:26 <oklopol> some fishes and some noodles, trallalalalaa
15:53:45 <ehird`> lah da da dah?
15:55:47 <AnMaster> game of life is turing complete right+
15:55:58 <AnMaster> s/+/?/
15:56:30 <ehird`> yep
15:56:35 <AnMaster> yay,
15:56:37 <ehird`> there's a turing machine in it
15:56:40 <ehird`> see: Golly distribution
15:56:47 <ehird`> but, don't even *bother*, kind of thing
15:57:04 <ehird`> you can do it but many civilizations will pass before you get anything useful to happen
15:57:14 <ehird`> beyond counting in hexadecimal which there is a working Life file for.
15:57:42 <AnMaster> I have made some insane stuff now. while not turing complete (because of too slow and limited size) I implemented game of life inside a single player rpg, using "floor tiles" in it and some scripting in it's special language
15:57:56 <ehird`> heh
15:58:03 <AnMaster> did that last week when my PC was broken and I had to use my old (from around 1997) mac
15:58:04 <ehird`> speed hsa nothing to do with turing completeness :)
15:58:06 <ehird`> size does, though
15:58:19 <AnMaster> sadly the game engine is some shareware thing
15:58:37 -!- Jontte has joined.
15:58:48 <ehird`> AnMaster: you wrote brainfuck in bash: now do scheme
15:58:49 <AnMaster> ehird`, yes, indeed, an "area" in that game engine is limited to at most 64x64 tiles, so...
15:58:59 <AnMaster> ehird`, I don't have time currently
15:59:04 <ehird`> aww
15:59:05 <ehird`> :(
15:59:51 <AnMaster> oh btw that game engine, had weird scripting language, for example if you nested a loop, all variables from the outer loop got unset, so what I did was use some if to reset variable at end of loop if reaching edge of board and such
15:59:52 <AnMaster> heh
16:00:01 <ehird`> lmao
16:00:11 <ehird`> nesting loop idiocy reminds me of BestFriends.js
16:00:15 <AnMaster> huh?
16:00:17 <ehird`> the wiki page helpfully says:
16:00:24 <ehird`> Note: YOU CANNOT use nested loops in BestFriends.js
16:00:25 <AnMaster> "BestFriends"?
16:00:26 <ehird`> (on the esolang wiki)
16:00:37 <ehird`> AnMaster: a pseudo-brainfuck thing in javascript.
16:00:37 <ehird`> BF
16:00:37 <ehird`> BrainFuck
16:00:39 <ehird`> BestFriends
16:00:46 <ehird`> the wiki page is HILARIOUS
16:00:52 <AnMaster> well, it isn't brainfuck if it can't handle nested loops
16:00:55 <AnMaster> anyway link?
16:00:59 <ehird`> http://esolangs.org/wiki/BestFriends.js
16:01:14 <oklopol> ehird`: what i said had nothing to do with anything
16:01:30 <ehird`> New enterprise features like 2d! But you CANNOT use nested loops, sorry. Also, the input command doesn't work in v32.34
16:01:36 <ehird`> We are working on this difficult problem!
16:02:04 <AnMaster> lol?
16:02:07 <ehird`> it is turing complete though :|
16:02:14 <ehird`> because you can run JS' eval()
16:02:27 <ehird`> AnMaster: from: "Puts the first character of the input string in the current memory cell. As of the first version, this command does not work. The problem is being looked at carefully."
16:02:40 <AnMaster> heh yeah
16:03:07 <ehird`> i bet they just do:
16:03:14 <ehird`> str.slice(pos,-1).index("]")
16:03:16 <ehird`> to match loops
16:03:33 <AnMaster> "Turns the program pointer 90 degrees left (anticlockwise)."?
16:03:34 <oklopol> bestfriends owns :)
16:03:43 <ehird`> http://www.thegriddle.net/BestFriends/BestFriends.js oh jeez
16:03:52 <ehird`> they use a global var pointing to the start of the loop XD
16:04:05 <AnMaster> hahah
16:04:12 <AnMaster> use a stack!
16:04:23 -!- faxlore has joined.
16:04:23 <ehird`> '*** Each row should be the same length. See the sample below for an example of how it's used.
16:04:23 <ehird`> '
16:04:26 <ehird`> the example is off by one char
16:04:31 <ehird`> one of the lines is one char longer than the other
16:04:32 <ehird`> :D
16:04:38 * AnMaster ponders some semi-object orientation in bash
16:05:20 <ehird`> AnMaster: trivial
16:05:29 <AnMaster> indeed, if you use eval
16:05:32 <ehird`> you have arrays, so just store the data as an array
16:05:35 <AnMaster> but is it possible without eval?
16:05:37 <AnMaster> hm...
16:05:55 <faxlore> how do you do dispatch?
16:06:02 <faxlore> subclassing .. ?
16:06:10 <AnMaster> I said "semi-object" :P
16:06:15 <faxlore> actually I don't think I want to know :P
16:06:31 <AnMaster> but as bash is turing complete it SHOULD be possible
16:06:44 <AnMaster> you write a bash++ interpreter coded in bash! :D
16:06:50 * AnMaster runs
16:07:10 <ehird`> something like:
16:07:15 <ehird`> obj = array
16:07:17 <ehird`> well
16:07:19 <ehird`> obj = array of entries
16:07:27 <ehird`> entry = array with [0] = method or prop
16:07:35 <AnMaster> hm
16:07:45 <AnMaster> array can't have strings as indexes
16:07:49 <ehird`> class = array of keys, where if class[i] = key, obj[i] = value bound to key
16:07:52 <ehird`> AnMaster: see that
16:08:21 <AnMaster> so I'd have to use my libhash (that doesn't do hashes really, just associative arrays)
16:09:01 <AnMaster> using variable names like hsh_myhash_fe1482b9afd
16:09:02 <AnMaster> ;D
16:09:09 <AnMaster> iirc
16:09:12 <ehird`> please see what i said
16:09:20 * AnMaster reads
16:09:26 <AnMaster> ah
16:09:27 <AnMaster> good idea
16:09:38 <AnMaster> ehird`, however, lookup speed would be terrible
16:09:51 <ehird`> correction: speed would be terrible
16:09:52 <ehird`> that's a given
16:10:03 <ehird`> The Little Schemer's environments does something similar, btw
16:10:05 <ehird`> with two lists.
16:10:14 <AnMaster> "little schemer"?
16:10:30 * AnMaster points to his irc bot in bash at envbot.org, got decent speed
16:10:31 <ehird`> the best book about recursion
16:10:37 <ehird`> it teaches you to think recursively
16:10:51 * AnMaster shudders
16:10:58 <ehird`> it usess Scheme as its language but that's not the point, you can easily go through it without a scheme system
16:11:01 <ehird`> and many do
16:11:04 <ehird`> it's well worth a read
16:11:06 <AnMaster> ehird`, I'm thinking about the big O all the time ;P
16:11:09 <ehird`> up there with SICP
16:11:10 <faxlore> Why shudder?
16:11:22 <ehird`> faxlore: he's an imperative weenie?
16:11:23 <ehird`> :P
16:11:24 <AnMaster> well for a functional language it makes sense
16:11:27 <faxlore> haha
16:11:37 <AnMaster> and when I use lisp I do use recursion
16:11:48 <AnMaster> I try to avoid it otherwise
16:12:05 <ehird`> the question, anmaster, is - why do you use an inferior language which doesn't support such expressive coding of algorithms?
16:12:12 <faxlore> well you should avoid recursion in C when you want TCO
16:12:17 <ehird`> because of your biases against lisp that you've got from other people, I bet.
16:12:18 <faxlore> otherwise.. use a real language?
16:12:19 <faxlore> heh
16:12:27 <faxlore> (real languages do TCO)
16:12:31 <AnMaster> ehird`, hm?
16:12:33 <ehird`> faxlore: well yeah, if you're using C then the only thiing you should be doing is writing an interpreter or something ;)
16:12:39 <AnMaster> I do use lisp a lot, I'm an emacs user
16:12:45 <AnMaster> so elisp
16:13:03 <ehird`> elisp is not lisp.
16:13:07 <ehird`> :|
16:13:07 <AnMaster> http://envbot.org/trac/browser/anmaster-trunk/lib/hash.sh <-- not nice code, but works
16:13:23 <AnMaster> ehird`, hm? what is the difference, they certainly have a lot in common
16:13:43 <faxlore> A lot of paranthesis ":D
16:13:45 <ehird`> AnMaster: elisp is a hacky, horribly-designed and implemented language that happens to have a lot of parentheses
16:13:53 * faxlore lol
16:13:56 <ehird`> faxlore: stfu let me take that metaphor :P
16:13:56 <AnMaster> hah
16:14:04 <faxlore> great minds ehird!
16:14:28 <ehird`> faxlore: great minds! ... and sheep
16:14:30 <ehird`> :)
16:31:37 -!- sebbu2 has joined.
16:36:42 -!- oerjan has joined.
16:37:42 -!- oerjan has quit (Client Quit).
16:39:40 -!- oerjan has joined.
16:41:38 <ehird`> i think R5RS scheme was designed by people who hate implementors
16:41:47 <faxlore> Hahaha
16:42:08 <faxlore> I like this new approach to language design
16:42:22 <ehird`> 'how can we make a language that looks so elegant and simple PURE LIQUID DEATH to implement?'
16:42:38 <ehird`> 'mwahahaha! now all implementors will commit suicide and we shall RULE THE WORLD!'
16:44:34 <ehird`> however, i still implement it anyway
16:44:35 <ehird`> oh well.
16:44:47 <ehird`> anyone have a favourite language they want a scheme in? :P
16:45:49 -!- sebbu has quit (Success).
16:46:05 <oerjan> Malbolge :)
16:46:28 <oerjan> given that someone already made a scheme in unlambda...
16:47:49 <ehird`> hahaha. no :(
16:49:17 <oerjan> is there one in brainfuck btw?
16:49:51 <faxlore> that sounds painful :[
16:50:06 <oerjan> nowhere near as painful as in Malbolge, i trust
16:51:34 <ehird`> and no there isn't
16:52:09 <ehird`> because fitting that stuff into a tape-heap thing is PAINFUL
16:52:10 <ehird`> :-)
16:54:10 <faxlore> maybe make a scheme -> bf, then a scheme in scheme ... and
16:54:11 <oklopol> scheme in unlambda? fully compliant to the spec?
16:55:09 <ehird`> faxlore: scm->bf is the hard bit
16:55:11 <ehird`> oklopol: obviously not
16:55:19 <ehird`> oklopol: although it might have continuations, i mean that's not vey hard with c
16:55:20 <ehird`> ;)
16:55:20 <oklopol> obviously?
16:55:33 <ehird`> r5rs is small but not trivial
16:55:45 <ehird`> it is Liquid Flaming Death to implement 100%, even in C or whatever
16:55:52 <ehird`> but a small subset is easy
16:56:41 <oklopol> indeed, it would be hard to do it in unlambda, i just don't think it's *obvious* it's not full r5rs
16:57:23 <ehird`> have you ever read r5rs
16:57:29 <ehird`> implementing that in unlambda is just silly..
16:57:42 <oklopol> yeah i've read it
16:57:47 <oklopol> how is it silly?
16:57:47 <ehird`> and there's no point i mean once you have the basic scheme its just tedious function after function after that.
16:58:09 <ehird`> oklopol: it would need vectors
16:58:16 <ehird`> do you think it would have VECTORS?
16:58:16 <ehird`> in unlambda?
16:58:18 <oerjan> i think the scheme-alike in question has no mutable data, like unlambda
16:58:21 <oklopol> umm....
16:58:31 <oklopol> vectors can be lists..
16:58:35 <ehird`> oklopol: nope
16:58:38 <oklopol> no?
16:58:40 <ehird`> oklopol: lookup time has to be O(1)
16:58:46 <ehird`> you acn't have that with a linked list
16:58:46 <oklopol> oh, it specifies that?
16:58:47 <ehird`> have a nice day!
16:58:57 <oklopol> i must have not payed attention
16:59:00 <ehird`> iirc yes
16:59:14 <oklopol> i recall "vectors are usually faster in lookups"
16:59:17 <oklopol> but i'll check
16:59:51 <oklopol> specifying ordos is interesting because it actually may disallow implementation in many languages
17:00:43 <ehird`> but anyway
17:00:50 <ehird`> obviously a toy unlambda impl won't do all scheme
17:01:00 <ehird`> because it's pretty redundant, you don't get extra cool points beyond call/cc
17:01:56 <ehird`> oerjan: link?
17:02:31 <ehird`> hm question
17:02:38 <ehird`> is there any native-code INTERCAL compiler?
17:02:41 <ehird`> preferably optimizing :D
17:02:50 <oklopol> yeah, doesn't specify access time of course
17:03:35 <oerjan> i don't recall
17:03:38 <oklopol> pretty redundant? it'd be awesome to make a full scheme in unlambda
17:03:45 <ehird`> oklopol: no, it wouldn't
17:03:57 <oklopol> sure would.
17:04:12 <ehird`> someone tell oklopol he's wrong
17:05:23 <oklopol> matter of opinion
17:06:37 <oklopol> and i'm not wrong, why not do it good if you're gonna do it
17:07:21 <oerjan> basically, once you add mutable structures you have to pass a simulated heap...
17:07:55 <oklopol> :-)
17:09:32 <ehird`> any other language suggestions for a scheme? ;)
17:09:37 <oklopol> if there's no mutable structures, i'd hardly even call it a scheme
17:09:43 <oerjan> befunge
17:09:57 <oklopol> perhaps a crippled lisp
17:09:58 <oerjan> might even be fairly doable...
17:10:00 <faxlore> ehird`: Do it in Agda2 or Coq or Epigram or something
17:10:04 <oklopol> crisp
17:10:16 <ehird`> oerjan: yow
17:10:17 <ehird`> :)
17:10:18 <ehird`> maybe.
17:10:23 <ehird`> faxlore: never heard of any of those but Coq
17:11:03 <ehird`> oklopol: everyone's done that ;)
17:11:15 <oklopol> done what?
17:11:24 <ehird`> wroten some kind of lisp interpreter in a minimal lisp
17:11:41 <oklopol> i have no idea what that has to do with anything, though
17:11:42 <ehird`> oerjan: the parser will be difficult in befunge :)
17:11:48 <ehird`> oerjan: i assume you mean befunge-98 btw?
17:11:51 <ehird`> to escape the 80x24
17:11:54 <oerjan> yeah
17:12:18 * ehird` tries to think of a pun involving Befunge and Scheme to use as a name
17:12:19 <ehird`> :-)
17:12:41 <oklopol> oerjan said you need to simulate a heap to have mutable structures, i said if it does not have mutable structures, it's so far from the spec i'd hardly call it scheme
17:12:42 <ehird`> hm i haven't got a befunge implementation here
17:12:49 <ehird`> what's the best (i.e. fastest) interpreter out there right now?
17:12:54 <oerjan> parser for scheme difficult?
17:13:11 <ehird`> oerjan: in befunge yeah :)
17:13:17 <oklopol> if it lacks mutable structures, you cannot reason with it as you can with scheme, making it definitely less powerful
17:13:17 <oerjan> no idea
17:13:26 <ehird`> oklopol: your >>> sch has no mutable structures
17:13:30 <oklopol> just lacking vectors doesn't matter much
17:13:33 <ehird`> no set-car! or set-cdr!
17:13:36 <oklopol> indeed, i'd hardly call it a scheme
17:13:46 <oklopol> that doesn't have anything to do with anything either
17:13:47 <ehird`> um mutability IMPACTS on your reasoning
17:13:51 <oerjan> oklopol: well it was a subset of scheme + unlambda-specific functions
17:13:54 <oerjan> iirc
17:14:03 <ehird`> in fact, PLT Scheme 4.0 makes all cons pairs IMMUTABLE by default
17:14:15 <ehird`> you need to use mcons/mcar/mcdr/mset-car!/mset-cdr! for mutability
17:14:20 <ehird`> and PLT is one of the big-uns in scheme
17:15:06 <oklopol> i'm not saying being immutable is bad, i'm saying if structures are immutable, you cannot use it as you might want to use scheme.
17:15:34 <oklopol> which means many scheme programs would have to dramatically change structure to be convertible to an immutable scheme
17:15:44 <oklopol> i'd hardly call such a scheme a scheme
17:15:46 <ehird`> oerjan: my befunge program will be ugly! since i'm commenting it to hell it'll probably look more like a brainfuck program with funny symbols than befunge, heh
17:16:07 <ehird`> oklopol: most scheme programs don't use set-car!/cdr!
17:16:27 <ehird`> which is why PLT - which is the most popular implementation of Scheme (unless this has changed) - is switching
17:16:30 <oklopol> umm no, but many scheme programs do use some mutable features.
17:16:41 <ehird`> oklopol: like?
17:16:53 <oerjan> mutable _variables_ are the rule
17:16:54 <oklopol> dunno, that's just what i've heard from schemere
17:16:57 <oklopol> *schemers
17:17:09 <oklopol> hmm, oerjan makes a good point
17:17:14 <ehird`> oerjan: of course
17:17:20 <ehird`> oerjan: but i would wager that unlambda interp had them.
17:17:31 <oerjan> it couldn't
17:17:37 <ehird`> if you have environments in unlambda you're already doing crazy operations, updating of values would be trivial
17:18:07 <oerjan> no, it isn't. for full mutability of environments you need a heap
17:18:21 <oklopol> without mutable structures, making scheme in unlambda shouldn't be that hard, basically conversion to pointless & list support
17:18:41 -!- sebbu has joined.
17:18:49 <oklopol> mutable variables.
17:19:02 <ehird`> anyway
17:19:11 <ehird`> who knows what the best befunge implementation is.
17:19:12 <ehird`> fastest, that is
17:19:17 <ehird`> maybe best error messages ;)
17:19:28 <oerjan> i don't recall whether it supported mutual recursion or just did macro expansion of definitions (like the lazy-K scheme afaiu)
17:19:53 <ehird`> lazy k's macrolanguage is not scheme
17:20:03 <ehird`> it's written in scheme and uses s-expressions
17:20:05 <ehird`> but isn't scheme
17:20:18 <oerjan> not even a subset?
17:21:15 <ehird`> nope
17:21:26 <ehird`> it's closer to lambda calculus with macros than scheme
17:36:30 -!- sebbu2 has quit (Connection timed out).
17:44:49 -!- sebbu2 has joined.
17:52:28 <ehird`> anyone re: befunge?
17:56:06 <ehird`> :(
17:56:12 -!- timotiis has quit ("leaving").
17:56:16 * faxlore doesn't understand the question
17:56:24 <faxlore> oh best implementation..
17:59:11 <ehird`> where best is mainly determined by: fastest, and nice error messages
18:03:00 -!- sebbu has quit (Connection timed out).
18:03:00 -!- sebbu2 has changed nick to sebbu.
18:07:35 -!- timotiis has joined.
18:16:04 -!- sebbu2 has joined.
18:17:27 <ehird`> nobody?
18:18:19 <oerjan> nope
18:29:09 <ehird`> :(
18:29:14 <ehird`> I guess I could write my own :P
18:31:30 <ehird`> Shit, 8 core mac pro.
18:31:35 <ehird`> What would I do with 8 cores?
18:33:36 <ehird`> ... Run befunge probably.
18:34:09 -!- sebbu has quit (Connection timed out).
18:34:10 -!- sebbu2 has changed nick to sebbu.
18:42:40 <ehird`> befunge-98 is complex
18:42:41 <ehird`> ::|
18:45:26 <ehird`> very comple
18:45:28 <ehird`> x
18:45:58 <ehird`> Someone suggst a different langugae :P
18:46:22 <oerjan> Glass then.
18:46:33 -!- Hiato has joined.
18:46:36 -!- sebbu2 has joined.
18:46:40 <Hiato> Hello all
18:49:00 <Hiato> let me cut to the chase: The Acronym spec is now complete, an now it's interpreter time. What language should be the primary choice for this (needs to hold fairly large arrays of Int32, in two dimensions to create the 128x128 grid twice, also needs to have an easy if/else if/case/switch/when structure). Any suggestions?
18:49:31 <faxlore> Hiato: Just use whatever you enjoy programming in
18:50:21 <Hiato> Sure, ok, thanks faxlore (because I received a couple of long stares when I wrote the Full 0 interpreter in Delphi last time ;) )
18:51:06 <faxlore> Delphi? O_o
18:51:20 <Hiato> Exactly :P
18:51:30 <Hiato> Like Pascal, but different
18:52:15 <ehird`> hmm,
18:52:20 <ehird`> fairly large arrays?
18:52:24 <ehird`> would 'infinite' be better?
18:52:32 <Hiato> yes, (128x128)x2
18:52:37 <ehird`> hm
18:52:43 <ehird`> show me the spec
18:52:43 <Hiato> yes, I suppose, but the spec specified that
18:52:50 <Hiato> I don't mind though, I'll change the spec
18:52:57 <Hiato> blah, ok, hold on 1 sec
18:54:36 -!- ehird` has quit.
18:55:38 <Hiato> http://rafb.net/p/rPclV323.txt
18:55:43 <Hiato> damn
18:55:56 <Hiato> ok, well it's there anyways
18:58:11 -!- ehird` has joined.
18:58:17 <ehird`> sorry, hiato. irc client troubles.
18:58:19 <ehird`> :|
18:58:23 <Hiato> sure, no problem
18:58:25 <Hiato> :(
18:58:28 <Hiato> anyway
18:58:28 <Hiato> http://rafb.net/p/rPclV323.txt
18:58:32 <ehird`> anyway, i'll write an interpreter in scheme, with infinite arrays instead of restricted
18:58:41 <Hiato> here you go, stuff is misaligned because of wordpad
18:58:45 <ehird`> by the same token it will be able to run in a browser, once i get my implementation written :P
18:59:11 <ehird`> wow that is evil.
18:59:23 <Hiato> heh, thanks
18:59:38 <oklopol> oh, that one
18:59:43 <Hiato> so you'll write an ACRONYM interpreter in scheme?
18:59:47 <oklopol> how much change since last version?
18:59:56 <ehird`> Hiato: yeah, when i find the time
18:59:58 <Hiato> not much really
18:59:59 <ehird`> or maybe compile it
19:00:02 <ehird`> unless it's self modifying
19:00:06 <Hiato> Thanks ehird` !
19:00:12 <Hiato> no, it's not, no worries
19:00:16 <ehird`> yay
19:00:17 <ehird`> :P
19:00:29 <Hiato> Haha :)
19:00:36 <ehird`> Hiato: do they have to be int32s?
19:00:38 <ehird`> or can they be bignums
19:00:39 <Hiato> oklopol: some technical things and a couple of new tidbits
19:00:39 <ehird`> :D
19:00:48 <oklopol> compiling a self-modifying language might be interesting
19:00:52 <Hiato> Sure, bignums = all the better
19:00:56 <ehird`> oklopol: it's been done.
19:00:57 <ehird`> for befunge.
19:01:01 <Hiato> ditto
19:01:07 <Hiato> I was about to say that :P
19:01:11 <ehird`> Hiato: ok, remove the fixed size restrictions from the spec and i'll do it :D
19:01:11 <oklopol> i know
19:01:14 <ehird`> :P
19:01:16 <oklopol> doesn't make it less interesting
19:01:26 <ehird`> otherwise i will have a language-strikingly-similar-to-ACRONYM implementations
19:01:30 <ehird`> instead of an ACRONYM implementation
19:01:40 <Hiato> alright
19:01:41 <Hiato> sure
19:01:52 <Hiato> I am changing it now :)
19:02:48 <ehird`> it'll also make it turing complete
19:03:02 <Hiato> yeah, for sure :D
19:04:13 -!- sebbu has quit (Connection timed out).
19:05:37 <Hiato> "Each grid cell can store any arbitrary integer." is that better than Int32?
19:05:58 <ehird`> yeah
19:06:03 <ehird`> positive and negative, right??
19:06:04 <Hiato> cool
19:06:05 <ehird`> *right?
19:06:08 <Hiato> yes
19:06:14 <Hiato> naturally :P
19:06:27 <ehird`> also, don't bother specifying about dynamic reallocation of the grid, just say 'grid of infinite size' and let the implementors do what they want
19:06:35 <ehird`> for, e.g., future implementaiton on an infinite-memory machine ;)
19:06:48 <Hiato> Heh, ok, cool
19:06:59 <Hiato> I will change as needed, thanks or the heads up ;)
19:07:34 <ehird`> :D
19:07:57 <ehird`> also, 3x2 commands? i see many one-char commands
19:08:09 <ehird`> oh i see
19:08:18 <ehird`> the command is picked from the result of executing the code in the 3x2 block
19:08:19 <ehird`> right?
19:09:01 <Hiato> well, kind of, you're close
19:09:17 <Hiato> what I meant was there are 6 commands, on a grid of 3x2
19:09:20 <Hiato> when you call ~
19:09:33 <Hiato> stuff happens in accordance with the currently selected command
19:09:46 <Hiato> the grid is just for visualisation of the wrap-around ness
19:09:59 <ehird`> hhmmm
19:10:10 <ehird`> i may need some thinking to understand this
19:10:19 <ehird`> it's kind of like full 0
19:10:21 <ehird`> right?
19:10:34 <Hiato> amm.. no, not really
19:10:38 <Hiato> but yes, I suppose
19:10:46 <Hiato> in that there is a give allotment of commands
19:10:56 <ehird`> and the program has indirection
19:11:03 <Hiato> spread over some kind of shape (grid), and you select the command at will
19:11:09 <ehird`> i.e. it runs commands which select a command-2, and has an instruction to run the kind of command-2
19:11:27 <Hiato> amm,..
19:11:30 <ehird`> oerjan: Scheme in Glass, sounds good
19:12:00 <Hiato> no, not really, It runs commands that select command 2, and then has an instruction to run the selected command, irrespective of what it is
19:12:25 <ehird`> oerjan: does glass have bignums?
19:12:34 <ehird`> Hiato: yes
19:12:44 <oerjan> no idea
19:19:10 -!- sebbu has joined.
19:19:12 <oerjan> somewhat doubt it
19:21:00 <oklopol> i doubt the implementation has
19:22:23 <Hiato> http://rafb.net/p/2CJw0b73.txt
19:22:27 <Hiato> alrighty
19:23:02 <Hiato> here it is, excuse the lame word-wrap, it was hand-done. Some things may be mis-aligned, I apologise as OO doesn't insert LF's if it wraps.
19:24:12 <ehird`> Glass is totally unhelpful on errors
19:24:14 <ehird`> it just exits
19:24:17 <ehird`> and gives no info
19:24:20 <oerjan> yep
19:24:47 <oerjan> very esoteric :)
19:25:06 <Hiato> lol :)
19:25:09 <SimonRC> no, industry-standard
19:25:56 <Hiato> Yip, they learnt from the best, the obscure, GHC! It's just a mild improvement on that... :P
19:26:17 <ehird`> ghc gives good errors
19:26:18 <ehird`> :P
19:26:29 <Hiato> for those who work for the NSA
19:26:30 <Hiato> ;)
19:26:30 <ehird`> but then you use delphi so you're used to NOT HAVING TO BE HARDCORE
19:26:32 <ehird`> NERRRR
19:26:41 <oerjan> rubbish. the industry-standard would at _least_ lock up the computer.
19:26:43 <SimonRC> GHC beats C++
19:27:01 <ehird`> SimonRC: well, C++ was an elaborate joke...
19:27:11 <SimonRC> C++ can easily output multi-k error messages if you much up templates
19:27:23 <ehird`> why are you using templates
19:27:25 <ehird`> :P
19:27:27 <ehird`> or C++!
19:27:40 <SimonRC> I'm not
19:28:15 <ehird`> I.e : — is-eof
19:28:16 <ehird`> Push 1 if end of input, 0 otherwise.
19:28:16 <Hiato> ehird`, for your information, us delphi dudes may be soft on the inside, but nothing can ever penetrate k : Integer; k := 4 / 3; Error: "Uknown" type/class/object mismatch :P
19:28:21 <ehird`> i want it in the other way round
19:28:22 <ehird`> damnit!
19:28:25 <ehird`> :P
19:29:18 <ehird`> hm it seems like a 'not' in Glass would be non-trivial
19:29:19 <ehird`> :(
19:29:51 <ehird`> oh
19:29:52 <ehird`> duh
19:29:53 <Hiato> ehird` : Are you writing an ACRONYM interpreter in Glass? (Sanity check)
19:29:58 <ehird`> just do an ==0
19:30:01 <ehird`> Hiato: Scheme.
19:30:12 <Hiato> just checking... :P
19:30:12 <ehird`> It will be able to run the Scheme ACRONYM interpreter, therefore ;P
19:30:14 <ehird`> Probably not actually
19:30:19 <ehird`> It's going to be a restricted schem
19:30:20 <ehird`> e
19:30:23 <ehird`> -- no continuations methinks
19:30:41 <Hiato> sure, whatever floats your boat ;)
19:32:31 <ehird`> (_e)(_i)e.?<0>(_a)e.?=
19:32:38 <ehird`> if EOF, _e = 0, else _e = 1
19:32:58 <ehird`> the interpreter doesn't work.
19:32:59 <ehird`> :|
19:33:02 <ehird`> it doesn't report EOF, for EOF.
19:33:40 <ehird`> HAY OERJAN
19:33:41 <ehird`> http://www.complang.tuwien.ac.at/schani/oldstuff/index.html#schemeinunlambda
19:33:45 <ehird`> it's a compler, though
19:33:47 <ehird`> so less cool
19:35:14 <ehird`> I should write that unlambda-abstraction-introducer, sometime
19:37:38 <Hiato> Hrmm.. does anyone know if GregorR will be peeved if I add my 1L_AOI spec to the wiki
19:38:00 <Hiato> because his is vague and incomplete, and is merely a suggestion for further investigation
19:38:46 -!- conal has joined.
19:38:55 -!- sebbu2 has quit (Connection timed out).
19:40:37 -!- MichaelRaskin_ has joined.
19:41:17 <ehird`> Hiato: of course not
19:44:41 <Hiato> cool, then I'll put it up for the world to see :P
19:45:44 <ehird`> i think i'm going to type strictly algorithmically for a few minutes!
19:46:11 <Hiato> go for it, it'll be interesting (to say the least :P )
19:46:17 <ehird`> i shall handle nesting of quotes thus: "this quote is by el qwertybomb" and is terminated by the quotation marks.
19:46:26 <ehird`> i shall type entirely in lower-case.
19:46:37 <ehird`> i shall nest quotes by using ", then ', then `.
19:46:53 <ehird`> all smilies shall not count as closing parentheses (like this :)).
19:47:07 <ehird`> and closing marks must always be outside and after the nested pair.
19:48:15 <ehird`> if i break the rules, then i shall break the rules. deal with it.
19:48:21 <Hiato> how shalt thy express added information, such as (but not referring directly to) emotions and error messages and grammatical aids (such as the formidable question mark and ellipses) questionmark
19:48:24 <oerjan> NEVER
19:48:39 <oerjan> "thou"
19:48:44 <oklopol> :D
19:48:47 <Hiato> "true"
19:48:47 <oklopol> i was just correcting that
19:48:50 -!- MichaelRaskin_ has left (?).
19:48:55 <ehird`> i shall handle all addressing of people with @name.
19:48:59 <ehird`> consider it a special directive.
19:49:05 <oklopol> oerjan: stop stealing my thoughts
19:49:08 <ehird`> case will not be preserved.
19:49:20 <ehird`> @hiato i am afraid i do not understand.
19:49:28 <Hiato> I present to you, your honour, a no contest plea
19:49:36 <oerjan> oklopol: i knew you would say that.
19:50:06 <ehird`> i cannot tell whether people are copying my style or not.
19:50:18 <ehird`> i seem to have become paranoid from my new logic typing!
19:50:28 <ehird`> oh no, a typing error.
19:50:41 <ehird`> i must devise a way to express replacements, yet regular expressions are ugly.
19:50:43 <Hiato> doth thou fail to comprehend the expressions put forth by my hand, to thine eyes, fellow interlocutor?
19:50:53 <oerjan> of course logic makes you paranoid. just look at Gdel.
19:51:01 <ehird`> ah! occurance-number"string"="string"
19:51:08 <oerjan> "doest"
19:51:08 <ehird`> 1"logic"="logical"
19:51:23 <Hiato> "true"
19:51:35 <ehird`> @oerjan gdel was infected by self-reference, which is why he became paranoid
19:51:37 <faxlore> regular expressions are ugly? :(
19:51:45 <ehird`> 1"paranoid"="paranoid."
19:51:58 <faxlore> You can't mean that
19:52:57 <ehird`> @faxlore but i do, for they are quite hacky.
19:53:07 <oerjan> he doesn't mean it. he is just pretending in order to entrap us.
19:53:36 <Hiato> "ensnare"
19:53:38 <oklopol> regular expressions are fairly erotic
19:53:43 <faxlore> yes!
19:53:44 <Hiato> ":P"
19:53:56 <ehird`> they originated in the tradition of unix, also, which i feel in light of my style of typing for the present time ("the-right-thing" typing, so to speak) should be disowned in favour of the lisp way, or the mit way, or whatever you would like to call it.
19:54:04 <oerjan> "O_O"
19:54:06 <ehird`> this is hard.
19:54:48 <Hiato> agreed
19:54:56 <ehird`> i think what we need is a language like lojban, but that would work as a programming language.
19:55:01 <ehird`> more symbols, i guess. and less fluid grammar.
19:55:25 <ehird`> that would be cool (though i guess people have made lojban programming languages anyway, they are probably not usable in any sense (even in an esoteric way)).
19:55:31 * Hiato cannot get a word in without orejan or oklopol correcting him (emoticon)
19:55:33 <faxlore> lisp style namespaceing in s-expressions seems nice
19:55:43 <oerjan> "oerjan"
19:55:47 <ehird`> @faxlore i do not understand.
19:55:50 <faxlore> although .. It's kind of hard to pronounce '(' and ')'
19:55:54 <Hiato> see, there you go :P
19:56:08 <oerjan> and i refuse to believe that was unintended :D
19:56:10 <ehird`> @faxlore ah, for a language. yes, i do not think s-expresisons are the best route for that :).
19:56:19 <Hiato> heh ;)
19:56:49 <oklopol> faxlore: do like in lalna, and use ´ and ` for nesting
19:57:21 <oklopol> (add five three) -> ádd five thrèe
19:57:32 <ehird`> "When the Nazi regime was briefly mentioned, Gdel informed the presiding judge that he had discovered a way in which a dictatorship could be legally installed in the United States, through a logical contradiction in the U.S. Constitution."[wikipedia] that is brilliant, i didn't know that :).
19:57:36 <faxlore> ohh
19:57:38 <faxlore> neat
19:57:38 <ehird`> new syntax: "quote"[source].
19:58:17 <oklopol> i also used circumflex for infix
19:58:22 <Hiato> heh :D
19:59:13 <oklopol> i recommend reading about the computer science geniuses, pretty much everyone had an interesting life
19:59:33 <oklopol> or then i've just been reading well-written books
19:59:46 <ehird`> it is ironic that gdel died from not eating for fear of being poisoned.
19:59:55 <ehird`> not much difference dying either way, i guess :P.
20:06:30 -!- Corun has joined.
20:12:10 <ehird`> hmm, my standard way to learn a language is writing a scheme interpreter. there's something wrong with that.
20:14:49 <Hiato> lol, :D Nope, can't quite put my finger on it ;)
20:20:51 -!- RedDak has joined.
20:29:37 -!- oerjan has quit ("Good night").
20:30:26 -!- ttm_ has joined.
20:30:48 -!- dbc has quit (Read error: 110 (Connection timed out)).
20:33:32 <Hiato> http://esoteric.voxelperfect.net/wiki/1L
20:33:34 <Hiato> it's done
20:33:42 <Hiato> I hope ;)
20:38:52 <Hiato> Anyway, night everyone, it's late :(
20:38:56 -!- Hiato has quit ("Leaving.").
20:41:01 * SimonRC goes
20:42:43 <ehird`> everyone dies
20:52:20 -!- conal has left (?).
20:55:01 <AnMaster> <ehird`> anyone have a favourite language they want a scheme in? :P <-- bash
20:55:12 <ehird`> no thats your job
21:00:04 <ehird`> :)
21:20:45 -!- jix has quit ("CommandQ").
21:21:48 * ehird` is writing the spec for a rewriting term language thing.
21:23:20 <oklopol> rewriting? sounds hot
21:23:37 <ehird`> heh
21:24:35 <AnMaster> ehird`, I don't know scheme
21:24:42 <AnMaster> ehird`, do it in forth then
21:24:43 <AnMaster> :P
21:24:59 <AnMaster> (then you did it in bash because someone coded a bashforth so...)
21:25:01 <ehird`> :P
21:25:17 <ehird`> oklopol: as well as "A"->"B"
21:25:21 <ehird`> you can do expression->expresison
21:25:22 <ehird`> so you can do
21:25:32 <ehird`> ("A"->"B")->("C"->"D")
21:25:42 <ehird`> and all terms rewriting "A" to "B" turn into ones rewriting "C" to "D"
21:26:03 <AnMaster> "^my (long|short) regex" -> "your \1 regex"
21:26:06 <AnMaster> ehird`, what about that ;)
21:26:13 <AnMaster> adding regex support
21:26:22 <AnMaster> full PCRE
21:26:28 <AnMaster> with lookahead and so on
21:26:29 <oklopol> ehird`: tree-rewriting?
21:26:37 <ehird`> oklopol: yep
21:26:45 <ehird`> AnMaster: no
21:26:48 <oklopol> ah, one of my favorite concepts :)
21:26:58 <ehird`> it even has output!
21:27:12 <ehird`> input may come sometime
21:27:22 <oklopol> hmm, certain virtual trees are detected by a rewriting rule that kills them, and outputs?
21:27:27 <oklopol> errr
21:27:34 <oklopol> not virtual trees
21:27:35 <oklopol> sorry
21:27:36 <ehird`> oklopol: oh and i think i might make:
21:27:38 <ehird`> ("A"->"B")->("C"->"D")
21:27:41 <ehird`> first rewrite all As to Bs
21:27:43 <ehird`> getting:
21:27:49 <ehird`> ("B"->"B")->("C"->"D")
21:27:53 <ehird`> then, erwriting all Cs to Ds
21:27:54 <oklopol> a hard-coded rule ["output" object] -> outputs object
21:27:54 <ehird`> getting:
21:27:57 <ehird`> ("B"->"B")->("D"->"D")
21:28:06 <ehird`> then rewriting all ("B"->"B") to ("D"->"D")
21:28:10 <ehird`> oklopol: good/bad?
21:28:19 <oklopol> hmm
21:28:23 <ehird`> oklopol: and "literals" on their own in a statement are outputted
21:28:26 <oklopol> interesting
21:28:40 <ehird`> oklopol: or should i have A->B a and b implicitly quoted..
21:28:42 <oklopol> i've done a similar thing for thue, but that's one sick idea
21:28:54 <ehird`> i mean, with my idea i think its computationally useless
21:28:56 <ehird`> so..
21:29:08 <oklopol> i mean, that data and rewriting rules in the same package might have some interesting implications
21:29:30 <ehird`> i do think it makes it computationally unsuitable though
21:29:35 <ehird`> so, i'll make them quoted
21:29:49 <oklopol> well, if you do it like that, yes
21:29:54 <oklopol> yeah, quoting works for scheme
21:30:03 <ehird`> no i mean
21:30:06 <ehird`> A->B is always quoted
21:30:25 <oklopol> hmm
21:30:31 <oklopol> could you have metarules for those? :)
21:30:38 <oklopol> and meta^2 rules
21:30:41 <ehird`> heh, maybe
21:30:45 <ehird`> i'll just submit the 'basic' lang
21:30:47 <ehird`> then i'll modify it
21:33:13 <ehird`> oklopol: http://esoteric.voxelperfect.net/wiki/CRTL
21:33:23 <ehird`> feel free to comment, it's completely fluid right now
21:34:24 -!- ehird` has left (?).
21:34:28 -!- ehird` has joined.
21:34:35 <ehird`> better add the rule that strings are searched.
21:34:40 <ehird`> better add the rule that strings are searched.
21:34:42 <ehird`> better add the rule that strings are searched.
21:34:43 <ehird`> better add the rule that strings are searched.
21:34:46 <ehird`> better add the rule that strings are searched.
21:34:46 -!- ehird` has left (?).
21:34:48 -!- ehird` has joined.
21:34:50 <faxlore> better add the rule that strings are searched.
21:34:52 <ehird`> eurh
21:35:39 <oklopol> ("A"->"B")->("C"->"D") would be fine if you change it just a bit, 1. rules don't rewrite themselves 2. rules only rewrite rules of lesser degree
21:35:44 <ehird`> done, look now oklopol
21:35:46 <ehird`> err
21:35:47 <ehird`> wait
21:35:57 <oklopol> this is a degree 2 rule, because it's l-side has a function
21:35:57 <ehird`> how about now...
21:35:59 <ehird`> argh
21:36:00 <ehird`> damnit
21:36:01 <ehird`> Stupid
21:36:01 <ehird`> god
21:36:03 <ehird`> damn
21:36:04 <ehird`> wiki
21:36:18 <ehird`> oklopol: lesser degree?
21:36:22 <ehird`> oklopol: OK refresh now
21:36:27 <oklopol> i mean
21:36:32 <oklopol> "a" first degree term
21:36:37 <oklopol> ("a"->"b")
21:36:40 <oklopol> ...
21:36:42 <oklopol> "a" 0th
21:36:46 <ehird`> ah
21:36:47 <oklopol> "a"->"b" 1th
21:36:58 <ehird`> sounds like principa mathematica's hopeless Godel-avoiding
21:37:01 <ehird`> :)
21:37:04 <oklopol> the degree is the most nested part of it or something
21:37:11 <oklopol> hmm, i don't know that
21:37:48 <ehird`> basically
21:37:55 <ehird`> they hated self-reference and the paradox it entails
21:38:03 <ehird`> so sets of type N can only contain sets of type N-1
21:38:26 <oklopol> ah, well, that's a bit different
21:38:30 <ehird`> godel came up with godel numbering, showed how you could use it to construct a self-containing set and similar, and finally BAM godel's incompleteness theorem, you got yourself a paradox in principa mathematica
21:39:06 <faxlore> I think that Type : Type breaks for similar reasons
21:39:15 <faxlore> I really want to get the lambda term though
21:40:13 <ehird`> question:
21:40:20 <ehird`> is CRTL1 (the current version) turing complete.
21:40:26 <ehird`> I think YES by isomorphism with thue?
21:42:43 <ehird`> ooh, i know
21:42:50 <ehird`> oklopol: what about free variables
21:42:57 <ehird`> ("id",x)->x
21:43:05 <ehird`> ("dup",x)->(x,x)
21:43:31 <ehird`> ("loop",x)->("loop",("loop",x))
21:43:42 <oklopol> that's the beauty of tree-rewriting
21:43:59 <oklopol> scoping is unbelievably sexy
21:44:10 <ehird`> err, wait
21:44:11 <ehird`> instead of ,
21:44:15 <ehird`> ("id"->x)->x
21:44:16 <ehird`> of course.
21:44:22 <ehird`> since you only have "blah" and a->b
21:44:45 <ehird`> ("loop"->x)->("loop"->("loop"->x))
21:47:57 -!- CakeProphet has joined.
21:48:07 <CakeProphet> :o
21:48:09 <CakeProphet> hello my beautiful friends
21:48:43 -!- GreaseMonkey has joined.
21:49:16 <CakeProphet> ...
21:49:19 <ehird`> hello.
21:49:38 <ehird`> oklopol: updating the CRTL spec with free names now
21:50:53 <ehird`> oklopol: Oh, for useful stuff I need concatentation of strings.
21:51:13 <ehird`> I'll use a~b
21:53:38 <ehird`> OK, oklopol, new spec I think
21:53:44 <ehird`> http://esoteric.voxelperfect.net/wiki/CRTL
21:53:58 <ehird`> with new example!
21:54:09 <ehird`> CakeProphet: you made dupdog? you might like this then, it's self-rewriting
21:54:20 <ehird`> I think it's turing complete.
21:54:38 <CakeProphet> indeed I did
21:55:10 <ehird`> CakeProphet: dupdog isn't turing complete, though
21:55:11 <ehird`> :)
21:55:21 <ehird`> actually, you know what i'd like to see for this language?
21:55:23 <ehird`> a thue implementation of it
21:55:25 <ehird`> :D
21:55:31 <oklopol> hehe
21:57:47 <CakeProphet> I like non-turing complete languages
21:57:56 <CakeProphet> they're pitiful little creatures.
21:57:58 <faxlore> me too!
21:58:17 <ehird`> oklopol: should ("a"~"b")->c match "ab" or ("a"~"b")
21:58:19 <ehird`> if you can do:
21:58:32 <ehird`> ("abc"~rest)->(rest~"def")
21:58:38 <ehird`> then "abcblah" turns into "blahdef"
21:58:43 <oklopol> "a"~"b" should probably be "ab".
21:58:54 <ehird`> with free names allowed as you can see up there?
21:58:55 <ehird`> ok.
21:59:10 <oklopol> substrings match anyway
21:59:17 <CakeProphet> I actually have no clue what dupdog is.
21:59:21 <CakeProphet> as I've never programmed anything in it.
21:59:28 <ehird`> CakeProphet: highly inturingcomplete.
21:59:40 <ehird`> (Useless for anything but constant output, essentially.)
21:59:56 <CakeProphet> but what is it?
22:00:07 <oklopol> dupdog is interesting in that it's not interesting in anyway, but somehow seems cool :D
22:00:16 <CakeProphet> rofl
22:00:18 <CakeProphet> ...yes
22:00:24 <oklopol> CakeProphet: check your memory
22:00:27 <oklopol> it's there
22:00:33 <CakeProphet> it's like... the most pointless thing ever.
22:00:38 <oklopol> indeed.
22:00:41 <ehird`> CakeProphet: whatever the lowest class is :P
22:00:45 <ehird`> it can't do any real computation
22:00:50 <CakeProphet> no I mean... what computational class. We never figured that out.
22:00:54 <ehird`> http://esoteric.voxelperfect.net/wiki/CRTL#Examples
22:00:59 <ehird`> new program generating "barbar"! :P
22:01:04 <CakeProphet> I said it was FSA originally... but someone else said it wasn't.
22:01:07 <ehird`> CakeProphet: whatever the least powerful computational class is :P
22:01:12 <ehird`> lower than FSA
22:01:19 <CakeProphet> ...is that possible?
22:01:23 <ehird`> maybe.
22:01:29 <ehird`> it certainly can't represent all FSA
22:01:53 <ehird`> only a VERY restricted subset of them
22:02:11 <ehird`> now, someone implement crtl
22:02:12 <CakeProphet> ...so then it's a FSA.
22:02:14 <ehird`> or i'll do it!!!!
22:02:27 <CakeProphet> an FSA isn't required... to represent multiple FSAs... that would be confusing and recursive.
22:04:23 <CakeProphet> a believe its a turing machines job to represent an infinite array of FSAs
22:05:07 <CakeProphet> ...well lets see.
22:05:22 <CakeProphet> the state of a dupdog program is... the source code itself.
22:05:24 <CakeProphet> so in that regards
22:05:29 <CakeProphet> it has an infinite number of possible states.
22:05:37 <CakeProphet> so it's not an FSA.... but it's nothing close to being a turing machine.
22:06:07 <CakeProphet> unless someone proves me wrong. Some mad genius could attempt to do it.
22:07:29 <CakeProphet> I'd say it's somewhere inbetween. Just don't know the name for it.
22:07:43 <ehird`> in-between automata
22:07:51 <ehird`> someone implement CRTL! :P
22:08:06 -!- ^_` has joined.
22:08:16 -!- GreaseMonkey has quit (Nick collision from services.).
22:08:25 -!- ^_` has changed nick to GreaseMonkey.
22:08:46 <CakeProphet> it has infinite states... but I don't think it can reach any of them arbitrarily. Its next state is dependent on its current state.
22:08:59 <ehird`> Markov chain automata
22:10:17 -!- immibis has joined.
22:10:20 <ehird`> :D
22:10:30 <ehird`> Now someone implement CRTL! :P
22:11:16 <CakeProphet> ...I'd be afraid to get it wrong
22:11:21 <ehird`> why
22:11:22 <CakeProphet> what language do you want it in?
22:11:37 <immibis> how do i change channels in irssi?
22:11:40 <ehird`> uhhhhhh... CRTL!
22:11:41 <ehird`> :D
22:11:43 <ehird`> immibis: /win
22:11:48 <ehird`> C-Num
22:11:50 <ehird`> err
22:11:54 <ehird`> M-num
22:11:57 <CakeProphet> ...you want me to... implement CRTL in CRTL?
22:12:04 <ehird`> CakeProphet: Yes!
22:12:09 <ehird`> CakeProphet: Or, you know, any languge.
22:12:14 <immibis> meta being alt?
22:12:21 <ehird`> immibis: why not find out
22:12:22 <CakeProphet> oh. I thought you needed the first implementation
22:12:25 <ehird`> Er. That I have a compiler or interpreter for on here, obviously.
22:12:32 <CakeProphet> if one already exists... then I'm not doing anything.
22:12:34 <CakeProphet> ...
22:12:39 <ehird`> it doesn't, CakeProphet.
22:12:47 <CakeProphet> oh.
22:12:52 <ehird`> But I could manually compile your interpreter into C or whatever and use that!
22:12:59 <CakeProphet> Alright. I'll implement it in Python. My practical language of choice.
22:13:02 <ehird`> Then we could call ourselves CRAZIER-LISP
22:13:04 <ehird`> aieee, python!
22:13:07 <ehird`> aw, alright.
22:13:42 <faxlore> hahaha
22:13:56 <ehird`> i really want RETROLISP
22:14:01 <ehird`> which is like lisp of days of yore
22:14:03 <ehird`> but crazier!
22:14:07 <ehird`> and more fun for scripting
22:14:21 <ehird`> like, (incf 2) works
22:14:21 <ehird`> :D
22:14:40 <ehird`> and you have a silly prompt, like " RETROLISP >> "
22:14:51 <ehird`> and it's written in both C and RETROLISP
22:15:16 <faxlore> go for about 50:50, where the language particular parts is written it.. totally arbitrary :D
22:15:34 <ehird`> well, you need the core and the parser in C :P
22:15:36 <ehird`> but yeah!
22:17:33 <CakeProphet> ...I don't understand the expression thing
22:17:34 <CakeProphet> (a->(b->c) ...how does that work.
22:17:46 <ehird`> CakeProphet: tree rewriting
22:17:56 <CakeProphet> ...lolwhut.
22:17:57 <ehird`> if you don't understand it maybe you shouldn't implement it :)
22:18:03 <CakeProphet> I TOLD YOU
22:18:07 <ehird`> oklopol! explain it to him
22:18:13 <CakeProphet> what... are you replacing.
22:18:25 <ehird`> CakeProphet: terms in the program
22:18:28 <CakeProphet> a with when you do a -> (b -> c)
22:18:30 <ehird`> it's self-modifying.
22:18:36 <CakeProphet> ...I know.
22:18:37 <ehird`> you replace the whole expression
22:18:45 <CakeProphet> like thue... except I need this expression thing explained.
22:18:47 <ehird`> (a->(b->c))->E is:
22:19:00 <ehird`> "find rules of the form (a->X) where X is of the form (b->c)"
22:19:10 <ehird`> "and replace with E"
22:19:35 <CakeProphet> ....
22:19:36 <CakeProphet> so like
22:19:44 <CakeProphet> ...
22:19:46 <CakeProphet> hold on
22:19:50 <oklopol> :)
22:19:53 <CakeProphet> -headscracth-
22:19:57 <oklopol> ehird`: i see you have it going on pretty well
22:20:00 <oklopol> oh
22:20:00 <ehird`> oklopol: I think he's having problems! :P
22:20:05 <oklopol> not that well i guess :-)
22:20:08 <ehird`> oklopol: But yeah, take a look at the new spec :D
22:20:19 <oklopol> unless that was a productive headscratch or something
22:20:21 <oklopol> i shall
22:20:21 <CakeProphet> give me an example of how that rule would change something else in the program.
22:21:14 <immibis> so (a->b)->(c->d) = replace a->b with c->d everywhere else?
22:21:35 <ehird`> immibis: yes, though that is an invalid rule if entered into a program
22:21:40 <ehird`> since 'c' and 'd' are free
22:22:02 <ehird`> CakeProphet: watch my dialog with immibis and i think it might become clear :P
22:22:18 <immibis> what do you mean by free?
22:22:36 <immibis> not used?
22:22:37 <oklopol> unbound variable
22:22:39 <ehird`> in (a->b)->(c->d), 'a' and 'b' are bound, and 'c' and 'd' are free
22:22:56 <ehird`> in (a->b)->((c->d)->e), 'a', 'b', 'c', and 'd' are bound, and 'e' is free
22:23:16 <ehird`> free variables in a program are an error, no matter what
22:23:18 <oklopol> the left side is matched with the input, strings are just checked for matching, variables are set to whatever they correspond to in the input
22:23:30 <oklopol> variables are then substituted to the right side
22:23:35 <immibis> anything thats on the left side of an expression is bound, everything else is free?
22:23:37 <ehird`> oklopol: with scoping!
22:23:40 <oklopol> but, guess one explainer at a time :)
22:23:42 <oklopol> ehird`: ?
22:23:43 <ehird`> oklopol: you have to take into account a nested RHS
22:24:05 <oklopol> hmm... what do you mean?
22:24:09 <ehird`> wait no you're right. (a->b)->((a->c)->c) should use the binding of 'a' from (a->b)
22:24:27 <oklopol> yes
22:25:06 <ehird`> ... which makes this language effing awesome
22:25:09 <ehird`> updating the spec a-now
22:25:41 <ehird`> OK
22:25:55 <ehird`> CRTL will become CRTL 1.0 unless anyone sees anything wrong with the updated spec
22:25:55 <ehird`> :P
22:26:01 <faxlore> can you use this rewrite language as a theorem proer?
22:26:34 <ehird`> faxlore: maybe?
22:26:46 <oklopol> ehird`: do you have the degree rule?
22:26:54 <ehird`> oklopol: whut
22:26:57 <timotiis> hm, I could enjoy windowmaker
22:27:31 <oklopol> actually...
22:27:46 <oklopol> i don't think there's any use for it with the rules don't change themselves rule
22:27:50 <oklopol> so, forget it
22:28:55 <ehird`> yeah no self-modifying rules because that would make programs infinitely more hard to write
22:29:04 <ehird`> oklopol: i think a fibonacci program might be good
22:31:05 <oklopol> increment: (("increment"->a)->("number"->(a->"a"))) decrement: (("decrement"->(a->"a"))->("number"->a))
22:31:19 <ehird`> clever, oklopol
22:31:34 <oklopol> nah, just done that many times
22:31:39 <ehird`> :)
22:31:51 <ehird`> oklopol: you have to eliminate ("number"->a) at some point though
22:31:55 <ehird`> otherwise you'll have weird stuff
22:32:03 <oklopol> not really, in case you just never have "number" as such
22:32:09 <oklopol> oh, right
22:32:15 <oklopol> that's what i was gonna ask earlier
22:32:26 <oklopol> can you rewrite *inside* another rule?
22:32:42 <oklopol> because that will screw up pretty much everything :)
22:33:01 <ehird`> esplain
22:33:28 <oklopol> ("foo"->"bar"); ("bar"->"foo")
22:33:36 <oklopol> do they rewrite inside the other rule?
22:34:07 <ehird`> i'll step through that program
22:34:14 <ehird`> "foo"->"bar"; "bar"->"foo"
22:34:20 <ehird`> "bar"->"bar"
22:34:32 <oklopol> i take that as a "yes"
22:34:33 <ehird`> epsilon
22:34:37 <ehird`> (where epsilon is a null program)
22:34:42 <ehird`> oklopol: well what else should it do
22:34:49 <oklopol> that's fine, i think
22:34:57 <oklopol> and you can do macros! :)
22:35:07 <oklopol> i think.
22:35:08 <oklopol> somehow.
22:35:27 <ehird`> macro:
22:35:31 <ehird`> ("id"->x)->x
22:35:37 <ehird`> simple
22:35:47 <ehird`> it's a bit like a lambda calculus without scoping and all that :P
22:35:55 <oklopol> indeed.
22:36:02 <oklopol> i have my reasons for loving tree rewriting
22:36:46 <ehird`> oklopol: you should totally implement this! :P
22:36:50 <oklopol> because tag->value is a common way to express "normal" tuples, tuples not meant as data
22:36:56 <oklopol> umm.. what because of that...
22:37:01 <oklopol> wait...
22:37:14 <ehird`> actually it's an amusing language in that it's 100% intuitive
22:37:22 <ehird`> the rewrite rules are very intuitive
22:37:28 <ehird`> the syntax, and semantisc
22:37:32 <oklopol> ah, i was just thinking perhaps that could be something like . instead of ->, since it's used for both rewriting and tuple creation
22:37:39 <oklopol> but, i guess -> is good
22:38:11 <oklopol> i've made a tree-rewriter once... i think i could just make a few changes to that
22:38:24 <oklopol> basically updating tuples into the rewriter tuple list
22:38:38 <oklopol> hmm... that might be a bit slow :-)
22:38:40 <ehird`> as long as it runs the example programs correctly!
22:38:47 <oklopol> not the simplest language to implement well
22:39:05 <ehird`> i really want to see an infinite-fibonacci program in the langugae though
22:39:18 <oklopol> i'm doing some scheming now, perhaps i can do it tomorrow
22:39:29 <oklopol> unless you can't resist doing it yourself today ;-)
22:39:32 <ehird`> :(
22:39:34 <ehird`> which
22:39:38 <ehird`> the implementation or fibonacci
22:39:38 <oklopol> which?
22:39:42 <oklopol> oh
22:39:47 <oklopol> i meant the interpreter
22:39:54 <oklopol> infinite... hmm, doesn't sound hard
22:39:55 <oklopol> wait
22:40:15 <oklopol> i'll give it a try
22:40:52 <ehird`> basically
22:40:55 <ehird`> it should output
22:40:59 <oklopol> oh...
22:41:01 <oklopol> hmm
22:41:01 <ehird`> fib1\nfib2\nfib3
22:41:03 <ehird`> etc
22:41:04 <ehird`> forever and ever
22:41:10 <ehird`> in unary or whatever you want, no matter
22:41:16 <oklopol> actually, the rewriting scheme doesn't allow for a trivial implementation
22:41:17 <ehird`> note: for newline you will need to actually have a newline
22:41:18 <ehird`> like
22:41:19 <ehird`> "abc
22:41:20 <ehird`> "
22:41:22 <ehird`> and hm does it not?
22:41:23 <ehird`> that's bad
22:41:26 <ehird`> how could i change it?
22:41:40 <oklopol> for you don't have guards, and you don't have definite evaluation order.
22:41:46 <oklopol> oh, wait
22:41:46 <oklopol> i think i have it
22:41:56 <ehird`> i do have definite evaluation order
22:42:02 <ehird`> up to down
22:42:04 <ehird`> but maybe not
22:42:06 <ehird`> eh whatever
22:42:10 <ehird`> what's your idea?
22:45:29 <oklopol> you don't need it to be definite
22:45:59 <oklopol> fibonacci is easy enough, i'm just a bit headachey today
22:48:07 <ehird`> :D
22:49:29 <oklopol> xD
22:49:37 <oklopol> okay, i made a bunch of functions
22:49:41 <oklopol> then realized i don't need them :)
22:49:44 <oklopol> it's a oneliner
22:49:51 <ehird`> show!
22:50:12 <oklopol> (("fib"->a)->b)->(("fib"->b)->a~b)
22:50:22 <ehird`> hm
22:50:23 <ehird`> no.
22:50:29 <ehird`> that does not output at every step of the way
22:50:33 <oklopol> ("fib"->"1")->"1"
22:50:33 <ehird`> and doesn't output with a newline
22:50:35 <oklopol> oh.
22:50:45 <ehird`> remember: you need "literal"; -- as one statement -- to output
22:50:51 <ehird`> so you need to have a dummy statement at the end
22:50:55 <ehird`> replace that witht he fibonacci rules
22:50:59 <ehird`> then calculate one step on a literal
22:51:03 <ehird`> or similar
22:51:08 <oklopol> but
22:51:14 <oklopol> how do i create a new statement?
22:51:15 <oklopol> hmm
22:51:26 <ehird`> replacing some kind of dummy literal
22:51:35 <oklopol> but... i'll need an infinite number of them?
22:51:42 <ehird`> hm
22:51:45 <ehird`> i don't think you will
22:51:47 <ehird`> i dunno
22:51:54 <oklopol> when something is output
22:51:58 <oklopol> does the output thing vanish?
22:52:11 <ehird`> yes, should i change that
22:52:16 <oklopol> no
22:52:19 <oklopol> i don't think so
22:52:31 <oklopol> perhaps make it possible for a rule to produce multiple right sides
22:52:48 -!- RedDak has quit (Remote closed the connection).
22:52:51 <oklopol> (("fib"->a)->b)->(("fib"->b)->a~b);a
22:52:59 <ehird`> i don't get it
22:53:09 <ehird`> also
22:53:11 <ehird`> a is an error there
22:53:18 <oklopol> oh, sorry
22:53:26 <oklopol> i forgot that was your original splitter
22:53:29 <oklopol> (("fib"->a)->b)->(("fib"->b)->a~b), a
22:53:33 <oklopol> or smth
22:53:48 <ehird`> i don't see how that would work
22:53:57 <oklopol> (("fib"->"1")->"1")'
22:54:33 <oklopol> shouldn't that become (("fib"->"1")->"11"), then (("fib"->"11")->"111") etc.
22:54:42 <ehird`> what is '
22:54:48 <oklopol> typo :)
22:54:56 <ehird`> ok, let's see...
22:55:09 <ehird`> that does nothing on its own
22:55:22 <oklopol> ?
22:55:27 <ehird`> (("fib"->"1")->"1");("fib"->"1")
22:55:30 <ehird`> is a fancy way of saying "1"
22:55:38 <oklopol> ummm...
22:55:47 <oklopol> why would that get applied to itself?
22:56:02 <ehird`> it doesn't
22:56:20 <ehird`> (("fib"->"1")->"1") is "replace ("fib"->"1") with 1"
22:56:24 <ehird`> apart from in the current rule
22:56:27 <ehird`> so it finds the next statement
22:56:29 <ehird`> ("fib"->"1")
22:56:32 <ehird`> and makes it "1"
22:56:33 <oklopol> ummm
22:56:34 <oklopol> what
22:56:44 <oklopol> where did you get that? :)
22:56:53 <oklopol> did i say ("fib"->"1")?
22:57:12 <oklopol> (("fib"->a)->b) -> (("fib"->b)->a~b), a <<< is the rule that's being applied
22:57:28 <oklopol> (("fib"->"1")->"1") will never be applied to anything.
22:57:33 <oklopol> it's "data"
22:57:49 <ehird`> no it's not
22:57:54 <oklopol> k
22:57:55 <ehird`> it's ("fib"->"1")->"1"
22:57:59 <ehird`> (...) is just for grouping
22:58:05 <ehird`> (x) is x
22:58:05 <oklopol> well, duh
22:58:15 <ehird`> (("fib"->"1")->"1") is
22:58:18 <ehird`> a rule.
22:58:20 <ehird`> not data
22:58:27 <oklopol> yes, but there's nothing it can apply to.
22:58:37 <oklopol> so it can be considered data.
22:58:51 <oklopol> just like a list in lisp is data even though you can apply it if you want.
22:59:13 <ehird`> well in a program it will have that effect.
22:59:20 <oklopol> ...
22:59:25 <oklopol> what effect exactly?
22:59:28 <ehird`> dunno.
22:59:37 <ehird`> faxlore: suggest a list quoting syntax for RETROLISP!
22:59:41 <oklopol> so, will you add ","?
22:59:50 <oklopol> for multiple right sides
23:00:00 <ehird`> modern lisp: (QUOTE (A B C)) or '(A B C), LISP 1.5: ((A B C)), RETROLISP = ?
23:00:03 <ehird`> oklopol: is , like
23:00:12 <oklopol> it's multiple right sides :)
23:00:14 <ehird`> a,b -> "replace with a then b"
23:00:18 <ehird`> because...
23:00:20 <faxlore> "QUOTE"(A B C)
23:00:25 <ehird`> "foodle"->"bar","foo"
23:00:27 <faxlore> "QUOTE"(A "UNQUOTE"B C)
23:00:30 <ehird`> ("foodle"->a)->something
23:00:36 <ehird`> what does that produce
23:00:39 <ehird`> faxlore: haha no :P
23:00:42 <faxlore> lol
23:00:49 <oklopol> the program "a" -> "b", "c"; "a" would print "b" and "c" if the function is applied, otherwise "a"
23:01:04 <faxlore> use , for quote and ` for unquote
23:01:05 <oklopol> both right sides are added to the tuplespace
23:01:21 <ehird`> faxlore: no
23:01:22 <ehird`> :P
23:01:30 <ehird`> oklopol: i'm sorry please look at my example
23:01:33 <ehird`> "foodle"->"bar","foo"
23:01:36 <ehird`> ("foodle"->a)->something
23:02:02 <oklopol> i'm looking, i guess you just couldn't use as data the functions that use ",".
23:02:33 <ehird`> err
23:02:35 <ehird`> there's no distinction
23:02:41 <ehird`> it's tree rewriting
23:02:44 <ehird`> not data-and-function-calls
23:02:45 <oklopol> asdf.
23:02:52 <oklopol> it's called abstraction
23:03:03 <oklopol> anyway
23:03:04 <ehird`> faxlore: suggest!
23:03:09 <faxlore> I tried!
23:03:10 <ehird`> oklopol: but it's against CRTL philosophy
23:03:26 <oklopol> you can't match on something that isn't data, is the definition of not being data
23:03:29 <ehird`> faxlore: but "ABC" is strings :P
23:03:42 <faxlore> [a !b c]
23:03:46 <faxlore> for `(a ,b c)
23:03:55 <ehird`> faxlore: naw, it mus thave parens somewhere
23:03:56 <ehird`> aww
23:04:02 <ehird`> I just liked ((a b c)) in lisp 1.5
23:04:09 <faxlore> I don't like that :S
23:04:15 <ehird`> but it's lisp 1.5
23:04:16 <faxlore> what is () being applied to?
23:04:17 <ehird`> it's fun and cazy
23:04:20 <ehird`> and nothing!
23:04:23 <ehird`> its special syntax!
23:04:28 <ehird`> :D
23:04:31 * faxlore screams
23:04:43 <ehird`> old lisp was FUNNNNNNN for example did you know
23:04:46 <ehird`> that each REPL prompt
23:04:53 <ehird`> started with an alice in wonderland quote
23:04:58 <ehird`> then had a text-only, no-symbols prompt
23:05:03 <ehird`> then it didn't even read s-expressions
23:05:03 <faxlore> awww that's cool
23:05:05 <ehird`> you did:
23:05:07 <ehird`> FUNC arg arg arg
23:05:21 <ehird`> to define the identity function you did
23:05:31 <ehird`> DEFINE ID ((LAMBDA (X) X))
23:05:37 <ehird`> to evaluate an s-expression you did
23:05:37 <ehird`> EVAL ((...))
23:05:44 <ehird`> then you hit enter
23:05:46 <ehird`> got another blank line
23:05:49 <ehird`> the lewis carroll quote
23:05:54 <ehird`> and the text-only prompt again
23:06:05 <faxlore> cool :O
23:06:08 <ehird`> truly, an example of interface design!
23:06:17 <timotiis> well, it's different
23:06:22 <timotiis> anyway, I must be off
23:06:27 <timotiis> ciao all!
23:06:29 -!- timotiis has quit ("leaving").
23:06:39 <ehird`> i just want a Lisp 1.5 for a modern machine
23:06:40 <ehird`> :(
23:09:11 -!- CakeProphet_ has joined.
23:09:12 <ehird`> faxlore: don't you?!?!1!!!111
23:09:38 <faxlore> I want a lisp 9999999999999999999999999999999999999999999+1
23:09:44 <ehird`> no
23:10:04 <ehird`> I want LISP 1.5 for Modern x86 Architechtures, `libc' Version
23:11:30 <ehird`> faxlore: RETROLISP might be just as good, though
23:12:02 <faxlore> I think so!
23:12:04 <faxlore> mabe better
23:12:11 <faxlore> It must have lewis carrol quotes built in
23:12:24 <ehird`> yes, once every... i don't know, every hour or something
23:14:53 <faxlore> how about every call to apply?:D
23:16:00 <ehird`> haha
23:16:01 <ehird`> no.
23:17:00 <ehird`> faxlore: what about wariness to use symbols!
23:17:08 <ehird`> PLUS instead of + being used in all example code
23:17:09 <ehird`> etc
23:17:49 -!- CakeProphet has quit (Nick collision from services.).
23:17:55 -!- CakeProphet_ has changed nick to CakeProphet.
23:18:52 <CakeProphet> ...I still haven't made Sophia.
23:19:09 <CakeProphet> my masterpiece-language-to-end-all-languages.
23:19:47 <ehird`> example code?
23:19:54 <CakeProphet> 2 + 2
23:19:56 <ehird`> faxlore: see the prompts! http://b54.net/lisp15
23:19:57 <CakeProphet> ...
23:20:00 <ehird`> CakeProphet: more example code.
23:20:52 <CakeProphet> #x = 2 + 2
23:20:54 <CakeProphet> ...
23:22:02 <oklopol> i love it already
23:22:37 <CakeProphet> it's smalltalk-esque. Think methods.
23:22:46 <CakeProphet> I'm still working on... how it... determines order of operation.
23:22:56 <CakeProphet> I don't want gajillions of parenthesis.
23:22:59 <CakeProphet> but I kinda do.
23:25:16 <CakeProphet> the other problem is how it determines the end of a statement... or if it has a statement concept at all.
23:25:58 <CakeProphet> ...nitpicky things.
23:26:00 <ehird`> CakeProphet: left-to-right
23:26:03 <ehird`> or right-to-left
23:26:06 <ehird`> pick one, i like right-to-left
23:26:16 <ehird`> end of statement: "abc. def."
23:26:18 <ehird`> so .
23:26:20 <ehird`> or, newline
23:26:28 <CakeProphet> I was thinking of newlines.
23:26:37 <CakeProphet> like Python. Newlines unless there's an unclosed paren.
23:26:47 <ehird`> how about just .
23:26:47 <ehird`> or ,
23:26:50 <ehird`> Yes, like this:
23:26:55 <ehird`> message:
23:26:55 <ehird`> a,
23:26:55 <CakeProphet> ...too lazy.
23:26:57 <ehird`> b,
23:26:58 <ehird`> c.
23:27:00 <CakeProphet> I prefer newlines.
23:27:03 <CakeProphet> ...
23:27:22 <CakeProphet> Fibonacci would be like...
23:27:54 <CakeProphet> ...I'm trying to do it in one expression for awesome effect.
23:28:44 <ehird`> Integer$fib: self < 2 if: {<- self.} else: {<- ((self - 1) fib) + ((self - 2) fib).}.
23:29:15 <ehird`> String$sayWith:other: self say, other say.
23:31:03 <CakeProphet> (#n = 0) print inc print
23:31:24 <CakeProphet> (#n = (n - 1) + (n - 2)) print
23:31:33 <CakeProphet> er
23:31:33 <CakeProphet> (#n = (n - 1) + (n - 2)) print
23:31:33 <CakeProphet> sedjfuihjrd
23:31:46 <CakeProphet> ((#n = (n - 1) + (n - 2)) print) while True
23:32:01 <ehird`> haha
23:32:33 <CakeProphet> if the mad scientist in me can pull off an implementation
23:33:08 <CakeProphet> it's going to be like... smalltalk mixed with lisp mixed with Python aesthetics mixed with some strange functional language.
23:33:57 <ehird`> redundancy
23:33:58 <ehird`> 'lisp'
23:34:01 <ehird`> 'some strange functional language'
23:34:23 <ehird`> faxlore: SETQ returns a variable reference
23:34:33 <ehird`> (INCF (SETQ A 2)) ; A = 3
23:34:34 <CakeProphet> ...and some bits of perl that I like.
23:34:43 <faxlore> :S
23:34:47 <faxlore> that makes no sense lol
23:34:51 <ehird`> faxlore: yeah it does
23:35:02 <ehird`> INCF takes either a NAME, or a VAR-REF
23:35:07 <ehird`> it returns a VAR-REF.
23:35:10 <ehird`> SETQ is the same
23:35:36 <ehird`> (SETQ A 2) ; ==> #{VARIABLE REF 'A'}
23:35:50 <ehird`> (INCF (SETQ A 2)) ; ==> #{VARIABLE REF 'A'}
23:36:02 <ehird`> (SETQ (INCF (SETQ A 2)) "FOO") ; ==> #{VARIABLE REF 'A'}, and A = "FOO"
23:36:06 <faxlore> (INCF (INCF (INCF (INCF A))))
23:36:10 <ehird`> yep
23:36:15 <faxlore> hehehe
23:36:33 <ehird`> (REF (QUOTE A)) ; ==> #{VARIABLE REF 'A'}
23:36:36 <oklopol> CakeProphet: the fib looks interesting, can you give definite semantics?
23:36:43 <faxlore> (INCF (SETF (CDR (CONS 0 0)) 7)) ?
23:36:43 <oklopol> just for what you have there.
23:36:43 <ehird`> (SETQ (REF (QUOTE A)) 5) ; A = 5
23:36:52 <ehird`> faxlore: SETF is too modern. Doesn't exist!
23:36:55 <CakeProphet> oklopol, ...yes. But they're messy. I'd like it to be cleaner but with the same look and feel.
23:37:05 <ehird`> however
23:37:30 <ehird`> (REPLACD (CONS 0 0) 7) ; ==> #{CONS REF}
23:37:35 <ehird`> (INCF (REPLACD (CONS 0 0) 7)) ; ==> #{CONS REF}
23:37:56 <CakeProphet> actually the second line would need to be
23:38:16 <CakeProphet> ((#n = ((n - 1) + (n - 2))) print) while True
23:38:16 <CakeProphet> )
23:38:37 <CakeProphet> but at that point
23:38:37 <CakeProphet> I've clearly lost my mind.
23:39:28 <ehird`> CakeProphet: support #a: 2
23:39:30 <ehird`> to be #a = 2
23:39:46 <ehird`> how? give everything a ":colon:" message.
23:39:46 <ehird`> :D
23:40:10 <ehird`> #a blah: 2, when blah on #a is not a message, is #a blah :colon: 2
23:40:11 <ehird`> :D
23:40:20 <CakeProphet> if you're familiar at all with smalltalk... you'll get the method calling part of the syntax. The difference here is the lack of colons and the use of only binary and unary methods.
23:42:05 <CakeProphet> and it's all lazy. Every parenthetical expression is frozen in an internal "block" object with its own methods
23:42:25 <CakeProphet> which explains why I can just put "while True" at the end of any expression and magically... make it go on forever.
23:43:13 <ehird`> kind of like haskell.
23:43:26 <ehird`> sometime i want to make alanguage like haskell, but 'minimized'
23:43:46 <ehird`> you get funky type definitions, monads, pattern matching, laziness, etc., but just 'dumbed down' a bit
23:43:48 <ehird`> for learning about stuff
23:44:00 <ehird`> main : io nil
23:44:12 <ehird`> main = printNL "hello, world"
23:45:25 -!- CakeProphet_ has joined.
23:45:32 <CakeProphet_> ....
23:45:33 <CakeProphet_> did I miss anything?
23:45:36 <ehird`> yes
23:45:40 <CakeProphet_> did I miss anything?
23:45:43 <ehird`> 23:43:23 <ehird`> sometime i want to make alanguage like haskell, but 'minimized'
23:45:43 <ehird`> 23:43:43 <ehird`> you get funky type definitions, monads, pattern matching, laziness, etc., but just 'dumbed down' a bit
23:45:43 <ehird`> 23:43:45 <ehird`> for learning about stuff
23:45:43 <ehird`> 23:43:57 <ehird`> main : io nil
23:45:43 <ehird`> 23:44:08 <ehird`> main = printNL "hello, world"
23:45:54 <CakeProphet_> what was the last thing I said?
23:46:27 <ehird`> 23:42:22 <CakeProphet> which explains why I can just put "while True" at the end of any expression and magically... make it go on forever.
23:46:31 <faxlore> ehird`: What I'd really like is a good solid mixfix parser
23:46:39 <faxlore> ehird`: Then hook up various lambda calculus to it
23:46:51 <oklopol> :)
23:47:05 <CakeProphet_> so in #x = (2 + 2)
23:47:11 <faxlore> I was going to use the Agda2 one.. but I don't think I can extract it without the whole thing falling to peices
23:47:35 <CakeProphet_> the (2 + 2) isn't evaluated... its saved as a function/block/unevaluated-dohicky/whatever.
23:47:48 <CakeProphet_> #x means "the symbol x"... as opposed to what x represents.
23:48:16 <CakeProphet_> so (2 + 2) never gets evaluated until you send it a message.
23:48:21 <ehird`> CakeProphet_: the term is 'thunk'
23:49:08 -!- immibis has left (?).
23:49:23 -!- sebbu has quit ("@+").
23:49:43 <CakeProphet_> it's basically a weird attempt to combine smalltalk logic and haskell laziness seamlessly.
23:53:20 <ehird`> so! we have APL-alikes, haskell-alikes and smalltalk-alikes
23:53:24 <ehird`> anyone else?
23:53:35 <faxlore> APL?
23:53:46 <faxlore> I missed any APL alikes
23:55:48 <oklopol> i have a few erlang-like
23:55:49 <ehird`> oklotalk
23:55:49 <oklopol> *s
23:55:53 <oklopol> and a few prolog-likes
23:55:54 <ehird`> and ehirdtalk
23:56:09 <ehird`> where ehirdtalk is infinitely superior.
23:56:12 <oklopol> :)
23:58:03 <oklopol> shouldn't it be etalk if mine is oklotalk?
23:58:24 <oklopol> your real name is elliott hird, mine is oklofoan polakir
23:58:25 <ehird`> no, because mine has /more/ than oklotalk
23:58:29 <oklopol> oh, right
23:58:32 <oklopol> xD
23:58:38 <ehird`> and stop being stalkerish to the point of spelling my first name right
23:58:38 <ehird`> :P
23:58:51 <oklopol> can it be written wrong?
23:59:07 <ehird`> yes
23:59:09 <ehird`> elliot
23:59:11 <ehird`> eliott
23:59:12 <ehird`> eliot
23:59:18 <ehird`> first most common
23:59:20 <ehird`> second middle
23:59:21 <ehird`> last least
23:59:26 <ehird`> i have been called all 3
23:59:39 <ehird`> i have met one person with the exact same name as me
23:59:55 -!- CakeProphet__ has joined.
23:59:58 <ehird`> and no more
23:59:58 <ehird`> :P
2008-01-11
00:00:02 <oklopol> i was first gonna written elliot, but then realized you're definitely a double geminate guy
00:00:38 <oklopol> heh
00:00:38 <oklopol> today, i heard of a person with my name
00:00:43 <oklopol> a guy said their teacher had said to the class she'd called for some tech assistance, and i had answered.
00:00:50 <ehird`> (happy tomorrow GMT)
00:01:04 <oklopol> (said "an old student" and my name)
00:01:18 <oklopol> (not sure it's me, but quite close, for i'm an old student of hers)
00:01:25 <oklopol> i didn't get a call though.
00:01:40 <ehird`> oklopol: they were going to ask for your help but then saw oklotalk
00:01:42 <ehird`> :)
00:04:22 -!- CakeProphet has quit (Connection timed out).
00:04:27 -!- CakeProphet__ has changed nick to CakeProphet.
00:04:35 -!- Jontte has quit ("Konversation terminated!").
00:05:10 <oklopol> :D
00:05:14 <ehird`> QUIZ
00:05:20 <ehird`> find a language where this does what you'd expect
00:05:21 <ehird`> 3=4
00:05:36 <oklopol> that one esolang, you mean?
00:05:45 <oklopol> i'd expect it's an always-failing proposition
00:05:58 <oklopol> i don't remember the name now, but the language is fun
00:07:51 <ehird`> no
00:07:56 <ehird`> it should actually redefine 3 as 4
00:08:04 <ehird`> x = 3
00:08:05 <ehird`> 3 = 4
00:08:09 <ehird`> x // => 4
00:08:11 <ehird`> 3 // => 4
00:08:17 <ehird`> 3 + 1 // => 5
00:08:29 <ehird`> 4 - 1 // => who knows?
00:08:47 <ehird`> 4 - 1 // => 4, probably, since 3 is now 4
00:09:57 <oklopol> 3 is now 4, but 4 is still 4
00:10:01 <oklopol> at least in the esolang
00:10:11 <ehird`> yes
00:10:15 <ehird`> 3 // => 4
00:10:18 <ehird`> 4 // => 4
00:10:25 <oklopol> yeah, so 4-1=3
00:10:26 <ehird`> 4 - 1 // => this would be 3, but 3 is now 4, so: 4
00:10:27 <oklopol> oh.
00:10:29 <oklopol> 4 of course :)
00:10:44 <ehird`> :D
00:13:45 <ehird`> esolangs aren't innovative anymore, just reinventions :(
00:16:56 -!- CakeProphet_ has quit (Connection timed out).
00:17:59 <oklopol> nah
00:18:30 <oklopol> i think i've invented quite a lot of new stuff.
00:18:43 <oklopol> for example...
00:18:57 <oklopol> have i mentioned GRAPHICA, HAVE I EVER MENTIONED GRAPHICA?
00:19:17 <ehird`> no. never.
00:21:26 <oklopol> :----)
00:24:06 <ehird`> fibonacci in graphica=
00:24:25 <oklopol> it's not tc yet.
00:24:32 <oklopol> or then it is, not sure
00:24:45 <ehird`> fibonacci is a simple rewrite rule
00:24:46 <ehird`> no TC needed
00:25:26 <oklopol> i guess you could just Fib m n :: m n <-> Fib m+n m
00:25:43 <ehird`> fibonacci's rewrite rules are very simple:
00:25:46 <oklopol> oh, wait
00:25:57 <oklopol> i guess you could just Fib m n :: m <-> Fib m+n m
00:25:57 <ehird`> (A → B), (B → AB)
00:26:00 <ehird`> start with A
00:26:04 <ehird`> then it's in unary.
00:26:37 <ehird`> or (B → BA).
00:26:52 <oklopol> mm
00:27:41 -!- CakeProphet__ has joined.
00:29:14 <ehird`> "A"->"B";"B"->"AB";"A"
00:29:19 <ehird`> doesn't work, though, in CRTL
00:29:29 <ehird`> because the rules get removed, and the A rule effects the "B"->"AB"
00:31:59 <oklopol> well, you can use my program though
00:32:47 <oklopol> also, you can attach a type tag there, to make sure rules apply in the right order and to the right data
00:39:17 <GreaseMonkey> A->B , B->AB | B->AB , AB->BAB ?
00:39:28 <GreaseMonkey> or A->B, B->BB?
00:41:26 <ehird`> A-B, B->AB
00:41:34 <ehird`> oh
00:41:35 <ehird`> you mean in my prog
00:41:41 <ehird`> "A"->"B";"B"->"AB";"A"
00:41:47 <ehird`> "B"->"BB";"B"
00:41:49 <ehird`> "BB"
00:41:56 <ehird`> so, "A"->"B";"B"->"AB";"A" outputs "BB" and exits
00:42:05 <oklopol> ehird`: what was wrong with my fibonacci?
00:42:22 <ehird`> oklopol: ?
00:42:30 <oklopol> the one i gave hours ago
00:42:35 <ehird`> show
00:43:37 <oklopol> (("fib"->a)->b)->(("fib"->b)->a~b),a;("fib"->"1")->"1"
00:43:50 <ehird`> let me step through that.
00:43:52 <ehird`> uh
00:43:53 <ehird`> you have ,
00:43:57 <ehird`> , is not CRTL.
00:43:58 <ehird`> QED
00:44:00 <oklopol> well yeah, that was for output
00:44:03 <oklopol> you can forget about that one
00:44:11 <ehird`> show me a new one then
00:44:16 <oklopol> (("fib"->a)->b)->(("fib"->b)->a~b);("fib"->"1")->"1"
00:44:23 <ehird`> (("fib"->a)->b)->(("fib"->b)->a~b);("fib"->"1")->"1"
00:44:57 <ehird`> ("fib"->"1")->"11"
00:45:06 <ehird`> [end]
00:45:10 <oklopol> hmm
00:45:21 <oklopol> why doesn't rule 1 apply a second time? :\
00:45:25 <oklopol> rules are one use?
00:45:30 <ehird`> because it's removed from play
00:45:33 <oklopol> didn't know that
00:45:42 <oklopol> then the language is pretty useless, huh?
00:45:57 <oklopol> i mean, you can do a fixed number of rewrites
00:46:37 <ehird`> nope, because you can do things like this:
00:46:49 -!- CakeProphet has quit (Connection timed out).
00:47:05 <ehird`> hmm
00:47:08 <ehird`> ok then
00:47:11 <ehird`> let's apply it multiple times.
00:47:15 <ehird`> (("fib"->a)->b)->(("fib"->b)->a~b);("fib"->"1")->"1"
00:47:21 <ehird`> (("fib"->a)->b)->(("fib"->b)->a~b);("fib"->"1")->"11"
00:47:31 <ehird`> (("fib"->a)->b)->(("fib"->b)->a~b);("fib"->"11")->"111"
00:47:41 <ehird`> (("fib"->a)->b)->(("fib"->b)->a~b);("fib"->"111")->"11111"
00:47:42 <ehird`> yeah, that works
00:47:47 <ehird`> ok, now make it do output :P
00:48:00 <oklopol> well, only possible with ","
00:48:07 <oklopol> or something equivalent
00:48:17 <ehird`> nope, i'm pretty sure you can do it
00:48:22 <ehird`> let's try...
00:48:22 <oklopol> no way to make a new tuple -> no way to do infinite outputs
00:48:33 <ehird`> what about if we leave outputted strings in place.
00:49:02 <oklopol> well... then it's possible again, but perhaps a bit ugly, i'll try
00:49:55 <oklopol> actually... hmm
00:51:16 <ehird`> oklopol: ("fibo"~x)->... may help
00:53:22 <oklopol> (("fib"->a)->b)->(("printed"->b)->a~b);
00:53:22 <oklopol> (("printed"->a)->b)->a~"|"~b
00:53:22 <oklopol> a~"|"~b->(("fib"->a)->b)
00:53:22 <oklopol> ("fib"->"1")->"1";
00:53:31 <oklopol> best i could think of
00:53:41 <ehird`> example output?
00:53:48 <oklopol> that'll print 1|1, 1|11, 11|111, 111|11111
00:53:50 <oklopol> i think.
00:53:56 <ehird`> so it generates statements like:
00:53:58 <ehird`> "1|11";
00:54:04 <oklopol> you see i need to parse the values back after printing them
00:54:07 <ehird`> with no other expression in that statement?
00:54:30 <oklopol> generates what i said, but s/","/newline, i guess
00:54:58 <ehird`> i mean in the code.
00:55:07 <oklopol> hmm?
00:55:36 <oklopol> oh, printed is redundant...
00:56:04 <oklopol> (("fib"->a)->b)->b~"|"~a~b;
00:56:04 <oklopol> a~"|"~b->(("fib"->a)->b)
00:56:04 <oklopol> ("fib"->"1")->"1";
00:56:42 <ehird`> now put that on the CRTL wiki and i'll update the spec so that it's true :P
00:56:46 <oklopol> :D
00:56:49 <ehird`> by the way, does that rely on any kind of evaluation order?
00:56:56 <oklopol> no, i don't think so
00:57:21 <ehird`> yay
00:57:45 <oklopol> but, the problem is, after you do output, you cannot (using my way of coding) output any less than *everything* you're gonna need in further computation
00:58:10 <oklopol> because printing is done by encoding the program state into a string, and then parsing the string into a tuple again.
00:58:11 <oklopol> oh
00:58:33 <oklopol> it actually relies on the fact a string is only output once, then tried the substitutions again
00:58:49 <oklopol> but this is a given, for otherwise *any* output you do could happen *any* number of times
00:58:57 <oklopol> and what's with the *emphasis*
00:59:34 <ehird`> yeah, that's right
00:59:39 <ehird`> http://esoteric.voxelperfect.net/wiki/CRTL#Evaluation updated
00:59:56 <ehird`> I'll add your fibonacci.
01:01:03 <ehird`> ok, added
01:01:06 <ehird`> I think it's turing complete.
01:01:26 <GreaseMonkey> ah...
01:01:38 <GreaseMonkey> ehird`: what's your lang called?
01:01:44 <ehird`> GreaseMonkey: CRTL...
01:01:57 <ehird`> Constantly Rewriting Term Language
01:02:18 <ehird`> oklopol: "," is not needed now yeah?
01:02:38 <ehird`> btw: a good excersize would be a dupdog interpreter.
01:03:54 <oklopol> well, "," would just be nice, since you would have tc output :-)
01:03:59 <oklopol> if you know what i mean
01:04:11 <ehird`> no, i don't
01:04:32 <ehird`> let's assume that CRTL is turing complete, are you saying it can't output every string as a result of a calculation?
01:04:43 <oklopol> yes.
01:04:49 <GreaseMonkey> ok.
01:04:54 <oklopol> in case there's no better way than what i'm using.
01:05:27 <oklopol> just like bf couldn't output every string if . printed "printing: <char>"
01:05:32 <oklopol> it'd still be tc.
01:06:52 <oklopol> i guess a better example is, utm cannot do output, but i'm fairly sure it's tc!
01:09:05 <ehird`> yeah i get it
01:09:15 <ehird`> oklopol: got any more elegant solutions than ,?
01:10:18 <oklopol> hmm, i'm wishing a way to do without it would pop in my head...
01:11:15 <oklopol> hmmm... "," is non elegant why?
01:11:27 <ehird`> dunno
01:11:45 <oklopol> i mean, you can't pattern match on rules with free variables anyway, so there's a definite distinction between data and rewriting rules...
01:11:57 <oklopol> well
01:12:06 <oklopol> i mean, in some cases.
01:12:21 <ehird`> hmm
01:12:23 <ehird`> i can add '
01:12:24 <ehird`> quote
01:12:31 <ehird`> to pattern match on free vars.
01:12:41 <oklopol> yeah, metalevels ftw!
01:13:28 <oklopol> but, i still think "," would be nice, otherwise you'll just have a fixed set of rules... and that's just too static!
01:13:42 <ehird`> ok.
01:45:27 -!- Corun has quit ("This computer has gone to sleep").
02:05:19 <ehird`> back
02:05:42 <ehird`> oklopol: i will add quoted = "'" name | "'" quoted
02:05:48 <ehird`> oklopol: but this makes programs = data
02:05:54 <ehird`> so propose a , that doesn't differenciate
02:06:01 -!- CakeProphet__ has quit (Read error: 110 (Connection timed out)).
02:08:35 <ehird`> oklopol: ping
02:09:17 <oklopol> o
02:09:44 <ehird`> so yeah, do that :P
02:09:48 <oklopol> :)
02:10:11 <oklopol> well, there's one that i can think of at least, but it's a bit complex.
02:10:16 <ehird`> tell me.
02:11:14 <oklopol> a rule A -> B, C is considered two separate rules A -> B; A -> C when it's pattern matched on, the "," just means the two rules are always applied both
02:11:41 <oklopol> then it could be pattern matched on
02:12:28 <ehird`> A -> B; A -> C is pretty nonsensical
02:12:43 <ehird`> if A->B is run first the program becomes A -> B; B -> C
02:12:50 <ehird`> the other way around, C -> B; A -> C
02:13:27 <ehird`> so, suggest an elegant solution that makes sense :D
02:13:48 <oklopol> that was not a way to convert a rule with "," to one without it
02:13:57 <oklopol> that's impossible
02:14:08 <ehird`> okay
02:14:10 <ehird`> then explain
02:14:12 <oklopol> it'd be A->B; A->C; when pattern matched on.
02:14:34 <oklopol> when it's used as the pattern, it'd be a special pattern thatmakes two tuples from one input tuple.
02:14:37 <oklopol> *that makes
02:14:55 <ehird`> so pattern matching doesn't reflect what you see in the source...
02:14:59 <ehird`> no: i don't like that.
02:15:43 <oklopol> then you can just add the new operator ","
02:16:09 <oklopol> the problem is, that makes it useless to have data and program flow integrated when the feature is not used
02:16:29 <ehird`> sorry i think you'll have to come up with something a lot nicer :)
02:16:30 <oklopol> actually....
02:16:31 <ehird`> i suggest:
02:16:35 <ehird`> a,b
02:16:37 <ehird`> err
02:16:38 <ehird`> ok
02:16:46 <ehird`> foo->(bar,baz)
02:17:04 <ehird`> foo->bar, but appends "baz" to the end of the program and maybe-outputs it
02:17:19 <oklopol> actually i don't think "," as an operator would be that bad
02:17:43 <oklopol> so
02:18:22 <oklopol> "a","b"->"c" would consume an "a" and a "b" and create a "c"
02:18:34 <oklopol> then it'd be a bit more generic
02:18:54 <ehird`> ok, write a fibonacci-outputs-in-unary-without-weird-extra-state
02:18:56 <ehird`> using that
02:18:57 <ehird`> :-)
02:19:06 <oklopol> umm...
02:19:15 <oklopol> it'd work with what i originally had
02:19:23 <oklopol> i can find it again
02:19:36 <oklopol> (("fib"->a)->b)->(("fib"->b)->a~b),a;("fib"->"1")->"1"
02:19:49 <ehird`> oh
02:19:52 <ehird`> so it still does the weird thing
02:19:56 <ehird`> ok, how about
02:20:08 <ehird`> ok wait
02:20:19 <ehird`> in your example, oklopol
02:20:21 <oklopol> the weird thing?
02:20:21 <ehird`> the a
02:20:23 <ehird`> where does it go?
02:20:27 <ehird`> after the match? or at the end of the program
02:20:36 <ehird`> if at the end of the program, then that's my foo->(bar,baz) semantics
02:21:01 <oklopol> the way i see it, ";":s in the program code separate entries in a tuplespace, which is unordered
02:21:11 <oklopol> so i don't really think "where a goes in the code"
02:21:28 <oklopol> but in the case the tuplespace can be assumed unordered, in the end? doesn't matter
02:21:40 <ehird`> so
02:21:44 <ehird`> x->(y,z)
02:21:55 <ehird`> replaces x with y, and introduces z into the program space.
02:22:04 <oklopol> well, with your semantics, yes
02:22:13 <ehird`> what's your semantics for x->(y,z)
02:22:23 <oklopol> oh, well, actually, that's my semantics, sorry :)
02:22:25 <ehird`> also oklopol you keep missing out the final ;
02:22:32 <oklopol> indeed i do, but i know it's there.
02:22:37 <oklopol> noticed myself too
02:22:45 <ehird`> should i remove the need for it?
02:23:10 <oklopol> hmm... perhaps, ";" seems more like a separator than a delimiter to me
02:23:27 <oklopol> it's used as both, so i don't think it matters.
02:23:34 <oklopol> actually
02:23:40 <oklopol> if you have it be a separator
02:24:00 <ehird`> oklopol: on the LHS, what does (a,b) do?
02:24:03 <ehird`> e.g. in (a,b)->c
02:24:04 <oklopol> then a ";" in the end of a program means the string "", possibly, which is printed, as a nop
02:24:23 <oklopol> it finds something matching a and something matching b, and returns c in the tuplespace
02:24:37 <oklopol> a and b will share variables in pattern matchin
02:24:38 <oklopol> *g
02:25:10 <ehird`> oklopol: ...?
02:25:19 <oklopol> hmm?
02:25:22 <ehird`> (a,b)->c "find both a and b, and replace them with c?"
02:25:32 <oklopol> yes.
02:25:39 <ehird`> but that's totally different from your RHS , semantics
02:25:43 <oklopol> no
02:25:44 <ehird`> it's not related
02:25:47 <ehird`> ok then i guess
02:26:09 <oklopol> wait, i'll clear my thoughts a bit
02:26:23 <ehird`> oklopol: remember that it would find ALL as and Bs
02:26:24 <oklopol> it's really annoying to think when the text appears a minute after i've written it
02:26:28 <ehird`> because replacements replace EVERYTHING they can find
02:27:05 <oklopol> you can think of the "replace all" thing as "replace one, repeat"
02:27:19 <oklopol> in which case matching multiple tuples at the same time is okay.
02:27:44 -!- helios24_ has joined.
02:28:28 -!- helios24 has quit (Read error: 113 (No route to host)).
02:28:52 <oklopol> basically, a rule (comma-separated tuples)->(comma-separated tuples) means "repeatedly find a set of tuples that match left side, put their free variables to corresponding vars in the right side, remove all left-side tuples, add all right-side tuples"
02:29:19 <oklopol> this works like expected for comma-separated lists with just one element == like before.
02:29:59 <oklopol> that was not a fully formal explanation for i am very sleepy, i can maybe give you an example if you didn't get it
02:30:26 <oklopol> "a"->"b"; "a"; ==> "a"->"b"; "b";
02:30:33 <oklopol> the case where only one tuple on both sides
02:30:45 <ehird`> oklopol: OH! how do you match a,b pairs????
02:30:54 <oklopol> left side ("a") was removed from the tuplespace
02:30:54 <ehird`> (OH DEAR YOU LOSE.)
02:31:01 <oklopol> right side was added
02:31:04 <ehird`> Also you can't nest ,s
02:31:09 <ehird`> So blahhh your semantics suck.
02:31:18 <oklopol> k
02:31:23 <ehird`> :P
02:31:58 <oklopol> sure you can nest them, actually
02:32:15 <ehird`> how
02:33:10 <ehird`> ...
02:33:50 <oklopol> (a,b->"c")->("d"->a,b); "a","b"->"c"; "d"; => (a,b->"c")->("d"->a,b); "d"->"a","b"; "d"; => (a,b->"c")->("d"->a,b); "d"->"a","b"; "a"; "b"; and modify semantics so that strings are gc'd (and thus printed) once nothing matches on them
02:34:09 <oklopol> sorry, lag addes a few minutes to my response time
02:34:11 <oklopol> *adds
02:34:27 <ehird`> umm that makes no sense :D
02:34:35 <ehird`> also i don't want to remove strings once nothing matches on them
02:34:37 <ehird`> :(
02:35:04 <oklopol> well, your language ;-)
02:35:15 <ehird`> i'm going to remove , for now until we can think of a sane way to do this stuff :P
02:35:30 <oklopol> (my semantics are perfect though :))
02:35:39 <oklopol> (uhhh, touch them)
02:35:49 <ehird`> ?
02:36:09 <oklopol> (parens are there so you know to ignore it)
02:37:24 <ehird`> yeah
02:37:25 <ehird`> but
02:37:28 <ehird`> (uhhh, touch them)
02:38:13 <oklopol> a comma-separated list is not hard to match. it's a linear rise in complexity, if you allow patterns in the left side to match the same tuple
02:38:38 <oklopol> a,b->"b";"a" ==> a,b->"b";"b"
02:39:14 <ehird`> oklopol: yes but nesting them makes not a lot of sense
02:39:38 <ehird`> I think what we need is an implementation of the current spec first
02:39:41 <ehird`> and then think about it
02:39:49 <ehird`> what language would be best suited for it though?
02:40:04 <ehird`> we need to do parsing, loads of mutability on the program, and lots of pattern matching
02:40:12 <oklopol> well, "," would only have the special property on the topmost level, otherwise it'd just be a separator
02:40:19 <oklopol> which already is how "->" works.
02:41:14 <oklopol> what about "(uhhh, touch them)"? a request to touch the semantics to feel how soft they are.
02:41:18 <oklopol> hmm
02:41:19 <oklopol> not soft
02:41:40 <oklopol> something.
02:41:50 <ehird`> anyway!
02:41:51 <ehird`> implementation.
02:42:07 <oklopol> imple pimple!
02:42:22 <oklopol> i can make one quite quickly in python, but i'm trying to change language
02:42:31 <oklopol> to scheme
02:42:40 <ehird`> wise choice :-)
02:42:46 <ehird`> yeah python would be good for the mutability, but yeck
02:42:50 <ehird`> haskell might actually be good
02:42:54 <ehird`> but parsing will be a bitch.
02:43:07 <ehird`> parsec doesn't like paren := (expr) where expr has an option of paren
02:43:11 <ehird`> can't figure out why oh well
02:43:35 <oklopol> hmm, i think parsing is fairly straightforward
02:43:51 <ehird`> i guess
02:44:01 <oklopol> in haskell you mean
02:44:01 <oklopol> ?
02:44:07 <oklopol> sorry
02:44:11 <ehird`> yeah.
02:44:13 <oklopol> when i asked you hadn't answered.
02:44:17 <ehird`> parsec - haskell parsing library
02:44:20 <ehird`> and yeah. i had. :P
02:44:22 <oklopol> yeah
02:44:24 <ehird`> i know you have lag though
02:44:35 <faxlore> parsec rules!
02:44:36 <oklopol> yep, "lag", my xchat is broken.
02:44:47 <ehird`> oklopol: really the perfect language would be CRTL heh :|
02:44:54 <oklopol> haha, indeed :P
02:45:14 <ehird`> it's like, when haskell was first formalized
02:45:25 <ehird`> 'shit guys implementing this is gonna be HELL'
02:45:38 <ehird`> 'well you could use monads and polymorphic type classes generalizing over pattern matchers...'
02:45:45 <ehird`> 'yeah but that's what we're trying to implement'
02:46:00 <oklopol> :)
02:46:44 <oklopol> most of crtl is fairly straightforward, the problem is if you want efficiency, you need to keep a conceptual separation of data and program
02:47:10 <oklopol> not that anything could ever be hard in python... god i miss python :-)
02:47:15 <oklopol> stopped using it earlier today
02:47:30 <ehird`> yes it is very unelegant but has that extra ZAM which scheme lacks
02:47:48 <oklopol> indeed, and i kinda like the ZAM
02:47:50 <ehird`> oklopol: for mutable things like this (i.e. not elegant, pattern-weaving and folding algorithms) maybe you should check out haskell
02:47:58 <ehird`> i've actually found its mutability to be nice.
02:48:06 <oklopol> i know haskell
02:48:08 <oklopol> somewhat.
02:48:21 <oklopol> i never fully understood monads :-)
02:48:42 * oklopol is a rare case!
02:48:53 <faxlore> ZAM = expressive type system?
02:49:12 <oklopol> no, python has that not.
02:49:13 <ehird`> faxlore: python has one of them?
02:49:18 <faxlore> no..
02:49:23 <faxlore> neither does scheme
02:49:24 <ehird`> oklopol: i figured out monads a while ago
02:49:26 <oklopol> well, you know... ZAM
02:49:30 <ehird`> oklopol: forget about 'do'
02:49:33 <ehird`> and think about it like this
02:49:44 <oklopol> i never actually tried that hard
02:49:54 <ehird`> (do a <- b; c) is (b >>= (\a -> c))
02:49:58 <oklopol> hoped i'd just get them eventually...
02:50:01 <ehird`> (do a; b) is (a >> b)
02:50:05 <oklopol> yeah
02:50:06 <ehird`> then, what happens is
02:50:12 <ehird`> "a" recieves the monad as an implicit perameter
02:50:15 <ehird`> and returns the 'new monad'
02:50:18 <oklopol> yeah
02:50:30 <ehird`> in >>, that just means the monad b gets is what a 'returned' as the monad
02:50:51 <ehird`> in >>= the RESULT that a returns is passed to the function, which also gets its implicit monad changed to what a's monad became
02:51:01 <oklopol> so monads have an implicit part and an explicit part
02:51:08 <ehird`> yeah, kind of
02:51:11 <ehird`> and the way e.g. IO works
02:51:23 <oklopol> in m >>= l, the explicit one is what is given to l
02:51:25 <oklopol> as a param
02:51:36 <oklopol> return lifts it back on the implicit param
02:51:37 <faxlore> (>>=) = flip concatMap -- :D
02:51:40 <oklopol> on the "monad"
02:51:42 <ehird`> is that the monadic values 'bubble up' into functions all of which must have the IO monad themselves (let's ignore unsafePerformIO for now) and then the runtime system at the top does the evil
02:51:57 <ehird`> oklopol: yeah, remember though that when you do "return x" in a monadic function that's one of two return values
02:52:00 <ehird`> that's the "real return value"
02:52:04 <ehird`> the monad is "implicitly" passed on
02:52:22 <oklopol> yeah
02:52:29 <ehird`> and now you understand how monads can be stateful: they're implicitly passed around (obviously the implementation is a hell of a lot more efficient than that, haha ;))
02:52:53 <ehird`> see now that wasn't hard was it :-)
02:52:59 <oklopol> i guess i kinda understood that already
02:53:08 <oklopol> i just feel there's still something missing :-)
02:53:10 <oklopol> oh, right
02:53:17 <faxlore> should read the monad transformers
02:53:17 <oklopol> can you formalize a>>b again?
02:53:35 <faxlore> http://uebb.cs.tu-berlin.de/~magr/pub/Transformers.en.html
02:53:35 <oklopol> what a returned... what's a?
02:53:49 <ehird`> ok,
02:53:53 <ehird`> a is an exprsesion
02:53:54 <ehird`> b is an expression
02:54:22 <ehird`> a runs on the current monad, then we continue onto executing b with a new monad containing all the stuff a did to it.
02:54:30 <ehird`> note: that evaluation order is *well-defined*
02:54:32 <ehird`> a, then b
02:55:00 <ehird`> a >>= b is the same, except b must be a function, and a's return value is passed to b as an argument
02:55:15 <oklopol> right. doesn't sound hard really..
02:55:54 <oklopol> faxlore: i'll read that
02:56:13 <ehird`> faxlore: iirc that's confusing
02:56:15 <ehird`> :-)
02:56:15 <faxlore> I liked it
02:56:17 <ehird`> can't remember
02:56:20 <faxlore> And found it very clear
02:56:39 <ehird`> oklopol: basically you could convert any program using monads to non-monads
02:56:46 <faxlore> it mighht be a different paper
02:56:48 <ehird`> instead of a function doing "return x", you do
02:56:53 <ehird`> "(x, myNewMonad)"
02:57:01 <ehird`> the rest im sure you can figure out yourself.
02:58:44 <oklopol> i guess it's the list monad that always scared me :)
02:58:57 <faxlore> list monad is easy!!!
02:59:01 <faxlore> (>>=) = flip concatMap -- :D
02:59:02 <faxlore> lol
03:01:44 <ehird`> list monad...?
03:02:21 <faxlore> do x <- [1,2,3] ; y <- "flub" ; return (x,y)
03:02:56 <oklopol> hmm
03:03:09 <oklopol> does that do a cartesian product?
03:03:20 <ehird`> faxlore: what about it though
03:03:25 <faxlore> dunno
03:03:31 <faxlore> example of list monad
03:03:37 <oklopol> what does that do?
03:03:39 <ehird`> i don't see what the list monad can do
03:03:40 <faxlore> it does do cartesian product
03:03:44 <ehird`> why does it exist
03:03:54 <faxlore> list monad is nondeterministic choice monad
03:04:02 <ehird`> uh-huh?
03:04:26 <oklopol> hmm
03:04:50 <oklopol> faxlore: elaborate
03:04:53 <faxlore> well you can do lots of useful list operations using monadic procedures someone else wrote
03:05:07 <faxlore> I think it's just that... lists are obviously a monad, so there is an implementation
03:05:13 <faxlore> as with Maybe etc
03:05:14 <ehird`> but why monads
03:05:18 <ehird`> why are lists monads
03:05:38 <faxlore> because return and (>>=) have clear monadic definitions?
03:05:50 <faxlore> (for lists)
03:06:14 <faxlore> I mean all list comprehensions are is use of the list monad
03:06:36 <ehird`> :|
03:06:44 <faxlore> huh?
03:07:37 <oklopol> the syntax [...] is defined in the list monad?
03:07:42 <oklopol> i mean, the list syntax
03:07:46 <faxlore> no
03:07:53 <oklopol> oh!
03:07:57 <oklopol> list comprehensions...
03:07:58 <faxlore> you could define your own list type using Nil and Cons, then write a monad for it
03:08:46 <oklopol> indeed, cartesian product is kinda essential
03:09:19 <oklopol> when done lazily
03:12:25 <ehird`> "(It should be noted that it was rougly at this point that Pressey reached one of the peaks of his so-called "referential" period, in which he was apt to provide "commentary" on his own work, in the form of interjections or asides, as if from the perspective of a historian from a much later era. Such pretentious interruptions were generally not well received, except perhaps by the occasional loser such as yourself.)"
03:16:02 <oklopol> where?
03:17:26 <ehird`> see catseye.tv
03:17:29 <ehird`> *tc
03:17:35 <ehird`> it's in the spec for the latest-released language
03:27:37 <ehird`> random thing:
03:27:40 <ehird`> you know Banana Schemes?
03:27:46 <ehird`> well, you can implement Scheme-omega, kinda.
03:28:09 <ehird`> introduce a third boolean value, maybe
03:28:13 <ehird`> which has two values attached to it
03:28:24 <ehird`> (constructed by (maybe a b) but that's not neccessary)
03:28:35 <ehird`> now,
03:28:47 <ehird`> (H x code) -> (maybe #t #f)
03:29:18 <ehird`> (if (maybe A B) C D) -> "if A and B, C. otherwise, if (not A) and (not B), D. otherwise, (maybe C D)"
03:29:28 <ehird`> or similar
03:29:40 <ehird`> then, if you want, implement a graphical program showing a tree of all possibilities
03:30:12 <ehird`> ofc no console output is assumed it would still be possible with it but you'd have to pick one path before any branch wants to do input
03:30:19 <ehird`> in case you might not want that input
03:30:20 <ehird`> or whatever
03:30:27 <ehird`> er
03:30:28 <ehird`> console INPUT
03:32:59 <oklopol> i'd use haskell, but it just feels like cheating...
03:33:07 <oklopol> perhaps i should move to asm
03:33:24 <ehird`> oklopol: why would that be cheating?
03:33:25 <ehird`> haskell is cool :D
03:33:29 <ehird`> BUT ANYWAY
03:33:33 <ehird`> comment on my banana scheme.
03:33:36 <ehird`> implementaiton. idea.
03:35:03 <oklopol> dunno, it's just too good...
03:35:23 <oklopol> i'm beginning to realize programming would be a bit easier if i had a debugger...
03:36:02 <oklopol> i mean, i do debugging by printing stuff as i go, then reading the output.
03:36:35 <oklopol> works fine with python because i don't really make mistakes... but it's kinda hell doing scheme...
03:37:19 <faxlore> hmmm
03:37:26 <faxlore> Why do you make less mistakes in python than scheme"?
03:39:13 <ehird`> oklopol: ummm it's simple.
03:39:17 <ehird`> oklopol: use your REPL.
03:39:25 <ehird`> your REPL is a debugger, develop all your stuff in there.
03:40:47 <oklopol> it does not support moving the cursor left, i don't really feel like using it
03:41:28 <ehird`> thats your implementations fault.
03:41:29 <Slereah> Heh. Iszero is equivalent to not.
03:41:32 <ehird`> change implementaiton.
03:41:42 <Slereah> Or... maybe not.
03:41:52 <Slereah> There's a nuance!
03:42:06 <ehird`> oklopol: either embrace scheme's development strategy and use a good impl
03:42:09 <ehird`> or don't use scheme
03:42:22 <ehird`> there is no debugger because it would be redundant
03:42:28 <oklopol> faxlore: i make less mistakes in python because i've coded a lot in it..
03:42:35 <faxlore> ah ok
03:43:01 <oklopol> ehird`: you mean i should test my functions before i've written the whole program?
03:43:06 <oklopol> yeah, right!
03:43:12 <ehird`> of course.
03:43:19 <ehird`> that's what you're meant to do
03:43:24 <ehird`> don't like it, don't use scheme.
03:43:48 <oklopol> guess i need to make a debugger myself if there's none
03:43:58 <ehird`> no
03:44:00 <ehird`> the repl is the debugger.
03:44:03 <ehird`> anyway bye for today
03:44:05 -!- ehird` has changed nick to ehirdsleep.
03:48:21 <oklopol> i can write 200 lines of python and it works right away, if i can't learn to do the same with scheme, there was no point in the language change anyway
03:48:47 <oklopol> but true, i guess i have to test my functions... that does feel like cheating though
04:07:11 <faxlore> ehird`: did you write a bf interpreter in haskell?
04:07:24 * faxlore (wants one)
04:10:25 <oklopol> would it take long to write one yourself in haskell?
04:11:00 <faxlore> no
04:34:24 * faxlore is going to run every BF program
04:34:34 <faxlore> (Except ones that obviously dont terminate or take input..)
04:56:16 -!- puzzlet has quit (Remote closed the connection).
04:56:23 -!- puzzlet has joined.
06:56:29 -!- Slereah has quit.
07:34:40 -!- Jontte has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:49:54 -!- 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. Man who run behind car get exhauste).
10:51:13 <SimonRC> in old fortrans, 3=4 would change all constant 3s in a program into 4s, because constants were often implemented as variables that started with a particular value.
10:52:56 <SimonRC> faxlore: what do you mean by "every"?
10:53:01 <SimonRC> and why?
10:56:36 -!- Corun has joined.
11:01:11 <SimonRC> Corun: as in co-routine?
11:01:24 <Corun> Nope
11:01:46 <Corun> As in an abbreviation of Corundum, :-)
11:32:43 -!- faxlore has quit ("If there are any aliens, time travellers or espers here, come join me!").
12:14:45 -!- Hiato has joined.
12:15:01 <Hiato> Wassup :)
12:15:56 <Hiato> Oklopol: could you please explain your Fibonacci programme in CTRL, I don't understand it
12:16:09 <Hiato> *CRTL
12:18:32 -!- Corun has quit ("This computer has gone to sleep").
12:28:47 -!- jix has joined.
12:40:37 -!- Hiato has left (?).
12:49:13 -!- Corun has joined.
13:04:39 -!- johnl has joined.
13:26:00 -!- sebbu has joined.
13:37:57 <Corun> WOO Happy leet o clock UK!
13:40:07 -!- Corun has quit ("This computer has gone to sleep").
13:57:39 -!- bencoder has joined.
14:02:45 -!- bencoder has quit.
14:04:53 -!- Jontte has quit ("Konversation terminated!").
14:06:13 -!- Slereah has joined.
14:06:30 <Slereah> Well, I'm on Linux now.
14:06:33 <Slereah> Hope it's worth it.
14:08:42 <SimonRC> surreal, yet fun: http://www.larry.denenberg.com/Knuth-3-16/
14:21:49 -!- RedDak has joined.
14:34:11 -!- oerjan has joined.
15:05:05 -!- UnrelatedToQaz has joined.
15:06:18 -!- UnrelatedToQaz has quit (Client Quit).
15:10:33 -!- SimonRC has quit (Read error: 110 (Connection timed out)).
15:16:33 <bsmntbombdood> uuuuh
15:16:37 <bsmntbombdood> isn't knuth still alive?
15:16:47 <oerjan> last i heard...
15:17:02 <oerjan> anyone said something else?
15:17:50 <oerjan> wikipedia agrees
15:18:24 <bsmntbombdood> http://www.larry.denenberg.com/Knuth-3-16/concrete-math.html
15:18:37 <bsmntbombdood> "...even during his lifetime"
15:21:32 * oerjan points to the copyright notice ;)
15:29:52 -!- jix has quit (Nick collision from services.).
15:30:02 -!- jix has joined.
15:46:16 -!- Corun has joined.
15:50:19 -!- ais523 has joined.
15:50:34 -!- timotiis has joined.
15:51:32 <ais523> bsmntbombdood: it is a little known fact that Knuth once worked on INTERCAL
15:53:56 * ais523 has a nasty habit of continuing conversations that took place when they weren't there
15:59:16 <ais523> and oerjan: your Unlambda program is now in the official distribution as an example program (see for instance http://packages.debian.org/sid/i386/intercal/filelist)
16:03:38 <ais523> unlambda.i.gz in that list was written by Oerjan, tpk.i.gz was co-written by Knuth
16:04:11 -!- Slereah has quit ("Konversation terminated!").
16:04:52 <oerjan> what's tpk?
16:05:11 <oerjan> yay, fame
16:06:18 <ais523> tpk is a simple test program that he wrote in several languages, I think to compare their performance
16:06:29 <ais523> it was kind of tricky in INTERCAL, as might be expected
16:06:44 <ais523> I think it might be because it's a floating-point program, but I'll have to check
16:08:45 <ais523> see http://www.cs.fit.edu/~ryan/compare/ for the program in many other languages (unfortunately, that list doesn't include the INTERCAL version)
16:10:38 <oerjan> i found knuth's page on it
16:11:43 <ais523> and of course, the whole compiler was written by Eric Raymond in the first place, so there's more fame-by-association stemming from there
16:12:44 -!- Slereah has joined.
16:12:52 <oerjan> actually i think esr already linked to my interpreter
16:13:59 <ais523> I have a question about d in Unlambda, by the way
16:14:09 <ais523> normally `xy evaluates y first, then x
16:14:11 <oerjan> aye?
16:14:22 <oerjan> no
16:14:25 <ais523> sorry, I meant normally `xy evaluates x first, than y
16:14:43 <ais523> does ``dxy always evaluate y before x no matter what the value of x?
16:14:52 <oerjan> yep
16:15:12 <ais523> I ask because I was writing an Unlambda to Underload compiler
16:15:20 <ais523> I got it to handle everything except c, with that definition of d
16:15:41 <ais523> I then accidentally deleted it, but I can still remember most of the concepts and will get around to rewriting it some time
16:16:05 <ais523> and in the process, I discovered that there were an infinity of options between lazy and eager evaluation
16:16:22 <oerjan> probably
16:16:47 <ais523> basically, you could set the eagerness of an expression, and when an operator operated on two expressions, the more eager was evaluated first
16:17:05 <oerjan> incidentally, d is the only function that you can test for without applying it
16:17:26 <ais523> how is that done?
16:17:41 <Slereah> By the way, is it actually a good idea to use an input "combinator" with lazy evaluation?
16:17:57 <oerjan> if you do ``dxy where x and y both raise some continuation
16:18:24 <ais523> but if the d isn't a d, it will be evaluated before x or y, and so will be applied
16:18:33 <oerjan> then d raises the one in y, every other function raises the one in x, and the actual function is never applied
16:18:55 <Slereah> So far, it mostly gets copied everywhere without much control!
16:18:59 <oerjan> well by applied i mean applied to an argument with any possible effects
16:19:27 <oerjan> not including evaluation of the expression that becomes the function
16:19:32 <ais523> oh, because counterexamples like `.ai aren't atoms and so couldn't be given as arguments to the d-tester in the first place
16:19:50 <ais523> because in standard Unlambda, the d-tester couldn't itself be lazy
16:20:02 <oerjan> something like that
16:20:16 <ais523> my compiler actually worked on Underload, Unlambda or a hybrid, so I called the resulting language Underlambda
16:20:43 <ais523> in that language, lazy functions other than d can exist
16:21:08 <ais523> you could imagine a lazy version of v, for instance, that throws away its argument without even evaluating it in the first place
16:21:27 <ais523> oh, and I almost ended up inventing monads again, when trying to figure out the behaviour of .
16:22:13 <ais523> I'm still disappointed that there's no way to translate ``sii into Haskell
16:22:35 <ais523> although I'm amused that other combinators can be identified purely by their data type
16:22:42 <oerjan> without a newtype that is
16:23:11 <ais523> I'm trying to learn Haskell without any documentation, so language features are kind of hard to figure out
16:23:30 <ais523> I think there ought to be a standard datatype f -> f -> f -> f -> ... ad infinitum, though
16:23:31 <oerjan> o_O
16:23:43 <ais523> because infinite datatypes are a great concept
16:23:52 <oerjan> except that would never give any actual result
16:24:09 <oerjan> f -> m (f -> m ...) is more useful
16:24:10 -!- SimonRC has joined.
16:24:51 <ais523> oh, of course, in Haskell it would need a second data type to be able to produce side effects
16:25:18 * ais523 needs to continue a third conversation from when they weren't here now that someone else has joined
16:25:32 <ais523> SimonRC: assigning to constants is possible in modern versions of INTERCAL too
16:25:44 <ais523> although C-INTERCAL protects you from that unless you turn on a command-line option in the compiler
16:26:33 <ais523> you can even do it without putting constants on the LHS of an assignment if you're careful
16:26:57 <ais523> as in .1 <- '.1/#1'$#1
16:27:17 <oerjan> i think someone mentioned f -> m (f -> m ...) on #haskell the other day, called it a monadic stream or something
16:28:33 <ais523> does Haskell support call/cc?
16:28:51 <oerjan> Control.Monad.Cont
16:28:53 <ais523> if it does, then adding monadic streams might allow for an Unlambda -> Haskell compiler
16:29:10 <oerjan> sure
16:29:19 <ais523> but an Unlambda -> C (via Underload) compiler would be more impressive
16:29:34 <ais523> ehird` and I are working on half of that each
16:30:12 <ais523> d is easy when you have two laziness levels, but for c the only thing I can think of is writing an Underload self-interpreter, but with continuations added
16:30:42 <ais523> it shouldn't be too hard if one list is used for the program and another for the stack
16:31:12 <ais523> but instead of the usual ((a)((b)((c)((d)... form of list, give a third element in each tuple that specifies whether the list has ended or not
16:31:18 <ais523> so that appending to the end of a list is possible
16:31:41 <ais523> normally, Unlambda and Underload lists are infinite (you have to specify a function for filling out the end of the list once the programmed portion is reached)
16:32:04 -!- Mony has joined.
16:32:41 <oerjan> i've pondered using the special property of d to terminate lists, never implemented it
16:33:15 <Mony> iop all
16:33:16 <ais523> this gives me some ideas for an esoteric OS
16:33:29 <ais523> my idea was that everything in the OS sohuld be a function
16:33:56 <ais523> which would lead to simple implementations of things like symlinks, hardlinks, and even copy-on-write copying (a feature that I've found myself wanting in an OS before)
16:34:24 <ais523> unfortunately, I thought that such an OS would be inherently insecure
16:34:39 <ais523> but the special properties of d - and of laziness levels in general - may be a way around that
16:35:02 * ais523 is a big fan of the way languages like Unlambda and Underload can synthesize things like arithmetic out of basically nothing
16:37:46 <oklopol> mörning all
16:38:12 <oerjan> vening
16:38:37 <oklopol> i love winter
16:38:47 <oklopol> it's dark when i go to sleep, and dark when i wake up!
16:38:52 <oerjan> starting snowing here again today
16:39:23 <ais523> it mostly rains here in the UK, although I think it was snowing for a bit yesterday
16:39:34 <AnMaster> I hate winter, it is dark most of the day
16:39:39 <AnMaster> and cold
16:39:40 <oklopol> i have no idea whether there's snow outside :)
16:39:49 <ais523> I like winter for the coldness, but not for the darkness
16:39:52 <oerjan> it's been a while since the last time, the ice was nearly gone
16:39:57 <AnMaster> I do, because of streetlights, but only because of them
16:40:04 <ais523> although I suppose the two are kind-of correlated...
16:40:04 <AnMaster> and: no snow
16:40:17 <AnMaster> I hate winter for coldness and darkness
16:40:18 -!- slereah_ has joined.
16:40:59 <oklopol> i guess i'll go read something, keep the flag in the pole or something ->
16:41:52 <ais523> !daemon ul bf http://pastebin.ca/raw/367774
16:42:00 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
16:42:17 <ais523> anyway, the principle of lazy Underload is to write a combinator that would normally be x as (^x)
16:42:48 <ais523> and Unlambda's `ab translates to ((^b))((^a))^^
16:43:01 <ais523> (which can of course be optimised)
16:43:23 <ais523> the ^ at the start makes the combinator eager rather than lazy
16:43:48 <ais523> and often has to be followed by an Underload a to get the nesting levels right
16:47:52 -!- puzzlet has quit (Remote closed the connection).
16:47:53 <ais523> !ul ((^))((^(test)S))^^
16:47:57 <EgoBot> test
16:47:59 -!- puzzlet has joined.
16:48:17 <ais523> or for an expression like ``.ai`.bi:
16:48:45 <ais523> (((^))((^(b)S))^^)(((^))((^(a)S))^^)^^
16:49:06 <ais523> !ps
16:49:09 <EgoBot> 2 ais523: ps
16:49:16 <ais523> !ps d
16:49:17 <EgoBot> 1 ais523: daemon ul bf
16:49:19 <EgoBot> 2 ais523: ps
16:49:24 <ais523> !ul (((^))((^(b)S))^^)(((^))((^(a)S))^^)^^
16:49:27 <EgoBot> ab
16:49:51 <ais523> now, to do a d combinator, instead of evaluating the argument with ^, you append a ^ to it so it's evaluated later
16:50:03 <ais523> but you also have to prepend ^a to it so that the resulting promise is eager not lazy
16:50:18 <ais523> so for instance, ``d`.ai`.bi is
16:50:43 <ais523> !ul (((^))((^(b)S))^^)((((^))((^(a)S))^^)(((^a)~*(^)*))^^)^^
16:50:45 <EgoBot> ba
16:50:58 <ais523> ...and the laziness criteria are satisfied
16:51:08 <ais523> so that's how d is compiled into Underload
16:56:49 <ais523> i, ., s, and k have already been done (although they need minor modification for the new method), that's how d is done, v is easy due to the ! instruction, and so it's only c that now needs to be implemented for an Unlambda 1 compiler, unless I've missed something
16:59:35 -!- ais523 has quit.
17:02:32 -!- RedDak has quit (Read error: 104 (Connection reset by peer)).
17:05:34 -!- RedDak has joined.
17:20:11 -!- Hiato has joined.
17:20:21 -!- puzzlet has quit (Remote closed the connection).
17:20:28 -!- puzzlet has joined.
17:30:05 * SimonRC has an idea...
17:30:12 <SimonRC> a hash-consed filesystem
17:30:44 <SimonRC> every time you write a sector to disk, you check if there is an identical sectore there already, and if so just link to it
17:30:56 <SimonRC> inodes can handle this already, I think
17:31:32 <SimonRC> at a random guess, I say that zfs has this feature already as an option
17:35:29 -!- Jontte has joined.
17:37:26 -!- ais523 has joined.
17:38:19 -!- oerjan has quit ("Good night").
17:39:10 <ais523> SimonRC: that sounds like the copy-on-write filesystem I suggested earlier
17:40:43 -!- puzzlet has quit (Read error: 104 (Connection reset by peer)).
17:40:49 -!- puzzlet has joined.
17:47:53 -!- puzzlet_ has joined.
17:59:33 -!- puzzlet has quit (Read error: 110 (Connection timed out)).
18:12:44 -!- Hiato has left (?).
18:15:14 -!- puzzlet_ has quit (Remote closed the connection).
18:15:20 -!- puzzlet has joined.
18:17:50 -!- Corun has quit ("This computer has gone to sleep").
18:28:26 -!- Mony has quit (" bye all ;)").
18:36:40 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
18:38:51 -!- oklopol has joined.
18:43:38 -!- puzzlet has quit (Remote closed the connection).
18:43:44 -!- puzzlet has joined.
18:50:07 -!- biosh0ck has joined.
18:54:54 -!- faxlore has joined.
18:55:38 -!- biosh0ck has left (?).
18:56:41 -!- Hiato has joined.
19:02:45 <Hiato> For anyone interested: I reverted the grid size in ACRONYM from infinitely large to 128x128. There is a reason for this, and it is documented in the spec http://rafb.net/p/Hn966345.txt (as ehird` is now ehirdsleep , I'm not sure if he'll get this message but hey...
19:02:55 <Hiato> )
19:03:18 -!- MichaelRaskin1 has joined.
19:03:30 <oklopol> Hiato: what is that?
19:03:51 <Hiato> it's the ACRONYM spec (finilised, except for typos and such like)
19:04:01 <oklopol> the reason
19:04:07 <Hiato> oh, woops, sorry
19:04:14 <oklopol> documented in the spec, yet
19:04:20 <oklopol> but it's soooo long
19:04:24 <oklopol> *yes
19:04:25 <Hiato> sure
19:05:00 <Hiato> it is that given that any specific cell can hold an arbitrary integer, using prime bases we can store simulated values of other cells using exponents
19:05:07 <oklopol> indeed
19:05:08 <Hiato> ie say we want to simulate 3 celss
19:05:26 <Hiato> we would go 2^a x 3 ^b x 5^c
19:05:40 <Hiato> where a, b and c are the values of the 3 simulated cells
19:05:52 <Hiato> and via prime facotrisation, we can recover those alues
19:05:59 <Hiato> *factorisation
19:06:43 <faxlore> hey I like this idea
19:06:55 <Hiato> I'm glad, I thought that I thought of it
19:07:06 <faxlore> can you make a single celled brainfuck?
19:07:10 <Hiato> but it turned out that the concept was there before :(
19:07:16 <Hiato> well, no, not entirelt
19:07:19 <Hiato> for one reason
19:07:29 <Hiato> in bf, you need other cells to do factorisation
19:07:36 <Hiato> so a 3 cell bf, yes
19:07:38 <Hiato> :D
19:07:45 <Hiato> *entirely
19:08:10 <ais523> is a 2 cell bf possible?
19:08:18 <Hiato> hrmm... not sure about that
19:08:20 <ais523> that's probably enough for * and /
19:08:26 <Hiato> as copying takes an extra cell
19:08:28 <ais523> which allow you to store any number of counters in the one cell
19:08:41 <Hiato> aha, yes, if you have / and *
19:08:45 <Hiato> being non-destructive
19:08:47 <Hiato> then yes
19:08:55 <Hiato> you can do it with 2 cells
19:08:57 <Hiato> :D
19:09:05 <ais523> implementing / non-destructively might be difficult, but I think it's possible
19:09:47 <oklopol> umm... isn't it a register machine or something if you have a brainfuck with just a few states?
19:09:51 -!- ais523 has quit ("have to go").
19:09:51 <oklopol> *cells
19:09:55 <oklopol> oh, damn
19:09:59 <Hiato> yes, that is the tricky part, though there is really a simple way to do it, just say that / will be used as such /+++++ meaning divide the current cell by 5 and store the tresult in the other cell
19:10:09 <Hiato> damn
19:10:26 <Hiato> oklopol: yes, it's close to a 2 counter machine
19:10:33 <Hiato> but with infinite states :D
19:10:41 <oklopol> hmm?
19:10:46 <Hiato> if it can store arbitrary integers
19:10:57 <Hiato> though, I see it as a trivial derivation of BF
19:11:16 <Hiato> actually, perhaps not...
19:11:29 <Hiato> maybe this is worth writing up, what do you think oklopol?
19:11:41 <oklopol> do it yesuyes
19:11:43 <oklopol> !!
19:11:45 <EgoBot> Huh?
19:11:48 <Hiato> ok
19:11:49 <faxlore> lol
19:12:14 <Hiato> names?
19:12:22 <Hiato> twofuck?
19:12:24 <Hiato> :P
19:12:25 <oklopol> oh fuck... why did i eat... now i'm watching simpsons again :)
19:12:33 <oklopol> i was actually doing something before this
19:12:41 <Hiato> hah, lol :)
19:13:04 <Hiato> hrm.. wait
19:13:10 <Hiato> in a bounded storage nachine
19:13:23 <Hiato> is a programme considered a finite automaton?
19:13:35 <oklopol> umm...
19:13:42 -!- Corun has joined.
19:13:46 <oklopol> depends what you mean by that
19:13:57 <Hiato> well, I maent in terms of terminology
19:14:00 <oklopol> the actual program is always a fsm
19:14:00 <Hiato> purely
19:14:02 <Hiato> *meant
19:14:03 <oklopol> i mean
19:14:09 <oklopol> it's finite.
19:14:11 <Hiato> oh, ok sure
19:16:59 <oklopol> only 840 pages to read this weekend, i guess i can watch a few simpsons more.
19:17:10 <Hiato> ROFL :D
19:17:23 <Hiato> Blah, there is a problem
19:17:32 <Hiato> how do you factorise with only 2 cells
19:17:39 <Hiato> to get only a specific prime base
19:17:48 <Hiato> elimimate the rest and then subtract?
19:17:57 <Hiato> the rest of the bases that is...
19:18:04 <faxlore> this is reminding me of fractran actuall
19:18:09 <faxlore> Hiato have you seen it
19:18:20 <Hiato> what, fractran?
19:18:25 <Hiato> nope
19:18:26 <faxlore> ( http://www.esolangs.org/wiki/Fractran )
19:18:28 <oklopol> indeed
19:18:32 <Hiato> I don't know what that is
19:18:37 <faxlore> so cool :p
19:18:42 <oklopol> you just need enough cells to simulate modulus
19:18:43 <Hiato> roger
19:18:53 <oklopol> which is... 4?
19:18:56 <Hiato> 3
19:19:03 <faxlore> btw
19:19:08 <Hiato> 1 for copying, then 2 for subtraction
19:19:08 <oklopol> yeah, but you need one for the current number
19:19:12 <faxlore> Should I add my fractran interpreter?
19:19:13 <faxlore> (*{~1 i.~[@(=<.)@:*)
19:19:16 <oklopol> hmm
19:19:22 <oklopol> faxlore: what lang?
19:19:24 <faxlore> J
19:19:27 <Hiato> yeah, go for it faxlore
19:19:32 <oklopol> i need to learn that...
19:19:36 <Hiato> ditto
19:19:39 <oklopol> is there a nice tutorial or something?
19:19:41 <faxlore> It's a beautiful lang
19:19:49 <faxlore> Yeah there
19:19:50 <faxlore> is
19:19:52 <oklopol> i'd prefer K but can't find a tutorial for that either
19:20:00 <faxlore> oh I didn't look at K yet
19:20:10 <oklopol> i did find an interpreter, but couldn't install it :)
19:20:36 <faxlore> http://www.jsoftware.com/jwiki/Guides/Getting_Started
19:20:37 <Hiato> ooh fractran is crazy
19:20:44 <faxlore> There are quite a lot of books online
19:24:07 <Hiato> blah
19:24:11 <Hiato> you where right oklopol
19:24:17 <Hiato> you need 4 cells to factorise
19:24:38 <Hiato> and it is also very difficult if you don't know what the bases' exponents are
19:24:38 <oklopol> i'm always right
19:24:46 <Hiato> can think of an easy way to do it right now...
19:25:01 <Hiato> oh, wait
19:25:05 <Hiato> DUH
19:25:27 <Hiato> you, as the programmer will always need to know what values you are simulating/ the range of the values
19:25:37 <oklopol> hmm
19:25:39 <oklopol> ?
19:25:39 <Hiato> and this you can make deductions about the rest....
19:25:49 <Hiato> ie, say you are simulating 2 cells
19:25:52 <Hiato> wait
19:26:00 <Hiato> nevermind, you can only ever have 1 unknown
19:26:24 <Hiato> but anyway, say you are simulating 2 cells, in 2^a x 3^b
19:26:32 <Hiato> and you want to find out b's value
19:27:17 <Hiato> all you need to do is (assuming a is known) subtract 2 a times, and presto, you are left with 3^b, from which you subtract 3 and increase the other cell
19:27:25 <Hiato> meaning you only need 3 cells
19:28:06 <Hiato> but, if there are >1 unknowns , you need 4 cells
19:28:16 * faxlore (has made an addition to http://www.esolangs.org/wiki/Fractran then)
19:28:56 <oklopol> subtract 2 2 times?
19:29:27 <Hiato> no, not entirely, because say you had the value 2^3 x 3^b
19:29:30 <Hiato> and you want b
19:29:45 <Hiato> but you don't know what the value of the power of 2 is
19:30:01 <Hiato> there is no way that with two cells you can derive it, or even three
19:30:25 <oklopol> indeed.
19:30:42 <oklopol> but i think there are some definite mathematical results on exactly this...
19:30:45 <Hiato> no, wait, there is
19:30:50 <oklopol> i mean, how many registers you nee
19:30:51 <oklopol> d
19:30:58 <Hiato> -[-[blah]]
19:31:11 <Hiato> would subtract 2 while the value was greater than or equla to 2
19:31:14 <Hiato> indefiniately
19:31:16 <Hiato> woohooo
19:31:27 <oklopol> yeah, mod2
19:31:32 <Hiato> yip :)
19:31:35 <Hiato> 3 cells !
19:31:41 <oklopol> unfortunately we don't need modulo here :<
19:31:45 <oklopol> we need division.
19:31:47 <Hiato> true,,,
19:31:56 <Hiato> yes, thouhg that is the fun part
19:32:01 <Hiato> say you want b
19:32:49 <Hiato> -[-[ ]] two remove all the twos then -[-[-[>+<]]] to divide by 3
19:32:54 <Hiato> easy as PiR^2
19:33:15 <Hiato> actually
19:33:37 <Hiato> no wait, -[-[-[+++[--->+<]]]]
19:33:39 <Hiato> that is better
19:34:07 <Hiato> that is assuming that you'are not sure if it is > 3
19:34:10 <Hiato> otherwise
19:34:16 <Hiato> [--->+<]
19:35:42 <oklopol> indeed, a program will only use a finite set of divisors
19:35:54 <oklopol> so you can hardcode them like that
19:35:55 <Hiato> yip, so no worries
19:35:59 <faxlore> hm.....
19:36:07 <Hiato> or, you could 'soft' code them
19:36:09 <faxlore> What's the point in dividing by 3
19:36:24 <Hiato> ie, dividing by the amount in the other cell
19:36:25 <faxlore> when you do that.. you'd have to check the first prime number that's been incremented
19:36:33 <bsmntbombdood> :D
19:36:37 <Hiato> faxlore: deriving th value stored
19:36:51 <Hiato> no, you wouldn't
19:36:56 <Hiato> as this is user end coding
19:37:03 <Hiato> so
19:37:16 <Hiato> all that needs to happen is to dervie a value, you cancel out all the rest
19:37:16 <faxlore> hi bsmntbombdood
19:37:20 <Hiato> and then divide
19:37:24 <faxlore> I wrote a program that lists every BF program
19:37:36 <Hiato> yeah hi bsmtbombdood
19:37:38 <faxlore> I just need a way to run them all...
19:37:45 <Hiato> faxlore: how's is that possibel :)
19:37:47 <Hiato> *possible
19:38:27 <faxlore> Hiato, well I think if I try to evaluate the elements of the list concurrently I can not get stuck.. but I don't know how to code that
19:38:36 -!- MichaelRaskin1 has left (?).
19:38:57 <oklopol> faxlore: basically you need to save a program as a tuple (code, ptr, tape)
19:39:06 <faxlore> That's exactly what I have :D
19:39:10 <faxlore> (in a different order)
19:39:19 <oklopol> well, there you have it then
19:39:25 <Hiato> yeah, that sounds like the right thing to do
19:39:28 <faxlore> ohh yeah.. I don't need concurrency
19:39:35 <faxlore> I can just step all the elemts
19:39:48 <bsmntbombdood> http://angryflower.com/paulvk.html
19:39:49 <faxlore> I mean , step every item < item 1, step every < item 2, .. etc
19:40:00 <oklopol> just have the function you are evaluating the programs with take another param to specify how many steps to evaluate.
19:40:02 <faxlore> removing ones that got finished (what's the finished state of a program ccalled)
19:40:31 <oklopol> halting state?
19:40:39 <faxlore> gonna code this now :D
19:40:50 <oklopol> sounds awesome actually :)
19:41:09 <Hiato> indeed
19:41:12 <faxlore> oklopol: It is for my BF contest
19:41:23 <Hiato> can't wait to see what all of BF evaluates to :P
19:41:52 <oklopol> hehe
19:41:57 <faxlore> I should get some shortest programs with this
19:42:06 <Hiato> definitely
19:42:11 <oklopol> hehe
19:42:13 <oklopol> fun idea
19:42:20 <Hiato> though be prepared to stare at the screen for a long time :D
19:42:26 <faxlore> indeed :p
19:42:28 <oklopol> have an online deposit where people can send results of programs run
19:42:35 <Hiato> awesome
19:42:36 <Hiato> !
19:42:39 <EgoBot> Huh?
19:42:42 <faxlore> lol
19:43:05 <oklopol> hmm
19:43:12 <oklopol> might be interesting to do for something like K
19:43:36 <Hiato> yeah, great experiment, but it would take ages to compile anything substantail in terms of results...
19:43:47 <Hiato> *substantial
19:43:56 <oklopol> well, perhaps not K
19:43:58 <oklopol> cise!
19:44:28 <oklopol> there's at least multiple sorts with 7 characters in Cise
19:44:46 <Hiato> cool, I haven't heard of it before though
19:45:17 <oklopol> i've just shown the few examples on this channel
19:45:26 <oklopol> i can show them again perhaps
19:45:33 <Hiato> yeah, please
19:45:35 <oklopol> merge sort:'/,)#<
19:45:35 <oklopol> quicksort:/2;A b:C,',JnB
19:45:35 <oklopol> bubblesorta:B,',\#<A,JnA
19:45:35 <oklopol> factorials:1::Il,)&*
19:45:46 <faxlore> What's that!
19:45:46 <faxlore> sad
19:45:51 <Hiato> woow, that's hellish powerful
19:45:52 <oklopol> there are a few things you can change in the mergesort and it works still
19:46:04 <faxlore> *wow
19:46:10 <oklopol> just a list of list operations and parsing inference (PATENT PENDING)
19:46:15 <oklopol> oh
19:46:21 <oklopol> parsing via type inference
19:46:47 <faxlore> Does an Implementation exist?
19:46:48 <oklopol> it has some interesting concepts
19:46:52 <oklopol> oh, lord no
19:46:55 <faxlore> :D
19:46:58 <oklopol> it takes a while to parse even manually :)
19:47:04 <Hiato> hah :D
19:47:05 <oklopol> i mean
19:47:18 <oklopol> you have currying + polish notation with implicit nesting
19:47:31 <oklopol> there's an exponential growth in possible parsings
19:47:32 <Hiato> shame :P
19:47:41 <oklopol> the leftmost working one is chosen always
19:48:01 <oklopol> usually type inference seems to result in exactly one working program for a piece of code
19:48:10 <oklopol> assuming you only have short statements
19:48:21 <oklopol> "," and ";" are separators
19:48:57 <faxlore> Can you break down '/,)#< ?
19:49:35 <oklopol> A,B;D,E is a function that takes a value, called the current value, it's run through the function A, then the result is run through B, the result of which is pattern matched on C, the result of which again is sent to D to give the result
19:49:40 <oklopol> i think so
19:49:40 <oklopol> wait
19:49:58 <Hiato> ... woow
19:50:29 <oklopol> '/,)#< "'" means evaluate expression on the right, getting a list as result, map current function recursively to each sublist
19:50:35 <oklopol> / is the split function
19:51:00 <oklopol> it takes a list and a number and splits into that many segments (in seqments of the same length)
19:51:16 <oklopol> the current value is given as a param to the statement
19:51:31 <oklopol> so the first statement is "'/_" where _ is the param
19:51:57 <oklopol> everything has a default value, for splitting a list the number of splits is of course "2"
19:52:14 <oklopol> because if you split, naturally you split in half instead of into 500 pieces or something.
19:52:28 <oklopol> now, another interesting point
19:52:45 <oklopol> many list algos terminate on small lists and work as identity
19:52:55 <oklopol> in case a function encounters an error, it's the identity.
19:53:13 <oklopol> a list of one element is not split, it throws an error.
19:53:27 <oklopol> so we have the base case for recursion here, encoded in the language
19:53:45 <oklopol> okay, so the first statement divided the list in two and recurtsed
19:53:48 <oklopol> *recursed
19:53:49 <faxlore> That's mad
19:53:52 <oklopol> let's look at the second one
19:53:54 <Hiato> agreed
19:54:37 <oklopol> )#< <<< this gets the result, now here we have the function )#, which is a pretty specific function
19:54:47 <oklopol> it takes a function and a list of lists
19:55:17 <oklopol> and it always gives the function a list of all the heads of the input lists
19:55:54 <oklopol> and puts the result on the result list, removing the matched head from the list whose head matched
19:56:21 <oklopol> for "<" == min function for lists
19:56:33 <oklopol> and an input list of two lists
19:56:44 <oklopol> it basically does the "merging" of mergesort
19:57:02 <oklopol> this was as generic as i could get without actually having && be sort or something
19:57:07 <oklopol> (incidentally, && is sort.)
19:57:19 <oklopol> (so K wins here... unless i shorten that :))
19:57:34 <oklopol> oh, i've changed it to St
19:58:19 <oklopol> many choices for function names are pretty arbitrary, i'll of course put in shorter names for stuff that is often needed, once i know what is
19:59:09 <oklopol> unfortunately i haven't really done much on this (although it for some reason still has quite a lot of features)
20:00:19 <oklopol> my intention was to make a language that's doesn't have much possibilities for extending the language, and not much abstraction possibilities either, perhaps even not tc, but a *lot* of list support
20:00:33 <oklopol> actually
20:00:39 <oklopol> i think i made a brainfuck interp
20:00:50 <oklopol> ;I,;mc,[]{"[]"},=}!!b->"+"+mC1"-"-mC1">"+C1"<"-C1{;X}Wh=mC0=}X??b this one
20:01:14 <oklopol> it doesn't use much currying, so i'm fairly sure the long statement in the end would parse
20:01:36 <oklopol> hmm... why the fuck haven't i commented that in any way xD
20:07:17 <Hiato> well, it's possible to do (the primes things) with only two cells, but three new commands
20:07:27 <Hiato> or in three cells, with two new commands
20:07:33 <Hiato> or in four cells, with no new commands
20:08:02 <Hiato> although four cells nearly defeats the purpose
20:10:11 <Hiato> wait
20:10:15 <Hiato> I migth be horribly wrong
20:11:16 <oklopol> faxlore: do you have a bf in J?
20:11:37 <faxlore> no
20:15:46 <oklopol> what, cise has gotos :D
20:15:55 <oklopol> interesting read this interp...
20:16:09 <oklopol> i remember nothing, have to guess what it does
20:21:30 <oklopol> at least it seems to be correct
20:21:48 <Hiato> yes, ok, I do need 4 cells without any added symbols... :(
20:22:01 <oklopol> oh, god, i'm still here...
20:22:04 <oklopol> leaving! ->
20:22:04 <Hiato> 3 cells with one new command
20:37:35 <Hiato> meh
20:37:37 <Hiato> I need help
20:37:55 <Hiato> how would you set up the condition in BF of while >= 3 ??
20:41:45 <Hiato> ie, to do a modulus...
20:51:41 <Hiato> [ [-[-[-[>[-]+>]<<+>>]<<+>>]<<+>>] < [-<--->>] <<]
20:51:51 <Hiato> is as close as I can get, but it will mess up on the last cycle
20:53:09 <Hiato> faxlore, oklopol, bsmntbombdoodm, EgoBot, pikhq, somebody, anybody....
20:53:32 <Hiato> (it's a modulus 3)
20:54:37 <Hiato> (*bmsntbombdood)
20:57:50 <faxlore> I don't know :(
20:57:57 <faxlore> You could try stuff off http://esolangs.org/wiki/Brainfuck_algorithms#x_.3D_x_.3C.3D_y
20:58:05 <Hiato> thanks
20:58:13 <faxlore> I never wrote much BF...
20:58:17 <faxlore> just generating it
20:58:19 <Hiato> same
20:58:22 <Hiato> diito
20:58:28 <faxlore> this is tricky though :S
20:58:29 <Hiato> epsecially optimal text to bf
20:58:31 <Hiato> :)
20:58:40 <faxlore> my program ended up with lots of nonsense words in it and didn't work
20:58:48 <faxlore> Hiato: Really? Plesae give me any programs which do this
20:58:48 <Hiato> mine works fine
20:58:53 <Hiato> sure
20:58:55 <Hiato> am..
20:58:59 <Hiato> where can I upload
20:59:01 <faxlore> I have quite a few but I want to get as many as possilb
20:59:17 <faxlore> rafb.net/paste
20:59:30 <Hiato> mine calculates to the letter the most compact way of doing it, using one algorithm ofcourse
20:59:31 <Hiato> sure
20:59:36 <Hiato> it's in delphi though...
20:59:52 <faxlore> Hiato I don't think that's possible
21:00:05 <Hiato> what, that it's in delphi, or calculation
21:00:09 <faxlore> lol
21:00:24 <faxlore> The smallest possible BF program to print a given string
21:00:40 <faxlore> Which is .. the reason I try to implement it :P
21:00:44 <Hiato> well, it's by no means the smallest
21:00:48 <Hiato> well, it might be close
21:00:54 <Hiato> but the smallest within the logic I use
21:00:58 <Hiato> which you'll see
21:01:00 <faxlore> ahh right cool
21:01:05 <Hiato> http://rafb.net/p/Asa5t442.txt
21:01:09 <Hiato> there you are
21:01:13 <Hiato> should work with FPC too
21:01:16 <faxlore> I can always take new algorithms and then take the min for it
21:01:22 <faxlore> so any new algorithms improve the overall
21:01:26 <Hiato> aha
21:01:46 * faxlore saves to read later :D
21:01:52 <Hiato> :)
21:01:57 <Hiato> I'll upload an example
21:02:08 <Hiato> to show you what it does
21:02:47 <Hiato> http://rafb.net/p/5rXz5d37.txt
21:02:49 <Hiato> there you are
21:02:57 <Hiato> step through it to understand what it is doing
21:03:01 <Hiato> though it should be obvious
21:03:13 <faxlore> mm I know this pattern ":)
21:03:24 <Hiato> haha lol :D
21:03:45 <faxlore> I need to make lots of measurements and put up a webpage
21:03:54 <Hiato> yip, that would be awesome
21:03:59 <Hiato> and have some competitions
21:04:14 <Hiato> like shortest code for four cells, six, two etc
21:04:30 <Hiato> PS: use mode 1 on my algorithm, not mode 2.
21:04:37 <Hiato> Mode 2 is oudated and works stupidly
21:04:44 <Hiato> *outdated
21:04:56 <oklopol> Hiato: what's that bf program?
21:05:34 <Hiato> which one, the one on nopaste is a demostration of my algorithm and an explination
21:05:45 <Hiato> the other is somethiong that I am struggling with : modulus
21:05:51 <Hiato> *demonstration
21:05:59 <Hiato> *ssomething
21:06:06 <Hiato> typos :(
21:06:40 <oklopol> http://rafb.net/p/5rXz5d37.txt this baby
21:06:55 <Hiato> yeah
21:07:02 <Hiato> that's the explination of my algorithm
21:07:07 <Hiato> created by my algorithm
21:07:18 <Hiato> algorithm of text to BF that is
21:07:23 <oklopol> should i run it to understand?
21:07:26 <oklopol> umm...
21:07:29 <Hiato> yes
21:07:34 <Hiato> and, if you have the time
21:07:44 <Hiato> step through the first four .'s to understand it better
21:07:50 <Hiato> otherwise just run it
21:09:17 <oklopol> ah, that indeed is a nice algorithm
21:09:24 <Hiato> thanks :D
21:09:44 <oklopol> you could make it a bit better by identifying commonly used letters and putting them on the tape every now and then or something :-)
21:10:26 <oklopol> oh, right, i have to work on muture tonight
21:10:27 <Hiato> amm.. it already does that. It takes all the letters used in the text, and stores them on the tape, in ASCII order (ascending)
21:10:40 <Hiato> then iterates up and down displaying them in the correct order
21:10:45 <Hiato> muture?
21:11:26 <oklopol> would be awesome to get it to produce brainfuck text or solve the problem "how many knights can appear on a chessboard without threatening each other"
21:11:38 <oklopol> threaten is prolly not the word, i don't know chess terms in english
21:11:56 <Hiato> yes, threatening each other is the right word :)
21:12:09 <Hiato> what do you mean BF text?
21:12:18 <oklopol> brainfuck text would need either making the language tc or letting you insert python functions though
21:12:27 <oklopol> !bf_text_gen thing
21:12:29 <EgoBot> Huh?
21:12:30 <oklopol> !bf_txt_gen thing
21:12:31 <Hiato> aha
21:12:32 <oklopol> !bf_textgen thing
21:12:33 <EgoBot> Huh?
21:12:35 <EgoBot> Huh?
21:12:35 <oklopol> !bf_txtgen thing
21:12:37 <oklopol> !!!
21:12:39 <EgoBot> Huh?
21:12:40 <oklopol> :D
21:12:42 <Hiato> lol
21:12:43 <faxlore> !huh
21:12:45 <EgoBot> Huh?
21:12:45 <Hiato> wtf?
21:12:50 <Hiato> !Hello
21:12:51 <faxlore> Hhahaha
21:12:51 <EgoBot> Huh?
21:12:55 <Hiato> ROFL
21:13:01 <EgoBot> 60 +++++++++++++[>+++++++++>++++++++>><<<<-]>-.>.+.<------.>--. [100]
21:13:07 <Hiato> but seriously, wtf?
21:13:12 <oklopol> ?
21:13:32 <Hiato> is EgoBot a bot or what?
21:13:43 <oklopol> xD
21:13:45 <faxlore> Huh?
21:13:51 <Hiato> Duh?
21:13:54 <Hiato> no really
21:14:02 <oklopol> ofc it's not a bot
21:14:14 <Hiato> so why is he being so weird
21:14:17 <Hiato> !weird
21:14:19 <EgoBot> Huh?
21:14:33 <oklopol> he's a weird genius
21:14:38 <oklopol> never really talks
21:14:43 <Hiato> Yeha
21:14:51 <Hiato> and what's with the code that says thing
21:14:52 <Hiato> ?
21:14:52 <oklopol> just does amazing feats when asked to
21:15:05 <Hiato> EgoBot, please fix my modulus problem
21:15:09 <oklopol> generating bf code for that, just like yours
21:15:17 <oklopol> except with a different algo
21:15:31 <Hiato> woot
21:15:45 <Hiato> !bf_text_gen Hello, World!
21:15:47 <EgoBot> Huh?
21:15:56 <Hiato> !bf_text_gen Hello, World!
21:15:58 <Hiato> !bf_text_gen Hello, World!
21:15:59 <EgoBot> Huh?
21:16:01 <EgoBot> Huh?
21:16:02 <oklopol> !bf_txtgen Hello, world!
21:16:07 <Hiato> why won't he obey?
21:16:09 <Hiato> :P
21:16:11 <oklopol> he will
21:16:13 <oklopol> don't rush
21:16:38 <Hiato> roger
21:16:44 <Hiato> what other commands are there
21:16:45 <Hiato> ?
21:16:45 <EgoBot> 119 +++++++++++++++[>+++++>++++++++>+++++++>+++<<<<-]>---.>>----.+++++++..+++.>-.------------.<<-.>.+++.------.--------.>+. [292]
21:16:51 <oklopol> thank you, EgoBot
21:17:02 <Hiato> and which language is this puppy written in? :)
21:17:20 <oklopol> EgoBot only talks when immibis is here
21:17:26 <oklopol> don't know why
21:17:29 <Hiato> I see...
21:17:33 <Hiato> who made it?
21:17:36 <oklopol> i think EgoBot has a crush on him or something
21:17:44 <Hiato> lol
21:17:50 <oklopol> i don't understand your question! (grEGOrr)
21:18:04 <Hiato> Aha, woops
21:18:10 <Hiato> :D
21:18:21 <oklopol> umm.. GlassBot?
21:18:24 <oklopol> did i miss something?
21:18:34 <Hiato> yes, that is weird that he talks when immibis is here
21:18:46 <oklopol> !glass oko
21:18:49 <EgoBot> OK
21:18:53 <oklopol> ? :D
21:18:55 <Hiato> say wa?
21:19:00 <oklopol> !glass oko
21:19:03 <EgoBot> OK
21:19:08 <Hiato> what is oko?
21:19:16 <Hiato> !glass Hello World
21:19:19 <EgoBot> OK
21:19:23 <oklopol> "oko" is a basic oko
21:19:24 <Hiato> right....
21:19:33 <Hiato> which is what?
21:19:50 <oklopol> well, you know, the basic unit of okoing.
21:20:08 <oklopol> (except i guess the new standard would define that as "o")
21:20:09 <Hiato> yes, I am familiar with that (????)
21:20:15 <oklopol> :)
21:21:53 <oklopol> http://www.vjn.fi/210.htm
21:22:13 <oklopol> sorry, for some reason not all the articles on out awesome page have been indexed by google! :o
21:22:29 <Hiato> :(
21:22:32 <Hiato> :P
21:23:38 <Hiato> Hrmm... I fail to see.... WHY THIS HASN'T CAUGHT ON WVERYWHERE :P
21:23:41 <Hiato> *everywhere
21:23:57 <Hiato> naah, but really, surely oklotalk needed some attention....
21:23:58 <Hiato> ;)
21:25:33 <oklopol> wow, 96 articles
21:25:47 <oklopol> have to get to a hundred tonight
21:25:54 <oklopol> now reading ->
21:25:57 <Hiato> okokokokokokokokokoko
21:25:58 <Hiato> okokokokokokokokoko
21:25:58 <Hiato> okokokokokokokoko
21:25:58 <Hiato> okokokokokokoko
21:25:58 <Hiato> okokokokokoko
21:25:58 <Hiato> okokokokoko
21:26:00 <Hiato> okokokoko
21:26:02 <Hiato> okokoko
21:26:04 <Hiato> oko
21:26:06 <Hiato> o
21:26:12 <Hiato> Heh, enjoy
21:27:13 <Hiato> Oklopol, please oh pretty please translate your site into english ;)
21:27:35 <faxlore> okokokokok
21:29:04 <Hiato> DORK & DOOMED ADVENTURES CARD GAME is awesome :D
21:29:06 -!- Hiato has left (?).
21:29:13 -!- Hiato has joined.
21:39:36 -!- Hiato has left (?).
21:41:29 -!- puzzlet has quit (Remote closed the connection).
21:41:32 -!- puzzlet has joined.
22:04:15 <oklopol> *our awesome page
22:24:55 -!- Hiato has joined.
22:25:51 <Hiato> how can ehird` still be asleep ??!
22:25:58 <Hiato> I need his BF genius...
22:26:15 * Corun has BF genuis
22:26:21 <Hiato> OK!
22:26:31 <Hiato> Right Corun, can you help me?
22:26:43 <Corun> Possibly
22:26:54 <Hiato> It's as good as a yes ;)
22:26:58 <Hiato> Ok, here is my problem..
22:28:20 <Corun> I'm a bit rusty with bf, but I've done plenty in the past
22:28:31 <Hiato> I need to move the IP to a fixed location, but, it can reside in one of two places, ie this is one possibility 1 x 2 0 where x is a number and the IP is at the 0, or it could be 1 0 1 0 where the IP is at the 1st zero
22:28:34 <Hiato> either wau
22:28:35 <Hiato> *way
22:28:57 <Hiato> I would like to move it, irrespective of position, to a specific place (I don't care where)
22:29:11 <Hiato> +>>+++++[<+++++++>-]
22:29:11 <Hiato> <[ [-[-[-[>[-]++>] <<+>>] <<+>>] <<+>>] < [-<--->>] <<]
22:29:14 <oklopol> Hiato: 1. not my page, i'm a part-owner 2. a lot of the content is in english 3. you can't know how awesome dork & doomed is, for the rules are currently in english
22:29:29 <oklopol> but i'll translate them some day, possibly
22:29:42 <Hiato> for this programme (it's trying 35 modulus 3)
22:30:39 <Hiato> oklopol: 1. Aha, sorry ;) 2. Yes, true, I know I was quick to jump to conclusions, but the articles that I saw where part finish 3. I'm not sure I understand what you are saying
22:30:51 <oklopol> Hiato: just have content of tape be every second cell, and put a 0 where you need to go, and 1's everywhere else
22:30:55 <Hiato> So, Corun, is it curable?
22:31:01 <Corun> I... have no idea
22:31:09 <Hiato> ... meh :(
22:31:22 <oklopol> oh, IP
22:31:27 <oklopol> that's of course impossible
22:31:35 <Corun> Er.. Maybe my BF is off.. But, "IP"?
22:31:47 <Hiato> Instruction Pointer
22:31:55 <Hiato> blah, it's probably wrong terminology
22:32:00 <Hiato> the thingy on the Tape, the head
22:32:05 <Corun> Ah. Ok, everything makes much more sense
22:32:08 <oklopol> memory pointer possibly
22:32:11 <oklopol> instructions are the code.
22:32:23 <Hiato> true... woops :(
22:32:25 <oklopol> Hiato: *are currently in finnish
22:32:42 <Hiato> aha
22:32:45 <Corun> Well, then, you can't do it :-)
22:32:49 <Hiato> makes more sense now, then I agree
22:32:49 <oklopol> anyway, i told you how to solve the problem already, unless i misunderstood you
22:32:53 <Hiato> Corun: NOOOOOO.....
22:33:04 <Hiato> yes, I got it
22:33:08 <oklopol> good
22:33:21 <Hiato> but I hoped for divine intervention :P
22:33:32 <Hiato> in which case, oklopol, you have proven yourself wrong
22:33:34 <Corun> I'm currently running a haskell program which generates and runs bf :-)
22:33:42 -!- RedDak has quit (Remote closed the connection).
22:33:55 <Hiato> as it is impossible to do the 1 cell simulation using 4 cells
22:33:58 <oklopol> Corun: the competition faxlore is doing?
22:33:58 <Hiato> you need five....
22:34:09 <Hiato> Awesome stuff Corun
22:34:12 <Corun> He didn't tell me it was a competition, he just said "fix my code"
22:34:15 <Hiato> what does it make?
22:34:16 <Corun> :-)
22:34:18 <oklopol> oh :D
22:34:22 <Hiato> lol :D
22:34:37 <Corun> :-P What competition, then?
22:34:42 <Hiato> so oklopol, so much for never being wrong eh :P
22:34:44 <faxlore> Corun I'm sure you know the competition
22:34:47 <oklopol> i thought faxlore mentioned something like that
22:34:49 <faxlore> Corun, For example, you entered it
22:34:52 <Hiato> he did
22:34:52 <faxlore> :p
22:35:02 <Corun> Oh, the string program generating one?
22:35:02 <oklopol> :D
22:35:07 <faxlore> yes
22:35:10 <faxlore> this is slightly different
22:35:15 <Corun> What is it this time?
22:35:49 <faxlore> well instead of taking a string and printing a short program.. we get a dictionary of strings with shortest programs
22:36:00 <oklopol> again ->
22:36:32 <Corun> Generate an entire dictionary of shortest programs?
22:37:01 <Corun> My old program would take, like, seconds per word... It would take ages :-)
22:38:26 <Corun> So, why are you making this program, then?
22:39:01 <Corun> Oh, balls, I just realize that program I pasted you isn't quite right
22:40:16 <Corun> Oh, maybe it was
22:40:59 <Hiato> ok, returning briefly yet inconspicuously to my BF problem +>>+++++[<+++++++>-] <[ [-[-[-[>[-]++>] <<+>>] <<+>>] <<+>>] < [-<--->>] <<] : How would one make it possible?
22:41:12 <Hiato> or if not, then how would one do a modulus
22:41:22 <Hiato> (in as few cells as possible)
22:42:55 <faxlore> Hiato.. What are you doing with that?
22:42:59 <faxlore> modulus?
22:43:04 <Hiato> yes
22:43:07 <Hiato> modulus 3
22:43:15 <Hiato> 35 modulus 3 = 2
22:43:23 <Hiato> the programme should say
22:43:34 <faxlore> ok I understand
22:43:50 <Corun> Seems like the sort of thing that bf would be good at...
22:44:20 <Corun> !bf +++++++++++++++[->+++++>++>+++++++>++++++++>++++>+++<<<<<<]>--.>++.>-----.>---.-------..+.<<.>>>--.>++.
22:44:23 <EgoBot> I dunno :/
22:44:28 <faxlore> haha
22:44:58 <Hiato> lol
22:45:47 <Hiato> !bf >>++++[<++++++++>-]>++[<+++++++++++++++++++++++>-]>+++++++[<++++++++++++>-]<[>+>
22:45:48 <Hiato> +<<-]>>[<<+>>-]<+++++++++++++[>+>+<<-]>>[<<+>>-]<+[>+>+<<-]>>[<<+>>-]<+++[>+>+<<
22:45:48 <Hiato> -]>>[<<+>>-]<++[>+>+<<-]>>[<<+>>-]<+[>+>+<<-]>>[<<+>>-]<+[>+>+<<-]>>[<<+>>-]<+++
22:45:48 <Hiato> [>+>+<<-]>>[<<+>>-]<+++[>+>+<<-]>>[<<+>>-]<+[>+>+<<-]>>[<<+>>-]<+++[>+>+<<-]>>[<
22:45:48 <Hiato> <+>>-]<+[<]>>>.>>>>>.>.>>>>.<<<<<<<<<<<<.>>>>>>>.<<<<.>>>>>>>>>.<<<<<<<<<<<<.>>>
22:45:49 <Hiato> >>>.>>>>.>>>.<<<<<<<<<<<<<.>>>>>>>>>>>>>.<<<.<<<<<<<<<<.>>>>.>.<<<<<.>>>>>>>>>>>
22:45:50 <Hiato> .<.>>..<<<<.<<<<.>>>>>.<<<<.<<<<....
22:46:17 <Corun> !bf +++++++++++[->++++++>+++>++++++++++>+++++++++<<<<]>.>>+.+++++.-.<-.>.++.>.++++++++.
22:46:21 <EgoBot> Bots suck
22:46:22 <Hiato> blah, I don't think egoBot likes multilines
22:46:30 <faxlore> !huh
22:46:33 <EgoBot> Huh?
22:46:37 <faxlore> :DD
22:46:43 <Corun> Heh
22:46:50 <Hiato> !bf >>++++[<++++++++>-]>++[<+++++++++++++++++++++++>-]>+++++++[<++++++++++++>-]<[>+>+<<-]>>[<<+>>-]<+++++++++++++[>+>+<<-]>>[<<+>>-]<+[>+>+<<-]>>[<<+>>-]<+++[>+>+<<-]>>[<<+>>-]<++[>+>+<<-]>>[<<+>>-]<+[>+>+<<-]>>[<<+>>-]<+[>+>+<<-]>>[<<+>>-]<+++[>+>+<<-]>>[<<+>>-]<+++[>+>+<<-]>>[<<+>>-]<+[>+>+<<-]>>[<<+>>-]<+++[>+>+<<-]>>[<<+>>-]<+[<]>>>.>>>>>.>.>>>>.<<<<<<<<<<<<.>>>>>>>.<<<<.>>>>>>>>>.<<<<<<<<<<<<.>>>>>>.>>>>.>>>.<<<<<<<<<<<<<.>>>>>>>>>>>>>.
22:46:53 <EgoBot> This has got t
22:47:11 <Hiato> hrmm... he didn't finish the sentence
22:47:29 <Hiato> !Huh?
22:47:31 <EgoBot> Huh?
22:47:50 <Corun> !bf +++++++++++[->+++>++++++++>++++++<<<]>---.>++.++++.<-.>>.<-.+++.---.
22:47:53 <EgoBot> Z^B]`]
22:48:01 <Corun> Oops
22:48:03 <Hiato> !d
22:48:05 <EgoBot> Huh?
22:48:09 <Hiato> he spoke for me
22:49:00 <Corun> !bf ++++++++++++++[->++>+++>++++>+++++++><<<<<]>+++++.>>>.++++.<<<-.>+............>>-----------.<<++.>++++++.<--......>.<........>.<..........>--...>++.<++.<+++.>.<---.+++.>.<.
22:49:03 <EgoBot> !bf ++++++++++++[->++++++>++++++++>++++++++++<<<]>.>+.>.
22:49:14 <Hiato> Wicked :D
22:49:17 <Corun> Aww... No fun.
22:49:25 <Corun> He doesn't respond to his own messages :/
22:49:41 <Hiato> lol
22:49:50 <Hiato> sucks actually :(
22:50:04 <Hiato> !bf >>++++++[<+++++++++++>-]<[>+>+<<-]>>[<<+>>-]<+++++++++++++++++++++++++++++++>>++++++++[<+++++++++++++>-]<[>+>+<<-]>>[<<+>>-]<++++[<]>.>>>.<<.>.
22:50:07 <EgoBot> Blah
22:50:11 <Hiato> exactly
22:50:24 <Hiato> He knows how I feel.... it's uncanny.... :P
22:50:37 <Corun> !bf +++++++++++++[->+++++>++++++++<<]>+.>++++.-----------.+++++++.
22:50:39 <EgoBot> Blah
22:50:41 <Corun> Mine's shorter :-P
22:50:44 <Hiato> yip
22:50:52 <Hiato> but, mine is shorter for longer things
22:50:57 <Hiato> and I'll prove it
22:51:04 <Corun> Oh?
22:51:09 <Hiato> you do the Mandelbrot Set
22:51:12 <Hiato> using your algo
22:51:23 <Hiato> and I'll do it using mine, then we compare
22:51:26 <Corun> Er, well, I'd need an ascii mandelbrot set
22:51:34 <Hiato> as is provided by me
22:51:37 <faxlore> use the output of mandel.b
22:51:39 <Hiato> 1 sec
22:51:41 <Hiato> exactly
22:51:42 <faxlore> mandelbrot.b
22:51:44 <Corun> Though, that's not exactly a great example of some text...
22:51:49 <faxlore> Yes it is
22:51:58 <faxlore> It's so compressed
22:52:03 <faxlore> compared to the complexity of the output
22:52:24 <Corun> But but but, what if his is shorter? I need an excuse, just incase it happens
22:52:31 <Hiato> http://rafb.net/p/NJOzUw38.html
22:52:33 <Hiato> there you go
22:52:50 <Hiato> with line numbers, run it, capture the output, and use your algo
22:52:55 <Hiato> lol
22:52:56 <Hiato> :D
22:53:35 <faxlore> hey
22:53:41 <faxlore> that's not manbelbrot.b
22:53:43 <Hiato> yes...
22:53:46 <Hiato> isn't it?
22:53:50 <faxlore> it might output the same text
22:54:00 <Hiato> I know
22:54:09 <Hiato> I said it's Poor man's mandelbrot
22:54:11 <Hiato> :P
22:54:15 <faxlore> for comparison http://www.menuetos.net/mandel.txt
22:54:21 <Hiato> Pasted as Plain Text by Hiato [ Remove line numbers | Show as plain text | Create new paste ] Description: Poor mans Mandelbrot
22:54:31 <Hiato> I never claimed it to be mandel.b
22:54:38 <Hiato> I just captured the output from it though
22:55:25 <Hiato> faxlore...
22:55:58 * faxlore is trying to write %3 >_<
22:56:12 <Hiato> thanks :)
22:57:28 <oklopol> -[>+<-[>+<-[>--<]]]> or something?
22:57:41 <Hiato> hrmmm?
22:57:58 <oklopol> if you remove transformations of the cell above
22:58:11 <oklopol> whoops
22:58:25 <faxlore> hey I think I did it
22:58:31 <faxlore> yeah just like oklopol
22:58:35 <Hiato> really?
22:58:36 <faxlore> >+++++[<+++++++>-]< 35#
22:58:36 <faxlore> [>+<-
22:58:36 <faxlore> [>+<-
22:58:36 <faxlore> [>+<-]]>---<]
22:58:38 <oklopol> except mine has a bug
22:58:41 <Hiato> show show
22:58:42 <oklopol> but the idea is right.
22:58:42 <faxlore> the output is 3 - 35%3
22:58:44 <Hiato> cool
22:58:52 <faxlore> so I get 1 instead of 2
22:59:03 <faxlore> I'm not sure how to fix it
22:59:11 <oklopol> simple
22:59:12 <faxlore> oops
22:59:20 <faxlore> I meant [>+<-]]>---<]>
22:59:22 <faxlore> for the last line
22:59:24 <oklopol> so simple i won't even tell ya
22:59:49 <oklopol> (reverse the operations and have an initial value)
23:00:21 <faxlore> hmm actually I could be wrong
23:00:37 <Corun> Ok, mine's, er, generating
23:00:47 <oklopol> let's see...
23:00:47 <Hiato> sure Corun
23:00:58 <Corun> I dunno how long it'll take
23:01:01 <Corun> Shouldn't be too long, though
23:01:05 <Corun> I've done big things with it before
23:01:08 <Corun> A few minutes I guess
23:01:11 <Hiato> if you (faxlore) or oklopol crack this
23:01:18 <Hiato> I will be ver so grateful
23:01:22 <oklopol> ah, there's a minor problem
23:01:25 <Hiato> sure Corun
23:01:29 <oklopol> it will never get off the inner loop
23:02:00 <Hiato> yes, I had a similar problem, but then found that it went to far if it skipped certain parts....
23:02:17 <oklopol> [>+<-[>+<-[>--<-<]]>]
23:02:39 <oklopol> i'll just fire an interp, too tired for this
23:03:11 <Hiato> oklopol, I'm not sure your code is functional....
23:03:52 <oklopol> hmm... shouldn't be this hard :D
23:04:01 <Hiato> Haha
23:04:05 <faxlore> grr!
23:04:35 <Hiato> exactly
23:04:56 <Corun> http://rafb.net/p/pnWQUD68.html
23:04:57 <Corun> Er, oh
23:05:40 <Hiato> Corun
23:05:48 <Hiato> could you please column wrap that at 80
23:05:53 <Hiato> so we can compare :)
23:06:02 <Hiato> and its not C++ :P
23:06:31 <Corun> -rw-r--r-- 1 Corun Corun 12536 11 Jan 22:53 mb.bf
23:06:31 <Corun> -rw-r--r--@ 1 Corun Corun 8610 11 Jan 23:06 mymb.bf
23:06:34 <oklopol> finally
23:06:35 <oklopol> >>+++++++[>+<-[>+<-[>--<-<<]]>>]
23:06:35 <Corun> :-P
23:06:42 <oklopol> sorry, i did some utter failing here
23:06:54 <Corun> mb is yours, mymb is mine :-)
23:07:22 <Hiato> blah
23:07:26 <Hiato> ok you win :(
23:07:29 <Hiato> well done :D
23:07:48 <Corun> I spent loads of time on it, ages ago
23:07:50 <oklopol> [>+<-[>+<-[>--<-<<]]>>]< Hiato: starting from the moduled number, this puts the right value in the next cell
23:07:55 <oklopol> uses 4 cells though :\
23:08:07 <Hiato> :(
23:08:13 <Hiato> but Hey very well done :D
23:08:16 <oklopol> uses 4 cells and leaves in a fifth cell...
23:08:16 <Hiato> congratulations
23:08:17 <Hiato> LD
23:08:20 <Hiato> :D
23:08:24 <faxlore> ahh
23:08:26 <Hiato> blah
23:08:27 <faxlore> wow, well done
23:08:29 <Hiato> no worries
23:08:31 * faxlore couldn't get it!
23:08:45 <oklopol> 0 0 8! 0 0 -> 0 0 0 2 0!
23:08:48 * Hiato couldn't either
23:08:52 <Hiato> awesome
23:09:17 <oklopol> before being totally awed, test for yourself, i always fail at everything
23:09:20 <oklopol> now some reading ->
23:09:24 * faxlore tested it :p
23:09:38 <Hiato> yes, it workd
23:09:40 <Hiato> *works
23:17:47 <Hiato> oklopol
23:18:04 <Hiato> I don't know why you did something strange there, but it only uses 2 cells now: [>+<-[>+<-[>--<->]]<]
23:18:46 <Hiato> well 3 really
23:18:53 <Hiato> but because it lands in it
23:19:10 <Hiato> after the loop
23:23:08 <Hiato> oh and PS: Now it is possible to do a 3 cell version
23:23:10 <Hiato> I think
23:25:53 <Hiato> hrmm.. well, you can do a three cell version, it just means that you won't be able to raise anything after the first number, you'll have to multiply
23:26:01 * tesseracter waves at pikhq
23:26:16 <pikhq> ;(
23:27:05 <tesseracter> pikhq: this is scary. cross
23:28:38 <Hiato> no, wait, you need 3 cells...
23:28:40 <Hiato> *4
23:31:10 -!- puzzlet has quit (Remote closed the connection).
23:31:13 -!- puzzlet has joined.
23:31:38 <Corun> !bf ++++++++++++++++[->++>++++++>+++++++><<<<]>>++.++++.<.>+++.>+++.<<.>------.++.+++++++..>++.<.-----------.>---.<<+.
23:31:41 <EgoBot> bf is cellular!
23:32:29 <tesseracter> EgoBot supports bf? tell me more!
23:32:46 <Hiato> !bf_txtgen Yip
23:33:03 <Corun> !bf +++++++++++[->+++>++++>++++++++>+++++++++>++++++++++>+++++++++++><<<<<<<]>>>-.>++.>--..<<<.<-.>>>>>.<+++.>----.<<<<<.>>>-.>.<<<++++++++++++++.<.+.>>>--.++++.<<<-.>>++++.>>>--.<.--.<-.<<<.>>>---.++++.<++.<<.>>++++.>>+.<--.<<<.>>>+++++.>>+.<<<<<.>>>>>--.+++.<.>--.<<<<<.>>>.>>+.
23:33:05 <EgoBot> Well, you do: !bf [some bf] and it runs it
23:33:15 <EgoBot> 52 +++++++++++++++[>++++++>+++++++>><<<<-]>-.>.+++++++. [95]
23:33:28 <Hiato> !bf +++++++++++++++[>++++++>+++++++>><<<<-]>-.>.+++++++.
23:33:31 <EgoBot> Yip
23:36:56 <tesseracter> !bf_txtgen /me
23:37:19 <EgoBot> 51 ++++++++++++[>++++>+++++++++>><<<<-]>-.>+.--------. [84]
23:37:48 <faxlore> !bf +[+.]
23:37:51 <EgoBot>
23:38:23 -!- EgoBot has quit (Excess Flood).
23:38:31 <tesseracter> pwnd :-(
23:38:33 -!- EgoBot has joined.
23:40:31 <Hiato> hhaha lol :D
23:48:48 -!- Corun has quit ("This computer has gone to sleep").
23:58:18 <tesseracter> experiment.
23:58:26 * tesseracter waits.
2008-01-12
00:00:14 <tesseracter> hmm, for a moment there it was like being at the guillotine, and lighting the rope that holds the blade up on fire, waiting to see if it burns thru.
00:00:15 <tesseracter> well, maybe not that drastic.
00:11:36 <oklopol> Hiato: didn't realize the modulo place is zero after it's nulled.
00:11:39 <oklopol> :)
00:12:51 <oklopol> uhh shouldn't tell where i am in a book in irc, it's kinda disappointing to see how slow i am :)
00:13:18 <oklopol> i've read 47 pages in 5 hours
00:16:46 -!- Hiato has quit (Read error: 110 (Connection timed out)).
00:25:45 -!- Jontte has quit (Read error: 113 (No route to host)).
00:27:13 -!- GreaseMonkey has joined.
00:27:36 -!- timotiis has quit ("leaving").
00:47:20 -!- jix has quit ("CommandQ").
01:01:46 <oklopol> interesting
01:02:28 <oklopol> ((p1 p2) d) seems to equal (p1 (p2 d)), where application means permutation by a list of indices
01:02:38 <oklopol> *indexes
01:03:25 <oklopol> seems a bit redundant to reinvent permutations fully just because i'm too lazy to search for them on the web :DD
01:03:37 <oklopol> whhhell, continuing ->
02:11:08 -!- ihope has joined.
02:13:15 <ihope> Ello ello ello.
02:13:58 <oklopol> AYEE
02:14:40 <ihope> Ello to you to.
02:14:51 <ihope> For definitions of "to" that make sense here.
02:15:32 <oklopol> i was too busy trying to find a pun about "h", but that kinda killed it.
02:15:40 <oklopol> "here" that is
02:15:55 <oklopol> not a pun really... what's the more generic thing...
02:15:59 <oklopol> joke i guess
02:22:03 <oklopol> half the time i ask something on #scheme, an #esotericer answers ;=)
02:43:42 -!- sebbu2 has joined.
02:54:04 -!- ihope has quit (Read error: 110 (Connection timed out)).
02:58:22 -!- CakeProphet has joined.
02:58:22 -!- sebbu has quit (Read error: 110 (Connection timed out)).
02:58:32 <CakeProphet> :o
02:59:50 <oklopol> :i
03:01:30 <CakeProphet> hmmm
03:01:35 <CakeProphet> I think I shall make another language like dupdog
03:01:44 <CakeProphet> but like... with more uses.
03:02:40 <oklopol> (wrong answer, the correct one was of course ":z")
03:02:51 <oklopol> but go for it
03:03:49 <CakeProphet> ...no clue how that could happen though
04:21:15 -!- CakeProphet has quit ("haaaaaaaaaa").
04:55:43 -!- RodgerTheGreat has joined.
04:55:48 <RodgerTheGreat> how's everyone doing?
05:06:15 <GreaseMonkey> yay it's RodgerTheGreat! \o/
05:06:20 <RodgerTheGreat> :D
05:06:26 <RodgerTheGreat> what's up, greasemonkey?
05:06:29 <RodgerTheGreat> missed me?
05:07:32 <GreaseMonkey> yeah
05:07:33 <GreaseMonkey> kinda
05:07:54 <GreaseMonkey> my bot will need some testing soon - i'm coding in this game...
05:08:10 <GreaseMonkey> http://en.wikipedia.org/wiki/Mafia_%28game%29
05:08:42 <RodgerTheGreat> oh, dude- you should try a game I've been playing with! I just put together a working demo: http://rodger.nonlogic.org/games/CRPG/
05:09:18 <GreaseMonkey> um, my java VM isn't working.
05:09:21 <GreaseMonkey> :(
05:09:37 <RodgerTheGreat> D:>
05:09:42 <RodgerTheGreat> in what way?
05:23:02 <GreaseMonkey> it won't load, i think i installed it wrong.
05:24:05 <RodgerTheGreat> :S
05:24:19 <RodgerTheGreat> have you tried reinstalling?
05:24:33 <GreaseMonkey> RodgerTheGreat, i had to manually copy the files
05:24:46 <GreaseMonkey> though i could try and get it to work...
05:24:57 <RodgerTheGreat> that's really strange- didn't sun's site have a self-extractor?
05:25:19 <RodgerTheGreat> I highly encourage you to play with it for a bit- CRPG won't disappoint!
05:25:39 -!- veritos has joined.
05:25:52 <veritos> Can someone output this line for me?
05:26:18 <GreaseMonkey> it's got a self-extractor but no automatic *browser install*
05:27:11 -!- veritos has quit (Client Quit).
05:27:20 <pikhq> ERROR: NO IRP PERMITTED.
05:27:21 <RodgerTheGreat> veritos: Can someone output this line for me?
05:27:34 <pikhq> PERMISSION ERROR. DO NOT DO AGAIN.
05:27:35 <RodgerTheGreat> whoops, didn't make it a quine
05:27:37 <pikhq> CEASE AND DESIST.
05:27:44 <RodgerTheGreat> so sad
05:27:55 <pikhq> MURDER IS RECOMMENDED.
05:27:58 <pikhq> ;p
05:28:49 <RodgerTheGreat> in all honestly, joining the channel ENTIRELY to try out IRP is what we IRP interpreters refer to as a "dick move"
05:29:34 * pikhq protests IRP
05:29:49 <pikhq> [Can someone please protest IRP?]
05:30:10 <RodgerTheGreat> IRP ERROR: FATAL HYPOCRISY.
05:30:31 <pikhq> :D
05:35:56 <oklopol> [>+<-[>+<-[>--<->]]<] => [->+<[->+<[->--<]]<] of course.... it's normal to wake up and realize a bf program you saw earlier was not as short as possible?
05:36:03 <oklopol> right?
05:36:37 <oklopol> couldn't go back to sleep without fixing it, and now i have to read the logs
05:36:39 <oklopol> glah
05:36:46 <oklopol> life is so hard
05:37:18 <RodgerTheGreat> I've had way too many dreams/nightmares of coding
05:38:56 <RodgerTheGreat> I've determined that if i do anything for about 6 hours straight before I go to sleep, I dream about that activity. This has happened with starcraft, tetris, chess, drawing comics, various TV shows and movies and coding.
05:39:14 <oklopol> indeed, but this was quite interesting, i actually didn't give any thought to that program (although i did write the original version), and i was just falling asleep when i realized there's a redundant ">"
05:39:15 <oklopol> oh
05:39:19 <oklopol> now there's a typo.
05:39:39 <oklopol> [->+<[->+<[->--]]<]
05:39:46 <oklopol> was supposed to remove that too
05:39:57 <oklopol> would prolly have come back again soon ;)
05:40:28 <oklopol> starcraft: awesome, tetris: awesome
05:42:13 <oklopol> hmm, i now realize i lay on my bed for about 1.5 hours :D
05:42:20 <RodgerTheGreat> starcraft was indeed awesome. One of my dreams about Quake 2 was pretty fun as well. The tetris one was exhausting.
05:42:42 <oklopol> no wonder i fixed that bf prog.
06:16:24 <RodgerTheGreat> cya folks
06:16:32 -!- RodgerTheGreat has quit.
06:49:28 -!- Corun has joined.
06:51:57 -!- oerjan has joined.
06:54:03 -!- Corun has quit (Client Quit).
07:10:29 -!- puzzlet has quit ("Lost terminal").
07:13:17 -!- puzzlet has joined.
07:30:08 -!- oerjan has quit ("leaving").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:34:43 -!- Jontte has joined.
08:46:38 -!- puzzlet has quit (Remote closed the connection).
08:46:43 -!- puzzlet has joined.
08:52:48 -!- 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. Man who run behind car get exhauste).
09:39:19 -!- sebbu has joined.
09:55:38 -!- sebbu2 has quit (Read error: 110 (Connection timed out)).
10:25:45 -!- slereah_ has quit (Remote closed the connection).
10:37:55 -!- Slereah has joined.
10:52:03 -!- timotiis has joined.
10:57:51 -!- Slereah has quit (Remote closed the connection).
11:37:58 -!- slereah_ has joined.
11:55:18 -!- pgimeno has joined.
11:57:31 <pgimeno> I'm experiencing a database problem with the wiki, could someone please check if it's just me? http://esoteric.voxelperfect.net/wiki/Kayak
11:59:08 <slereah_> It's not just you.
12:02:50 <pgimeno> Thanks, slereah_
12:07:22 -!- slereah_ has changed nick to Slereah.
12:11:52 -!- jix has joined.
12:46:42 <pgimeno> Hm, the article is not lost: http://esolangs.org/w/index.php?title=Kayak&oldid=7834
13:24:48 -!- Jontte has quit ("Konversation terminated!").
13:36:41 -!- pgimeno has left (?).
14:08:21 -!- oerjan has joined.
14:11:10 <oerjan> nothing wrong with the Kayak page now that i can see
14:11:32 <oerjan> these database problems happen now and then. usually reloading fixes them.
14:32:14 -!- RodgerTheGreat has joined.
14:32:20 <RodgerTheGreat> hey everyone
14:32:42 <faxlore> Hi
14:34:13 <oerjan> 'afternoon
14:41:13 <Slereah> Hi.
14:47:58 -!- oerjan has quit ("leaving").
14:53:12 <RodgerTheGreat> I had another one of those videogame dreams last night. I was playing a game I *knew* was a sequel to gears of war, but it was exactly like Outpost 2 (an RTS) except in a jungle setting. I did this really tough "escort 150 people" mission, and then when I came back to my base it was largely destroyed by an earthquake or something. Then I realized I never had any ConVecs or Earthworkers, and I didn't have a vehicle factory so I was completely screw
14:54:02 <RodgerTheGreat> (convecs are truck-like things used to build structures in Outpost 2)
14:55:57 <RodgerTheGreat> It was still better than dreaming about tetris for 8 hours.
14:58:34 <RodgerTheGreat> I'm still really confused about the gears of war part, because I've never even played that game. :S
15:17:33 -!- ihope has joined.
15:30:10 -!- jix__ has joined.
15:30:12 -!- jix has quit (Nick collision from services.).
16:50:34 -!- Sgeo has joined.
17:15:19 <SimonRC> RodgerTheGreat: you dreamt about tetris fo r8 housr?
17:15:28 <SimonRC> If they become physically disabled they move to work that is not affected by
17:15:28 <SimonRC> such disabilities. At the extreme, those who are completely paralysed can work
17:15:31 <SimonRC> completely using cybernetics. However, many such injuries can be repaired with
17:15:34 <SimonRC> their medical technology or will just heal.
17:15:37 <SimonRC> um
17:15:38 <SimonRC> wrong button
17:15:40 <SimonRC> oops
17:15:58 <SimonRC> copid from elsewhere
17:17:07 <RodgerTheGreat> lol
17:17:43 <RodgerTheGreat> I dunno if I dreamt for 8 hours, but I slept for 8 hours and woke up tired as hell. It seemed to go on forever
17:18:07 <oklopol> they say it's physically impossible to dream for that long
17:18:26 <RodgerTheGreat> yes, generally REM sleep occurs for periods of 30 minutes
17:18:29 <oklopol> but i've had dreams where i remember incidents from a whole week just from one night's sleep.-
17:18:32 <SimonRC> psychologically, maybe, but not physically
17:18:56 <oklopol> but, i prolly just make the details up when trying to remember them.
17:19:13 <oklopol> hmm... i doubt psychologically is the right term either
17:19:16 <RodgerTheGreat> my point was that it *felt* like 8 hours, although it's exceedingly unlikely that's how long it actually lasted
17:19:36 <oklopol> indeed, just being anal because it's more tight.
17:20:14 * SimonRC get temporarily confused from the appearance of "anal" and "tight" in the same sentance
17:20:25 * SimonRC tpye crappy
17:20:35 <RodgerTheGreat> I think that was intentional
17:20:56 <oklopol> well i never! :O
17:21:18 <oklopol> that saying doesn't work in writing.
17:21:38 <SimonRC> which saying?
17:22:59 <RodgerTheGreat> the anal thing or "Well, I *never*!"
17:23:52 <oklopol> letter.
17:23:54 <oklopol> *latter
17:24:30 <oklopol> i guess it does work
17:24:34 <oklopol> just never seen it.
17:24:40 <RodgerTheGreat> I dunno, it works alright with appropriate punctuation to convey emphasis and cadence
17:25:12 <oklopol> yeah
17:26:48 <RodgerTheGreat> writing leaves out a great deal of the information conveyed in speech, so it's necessary to add those things back in for some phrases to make sense. It's a little like the reason emoticons are useful.
17:29:41 <oklopol> indeed. i prefer the way lojban does this though
17:30:05 <oklopol> that is, integrate stuff like that into the language itself
17:30:14 <ihope> The only word of Lojban I currently remember (other than "lojban") is .ii.
17:31:09 <oklopol> i didn't remember that
17:31:25 <oklopol> not that i've studied the lang much
17:31:54 <RodgerTheGreat> I dunno, english has adapted to all kinds of syntactic patches and markup pretty well
17:32:12 <RodgerTheGreat> English is an always will be the native tongue of the internet
17:32:15 <RodgerTheGreat> *and
17:32:33 <RodgerTheGreat> man, I could've tried to play that off as an accent...
17:34:41 <oklopol> english might be the native tongue of the internet out of backwards compatibility, but i won't agree it's a good language still.
17:35:41 <oklopol> (LALNA, people, LALNA)
17:36:08 <oklopol> (actually, that might not work as well as in the case of oklotalk and graphica, since i geuss i haven't mentioned it much.)
17:36:23 <oklopol> (anyway, it's awesome, awesome i tells ya)
17:37:26 <ihope> LALNA?
17:38:01 <oklopol> a conlang of mine
17:38:13 <oklopol> a work-in-progress of course, like i'd ever finish anything.
17:38:17 <ihope> Also, people really should be careful when saying "will always be".
17:38:23 <oklopol> indeed.
17:38:53 <oklopol> because there's always the idiot who'll say "YOU CAN'T KNOW THAT" ;-)
17:39:14 <oklopol> s/idiot/big meanie
17:39:53 <RodgerTheGreat> ihope: granted
17:40:27 <ihope> In the future, maybe we'll all speak our own languages and our computers will translate for us.
17:40:29 <RodgerTheGreat> what I meant is "will be for a very long time and the forseeable future"
17:40:36 * ihope nods
17:40:51 <ihope> Maybe we'll all speak a language that our computers can actually understand. :-P
17:41:05 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
17:41:12 <oklopol> my view of the future is we're all going to die soon and robots take over the world, so hard to have a serious debate on the subject.
17:41:28 <oklopol> and i'm actually being serious here :)
17:41:28 <RodgerTheGreat> I think we should overload the word "always" to mean something more along those lines, because that's generally what people mean when they use it.
17:42:02 <oklopol> we could do what lalna does and just add the module to the lalna wiki
17:42:06 <RodgerTheGreat> depends on if you mean "soon" in a cultural, evolutionary or geological sense
17:42:24 <oklopol> you could allocate the module rtgia and add that term
17:42:39 <oklopol> people who know you could then learn the module rtgia.
17:42:52 <oklopol> uhhh, i love lalna <3
17:43:09 <oklopol> RodgerTheGreat: 15-100 years
17:44:23 <RodgerTheGreat> 100 years, I can see a remote possibility. 15 years, not a fucking chance. I will bet my CS degree that strong AI will not exist in any practical sense within 15 years.
17:45:07 <oklopol> i hope you're right, and i hope i'll feel the same way after really starting to research ai.
17:45:24 -!- slereah_ has joined.
17:46:07 <RodgerTheGreat> I have some experience, and it's one of my areas of interest. I'm not saying I'm not going to try to help strong AI become a reality, but it'd be a tremendous leap from what we can do now.
17:47:18 <oklopol> well, not only that, i also have my own theory why seed ai doesn't work as a concept
17:47:34 <oklopol> so, when i think about it, it seems ridiculous, but it's my underlying view, and that's hard to change :D
17:47:53 <ihope> What's seed AI?
17:48:26 <oklopol> the idea that an ai that owns humans at thinking could start reproducing better and better versions of itself
17:48:48 <ihope> Why doesn't it work?
17:48:49 <oklopol> exponentially growing in intelligence
17:48:59 <oklopol> i'll write an article tonight, you can read it.
17:49:04 <ihope> Okay.
17:49:19 <oklopol> i don't have much thoughts, and they're not that great, so i'll not use them up here, i need articles you see :)
17:49:52 * ihope shrugs
17:51:30 <RodgerTheGreat> well, here's my logic: Humans have extreme difficulty replicating human intelligence, and I think we can agree that a single human is not capable of this at all. Therefore, if humans create an AI with human intelligence, even IF it has some augmented capabilities (perfect memory, really fast at math, multitasking, etc assuming these are even possible within the AI design we come up with), it won't magically be able to build better AIs
17:52:29 <oklopol> well, that's essentially the idea.
17:52:33 <RodgerTheGreat> I think we'll find that many of the properties that make computers better at what humans are naturally good at will turn out to be a tradeoff sacrificing the things that computers are normally better at
17:54:53 <oklopol> also, a point about what it means to reproduce a human brain in functionality
17:55:22 <oklopol> it's widely believed (TM) that humans were capable of everything they can do today already tens of thousands of years ago
17:55:29 <oklopol> (i base this on a movie.)
17:55:51 -!- Sgeo has quit (Read error: 110 (Connection timed out)).
17:55:51 <oklopol> so, even if a computer would be able to do what a human does, humans might exceed it's capabilities soon.
17:56:52 <oklopol> for example, my father would think there was a bear in my room if i showed him a photoshopped picture about it, a friend of mine would laugh at the picture and point out the parts of the picture where the pictures don't match
17:57:16 <oklopol> bad example, perhaps, but i do believe some capabilities like this are actually lacked by previous generations.
17:59:20 -!- Corun has joined.
18:00:00 <oklopol> although, i do believe in a lot of weird things.
18:01:28 <RodgerTheGreat> there's nothing wrong with strange beliefs as long as you have an open mind an you aren't dogmatic about said beliefs
18:02:27 <RodgerTheGreat> I could firmly believe that cats shit candy if you pet them enough, but if I refused to alter my beliefs after being confronted with evidence to the contrary I'd be stupid AND crazy.
18:04:55 <oklopol> a side-note on that, people should be taught math better, people seem to have no capability of changing the environment of logic, that is, you cannot say "let's assume for a while that ..." without being interrupted in case you haven't yet proved what you are assuming is true
18:05:36 <oklopol> while in fact you were never going to, and actually using that as an argument why said thing is in fact *not* true
18:06:21 <oklopol> perhaps it's the lack of first-class truth environments in english
18:06:33 <oklopol> lalna's "aiq", anyone?
18:07:18 <oklopol> hmm... that's not first class, it's a special environment statement, but it's something, anyway.
18:07:37 <RodgerTheGreat> teaching formal logic is a bit more fundamental than something to be lumped in with mathematics, especially at the age people should be learning these things
18:07:51 <oklopol> well, true.
18:08:03 <oklopol> i just meant logical thought in general.
18:08:11 <oklopol> guess that shouldn't be called math in this case
18:08:25 <RodgerTheGreat> personally, I'd like to see core curriculum becoming Math, Logic, and Grammar, rather than the "three R's"
18:08:37 <oklopol> three r's?
18:08:43 <oklopol> i've heard that though
18:09:03 <RodgerTheGreat> Reading, Writing and Arithmetic.
18:09:18 <RodgerTheGreat> the three R's come from a cute perversion of the english language.
18:09:36 <oklopol> a rhythm medic
18:10:01 <RodgerTheGreat> History is something that's easy to learn on your own if you're literate. Math is harder to learn on your own. Therefore, Math is more important in public schools.
18:11:29 <oklopol> yep, i wrote an angry essay on this for school once, the principal wanted to have a talk with me about my *ideas*
18:11:33 <oklopol> never had it though.
18:11:33 <RodgerTheGreat> and if people can reason and debate properly within a logical framework, there's no problem with people learning things like History on their own, because they can identify a reputable source and discard poor reasoning.
18:11:37 <oklopol> guess she for got it
18:12:18 <faxlore> Why not make the core curriculum, Untyped, Simply typed and Dependantly typed lambda calculuys
18:12:30 <oklopol> :)
18:12:30 <RodgerTheGreat> Public school should cover fundamental skills and teach people what they need to teach themselves. Universities should then allow people to learn specialized knowledge from experts.
18:12:59 <RodgerTheGreat> faxlore: that's a bit more pedantic and detailed than is necessary for most applications.
18:13:08 <RodgerTheGreat> but I wouldn't be against including it...
18:13:46 <oklopol> in my opinion formal logic should be taught before teaching a child how to read.
18:13:51 <oklopol> it's a lot more useful.
18:14:37 <RodgerTheGreat> there's no reason those can't be done at the same time
18:14:39 <faxlore> can I take this opportunity to ask for any suggestions of books/texts on Logic?
18:15:09 <RodgerTheGreat> teach them what logical fallacies are as you're teaching them how to spell their names and tie their shoes
18:15:14 <oklopol> well, true, but i think logic (and even mathematical notation for it) might be easier to learn than reading in general
18:15:27 <oklopol> a child might actually pick up logic fundamentally pretty fast.
18:15:31 <RodgerTheGreat> you'd wind up with a generation of clear thinkers and do the world unmeasurable benefit
18:16:01 <RodgerTheGreat> being able to read and write makes it easier to express concepts to the children, though
18:16:31 <RodgerTheGreat> symbolic notation is much clearer than expressing ideas conversationally, but conversation methods are a good way to *start*
18:16:51 <oklopol> uhhh, i need a child
18:16:53 <oklopol> chicks here? :)
18:17:20 <RodgerTheGreat> not that I'm aware of. I haven't seen Sukoshi around lately.
18:17:46 <RodgerTheGreat> And no offense, but I think she'd be out of your league anyway.
18:17:48 <oklopol> yeah, she seems like a nice catch
18:17:53 <oklopol> you think? :D
18:17:57 <RodgerTheGreat> mine too
18:18:00 <oklopol> in what sense, though?
18:18:26 <RodgerTheGreat> now there's a question
18:18:33 <RodgerTheGreat> bbiab
18:18:35 <oklopol> :D
18:18:48 <oklopol> i'm actually pretty good at getting chicks irl
18:19:05 <oklopol> they like my weirdness until they get to know me and realize i'm actually that weird.
18:20:28 <oklopol> (but by that time, i have my kid! mwahahaha)
18:20:32 <oklopol> (or not.)
18:23:30 -!- Jontte has joined.
18:30:05 <ihope> How evil of you.
18:32:03 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
18:32:03 -!- slereah__ has joined.
18:32:16 * sebbu listen to Ayumi Hamasaki - A BEST 2 (BLACK) [2007.02.28] - 12 - HANABI ~episode II~.mp3 [320kbps]
18:32:40 <oklopol> ihope: please add a question mark
18:33:03 <ihope> How evil of you?
18:37:12 <oklopol> quite.
18:39:55 -!- slereah_ has joined.
18:41:38 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
18:49:08 <ihope> Was the correct answer "please add a question mark?"?
18:49:53 -!- timotiis has quit (Remote closed the connection).
18:50:38 <oklopol> ihope: no, there was no correct answer, but good guess :)
18:50:52 <ihope> Yay!
18:51:03 <ihope> I mean, boo! Maybe.
19:09:24 -!- RodgerTheGreat has quit (Read error: 104 (Connection reset by peer)).
19:09:26 -!- RodgerTheGreat_ has joined.
19:17:35 -!- Possum has quit ("enabling unicode").
19:25:02 -!- RodgerTheGreat_ has changed nick to RodgerTheGreat.
19:28:27 -!- jix__ has quit ("CommandQ").
19:35:20 -!- timotiis has joined.
19:46:39 <RodgerTheGreat> oklopol: back on the topic of education, I think it'd be excellent if we took steps to identify the learning styles of children at a very young age (auditory, visual, kinesthetic, etc) and then sorted the kids into classes that catered to their best mode of learning. I think it would lead to more efficient teaching, and fewer people frustrated with school because of mismatches
19:48:26 <RodgerTheGreat> For example, I'm an auditory learner- I can soak up information very easily by listening to someone explain it. As a result, lecture-heavy classes are generally easy for me as long as I remain attentive, and I know I need to take more notes in other classes, like mathematics where much of the content is visual rather than verbal.
20:15:31 <bsmntbombdood> i don't believe in learning styles
20:15:57 <oklopol> me neither really
20:16:26 <oklopol> well, i'm really just bad at learning using my senses
20:18:07 <RodgerTheGreat> well, it's all about tendencies- everyone has a couple strong points that can serve them well if they identify them and learn to make use of them
20:20:11 <oklopol> for me it's more about concentration
20:20:33 <oklopol> i'm generally half-asleep all the time
20:23:10 <RodgerTheGreat> being a proficient computer user involves culturing a very specific kind of ADD.
20:23:35 <ihope> It involves doing what, now?
20:23:52 <RodgerTheGreat> our user interfaces tend to make people task switch a lot
20:24:33 <RodgerTheGreat> Do you ever find yourself switching to an email client for a few seconds to check your mail right in the middle of reading a webpage, or similar?
20:25:01 <RodgerTheGreat> and being a good programmer pretty much requires a person to hyper-focus on a task for long periods of time.
20:25:45 * ihope nods
20:27:46 <RodgerTheGreat> I find that it takes a lot of practice to embrace multitasking during some activities, and then "switch it off" to concentrate on a single task
20:28:28 <oklopol> ditto
20:30:20 <RodgerTheGreat> It lends me to believe that user interface design could benefit from this knowledge by catering to these two classes of activities.
20:31:42 <RodgerTheGreat> IDEs that are fullscreened with a minimum of visual elements to distract one from coding, with just a clock and a little tab for controlling background music playlists perhaps
20:32:48 <RodgerTheGreat> in general trying to make application suites that streamline an entire workflow into a single app and provide everything you want without having to switch programs or return to the desktop
20:33:35 <RodgerTheGreat> it'd be like the exact opposite of the Unix philosophy of having many small tools that each do a specific thing
20:34:37 <RodgerTheGreat> the problem is, there's a very fine line between doing everything a user needs and being bloated
20:40:25 <oklopol> well, the solution i've been thinking is to get a separate computer with nothing but coding facilities.
20:48:55 -!- Corun has quit ("This computer has gone to sleep").
21:13:54 <SimonRC> RodgerTheGreat: shouldn't you consider the unix environment to be a single IDE?
21:14:00 <SimonRC> RodgerTheGreat: see also colorForth
21:59:58 * SimonRC goes
22:03:50 -!- RodgerTheGreat has quit (Read error: 110 (Connection timed out)).
23:13:58 -!- Corun has joined.
23:15:06 <oklopol> hmm, took me about 10 minutes to write a function to generically run a genetic algo in python
23:15:12 <oklopol> just did the same in scheme
23:15:15 <oklopol> took 8 hours :D
23:30:45 <AnMaster> you are less experienced with scheme?
23:30:54 <oklopol> i just started.
23:30:58 <AnMaster> ah
23:31:05 <AnMaster> what algo?
23:31:17 <oklopol> you supply a mutation function and a pool of data
23:31:25 <faxlore> Can I see both programs?
23:31:29 <AnMaster> ok, go ahead, but probably over my head
23:31:37 <oklopol> and a scoring function
23:31:54 <oklopol> it then scores every object in the pool
23:31:58 <oklopol> removes the ones that suck
23:32:14 <oklopol> and mutates the good objects with each other to get the pool full
23:32:20 <oklopol> ...repeat.
23:33:07 <oklopol> well, to be fully honest, the actual function to do that did not take 8 hours, more like 3
23:33:15 <oklopol> but anyway...
23:33:17 <oklopol> faxlore: i guess..
23:33:23 <AnMaster> can see them?
23:33:24 <oklopol> they are not exactly the same
23:33:32 <AnMaster> oklopol, pastebin
23:33:38 <faxlore> oh they arent.. ?
23:33:50 <faxlore> That makes it less of a good comparison
23:33:57 <oklopol> the python one has a scripting language (currently utterly useless one) that does the scoring of an entry
23:34:01 <AnMaster> oklopol, now: rewrite in bash
23:34:16 <oklopol> and the scheme one does permutation
23:34:42 <oklopol> i can upload the functions to do the evolution ofc, those are almost the same i think
23:34:53 <AnMaster> oklopol, yes pleae
23:34:54 <oklopol> AnMaster: never done anything programmingish in bash
23:34:55 <AnMaster> please*
23:34:58 <AnMaster> oklopol, aww
23:39:24 <oklopol> hmm... the scheme one is a bit hard to get out of context copypastewise, since the functions are all at random locations :D
23:44:21 <oklopol> i'll just paste the whole thing...
23:45:38 <oklopol> http://www.vjn.fi/pb/p116661161.txt
23:46:45 <oklopol> i love it how whitespaceless scheme forms those weird cloud thingies
23:47:01 <faxlore> yes!
23:47:09 <oklopol> the part after make-pool is my favorite
23:48:44 <oklopol> my original idea was to solve my rubik's cube, but i'm having a hard time getting my schemes right
23:49:22 <oklopol> in python, i'd most likely have a solution already...
23:49:28 * oklopol wants to do python
23:49:49 <oklopol> programmer's nymphomania
23:53:32 -!- timotiis has quit ("leaving").
2008-01-13
00:15:53 -!- oklopol_ has joined.
00:51:36 -!- jix has joined.
01:23:45 -!- RodgerTheGreat has joined.
01:26:12 -!- jix has quit ("CommandQ").
01:26:18 <RodgerTheGreat> so, what's everyone up to tonight
01:26:47 <oklopol_> chillin'
01:26:49 -!- Jontte has quit ("Konversation terminated!").
01:26:55 <oklopol_> like every night
01:29:30 * faxlore wants to write a theorem prover that uses unification but doesn't know how to :S
01:29:57 <ihope> Unification?
01:30:30 <ihope> Like figuring out the type of ab given the types of a and b?
01:30:43 <faxlore> 1 sec
01:31:32 <faxlore> given two formulas e1, e2 and a logic.. any substitution ø for the free variables in e1 and e2 such that øe1 = øe2 is a unifier
01:31:59 <ihope> Sounds like it.
01:32:10 <faxlore> it sounds a good idea but I have no idea how ot do this :D
01:32:21 <ihope> What gives you the idea?
01:33:54 <oklopol_> how does this prove a theorem?
01:34:07 <faxlore> oklopol.. that's what I don't know
01:34:10 <oklopol_> :D
01:34:30 <oklopol_> do you know it does prove a theorem, or did you just make a guess?
01:34:40 <faxlore> I think someone said it can be used to
01:36:02 -!- oklopol has quit ("for the need to encumber").
01:36:11 <ihope> I guess I'd convert to a logic where you have a couple simple axioms and modus ponens as the one rule of inference.
01:37:59 <oklopol_> yeah, you've always been a bit of an oddball
01:38:09 -!- oklopol_ has changed nick to oklofok.
01:38:15 <ihope> Make a -> b, a |- b your rule of inference and (a -> b -> c) -> (a -> b) -> a -> c, a -> b -> a, F -> a and ((a -> b) -> a) -> a your axioms?
01:39:30 <faxlore> hmm
01:39:36 <faxlore> does F -> a have to be an axiom?
01:39:52 <ihope> How else are you going to represent falsehood?
01:39:54 <faxlore> I thought there was some way to prove it
01:39:56 <faxlore> oh.. I see
01:43:26 <ihope> Also, I have this odd feeling that the Rubik's cube, the Rush Hour puzzle, and knots are all instances of the same general concept.
01:45:29 <oklofok> can you link those if you have them open
01:45:35 <oklofok> it's so hard opening a browser
01:45:43 <RodgerTheGreat> I can see Rubik's and Rush Hour
01:47:00 <RodgerTheGreat> I was thinking about how I'd go about solving a Rubik's cube from a naive standpoint once, and I started by making a data structure that represents the cube. It's like 6 circularly linked lists that share edges
01:47:57 <RodgerTheGreat> Rubik's and Rush hour are both about making a series of moves to make specific changes in a pattern, and then reversing most of those moves so that only the desired changes remain
01:48:26 <ihope> Ah, good way of putting it.
01:49:14 <ihope> I guess it's not knots so much as braids. Braids form a simple noncommutative group, so the braid a * b * c * d * c' * b' * a' might... be something.
01:50:28 <oklofok> umm... of course they're about taking a sequence of complex permutations and finding compound permutations that are simpler so you can find the solution
01:50:41 <oklofok> i assumed a deeper similarity
01:51:36 <ihope> I guess it's not all that deep. They're noncommutative groups.
02:06:27 <ihope> Now all we have to do is prove all noncommutative groups isomorphic! >:-)
02:06:41 <ihope> Er, countably infinite ones.
02:07:10 <ihope> Or at least find a countably infinite group that all other countable groups are subgroups of.
02:09:36 <RodgerTheGreat> erm... I don't see how that would be useful
02:10:41 <RodgerTheGreat> and besides, an infinite set that contained all countably infinite sets with a given property would by definition be countably infinite itself
02:11:24 <RodgerTheGreat> I am quite familiar with the meaning of countably infinite.
02:12:35 <ihope> An infinite set containing all countably infinite sets with a given property is countably infinite?
02:12:58 <ihope> One real number can be expressed as a countably infinite set; therefore, the set of real numbers is countably infinite.
02:13:17 <RodgerTheGreat> wait, wait, wait
02:13:51 <RodgerTheGreat> I question the logic of that assertion
02:14:09 <ihope> The assertion that the set of real numbers is countably infinite?
02:14:35 <ihope> Or your assertion?
02:14:44 <RodgerTheGreat> I'm thinking.
02:16:26 <RodgerTheGreat> alright, the flaw in my reasoning above was that I *ASSUMED* that "all countably infinite sets with a given property" is itself a countably infinite group- that's circular reasoning, or at best a tautology.
02:46:44 -!- ihope has quit (Read error: 110 (Connection timed out)).
02:48:33 -!- calamari has joined.
03:02:45 -!- RodgerTheGreat has quit.
03:32:19 -!- Corun has quit ("This computer has gone to sleep").
03:35:37 -!- pikhq has quit (Read error: 104 (Connection reset by peer)).
03:39:16 -!- pikhq has joined.
03:56:36 -!- GreaseMonkey has joined.
04:10:19 <oklofok> 'night
07:22:51 -!- calamari has quit ("Leaving").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
09:05:43 -!- 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. Man who run behind car get exhausted").
10:04:46 -!- oerjan has joined.
10:32:12 -!- oerjan has quit ("leaving").
10:43:10 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
11:16:10 -!- jix has joined.
11:55:07 -!- Corun has joined.
12:22:48 -!- Slereah has joined.
12:53:22 -!- Jontte has joined.
13:04:21 -!- RedDak has joined.
13:37:50 -!- ihope has joined.
13:49:23 -!- Corun_ has joined.
13:50:41 -!- Corun has quit (Read error: 104 (Connection reset by peer)).
13:57:51 -!- Corun_ has quit ("This computer has gone to sleep").
14:07:40 -!- timotiis has joined.
14:13:56 -!- ihope has quit ("ChatZilla 0.9.79 [Firefox 2.0.0.11/2007112718]").
14:51:06 -!- RedDak has quit (Remote closed the connection).
14:59:45 <Slereah> What would be a simple way to avoid the input combinator in mah lazy language getting redistributed through the code before it's evaluated?
15:01:34 <oklofok> redistributed?
15:01:43 <oklofok> like multiplied all around the code
15:02:20 <oklofok> if so, it's trivial
15:02:21 <oklofok> is it so?
15:02:28 -!- jix has quit ("CommandQ").
15:02:45 <Slereah> Well, for instance, if there's ```sAB_, I'll end up with ``A_`B_
15:03:03 <oklofok> and _ is the input oper?
15:03:06 <Slereah> Yes.
15:03:10 <oklofok> function
15:03:17 <oklofok> okay... well, one possibility is this
15:03:25 <oklofok> each time you evaluate an input function
15:03:29 <oklofok> it reads the input byte
15:03:33 <Slereah> I didn't think of it first, but then I ended up with demands of input during all the program's execution.
15:03:39 <oklofok> and stores what that was
15:04:02 <oklofok> sorry, lag.
15:04:03 <oklofok> okay
15:04:20 <oklofok> actually, my scheme doesn't work
15:04:22 <oklofok> forget about it
15:04:37 <Slereah> I was thinking maybe using the delta sort-of combinator.
15:04:50 <oklofok> why should it not be redistributed?
15:05:17 <Slereah> Well, for instance, suppose I have a program C and some input.
15:05:44 <Slereah> I'd like to have just one input i so that it's `Ci
15:06:17 <Slereah> But since it's lazy, the input operator might be evaluated multiple times, or at wrong places.
15:07:00 <Slereah> Which is pretty much what happened with my print-n-times-*-and-decrease-n program
15:08:08 -!- jix has joined.
15:11:25 -!- Corun has joined.
15:14:22 <Slereah> It was (^x^y (print it n times if n>0 else terminate)y (xx pred(y))) (^x^y (print it n times if n>0 else terminate)y (xx pred(y))) IIRC.
15:14:58 <Slereah> So the _ was distributed at least twice.
15:17:08 -!- Slereah has changed nick to slereah_.
15:29:54 <oklofok> why, you need the m combinator, of course!
15:30:04 <oklofok> for that input problem
15:30:16 -!- jix has quit (Nick collision from services.).
15:30:18 -!- jix__ has joined.
15:33:17 <oklofok> slereah_: you could have an x-combinator, or the strict combinator
15:33:26 <oklofok> whose only purpose is to evaluate a input!
15:33:27 <oklofok> *-a
15:33:57 * oklofok has a lot of great ideas
15:39:48 -!- jix__ has quit (Nick collision from services.).
15:39:54 -!- jix has joined.
15:40:31 <slereah_> oklofok: : I was trying pretty hard to avoid an anti-d operator
15:40:50 <slereah_> Which would make it BIZARRO UNLAMBDA
15:41:44 <oklofok> well, there's always the possibility of just making the m combinator
15:43:15 * oklofok waits for someone to ask what it is, so he can tell the punchline
15:43:25 <oklofok> and don't you start guessing!
15:44:53 <oklofok> rush hour is a different game from what i recalled, btw, the game i thought of had a much more obvious connection to rubik's cubes
15:45:31 <oklofok> not that either of the people in the conversation were here.
15:47:42 <slereah_> Well, I already have an m combinator :(
15:47:56 <oklofok> oh...
15:47:59 <oklofok> what's that?
15:48:25 <oklofok> it's kinda obvious what i meant, a monad combinator that is!
15:49:53 <slereah_> I once had the wiki page on monad open, but never read it!
15:50:08 <slereah_> The only monads I know of are the 0 dimensional topological objects.
15:50:25 <slereah_> My m combinator is the Mockingbird one.
15:50:34 <slereah_> `ma conv. `aa
15:50:39 <slereah_> It's quite useful
15:51:33 <oklofok> oh, sii
15:51:57 <oklofok> fun guy to chat with, if you like yourself
15:52:46 <slereah_> Well, I do like myself.
15:53:45 <oklofok> they say that's a good thing
15:53:58 -!- oklofok has changed nick to oklofop.
15:54:42 <oklofop> oerjan should come in and tell us how a monad combinator should behave (although it would probably not be a combinator)
15:55:45 <slereah_> One of my idea was to use the delta dude, the one that can make the difference between two lambda expressions (considered the same if they only differ by an alpha conversion)
15:56:28 <slereah_> Like maybe a test such as (delta _) C, to return k or `ki if C is or isn't _
15:56:34 <slereah_> And work from there.
15:58:06 * slereah_ wikis for monads
16:11:03 <oklofop> monads are a simple concept that is impossible to explain in any way.
16:11:13 <oklofop> no way in the world
16:11:14 <oklofop> period.
16:12:07 <oklofop> oh, right, i was supposed to go ->
16:12:08 <oklofop> cya
16:17:57 <slereah_> Bai
16:42:15 -!- tesseracter has quit (Read error: 110 (Connection timed out)).
18:15:28 -!- slereah_ has changed nick to Slereah.
18:20:08 -!- cherez has quit ("Leaving.").
18:43:58 -!- faxlore has quit ("If there are any aliens, time travellers or espers here, come join me!").
19:26:51 -!- GreaseMonkey has joined.
19:58:15 -!- Slereah has changed nick to slereah_.
20:47:11 -!- RedDak has joined.
21:05:17 -!- bsmntbombdood has quit (Read error: 110 (Connection timed out)).
21:05:41 -!- bsmntbombdood has joined.
21:30:24 -!- jix has quit ("CommandQ").
21:47:49 -!- oklopol_ has joined.
21:50:54 -!- oklofop has quit ("for the need to encumber").
21:51:02 -!- oklopol_ has changed nick to oklopol.
21:57:16 -!- RedDak has quit (Remote closed the connection).
22:07:07 -!- RodgerTheGreat has joined.
22:07:15 <RodgerTheGreat> howdy, folks
22:08:14 <oklopol> hies
22:08:27 <RodgerTheGreat> hey, oklopol
22:09:04 <oklopol> heiß
22:09:11 <oklopol> took a while to find that
22:09:17 <oklopol> was on "b"
22:09:24 <RodgerTheGreat> yeah, it kinda makes sense
22:09:41 <oklopol> well, it's "sz"
22:09:46 <RodgerTheGreat> option+S = ß for me, which makes more sense
22:09:49 <oklopol> but indeed, it does look like a b
22:09:50 <RodgerTheGreat> "ss" in german
22:09:56 <RodgerTheGreat> it's actually a Beta
22:10:08 <oklopol> yeah, but they say "es tset"
22:10:27 <oklopol> well, indeed, it's the same char as beta
22:10:30 <oklopol> never realized xD
22:10:52 <RodgerTheGreat> that's the name of the symbol in german, not the sound
22:11:11 <oklopol> i know i know, just explained why i said "sz" instead the "ss"
22:11:17 <RodgerTheGreat> Groß <-> Gross, depending on your spelling convention
22:11:51 <oklopol> you know german?
22:11:52 <oklopol> vie viel?
22:11:54 <oklopol> *wie
22:11:57 <oklopol> lol, i fail :)
22:12:07 <RodgerTheGreat> Nicht so viel
22:12:18 <oklopol> verstehst du aber?
22:12:33 <RodgerTheGreat> Iche lerne Deutsch im Schule für drei jahre.
22:13:00 <oklopol> ich hab deutsch in der schule seit drei jahren gelernt, i think
22:13:23 <RodgerTheGreat> Und ja, ich verstehe.
22:13:34 <RodgerTheGreat> "ich denke"
22:14:01 <oklopol> ich bin viel besser grammar zu bessern, als selbst was sprechen...
22:14:19 <oklopol> mostly been learning grammar
22:14:25 <oklopol> i have no idea about vocabulary :D
22:14:27 <RodgerTheGreat> yeah, that is most of it
22:14:39 <oklopol> what is most of what, though?
22:14:54 <RodgerTheGreat> the nice thing is that german grammar is close enough to english that people will be able to understand what you mean even if you screw up a little
22:15:15 <RodgerTheGreat> vocabulary is most of learning the language, in my opinion
22:15:17 <oklopol> heh, finnish is closer in many aspects though :)
22:15:25 <oklopol> yeah, think so too.
22:15:31 <RodgerTheGreat> spelling is much more consistent than english, so that part isn't too bad
22:15:44 <oklopol> hmm?
22:15:45 <RodgerTheGreat> and for simple sentences, the grammar is almost exactly like English.
22:15:56 <oklopol> spelling is more consistent in english than german?
22:16:41 <oklopol> well, for simple sentences, every language is pretty much the same ;)
22:16:51 <oklopol> what aspect of grammar you mean?
22:17:14 <RodgerTheGreat> As the germans would say, Wortstellung.
22:17:17 <RodgerTheGreat> Word order
22:17:27 <oklopol> oh, that's much closer in finnish than german.
22:17:40 <oklopol> that's the one thing germans have that's weird in their grammar
22:17:58 -!- immibis has joined.
22:18:08 <oklopol> if you'd learn, say, swedish, you'd see it's almost exactly the same
22:18:20 <oklopol> as is NORWEGIAN
22:18:28 <oklopol> i love highlighting oerjan.
22:20:52 <oklopol> i think i'll go to sleep early today, you keep the sails up and head for north
22:20:54 <oklopol> ->
22:46:20 -!- Jontte has quit ("Konversation terminated!").
23:09:17 -!- timotiis has quit ("leaving").
23:59:38 -!- lament has quit (Remote closed the connection).
23:59:47 -!- lament has joined.
2008-01-14
00:42:51 -!- SimonRC has quit (Read error: 110 (Connection timed out)).
00:56:59 -!- cherez has joined.
01:19:00 -!- SimonRC has joined.
01:28:26 -!- sebbu has quit ("@+").
01:31:30 -!- cherez has quit ("Leaving.").
01:45:54 -!- calamari has joined.
01:45:54 -!- tesseracter has joined.
01:46:50 -!- Corun has quit ("This computer has gone to sleep").
02:00:43 -!- cherez has joined.
02:39:05 <RodgerTheGreat> I feel like drawing something. Does anyone have any requests?
02:53:27 <GreaseMonkey> RodgerTheGreat, do you have more plans for handgrenade?
02:53:49 <GreaseMonkey> just curious
02:58:17 <GreaseMonkey> i tend to scribble technical stuff
03:03:08 <RodgerTheGreat> I dunno
03:04:08 <RodgerTheGreat> is this you asking if you can take it over, or suggesting that I continue?
03:10:38 <GreaseMonkey> a bit of both actually :\
03:10:44 -!- GlassBot has quit (Read error: 110 (Connection timed out)).
03:10:47 -!- ehirdsleep has quit (Read error: 110 (Connection timed out)).
03:11:03 <GreaseMonkey> do you reckon you'll do more work on it?
03:11:33 <GreaseMonkey> meh
03:11:39 <GreaseMonkey> maybe i'm just talking crap
03:15:54 <RodgerTheGreat> I dunno
03:16:05 <RodgerTheGreat> really, I have a lot on my plate already
03:21:55 <GreaseMonkey> ok. i'm probably just going to do an implementation based on what's there
03:32:26 <slereah_> Hm. Should I put the Love Machine 9000 on the esowiki?
03:39:33 <GreaseMonkey> go ahead
04:14:04 <RodgerTheGreat> is the Love Machine 9000 like the opposite of the DeathStation 9000?
04:14:25 <RodgerTheGreat> or something new and hideous altogether?
04:17:02 <slereah_> It is the name of one of mah language, which is pretty much a Turing machine.
04:17:49 <RodgerTheGreat> only sexier?
04:18:00 -!- slereah_ has changed nick to Slereah.
04:18:41 <Slereah> You decide. http://membres.lycos.fr/bewulf/Russell/turingprog16.py
04:19:12 <Slereah> If you use the penguins, you might want to use : http://membres.lycos.fr/bewulf/Russell/turingprog16-Lin.py
04:19:43 <RodgerTheGreat> It's interesting, but I still don't think I get the name
04:20:16 <Slereah> The story behind that name is that I had no idea for a name.
04:20:32 <Slereah> The "serious" name is NTCM
04:20:42 <Slereah> For n-tape choice machine.
04:21:26 <RodgerTheGreat> on a somewhat unrelated note, does anyone find this amusing? http://rodger.nonlogic.org/images/Comic024.png
04:22:38 <Slereah> It's okay I guess.
04:22:51 <RodgerTheGreat> yeah, not my best work
04:23:08 <RodgerTheGreat> I think it seemed funnier when I was waiting in an airport for 4 hours.
04:24:05 <Slereah> Here's a BF interpreter for the Love Machine if you want to see what it looks like : http://membres.lycos.fr/bewulf/Russell/BF%20ASCII.txt
04:24:53 <Slereah> I should make a penguin version. This one doesn't work on the penguin love machine.
04:25:12 <RodgerTheGreat> woah, funky extended ASCII
04:27:01 <Slereah> Yes. A Turing Machine is a poor choice to make a BF interpreter.
04:27:13 <Slereah> The Bitchanger interpreter is much shorter!
04:27:34 <RodgerTheGreat> lol
04:31:44 <Slereah> And here's the 99 bottles of beer : http://membres.lycos.fr/bewulf/Russell/99%208.txt
04:32:28 <RodgerTheGreat> that must really be a bitch to type
04:32:56 <RodgerTheGreat> but I do applaud your success in making 99b readable
04:33:58 <Slereah> The comments are actually states of the machine, but that are never called.
04:34:12 <RodgerTheGreat> yeah, quite clever
04:34:28 <RodgerTheGreat> not entirely unlike the [ comments go here ] BF trick
04:36:02 <Slereah> Although I still specify an accepting char and exit state, otherwise I fear there might be a parsing error.
04:36:28 <Slereah> Hm. How do I create a new page on the esowiki?
04:45:44 -!- Pyotr has joined.
04:46:12 -!- Pyotr has quit (Client Quit).
04:46:43 <RodgerTheGreat> good night everyone
04:46:58 -!- RodgerTheGreat has quit.
05:10:59 -!- calamari has quit ("Leaving").
05:47:47 -!- CakeProphet has joined.
06:13:32 -!- CakeProphet has quit ("haaaaaaaaaa").
06:49:39 <Slereah> http://www.esolangs.org/wiki/NTCM
06:49:45 <Slereah> Thar.
06:53:27 <immibis> go to the page and click "create this page" or "edit"
06:55:43 <Slereah> Well, it is a little late now.
06:56:56 <immibis> ok
07:40:51 <Slereah> [a[0:P1RI:b;1:P1LE:c]|b[0:P1RI:c;1:P1RI:b]|c[0:P1RI:d;1:P0LE:e]|d[0:P1LE:a;1:P1LE:d]|e[0:P1RIHA:e;1:P0LE:a]][0=0;ims=a;d15;vh;etTecF;t1]
07:40:54 <Slereah> Aaaaaargh!
07:41:02 <Slereah> Busy beaver with millions of steps!
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:04:57 <GreaseMonkey> heh
08:08:07 <Slereah> Still running.
08:08:34 <Slereah> I wonder in how much time the Love Machine 9000 can process 14.000.000 steps
08:10:03 <Slereah> Oh. It's actually 47,176,870 steps.
08:19:19 -!- bsmntbot has joined.
08:19:58 * immibis wonders why IrcCoffeeBot is calling itself bsmntbot, and why it came to this channel instead of #coffee
08:20:03 <immibis> !j #coffee
08:20:05 <EgoBot> Huh?
08:20:21 <immibis> oops, #coffee's already in use....?????
08:20:30 -!- bsmntbot has changed nick to CoffeeBot.
08:20:41 * CoffeeBot is making a coffee in an office mug with cold milk help for immibis
08:20:41 * CoffeeBot gives immibis a coffee in an office mug with cold milk help
08:20:48 <CoffeeBot> #coffee: <immibis> ...
08:21:14 <immibis> stupid bot
08:21:16 <immibis> !p #esoteric
08:21:18 -!- CoffeeBot has left (?).
08:21:19 <EgoBot> Huh?
08:23:01 -!- immibis 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. IceChat - Its what Cool People use").
08:24:07 <Slereah> A good quit message virus would also ask the user to manually delete all his files!
08:24:52 <GreaseMonkey> heh
08:49:12 -!- 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. Man who run behind car get exhauste).
10:16:23 -!- puzzlet has quit (Read error: 110 (Connection timed out)).
11:25:49 -!- Corun has joined.
12:09:45 -!- slereah_ has joined.
12:12:38 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
12:58:31 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
12:59:13 -!- slereah_ has joined.
13:02:12 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
13:02:32 -!- slereah_ has joined.
13:51:01 -!- ehirdsleep has joined.
13:51:05 -!- ehirdsleep has changed nick to ehird.
13:51:08 -!- ehird has changed nick to ehird`.
13:55:36 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
14:12:15 -!- slereah_ has joined.
14:13:33 <ehird`> hello all
14:19:43 -!- Corun has quit (calvino.freenode.net irc.freenode.net).
14:19:46 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
14:20:47 -!- Corun has joined.
14:26:13 -!- RodgerTheGreat has joined.
14:26:25 <RodgerTheGreat> howdy
14:26:35 -!- jix has joined.
14:35:18 -!- slereah_ has joined.
14:36:35 -!- Jontte has joined.
14:41:33 <oklopol> RodgerTheGreat: i think the comic was funny
14:41:52 <RodgerTheGreat> well, that's good to hear
14:42:03 <oklopol> i love the last square
14:42:12 <oklopol> the guy's posture is awesome :)
14:42:34 <RodgerTheGreat> heh
14:43:04 <oklopol> does his shirt say "you are likely to be eaten by a give"? :D
14:43:21 <oklopol> grue
14:43:22 <oklopol> !
14:43:25 <EgoBot> Huh?
14:44:05 <RodgerTheGreat> grue
14:44:56 <oklopol> for some reason i first thought the logical continuum to "you are likely to be eaten by" would be "bear".
14:45:20 <oklopol> so i interpreted the last word at random
14:46:33 -!- slereah__ has joined.
14:46:56 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
14:47:24 <RodgerTheGreat> I dunno, in my twisted imagination grues seem a lot more likely to eat people than bears
14:47:47 <RodgerTheGreat> then again, I've seen "grizzly man", which was pretty much the comedy of the year
14:48:12 <oklopol> what's a grue, i thought you can only be eaten by "grue", not "a grue"
14:49:13 <RodgerTheGreat> "It is pitch black. You are likely to be eaten by a grue."
14:49:19 <RodgerTheGreat> "> what is a grue?
14:49:19 <RodgerTheGreat> The grue is a sinister, lurking presence in the dark places of the earth. Its favorite diet is adventurers, but its insatiable appetite is tempered by its fear of light. No grue has ever been seen by the light of day, and few have survived its fearsome jaws to tell the tale."
14:56:57 <oklopol> oh, it's "a grue"
14:57:14 <oklopol> i haven't actually played a game that had this saying, just heard a few people use the phrase
14:58:37 <RodgerTheGreat> Zork 1, 2 and 3 are freeware now- you ought a find a Z-machine interpreter and at least play the first one for a while
15:08:24 <oklopol> hmm... text adventure games?
15:08:34 <RodgerTheGreat> the best
15:09:50 <oklopol> being the best text adventure game < being the best game < interesting enough to try for me, though :)
15:10:02 <oklopol> don't like games really
15:10:28 <oklopol> except ones where the controls are interesting
15:11:43 <RodgerTheGreat> text adventures are fun and interesting to code, and unlike graphical games there's no overhead for asset creation. If you want a room that looks like something, you describe it rather than slaving over a graphics editor for hours
15:12:45 <oklopol> indeed, except i don't care what it looks like, i care about what it does.
15:13:07 <RodgerTheGreat> which is why text adventure games are perfect
15:13:12 <oklopol> so... i don't care about graphics or plot, making me fairly uninterested in both all new games, and the awesome old adventure games.
15:13:27 <RodgerTheGreat> plus, they can be played in a number of unusual vectors, such as over IRC
15:13:42 <oklopol> well, that's ofc a plus, i agree that
15:13:51 <RodgerTheGreat> there exist a number of Zork-bots, and I believe you're aware of my IRC-based MUD experiments
15:14:26 <oklopol> but most text adventure games don't let me "build stuff" like i want to, as a programmer
15:14:40 <oklopol> i'm aware of them, if they contain the game where you hunted... something :)
15:14:56 <oklopol> wombat?
15:16:07 <RodgerTheGreat> wumpus
15:16:11 <RodgerTheGreat> much more fearsome
15:16:39 <RodgerTheGreat> oh, man- my next wumpus-hunting game needs to include a torch, dark areas and grues
15:17:59 <RodgerTheGreat> http://thcnet.net/zork/index.php
15:19:36 <oklopol> too slow a connection for that
15:22:17 -!- timotiis has joined.
15:30:44 <slereah__> I think I'll modify some of the Love Machine to make a language based on that 2,3 machine.
15:31:09 <oklopol> :D
15:31:14 <oklopol> sounds useful
15:31:34 <slereah__> Although I so far have no clue of how to make even the most trivial program with it!
15:31:34 <slereah__> Isn't it?
15:31:46 <slereah__> But since I already have the Love Machine 9000, it won't be too hard.
15:32:10 <slereah__> It's just defining a Turing program with two states, three symbols and some initial input.
15:33:11 <slereah__> It wil prolly be 5 symbols for the language itself.
15:33:38 <oklopol> well, actually, you need a laze preprocessor for the input tape
15:33:46 <oklopol> so you can allow for the infinite patterns
15:33:55 <oklopol> *lazy
15:34:07 <slereah__> First char is the default char, the rest is the input, and there's a ^ or v next to one of those symbols to show where's the head to start with and what's the first state.
15:34:10 <slereah__> Wut?
15:35:02 <oklopol> i would love to explain, but i have to go now
15:35:06 <oklopol> well, i guess it's short
15:35:07 <slereah__> kthxbai
15:35:11 <slereah__> Oh.
15:35:24 <oklopol> the 2,3 machine was proven tc using an infinite initial pattern
15:35:31 <oklopol> so... you need to have that.
15:35:55 <slereah__> Does the pattern have any... pattern?
15:36:06 <slereah__> Or can it be anything?
15:36:10 <oklopol> you need to add a facility for adding non-tc programs that always process the tape before the actual tape of the turing machine enters them
15:37:16 <oklopol> actually, i think ais's thingie on the tape was some sort of a nested structure, even, so it's not even all that trivial a preprocessing.
15:38:06 <slereah__> Let's see that proof.
15:38:23 <oklopol> it cannot be *any* pattern, i think bounded to a pda or something
15:38:25 <oklopol> ais can tell you better, or you can read the proof
15:38:26 <oklopol> i couldn't.
15:38:41 <oklopol> too complex for me, lazied out after a few pages
15:39:49 <slereah__> If it's that horrible, it will probably have to wait the end of the week
15:39:53 <slereah__> It's exam week right now.
15:48:47 -!- jix has quit (Nick collision from services.).
15:48:57 -!- jix has joined.
15:52:57 -!- Hiato has joined.
16:02:24 <slereah__> ('system 0') can emulate any two-colour cyclic tag system for an arbitrary number of steps, using a finite-
16:02:24 <slereah__> length initial condition in which the leftmost cell is a 0 and starts active in state A and in which the first
16:02:33 <slereah__> Finite-length?
16:22:56 -!- Hiato has left (?).
16:27:34 -!- sebbu has joined.
16:54:17 <slereah__> From what I can make out, the actual 2,3 machine takes on a finite input. The transformation of input seems to be for the next systems.
16:54:30 <slereah__> But then again, I can't understand that much.
17:04:16 <ehird`> I wonder... Glass is one example of 'ridiculous object orientation'...
17:04:18 <ehird`> What could another be..
17:08:47 <slereah__> 2,3 is so simple that I seem to be throwing out most of the Love Machine 9000.
18:03:27 <slereah__> Well, I have the basic machine so far.
18:03:35 <slereah__> Now, to make something ridiculous with it.
18:07:22 <ehird`> >query Love Machine 9001 release date
18:08:36 <slereah__> It is not the Love Machine 9001.
18:08:49 <slereah__> It will be called "23 skidoo", I fear.
18:09:39 <slereah__> The idea will be that, instead of colors, there will be 0, 1 and X.
18:09:52 <slereah__> And the tape will be divided into packs of eight.
18:10:19 <slereah__> So that, maybe, by pure chance (I have no idea how to do programming with that thing), it will spell out some stuff.
18:10:29 <slereah__> In ASCII, that is
18:10:42 <slereah__> Making some sort of readable output.
18:11:04 <ehird`> The Rt. Hon. Lord God Bless Its Soul Love Machine 9000 Sr.
18:11:32 <slereah__> Well, it could be that too.
18:11:41 <slereah__> It's not like I care that much about the name, obviously.
18:15:09 -!- RedDak has joined.
18:17:47 <ehird`> someone give me an algorithm for determining the 'random keyboard bashing'-ness of a string!
18:19:40 -!- Corun has quit ("Leaving").
18:19:40 -!- Corun has joined.
18:19:40 <slereah__> Define "random keyboard bashing".
18:19:41 <slereah__> Most keyboard bashing isn't random, because people tend to strike the same areas.
18:20:02 <slereah__> Hence the expression, sdfgsdf
18:21:02 <ehird`> slereah__: based on subjective human opinion
18:22:38 <slereah__> Place a midget in your CPU.
18:22:42 <slereah__> Input the string.
18:22:44 <slereah__> ???
18:22:48 <slereah__> Problem solved!
18:39:43 -!- slereah_ has joined.
18:39:49 -!- dak has joined.
18:39:59 -!- dak has quit (Read error: 104 (Connection reset by peer)).
18:40:14 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
18:42:07 <ehird`> who wants an esolang implemented
18:42:08 <ehird`> :P
18:56:12 -!- slereah__ has joined.
18:57:54 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
18:59:35 <slereah__> >:|
19:20:08 -!- Jontte has quit (Read error: 104 (Connection reset by peer)).
19:20:55 -!- Jontte has joined.
19:43:10 <ehird`> sheesh. the lambda calculus is dynamically scoped, kinda
19:44:47 <slereah__> Well, the empty string is definately not a quine in 23 skidoo.
19:45:58 <slereah__> Although so far, no letters.
19:56:33 <SimonRC> ehird`: no, staticly
19:56:52 <ehird`> SimonRC: depends on how you view it
19:56:58 <SimonRC> umm
19:57:12 <SimonRC> There is only one kind of variable and it is lexically scoped
19:57:23 <ehird`> yes.
19:57:39 <SimonRC> so how can it be dynamically scoped?
20:08:11 <ehird`> if your evaluation strategy is fucked.
20:08:12 <ehird`> :)
20:09:05 <SimonRC> well then it isn't the lambda calculus
20:13:59 <ehird`> naw
20:14:01 <ehird`> it worked the same
20:14:05 <ehird`> just... :P
20:17:56 <oklopol> for some weird meaning of kinda, perhaps it is dynamically scoped
20:30:51 <oklopol> is there an esolang with nice network support?
20:30:58 <bsmntbombdood> 1337
20:31:23 <oklopol> i don't know if i'm leet enough, but let's see
20:31:26 <oklopol> oh, right
20:31:31 <oklopol> brainfuck derivative?
20:31:34 <bsmntbombdood> yeah
20:31:39 <oklopol> i think i know it
20:33:27 <oklopol> umm... that's not a brainfuck derivative
20:34:45 <bsmntbombdood> wtf?!?!
20:34:55 <bsmntbombdood> the 1337 wiki page got replaced with something else
20:35:24 <bsmntbombdood> oh
20:35:29 <bsmntbombdood> it's spelled l33t
20:35:48 <oklopol> hehe
20:37:09 <oklopol> http://www.100webads.com/ any other suggestions?
20:37:27 <oklopol> i would prefer getting it running today, though, so an esolang might not suit that well :)
20:37:59 <bsmntbombdood> what is it?
20:38:05 <bsmntbombdood> a 1 million pixels clone?
20:38:22 <oklopol> what?
20:38:22 <oklopol> :)
20:38:32 <bsmntbombdood> some asshole
20:38:47 <bsmntbombdood> sold 1 million pixels of ad space on his website for $1 each
20:39:14 <oklopol> xD
20:39:17 <oklopol> that's awesome
20:39:33 <oklopol> we gotta put that on vjn.fi
20:39:59 <bsmntbombdood> what's that?
20:40:07 <oklopol> www.vjn.fi
20:40:12 <bsmntbombdood> ...
20:40:14 <SimonRC> a cat walking on the keyboard
20:40:17 <oklopol> a page me and a few friends bought for fun
20:40:24 <bsmntbombdood> i wish i could come up with a scam as profitable as that :(
20:40:37 <oklopol> heh
20:40:41 <SimonRC> not a scam
20:40:45 <bsmntbombdood> i know
20:40:46 <SimonRC> you got exactly what you asked for
20:40:49 <bsmntbombdood> but it feels like one
20:40:58 <bsmntbombdood> he made a million bucks without ANY content
20:41:16 <SimonRC> except the idea
20:41:44 <SimonRC> and, I expect, a vast amount of time spent handling 10000 emails from people wanting to buy space
20:41:48 * oklopol wants to buy a pixel
20:41:53 <SimonRC> just the one/
20:42:22 <bsmntbombdood> i could pretend i was a 500 pound fatso that lost 350 pounds, and i need people to donate money for skin removal surgery
20:42:28 <SimonRC> heh
20:42:37 <bsmntbombdood> everyone loves an uplifting story about how someone lost weight
20:42:48 <SimonRC> you'd need pics
20:42:53 <bsmntbombdood> easy to find
20:43:01 <SimonRC> hmm
20:43:08 <SimonRC> someone might spot if ytou re-used them
20:44:16 <bsmntbombdood> http://seanyounai.files.wordpress.com/2007/08/massive-weight-loss.jpg
20:44:17 <bsmntbombdood> etvc
20:44:19 <bsmntbombdood> *etc
20:45:04 <bsmntbombdood> http://www.t-nation.com/img/photos/05-118-diet/image002.jpg
20:45:36 <SimonRC> see previous remark
20:45:44 -!- Jontte has quit ("Konversation terminated!").
20:46:22 <bsmntbombdood> as long as the image wasn't prolific i think it would be ok
20:48:39 <bsmntbombdood> ugh
20:48:49 <bsmntbombdood> i knew i should have looked up prolific before using it
20:51:07 <oklopol> :D
20:51:14 <oklopol> i pwn you at your own language!
20:57:54 -!- pikhq has quit (Remote closed the connection).
20:57:58 <ehird`> idea:
20:58:06 <ehird`> esolang emacs!
20:58:31 <ehird`> take an esolang, add some kind of feature to it to allow 'calling out' to fake-syscalls, make loads of them for editor and ncurses stuff
20:58:32 <ehird`> write editor
20:58:33 <ehird`> profit
20:59:12 <SimonRC> It's called TECO
21:00:49 -!- Hiato has joined.
21:01:00 <ehird`> SimonRC: heh
21:01:59 <Hiato> Wassup :)
21:02:16 <SimonRC> ^
21:02:25 <Hiato> heh :)
21:02:32 <SimonRC> unless your monitor is upside-down, in which case it's v
21:02:42 <Hiato> lol :D
21:03:19 -!- pikhq has joined.
21:03:22 <Hiato> ehird`: this'll probably annoy you, but I changed the ACRONYM grid size back to 128x128, and for a reason too, here is the spec including reason http://rafb.net/p/LLTaUp22.txt
21:04:07 <ehird`> that doesn't say *why*
21:04:12 <SimonRC> does
21:04:16 <Hiato> yes, it does :P
21:04:22 <ehird`> and also actually using that tc-ness in practice is... infeasable
21:04:30 <ehird`> 'This language will, by no account, need an infinitely large grid to be Turing complete.' that's not a reason
21:04:54 <Hiato> 1st statement: agreeed :) 2nd statement: why do you say that...
21:04:59 <SimonRC> well, it is an esolang
21:05:26 <SimonRC> making implementation easier at the expense of a horribly complex program is fin
21:05:29 <SimonRC> e
21:05:32 <Hiato> your motivation for an infinite grid was: "This will defiantly make it Turing Complete"
21:06:09 <Hiato> SimonRC, it's not horribly complex ;) it just went down from infinity to 128x128x2, which as ~26000
21:06:17 <Hiato> so still plenty of space
21:06:25 <SimonRC> Hiato: put it there: http://esoteric.voxelperfect.net/wiki/ACRONYM
21:06:27 <SimonRC> Hiato: yes
21:06:47 <Hiato> well ehird`: the actual reason was: how would a mover possibly wrap around the pushed row/column on an infinite grid
21:06:48 <SimonRC> and 128 * 128 * 2 = 32768
21:06:52 <Hiato> not possible
21:06:56 <SimonRC> Hiato: is possible
21:06:59 <ehird`> Hiato: first untouched square
21:07:03 <ehird`> is a wall.
21:07:35 <SimonRC> e.g. if you store the grid as a hashtable
21:07:49 <Hiato> so if I understand then what you're saying is:
21:07:49 <Hiato> x x x x x
21:07:49 <Hiato> x x x x x
21:07:49 <Hiato> ^
21:08:22 <Hiato> if that column is shifted up, then put the top x at the bottom etc.. because the rest of the grid hasn't been used
21:08:48 <SimonRC> what is the implementation language?
21:08:52 <Hiato> hrmm...
21:08:58 <ehird`> i was going to implement it.
21:09:01 <ehird`> in Scheme, or Haskell
21:09:03 <Hiato> well, it is (from my side) delphu
21:09:09 <Hiato> *delphi
21:09:18 <ehird`> in haskell/scheme this would be trivial
21:09:44 <Hiato> actually, if we use that furthest untouched square, then I must say, I like the sound of infinite
21:09:48 <SimonRC> well, Haskell will do fine on it, you just need to map over the keys of the Data.Map
21:10:29 <SimonRC> just rotating the row/col and always making sure you have some padding will work too
21:10:44 <Hiato> hrmm.... that would mean though, that to wrap around a give point, you would need to visit it first, therefore adding loads more instrucitons
21:10:46 <SimonRC> make grid size powers of two, for proper asymtotic behaviourt
21:10:56 <Hiato> ie: the hello world programme would need 15 extra instructions
21:11:08 <SimonRC> wel.....
21:11:42 <Hiato> hrm...
21:11:59 <SimonRC> if the terp could prove that the program would keep going until the row wrapped around, it could "wrap it round infinity"
21:12:02 <SimonRC> :-P
21:12:36 <SimonRC> or you could have an explicit "wrap round infinity" instruction
21:13:37 * SimonRC goes (food, bed, etc)
21:15:08 * SimonRC goes (food, bed, etc)
21:15:29 -!- faxlore has joined.
21:16:07 <Hiato> I can't seem to decide now. For ehird`'s sake I want the infinite grid (and it's cool too), but for thesake of functionality, I want the finite grid
21:16:37 <ehird`> it's functional in my way
21:16:38 <faxlore> hi
21:16:40 <ehird`> unless you use, say, delphi
21:16:41 <ehird`> ;)
21:16:45 <faxlore> What does functionality mean?
21:17:44 <Hiato> lol :)
21:18:08 <Hiato> I meant in terms of extra instructions to use the grid when it is infinite
21:20:34 <Hiato> meh, ok, fine ehird`, you win
21:21:08 <Hiato> as long as it is still possible to use the mover functions
21:21:16 <ehird`> \o/
21:23:23 <oklopol> i love the idea of wrapping around infinity
21:23:35 <Hiato> :D
21:23:55 * faxlore can think of two bijections from N to NxN...
21:24:24 <faxlore> *between
21:25:17 * oklopol can think of an infinite number of them...
21:26:50 <faxlore> What are they all?
21:28:14 <oklopol> if you have N <-> N*N, then you have a function with A!=B -> f(A)!=f(B), right?
21:28:30 <faxlore> Yes
21:30:01 <oklopol> any function f_X(N) = f(N+X) trivially also satisfies the bijection, since A-X!=B-X -> f_X(A)!=f_X(B)
21:30:56 <oklopol> i have a hard time having conversations right now, my client takes a few minutes of lagtime every 3 words i type
21:32:28 <oklopol> my notation may be a bit weird there, but i think i'm correct
21:33:55 <oklopol> oh, right A!=B -> A-X!=B-X -> f(A-X)!=f(B-X) -> f_X(A)!=f_X(B)
21:35:03 <oklopol> do you see?
21:35:12 <faxlore> I don't get it, how does f_X still have .e.g 0 in it
21:35:15 <oklopol> or do you see an error
21:35:29 <oklopol> oh, right, N
21:35:35 <oklopol> in that case, that doesn't apply
21:35:37 <oklopol> sorry
21:35:43 <oklopol> anyway, still trivial
21:35:44 <faxlore> ahh..but this works for Z
21:36:02 <oklopol> yes, anmd you have N <-> Z, so...
21:36:03 <faxlore> (and R.. and there's probably a name for the sets it works øn?)
21:36:04 <oklopol> *and
21:36:27 <oklopol> there might be. i don't really know much math.
21:38:05 <ehird`> Num a
21:38:07 <ehird`> oh wait, math, not haskell
21:38:08 <ehird`> ;)
21:38:40 <oklopol> i doubt Num is the general term in haskell either, though
21:39:42 <oklopol> "forall A in Num: forall B in Num, A-B in Num"
21:42:06 -!- oklofok has joined.
21:45:47 <Hiato> http://rafb.net/p/zz0kwW41.html
21:45:57 <Hiato> ok, there *you* go ehird`
21:46:01 <Hiato> :P
21:46:20 <ehird`> oklopol: Num is the type class of numerics.
21:46:31 <ehird`> Int, Float, ... all have an instance (Num a), where a is the type
21:46:37 <ehird`> I didn't read the stuff above, so, maybe your type is different.
21:46:41 <ehird`> Hiato: :D
21:46:56 <ehird`> it looks all pretty now
21:46:57 <ehird`> heh :D
21:47:06 <Hiato> lol :D
21:47:47 <ehird`> damn i'm good at writing obfuscated haskell
21:47:48 <ehird`> it comes naturally
21:48:01 -!- jix has quit ("CommandQ").
21:48:27 <oklopol> ehird`: it's "forall A in it: forall B in it: A-B in it"
21:48:43 <ehird`> that's one confusing type
21:48:46 <ehird`> :D
21:49:11 <ehird`> (Num a) => (Num b) => ... i get lost around this point.
21:49:28 <faxlore> A:X -> B:X ->(A-B):X
21:50:23 <faxlore> forall A:X, forall B:X, (A-B):X
21:50:27 <ehird`> that's not haskell ;)
21:50:34 * faxlore misused the ->..
21:50:38 <oklopol> it's not haskell, but it's obvious what it means
21:50:56 <oklopol> ehird`: try being a human, not an interp ;)
21:51:09 <ehird`> oklopol: I am an interpreter :|
21:51:15 <ehird`> running IRP
21:52:40 -!- oklopol has quit ("for the need to encumber").
21:55:24 -!- Hiato has left (?).
22:19:19 -!- GreaseMonkey has joined.
22:20:06 * ehird` is rewriting his underload compiler in Haskell
22:20:51 -!- oklokok has joined.
22:22:19 -!- oklofok has quit (Read error: 104 (Connection reset by peer)).
22:26:31 -!- tesseracter has quit (Connection timed out).
22:29:51 * pikhq is enjoying TMBG
22:35:58 <ehird`> pikhq: got The Else?
22:36:10 <pikhq> Yeah, although that's not what I'm listening to ATM.
22:36:17 <pikhq> Severe Tire Damage ATM.
22:37:53 -!- timotiis has quit ("leaving").
22:41:10 -!- Jontte has joined.
22:46:50 -!- ihope has joined.
22:47:22 <ehird`> 'lambda unrolling' is a pain, in underload
22:47:25 <ehird`> to summarize
22:47:48 <ehird`> when given "abc(def(ghi)blah)xyz" to compile, i need to produce something like: (where <...> means 'compiled code of ...')
22:48:09 <ehird`> void f1(void) { <abc> pushfunc(f2, "def(ghi)blah"); <xyz> }
22:48:18 <ehird`> void f2(void) { <def> pushfunc(f3, "ghi"); <blah> }
22:48:22 <ehird`> void f3(void) { <ghi> }
22:48:32 <ehird`> and in haskell, it's a PAIN to do that without some kind of ugly monad
22:49:15 <faxlore> ehird`: Convert it to CPS first?
22:49:32 <ehird`> faxlore: that makes no sense in the context of underload
22:51:18 <ihope> apply (compile "abc") (apply (compile "def") (compile "ghi") `then` compile "blah") `then` compile "xyz"?
22:52:03 <ehird`> ihope: except that would compile xyz somewhere in f3, or maybe even in the bare source code
22:52:09 <ehird`> it's the unrolling that's the problem
22:52:52 <ihope> The problem is trying to implement Underload in Haskell?
22:53:10 <ehird`> err, no
22:53:12 <ehird`> COMPILING
22:53:17 <ehird`> which is a whole different ballgame
22:53:56 <faxlore> ehird`: Do you have some internal representation for "abc(def(ghi)blah)xyz", What does that strings AST look like?
22:54:37 <ehird`> faxlore: it looks like a String, because I need to have the string contents of (...) at all times. plus all commands are single-char so it isn't much of a pain. I could parse it but it's a lot of effort for little worth
22:59:51 <faxlore> This is cool
23:00:25 <faxlore> I can't see how you would compile ^ though.. without writing an interpreter?
23:01:16 <ihope> I guess that makes Underload a scripting language. :-P
23:01:51 * faxlore is assuming there is some way, that they haven't thought of
23:02:25 <ehird`> faxlore: trivial
23:02:29 <ehird`> whenever you see (...)
23:02:37 <ehird`> compile the code inside, and push (str,funcptr)
23:02:43 <ehird`> ^ is just a call to that.
23:02:50 <ehird`> this is why you need to unroll
23:03:05 <ehird`> abc(def(ghi)) needs to be abc<PTR>; def<PTR>; ghi
23:03:23 <ihope> Oh, indeed.
23:05:08 <ehird`> and ofc you do it recursively
23:05:08 <ehird`> but
23:05:18 <ehird`> that means the 'top function number' (for fN) might increase more than 1
23:05:26 <ehird`> so you need to keep track of that and sdfhakjhdsklgdskjfgjdhgahjsdgeuwyrygiubvhjasbbhdklglyp
23:05:55 <faxlore> isn't it possible to generate some code, (like every permutation or something, for example) and call that (with ^) ?
23:10:10 <ehird`> faxlore: ?????????
23:10:19 <ehird`> yes
23:10:21 <ehird`> but
23:10:23 <ehird`> that's why you have
23:10:27 <ehird`> "next" and "inner" pointers
23:10:37 <faxlore> ahh
23:10:40 <ehird`> (a)(b)* -> {a; next={b; next=NULL}}
23:11:09 <ehird`> (xy)(zzy)*a -> {inner={xy; next={zzy; next=NULL}}}
23:11:23 <faxlore> this is really mad
23:11:32 <faxlore> please show me this compile when it's done? :D
23:13:05 <ehird`> i already have a one that works..
23:13:16 <ehird`> it's ugly, imperative, slow scheme and the output c code is ugly and non-indented
23:15:53 <ehird`> also it's buggy.
23:16:54 <ehird`> fun
23:16:59 <ehird`> hm i wonder if any of you recieved that
23:17:00 <ehird`> basically:
23:17:06 <ehird`> */*/**/****SHITLOAD OF *s
23:17:07 <ehird`> segfault.
23:30:40 -!- RedDak has quit (Read error: 113 (No route to host)).
23:32:42 -!- immibis has joined.
23:34:16 <ehird`> argh
23:34:20 <ehird`> i ALMOST had it there
23:35:56 -!- immibis_ has joined.
23:36:02 <bsmntbombdood> ugh
23:36:05 <bsmntbombdood> dvorak is infuriating
23:36:24 <ehird`> no, compiling underload is
23:36:38 <bsmntbombdood> not dvorak specifically, but not being able to type fast
23:37:37 <faxlore> \me switches to dvorak
23:37:49 * ihope switches to dvorak
23:40:10 <ihope> Yd.p.!
23:41:08 <ihope> I can almost type if I try hard enough.
23:42:04 <ihope> Much practice is required.
23:42:04 -!- immibis has quit (Nick collision from services.).
23:42:06 -!- immibis_ has changed nick to immibis.
23:47:20 <ehird`> if only there was an imperative language with the elegance of haskell :P
23:47:23 <ehird`> this would be a doddle.
2008-01-15
00:04:19 -!- CoffeeMaker has joined.
00:04:19 * CoffeeMaker is making a decaf espresso orange juice with an infinite number of sugars in a bathtub with a goat in it for this channel
00:04:24 * CoffeeMaker spills the channel's coffee into a Magnetic Laser Device
00:04:24 * CoffeeMaker gives everyone in this channel a magnetic decaf espresso orange juice with an infinite number of sugars in a bathtub with a goat in it which is emitting lots of blue light and a barely audible hum
00:04:27 -!- CoffeeMaker has left (?).
00:04:31 <ehird`> okay.
00:04:33 <immibis> !!!
00:04:39 <ehird`> immibis: you did this.
00:04:47 <faxlore> Internet
00:08:14 <immibis> faxlore: ?
00:09:38 <faxlore> re: CoffeeMaker
00:10:46 <ehird`> Behold: I have made lisp an esolang.
00:10:47 <ehird`> (def acc [{++ _}])
00:10:57 <ehird`> Paul Graham would be proud of my, er, 'terseness'.
00:11:06 <faxlore> lol
00:11:41 <ehird`> (def acc [{++ _}]) -> (def acc (lambda (_) {++ _})) -> (def acc (lambda (_) (lambda a (apply ++ (cons _ a)))
00:11:57 <ehird`> ergo, acc is roughly: (def acc (lambda (n) (lambda (x) (++ n x))))
00:12:05 <pikhq> :-O
00:12:12 <ehird`> {..} is partial application, and [...] a lambda with _ meaning 'the next argument'
00:12:42 <ehird`> [+ _ _] is a + that only takes two arguments ;)
00:12:47 <oklokok> couldn't you just add implicit lambdas + *currying*?
00:12:58 <ehird`> oklokok: 0-arg functions, var-arg functions
00:13:07 <oklokok> that's a minority.
00:13:10 <ehird`> 0-args can be replaced with thunks, va-arg is more problematic
00:13:11 <ehird`> and no
00:13:15 <ehird`> va-args are very common in lisp land.
00:13:31 <faxlore> +infix...
00:13:39 <oklokok> just have [] currying then
00:13:41 <oklokok> *be
00:13:42 <oklokok> i mean
00:13:51 <ehird`> Hmm, I could possibly replace (def acc [{++ _}]) with (= acc [{++ _}]), but then i couldn't use = for setf like crazy-Arc does.
00:13:54 <oklokok> asdf.
00:13:59 <faxlore> and drop tose paranthesis
00:14:03 <ehird`> (def acc [{++ _}]) seems like the best blend of obfuscation and readability to me ;)
00:14:08 <faxlore> ;p
00:14:10 <ehird`> compare to the scheme:
00:14:11 <ehird`> (def acc [{++ _}])
00:14:24 <ehird`> (define (acc n) (lambda (x) (set! n (+ n x)) n))
00:14:32 <ehird`> or the Common Lisp:
00:14:43 <ehird`> (defun acc (n) (lambda (x) (incf n x)))
00:14:49 <ehird`> or even the Arc:
00:14:56 <ehird`> (def acc (n) [++ n _])
00:16:57 <oklokok> ehird`: anyway, if non currying is common, why not have two separate function applications, [] and (), where the other curries, and the other one gives the args, and actually calls, currying is COOL
00:17:05 <oklokok> it's AWESOME i tells ya.
00:17:11 <ehird`> oklokok: that's basically what i have.
00:17:13 <ehird`> except it's {}
00:17:17 <ehird`> and [] is lambda shorthand.
00:18:09 <oklokok> right.
00:18:18 <ehird`> faxlore: my lisp is crazy because . can be the car of a list :D
00:18:21 <oklokok> except it's not exactly the same in the usage above
00:18:22 <ehird`> (. a b c ...) is compose
00:18:33 <faxlore> :O
00:20:52 <ehird`> (def id [_])
00:21:04 <ehird`> it looks like a mini-DSL embedded that can embed the toplevel, heh
00:23:11 <ehird`> faxlore: show me something that uses a lot of currying, composition, etc. and looks kinda ugly/large in normal lisp
00:23:15 <ehird`> and i'll CONCISIFY IT :D
00:26:33 <faxlore> with multiple-value-bind use?
00:27:27 <faxlore> ah!
00:27:34 <faxlore> cartesian-product
00:27:56 <faxlore> variadic
00:27:58 <ehird`> faxlore: show me your definition, i'll show you your definition short.
00:28:17 <faxlore> (defun cartesian-product (&rest lists)
00:28:17 <faxlore> (if (endp lists) '(())
00:28:17 <faxlore> (apply #'append
00:28:17 <faxlore> (mapcar #'(lambda (head) (mapcar #'(lambda (tail) (cons head tail))
00:28:17 <faxlore> (apply #'cartesian-product (rest lists))))
00:28:17 <faxlore> (first lists)))))
00:31:04 <ehird`> faxlore: okies, translation
00:31:36 <ehird`> faxlore: by the way, shall i memoize it?
00:31:43 <ehird`> as simple as changing 'def' to 'defmemo' :)
00:31:49 <oklokok> I HAVE IT IN MY NEW LANGUAGE CARTESIAN-LOL: IT'S THE C FUNCTION "C"
00:32:02 <faxlore> hahaha
00:32:02 <oklokok> i'll do some sleeping now ->
00:32:16 <ehird`> faxlore: endp == {eq ()}?
00:32:19 <ehird`> wait, no
00:32:23 <ehird`> {eq (())}?
00:32:25 <ehird`> eck, i dunno
00:32:26 <ehird`> :D
00:33:13 <faxlore> {≡∅}
00:33:21 <ehird`> faxlore: clarify endp and i'll translate it :P
00:33:49 <faxlore> endp = null?
00:34:09 <ehird`> okay
00:34:17 <ehird`> nilp, then
00:36:26 <ehird`> um faxlore
00:36:33 <ehird`> do you meant to discard the mapcar in the lambda?
00:36:33 <ehird`> ;)
00:36:37 <ehird`> i think you need to balance your parens
00:36:59 <faxlore> * Now talking on #'(lambda
00:37:05 <faxlore> oops
00:37:34 <ehird`> haha
00:37:44 <ehird`> i think put it in a pastebin once you clarify it ;)
00:39:10 <faxlore> CL-USER> (cartesian-product '(a x) '(1 2 3))
00:39:11 <faxlore> ((A 1) (A 2) (A 3) (X 1) (X 2) (X 3))
00:39:30 <faxlore> works for me...
00:39:49 <ehird`> ok, maybe i read wrong
00:39:57 <ehird`> ah i see.
00:40:34 <faxlore> http://rafb.net/p/2Lk59U92.txt
00:41:31 <faxlore> (cons head tail) becomes `(,h . ,t)?
00:42:41 <ehird`> faxlore: http://rafb.net/p/OGdGWT60.txt
00:42:52 <ehird`> and naw
00:42:56 <ehird`> far more concise than that :-)
00:43:10 <ehird`> while still havinga reasonable theoretical basis!
00:43:13 <ehird`> hooray for [] and {}
00:44:23 <ehird`> faxlore: if i wanted i could make it more concise. but this way it's readable
00:44:29 <faxlore> make it shortec :P
00:45:00 <ehird`> faxlore: why, it's readable, a lot less ugly than the CL and a lot shorter
00:45:00 <ehird`> :D
00:45:56 * faxlore personally think, not less ugly
00:46:16 <ehird`> in CL you have loads of non-functional mess with #' and weird stuff like (&rest ...)
00:46:19 <ehird`> and arcane names
00:46:48 <faxlore> oh, it is pesonal style
00:46:52 <ehird`> faxlore: however... for shortness... I shall get out my secret weapon: EXTRACT
00:47:02 <ehird`> extract is a pattern-matching let, thing.
00:47:23 <ehird`> (extract ((a . b) p) ...) is (let ((a (car p)) (b (cdr p))) ...)
00:47:26 <ehird`> and similar stuff
00:47:32 <faxlore> none of the #' is required
00:47:44 <ehird`> yeah well, comment on extract :P
00:47:55 <oklokok> i've always wanted pattern matching in scheme
00:48:09 <ehird`> oklokok: not quite scheme her, more like a blend of common lisp and scheme
00:48:12 <ehird`> more on the side of scheme though
00:48:15 <oklokok> indeed.
00:48:37 <faxlore> This is a good use of macros
00:48:39 <oklokok> that was a positive comment because of "comment on extract".
00:48:57 <ehird`> faxlore: yep EXTRACT is a macro
00:49:38 <ehird`> well
00:49:42 <ehird`> macro or special form
00:49:56 <ehird`> since an implementation might not want to go to the trouble of writing such a huge thing as a macro ;)
00:50:29 <faxlore> emacs with dvorak ;_;
00:50:31 <ehird`> faxlore: care to give me any other reducing-targets? :D
00:50:52 * faxlore goes to look
00:52:01 -!- Hypercaffeinated has joined.
00:52:02 * Hypercaffeinated is making a smack in a head with a full carton of milk for this channel
00:52:02 * Hypercaffeinated gives everyone in this channel a smack in a head with a full carton of milk
00:52:02 -!- Hypercaffeinated has left (?).
00:52:54 -!- Corun has quit ("This computer has gone to sleep").
00:53:08 <ehird`> stop it immibis
00:53:16 <immibis> ok
00:55:49 <ehird`> faxlore: ... :P
01:01:47 <ehird`> faxlore: ping
01:03:21 <faxlore> Excuse my typing so slow, dvorak in difficult
01:05:47 <ehird`> heh
01:05:57 <ehird`> paredit will help you in typing out a function ;)
01:06:22 <faxlore> Love paredit!
01:06:35 <ehird`> me too although it has its flaws
01:11:10 <ehird`> faxlore: obviously Concise Lisp will come with its own emacs-alike written in Concise Lisp ;)
01:12:46 <faxlore> AAA!
01:13:01 <ihope> I can type faster on Dvorak than some people can at all.
01:14:44 <ihope> (I wonder if a Dvorak wave is spreading across the Internet right now.)
01:15:45 <oklokok> you cannot get dvoraks anywhere
01:15:50 <oklokok> in here.
01:15:54 <ehird`> rearrange your keys.
01:16:03 <ehird`> faxlore: AAA what.
01:16:10 <oklokok> doesn't sounds like something i would do.
01:16:13 <oklokok> *sound
01:16:24 <faxlore> "emacs-alike written in Concise Lisp"
01:17:48 <ehird`> WHAT'S WRONG WITH THAT FAXLORE :(
01:18:24 <faxlore> MAD!!!
01:18:34 <faxlore> + good
01:19:45 <ehird`> :D
01:20:04 <ehird`> faxlore: every buffer can act as a listener
01:20:07 <ehird`> with a seperate namespace
01:20:25 <ehird`> so basically it's a REPL but with files and loads of refactoring stuff and a debugger built right in to the file itself and AAAAAAAAAAAAAAAAAAAAAAAA
01:21:04 <faxlore> hahah
01:22:06 <ehird`> faxlore: also you can modify the ENTIRE EDITOR in itself
01:22:15 <ehird`> in its whole, complete, entirity.
01:24:04 <ehird`> faxlore: PLEASE BE ASTONISHED.
01:24:27 <faxlore> AAAAA!!!!!
01:25:38 <ehird`> great
01:26:01 <ehird`> faxlore: For example.
01:26:23 <ehird`> where 'edit' is to be substituted for the editors name and thus package name:
01:28:08 <ehird`> faxlore: http://rafb.net/p/GL1Wpg49.txt
01:28:34 <ehird`> (in-package X) is 'global' and thus works basically like common lisp's in-package
01:28:42 <ehird`> but (in-package X FORMS...) is local to that form
01:28:49 <faxlore> :D
01:29:03 <ehird`> ergo: my definition is extremely pretty and elegant and shows how awesome both the language and editor will be
01:29:05 <ehird`> agree/disagree
01:29:35 -!- sebbu has quit ("@+").
01:31:27 <ehird`> faxlore: http://rafb.net/p/tuLeKI45.txt overriding insert-brace (which will be bound to (, {, [, etc. by default)
01:31:44 <ehird`> ofc there'll probably be a more featureful equivilent by default, but hey, it's a good example.
01:32:14 <faxlore> Cool :D
01:33:03 <ehird`> faxlore: this thing started off esoteric but already i'm liking it more than scheme or common lisp :P
01:33:11 <ehird`> just looks nice.
01:33:30 <faxlore> hehe, hopes it works well
01:34:59 <ehird`> faxlore: i might add an implicit EXTRACT to parameter lists
01:35:09 <ehird`> (def revpair ((a . b)) (cons b a))
01:36:07 <ehird`> faxlore: bit of a problem if you want to handle nil as well though
01:37:07 -!- faxlore has quit ("If there are any aliens, time travellers or espers here, come join me!").
01:38:02 -!- faxlore has joined.
01:38:21 <ehird`> wb faxlore :P
01:38:36 * faxlore has trouble with a new keyboard layout..
01:38:41 <ehird`> heh
01:39:11 <ehird`> faxlore: I think EXTRACT might become my LOOP: crazy big language embedded in Lisp
01:39:25 <faxlore> Yay!
01:39:30 <faxlore> LOOP is -awesome-
01:39:35 <ehird`> i hate you :P
01:39:44 <faxlore> I love LOOP and FORMAT...
01:40:08 <faxlore> A lot of people.. use iterate
01:40:12 <faxlore> but I think they missed some good things
01:40:23 <faxlore> (in the dark corners of loop)
01:40:26 <ehird`> (def silly (lst) (extract (((first rest... last)) lst)) (cons last (append rest (list first)))))
01:40:39 <ehird`> (silly '(1 2 3 4)) => (4 2 3 1)
01:40:49 <ehird`> (silly '(1)) => error
01:40:54 <ehird`> (silly '(1 2)) => (2 1)
01:41:07 <ehird`> (silly '(1 2 3 4 5 6)) => (6 2 3 4 5 1)
01:44:05 <ehird`> faxlore: Unfortunately extract is not turing-complete. Yet. :-)
01:50:51 <ehird`> faxlore: Pingify
01:52:23 <ehird`> faxlore: By the way, (def 1+ {+ 1}) actually defines as a function, as opposed to (= 1+ {+ 1}) or whatever.I haven't decided if there's any signifigance to this or even whether it will stay like that, though, because atm functions and variables share the namespace (i.e. Lisp-1)
01:53:22 * faxlore nod.. thats a hard choice
01:53:41 <ehird`> faxlore: I think it's more elegant since it resembles the Lambda-calculus more and allows for higher-order functions to be much more elegant
01:53:48 <ehird`> and I personally don't mind typing lst instead of list ;)
01:54:06 <ehird`> actually it'd be confusing to have a param named list anyway even in CL
01:54:31 <ehird`> faxlore: An interesting thing I have is the generic lookup function !
01:54:42 <ehird`> (! lst i) -> lst element i, zero-based
01:54:51 <ehird`> (! ary i) -> array element i, also zero-based
01:54:59 <ehird`> (! ht "blah") -> hash table element "blah"
01:55:45 <ehird`> name borrowed from haskell's infix operator !, obviously
01:55:57 -!- immibis has left (?).
01:56:48 <ehird`> faxlore: COMMENT OR DIE! :P
01:57:38 * faxlore takes time! yd.f t.fo ap. bry ,d.p. yd.f odrgne x.!
01:57:58 <ehird`> hehe, i'll wait for your comments :P juist send em in one big message
01:59:29 <faxlore> I woiuld debate that Lisp-1/2 is orthogonal to ST Lambda-calculus axis
01:59:43 <ehird`> faxlore: sure, i guess, but hey.
02:00:45 <faxlore> generic lookup's great... Hopes it is extensible
02:01:19 <ehird`> faxlore: extensible in what way
02:02:13 -!- ihope has quit (Read error: 110 (Connection timed out)).
02:02:14 * faxlore defines a new type... wishing to use ! on it
02:03:55 <ehird`> oh of course.
02:04:03 <ehird`> i think all functions will be generic
02:04:24 <ehird`> and the (def func (args) ...) being shorthand for it
02:04:41 <ehird`> well, it would be shorthand for something which would be optimized away to be non-generic until new terms are added
02:04:53 <ehird`> faxlore: a generic setter would be nice too but i don't really like setf
02:05:00 <ehird`> (setf (car x) y) just doesn't rub well with me
02:05:02 <ehird`> however,
02:05:13 <ehird`> (setter-thing ht "blah" "xyzzy") does.
02:05:25 <ehird`> (setter-thing lst 1 'abc) too
02:05:40 <ehird`> can't think of a good name though
02:05:45 <ehird`> well, = might work..
02:05:53 <ehird`> (= lst 3 "hello")
02:05:58 <ehird`> (= ht "xyzzy" "plugh")
02:06:01 <ehird`> hmm, i guess so..
02:06:29 <ehird`> faxlore: the thing with lisp-1ness is that it goes hand in hand with [..] and {..}
02:06:41 <faxlore> You seem much more a schemer than lisper/CLer :p
02:06:53 <ehird`> you want to be able to construct one of those things and return them first-class
02:07:06 <ehird`> faxlore: i guess so though i do accept scheme has its flaws and CL has a lot of good things
02:07:11 <ehird`> faxlore: what specifically make syou say that?
02:08:03 <faxlore> Of course, they are both incredibly well designed
02:09:05 <faxlore> terniary =.... bad
02:09:08 <ehird`> I guess I like the idea of Scheme with extra practicality added more than Common Lisp's based-on-practicality-and-featureness
02:09:15 <ehird`> faxlore: yeah i'd agree with that =
02:09:34 <ehird`> haskell has no direct setter equiv to ! but that's because they're immutable
02:09:54 <ehird`> set! of course has scheme destructive-marker implications
02:10:03 <ehird`> !set is incredibly ugly ;)
02:10:07 <EgoBot> Huh?
02:10:37 <faxlore> beause off not liking setf
02:10:54 <ehird`> oh, well setf just seemed a bit silly to me
02:11:09 <faxlore> Perl6 has it as well, I think
02:11:18 <faxlore> (defineable lvalues)
02:11:34 <ehird`> you can /kind of/ pretend to yourself that you're setting what a function will return... but it'll never be transparent, it'll always shine through and really it doesn't gain much in readability (and arguably impacts on it)
02:15:48 <ehird`> faxlore: i'm wondering whether i should just make it even crazier by adding a scheme-like (delay X) but with no force
02:15:54 <ehird`> it's implicit, like haskell's lazy evaluation
02:16:02 <ehird`> one way road to BUGS BUGS BUGS! :D
02:16:36 <faxlore> too strong haskell influence
02:16:49 <ehird`> faxlore: i know. but funny.
02:16:53 <faxlore> lav
02:17:12 <ehird`> faxlore: hmm, it occurs to me i've got something like CLOS built in but without the classes or objects ;)
02:17:14 <faxlore> lazy scoping?
02:17:37 <ehird`> that is, you can define structures and they become regular first-class types like 'pair' or 'integer'
02:17:43 <ehird`> and therefore generic functions can dispatch on them
02:17:45 <faxlore> have you read AMOP?
02:17:54 <ehird`> no MOP, obviously :)
02:19:31 -!- faxlore has quit ("If there are any aliens, time travellers or espers here, come join me!").
02:20:44 -!- faxlore has joined.
02:21:12 <ehird`> faxlore: personally i say 'thank god' to the going of the MOP
02:21:17 <ehird`> but i'm biased, ofc ;)
02:21:34 <ehird`> however:
02:21:43 <faxlore> huh? "going of the MOP"
02:21:54 <ehird`> (type-of my-structure) => #<type 'type'>
02:22:03 <ehird`> (type-of type-type) #<type 'type'>
02:22:08 <ehird`> (last line: most confusing evar)
02:22:19 <ehird`> so, i guess you could extend type in some crazy way
02:22:22 <ehird`> and get a pseudo-mop
02:23:30 <faxlore> is that Type : Type I see!
02:23:41 <ehird`> something like that, yeah.
02:23:44 <faxlore> absurd!
02:23:49 <ehird`> heh
02:23:49 <faxlore> :P
02:23:49 <ehird`> why
02:23:51 <ehird`> :P
02:24:34 <ehird`> a type is-a type.
02:24:43 <ehird`> thus their type is also a type.
02:24:53 <ehird`> but their type is 'type', so (type-of type-type) => type-type
02:24:55 <faxlore> (girards paradox, if you take curry howard srs)
02:26:09 <ehird`> oh dear, paradoxes
02:26:14 <ehird`> but Smalltalk does it and Smalltalk isn't insane! :P
02:26:22 <faxlore> yeah, it's not relevant :P
02:26:36 <ehird`> damn you :P
02:26:39 <faxlore> just attempting Type theory puns when there is an opportunity..
02:26:46 <ehird`> haha
02:27:06 <faxlore> hey I wrote a type and term inferrence thingyjigs in haskell for the simply types lambda cal
02:27:20 <ehird`> I think [{++ _}] might be the first 'does something non-trivial' function in Lisp with no parentheses
02:27:21 <ehird`> :P
02:28:47 <ehird`> Hmm, how to parse [{++ _}]... First I need to come up with a name for _-advances-to-next-param lambdas :P
02:29:08 <ehird`> {...} can be (apply-partial ...)
02:31:40 <ehird`> nameless-lambda i guess.
02:31:47 <ehird`> (nameless-lambda (apply-partial ++ _))
02:31:50 <ehird`> Kind of ugly but eh.
02:32:05 <ehird`> nameless-lambda's definition will of course be epic :P
02:32:08 <faxlore> heheh nameless-lambda
02:32:54 <ehird`> Note: nameless-lambda is not the opposite of named-lambda. Unfortunately.
02:32:58 <ehird`> (Perl documentation reference!)
02:33:04 <faxlore> why not expand at parse time?
02:33:22 <ehird`> faxlore: because i'd have to do alpha-conversion of names
02:33:42 <faxlore> gensym!!
02:33:46 <ehird`> so (read) would become 2384972398479238472389472394 times more clever than it should be
02:33:48 <ehird`> faxlore: eh.
02:34:01 <ehird`> faxlore: i guess i just think read should be dumb
02:34:09 <ehird`> What if I want to read in a file with [...] and {...} in?
02:34:19 <faxlore> #;> (gensym)
02:34:19 <faxlore> |%%_LEKqa1Ql9|
02:34:22 <ehird`> OK, nameless-lambda and apply-partial would make the thing weird for names but you could do '{...} and '[...]
02:34:30 <ehird`> and i know what gensym is... what lisp impl is that? weird prompt
02:34:44 <faxlore> SISC
02:35:17 <ehird`> but that's Scheme! :P
02:35:24 <ehird`> I thought you were a lisper. :P
02:35:55 * faxlore still lot for language
02:36:06 <faxlore> lost*
02:36:18 <ehird`> faxlore: No you're not! Concise Lisp (which needs a name change)! :P
02:36:25 <faxlore> LOL
02:36:56 <faxlore> I like the name a bit
02:37:08 <ehird`> it's abbreviated to CL, that might be a problem :P
02:37:53 <faxlore> ahh true
02:40:50 <ehird`> Quote Lisp!
02:40:58 <ehird`> For the 'Lisp
02:41:00 <ehird`> err
02:41:12 <ehird`> For the (quote lisp) => lisp pun.
02:41:21 <ehird`> (i.e.,
02:41:31 <ehird`> "Quote Lisp is THE ONLY Lisp!". lame i know)
02:43:15 <ehird`> faxlore: I hope to get a good string library in with it... it's time for lisp to stop denying strings as Holy Things :P
02:44:15 <faxlore> strings as lists > strings as vectors
02:44:30 <ehird`> faxlore: ... right up until when you start doing serious work with them
02:44:44 <faxlore> serious work???
02:44:52 <ehird`> more than toy string manipulation programs.
02:45:00 <ehird`> faxlore: Oh yeah and you'll probably HATE this but lambda is being renamed to fn for exactly the same reasons that PG did it in Arc: lambda is a lot to type for something so commonly used (did Church write "lambda"? No! He wrote one symbol. Big difference.), so eh.
02:45:30 <faxlore> I deo hate that
02:45:52 <faxlore> call it lambda or λ
02:46:09 <faxlore> or ` or \
02:46:34 <ehird`> faxlore: ` is quasiquote
02:46:38 <faxlore> fn disgusts :P
02:46:41 <ehird`> \ escapes stuff, etc
02:46:49 <ehird`> unicode is... not plausible for that ;)
02:46:54 <faxlore> fun is fine
02:46:58 <ehird`> eh suggest something else..
02:47:03 <ehird`> lm?
02:47:05 <ehird`> ld?
02:47:28 <faxlore> (In ML.. Not lisps)
02:47:45 <ehird`> faxlore: as i say: suggest
02:47:46 <ehird`> ugh
02:47:50 <ehird`> reading PG's stuff on Arc:
02:47:51 <ehird`> - Polymorphism: (+ "foo" "bar") -> "foobar"
02:47:54 <ehird`> BAD WRONG NO.
02:48:08 <ehird`> + a commutative, whatever-the-word-is-for-ignoring-associativity operation
02:48:10 <ehird`> concatentation is NOT
02:48:53 <faxlore> Arc is not worth learning about... publicity stunt
02:49:03 <ehird`> yeah, i know
02:49:12 * faxlore think that's hypocritical nonsense.
02:49:13 <ehird`> but still... using + for that is evil
02:49:22 <faxlore> he uses = as something which does assignment
02:49:28 <faxlore> (unless that changed)
02:49:34 <ehird`> get yourself a concatentation operation and use that!
02:49:41 <ehird`> I hear we have one called 'append'...
02:52:25 <ehird`> faxlore: Oh yeah, and progn/begin is called 'do'
02:52:32 <ehird`> 'progn' - uhh, sure...
02:52:35 <ehird`> 'begin' - begin what?
02:52:40 <ehird`> 'do' - do these things.
02:54:41 * faxlore lol at 'progn' comment
02:54:55 <ehird`> :)
02:55:09 <ehird`> 'prog': To prod with prongs
02:55:16 <ehird`> 'n': abbreviation of "and"
02:55:22 <ehird`> Prod with prongs, AND: ...
02:56:24 <GreaseMonkey> heh
02:56:49 <ehird`> faxlore: I don't really like letrec (seems like a bit of a kludge to me) but I want mutually recursive functions to be easy to define. Hmm, hmm, hmm.
02:57:06 <faxlore> How can you say that about LETREC!!!!?
02:57:40 <ehird`> faxlore: heh :)
02:57:45 <faxlore> Let's see you derive generalied applicative order Y combinators faster than you can type 'letrec' !!
02:58:11 <ehird`> meep
02:58:12 <ehird`> :-)
02:58:22 <faxlore> :D
02:58:27 <ehird`> This is Heretical Lisp i'm aware :D
02:58:49 <ehird`> Heck, I'm even adding quite a few loop constructs, probably... But they expand into tail-recursive functions so that's OK
02:58:51 * faxlore can tell.. it will have much to stir deamons
02:58:54 <faxlore> much power*
02:59:22 <ehird`> :D
03:02:28 <ehird`> faxlore: I think I'll have something like haskell
03:02:29 <ehird`> 's maybe
03:02:34 <ehird`> except implicit Just
03:02:43 <ehird`> so you have a (nothing), which i might give a nicer name
03:02:51 <ehird`> note: NOT equivilent to 'unspecified'
03:02:57 <ehird`> it's a BadThing(TM)
03:03:07 <faxlore> (kang.o)
03:03:18 <faxlore> -_-
03:03:36 <faxlore> (values) ; :)
03:03:57 <ehird`> (values) is 'unspecified'
03:04:13 <ehird`> 'def' should return 'unspecified'. (if #f blah) should return 'unspecified'
03:04:49 <ehird`> 'something which is either: some values, or: fail/nothing' should use (fail) or (nothing) or whatever.
03:08:49 <ehird`> anyway
03:08:51 <ehird`> talk more tomorrow.
03:08:52 <ehird`> bye.
03:09:03 <faxlore> see ya
03:16:00 -!- Arrogant has joined.
03:51:40 -!- faxlore has left (?).
04:19:20 -!- Arrogant has quit ("Leaving").
04:21:51 -!- Merthsoft has joined.
04:22:09 -!- Merthsoft has left (?).
05:21:41 -!- calamari has joined.
05:23:46 -!- slereah_ has joined.
05:24:48 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
05:25:46 -!- RodgerTheGreat has quit.
05:31:49 -!- calamari has left (?).
05:39:35 -!- Figs has joined.
05:41:17 <Figs> hello
05:44:44 <Figs> Does anyone know why I get weird warnings (ex, "no newline at end of file") when I include a file from within a function in C? (It has an extra newline at the end of the file...)
05:44:57 <Figs> I'm doing some weird stuff, so I figure it's better to ask here than in #C :)
05:45:10 <slereah_> I'm no C guy.
05:46:06 <Figs> I'm actually starting to like C again after learning about __func__
05:46:19 <slereah_> You're a lucky man
05:46:23 -!- slereah_ has changed nick to Slereah.
05:46:37 <Figs> Nah, I'm a nut case, I think.
05:47:01 <Slereah> Doesn't mean you're not lucky!
05:47:06 <Figs> :P
05:47:19 <Figs> So what's going on here these days?
05:47:27 <Figs> I haven't been around in a while...
05:48:44 <Slereah> Language creation, all that.
06:14:52 <Figs> bbl maybe
06:14:54 -!- Figs has left (?).
06:58:09 <oklokok> [05:02] <ehird`> 'def' should return 'unspecified'. (if #f blah) should return 'unspecified'
06:58:10 <oklokok> [05:03] <ehird`> 'something which is either: some values, or: fail/nothing' should use (fail) or (nothing) or whatever.
06:58:27 * oklokok thinks it's awesome to define 'undefined' :D
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:55:06 -!- 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. Man who run behind car get exhausted").
09:08:36 <AnMaster> hm, game of life is rather interesting, it is in a way multitasking
09:08:44 <AnMaster> and turing complete
10:30:59 <Slereah> Maybe I should try creating one.
10:33:15 <Slereah> I'm sure it will be less dry than that 2,3 machine I'm trying to understand
10:38:14 <Slereah> I should really work on that N->ZxZ function. I run in that problem when I try to make some 2D language.
11:19:55 <Slereah> Is there a big bestiary for the Conway game of life?
11:25:45 -!- slereah_ has joined.
11:28:58 -!- sebbu has joined.
11:34:53 * slereah_ is thinking of some convoluted way to make an I/O game of life
11:52:21 -!- Slereah has quit (Read error: 110 (Connection timed out)).
12:28:16 -!- ihope_ has joined.
12:28:17 -!- ihope_ has changed nick to ihope.
13:05:11 -!- jix has joined.
13:49:36 -!- Asztal has joined.
14:32:13 -!- SimonRC has quit (Remote closed the connection).
14:32:17 -!- SimonRC has joined.
15:38:31 -!- oerjan has joined.
15:39:53 <oerjan> <oklopol> i love highlighting oerjan.
15:40:14 <oerjan> you don't say.
15:42:01 <oerjan> (oh, and yes, i could tell you the three monad laws if you don't know them yet.)
15:43:11 -!- slereah_ has changed nick to slereah__.
15:45:37 <slereah__> What's a good symbol for a game of live cell?
15:45:39 <slereah__> #?
15:45:46 <slereah__> *f
15:45:53 <oerjan> live or dead?
15:46:10 <slereah__> Live.
15:46:14 <slereah__> Dead will be space.
15:46:48 <oerjan> something a bit symmetric...
15:47:20 <oerjan> although * is tempting.
15:47:34 <SimonRC> the blackes thing you can get your hands on
15:47:45 <slereah__> Racist.
15:47:52 <SimonRC> some of the "graphics" chars would be a better choice, surely?
15:48:07 <slereah__> Well, so far it's ASCII's.
15:48:23 -!- jix has quit (Nick collision from services.).
15:48:24 <slereah__> And run on the Kubuntu shell, so the whole screen is black.
15:48:33 -!- jix has joined.
15:49:08 <oerjan> s/blackes/unspaciest/
15:49:41 <oerjan> (that's almost unspeciesist)
15:49:46 <slereah__> That's why I thought of the #
15:49:58 <slereah__> It seems bulky enough
15:50:05 <slereah__> Although * is indeed tempting
15:50:12 <oerjan> what about actual ANSI color?
15:50:38 <slereah__> How do I do colors on the snake?
15:50:48 <oerjan> snake?
15:50:52 <slereah__> Python.
15:50:59 <slereah__> The penguin being Linux.
15:51:07 <oerjan> i assume it's a terminal thing
15:51:19 <oerjan> there was a wikipedia page
15:51:44 <slereah__> Exception handling makes me frown.
15:51:52 <oerjan> http://en.wikipedia.org/wiki/ANSI_escape_code
16:05:25 <slereah__> Aw hell.
16:05:38 <slereah__> do I need two grids for the game?
16:06:26 <oerjan> for game of life?
16:06:32 <slereah__> One to check the previous state and one to apply change to.
16:06:50 <slereah__> I fear what will happen otherwise
16:06:51 <oerjan> there is a way to do it with only a line of extra buffer
16:07:34 <oerjan> since you only need to look at the next and previous lines, you can discard older lines than that
16:08:03 <slereah__> Problem is, my grid isn't really a set of lines.
16:08:33 <slereah__> The square 123456789 is this :
16:08:34 <oerjan> on the other hand having two full grids may allow for more simultaneous updates i think
16:08:35 <slereah__> [[' ', ' ', '7', ' ', '4', ' ', '1', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', '8', ' ', '5', ' ', '2', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', '9', ' ', '6', ' ', '3', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '], [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ']]
16:09:16 <oerjan> um is this Conway's Game of Life or something slightly different?
16:09:22 <slereah__> It is.
16:09:41 <slereah__> But I recycled the Love Machine to have an infinite plane.
16:09:56 <oerjan> well as long as things are sorted by either x or y direction you still should be able to do things in one of those orders...
16:10:25 <slereah__> It's a list of list, both using a folding function to go in all directions
16:10:54 <oerjan> infinite in all directions?
16:10:58 <slereah__> Yes.
16:11:23 <slereah__> It's a simpler solution than finding a N-ZxZ mapping.
16:11:47 <oerjan> two-directionally infinite?
16:12:07 <slereah__> Well, I think. I haven't checked so far.
16:12:17 <slereah__> I'm still writing the checking-adjacent-cells
16:12:57 <oerjan> now this being python the list is not _actually_ infinite just potentially so, i assume
16:13:33 <slereah__> Well, I think most language don't allow infinite lists.
16:13:43 <oerjan> unless you are employing laziness somehow
16:14:19 <slereah__> But I'll use the same thing as the Love Machine 9000 - when there's moar cells required, in this case when a live cell appears at the edge, I'll just append some more cells around it
16:14:48 <oerjan> not a whole line of them...
16:15:08 <oerjan> gliders can be expensive that way
16:15:47 <slereah__> I'll start with a whole line, and see what I can do with it
16:16:13 <oerjan> ideally you want it to forget again regions where everything has died
16:16:15 <slereah__> Although it's actually a whole square, since it's all around the grid
16:17:06 -!- Corun has joined.
16:21:22 -!- ihope has quit ("ChatZilla 0.9.80 [Firefox 2.0.0.11/2007112718]").
16:23:10 -!- timotiis has joined.
16:40:24 -!- RodgerTheGreat has joined.
16:44:49 <ehird`> so now that people are alive and stuff
16:44:56 <ehird`> accumulator generator:
16:45:01 <ehird`> (def acc [{++ _}])
16:45:06 <ehird`> i challenge you to show me something shorter.
16:45:12 <oerjan> *ACK* *GARGLE* *THUMP*
16:45:18 <ehird`> oerjan: :D
16:45:38 <ehird`> oerjan: [...] is a lambda with _ meaning 'the next argument'
16:45:42 <RodgerTheGreat> howdy, folks
16:45:44 <ehird`> [_ _] is (lambda (x y) (x y))
16:45:49 <ehird`> {...} is currying
16:45:52 <ehird`> well
16:45:54 <ehird`> partial application.
16:46:34 <ehird`> i also have pattern matching :D
16:46:42 <ehird`> and cond and let lose most of their parens
16:46:47 <ehird`> (let (a 2 b 3) ...)
16:46:58 <ehird`> (cond (eq a b) "stuff" (eq b c) "blah")
16:47:03 <ehird`> it's Heretical Lisp!
16:48:05 -!- Corun has quit ("Haxsell!").
16:48:25 <ehird`> oh yeah and i'm planning making <a b c> be an error by default but definable
16:48:30 <ehird`> for basically one purpose
16:48:57 <ehird`> <div :id "AAAAAH" <strong "Evil HTML lisp sez:"> " 2 + 2 = " (+ 2 2)>
16:48:58 <ehird`> mwahahaha
16:56:42 <ehird`> yeah i'm crazy
16:58:20 <Asztal> reminds me slightly of markaby.
16:58:23 <Asztal> div.AAAAAH! { strong 'Evil HTML lisp sez'; text "2 + 2 = #{2+2}" }
16:58:44 <ehird`> markaby wasn't the first html generation tool you know
17:02:52 <ehird`> Asztal: did you read the stuff about [] and {}
17:03:01 <ehird`> if not, I challenge you: decipher (def acc [{++ _}])!
17:08:08 <Asztal> well.. you've already said what it was
17:08:18 <Asztal> am I supposed to decipher how it works?
17:08:37 <ehird`> eh, i guess, thouigh if you read that then it miught be easier
17:08:52 <ehird`> yeah, decipher how it works... ifyou know ruby give me ruby code that is 100% equiv. or something :P
17:08:57 <ehird`> its not that hard once you get the basic principles
17:10:50 -!- faxathisia has joined.
17:11:40 <ehird`> hello faxathisia
17:11:52 <faxathisia> Hiya
17:16:53 <ehird`> faxathisia: my lisp is even more heretiacl now
17:16:57 <ehird`> (let (a 2 b 3) ...)
17:17:02 <ehird`> (cond (eq a b) "stuff" (eq b c) "blah")
17:17:14 <ehird`> to be fair mccarthy *did* say he thought he got cond wrong: too many parens
17:17:40 <faxathisia> :o... I never heard that
17:17:45 <ehird`> yep
17:18:19 <ehird`> IMO let suffers from the same problem
17:18:36 <ehird`> the parens are simply not needed and make the code uglier
17:19:01 <faxathisia> Oh
17:19:14 <ehird`> oh what
17:19:42 <faxathisia> Y not just have all lets imlicitly letrecs
17:21:25 <ehird`> because, that's ridiculous.
17:21:56 <ehird`> > (letrec ((a a)) a)
17:22:02 <ehird`> -> some internal value
17:22:13 <ehird`> > (let ((a a)) a)
17:22:13 <ehird`> Error: unbound variable: a
17:22:17 <ehird`> (Chicken Scheme)
17:28:16 <ehird`> faxathisia: that's why
17:34:37 <SimonRC> ehird`: actually, both of those are just like arc
17:34:48 <SimonRC> I mean, your heresies
17:35:11 <ehird`> SimonRC: even if arc didn't do it, i would
17:35:21 <ehird`> it just happens to be a good idea outside of arc [which sucks[
17:35:28 <SimonRC> really, why?
17:35:33 <SimonRC> have you used arc?
17:36:09 <ehird`> 1. its mostly hype, not that much new 2. a lot of the new things are unneeded and: 3. impure and unclean, inelegant
17:36:38 <ehird`> it gains conciseness at the cost of readbility and purity.
17:37:54 <ehird`> also a bit of irony
17:38:00 <ehird`> they go on about how arc concentrates on web apps
17:38:09 <ehird`> and yet
17:38:10 <ehird`> "We're trying to make something for the long term in Arc, something that will be useful to people in, say, 100 years. (If that sounds crazy, remember that we're already up to 40.) "
17:38:24 <ehird`> i guess web apps will still be The Hot Thing in 100 years.
17:39:21 <slereah__> By then, the web will be nothing but robot porn.
17:40:25 -!- tesseracter has joined.
17:40:35 <ehird`> if it's even still in much use
17:40:41 <ehird`> it may be reduced to usenet-like status
17:42:11 <slereah__> It will be like in "Beneath a steel sky", nothing but cheap abstract 3D shapes and epic battles for datas!
17:42:16 <ehird`> SimonRC: I personally think my lisp is nicer-looking, has the possibility to be much more concise, and is just plain better
17:42:31 <ehird`> slereah__: we'll be in 4d by then. (Great game, btw.)
17:42:52 <tesseracter> wha? someone say something about 4D?
17:43:01 <ehird`> haha
17:43:03 <ehird`> good timing.
17:43:13 <slereah__> EX-TER-MI-NA-TION!
17:43:27 <tesseracter> (which game)
17:43:33 <slereah__> The ending was a little disappointing though
17:43:38 <slereah__> Beneath a steel sky
17:44:07 <slereah__> Where a man named after a beer brand battles the evil empire
17:44:09 <ehird`> never got to the end
17:44:11 <ehird`> heh.
17:44:20 <faxathisia> That game rules!
17:45:28 -!- slereah__ has changed nick to Slereah.
17:45:33 <Slereah> My game of life is currently a GAME OF DEATH :O
17:45:42 <ehird`> faxathisia: there's such a hive mind in #esoteric
17:46:04 <Slereah> I hate it when there's too much exceptions and list index.
17:46:05 <ehird`> the majority of the time we just agree with each other ;)
18:04:33 <Slereah> So far it works for all 4-cell combinaison!
18:06:43 <Slereah> *** transform thusly, is it okay? http://membres.lycos.fr/bewulf/Russell/Life.png
18:08:01 <Slereah> Hm. Doesn't seem to be.
18:08:17 <Slereah> It's supposed to rotate or something apparently
18:10:10 <Slereah> Seems to think that the three cells got 2, 4 and 2 neighbours.
18:10:12 <Slereah> Damn.
18:16:07 <ehird`> i want to write a noding system like everything2, except esoteric somehow
18:20:26 -!- ais523 has joined.
18:20:39 <oerjan> morethaneverything?
18:20:44 <ehird`> haha
18:20:49 <ehird`> i mean, technology wise
18:21:24 <ehird`> (although morethaneverything would not be a bad idea, it seems: see http://qntm.org/?e2code, telling of the horrible mess that apparently is the e2 code... all changes made live with no backup! yeek!)
18:26:04 <Slereah> "And, actually, the more you can avoid programming in C the more productive you will be."
18:26:05 <Slereah> Heh.
18:26:18 <ais523> depends on what you're writing
18:26:55 <Slereah> I guess so.
18:27:18 <Slereah> Maybe I should write the Love Machine 9000 on something efficient one day
18:27:29 <Slereah> But well.
18:29:06 <ais523> did you ever see Perligata?
18:29:34 <Slereah> No.
18:29:50 <ais523> it's basically an esoteric syntax for Perl based on Latin
18:30:11 <ais523> which shares the same property that it's usually possible to reorder the words in a statement and the new statement has the same meaning
18:31:53 <ais523> grr... I've been given a program to run which does something easily achievable by standard Unix tools
18:32:00 <ais523> but it's trying to sort a linked list using bubble sort
18:32:10 <ais523> which on the size of the data set I'm using is taking a while
18:32:49 <SimonRC> lol
18:33:02 * SimonRC recommends merge sort for linked lists
18:33:08 <oerjan> rewrite it in brainfuck. then you can say, "I rewrote the program in Brainfuck and it got 3 times faster." Maybe.
18:33:17 <ais523> so I've set it running and I'm racing it to try to beet it with a command line tool
18:33:21 <ais523> while typing on IRC at the same time
18:33:23 <SimonRC> It is O(n lg n), unlike quicksort on arrays
18:35:06 <ais523> beat it easily
18:35:21 <SimonRC> resulting commandline?
18:35:41 * ais523 tries to figure out how to copy-paste it
18:35:51 <SimonRC> select, middle-click?
18:36:16 <ais523> tr ' ' '(newline)' < (filename) | sed -e 's/^[^a-zA-Z0-9]+//; s/[^a-zA-Z0-9]+$//;' | sort | uniq -c | sort > (filename)
18:36:27 <ais523> it took a while because I was trying to deal with the newline
18:36:37 <SimonRC> ok
18:36:42 <SimonRC> \n would have worked, I think
18:36:48 <ais523> on tcsh?
18:36:58 <SimonRC> ew
18:37:00 <SimonRC> csh
18:37:09 <ais523> it's the default on this server
18:37:14 <SimonRC> what does it do?
18:37:27 <ais523> counts the frequencies of words in a file
18:37:37 <ais523> but with an unusual definition of word, hence the sedery
18:38:12 <ais523> oh, the original's finished now
18:38:21 <ehird`> SimonRC: "tcsh"/"it's the default on this server"/"what does it do?"
18:38:22 <ehird`> suck.
18:38:23 <ehird`> :)
18:38:32 <ehird`> and sometimes run programs too, apparently
18:38:54 <ais523> it's sort of like a version of sh modified to be 'user-friendly'
18:39:09 <ais523> so you can't do any more than a small number of redirections
18:39:20 <ais523> and you have to rm a file before you can pipe output to it, unless you're appending
18:39:25 <ehird`> i know what csh is
18:39:30 <ehird`> its not a sh derivative, much.
18:39:38 <ais523> sorry, when I said that the original program had ended, I was wrong
18:39:39 <ehird`> it is basically a u seless toy
18:39:50 <SimonRC> sort | uniq is often wrong. check out sort -u
18:39:57 <ais523> scratch that, it had ended after all
18:39:57 <ehird`> ais523: you are an INTERCAL programmer, right?
18:40:06 <ais523> SimonRC: I was using uniq for the line count
18:40:10 <ais523> ehird`: yes
18:40:20 <ais523> I'm the current C-INTERCAL upstream maintainer
18:40:21 <ehird`> ais523: how feasable would you say an INTERCAL self-compiler would be? :-)
18:40:22 <SimonRC> ah, ok
18:40:39 <ais523> ehird`: it depends on definition and which language extensions you allow
18:40:53 <ais523> the CLC-INTERCAL compiler is written in a set of extensions that are added to the language itself
18:40:58 <ais523> so it is a self-compiler, in some sense
18:41:09 <ehird`> ais523: hm, definition being something basically like C-INTERCAL. But written in INTERCAL, of course... well, it could compile to anything 'real' (C, native code, asm, ...)
18:41:18 <ais523> even though the commands used to write the compiler are entirely disjoint from the ones used to write programs
18:41:20 <ehird`> language extensions: I guess C-INTERCAL, since it's the most common afaik
18:41:35 <ais523> C-INTERCAL: 33 users. CLC-INTERCAL: 5 users.
18:41:42 <ais523> C-INTERCAL: 33 users. CLC-INTERCAL: 21 users, sorry
18:41:44 <ehird`> popular stuff ;)
18:41:47 <SimonRC> self-compiling INTERCAL would instantly wreck the passtime of proposing new INTERCAL extensions
18:41:50 <ais523> source: Debian popularity contest
18:41:57 <ehird`> SimonRC: why?
18:42:06 <ehird`> C-INTERCAL is incompatible with CLC-INTERCAL, right?
18:42:09 <SimonRC> because people CBA to implement them
18:42:12 <ais523> the same source says that 5 people actually use C-INTERCAL and 3 people use CLC-INTERCAL every now and then
18:42:14 <ehird`> i have seen 2 clc-intercal only programs, though, so...
18:42:25 <ais523> they are not completely incompatible, especially in the most recent versions
18:42:36 <ais523> but it is possible to write C-INTERCAL or CLC-INTERCAL-only programs
18:42:43 <ais523> by using language features that are in one but not the other
18:42:53 <ehird`> ais523: are there any overlapping features?
18:42:58 <ais523> lots
18:42:59 <ehird`> i'd say: most likely.
18:43:05 <ehird`> and duplication of that sort is, yeah.
18:43:07 <ais523> computed COME FROM, basic operand overloading, etc.
18:43:16 <ehird`> ais523: which would you say would be best as a 'pseudo standard'?
18:43:25 <ais523> see the C-INTERCAL documentation at intercal.freeshell.org
18:43:33 <ais523> it lists portability for all the constructs in C-INTERCAL
18:43:49 <ais523> the pseudo standard is likely just INTERCAL-72 + noncomputed COME FROM
18:43:58 <ais523> because most of the other features only exist in C- and CLC-INTERCAL
18:44:05 <ais523> not J-INTERCAL
18:44:07 * SimonRC likes the enabling and disabling of statements for communication of parallel processes
18:44:15 <ehird`> ais523: what fun
18:44:32 <SimonRC> I though COME FROM was in '72
18:44:35 <ais523> I spent ages writing that documentation, so it would be satisfying for me if lots of people read it
18:44:47 <ais523> SimonRC: no it wasn't, although as far as I could tell it was also invented in 1972
18:44:52 <ais523> it just wasn't added to INTERCAL until later
18:44:55 <ehird`> ais523: ok, to start with: a self-compiling, no-extensions INTERCAL compiler
18:45:04 <ehird`> that compiles to C, asm, native code, or some other similar 'real' target language.
18:45:12 <ehird`> feasability=
18:45:23 <ais523> without extensions a machine-translation from something like Brainfuck might be the best bet
18:45:34 <oerjan> ehird`: binary output is an extension :D
18:45:37 <ehird`> hmm, that was the kind of thing i was saying against, ais523
18:45:41 <ehird`> oerjan: OK fine with that :P
18:45:55 <ais523> it wouldn't be too bad trying to do it directly, though, apart from the expression syntax and the fact that you have to allow character I/O somehow
18:46:11 <ehird`> C-intercal presumably has a char IO extension
18:46:13 <ehird`> so i'd say that
18:46:25 <ehird`> wait, ESR maintained C-intercal at one point, didn't he?
18:46:28 <ais523> character I/O is different in C-INTERCAL and CLC-INTERCAL, but both have command-line switches to use the other's semantics
18:46:29 <ehird`> OK, CLC-Intercal! :P
18:46:32 <ais523> ehird`: yes
18:46:39 <ais523> it was C-INTERCAL
18:46:46 <ehird`> yes, that's what i meant
18:46:58 <ehird`> => OK, let's take the char I/O for CLC-Intercal then ;)
18:47:09 <ais523> Baudot is a pain to deal with
18:47:15 <ais523> but I think that was the point
18:47:24 <ais523> also, you have to know in advance how long the lines can be
18:47:32 <oerjan> bad dots?
18:47:39 <oerjan> or would that be braille
18:47:46 <ehird`> ais523: suggest a solution that fits neatly with my dislike of ESR and my dislike of THAT!
18:48:07 <ehird`> ;)
18:48:21 <ais523> well, you could use one of CLC-INTERCAL's multithreading extensions to trap the error
18:48:30 <ehird`> haha wow, that's evil
18:48:36 <ais523> I'm planning to implement much the same error-trapping method in C-INTERCAL at some point, by the way
18:48:56 <ais523> the way it works is that there's a variable * that holds the most recent error
18:49:09 <ais523> but an error kills the thread, so you have to receive it in some different thread
18:49:22 <ais523> but reading from * when there hasn't been an error causes an error, so to trap the error you need three threads
18:49:33 <ehird`> ais523: OK, assuming C-INTERCAL binary IO etc extensions, feasability=
18:49:40 <ehird`> (it must be able to compile itself still, obviously)
18:49:43 <ais523> one which contains the error you're trying to trap, one that errors out instantly to put a value in *, and one that does the trapping
18:49:51 <ehird`> not all the cintercal extensions presumably though
18:49:54 <ais523> feasability=reasonable but a lot of work
18:49:58 <ais523> mostly due to the expression syntax
18:50:28 <ais523> incidentally, I recently discovered an easy way for an INTERCAL program to tell which interpreter it's running under
18:50:50 <ehird`> how?
18:50:54 <ais523> IGNORE a variable, STASH it, change its value, RETRIEVE it, save that value, then change the variable to a new value to test if it's read only
18:51:26 <ais523> J-INTERCAL ignores the read-only flag on STASH or RETRIEVE, so the value STASHED is viewed twice
18:52:21 <ais523> sorry, I meant STASH a variable, change its value, IGNORE it, RETRIEVE it, save that value, then change the variable to a new value to test if it's read only
18:52:30 <ais523> so J-INTERCAL reads out the original value twice
18:52:37 <ais523> C-INTERCAL reads out the new value twice
18:52:47 <ehird`> and CLC?
18:52:58 <ais523> and CLC-INTERCAL reads out the new value, but the non-IGNOREd status is stashed along with the variable, so you get two different answers
18:53:14 <ehird`> ooooh, there's a unlambda-in-intercal...
18:53:15 <ehird`> what about...
18:53:18 <ehird`> INTERCAL IN UNLAMBDA
18:53:19 <ehird`> :D
18:53:37 <ais523> I can't think of a decent way to write an expression parser in that either
18:53:45 <ais523> there are some crazy corner cases
18:54:04 <ais523> one of which is specifically disallowed both by the INTERCAL-72 and C-INTERCAL documentation because it's such a pain to parse
18:54:15 <ais523> and therefore can be said to not be legal INTERCAL
18:54:27 <ehird`> which case is that?
18:54:53 <ais523> .1 <- ,3SUB",2SUB.1".2~.3"".4
18:55:02 <ehird`> ... nested quotes.
18:55:04 <ehird`> y/n
18:55:20 <ais523> to be precise, nested quotes interacting with nested multidimensional arrays
18:55:35 <ehird`> it has nested quotes even without N>1-d arrays?
18:55:36 <ais523> the problem is that .1 <- ,3SUB",2SUB.1".2 is a legal statement
18:55:37 <ehird`> bizzare
18:55:53 <ais523> but the second set of ears have a different meaning in the two statements
18:56:07 <ais523> and there could be any number of characters that need to be read before it could determine which is which
18:56:36 <ais523> come to think of it, .1 <- ,3SUB",2SUB.1".2~.3".5".4 is truly ambiguous
18:56:48 <ais523> but as it's not fully grouped with sparks and ears, it's illegal anyway
18:57:09 <ehird`> hmm:
18:57:21 <ais523> when arrays aren't involved, it's possible to tell a begin quote from an end quote by checking which side of it the operator is on
18:57:36 <ais523> but the multidimensional array syntax looks like DO .1 <- .3SUB#4#5#6#7
18:58:00 <ais523> no operators that might work to disambiguate
18:58:15 <ehird`> my abstraction eliminator will be interesting...
18:58:15 <ehird`> ``skk -> (\z. kz(kz)) -> (\z. z)
19:06:45 <ais523> I had an interesting Underload optimiser, before I deleted it by mistake
19:06:49 <ais523> but it would be easy to recreate
19:07:06 <ais523> if you translated sii from Unlambda to Underload using the translations on the wiki
19:07:15 <ais523> it came out with (^:)^:
19:07:23 <ais523> sorry, ```sii``sii
19:07:30 <ais523> transformed to (^:)^:
19:15:50 <ais523> the idea is that in most cases it doesn't matter whether evaluation is lazy or eager
19:16:29 <ais523> and so you can partially evaluate code before it gets duplicated later
19:16:36 <ais523> as long as you don't run S commands by mistake
19:25:26 <ehird`> ais523: by the way, my underload to C compiler is broken. i've started a rewrite, but eh
19:25:33 <ehird`> theoretically, its OK though, just a bug :-)
19:25:43 <ais523> in what way does the bug manifest?
19:26:00 <ehird`> i'm not entirely sure... take a look at the fibonacci program output
19:26:32 <ehird`> */*/**/*************(enough *s to break my terminal's display procedures...)SEGFAULT
19:26:57 <ais523> I wonder what goes wrong to cause that to happen?
19:27:09 <ais523> maybe a problem with *, or :?
19:27:39 <ehird`> yeah i'm not sure
19:27:57 <ehird`> originally dup was just pushing the same object instead of copying. but i fixed that, and it still happens
19:28:44 <ais523> could you paste the generated C somewhere so I could take a look?
19:34:35 <ehird`> ok.. it's highly ugly, written-quickly crap though
19:35:34 <ehird`> http://rafb.net/p/dXRULi17.html
19:36:19 <ehird`> the non-prewritten stuff starts at:
19:36:22 <ehird`> void ul_func_0(void);
19:36:27 <ehird`> and ends at
19:36:30 <ehird`> int main(void) {
19:38:15 <ehird`> ais523: side note: * can be made efficient in that by adding:
19:38:19 <ehird`> struct _ul_obj *last;
19:38:21 <ehird`> to ul_obj
19:38:32 <ehird`> and then going straight ot that in * and updating it
19:38:41 * ais523 is looking at the code right now
19:40:09 <ais523> the problem is that a : command isn't duplicating inner or cdr
19:40:24 <ais523> (it doesn't duplicate str either, but that isn't needed because the strings never change)
19:40:50 <ais523> to work properly you'd need to recursively duplicate TOS, not just its car
19:42:33 <ehird`> I shall fix
19:45:31 <ehird`> ais523: I can get rid of cdr, and jus thave last
19:45:37 <ehird`> since you can't do anything with them
19:45:38 <ehird`> they're immutable
19:45:39 <ehird`> right?
19:45:58 <ehird`> oh, no
19:46:01 <ehird`> ul_call needs it ofc
19:46:05 <ais523> without cdr you couldn't eval or print
19:46:17 <ehird`> yeah
19:46:22 <ehird`> ok, : will be slow
19:46:33 <ehird`> since it needs to copy all cdrs, right?
19:46:38 <ais523> I think so
19:46:48 <ais523> but a copy that isn't O(n) is impossible to achieve in general anyway
19:47:29 <ais523> unless copy-on-write semantics work, and they don't because of the possiblity of code like :(a)*~(b)*
19:47:52 <ais523> at least, copy-on-write wouldn't prevent the copy for ever so it wouldn't speed up the program
19:49:34 <ehird`> */*/**/***zsh: segmentation fault ./blah
19:50:08 * ehird` pastes
19:50:11 <SimonRC> htf does it segfault?
19:50:19 <ehird`> SimonRC: intelligently.
19:50:25 <SimonRC> huh?
19:50:37 <ehird`> :D
19:50:41 <ehird`> okies:
19:50:42 <ehird`> http://rafb.net/p/Wh5hpI14.html
19:50:49 <ehird`> probably have a dumb obvious error in ul_copy
19:52:50 <ais523> well, the return statement is obviously in the wrong place, but I don't see why that would affect the code because you never use the return value
19:53:02 <ehird`> ais523: yes i do
19:53:05 * SimonRC goes (food, bed, etc)
19:53:09 <ehird`> it->last = ul_copy(src->cdr, &it->cdr);
19:53:10 <ais523> no, you do use the return value; that's why you get the segfault
19:53:20 <ehird`> it returns the 'end' object
19:53:23 <ehird`> i.e. that which ->cdr = null
19:53:31 <ais523> only if !src->cdr
19:53:39 <ais523> because you put it inside the else part of that if by mistake
19:53:39 <ehird`> um yes
19:53:42 <ais523> rather than after the if
19:53:42 <ehird`> no
19:53:44 <ehird`> that's on purpose...
19:53:51 <ehird`> read the code
19:53:53 <ais523> why?
19:53:54 <ehird`> I assign to ->last
19:54:02 <ehird`> which wants to be the object without a cdr, because its' the object at the end
19:54:07 <ehird`> which is why i return when ->cdr == NULL
19:54:26 <ais523> well, returning garbage is normally bad form which gcc will warn you about
19:54:33 <ehird`> it isn't garbage
19:54:34 <ehird`> it retusn it
19:54:37 <ehird`> not it->cdr
19:55:01 <ais523> the function returns garbage if it doesn't reach a return statement
19:55:04 <ais523> like all functions in C do
19:55:33 * oerjan senses a d'oh approaching soon...
19:55:38 <ehird`> D'oh!
19:55:40 <ais523> say you have a list of three elements
19:55:55 <ais523> then last is set on the second element of the list not the first
19:56:12 <ais523> so if cdr isn't null, you want to return its last as the function's return value
19:56:24 <ehird`> if (src->cdr) { return (it->last = ul_copy(src->cdr, &it->cdr)); }
19:56:26 <ehird`> looks right to me
19:56:32 <ehird`> i did that before you said that heh
19:56:34 <ais523> and besides, shouldn't the last for a one-element list point to itself?
19:56:41 <ehird`> hmm
19:56:43 <ais523> otherwise you could never append to it
19:56:44 <ehird`> recursive structures + c scares me
19:56:46 <ehird`> and yeah, i can
19:56:49 <ehird`> i check for null in append
19:56:53 <ehird`> and set that, and cdr
19:57:11 <ehird`> wait
19:57:13 <ehird`> you're right
19:57:13 <ehird`> OK
19:57:49 <ais523> with those two corrections, hopefully it should work
19:58:23 <ehird`> % ./blah
19:58:24 <ehird`> *zsh: bus error ./blah
19:58:30 <ehird`> probably a trivial bug.
19:58:43 <ehird`> its in ul_concat() sez gdb
19:58:55 <ais523> so likely last being wrong, in that case
19:59:03 <ehird`> tmp = ul_pop(); tmp2 = ul_stack->top; tmp2->last->cdr = tmp; tmp2->last = tmp->last;
19:59:07 <ehird`> the bulk of ul_concat() ^^^
19:59:12 <ehird`> yeah, most likely
19:59:17 <ehird`> time to search for ->last uses
19:59:27 * ais523 has had similar problems trying to deal with the C-INTERCAL multithreader
19:59:32 <ais523> which uses similar sorts of lists
19:59:37 <ehird`> btw
19:59:49 <ehird`> if (src->cdr) { return (it->last = ul_copy(src->cdr, &it->cdr)); } else { it->last = it; it->cdr = NULL; return it; }
19:59:51 <ehird`> that's the new code
19:59:56 <ehird`> hmm, wait
19:59:57 <ehird`> i never set cdr
20:00:05 <ehird`> wait
20:00:06 <ehird`> Yes I Do.
20:00:37 <ehird`> 86tmp2->last->cdr = tmp;
20:00:39 <ehird`> that's the dying line
20:00:40 <ehird`> not suprising
20:00:50 <ehird`> (gdb) p tmp2->last
20:00:50 <ehird`> $2 = (struct _ul_obj *) 0x0
20:01:08 <ehird`> oh
20:01:08 <ehird`> duh
20:01:11 <ehird`> it's an 'inner'-val
20:01:19 <ehird`> which i dont set ->last on, oops
20:01:45 <ais523> I was about to say the same thing: line 26 in ul_push sets ->last to NULL rather than self
20:01:53 <ehird`> no
20:01:53 <ehird`> not that
20:01:56 <ehird`> that's fixed by now
20:01:57 <ehird`> but ul_wrap.
20:01:59 <ais523> because you special-cased taht
20:02:09 <ehird`> ais523: the fib program runs crazy fast
20:02:20 <ais523> is it working now?
20:02:38 <ehird`> the horiz scrollbar on my terminal goes to the smallest it can as soon as the program starts
20:03:07 <ais523> you could pipe it through head, I suppose
20:03:14 <ehird`> ais523: just saying, it's that fast
20:03:18 <ehird`> ais523: also head works on lines :P
20:03:27 <ehird`> ais523: oh yeah, and this is with just "gcc blah.c -o blah"
20:03:29 <ehird`> no optimization
20:03:29 <ais523> head has an option to work on chars instead
20:03:36 <ais523> and I'm not surprised by the speed
20:03:48 <ehird`> compiled with -O2 now, i'm going to pipe it to a file for approx 10 secs then wc -c it
20:04:01 <ehird`> shit.
20:04:02 <ehird`> zsh: segmentation fault ./blah > fibs
20:04:02 * ais523 will have to make another try to write the Unlambda -> Underload compiler
20:04:16 <ais523> out of memory or out of stack, maybe?
20:04:24 <ehird`> stack.
20:04:27 <ehird`> i just realised...
20:04:32 <ais523> most likely out of stack with recursive calling on a ridiculously long list
20:04:32 <ehird`> ul_call is tail-recursive.
20:04:33 <ehird`> but ->fp
20:04:35 <ehird`> can call ul_call
20:04:36 <ehird`> etc
20:04:43 <ehird`> and no, ul_call uses goto for ->cdr
20:04:51 <ehird`> afaics there is no solution...
20:04:57 <ehird`> you NEED to retain the stack
20:05:00 <ais523> I think it's more that ul_copy is unlikely to be tail-recursed by a C compiler
20:05:01 <ehird`> because it contains useful stuff.
20:05:14 <ehird`> ais523: ul_copy can't be tail-recursive
20:05:19 <ehird`> anyway
20:05:21 <ehird`> one way to settle this
20:05:22 <ehird`> GDB!
20:05:26 <ais523> oh, of course
20:05:41 <ais523> but the same code might be possible to write with a while loop if you made two passes
20:05:48 <ehird`> ais523: i guess
20:05:52 <ehird`> not nearly as fast though...
20:05:56 <ehird`> woah
20:05:57 <ehird`> ais523:
20:05:59 <ehird`> it was ul_copy
20:06:01 <ais523> recursing for inner, because that grows slower than cdr
20:06:08 <ehird`> i just typed 'bt' and for many seconds i've been getting ul_copy stack frames
20:06:11 <ais523> and using iteration for cdr
20:06:15 <ehird`> over and over and over and over and over and over and over..............
20:06:23 <ehird`> ais523: can i make both iterative?
20:06:32 <ehird`> over 40000 so far
20:06:33 <ehird`> sheesh
20:06:40 <ehird`> 50000
20:06:45 <ais523> there's probably some way, but I can't figure it out in my head in a few minutes
20:07:05 <ais523> and it would be inefficient without an uncdr link that pointed the other way
20:07:11 <ais523> no it wouldn't
20:07:20 <ais523> you could iterate once setting cdrs and finding out last
20:07:27 <ais523> and then iterate a second time setting last all along the list
20:07:43 <ais523> in fact, last doesn't matter except at the start of the list, so you'd only have to set it there
20:08:02 <ais523> doing inner recursively would be harder
20:08:39 <ehird`> ais523: 130998 frames of ul_copy
20:08:42 <ehird`> i think whatever it takse i need iterative
20:09:03 <ehird`> ais523: so if you think of a way to do both without recursing...
20:09:14 <ehird`> also ul_call without recursing would be nice... wait... i guess i could do TCO
20:09:20 <ehird`> ais523: are there many tail calls in unlambda?
20:09:34 <ehird`> and are they very literal: last command in (...) is ^?
20:09:35 <ais523> ```sii``sii is tail recursive
20:09:42 <ehird`> i mean in real programs liek the fibonacci
20:09:45 <ais523> and most loops work with the same principle
20:09:49 <ais523> and ^ is always the last command
20:09:50 <bsmntbombdood> EXTEREME TAIL RECURSION
20:09:54 <ais523> or almost always
20:10:03 <ehird`> err
20:10:05 <ehird`> UNDERLOAD
20:10:06 <ehird`> UNDERLOAD
20:10:21 <ais523> I write loops with (blah):^ normally
20:10:25 <ais523> and such loops are tail recursive
20:10:35 <ehird`> ais523: ((hi)S):^S
20:10:38 <ehird`> produces:
20:10:40 <ehird`> hi(hi)S
20:10:52 <ehird`> even fib has non-tail-call
20:10:53 <ehird`> two of them
20:10:54 <ehird`> (()(*))(~:^:S*a~^a~!~*~:(/)S^):^
20:11:09 <ais523> because the ^ is often used for non-looping purposes
20:11:20 <ehird`> ais523: if i just keep my own stack, it'll be little more efficient than a good interp
20:11:21 <ehird`> right?
20:11:24 <ais523> there it's used to split the top stack element from ((abc)(def)) to two elements (abc) and (def)
20:11:35 <ais523> and keeping your own stack is likely to be the only option in some cases
20:11:45 <ais523> because the original program may not be written in a tail-recursive way
20:11:48 <ehird`> but it won't even be fast
20:12:00 <ais523> of course, when the original programmer runs out of stack space, you can then blame it on them
20:12:03 <ehird`> it'll be about as good as a c interpreter..
20:12:22 <ais523> I think it's possible without maintaining your own function stack in most cases
20:13:16 <ehird`> ais523: but don't you agree about the speed thiing?
20:13:25 <ais523> speed is important
20:13:28 <ehird`> exactly
20:13:39 <ais523> and I think ul_eval will run out of stack long after ul_copy does
20:13:43 <ehird`> keeping my own stack will be bsically the same speed as a c interp
20:13:50 <ehird`> OK then
20:13:52 <ehird`> and its ul_call
20:13:56 <ehird`> no eval happens! :)
20:14:33 <ais523> if you have a pointer to the cdr of whatever you're calling, then you can append it to the thing you call rather than its original location and make ul_call tail-recursive that way
20:14:39 <ais523> I think, it's a little hard to work out the details
20:15:05 <ehird`> append will just set cdr though
20:15:28 <ais523> but you can't append to a program while it's running, so the problem never comes up
20:15:32 <ais523> I think
20:15:48 <ehird`> i don't really understand
20:15:56 <ehird`> anyway, there's a problem ais523
20:16:01 <ais523> what?
20:16:06 <ehird`> if i want to optimize tailcalls
20:16:09 <ehird`> i need to either:
20:16:11 <ehird`> 1. do stack smashing
20:16:17 <ehird`> 2. use goto labels and keep my own stack for non-tailcalls
20:16:19 <ehird`> neither is feasable
20:16:23 <ais523> setjmp!
20:16:24 <ehird`> don't you love C for not having tailcalls?
20:16:30 <ais523> sorry, I'm too much of a fan of setjmp
20:16:35 <ehird`> setjmp won't work for it
20:16:53 <ais523> actually, the usual way to tail-recurse in C is to goto the start of the function rather than calling it
20:17:02 <ais523> after setting all the args to the right values
20:17:17 <ais523> so instead of return myself(a1,b1,c1);
20:17:25 <ehird`> ais523: tail calls don't have to be to the same functions
20:17:27 <ehird`> that's TAIL RECURSION
20:17:30 <ais523> you do a=a1; b=b1; c=c1; goto myself_top
20:17:42 <ais523> I was giving a description of tail-recursion
20:17:45 <ais523> general tail-calls are harder
20:17:51 <ehird`> i have an idea, actually
20:17:58 <ehird`> have one dispatcher function, underload()
20:18:01 <ehird`> have it like this:
20:18:24 <ehird`> ok, il'l take an example program
20:18:27 <ehird`> (:^):^
20:18:29 <ehird`> that's:
20:18:31 <ehird`> in underload():
20:19:09 <ehird`> push(f1, ":^"); dup(); discard(); goto f1;
20:19:20 <ehird`> err
20:19:21 <ehird`> wait no
20:19:23 <ehird`> it's like this:
20:19:39 <ehird`> wait, wait
20:19:42 <ehird`> i'llw rite it in a file
20:19:43 <ehird`> then paste it.
20:20:05 <ais523> my earlier idea for preventing recursive stack usage in ul_call was to check if fp was ul_call in the o->fp(); line; if it was, instead of calling ul_call, you append o->cdr to the end of TOS, and then set o to TOS, after popping the TOS
20:20:33 <ais523> so that the return address is saved by the cdr pointer on the end of TOS, rather than on C's stack
20:20:37 <ais523> it should be just as fast, or faster
20:22:37 <ehird`> ais523: http://rafb.net/p/VwMkyk23.html
20:22:52 <ehird`> and, for normal calls, you can just do basically underload(tmp->label)
20:22:58 <ehird`> clever/not clever?
20:23:55 <ais523> that's the same technique C-INTERCAL uses, pretty much
20:24:04 <ais523> except that it maintains its own stack for normal calls
20:24:16 <ehird`> MINE IS BETTER! It uses the highly efficient C stack.
20:24:19 <ehird`> :D
20:24:26 <ais523> although I'm planning to make it use the real C stack for all calls at some point in the future
20:24:40 <ais523> so you can intersperse code that wasn't compiled from INTERCAL
20:24:51 <ais523> anyway, I should have gone half an hour ago
20:25:09 <ehird`> aww, bye then :)
20:25:10 <ais523> but I'll see if I can work out non-stack-gobbling versions of your C utility functions when I'm at home
20:25:21 <ehird`> OK
20:25:22 <ehird`> bye :)
20:25:23 <ais523> unless I have to do something else...
20:25:26 -!- ais523 has quit ("bye").
20:37:22 -!- RedDak has joined.
20:38:27 <ehird`> so now my Underload (...)s are no longer functions
20:38:29 <ehird`> what should i call them?
20:38:31 <ehird`> subprograms?
20:40:58 <oerjan> blimps
20:41:06 <ehird`> oerjan: i like it
20:41:55 <ehird`> oerjan: it's a good thing gcc can optimizes heavily.
20:41:58 <ehird`> *optimize
20:42:05 <ehird`> it'll make these programs Really Damn Fast(TM)
20:42:19 <ehird`> probably better than if i compiled them to machine code
20:47:15 <ehird`> oerjan: still, it'll always get slower over time
20:47:26 <ehird`> eventually taking years to perform one duplication.
20:47:44 <ehird`> unlike, say, an interp, where you can easily just concat the code and it's constant
21:32:59 <GregorR> <ehird`> what should i call them?
21:33:07 <GregorR> Depends on what they actually /do/ if they're not functions :P
21:33:36 <ehird`> ((ab)cd)ef
21:33:38 <ehird`> gets unrolled.
21:33:52 <ehird`> i.e. the nesting is removed and each was previously made into a function but now they're made into "case"s in switches
21:33:57 <ehird`> they're called 'blimps' now.
21:40:59 <ehird`> GregorR: my new compiler appears to work, apart from output with stuff wrapped by a
21:41:18 <ehird`> and, of course, dup is still recursive and could die without warning
21:42:09 <ehird`> it produces neatly indented C and you can either have checks & nice error messages, or no checks and no error messages and SPEED
21:42:41 <ehird`> oh dear
21:42:45 <ehird`> i can has memleak in (:^):^?
21:42:54 <ehird`> need more free()ing in the prelude methinks
21:43:18 <ehird`> hm, no
21:43:20 <ehird`> nothing i can do
21:43:22 <ehird`> its perfect
21:45:44 -!- jix has quit ("CommandQ").
21:46:05 <ehird`> ok, output works now
21:46:26 <ehird`> and it even does TCO!
21:47:57 <ehird`> actually, TCO of underload is trivial
21:48:07 <ehird`> since it'll ALWAYS be the last instruction in your () or program
21:48:20 <ehird`> Shit % ./quine
21:48:20 <ehird`> zsh: segmentation fault ./quine
21:48:30 <ehird`> err
21:48:32 <ehird`> actually a factorial
21:48:34 <ehird`> but i call it quine :P
21:48:42 <oerjan> o_O
21:48:55 <ehird`> oerjan: "runscheme unlambda.scm > quine.c" in history...
21:49:04 <ehird`> ah crap
21:49:18 <ehird`> another lovely mutuually-recursive functions
21:49:23 <ehird`> overloading the c stack
21:49:37 <ehird`> umm
21:49:42 <ehird`> over 85000
21:49:45 <ehird`> 90000
21:49:47 <ehird`> stack frames..
21:49:50 <ehird`> :|
21:50:16 <ehird`> Do I have a bug or does the factorial prog really curse tat much
21:50:37 * ehird` runs it in the JS interp and sees
21:50:43 <ehird`> well, there was an awful lot..
21:51:24 <ehird`> Yep, most definately.
21:51:29 <ehird`> A bug.
21:51:46 <ehird`> oerjan: My C is indented now. You must read it! :P
21:52:05 * oerjan runs away screaming
21:53:31 <ehird`> oerjan: http://rafb.net/p/ubHcrP65.html Have fun!
21:53:39 <ehird`> :D
21:54:06 <ehird`> there should be a trivial infinite loop, actually...
21:54:14 <ehird`> it's 1 and 5
21:54:19 <ehird`> they call each other until the stack runs out
21:54:28 <ehird`> Wait, WTF?
21:54:32 <ehird`> How can that happen?
21:54:59 <ehird`> oh
21:55:01 <ehird`> 0 and 5.
21:55:11 <ehird`> Weird, how can 5 call 0?
21:55:44 <oerjan> why is 6 afraid of 8?
21:55:49 <oerjan> er wait
21:55:55 <oerjan> of 7
21:56:12 <ehird`> groan
21:56:23 <ehird`> but seriously: 0 is the main program, and is never pushed to the stack
21:56:27 <ehird`> how does 5 call it?
21:58:09 <ehird`> oerjan: DOEST THOU KNOWEST?
21:58:17 <ehird`> oh duh
21:58:26 <ehird`> i totally don't handle one thing properly
21:58:27 <ehird`> cdr.
21:58:30 <ehird`> or inner.
22:01:04 -!- GreaseMonkey has joined.
22:03:00 <ehird`> yikes
22:03:05 <ehird`> i'll be inlining a lot of code with CALL
22:17:57 <ehird`> anyone know if 5a636f6c is some kind of magic number?
22:19:29 <ehird`> hmm
22:19:35 <ehird`> anyone alive? GregorR? oerjan?
22:19:39 <ehird`> oklokok?
22:19:59 <ehird`> could you run this: http://rafb.net/p/cpVqur31.html (just "gcc blah.c -o blah") and tell me if it segfaults or what?
22:20:05 <ehird`> and if it segfaults, the last number it prints out
22:22:39 <ehird`> anyone?! :P
22:22:41 <ehird`> GreaseMonkey?!
22:22:47 <ehird`> pikhq?
22:22:51 <ehird`> Slereah?
22:23:52 <GreaseMonkey> ehird`?
22:23:53 -!- RedDak has quit ("I'm quitting... Bye all").
22:24:09 <ehird`> GreaseMonkey: see my previous message
22:24:15 <ehird`> just before "and if it segfaults,"
22:25:27 <pikhq> No?
22:25:38 <ehird`> pikhq: No what
22:25:57 <GreaseMonkey> doesn't segfault here
22:26:19 <ehird`> ok
22:26:28 <ehird`> can you both copy the output, all of it, and paste that somewhere?
22:26:30 <ehird`> very curious..
22:28:24 <GreaseMonkey> http://rafb.net/p/t6PgUx72.html
22:29:13 <pikhq> 6044d0
22:29:21 <pikhq> No segfault.
22:29:36 <GreaseMonkey> ok, i run linux, i'm assuming pikhq runs windows
22:29:44 <GreaseMonkey> you can tell by the pointers
22:29:53 <pikhq> x86_64-pc-linux-gnu
22:29:58 <GreaseMonkey> wtf?
22:30:21 <ehird`> GreaseMonkey: hmm, but no actual output apart from that?
22:30:32 <GreaseMonkey> nope
22:30:39 <ehird`> no factorial output even?
22:30:40 <ehird`> hm
22:30:42 <ehird`> can you do:
22:30:45 <ehird`> compile it with -g
22:30:48 <ehird`> gdb it
22:30:51 <ehird`> start; cont
22:30:52 <ehird`> bt
22:30:57 <ehird`> and give me the first few lines of backtrace?
22:31:04 <GreaseMonkey> same output with g
22:31:12 <GreaseMonkey> actually, just a mo
22:31:24 -!- oerjan has quit ("Good night").
22:32:42 <GreaseMonkey> #0 _copy (src=0x804b008, dest=0xbfa170d4) at poop.c:65
22:32:46 <GreaseMonkey> #1 0x080487b0 in dup () at poop.c:91
22:32:46 <GreaseMonkey> #2 0x08048c1e in dispatch (o=0x804b058) at poop.c:223
22:32:46 <GreaseMonkey> #3 0x08048bd0 in dispatch (o=0x0) at poop.c:207
22:32:46 <GreaseMonkey> #4 0x08048e38 in main () at poop.c:303
22:33:00 <GreaseMonkey> (on the second _copy)
22:33:44 <ehird`> the second _copy?
22:33:50 <ehird`> explain! :P
22:33:52 <GreaseMonkey> well, second time it breaks
22:34:09 <GreaseMonkey> (i set a breakpoint on _copy)
22:34:14 <ehird`> oh
22:34:15 <ehird`> don't :P
22:34:21 <ehird`> $ gdb poop
22:34:24 <ehird`> > start; cont; bt
22:35:55 <GreaseMonkey> Program exited normally.
22:35:56 <GreaseMonkey> (gdb) bt
22:35:56 <GreaseMonkey> No stack.
22:36:06 <ehird`> ah, this is a good point ;)
22:36:22 <ehird`> hmm
22:36:32 <ehird`> if only it would fail so i could see what its doing :P
22:37:58 <ehird`> hello, VERSIONer GreaseMonkey ;)
22:38:05 <GreaseMonkey> OSX, huh?
22:38:09 <ehird`> OS X indeed
22:38:25 <GreaseMonkey> pOSiX
22:39:51 <ehird`> hehe
22:39:59 <ehird`> it's certified UNIX now!
22:52:47 <ehird`> GreaseMonkey: pikhq ping2
22:52:51 <ehird`> http://rafb.net/p/1qEvhC25.html
22:52:53 <ehird`> what about this?
22:53:02 <ehird`> for me the last thing it prints is "16", then bus error
22:53:04 <ehird`> (segfault)
22:56:18 <GreaseMonkey> 804cfc8
22:56:19 <GreaseMonkey> 0 ERROR -- ~ on stack of less than 2 elements
22:56:19 <GreaseMonkey> Program exited with code 01.
22:56:43 <ehird`> :| Wtf.
22:56:52 <GregorR> (I'll certify YOU as UNIX)
22:57:38 <ehird`> OK, on another topic...
22:57:51 <ehird`> Someone implement CRTL and also suggest a way I could add arbitary output to it elegantly!
22:57:54 <timotiis> speaking of macs, what do people think of the Macbook Air?
22:58:11 <ehird`> timotiis: flimsy, plastic-looking, far too expensive, only one usb port, no ethernet, no optical drive, ...
22:58:22 <ehird`> Right now you can't output any arbitary string in your program
22:58:23 <timotiis> ehird`: oh yeah. But damn slick
22:58:29 <ehird`> since you need to include your state in it too and parse it back
22:58:30 <ehird`> So yeah.
22:58:33 <Asztal> 4 hours battery life.
22:58:34 <ehird`> timotiis: No. It's kind of ugly.
22:58:50 <Asztal> wait, 5.
23:00:26 <timotiis> ehird`: I like the look, and I'm fairly impressed with the engineering. I was raised on macs though, so I probably have an ingrained bias
23:00:40 <ehird`> I'm a linux convert.
23:00:45 <timotiis> I've just ordered myself an Eee
23:00:52 <ehird`> For about a year now.
23:01:12 <ehird`> iMac, sept 06 model (I was obsoleted so quick! :P)
23:01:25 <timotiis> I've been linux only for myself for the last year or two (closer to two now), and macs before that
23:01:28 <ehird`> i probably don't take as much advantage of OS X as I could
23:01:40 <ehird`> but it's probably my first machine that wasn't behind when i bought it :-)
23:01:58 <ehird`> timotiis: from linux, not to
23:01:58 <timotiis> heh, this box here is hideously behind
23:02:17 <timotiis> ah, I went to linux from OS X
23:02:52 <timotiis> da, I just find it too inflexible, really. whaddya mean I can't totally change window managers in 10 minutes?
23:05:31 <ehird`> you can run X11 on OS X!
23:09:00 -!- tesseracter has quit ("Buh-Bye").
23:09:08 <ehird`> awkward silence
23:09:40 -!- timotiis has quit ("leaving").
23:21:08 <ehird`> I wonder if there's a window manager in 100 lines of C
23:33:19 <ehird`> anyone? ;)
23:34:35 <Asztal> take twm and strip all the newlines
23:34:50 <Asztal> (cheating, I know ;)
23:35:05 <ehird`> heh
23:35:11 <ehird`> xmonad is <500, but it's haskell
23:35:54 <ehird`> dwm is <2000...
23:36:59 <ehird`> oh yeah 9wm is pretty tiny too
23:37:57 <ehird`> ooh
23:38:04 <ehird`> there's a 58 lines-of-c one
23:38:39 <Asztal> I bet that's pretty minimal...
23:39:20 <ehird`> it has sloppy focus
23:39:50 <ehird`> its in debian
23:39:52 <ehird`> 'tinywm'
23:40:07 <ehird`> http://incise.org/index.cgi/TinyWM
23:40:18 <ehird`> there's a port to python, and lisp
23:41:15 <ehird`> haha tinywm is just a main()
23:42:25 <ehird`> i do wish there was a way to write WMs for os x though
23:43:30 <GregorR> Windows Medias?
23:43:46 <pikhq> Window managers.
23:43:57 <pikhq> And there is.
23:44:07 <pikhq> X.org runs on OS X. ;)
23:44:23 <pikhq> You can even get it to replace Aqua.
23:45:08 <ehird`> Duh, I know that.
23:45:19 <ehird`> I meant integrated with Aqua
23:45:20 <ehird`> non-X11
23:45:24 <pikhq> I know what you *actually* mean, though.
23:46:04 <pikhq> The answer to that, of course, is, "don't use nonfree software."
23:47:05 <ehird`> pikhq: You know what's more annoying than Mac zealots? Anti-mac zealots.
23:47:17 <pikhq> ehird`: I'm just anti-nonfree-software.
23:47:54 * ehird` should really write a page on this sometime so he can just link people to it instead of debating with them
23:48:37 * pikhq should just get a copy of "Free Software, Free Society" so he can just hand it to people instead of debating with them
23:49:12 <pikhq> Why will I not use Mac OS?
23:49:24 <pikhq> Actually, I will. . . The minute I have a source tarball in my hands.
23:49:34 <pikhq> Which is, knowing Apple, never.
23:50:07 <ehird`> pikhq: I find it odd that you say 'knowing Apple' while apparently disliking them.
23:50:15 <Asztal> I'm sure if you hand over enough cash...
23:50:15 <ehird`> Presumably, you wouldn't go researching them to death.
23:50:35 <pikhq> Apple is not known for handing over source tarballs with the GPL attached.
23:50:45 <ehird`> pikhq: I like how you added the 'GPL' clause there.
23:51:08 <ehird`> You're either with us, or against us, obviously, so the mostly-BSD stuff you get here: http://www.opensource.apple.com/ (yes, I know it's not full OS X, obviously) doesn't count
23:51:12 <pikhq> (I'd accept any free license, actually. BSD works, the current version of the APL works, etc.)
23:51:21 <ehird`> but i'm not interested in a debate
23:52:00 <pikhq> They produce damned good software (usually), but it's not free, so I won't use it.
23:52:56 <ehird`> pikhq: The rabid lack of reason and dogmatic assertations that involve being a free software zealot make the term 'religious' be something other than an exaggeration, I find...
23:55:02 <pikhq> Whatever.
23:55:15 * pikhq shall go off to make his computer obey him for a bit.
23:55:47 <ehird`> Funny, my computer's doing t hat too.
23:56:14 <pikhq> Really? I thought you wanted it to have user-replacable WMs?
23:56:33 <ehird`> that was mostly a joke, actually. I like the WM.
23:56:46 <pikhq> How would you go about replacing it if you wanted to, though?
23:56:48 <ehird`> Besides, any WM-programming I would do would be just as a toy, so X11 would be fine.
23:56:57 <ehird`> pikhq: Ah. It's obeying me, see, because I haven't told it to do that.
23:57:06 <pikhq> But it won't obey if you tell it to do that.
23:57:16 <ehird`> But I haven't told it to do that. Therefore it's obeying me. QED!
23:57:25 <pikhq> For now, maybe.
23:57:34 <ehird`> Also, what if X11 didn't let you do that? Would you go and hack up the source for weeks to get that running?
23:57:37 <ehird`> No, I doubt it.
23:57:44 <pikhq> No, but I'd be free to.
23:57:54 <pikhq> And I'd be free to ask someone else to do so.
23:58:07 <ehird`> funny, the debates are like ones with religious fundamentalists too...
23:58:09 <pikhq> I'd even be free to hire someone else to do so, if I were willing to part with the money needed for that.
23:58:10 <ehird`> anyway, whatever
23:58:12 <ehird`> :)
23:58:21 <ehird`> I could hire apple to do it too actually.
23:58:26 <ehird`> I'd need an awful lot of money, but I could
23:58:37 <pikhq> Actually, I have enough free time, I could probably hack up the source for weeks. . .
23:58:44 <pikhq> Keep in mind, I wrote PEBBLE in my free time. :p
23:59:11 <faxathisia> What's PEBBLE
23:59:24 <pikhq> The Practical Esoteric Brainfuck-Based Language, Eh?
23:59:37 <pikhq> http://pikhq.nonlogic.org/pebble.php
2008-01-16
00:00:39 <Asztal> is that a different name for BFM?
00:00:48 <pikhq> That is the new name for BFM.
00:00:48 <Asztal> or a different project?
00:00:53 <pikhq> And has been since May of last year.
00:02:46 <Asztal> I don't have free time, I have not-doing-university-work time :)
00:35:39 -!- AnMaster_ has joined.
00:36:50 -!- AnMaster has quit (Connection timed out).
00:51:45 -!- sebbu has quit ("@+").
00:59:56 -!- ehird` has quit.
02:10:30 -!- calamari has joined.
02:31:37 -!- dbc has joined.
02:40:28 -!- dbc has quit (Client Quit).
03:56:01 -!- GreaseMonkey has changed nick to SuperMonkey.
03:56:07 -!- SuperMonkey has changed nick to GreaseMonkey.
04:16:32 <RodgerTheGreat> I made a new comic: http://nonlogic.org/dump/images/1200456820-camera.png
04:24:19 <faxathisia> hehehe
04:51:07 <calamari> dunno why, but I thought it'd switched to a washing machine in the lower left pic.. haha
04:53:04 <Slereah> Well, a talking washing machine would make more sense.
04:54:51 <RodgerTheGreat> Slereah: clearly
04:55:40 <RodgerTheGreat> calamari: I can kinda see that confusion, but I figured the slow zoom-in would make it clear
04:57:35 <calamari> RodgerTheGreat: yeah I wasbn't paying attention .. got it the second time thru
05:41:10 <bsmntbombdood> RodgerTheGreat: i've never seen one of those pictures
05:41:27 <RodgerTheGreat> ?
05:41:41 <bsmntbombdood> holding up the leaning tower of pizza
05:43:06 <faxathisia> http://img2.travelblog.org/Photos/4598/13665/f/58265-Leaning-tower-of-pisa-1.jpg
05:49:14 <RodgerTheGreat> thanks, faxathisia
05:56:55 -!- calamari has quit ("Leaving").
06:56:21 <Slereah> I wonder how many interpreters I could run at the same times.
06:56:40 <Slereah> Like an interpreter of language A ran on the interpreter of language B ran on etc
07:47:10 -!- AnMaster_ has changed nick to AnMaster.
07:48:04 <bsmntbombdood> eigenratio!
07:57:27 <AnMaster> Slereah, well run a brainfuck interpreter coded in brainfuck, that runs inside my brainfuck interpreter coded in bash, that runs inside bash
07:57:31 <AnMaster> that means, 3 levels
07:59:17 <AnMaster> I'm sure more are possible
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:00:16 <AnMaster> http://rage.kuonet.org/~anmaster/bzr/index.py/log/bashfuck/head
08:24:11 -!- AnMaster has quit (No route to host).
08:58:28 -!- GreaseMonkey has quit ("night").
09:00:22 -!- AnMaster has joined.
09:12:34 -!- slereah_ has joined.
09:12:34 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
10:41:20 -!- Corun has joined.
11:01:12 -!- Corun has quit ("This computer has gone to sleep").
11:22:24 -!- Tritonio_ has joined.
12:43:41 -!- sebbu has joined.
13:03:40 -!- Tritonio_ has quit (Read error: 110 (Connection timed out)).
13:04:17 -!- Tritonio_ has joined.
13:17:44 -!- Tritonio_ has quit (Remote closed the connection).
13:28:09 -!- ais523 has joined.
13:48:32 -!- joku has joined.
13:51:34 -!- joku has left (?).
13:52:19 -!- argoyle has joined.
14:02:56 -!- jix has joined.
14:17:03 -!- jix has quit ("CommandQ").
14:37:54 -!- jix has joined.
15:20:02 -!- argoyle has left (?).
15:34:43 -!- timotiis has joined.
15:45:38 -!- ehird` has joined.
15:48:27 <slereah_> Mister Ais!
15:48:38 <slereah_> Does this work as a 2,3 machine interpreter? http://membres.lycos.fr/bewulf/Russell/23.py
15:49:00 <ehird`> ais523 is here?
15:49:01 <ehird`> great
15:49:11 <slereah_> An infinite band of 0 (white cells), input, starts at the beggining of the input in state A.
15:50:39 <ais523> ehird` is here?
15:50:45 <ehird`> yes
15:50:46 <ehird`> :P
15:50:59 <ais523> I was working on optimising the C-from-Underload code
15:51:02 <ehird`> ais523: I rewrote the compiler and such. http://rafb.net/p/sJZzsI57.html
15:51:09 <ais523> I managed to eliminate all but two uses of recursion
15:51:13 * ais523 goes to paste it
15:51:13 <ehird`> Yeah _copy is still completely recursive ofc
15:52:07 <ais523> http://pastebin.ca/857315
15:52:23 <ais523> all call calls in the original code now tail-recurse
15:52:31 <ais523> even the ones which don't appear tail-recursive in the original code
15:52:39 <ais523> so they can't cause stack overflow no matter how bad the original code is
15:52:40 <ehird`> crap, i should have waited before i rewrote it
15:52:40 <ehird`> heh
15:53:12 <ais523> also the only two recursive calls I didn't change into iteration are for wrapped lists in copy and print
15:53:39 <ehird`> are they fixable?
15:53:41 <ais523> last has a new definition, for efficiency
15:53:46 <ehird`> well, copy for wrapped lists is the one i care about really
15:54:03 <ehird`> ais523: I made last self-referencing ages ago ;)
15:54:07 <ais523> it means 'garbage unless this happens to be the start of a stack element, when it points to the last element of that stack element'
15:54:18 <ais523> rather than being updated all the way along an element
15:54:28 <ehird`> else if(o->fp())
15:54:28 <ehird`> that is deep magic, i like it :D
15:55:08 <ais523> return 1 means do a call at that point, return 0 means don't
15:56:02 <ais523> trying to make copy work on infintely-nested wrapped lists could be problematic
15:56:24 <ais523> because it's hard to see how to copy lists like (((a)(b))((c)(d))) in an iterative manner
15:57:11 * ais523 is looking at slereah_'s 2,3 interpreter
15:57:46 <ehird`> ais523: would it help if i gave you the source (prelude&scheme compiler) to the new version?
15:57:52 <slereah_> Thankies.
15:57:58 <ehird`> its a lot more readable than the previous one, and it means you don't have to just change one program's output
15:58:14 <ehird`> also ais523 with your half-hand-compiled fibs it generates 29 fibs in 10 seconds
15:58:20 <ehird`> IO bound, obviously
15:58:28 <slereah_> I'm having a hard time programming anything at all on it, since I have absolutely no ideas how to do any particular pattern.
15:58:32 <ais523> ehird`: maybe a good idea if we want to work on this together
15:58:33 <ehird`> even 'cat' takes about 20 seconds to print it out
15:58:47 <ehird`> ais523: hm, have you got any version control systems? :P
15:59:52 <ais523> yes, but I don't normally use them
16:00:03 <ehird`> might be a bit easier if we're both going to be doing stuff with it
16:00:13 <ais523> I have svn installed over here
16:00:15 <ehird`> i personally use darcs or mercurial but you probably just have svn
16:00:17 <ais523> but no server to use it with
16:00:19 <ehird`> heh :)
16:00:23 <ehird`> i have a server, how convenient
16:00:28 <ehird`> er, i'd have to set up svn though.
16:00:44 <ehird`> should only take a minute... if it doesn't then i'll just upload it somewhere :P
16:02:42 <ais523> slereah_: I put one of the genuine test programs I used when constructing the proof at http://pastebin.ca/857325
16:02:52 <ais523> the A indicates the initial position of the tape head
16:03:32 <ehird`> ais523: such elegance.
16:03:45 <ehird`> the metapatterns fold and weave and the digits intertwix'd.
16:04:52 <ais523> the 2,3 source I pasted corresponds to the system 5 system 1,2 4,5 2,4 "" "" ""
16:12:51 -!- slereah__ has joined.
16:13:52 -!- slereah__ has quit (Remote closed the connection).
16:14:02 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
16:18:15 -!- Slereah has joined.
16:19:02 <Slereah> Let's see how this computer fares now
16:19:19 <ais523> does your program have any way to specify where to start?
16:20:08 <Slereah> Not right now. Though I was thinking of adding two symbols.
16:20:24 <Slereah> ^and v, to add next to the cell you want to start with, in state A or B
16:21:20 <ais523> I just used A and B
16:21:35 <ais523> C, as well, in some of the more advanced systems that the 2,3 Turing machine emulates
16:22:16 <Slereah> I'm starting to regret windows.
16:23:35 <Slereah> I wonder though, is it possible to produce any pattern at some point on the 2,3 machine?
16:24:25 <Slereah> I get the impression that it's impossible to end up on some pattern containing more than one zero.
16:24:30 <Slereah> Unless I input it.
16:24:43 <ais523> the number of zeros is nonincreasing over more than a few steps
16:24:46 <ais523> I prove that somewhere
16:25:38 <Slereah> Then it probably was a bad choice to use that symbol for my attempt at some sort of meaningful output.
16:27:18 <ais523> The Perl scripts at the end of the proof show some possible ways to filter output
16:27:32 <ais523> outputting on each 'relevant zero' is normally the best way to do it, but I've forgotten the precise definition
16:27:42 <Slereah> I'm only on the 3rd machine of that proof.
16:28:14 <Slereah> It's exam week, so I try to read some more physics-related proof.
16:28:33 <ais523> only show steps on which
16:28:34 <ais523> # a 0 is active and the states on the previous 3 steps haven't been B then A
16:28:34 <ais523> # then A)
16:29:05 <ais523> that's the definition of which steps to show copied from the Perl script
16:31:13 <Slereah> Wonder if I could make some hello world with that.
16:31:47 <Slereah> Using the 1 and 2 as binary digits, showing the translated tape every those steps.
16:39:03 -!- Hiato has joined.
16:55:46 <Slereah> Hi.
16:56:10 <Hiato> Wassup Slereah (If that was aimed at me :) )
16:56:20 <Slereah> Yes indeed
16:56:23 <Slereah> A little late, but
16:56:41 <Hiato> rather late then never ;)
16:58:28 <Hiato> http://www.langpop.com/ : This is crazy, I never realised just how popular C was ( I really don't like it though)
16:58:43 <ais523> C is really useful for things like device drivers
16:58:54 <ais523> and lots of those have to be written every year
16:59:00 <Hiato> because of compiling to bytecode I suspect...
16:59:16 <ais523> and because most OSs are written in it
16:59:25 <Hiato> aha, yes, true
17:00:22 <ais523> it's also a good language to compile into
17:00:29 <ais523> if you want portable output
17:00:40 <Hiato> apparently so... though there is the fabled D
17:00:40 <ais523> and would otherwise be compiling into assembly
17:00:51 <ais523> or C--, of course, which is even lower-level than C
17:00:53 <Hiato> I like assembly
17:01:07 <Hiato> No, that would be cruelty to humans, lower level C
17:02:39 <Slereah> For some reason, they teach us C here.
17:02:53 <pikhq> C-- is designed to be used as a sort of portable assembly.
17:03:02 <Hiato> hrmm... well I guess it does put you in good stead
17:03:04 <pikhq> It resembles C, but it is much easier to define behavior in it.
17:03:14 <pikhq> And so, it's easier to target.
17:03:15 <Slereah> Even though we're not really looking for all the fantastic advantages of C, since we just do numbers.
17:03:38 <Hiato> pikqh: What's the point though, there i in line assembly in C and there is HLA (High Level Assembly)
17:03:58 <pikhq> Did you miss the bit about being portable?
17:04:07 <Hiato> Slereah: That's what I like about Delphi: It's Pascal (which is goddam easy) and it's RAD
17:04:12 <pikhq> HLA is a macro language for x86 assembly. . .
17:04:26 <pikhq> Inline assembly is both nonportable *and* nonstandard.
17:04:28 <Hiato> pikhq: Yes, but C is portable and HLA compiles into assembly which is portable
17:04:33 -!- jix has quit ("CommandQ").
17:04:42 <Hiato> oh
17:04:43 <pikhq> Hiato: Assembly? Portable?
17:04:46 <Hiato> I didn't know that
17:05:04 <Hiato> I really thought it was. Unless you moved from x86 to x86_64
17:05:16 <ais523> what about 6502 assembler?
17:05:23 <ais523> that's nothing like x86 assembler
17:05:25 <pikhq> Assembly is neither cross-OS portable nor cross-CPU portable.
17:05:41 <Hiato> Slereah: I didn't mean RADical :P (Just incase) I meant Rapid Application Development
17:05:46 <pikhq> Let's say I make a small program in x86 assembly, assuming Linux.
17:06:05 <ehird`> who wants to try out the current version of the underload compiler
17:06:14 <pikhq> That same program will not run on x86_64 Linux, or PPC Linux. Nor will it run on Windows of any sort, nor on Mac OS of any sort. . .
17:06:19 <Slereah> Hiato: I don't know what either of those things are, and don't know much of Delphi either
17:06:24 <Slereah> So no worries
17:06:38 <ehird`> haha, quite ironic
17:06:39 <Hiato> lol, sure :D
17:06:39 <pikhq> (It'll run on x86 BSDs, but that's because they've got a spiffy kernel feature letting them handle the Linux syscall interface. . .)
17:06:41 <ehird`> IT compiles to C
17:06:56 <ehird`> if so:
17:07:01 <ehird`> svn co svn://elliotthird.org/underload
17:07:06 <ehird`> note that tailcalls are broken right now
17:07:19 <ehird`> in the output you can change #define TAILCALL ... to #define TAILCALL CALL to fix
17:07:52 <Hiato> pikhq: Surely though, TASM, NASM, FASM and co are an attempt to standardise the the Assembley syntax/language and thus make it portable
17:08:16 <ehird`> Hiato: um no
17:08:17 <pikhq> You are quite ignorant, apparently.
17:08:23 <Hiato> sorry ehird`: haven't got the faintest clue what underload is
17:08:25 <pikhq> The syntax is not what matters. . .
17:08:26 <ehird`> pikhq: hey, give him a break
17:08:33 <pikhq> The raw binary changes from CPU to CPU.
17:08:41 <ehird`> pikhq: calling someone ignorant just because they don't know about syscalls in ASM is stupid
17:08:43 <Hiato> pikhq: quite possible, I live in South Africa
17:08:43 <pikhq> And the syscalls change from OS to OS.
17:08:51 <ehird`> Hiato: think about it this way
17:08:55 <pikhq> Your country has nothing to do with it. . .
17:08:58 <ehird`> Hiato: when an asm program wants to print out some text to the screen
17:09:01 <ehird`> it can't do
17:09:03 <ehird`> PRINTOUT blah
17:09:07 <ehird`> because the cpu Can't Do That
17:09:08 <pikhq> Your lack of experience in assembly is all that's relevant. :p
17:09:11 <ehird`> it has to do:
17:09:21 <ehird`> ...put blah in a register somehow...
17:09:28 <ehird`> INTERRUPT 38433
17:09:33 <ehird`> and the OS intercepts interupt 38433
17:09:35 <ehird`> and uses that to print
17:09:39 <ehird`> but every OS does it completely differently.
17:09:48 <Hiato> I remember how to do Assembly, FASM that is (I wrote a little tiny OS type thingy a while ago)
17:09:54 <pikhq> And every CPU has different commands for putting blah in a register, and doing interrupts.
17:09:57 <Hiato> yes, I understand
17:10:03 <Hiato> ok
17:12:31 <Hiato> PS: pikhq: In SA, we only do computer studies in Grade 10/11/12 and we do basic stuff like PC structure, data storage databases etc.. nevermind the fact that I have only had Internet for about ~1 year now and that there are virtually no computer resources in SA.... That was why I made my statement
17:12:50 <pikhq> In x86, it's just "mov $string_address,%ecx;mov $string_size,%edx;mov $1,%ebx;mov write,%eax;int 0x80". . . Assuming string_address points to "Foo" and string_size is the size of that string. . .
17:13:29 <pikhq> In x86_64, it's something more like "push $string_address;push $string_size;push 1;push write;syscall".
17:13:31 -!- Jontte has quit (Remote closed the connection).
17:13:54 <Hiato> alright, I get it...
17:13:58 <pikhq> Mmkay.
17:14:21 <Hiato> South Park? :P (The psychologist)
17:15:04 <pikhq> Isn't that a teacher? (Mmkay.)
17:15:14 <Hiato> Oh, yeah huh ;)
17:15:24 <Slereah> School counselor.
17:15:30 <Hiato> there we go :D
17:15:42 <pikhq> *shrug*
17:15:51 <Slereah> With his many great lessons on drugs.
17:16:09 <Hiato> Beats me, I only saw the one episode...
17:18:20 <ehird`> Hiato: Impressive that you made Full 0 in your second year with internet :P
17:18:27 <ehird`> Or did you use computers significantly before that?
17:28:26 -!- jix has joined.
17:37:27 -!- Hiato has quit (Read error: 110 (Connection timed out)).
17:55:30 -!- jix has quit ("CommandQ").
18:01:20 -!- Hiato has joined.
18:01:35 <Hiato> Load shedding....
18:02:06 <Hiato> But, I'm back now
18:02:11 <Hiato> and so is the power
18:02:13 <Hiato> :D
18:02:21 <Slereah> CAN YOU FEEL THE POWER?
18:02:36 <Hiato> Heh lol :D
18:02:43 <Slereah> http://img.lulz.net/src/1178122406441.jpg
18:02:44 <Slereah> :D
18:03:06 <Hiato> Wicked :D
18:03:27 <Hiato> what I meant was that Eskom (the power dudes in SA) feel the need to arbitrarily cut off certain area's power for unspecified amounts of tin
18:03:29 <Hiato> *time
18:03:39 <Hiato> without warning or schedule
18:03:49 <Hiato> and they call it Load Shedding....
18:04:12 <Slereah> I'll give you three thousand tons of tin.
18:04:18 <Slereah> If you give me back my power.
18:04:31 <Hiato> Hrmm... you drive a hard bargain
18:04:38 <Hiato> three and a half thousand :P
18:04:41 <Hiato> and its done
18:04:53 <Slereah> Damn you, what am I, made of tin?
18:05:00 <Slereah> Do I look like the Tinman to you?
18:05:08 <Hiato> Well, for short... yes
18:05:15 <Hiato> especially through IRC
18:05:24 <Hiato> though it has that effect on everyone
18:12:38 -!- oerjan has joined.
18:14:39 <ehird`> hello oerjan
18:15:01 <Hiato> ^^
18:15:07 <Hiato> meaning ditto
18:15:47 <ais523> hello
18:15:52 <ehird`> oerjan: the life of a compiler writer is not easy
18:15:53 <ehird`> 18:14:53 <ais523> I've been tracing it two implementations simultaneously
18:15:53 <ehird`> 18:15:01 <ais523> they deviate somewhere inside either block 16 or block 1
18:15:53 <ehird`> 18:15:04 <ais523> quite early on
18:15:53 <ehird`> 18:15:04 <ehird`> hardcore
18:16:16 <oerjan> argh
18:16:27 <oerjan> i mean hello
18:16:31 <Slereah> Hi
18:16:36 <ehird`> argh, oerjan
18:17:49 -!- jix has joined.
18:18:58 <Slereah> Why can't Kolmogorov be called Bob?
18:19:19 <Slereah> Or Popov, to make it Russianer.
18:20:22 <oerjan> technically he _could_ be called Andrey
18:20:51 <Slereah> Yes, but youwon't find an Andrey machine!
18:20:57 <Slereah> Or can you?
18:21:07 <Slereah> I'll make a goddamn Andrey machine!
18:21:10 * oerjan wonders what the russian diminutive is for that
18:21:16 <Slereah> Andrey Popov machine.
18:21:16 <oerjan> lament!
18:23:01 <oerjan> there apparently is Scott Andrey Machine
18:25:16 <Slereah> Heh. Esolang is the first google result for Kolmogorov Machine
18:26:05 <Slereah> Are the graph in computing the same as in math?
18:26:26 <oerjan> apparently not a very common term then...
18:26:26 <Slereah> The {<x;y> | for some property }
18:26:47 <oerjan> um...
18:27:15 <oerjan> the word graph has several meanings
18:27:56 <oerjan> the graph of a function, or a graph of vertices and edges, spring to mind
18:28:29 <oerjan> and i believe both are used in both computing and math
18:28:40 <Slereah> I suppose the graph of a function qualify as that definition.
18:28:50 <Slereah> Since a function is just a particular type of graph.
18:29:15 <Slereah> Not sure what the vertices one is though
18:29:48 <oerjan> http://en.wikipedia.org/wiki/Graph_(mathematics)
18:30:08 <Slereah> Why do I get gay porn with "Brainfuck" on google image?
18:30:32 <Hiato> rofl
18:30:41 <Hiato> Rather
18:31:00 <Hiato> why where you searching Brainfuck on Google Images anyways :D?
18:31:27 <oerjan> Slereah: your definition seems to be the graph of a relation
18:31:40 <Slereah> Well, I typed Kologo...Kogloglo...Glokok... Andrey Machine in google.
18:31:48 <Slereah> And then, I clicked on google image, for lulz
18:31:51 <Slereah> Only one result
18:31:59 <Slereah> Then, I tried Brainfuck
18:32:16 <Slereah> Well, that definition comes from the Bourbaki
18:32:16 <Hiato> Haha
18:32:23 <Slereah> So it might not be very up to date
18:32:36 <Slereah> http://membres.lycos.fr/bewulf/Russell/Graphe.jpg
18:32:55 <oerjan> well wikipedia mentions it
18:33:32 <oerjan> but then in set theory a relation is often identified with its graph
18:33:57 <Slereah> Hell, I don't even understand the difference!
18:35:50 <oerjan> in predicate logic a relation is usually not a set, but a more basic logical concept
18:36:05 <oerjan> which is the sense used in that jpg
18:36:20 <oerjan> er no
18:36:30 <oerjan> relation = proposition in that
18:37:16 <oerjan> you could say a proposition is a relation with no arguments i guess
18:38:12 <Slereah> Strange definition.
18:38:56 <oerjan> hm... fits with automatic currying like in haskell :D
18:39:16 <Slereah> I think there was some relation definition without sets in the Principia Mathematica, but I never focused beyond chapter 40.
18:40:03 <Slereah> "A graph or undirected graph G is an ordered pair"
18:40:08 <Slereah> That I like better!
18:41:42 <Slereah> Hell. This is distracting.
18:41:49 <Slereah> why can't I just study :(
18:49:56 <ehird`> Woot!
18:49:59 <ehird`> The underload->C compiler works.
18:50:07 <ehird`> It does tail-call optimization and all that jazz.
18:50:13 <ehird`> svn co svn://elliotthird.org/underload
18:50:15 <ehird`> if you want to take a look
18:50:18 <Slereah> Time for celebration!
18:50:30 <ehird`> Get a Scheme implementation, and pipe underload.scm to a file, then compile that with gcc.
18:50:40 <ehird`> It should print an awful lot of colons.
18:52:08 <Slereah> Lolgoatse
19:01:16 <Hiato> can someone quickly explain Trinary (or ternary) to me, I don't understand how you convert...
19:01:29 <ais523> if a number has digits edcba
19:01:38 <ais523> then its value is a+b*3+c*9+d*27+e*81
19:01:51 <Hiato> aha
19:01:55 <Hiato> roger, thanks...
19:02:00 <Hiato> I got confused there
19:04:06 <ehird`> Hiato: binary
19:04:08 <ehird`> :
19:04:11 <ehird`> 0,1
19:04:19 <ehird`> ((digit*2)+digit)*2...
19:04:42 <ehird`> 1101 -> ((((((1*2)+1)*2)+0)*2)+1
19:04:48 <ehird`> with trinary it's the same but with 0,1,2
19:04:52 <ehird`> same with decimal: but with 0-9
19:04:57 <ehird`> hex: 0-9A-F
19:05:20 <Hiato> yeah, I got it from ais523's explanation, but thanks anyway :).
19:06:19 <Asztal> as the INTERCAL manual explains, ternary offers some nice options for signed numbers (e.g. balanced ternary)
19:06:29 <Asztal> where 2 actually means -1
19:06:44 <Hiato> cool
19:06:49 <Hiato> I'll check it out
19:07:20 <ais523> http://intercal.freeshell.org
19:07:27 <ais523> is the new manual
19:07:33 <ais523> the old one's all over the Internet
19:07:35 <Hiato> awesome, thanks
19:07:59 <Asztal> "The tape still has characters written on it in binary, even though the program uses a different base"
19:08:15 <Asztal> Haha, must be fun doing binary operations in TriINTERCAL.
19:08:26 <Hiato> Heh, :D
19:08:27 <ais523> the ternary description's in the original manual
19:09:14 <Hiato> "`bBASEChange base" there's the solution :P
19:42:02 <Hiato> oh well, I'm tired today (1st day of school again..)
19:42:03 <Hiato> cheers
19:42:06 -!- Hiato has quit ("Leaving.").
19:49:03 <ehird`> after the compiler obediently spewed out a 73184 line C file, I am now attempting to compile it with -O3
19:49:08 <ehird`> I think it might take a few years.
19:49:42 <Slereah> Well, don't bother. The world's ending in 5 years, according to the most reliable crackpots.
19:51:04 <oerjan> 5? i thought it was 4
19:51:13 <oerjan> 2012 that is
19:52:10 <oerjan> but don't worry, it'll just be a verne singularity.
19:52:26 <oerjan> er vinge
19:52:52 <oerjan> also in the process computing power will grow asymptotically so compilation should certainly finish
19:53:04 <oerjan> assuming you upgrade regularly
19:53:29 <ehird`> why isn't gcc multi core!!!
19:53:33 <ais523> the resulting program took me 21m56.905s to run with -O0
19:53:50 <ais523> and it's only a 99bob...
19:54:00 <ehird`> it is compiled badly from brainfuck, though..
19:54:08 <ehird`> and you had debug checks on...
19:54:16 <ehird`> and your - is I(n)
19:54:24 <ais523> I doubt the debug checks would have made that much of a difference
19:54:29 <ais523> compared to the hugely inefficient -
19:54:31 * pikhq makes Thy Dungeonman-Brainfuck Edition
19:54:42 <ais523> pikhq: ?
19:54:48 <pikhq> http://www.hrwiki.org/index.php/Thy_Dungeonman
19:55:08 <ais523> I wonder what would happen if I translated Lost Kingdoms?
19:55:15 <pikhq> Last summer, I wrote an engine for text-based games in Brainfuck. . .
19:55:23 <pikhq> You could probably get Lost Kingdom to run in it.
19:55:25 <Slereah> Translated to what?
19:55:30 <ais523> Underload
19:55:34 <johnl> Lost Kingdoms?
19:55:36 <pikhq> Well, the engine is in PEBBLE, but. . .
19:55:36 <ais523> with some input extension, presumably
19:56:13 <ehird`> yeeeeeeeeeeeeeeeeeeeeeeeesh, i just had to kill gcc.
19:56:23 <ehird`> you won't believe what i saw just before...
19:56:29 <Slereah> GOD?
19:56:30 <ehird`> gcc did a garbage collection.
19:56:33 <ehird`> a GARBAGE COLLECTION!!
19:56:35 <ehird`> gcc!!
19:56:35 <Slereah> Also good.
19:57:09 <ehird`> darwin is having a hard time recoveirng...
19:57:21 <pikhq> Well, yeah. GCC has a builtin garbage collector for internal purposes.
19:57:24 <ehird`> ais523: I think, perhaps -O2 will be enough
19:57:26 <Slereah> Well, with all that creationism.
19:57:38 <ehird`> pikhq: Did I mention it did it because it had >over 200MB allocated<?
19:57:47 <ehird`> a C COMPILER.
19:57:56 <pikhq> I've seen it.
19:58:11 <pikhq> Granted, that's usually on big-ass C++ compiles.
19:58:15 <ehird`> ais523: apparently, -O3 infinite loops under... stressful conditions.
19:58:22 <ehird`> :|
19:58:53 <pikhq> Although doing, say, Lost Kingdom->C->binary with -O2 or -O3 makes GCC hate you.
19:59:00 <ehird`> -O2 was quick
19:59:02 <ehird`> but -O3..
19:59:04 <ais523> it's not particularly stressful, though, just extensive
19:59:05 <pikhq> It usually gets to about 1.5GB before segfaulting if I do that. . .
19:59:28 <pikhq> s/segfault/malloc returns null/
19:59:39 <ehird`> 99bob is now reniced to -20
19:59:44 <ehird`> so it should ... not be terribly slow
19:59:50 <ehird`> oh look, "99 bottles of beer on the wall, "
20:00:08 <ehird`> not worth it, I think..
20:00:30 <ais523> maybe we need an /optimising/ BF to Underload compiler...
20:00:31 <ehird`> ais523: I think perhaps we should concentrate on other programs
20:00:38 <ehird`> For now.
20:00:40 <ais523> likely a good idea
20:00:46 <ehird`> we need a big program, though..
20:00:52 <ehird`> So we can, e.g. optimize it.
20:00:55 <ehird`> ANd get rid of memleaks.
20:01:10 <ehird`> ais523: I know! A prime checker.
20:01:22 <ehird`> Preferably, an infinite one: checks 1, then 2, then 3, ...
20:01:31 <ais523> hmm... division would be quite difficult to write in Underload
20:01:36 <ais523> but it is possible
20:01:40 <ais523> (I've done it before)
20:02:29 <ais523> maybe doing it finitely with an Erosthanes sieve would be easier
20:03:11 <ais523> anyway, it's getting late, and I'd better go home
20:03:24 <ehird`> aw crap, now i have to test it on my own without valgrind :P
20:03:39 -!- ais523 has quit ("bye everyone!").
20:04:30 <ehird`> Ooh idea
20:04:37 <ehird`> Convert http://www.bf-hacks.org/hacks/uload.b to Underload.
20:04:39 <ehird`> Compile it.
20:04:42 <ehird`> Use as underload interpreter.
20:07:40 <Slereah> How many memory location does an OISC interpreter need?
20:09:46 <pikhq> Enough.
20:10:04 <ehird`> kinda-esoteric challenge!
20:10:05 <ehird`> http://pastebin.ca/raw/857629
20:10:15 <Slereah> How much is enough?
20:10:21 <ehird`> decode that and you'll get a program which can encode and decode the same "encryption" that is put on it!
20:10:46 <faxathisia> looks like python
20:11:15 <ehird`> Errr, don't do it, I broke the decoder
20:11:16 <ehird`> :D
20:11:17 <ehird`> Fixing now
20:11:22 <faxathisia> non-obftuscated..
20:12:10 -!- RedDak has joined.
20:13:03 <Slereah> Is it... AN UNBOUNDED AMOUNT? :o
20:13:22 <Slereah> If it is, that's going to be hard to implement on the Love Machine.
20:13:48 <ehird`> http://pastebin.ca/raw/857632
20:13:50 <oerjan> anything TC requires unbounded memory, you hear
20:13:51 <ehird`> ok: this one
20:14:09 <oerjan> but not necessarily by number of cells, it could be cell contents
20:14:17 <Slereah> Yes, that was my idea.
20:14:28 <Slereah> Using two tapes, and just adding 1's on them
20:14:28 <ehird`> damnit
20:14:29 <ehird`> no
20:14:31 <ehird`> it doesn't quite work
20:14:41 <Slereah> But I wondered if two was enough for OISC
20:15:42 <Slereah> It seems dubious to me, because if two was enough, it wouldn't need three arguments
20:15:51 <oerjan> doubtful, but it may be enough to have only two ever be unbounded
20:16:18 <oerjan> as for emulating a minsky machine
20:16:45 <Slereah> You could just do one instruction of zero arguments, "substract memory from other memory, and branch if"
20:17:53 <Slereah> But I can't find the minimal amount of memory if any on the esowiki or the regular wiki.
20:18:42 <ehird`> hey! who has a really short domain name?
20:19:16 <Asztal> I think I still have cb0.org
20:19:26 <Asztal> never really got round to using it.
20:20:32 <ehird`> hmm, who has a domain name that they are using for other things and also have ways to point urls to different ips
20:20:48 <ehird`> i want to put my short-URL-maker that makes them shorter than any other site i've seen up somewhere :P
20:20:58 <ehird`> like shortdomain/u/
20:21:02 <Asztal> oh, mine expired 27 days ago
20:21:06 <ehird`> :P
20:21:07 <ehird`> haha
20:22:53 <Asztal> if you don't mind custom DNS, I could probably get _.x
20:22:55 <Asztal> :D
20:23:00 <ehird`> heh
20:23:36 <ehird`> Asztal: if you want to keep cb0.org i'd reccomend reregistering it Right Now: domain squatters will grab three-letter domains almost immediately
20:25:30 <GregorR> codu.org is pretty short :P
20:25:40 <Asztal> .coms are all gone, but there should still be a few .nets and a few thousand .orgs
20:25:43 <GregorR> It's not "really short"
20:26:09 <oklokok> vjn.fi is also quite short.
20:26:11 <ehird`> Asztal: few thousand: you are quite the comedian
20:26:18 <Asztal> http://3la.org/toc.html
20:26:22 <pikhq> Grab it now if you want to keep it. ;)
20:26:26 <Asztal> not sure how up-to-date that is
20:26:28 <oklokok> i actually almost made a tinyurl there
20:26:36 <ehird`> oklokok: my tinyurl is great
20:26:47 * pikhq should grab ワスタ・ジョウサイア.com if it's still open. :p
20:26:47 <ehird`> iirc for the first few ten thousand urls you get 3 characters.
20:26:49 <oklokok> how?
20:27:01 <Asztal> I probably shouldn't whois these with networksolutions, should I?
20:27:03 <ehird`> oklokok: i'll tell you if you host it :P
20:27:09 <GregorR> You could buy x.com off Yahoo for some few thousand million dollars :P
20:27:23 <GregorR> Just make sure not to let it expire!
20:27:25 <pikhq> Asztal: Don't whois. Register it; if it fails to register, the name's taken. ;)
20:28:01 <GregorR> Oh, I guess it's "paypal labs" now ... PayPal must have got it from Yahoo and/or been bought by Yahoo.
20:28:05 <Asztal> my web host give me one free registration per year, so I may as well get this one back.
20:28:14 <oklokok> the only "non trivial" part is i have no idea how to get virtual directories, like vjn.fi/879yf
20:28:19 <pikhq> Huzzah.
20:28:20 <oklokok> all i can think of is get.
20:28:30 <oklokok> ehird`: just tell it, i'm not going to steal it.
20:28:31 <pikhq> xn--cckdf4dnf6b9wkcug.com is not taken.
20:29:28 <GregorR> What's that de-punycode-ized?
20:29:45 <oklokok> ehird`: i haven't registered, wait a sec
20:29:49 <oklokok> ehird`: i haven't registered, wait a sec
20:29:52 <pikhq> It's my name in Japanese.
20:30:06 <pikhq> ワスタ・ジョウサイア.com
20:30:06 -!- oklokok has changed nick to oklopol.
20:30:17 <faxathisia> how come going to xn--cckdf4dnf6b9wkcug.com resolves to
20:30:22 <GregorR> My name is registered by some jerk named Greg Orr :P
20:30:22 <faxathisia> ワスタ・ジョウサイア.com
20:30:23 <pikhq> Nothing.
20:30:31 <GregorR> faxathisia: Because that's what it is.
20:30:31 <pikhq> faxathisia: That's punycode.
20:30:56 <pikhq> Punycode is a method of encoding Unicode in 7-bit ASCII, and is used for IDN.
20:31:03 <faxathisia> wo
20:31:04 <Asztal> I can't wait for internationalised TLDs. Then I can be even more confused at domain names.
20:34:46 <ehird`> hmm
20:34:48 <ehird`> using punycode
20:34:51 <ehird`> could you register:
20:34:55 <ehird`> ,[.,].com
20:36:05 <pikhq> True.
20:36:22 <pikhq> I'd recommend doing it on .org, though.
20:37:15 <pikhq> Actually, you don't need punycode for that.
20:37:49 <GregorR> I'm pretty sure domain names don't allow "[" or "]" :P
20:37:56 <GregorR> And punycode's base offset is above ASCII
20:38:03 <GregorR> So in fact you couldn't reg that.
20:38:08 <Asztal> imagine actually being able to register http://"egnufeb">:#,_@.info/
20:38:30 <Asztal> the .info converters says so too... "The converted string ,[.,] contains characters not supported in this registry"
20:38:51 <pikhq> There can't be a *technical* reason for that.
20:38:55 <GregorR> <GregorR> And punycode's base offset is above ASCII
20:39:21 <GregorR> You can't encode those into punycode and domain names have never allowed "," and "]"
20:39:31 <GregorR> Also, that would have to be the subdomain ",[" under the domain ",]"
20:40:37 <ehird`> ok, wait
20:40:42 <GregorR> Oh yeah, and two-letter domain names are no longer sold.
20:40:43 <ehird`> there are unicode chars looking very much like [
20:40:44 <ehird`> and ,
20:40:51 <ehird`> right?
20:40:55 <GregorR> Probably.
20:40:56 <ehird`> so: find them, translate to punycode
20:40:59 <ehird`> register ,]-alike
20:41:00 <Asztal> they may be in your browser's IDN blacklist
20:41:04 <ehird`> add subdomain ,[-alike
20:41:10 <Asztal> in which case, the browser would display the punycode
20:41:57 <ehird`> Asztal: Oh well. Find the chars for me! :P
20:41:58 <ehird`> I'm lazy.
20:42:17 <Asztal> heh, stuff like ㎮ is in the blacklist
20:42:50 <Asztal> I doubt I'd be able to read that at my address bar font size..
20:43:46 <Asztal> [ ]
20:43:57 <Asztal> U+FF3B and U+FF3D
20:44:22 <ehird`> i can't read these in linkinus
20:44:25 <ehird`> fileformat.info
20:44:28 <ehird`> link me to the page it has for them
20:44:38 <Asztal> lazy :P
20:44:41 <ehird`> http://www.fileformat.info/info/unicode/char/ff3b/index.htm
20:44:42 <ehird`> damn
20:44:44 <ehird`> we thought the same thing
20:46:20 <ehird`> http://‚[‚.].org/
20:47:04 <ehird`> safari collapses it :(
20:47:05 <ehird`> wait..
20:47:18 <ehird`>
20:47:58 <ehird`> ⁅⁆
20:48:02 -!- oerjan has quit ("Good night").
20:48:29 <ehird`> ⁅﹐.⁆
20:48:33 <ehird`> http://⁅﹐.⁆.org/
20:49:02 <ehird`> http://xn--nwg1758f.xn--owg.org/
20:49:18 <ehird`> or the first one:
20:49:18 <ehird`> http://xn--fvga6742o.xn--ii7c.org/
20:49:38 <Asztal> my IRC client is refusing to open these (having to copy and paste) :)
20:49:56 <ehird`> :D
20:50:27 <ehird`> http://‚[,.].org/
20:50:30 <ehird`> spaced it out a bit.
20:50:54 <ehird`> dibs on http://xn--fvg8298f9da.xn--ii7c.org/
20:51:27 <ehird`> xn--1xa.com is registered
20:51:28 <ehird`> :(
20:52:45 <GregorR> FF3B and FF3D are nice brackets
20:53:01 -!- helios24_ has quit ("leaving").
20:53:42 -!- helios24 has joined.
20:56:45 <GregorR> xn--ufb0078j.com is my best ,]
20:57:48 <GregorR> Urk
20:57:50 -!- ehird`_ has joined.
20:57:55 <GregorR> Firefox disagrees on the translation of that >_O
20:58:21 <ehird`_> what did i miss
20:58:23 <ehird`_> also
20:58:25 <ehird`_> what is the punycode of http://.com/
20:58:38 <GregorR> It's http://www.googleityourself.com/
20:59:58 <ehird`_> no, it won't convert
20:59:59 <ehird`_> so stfu
21:00:34 <ehird`_> URIencoded it's %ef%a3%bf
21:01:22 -!- ehird` has quit (Nick collision from services.).
21:01:24 -!- ehird`_ has changed nick to ehird`.
21:01:28 <Asztal> firefox seems to convert it to F8FF when I navigate to it :(
21:01:42 <Asztal> or indeed paste it at all
21:02:11 <Asztal> maybe it is F8FF
21:02:17 <ehird`> what does it display as in your fonts
21:02:24 <GregorR> I get xn--lzg, and it's owned.
21:02:50 <ehird`> GregorR: that's euro
21:02:54 <ehird`> the euro symbol.
21:03:19 <ehird`> http://www.fileformat.info/info/unicode/char/f8ff/index.htm the image is funky
21:03:20 <ehird`> :D
21:03:23 <ehird`> but not what i see
21:03:25 <Asztal> yes, it's F8FF. It's a private use character (looks vaguely hebrew-ish in this font)
21:03:26 <ehird`> and yeah: it's f8ff
21:03:32 <ehird`> so what's that in punycode?
21:03:34 <ehird`> or can it not do it
21:03:36 -!- GreaseMonkey has joined.
21:04:10 <GregorR> ehird`: Like I said, Firefox told me it's xn--lzg, and that's owned.
21:04:19 <ehird`> it's not xn--lzg.
21:04:22 <ehird`> that's a euro sign
21:04:34 <GregorR> Then what did you type? Looks like the Euro sign to me :P
21:05:35 <Asztal> http://xs123.xs.to/xs123/08033/f8ff931.png
21:06:00 <GregorR> WTF?
21:06:11 <GregorR> XChat is pretty well convinced that's a Euro symbol for me 8-O
21:06:36 <ehird`> you are both wrong!
21:08:22 <GregorR> You mean of course that our /clients/ are wrong.
21:09:14 <Asztal> a domain which looks different depending on what font you happen to like... that's pretty cool :D
21:10:06 -!- Corun has joined.
21:10:38 <ehird`> http://img.skitch.com/20080116-m85215j9jx89pbk5wwb8rwj8y6.jpg
21:10:39 <ehird`> hm
21:10:39 <ehird`> jpg
21:10:47 <pikhq> It looks like a block to me.
21:10:48 * ehird` better reconfigure that
21:11:09 <pikhq> Which, of course, is right if you don't have the correct font.
21:11:11 <Asztal> http://en.wikipedia.org/wiki/%EF%A3%BF
21:11:38 <Asztal> "KLINGON MUMMIFICATION GLYPH", nice.
21:11:46 <ehird`> see my screenshot!
21:12:34 <GregorR> I'm actually a bit surprised that ithink∴iam.com is unowned.
21:15:16 * Asztal ponders reverse DNS opportunities
21:16:46 <Slereah> The ConScript Unicode Registry suggests it be used for the Klingon glyph "KLINGON MUMMIFICATION GLYPH."
21:16:50 <Slereah> I approve.
21:18:17 <Asztal> ah yes, that's the one on fileformat.info, it seems
21:18:38 <ehird`> Asztal: fileformat.info uses Code2000
21:18:57 <ehird`> which has every single character (no, really) and also complies with the ConScript thing
21:20:03 <GregorR> Damn!
21:20:18 <GregorR> It translates the early modern English short s symbol to an 's' :(
21:20:22 <GregorR> (Firefox)
21:23:50 * Asztal registeres g✉.com
21:24:04 <GregorR> HAHAHAHA
21:24:08 <GregorR> That = awesome
21:25:27 <Asztal> so many awesome domain names like ☃.com and ☭.com are parked :(
21:26:48 -!- Corun_ has joined.
21:29:01 <ehird`> g a^ ae %o
21:29:04 <ehird`> what's good about those characters.
21:33:31 -!- Corun has quit (Read error: 110 (Connection timed out)).
21:47:07 -!- ehird` has quit (Remote closed the connection).
21:47:32 -!- ehird` has joined.
21:48:13 <ehird`> ais523 has been congratulated for an awfully long time :P
21:51:29 <oklopol> i guess someone will have to top that
21:51:56 <ehird`> i proved god doesn't exist
21:51:59 <ehird`> but that's not really as important.
21:53:09 <oklopol> so did Sgeo! let's put you both up!
21:53:19 <oklopol> Sgehird to save space
21:54:08 -!- Corun has joined.
21:54:20 <ehird`> when did sgeo prove that? :P
21:54:31 <Asztal> was there a puff of logic?
21:54:37 <ehird`> Asztal: hopefully
21:55:30 -!- Corun_ has quit (Read error: 104 (Connection reset by peer)).
21:56:14 -!- helios24 has quit ("Leaving").
21:56:20 <faxathisia> did he prove black is white for an encore, and get run over at the next zebra crossing? :P
21:57:30 <ehird`> personally i think there'd be a bit of a fuss before he got run over
21:57:39 <ehird`> everything being both 100% dark and 100% light, and all that jazz.
21:59:51 -!- jix has quit ("CommandQ").
22:03:18 <oklopol> i think Sgeo (if it was him) did something with the fact that "god can do anything"
22:03:24 <oklopol> which isn't exactly hard
22:04:02 <GregorR> Was that in #esoteric ?
22:04:14 <GregorR> I'd lurve to see this amazo argument.
22:04:23 <ehird`> oklopol: oh, duh
22:04:26 <ehird`> oklopol: that's retarded.
22:04:41 <ehird`> nobody apart from the most fundamental, braindead idiots define god as "can do anything"
22:04:50 <ehird`> iirc, the most common is "god can do anything which god could logically do"
22:04:58 <ehird`> which /doesn't/ imply god is impossible
22:05:00 <oklopol> ehird`: well, a "god can't exist" argument is always retarded, if it's meant literally
22:05:11 <GregorR> "which god could logically do" ...
22:05:19 <oklopol> :D
22:05:24 <GregorR> Good thing that's so well-defined.
22:05:31 <ehird`> GregorR: it is, you're reading it wrong
22:05:34 <ehird`> it starts off:
22:05:40 <ehird`> "god can do anything that is logically possible"
22:05:44 <ehird`> i.e. results in no contradiction
22:05:49 <GregorR> That makes more sense.
22:05:50 <ehird`> that gets rid of: rock so heavy god can't lift it
22:05:51 <ehird`> BUT
22:06:01 <GregorR> But I feel is a subpar definition of a god.
22:06:04 <ehird`> you can specially formulate something that by its nature everyone but god can do
22:06:07 <ehird`> so you come to that definition
22:06:11 <ehird`> GregorR: this is ancient stuff
22:06:16 <GregorR> Anything which could truly be called a god is exempt from our rules of logic and reason.
22:06:25 <ehird`> GregorR: http://en.wikipedia.org/wiki/Omnipotence
22:06:28 <ehird`> and that's a bullshit argument
22:06:29 <ehird`> :)
22:06:53 <ehird`> god either exists, or he doesn't, and you can scientifically calculate approximations of the probability of this.
22:06:59 <ehird`> (by the way, they're extremely low.)
22:06:59 <pikhq> "God can do anything that he does not limit himself from doing."
22:07:11 <pikhq> ;p
22:08:51 <ehird`> i find it very revealing that everyone who believes or 'believes in belief' (to steal Dawkins' term, who stole it from someone else, etc.) states that logic and reason against god is a defiance of faith and cannot be explained etc etc
22:09:16 <ehird`> exactly because when you do, you find out that a god is incredibly unlikely.
22:09:36 -!- oklopol has quit (Remote closed the connection).
22:09:55 <ehird`> but anyway this is all wrong, because the flying spaghetti monster is real
22:09:58 <ehird`> please ignore everything i said
22:12:29 <GregorR> "<ehird`> i find it very revealing that everyone who believes or 'believes in belief' (to steal Dawkins' term, who stole it from someone else, etc.) states that logic and reason against god is a defiance of faith and cannot be explained etc etc" // I'm not confident that this is a sentence
22:13:05 <ehird`> that * logic
22:13:12 <ehird`> * = using
22:14:39 <GregorR> I'm quite confident that that wasn't a sentence :P
22:17:01 <ehird`> i find it very revealing that everyone who believes or 'believes in belief' (to steal Dawkins' term, who stole it from someone else, etc.) states that using logic and reason against god is a defiance of faith and cannot be explained etc etc
22:18:55 -!- oklopol has joined.
22:19:32 <ehird`> hello oklopol
22:19:52 <oklopol> thanks for the boot, ubuntu <3 ehird`: can i see calculations on the probability?
22:20:05 <ehird`> oklopol: of what
22:20:25 <oklopol> that god exist
22:20:26 <oklopol> s
22:21:22 <ehird`> [continue in /msg, this is getting offtopic here :)]
22:21:27 <ehird`> heh, #esoteric, offtopic.
22:21:29 <ehird`> :)
22:21:35 <GregorR> Sounds pretty esoteric to me :P
22:21:43 <ehird`> GregorR: nahh
22:23:04 -!- oklopol has set topic: soteric programming language discussion | FORUM AND WIKI: esolangs.org | CHANNEL LOGS: http://tunes.org/~nef/logs/esoteric | IRP in #irp | Congratulations ais523 for winning the Wolfram research prize! | Nothing's off-topic in #esoteric! :DDDD.
22:23:12 <oklopol> xD
22:23:24 <ehird`> Unless we redefine the topic.
22:23:34 * ehird` Albatross fanatics unite!
22:23:36 <ehird`> err
22:23:38 -!- ehird` has set topic: Albatross fanatics unite!.
22:23:44 <oklopol> i love how i cut the first character :D
22:24:51 <GregorR> UBUNTU WURVES EHIRD`
22:25:08 <ehird`> i don't use ubuntu
22:35:18 -!- RedDak has quit (Remote closed the connection).
22:46:30 -!- immibis has joined.
22:46:50 <GregorR> ehird`: So you don't love it. It still loves you!
22:46:58 <ehird`> GregorR: start making sense
22:50:27 <GregorR> <oklopol> thanks for the boot, ubuntu <3 ehird`: can i see calculations on the probability?
22:50:48 <ehird`> hah
22:51:04 <GregorR> There should be a newline in there somewhere :P
22:53:43 -!- ehird` has changed nick to rice.
22:53:49 -!- rice has changed nick to ehird`.
22:53:57 <ehird`> *** rice is now known as ehird`.
22:53:58 <ehird`> tee hee
22:56:05 <GregorR> So, yesterday I was eating some curry over ehird`.
22:56:11 <oklopol> GregorR: sometimes i want to say two things at once to make the first one impossible to comment on
22:56:23 <oklopol> but indeeed
22:56:32 <oklopol> it sometimes looks wronglied.
22:56:34 -!- ehird` has changed nick to rice.
22:56:36 <GregorR> oklopol: That's a totally retarded idea CATS ARE FLUFFY
22:56:47 <oklopol> yeah they are :)
22:56:58 <oklopol> rice: awesome puppy
22:57:00 <oklopol> book
22:57:24 <rice> awesome, this nick is MINE!
22:57:27 <rice> I got it dropped :D
22:57:33 <oklopol> (i actually wrote 'puppy' instead of 'book', although i have to admit i realized it a bit before i pressed return, but had to say it anyway)
22:57:34 <GregorR> Wow, how?
22:57:43 <rice> GregorR: it was last used over a year ago
22:57:48 <rice> so i went into #freenode and asked
22:57:51 <rice> and a staffer said OK and did it
22:57:53 <oklopol> oh, i think i've seen you with that
22:57:55 -!- GregorR has changed nick to potatoes.
22:58:34 <rice> i know have a short dictionary word registered as a nick on a large IRC network
22:58:35 <rice> score!
22:59:17 * potatoes > rice
22:59:38 <pikhq> Ah.
22:59:45 <faxathisia> I do too!
22:59:49 <Asztal> I just deleted the objdir halfway through building something, thinking it had finished but not built what I wanted
23:00:02 <rice> faxathisia: which word?
23:00:06 <faxathisia> fax
23:00:10 <rice> heh
23:04:32 <rice> http://www.ddj.com/web-development/184416221 this person seems very bitter about ruby
23:06:13 -!- potatoes has changed nick to GregorR.
23:06:27 -!- immibis 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. I used to think I was indecisive, b).
23:06:55 <rice> you know what would be awesome
23:07:04 <rice> if there was an irc bot controlling a music player daemon
23:07:13 <rice> http://www.musicpd.org/
23:07:16 <faxathisia> there is
23:08:00 <faxathisia> used to be able to queue up songs in #test radio anyway
23:08:34 <faxathisia> oh.. Music Player Daemon is something else..
23:15:05 <RodgerTheGreat> can somebody point me to an online BF string generator?
23:15:28 <GregorR> !bf_txtgen Foobar
23:15:59 <EgoBot> 60 ++++++++++++++[>+++++>++++++++>+++++++><<<<-]>.>-..>.-.<+++. [83]
23:16:02 <RodgerTheGreat> oh, sweet- egobot is working again
23:20:20 <rice> !bf_txtgen Hello, world!
23:21:04 <EgoBot> 118 +++++++++++[>++++++>++++>+++++++++>+++<<<<-]>++++++.>>++.+++++++..+++.<.>>-.<++++++++.--------.+++.------.--------.>+. [839]
23:21:17 <faxathisia> :/
23:23:39 -!- devnonsense has joined.
23:23:43 -!- devnonsense has quit (Remote closed the connection).
23:25:18 <rice> ehm.
23:25:23 <rice> #devnonsense :D
23:25:33 <faxathisia> Huh?
23:25:34 -!- devnonsense has joined.
23:26:00 -!- devnonsense has quit (Remote closed the connection).
23:26:02 <rice> hm wait.
23:27:45 -!- devnonsense has joined.
23:29:20 -!- devnonsense has quit (Remote closed the connection).
23:34:11 -!- devnonsense has joined.
23:36:26 -!- devnonsense has quit (Remote closed the connection).
23:36:30 -!- Sgeo has joined.
23:37:58 -!- devnonsense has joined.
23:39:05 -!- devnonsense has quit (Remote closed the connection).
23:40:28 -!- devnonsense has joined.
23:40:40 -!- devnonsense has quit (Remote closed the connection).
23:50:13 -!- timotiis has quit ("leaving").
2008-01-17
00:38:14 -!- Corun has quit ("This computer has gone to sleep").
00:40:37 -!- sebbu has quit ("@+").
00:42:05 -!- rice has changed nick to ehird.
00:43:09 <ehird> YES
00:43:11 <ehird> I GOT THIS NICK BACK
00:43:20 <ehird> WIN
00:43:21 <pikhq> Heh.
00:43:25 <pikhq> LOSE
00:43:36 <ehird> OK the only nick I need now is Z
00:43:44 <ehird> which I can have if the guy using it changes nicks (he doesn't own it)
00:43:55 <pikhq> Register it and ghost him.
00:44:13 <ehird> I can't.. he's online with it, duh
00:44:17 <ehird> It needs to be dropped.
00:44:25 <ehird> But: not identified.
00:44:29 <ehird> So it can be dropped.
00:44:32 <pikhq> Ah.
00:45:20 <ehird> they appear to be either
00:45:23 <ehird> -asleep
00:45:23 <ehird> -a bot
00:45:47 <ehird> they're in #wikipedia-nl
01:05:03 <oklopol> i can try getting it while you sleep, sounds like a fun objective
01:05:33 <oklopol> damn books are long
01:16:56 <ehird> oklopol: ok, just go into #freenode, then /whois Z every now and then
01:16:58 <ehird> if they're gone
01:16:59 <ehird> /nick Z
01:17:03 <ehird> and ask for it to be transferred
01:17:05 <ehird> then, tomorrow
01:17:06 <Asztal> there's no-one called X, but you'd probably be auto-klined for that ;)
01:17:09 <ehird> tell me the password
01:17:14 <ehird> Asztal: reserved.
01:17:23 <ehird> oklopol: you will just steal it yourself won't you :P
01:22:12 <ehird> oklopol: i can tell!
01:29:55 <ehird> oklopol: ping
01:31:50 -!- adu has joined.
01:32:02 <adu> hi
01:32:07 <pikhq> 'Lo.
01:32:17 <adu> i'm esoteric
01:32:30 <ehird> are you an esoteric programmer.
01:32:35 <adu> i dunno
01:32:44 <ehird> well from /whois you are a programmer
01:32:50 <adu> the last thing I wrote was in perl, so I guess not
01:32:52 <ehird> but... befunge? brainfuck? unlambda? underload? intercal?
01:32:55 <ehird> ah, perl counts
01:33:08 <ehird> http://esolangs.org/wiki/Language_list pick one.
01:33:13 <adu> I wrote a Funge-98 interpreter in perl once...
01:33:23 <pikhq> That counts.
01:33:45 <adu> I never got the AB-YZ importing quite right tho
01:33:46 <pikhq> Befunge-98 even counts as good taste. ;)
01:33:55 <adu> heh
01:34:36 <adu> I really liked funge-space
01:35:00 <adu> it was almost like it was a multidimensional array indexed by a polynomial
01:35:15 <adu> I like polynomials
01:35:39 <adu> no worries about (1, 0) != (1, 0, 0)
01:38:31 <adu> is there such a thing as programmer burnout?
01:38:43 <faxathisia> Yes
01:39:12 <faxathisia> Then you find something new and start again
01:39:22 <adu> where one feel the futility of typing any keys that are not going to bring humanity any closer to a future without typing?
01:41:37 <adu> for awhile I thought all data could be described by AttributedDefaultList's
01:41:57 <adu> faxathisia: whats new for you?
01:42:15 <adu> faxathisia: I mean it sounds like you burned-out, what did you find?
01:43:26 <oklopol> auto-klined?
01:43:28 <oklopol> let's check
01:43:33 <oklopol> erroneous
01:44:12 <faxathisia> adu, a few times.. lisp earlier I guess, type theory now
01:45:03 <adu> ya! Type Theory rocks!
01:45:55 <oklopol> ehird: i won't steal it, just as awesome if i know the owner as it is owning it
01:46:17 <ehird> oklopol: hehe
01:46:20 <oklopol> (unless there's money involved, in which case i'd have to know you more closely ;))
01:46:41 <ehird> one-letter nicks: the best way to gain popularity
01:46:50 <oklopol> heh
01:47:02 <oklopol> i just find stuff like that inherently awesome.
01:47:25 <adu> oklopol: what?
01:47:34 -!- Asztal has changed nick to ^.
01:47:39 <oklopol> adu: short nicks in a big network
01:47:41 <oklopol> just like that
01:47:42 <^> bah, owned
01:47:44 <oklopol> :)
01:47:49 -!- ^ has changed nick to Asztal.
01:47:57 <adu> o
01:48:05 <oklopol> if i got "o", i'd prolly use that one
01:48:13 <oklopol> for obvious reasons
01:49:03 <oklopol> need to continue the book, kinda lame not finishing books in one go
01:49:04 <oklopol> ->
01:49:09 <faxathisia> I implemented an esolang! I think
01:50:04 <faxathisia> It's kind of eso .. anyway but the damn self intepreter doesn't work
01:50:28 <faxathisia> So I have to write a debugger -_-
01:50:36 <adu> I want to make a lang based on AttributedDefaultLists's
01:55:33 <adu> just FYI, what I imagine a AttributedDefaultList to be is similar to a hybrid between a python dict and list, and an XML element with those attributes and stuff, only the keys of the attributes are evaluated at runtime, and the values can only be obtained by "getting" the attribute. All elements of a AttributedDefaultList that are not key'ed members are excecuted in order.
01:56:46 <adu> so its possible to do something like this:
01:56:47 <adu> (if $a then $b else $c) := {True: $b; _: $c}[$a]
01:57:04 <adu> I don't think you'd even need functions at all...
01:57:36 <adu> just AttributedDefaultList's :)
01:59:32 <adu> I wonder if i should try and implement it
01:59:41 <faxathisia> You should
01:59:57 <faxathisia> This is utterly baffling :D
02:00:02 <adu> hehe
02:01:00 <ehird> o is taken
02:01:03 <adu> lol
02:01:09 <ehird> z is droppable though.
02:01:42 -!- adu has changed nick to i.
02:01:46 <i> Bwahaha!
02:01:49 -!- i has changed nick to adu.
02:02:09 <adu> sorry
02:05:09 <adu> faxathisia: do you understand the "{True: $b; _: $c}[$a]" part?
02:05:20 <faxathisia> Yes
02:05:24 <adu> o ok
02:06:07 <adu> that would be the esolang, and "(if $a then $b else $c)" is just its everyday equivalent
02:11:00 <adu> hahahaha, I picked my favorite esolang!
02:11:04 <adu> x-D
02:11:36 <ehird> adu: which? :D
02:11:44 <adu> is Xigxzg related to Zigzag?
02:11:50 <adu> http://esolangs.org/wiki/X-D
02:12:11 <ehird> adu: btw
02:12:24 <ehird> (if $a then $b else $c) is {False: $c; _: $b}[$a]
02:12:33 <ehird> since, all non-False things are true in just about everything
02:13:05 <adu> ehird: ok, whatever, if I make the language you can use {False: $c; _: $b}[$a] however you want! that is the power of AttributedDefaultList's!
02:13:39 <adu> ehird: thank you for the technical correction
02:13:52 <ehird> mind blowing
02:13:58 <ehird> *blind mowingh
02:14:36 <faxathisia> Could you embed AttributedDefaultList's in some existing language?
02:14:40 <adu> sure
02:16:22 <adu> its easy in python, just subclass both list and defaultdict, and test for int/str in the __getitem__ method
02:17:32 <adu> but that will evaluate the values, which is not right...
02:17:34 <adu> hmm
02:17:49 <adu> the values in (key:value) pairs must remain unevaluated...
02:18:12 <adu> I'll have to think about it
02:19:37 <adu> the int/str distinction will also imply that the final implemented would have to require at least two types
02:19:41 <ehird> adu: they're basically hash tables.
02:19:45 <ehird> which, if infinite, are functions.
02:19:49 <ehird> so: nothing really revolutionary
02:19:53 <adu> yes
02:20:57 <adu> but can a language with only finite hash tables mimic functions?
02:21:19 <adu> I suppose thats what a turing machine is... n/m
02:21:43 <ehird> oklopol: z is still alive
02:22:13 <adu> I wish all hash tables looked the same.
02:22:44 <adu> like when you're editing a cron tab, or updating a customer database, or passing options to a commandline tool
02:22:48 <adu> too many formats
02:25:20 <oklopol> adu: at least i and ehird have invented that, and i'm fairly sure there are languages out there that have it already :)
02:25:42 <oklopol> in fact, the last days i've been thinking about optimizing a pattern-matchable hash-table
02:26:06 <oklopol> which is a generalization of a hash-table, and infinite hash-table, and a function
02:26:12 <oklopol> (pretty much equivalent.)
02:26:16 <adu> like a Haskell-like case statement?
02:26:21 <oklopol> yes.
02:26:24 <adu> nice
02:26:29 <oklopol> but...
02:26:40 <oklopol> i think a haskell-like LAMBDA might be better...
02:26:46 <adu> yup
02:26:55 <adu> cuz that has case builtin
02:27:53 <oklopol> yeah, i assume you're bringing case in to get the pattern matching?
02:28:27 <adu> So it is you (and ehird) who invented my favorite concept!? Many thanks to you, and your ideas
02:28:38 <oklopol> :)
02:28:43 <adu> :)
02:28:45 <ehird> we came up with it independantly
02:28:46 <ehird> :P
02:28:47 <oklopol> it's one of my favorite concepts too
02:28:49 <oklopol> indeed.
02:29:25 <ehird> ok, i'll go for now.
02:29:28 <ehird> oklopol: make sure to nab Z!
02:29:30 <adu> ok
02:29:33 <oklopol> i'll try
02:29:36 -!- ehird has quit.
02:30:56 <oklopol> also been thinking more about graphs a lot, i think those might be my favorite :P
02:31:01 <oklopol> *-moer
02:31:02 <oklopol> *
02:31:05 <oklopol> *-more
02:31:19 <oklopol> ...oh btw, did i mention GRAPHICA yet in this conversation?
02:31:26 <adu> graphs are cool
02:31:31 <adu> nope
02:31:41 <oklopol> you know haskell?
02:31:56 <adu> I came up with a way to super-impose a graph-based filesystem ontop of unix
02:32:09 <oklopol> i tell first! :D
02:32:18 <adu> oklopol: I wrote a matrix row-reduction algorithm in Haskell once, I don't remember much... only the basics
02:32:25 <oklopol> okay
02:32:36 <oklopol> well, you know how the data works in general
02:32:42 <adu> ya
02:32:45 <oklopol> just mean the named node tree syntax
02:32:59 <oklopol> List = Head, List | Nil
02:33:15 <oklopol> may not be correct haskell, but you get it, hopefully
02:33:55 <oklopol> basically, you have a bnf-like description of an object, where a left side leads into a right side which again contains modes that are branched to
02:34:03 <adu> right
02:34:04 <oklopol> say "wtf" if i'm not making sense
02:34:07 <oklopol> good
02:34:18 <oklopol> this only allows for trees
02:34:27 <oklopol> so, i was thinking, why not expand it a bit
02:34:36 <oklopol> in graphica, you can pass parameters to the nodes
02:34:49 <oklopol> and you have a namespace global to each graph object
02:35:01 <oklopol> now, here comes the interesting part
02:35:08 <oklopol> well, the part i found interesting enough to implement it
02:35:17 <oklopol> you can name nodes as you go
02:35:37 <oklopol> and if you happen to name a node with a name that's already been used
02:35:49 <oklopol> it is considered the same node as earlier
02:35:57 <oklopol> meaning you can carry stuff around and "loop back"
02:36:14 <oklopol> for finite graphs, i find it a very interesting way to create graphs
02:36:31 <oklopol> + refactor a bit to get only one "graphs" there
02:36:41 <oklopol> did you get it? i'd love to show code ;)
02:37:01 <adu> Graphica in {graphic design firm, Mathematica package, graffiti website}?
02:37:35 <oklopol> i guess it's a back...something from graphs + Mathematica
02:37:37 <adu> Nice
02:37:38 <oklopol> oh
02:37:48 <oklopol> you mean something you've seen published?
02:38:07 <oklopol> i have only spoken about it here and on another chan, basically
02:38:56 <oklopol> http://www.vjn.fi/pb/p632626363.txt examples!
02:39:07 <adu> oklopol: no, I was wondering which Graphica you were talking about
02:39:20 <oklopol> the one of my own
02:39:27 <oklopol> the one you haven't heard about, ever
02:39:48 <adu> o ok
02:39:57 <oklopol> the newer version has lists too, so those could be simplified a bit
02:40:21 <oklopol> :: names a node into the graph namespace
02:40:29 <oklopol> <-> makes a connection
02:40:33 <oklopol> as do <- and ->
02:40:44 <oklopol> = is redirection of node creation
02:40:58 <oklopol> so you can do stuff like default parameters
02:41:07 <oklopol> without making an additional node.
02:41:58 <oklopol> tell me if you get any of that, it's always nice to get comments
02:45:14 <adu> hmm
02:45:23 <adu> I'm reading about 20 languages right now
02:45:46 <oklopol> i'm interpreting about two meanings right now
02:46:18 <adu> Theres this one programming language I wish I could remember what it was called
02:46:39 <faxathisia> Like?
02:50:05 <adu> it was declarative
02:50:35 <adu> All I remember about it was that there was a presentation about it in which he started off with 3 built-in objects, copied them and made new objects
02:54:41 <adu> it was really cool
02:54:45 <adu> darn
02:55:17 <adu> well, anyways, its not that important
02:55:29 <adu> I just wanted to show you, becasue I thought you might like it
02:56:46 <faxathisia> 3 built-in objects... t ::= v | t t | λv.t ?
02:57:59 <adu> no, they were things like Identity, Link, and Variable or something
03:08:00 <oklopol> let's make a language based on Nonsense, Nothing and Never
03:08:22 <adu> do any of them take arguments?
03:08:26 <oklopol> Never is obviously the looping construct
03:08:30 <oklopol> i don't know
03:08:33 <oklopol> are they functions?
03:08:51 <oklopol> Nothing is the basic object
03:08:58 <oklopol> Nonsense is how you make structures
03:09:09 <oklopol> overall, it's a very weird language
03:09:15 <oklopol> i'll continue coding now ;)
03:09:33 <faxathisia> I like that idea
03:10:03 <oklopol> me too, i'm just afraid i'm inventing another nopol
03:10:21 <oklopol> (nopol is a language based on no-operation)
03:10:33 <oklopol> technically.
03:11:03 <oklopol> it has a weird system of multiple interpreters of nop lists, each executing the next
03:11:11 <oklopol> and nothing does nothing
03:11:15 <oklopol> uhhh, i love my languages
03:11:20 <oklopol> NOW i'll continue ->
03:11:54 <Asztal> Never could be some sort of constraints system
03:12:02 <oklopol> indeed
03:12:11 <oklopol> Nonsense is what makes it kinda weird ;)
03:12:22 <oklopol> although it is undoubtedly the most interesting sounding
03:12:51 <oklopol> perhaps this is *the language where a program states every program it is not*
03:12:57 <adu> oklopol: is nopol turing-complete?
03:13:13 <oklopol> adu: nopol, unfortunately, is far from ready
03:13:32 <oklopol> the concepts of it are very weird, i see no direct connection to any existing language
03:13:42 <oklopol> there are lists though, so probably.
03:15:15 <oklopol> (whereas in most languages, you can only unnest to a certain degree: http://en.wikipedia.org/wiki/Special:Search?go=Go&search=[] -> [[]] -> [], in nopol, negative nesting lists are possible!)
03:15:21 <oklopol> umm
03:15:33 <oklopol> where did that wikipedia article come from.
03:15:36 <oklopol> http://en.wikipedia.org/wiki/Special:Search?go=Go&search=[]
03:15:37 <oklopol> ...
03:15:41 <oklopol> [ [ [ ] ] ]
03:15:46 <oklopol> is what i tried to type
03:15:57 <oklopol> i love these *intelligent* clients <3
03:22:11 <adu> hmm
03:22:20 <adu> I can't find it
03:22:36 <oklopol> can't find what?
03:22:43 <adu> it was something short like "clean" or "pure" or "small" or "codeless" or something
03:22:51 <oklopol> Clean?
03:23:04 <oklopol> that's a haskell-like, iirc
03:28:29 <adu> nope
03:30:22 <oklopol> http://en.wikipedia.org/wiki/Clean_(programming_language)
03:30:30 <oklopol> "based on graph rewriting"
03:30:48 <oklopol> i was fearing i'd bump into graph rewriting some day :<
03:34:23 <adu> I found it!
03:34:30 <adu> found it! found it! found it!
03:34:35 <oklopol> coooool
03:34:37 <adu> Its called 'subtext'
03:35:06 <adu> http://subtextual.org/
03:35:10 <adu> :)
03:36:55 <faxathisia> ah
03:41:25 <adu> But anyways, we all know that graphs are representable as a set of triples (see W3C's RDF if you are not convinced), so the idea I had for superimposing a graph structure on a file system was to have a special file (or xattr on the parent dir) that contains a list of tripples (inode, arcName, inode) so that all files in that directory could be part of a graph (and still be within the directory that are in according to VFS).
03:42:15 <adu> thats my graph-on-VFS idea
03:42:29 <oklopol> heh, i actually "came up with" that exact thing today
03:42:30 <oklopol> i mean
03:42:35 <oklopol> the theoretical aspect of it
03:42:39 <adu> o
03:42:41 <adu> ok
03:42:51 <oklopol> that you can simulate any graph using tuples of three
03:42:57 <adu> yup
03:43:11 <adu> kinda like you can simulate finite/infinite lists with pairs ;)
03:43:23 <oklopol> yeah
03:43:35 <oklopol> hmm...
03:43:52 <oklopol> pairs are triples in scheme
03:43:57 <oklopol> if you consider them graphically
03:44:08 <oklopol> it's just there's one "in" and two "outs"
03:44:08 <adu> what?
03:44:14 <adu> what?
03:44:25 <oklopol> well
03:44:31 <oklopol> there's a *parent*
03:44:45 <adu> oh, doubly-linked-lists
03:44:48 <adu> ic now
03:44:49 <oklopol> which means you can only go one direction inside a list, but a scheme list can represend any tree
03:44:57 <oklopol> *represent
03:45:00 <oklopol> i mean
03:45:01 <oklopol> any graph
03:45:15 <adu> right, all trees can be represented as binary trees
03:45:16 <oklopol> oh, right, i fail a bit here
03:45:28 <oklopol> you can actually point to a pair any times, of course
03:45:35 <oklopol> so makes no sense to call it a triple.
03:45:45 <oklopol> perhaps you could just call it a pair... :D
03:45:56 <adu> that makes sense :)
03:46:08 <adu> at first you were starting to convince me that 2 == 3
03:46:15 <oklopol> :)
03:46:17 <adu> :)
03:46:50 <oklopol> was just thinking... it's a bit different from triples as in "nodes with three connections", since with pairs it's "nodes with 2 connections out, and any number of connections in"
03:47:23 <oklopol> a pointer is a one-directional link to another node
03:47:28 <oklopol> and you have two of those links in a pair.
03:47:55 <oklopol> not sure what i'm trying to say here, was hoping i'd hit something profound, but didn't, and kept blabbering ;)
03:54:25 <adu> I think the 3 most important structures to have are Trees Tables and Graphs.
03:54:51 <adu> Since unix already has trees (VFS) and tables (CSV), the only thing left is to superimpose graphs...
03:55:03 <adu> thats why I tried to fit them together :)
03:55:21 <oklopol> tables as in what?
03:55:27 <oklopol> like, relations
03:55:40 <oklopol> those thingies in dbs
03:55:43 <oklopol> db's
03:56:00 <adu> well db's, and like /etc/fstab
03:56:31 <oklopol> well, databases are basically sets
03:57:11 <oklopol> well, everything should be reduced to graphs really
03:57:12 <oklopol> !
03:57:16 <EgoBot> Huh?
03:57:20 <adu> well, when you consider 'sort' all files are sets :)
03:57:58 <adu> oklopol: no you need tables too, otherwise you would have to make them anyways to ensure rectangularity
03:58:50 <oklopol> what's rectangularity?
03:58:58 <oklopol> i prolly know the concept
03:59:02 <oklopol> but not the term
03:59:21 <adu> like {{1,2},{3,4}} is rectangular, but {{1}, {2, 3, 4}} is not
03:59:41 <oklopol> oh, that kinda tables
03:59:49 <adu> ya
04:00:04 <oklopol> i thought you meant something like orthogonality
04:00:25 <adu> which when you consider types (which don't exist in UNIX text), then you can interpret them as DB tables as well, if all elements in a given column are of the same type
04:00:32 <oklopol> which i think has some meaning when it comes to databases.
04:00:38 <adu> like ZigZag-type orthogonality?
04:00:55 <oklopol> something about functional dependencies
04:01:12 <oklopol> the terminology is goddamn robust
04:01:15 <oklopol> everything means everything
04:01:21 <oklopol> everything is everything
04:01:23 <oklopol> there is nothing
04:01:25 <adu> yes!
04:01:32 <adu> lets write a manifesto about it! :)
04:01:48 <oklopol> :o
04:02:03 <oklopol> let's make an esolang out of it!
04:02:04 <faxathisia> grrr.. I dont want to write a debugger
04:02:20 <oklopol> "everything is everything" is actually my official oklotalk phrase
04:02:34 <adu> lol
04:02:47 <adu> I wonder if that would work
04:03:03 <oklopol> well, everything is an object & everything contains all => everything is everything
04:03:12 <oklopol> basically.
04:03:26 <oklopol> except i take it to ridiculous extent in some parts of the language.
04:03:51 <adu> I once came up with a model of the universe, only instead of basing things on "Unification" like how an electron and a positron combine to form a photon, but "Separation" as the fundamental action that breaks a photon into an electron and a positron
04:04:19 <oklopol> i don't think i understand enough physics.
04:04:41 <adu> I wonder if its possible to write a language based on Separation (breaking "Nothing" up), rather than Combination (putting Things together).
04:05:08 <adu> make sense?
04:05:10 <oklopol> :DD
04:05:13 <oklopol> that's awesome
04:05:21 <oklopol> NNN is back on the table!
04:05:22 <oklopol> you see
04:05:29 <oklopol> it's not Nothing that's split
04:05:32 <oklopol> it's Nonsense
04:05:46 <oklopol> Nonsense is the *all combinations* object
04:05:50 <oklopol> a huge mess of course!
04:06:11 <oklopol> ...and something really poetic
04:06:15 <adu> because when you break "Nothing" into pieces like for example along the "Bit" dimension, then we get two things from that separation("Bit" and "Not Bit"), and we all know that all computation can be represented by this :)
04:06:16 <oklopol> ...and there's the esolang!
04:06:27 <oklopol> hmm
04:06:46 <oklopol> heh
04:06:56 <oklopol> sounds like fun
04:07:09 <adu> or we could separate again Sep("Bit" along "Truth") = {"True", "False"}
04:07:36 <adu> it really doesn't matter which is which as long as you give each part of a separation a name
04:07:40 <oklopol> ...could there be Nonsense?
04:07:57 * oklopol needs nonsense
04:08:02 <adu> lol
04:08:17 <adu> You could call things whatever you want
04:09:07 <adu> I call the root object "Unity", but you can call it "Nothing" they're equivalent when you're talking about the root of everything (which is the same as nothing if you haven't made that distinction yet)
04:09:57 <oklopol> can you recombine, or is there just some serious entanglement?
04:10:05 <oklopol> i prefer the latter, for it sounds less boring
04:10:15 <oklopol> although i don't exactly know what it would mean .
04:10:24 <adu> well, I think that is far down the road
04:10:54 <adu> but I think there is a way of deriving the concept of "Inverse function" and once you have that concept, then Combine = InverseFunction[Sep]
04:11:37 <adu> Separation is like a tree
04:11:52 <adu> depending on how far up the tree you are they may or may not be the same thing
04:12:26 <adu> but since you Can recombine after several separations, it would end up being more like a graph than a tree I think.
04:13:06 <oklopol> hmm, all i can think of is graphica
04:13:10 <oklopol> :)
04:13:27 <oklopol> (i'm fairly incestous about my projects)
04:14:55 -!- immibis has joined.
04:15:54 <adu> anyways, i'm getting tired
04:16:08 <adu> maybe I'll be on this weekend, and we can talk about graphica again
04:16:14 <oklopol> :)
04:16:29 <oklopol> i may have a new obsession then, this new thing seems quite interesting
04:16:38 <oklopol> but cya
04:17:35 <adu> what new thing?
04:17:59 <oklopol> not a programming language
04:18:04 <oklopol> just some graphical thingie
04:18:22 <oklopol> making a program for representing tree operations graphically
04:18:26 <oklopol> with happy bouncing balls!
04:19:11 <adu> ok
04:19:13 <adu> l8r
04:19:20 <oklopol> an obsession can of course only be a programming language, but you never know what you invent when playing with stuff like this
04:19:24 -!- immibis has left (?).
04:19:30 <oklopol> yeah, byes
04:19:42 <adu> bye
04:19:49 -!- adu has quit (Remote closed the connection).
04:35:12 -!- Sgeo has quit (Read error: 110 (Connection timed out)).
04:52:18 <faxathisia> Slereah: Hi?
04:54:32 <Slereah> Hi.
04:55:59 <faxathisia> You have read, To Mock A Mockingbird??
04:58:47 <Slereah> I have it.
04:58:59 <Slereah> I only read two chapters so far.
05:00:03 <faxathisia> Did you write any program to solve the "Make X out of A B C" puzzles?
05:00:37 <Slereah> So far I did the puzzle by hand.
05:00:42 <Slereah> And failed, but oh well
05:00:47 <faxathisia> me too
05:01:31 <faxathisia> I also wrote a program in my break but it wasn't complete
05:02:38 <oklopol> okay, how the fuck did i ever program in python... you can't do *anything* without first-class continuations
05:03:16 <faxathisia> I wonder that about anyone who writes in python :P
05:03:32 <oklopol> :)
05:03:56 <faxathisia> It is an interesting program to write though..
05:04:10 <oklopol> well, generators are okay, it's just feels kinda stupid hacking something with them when you are just simulating call/cc in an awkward manner
05:04:27 <faxathisia> (because the complexity is grows so steep)
05:04:29 <Slereah> Good thing I don't know what a first class continuation is!
05:04:40 <Slereah> Otherwise, I might feel self conscious when coding
05:05:10 <oklopol> what i'm trying to do is: i have a sorting algo, a tree structure and a main loop
05:05:40 <oklopol> i should run the sorting function, and every time it changes the tree, the tree should return to the main loop, which would tell it when to return to the sorting algo again
05:05:58 <oklopol> you may realize why i'm having problems.
05:06:14 <oklopol> (or come up with a trivial solution, quickly, tell me)
05:06:55 <oklopol> the mutations of the tree should be shown on the screen, which is why the main loop.
05:07:19 <faxathisia> Yes, I would use call-with-current-continuation for that
05:08:06 <oklopol> seems impossible to do that, while separating 1. the algo 2. the main loop 3. the actual tree 4. the graphical tree with movements
05:08:40 <oklopol> ofc it's trivial to hack up some fucked up shit (if that's the correct term for it)
05:09:12 <faxathisia> thats a fantastic quote :)
05:09:12 <oklopol> there would be no problem if i just altered the topmost tree
05:09:28 <oklopol> the problem is, i need to get subtrees, and traverse through them and all :\
05:09:39 <oklopol> so... the LazyList will become HUGGGGGGGGGGGGE
05:09:45 <oklopol> fantastic? thanks :)
05:10:03 <oklopol> i'm pretty fantastilicious
05:11:59 <Slereah> I think the OISC on the Love Machine 9000 will be something like [space][ bunch of 1's][space][ bunch of 1's][space][ bunch of 1's]...
05:12:46 <Slereah> Possibly two symbols for describing input and outpub
05:15:26 <oklopol> INTERESTING FACT: 9000 is pronounced "nain tausönd" in finnish, and "nain" means "i fuck"
05:15:29 <oklopol> coincidence?
05:15:39 <Slereah> Well, it is full of love.
05:15:48 <oklopol> indeed!
05:16:12 <oklopol> well, pretty much every english words is something naught in finnish
05:16:39 <oklopol> *naughty
05:17:12 <bsmntbombdood> 9 oklopol ?
05:17:27 <oklopol> almost
05:17:37 <oklopol> you have to put oklopol in partitive
05:17:41 <oklopol> "nain oklopolia"
05:17:47 <oklopol> *then* you're fucking me
05:19:10 <bsmntbombdood> sweet
05:19:32 <oklopol> quite
05:19:43 <Slereah> The Love Machine 9 Oklopolia :o
05:19:48 <oklopol> :D
05:19:58 <oklopol> actually, in that case, it's not "nain", it's "nai"
05:20:16 <Slereah> Also, Oklopolia has 3 o's, so it's good to replace 000
05:20:27 <oklopol> which happens to be lojban for a kind of "no"
05:20:36 <oklopol> :)
05:21:35 <oklopol> "Slereah the Love Machine: 9 oklopolia" could definitely be a gay porn flick title though.
05:21:48 <oklopol> because then it's ...I-tive again
05:21:59 <oklopol> (I-tive is the form where "I" is the subject)
05:22:15 <Slereah> Well, Turing would be proud that his creation serves the purpose of gay sex even today.
05:22:31 <oklopol> i'm sure he would!
05:23:02 <oklopol> call...cc...i.....need......asfdasdf
05:23:12 <Slereah> It always seems weird to me. Turing seems to be the only famous gay scientist without going back to antiquity.
05:24:43 -!- immibis_ has joined.
05:25:54 <oklopol> my opinion that completely differs from everything we know about psychology: homosexuality cannot be born with, all sexualities "grow on you" given enough exposure; the super geniuses are too busy thinking to build up a "deviance", where deviance is something different from the main stream sexuality
05:26:23 <oklopol> i stand firmly behind that ridiculous assertion!
05:26:33 <Slereah> So Turing saved his week ends for deviance building?
05:27:17 <oklopol> hmm
05:27:58 <oklopol> i have no idea :\
05:28:00 <oklopol> too tired to think
05:30:17 <oklopol> basically, i'd want to use call/cc to send a continuation to the sort function implicitly, so that it'd get passed to the tree functions, which would call/cc the continuation with their own continuation
05:30:23 <RodgerTheGreat> I'd guess that an entirely nature or an entirely nurture explanation for homosexuality is oversimplifying things. Homosexuality is associated with notably different brain chemistry (for the person's gender), so I'd guess there's an inherited propensity that's either repressed or reinforced based on the person's experiences
05:30:36 <oklopol> so it'd be Main -> Sort -> Tree -> Main -> Tree -> Sort -> Tree -> Main -> Tree etc
05:31:04 <RodgerTheGreat> Many diseases, conditions and other types of deviations work like this.
05:31:11 <oklopol> true.
05:31:30 <oklopol> now solve my python problem!
05:31:43 <bsmntbombdood> i think it's helpful to think of sexual orientations and paraphilias as the same thing
05:32:21 <oklopol> yeah, doesn't feel so bad when you realize you have all of them
05:33:09 <oklopol> hmm, people are leaving for school
05:33:14 <oklopol> must be morning
05:33:26 <Slereah> 6 AM here.
05:33:32 <Slereah> well, 6:33
05:33:35 <oklopol> 7:37 here, looks like
05:33:35 <bsmntbombdood> and of course (bi|pan)sexuality is the perfect state, with no paraphilias :P
05:33:40 <Slereah> I'm leaving in one hour and a half
05:33:54 <oklopol> bsmntbombdood: depends what paraphilia means
05:34:19 <bsmntbombdood> i'm using paraphilia to mean an inability to become sexually aroused without a certain stimulus
05:34:26 <oklopol> oh, i see
05:34:47 <oklopol> but not as "*will* get stimulus also out of certain stimuli"
05:35:07 <oklopol> i think that's a more common definition, although i'd rather agree with yours
05:35:24 <bsmntbombdood> i doubt *will* get aroused occurs very often
05:35:46 <oklopol> well, let's say can get aroused.
05:35:54 <bsmntbombdood> your standard gynephile certainly isn't aroused by all women
05:35:59 <RodgerTheGreat> bsmntbombdood: saying pansexuality is a perfect state is analagous to saying that an undifferentiated infant brain is a perfect state.
05:36:30 <Slereah> In what way?
05:36:30 <bsmntbombdood> no, it's like saying a brain with no prejudices is the perfect state
05:36:31 <oklopol> or, a matter of opinion about sexuality
05:36:31 <RodgerTheGreat> I find "perfect" to be more useful in this case when defined as "closest to average"
05:37:00 <bsmntbombdood> perfect has to be defined as farther than the farthest from average...
05:37:30 <RodgerTheGreat> closest to average is equivalent to closest to the intended design, from an evolutionary standpoint.
05:37:32 <oklopol> everyone's perfect, have a medal and some candy!
05:37:45 -!- immibis_ has left (?).
05:38:12 <oklopol> RodgerTheGreat: sure about that? perhaps closest to a local maximum, but i don't think that's necessarily perfect
05:38:14 <bsmntbombdood> only in non-superficial components
05:38:20 <RodgerTheGreat> this is why "perfect" isn't a very appropriate term here- it brings with it many connotations that don't make any sense in this context
05:39:01 <oklopol> i think it was quite unambiguous, but i also think RodgerTheGreat is always right.
05:39:13 <oklopol> i don't see any problem with having contradictory opinions though.
05:39:35 <Slereah> But also you see problems with it!
05:39:58 <bsmntbombdood> for example, the perfect value for the number of legs in a human is of course the average, but the perfect value of facial-hotness is far above average
05:40:33 <RodgerTheGreat> actually...
05:40:35 <Slereah> I like my faces with legs on them
05:41:47 <RodgerTheGreat> I don't have the paper to back myself up here, but some studies I've read suggest that the "ideal" or "perfect" face is in many ways, geometrically, an average of facial variability
05:42:18 <bsmntbombdood> i'm familiar
05:42:18 <RodgerTheGreat> the perfect face can be geometrically defined in terms of the "Golden Ratio"
05:42:56 * oklopol makes a pun about the shower with the same name to lighten things up
05:43:14 <RodgerTheGreat> If we ignore population distribution of different features, the ideal body image is pretty close to an average, too
05:43:28 <bsmntbombdood> no
05:43:40 <RodgerTheGreat> somewhere between fat and skinny, between short and tall, etc
05:43:43 <bsmntbombdood> if a certain feature becomes common, it will cease to be used for sexual selection
05:44:32 <RodgerTheGreat> bsmntbombdood: I'm getting there- it's important to recognize that these averages can change over time, and so, accordingly, will this definition of "perfection"
05:45:10 <RodgerTheGreat> if everyone is within less than a standard deviation of "perfection" in a feature, for example, it will be naturally less valued
05:45:16 <bsmntbombdood> oh i see where the misunderstanding is
05:45:48 <bsmntbombdood> i was talking about an average attractiveness rating, and you were talking about the average distance betweens eyes, etc
05:47:47 <RodgerTheGreat> yeah, quantitative averages
05:48:12 <Slereah> Let's build the perfect people!
05:48:23 <Slereah> Where's my handsaw?
05:49:27 <RodgerTheGreat> I don't think plastic surgery is nuanced enough for that just yet
05:49:49 <RodgerTheGreat> and really, wouldn't the availability of perfection cheapen it?
05:50:15 <Slereah> Well, I'll only do it for like a bajillion dollars
05:51:56 <RodgerTheGreat> The other thing to consider is that most people color their visions of perfection with their own preferences and the preferences that have been instilled in them by mass media, upbringing, etc. There does exist a single ideal, but everyone has their own deviating model for beauty. That's why it's entirely possible for two people to disagree about the attractiveness of someone, with both being correct
05:54:36 <RodgerTheGreat> "correct"
05:55:18 <RodgerTheGreat> as I was saying before, many of the words used here are pretty treacherous because they carry too many implications
05:55:43 <Slereah> Let's speak in Ithkuil.
05:56:07 <RodgerTheGreat> Let's avoid unnecessary pedantry.
05:56:54 * oklopol will let you avoid it.
05:57:08 <RodgerTheGreat> woohoo.
05:57:30 <oklopol> can you think of a better pun from that?
05:57:51 <oklopol> it requires one
05:57:57 <RodgerTheGreat> I was going to say "perfect", but that would've been pretty subtle
05:58:53 <bsmntbombdood> i didn't get the pun
05:58:56 <oklopol> and on a related subject, i got my iterator working!
05:59:19 <Slereah> Yay!
05:59:24 <Slereah> Perfect!
05:59:31 <RodgerTheGreat> oklopol: what language? oklotalk?
05:59:37 <oklopol> i'm not sure if it works if you have english as your native language
05:59:53 <oklopol> let's = let us, tried my best to interpret that as a direct order
06:00:09 <oklopol> RodgerTheGreat: unfortunately just something simple i'm doing in python
06:00:19 <RodgerTheGreat> aw. :(
06:00:46 <oklopol> it's funny how functional languages have call/cc, and you actually *need* it most with imperative stuff :D
06:00:53 <oklopol> at least that's my experience
06:01:14 <oklopol> often need to do some kinda collaborative threading when doing computation and drawing at the same time
06:01:30 <oklopol> well, i guess that's the main case.
06:01:52 <lament> scheme is pretty imperative
06:02:02 <oklopol> well, true.
06:02:39 <oklopol> hmm... your mother?
06:02:53 <Slereah> Zing
06:03:00 <oklopol> Zong
06:04:40 <RodgerTheGreat> in my opinion, functional languages are pretty and clean looking, but are an *inherently* inefficient way of programming, because they don't work remotely like conventional hardware does. Magical perfect compilers that can optimize in every conceivable fashion could theoretically balance this, but Magical perfect compilers do not exist. I like my imperative languages.
06:05:08 <GregorR> I can't find a better right bracket in high Unicode that Firefox supports for punycode than 2046 (right square bracket with quill)
06:05:09 <RodgerTheGreat> for esolangs, they can be quite fun brain exercises, though
06:05:09 <GregorR> :(
06:05:43 <oklopol> RodgerTheGreat: i don't need efficiency though
06:06:02 <GregorR> If I buy http://,[.,].com, will anybody put content there? :p
06:06:07 <RodgerTheGreat> oklopol: that concept does not fit inside my head
06:06:18 <oklopol> well, it'd be 99bottles except for cats
06:06:43 <oklopol> RodgerTheGreat: why not? how i see it, is computers are so fast nothing can possibly be slow on them :-)
06:07:12 -!- Steik has joined.
06:07:20 -!- Steik has left (?).
06:07:23 <Slereah> oklopol:That's what I thought!
06:07:34 <Slereah> Until I ran some LazyBird program
06:07:41 <RodgerTheGreat> ow, ow. My brain is hurting. Everything I've ever learned about algorithms and programming fights this concept
06:07:48 <oklopol> :D
06:08:04 <oklopol> okay, sorry, i'll try to be less mentally violent
06:08:18 <RodgerTheGreat> anyway, I'm going to sleep. 'later, folks
06:08:23 <Slereah> ``m``s``bs``b`s``c``b``c`t`k0ki#``c``bc``c``bc``b`ci`k.xri``c``bb``sii``b``c``bc``b`bc``c``bc``b`bb``cb``b`bttkii``b`m``sbi``sb`m``sbi
06:08:23 <oklopol> nights
06:08:36 -!- RodgerTheGreat has quit.
06:08:36 <Slereah> It takes minutes upon minutes to display!
06:08:50 <oklopol> what's it do?
06:09:33 <Slereah> It prints 20 *, then 19, then 18, and so on. The program stops after 1.
06:12:29 <oklopol> i love it when trivial stuff takes ages
06:12:43 <oklopol> you really feel you're giving your machine a task
06:12:47 <Slereah> It's pretty much... ((^x.xx)(^xy.(y is zero) (v)(y(print *)(xx predy)))n
06:13:11 <Slereah> Where v is the unlambda v.
06:13:20 <Slereah> (Except it's # in the code)
06:13:37 <oklopol> pretty much like that? so i'll just check what that does, get the general picture and guess the rest?
06:13:54 <oklopol> wait for a week, i'll look
06:13:59 <Slereah> Heh.
06:14:17 <Slereah> I probably have the thing written in lambda-for-lazy-bird somewhere
06:15:09 <oklopol> what's y?
06:15:14 <oklopol> oh
06:15:15 <oklopol> right
06:15:17 <oklopol> heh
06:15:27 <Slereah> It's to be replaced by n.
06:15:38 <GregorR> Dern, ehird` isn't here to encourage me to buy ,].com :P
06:15:50 <oklopol> buybuybubyubybuy!!!!!!
06:16:06 <GregorR> Will YOU put content there?
06:16:14 <oklopol> it'll be full of lolcats and cat's in different langs!
06:16:19 <oklopol> YES I WILL
06:16:24 <Slereah> What kind of content do you want!
06:16:35 <oklopol> CATS MAYBE? DID I SUGGEST THAT YET?
06:16:53 <oklopol> i want a cat, they're awesome
06:17:25 <GregorR> I was thinking ... y'know ... stuff about BF :P
06:17:38 <Slereah> ``m^x^y``````s`o`k`k0`kky#```y.xri``xx```s``s`ks``s`k`s`ks``s``s`ks``s`k`s`ks``s``s`ks``s`k`s`ks``s`k`s`kkk`k``s`k`s`k`s`k`si``s`k`s`k`s``s`ksk``s`k`s`k`s`kk``s`k`s`kkk`k`kk`k`k`kiy^f^x`f`f`f`fx
06:17:44 <Slereah> Here's a vaguely lambda version
06:17:56 <Slereah> But it's probably not a working one
06:18:37 <oklopol> GregorR: ok then, brainfuck cat programs
06:18:42 <oklopol> ...
06:18:53 <Slereah> Well, it will be a short website
06:18:59 <GregorR> :P
06:18:59 * oklopol thinks his cat suggestion doesn't work as supposed
06:19:05 <Slereah> Hell, the content is in the adress!
06:19:32 <GregorR> Is ⁆ acceptable?
06:19:44 <GregorR> It's the closest I can get to ] that works (at least in FFox)
06:19:50 <oklopol> i can't see that
06:19:55 <Slereah> I can.
06:20:00 <oklopol> :(
06:20:05 <oklopol> invisible cats!
06:20:10 <oklopol> on a visible bike!
06:20:46 <GregorR> oklopol: Get a better IRC client :P
06:21:00 <GregorR> Doesn't work in Konq, but Konq doesn't seem to support Punycode at all (this version)
06:21:03 <oklopol> i just changed again :)
06:21:13 <Slereah> THEN CHANGE SOME MOAR
06:21:30 <oklopol> i don't think i'm man enough
06:21:43 <Slereah> But... are you BAD ENOUGH A DUDE?
06:21:53 <Slereah> Are you TOO TOUGH FOR HELL TO CONTAIN?
06:22:05 <Slereah> When you will be, at last Hell will play fair.
06:22:08 * oklopol is scared
06:23:16 <GregorR> Can somebody with Opera, IE or Safari go to ،⁆.com and see what happens?
06:26:58 <GregorR> *chirp chirp*
06:27:22 <bsmntbombdood> *woof woof*
06:27:45 <Slereah> *glob glob*
06:27:45 <GregorR> bsmntbombdood: Have an alternate browser?
06:27:57 <bsmntbombdood> i suppose i could start opera....
06:28:13 <GregorR> Even one other browser agreeing would be nice :P
06:28:47 <bsmntbombdood> he URL http://،⁆.com contains characters that are not valid in the location they are found.
06:28:54 <GregorR> :(
06:29:12 <bsmntbombdood> firefox gives the same error
06:29:33 <GregorR> Uhhh, it works fine for me in FFox
06:29:38 <GregorR> It must not have copied properly.
06:29:40 <GregorR> One sec.
06:30:01 <bsmntbombdood> oh hmm
06:30:14 <bsmntbombdood> when i did the thing it didn't wor
06:30:32 <bsmntbombdood> when i did the other thing it did, but echoed it as "www.xn--ufb245k.com"
06:30:38 <GregorR> That's good.
06:30:48 <GregorR> In Opera?
06:31:04 <Slereah> Did that to me in Firefox
06:31:14 <bsmntbombdood> no, firefox
06:31:18 <GregorR> I've already tested it in FFox, it works there ;P
06:33:14 <Slereah> Maybe in Imagination Land!
06:33:33 <GregorR> ... you both just confirmed that it works.
06:34:11 <Slereah> Oh.
06:34:16 <Slereah> Well, kudos then
06:36:52 <Slereah> Solid state physics exam in one hour :(
06:37:17 <GregorR> You people and your physical universe.
06:38:59 <Slereah> Think of it as a gigantic game of Life!
06:40:50 <bsmntbombdood> english class in 7 hours :(
06:41:18 <Slereah> I do not fear Englsih
06:41:27 <GregorR> CS class in 2 months :(
06:41:31 <Slereah> Although tht typo makes it look stupid
06:41:36 <Slereah> Aaaargh
06:41:43 <Slereah> Me cunt spoll :(((
06:41:49 <oklopol> nothing in 200 hours :<
06:41:55 <Slereah> Damn you people!
06:41:59 <oklopol> (more like 100, but anyways)
06:42:09 <oklopol> oh
06:42:16 <oklopol> GregorR kinda pwned me
06:42:33 <GregorR> :P
06:42:39 * GregorR isn't doing anything winter term :P
06:42:41 <bsmntbombdood> school is stupid
06:43:00 <GregorR> Except for buying random brainfuck-themed web pages of course :P
06:43:07 <GregorR> (Or considering it anyway)
06:43:27 <oklopol> that's a full-day job
06:45:58 <Slereah> In a Kolmogorov machine, do the vertex contains symbols?
06:45:59 -!- Slereah has changed nick to slereah_.
06:46:01 -!- slereah_ has changed nick to slereah__.
06:54:41 <oklopol> slereah__: i don't think so
06:54:56 <slereah__> It be melting my brain
06:55:00 <slereah__> Damn you Andrey!
06:55:28 <oklopol> the esolang page description sounds awfully close to graphica...
06:56:00 <oklopol> in case that's what it's equivalent to, i consider it pretty advanced though.
06:56:18 <oklopol> (although i haven't yet implemented the rewriting part)
07:16:25 <GregorR> OK, if I bought this BF-themed domain name, nobody would put anything there.
07:16:28 <GregorR> So I'm not buying it.
07:16:54 <oklopol> :)
07:17:00 <oklopol> you're being too rational
07:17:28 <GregorR> I already have four domain names .... that's $40/yr 8-O
07:17:59 <oklopol> hey, it's not about money
07:18:04 <oklopol> it's about being spontaneous
07:18:09 <GregorR> In that case, give me $5! :P
07:27:09 <GregorR> Opera can't handle it anyway :(
07:59:27 -!- puzzlet has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:06:54 <GregorR> Heh, I can get a C-ish domain :P
08:41:39 -!- GreaseMonkey has quit ("ok, who cut the cable on akamai?").
10:52:02 <slereah__> I have 0 domain names.
10:52:17 <slereah__> That's... $0, approximatively
11:00:34 <slereah__> Is there anything with an example of the execution of a Kogloglo machine?
11:00:45 <slereah__> The closest I can find is the wiki article with the pointer machines
11:01:23 <slereah__> But the Glook machine is apparently poorly documented on the interweb.
11:30:22 -!- timotiis has joined.
12:58:12 -!- puzzlet has quit (Remote closed the connection).
12:58:13 -!- puzzlet_ has joined.
13:01:34 -!- jix has joined.
13:14:20 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
13:14:24 -!- slereah__ has joined.
13:32:41 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
13:32:56 -!- slereah__ has joined.
13:58:02 -!- RedDak has joined.
14:08:35 -!- RodgerTheGreat has joined.
14:08:49 <RodgerTheGreat> hey guys
14:09:46 <slereah__> Hello.
14:09:54 <slereah__> So RodgerTheGreat, how tall are you?
14:10:38 <RodgerTheGreat> why do you ask?
14:11:22 <slereah__> To see how great you are!
14:11:41 <RodgerTheGreat> 5'11"
14:12:09 <RodgerTheGreat> although I think you're using the wrong definition of "great" there
14:12:16 <slereah__> Am I?
14:12:24 <slereah__> I wasn't aware!
14:13:28 <RodgerTheGreat> "(the Great) a title denoting the most important person of the name. ex: Alexander the Great"
14:14:09 <RodgerTheGreat> lucky for me, "Rodger" isn't a tremendously common name, so I don't have as much competition as some people
14:15:12 <slereah__> None that Wikipedia can find!
14:15:42 -!- ehird has joined.
14:16:41 <ehird> oklopol: get Z?
14:17:51 <ehird> bah, nope
14:20:21 -!- slereah__ has quit (Remote closed the connection).
14:26:14 -!- slereah_ has joined.
14:29:45 -!- slereah_ has changed nick to Slereah.
14:30:27 <ehird> who wants to work on the underload->c compiler!
14:31:27 <Slereah> :(
14:34:36 <ehird> not Slereah.
14:34:39 <ehird> apparently
14:35:06 <Slereah> I'm not a big fan of C.
14:35:15 <Slereah> And I do'nt know much of Underload
14:36:08 <ehird> underload is digestible in a few minutes
14:36:12 <ehird> also, the compiler isn't written in C
14:36:13 <ehird> :P
14:36:59 <Slereah> Yes, but you must translate it to C!
14:38:46 <ehird> Sure... but it's very simple :P
14:40:12 <Slereah> Well, the... second attempt at the Love Machine 9000 was a LV9->C compiler
14:40:22 <Slereah> But boy was I in for a disappointment!
14:44:16 -!- faxathisia has quit (Connection timed out).
14:44:57 <ehird> Underload is simple.
15:12:16 <ehird> :)
15:13:34 <Slereah> I'm not very used to stacks
15:15:06 <Slereah> (:aSS):aSS
15:15:09 <Slereah> Lulz
15:23:58 <ehird> i'll explain that to you:
15:24:06 <ehird> code [stackelement,stackelement,...,top]
15:24:14 <ehird> (:aSS):aSS []
15:24:32 <ehird> :aSS [:aSS] (...) just pushes what's in it to the stack, like a string
15:24:45 <ehird> aSS [:aSS,:aSS] : duplicates
15:24:50 -!- helios24 has joined.
15:25:01 <ehird> SS [:aSS,(:aSS)] 'a' wraps the top string on the stack in parens.
15:25:18 <ehird> S [:aSS] we output the top, and pop it. (:aSS), that is
15:25:24 <ehird> [] we output the top, and pop it. :aSS, that is
15:25:29 <ehird> so: we outputted "(:aSS):aSS"
15:25:35 <ehird> which is our code, ergo we have a quine!
15:25:42 <ehird> Slereah: got that?
15:27:02 <Slereah> Yes.
15:27:09 <Slereah> Just one stack?
15:27:26 <ehird> Yep
15:27:36 <ehird> Slereah: It's turing complete by way of ^
15:27:53 <ehird> i'll step you through (:^):^
15:28:09 <ehird> :^ [:^] we push the stuff in parens to the stack
15:28:18 <ehird> ^ [:^,:^] duplicate
15:28:34 <ehird> :^ [:^] pop an element off the stack, and place it after the current instruction
15:28:41 <ehird> ^ [:^,:^] duplicate
15:28:43 <ehird> :^ [:^] pop an element off the stack, and place it after the current instruction
15:28:44 <ehird> ...............
15:29:17 <Slereah> 'kay
15:29:32 <ehird> Slereah: now combined with 'a' to enclose the top element in parens, and * to concatentate the top two elements together, and you make kinda-self-modifying-stuff-thingies to do loops etc
15:31:04 <Slereah> Love the self interpreter.
15:37:22 <Slereah> Time for pen and paper programming.
15:37:36 <Slereah> On the table, unary OISC :O
15:39:29 <Slereah> If I substract a negative value, should it add?
15:43:22 <ehird> yes
15:46:57 <Slereah> I assume negative adress locations should be treated as errors?
15:48:39 -!- jix has quit (Nick collision from services.).
15:48:49 -!- jix has joined.
16:11:43 -!- RedDak has quit (Remote closed the connection).
16:23:31 <Slereah> A Turing machine is a poor device for arithmetic.
16:41:41 <RodgerTheGreat> working with unary isn't that bad
16:42:47 <Slereah> It's mostly the travel on the tape to one adress to the other for substraction that bothers me
16:44:15 <Slereah> Hm. Now that I think of it, instead of copying the code on a second tape to avoid losing some stuff while working on it, I could just replace 1's with some symbol to mean that they've been used.
16:47:49 <RodgerTheGreat> yes. That's how we learned to use TMs in my formal models of computation class
16:48:01 <RodgerTheGreat> we actually worked exclusively with single-tape machines
16:49:18 <Slereah> I usually start big programs on two tapes.
16:49:23 <Slereah> Or moar
16:49:29 <Slereah> And then try to reduce it to one.
16:50:29 <RodgerTheGreat> I dunno if you're using an alternate notation, but I think single-tape is really the easiest to read
16:51:02 <Slereah> Well, Brainfuck on three tapes was really easy.
16:51:37 <Slereah> Unlike that one tape thingy! http://membres.lycos.fr/bewulf/Russell/BRAINFUCK%20INTERPRETER%20ON%20A%20ONE.htm
16:51:54 <Slereah> I have some half-working version, but I should finish it someday
16:52:32 <RodgerTheGreat> I really like DoubleFuck
16:54:30 <RodgerTheGreat> woah, that's nifty
16:59:32 <Slereah> On three tapes, I didn't even need markers, apart for the bracket-markers!
16:59:43 <Slereah> It was just code-memory-counter
17:07:16 <RodgerTheGreat> well, that's rather missing the point of a turing machine, eh?
17:08:12 <Slereah> But not of a LOVE MACHINE
17:31:27 -!- ehird has quit.
17:42:15 -!- puzzlet_ has quit (Read error: 104 (Connection reset by peer)).
17:42:21 -!- Corun has joined.
17:42:44 -!- puzzlet has joined.
17:54:46 -!- sebbu has joined.
17:58:01 <Slereah> Idea : Objective programming language.
17:58:12 <Slereah> I've got to figure out what command A = A could be.
18:12:38 -!- adu has joined.
18:15:39 <adu> hi
18:16:39 <Slereah> Hi.
18:18:43 <adu> I'm learning about factor
18:21:19 -!- Corun has quit (Read error: 110 (Connection timed out)).
18:21:50 <SimonRC> adu: ok...
18:22:35 <adu> oops wrong channel
18:22:37 <adu> :)
18:22:53 <adu> SimonRC: has oklopol talked to you about "Graphica"?
18:23:36 -!- puzzlet has quit (Remote closed the connection).
18:23:37 <SimonRC> no
18:23:37 -!- puzzlet_ has joined.
18:24:27 <oklopol> adu: sorry, i slept pretty much all day :)
18:24:56 <oklopol> when my friends start going to school, i lol at them and take 12 hours of sleep!
18:25:22 <Slereah> Are you sure it's because of that?
18:25:28 <Slereah> Maybe you have narcolepsia
18:25:38 <oklopol> :)
18:25:44 <oklopol> i think it's just laziness
18:26:11 <oklopol> was fully awake at 12.00 (now 20:29), and 17:00 at least
18:26:28 <adu> oh hehe me2
18:26:30 <Slereah> Lucky you!
18:26:41 <oklopol> but you know, "so... irc... or continue fucking chicks in my dreams"
18:26:46 <adu> oklopol: its snowing in DC, so I didn't goto work today
18:26:58 <oklopol> :)
18:27:01 <oklopol> wise choise!
18:27:25 <Slereah> oklopol: Go on IRC, and have cybersex!
18:27:28 * adu doesn't feel like that was very revealing, since my domain name probably has ".dc." in it somewhere...
18:27:49 <oklopol> i once had cybersex on irc, not as fun as you'd think xD
18:27:53 <adu> lol
18:27:55 <oklopol> phone sex is even worse
18:28:07 <adu> I never had cybersex in IRC, only in AIM ;)
18:28:30 <oklopol> that's more fun, since you get vid
18:28:42 <Slereah> Man, I regret starting this topic.
18:28:56 <oklopol> xD
18:29:35 <adu> oklopol: my favorite esolang!
18:29:41 <adu> x-D
18:30:01 <SimonRC> oklopol: bah, you and your dreams
18:30:06 <oklopol> XP
18:30:12 <oklopol> my favorite os
18:30:23 <adu> ew
18:30:27 <SimonRC> my favoirite schduling system
18:30:33 <adu> Haiku <- my favorite OS
18:30:39 <SimonRC> or management style, orwhatever
18:30:49 <SimonRC> ColorForth <- my favorite OS
18:30:51 <SimonRC> :-P
18:30:54 <adu> lol
18:31:08 <SimonRC> by Chuck "and application should be 2-4k" Moore
18:31:10 <Slereah> XP <- Really, I'm starting to regret switching to Linux
18:31:11 <SimonRC> *an
18:31:32 <adu> It would be BeOS if it wasn't disolved when Palm bought it, but Haiku is the closest thing to BeOS that still exists, so thats why it is my favorite
18:31:33 -!- oklopol has set topic: The channel of offtopic nonsense..
18:31:39 <SimonRC> no
18:32:05 -!- SimonRC has set topic: The channel of esoteric programming and sometimes offtopic nonsense when we aren't discu.
18:32:05 <oklopol> adu: have you seen Emoticon, a similar lang
18:32:19 <adu> who said that?
18:32:20 -!- SimonRC has set topic: The channel of esoteric programming and sometimes offtopic nonsense when we aren't discussing esoteric programming.
18:32:23 <adu> anyone who regrets switching to Linux has something wrong in their head
18:32:32 <SimonRC> there are disadvantages
18:32:39 <SimonRC> e.g. sound drivers
18:32:46 <oklopol> yeah, like the fact windows worked better
18:32:49 <SimonRC> or rather, sound "systems"
18:33:10 <adu> when has Windows every worked better than linux?
18:33:13 <SimonRC> alsa and esd on one machine play together poorly
18:33:22 <adu> As far back as I remember linux has always worked better
18:33:30 <SimonRC> adu: when I want to use excel
18:33:32 <oklopol> adu: my windows worked better than my linux.
18:33:57 <oklopol> but, i've tried only one linux installation, so not that fair.
18:34:05 <adu> which one?
18:34:11 <oklopol> ubuntu
18:34:18 <adu> ya!
18:34:21 <adu> good choice!
18:34:27 <adu> which version?
18:34:36 <oklopol> Flipper
18:34:43 <oklopol> but ther right word starting with F
18:34:47 <oklopol> *the
18:34:56 <oklopol> feisty fucker
18:36:39 <Slereah> adu: Problem is, nothing works
18:36:39 <oklopol> yesterday, my mouse started lagging suddenly, started taking longer and longer lag pauses, and finally stopped moving... only way to resolve was to press reset :D
18:37:19 <adu> Slereah: I agree, and Vista makes it even worse
18:37:32 <SimonRC> did you try killing and restarting X?
18:37:36 <Slereah> Actually, I was refering to Linux.
18:37:55 <Slereah> I'm probably doing it wrong, but I can't get most things to work.
18:38:12 <SimonRC> well, making things work is what commercial Linuxes are for
18:38:16 <oklopol> then, sometimes when i open vlc or a python program using pygame, the screen makes a loud clicking sounds and becomes a rainbow of screen fragments... basically the screen is divided into a thousand rectangles, which are scrambled around randomly
18:38:19 <SimonRC> and the big organised ones
18:38:33 <Slereah> Does Kubuntu qualify as commercial?
18:38:42 <oklopol> sometimes the machine just reboots automatically
18:39:02 <oklopol> and then, sometimes, the screen just goes black and there's an "X" in the middle
18:39:29 <oklopol> SimonRC: by pressing ctrl+alt+backspace? how did you do that again
18:39:42 <oklopol> also, restarting X == restarting the computer
18:39:49 <oklopol> it closes programs
18:40:37 <oklopol> if you don't count the different kinds of rebooting, then there's of course the 5 minute lag pauses every now and then :D
18:41:01 <oklopol> xchat did that all the time, but that happens for other stuff too
18:41:36 <oklopol> then there was this log i was supposed to check to see why it reboots... there's never anything there :D
18:42:00 <adu> lolol
18:42:33 <oklopol> most of this may be my fault, but that's a bit beside the point, since i didn't have problems with XP.
18:42:53 <oklopol> but i might try another distro before changing back
18:43:32 <adu> oklopol: can you "cat | tee | grep" in XP?
18:43:55 <oklopol> what's "tee"?
18:44:19 <oklopol> no, you can't
18:44:57 <adu> "cat file1 | tee file2 | cmd3"<CTCP>takes file1, coppies it to file2, then passes it onto cmd3
18:45:25 <adu> its really nice for saving intermediate results in long pipe-commands
18:45:38 <oklopol> i see
18:46:16 <adu> like "sort Unsorted.txt | tee Sorted.txt | grep Keyword > SortedWithKeyword.txt"
18:46:30 <oklopol> i've never liked the idea of a sequential file; think oses should consider files an object.
18:46:42 <adu> indeed
18:46:51 <adu> there needs to less separation between models
18:47:37 <oklopol> yeah, that's my reason for not being that happy about linux' io features, i think it's still pretty primitive
18:47:47 <adu> I think all models should be part of a single model, where each model can be both restricted (take methods away), and exposed (add more methods)
18:47:54 <oklopol> (compared to okloOS!)
18:48:07 <oklopol> hmm
18:48:07 <Slereah> What is this OkloOS!
18:48:12 <Slereah> Can I pay money for it!
18:48:13 <oklopol> :D
18:48:18 <adu> my favorite examples are integers
18:48:38 <oklopol> Slereah: i'll first make oklotalk, then okloOS :)
18:48:59 <Slereah> What will the OSKLOSOS be like!
18:49:47 <adu> There are so many views and models of integers, there is the BoundedInteger model (which maps to a BitArray), then there is the BitArray model itself, then there is UnboundedInteger (which maps to a subset of the Reals, and BitArrays could be described by List<Bool> (where lists have even more methods, like sorting)... and so on
18:49:52 <oklopol> oklotalk's stdlib doesn't easily allow you to consider files as streams anyway, so i was thinking why not just make an underlying os that let's you store any kind of object as a file
18:50:21 <oklopol> adu: what do you mean "part of a single model"?
18:50:25 <adu> I think if you could combine the models different systems have for integers and bitarrays, then the metamodel that allows you to do that would have so many applications
18:50:43 <oklopol> like, that there would be a separation between the theory and th practise
18:51:00 <oklopol> you'd have a declarative definition for an integer, and different implementations?
18:51:06 <oklopol> i'm not sure what you mean
18:51:15 <adu> oklopol: ZODB does that
18:51:39 <adu> oklopol: are you familiar with OOP?
18:51:48 <oklopol> yes
18:51:54 <adu> model == class
18:52:00 <oklopol> i see.
18:52:06 <adu> metamodel == metaclass
18:52:15 <adu> model == class == metaobject
18:52:26 <oklopol> yep
18:52:27 <adu> metamodel == metaclass == meta-meta-object
18:52:39 <Slereah> Heh.
18:52:45 <SimonRC> I am pretty sure object-base FSes have been done already
18:52:57 <adu> what I find the most odd is that OMG defines 4 levels, then says "there are no others"
18:53:02 <oklopol> probably, that doesn't make me want to make my own.
18:53:06 <oklopol> oh
18:53:10 <oklopol> add a negation there
18:54:39 <adu> oklopol: ZODB is a library for Python in which all you have to do is subclass Persistant, and all you modifications to that object are stored in a DB
18:55:37 <oklopol> sounds awesome
18:57:08 <adu> what I mean by "part of a single model" is that (char *), GString, QString, KString, Haskell's [Char], Python's str(), and perl scalars, should all be subclasses of a more general String class in some language that supports each of these languages as a module.
18:58:15 <adu> I know that sounds Java/.Net-ish, but it is where we are headed anyways, since so many people are doing it
19:00:08 <oklopol> yeah, everyting should be an oklobject
19:00:21 <oklopol> (also called a "thing")
19:00:34 <adu> lol
19:00:43 <Slereah> Oh oklopol, you and your oklo-everything!
19:01:02 <oklopol> ;))
19:01:35 <adu> but generally speaking, the tendancy is to start anew with a fresh taxonomy, and this is exactly why we have so many taxonomies
19:03:40 <oklopol> indeed. but conversions between types aren't exactly hard to do...
19:03:53 <oklopol> Universal Uniting Language
19:04:10 <oklopol> that specifies conversions between types
19:04:11 <adu> what I've been trying to do is find some way of "importing" current taxonomies under a single root, thus acheiving an ad-hoc version of a single model
19:04:11 <adu> anyways its something to think about :)
19:04:25 <adu> it is if you are converting between a MySQL database and an HTML form.
19:04:42 <adu> then its hard
19:05:27 <oklopol> indeed, luckily, i don't care about stuff like this, i just koed :)
19:05:41 <adu> what is "koed"?
19:07:05 <adu> n/m igtg
19:07:05 -!- adu has quit (Remote closed the connection).
19:15:28 -!- Corun has joined.
19:15:29 <SimonRC> hmm, that could be fun
19:16:41 <bsmntbombdood> wooot
19:17:43 <SimonRC> If you tooke the best of all languages, you would have a language in which you could both (1)put IO operations anywhere without affecting the type of the function (as in C#) and (2)be able to prove that a function has no IO operations just be looking at its type
19:18:25 <SimonRC> also, it would be fully strict and fully lazy
19:19:08 <SimonRC> and it would have an OO system as powerful as CLISP's yet as simple as Smalltalk's
19:19:57 <SimonRC> it would have the dynamic capabilities of ruby with the static provability of epigram
19:20:01 <SimonRC> etc
19:20:04 <SimonRC> see what I am getting at
19:20:07 <SimonRC> ?
19:20:17 <SimonRC> not having things is a feature too
19:20:31 <SimonRC> which means some things cannot be combined sensibly
19:20:37 <SimonRC> </rant>
19:20:58 <SimonRC> OTOH, many things can be sensibly combined
19:21:25 <oklopol> OH YOU MEAN HASKELL
19:21:30 <SimonRC> no
19:21:51 <SimonRC> Haskell doesn't have easily-used mixed-type lists
19:22:28 <SimonRC> and there is no way to attempt to cast types to typeclasses
19:22:46 <SimonRC> you can't ask "is this an instance of Ord?"
19:24:35 -!- ehird has joined.
19:24:48 <SimonRC> hi
19:25:34 <Slereah> Welcome back little man
19:25:41 <ehird> hi
19:25:50 -!- ehird has set topic: The channel of offtopic nonsense when we aren't discussing esoteric programming.
19:25:54 <ehird> fixed the topic for y'all
19:26:02 <ehird> ;)
19:26:11 -!- Slereah has set topic: What is the title of this topic?.
19:26:15 <Slereah> Fixd
19:26:31 <Slereah> Now, input it in IRP :o
19:28:56 <ehird> IRPv4[L@<xx;;}}><
19:28:59 <ehird> updated syntax.
19:29:09 <Slereah> Lulwut?
19:47:15 <ehird> wutlul
19:48:37 <Slereah> what's the Kooglomooh book that contains a description of the Andrey machine?
19:51:18 <Slereah> Since the one I found is $309, I'd better make sure it's the one I want!
20:03:28 <ehird> TAOCP costs like 150 over here
20:03:30 <ehird> first 3 volumes.
20:04:46 <Slereah> Most science books are horribly expensive.
20:05:07 <Slereah> Probably to make up the fact that no one wants them
20:05:25 <ehird> I want The Art of Computer Programming! :(
20:05:45 <ehird> (btw 150 = about $987 nowadays.)
20:05:59 <Slereah> DOWNLOAD IT
20:07:23 <Slereah> Man, evenAbebooks doesn't seem to have "On the definition of an algorithm"
20:13:36 -!- RedDak has joined.
20:25:06 <oklopol> SimonRC: not all my dreams are fun and joy though, just remembered another dream when in the basement: so, these two gay guys were having sex in my living room, and i told them to leave, because i had guests coming... they did start to leave, but i noticed the other one had dropped his glans, so i told him to take it with him... well, suddenly it disappeared, and i started looking for it, terrified that i'd not find it and a guest would
20:25:22 <oklopol> luckily, after i had looked for a while, he told me he'd eaten it
20:25:43 <oklopol> i hope you enjoyed that, i sure did!
20:25:48 <Slereah> Well, that was considerate of him.
20:26:15 <Slereah> Let's try to interpret that dream!
20:26:24 <oklopol> :)
20:26:43 <Slereah> Repressed homosexuality, and you went to sleep on an empty stomach.
20:27:13 <oklopol> sounds plausible.
20:27:46 <Slereah> The guests representing your peers.
20:27:55 <oklopol> oh, right
20:28:09 <Slereah> "Go secret gayness, and take your cocks with you!'
20:28:17 <oklopol> xD
20:28:43 <oklopol> lucky i don't believe in that stuff
20:29:14 <Slereah> Otherwise, you'd have to buy tighter pants!
20:29:48 <oklopol> indeed!
20:30:23 <oklopol> also, the aids is a minus
20:30:48 <Slereah> Which is why you shouldn't catch is!
20:30:49 <Slereah> t*
20:31:31 <oklopol> can you be gay without aids?! :ooo this turned my world upside down!!
20:31:39 * oklopol goes looking at personals
20:32:37 <Slereah> This is my story, all about how
20:32:48 <Slereah> My life got twisted turned upside down
20:33:06 <Slereah> And I'd like to take a minute just sit right there
20:33:10 <Slereah> I'll tell you how I became the prince of a town called Bel-Air
20:34:05 <oklopol> my words exactly
20:34:41 <oklopol> now to implement a red-black tree and watch it wimble and womble!
20:40:26 <ehird> i really need to pick a language & stick with it
20:40:58 <Slereah> Pick a really horrible one that's neither practical or interesting.
20:41:39 <bsmntbombdood> i can has fermentation!
20:43:43 <SimonRC> ???
20:44:42 <oklopol> bsmntbombdood: poisoning yourself with alcohol agin?
20:44:44 <oklopol> *again
20:44:47 <bsmntbombdood> yep
20:44:51 <SimonRC> * a gin
20:44:55 <bsmntbombdood> i'm gonna distill it this time
20:45:07 <bsmntbombdood> should have about a gallon of vodka in 2 or so weeks
20:46:11 <oklopol> read http://www.vjn.fi/index.php?a=52 and http://www.vjn.fi/index.php?a=54 for a touching story about the perils of alcohol
20:47:27 <bsmntbombdood> i'll have to brush up on my finnish first
20:48:01 <oklopol> it's not in finnish
20:48:16 <oklopol> didn't you read the topic :)
20:48:28 <bsmntbombdood> well it's certainly not english
20:49:02 <oklopol> there exists also a third language
20:49:42 <bsmntbombdood> some fucking nordic shit
20:49:56 <oklopol> :P
20:50:19 <bsmntbombdood> "Fuke tu! Ja no ee i last notte sleepet!" - "Fuck you! Yeah, last time i didn't sleep"
20:50:37 <oklopol> yep.
20:50:46 <oklopol> most of it is simplified english
20:50:57 <oklopol> although it has some quite different structures as well
20:51:09 <bsmntbombdood> what is it?
20:51:18 <oklopol> a language my friend made
20:51:50 <oklopol> http://www.vjn.fi/s/$anasto.txt
20:51:55 <oklopol> finnish - zx3 though
20:52:04 <oklopol> i always forget that
20:52:08 <ehird> oklopol: that'll be very helpful to bsmntbombdood
20:52:34 <oklopol> how could i remember what language that's in :D
20:53:15 <oklopol> assumed it was english-zx3
20:55:21 <bsmntbombdood> too bad i don't have some oak barrels
20:55:35 <bsmntbombdood> then i would make bourbon
20:55:37 <bsmntbombdood> or maybe rum
20:56:49 <oklopol> perhaps you could open an alcohol store
20:57:47 <bsmntbombdood> i'm thinking of it
20:57:53 <bsmntbombdood> not a store, but a distillery
20:58:35 <oklopol> yeah, even better
20:59:05 * SimonRC goes.
21:05:24 <bsmntbombdood> oklopol: come to my distillery and i'll hire you
21:05:41 <oklopol> sounds like a hard job! :D
21:07:31 <oklopol> i'll have to give it a bitta thought
21:16:52 -!- jix has quit ("CommandQ").
21:17:02 -!- helios24 has quit ("Leaving").
21:35:56 <Slereah> American Mathematical Society Translations: Series 2, Volume 29: 12 PAPERS ON LOGIC AND DIFFERENTIAL EQUATIONS
21:36:01 <Slereah> Be that the right book?
21:36:13 <Slereah> I'm having a hard time finding a description of it
21:50:49 -!- GregorR has quit (Read error: 104 (Connection reset by peer)).
21:57:03 -!- GreaseMonkey has joined.
21:57:49 -!- GreaseMonkey has quit (Client Quit).
21:58:04 -!- GreaseMonkey has joined.
22:11:53 -!- RedDak has quit (Remote closed the connection).
22:15:40 <ehird> CHALLENGE
22:15:59 <ehird> make a precedentless infix syntax that does not require parens or special markers to disambiguate ANY expression
22:16:06 <ehird> you merely have to rearrange the equation
22:16:38 <bsmntbombdood> not possible
22:17:12 <oklopol> finefix was my attempt at that
22:17:22 <oklopol> but ofc you can't have it fully infix
22:17:28 <oklopol> without adding dummy values
22:17:32 <ehird> well yeah, of course the rules would be crazy
22:17:45 <ehird> 2+2+3 doesn't even have to do what you expect :P
22:17:49 <oklopol> it's easy to prove impossible.
22:17:50 <ehird> just something that is "operand operator operand"
22:18:01 <ehird> doesn't have to look like any regular infix
22:18:10 <oklopol> then finefix, i guess.
22:18:32 <ehird> finefix requires operator duplication
22:18:34 <ehird> which is not "operand operator operand"
22:18:36 <oklopol> uses postfix-like semantics for situations where you need other than left-to-right precedence
22:18:50 <oklopol> umm, as i said, that's trivial to prove impossible.
22:19:32 -!- ehird has quit (Remote closed the connection).
22:19:40 <oklopol> :D
22:19:49 <oklopol> i love assuming people leaving means "fuck you"
22:19:57 <oklopol> although it never does
22:20:39 -!- ehird` has joined.
22:28:34 <ehird`> automake requires ncurses *why*?
22:28:47 -!- GregorR has joined.
22:32:28 <ehird`> m
22:32:29 <ehird`> hmm
22:32:35 <ehird`> i ought to make my magical-golf-site
22:32:53 <ehird`> it'd be like that golf site: shows source length, checks the output by running it in a sandbox, etc
22:32:58 <ehird`> but: other people could add challenges
22:33:02 <ehird`> and the source would be viewable
22:33:12 <ehird`> challenge #1: compact the source code of the site itself
22:33:12 <ehird`> :-)
22:39:51 <ehird`> ... nobody likes that idea :(
22:41:05 <timotiis> sorry, thinking about other things
22:46:03 <oklopol> ehird`: fun idea
22:46:20 <ehird`> oklopol: it exists but is down right now, and iti sn't as cool
22:46:25 <ehird`> you cant' add challenges or view the source
22:46:26 <ehird`> s
22:46:51 <oklopol> hmm?
22:47:01 <oklopol> i meant the source thing
22:47:08 <oklopol> or, was that there, or your idea?
22:47:20 <oklopol> i know there are a lot of pages like that
22:55:22 <ehird`> ah
22:55:23 <ehird`> ok
22:55:25 <ehird`> but yeah
22:55:29 <ehird`> challenge #1 would be cool
22:55:38 <ehird`> it would run a huge unit test suite on it,
22:55:45 <ehird`> and check the generated html, when parsed, is equivilent
22:55:53 <ehird`> if so: update the site to run on it immediately
22:55:59 <ehird`> ok maybe without the update the site immediately part :P
22:56:14 <oklopol> :)
22:56:32 <oklopol> might be interesting to have a site that takes a year to generate.
22:56:51 <ehird`> hehe
22:57:18 -!- timotiis has quit ("leaving").
23:01:09 <ehird`> oklopol: of course i'd have to decide what language to write the site in
23:01:13 <ehird`> and i'm between languages right now
23:01:28 <oklopol> what are you between?
23:02:02 <ehird`> many
23:05:23 <ehird`> oklopol: just can't decide which i like most for practical things :)
23:08:53 <ehird`> oklopol: any suggestions?
23:09:16 <oklopol> no realistic ones.
23:09:38 <oklopol> i can suggest making AsmScript, and using that
23:10:10 <ehird`> heh
23:10:14 <ehird`> i wsa looking for realistic ones
23:10:27 <oklopol> it has everything a web programmer needs, as easily memorizable short mnemonics, while being exTREMEly efficient!
23:10:40 <oklopol> yeah, well, that's not my specialty.
23:11:01 <oklopol> i'd use php :)
23:12:04 <ehird`> oklopol: not just web stuff
23:12:11 <ehird`> i just mean: generic, practical stuff
23:12:31 <ehird`> hacks generally on the smaller side but i don't want it to die in practicality if something i write grows.
23:12:52 <ehird`> oklopol: where's that oklotalk operator precedence thing again?
23:13:07 <oklopol> oklotalkspec in www.vjn.fi/mb
23:13:17 <oklopol> if you can figure the interface out :)
23:14:36 <ehird`> yes: the interface is what i was really looking for
23:14:38 <ehird`> it says written in python iirc
23:14:45 <ehird`> did you just use the cgi module? :P
23:14:50 <ehird`> hmm it doesn't say that
23:14:53 <ehird`> you must have said that
23:19:41 <ehird`> oklopol: did you?
23:20:15 <ehird`> oklopol: "Loading very unacomplised. Super am sory :("
23:20:18 <ehird`> truly great english
23:29:22 <ehird`> Everyone's dead!
23:35:13 <ehird`> lalalala
23:36:47 -!- Corun has quit ("This computer has gone to sleep").
23:37:20 <ehird`> even the computeres
23:38:15 <bsmntbombdood> ferment ferment ferment
23:39:45 <ehird`> dead dead dead
23:46:27 <ehird`> i wonder
23:46:33 <ehird`> is there a brainfuck compiler that does constant folding?
23:46:43 <lament> of course.
23:47:57 <ehird`> i mean non-trivial
23:47:59 <ehird`> and whoa lament
23:48:03 <ehird`> you're not dead
23:48:24 <ehird`> (also: yikes, Perl parsing is almost *certainly* turing-complete...)
23:48:35 <ehird`> Though successful in creating a Perl parser for document-related purposes, the PPI project determined that parsing Perl code as a document (retaining its integrity) and as executable code simultaneously was, in fact, not possible. Specifically the author claimed that, "parsing Perl suffers from the 'Halting Problem.'"
23:53:05 <bsmntbombdood> lament hasn't been here for a long time
23:55:02 <lament> i live here, man
23:55:23 <ehird`> bsmntbombdood: exactly
23:55:40 <ehird`> i've only seen you about 3-5 times actually lament
23:55:42 <ehird`> but not for aaaaaaaaaaaaaaaaaaages
23:56:22 <lament> it's because i live in a city deep under the sea
23:56:39 <lament> once every thousand years or so, the city rises to the surface and wireless starts working
23:59:23 <ehird`> I thought you said you lived here
2008-01-18
00:14:10 <lament> this isn't a city deep under the sea?
00:34:09 <GreaseMonkey> there might be a dimensional loophole
00:35:49 <ehird`> so! who wants to help work on the underload->C compiler
00:58:18 -!- skabet has joined.
01:01:13 <ehird`> nobody? :(
01:01:27 <skabet> i'm not nobody...
01:05:57 -!- puzzlet_ has quit (Remote closed the connection).
01:05:57 -!- puzzlet has joined.
01:27:13 <oklopol> ehird`: written in python?
01:43:33 -!- ehird` has quit.
01:48:44 -!- puzzlet has quit (Remote closed the connection).
01:48:45 -!- puzzlet_ has joined.
02:16:15 -!- skabet has left (?).
03:46:22 -!- puzzlet has joined.
03:46:25 -!- puzzlet_ has quit (Remote closed the connection).
04:40:10 -!- 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.").
05:21:21 -!- puzzlet_ has joined.
05:31:41 -!- puzzlet has quit (Read error: 110 (Connection timed out)).
06:26:18 -!- Justin_ has joined.
06:26:39 -!- Justin_ has left (?).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:08:52 <oklopol> http://www.vjn.fi/oklopol/graphica.txt turns out it *was* trivial to make an n-dimensional hypercube
08:09:17 <oklopol> also turns out my implementation is slow as hell :D
08:42:31 -!- oklopol has changed nick to Z.
08:42:46 -!- Z has changed nick to oklopol.
08:42:59 <oklopol> too late
08:50:26 -!- oerjan has joined.
09:39:46 <Slereah> Hello.
09:43:12 <oklopol> malbolgo
09:44:09 <Slereah> Am I supposed to mod this by 94 to get hello?
09:45:48 <oklopol> i should ask you that very same question.
09:47:59 -!- oerjan has quit ("leaving").
09:48:42 -!- slereah_ has joined.
10:04:27 -!- Slereah has quit (Read error: 110 (Connection timed out)).
10:48:34 -!- puzzlet_ has quit (Remote closed the connection).
10:48:46 -!- puzzlet has joined.
11:27:12 -!- puzzlet has quit (Remote closed the connection).
11:27:19 -!- puzzlet has joined.
11:47:29 -!- puzzlet has quit (Remote closed the connection).
11:47:35 -!- puzzlet has joined.
13:00:24 * slereah_ will try to implement the 2D version of the Love Machine 9000.
13:07:29 -!- jix has joined.
13:24:11 -!- Corun has joined.
13:42:49 -!- helios24 has joined.
13:47:12 -!- sebbu has quit ("@+").
14:01:30 -!- sebbu has joined.
14:03:00 -!- puzzlet has quit (Remote closed the connection).
14:03:02 -!- puzzlet has joined.
14:14:54 -!- Corun has quit ("This computer has gone to sleep").
14:36:02 -!- Corun has joined.
14:38:17 -!- slereah__ has joined.
14:38:17 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
14:40:23 -!- Corun has quit (Client Quit).
14:56:45 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
14:56:48 -!- slereah_ has joined.
15:08:21 -!- helios24 has quit (Remote closed the connection).
15:34:46 -!- ehird` has joined.
15:40:09 -!- jix has quit (Read error: 104 (Connection reset by peer)).
15:42:39 -!- timotiis has joined.
15:44:50 <ehird`> who is fast with log grepping?
15:45:00 <ehird`> i need to know the date where me and ais523 discussed 'turing complete regexps'
15:49:00 <Asztal> http://tunes.org/~nef/logs/esoteric/07.10.03
15:49:06 <Asztal> or maybe http://bespin.org/~nef/logs/esoteric/07.11.12
15:49:28 -!- jix has joined.
15:49:30 <Asztal> or maybe neither, btw, I used http://www.google.co.uk/search?hl=en&q=ais523+ehird+turing+complete+regexp :D
15:56:14 <ehird`> 2007-10-03 is right, Asztal
15:56:15 <ehird`> thanks
15:57:03 <slereah_> The 2D Love Machine has some problems dealing with the adding-new-squares-around
15:58:16 -!- helios24 has joined.
16:00:01 * ehird` (a(b)) -> [['a', ['b']]]
16:00:04 <ehird`> that IS a good idea.
16:02:04 <ehird`> <ehird`>FUCK! I'm starting to think like Larry Wall.
16:02:09 <ehird`> wait, why am i still ehird`
16:02:10 -!- ehird` has changed nick to ehird.
16:12:48 -!- fax has joined.
16:13:43 <ehird> hello fax machine
16:14:48 <fax> Hello
16:15:33 <fax> I found a great Logic textbook
16:16:18 <fax> Lectures on the Curry Howard Isomorphism
16:30:25 <slereah_> http://membres.lycos.fr/bewulf/Russell/Hello.png
16:30:29 <slereah_> Am I doin it rite?
16:30:57 <slereah_> There seem to be some problems with some of the tape-displaying functions.
16:31:12 <slereah_> But then again, it's not the most important part I guess.
16:31:49 <slereah_> One day, I'll have to dig in that code to clean it. I don't look forward to it.
16:33:44 <ehird> your code looks like random line noise.
16:34:35 <slereah_> Well, it's just directions and "print space".
16:35:16 -!- sebbu2 has joined.
16:39:18 <slereah_> http://membres.lycos.fr/bewulf/Russell/Hello2.png
16:39:31 <slereah_> Hides the problems better with space as the empty char!
16:41:37 -!- ais523 has joined.
16:42:11 <slereah_> Hi.
16:42:20 -!- ais523 has set topic: What is the title of this topic? Logs: http://tunes.org/~nef/logs/esoteric.
16:42:35 <ais523> Freenode get annoyed if a channel is publically logged but you don't tell anyone
16:42:37 <ais523> and hi
16:43:03 <ais523> wow, ehird, you got your nick back?
16:43:05 <fax> Hey
16:43:17 <ais523> h
16:43:18 <ehird> ais523: yep
16:43:27 <ehird> <3 freenode staff
16:43:35 <ehird> I also have 'rice'
16:43:39 <ais523> and as for those TC regexps, I'm still working on them
16:43:49 <ais523> written about 70% of the spec, now
16:43:50 <ehird> because, i saw an unused-for-a-year, short, memorable dictionary word, and nabbed it
16:43:53 <ehird> heh
16:43:56 <ais523> and started working on the implementation for a third time
16:43:57 <ehird> i'm picking mine up again
16:44:01 <ehird> kind of from the start
16:44:17 <ais523> now I have a version of Perl that understands (??{$regexp})
16:44:28 <ehird> ais523: Why embed it in perl?
16:44:31 <ehird> It's turing complete by itself!
16:44:40 <ais523> I'm using Perl to write the interpreter
16:44:57 <ais523> but without that construct, matching brackets is tedious
16:45:13 <ais523> of course, it exists in my regexp language too
16:45:18 <ais523> with a much shorter notation
16:45:50 <ehird> Mine will be written in Haskell or something, probably.
16:45:54 <ehird> Dunno.
16:46:13 <ais523> one of my favourite innovations is a concise way to do yacc-like matching
16:46:19 <ehird> ais523: what's a^nb^nc^n
16:46:21 <ehird> in yours
16:46:39 <ais523> ^(a*)b*:1c*:1$
16:47:21 <ais523> or you can use :- rather than :1 if you don't want to hardcode a group number
16:47:21 <ehird> that has changed since last time..
16:47:24 <ehird> significantly
16:47:34 <ais523> what did I say last time?
16:48:29 <ais523> <ais523> also, I have things like (a*)b*:-c*:- to solve the famous n as, n bs, n cs problem, which I think is considerably shorter than the corresponding BF program
16:48:39 <ais523> so it's the same program
16:48:49 <ais523> except that I didn't put the ^ and $ to anchor it to the whole expression
16:48:57 <ais523> incidentally, ^ and $ have completely different implementations
16:49:50 <ehird> hm
16:50:00 <ehird> i'm going to start with regexps as i like them, then extend to matching brackets
16:50:03 <ehird> which is to say:
16:50:04 <ehird> recursion
16:50:08 <ehird> ais523: does that sound like a good basis?
16:50:16 <ais523> mine is also based on recursion
16:50:27 -!- sebbu has quit (Connection timed out).
16:50:30 <ais523> a* is just an abbreviation for (|a$+)
16:50:50 <ais523> i.e. either match nothing, or match a followed by a repeat of the current group's code
16:51:05 <ehird> that's crazy :)
16:51:08 <ais523> strictly speaking, (??|a$+), but the ?? just prevents the group being allocated a number
16:51:24 <ehird> I want a lambda symbol
16:51:26 <ehird> $<lambda> = quine
16:51:39 <ais523> lambda in a RE language
16:51:46 <ais523> hmm...
16:51:58 <ehird> \(\)|\($<lambda>\)
16:52:00 <ais523> it would be easy enough in a self-modifyin language
16:52:04 <ehird> matches balanced brackets, but does nothing with them
16:52:14 <ehird> \(\)()|\(($<lambda>)\)
16:52:19 <ehird> matches brackets into a parse tree
16:52:21 <ehird> () -> []
16:52:24 <ehird> (()) -> [[]]
16:52:24 <ehird> etc
16:52:25 -!- puzzlet_ has joined.
16:52:25 -!- puzzlet has quit (Remote closed the connection).
16:52:27 <ehird> well
16:52:30 <ehird> [""]
16:52:31 <ehird> i guess
16:52:40 <ais523> my language produces a parse tree no matter what you do
16:52:49 <ais523> and the colons force two regexps to have the same parse tree
16:53:39 <ais523> you can choose whether . matches just a character, or whether it's equivalent to (\x0|\x1|\x2|...|a|b|c|...|\x10fffe|\x10ffff) using options
16:53:49 <ais523> (or whatever Unicode goes up to nowadays)
16:54:05 <ais523> and which option in a set is chosen is also taken into account
16:54:13 <ehird> ais523: does that account for all the nomansland stuff in unicode?
16:54:18 <ehird> those higher 'planes' or whatever they are
16:54:26 <ehird> it's all very epic and spooky
16:54:26 <ais523> I'm not entirely sure
16:54:27 <ehird> :)
16:54:34 <ais523> all I know is that there are some codepoints that can't be used
16:54:36 <ais523> so I don't use them
16:54:37 <ehird> 'The Unicode encoding space consists of 17 planes with each plane consisting of 65536 code points'
16:54:52 <ais523> that at least explains where the 10ffff comes from
16:54:54 <ehird> As of Unicode 5.0.0, 102,012 (9.2%) of these code points are assigned, with another 137,468 (12.3%) reserved for private use, 2,048 for surrogates, and 66 designated noncharacters, leaving 872,582 (78.3%) unassigned. The number of assigned code points is made up as follows:
16:55:02 <ehird> 9.2% assigned :P
16:55:30 <ais523> I wonder when if ever they'll run out and have to add more planes?
16:55:35 <ais523> the BMP itself is sufficient for most things
16:56:25 <ehird> http://en.wikibooks.org/wiki/Windows_Programming/Unicode/Character_reference/E0000-E0FFF do they really need this page.
16:56:33 <ais523> you can also do things like ('a-z=A-Z')
16:56:39 <ais523> to change lowercase to caps
16:56:59 <ais523> and as for do they really need that page; I think that might have beeen on Wikipedia once but they moved it because Wikibooks was a better fit
16:57:13 <ais523> and it seems reasonable that some book might need page after page of Unicode characters in it...
16:57:38 * ais523 has to go for a while, but should be back maybe about half an hour later
16:57:56 -!- ais523 has quit ("hopefully back in about 1e mins...").
17:05:57 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
17:06:14 -!- slereah_ has joined.
17:06:50 -!- slereah_ has changed nick to Slereah.
17:35:24 -!- ais523 has joined.
17:45:49 -!- fax has changed nick to afx.
17:50:01 -!- RedDak has joined.
17:54:36 -!- afx has changed nick to fax.
17:56:33 <ais523> ^(\`$+$+=$+$+\^|'skivdce(\..)')$
17:57:58 <ais523> that converts Unlambda from Polish to Reverse Polish notation
17:58:24 <ais523> it's easy enough to expand on it to produce an Unlambda to Underload converter in a single statement, except for c
18:00:24 <ehird> hello ais523
18:00:29 <ais523> hello
18:00:48 <ais523> of course, my implementation isn't finished yet, so I haven't tested any programs
18:00:59 <ais523> I've only got as far as implementing the crazy quoting and precedence rules
18:01:24 <ehird> i'm still thinkning about mine
18:01:37 <ehird> ais523: i think i'll start a rewrite of the compiler's scheme code
18:01:41 <ehird> the prelude staying the same ofc
18:01:51 <ehird> i was thinking, I dunno. Haskell? It'd be good for writing the optimizations..
18:01:57 <ais523> I'm better at the C than at the Scheme
18:02:08 <ehird> yeah, and the scheme is ugly
18:02:11 <ais523> but I think the C's about as good as it's likely to easily get
18:02:14 <ehird> which is why i'm switching to something else :)
18:02:25 <ehird> (one of the things i want to add is a real parse tree)
18:02:30 <ais523> I figured out how to make dup O(1), but the other costs of doing so are sufficiently high that it isn't worth it
18:02:35 <ehird> also, with a new frontend
18:02:38 <ehird> we can optimize the code
18:02:50 <ehird> ais523: so, what languages do you understand? haskell might be a bit optimistic i guess :)
18:03:02 <ais523> I'm trying to learn it without docs
18:03:05 <ais523> which is a bit difficult
18:03:16 <ais523> and I'm not on my own computer at the moment, so I don't have access to an interpreter anyway
18:03:22 <ais523> nor to svn for that matter
18:03:30 <ehird> ah
18:04:36 <ais523> my computer is currently over 4 miles away from my Internet connection...
18:05:54 <ehird> ais523: this seems like a bit of a problem ;)
18:06:08 <ais523> well, I'm at the Internet connection at the moment, obviously
18:06:28 <ehird> but not your computer.
18:06:49 <ais523> no, so I'm stuck with the ancient version of ChatZilla
18:08:17 <ehird> awesomecakes
18:09:04 <ehird> ais523: do you even have a decent editor? :-)
18:09:31 <ais523> when I connect to Unix, like I do now, I have Emacs or vi
18:09:41 <ais523> otherwise, Visual Studio, Notepad, Wordpad and Textpad
18:09:49 <ais523> (and MS Office, of course, bu I don't count that)
18:09:57 <ais523> it's your opinion as to what's a decent editor
18:10:07 <ais523> personally I find sed works quite well in many cases
18:11:21 <ehird> heh, sed
18:11:24 <ehird> wellll, let's see..
18:11:41 <ehird> emacs, blah, blah, blah, blah ... ok, you have one good OS which has a good editor inside
18:11:50 <ehird> if you're connecting to unix already that's an awful lot of indirection :-)
18:12:07 <ais523> it's worse; some of the projects I do are on a friend's Linux server
18:12:16 <ais523> and I have to connect to Unix to ssh over to Linux...
18:12:26 <ais523> it's great fun trying to run curses programs like that
18:12:35 * ais523 uses Linux at home, by the way
18:12:41 <ehird> I use OS X :)
18:12:59 <ehird> haha, wow.. I telnetted in to Franz's Allego Lisp demo prompt for no reason
18:13:02 <ehird> <backspace> = ^?
18:13:06 <ehird> just like the good ol' days
18:13:13 <ehird> ^H works XD
18:13:20 <ais523> DOS was worse
18:13:26 <ais523> <backspace> = <left arrow on keyboard>
18:13:37 <ais523> but the backspace key worked as well, fortunately for everyone's sanity
18:13:56 <ehird> ais523: still in windows prompts today..
18:13:59 <ehird> or at least: xp era.
18:14:01 <ehird> :)
18:14:15 <ehird> I should netcat the whole swank source to the prompt
18:14:17 <ehird> and conncet with SLIME
18:14:17 <ais523> run doskey and it gets a lot saner
18:14:18 <ehird> :D
18:14:29 <ais523> what, you mean netcat | sh
18:14:36 <ehird> no
18:14:42 <ehird> you know what SLIME/swank is
18:14:43 <ehird> surely
18:14:49 <ais523> no
18:14:51 <ehird> ah
18:14:56 <ehird> SLIME = Superior Lisp Interaction Mode For Emacs
18:15:11 <ehird> basically, it's what Symbolics would have been proud of.
18:15:13 <ais523> is that real lisp, or elisp?
18:15:18 <ehird> real lisp
18:15:23 <ehird> The whole editor gets knowledge about your lisp system
18:15:35 <ehird> SLIME actually connects with a socket to your lisp implementation
18:15:36 <ais523> Emacs knows scarily much anyway
18:15:39 <ehird> which is running swank
18:15:42 <ehird> swank is the backend
18:15:47 <ehird> with some implementation-specific parts
18:15:53 <ehird> and it tells SLIME /everythiing/ it wants to know
18:16:20 <ehird> from basic things like 'complete based on symbol table' to crazy, crazy introspection
18:16:25 <ehird> and it has a lisp mode
18:16:29 <ehird> like "run-lisp"
18:16:31 <ehird> but vastly superior
18:16:40 <ehird> with debugger integration and everything
18:16:50 <ehird> it's one of the Must Haves for CL development
18:16:59 <ais523> Emacs has all those features which are great but nobody who was brought up on a GUI will like or even understand
18:17:03 <ehird> but anyway... i should cat that over to franz' telnet and get SLIME on it
18:17:04 <ehird> :D
18:17:09 <ehird> ais523: I was brought up on a gui..
18:17:22 <ais523> but you managed to shake yourself out of it
18:17:26 <ehird> no..
18:17:30 <ehird> i'm still running a gui irc client here
18:17:30 <ehird> :)
18:17:38 <ais523> connecting to the Internet doesn't count
18:17:42 <ehird> and - shock! - using a mouse!
18:17:46 <ais523> it became designed for a GUI
18:17:55 <ehird> ais523: occasionally i end up using the mouse in emacs :P
18:18:00 <ais523> and actually I don't use mice all that often nowadays, now I have a laptop
18:18:00 <ehird> i'm fast with a mouse though
18:18:02 <ehird> so it doesn't matter
18:18:26 <ehird> my editing style is really idiosyncratic
18:18:37 <ais523> so is most people's, I expect
18:18:40 <ehird> it comes from using every editor from Notepad to vim to TextMate to ...
18:19:04 <ais523> sed?
18:19:08 <ehird> no, i suck at sed
18:19:11 <ehird> oh!
18:19:13 <ehird> I've used acme
18:19:29 <ehird> it overwhelms you with pure awesomeness, too bad it can't really do shit i guess
18:19:36 <ehird> actually i have al lthe plan9 tools installed on here
18:19:43 <ehird> including an x11 acme
18:19:49 <ehird> ais523: OH! Have you used sam?
18:19:52 <ehird> another plan9 invention
18:19:55 <ehird> it has:
18:19:57 <ais523> no
18:19:59 <ehird> a top frame, with an ed prompt
18:20:06 <ehird> and loads of windows below each with one file
18:20:18 <ehird> and you can edit the file with all the flexibility of ed, while seeing it below
18:20:19 <ehird> hardcore
18:20:24 <ehird> it's even GRAPHICAL!
18:20:31 <ais523> sort of like the relation of ddd to gdb?
18:20:38 <ehird> ddd=
18:20:43 <ais523> I was started on ddd, but grew to prefer gdb
18:20:50 <ais523> ddd is sort of a GUI for gdb
18:21:14 <ais523> it runs gdb in a separate process, and translates GUI input into gdb commands and gdb output into graphical displays
18:21:26 <ais523> and you can see the gdb commands scrolling past at the bottom
18:22:03 <ehird> heh
18:22:27 <ehird> ais523: plan9 is crazy
18:22:27 <ais523> anyway, this /is/ the computer on which I wrote my buggy elisp abstraction eliminator
18:22:30 <ehird> ever used it's WM?
18:22:40 <ais523> so I'm pasting it now so I can later get it onto my laptop
18:23:09 <ais523> and no, I've only used Win 3.1 and Win 95 onwards WM, X11, the Common Desktop Environment, Gnome and KDE
18:23:21 <ehird> never used OS X?
18:23:22 <ehird> poor thing
18:23:23 <ehird> :p
18:23:30 <ais523> not on my own computer
18:23:36 <ais523> I've used it on other computers
18:23:43 <ais523> and I'm a fan of several of its features
18:23:52 <ais523> it's probably slightly better in UI terms than Gnome/KDE, but not by much
18:24:05 <ehird> it is once you learn about it through using it
18:24:30 <ehird> i must admit that i'm an expos addict, though mostly keyboard-based :P
18:24:55 <ais523> anyway, the abstraction eliminator is at http://pastebin.ca/860539
18:25:03 <ais523> it's buggy if you don't use a prefix arg to disable optimisation, though
18:25:18 <ais523> I wrote it so long ago that I've forgotten the syntax, though so I'd have to work it out again
18:25:50 <Slereah> Is it for lambda expressions in Haskell syntax?
18:25:59 <ais523> Unlambda syntax
18:26:07 <ais523> with an extension to write lambdas
18:26:16 <Slereah> \ or ^?
18:26:32 <ais523> it seems to be ^ and $, according to the source
18:26:42 <ais523> ^ to declare a lambda binding, $ to use it
18:27:52 <ehird> Unlambda. Mode.
18:27:52 <ehird> Jeez.
18:28:06 <ehird> FONT LOCK WHAT THE HELL
18:28:07 <ais523> I make it a habit to write Emacs modes for all the esolangs I work in
18:28:14 <ais523> with font lock
18:28:31 <ais523> only intercal-mode is publically released, though, and I didn't even originally write that
18:28:39 <ais523> just added font lock and some helpful functions to it
18:29:06 <ais523> `^x`$x$x`^x`$x$x
18:29:11 <ais523> followed by C-c C-b
18:29:16 <ais523> gives ```sii```sii
18:29:26 <ais523> which come to think of it is actually wrong
18:29:47 * Slereah uses this one : http://membres.lycos.fr/bewulf/Russell/Lazy%20Bird/ae9.py
18:29:48 <ais523> because the input should have been `^x`$x$x^x`$x$x
18:30:01 <ais523> giving the correct ```sii``sii
18:30:11 <Slereah> Although it doesn't differentiate combinators from variables.
18:30:25 <Slereah> So s, k, i, c and b are better left out of the expression.
18:30:26 <ehird> I still th ink we need an abstraction introducer.
18:30:43 <ehird> ```sii``sii -> ((\x. x x) (\x. x x))
18:30:49 <ais523> who was it who said that decompiling Unlambda was probably easier than compiling?
18:30:50 <Slereah> Wouldn't that just be replacing the combinator by its lambda?
18:31:00 <ais523> that's what abstraction introduction is
18:31:18 <ehird> well yes
18:31:20 <ehird> but also optimizing
18:31:22 <ehird> see my example
18:31:27 <Slereah> 'kay.
18:32:07 <ais523> here's a program I wrote for the abstraction eliminator:
18:32:08 <ais523> http://pastebin.ca/860594
18:32:18 <Slereah> I wonder, does Unlambda and all the purely functional qualify as string-rewriting?
18:32:37 <ais523> it can be implemented with string-rewriting
18:32:46 <ais523> and that's the method I use when stepping through Unlambda by hand
18:33:05 <ais523> I could probably write a quick interpreter in my new regexp language, which I decided to call Cyclexa
18:34:25 <ais523> the program that I pasted, by the way, is a P'' interpreter in Relambda (which compiles into Unlambda with C-u C-c C-b; it should work without the prefix arg, but it's buggy)
18:34:48 <ais523> Relambda = Unlambda + lambda; any infinite loop must contain a ! character somewhere, which otherwise has the same semantics as i
18:35:11 <ehird> ais523: Does it detect? :-)
18:35:23 <ais523> it detects everything but infinite loops
18:35:31 <ehird> btw, my golf idea: http://golf.shinh.org/, but you can add challenges, and it has a golf challenge for the site source itself
18:35:34 <ehird> ais523: aww
18:35:34 <ais523> which is why you have to put a ! somewhere inside to tell it where they are
18:35:40 <ehird> ais523: why?
18:35:45 <ais523> that's in theory, at least. In practice it seems not to work.
18:35:53 <Slereah> Can't you just solve the halting problem to detect them?
18:37:18 <ais523> how does that golf site work?
18:37:23 <ais523> as in, how do you use it?
18:38:22 <ehird> ais523: uh
18:38:26 <ehird> you see input/output
18:38:30 <ehird> implement the program, etc
18:38:31 <ehird> upload it
18:38:33 <ehird> it goes in the rankings
18:38:45 <ais523> does it check the program to see if it works?
18:39:40 <ais523> and how can Esolang not have a page about GolfScript?
18:39:47 <ehird> yes, it does check
18:39:51 <ehird> http://golf.shinh.org/p.rb?print+file
18:39:55 <ehird> it checks input to output
18:40:03 <ehird> ais523: because its really new
18:40:21 * ais523 must write a stub immediately
18:43:28 <ehird> http://golf.shinh.org/reveal.rb?Quine/shinh/1182045546&php
18:43:30 <ehird> that is so cheating
18:43:50 <Slereah> What language is it?
18:44:05 <Slereah> Ruby?
18:44:51 <ais523> Brainfuck, probably
18:46:22 <ehird> no
18:46:23 <ehird> PHP
18:46:32 <ehird> _ is apparently a PHP quine
18:46:39 <ehird> just tested it: yep.
18:46:43 <ehird> oh
18:46:44 <ehird> duh
18:46:45 <ais523> as is anything that doesn't contain <?, surely?
18:46:48 <ehird> because it's not in <?php..?>
18:46:51 <ehird> grrr
18:46:53 <ehird> that is so cheating
18:47:07 <ais523> In HOMESPRING, the null program is not a quine.
18:47:23 <ehird> http://golf.shinh.org/p.rb?Quine i'm trying to find an interp with short error messages
18:47:26 <ehird> so ican do a kimian quine
18:47:26 <ehird> :)
18:47:30 <ehird> I wonder if it has ed
18:47:36 <ehird> one char quine!
18:48:12 * ais523 had the idea of trying to create an iterating Kimian quine
18:48:26 <ais523> or even better, a quine-pair where one program was Kimian but the other wasn't
18:49:03 <ehird> hah
18:49:05 <Slereah> Heh.
18:49:30 <ais523> if I manage to do it in gcc, then that'll be my IOCCC entry for next year
18:49:56 <ais523> my previous one was a BF interpreter in alphanumericless C (apart from defines and the prototype of main)
18:49:59 <ehird> sed: 1: "~": invalid command code ~
18:50:06 <ais523> which contained several hidden programs
18:50:16 <ehird> damnit
18:50:18 <ehird> they use a different sed
18:50:27 * ehird installs gnu sed
18:50:31 <ais523> some of which were written in Perl, some of which were written in BF
18:50:35 <ehird> gnu error messages are large :(
18:51:06 <Slereah> Create a language full of short error messages!
18:51:16 <Slereah> Or some sort of language where the output is only error messages
18:52:18 <lament> ed
18:52:56 <ais523> what about this for a Kimian quine, in x86 machine code?
18:53:03 <ais523> Illegal instruction (core dumped)
18:53:25 <ais523> at least on the 8086, all lowercase letters are illegal instructions, so I'd just have to check what capital I does
18:53:44 <ehird> hah
18:53:55 <ais523> not too long either...
18:54:05 <ehird> "Error: not ELF binary"
18:54:07 <ehird> from the golf site
18:54:17 <ais523> what, they want it in Elf format?
18:54:20 <ehird> yes
18:54:25 <ais523> just give them your own shorter program
18:54:29 <ais523> that you just told me
18:54:34 <ehird> which one...
18:54:35 <ehird> that sed?
18:54:38 <ehird> it's bsd sed output
18:54:41 <ehird> they use gsed
18:54:41 <ais523> Error: not ELF binary
18:54:43 <ehird> oh
18:54:44 <ehird> hah
18:54:45 <ehird> no..
18:54:49 <ehird> it outputs it and rejects the submission
18:54:53 <ehird> it checks before verifrying
18:55:06 <ais523> so that's a Kimian quine against the website itself
18:55:12 <ais523> that's a moral victory, at least
18:56:23 <ehird> heh
18:56:24 <ehird> hm
18:56:32 <ehird> oh, shit
18:56:35 <ehird> it checks for status=1
18:56:37 <ehird> bastards:P
18:56:49 <ehird> I had my D compile time quine:
18:56:50 <ehird> test.d(1): found '1' when expecting ')'
18:56:51 <ehird> test.d(1): no identifier for declarator test.d
18:56:51 <ehird> test.d(1): semicolon expected, not ')'
18:56:51 <ehird> test.d(1): Declaration expected, not ')'
18:56:55 <ais523> do you mean status=0?
18:57:05 <ais523> or are you using VMS?
18:57:11 -!- RedDak has quit (Remote closed the connection).
18:57:44 <ehird> it checks if status=1 and denis it
18:57:45 <ehird> *denies
18:58:21 <ehird> test.sh: line 1: [: missing `]'
18:58:25 <ehird> fuck you bash
18:58:30 <ehird> fuck you for matching up yuour []s in errors
18:58:37 <ehird> cruel people
18:58:59 <ais523> incidentally, the man page for true gave information on how to make it error out
18:59:10 <ehird> oh well:
18:59:12 <ehird> 'cat $0'
18:59:14 <ehird> accepted.
18:59:19 <ehird> i feel kinda hollow inside
18:59:22 <ais523> /bin/true --version 2>&1 | /dev/full
18:59:28 <ehird> ais523: wow
18:59:37 <ehird> WTF TRUE TAKES OPTIONS
18:59:39 <ehird> .....
19:00:01 <ais523> only --help and --version
19:00:06 <ais523> and only then if you give a full path
19:00:22 <ais523> and even only then on the GNU version
19:00:34 <ais523> incidentally, /bin/false errors even if you ask for help or version info
19:00:46 <Asztal> because it's so important to know what version of true you're running ;)
19:01:00 <ehird> updated in version 2. now fails.
19:02:00 <ais523> I wonder if anyone ever has run true --help in an attempt to find out what it does?
19:02:30 <Asztal> well, they'd find out alright.
19:03:11 <ehird> http://golf.shinh.org/p.rb?Nothing Um
19:03:36 <ehird> oh
19:03:37 <ehird> hahaha
19:03:38 <ehird> you have to print:
19:03:43 <ehird> *NOTHING*
19:03:54 <ehird> with the actual input:
19:03:56 <ehird> *NOTHING*
19:04:09 <Slereah> You'd think that most of the shortest programs would be of length zero.
19:04:18 <ehird> no, Slereah
19:04:21 <ehird> you have to print out the string:
19:04:23 <ehird> *NOTHING*
19:04:41 <Slereah> Then why are some of the program of length one :o
19:04:54 <ehird> because you get the stirng:
19:04:56 <ehird> *NOTHING*
19:04:57 <ehird> as input
19:04:59 <ehird> so in e.g. sed
19:05:03 <ehird> you can just do nothing
19:05:06 <Slereah> It is subtle
19:05:06 <ehird> but it denies 0 length programs
19:05:14 <ehird> http://golf.shinh.org/p.rb?Evil+C+Compiler i'm just gonna hardcode this one
19:05:14 <ehird> :)
19:05:18 <ais523> I just entered qq as a palindromic PHP quine
19:05:31 <ais523> it rejected q; apparently it only wants even-length palindromes
19:05:51 <ehird> wait no... i want to call out to gcc
19:05:52 <ehird> MWAHAHA
19:06:43 <ehird> echo"Compiling...\nRunning...";gcc /dev/stdin;./a.out
19:07:09 <ehird> hm
19:07:13 <ehird> ais523: how do you read form stdin in gcc compiles
19:07:19 <ais523> gcc -x c /dev/stdin
19:07:24 <ais523> you have to tell it what language stdin is in
19:08:29 * ais523 is now trying to figure out a palindromic quine in Underload
19:08:36 <ehird> omg i did it
19:08:37 <ehird> NEW RECORD
19:08:39 <ehird> echo 'Compiling...
19:08:39 <ehird> Running...';gcc -xc /dev/stdin;./a.out
19:08:50 <ehird> HAHAHAHHAAHAHAH I RULE
19:09:06 <ais523> I'm sure that's cheating...
19:09:07 <ehird> huh wtf
19:09:11 <ehird> ... 58 chars
19:09:15 <ehird> thats not hte winner
19:09:19 <ehird> ais523: um duh all the submissions are like
19:09:23 <ehird> 500-40 chars
19:09:27 <ehird> ofc they do that
19:09:56 <ais523> !daemon ul bf http://pastebin.ca/raw/367774
19:10:36 -!- oklopol has quit (Remote closed the connection).
19:11:49 <ehird> ais523: could i abuse gcc to make it print my lines?
19:11:55 <ehird> which are
19:11:56 <ehird> Compiling...
19:11:58 <ehird> Running...
19:12:06 <ais523> I don't think so
19:14:05 <ehird> ais523: speaking of which
19:14:09 <ehird> how small can a c compiler get?
19:14:11 <ehird> self-compiling
19:14:24 <ehird> I would venture, 200-300 lines maybe?
19:14:45 <ehird> http://fabrice.bellard.free.fr/otcc/otcc.c otcc is rpetty close, but post-obfuscation..
19:15:00 <ehird> also:
19:15:04 <ehird> outputting assembly
19:15:06 <ehird> for portability.
19:15:08 <ais523> int main(){system("gcc -xc /dev/fd/0");}
19:15:13 <ehird> har har
19:15:15 <ehird> but seriously
19:15:23 <ais523> fd/0 saves one char over your stdin
19:15:25 * ehird /dev/stdin
19:15:27 * ehird /dev/fd/0
19:15:29 <ehird> hm
19:15:30 <ehird> thanks for the suggestion
19:15:31 <ehird> ;)
19:15:32 <ehird> but anyway
19:15:33 <ehird> yeah
19:16:24 <ais523> !ul (:aS(:^S^:)Sa:):^S^:(:aS(:^S^:)Sa:)
19:16:25 <ehird> ais523: so what about for a real compiler
19:16:26 <ehird> ;)
19:16:27 <EgoBot> (:aS(:^S^:)Sa:):^S^:(:aS(:^S^:)Sa:)
19:16:33 <ehird> !ul (
19:16:37 <ehird> !ul )
19:16:40 <ehird> !ul ~
19:16:47 <ais523> try a longer program
19:16:54 <ais523> !ul (Test)S
19:16:57 <EgoBot> Test
19:17:05 <ehird> !ul S
19:17:16 <ais523> !ul S
19:17:19 <ehird> !ul (S)^
19:17:27 <ais523> !ul (S):^
19:17:27 <ehird> !ul (S):^
19:17:30 <ehird> ..
19:17:31 <EgoBot> S
19:17:33 <EgoBot> S
19:17:34 <ehird> yay
19:17:40 <ehird> !ul (S):a^
19:17:46 <ehird> !ul (SS)::a^
19:17:55 <ehird> hm
19:17:56 <ais523> a^ is unlikely to produce output
19:17:58 <ehird> oh
19:17:59 <ehird> yes
19:18:05 <ais523> and I can only assume that EgoBot restarts the daemon each time
19:18:06 <ehird> !ul (S):~a~^
19:18:09 <EgoBot> (S)
19:18:17 <ais523> because it's written in BF and does no error checking
19:18:17 <ehird> !ul (SS):~a~^
19:18:21 <EgoBot> (SS)SS
19:18:27 <ehird> !ul (:~a~^):~a~^
19:18:32 <ehird> hm
19:18:34 <ehird> eff ths
19:18:35 <ehird> L:P
19:18:37 <ais523> no Ss in that
19:18:48 <ais523> !ul (:aSS):aSS
19:18:51 <EgoBot> (:aSS):aSS
19:19:08 <ais523> !ul (aS(:^)S):^
19:19:11 <EgoBot> (aS(:^)S):^
19:19:13 <ehird> I know
19:19:28 <ais523> those are the two main sorts of quines
19:19:32 <ehird> !ul ()(*)*S
19:19:35 <EgoBot> *
19:19:42 <ehird> !ul ()(()*S)*S
19:19:45 <EgoBot> ()*S
19:19:58 <ehird> !ul (()*S)(*S):*S
19:20:01 <EgoBot> *S*S
19:20:15 <ehird> !ul (()*S)(*S)*~:~^
19:20:49 <ehird> ais523: have you got svn on that machine yet? :)
19:20:52 <ehird> or a c compiler.
19:20:56 <ais523> I have a c compiler
19:20:59 <ais523> two c compilers, in fact
19:21:06 <ais523> there's also a program called c99
19:21:09 <ais523> when I run it I get
19:21:23 <ais523> c99 utility unavailable SunOS 5.9
19:21:52 <ehird> do you have svn yet? :P
19:22:13 <ais523> can't install software on here
19:22:26 <ehird> hahaha, golf.sinh.org pokes fun at ICFP
19:22:28 <ehird> "GolfScript is the programming tool of choice for discriminating golfers.
19:22:28 <ehird> Ruby is a fine programming tool for many courses."
19:22:29 <ais523> it isn't my machine, I'm not root, and I'm not supposed to download any to my home account
19:22:42 <ais523> ICFP is a great idea, by the way
19:23:07 <ais523> oh, and Perl is not too shabby
19:23:14 <ais523> according to their rankings, anyway
19:25:10 <ehird> heh: puts'gXgle'.sub'X','o'*gets.to_i
19:25:16 <ehird> i'm silly
19:25:45 <ais523> what does that do?
19:26:17 <fax> 10000000000000000000000000000000000000000000000000000... ?
19:26:38 <ehird> input 1
19:26:39 <ehird> and you get
19:26:42 <ehird> gogle
19:26:42 <ehird> 2
19:26:43 <ehird> google
19:26:44 <ehird> 10
19:26:46 <ehird> gooo...
19:26:51 <ehird> its the 'google' challenge
19:26:53 <ehird> on the golf site
19:26:57 <ehird> puts"g#{'o'*gets.to_i}gle"
19:26:59 <ehird> 26 chars
19:27:10 <ehird> the top is 14 chars in golfscript.
19:27:15 <ehird> to beat ruby i need to beat 24 chars
19:28:35 <ehird> i need to optimize gets.to_i
19:30:28 <Asztal> I see String#oct .. but no String#dec :(
19:31:20 <ehird> "42".oct.to_s(8).to_i
19:31:20 <ehird> :D
19:33:44 <ehird> oh my god
19:33:48 <ehird> here's a loop forever program:
19:33:48 <ehird> main=-277;
19:34:09 <ais523> is that machine code for goto self?
19:34:15 <ais523> or machine code for wait-for-interrupt?
19:34:18 <ais523> or something similar?
19:34:25 <Asztal> I heard the IOCCC disqualified such things
19:34:41 <ehird> ais523: it works on os x
19:34:47 <ehird> and i dont think golf.shinh.org does
19:34:48 <ehird> so:
19:34:49 <ais523> that was a rule change after that won the first year
19:34:52 <ehird> i think its portable, in some crazy way
19:34:53 <Asztal> because although compilers would technically accept main not being a function...
19:34:54 <ehird> also:
19:34:55 <ehird> 1 GOTO 1
19:34:58 <ehird> my basic entry :D
19:35:05 <ehird> hmm
19:35:06 <Asztal> my befunge entry:
19:35:06 <ehird> can you do
19:35:08 <ehird> 1GOTO1
19:35:18 <ehird> LOOL
19:35:18 <ais523> in C, I think the record is main(){main();}
19:35:24 <ehird> 4 char ruby:
19:35:25 <ehird> `vi`
19:35:30 <ehird> ais523: doesn't work on it
19:35:32 <Asztal> is that valid C? I know it's not valid C++
19:35:32 <ais523> but the compiler needs to do tail-recursion optimization to optimize that
19:35:44 <ais523> C doesn't have a no-recursive-main restriction
19:36:00 <Asztal> in C++, at least, main has undefined linkage and can't be called from inside the program :(
19:36:13 * Slereah is rewriting the Love Machine 9000
19:36:19 <ais523> you can just work around it by making a function that main is a wrapper around
19:36:24 <Slereah> Hoping for some nicer code
19:36:37 <ehird> you can't call main() in C ais523
19:36:38 <ehird> its forbidden
19:36:41 <ehird> and undefined
19:36:50 <ais523> no, you're thinking of C++
19:36:54 <ais523> it's legal in C
19:36:54 <ehird> nope
19:37:34 * ehird submits ```sii``sii
19:37:45 <ehird> Ooh
19:37:47 <ehird> ``ci`ci
19:37:48 <ehird> now that's clever.
19:38:57 <ais523> I can beat that
19:39:04 <ais523> which number is the problem?
19:39:18 <ehird> oh i submitted >< in befunge
19:39:21 <ehird> ais523: "timeout"
19:39:25 <ehird> Ctrl-F it
19:39:34 <ehird> omg
19:39:36 <ehird> a one-char befunge
19:39:38 <ehird> "1"
19:39:55 <ais523> pity, it didn't work
19:40:03 <ehird> ais523: what was it
19:40:04 <ais523> ` leads to a timeout in normal Unlamda because it waits for more input
19:40:08 -!- RedDak has joined.
19:40:13 <ais523> but they remembered to add an EOF
19:40:52 <Asztal> hah, I like this ruby one: `vi`
19:42:16 <ehird> yes
19:46:14 <ehird> ais523: the only thing better will be mine
19:46:20 <ehird> which as i have asid will have a golf on the site's code itself
19:56:26 <ehird> loooooooooooooooooooooooool
19:56:31 <ehird> ais523: I submitted this to the 123 challenge
19:56:33 <ehird> puts 1;x=File.read("test.rb").sub("puts","puts 1+");File.open("test.rb","w").write(x)
19:56:57 * ais523 looks at the 123 challenge
19:57:58 <ehird> take a look at the top ones
19:57:59 <ehird> :)
19:58:10 <ais523> I did, it's a clever idea
19:58:15 <ehird> basically
19:58:15 <ais523> keep resubmitting until it works...
19:58:22 <ehird> and hah
19:58:22 <ehird> yeah
19:58:24 <ehird> you're right
19:58:25 <ehird> sheesh
20:00:03 <ais523> what's the sheesh for?
20:00:28 <ehird> because its lame for them to do that
20:00:28 <ehird> :P
20:02:29 <ehird> puts$_ unless$_=="\n"while gets
20:02:30 <ehird> i am lame.
20:03:17 <ehird> ,[----------[++++++++++.],]
20:03:19 <ehird> heh.
20:03:25 <ehird> ais523: what's the most compact way to represent 10 in BF?
20:03:28 <ehird> just 10 -s or +s
20:03:28 <ehird> isn't it
20:03:34 <ais523> there's a page about it on the wiki
20:03:55 <fax> +++++[>++<-]>
20:03:57 <ais523> and yes, all numbers up to 14 are best done in unary
20:04:04 <ehird> ais523: but i have duplication there
20:04:05 <fax> ? :S
20:04:07 <ehird> 10 -s and 10 +s
20:04:57 <ais523> incidentally, I like my Perl entry for the echo, even though it's clearly not the shortest
20:05:01 <ais523> #!perl -p
20:05:23 <ais523> the whole program is preprocessor directives !
20:05:37 <ehird> hah
20:06:30 <ais523> most people probably don't even realise that you can do that
20:07:42 <ais523> likewise, a perl quine:
20:07:46 <ais523> #!/bin/cat
20:08:01 <ais523> I don't even know if that's cheating or not
20:08:08 <ehird> it is
20:08:13 <ehird> also, it's an X quine for all X
20:08:39 <ais523> no, because only perl will run a different program with the current source if it sees a #! at the start
20:08:44 <ais523> cat doesn't, for instance
20:09:11 <ehird> my ruby sort:
20:09:12 <ehird> print gets.split('').sort
20:09:16 <ehird> http://golf.shinh.org/p.rb?sort+characters
20:09:19 -!- oerjan has joined.
20:11:01 <ehird> hello oerjan
20:11:04 <ehird> we were discussing golf.
20:11:39 <oerjan> one of the many sports i have not tried.
20:11:39 <ais523> I went and entered a new competition: to create the shortest Underload interpreter
20:11:57 <oerjan> unless you count minigolf.
20:12:08 <ais523> this is the programming kind of Golf
20:12:24 <ehird> ais523: Our compiler won't do very well. :-)
20:12:36 <ais523> I allowed execs, though, so it will be allowed...
20:13:14 <ehird> why did you allow execs?
20:13:17 <ehird> :P
20:13:26 <ais523> so that you can pipe a compiled output into gcc
20:13:39 <ais523> and because I couldn't see a reason to deny them
20:14:03 <ehird> I
20:14:06 <ehird> 'd need to include prelude.c
20:14:13 <ehird> and that would make it biiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiig ;)
20:14:33 <ehird> there should be an anti-golf
20:14:43 <ehird> 'find the most obscure, drawn out, just plain ridiculous solution'
20:16:02 <Asztal> all the COBOL users would win on file size :(
20:17:21 <Slereah> Well, you could probably make some program that will send an email to a third party, asking him to send a letter containing "Hello world!"
20:17:46 <Slereah> Ideally, on another continent
20:17:51 <ehird> which is then OCR'd in
20:18:07 <Asztal> by writing an x86 emulator, an OS, with a TCP/IP stack and sendmail
20:18:47 <ais523> not email, snailmail
20:19:31 <Slereah> Are there any company that will send snailmails containing some text automatically?
20:19:42 <Slereah> Relying on a third party feels a little like cheating.
20:22:01 <ehird> probably not
20:22:03 <ehird> :)
20:22:15 <RodgerTheGreat> you'd still have to write a "driver" for the third party. Think of it as a piece of hardware.
20:25:40 <Slereah> I'm not a machine!
20:25:43 <Slereah> I'm a man!
20:25:58 <ehird> Slereah: man: a very fancy machine
20:26:03 <ehird> for some values of 'very fancy'
20:26:08 <ehird> pretty slow ones.
20:27:04 <RodgerTheGreat> humans are slow and unreliable, but quite flexible
20:27:05 <Slereah> Well, depends in what areas.
20:27:18 <RodgerTheGreat> both mechanically and in terms of their capabilities
20:27:18 <Slereah> We can walk without bumping into walls!
20:27:32 <Slereah> You can't say that of every robot
20:27:35 <RodgerTheGreat> we can read crappy handwriting with amazing accuracy!
20:27:41 <RodgerTheGreat> we can interpret regional accents!
20:30:47 <Slereah> Plus, we're not that slow!
20:30:56 <Slereah> It just takes us a while to speed up.
20:31:06 <Slereah> A few thousand years, the time for us to invent computers.
20:32:00 -!- puzzlet_ has quit (Remote closed the connection).
20:32:07 -!- puzzlet has joined.
20:32:38 <RodgerTheGreat> fair enough
20:32:55 <RodgerTheGreat> plus our collective processing power is capable of growing at a nearly exponential rate
20:33:36 <ehird> so! who wants to write a tiny esoteric C compiler
20:33:44 <ehird> aimed to be the smallest self-compiling C compiler
20:33:44 <ehird> well
20:33:45 <ehird> not really C
20:33:48 <ehird> tiny-esoteric-subset-of-C
20:33:49 <ehird> :P
20:34:40 * Asztal foresees abuse of goto
20:34:48 <RodgerTheGreat> sounds vaguely interesting. What platform will we target?
20:35:00 <RodgerTheGreat> Asztal: if that's the case, I'm definitely in. :D
20:35:14 * fax wants an ISWYM impl.
20:35:22 <RodgerTheGreat> let's make goto capable of calling function pointers or something
20:35:26 <oerjan> wasn't that done already as an IOCCC winning entry?
20:35:37 <ehird> oerjan: maybe, but whatever
20:35:42 <ehird> RodgerTheGreat: i was thinking just portable asm
20:35:47 <RodgerTheGreat> oerjan: heard of it, but who cares, it'll be fun
20:35:50 <ehird> 1. it's easier to debug :)
20:35:54 <ehird> 2. portability!
20:35:58 <RodgerTheGreat> hm
20:35:59 <ehird> i use OS X, you probably use something else.
20:36:03 <RodgerTheGreat> I use OSX
20:36:07 <ehird> do you
20:36:07 <ehird> ok
20:36:10 <ehird> well someone else might not
20:36:10 <ehird> ;)
20:36:14 <fax> what about replacing goto with the J operator (not that I actually know what it does)
20:36:27 <RodgerTheGreat> lies and heresy. Everyone uses OSX or a degenerate form of OSX.
20:36:30 <ehird> fax: that's a bit too changed from C
20:36:34 <ehird> hopefully we can make the only thing requiring special stuff syscalls
20:36:40 <fax> It is?
20:36:48 <RodgerTheGreat> It's very much like how all labor is really degenerate forms of bending.
20:36:51 <ehird> also, this code should compile OK:
20:37:00 <ehird> int main(void) { printf("Hello, world!\n"); return 42; }
20:37:02 <ehird> when we're done obviously.
20:37:05 <RodgerTheGreat> ok
20:37:07 <ehird> int main(int argc, char **argv) { printf("Hello, world!\n"); return 42; }
20:37:08 <ehird> that too
20:37:11 <ehird> so: we do need types
20:37:13 <RodgerTheGreat> let's build everything around those two examples
20:37:19 <ehird> RodgerTheGreat: let's not :P
20:37:23 <fax> lol
20:37:29 <ehird> bit hard to jump right into c like that
20:37:29 <RodgerTheGreat> dang
20:37:56 <ehird> RodgerTheGreat: Oh yeah and no parser generators
20:37:57 <ehird> :-)
20:37:57 <RodgerTheGreat> will we also have to build portions of a standard library from scratch?
20:38:04 <ehird> and... maybe. maybe not. we'll see
20:38:09 * ais523 did a 303-byte Underload interpreter in Perl
20:38:13 <RodgerTheGreat> ehird: I never use parser generators. They're for pussies and people in a rush
20:38:21 <ehird> RodgerTheGreat: though i don't think we should compile to _main
20:38:28 <ehird> because the C stdlib does that stuff
20:38:33 <ehird> and well it just seems like too much of a copout :P
20:38:33 <RodgerTheGreat> hm.
20:38:36 <ais523> it's actually an optimising interpreter, so it's not quite correct because it sometimes optimises inside literal strings, but the examples don't catach that problem
20:38:40 <ehird> but... entry points are wildly different between platforms
20:38:56 <RodgerTheGreat> I'm just trying to firmly establish what we plan to accomplish and create from scratch
20:39:34 <ehird> RodgerTheGreat: yeah
20:39:51 <ehird> RodgerTheGreat: OK i guess we can compile to just main for now
20:39:55 <fax> make 'int' arbitrary precision
20:39:57 <ehird> and let the c runtime do the legwork.
20:40:33 <ehird> RodgerTheGreat: do we want to typecheck? :D
20:40:39 <RodgerTheGreat> no
20:41:02 <RodgerTheGreat> it'll make it simpler, and we can just assume C programmers know what they're doing
20:41:11 <ehird> aww
20:41:12 <Asztal> everything is an int! including pointers!
20:41:16 <ehird> but that's not as fun RodgerTheGreat :)
20:41:17 <RodgerTheGreat> yes
20:41:19 <RodgerTheGreat> exactly
20:41:22 <bsmntbombdood> everything IS an int
20:41:31 <RodgerTheGreat> chars will actually be ints, booleans will actually be ints, etc
20:41:41 <fax> everythin is arbitrary precision int
20:41:47 <RodgerTheGreat> we can encode things differently, but you can randomly swap however you want
20:41:47 <ehird> RodgerTheGreat: but imagine golfing a typechecker
20:41:48 <ehird> heck
20:41:50 <ais523> you're inventing BCPL
20:41:53 <ehird> we could add type inference
20:41:56 <RodgerTheGreat> so we *might* want some way to cast stuff
20:41:58 <ehird> 'wtf' type
20:42:02 <ehird> wtf foo = 2;
20:42:11 <ehird> :P
20:42:15 <ehird> ais523: exactly
20:42:19 <ehird> it's not C without type checking
20:42:27 <RodgerTheGreat> I encourage an extremely minimalist standard
20:42:39 <RodgerTheGreat> ideally with as little undefined behavior as is reasonably possible
20:42:51 <ehird> But we're trying to compile something that is recognizable as C here :P
20:43:55 <RodgerTheGreat> we're trying to make something that is A) a programming language, B) is compatible with C functions/libs/etc, and C) can compile the test programs "int main(void) { printf("Hello, world!\n"); return 42; }" and "int main(int argc, char **argv) { printf("Hello, world!\n"); return 42; }" like you'd expect them to in regular C, without cheating.
20:44:07 <RodgerTheGreat> this is different than "recognizable as C"
20:44:19 <ehird> you are splitting hairs here, though
20:44:35 <RodgerTheGreat> Splitting hairs, perhaps, but this is necessary
20:44:54 <ehird> why can't we just aim to write "A c compiler" and then decide what to not implement when we come to that?
20:45:06 <ehird> But type checking is very fundamental to *C*, one of its defining things, so..
20:45:13 <RodgerTheGreat> I am reducing the scope of the problem until we have solidified a design. This is generally how I work.
20:45:27 <ehird> yes, but this way we'll be going through the whole spec
20:45:28 <ehird> nitpicking
20:46:12 <RodgerTheGreat> if you don't nitpick, how can you collaboratively design something as necessarily precise as a programming language?
20:46:15 <Asztal> what about the preprocessor?
20:46:37 <ehird> RodgerTheGreat: we're not designing a programming language. we're implementing a language, continually reducing it.
20:46:42 <ehird> it's incremental development.
20:46:47 <ehird> Asztal: i think that can come last.
20:46:53 <RodgerTheGreat> Asztal: it seems reasonable that we could do without a preprocessor, unless it allows us to get away with a simpler language
20:47:15 <ehird> a preprocessor will only be a few hundred lines anyway
20:47:23 <ehird> we're going for 'conciseness', not 'bytes'
20:47:30 <fax> A nice macro system would be cool
20:47:53 <fax> concise CLISP
20:48:01 <RodgerTheGreat> a nice macro system and a powerful goto might make it possible to have entirely synthetic functions! XD
20:48:05 <ehird> haha
20:48:16 <ehird> macros with return types!
20:48:21 <RodgerTheGreat> brilliant
20:48:23 <ehird> they define the type of the expression they produce
20:48:23 <RodgerTheGreat> I love it
20:48:52 <RodgerTheGreat> all we need to do is come up with a way for macros to generate something a linker can work with
20:49:02 <ehird> RodgerTheGreat: Macros are easy:
20:49:12 <ehird> docompile(macro_body);
20:49:16 <ehird> call_assembler(that);
20:49:21 <ehird> then:
20:49:29 <ehird> call_linker(that,"blah");
20:49:31 <ehird> dlopen("blah");
20:49:35 <ehird> ... get a funcptr ...
20:49:40 <ehird> funcptr(argstomacro);
20:49:42 <ehird> basically
20:49:43 <ehird> :P
20:49:44 <RodgerTheGreat> hm...
20:49:56 <ehird> RodgerTheGreat: you can just grab a funcptr from the linked file
20:49:59 <ehird> and call that
20:50:28 <RodgerTheGreat> sounds very creative, and it will significantly reduce the complexity of the language, I think
20:50:42 <ehird> nah, i don't think so
20:50:45 <ehird> it'll be a fun extra
20:50:51 <RodgerTheGreat> recursion may cease to be possible, depending on how this works, but that's fine.
20:50:54 <ehird> but i don't think it'll provide much actual usefulness or ways to reduce
20:51:39 <ehird> RodgerTheGreat: by the way, what source control systems do you have?
20:51:45 <ehird> pleasesaymercurialordarcspleasesaymercurialordarcs
20:52:00 <RodgerTheGreat> I don't enjoy source control systems
20:52:07 <RodgerTheGreat> they cause me pain and irritation
20:52:30 <ehird> are you suggesting that we just ftp it somewhere and overwrite everything?
20:52:30 <ehird> anyway
20:52:35 <ehird> darcs and hg aren't like svn and the like
20:52:38 <RodgerTheGreat> http://rodger.nonlogic.org/ssvn/about.htm
20:52:40 <RodgerTheGreat> woo
20:52:58 <ehird> so you have experience with subversion and didn't like it
20:53:00 <ehird> not suprising.
20:53:09 <ehird> you should try a distributed system like darcs or hg though.
20:53:24 <RodgerTheGreat> subsubversion solves most of my objections to source-control systems in general
20:55:41 <ehird> meh
20:56:01 * sekhmet can't stand *not* using VCSes
20:56:55 <ehird> anybody want to work on the compiler that doesn't despise vcses? :P
20:56:58 -!- sebbu has joined.
20:59:23 <ehird> hehe, guess not
21:01:39 <ehird> RodgerTheGreat: so are you adamant about this vcs thing? :P
21:01:58 <RodgerTheGreat> pretty much
21:02:08 <ehird> not even going to *try* darcs or hg?
21:02:14 <ehird> which are nothing LIKE svn?
21:03:23 <RodgerTheGreat> there is a sizeable portion of my soul dedicated to my hatred of version control systems. If I am getting paid, I will use one, but I at one point stated that I would never use one for personal projects
21:03:51 <sekhmet> What do you hate about them, out of curiosity?
21:04:08 <ais523> just for future reference:
21:04:09 <ehird> RodgerTheGreat: you really think they're all like svn don't you..
21:04:10 <ais523> '('/'{'*')'/'}'*'S'/'p'*'a'/'`'*'~'/"\\"*'!'/';'*'*'/'+'*':'/'.'*'^'/'~'*
21:04:20 <ais523> is almost a Underload -> GolfScript compiler in GolfScript
21:04:27 <ehird> 'almost'?
21:04:29 <ais523> except that the output is completely wrong
21:04:35 <ehird> ais523: ah
21:04:38 <ais523> because it translates string literals into GolfScript too
21:04:40 <ehird> ais523: make it store the original string.
21:04:42 <ehird> ais523: as well
21:04:50 <ehird> ais523: then add an 'eval' and submit it to your competition :P
21:04:53 <ais523> not very easy, I don't think
21:05:04 <RodgerTheGreat> they seem to me an inherently flawed design. Merging, forking and the like can be resolved with policy, rather than software. They also almost universally force people to install the program just to check out the latest ticket, which is stupid for many reasons.
21:05:11 <ais523> because it simply literally converts equivalent commands
21:05:22 <ehird> RodgerTheGreat: Yes, let's do what the computer can do for us!
21:05:22 <RodgerTheGreat> that second reason is a bigger gripe for me, really.
21:05:33 <ais523> both languages are concatenative, and in such cases a one-to-one conversion is often possible
21:05:35 <ehird> And you can check out svn, darcs, ... just with a recursive wget.
21:06:03 <RodgerTheGreat> oh, a recusive wget, how incredibly convenient
21:06:22 <ehird> oh i'm sorry i forgot that typing one line is impossible
21:06:27 <ehird> let's just click instead :|
21:07:03 <RodgerTheGreat> there are many reasons I use a mac, and one of them is that I have no patience whatsoever for a shitty UI, be it console-based or graphical.
21:07:17 <ehird> ... wget is a shitty UI?
21:07:23 <RodgerTheGreat> the UI defines the usefulness of any program.
21:07:27 <ehird> i repeat
21:07:32 <ehird> wget is a shitty ui?
21:07:33 <RodgerTheGreat> and you're intentionally misinterpreting my argument
21:09:04 <ehird> i'm not
21:11:18 <ais523> so, is this bash quine a quine by cheating?
21:11:20 <ais523> ps ho%a -Cps
21:11:36 <ehird> ps: %a: keyword not found
21:11:37 <ehird> ps: no valid keywords
21:11:38 -!- sebbu2 has quit (Connection timed out).
21:11:50 <ais523> it looks to me like on some system, it works by ps'ing to find its own command line
21:12:59 <ais523> wow, someone's come up with a 76-byte Underload interpreter in C
21:13:04 <ais523> I wonder if it's for real or by cheating?
21:13:22 <ehird> cheating
21:13:31 <ais523> has to be, really, doesn't it
21:13:45 <ais523> maybe it looks at the input and comes up with one of the three possible outputs depending on what the input was
21:13:50 <Slereah> But, is it good cheating or bad cheating?
21:14:07 <ehird> ps -Aocommand|grep "ps -"
21:14:10 <ehird> ^ working ps quine
21:14:14 <ehird> err wait
21:14:14 <ehird> no
21:14:23 <ehird> hm.
21:14:26 <ehird> eh.
21:14:29 <ehird> ais523: and yeah of course
21:14:38 <ehird> can't you check?
21:14:40 <ehird> as the creator
21:14:46 <ais523> not until the deadline
21:14:49 <ais523> which I set in 4 weeks time
21:14:56 <ehird> ais523: bah, 4 weeks?
21:15:04 <ais523> may as well leave it up there a while
21:15:05 <ehird> 51b(embed)
21:15:06 <ehird> 'embed'..
21:15:09 <ehird> hm.
21:15:10 <ehird> also:
21:15:15 <ehird> 51b is a big user of that site
21:15:15 <ais523> so that's a clue that it's a cheat
21:15:17 <ehird> so.. it's possible
21:15:29 <ehird> that it's real
21:15:31 <ehird> but what's (embed)
21:15:41 <ais523> my guess is that the answers are embedded in the source
21:15:51 <ehird> ah
21:15:58 <ehird> then 51b pointed it out
21:15:59 <ehird> so its ok
21:18:43 <ais523> I did it probably the same way in 37 by cheating
21:19:49 <ais523> just switch between the 3 possible answers based on whether certain characters are in the source
21:20:09 <ehird> ais523: does an underload interp reeaallly need an infinite stack
21:20:14 <ehird> or is, say, 65536 enough
21:20:41 <ais523> according to the spec, it needs an infinite stack, but it also has to be capable of infinitely long strings, etc., regardless of your computer's memory
21:20:47 <ais523> in real life you can put limits on it
21:21:22 <ehird> yeah i am going to for speed
21:21:27 <ehird> ais523: what about the length of the strings?
21:21:32 <ehird> 1024 enough?
21:21:37 <ehird> i.e. (..morethan1024chars..)=err
21:21:42 <ais523> not nearly, because numbers are generally stored in unary
21:21:46 <ehird> ok
21:21:47 <ais523> taking up two characters per value
21:21:47 <ehird> what then
21:22:07 <ais523> 65540 is probably enough
21:22:18 <ais523> that lets you store numbers up to 32767 with a bit of leeway for doing arithmetic
21:22:50 <ais523> why do you want a string length limit anyway?
21:22:55 <ais523> Are you trying to avoid malloc?
21:23:09 <ehird> ais523: no -- trying to avoid realloc()
21:23:17 <ehird> cause you have to store the length, check, etc
21:23:34 <ehird> golf here..
21:23:45 <ehird> actually, wait
21:23:52 <ais523> in that case, make the limits just long enough to run the example programs
21:24:11 <ehird> i wish you could get the length of stdin in c
21:24:11 <ehird> XD
21:24:31 <ais523> putting a limit on the /length/ of an input program is probably acceptable
21:24:40 <ehird> i'm just doing it in ruby
21:24:42 <ehird> far easier to golf
21:24:50 -!- Corun has joined.
21:25:14 <ais523> yup
21:26:35 <ehird> ais523: i'm only handling one line programs
21:26:35 <ehird> :P
21:26:50 <ais523> it isn't as if newlines are legal outside strings anyway
21:31:39 <ehird> huh. the compiler allows that.
21:31:45 <ehird> in fact it allows all junk
21:31:53 <ehird> for strings, ofc.
21:32:11 <ais523> it uses the INTERCAL rule; junk only causes an error if it's executed
21:32:22 <ais523> so just compile an error function as the code and use the correct string
21:32:58 <ehird> nope:
21:33:00 <ehird> (abc)^
21:33:04 <ehird> well
21:33:06 <ehird> the a will fail
21:33:07 <ehird> (foo)^
21:33:09 <ehird> that works.
21:33:41 <ais523> you just need to map all unrecognized characters to call error() just like ~ is mapped to swap(), etc.
21:34:08 <ehird> no
21:34:13 <ehird> thats sloow
21:34:15 <ehird> no
21:34:16 <ehird> i mean
21:34:17 <ehird> thats big
21:35:30 <ais523> not slow, but inefficient
21:35:45 <ais523> hmm... maybe you could not generate any code in a block after the first error()
21:35:54 <ais523> after all, nothing past that point can be run anyway
21:38:08 <ehird> ais523: damn mine is 325
21:38:10 <ehird> vs your 303
21:38:17 <ehird> ul.rb:1:in `+':
21:38:18 <ehird> line 1.
21:38:19 <ais523> what sort of method did you do?
21:38:20 <ehird> very helpful ruby.
21:38:33 <ehird> s=(gets.split"").map{|x|x[0]}.reverse;
21:38:37 <ehird> ais523: ^^ probably what takes the space
21:39:00 <ais523> mine's all regexp
21:39:39 <ais523> it doesn't evaluate in the right order - it's a strange mix of lazy and eager - but that doesn't matter for the example problems because it only affects the S command
21:40:51 <ehird> % echo "(:aSS):aSS" | ruby ul.rb && echo
21:40:52 <ehird> (:aSS):aSS
21:41:00 <ehird> 343
21:41:17 <ehird> % echo "(x)(::**)(::**)^^S" | ruby ul.rb && echo
21:41:17 <ehird> ul.rb:1:in `[]=': index -2 out of array (IndexError)
21:41:18 <ehird> damn.
21:41:54 <ehird> % echo "(x)(::**)(::**)^^S" | ruby ul.rb && echo
21:41:54 <ehird> x::**::**x::**::**x::**::**x::*............
21:42:04 <ehird> ais523:
21:42:04 <ehird> a=[];s=(gets.split"").map{|x|x[0]}.reverse;while s!=[];c=s.pop;case c;when ?(;i=1;a<<[];while i>0;x=s.pop;if x==?(;i+=1;elsif x==?);i-=1;else a[-1]<<x;end;end;when ?:;a<<a[-1];when ?!;a.pop;when ?^;s+=a[-1];when ?~;x=a[-1];a[-1]=a[-2];a[-2]=x;when ?*;x=a.pop;a[-1]+=x;when ?S;print a.pop.map{|x|x.chr}.join("");when ?a;a[-1]=[?(]+a[-1]+[?)]end;end
21:42:09 <ehird> debug my code for me! :-)
21:42:42 <ais523> the error doesn't spring out at me
21:43:11 <ehird> ais523: im gonna write one in sed..
21:43:13 <ais523> does ^ remove an entry from the stack?
21:43:20 <ehird> ais523: no
21:43:21 <ehird> thank you
21:43:22 <ehird> i will fix
21:43:40 <ais523> I might be able to get a sed version by translating from the Thutu, but I wouldn't really want to try
21:43:54 <ehird> ul.rb:1: undefined method `+' for nil:NilClass (NoMethodError)
21:44:00 <ehird> ais523: Anyway
21:44:06 <ehird> ais523: Give me a good code/stack seperator
21:44:12 <ais523> <
21:44:16 <ehird> wait, that's easy
21:44:18 <ais523> because it's banned in the original language
21:44:20 <ehird> any single char not an underload command
21:44:21 <ehird> :-)
21:44:28 <ehird> then seperate with.. what?
21:44:29 <ehird> <> i guess
21:44:32 <ehird> that's what your js does
21:44:45 <ais523> yup, I was preparing to retrofit the " syntax in later
21:44:50 <ais523> but it never really caught on
21:45:05 <ais523> so it remains part of the spec but never implemented, and it's probably better to keep it that way
21:45:19 <ais523> besides, an escape character is useless if it can't even escape parens
21:45:31 <ais523> it only escapes <>[]", which are only banned because I say so
21:45:59 <ehird> My basic stuff is going to be: s/INSTRUCTION([^<]*)(([^<]<)*)TOP ELEMENT/RESULT/g
21:46:04 <ehird> is... that right?
21:46:13 <ehird> hm
21:46:16 <ehird> paren matching will be too hard
21:46:17 <ehird> fsck that
21:46:18 <ehird> :P
21:48:11 <ais523> the Thutu method is to change inner parens to {} temporarily
21:48:25 <ais523> but that makes up a good part of the program
21:49:22 <ehird> i submitted a cheat one.
21:49:23 <ehird> s/.*^^S/xxxxxxxxxxxxxxxxxxxxxxxxxxx/
21:49:23 <ehird> s/.*^S$/::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::/
21:49:34 <ehird> but forgot to say cheat
21:49:34 <ehird> shit
21:49:56 <ehird> ais523: Write an UL interp in your regexp lang
21:54:22 <ais523> (```s$+$+$+!=``=1=3`=2=3|``k$+$+!==2|`i$+!==1|`$+$+|[ski])=^*?('ski'|`'sk'$+|``s$+$+)$
21:54:28 <ais523> does it for ski unlambda
21:54:29 <ais523> I think
21:54:40 <ais523> but it'll go into an infinite loop on an invalid program
21:55:08 <ais523> oh, as for forgetting to say cheat, resumbit it as ehird(otherthesamelengthisacheatandsoisthisone)
21:57:17 <ehird> http://golf.shinh.org/p.rb?Minimal+scheme+interpreter
21:57:21 <ehird> possibly the hardest one yet :P
21:57:46 <ehird> barely golfable actually
21:58:34 <ehird> ais523: if you even get a submission that works with that in less than an awful lot of code i'll be impressed :P
21:59:23 <ais523> pretty cheatable, of course
21:59:30 <ehird> yeah
21:59:39 <ehird> and i missed out things like (quote X)
21:59:40 <ehird> but eh.
21:59:43 <ais523> does Scheme have an eval?
21:59:48 <ehird> yes.
21:59:49 <ehird> yes it does.
21:59:58 <ehird> you don't need to provide it though
22:00:04 <ais523> no, but you could use it
22:00:12 <ehird> actually yes
22:00:14 <ehird> you're right
22:01:23 <ehird> (let l()(let((_(read)))(if(not(eof-object? _))(eval _))(l)))
22:01:52 <ehird> damn
22:01:56 <ehird> have to specify an environment
22:02:26 <ehird> DAMNIT
22:02:31 <ehird> i have unbalanced parens in my test
22:02:33 <ehird> woe is me
22:03:08 <ehird> lfjklsdhfsdjklfhs WHY CAN'T YOU EDIT IT
22:04:12 <ais523> submit a 'fixed version' of the problem, and mention in the description that the other has typos in the test cases
22:04:51 <ehird> ais523: i'm just submitting a lambda calculus one
22:04:54 <ehird> with unlambda-lambda-syntax
22:04:59 <ehird> but with multichar identifiers
22:05:03 <ehird> ^x x
22:05:03 <ais523> abstraction elimination?
22:05:06 <ais523> or interpretation?
22:05:08 <ehird> ^x $x x
22:05:14 <ehird> interpretation
22:05:19 <ehird> acxtually
22:05:20 <ehird> $ -> `
22:05:23 <ehird> ^x `x x
22:05:25 <ehird> that looks good
22:05:38 <ehird> `^x x ^ x x
22:05:39 <ehird> etc
22:05:52 <ais523> what is apply?
22:06:05 <ehird> ais523: (a b) in lambda calculus
22:06:10 <ehird> wait
22:06:17 <ehird> ais523: should i specify regular lambda calculus syntax? :)
22:06:17 <ais523> so you use parens for disambiguation?
22:06:22 <ehird> er no
22:06:32 <ehird> `x y
22:06:33 <ais523> make it Unlambda syntax, just with lambdas
22:06:33 <ehird> BUT
22:06:36 <ehird> IT IS
22:06:39 <ehird> :|
22:06:43 <ehird> but anyway
22:06:47 <ehird> i think i should make it real lambda calculus
22:06:48 <ehird> \x. x
22:06:59 <ehird> \x y z. x z(y z)
22:07:00 <ehird> etc
22:07:02 <ehird> :D
22:07:05 <ehird> hah
22:07:07 <ehird> possibly too hard
22:08:24 <fax> Why does no one use ??
22:08:31 <ais523> in what context?
22:08:40 <ais523> I use ?? in Perl a lot
22:08:50 <fax> eek
22:09:16 <fax> I meant lambda character
22:10:08 * ehird makes golfscript-inspired language
22:10:21 <ehird> everything is a stack: even the program
22:10:22 <ehird> :D
22:11:15 <ehird> { a b c } -> stack with top=a, prev=(top=b, prev=(top=c, prev=()))
22:11:19 <ehird> and you can call it
22:11:25 <Slereah> Around stacks, never relax.
22:11:33 * Slereah <3 tapes
22:11:35 <ehird> the whole program is implicitly in {...}!
22:12:58 <ehird> and the main stack is accessed as $
22:13:03 <ehird> {1}{1+}$~!
22:13:09 <ehird> we start with:
22:13:32 <ehird> STACK={ }, PROG={ { 1 } { 1 + } $ ~ ! }
22:13:39 <ehird> STACK={ { 1 } }, PROG={ { 1 + } $ ~ ! }
22:13:45 <ehird> STACK={ { 1 } { 1 + } }, PROG={ $ ~ ! }
22:13:56 <ehird> STACK={ { 1 } { 1 + } <STACKPTR> }, PROG={ ~ ! }
22:14:10 <ehird> STACK={ { 1 1 + } }, PROG={ ! }
22:14:19 <ehird> >>zoop callstack
22:14:31 <ehird> >>STACK={ }, PROG={ 1 1 + }
22:14:39 <ehird> >>STACK={ 1 }, PROG={ 1 + }
22:14:43 <ehird> >>STACK={ 1 1 }, PROG={ + }
22:14:47 <ehird> >>STACK={ 2 }, PROG={ }
22:14:49 <ehird> >>zeep
22:14:56 <ehird> STACK={ 2 }, PROG={ }
22:15:09 <ais523> my stack trick for the genuine Perl Underload interpreter was to just leave (...) constructs at the left-hand end of the program as a stack, and to execute the first real command after them
22:15:18 <ais523> saves having to implement (...) at all
22:16:26 <ehird> challenge
22:16:30 <ehird> someone step through:
22:16:32 <ehird> {0={1}{:1-#!*}?}4!
22:17:26 <ais523> not very easy when we don't know the syntax
22:17:33 <ehird> 'xactly
22:17:41 <ehird> you got a kind of feel for it up there
22:17:41 <ehird> so.
22:18:59 <ais523> maybe 2008 will be the year of concatenative languages?
22:19:24 <ais523> I've spent a while thinking about one which also has arrays, pointers and GOTO
22:19:33 <ais523> so as to be able to use as many paradigms as possible
22:23:15 -!- ais523 has quit ("wow, it's late").
22:24:21 <ehird> so, what languages should i allow in my golf?
22:27:21 -!- RedDak has quit (Remote closed the connection).
22:29:11 -!- oerjan has quit ("Good night").
23:04:11 -!- cherez has quit (Read error: 110 (Connection timed out)).
23:09:42 -!- helios24 has quit ("Leaving").
23:14:13 -!- jix has quit (Read error: 113 (No route to host)).
23:16:36 -!- jix has joined.
23:22:48 <ehird> hello jix
23:23:30 -!- immibis has joined.
23:45:42 -!- cherez has joined.
23:48:58 <ehird> who's alive?
23:49:00 <ehird> !help
23:49:03 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
23:49:05 <EgoBot> 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl
23:52:59 <immibis> ehird: obviously everyone in the channel is alive (or most people anyway)
23:53:06 <ehird> it was meant figuratively
23:53:08 <immibis> well it depends. what is life?
23:56:08 -!- Corun has quit (Read error: 110 (Connection timed out)).
23:56:54 -!- timotiis has quit ("leaving").
23:57:06 -!- timotiis has joined.
2008-01-19
00:05:51 <ehird> immibis: freedom from this 'debate'..
00:05:54 <ehird> ;)
00:07:46 <Slereah> What is love?
00:12:56 -!- puzzlet has quit (Remote closed the connection).
00:12:57 -!- puzzlet_ has joined.
00:20:06 -!- timotiis has quit ("leaving").
00:25:29 <RodgerTheGreat> Slereah: I'm reminded of something a chatterbot of mine asked once- "Is love the meaning of life?" It was just random parroting and synthesis, but it really struck me as insightful.
00:26:08 <Slereah> Well, insightful for a piece of code anyway.
00:26:59 <RodgerTheGreat> it reinforces a theory of mine that art is in the mind of the beholder- the meaning of every work is what we make of it, wether that was the artist's intention or not
00:33:46 -!- puzzlet has joined.
00:39:56 <ehird> a 32 line s-expression parser
00:39:57 <ehird> not bad
00:40:00 <ehird> ofc i did use rparsec
00:40:01 <ehird> but hey
00:43:30 <ehird> it even supports (a b c . d)
00:44:05 -!- puzzlet_ has quit (Read error: 110 (Connection timed out)).
00:51:25 -!- cherez has quit ("Leaving.").
01:11:30 -!- jix has quit ("This computer has gone to sleep").
01:13:36 -!- cherez has joined.
01:13:41 -!- cherez has quit (Client Quit).
01:13:45 -!- cherez has joined.
01:13:47 -!- cherez has quit (Remote closed the connection).
01:13:51 -!- cherez has joined.
01:13:51 -!- cherez has quit (Remote closed the connection).
01:14:05 -!- cherez has joined.
01:14:05 -!- cherez has quit (Remote closed the connection).
01:14:15 -!- cherez has joined.
01:14:15 -!- cherez has quit (Remote closed the connection).
01:14:32 -!- cherez has joined.
01:14:33 -!- cherez has quit (Remote closed the connection).
01:15:07 -!- cherez has joined.
01:44:22 -!- puzzlet has quit (Remote closed the connection).
01:44:24 -!- puzzlet_ has joined.
01:53:57 -!- GreaseMonkey has joined.
02:15:43 -!- Corun has joined.
02:19:21 -!- jolly_qwert has joined.
02:30:26 -!- ehird has quit.
02:33:07 -!- Corun has quit (Read error: 110 (Connection timed out)).
03:10:55 -!- jolly_qwert has quit.
03:27:22 <RodgerTheGreat> what's up, guys?
03:30:18 * fax is wondering..
03:31:11 <fax> If you had a set of combinators like, {S, K} or {B, I, Q}.. or anything
03:32:26 <fax> if it can be decided whether they cauld be composed to make a given type (like a -> b -> a or anything)
03:34:55 <fax> It's possible to enumerate all combinations and test them... but that might never terminate
03:40:23 -!- puzzlet_ has quit (Remote closed the connection).
03:40:24 -!- puzzlet has joined.
04:38:23 -!- immibis 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. Why is the alphabet in that order? I").
05:14:51 -!- fax has quit ("-").
06:02:32 -!- uvanta has joined.
06:03:09 <uvanta> long time no see!
06:14:04 <uvanta> i'm gs30ng
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
09:01:56 -!- GreaseMonkey has quit ("Damn you, TSS! YOU'VE FOILED MY PLANS!!!!!!!!!!!!!!").
09:58:38 -!- helios24 has joined.
10:06:05 -!- helios24 has quit ("Leaving").
10:17:48 -!- sebbu2 has joined.
10:25:07 -!- Corun has joined.
10:32:27 -!- sebbu has quit (Read error: 110 (Connection timed out)).
10:52:08 -!- timotiis has joined.
11:00:21 -!- Corun has quit ("This computer has gone to sleep").
11:05:47 -!- jix has joined.
11:22:18 -!- RedDak has joined.
11:27:08 -!- jix has quit ("CommandQ").
11:27:36 -!- jix has joined.
11:48:57 -!- oklopol has joined.
12:48:36 -!- puzzlet has quit (Remote closed the connection).
12:48:36 -!- puzzlet_ has joined.
14:06:43 -!- helios24 has joined.
14:09:10 -!- RedDak has quit (Remote closed the connection).
14:59:26 -!- puzzlet has joined.
14:59:30 -!- puzzlet_ has quit (Remote closed the connection).
15:34:37 -!- puzzlet_ has joined.
15:34:39 -!- puzzlet has quit (Remote closed the connection).
15:46:01 -!- Leath has joined.
15:46:10 <Leath> hmm
15:46:20 <Slereah> Hi.
15:46:30 <Leath> good day
15:46:37 <RodgerTheGreat> indeed
15:46:38 <Leath> let's see if it works
15:46:56 <Leath> please, some one write the first 5 numbers of the Fibonacci Sequence
15:46:57 <Asztal> is this going to be IRP?
15:47:05 <Leath> aww it doesn't :(
15:47:06 <Slereah> Seems like it!
15:47:12 <Slereah> #irp <-
15:47:20 <Leath> oops
15:47:38 <Asztal> has anyone considered updating the wiki?
15:47:55 <Asztal> it still says #esoteric for IRP :)
15:47:57 <Slereah> On the matter of IRP?
15:48:38 <RodgerTheGreat> If ONE more person joins this channel for the exclusive person of IRPing, I can't be held responsible for what I'm going to do to them.
15:48:40 <Leath> sigh, where's the interpreter
15:49:11 -!- jix has quit (Nick collision from services.).
15:49:21 -!- jix has joined.
15:50:37 <Leath> please say "hai"
15:50:46 <Leath> ok it doesn't work, time to keep stumbling
15:50:53 <RodgerTheGreat> IRP ERROR: please go fuck yourself
15:51:02 <Leath> no I'll go do shopping instead
15:51:05 <Leath> have fun mate, cya
15:51:10 -!- Leath has quit.
15:51:11 <Slereah> IRP soon looses its interest.
15:51:22 <Asztal> I did answer the fibonacci thing though :(
15:51:24 <Slereah> Especially since most people just ask some hellov world or Fibonacci.
15:51:34 <RodgerTheGreat> yeah, I think I'm becoming increasingly irritated by it
15:51:46 <Asztal> http://esolangs.org/wiki/IRP
15:51:59 <Asztal> This page has been accessed 14,850 times.
15:52:46 <Asztal> I wonder if "IRP ERROR: please go fuck yourself" causes the user to vote thumbs down, thus decreasing the number of IRPers
15:52:47 <RodgerTheGreat> yeah.
15:52:53 <Slereah> The 6th most viewed page.
15:53:13 <Asztal> But with less IRPers, IRP interpreters won't be so annoyed. It becomes a cycle!
15:53:40 <Slereah> An IRP interpreter always halt.
15:53:46 <Slereah> On "Go fuck yourself"
15:53:54 <Slereah> That's why it can't be TC.
15:55:00 <RodgerTheGreat> a fascinating observation
15:55:29 <RodgerTheGreat> I still like the "please print out the lyrics to 99b" "go to gell"
15:55:32 <RodgerTheGreat> *hell
16:18:36 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
16:23:39 -!- Slereah has joined.
16:26:26 <oklopol> i wonder if asking to "go to hell" was just part of the solution
16:26:57 <oklopol> can irp nodes do but tail recursion?
16:42:14 <Slereah> You will find 99's lyrics in hell.
16:42:22 <Slereah> For beer is the devil's mouthwash
16:50:22 <RodgerTheGreat> sounds about right
17:21:47 -!- volimo has joined.
17:28:28 -!- volimo has left (?).
17:28:36 -!- helios24 has quit ("Leaving").
17:39:05 -!- helios24 has joined.
18:05:05 -!- cherez has quit ("Leaving.").
18:54:07 -!- oerjan has joined.
19:53:22 -!- Asztal has quit (Read error: 104 (Connection reset by peer)).
20:01:49 -!- calamari has joined.
20:17:09 <oklopol> RodgerTheGreat: you like comics right? i made some awesome stuff http://www.vjn.fi/index.php?c=18 (don't worry, i know it's not awesome ;))
20:17:33 * RodgerTheGreat looks
20:18:55 <RodgerTheGreat> that's... interesting...
20:19:17 <oklopol> press previous for the true comics
20:19:39 <oklopol> or, don't.
20:19:49 <Slereah> Genius:!
20:20:17 <oklopol> i actually think the idea could've been kinda funny if made right.
20:20:29 <oklopol> but making it right would not really be my style
20:25:21 -!- oudeis_ has joined.
20:39:55 -!- calamari has quit ("Leaving").
20:46:50 -!- RedDak has joined.
21:01:31 -!- sbp has joined.
21:01:48 <sbp> let hi equal, in a kind of macro way, print
21:01:57 <sbp> let there equal, in a kind of macro way, "Hello, world!"
21:01:58 <sbp> hi there
21:02:36 <Slereah> Hai
21:02:53 <sbp> you guys need hella debugging
21:02:56 -!- sbp has left (?).
21:03:04 <RodgerTheGreat> Hello, world^!&!HAAJD61*1199asAH
21:03:06 <Slereah> Damn you!
21:03:13 <RodgerTheGreat> fucker didn't null nerminate
21:04:35 <Slereah> Does Python have a decimal to binary converter?
21:05:07 <RodgerTheGreat> not that I am aware of
21:05:13 <GregorR> What IS the price of tea in China? 8-O
21:05:15 <RodgerTheGreat> but there is probably a way
21:05:30 <Slereah> Yes. But my question was related to doing it easily
21:05:37 <Slereah> Otherwise, I might as well do it by hand
21:06:03 <Slereah> I'm trying to make sum Hello world on a Post machine
21:06:04 <RodgerTheGreat> GregorR: an amount less than the price of 100 ruples.
21:07:23 <oerjan> http://supertart.com/priceofteainchina/index.php
21:07:31 <oerjan> ruples?
21:08:56 <RodgerTheGreat> I like "Internet: vaguely to scale"
21:08:59 -!- cherez has joined.
21:09:47 <RodgerTheGreat> ruples are in no way related to rubles.
21:10:34 <oerjan> what about rupies?
21:11:30 <oerjan> um, rupees
21:11:42 <RodgerTheGreat> they're a little closer
21:12:25 <oerjan> rubies?
21:14:17 <RodgerTheGreat> nah
21:14:47 <RodgerTheGreat> they're kinda like scruples in some ways, if that helps.
21:15:11 <RodgerTheGreat> less metaphysical, though
21:15:26 <oerjan> so they're not unrupulous?
21:20:07 <RodgerTheGreat> nope, very much rupulous.
21:20:14 <RodgerTheGreat> by definition
21:20:42 -!- graue has joined.
21:31:07 <uvanta> what's going on in esolang world?
21:32:54 <uvanta> i don't see anything remarkable in Recentchanges of wiki.. anybody working on new language oslt?
21:35:31 <Slereah> Oslt?
21:38:17 <uvanta> "or something like that"
21:39:03 <Slereah> Well, I'm making some Post-Turing machine right now.
21:39:24 <Slereah> And I guess I could post Lazy Bird.
21:39:27 <oerjan> iflas ftw
21:39:49 <Slereah> Is it national abbreviation day?
21:40:03 <oerjan> y
21:40:07 <graue> afaik y, nad ftw
21:40:54 -!- GreaseMonkey has joined.
21:40:59 <graue> what's iflas? "i feel like a sandwich"?
21:42:17 <uvanta> Slereah: that reminds me of gravity
21:42:24 <Slereah> I can't enjoy mah sandwiche :(
21:42:28 <Slereah> What does?
21:43:00 <uvanta> if i remeber correctly, it's a language designed to be 'super-turing complete'
21:43:01 <GregorR> Don't just /feel/ like a sandwich.
21:43:03 <GregorR> BE the sandwich.
21:43:16 <Slereah> I know
21:43:33 <Slereah> The Post is for Emil Post.
21:43:50 <uvanta> who's that?
21:44:10 <Slereah> Some guy who made a Turing machine before the Turing machine :o
21:44:20 <Slereah> Although it's significantly shorter
21:44:24 <Slereah> Like a binary TM
21:44:58 <oerjan> graue: indecipherable four-letter acronym
21:45:35 <uvanta> ..
21:45:42 * Slereah is making some lazy-ass decimal to binary converter
21:45:55 <Slereah> It's so lazy that I should be ashamed of it
21:47:19 <Slereah> It's 40 damn lines long :o
21:57:51 <GregorR> POLL: Should software use the term "disk" or "disc" for CD/DVD's? e.g. "/dev/sr0: closing disc"
21:58:20 <oerjan> use the locale? :D
21:58:57 <GregorR> ... that's not a locale issue.
21:59:10 <oerjan> oh
21:59:23 <GregorR> Disk means "storage device", disc means "round thing"
21:59:33 <GregorR> It just so happens that most disks are discs :P
22:00:23 <oerjan> maybe it's a time zone issue. before dusk, they're disks, unless on a desk
22:00:50 <GregorR> lol
22:01:22 <Slereah> dïŝç
22:07:22 <uvanta> after Udage, i felt like there can't be a truly new esolang idea, so i lost my interest, and quit, that was about 1 year ago
22:08:34 <uvanta> a week ago, i was in times of trouble, i saw the God of Esoteric Programming Language comes to me
22:08:54 <uvanta> speaking words of brand new esolang idea
22:09:42 -!- slereah_ has joined.
22:09:43 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
22:09:59 <slereah_> So what's the brand new idea?
22:10:01 <uvanta> i wrote down the spec, and now i'm working on its implementation
22:10:22 <slereah_> Damn, I missed all the fun
22:14:20 <slereah_> http://membres.lycos.fr/bewulf/Russell/Hello%20world!2.txt
22:14:26 <slereah_> Here's the Post machine
22:14:28 <slereah_> (9000)
22:19:32 <uvanta> that's.. a... model suggested by Emil Post?
22:19:46 <slereah_> Yes indeed.
22:20:09 <slereah_> Print zero, print one, stop, a conditional state, left and right.
22:21:29 <slereah_> (It was actually empty-print a mark, but well)
22:27:24 <uvanta> there wasn't any attempt to make a Post machine in esolang society, was there?
22:27:55 <slereah_> None that I could find.
22:28:23 <slereah_> Although it has a similar feel to boolfuck.
22:28:31 <uvanta> I saw a lot of TM-like models, Church(lambda) models, but i haven't even heard about Post
22:29:31 <slereah_> http://en.wikipedia.org/wiki/Post-Turing_machine#1936:_Post_model
22:44:26 -!- slereah_ has changed nick to Slereah.
22:47:28 -!- immibis has joined.
22:50:26 -!- ^_` has joined.
22:50:36 -!- GreaseMonkey has quit (Nick collision from services.).
22:50:52 -!- ^_` has changed nick to GreaseMonkey.
22:52:56 * immibis thinks ^_` is an unusual alternate nick for GreaseMonkey
22:57:25 <Slereah> Wonder if I could make a translator between the Love Machine 9000 and the Post Machine.
22:57:27 <Slereah> 9000.
23:14:46 <GreaseMonkey> 9000.
23:14:47 <GreaseMonkey> afk
23:15:34 <Slereah> The next version will be OVER 9000
23:17:23 -!- RedDak has quit (Read error: 104 (Connection reset by peer)).
23:32:28 -!- oerjan has quit ("Good night").
23:44:41 -!- ciscbrain has joined.
23:47:51 -!- calamari has joined.
23:47:58 <GregorR> Argh
23:48:02 <GregorR> I can't install OpenSolaris.
23:48:08 <GregorR> Mostly because I only have 512MB of memory ...
23:57:13 -!- timotiis has quit ("leaving").
2008-01-20
00:06:40 <immibis> you have more memory than i probably will for a long time.
00:16:17 -!- ciscbrain has quit ("Ex-Chat").
00:22:00 -!- helios24 has quit ("Leaving").
00:25:54 -!- Asztal has joined.
00:28:34 -!- Corun has joined.
00:37:00 -!- jix has quit ("CommandQ").
00:42:10 -!- Corun has quit ("This computer has gone to sleep").
01:08:20 <GregorR> immibis: I have no issues, it's OpenSolaris that has the problems :P
02:57:49 -!- CakeProphet has joined.
02:57:59 <CakeProphet> :o
03:00:20 <uvanta> o:
03:01:48 <CakeProphet> allo, m'loves
03:15:17 -!- Omni has joined.
03:15:23 <Omni> are there any gals in here?
03:23:09 -!- Omni has left (?).
03:57:21 -!- oudeis_ has left (?).
04:04:18 <uvanta> ..what the hell
04:07:09 <CakeProphet> ...
04:07:26 <CakeProphet> unfortunately
04:07:28 <CakeProphet> Omni
04:07:42 <CakeProphet> missed the "lol grrl orgy time"
04:07:50 <CakeProphet> that happens every 30 minutes
04:07:54 <CakeProphet> poor timing on his part
04:09:23 <oklopol> YO
04:09:44 <oklopol> well, are there?
04:09:54 <oklopol> grrrls, i mean
04:10:36 <oklopol> i feel a bit unreal right now
04:17:09 <CakeProphet> ...unreal?
04:17:13 <CakeProphet> that's never good
04:23:08 <GregorR> Quote random guy at Fred Meyer as I try to buy RAM: "Wow, that's an old system."
04:23:10 <GregorR> *stab*
04:57:43 -!- uvanta has quit (Read error: 104 (Connection reset by peer)).
05:43:52 -!- immibis 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. IceChat - Keeping PC's cool since 20").
06:14:40 -!- pikhq has quit (Read error: 104 (Connection reset by peer)).
06:16:35 -!- pikhq has joined.
06:51:14 -!- calamari has quit ("Leaving").
06:58:17 -!- puzzlet_ has quit (Remote closed the connection).
06:58:17 -!- puzzlet has joined.
07:06:17 -!- puzzlet has quit (Remote closed the connection).
07:06:19 -!- puzzlet_ has joined.
07:12:19 -!- CakeProphet has quit ("haaaaaaaaaa").
07:16:24 -!- bsmntbombdood has quit (Read error: 110 (Connection timed out)).
07:16:56 -!- bsmntbombdood has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:56:12 -!- RedDak has joined.
08:57:56 -!- 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.").
09:13:13 -!- cherez has quit (calvino.freenode.net irc.freenode.net).
09:13:13 -!- EgoBot has quit (calvino.freenode.net irc.freenode.net).
09:13:31 -!- cherez has joined.
09:13:31 -!- EgoBot has joined.
11:08:06 -!- slereah_ has joined.
11:08:31 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
11:13:12 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
11:13:29 -!- slereah_ has joined.
11:16:30 -!- Figs has joined.
11:16:41 <Figs> Hello!
11:17:08 <Figs> anyone alive today? :)
11:17:25 <Asztal> hello
11:17:44 <tejeez> .
11:19:20 <Figs> howdy :)
11:19:29 <slereah_> I am.
11:19:41 <Figs> What's going on?
11:20:32 <slereah_> Not much, not much
11:21:20 <Figs> I'm substantially bored.
11:21:40 <Figs> I just wrote a hexadecimal addition trainer, I was so bored...
11:22:07 <Asztal> somebody kill me, I'm starting to write stuff you'd see in java! :(
11:22:17 <Asztal> factories of factories...
11:22:34 * Figs drops a factory on Asztal
11:33:41 -!- jix has joined.
11:36:40 <Figs> HELLO.
11:40:15 -!- jix has quit (Nick collision from services.).
11:40:16 -!- jix__ has joined.
11:41:20 <oklopol> Figs: you were correct, i completely forgot
11:52:39 <Figs> hello
11:52:50 <Figs> forgot to play my music still? :(
11:52:56 <Figs> *teardrop*
11:52:59 <Figs> jk ;)
11:56:56 <oklopol> always nice to be able to continue a two-month-old conversation without any warning though
11:57:08 <slereah_> Heh.
12:00:48 <Figs> :P
12:01:24 <Figs> actually, could you send me back the song I sent you?
12:01:35 <Figs> I don't think I have it after my computer died...
12:03:48 <oklopol> :o
12:03:59 <oklopol> well, as a matter of fact i'm in a similar situation
12:04:40 <Asztal> http://golf.shinh.org/p.rb?edlin < that's quite useful actually, since my OS doesn't have an edlin :)
12:04:58 <Figs> edlin?
12:05:59 <oklopol> anagram for "line d", which is a sex position
12:10:27 -!- RedDak has quit (Remote closed the connection).
12:26:24 -!- timotiis has joined.
12:27:44 -!- helios24 has joined.
12:59:36 -!- timotiis has quit (Read error: 104 (Connection reset by peer)).
13:07:33 <Figs> oh wow
13:07:49 <Figs> I didn't know you could have _negative_ bases for counting...
13:08:35 <Figs> (ie, you have binary = base 2, decimal= base 10, hexadecimal= base 16... etc. normally, right? Well, you can have also have base -10 :P)
13:08:49 <Figs> The first couple numbers go...
13:09:11 <Asztal> the columns are 0.001 0.01 0.1 1?
13:09:25 <Figs> 1,2,3,4,5,6,7,8,9,190,191,192,193,194,195,196,197,198,199,180...
13:09:33 <Figs> (for base -10)
13:09:34 <slereah_> Funnier are imaginary bases!
13:09:39 <slereah_> Like base 2i
13:09:44 <Figs> O_O
13:09:52 <Figs> transcendental bases? :P
13:09:55 <Figs> base pi? ^_^
13:10:07 <slereah_> Base pi is possible, though I wouldn't advise it
13:10:28 <Figs> Knuth did something with base pi...
13:11:33 <Asztal> so in base 2i... 101101 is 61-8i
13:11:42 <Figs> O_o :P
13:11:56 <slereah_> I'll have to trust you on that one.
13:12:04 <graue> what's 2 in base pi?
13:12:30 <Asztal> I used 64 -32i 16 -8i -4 2i 1 as the columns, but that leaves the problem of how to represent 2
13:12:39 <Asztal> maybe -i in the second column
13:15:12 <Asztal> oh, http://en.wikipedia.org/wiki/Quater-imaginary_base
13:16:11 <Asztal> (it uses digits 0 to 3)
13:16:43 <slereah_> And me trying to work some sort of converging serie out of -4+16-something+something
13:17:46 <Asztal> oh, 101101 should have been -67-8i, I think
13:18:46 <Figs> wouldn't 2 in base pi just be 2?
13:19:08 <Figs> The real question is what is 4? :P
13:20:00 <Asztal> 4 is 10300
13:20:11 <Figs> in base pi?
13:20:23 <Asztal> oh, sorry, was thinking in 2i :(
13:20:26 <Figs> :P
13:20:30 <Figs> ok
13:20:52 <Asztal> (4-pi)/(pi^2), 0
13:20:59 <Asztal> (4-pi)/(pi^2-pi), 0
13:21:04 <Asztal> maybe
13:21:31 <Asztal> no
13:21:38 <Asztal> I'm confused.
13:22:42 <Asztal> the golden ratio base has some interesting properties
13:26:58 <Figs> reddited! :D
13:27:03 <Figs> http://programming.reddit.com/info/66138/comments/
13:27:06 <Figs> whoop!
13:35:47 -!- Corun has joined.
13:36:03 -!- Corun has left (?).
13:51:08 -!- asiekierka has joined.
13:51:12 <asiekierka> Hello.
13:51:32 <asiekierka> Is there any ALPACA tutorial?
13:52:34 -!- timotiis has joined.
13:55:48 <Figs> Gah -- evil wikipedia... now I'm reading about ternary computing. Those bases really got me off track...
13:58:05 <Figs> @asiekierka: I have no idea. Looks interesting though.
13:58:15 <asiekierka> I found two pieces of stuff about it
13:58:35 <asiekierka> 1) A very, VERY techy information piece, describing the lang in a way too techy
13:58:49 <asiekierka> http://catseye.tc/projects/alpaca/doc/ebnf.txt
13:59:09 <asiekierka> 2) Something non-techy, has some interesting pieces of stuff
13:59:09 <asiekierka> http://scienceblogs.com/goodmath/2006/10/a_metalanguage_for_pathologica.php
14:01:31 <Figs> Oh heck, if you've got the grammar for it... :)
14:01:36 <Figs> hang on a sec
14:02:15 <asiekierka> I think somebody should make the first link a tutorial
14:02:21 <asiekierka> the second link has 3 example kinds
14:04:11 <asiekierka> The first example is Game of Life, the second is WireWorld, the third is Braktif, a BF cellular automation
14:04:31 -!- Figs has quit ("Java user signed off").
14:04:35 -!- Figs has joined.
14:04:43 <Figs> O_o
14:04:46 <Figs> am I still figs?
14:05:06 <Figs> I think I just killed myself :P
14:05:13 <Figs> (IRC-wise)
14:05:38 <asiekierka> yes, yes
14:07:31 <Figs> I think that link is wirth syntax notation
14:07:37 <Figs> err, uses...
14:08:07 <Figs> I'm not really used to it, but I found a nice wikipedia article ^_^
14:08:15 <Figs> http://en.wikipedia.org/wiki/Wirth_syntax_notation
14:09:17 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
14:09:27 -!- slereah_ has joined.
14:10:16 <Figs> Afaict, it looks like you just have a bunch of "entries" seperated by ; and ending with .
14:10:46 <Figs> where an "entry" is either a class or a state
14:11:29 <Figs> so, something like
14:12:19 <Figs> hmm
14:12:29 <Figs> I don't get what the deal with the "state designators" are
14:12:57 <Figs> oh wait, it's for CA, right?
14:13:05 <Figs> so, moving around on the board???
14:13:29 -!- helios24 has quit ("Leaving").
14:14:21 <Figs> hmm
14:16:03 <Figs> I think I get the basic syntax, but I don't really know what it means
14:17:32 <asiekierka> for ALPACA?
14:17:35 <asiekierka> i got the basics too
14:20:06 <Figs> what is "3 Alive and 7 dead"?
14:20:28 <Figs> I'm looking at this: http://catseye.tc/projects/alpaca/doc/alpaca.html
14:21:22 <Figs> or
14:21:37 <asiekierka> ... you mean 3 alive and 5 dead
14:21:37 <Figs> `scuse
14:21:38 <Figs> yeah
14:21:41 <Figs> I can't type :P
14:21:42 <asiekierka> A cell can have 8 neighbors
14:21:46 <asiekierka> in cellular automatas
14:22:09 <Figs> so what is 4 alive or 7 dead?
14:22:14 <asiekierka> so if a cell "*" is surrounded by 3 "*"s and 5 " "s, something happens
14:22:35 <asiekierka> 4 alive or 7 dead is when a cell "*" is surrounded by 4 "*"s or 7 " "s
14:22:37 <asiekierka> " " is dead
14:22:47 <asiekierka> "*" is alive
14:23:22 <Figs> ohhh
14:23:24 <Figs> I think I get it now
14:23:27 <asiekierka> state Dead " "
14:23:28 <asiekierka> to Alive when 3 Alive and 5 Dead;
14:23:28 <asiekierka> state Alive "*"
14:23:28 <asiekierka> to Dead when 4 Alive or 7 Dead.
14:23:46 <asiekierka> state Dead is a dead cell in Game of Life
14:23:50 <oklopol> asiekierka: that this describing the lang in a "way too techy" is just the syntax as a bnf
14:23:58 <asiekierka> bnf?
14:24:03 <Figs> oklopol -- that's not bnf
14:24:18 <Figs> I'm pretty sure it's wsn
14:24:19 <oklopol> no? wait, i'll look at it
14:24:48 <Figs> It uses {} for repetition and [] for optional
14:24:54 <Figs> which, IIRC wasn't in BNF
14:25:16 <Figs> I admit it's been a while though
14:25:53 <Figs> oh
14:25:55 <Figs> it's EBNF
14:25:57 <Figs> bah
14:26:10 <oklopol> Figs: i usually say bnf for cfg
14:26:28 <Figs> gotcha
14:26:31 <oklopol> but true, it's not bnf
14:26:52 <Figs> well, close enough for rocket science I guess :P
14:27:21 <asiekierka> isn't EBNF extended BNF?
14:27:32 <Figs> that's what it stands for, but it's read differently
14:27:37 <Figs> kinda
14:28:12 <Figs> at least, it's different for me :)
14:28:31 -!- slereah__ has joined.
14:28:49 <Figs> I don't usually see {} for repetition and [] for optional, so it threw me...
14:29:30 <Figs> looking at wikipedia for EBNF shows that basically it's WSN (ie, wirth did his thing and it looks like they just changed the name to confuse me)
14:31:03 <asiekierka> Figs, do you want to do anything in ALPACA?
14:31:22 -!- puzzlet_ has quit (Remote closed the connection).
14:31:29 <Figs> I've never done anything in ALPACA
14:31:39 <Figs> it just kinda looked interesting when you brought it up :)
14:31:43 <asiekierka> but will you do ever?
14:31:48 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
14:31:52 <asiekierka> I'm working on a datastream automation
14:32:05 -!- slereah__ has joined.
14:32:06 -!- puzzlet has joined.
14:32:36 <Figs> I don't really know much about CA
14:32:43 <Figs> so probably not
14:32:54 <Figs> I'm actually going to go to bed soon
14:32:57 <Figs> sun's comming up
14:33:19 <Figs> I might try it some day if I get bored :)
14:33:42 * Figs prods oklopol
14:34:31 <oklopol> asdf
14:35:05 <oklopol> i'm currently trying to turn my sleep cycle back to normal
14:35:05 <asiekierka> ghjk
14:35:16 <Asztal> hah! it never works!
14:35:16 <oklopol> slept 0 hours the other night, 3 hours tonight
14:35:30 <oklopol> my usual amount is near 10
14:35:38 <oklopol> feel a bit... throw-uppy
14:35:39 <Asztal> actually, I managed it recently... by sleeping for 21 hours
14:35:42 <Asztal> :D
14:35:47 <oklopol> heh :D
14:35:53 <oklopol> that's a much better way than mine
14:36:42 <oklopol> anyone happen to know what protocol vlc uses for network streaming
14:37:12 <Asztal> RTSP, perhaps
14:38:18 <Figs> @asiekiera: Datastream automation?
14:38:36 <oklopol> Asztal: i'll look at htat
14:38:38 <oklopol> that
14:45:41 <asiekierka> a CA happening on a datastream
14:45:50 <asiekierka> something like an extended Wireworld
14:45:56 <asiekierka> or wait, i'll get right to it
14:46:13 <asiekierka> or nope
14:47:20 -!- RedDak has joined.
14:47:46 <Figs> I should really learn pygame...
14:48:29 <Figs> get some good graphics programming... and rewrite my old logic gate thing
14:52:59 <Figs> I wrote this weird little logic gate system that'd randomly configure a board of logic functions (like and, not, or ... etc) and jumbled the connections
14:53:25 <Figs> it was really amazing how quickly cycles came up
14:54:52 <Figs> I wonder if you could actually represent that using more traditional logic methods? hmm
14:55:01 <oklopol> loops?
14:55:06 <Figs> it has loops
14:55:18 <oklopol> "that" == "loops"?
14:55:37 <Figs> ?
14:55:38 <oklopol> for last occurrance of "that"
14:55:41 <Figs> which kind of loops
14:55:49 <Figs> no
14:56:02 <Figs> I mean the logic gate system
14:56:14 <Figs> since it can feed back into itself
14:56:20 <oklopol> ...
14:56:30 <oklopol> so you mean "loops" with "that".
14:56:34 <oklopol> *meant
14:56:35 -!- slereah_ has quit (Read error: 110 (Connection timed out)).
14:56:42 <Figs> I thought you mean the other sort of loops
14:56:44 <Figs> ie, the cycles
14:56:46 <oklopol> loop = cycle = feedback
14:57:01 <Figs> I'm talking about two kinds of loops :)
14:57:07 <oklopol> oh?
14:57:09 <Figs> one is the representation on the board
14:57:19 <Figs> ie a -> b -> c -> a
14:57:24 <Figs> and one is in time
14:57:40 <oklopol> umm... in time?
14:57:54 <Figs> ie, (a,b,c,d) are in some particular state at one point, and n steps later, then return to that state
14:58:08 <Figs> (each is either on or off)
14:58:17 <oklopol> well, cycles => loops, trivially
14:58:25 <oklopol> loops => cycles, trivially
14:59:25 <oklopol> anyhow, you can represent a feedback loop as a recursive equation i guess
14:59:47 <asiekierka> Can anybody help me with ALPACA?
14:59:49 <asiekierka> I h
14:59:57 <asiekierka> I have some kind of a code that LOOKS good
15:00:03 <asiekierka> but it dosen't want to compile
15:00:03 <oklopol> although i don't think that's strictly traditional logic
15:00:08 <Figs> rafb it :)
15:00:31 <Figs> (or insert pastebin of your choice for rafb)
15:01:24 <oklopol> pb.vjn.fi is pretty short, and i just made it 10% more efficient today!
15:01:33 <Figs> pb.vjn.fi?
15:01:45 <Figs> is that a url? :p
15:01:52 <oklopol> sure
15:01:57 <oklopol> www.vjn.fi/pb
15:02:09 <Figs> it looks like random characters :P
15:02:19 <oklopol> :)
15:02:21 <asiekierka> http://rafb.net/p/EBVJgr26.html
15:02:25 <oklopol> pb = pastebin
15:02:27 <oklopol> vjn is kinda random.
15:02:50 <Figs> fi = finland?
15:03:06 <oklopol> yeah
15:03:26 <oklopol> had to take .fi, .com is so cheap it's not cool :\
15:03:48 <asiekierka> Is .fi free?
15:03:49 <asiekierka> If it could be
15:04:01 <asiekierka> i'll seriously take a website "http://why.fi/"
15:04:14 <asiekierka> One of the funniest and noobiest members of a community i'm in
15:04:18 <oklopol> .fi is a lot more expensive than .com
15:04:30 -!- slereah_ has joined.
15:04:47 <asiekierka> oh
15:04:49 <tejeez> and it's available only for finns
15:04:57 <asiekierka> anybody knows WHAT THE HELL is with my alpaca code?
15:05:16 <oklopol> lezzee
15:06:02 <oklopol> SigW?
15:06:34 <oklopol> can't deduce alpaca's semantics from that, sorry :-)
15:07:27 <Figs> try 'when' instead of 'if'
15:08:05 <Figs> or maybe is
15:08:11 <Figs> lemme check the grammar again
15:08:22 <Asztal> bah, funge-98 already uses every single printable ascii character :(
15:08:24 <Figs> I'm pretty sure there was no 'if' in it
15:08:25 <oklopol> oh, right, the grammar
15:08:58 <asiekierka> yea
15:08:59 <asiekierka> h
15:09:02 <asiekierka> it's probably it
15:09:03 <asiekierka> lessee
15:09:11 -!- slereah__ has quit (Read error: 110 (Connection timed out)).
15:09:28 -!- slereah__ has joined.
15:09:31 <asiekierka> Thanks
15:09:33 <asiekierka> it was it
15:09:41 -!- jix__ has quit ("CommandQ").
15:09:43 <slereah__> Damn you internet!
15:09:53 <Figs> yay
15:10:10 -!- jix_ has joined.
15:10:26 <slereah__> http://membres.lycos.fr/bewulf/Russell/Fibo.jpg
15:10:29 <slereah__> Was I saying.
15:10:32 <slereah__> A = A :o
15:10:40 <Figs> A = A ?
15:10:55 <slereah__> It's one of the objectivist mantra
15:11:02 <Figs> X = (X -> Y)
15:11:10 <Figs> therefore Y
15:11:12 <Figs> :D
15:11:41 <Figs> 1. X = X (tautology)
15:12:05 <Figs> err
15:12:10 <Figs> x -> x
15:12:13 <Figs> `scuze
15:12:36 <oklopol> [->]
15:13:22 <Figs> 2. x -> (x-> y) by substitution
15:13:35 <Figs> 3. x -> y
15:13:40 <Figs> 4. x
15:13:44 <Figs> 5. y
15:14:22 <slereah__> I was trying to make some objectivist jokelang, but it's hard
15:14:36 <slereah__> I don't have any good idea for conditional jump
15:14:57 <Figs> Do or do not
15:15:14 <Figs> not sure if that's objectivist though :P
15:15:19 <Figs> more like yoda
15:15:38 -!- jix_ has quit (Nick collision from services.).
15:15:48 -!- jix has joined.
15:16:14 <Figs> Is there a 'Zen' esolang yet?
15:16:28 <slereah__> Well, the only nice looking mantras that I have in mind for it are Either-or, non-contradiction, A = A and reality exist
15:16:55 <slereah__> And the idea that started it, AYNRAND()
15:17:07 <Figs> AYNRAND()?
15:17:19 <slereah__> For random numbers :o
15:17:25 <Figs> what's ayn?
15:17:34 <asiekierka> A Yielding Numbers Randomizer
15:17:39 <slereah__> Ayn Rand being the (manly) woman who started the idea
15:17:47 <slereah__> Of objectivism
15:17:50 <Figs> oh :P
15:18:27 <Figs> Hey, you know what would be neat?
15:18:32 <Figs> a haiku-based esolang
15:18:37 <asiekierka> yes
15:18:42 <asiekierka> it'll be great in a way or two
15:18:52 <slereah__> On the road for days
15:18:57 <slereah__> Two wheels, my bike and me
15:19:01 <slereah__> I don't brush my teeth
15:20:13 <oklopol> slereah_: you failed
15:20:37 <slereah__> Damn
15:20:40 <Figs> I think the second line needs one more syllable, doesn't it?
15:20:44 <Figs> 5/7/5 IIRC
15:21:14 <Figs> or am I saying it weird? :P
15:21:18 <oklopol> yeah, that's where the fail was
15:21:35 <slereah__> Well, I did it from memory.
15:21:42 <oklopol> but english is just weird for having "bike" be a single syllable
15:21:44 <slereah__> It's the biker Haiku at the end of Full Throttle
15:21:51 <oklopol> so it doens't count
15:22:06 -!- slereah_ has quit (Read error: 110 (Connection timed out)).
15:23:16 <Figs> IF I HAVE FAILED
15:23:24 <Figs> THEN I MUST SURRENDER TO DEATH
15:23:28 <Figs> ELSE PRINT FOURTY-TWO, DUDE.
15:24:15 <Figs> we can make it like COBOL...
15:24:16 <slereah__> Heh.
15:24:21 <Figs> with way too many words
15:25:27 <Figs> *sigh*, now if I only had a few extra years of free-time and a lot of patience :)
15:26:00 <Figs> hey, holy-crap
15:26:06 <Figs> I just front-paged reddit ^_^
15:26:20 <Figs> the imaginary bases thing caught on
15:26:36 <oklopol> 8|
15:26:40 <oklopol> isn't that liek soooo old
15:27:09 <slereah__> So's 0.99...=1
15:27:14 <slereah__> but that never stopped the internet
15:27:15 <oklopol> my native number system was base-7i quaternions
15:29:10 <slereah__> (The Randian language is just a bunch of register starting at 0, a=b increase a if a and b have the same value, go to pass, decrease it else and go to fail)
15:29:22 <slereah__> It's like an objective Minsky machine or something.
15:30:12 <slereah__> Although I still need to find some idea to make the conditional jump in slogan form
15:30:31 -!- Corun has joined.
15:32:01 <Figs> O_O
15:32:05 <Figs> I just got the joke!
15:32:07 <Figs> TAOCP
15:32:12 <Figs> TAO CP
15:32:15 <Figs> haha
15:32:25 <slereah__> Heh.
15:32:41 <Figs> I'm like a million years late, I'm sure...
15:33:04 <slereah__> Well, I didn't notice.
15:33:15 <Figs> You get it though, right?
15:33:18 <slereah__> But then again, I first head of The art of computer programming a month ago
15:33:22 <slereah__> Yes I do.
15:33:30 <Figs> I wonder if that was intentional
15:35:33 -!- puzzlet_ has joined.
15:42:19 -!- slereah_ has joined.
15:42:36 <slereah_> >:| Internets
15:43:15 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
15:45:54 -!- puzzlet has quit (Read error: 110 (Connection timed out)).
15:46:41 -!- Corun has quit ("This computer has gone to sleep").
15:47:47 <Figs> `right
15:47:52 <Figs> I'm gonna go zzzz now
15:47:53 <Figs> cya
15:47:56 -!- Figs has quit ("Java user signed off").
15:51:01 -!- RedDak has quit (Remote closed the connection).
16:14:57 -!- RedDak has joined.
16:16:01 -!- calamari has joined.
16:20:53 <asiekierka> Figs...
16:23:49 -!- slereah_ has changed nick to Slereah.
16:53:24 -!- calamari has quit (Remote closed the connection).
16:54:19 -!- calamari has joined.
17:34:29 -!- Corun has joined.
17:34:48 -!- Corun has quit (Client Quit).
17:34:59 -!- Corun has joined.
17:39:21 -!- oerjan has joined.
18:01:20 <AnMaster> WEIRD question: Is XSLT turing complete?
18:03:21 <Asztal> http://www.unidex.com/turing/utm.htm
18:23:43 -!- asiekierka has quit.
18:45:45 -!- asiekierk has joined.
18:46:02 <asiekierk> hello
18:46:04 <asiekierk> yello
18:46:50 -!- Geekthras has joined.
18:48:56 <Slereah> Hello little man
18:49:05 <Geekthras> Hello big man
18:49:13 <Slereah> I'm no big man
18:49:21 <Geekthras> Then why am I a little man?
18:49:29 <Slereah> I don't know, are you?
18:49:35 <Geekthras> Yes
18:50:37 <Slereah> Then, hello little man!
18:51:06 <Geekthras> \o/
18:52:44 -!- RedDak has quit (Read error: 113 (No route to host)).
18:53:05 <Slereah> What's up, little man?
18:53:22 -!- RedDak has joined.
18:53:39 <Geekthras> I was just wandering around
18:54:04 <Geekthras> Someone had a bf compiler bot in another channel and I was trying to make it do color
18:56:32 <Slereah> I suppose you could just change from ASCII to something else.
18:57:07 <Geekthras> no, I was trying to find the index of the ctrl-k character
18:57:27 <Asztal> probably 11
18:58:31 <Asztal> I got EgoBot to do colour once, I think. Although it may have been bold.
18:58:32 <oerjan> ctrl-x = x & 31
18:58:44 <Geekthras> I tried 11 but I may have failed...
18:58:45 <Asztal> actually I think it's \003 for colour
18:59:23 <AnMaster> Asztal, thanks
18:59:24 <oerjan> of course the channel mustn't be +c for that to work
18:59:32 <Geekthras> yup
19:01:38 <AnMaster> I can look up color codes from my bot's code
19:01:40 <AnMaster> a sec
19:02:03 <Geekthras> thanks
19:02:20 <AnMaster> http://envbot.org/trac/browser/anmaster-trunk/lib/misc.sh
19:02:25 <AnMaster> several defined in that script
19:02:31 <AnMaster> yes irc bot in bash :D
19:03:13 <Geekthras> win
19:03:21 <Geekthras> too bad you can
19:03:26 <Geekthras> er can't do it in BF
19:03:34 <AnMaster> you can't?
19:03:50 <AnMaster> just output a \007 that would be a \x07 too
19:04:01 <AnMaster> Geekthras, I think all the numbers are in octal
19:04:03 <AnMaster> not hex
19:04:06 <Geekthras> eek
19:04:20 <Geekthras> AnMaster: I meant an IRC bot in bf
19:04:22 <AnMaster> should be simple to convert
19:04:25 <AnMaster> Geekthras, ah
19:04:33 <AnMaster> are you sure?
19:04:40 <AnMaster> connect input to irc, output to irc
19:04:47 <AnMaster> then it should be possible :D
19:04:56 <Geekthras> right, you'd need another language to handle the socketing
19:04:57 <AnMaster> a pain of course but...
19:05:52 <AnMaster> Geekthras, indeed, and I don't use bash for that most time, bash's internal tcp support I can use, but you can load another transport module, like netcat, openssl and so on
19:05:57 <AnMaster> envbot is modular
19:05:59 <Geekthras> right
19:06:38 <AnMaster> http://envbot.org/trac/wiki
19:06:40 <AnMaster> :D
19:08:09 <AnMaster> Geekthras, also wrote (a very slow) brainfuck interpreter in bash
19:08:30 <Geekthras> nice
19:12:43 -!- pikhq has quit (Read error: 110 (Connection timed out)).
19:14:51 -!- Geekthras has changed nick to Geekthras|Busy.
20:06:28 -!- asiekierk has quit.
20:16:39 <AnMaster> Geekthras|Busy, http://rage.kuonet.org/~anmaster/bzr/index.py/files/bashfuck/head
20:16:49 -!- Geekthras|Busy has changed nick to Geekthras.
20:17:00 <RodgerTheGreat> that URL makes me smile
20:17:05 <Geekthras> cool thanks
20:17:10 <Geekthras> bashfuck/head?
20:17:21 <RodgerTheGreat> yeah. It just kinda made me giggle
20:17:34 <Geekthras> like http://www.ferrethandjobs.com
20:18:21 <RodgerTheGreat> brilliant
20:18:38 <RodgerTheGreat> "place your business in the right hands"
20:18:39 <Geekthras> "In other news, it has come to our attention that the domain name "FerrethAndJobs.com" may be misread by some."
20:19:31 <Slereah> speedofart also has a lulz name
20:19:56 <RodgerTheGreat> penisland.com
20:20:08 <AnMaster> <RodgerTheGreat> that URL makes me smile <-- why?
20:20:15 <AnMaster> oh
20:20:22 <AnMaster> well it is the head in the repo
20:20:28 <RodgerTheGreat> I understand this
20:20:52 <AnMaster> hm brainbash could have been a better name
20:21:08 <AnMaster> it certain feels like it :)
20:22:02 <RodgerTheGreat> I partially completed a brainfuck-based robot combat game called "BotFuck", which I found rather clever
20:22:12 <AnMaster> RodgerTheGreat, http://rage.kuonet.org/~anmaster/bzr/index.py/files/bashfuck/41 would work too, as that is last revision
20:22:14 -!- Geekthras has changed nick to Geekthras|Popcor.
20:22:20 -!- Geekthras|Popcor has changed nick to Popcorn.
20:24:43 -!- pikhq has joined.
20:24:44 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
20:24:59 -!- Slereah has joined.
20:37:13 -!- Popcorn has left (?).
20:41:12 -!- pikhq_ has joined.
20:41:31 -!- pikhq has quit (Nick collision from services.).
20:41:43 -!- pikhq_ has changed nick to pikhq.
20:50:20 -!- miiro has left (?).
21:09:44 -!- Slereah has quit (Connection timed out).
21:45:13 -!- pikhq has quit (Read error: 104 (Connection reset by peer)).
21:46:22 -!- Slereah has joined.
21:51:12 -!- pikhq has joined.
21:51:24 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
21:55:47 -!- slereah_ has joined.
22:04:07 -!- GreaseMonkey has joined.
22:14:58 -!- jix has quit ("CommandQ").
22:38:16 -!- timotiis has quit ("leaving").
22:47:47 -!- Asztal has quit (Remote closed the connection).
22:55:49 -!- RedDak has quit (Remote closed the connection).
22:57:39 -!- pikhq has quit ("leaving").
22:58:10 -!- puzzlet_ has quit (Remote closed the connection).
22:58:11 -!- puzzlet has joined.
22:58:13 -!- pikhq has joined.
23:04:49 -!- calamari has left (?).
23:08:50 -!- slereah__ has joined.
23:10:09 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
23:48:25 -!- calamari has joined.
23:56:03 -!- Groniel has joined.
2008-01-21
00:02:16 -!- faxathisia has joined.
00:12:59 -!- puzzlet has quit (Remote closed the connection).
00:13:01 -!- puzzlet_ has joined.
00:13:30 <Groniel> PumPum Peidei
00:34:05 -!- chs_dude has joined.
00:34:53 <chs_dude> Please say "Hello, World!"
00:35:00 -!- chs_dude has left (?).
00:45:16 <puzzlet_> is that some kind of PL?
00:48:20 <faxathisia> internet relay programming?
00:56:12 -!- puzzlet has joined.
00:56:40 -!- Groniel has left (?).
01:06:24 -!- puzzlet_ has quit (Read error: 110 (Connection timed out)).
01:24:37 -!- Corun has changed nick to Raws.
01:25:53 -!- Raws has changed nick to Corun.
01:32:49 -!- oerjan has quit ("Good night").
03:32:55 -!- puzzlet has quit (Remote closed the connection).
03:32:56 -!- puzzlet_ has joined.
03:33:05 -!- Corun has quit (Read error: 110 (Connection timed out)).
03:49:45 -!- xipietotec has joined.
03:51:01 <xipietotec> Can someone reverse my phrase output?
03:51:19 -!- Corun has joined.
03:53:03 -!- slereah_ has joined.
03:57:01 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
04:00:20 -!- slereah__ has joined.
04:17:52 -!- Corun has quit ("This computer has gone to sleep").
04:28:18 -!- GreaseMonkey has quit (Read error: 110 (Connection timed out)).
04:28:50 -!- GreaseMonkey has joined.
04:31:08 -!- slereah_ has quit (Read error: 110 (Connection timed out)).
05:14:16 -!- cherez has quit (Read error: 104 (Connection reset by peer)).
05:15:25 -!- cherez has joined.
06:07:44 -!- calamari has quit (Remote closed the connection).
06:53:43 -!- xipietotec has quit (Read error: 104 (Connection reset by peer)).
07:18:37 -!- puzzlet_ has quit (Remote closed the connection).
07:18:41 -!- puzzlet has joined.
07:23:11 -!- tejeez has quit (calvino.freenode.net irc.freenode.net).
07:35:49 -!- oklopol has quit (Read error: 110 (Connection timed out)).
07:38:33 -!- slereah_ has joined.
07:46:47 -!- oklopol has joined.
07:48:18 -!- Slereah has joined.
07:53:49 -!- slereah__ has quit (Read error: 110 (Connection timed out)).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:00:39 -!- slereah_ has quit (Read error: 110 (Connection timed out)).
08:26:05 -!- tejeez has joined.
09:25:12 -!- 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.").
11:11:40 <Slereah> http://rendell-attic.org/gol/turing_js_r.gif
11:11:41 <Slereah> <3
11:54:47 -!- oerjan has joined.
12:05:03 -!- Asztal has joined.
12:06:17 -!- Corun has joined.
12:09:41 -!- Corun has quit (Client Quit).
12:27:32 -!- graue has quit (calvino.freenode.net irc.freenode.net).
12:27:34 -!- Slereah has quit (calvino.freenode.net irc.freenode.net).
12:27:36 -!- lament has quit (calvino.freenode.net irc.freenode.net).
12:27:36 -!- faxathisia has quit (calvino.freenode.net irc.freenode.net).
12:27:36 -!- ttm_ has quit (calvino.freenode.net irc.freenode.net).
12:27:38 -!- RodgerTheGreat has quit (calvino.freenode.net irc.freenode.net).
12:27:39 -!- puzzlet has quit (calvino.freenode.net irc.freenode.net).
12:27:43 -!- sekhmet has quit (calvino.freenode.net irc.freenode.net).
12:27:43 -!- Asztal has quit (calvino.freenode.net irc.freenode.net).
12:27:43 -!- oklopol has quit (calvino.freenode.net irc.freenode.net).
12:27:44 -!- bsmntbombdood has quit (calvino.freenode.net irc.freenode.net).
12:27:44 -!- GregorR has quit (calvino.freenode.net irc.freenode.net).
12:27:44 -!- AnMaster has quit (calvino.freenode.net irc.freenode.net).
12:27:46 -!- Overand has quit (calvino.freenode.net irc.freenode.net).
12:27:46 -!- SimonRC has quit (calvino.freenode.net irc.freenode.net).
12:27:46 -!- lifthrasiir has quit (calvino.freenode.net irc.freenode.net).
12:27:47 -!- cmeme has quit (calvino.freenode.net irc.freenode.net).
12:27:47 -!- johnl has quit (calvino.freenode.net irc.freenode.net).
12:27:47 -!- mtve has quit (calvino.freenode.net irc.freenode.net).
12:29:13 -!- johnl has joined.
12:30:02 -!- cmeme has joined.
12:55:45 -!- faxathisia has joined.
12:55:45 -!- ttm_ has joined.
12:56:23 -!- SimonRC has joined.
12:56:23 -!- RodgerTheGreat has joined.
12:56:24 -!- Asztal has joined.
12:56:24 -!- oklopol has joined.
12:56:24 -!- bsmntbombdood has joined.
12:56:24 -!- GregorR has joined.
12:56:24 -!- AnMaster has joined.
12:56:24 -!- Overand has joined.
12:56:39 -!- lifthrasiir has joined.
12:56:39 -!- Slereah has joined.
12:56:39 -!- lament has joined.
12:56:51 -!- puzzlet has joined.
12:56:51 -!- sekhmet has joined.
12:57:13 -!- graue has joined.
13:22:59 -!- lament has quit (calvino.freenode.net irc.freenode.net).
13:22:59 -!- Slereah has quit (calvino.freenode.net irc.freenode.net).
13:22:59 -!- lifthrasiir has quit (calvino.freenode.net irc.freenode.net).
13:23:01 -!- Asztal has quit (calvino.freenode.net irc.freenode.net).
13:23:02 -!- GregorR has quit (calvino.freenode.net irc.freenode.net).
13:23:02 -!- Overand has quit (calvino.freenode.net irc.freenode.net).
13:23:03 -!- AnMaster has quit (calvino.freenode.net irc.freenode.net).
13:23:04 -!- bsmntbombdood has quit (calvino.freenode.net irc.freenode.net).
13:23:04 -!- oklopol has quit (calvino.freenode.net irc.freenode.net).
13:23:06 -!- RodgerTheGreat has quit (calvino.freenode.net irc.freenode.net).
13:23:06 -!- SimonRC has quit (calvino.freenode.net irc.freenode.net).
13:23:08 -!- sekhmet has quit (calvino.freenode.net irc.freenode.net).
13:23:09 -!- puzzlet has quit (calvino.freenode.net irc.freenode.net).
13:23:10 -!- ttm_ has quit (calvino.freenode.net irc.freenode.net).
13:23:10 -!- faxathisia has quit (calvino.freenode.net irc.freenode.net).
13:23:12 -!- graue has quit (calvino.freenode.net irc.freenode.net).
13:23:42 -!- graue has joined.
13:23:42 -!- sekhmet has joined.
13:23:42 -!- puzzlet has joined.
13:23:42 -!- lament has joined.
13:23:42 -!- Slereah has joined.
13:23:42 -!- lifthrasiir has joined.
13:23:42 -!- Overand has joined.
13:23:42 -!- AnMaster has joined.
13:23:42 -!- GregorR has joined.
13:23:42 -!- bsmntbombdood has joined.
13:23:42 -!- oklopol has joined.
13:23:42 -!- Asztal has joined.
13:23:42 -!- ttm_ has joined.
13:23:42 -!- faxathisia has joined.
13:24:43 -!- SimonRC has joined.
13:24:43 -!- RodgerTheGreat has joined.
13:24:56 -!- ttm_ has quit (calvino.freenode.net irc.freenode.net).
13:24:56 -!- faxathisia has quit (calvino.freenode.net irc.freenode.net).
13:24:58 -!- sekhmet has quit (calvino.freenode.net irc.freenode.net).
13:24:59 -!- puzzlet has quit (calvino.freenode.net irc.freenode.net).
13:25:01 -!- Asztal has quit (calvino.freenode.net irc.freenode.net).
13:25:02 -!- bsmntbombdood has quit (calvino.freenode.net irc.freenode.net).
13:25:02 -!- oklopol has quit (calvino.freenode.net irc.freenode.net).
13:25:02 -!- Overand has quit (calvino.freenode.net irc.freenode.net).
13:25:03 -!- AnMaster has quit (calvino.freenode.net irc.freenode.net).
13:25:03 -!- GregorR has quit (calvino.freenode.net irc.freenode.net).
13:25:08 -!- faxathisia has joined.
13:25:08 -!- ttm_ has joined.
13:25:25 -!- puzzlet has joined.
13:25:25 -!- sekhmet has joined.
13:25:45 -!- Asztal has joined.
13:25:45 -!- oklopol has joined.
13:25:45 -!- bsmntbombdood has joined.
13:25:45 -!- GregorR has joined.
13:25:45 -!- AnMaster has joined.
13:25:45 -!- Overand has joined.
13:33:01 -!- ais523 has joined.
13:39:40 -!- faxathisia has quit ("If there are any aliens, time travellers or espers here, come join me!").
13:52:51 <AnMaster> I found this, rather interesting: gopher://blubb.ch/11/software/fbf
13:53:00 <AnMaster> functional brainfuck
13:53:56 <Slereah> physics which states that it is
13:53:56 <Slereah> physically impossible to detect a particle without affecting it in
13:53:56 <Slereah> some way.
13:53:58 <Asztal> (wow, people still uses gopher: ?)
13:54:08 <Slereah> Woops
13:54:11 <AnMaster> Asztal, yes?
13:54:15 <Slereah> Copypasta by mistakes it seems
13:57:49 <ais523> wow, I'm glad that gopher: is still alive
13:58:38 <ais523> but that looks like a procedural language, not a functional one
14:22:13 -!- mtve has joined.
14:27:51 -!- oerjan has quit ("Redirecting snail mail").
14:44:26 -!- Tritonio_ has joined.
14:51:40 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
14:52:17 -!- Slereah has joined.
15:04:44 -!- adu has joined.
15:13:12 -!- Tritonio__ has joined.
15:14:09 -!- Tritonio_ has quit (Read error: 110 (Connection timed out)).
15:18:17 <RodgerTheGreat> argh. Could somebody explain how to access a gopher file via telnet? I got as far as connecting on port 70.
15:19:52 <RodgerTheGreat> wait, I think I figured this out...
15:23:59 <RodgerTheGreat> and here's a pastebin of the FBF source, if anyone is curious and doesn't have a gopher client
15:24:01 <RodgerTheGreat> http://nonlogic.org/dump/text/1200928851.html
15:28:27 <ais523> Firefox seems to be able to handle gopher: just fine
15:29:00 <RodgerTheGreat> in retrospect, it probably would've been easier to open the page on my linux machine
15:40:54 <pikhq> Everyone with Firefox can do Gopher. ;)
15:41:38 <RodgerTheGreat> I don't use firefox on my mac, for obvious reasons
15:41:58 <RodgerTheGreat> but as I said, it would've been easier just to use my linux box
15:42:05 -!- ehird` has joined.
15:43:24 <pikhq> Yeah, Firefox on the Mac is crap.
15:49:52 <ehird`> yes it is
15:49:53 <ehird`> highly
15:50:07 <ehird`> and safari is awesome enough anyway, at least with saft etc
15:50:12 <ehird`> haven't tried safari 3 though
15:50:15 <ehird`> i like the brushed metal :P
15:50:21 <RodgerTheGreat> safari 3 is nifty
15:50:30 <RodgerTheGreat> it's a pretty transparent upgrade, though
15:51:03 <RodgerTheGreat> but I wouldn't have it any other way
15:51:09 <pikhq> I'm a Linux fan.
15:51:14 <pikhq> So, I'm waiting on KDE 4.1.
15:51:37 -!- ais523 has quit ("Konversation terminated!").
15:51:42 <pikhq> Granted, I could *use* KDE 4.0 (had it installed a couple of days ago), but it's still a fairly rough release.
15:51:52 <RodgerTheGreat> and I'm a mac user, so I'm going to continue to endure incredibly half-assed ports of linux software whenever I don't feel like spending money.
15:52:12 <pikhq> KDE is going to make the ports less half-assed.
15:52:26 <pikhq> Currently, all KDE programs run as native Cocoa apps.
15:52:49 <pikhq> (will be officially supported with KDE 4.1)
15:52:52 <RodgerTheGreat> the "native" GTK port seems like it has more promise, but it isn't anywhere close to being usable.
15:54:30 * pikhq tries to find screenshots
15:54:56 <RodgerTheGreat> I really don't think simply having native GUI toolkits is going to solve the main problems, though- so many of the reasons linux ports suck are because they don't follow interface conventions properly (meaning Apple HIG)
15:55:38 <RodgerTheGreat> "The user interface features, behaviors, and appearances deliver a well-organized and cohesive user experience available to all applications developed for Mac OS X."
15:55:49 <pikhq> That's the reason they don't officially support KDE on Mac OS X yet.
15:55:55 <ehird`> RodgerTheGreat: the best kind of app is a Qt app developed on OS X
15:56:15 <ehird`> it'll be one of the best-designed apps on linux and windows, and fit right into os x
15:56:16 <ehird`> :P
15:56:21 <RodgerTheGreat> the best kind of app is an app with the frontend rewritten from scratch for OSX.
15:56:27 <ehird`> pikhq: I tried to compile KDE3 with Qt-mac before
15:56:32 <ehird`> to get Amarok
15:56:36 <RodgerTheGreat> for example, VLC.
15:56:39 <ehird`> too many patches though
15:56:46 <RodgerTheGreat> the OSX port of VLC is absolutely fantastic
15:56:50 <ehird`> someone else got it working though
15:57:21 <RodgerTheGreat> I couldn't believe it when I saw VLC running on windows- it's actually missing many features from the OSX version
15:57:47 <pikhq> I can understand complaining about GTK ports. . .
15:57:58 <pikhq> Frankly, GTK is not designed with cross-platform operation in mind.
15:58:02 <RodgerTheGreat> Inkscape causes me pain every time I use it.
15:58:41 -!- ehird`_ has joined.
15:58:57 <pikhq> Should you want to *try* the KDE ports, you can hit http://techbase.kde.org/index.php?title=Projects/KDE_on_Mac_OS_X .
15:59:08 <ehird`_> ehm
15:59:18 <pikhq> Torrent the .dmg if you care.
15:59:20 <ehird`_> what was the last thing you heard from me
15:59:28 -!- ehird`_ has changed nick to ehird.
15:59:31 <pikhq> "someone else got it working though"
15:59:32 <ehird> see above
15:59:39 <ehird> good that's the last thing i said
16:00:02 <RodgerTheGreat> but honestly, I don't think anyone has any business "porting" an app to OSX without reading through this: http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/XHIGIntro/chapter_1_section_1.html
16:00:41 <ehird> RodgerTheGreat: you can get off your os x high horse
16:00:52 <ehird> the apps work, don't they? the system as a whole is more elegant and usable than others, no?
16:01:04 <ehird> so use the non-OSXy port until a more OSXy one is made.
16:05:46 -!- timotiis has joined.
16:06:06 -!- ais523 has joined.
16:08:07 <ehird> hello ais523
16:08:15 <ais523> hello ehird
16:08:22 <ais523> and I am on my own computer now
16:08:26 <ehird> ais523: thank gawd
16:08:29 <ehird> :P
16:08:33 <ais523> and kill your ghost, it's screwing up my tab-complete
16:08:37 <ehird> oh
16:08:37 <ehird> sorry
16:08:43 -!- ehird` has quit (Nick collision from services.).
16:09:02 <ehird> anyway, i had an idea for an underload compiler but it would be kinda slow
16:09:09 <ehird> err
16:09:10 <ehird> UNLAMBDA
16:09:20 <ais523> well, you could always compile via Underload
16:09:26 <RodgerTheGreat> and on a semi-unrelated note, it would appear that NBC is now Apple's bitch:
16:09:28 <RodgerTheGreat> ""'We've said all along that we admire Apple, that we want to be in business with Apple.' He then unexpectedly adds, 'We're great fans of Steve Jobs.' No telling what has caused the turnabout. Perhaps the writers strike gave both parties time to reflect on their mounting lost revenue.""
16:09:33 <ehird> yes, but:
16:09:37 <ais523> I figured out how to compile everything except c.
16:09:43 <ehird> ais523: a way to make d work
16:09:48 <ais523> I have one of those already
16:09:49 <ehird> basically
16:09:54 <ehird> every argument to EVERYTHING is a thunk
16:10:06 <ehird> i.e. you pass a goto ID, just like the underload compiler..
16:10:07 <ehird> so:
16:10:08 <ehird> `ab
16:10:09 <ehird> is:
16:10:13 <ehird> ...compiled stuff for a...
16:10:19 <ehird> CALLIFY(thunky_thunk);
16:10:21 <ehird> thunky_thunk:
16:10:25 <ehird> ...compiled stuff for b...
16:10:37 <ehird> so, d works just by wrapping that thunk in a structure
16:10:43 <ehird> but ofc it could be slow.
16:10:52 <ehird> also obviously you need to manage your own call stack, for c
16:10:57 <ais523> that's basically how the Underload version works
16:11:03 <ehird> itslow though.
16:11:07 <ais523> which I wrote completely and then deleted by mistake
16:11:16 <ais523> but could rewrite without too much trouble
16:11:30 <ais523> instead of writing s as s, it's written as ((^s))
16:11:45 <ais523> `ab is ((^b))(^a))^^
16:12:01 <ais523> and `a`bc is (((^c))((^b))^^)((^a))^^
16:12:14 <ehird> exactly, it will just be very inefficient
16:12:14 <ais523> d is the only combinator that doesn't start with ^ to evaluate its argument
16:12:24 <ais523> but it can be optimised by quite a lot
16:12:29 <ehird> Of course, if we compiled to haskell this would be trivial :)
16:12:38 <ehird> you wouldn't have to do anything but:
16:12:45 <ehird> d x = x
16:12:47 <ehird> :P
16:13:05 <ais523> forcing eager evaluation would be the problem there
16:13:17 <ais523> and then not-forcing again when d was used
16:14:22 <ehird> ais523: hm yes unlambda is eager
16:14:23 <ehird> oh well
16:14:32 <ehird> maybe we should concentrate on the underload compiler. for now.
16:14:37 <ehird> ais523: do you have rev. 18?
16:15:54 <ais523> yes
16:16:20 <ehird> ais523: do you grok haskell? :-)
16:16:32 <ais523> I can understand it, with some thought
16:16:36 <ais523> I'm not fast at reading it
16:16:45 <ais523> and I understand the basics behind the way it works
16:16:52 <ais523> including monads and the basics of the type system
16:17:03 <ehird> can you write it, though?
16:17:08 <ais523> not easily
16:17:17 <ais523> because I don't know most of the built in operators and libraries
16:18:47 <ehird> aw
16:18:54 <ehird> well let me analyze my scheme program
16:19:26 <ehird> ais523: i'll use an awful lot of pattern matching, quite a bit of string concatentation, and maybe a state monad
16:19:27 <ehird> :p
16:19:40 <ais523> pattern matching I'm used to
16:19:43 <ais523> in most languages
16:22:43 <ehird> ais523: hm, maybe haskell isn't the best
16:22:49 <ehird> but this would be ugly in an imperative language
16:22:54 <ehird> especially with optimization
16:23:58 <ehird> ais523: Obviously it should be written in underload
16:25:31 <ehird> ais523: :P
16:26:42 <ais523> or maybe in GolfScript?
16:26:47 <ehird> heh
16:26:50 <ais523> that's sort of a wimpmode for Underload
16:29:51 <ehird> ais523: parsing underload is funny
16:29:58 <ehird> because of having to retain strings of everything
16:29:58 <ehird> :P
16:35:25 <ais523> I want to change the output rules for the next version
16:35:30 <ais523> they interfere too much with optimisers
16:35:39 <ehird> aww
16:35:41 <ehird> but it's fun..
16:35:51 <ais523> because it's hard to optimise a string when you don't know if it might have to be output literally
16:36:09 <ehird> ais523: anyway, the optimization will be easy: we never remove ()s or anything like that, and we only change the [UL] not the String
16:36:54 <ais523> yes, in your case
16:37:08 <ais523> I was thinking of my optimising interpreter entered into Anarchy Golf
16:37:22 <ais523> which does optimise inside strings, luckily not affecting the output of the problem
16:39:09 <ehird> http://golf.shinh.org/p.rb?Minimal+scheme+interpreter
16:39:09 <ehird> wtf
16:39:17 <ehird> they are all cheats, obviously
16:39:24 <ehird> they'd ghave to be
16:39:25 <ehird> my example is wrong
16:41:26 <ais523> unless they automatically correct mismatched parens
16:42:04 <ais523> a few of the Underload ones look genuine, though
16:42:46 <ehird> they can't correct mismatched parens
16:42:50 <ehird> the form is like this:
16:42:57 <ehird> (let ((a b) ...)
16:43:18 <ais523> oh dear
16:44:11 <ais523> why is there no special variable in Perl that's 1 by default, read-write, and safely changeable?
16:44:27 <ehird> because it's not that esoteric
16:44:47 <ais523> in GolfScript I could just assign to 1 as long as I didn't use it later in the program
16:47:58 <ehird> ais523: parsing underload is hsdfhsdkjhsdfjksdf
16:49:39 -!- slereah_ has joined.
16:50:15 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
16:54:57 -!- ais523 has quit ("Moving to a different Internet connection; will be back soon").
16:59:20 -!- slereah_ has quit (Remote closed the connection).
17:00:42 -!- slereah_ has joined.
17:05:54 -!- ais523 has joined.
17:06:18 <ehird> wb ais523
17:06:32 <ehird> i'm starting to wonder if haskell is the best language for this :P
17:06:44 <ais523> it's not usually at all clear what the best language is
17:06:53 <ais523> and different people use different languages by default
17:07:50 <ehird> :P
17:08:09 <ehird> ais523: what would your preferred language be for impl the compiler?
17:08:27 <ais523> I tend to use Perl by default
17:08:34 <ais523> but I'm not sure whether it would be a good choice here
17:08:46 <ais523> I'd most likely end up writing the whole thing as one massive regexp...
17:08:58 <ais523> BTW, Perl5.10 has recursive regexps, which is great
17:09:12 <ehird> ais523: that does not bode well for optimization
17:09:18 <ehird> also, we have to do () unrolling
17:09:47 <ais523> agreed
17:10:06 <ais523> C parsers do that sort of thing naturally, but on the other hand they tend to be large and unwieldy to start with
17:10:42 <ehird> yeah i am NOT doing c
17:10:43 <ehird> :P
17:11:01 <ais523> maybe one solution in any language would be to repeatedly extract inner ()s to the end of the list, replacing them with a number
17:11:09 <ais523> so (a(b(c)d(e)f))
17:11:25 <ais523> would change to (a(b<1>d(e)f))>1(c)
17:11:27 <ehird> i'm ofc aware how to do it
17:11:33 <ehird> just elegance.
17:11:43 <ais523> that solution would be easy with regexen
17:12:22 <ais523> grr... why doesn't Perl allow @_--?
17:12:22 <ehird> but for the optimization
17:12:26 <ais523> it has an obvious meaning
17:12:27 <ehird> so i don't think perl is a good idea
17:12:33 <ais523> what sort of optimisations are you talking about?
17:13:36 <ehird> things that make the generated c code less dumb
17:13:36 <oklopol> regexen? :D is that the official plural?
17:13:48 <oklopol> i've used that, but most say regexes
17:13:53 <ais523> the Underload optimisations I did were a case of partially parsing the program, executing all operations but : and S, and even inside quoted strings
17:13:53 <ais523> and also some micro-optimisations like :~ to : and deleting ~~
17:13:54 <ais523> depends on who you ask
17:14:09 <ais523> to me, regexes sounds too much like the plural of regexe
17:14:16 <ais523> I'm happy with regexps, though
17:17:33 <ehird> wow
17:17:36 <ehird> i used to have crazy zsh-fu:
17:17:37 <ehird> precmd() { print -Pn "\e]0;%n@%m:%~\a" }
17:17:37 <ehird> export PS1=$(print "%{\e[33m%}")"[%n:%~] %#"$(print "%{\e[0m%}")" "
17:18:15 * ais523 normally uses bash
17:18:25 <ais523> although zsh looks interesting as well
17:18:43 <ais523> that's mostly just ANSI escapes, though, isn't it, rather than anything shell-specific?
17:18:52 <ehird> partly
17:18:59 <ehird> most of:
17:19:01 <ehird> %X
17:19:04 <ehird> is zsh specific
17:19:16 <ehird> and ESPECIALLY the crazy stuff i do with $(...) in there
17:19:47 <ais523> $(...) is also accepted by bash
17:19:52 <ehird> ais523: here's what happens when i run that export PS1= line in bash
17:19:53 <ehird> bash: print: command not found
17:19:53 <ehird> bash: print: command not found
17:19:53 <ehird> [%n:%~] %#
17:19:54 <ais523> it might do something different, though, for all I know
17:19:58 <ehird> and no colours
17:20:03 <ehird> ais523: its use there is zsh-specific
17:20:15 <ehird> basically, the fisrt line gives me a line like:
17:20:20 <ehird> ehird@hostname:dir
17:20:26 <ehird> but i get ~/... for home dirs
17:20:30 <ehird> in dir.
17:20:35 <ehird> so pretty trivial
17:20:37 <ehird> but it works robustly
17:20:43 <ehird> and the second gives me a prompt like this:
17:20:43 <ehird> [ehird:~] %
17:20:47 <ehird> coloured yellow
17:23:21 <ais523> let me rewrite the Underload optimiser
17:23:26 <ehird> ais523: in what?
17:23:37 <ais523> I'll write it in Perl, the same as the version I deleted by mistake
17:23:46 <ais523> more to have something to work from than to make it part of the project
17:23:48 <ehird> darn. perl.
17:23:48 <ehird> :(
17:23:52 <ehird> :P
17:23:56 <ais523> it was nothing but s/// commands anyway
17:24:03 <ais523> what else would you expect me to write it in?
17:24:10 <ehird> SOMETHING GOOD
17:24:11 <ehird> :P
17:24:25 <ais523> maybe Python?
17:24:32 <ais523> that has much the same regex syntax
17:24:47 <ehird> eek
17:25:11 <ais523> sorry
17:25:44 <ehird> :P
17:26:07 <ais523> the optimising-inside-strings thing was too much of a problem anyway
17:26:15 <ais523> the idea is that you map (...)! to nothing
17:26:26 <ais523> and (..a..)(..b..)~ to (..b..)(..a..)
17:26:34 <ais523> and so on for all the commands except : and S
17:26:47 <ais523> that optimised generated code to quite an extent
17:26:56 <ehird> generated code isn't the focus
17:26:57 <ehird> methinks
17:27:12 <ais523> otherwise, run-length encoding helps a lot with Church numerals
17:27:34 <ais523> I've written too many programs along the lines of (::::::::::::::::****************)((a)S)~^^
17:28:01 <ehird> on a completely unrelated note I need to get a decent irc client
17:28:37 <ais523> maybe one that responds to ctcp version requests?
17:28:42 <ehird> it does.
17:28:52 <ehird> i wasn't identified.
17:28:57 <ehird> also, it's Linkinus
17:28:58 <ehird> which isn't bad
17:29:04 <ehird> but the ui is kinda grating on me
17:29:47 <ais523> I'm using Konversation at the moment, purely because it was the only one that came with Ubuntu that I could figure out how to use
17:30:20 <ehird> konversation is really nice
17:30:25 <ehird> i wonder if it works on os x nowadays
17:31:17 <ais523> do KDE apps work on OSX in general?
17:31:19 <ehird> no.
17:31:25 <ehird> because KDE does not like qt-mac, much
17:31:26 <ehird> it is possible
17:31:31 <ehird> but it's not fun.. you have to patch it to hell
17:31:39 <ehird> i got bored when i tried.
17:31:57 <ehird> Let me find the page of someone who manaed
17:32:22 <ehird> http://www.khaitu.com/projects.php?item=23
17:32:26 <ehird> but its not native looking
17:33:03 <ehird> ah
17:33:04 <ehird> have a patch
17:33:05 <ehird> http://www.khaitu.com/public/kdelibs.patch
17:34:05 <oklopol> YO ppl, wuzzup
17:34:46 -!- ais523_ has joined.
17:34:58 <ehird> hello oklopol
17:35:11 <oklopol> helloes
17:35:27 -!- ais523 has quit (Nick collision from services.).
17:35:31 -!- ais523_ has changed nick to ais523.
17:37:04 <ais523> sorry about that, my wireless connection dropped and my IRC client got confused
17:38:13 <ehird> ais523: really i ought to just write my own
17:38:14 <ehird> :P
17:38:58 <ais523> it would be nice to have a nice portable one written in sh, dd, and netcat
17:39:07 <ehird> YES
17:39:12 <ehird> but fuck netcat
17:39:15 <ehird> we need NETDD
17:39:21 <ais523> does that even exist?
17:39:26 <ais523> or make logical sense?
17:39:32 <ehird> no, but it REALLY FUCKING SHOULD
17:39:39 <ehird> it's like, the best idea ever
17:39:45 <ehird> there is nothing more for humans to accomplish
17:43:05 <ehird> ais523: so!
17:43:12 <ehird> what language should the compiler be written in :P
17:43:14 <ehird> what language should the compiler be written in :P
17:43:24 <ais523> that's not at all an easy question
17:43:33 <ais523> especially as our programming styles are so different
17:43:38 <ehird> hehe
17:43:39 <ehird> this is true
17:43:42 <ehird> argh stupid linkinus
17:43:44 <ehird> stop being stupid
17:43:44 <ais523> so we'd better pick an esolang that neither of us are comfortable with
17:43:45 <ehird> brb.
17:43:49 -!- ehird has quit.
17:44:05 -!- ehird has joined.
17:44:46 <ehird> test
17:44:55 <ais523> test successful
17:47:04 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
17:47:13 -!- slereah_ has joined.
17:48:17 <ehird> slereah_ keeps dying
17:50:10 * ais523 is working on a Codegolf program
17:51:29 <ehird> codegolf.com?
17:51:34 <ais523> that's it
17:51:37 <ehird> codegolf.com = :(, it's not as fun as anarchy golf
17:51:42 <ais523> I'm not nearly as good as the regulars
17:51:46 <ehird> far too serious
17:51:51 <ais523> maybe
17:51:55 <ais523> it's hard to find a balance
17:52:06 <ais523> anarchy golf is too prone to cheats and errors in the questions
17:52:21 <ais523> but codegolf is too slow-moving and you never get to see the winning entries
17:56:02 -!- slereah_ has changed nick to slereah__.
17:57:39 -!- jix has joined.
17:59:30 <ais523> one thing I like about codegolf is that you can see your own previous entries
17:59:30 -!- RedDak has joined.
18:01:52 <ehird> ais523: anarchy golf's cheats explicitly mark themselves
18:01:53 <ehird> so its OK
18:02:31 <ais523> I know
18:02:40 <ais523> but there should be separate leaderboards for cheats and noncheats
18:03:11 <ais523> wow, I just had a great idea for a golfing challenge
18:03:24 <ais523> but it couldn't be entered into Anarchy Golf
18:03:40 <ais523> write a program that given three sets of inputs and outputs, generate a program that maps those inputs to those outputs
18:04:01 <ais523> preferably with some rule to ensure that the /output/ is small as well as the original program...
18:09:09 -!- puzzlet has quit (Remote closed the connection).
18:09:14 -!- puzzlet has joined.
18:19:36 -!- ehird_ has joined.
18:20:19 <ehird_> what did i miss
18:20:21 <ehird_> ais523: um that's trivial
18:20:37 <ehird_> a=>x,b=>y,c=>z -> s/a/x/, s/b/y/, s/c/z/
18:20:44 <ais523> yes
18:21:02 -!- Corun has joined.
18:21:02 <ais523> that's why you'd have to try to minimise the size of the output program
18:21:18 <ais523> maybe by ruling that the output has to be smaller than the total size of all the input
18:21:31 -!- slereah__ has changed nick to Slereah.
18:24:32 -!- ehird has quit (Read error: 110 (Connection timed out)).
18:32:22 <ehird_> anyone alive?
18:32:25 <ais523> yes
18:34:03 <Slereah> No.
18:34:38 <ehird_> ais523: so what language would you use for the compiler that isn't perl? :P (i ought to write a program to pedantically refine my questions)
18:34:57 <ais523> most languages would likely work
18:35:09 <ais523> but thinking of one in particular is hard
18:35:32 <ais523> it might even be possible to do it in a language like sed
18:36:12 <ehird_> gosh really?
18:36:12 <ehird_> ;)
18:37:08 -!- asiekierka has joined.
18:37:10 <asiekierka> Hey!
18:37:19 <asiekierka> Is any GBA/NDS programmer here right now?
18:37:30 <asiekierka> willing to do a thing, of course
18:38:45 <ais523> I don't understand the acronym
18:39:17 <ehird_> ais523: sure but its not convenient
18:39:45 <ais523> only because sed doesn't do arithmetic
18:41:46 <ehird_> heh
18:42:01 <ehird_> asiekierka: because this is so relevant to esoteric programming
18:42:31 <ehird_> ais523: Game Boy Advance / Nintendo DS
18:42:39 <ais523> I've never programmed for them
18:42:43 <ais523> although I have played them
18:42:51 <ais523> I don't know if it's possible to program them legally
18:42:59 <ais523> and I wouldn't do it illegally
18:47:07 -!- Tritonio__ has quit (Remote closed the connection).
18:47:14 <ehird_> goddamn linkinus
18:47:16 <ehird_> being stupid
18:47:35 <ehird_> :|
18:50:32 <Asztal> ais523: as far as I know, it's quite legal to do so using something like the CycloDS with devkitpro :)
18:50:49 <ais523> thanks for that advice
18:51:43 <ehird_> i have a DS with various stuff for running homebrew. never got 'round to really doing the homebrew stuff
18:52:24 <ehird_> though i love my 'GBA Movie player' hacked for the purposes of taking a flash card and providing it in a form readable by the MAX Media Player.. the GBA movie player having hacked-upfrlashed
18:52:30 <ehird_> *hacked-up firmware
18:52:34 <ehird_> :P
18:52:40 <ehird_> it's not a very 'clean' solution..
19:02:25 <ais523> one nice golfing trick I discovered:
19:02:42 <ais523> if you need to initialise a variable to a high number as a loop counter, and don't care which one, use $$
19:02:52 <ais523> (i.e. current process's PID)
19:02:57 <ais523> it's generally well over 1000
19:04:42 <ehird_> some programs used that for the counter prog.
19:04:46 <ehird_> the run 1: 1
19:04:47 <ehird_> run 2: 2
19:04:49 <ehird_> run 3: 3 one
19:04:55 <ehird_> shortest was this iirc:
19:05:01 <ehird_> print$$%7;
19:06:12 <ehird_> print 1+$$%3; # a robust solution
19:06:20 <ehird_> cycles 1,2,3,1,2,3,...
19:08:16 <ais523> that was used as randomisation, though, rather than just initialising a loop counter
19:10:59 <ehird_> not randomization
19:11:03 <ehird_> code golf will do:
19:11:07 <ehird_> run program first
19:11:07 <ehird_> second
19:11:08 <ehird_> third
19:11:11 <ehird_> so, it's sequential
19:11:18 <ehird_> barring really weird things happenin
19:11:19 <ehird_> g
19:11:26 <ehird_> so: print$$%7;
19:16:48 -!- Deewiant has joined.
19:17:39 <ehird_> So!
19:17:50 <ais523> So what?
19:18:02 <ais523> you aren't going to ask me what language you want to write the compiler in again, are you?
19:18:52 <oklopol> i know i know!
19:18:55 <oklopol> oh, wait
19:18:56 <oklopol> i don't
19:29:11 <ehird_> ais523: haha
19:29:12 <ehird_> good idea
19:46:22 -!- ehird- has joined.
19:51:53 <ehird-> 55+2=4
19:52:04 <ais523> in what context?
19:53:29 * Asztal guesses at modulo 53 arirthmetic
19:54:08 <oklopol> "55" = "5 + 5" = "10", 10_2 = 2_10, 2 + 2 = 4?
19:57:12 -!- GreaseMonkey has joined.
19:57:20 -!- ehird- has changed nick to ehird.
20:01:07 <ehird> oklopol: oklo/msgping
20:01:09 -!- ehird_ has quit (Connection timed out).
20:14:27 -!- slereah__ has joined.
20:17:17 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
20:29:00 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
20:31:36 <adu> hi oklopol
20:31:53 -!- slereah__ has joined.
20:36:05 -!- oerjan has joined.
20:37:00 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
20:37:15 -!- slereah__ has joined.
20:41:38 -!- ais523 has quit ("Bye everyone!").
20:42:16 -!- adu has quit (Read error: 104 (Connection reset by peer)).
20:54:09 <oklopol> :\
20:54:19 <oklopol> busy guy.
20:54:21 <oklopol> ->
20:54:37 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
20:55:03 <ehird> oklopol: you appeared again
20:55:04 <ehird> :P
20:55:07 -!- slereah__ has joined.
20:55:47 -!- puzzlet has quit (Remote closed the connection).
20:55:52 -!- puzzlet has joined.
20:59:42 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
21:00:03 -!- slereah__ has joined.
21:03:58 <ehird> who is dead?
21:04:34 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
21:05:09 -!- slereah__ has joined.
21:05:13 <oerjan> hm?
21:15:57 <ehird> oklopol: ping
21:16:04 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
21:16:56 -!- slereah__ has joined.
21:28:27 <oklopol> ...olp!
21:28:46 <oklopol> well i'm never physically gone, just thinking.
21:29:15 <oerjan> don't stop thinking! remember descartes
21:29:58 <ehird> a sign with a D on it saying 'I think therefore I am'
21:30:02 <ehird> now: go forth, and laugh
21:30:06 -!- asiekierka has quit (Read error: 110 (Connection timed out)).
21:30:16 <oklopol> ;)))))))))))))))))))
21:30:21 <oklopol> descartes ouned ass
21:47:12 -!- recon has joined.
21:47:19 -!- recon has left (?).
21:49:33 -!- Slereah has joined.
21:55:08 -!- slereah__ has quit (Read error: 110 (Connection timed out)).
22:09:12 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
22:13:26 -!- oklopol has joined.
22:20:00 -!- RedDak has quit (Remote closed the connection).
22:39:48 -!- timotiis has quit ("leaving").
22:40:12 -!- jix has quit ("CommandQ").
22:47:09 <ehird> 5
22:48:22 <oerjan> 2+3
22:50:54 <Slereah> {{},{{}},{{},{{}}},{{},{{}},{{},{{}}}},{{},{{}},{{},{{}}},{{},{{}},{{},{{}}}}}}
22:52:47 <ehird> 10
22:57:48 <oerjan> no thanks
22:58:10 <Slereah> Sold!
23:00:29 <ehird> ^^ most confusing conversation ever ^^
23:00:56 <Slereah> I hope I didn't just sold you my sister or something.
23:11:40 -!- cmeme has quit (Read error: 104 (Connection reset by peer)).
23:14:39 -!- Corun has quit (Read error: 110 (Connection timed out)).
23:38:36 <ehird> behold: #web
23:38:38 <ehird> [23:37:34] <Windrose> ehird: COBOL is a bad idea? You have an objective reason for that as well?
23:38:48 <ehird> the second-best place for esoteric programmers, apart from #esoteric
23:40:41 <oerjan> i vaguely recall even COBOL is objective these days.
23:41:54 <ehird> hehe
2008-01-22
00:24:06 -!- puzzlet has quit (Remote closed the connection).
00:24:11 -!- puzzlet has joined.
00:35:15 -!- immibis_ has joined.
00:35:36 -!- immibis_ has changed nick to immibis.
00:54:36 -!- sebbu2 has quit ("@+").
01:03:25 -!- Corun has joined.
01:05:06 -!- Tritonio_ has joined.
01:12:26 -!- Corun has quit ("Arr.").
01:29:31 <GreaseMonkey> what's the "{{},{{}},{{},{{}}},{{},{{}},{{},{{}}}},{{},{{}},{{},{{}}},{{},{{}},{{},{{}}}}}}" for?
01:30:11 <oerjan> von neumann numeral 5
01:30:36 <oerjan> s/numeral/ordinal/, possibly
01:31:18 <GreaseMonkey> ok.
01:31:31 <GreaseMonkey> so it's not a cheap knock-off of RETURN?
01:32:14 <oerjan> no. perhaps the other way around... :D
01:32:46 <oerjan> n+1 = {0,1,...,n}
01:32:52 -!- Tritonio_ has quit (Remote closed the connection).
01:40:31 <ehird> you knokw what we mean?
01:40:46 <ehird> *need
01:40:56 <ehird> a minesweeper unit cell :)
02:01:39 <ehird> Lisp WTF: progn is a special form, whereas it can be trivially defined as a function
02:01:41 <ehird> (defun my-progn (&rest args) (if (endp args) nil (car (last args))))
02:01:50 <ehird> Probably a reason for it
02:03:08 <oerjan> it's considerably older than the &rest keyword i think
02:04:05 <ehird> oerjan: this is a good piont
02:04:06 <oerjan> hm i vaguely recall originally you could have goto's in it
02:04:07 <ehird> *point
02:04:17 <ehird> oerjan: however, it is still true inthe Common Lisp spec
02:04:25 <ehird> which most definately has all that's required for the above
02:04:45 <oerjan> perhaps you still can have goto's and labels in it
02:05:04 <ehird> no
02:05:07 <ehird> see: CL hyperspec
02:05:35 <ehird> (that is: http://www.lisp.org/HyperSpec/Body/speope_progn.html )
02:05:40 <ehird> also
02:05:43 <ehird> you are thinking of prog
02:05:44 <ehird> not progn
02:05:44 <ehird> iirc
02:06:03 <ehird> If progn appears as a top level form, then all forms within that progn are considered by the compiler to be top level forms. ;; maybe this is why it's a special form
02:06:14 <oerjan> ah
02:06:26 <ehird> but that's a pretty bizzare rule
02:06:26 <ehird> who uses that?
02:06:36 <oerjan> it's to allow macros to expand to more than one declaration
02:06:40 <ehird> ahh
02:06:47 <ehird> (i guess nobody uses the 2 roman numeral outputs either, but this IS common lisp)
02:06:55 <oerjan> i vaguely recall that too :)
02:07:02 <ehird> (how I long for Scheme to be practical, I do...)
02:07:49 <ehird> hmm
02:07:53 <ehird> emacs' lisp indentation is fuckde
02:08:02 <ehird> the first term of an IF is indented to the condition but beyond that 2 spaces
02:08:06 <ehird> which is emacs lisp convention
02:08:09 <ehird> (because it has an implicit progn)
02:11:10 <ehird> aha
02:11:14 <ehird> SLIME fixes that up nicely.
02:14:55 <ehird> Possibly I am the only person who is going to use Lisp and Haskell in harmony as my only two 'main' languages for writing the web apps running my website..
02:16:51 * oerjan feels obliged to mention Liskell
02:17:01 <oerjan> not that i've actually tried it...
02:17:07 <ehird> liskell is... crappy
02:17:27 <ehird> Let's just say that it isn't an adequate Lisp, and it isn't an adequate Haskell
02:18:08 <ehird> oerjan: I believe Lisp and Haskell are the top of the chain as far as abstraction and elegance goes in programming languages
02:18:15 <ehird> I like them both equally, and will use them both equally
02:21:51 <ehird> oerjan: I definately like Emacs/SLIME enough that not using Lisp would be unacceptable just because I'd deny myself that luxury!
02:22:06 <ehird> it truly is rapid
02:35:45 <ehird> we all died
02:36:57 <oerjan> BRAINS... BRAINS...
03:13:17 -!- cmeme has joined.
03:15:10 -!- cmeme has quit (Read error: 104 (Connection reset by peer)).
03:17:07 -!- ehird has quit.
03:18:49 -!- cmeme has joined.
03:51:26 -!- uvanta has joined.
04:42:16 -!- immibis 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. Hard work pays off in the future, l).
04:46:23 -!- oerjan has quit ("Good night").
05:00:44 -!- adu has joined.
05:18:10 -!- RodgerTheGreat has quit.
05:23:05 -!- calamari has joined.
05:30:47 -!- cmeme has quit (Read error: 104 (Connection reset by peer)).
05:34:29 -!- cmeme has joined.
05:44:26 -!- calamari has quit ("Leaving").
06:00:16 -!- adu has left (?).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:14:18 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
08:47:32 -!- slereah__ has joined.
09:01:26 -!- 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.").
09:16:09 -!- puzzlet_ has joined.
09:28:59 -!- puzzlet has quit (Read error: 110 (Connection timed out)).
10:28:56 <slereah__> There seem to be pages that already exist in the "wanted pages"
10:29:27 <slereah__> I think because of different case.
10:29:53 <slereah__> Also vaguely different spellings
10:31:58 <uvanta> for example?
10:32:44 <uvanta> maybe a bot can handle it, but if there's not so much case of it, we can just fix it one by one
10:32:47 <slereah__> Turing Tarpit instead of Turing tarpit
10:32:52 <slereah__> Turing machines
10:33:46 <uvanta> let's create some redirect pages then
10:34:04 <slereah__> Will do.
10:34:20 <slereah__> As soon as my connection gets better.
10:35:43 * uvanta will help
10:37:55 <slereah__> All better.
10:38:13 <slereah__> I suppose that "Weird" is supposed to be "Wierd"?
10:39:26 <uvanta> yeah, Wierd is the name of an esolang
10:41:34 <uvanta> after checking http://esolangs.org/w/index.php?title=Special:Wantedpages
10:42:34 <uvanta> I think we may have some policy like, say, "You can state the author of language, but don't link it"
10:54:38 -!- Tritonio_ has joined.
12:15:58 <slereah__> The Post machine is much better to make some Brainfuck interpreter.
12:16:14 <slereah__> The + and - are shorter to do
12:37:09 -!- oerjan has joined.
13:10:49 -!- jix has joined.
13:28:48 -!- RodgerTheGreat has joined.
13:53:50 -!- Tritonio_ has quit (Remote closed the connection).
14:08:49 -!- helios24 has joined.
14:32:51 -!- ehird has joined.
14:34:09 <ehird> wow Liskell is serious
14:34:09 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
14:34:12 <ehird> that's bizzare
14:37:18 -!- oklopol has joined.
14:43:05 -!- uvanta has quit ("blame!").
14:45:21 <RodgerTheGreat> Liskell?
14:45:33 <RodgerTheGreat> lisp + haskell = eldrich horror?
14:45:33 <oerjan> haskell with lisp syntax
14:45:35 <ehird> It's haskell with a lot of prefix notation and parentheses
14:45:39 <ehird> oerjan: wrong
14:45:43 <RodgerTheGreat> lol
14:45:47 <oerjan> not?
14:45:48 <ehird> liskell.com
14:45:50 <ehird> yes they have a dot com
14:45:51 <ehird> :|
14:45:55 <ehird> err
14:45:55 <ehird> dot org
14:45:56 <ehird> even worse
14:46:29 <oklopol> .org is bad?
14:46:38 <ehird> for something as silly as liskell?
14:46:39 <ehird> yeah.
14:47:03 <ehird> it deserves a single page in someone's personal site with no design, about 1.5 screenfuls long, calling it 'a little toy hack'
14:47:17 <RodgerTheGreat> ".org" is equivalent to saying "This is super serious guys"
14:47:29 <RodgerTheGreat> read in whatever funny voice you like
14:47:29 <oklopol> is that so?
14:47:34 <oklopol> we should get vjn.org
14:47:34 <oerjan> i never looked at it but my impression was it made it easy to add lisp-style macros to a haskell
14:47:42 <ehird> RodgerTheGreat: 'xactly... though my site is elliotthird.org :-)
14:47:51 <ehird> but then my site is super serious, guys!
14:48:02 <RodgerTheGreat> my site is rodger.nonlogic.org, which is also super serious
14:48:24 <ehird> the current iteration i'm working on uses about 5% of my horizontal screen real estate, heh
14:48:30 <ehird> but that's a good thing: it's easier to read small columns
14:48:40 * oerjan hails from oerjan.nvg.org, which indeed has no design :D
14:49:30 <oerjan> although that is nvg being pretentious about getting an .org, not me (canonical name is nvg.ntnu.no)
14:50:06 <ehird> my 'be all and end all' site has been in the works for a looong time now
14:50:23 <ehird> like late 2005 i decided i wanted a place to dump everything in a unified interface and all that jazz?
14:50:41 <ehird> and i've made dozens of half-baked attempts, given up on some half-way through... :-)
14:50:52 <ehird> eventually, elliotthird.org will work and have loads of stuff on..
14:51:05 <oerjan> a jazz site you say?
14:51:11 <ehird> heh
14:51:13 <ehird> no not quite
14:53:30 <ehird> http://img.skitch.com/20080121-g12n6u3knnpn96pcjqmb22yi4d.png this is the current iteration's design right now, i don't think i can get it any more minimalistic
14:54:16 <ehird> It probably only looks nice on Safari/mac and Firefox/mac
14:54:21 <ehird> I dread to think what it looks like in IE
14:55:14 <oerjan> well the .png looks fine in IE ;)
14:55:20 <ehird> gosh
14:55:21 <ehird> really
14:55:50 <ehird> i should make the whole site an imagemapped png :-)
14:55:58 <ehird> so that everyone can have the lovely rendering and fonts of Safari/mac!
14:56:07 <ehird> better not use transparency though for fear of IE :D
14:56:19 <Asztal> no no, use SVG!
14:56:29 <ehird> Asztal: im sure IE will love that
14:56:49 <Asztal> SVG with VML appended to the end!
14:57:17 <tejeez> no no no no no, use html and text!
14:57:29 <ehird> oerjan: you know i'd put a page up for you to test in IE but i don't have anywhere to do it, i'm still waiting to revamp elliotthird.org's server :P
14:57:38 <ehird> tejeez: now THAT's a weird idea!
15:01:09 -!- ehird has changed nick to progn.
15:01:19 -!- progn has changed nick to ehird.
15:01:29 <ehird> i never miss the oppertunity to register a good nick
15:01:57 <Asztal> .. how many do you have?
15:03:02 <RodgerTheGreat> ehird: I like it
15:03:11 <ehird> RodgerTheGreat: thanks :)
15:03:14 <RodgerTheGreat> it appeals to my aesthetic
15:03:46 <ehird> RodgerTheGreat: the css is 51 short lines, including blank ones
15:03:53 <ehird> the html is 39
15:04:00 <ehird> pretty good, i say
15:04:00 <RodgerTheGreat> nice
15:04:15 <ehird> also it scales pretty well with text upsizing/downsizing
15:04:18 <ehird> at least in safari
15:04:27 <ehird> the content area grows when you put it up, shoving the menu to the side
15:04:30 <ehird> and vise-versa for down
15:04:42 <RodgerTheGreat> the PHP parts of the source to my page are at least as long as the HTML parts, and my page displays properly on my palm pilot.
15:05:07 <ehird> bah, php. this is all going to be generated by some lisp or haskell code :)
15:05:17 <ehird> completely.. including the css
15:05:26 <ehird> 100% same structure of course
15:05:34 <ehird> just no fiddly html or css apart from in a DSL
15:05:39 <Asztal> my site looks better in lynx than in firefox.
15:05:49 <ehird> ah, i should try lynx
15:05:56 <ehird> it should work fine, my markup is completely cruft-free
15:06:09 <ehird> my only structure is:
15:06:26 <Asztal> as long as it's not DIV soup
15:06:34 <ehird> div#content { h1 "page title", ...content... }, div#info { h1 "Elliott Hird", ul#menu { ...menu items... } }
15:06:39 <ehird> two divs.
15:07:22 <ehird> hm, my site looks great in lynx
15:07:32 <ehird> the menu is at the bottom of the page, which is good because it means the content is at the top
15:07:43 <ehird> the code block is pushed to the left hand column, though, and is right below the second paragraph
15:07:46 <ehird> no blank line in between
15:07:48 <ehird> but there is one below
15:07:59 <ehird> there's nothing in my markup to say that should happen, so that's lynx' problem
15:08:45 <Asztal> is it just <p> and <pre>/<code> ?
15:09:08 <ehird> Asztal: <p>second paragraph</p><pre><code>the code</code></pre><p>third paragraph</p>
15:09:18 <ehird> (note: <pre><code> is a perfectly valid way of marking up code, it's the most sensible too)
15:09:41 <Asztal> that's how I do it too
15:11:01 <ehird> i might spontaneously decide to switch to html 4.01 without a doctype, in protest of the standards freaks :D
15:11:31 <ehird> i live by the motto of 'get some logically decent structure, add styling to your taste, done'
15:11:37 <RodgerTheGreat> I tend to do things the overly complicated way of replacing \n with <br>, etc
15:11:48 <ehird> RodgerTheGreat: that's semantically ugly though.
15:12:00 <RodgerTheGreat> it's more difficult but the presentation is more uniform cross platform
15:12:16 <ehird> uh how so
15:12:22 <ehird> <pre><code>CODE GOES HERE</code></pre>
15:12:26 <ehird> that is consistant
15:12:43 <RodgerTheGreat> no, the display of that construct is heavily dependent upon your browser
15:12:48 <RodgerTheGreat> and it's "consistent"
15:12:56 <ehird> how is it?
15:12:58 <ehird> do tell me
15:13:47 <Asztal> Isn't it good that a user agent can display the content in the most appropriate way for its platform?
15:14:28 <RodgerTheGreat> Asztal: that's a more reasonable criticism
15:14:39 <ehird> but seriously
15:14:45 <ehird> i have never seen <pre><code> display differently
15:14:59 <ehird> maybe you have linebreaks or indentation between <pre><code>, the code, and </code></pre>
15:15:02 <RodgerTheGreat> I have used browsers in my time that ignore one or both of those tags
15:15:39 <RodgerTheGreat> PalmScape, for one- many mobile browsers are guilty of this
15:15:53 <ehird> ah. palm os.
15:15:57 <RodgerTheGreat> however, basic tags like <br> are pretty much universally supported
15:16:04 <ehird> broken browsers on palm os are >not< my concern.
15:16:14 <RodgerTheGreat> smartphones, embedded systems, etc
15:16:22 <ehird> smartphones are very good at html nowadays.
15:16:28 <ehird> especially the iPhone and Nokia's
15:16:35 <ehird> well, iPhone just uses webkit
15:16:37 <ehird> so no wonder
15:16:41 <ehird> actually nokia's is based on webkit too
15:17:00 <ehird> anyway, my design also works in lynx/(e)links
15:17:06 <ehird> so the only uncertainity is about IE/win really.
15:17:13 <ehird> and that's very much good enough for me
15:17:33 -!- ais523 has joined.
15:17:47 <ehird> hello, ais523
15:17:50 <ais523> hello ehird
15:18:01 <Asztal> I think it's simple enough that it *should* work... it depends how the info section is pushed to the side... is it floated to the right?
15:18:13 <Asztal> or maybe even to the left
15:18:25 <ehird> Asztal: would you like me to dump my html and css code?
15:18:41 <Asztal> do you not have IE to test it?
15:18:43 <ehird> actually, i'll combine them: replace the <link rel> with a <style type="text/css"> for the purposes of other people testing it too
15:18:45 <ehird> Asztal: i'm on a mac
15:18:53 <ehird> i have parallels but cba to set up windows on it
15:18:56 <Asztal> ah, I see. I'll test it for you, then
15:20:00 <ehird> Asztal: http://rafb.net/p/K9CmuT12.txt
15:20:03 <ehird> html and css combined
15:21:10 <ehird> just take a screenshot i guess
15:21:15 <ehird> i can usually work thiings out
15:21:29 <ehird> err, the link rel is still in there. heh
15:21:31 <ehird> :)
15:21:36 <Asztal> it seems to work
15:22:15 <ais523> ehird: it looks great in w3m too
15:22:22 <ehird> ais523: what about emacsw3m
15:22:23 <ehird> :)
15:23:48 <ais523> doesn't seem to be on here
15:23:57 <ais523> Emacs opened it in Firefox when I tested
15:24:02 <ais523> (and it looks good there, of course)
15:24:03 <ehird> M-x w3m
15:24:18 <ais523> w3m [no match]
15:24:23 <ais523> and nothing in apropos either
15:24:33 <ehird> sudo apt-get install w3m-el
15:24:34 <ehird> :)
15:25:30 * ais523 does so
15:25:43 <ais523> although it took a while to get started because I take so long to type my wheel password...
15:27:16 <ais523> yes, it's fine on emacsw3m too
15:27:24 <ais523> looks exactly the same apart from the browser's UI
15:27:49 <Asztal> http://xs123.xs.to/xs123/08042/ehird2999.png
15:27:51 <ehird> and the lack of colours right? ;)
15:27:57 <ais523> yes
15:27:59 <Asztal> and wrapped: http://xs123.xs.to/xs123/08042/ehird1687.png
15:28:11 <ehird> Asztal: hey that's good!
15:28:18 <ehird> yeah i know about the gray bar when it wraps
15:28:24 <ehird> i can't think of a good solution.
15:28:30 <ehird> apart from crazy margin cap
15:28:32 <ehird> *crap
15:28:54 * ais523 is having a go at the 2006 ICFP for fun
15:29:13 <ais523> it's over a year after the entry deadline, of course...
15:29:47 <oerjan> try the 2007 one, only about half a year overdue ;)
15:29:58 <ais523> the 2006 one looks more interesting
15:30:09 <ehird> you know, my website's design being all compatible doesn't matter that mcuh :P
15:30:28 <ehird> it's going to contain some craps of code like my esolang implementations, stuff about Lisp, and about 3 other things.
15:30:32 <ehird> most important site ever!
15:30:48 * ais523 doesn't even have a website
15:31:05 <ehird> i like having a place i can set a URL field to
15:31:13 <ehird> just my tag on the web
15:31:27 <Asztal> "URLs including the words "topsites" "toplist" "scientology" and "porn" will be banned automatically." - xs.to terms of service
15:32:42 <ehird> Asztal: cul^H^H^Hreligious discrimination! ;)
15:32:57 <Asztal> ais523: get a gopher site!
15:33:02 <ehird> (technically, the above is what i would respond to if it had said 'christian' or anything else, too)
15:34:35 -!- RedDak has joined.
15:36:44 <ehird> Asztal: gopher is fun :P
15:45:12 <ais523> what computational class is CSS?
15:46:06 <ehird> um
15:46:08 <ehird> 'none'
15:46:15 <ehird> the same as HTML
15:47:33 <ais523> it must be better than that, surely?
15:47:38 <ais523> the problem is likely the lack of loops
15:47:43 <ehird> ais523: how is it better?
15:47:47 <ehird> you have selectors
15:47:48 <Asztal> except in IE, whether javascript expressions can be used as property values
15:47:51 <Asztal> where*
15:47:52 <ehird> and { property: value; }
15:47:57 <ehird> property is a symbol
15:48:03 <ais523> well, you can use CSS to create new elements on the page, even in standards-compliant browsers
15:48:05 <ehird> value is a colour value (rgb or hex) or a symbol
15:48:11 <ehird> ais523: you mean before: and after:
15:48:15 <ais523> I wonder if you're allowed to use it to create <STYLE> elements?
15:48:16 <ehird> that's just text
15:48:17 <ehird> and no
15:48:19 <ehird> you can't
15:48:26 <ais523> Acid2 used it to create table cells IIRC
15:48:31 <ehird> hm
15:48:37 <ehird> well it's computationally useless
15:48:54 <Asztal> there are some interesting selectors in CSS3, such as :not() and :empty, but I can't see how you'd use them :)
15:49:11 <ehird> because CSS3 is well-known for being implemented
15:49:13 <Asztal> but there is this: http://www.cssplay.co.uk/menu/amazing.html
15:49:15 <ehird> and being useful
15:49:36 <ehird> heh that is pretty cool
15:49:52 <ehird> that's... not any demonstration of css's computational power
15:50:12 <Asztal> no, not really
16:00:24 <ais523> CSS3 has some pretty interesting manipulate-the-document rules, but unfortunately nothing that would allow a new <style> element to be created
16:00:56 <ais523> except for importing content by URL, in which case it couldn't be changed
16:04:07 -!- RedDak has quit (Read error: 113 (No route to host)).
16:06:38 <ehird> ais523: css3 is crap
16:06:39 <ehird> :)
16:06:42 <ehird> it solvse nothing useful
16:07:14 <ais523> there were some uses for it on Wikipedia that we found
16:07:24 <ehird> like what
16:07:26 <ais523> such as working out how to invent a not-first-section class
16:07:39 <ehird> gosh because that's so hard to do non-automatically
16:08:05 <ais523> the automation via CSS was more useful than either changing the software or persuading all editors to write it in
16:08:23 <ais523> OTOH, I can't remember off the top of my head exactly why it was important to have
16:08:33 <ehird> wikipedia is so full of useless processes :)
16:08:41 <ehird> it will soon be renamed to dilbertpedia
16:09:08 <ais523> if a process gets too useless or disruptive, normally someone will jump in and make fun of it and generally troll it
16:09:15 <ais523> after a while hopefully other people catch on
16:09:29 <ehird> ais523: yeah like the dreaded taboo of customizing the mediawiki installation
16:09:33 <ehird> instead, let's enslave all editors.
16:09:36 -!- puzzlet_ has quit (calvino.freenode.net irc.freenode.net).
16:09:36 -!- Deewiant has quit (calvino.freenode.net irc.freenode.net).
16:09:36 -!- cherez has quit (calvino.freenode.net irc.freenode.net).
16:09:38 -!- EgoBot has quit (calvino.freenode.net irc.freenode.net).
16:09:38 -!- jix has quit (calvino.freenode.net irc.freenode.net).
16:09:38 -!- oerjan has quit (calvino.freenode.net irc.freenode.net).
16:09:38 <ehird> or use a silly css hack
16:09:45 <ehird> it's Holy Software, after all
16:10:21 <slereah__> Hello people.
16:10:31 <ais523> customising an installation can be hard when you're running svn unstable and updating frequently
16:11:19 <ais523> oh, I remember what it was now, we wanted message boxes to say 'article' if used in the first section and 'section' if used in a different section
16:12:12 <ais523> oh and hello slereah__
16:12:33 -!- jix has joined.
16:12:33 -!- oerjan has joined.
16:12:37 -!- puzzlet_ has joined.
16:12:37 -!- Deewiant has joined.
16:12:37 -!- cherez has joined.
16:12:37 -!- EgoBot has joined.
16:13:03 <ehird> (LET ((#:G2102 1) (#:G2103 1)) (LET ((#:G2104 (EQUAL #:G2102 #:G2103))) (IF #:G2104 #:G2104 (OR (ERROR (FORMAT NIL "Test failed, expected ~S but got ~S" #:G2102 #:G2103))))))
16:13:12 <ehird> that's the expansion of my toy macro (test 1 1)
16:13:15 <ehird> :D
16:13:28 <ehird> right down to the expansion of "if"!
16:13:34 <ehird> how nice and ugly
16:13:39 <ehird> i <3 gensym
16:13:55 <ehird> wow
16:13:57 <ehird> unbound variable
16:13:58 <ehird> that's great
16:13:59 <ehird> :D
16:14:21 <oerjan> WHAT! But it is not referentially transparent! *gets carried away by people in white coats*
16:14:36 <ehird> oerjan: er, how so?
16:14:42 <ehird> it's only not referentially transparent if.. it fails
16:14:43 <ehird> :)
16:15:11 <oerjan> it does not always return the same value for the same input, does it?
16:15:29 <ehird> oerjan: (test 1 1) will always be T
16:15:39 <ehird> (test 1 2) will abort execution, etc
16:15:48 <oerjan> i was speaking about gensym
16:15:53 <ehird> oh
16:15:56 <ehird> this is true
16:16:03 <ehird> however
16:16:16 <ehird> oerjan: cons isn't either
16:16:37 * oerjan looks around shiftily
16:16:42 <slereah__> If I replace "0" and "1" by True and False on my Post machine on Python, will it be faster?
16:16:50 <ehird> slereah__: lol.
16:16:56 <oerjan> it is if you throw away mutation...
16:16:56 <ehird> oerjan: mwahahha
16:17:08 <ehird> oerjan: Common Lisp requires mutation of cons pairs
16:17:08 <ehird> :)
16:17:14 <slereah__> Well, I tried!
16:17:21 <ehird> techncially you could make REPLACA and REPLACD copy ...
16:17:28 <ehird> but then they'd not be referentially transparent :P
16:18:17 <oerjan> slereah__: use Frue and Talse
16:18:35 <ais523> and FILE_NOT_FOUND?
16:18:36 <ehird> ~Frue = Brilliant
16:18:39 <ehird> ~Talse = 5
16:18:41 <slereah__> Flue and Torse?
16:18:49 <ehird> ~okay = GAZILLION
16:19:00 <ehird> ^^^ NOT table for Frue/Talse system ^^^
16:19:13 <oerjan> yay
16:19:27 <ehird> Hmm
16:19:32 <ehird> I have a question about FORMAT
16:19:46 <ehird> Is it turing complete? A bitwise cyclic tag shoudln't be too hard to write I think
16:20:02 <oerjan> i _know_ i have seen that discussed before
16:20:13 <oerjan> i just don't remember the answer
16:20:22 <ehird> there's a 99bob in it
16:20:35 <ehird> http://99-bottles-of-beer.net/language-common-lisp-114.html
16:20:39 <oerjan> probably in this channel
16:20:46 <ehird> but there IS a (loop ...) in there
16:20:46 <ehird> so..
16:21:39 <ehird> "Seeing as Common Lisp supports object orientation, I was surprised that this was procedural. I don't know any Lisp, but I DO know Common Lisp has OOP. Allegro CL is a good example." (from a 99bob page) single-paradigm languages FOREVER!!112
16:22:14 <ehird> oerjan: Wait, you can write a BCT interpreter iin regexps.
16:22:15 <ehird> :|
16:22:58 <ais523> easily
16:23:59 <ehird> So..
16:24:03 <ehird> regexps are TC?
16:24:10 <ehird> that's... rather silly :)\
16:24:45 <oerjan> repeating substitution might be
16:24:53 <oerjan> even if a single one isn't
16:24:59 <ehird> ahh, does repaeting substitution not count
16:25:43 <ais523> repeating substitution is multiple regexps
16:25:51 <ais523> the same one several times, in fact
16:25:56 <ais523> that's where the TC-ness comes from
16:26:12 <ais523> now a more interesting question is: is single substitution without /g Muriel-complete?
16:26:29 <ehird> beats me?
16:26:35 <ehird> hm
16:26:36 <ais523> that is, allow a regexp to substitute on itself, then allow the output to operate on itself, and so on
16:26:40 <ehird> i don't get bct's 'cyclic execution'
16:26:48 <ehird> does the program repeat from the beginning after execution?
16:27:27 <oerjan> isn't everything a ring, essentially
16:27:45 <ehird> i'm dumb
16:27:46 <ehird> :)
16:27:57 <oerjan> with a pointer into the current spot
16:28:26 <ehird> ok, right now how i'm coding it,
16:28:30 <ehird> if you give it the program
16:28:32 <ehird> 01101011
16:28:38 <ehird> it will take the 0, do somethiing with the data
16:28:39 <ehird> giving
16:28:42 <ehird> 1101011
16:28:43 <ehird> etc
16:28:45 <ehird> until just 1
16:28:48 <ehird> then it'll stop.
16:28:51 <ehird> that is wrong?
16:30:22 <ais523> whenever a command is read from the start of a BCT program, the same command is appended to the end
16:30:29 <ehird> so:
16:30:31 <ais523> look at the Wiki Cyclic Tag example, for instance
16:30:32 <ehird> 0110
16:30:36 <ehird> is run then
16:30:38 <ehird> 1100
16:30:39 <ehird> then
16:30:40 <ehird> 1001
16:30:41 <ehird> etc?
16:31:09 <oerjan> "the commands are executed in cyclic sequence from left to right (the leftmost bit following next after the rightmost bit)"
16:31:28 <ehird> is what i said right?
16:31:46 <oerjan> essentially
16:32:02 <ais523> that's it
16:32:19 <ais523> although the commands in BCT are 10 and 11 rather than just 1
16:32:22 -!- oerjan has quit ("Dinner").
16:34:07 <ehird> ais523: if i want to insert a literal number 0
16:34:10 <ehird> after the group 1
16:34:13 <ehird> \10 tries to get group 10
16:34:17 <ehird> how do i do that?
16:36:32 <ehird> ais523: ping :P
16:37:43 <slereah__> Ais is dead!
16:40:01 <ais523> no I'm not
16:40:13 <ais523> it's just that saying my name doesn't trigger a notification for some reason
16:40:19 <slereah__> ZOOOOOMBIE!
16:40:22 <ehird> ok :P
16:40:23 -!- slereah__ has changed nick to Slereah.
16:40:27 <ais523> probably because I have visible bell turned on because the beep on this laptop is so annoying
16:40:33 -!- Corun has joined.
16:43:01 <ais523> grr... the 'Befunge' on shinh.golf.org seems to be 93 rather than 98
16:43:15 <ehird> ais523: befunge 98 is hideously complex
16:43:20 <ehird> besides, there's only one interpreter for it that works
16:43:33 <ehird> (CCBI)
16:49:14 <ehird> ais523: do you know?
16:49:15 <ehird> re; regexps
16:50:28 <ais523> I have CCBI installed here
16:50:46 <ais523> and what's wrong with hideously complex esolangs?
16:51:18 <ehird> meh
16:51:19 <ehird> anyway
16:51:23 <ehird> regexp question! :P
16:51:37 <graue> is perl ineligible for golf? it is hideously complex, after all
16:51:54 <graue> not to take sides or anything
16:52:12 <ehird> graue: hehe
16:52:16 <ehird> i'm just saying
16:52:18 <ehird> befunge98 isn
16:52:20 <ehird> 't popular
16:52:23 <ehird> because unlike e.g. brainfuck
16:52:28 <ehird> it is not trivial to learn or implement
16:52:37 <ehird> and not really *that* more interesting, if you know -93
16:52:40 <ais523> it's not that hard to learn
16:52:42 <ehird> so: it's not popular.
16:52:46 <ais523> and I find it interesting
16:52:58 <ais523> have you seen my latest Anarchy Golf problem, by the way
16:53:04 <ais523> maybe Brainfuck will win this one
16:53:10 -!- sebbu has joined.
16:53:23 <ehird> yeah probably
16:53:37 <ais523> it would of course do better if they changed their EOF convention to something better for golfing
16:53:39 <ais523> EOF=0 is best
16:53:48 <ehird> what do they have
16:54:23 <ais523> EOF=-1
16:54:42 <ais523> my personal preference is EOF=(no change), which is decent for golfing but not as much as =0
16:54:44 -!- Corun has quit ("This computer has gone to sleep").
16:55:00 <ehird> i like eof=0
16:55:01 <ehird> it's simple.
16:55:03 <ehird> also:
16:55:04 <ehird> main=interact reverse
16:55:05 <ehird> haskell :D
16:55:40 <ehird> i'm pretty low down the list, though
16:56:08 <ehird> i'm going to make a sed one
16:56:16 <ehird> with the restriction that you can't have | in the text ;P
16:56:30 <ais523> oh, and I told you that recursive main is allowed in C
16:56:38 <ais523> I know it is because I used it for my C entry
16:56:46 <ehird> you can do it but its forbidden bythe standard
16:56:48 <ehird> gcc lets you.
16:57:38 <ais523> it's only the C++ standard that forbids it, I'm pretty sure
16:57:47 <ehird> hmm: s/([^|])(.)(.*)$/$1$3\|$2/g
16:57:49 <ehird> why doesn't that work...
16:58:02 <ehird> it does nothing
16:59:35 -!- Corun has joined.
16:59:55 -!- timotiis has joined.
17:00:08 * ais523 finally got UMIX compiled
17:00:31 <ais523> the program at the heart of the 2006 ICFP
17:00:47 <ais523> it needs double-bootstrapping to compile, and you have to write the interpreter yourself
17:06:12 -!- Corun has quit ("This computer has gone to sleep").
17:07:27 <ehird> ais523: anyway
17:07:31 <ehird> what about my regexp group problem
17:07:31 <ehird> :(
17:08:48 <Asztal> I assume for this golf challenge that the program has to terminate? ;)
17:09:46 <ehird> Asztal: ofc
17:12:19 <Slereah> Is there a way to stop sys.stdin.read from requiring carriage return?
17:12:34 <ehird> Slereah: ofc not
17:12:35 <ais523> ehird: that regexp shown above is in Perl syntax
17:12:38 <ehird> this is a console driver issue
17:12:43 <ais523> sed uses the original grep syntax
17:12:43 <ehird> ais523: not that one.
17:12:51 <Slereah> Bloody hell.
17:12:54 <ais523> which one, then?
17:12:59 <ehird> ais523: i have things like \10
17:13:02 <ehird> but i want group \1
17:13:04 <ehird> then literal 0
17:13:05 <ehird> in my replacements
17:13:06 <ehird> how?
17:13:24 <ais523> which language?
17:13:34 <ehird> cl-ppcre :P
17:13:38 <ehird> perl-compatible
17:13:49 <ais523> it's \g{1}0, I think
17:13:55 <ais523> but it might be a different lowercase letter than g
17:14:09 <ehird> Reference to non-existent register 111 in replacement string [Condition of type CL-PPCRE:PPCRE-INVOCATION-ERROR]
17:14:21 <ehird> i'll show my code
17:14:37 <Slereah> CAT program on der Postenmachine : a:,:b;b:.:a
17:14:46 <ehird> ais523: http://paste.lisp.org/display/54642
17:17:12 <ais523> the \g{...} syntax is correct for inline backreferences
17:17:22 <ais523> I didn't realise that PCRE could be used for substitutions, though
17:17:27 <ais523> although I suppose it was inevitable
17:17:34 <ais523> you could try ${1}0, which is how it would be written in Perl
17:18:27 <ehird> [17:17:22] <ais523> I didn't realise that PCRE could be used for substitutions, though
17:18:29 <ehird> it always has been
17:18:41 <ehird> besides cl-ppcre dodesnt use pcre
17:18:44 <ehird> ppcre != pcre
17:23:42 <ais523> aha
17:23:50 <ais523> well my PCRE docs probably won't help you, then
17:25:20 <ehird> ais523: BCT question
17:25:21 <ehird> 00111!101
17:25:21 <ehird> 01101!01
17:25:25 <ehird> i hope that's correct
17:26:55 <ehird> ais523: actually, perl question
17:27:04 <ehird> what's the simplest way to make a subroutine like it's a perl -p block?
17:27:11 <ehird> i.e. entirely s/a/b/; statements
17:27:20 <ehird> takes one arg, performs the substitutions, returns
17:27:48 <ehird> (Somebody should think before speaking: 'There's a reason there's no obfuscated Perl contest: "everybody's a winner!".')
17:28:00 <ais523> while(<>){block} does a perl -p around the block
17:28:17 <ehird> ais523: no no that's not what i said
17:28:49 <ais523> what do you want, then
17:29:02 <ehird> myfunc("foo") -> "replcaed-foo"
17:29:09 <ehird> where myfunc contains s/a/b/; statements
17:29:18 <ehird> i can do my $foo = shift; $foo = s/... etc
17:29:21 <ehird> but that's verbosoooooose
17:29:33 <ais523> sub myfunc{local$_=shift;s/a/b;$_;}
17:30:00 <ais523> you can leave off the local if you don't mind clobbering the caller's $_
17:30:13 <ehird> local? isn't that.. DYNAMICALLY SCOPED?!
17:30:22 <ais523> no, that's my
17:30:29 <ais523> local is like STASH/RETRIEVE in INTERCAL
17:30:39 <ais523> it stores the variable on its own stack, and restores it at the end of the block
17:30:49 <ehird> um
17:30:52 <ehird> my is lexically scoped
17:31:01 <ais523> good point, I keep getting those muddled
17:31:09 <ehird> local is dynamically scoped, then
17:31:10 <ehird> ewwwwwwwwwwwwwwww!
17:31:24 <ais523> the fact that I have to resort to INTERCAL to make sense of Perl says something about either me or Perl, or possibly both
17:32:19 <ais523> it seems string-reverse can be done in 3 in GolfScript. I still haven't figured out how to do it at all...
17:32:35 <ehird> ais523: my bct interp is wrong i think
17:32:41 <ehird> #!perl sub step { local $_ = shift; s/0(.*)!.(.*)/${1}0!\2/; s/1(.)(.*)!1(.*)/$1${2}1!1\3\1/; s/1(.)(.*)!0(.*)/$1${2}1!0\3/; $_; } my $foo = "00111!101"; while (true) { print $foo, "\n"; my $new_foo = step($foo); if ($foo == $new_foo) { break; } $foo = $new_foo; }
17:32:58 <ehird> (yes, even 17 liners fit on one line! mwahaha!)
17:33:07 <ais523> not if there's a # at the start of it...
17:33:13 <ehird> this is a good pont
17:34:09 <ais523> you seem to be mixing the \ and $ syntax for replacements
17:34:17 <ehird> yes. is that bad
17:34:19 <ais523> in Perl it's supposed to be $1 to replace group 1, although \1 works anyway
17:34:31 <ehird> does this even effect the program
17:34:35 <ehird> anyway replace \s with $s then
17:34:37 <ehird> i did that on my copy
17:34:42 <ehird> same output
17:35:55 <Slereah> a:>:b;b:>:c;c:>:d;d:>:e;e:>:f;f:>:g;g:>:h;h:@:i;i:j:0;j:<:k;k:@:l;l:m:1;m:<:n;n:@:o;o:p:2;p:<:q;q:@:r;r:s:3;s:<:t;t:@:u;u:v:4;v:<:w;w:@:x;x:y:5;y:<:z;z:@:aa;aa:bb:6;bb:<:cc;cc:@:dd;dd:7:7;0:<:1;1:<:2;2:<:3;3:<:4;4:<:5;5:<:6;6:<:7;7:.:a
17:35:59 <Slereah> Yay
17:36:09 <Slereah> + function for der BF interpreter
17:36:40 <ehird> I am about to create a wiki page called (QUOTE (QUOTE FOO))
17:36:42 <ehird> The ugliest URL ever!
17:37:03 <ais523> I doubt it
17:37:26 <Slereah> I don't feel repulsed by it
17:37:50 <ais523> ehird: you need ^ at the start of the regexes and $ at the end
17:37:54 <ais523> otherwise they match at the wrong place
17:38:19 <ehird> it seems to do something now
17:38:46 <ehird> ais523: you deleted wikipedia's template:lowercase, can you show me what the original css-based version was? i want to make a page on the wiki that has a lowercase title :P
17:39:19 <ais523> http://en.wikipedia.org/wiki/Special:Search?go=Go&search=wikipedia:User:One/Title
17:39:46 * ais523 tests: http://en.wikipedia.org/wiki/Special:Search?go=Go&search=tests
17:39:54 <ais523> Konversation is expanding [[]] notation for me...
17:40:03 <ais523> either that or Freenode is
17:40:27 <ehird> konversation does that
17:40:28 <ais523> and that was an ugly nonportable hack, which is why it was banned from articles
17:40:29 <ehird> isn't that nice
17:40:36 <ehird> ais523: of course, but its fun
17:40:44 <ehird> omaegh WIKI IST DUWN
17:40:48 <ehird> 403 forbid'n
17:41:00 <ehird> when you do that submit'n th'ng
17:41:34 <ehird> hmm
17:41:38 <ehird> apparently its because of my title stuff
17:41:43 <ehird> i must have said some offensive thiings!
17:42:33 <ehird> ah
17:42:35 <ehird> divs are banned
17:42:47 <ehird> wtf
17:42:49 <ehird> so are <span>s
17:43:02 <ais523> anti-spambot measure
17:43:08 <ehird> ridiculous
17:43:20 <ais523> you can make do with something more semantically correct like <b style='...'>
17:43:20 <ehird> does it go away if i register
17:43:23 <ais523> no
17:43:27 <ais523> you just have to use some other element
17:43:34 <ehird> ok
17:43:37 <ehird> <b> doesn't work
17:43:42 <ehird> wait
17:43:43 <ehird> does it?
17:43:44 <ehird> no.
17:43:50 <ehird> with:
17:43:50 <ehird> <b id="title-override" class="topicon" style="display: block; float: left; position: absolute; left: 0; top: 0px; width: 98%; padding-top: 5px; display:none"><b style="display: block; background: white; font-size: 188%; padding-top: 0.5em; padding-bottom: 0.1em; position:relative; left:0.5em; margin-top:-0.2em;">qq</b></b>
17:44:07 <ais523> does that hit the spam filter or just misdisplay?
17:44:15 <ehird> misdisplay
17:44:21 <ehird> no title replcaement, and you get </b> in the article
17:44:47 <ais523> that shouldn't happen
17:44:56 <ehird> wow really? ;)
17:45:10 <graue> i think display: is blocked, or display:none is
17:45:49 <ais523> oh, and that code won't work because it depends on some of Wikipedia's sitewide stuff
17:45:55 <ehird> ais523: does it? damnit
17:45:58 <ais523> class="topicon" means something on Wikipedia but not on Esolang
17:46:02 <ehird> ais523: ah
17:46:08 <ais523> sorry for not remembering earlier
17:46:09 <ehird> ais523: is this actually possible on esolang?
17:46:14 <ehird> with tons of hacks :D
17:46:25 <ais523> yes, you can just copy the topicon code from Wikipedia
17:46:39 <ais523> I think it's on http://en.wikipedia.org/wiki/Special:Search?go=Go&search=MediaWiki:Monobook.css, but that's from memory so I'm not sure
17:46:45 <ehird> ok what about the b problem
17:46:46 <ehird> :|
17:47:07 <ais523> you could just use an element that's naturally block and get rid of the displays
17:47:21 <ais523> the problem is that the naturally block elements all tend to do something that you'd have to cancel out
17:47:38 <ehird> and most will be blocked.
17:47:47 <ais523> and it isn't as if the title overwrite hack didn't fail on many browsers/font sizes anyway
17:47:53 <ais523> so I suggest just using {{wrongtitle}}
17:47:53 <ehird> here's my current code
17:47:56 <ehird> <b id="title-override" style=" position:absolute; z-index:100; top:10px; display: block !important; float: left; position: absolute; left: 0; top: 0px; width: 98%; padding-top: 5px; display:none"><b style="display: block; background: white; font-size: 188%; padding-top: 0.5em; padding-bottom: 0.1em; position:relative; left:0.5em; margin-top:-0.2em;">qq</b></b>
17:48:06 <ehird> the display:block !important is from the .topicon
17:48:11 <ehird> so the display:none is redundant, oddly.
17:48:16 <ehird> ais523: meh :) this is fun!
17:48:16 <ais523> yes, that's to override the display:none
17:48:24 <ais523> so that skins without topicon wouldn't display the override
17:48:32 <ais523> you can get rid of them both because they cancel each other out
17:48:34 <ehird> ah
17:48:43 <ehird> ooh
17:48:44 <ehird> i have something now
17:48:48 <ehird> <b style="display: block; background: white; font-size: 188%; padding-top: 0.5em; padding-bottom: 0.1em; position:relative; left:0.5em; margin-top:-0.2em;">qq
17:48:53 <ehird> appears bold in the title place
17:48:58 <ehird> and </b> is still there
17:49:10 <ehird> aha
17:49:11 <ehird> got it
17:49:17 <ehird> mediawiki doesn't like nested <b>s
17:49:18 <ehird> :)
17:49:34 <ehird> so i use an <i>
17:49:38 <ais523> of course, because it's mixed up with the whole ''' nonsense
17:50:51 <ehird> ok i now have the title working BUT
17:50:55 <ehird> 1. it's a bit too low
17:51:05 <ehird> 2. some of the very top pixels of the previous title are visible
17:51:44 <ais523> you have to keep tweaking the numbers due to the presence/absence of sitenotices
17:51:53 <ais523> I used to have great fun trying to keep it in the right place on Wikipedia
17:52:13 <ehird> :D
17:52:17 <ehird> I love this!
17:53:57 <ehird> awesome
17:53:58 <ehird> i did it
17:53:59 <ehird> <b id="title-override" style=" position:absolute; z-index:100; top:10px; display: block; float: left; position: absolute; left: 0; top: 0px; width: 98%; padding-top: 5px; font-weight: normal;"><i style="font-style: normal; display: block; background: white; font-size: 188%; padding-top: 0.3em; padding-bottom: 0.3em; position:relative; left:0.5em; margin-top:-0.2em;">qq</i></b>
17:54:11 <ais523> I'd better also point out that it has been known to display differently for logged-in and not-logged-in users
17:54:16 <ais523> due to them having slightly different UI
17:54:44 <ehird> ... shit, i'd better log in then
17:55:22 <ehird> ais523: so when is there going to be an official mediawiki way of doing this
17:55:22 <ehird> ;)
17:56:26 <ais523> {{DISPLAYTITLE}} is in the most recent versions (which is what {{lowercase}} uses now), but it's deliberately restricted to not allow a page's title to not be a legal link to the page
17:59:22 <ehird> does the esolang wikik hvae that?
17:59:33 <ais523> you could try. Syntax is {{DISPLAYTITLE:real title}}
17:59:44 <ais523> but remember that the real title must form a valid link to the page
17:59:48 <ehird> answer: no, it doesn't
17:59:55 <ais523> so it's mostly only useful for lowercasing the first letter
18:00:01 <ais523> and it doesn't work on preview
18:00:12 <ais523> but if it shows literally on the page it must be because it isn't installed
18:07:09 <Slereah> The input works!
18:07:19 <Slereah> Now, to castrate the final 1's.
18:08:07 <Slereah> (The BF interpreter will mark the current instruction by starting the byte with 1, so first, to cut off all the eventual 1's)
18:09:09 <ais523> Slereah: what projet is it that you're working on at the moment?
18:11:23 <Slereah> Brainfuck interpreter on the Post machine
18:11:23 <Slereah> Which is pretty much like the one on the Turing machine, except more annoying.
18:11:43 <Slereah> But then again, it is more pleasing in some areas.
18:12:03 <ais523> The Post machine is the P''-like one, isn't it?
18:12:46 <Slereah> Such as the +/- instructions, which is barely two lines long.
18:12:49 <Slereah> It's a minimalist Turing machine.
18:13:09 <ehird> Behold: qq, the craziest language ever! (Warning: exaggerations may be present) http://esoteric.voxelperfect.net/wiki/Qq
18:13:16 <ehird> The question, of course, is: is it turing complete?
18:13:19 <Slereah> There's print 0, print 1, left, right, and go in state a if one, b if 0
18:13:32 <Slereah> (I just used @ to flip the bit of the cell)
18:13:45 <Slereah> It's pretty much Boolfuck with states.
18:14:43 <ais523> "Both arguments must be quoted programs. They are munged together."
18:14:52 <ehird> ais523: concatentated
18:14:52 <ais523> that line reminds me of TURKEY BOMB for some reason
18:14:52 <ehird> :)
18:14:54 <ehird> also
18:14:58 <ehird> i updated the page
18:15:01 <ehird> about evaluation
18:15:28 <Slereah> There was a page on evaluation?
18:15:30 <ehird> here's a cat-one-character program:
18:15:32 <ehird> (1(7)(6))
18:15:46 <ehird> hmm
18:15:48 <ehird> i should make 1 0
18:15:51 <ais523> I think ehird refers to the second change he made to Qq
18:16:23 <Slereah> Oh.
18:18:39 <ehird> ais523: ok
18:18:42 <ehird> i now have commands 0-8
18:18:48 <ehird> got any suggestions for a last one to make it 9? ;)
18:18:56 <ehird> (by the way, it intentionally doesn't have a while loop)
18:19:02 <ehird> (i don't know if it's turing complete without one though)
18:20:09 <ehird> oh and by the way
18:20:13 <ehird> new cat-one program:
18:20:16 <ehird> (0 6(5))
18:25:17 <ehird> ais523: http://esoteric.voxelperfect.net/wiki/1cnis was this what you used for the proof?
18:25:41 <ais523> it's what I was going to use for the proof
18:25:48 <ais523> but I've since changed my mind since I realised it didn't work
18:26:03 <ais523> unless you can find some way to generate a string in it that grows as 2^2^n
18:26:17 <ehird> what did you use in the end?
18:26:21 <ehird> just a mess of perl right?
18:27:05 <ais523> the actual initial condition has no program that generates it
18:27:08 <ais523> the Perl is an approximation
18:27:19 <ais523> but I didn't manage to run it start to finish, because 2^2^n blows up so quickly
18:27:41 <ehird> weird, a url service that allows irc urls: turl.ca/esoteric
18:27:59 -!- ehird` has joined.
18:28:29 <ehird`> hello.
18:29:28 -!- ehird` has set topic: What is the topic of this title? Is the soul greater than the hum of its parts? LOGS COLON HTTP://TUNES.ORG/~NEF/LOGS/ESOTERIC?!!!!!.
18:29:56 <ehird`> #esoteric is named after the people in it, rather than the things we discuss.
18:30:37 -!- ehird has quit.
18:30:58 -!- ehird` has changed nick to ehird.
18:32:40 -!- ehird has quit (Remote closed the connection).
18:32:51 -!- ehird has joined.
18:33:05 -!- ehird has quit (Client Quit).
18:33:16 -!- ehird has joined.
18:33:56 -!- ehird has quit (Client Quit).
18:34:08 -!- ehird has joined.
18:34:23 <ehird> i am a buggy IRP implementation
18:34:25 <ehird> hear me roar
18:34:40 * ais523 listens to ehird roaring
18:34:47 <ehird> -OOOOOOOOOOOOOOOOOOOOOOOOOOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA-
18:35:03 * ais523 shrinks away in horror
18:35:33 <ehird> -OOOOOOOOOOOOOOOOOOOOOOOOOOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA-
18:36:11 -!- ehird has quit (Client Quit).
18:36:18 <oklopol> o
18:36:22 -!- ehird has joined.
18:36:45 <ehird> (CONS
18:36:48 <ehird> 'BUGGY
18:36:55 <ehird> (CONS 'IRP (CONS 'IMPLEMENTATION NIL)))
18:37:39 <ehird> (QUOTE (AH THE DAYS OF YORE. LIMITED PUNCTUATION AND UPPERCASE MESSAGES. SURROUNDED IN PARENTHESES.))
18:44:06 <Slereah> CRUISE CONTROL FOR COOL
18:44:40 <ehird> (LISP-NATURE-P SLEREAH) ===> NIL
18:45:11 <Slereah> Hm. When I print chr(n>126), it comes out as ?, but there's no problem in a string.
18:45:15 <Slereah> I am confused!
18:45:30 <ehird> n>126 is gonna be 0 or 1
18:45:50 <ais523> it could be that your terminal shows unknown characters as ?
18:45:57 <Slereah> Oh, I think it's actually because I use sys.stdout.
18:46:08 <Slereah> Print doesn't have any problem
18:46:19 <Slereah> stdout.write doesn't seem to recognise them above 126
18:47:33 <ehird> ais523: (WINDOWS-P SLEREAH) ===> T
18:47:45 <Slereah> I'm on Linux right now.
18:47:47 <ehird> ah
18:47:49 <ehird> brb
18:47:50 -!- ehird has quit ("Pong timeout").
18:48:00 <Slereah> For such reasons :o
18:48:04 -!- ehird has joined.
18:48:13 <Slereah> But I'm a little disappointed so far
18:50:19 <ehird> why?
18:50:44 <Slereah> I can't use it very much
18:50:51 <ehird> why not
18:55:25 -!- slereah__ has joined.
19:02:18 <ehird> foo
19:03:19 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
19:07:00 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
19:07:32 -!- helios24 has quit ("Leaving").
19:12:02 <ehird> (:aSS):aSS
19:12:38 <graue> it is nice to have such a vulgar sounding quine, isn't it
19:12:46 <ehird> yes, definately
19:14:05 -!- ehird has quit ("Pong timeout").
19:14:16 -!- ehird has joined.
19:14:18 <ais523> !ul (:aSS):aSS
19:14:21 <EgoBot> (:aSS):aSS
19:14:30 <ais523> nice to see it still works...
19:14:48 -!- ehird has quit (Client Quit).
19:14:59 -!- ehird has joined.
19:15:06 <ehird> testing
19:15:12 <ehird> I am really honestly testing.
19:15:18 <ehird> No: really.
19:15:23 <Asztal> I'm sure you are.
19:15:24 -!- Slereah has joined.
19:15:24 <ehird> (cons a b)
19:15:32 <ehird> Asztal: I AM PING YOU, NOW PING ME
19:15:43 <Slereah> Never have I been more angry or orange!
19:16:13 <Asztal> ehird: NEVER!
19:16:19 <ehird> Asztal: thank you
19:16:23 <Asztal> rats
19:16:27 <Slereah> Well, now I have mah BF code formatted for good use.
19:16:34 <ais523> !ul (You can request to be pinged like this)S
19:16:37 <EgoBot> You can request to be pinged like this
19:17:09 <ehird> clever
19:17:13 <ehird> !ul (ehird)S
19:17:17 <EgoBot> ehird
19:17:24 <ehird> !ul (:^):^
19:17:25 <ehird> !ps
19:17:29 <EgoBot> 2 ehird: ul
19:17:31 <EgoBot> 3 ehird: ps
19:17:33 <ehird> (btw, is EgoBot open source?)
19:17:44 <Asztal> yes, I think so
19:18:00 <ais523> !ul (:aS(:^S^:)Sa:):^S^:(:aS(:^S^:)Sa:)
19:18:11 <ais523> and yes, the source is in the Esolang file repository
19:18:14 <ehird> oh good
19:18:29 <ais523> !kill 2
19:18:31 <EgoBot> Process 2 killed.
19:18:34 <ais523> !ps
19:18:37 <EgoBot> 2 ais523: ps
19:18:44 <ais523> !ul (:aS(:^S^:)Sa:):^S^:(:aS(:^S^:)Sa:)
19:19:59 <ais523> ehird: no fair putting in infinite loops, you've crashed the Underload interpreter
19:20:04 <ais523> !undaemon ul
19:20:07 <EgoBot> Process 1 killed.
19:20:07 <ehird> ais523: i am brilliant
19:20:22 <ehird> i can even do this
19:20:22 <ehird> !ul (
19:20:27 <EgoBot> Huh?
19:20:27 <ehird> and get all programs until !ul )
19:20:28 <ehird> ignored.
19:20:30 <ais523> !daemon ul bf http://pastebin.ca/raw/367774
19:20:36 <Slereah> You minx.
19:20:39 <ais523> I killed the daemon because it was stuck in a loop
19:20:46 <ais523> !ul (:aS(:^S^:)Sa:):^S^:(:aS(:^S^:)Sa:)
19:20:49 <EgoBot> (:aS(:^S^:)Sa:):^S^:(:aS(:^S^:)Sa:)
19:20:51 <ais523> seems to be working now, though
19:21:14 <ehird> !ul (
19:21:16 <ehird> mwahaha
19:21:19 <ais523> !ul (:aS(:^S^:)Sa:):^S^:(:aS(:^S^:)Sa:)
19:21:23 <EgoBot> (:aS(:^S^:)Sa:):^S^:(:aS(:^S^:)Sa:)
19:21:26 <ehird> hm
19:21:27 <ehird> odd :|
19:21:31 <ais523> mwahahahahahahaha...
19:21:46 <ehird> !ul )
19:21:53 <ais523> !ul (test)S
19:21:57 <EgoBot> test
19:21:58 <ehird> !ul )((((((((((((
19:22:03 <ehird> !ul break damnit
19:22:11 <ais523> stop trying to break EgoBot!
19:22:29 <EgoBot> yes, stop trying to break me!
19:23:37 <EgoBot> Actually please break me
19:23:46 <Slereah> !ul (A STONE HEAVY ENOUGH TO BREAK THE STACK)
19:24:14 <Slereah> Why am I suddenly picturing a stack like a stack of pancakes?
19:24:42 <ehird> !ul (a)(~(a)*~:^):^
19:24:51 <ehird> look at me i wrote that all by myself
19:24:59 <ehird> !ps
19:25:03 <EgoBot> 2 ehird: ps
19:25:06 <ehird> egobot should be crunching memory right now...
19:25:07 <ehird> huh?!
19:25:11 <ehird> eh?!
19:25:12 <ehird> whut?!
19:25:17 <Asztal> denied
19:25:21 <ais523> !ul (test again)S
19:25:34 <ais523> no, you killed it
19:25:35 <ehird> ok let's try this:
19:25:38 <ehird> oh
19:25:39 <ehird> haha
19:25:42 <ehird> alternatively:
19:25:42 <ais523> !undaemon ul
19:25:45 <ehird> !ul ((a)*:^):^
19:25:45 <EgoBot> Process 1 killed.
19:25:47 <EgoBot> Huh?
19:25:48 <ais523> !daemon ul bf http://pastebin.ca/raw/367774
19:25:50 <ehird> shorter
19:25:59 <ais523> and stop trying to overflow its memory
19:25:59 <ehird> i'll set it up again, once i break it one more time
19:25:59 <ehird> !ul ((foo)*:^):^
19:26:47 <ais523> !undaemon ul
19:26:48 <ais523> !daemon ul bf http://pastebin.ca/raw/367774
19:26:49 <EgoBot> Process 1 killed.
19:27:04 <ais523> !ul (working again?)S
19:27:07 <EgoBot> working again?
19:31:00 -!- ais523 has quit ("so I actually get home at a reasonable time today...").
19:33:28 <ehird> !ul (foo):S
19:33:33 <EgoBot> foo
19:33:46 <ehird> !ul (Sfoo)::S^
19:33:49 <EgoBot> SfooSfoo
19:34:05 <ehird> !ul (:aSSfoo):aSSfoo
19:34:09 <EgoBot> (:aSSfoo):aSSfoo
19:34:40 <ehird> !ul (:aSS Hello! I am the helpful, friendly, Underload introduction program. Would you like a snake?):aSS Hello! I am the helpful, friendly, Underload introduction program. Would you like a snake?
19:34:43 <EgoBot> (:aSS Hello! I am the helpful, friendly, Underload introduction program. Would you like a snake?):aSS Hello! I am the helpful, friendly, Underload introduction program. Would you like a snake?
19:35:40 <Asztal> !ul (:aSShello):aSSgoodbye
19:35:43 <EgoBot> (:aSShello):aSShello
19:37:48 <Slereah> Stop talking about asses people.
19:38:17 <ehird> !ul (:aSSification):aSSification
19:38:21 <EgoBot> (:aSSification):aSSification
19:38:31 <ehird> !ul (:aSSes, people.):aSSes, people.
19:38:35 <EgoBot> (:aSSes, people.):aSSes, people.
19:39:09 -!- ehird has quit ("Pong timeout").
19:39:24 -!- ehird has joined.
19:39:36 <ehird> #1=(hello #1)
19:39:39 <Slereah> What's the secret code for unlambda?
19:39:46 <Slereah> !un?
19:39:49 <EgoBot> Huh?
19:39:50 <ehird> !unl `ii
19:39:53 <EgoBot> Huh?
19:39:54 <ehird> !help
19:39:57 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
19:39:59 <EgoBot> 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl
19:40:06 <ehird> !unlambda `ii
19:40:26 <Slereah> !un `ii
19:40:28 <ehird> !unlambda ``.`.`
19:40:29 <EgoBot> Huh?
19:40:31 <EgoBot> ./unlambda/unlambda: file ./tmp/egobot.ZV7cPa: parse error
19:40:40 <Slereah> Ah, there it is
19:40:41 <ehird> !unlambda `.*i
19:40:45 <EgoBot> *
19:40:48 -!- ehird has quit (Client Quit).
19:40:56 <Slereah> !unlambda ````.b.u.t.ti
19:40:59 -!- ehird has joined.
19:40:59 <EgoBot> butt
19:41:06 <Slereah> Poifect.
19:41:17 <ehird> #1=(hello #1)
19:41:30 <Slereah> !unlambda ````.b.u.t.t````` kisses
19:41:33 <EgoBot> butt
19:41:39 <Slereah> Teehee
19:41:39 <ehird> !unlambda `.`i
19:41:43 <EgoBot> `
19:42:08 <ehird> !unlambda `.``..i
19:42:11 <EgoBot> .`
19:42:20 <ehird> !unlambda `..`.`i
19:42:23 <EgoBot> `.
19:42:24 <Slereah> `````kisse`.xi
19:43:06 <Slereah> !unlambda `````kisse`.xi
19:43:11 <EgoBot> x
19:45:28 <Slereah> !unlambda ``````kiss``````.m.e. .I.'.m. ````.I.r.i.s.hi
19:45:31 <EgoBot> me I'mIris h
19:45:36 <Slereah> Lol
19:55:38 <Slereah> How does EgoBot output exactly? Does he wait for the program to end?
19:58:27 <ehird> dunno
19:58:31 <ehird> try an infinite output loop
19:58:47 <Slereah> That's whi I asked.
20:00:22 <ehird> !bf_txtgen Default text?!
20:01:10 <Slereah> !unlambda ```sii``s`k`d`.xr``sii
20:01:11 <EgoBot> 130 ++++++++++++++[>+++++>++>+++++++>++++++++<<<<-]>--.>>+++.+.-----.>+++++.---------.++++++++.<<++++.>>.<++++.>++++.----.<<<-----.>+. [953]
20:01:15 <EgoBot> new_info: Cannot allocate memory
20:01:20 <Slereah> Oh noes!
20:05:55 <ehird> wow, EgoBot only handles one channel
20:08:53 -!- ehird has quit ("Pong timeout").
20:09:09 -!- ehird has joined.
20:09:18 <ehird> testing
20:09:21 <ehird> do you accept my testing
20:09:23 <ehird> you'd better.
20:09:36 <ehird> :(
20:09:50 <Slereah> Not good enough!
20:10:44 <ehird> nooo
20:16:34 <ehird> egobot's code is so sucky
20:16:41 <ehird> i thought it was a robust, plugin-based architechture of a bot!
20:16:57 <ehird> !reload
20:17:01 <ehird> aww :)
20:17:05 -!- und3f has joined.
20:17:31 <Slereah> Egobot has egoist code
20:22:50 -!- Slereah has set topic: What is the topic of this title? Is the soul greater than the hum of its parts? What's for dinner? LOGS COLON HTTP://TUNES.ORG/~NEF/LOGS/ESOTERIC?!!!!!.
20:23:33 <SimonRC> hi
20:23:41 <Slereah> Hi dude.
20:23:46 <SimonRC> ?!
20:23:54 <Slereah> Aren't you a dude?
20:24:06 <SimonRC> um, yeah
20:24:12 -!- ehird has set topic: What is the topic of this title? Is the soul greater than the hum of its parts? What's for dinner? LOGS COLON HTTP://TUNES.ORG/~NEF/LOGS/ESOTERIC?!!!!! WHAT IS THE SQUARE ROOT OF NINE??! AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.
20:25:19 <Slereah> Y TO THE POWER OF Z!
20:25:23 * SimonRC feels suspicious about AOP.
20:26:57 <SimonRC> It seems like it needs magic to get the aspects to play together
20:27:10 <Slereah> Wut?
20:27:24 <SimonRC> Aspect-Oriented Programming
20:28:09 <SimonRC> you can add "aspects" to classes, which magically jump in before/during/after method calls and fiddle stuff
20:28:23 <ehird> SimonRC: isn't that CLOS' :before/:after methods?
20:28:26 <ehird> i think there's an :inner too
20:28:28 <SimonRC> yes
20:28:49 <SimonRC> it allows you to collect together stuff that would otherwise be scattered around, supposedly
20:28:53 <ehird> CLOS isn't the best example of something not being weird, crazy magic, is it :|
20:29:01 <ehird> however i have seen them used quite a lot
20:29:04 <ehird> and seem quite nice
20:29:26 <SimonRC> the trouble is, it sounds as hard as (say) monad composition
20:30:26 <SimonRC> I mean, hard for the computer
20:30:59 <ehird> haha
20:31:05 <ehird> if it was it wouldn't be in CLOS
20:31:20 <ehird> CLOS is what you could call... very meticulously hand-crafted
20:38:12 <ehird> !undaemon
20:38:26 <ehird> ooh
20:38:28 <ehird> !undaemon *
20:38:33 <ehird> !ls
20:38:37 <EgoBot> bf/, glass/, linguine/
20:38:41 <ehird> !ls bf
20:38:45 <EgoBot> LostKng.b, numwarp.b
20:39:12 <ehird> !undaemon ../bf/*
20:39:19 <ehird> !undaemon ./bf/*
20:39:22 <ehird> !ls bf
20:39:25 <EgoBot> LostKng.b, numwarp.b
20:39:28 <ehird> aww
20:40:26 <und3f> Hi
20:41:43 <Slereah> Hello
20:41:45 <und3f> I want introduce my esoteric languages interpreter =) If someone has time plz take a look at it and say about lacks
20:41:53 -!- progn has joined.
20:41:57 <progn> foobar
20:42:09 <und3f> Can i poste link here?
20:42:17 <progn> maybe.
20:42:17 <und3f> *post
20:42:24 <progn> what's the language.
20:42:28 <progn> Wait, let me guess
20:42:30 <progn> brainfuck?
20:42:31 <Slereah> Yes indeed you can
20:42:38 <Slereah> Frainbuck?
20:42:45 <progn> frainbuck is my compiler :|
20:42:46 <und3f> brainfuck., ook, spoon, hq9+, whitespace
20:42:49 <und3f> Just this
20:42:57 <und3f> But we work on it =)
20:43:03 <progn> und3f: who is 'we'
20:43:08 <und3f> team
20:43:13 <progn> and are you aware those already have excellent quality interpreters already
20:43:17 <progn> (and compilers)
20:43:19 <Slereah> A team for a BF interpreter?
20:43:33 <progn> Slereah: no! it's loooads of esolang interpreters; he's awesome - can't you see?
20:43:35 <Slereah> In what is it written, Malbolge?
20:43:43 <progn> Slereah: Let me guess: VB or Delphi
20:43:52 <und3f> c++
20:43:56 <progn> even worse
20:44:02 <und3f> why?
20:44:07 <ehird> c++ is hideious
20:44:10 <ehird> *hideous
20:44:16 <progn> yeah, i agree (even though i am ehird)
20:44:54 <Slereah> Brainfuck interpreters on usual languages aren't very challenging.
20:45:27 <progn> Slereah: I doubt he's looking for a challenge
20:45:50 <Slereah> So, where's that link!
20:46:03 <und3f> esco.sf.net
20:46:11 <progn> a sourceforge project.
20:46:14 <progn> und3f: you are RIDICULOUS
20:46:31 <und3f> :|
20:46:34 <progn> .. kind of crappy name too, don't you think :|
20:46:35 <und3f> why?
20:46:59 <Slereah> Heh. Reminds me of an idea I had once.
20:47:00 <progn> und3f: 1. they already have perfectly good interps 2. what is the point of yours 3. why is it so organized, formal, have a team, soruceforge project
20:47:03 <progn> it's an esolang interp :|
20:47:17 <Slereah> An interpreter that could support many languages. AT ONCE :O
20:47:19 <progn> und3f: let me look atyour interps. give me a second.
20:47:31 <Slereah> Converting the data structures would probably be horrible
20:47:42 <Slereah> And quite slow.
20:48:27 <progn> omg
20:48:31 <progn> your bf interp is multiple files
20:48:44 <progn> and you misspelt 'memory' as 'memmory'
20:48:49 <progn> so now your whole class is misnamed
20:49:22 <progn> omfg
20:49:26 <progn> it preparses but not [...]
20:49:53 <progn> let me try its mandelbrot.b performance.
20:50:06 <progn> heh
20:50:08 <progn> GMP
20:50:13 <progn> because writing a bignum lib is so hard
20:50:54 <progn> This is brilliant, the hq9+ interp is PARSED XD XD XD
20:51:06 <progn> omfg
20:51:10 <progn> its not even valid
20:51:13 <progn> the 99bob output is wrong
20:51:31 <Slereah> 99 Bob, drinking 99 bottles of beer?
20:51:44 <progn> Slereah: nope: it says "0 bottles of beer"..."take one down, pass it around"
20:51:45 <progn> :)
20:51:46 <und3f> script in studio
20:51:55 <progn> und3f: was that supposed to mean something
20:52:03 * Slereah takes down 0 bottles of beer
20:52:07 <und3f> i mean show me scrip
20:52:19 <progn> und3f: start making sense?
20:52:36 <Slereah> Stop being a meanie progn ":0).
20:52:46 <progn> why :P
20:52:49 <progn> the interps are really bad
20:53:04 <Slereah> So are mine, but I don't see you ranting!
20:53:28 <progn> well yeah because the fact that he has a team, a sourceforge project: it kinda puts your hopes up for some decent interpreters, doesn't it
20:53:58 <Slereah> Especially a brainfuck interpreter.
20:54:04 <progn> exactly
20:54:07 <Slereah> Something you can hack together in an afternoon.
20:54:15 <progn> precisely
20:54:19 -!- Corun has joined.
20:54:24 <progn> with that amount of 'baggage' around it, you expect something more than the most basic
20:54:37 <progn> we do get lots of fun things though...like
20:54:39 <progn> return "Unknow error";
20:54:44 <progn> :-)
20:55:06 <Slereah> Well, it has Ook!
20:55:14 <progn> which is basically brainfuck
20:55:15 <Slereah> You have to like, replace them with BF symbols.
20:55:19 <progn> heh
20:55:20 <progn> nope
20:55:24 <progn> its an entirely seperate implementation they have
20:55:34 <progn> written in a different style too
20:55:41 <Slereah> Wut?
20:55:45 <progn> yep.
20:55:56 <progn> they have a brainfuck interpreter, AND an ook interpreter, and they both look very different
20:56:08 <Slereah> Well, you've got to admire the boldness.
20:56:31 <Slereah> I suppose the HQ9+ interpreter is a thousand lines long.
20:56:56 <progn> no but its 99 bottles of beer is wrong.
20:57:00 <progn> and it is parsed.
20:57:01 <progn> yes: parsed.
20:57:08 <SimonRC> that isn'ty bad
20:57:16 <SimonRC> it depends on the project aims...
20:57:30 <progn> SimonRC: the parse tree is entirely hq9 specific
20:57:42 <progn> they basically get rid of non hq9+ chars, then change them into helloWorldOp
20:57:43 <progn> etc
20:57:44 <SimonRC> if the aim is to learn compiling, then maybe that is a good starting point
20:57:46 * Slereah can't read C.
20:57:47 <progn> then execute them
20:57:51 <progn> (it's not a compiler)
20:58:05 <progn> SimonRC: the aim is to 'implement a lot of esolangs in one interpreter'
20:58:06 <progn> apparently.
20:58:12 <SimonRC> ok, if the aim is to learn interpreting, then maybe that is a good starting point
20:58:18 <SimonRC> ah, ok
20:58:22 <progn> Heh, it doesn't even compile
20:58:23 <progn> :)
20:58:46 <Slereah> You could probably do BF-Ook-H9Q+ on the same file.
20:58:58 <Slereah> I don't know much of Spoon and Whitespace, so I can't really say.
20:59:09 <progn> spoon is ANOTHER syntax for BF
20:59:11 <progn> so it has three.
20:59:16 <progn> want to bet it also has a seperate interpreter?
20:59:42 <Slereah> Seems risky.
21:00:14 <und3f> progn, man. You have made 3 stupid prediction. Have not you still understand that you are wrong againe?
21:00:17 <Slereah> Hm. There's an ESCO link on the Whitespace page
21:00:28 <Slereah> Coincidence?
21:00:39 <ehird> und3f: i wasn't
21:00:47 <ehird> Slereah: they added it, obviously
21:00:55 <ehird> und3f: and i've been right on all my other predictions
21:01:02 <ehird> you *did* implement ook seperately from brainfuck
21:01:05 -!- oerjan has joined.
21:01:15 <Slereah> Bold move!
21:01:17 <Slereah> I like it!
21:01:18 <SimonRC> oerjan: hi, and welcome to the argument
21:01:21 <und3f> ehird, no, idiot, it does
21:01:28 <ehird> SimonRC: indeed..
21:02:38 <ehird> und3f: it does what?
21:02:42 <ehird> compile? because no, it doesn't
21:02:49 <und3f> ehird, do you _really_ knows c++? Just take a look at emulator class...
21:03:31 <oerjan> ehird: yes, it does.
21:03:48 <ehird> oerjan: what does?
21:03:49 <ehird> esco?
21:03:52 <ehird> because it most definately doesn't
21:04:06 <oerjan> yes it does
21:04:11 <ehird> g++ -DHAVE_CONFIG_H -I. -I.. -I../include -I/opt/local//include -Wall -g -O2 -MT escoconf.o -MD -MP -MF .deps/escoconf.Tpo -c -o escoconf.o escoconf.cpp
21:04:12 <ehird> ../include/getopt.h:155: error: declaration of C function ‘int getopt()’ conflicts with
21:04:21 <Slereah> Argument clinic?
21:04:22 <ehird> /usr/include/unistd.h:422: error: previous declaration ‘int getopt(int, char* const*, const char*)’ here
21:04:33 <Slereah> "This isn't an argument!"
21:04:36 <Slereah> "Yes it is!"
21:04:47 <Asztal> Slereah: I'd like to complain.
21:05:01 <Slereah> You want to complain? Look at these shoes!
21:05:45 <und3f> ehird, i think that you have curved hands. Nobody has not such problems.
21:05:59 <oerjan> if you complain nothing happens, you might as well not bother.
21:06:06 <ehird> und3f: Maybe it's because I'm using OS X. but of course software only runs on one platform
21:12:09 <und3f> ehird, i think that esco could be compiled on OS X is there is gcc compiler for it.
21:12:18 <ehird> i am using gcc, obviously
21:12:25 <ehird> os x is just unix
21:12:42 <ehird> (NOT linux)
21:13:30 <und3f> What is your version of gcc?
21:13:45 <ehird> 4.0.1, of course. And this isn't a gcc problem.
21:13:54 <ehird> This is a problem with system headers and you not knowing what POSIX defines them to contain
21:13:58 <ehird> And therefore getting a conflict
21:14:01 <und3f> This is glibc problem
21:14:15 <ehird> exactly
21:14:25 <ehird> ergo: go by posix, not glibc
21:17:40 <oerjan> Slereah: what's the point of all those redirections, wouldn't it be just as easy to fix the links?
21:18:31 <Slereah> Well, some are mentioned in more than one article!
21:18:40 <Slereah> So it was marginally easier
21:18:42 <ehird> anyone know anything regarding the turing-completeness of http://esolangs.org/wiki/Qq?
21:18:42 <oerjan> hmph
21:21:43 -!- progn has quit ("Lost terminal").
21:25:27 <und3f> ehird, try to delete #include <getopt.h> from escoconf.cpp
21:26:05 * Slereah doesn't even remember how to use GCC.
21:26:07 <und3f> It would not work propertly with args
21:26:17 <Slereah> I do enough C in class, I don't need any more!
21:26:56 <ehird> Slereah: funny, s/C/lisp/ and you get the opinions of quite a lot of people doing computer science
21:27:26 <Slereah> Well, I don't do computer science.
21:27:58 * ehird does the 'sed 's/^#include <getopt.h>$//' escoconf.cpp >
21:27:58 <ehird> tmp&&mv tmp escoconf.cpp '
21:28:02 <Slereah> And since they don't teach us much in the way of computers, C isn't a pleasant language.
21:28:11 <ehird> und3f: now, obviously, you have errors about e.g. getopt_long not being there.
21:28:54 <und3f> ehird, now add #include <unistd.c>
21:29:04 <ehird> itym .h
21:29:05 <SimonRC> ehird: "sed -i"?
21:29:18 <ehird> SimonRC: meh.
21:29:56 <ehird> und3f: you already had that. anyway.
21:30:23 <und3f> ehird, i don't think so
21:30:38 <ehird> yes you did
21:31:04 <Slereah> Man, we're doing so much mechanics this semester.
21:31:34 <ehird> by the way
21:31:43 <ehird> the first person to implement a real qq cat program wins 23497234982374982374 epoints
21:31:44 <ehird> :P
21:32:06 <oklopol> i'll try my luck!
21:32:09 <oklopol> []€]}$[4095$}]€$€
21:32:38 <oklopol> so many points it was actually worth the shot
21:33:05 <und3f> ehird, if [ $(grep unistd escoconf.cpp)]; then echo YOU HAVE;else echo "YOU HAVE NOT";fi
21:33:12 -!- RedDak has joined.
21:33:25 <ehird> und3f: i added it anyway
21:33:29 <und3f> and?
21:33:31 <ehird> and i can code shell scripts for myself thanks.
21:33:35 <ehird> and like i said, the asme thing.
21:33:36 <ehird> *same
21:33:39 <ehird> you need getopt.h
21:33:49 <ehird> oklopol: mmmnope, maybe you should read the spec :P
21:33:54 <Slereah> The Qq article lacks examples.
21:34:00 <Slereah> I can't picture it.
21:34:02 <und3f> no. unistd has implementions of getopt_long
21:34:09 <ehird> for a start, oklopol, that contains characters other than 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, (, )
21:34:14 <und3f> i just like POSIX implemention more
21:34:29 <ehird> und3f: Nope, sorry, you're wrong.
21:34:36 <und3f> why?
21:34:42 <ehird> because it doesn't.
21:34:46 <und3f> just read man for getopt_long
21:34:50 <ehird> yes.
21:34:54 <ehird> it is not in unistd.h
21:34:59 <ehird> i know more about my system than you do, thanks
21:35:28 <ehird> Slereah: there is only one qq program right now
21:35:39 <ehird> (0 6(7))
21:35:44 <ehird> which reads one character in and prints it out.
21:35:45 <und3f> You system have no standard C libraries?
21:35:49 <und3f> *Your
21:35:55 <ehird> hm
21:35:57 <ehird> that should be:
21:36:01 <ehird> (0 6((7)))
21:36:04 <ehird> und3f: um yes it does. BSD ones.
21:37:06 -!- und3f has left (?).
21:38:24 <ehird> Slereah: i added a one-character cat example and an explanation to the wiki page
21:39:53 <oerjan> ehird: er, should 7 be 5 perhaps?
21:40:05 <ehird> ehm
21:40:05 <ehird> yes
21:40:17 <ehird> fix'd
21:40:29 <oerjan> so 0 is needed to evaluate arguments
21:40:35 <ehird> oerjan: pretty much yeah
21:40:54 <ehird> so any program is going to have a lot of strange 0 magic
21:41:35 <ehird> also
21:41:37 <ehird> i updated the spec
21:41:40 <ehird> specifically, 0s spec
21:41:45 <ehird> which still referenced a quoted program
21:42:13 -!- slereah__ has joined.
21:42:33 <slereah__> >:|
21:42:58 <oerjan> "all the values of the second quoted program" - how is that determined?
21:43:23 <ehird> oerjan: ((prog)(prog)...)
21:43:32 <ehird> or ( (prog) ( prog) (prog ) ), ofc
21:43:35 <ehird> since whitespace doesn't matter.
21:44:02 <ehird> oerjan: I don't know whether using an integer instead of (prog) should make that the literal value or trigger an error
21:44:08 <ehird> I think trigger an error, for more difficulty
21:45:01 <Asztal> so n becomes (0 1(n)) ?
21:46:07 <ehird> Asztal: explain
21:46:19 <Asztal> I believe I've misunderstood it
21:46:29 * Asztal reads "How it works" section, which he just discovered
21:46:36 <ehird> Asztal: here's a program to print out a
21:46:40 <slereah__> Got a sample program?
21:46:43 <ehird> 6 97
21:46:55 <ehird> it works fine because you don't need the arguments evaluated
21:47:03 <ehird> if you wanted to do it the hard way, you can do:
21:47:09 <ehird> 0 6((1 97))
21:47:15 <ehird> Slereah__; yes on the wiki page
21:47:50 <slereah__> Why do you need 0?
21:48:02 <oerjan> hm ... technically the empty program is legal but cannot be quoted...
21:48:20 <Asztal> or 0 6((1(1 97)0)) ?
21:48:42 <slereah__> Is 0 like an anti-lazy function or something?
21:48:51 <ehird> oerjan: shall i make the null program illegal or quotes be able to take nothing
21:48:57 <ehird> Slereah__: otherwise your arguments won't be evaluated
21:49:10 <ehird> if you want to pass the results of command X into command Y: Y(X) won't work
21:49:17 <ehird> it'll call Y with the argument: the quoted program (X)
21:49:25 <ehird> 0 Y ((X)) will, though
21:49:29 <slereah__> Okay.
21:49:35 <oerjan> must each top-level expression return exactly one value?
21:49:36 <slereah__> But why the double parenthesis?
21:49:38 <ehird> and, to pass the literal quoted program (X) when using 0:
21:49:46 <ehird> 0 Y ((1 (X)))
21:49:54 <ehird> Slereah__: because you can pass multiple arguments
21:50:00 <slereah__> Oh.
21:50:01 <ehird> so: 0 COMMAND ((ARG) (ARG) ...)
21:50:10 <ehird> oerjan: that seems reasonable to me? i think?
21:50:20 <ehird> oerjan: note that you can't have multiple toplevel expressions, *really*
21:50:25 <ehird> you can only have one toplevel function call
21:51:05 <oerjan> how is, say the expression ((1 1) (1 2)) evaluated?
21:51:14 <ehird> oerjan: depends what you mean by expression
21:51:17 <ehird> do you mean putting that in a file?
21:51:20 <oerjan> yep
21:51:21 <ehird> and running it?
21:51:22 <ehird> ok
21:51:24 -!- Slereah has quit (Connection timed out).
21:51:26 <ehird> well, nothing happens
21:51:29 <ehird> it's an error.
21:51:45 <ehird> because you're using a quoted program as a command integer
21:51:54 <oerjan> ah.
21:52:28 <oerjan> your spec does not say the integer found cannot be in parentheses
21:52:53 <oerjan> i interpreted it as depth searching
21:52:57 <ehird> oerjan: yeah good point
21:52:59 <ehird> and naw
21:53:01 <ehird> it's program quoting
21:53:14 <ehird> like underload or Joy
21:53:19 <oerjan> so a program is always of the form n arg1 ... argn
21:53:23 <oerjan> er, argm
21:53:51 <ehird> yeah:
21:53:54 <ehird> http://esolangs.org/wiki/Qq
21:54:03 <ehird> null program allowed, just in ''program'
21:54:04 <ehird> :)
21:54:14 <oerjan> and the second argument of 0 is not really a quoted program, but a quoted _list_ of programs
21:54:21 <ehird> yes
21:54:29 <ehird> but in reality it IS a quoted program
21:54:32 <ehird> just used as a list :)
21:54:41 <oerjan> no it isn't
21:54:47 <ehird> oerjan: oh
21:54:49 <ehird> you are right
21:55:05 <ehird> fixing.
21:56:00 <ehird> oerjan: updated spec.
21:56:05 * slereah__ cannot find a cat
21:56:24 <ehird> i doubt that (...) as first element evaluation rule will ever be used, actually
21:56:27 <ehird> it's just to be consistent
21:56:33 <slereah__> The hard thing seems to be creating new expressions that aren't integers
21:56:43 <ehird> slereah__: you can't
21:56:47 <ehird> well, you can concatentate them
21:56:54 <slereah__> Oh. So that's why
21:56:54 <ehird> and you can generate commands with the currying 8
21:56:57 <ehird> but apart from that you can't
21:56:59 <slereah__> Yes, but out of quotes
21:57:49 <oerjan> (...) as first element is not allowed by the syntax spec
21:57:49 <ehird> slereah__: why's that a problem?
21:57:54 <ehird> oerjan: it is now
21:58:17 <slereah__> My vague ideas requires to use those integers for something.
21:59:05 <slereah__> Wouldn't a program eventually shrinks to nothing if every functions can't return more than one integer?
21:59:16 <ehird> slereah__: no
21:59:22 <ehird> the idea is: do looping in the style of underload
21:59:42 <slereah__> Oh.
21:59:44 <slereah__> Got an example?
21:59:56 <ehird> eh, see underload wiki page
22:00:14 <slereah__> Well, it's full of Underload's examples.
22:00:28 <slereah__> It's got a nice stack, a function to double elements and all!
22:00:48 <slereah__> Qq broke my brain.
22:01:02 <ehird> heh
22:01:04 <ehird> i had a stack at first
22:01:07 <ehird> but i made it more awesomer
22:02:13 <slereah__> Is there a 99 of Underload?
22:02:30 <ehird> yes
22:02:31 <ehird> see wiki
22:03:08 <slereah__> Nice.
22:05:03 <ehird> oerjan: based on hunches: do you think qq is turing complete or not?
22:05:34 <oerjan> not
22:05:43 <ehird> :( why not
22:05:44 <slereah__> Can it at least do loops?
22:05:52 <ehird> slereah__: possibly, in underload style.
22:06:08 <oerjan> for one thing i don't see how the result of the 8 command could ever be used except for the initial (...) case
22:06:50 <ehird> oerjan: like this: 0 0((8 ...) (1 ((...args...))))
22:07:02 -!- ehird has quit ("Pong timeout").
22:07:18 -!- ehird has joined.
22:07:18 <oerjan> ooh
22:07:35 <ehird> sorry about that
22:07:38 <ehird> and yeah
22:07:38 <ehird> :)
22:08:34 <ehird> oerjan: would an implementation help :)
22:08:45 <oerjan> my next problem is i see no way of duplicating values
22:08:50 <ehird> oerjan: -- in Common Lisp, of course, so I hope you have SBCL. or CLISP. or Allegro CL or something
22:08:58 <ehird> and, oerjan, perhaps by using munging?
22:09:27 <oerjan> munging won't create more copies than you started with
22:10:35 <ehird> oerjan: ok, should i add a command taking one quoted program and returning it munged with itself?
22:10:48 <oerjan> that might help
22:11:26 <slereah__> Lucky you, you still have 9 left!
22:12:45 <ehird> slereah__: i also have 10
22:12:47 <ehird> and 72346827346234
22:13:03 <ehird> oerjan: all commands are about to shift o ne value :)
22:13:31 <slereah__> Only if you want to sell out and use values above 9!
22:13:56 <ehird> slereah__: well, now i have 0-9
22:14:00 <ehird> but all commands have been shifted :)
22:14:03 <ehird> oerjan: there you go.
22:15:27 <oerjan> ok my hunch now changes to: i don't know :)
22:17:13 <ehird> oerjan: but you THINK...
22:18:06 <oerjan> i think a loop may now be possible
22:18:10 <slereah__> I don't envy the guy who will write an interpreter on that
22:18:53 <ehird> oerjan: my only problem seems to be saving a value for later
22:19:04 <oerjan> not sure about more complicated structures
22:19:28 <oerjan> well the functional way is to keep passing it as argument
22:20:51 <oerjan> slereah__: doesn't look that hard. needs to allocate new integers in 9, i think
22:22:10 <oerjan> unless you mean the guy who will write an interpreter _in_ qq :)
22:22:11 -!- slereah__ has quit (Connection reset by peer).
22:22:20 <oerjan> oops
22:22:26 -!- slereah__ has joined.
22:22:46 <oerjan> oerjan> unless you mean the guy who will write an interpreter _in_ qq :)
22:23:04 <ehird> oerjan: yes, 9 is curryinng
22:23:09 <ehird> so you have to cons yourself a lambda.
22:23:27 <slereah__> Well, yes!
22:23:27 <slereah__> To prove TC and such
22:23:42 <oerjan> ehird: um, i mean actually assigning an integer to it
22:23:47 <ehird> oerjan: yes
22:23:53 <ehird> commands = alist
22:23:54 <ehird> :)
22:24:48 -!- jix has quit ("CommandQ").
22:25:08 <slereah__> Hm. 7 (0 6((5))) would work. If you only typed in 007.
22:26:51 <slereah__> 7( 0 8 ( (0) (0 6((5))) 7) )?
22:27:10 <oerjan> slereah__: you need a 0 first
22:27:22 <slereah__> Well,
22:27:27 <oerjan> arguments are not evaluated otherwise
22:27:30 <slereah__> 0 7 ( 0 8 ( (0) (0 6((5))) 7) )
22:27:34 <slereah__> Would this work?
22:27:51 <ehird> i'm writing an interp now btw.
22:28:09 <oerjan> i think (0) should be (1 0)
22:28:22 <ehird> (0) is most definately invalid yes
22:29:16 <oerjan> hm that could be statically determined...
22:29:28 <oerjan> or wait
22:29:39 * slereah__ waits
22:29:55 <oerjan> no the (0) could be a quoted program list
22:30:01 -!- graue has quit ("Leaving").
22:30:11 <oerjan> so it is possible in some positions
22:30:28 <oerjan> er no
22:30:44 <ehird> oerjan: question about 8
22:30:49 <ehird> does it help turingcompleteness?
22:30:59 <oerjan> ok, (0) cannot be used for anything
22:31:03 <oerjan> i think
22:31:24 <slereah__> So (1 0) works?
22:31:37 <slereah__> Are the items in the list of a 0 only evaluated once?
22:32:17 <oerjan> ehird: it would help using integers as integers
22:32:45 <ehird> oerjan: 8 is the 'if' btw
22:32:50 <oerjan> so if TC depended on using integers for data, yes
22:32:54 <slereah__> Ah shit. My border-one's deleting seems to be screwed up
22:33:15 <oerjan> (qua integers, not commands)
22:33:20 <slereah__> èèèè -> C(C(
22:33:47 * oerjan feels pretentious
22:34:46 <slereah__> oerjan only writes in Blaise Pascal
22:35:02 <SimonRC> heh
22:36:19 <slereah__> Hm. I type in èèèè, and get 8 chars on the tape.
22:36:25 <slereah__> Something isn't right!
22:36:51 <SimonRC> encoding?
22:36:53 <oerjan> UTF-8 perhaps?
22:37:21 <slereah__> Nop.
22:37:27 <slereah__> Think I found the problem.
22:41:04 <SimonRC> what
22:41:27 -!- RedDak has quit (Read error: 104 (Connection reset by peer)).
22:43:47 -!- Slereah has joined.
22:44:04 <Slereah> Seems è is actually two chars under what I have.
22:44:26 <Slereah> Which would explain all those ?
22:44:27 <ehird> (defun run (p)
22:44:27 <ehird> (cond
22:44:27 <ehird> ((null p) nil)
22:44:27 <ehird> ((listp (car p)) (run (cons (run (car p)) (cdr p))))
22:44:27 <ehird> (else (apply (elt commands (car p)) (cdr p)))))
22:44:31 <Slereah> Unless used in strings
22:44:32 <ehird> hmm, sorry for the flood
22:44:37 <ehird> but that's a pretty small qq evaluator :-)
22:44:51 <ehird> once parsed into a form like: (0 7 ((6))), i.e. a lisp list
22:45:22 <ehird> err
22:45:23 <ehird> make else 't'
22:45:34 <ehird> lol, common lisp.
22:46:20 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
22:46:51 <Slereah> Does it work?
22:47:46 <oerjan> i think you could refine the syntax somewhat
22:48:18 <ehird> oerjan: why? it's beautiful :P
22:48:27 <ehird> it will result in unlambda-style elegance when big programs are written
22:48:30 <oerjan> i mean (0) can be disallowed
22:48:39 <ehird> well, it's disallowed at runtime
22:48:46 <ehird> on the principle that the arity is wrong
22:48:48 <oerjan> oh wait
22:48:50 <ehird> but: with curried ones etc
22:48:50 <Slereah> Do you mean at CRASH?
22:48:52 <ehird> you never know the arity
22:49:01 <SimonRC> zzzzzzzzzzz
22:49:03 <ehird> halting-problem parsing
22:49:03 <ehird> :)
22:49:07 <oerjan> right
22:50:22 <oerjan> oh
22:50:25 * Slereah has low connection
22:51:40 <oerjan> things like (m (n)) are illegal though
22:52:25 <oerjan> because the (n) would be a quoted program list, so n is not allowed as a prog
22:52:34 <ehird> that's legal..
22:52:47 <ehird> it's a quoted program doing: m called with the quoted program n
22:53:07 <oerjan> but n (an integer) is not a legal quoted program
22:53:12 <ehird> ah, yes it is
22:53:19 <ehird> n could be a command.
22:53:32 <ehird> like 6.
22:53:38 <oerjan> but then it should be (m ((n)))
22:53:41 <ehird> no
22:53:42 <ehird> it shouldn't
22:53:45 <ehird> that only applies to 0
22:53:51 <ehird> you can pass multiple arguments to functions, outside of 0..
22:53:57 <ehird> how do you think 0 itself works?
22:57:49 <oerjan> well, 0 can only take a second argument that is a list of quoted programs
22:58:12 <oerjan> the only other command that looks inside lists is 9.
22:58:37 <ehird> oerjan: curried commands...
22:58:40 <ehird> you might curry 0
22:58:41 <ehird> and never know.
22:58:48 <oerjan> it doesn't matter
22:58:52 <ehird> no
22:58:58 <ehird> its undecidable whether (m ((n))) is ok
22:59:22 <oerjan> does 9's second argument have the same format as 0's second argument?
22:59:58 <oerjan> if there is, then i claim there is nothing that can actually use an argument of the form (n)
23:00:07 <ehird> hm i could make 0 and 9 variable arity
23:00:11 <oerjan> (although it could be passed around)
23:00:18 <ehird> the thing 9 produces is basically variable arity anyway, resolved at runtime
23:00:23 <oerjan> indeed
23:00:24 <ehird> oerjan: good idea? could be more obscure, which is good
23:01:01 <oerjan> i nearly suggested it myself earlier
23:01:24 <oerjan> but didn't since i thought your current way is weirder :)
23:02:10 <ehird> aww
23:02:11 <ehird> :)
23:02:18 <ehird> oerjan: i've changed it. should i change it back?
23:02:27 <ehird> it's amusingly reminiscent of LISP 1.5
23:02:31 <ehird> FUNC (expr expr...)
23:03:01 <oerjan> it's your language...
23:03:24 <ehird> oerjan: is this the no-soliciting-opinions zone? :-)
23:03:45 <oerjan> i think it's a choice between weirdness and elegance
23:05:25 <ehird> oerjan: I want elegant weirdness. Like unlambda.
23:05:56 -!- timotiis has quit ("leaving").
23:06:54 <ehird> oerjan: which do you think would fit that? :)
23:10:15 <Slereah> Character recognition in binary is tiresome.
23:11:29 * oerjan puts up a "no soliciting sign" :)
23:11:37 <oerjan> *" sign
23:12:09 <ehird> yay, my qq interp works
23:12:12 <ehird> all i have to do is write the parser
23:15:51 <Slereah> Hm. Maybe I should write some short Python to write the char recognition.
23:17:11 <Slereah> Although it might be horrible for multiple chars.
23:23:21 <Slereah> Well, it can recognize [ and ] so far.
23:30:02 <ehird> sheesh, parsers suck
23:30:02 <ehird> :P
23:30:16 <ehird> oerjan: do you think an infinite loop would be trivial in qq by the way?
23:30:21 <ehird> that would be a first step
23:33:43 <Slereah> Doesn't the doubling( 0 8 ( 0 (something) doubling) idea works for that?
23:34:05 <Slereah> Might not be 8, I didn't follow the many change in numbers.
23:34:20 <Slereah> The second if not zero, 3rd if zero
23:39:42 <ehird> that's 8
23:39:46 <ehird> that's if
23:39:55 <ehird> 8 x y z -> if x (is not zero), y, else z
23:40:20 <Slereah> Wouldn't that loop to infinity?
23:40:34 <Slereah> After sprinkling some 1's and 0's so that it parses
23:41:36 <ehird> how?
23:41:39 <ehird> err
23:41:40 <ehird> actually
23:41:41 <ehird> i have no idea
23:41:42 <ehird> :)
23:41:51 <EgoBot> cannot open checkpoint file /home/gregor/esoteric/egobot/egobot/daemons/ul: No such file or directory
23:41:58 <Slereah> Let's see if I remember!
23:42:04 <Slereah> Is the doubling still 7?
23:42:18 <Slereah> Or is it 3?
23:42:46 <ehird> http://esolangs.org/wiki/Qq
23:42:52 <Slereah> Low connection.
23:42:57 <Slereah> I wouldn't risk it.
23:43:00 <ehird> 3. (arity 1) Munges the quoted program argument with itself.
23:47:18 <Slereah> Sooo... 3 (0 8 ((1 0) (Stuff) (1 3))), evaluates to (0 8 ((1 0) (Stuff) (1 3))) (0 8 ((1 0) (Stuff) (1 3))), (0 8 ((1 0) (Stuff) (1 3))) with ((1 0) (Stuff) (1 3)) evaluated first, to (I think) ((0) (Stuff) (3)), and then, 8 ((0) (Stuff) (3)) converts to (3)
23:47:44 <Slereah> Which would fall back on 3 (0 8 ((1 0) (Stuff) (1 3)))
23:47:52 <Slereah> If I didn't completely misunderstood.
23:52:59 <ehird> okay, the interp is ready
23:53:08 <ehird> oerjan: ping, Slereah: ping
23:53:18 <Slereah> Ring-a-ding-ding!
23:53:19 <Slereah> Ring-a-ding-ding!
23:53:52 <ehird> Slereah: OK, do you have a lisp implementation?
23:54:03 <Slereah> Does Linux has one?
23:54:13 <Slereah> *have
23:54:21 <ehird> Depends if you installed one or not?
23:55:21 <ehird> Slereah: What linux distro?
23:57:35 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
23:57:54 -!- Slereah has joined.
23:58:56 <ehird> Slereah: What linux distro?
23:59:39 -!- Asztal has quit (Read error: 104 (Connection reset by peer)).
23:59:44 -!- GregorR has quit ("Leaving").
2008-01-23
00:00:18 <Slereah> "Kubuntu."
00:00:21 <Slereah> Was I saying
00:00:28 <ehird> OK:
00:00:31 <ehird> get a terminal
00:00:41 <ehird> and enchant thus:
00:00:43 <Slereah> I'm on it
00:00:46 <ehird> sudo apt-get install sbcl
00:00:58 <ehird> enter a 'pass~worde', and sit patiently
00:01:44 <Slereah> The enchantment is working.
00:02:28 <ehird> Slereah: You are installing a compiler for the ancient~magick arts of Lithp, by the way.
00:02:58 <Slereah> Is it a gay language?
00:03:45 <ehird> No. It's a language with a lot of parentheses.
00:03:59 <ehird> You may have heard of it before ;)
00:04:56 <Slereah> Yes indeed.
00:07:04 <ehird> Slereah: Installed?
00:07:20 <Slereah> It seems!
00:08:55 <ehird> Slereah: run 'sbcl'
00:08:57 <ehird> and do (+ 2 3)
00:09:02 <ehird> check that it prints out the result correctly
00:09:34 <Slereah> 5. Is that correct? I don't have my calculator at hand.
00:11:53 <ehird> haha
00:15:23 <ehird> Slereah: just getting a nice program runner
00:18:47 <ehird> Slereah: won't be long ;)
00:19:16 -!- EgoBot has quit (Read error: 110 (Connection timed out)).
00:19:37 <Slereah> So, what's the program?
00:20:52 <ehird> Slereah: almost...
00:21:01 <ehird> lisp is more suited to the REPL way, heh
00:21:05 <ehird> i'm making it so you can do:
00:21:10 <ehird> ./run.lisp blah.q
00:21:11 <ehird> err
00:21:11 <ehird> qq
00:31:15 -!- Asztal has joined.
00:33:56 <ehird> Slereah: almost ready
00:38:23 -!- sebbu has quit ("@+").
00:40:34 <ehird> OK Slereah
00:40:51 <ehird> make a new directory
00:40:52 <ehird> like
00:40:54 <ehird> ~/qq
00:41:24 <ehird> then, Slereah, download these files to these names in that dir:
00:41:26 <ehird> http://rafb.net/p/nva8Do66.txt qq.lisp
00:41:39 <ehird> http://rafb.net/p/ssdUo542.txt qq.asd
00:41:52 <ehird> http://rafb.net/p/APz2d592.txt run.lisp
00:41:58 <ehird> Slereah: Then, when you've done that, do:
00:42:00 <ehird> chmod +x run.lisp
00:42:08 <ehird> And you're ready to go. To run a qq program, just do:
00:42:15 <ehird> ./run.lisp prog.qq
00:42:28 <ehird> and voila
00:43:03 <Slereah> Heh. I usually do my interpreters in a copypasta form.
00:44:11 <ehird> Slereah: But, got all that?
00:44:28 <Slereah> It is saved.
00:44:45 <ehird> Did you do the chmod?
00:45:07 <Slereah> Yes.
00:45:10 <Slereah> What does it do?
00:45:20 <ehird> Lets you run it as an executable
00:45:34 <ehird> OK, put 0 7(6) in a file - say foo.qq
00:45:35 <ehird> then do:
00:45:38 <ehird> ./run.lisp foo.qq
00:45:44 <ehird> and enter a character, and hit enter
00:45:57 <ehird> it should say that character (though bumped before your prompt because it does not output a newline)
00:46:17 <Slereah> component :ITERATE not found, required by #<SYSTEM "qq" {AAAE8F1}>
00:47:33 <ehird> oshi
00:47:34 <ehird> ok:
00:47:36 <ehird> sbcl
00:47:37 <ehird> then:
00:47:39 <ehird> (require
00:47:41 <ehird> err
00:47:42 <ehird> then:
00:47:53 <ehird> (require 'asdf) (require 'asdf-install) (asdf-install:install :iterate)
00:48:04 <ehird> answer 2 to the first question, and 0 to the second
00:48:09 <ehird> then, when it's done, exit sbcl
00:48:10 <ehird> then try again
00:51:16 <ehird> oerjan: ping
00:52:01 <ehird> Slereah: is it working now?
00:52:34 <oerjan> gnip
00:52:59 <ehird> oerjan: i released a qq interpreter
00:53:06 <ehird> http://www.nonlogic.org/dump/bin/1201049292-qq-v1_0.tar.gz and check the README
00:53:12 <Slereah> http://membres.lycos.fr/bewulf/Russell/Huh.png
00:53:14 <ehird> oh wait
00:53:16 <ehird> i forgot the readme
00:53:17 <Slereah> A mystery
00:53:42 <ehird> Slereah: bizzare. try in another dir
00:53:44 <ehird> oerjan: reuploading
00:54:28 <ehird> oerjan: http://www.nonlogic.org/dump/bin/1201049491-qq-v1_0.tar.gz
00:54:30 <ehird> Slereah: try with http://www.nonlogic.org/dump/bin/1201049491-qq-v1_0.tar.gz
00:54:46 <ehird> oerjan: (will you? :P)
01:01:52 <ehird> oerjan: aww ping
01:05:46 <ehird> NOBODY CARES =(
01:05:57 <ehird> pikhq, aer you alive? oklopol? :P
01:06:32 <Slereah> I'm writing sum article for Lazy Bird.
01:06:56 <ehird> Slereah: WELL TEST THE NEW INTERP :P
01:07:00 <ehird> And try in a different directory
01:07:47 <Slereah> It's late and all!
01:08:07 <ehird> =(
01:08:14 <pikhq> Nope.
01:08:24 <ehird> pikhq: HOW CAN YOU SAY NOPE IN REPLY TO THAT
01:08:25 <ehird> that makes no sense
01:08:55 <pikhq> :)
01:09:27 <ehird> pikhq: Download http://www.nonlogic.org/dump/bin/1201049491-qq-v1_0.tar.gz and read the README :P
01:09:32 <ehird> Don't worry it's free software ;)
01:09:33 <ehird> (MIT)
01:10:29 <Slereah> Well, I was about to give you lots of money, but...
01:11:13 <ehird> Slereah: d'aww
01:13:52 <Asztal> don't worry, you can still buy it as part of my proprietary enterprise turnkey solution.
01:14:08 <ehird> Asztal: brilliant
01:20:24 <Slereah> http://www.esolangs.org/wiki/Lazy_Bird
01:20:26 <Slereah> Comments?
01:22:39 <ehird> Slereah: lazy evaluation + IO = you need monads
01:23:49 <ehird> this also solves your _ problem
01:24:46 <Slereah> I tried to read them monads.
01:25:50 <Slereah> It's not that easy!
01:26:54 <ehird> no, but you'll get it eventualy
01:27:09 <oerjan> heh, we edited simultaneously and had an identical fix
01:27:14 <ehird> and you'll have the most bloated type system in a combinator language as well as a nice way to do IO and state
01:27:19 <oerjan> (the # one)
01:27:20 <ehird> oerjan: hey! you! try my qq interp!
01:27:26 <oerjan> NEVER
01:28:04 * Slereah does not know type system :(
01:28:13 <Slereah> Apart from the one in the Principia Mathematica
01:28:20 <Slereah> But I assume it isn't that helpful
01:28:34 <oerjan> btw is there any way to cause a currying integer to end up in a list?
01:28:50 <oerjan> otherwise they might be hard to duplicate
01:29:03 <ehird> oerjan: please try it :(
01:29:32 <Slereah> Damn, I suck at English apparently.
01:29:57 <ehird> oerjan: awww come on
01:31:23 <oerjan> er it requires a _specific_ CL interpreter?
01:32:05 <oerjan> nvg has cmucl which knowing them is probably old as sin
01:32:23 <ehird> oerjan: run.lisp won't work
01:32:44 <ehird> *invoke-debugger-hook* and similar should be ok
01:32:48 <ehird> (locally (declare (sb-ext:muffle-conditions style-warning))
01:32:52 <ehird> you'll definately have to change that
01:33:01 <ehird> posix-argv might have to change too
01:33:06 <ehird> and SBCL is a compiler
01:37:17 <oerjan> oh wait
01:37:30 <oerjan> sbcl is there too :)
01:37:53 -!- uvanta has joined.
01:38:02 <ehird> good
01:38:07 <ehird> just:
01:38:11 <ehird> read the README then
01:38:25 <ehird> you have to do a fancy dance.
01:40:24 <ehird> oerjan: is it going OK?
01:41:45 <ehird> oerjan: ping
01:42:27 <oerjan> catching up with #haskell
01:42:45 <oerjan> although my naive attempt gave "Illegal variable name."
01:42:56 <ehird> naive attempt at what?
01:43:05 <ehird> the dance?
01:43:16 <oerjan> ./run.lisp prog.qq without any dance
01:43:24 <oerjan> (i did make a prog.qq)
01:43:26 <ehird> do the dance.
01:43:28 <ehird> see: README
01:43:38 <ehird> also, make sure prog.qq is the example from the esolangs wiki, just to be sure
01:43:52 <oerjan> curiously i did
01:43:57 <ehird> did what
01:45:02 <oerjan> make it that example
01:45:04 <oerjan> ouch
01:45:22 <ehird> i reiterate
01:45:24 <oerjan> typing sbcl gives an error message (after a long banner)
01:45:27 <ehird> haha
01:45:29 <ehird> what error
01:45:39 <oerjan> could not open file ""
01:46:02 <ehird> remove ~/.sblrc?
01:46:17 <oerjan> does not exist
01:46:37 <ehird> what version does it say it is?
01:46:44 <oerjan> 0.6.0
01:46:48 <ehird> ouch
01:47:02 <ehird> the lastest version is 1.0.13
01:47:02 <ehird> :)
01:47:14 <oerjan> about as i expected
01:47:16 <ehird> oerjan: pastebin everything from 'sbcl<RETURN>' to it dying
01:47:44 <oerjan> the unexpected thing was that cmucl was from 2007...
01:48:25 <ehird> i still need the output to be able to help you usefully :)
01:48:28 <ehird> and yeah that's pretty odd
01:48:37 <ehird> evidently, some bias is in place :P
01:49:14 <oerjan> yep. nvg uses the university's custom package manager
01:49:16 -!- calamari has joined.
01:49:19 <ehird> yow
01:49:23 <ehird> evil university
01:49:37 <oerjan> there is a 0.9.16 version but it is not propagated
01:49:46 <ehird> anyway do the pastebin thing :P
01:50:25 <oerjan> it is cross-platform, i guess is the one nice thing about it
01:51:07 <ehird> hellooooo, pastebin
01:53:20 <oerjan> http://pastebin.com/m2e9abd8c
01:53:44 <ehird> sbcl --help
01:54:36 <oerjan> why that gives after the banner:
01:54:37 <oerjan> fatal error encountered in SBCL runtime system:
01:54:38 <oerjan> GC invariant lost, file "gencgc.c", line 6157
01:54:39 <oerjan> LDB monitor
01:55:03 <oerjan> i think that version is a lost cause...
01:55:27 <ehird> yes.
01:55:37 <ehird> do you have any means of installing to perhaps ~/bin etc.?
01:55:44 <ehird> wait, alternatively
01:55:46 <ehird> take the dumb route
01:55:48 <ehird> cmucl
01:55:49 <oerjan> let me check...
01:55:59 <ehird> wait, no, you couldn't
01:56:01 <ehird> asdf stuff.
01:57:19 <ehird> oerjan: well, if you do manage, you can use my README etc
01:57:25 <ehird> maybe i'll see a new qq program by tomorrow :P
01:57:27 <ehird> good luck
01:57:41 -!- ehird has quit.
02:09:41 -!- GreaseMonkey has joined.
02:11:58 -!- boily has joined.
02:27:57 <pikhq> Well, I start my Calc II class tomorrow. . . :)
02:30:11 <RodgerTheGreat> woohoo
02:30:49 <pikhq> Interestingly, it's a class offered online with recorded lectures. . .
02:30:54 <pikhq> But whatever. I has calculus!
02:31:10 <RodgerTheGreat> perhaps it's just me, but my Calculus 2 course at MTU was not fun. Cryptography and Formal Models of Computation were both a blast.
02:31:59 <pikhq> I enjoyed Calc 1, so I suspect Calc 2 will be equally enjoyable.
02:34:34 <RodgerTheGreat> For me, I really lost interest when Calc 2 bogged down in algebraic minutia revolving around integrals. I had the whole "Whoa, calculus is really just a few basic principles!" revelation in Calc 1, so I don't think there was much more for me to enjoy.
02:35:52 <RodgerTheGreat> I'm much stronger in some areas of math than others, and really wicked algebra and algebra based on "guessing" or intuitively knowing things frustrates me no end.
02:36:42 <pikhq> Algebraic manipulation is something that comes easily to me. . .
02:36:50 <pikhq> As is quite a bit of math, really.
02:37:24 <RodgerTheGreat> when explaining Factoring seemed to boil down to "...and then you try numbers until you find some that make this equation work", my reaction was essentially "If you cannot write an algorithm a computer would use to solve this, why am I expected to be capable of solving it?"
02:37:29 * pikhq remembers forgetting a few derivatives on a calc test, and therefore, as part of the work, had proofs of the derivatives of functions. :p
02:38:49 <pikhq> I also remember figuring out the derivative of x^x without it having been taught. . .
02:39:08 <pikhq> (I've since forgotten it. XD)
02:39:20 <RodgerTheGreat> I can crunch through matrix operations wonderfully. They have a zenlike, mechanical feel to them. I enjoy how linear algebra can take ugly, complex problems and make them regular, clean solutions through straightforward algorithms
02:39:37 * pikhq won't comment
02:40:14 -!- boily has left (?).
02:52:00 * oerjan remembers having an epiphany with x^x and the multivariable chain rule
02:52:15 <oerjan> well, very vaguely
02:56:00 <RodgerTheGreat> hey, let's watch a scientology orientation video: http://video.google.com/videoplay?docid=-3094137170809569203&hl=en
02:59:22 <RodgerTheGreat> the rhetoric is pretty impressive. Very clever stuff.
02:59:44 <RodgerTheGreat> I always enjoy dissecting the arguments of religious nutcases.
03:10:34 -!- immibis has joined.
03:11:23 -!- immibis has left (?).
03:36:29 <pikhq> I enjoy dissecting the arguments of all nutcases.
03:38:21 <RodgerTheGreat> religious arguments are to owl pellets as arguments are to dung
03:39:25 <pikhq> The music over the video of the various Scientology buildings serves to excite viewers, without actually giving any reasons for it. . .
03:39:49 <pikhq> And the claim of thousands of churchs is another show of illogic.
03:39:56 <RodgerTheGreat> If you don't have time to watch the whole video, skip to the last 5 minutes- it's awesome
03:40:33 <pikhq> An appeal to God and Christianity in Scientology amuses me.
03:40:54 <RodgerTheGreat> "THE GOVERNMENT WAS DEVELOPING MIND CONTROL BUT A HACK SCI-FI WRITER FOILED THEIR DASTARDLY PLANS. BUY HUNDREDS OF HIS BOOKS TO ACHIEVE NIRVANA OR FREEZE IN SPACE WHILE WE CHILL OUT WITH ALIENS OK"
03:40:58 <pikhq> And they make a big show of proving that they're a religion.
03:41:03 -!- Corun has quit ("This computer has gone to sleep").
03:41:15 <pikhq> With patriotic music over it.
03:41:33 <pikhq> I'm watching this all the way through, because it's too damned amusing.
03:42:06 <RodgerTheGreat> I like how they on one hand claim they're in opposition to the government's mind control programs, and then on the other hand use government investigations to justify being a legit religion
03:42:35 <RodgerTheGreat> it's all a fantastic mindfuck
03:42:40 <pikhq> "L. Ron Hubbard is just a man." and they go on to imply that he's a minor diety.
03:42:57 <RodgerTheGreat> exactly.
03:43:15 <RodgerTheGreat> "Just a man. Like the Buddha. Or Jesus."
03:43:34 <pikhq> And the suits & ties are themselves implying that they speak from authority. . .
03:43:37 <pikhq> Ugh.
03:43:48 <oerjan> "We won't mention Muhammed as we don't like our churches to burn."
03:43:56 <pikhq> And they note that he had '65 professions'.
03:44:11 <RodgerTheGreat> oerjan: lol
03:44:18 <pikhq> And they have a fucking *shrine* to his sci-fi.
03:44:22 <RodgerTheGreat> you mean "Orgs", right?
03:44:35 <RodgerTheGreat> they also have a shrine to him- keep watching
03:45:21 <pikhq> The mental gynmastics required in this is astounding.
03:45:34 <pikhq> And now, the conspiracy theory.
03:45:36 <RodgerTheGreat> I knew you'd love it
03:45:55 <pikhq> I absolutely love anti-Scientology stuff.
03:46:03 <RodgerTheGreat> I had no idea how *openly* crazy scientologists were before watching this
03:46:07 <pikhq> (I've read OT-I through III. Hilarious.)
03:46:12 <RodgerTheGreat> I thought they tried harder to hide the crazy
03:46:44 <pikhq> And I love how they claim dianetics is available to all who want it.
03:46:56 <pikhq> Then why do they charge several billion?
03:47:07 <RodgerTheGreat> I also love how in the beginning, they claim religion inherently makes sense because it has existed for thousands of years
03:47:08 <pikhq> And they make an appeal to the popularity of his books. . .
03:47:17 <pikhq> In a Scientologist bookstore.
03:47:22 <RodgerTheGreat> yes
03:47:45 <Asztal> bah, I can't seem to seek to a specific point in the video.
03:48:24 * Asztal wonders why so many flash video players are so terribly bad at this seemingly simple task
03:48:38 <pikhq> "L. Ron Hubbard's words are truth." "He mad revision after revision after revision."
03:48:45 <Asztal> haha
03:49:26 <RodgerTheGreat> pikhq: lmao
03:49:28 <pikhq> And the *basics* of Scientology? 10 hard-cover, glossy books.
03:49:48 <pikhq> "You, too, can be a scientologist! Just send $1,000 to us!"
03:49:49 <RodgerTheGreat> "why do my arguments always sound stupid when you rephrase them?"
03:49:53 <pikhq> LMAO
03:50:06 <RodgerTheGreat> just wait for the dude with charts on how your personality can be improved
03:50:32 <pikhq> I'm loving how they claim that all the different Orgs are completely independent.
03:50:53 <pikhq> Then how do they have that much pooled funds?
03:51:00 <RodgerTheGreat> the kicker is "legally independent". That's very good planning.
03:51:22 <pikhq> Ah.
03:51:31 <pikhq> Legally independent is just clever legality.
03:51:57 <pikhq> "We don't worship Ron. We just have an office for a dead man in every Org."
03:52:21 <RodgerTheGreat> EXACTLY!
03:52:39 <RodgerTheGreat> I laughed out loud at that part
03:53:07 <pikhq> I'm really loving the Religious Technology Center.
03:53:29 <pikhq> "We give it out to everyone! That's why we charge up the wazoo!"
03:53:41 <pikhq> Also, they claim they serve to prevent the 'tech' from being changed.
03:53:59 <pikhq> Note that Ron has 'written' books post-mortem. ;)
03:54:22 <RodgerTheGreat> fascinating
03:54:34 <RodgerTheGreat> I wonder which office his spirit uses
03:55:02 <pikhq> Those graphs are so fake & laughable.
03:55:54 <pikhq> They don't even *try* to hide the crazy.
03:56:14 <pikhq> More conspiracy theory!
03:56:18 <pikhq> Anti-psychology, this time.
03:56:48 <pikhq> And claiming that Scientology, if allowed to work, makes the world perfect.
03:56:53 <pikhq> 'Brilliant!'
03:57:22 <pikhq> And another hardcover book they recommend for beginners!
03:57:52 <pikhq> That's $1,100 and counting. (I'm assuming, from the pictures and knowledge of the church, that these are college textbook-priced.)
03:58:36 <pikhq> "Scientology: cures what ails ya!"
03:59:28 <pikhq> And they still have yet to even *define* Scientology.
03:59:34 <pikhq> At 23 minutes in.
04:01:14 <pikhq> And are they claiming that all denominations are welcome at the CoS?'
04:01:37 <pikhq> And another book, with a leather and gold cover. . .
04:01:42 <pikhq> $1,300 or so.
04:01:53 <RodgerTheGreat> leather + gold = credibility
04:02:41 <pikhq> And they're going back to the "Scientology *is* a religion!" bit.
04:03:54 <pikhq> "Scientology helped me!!!" claim people.
04:03:58 <pikhq> But *how*?
04:04:26 <RodgerTheGreat> http://www.youtube.com/watch?v=mnNSe5XYp6E <- this is a great follow-up
04:04:55 <pikhq> It's like Scientology 101 is "Saying words without saying anything".
04:05:40 <RodgerTheGreat> "If you leave this room after seeing this film and walk out and never mention Scientology again, you are perfectly free to do so. It would be stupid, but you can do it. You can also dive off a bridge or blow your brains out. That is your choice."
04:05:44 <pikhq> This is even more vague than fortune cookies, for $diety's sake!
04:06:22 <pikhq> Almost to the last 5 minutes. . .
04:06:28 <pikhq> I assume the crazy goes to 11 there?
04:06:45 <pikhq> *Another* book!
04:06:54 <pikhq> The total is $1,400 for recommendations.
04:06:57 <RodgerTheGreat> the last couple minutes are pure gold
04:07:44 <pikhq> And after half an hour, that video does not explain what Scientology *is*.
04:08:18 <RodgerTheGreat> "Materialistic Science has not disproven god or the spirit - they just say there isn't one"
04:08:28 <pikhq> "Arise above the decay."
04:08:40 <pikhq> "You are an immortal being."
04:08:47 <pikhq> Yeah, the crazy has hit 11.
04:09:25 <RodgerTheGreat> it hits at least 12 at the end
04:09:43 <pikhq> (at least most religions put this up front, as a given. Scientology claims that "... therefore, you're immortal, QED.")
04:10:04 <oklopol> ever woken up from a dream to continue it for a while while awake? i just woke up, and actually felt someone hit their teeth deep inside my skull, and actually started fighting back, at least for about 10 sec before i realized there was no one there
04:10:46 <pikhq> "What's true is what is true for you."
04:10:52 <pikhq> Ooooooh, Orwell!
04:12:04 <pikhq> Those last 2 minutes are too damned crazy to describe.
04:12:21 <RodgerTheGreat> I like huxley's version. something like "6742 repetitions equals one truth."
04:12:39 <pikhq> That is a good version, yes.
04:13:26 <RodgerTheGreat> and really, scientology is closer to a Brave New World than 1984 for a variety of reasons. They just need soma.
04:14:36 <pikhq> I know, but that one line was also quite Orwellian.
04:14:45 <RodgerTheGreat> I always though Brave New World was a more frightening book, because people do it to themselves. THX-1138 is chilling for the same "watchers watching watchers" type of reason.
04:14:57 <pikhq> Brave New World was *damned* chilling.
04:15:18 <pikhq> 1984 was eerie, but BNW is *scary*.
04:17:52 <RodgerTheGreat> 1984's scariest moments come as the agents in MiniLuv wear down and destroy Winston's mind.
04:18:32 <RodgerTheGreat> And just considering the depths of meaning in the name "Ministry of Love" can give me chills.
04:20:24 <pikhq> Agreed.
04:20:35 <RodgerTheGreat> great quote from hubbard himself: "Did you ever read poor old George Orwell's uh.. 1984? Yes, yes, that's wonderful. That would be, could be, the palest imagined shadow of what a world would be like under the rule of the secret use of Scientology with no remedy in existence"
04:21:11 <pikhq> Miniluv is where all the truly *freaky* shit happens: even the very *mind* is changed.
04:21:19 <pikhq> *shudder*
04:21:34 <pikhq> "He loved Big Brother." is, to me, the scariest thing in that whole book. . .
04:21:47 <RodgerTheGreat> but at the heart of MiniLuv, of course, is room 101.
04:22:22 <RodgerTheGreat> "if you want a crystal clear vision of the future, imagine a boot stomping on a human face, forever."
04:22:55 <pikhq> Now, this room feels like I'm in an English class that I'd actually care about. :p
04:23:44 <RodgerTheGreat> wanna talk about Lord of the Flies? God, I loved that book.
04:23:50 <RodgerTheGreat> It really spoke to me.
04:23:56 <pikhq> That's another good one.
04:24:05 <pikhq> I hated how my English class taught it though.
04:24:13 <pikhq> "What is the symbolism of the shell?*"
04:24:25 <RodgerTheGreat> "To think that the beast was something that could be hunted and killed... I've been with you all along..." <- fucking goosebumps every time
04:24:34 <pikhq> Who gives a fuck? The interesting thing is the discussion of what a beastial creature man can be.
04:24:47 -!- oerjan has quit ("leaving").
04:24:51 <RodgerTheGreat> breaking books into symbolism like that completely destroys the fun of reading them
04:25:02 <pikhq> Absolutely.
04:25:10 <pikhq> It also distracts from the meaning of the book. . .
04:25:44 <pikhq> I'm enjoying my current English class, just because it asks not "what's the symbolism of foo bar and baz", but "What does this mean, and why?"
04:25:50 <pikhq> I can handle that.
04:25:57 <pikhq> Anyways, Lord of the Flies.
04:26:54 <RodgerTheGreat> my favorite aspect of the book is the ending, when you think about it
04:27:07 * pikhq nods. . .
04:27:25 <pikhq> It's been a while, but I think I remember that ending. Kids get discovered by pilots, IIRC.
04:27:52 <RodgerTheGreat> naval officers rescue the kids, and they instantly come to their senses. But the true irony is that the officers themselves are getting ready to RETURN TO A WAR. The implication is, "who's going to snap the *adults* out of it?"
04:28:10 <pikhq> Oh, yeah. . .
04:28:20 <pikhq> Probably the only way that story could sanely end.
04:28:54 * pikhq wonders why more assigned books in English couldn't have such interesting implications. . .
04:29:11 <RodgerTheGreat> because most of what we read is really shit.
04:29:21 -!- EgoBot has joined.
04:29:31 -!- GregorR has joined.
04:29:36 <RodgerTheGreat> Jane Eyre, Great Expectations, the Great Gatsby... eugh.
04:29:51 <pikhq> Instead, we get books like 'Bless Me Ultima', which is about half hallucinations, and half meaningless.
04:29:54 <RodgerTheGreat> I kinda liked "One day in the Life of Ivan Denisovich"
04:30:21 <pikhq> Never heard of it.
04:30:32 <RodgerTheGreat> "Crime and Punishment" was kinda decent, but it felt really drawn out and I have difficulty enjoying a book where you're *supposed* to hate the narrator. Plus the ending was horrible.
04:31:06 <RodgerTheGreat> "BUT IT'S OK, BECAUSE HE REPENTED, FOUND JESUS AND WILL MARRY A HOOKER WITH A HEART OF GOLD!"
04:31:19 <pikhq> *groan*
04:31:22 <RodgerTheGreat> talk about tripping on the finish line there
04:31:36 <RodgerTheGreat> the dude MURDERED two people, one of which was a really nice person!
04:31:56 <RodgerTheGreat> And he was an insanely egotistical asshole!
04:32:03 * pikhq wonders: would you call Hemingway any good?
04:32:15 <pikhq> We just started doing stuff on Hemingway, so. . .
04:32:31 <RodgerTheGreat> I liked "Old man and the sea" and "Of Mice and Men"
04:32:46 <pikhq> "Of Mice and Men" was pretty good, IIRC.
04:32:51 <RodgerTheGreat> the grapes of wrath was rather dull, but it had it's moments. That was another WTF ending.
04:33:02 <pikhq> Not read that one.
04:33:03 <RodgerTheGreat> His short stuff was the best, really
04:33:28 <pikhq> And "Of Mice and Men" and "Grapes of Wrath" are Steinbeck, not Hemingway.
04:33:44 <RodgerTheGreat> don't bother with the grapes of wrath, but read "the old man and the sea" sometime. Actually, you could probably run through it on project gutenburg in a couple hours.
04:33:51 <RodgerTheGreat> argh, crap
04:34:03 <RodgerTheGreat> I was thinking totally in the wrong direction there
04:34:07 <pikhq> We're doing Hemingway's short fiction here.
04:34:10 <RodgerTheGreat> that makes me feel really stupid.
04:34:22 <pikhq> "The Old Man and the Sea" is genuinely Hemingway, though. ;)
04:35:03 <RodgerTheGreat> hunh. I guess the styles reminded me of one another.
04:35:10 <RodgerTheGreat> Length probably helped.
04:35:22 <pikhq> From what I've read of both of them, their simplistic style *is* similar. . .
04:35:35 <pikhq> Hemingway's seems a bit more spare, though.
04:38:47 <RodgerTheGreat> yes! I found it!
04:38:57 <RodgerTheGreat> this is the cover of my copy of Lord of the Flies:
04:38:57 <RodgerTheGreat> http://static.flickr.com/119/300643227_7c903a0d7d.jpg
04:39:12 <RodgerTheGreat> It's very simple, but it so perfectly describes the mood of the book
04:39:16 <pikhq> Agreed.
04:40:24 <RodgerTheGreat> something like this just doesn't do the book as much visceral justice: http://www.shopholyokenews.com/shop/shopimages/products/normal/9780399501487.JPEG
04:43:10 <pikhq> *That's* the latest one?
04:43:19 <pikhq> What the hell are they thinking?
04:43:38 <pikhq> The book has torment, not a fly mounted on a kid!
04:46:40 <oklopol> old man and the sea wasn't good, lord of the flies wasn't good... though
04:46:45 <oklopol> *-though
04:49:23 <RodgerTheGreat> oklopol: :<
04:49:25 <oklopol> well, old man and the sea had an interesting idea... lord of the flies i just found plain bad
04:49:52 <oklopol> i can't stand books based on idiots fighting over nothing.
04:50:06 <oklopol> even if they're kids and that seems probable to actually happen
04:51:10 <RodgerTheGreat> it's an exploration of human nature
04:51:24 <oklopol> i know
04:51:52 <pikhq> I suspect it's a book more easily enjoyed by those who read remarkably obsessively.
04:51:56 <RodgerTheGreat> and the main characters represent different archetypes- mysticism, repressed violence, authority, intellectualism
04:52:07 <oklopol> yep, i hate all that
04:52:15 <RodgerTheGreat> using the name "roger" is actually some really great biblical symbolism
04:52:27 <oklopol> too black and white characters
04:52:31 * pikhq will probably pick up his book-a-day habit again in college
04:52:45 <RodgerTheGreat> if you recall, "roger" in LotF became the torturer- "a stick sharpened at both ends".
04:53:11 <RodgerTheGreat> Biblically, the name "roger" means "he who carries the spear"
04:53:22 <oklopol> i, on the other hand, have decided never to read a fictional book again :D
04:53:35 <pikhq> You are a *freak*.
04:53:53 <RodgerTheGreat> (as in, the roman soldier who supposedly stabbed christ out of mercy)
04:54:02 <RodgerTheGreat> it's very interesting to think about
04:54:13 <pikhq> You'll take my fiction from my cold, dead fingers.
04:54:31 <RodgerTheGreat> I also like the fact that they never make it fully clear what roger does to people- it makes it all the more chilling.
04:54:36 <oklopol> well, i do sometimes enjoy modern stuff
04:54:42 <oklopol> strangler ficus was quite good
04:55:00 <oklopol> not sure what the original name is, that's just a crude translation
04:55:01 <pikhq> On a different note: Mmm. The Time Machine.
04:55:30 <oklopol> RodgerTheGreat: i don't remember at all who roger was anymore
04:55:58 <oklopol> so i'm missing the point a bit :<
04:58:02 <RodgerTheGreat> he's one of Jack's followers. He's described as a dark child, with many scenes painting him as having deeply sadistic tendencies. As I said, he later becomes Jack's torturer, wielding "a stick sharpened at both ends", which he uses to do something unspeakable to those that oppose Jack.
04:59:02 <oklopol> lol i don't remember anything... guess i should read it again.
04:59:12 <oklopol> anyway, i don't find biblical references that interesting
04:59:17 <GregorR> Sodomy is sometimes called the sin which a Christian cannot say :P
04:59:31 <GregorR> One could also call it ... unspeakable ... :P
05:01:28 <RodgerTheGreat> GregorR: it's possible, but it's pretty obvious that leaving whatever he did unspoken is much better from a dramatic perspective than just telling the reader
05:01:43 <GregorR> Heh
05:02:24 <RodgerTheGreat> and that wouldn't necessarily require a stick. Even if the obvious explanation there held, it wouldn't explain why it was sharpened at two ends.
05:02:35 <oklopol> i can imagine the book getting a better status with a long gay rape scene! :D
05:03:13 <RodgerTheGreat> Plus there are significantly more painful, if not more dehumanizing, forms of torture, like the veritable cornucopia of things that can be done to the human body with bamboo.
05:04:22 <oklopol> RodgerTheGreat: link!
05:04:41 <GregorR> That's !quote-worthy :P
05:05:16 <RodgerTheGreat> I dunno of any off the top of my head, but a popular one is sharpened bamboo shoots inserted underneath fingernails and toenails. I understand it's excruciating.
05:05:38 <oklopol> yeah, i never really believed in that
05:05:47 <oklopol> had a lot of stuff under my nails
05:06:08 <GregorR> You've never had anything stabbed just a liiiitle bit too far?
05:06:08 -!- adu has joined.
05:06:11 <GregorR> It's pretty damn painful.
05:06:17 <oklopol> hmm
05:06:32 <oklopol> may have just been too shallow in
05:06:38 <RodgerTheGreat> you can also split it and whip people with a stalk- every bit as painful and damaging as a cat-o-nine tails
05:06:40 <adu> hi oklopol
05:06:55 <oklopol> hi adu
05:07:02 <oklopol> oh god... i forgot what you asked me :<
05:07:04 <adu> i've been working on my language
05:07:14 <adu> oklopol: what did I ask you?
05:07:16 <RodgerTheGreat> when dry bamboo is cut axially, it gets really, *really* sharp
05:07:32 <RodgerTheGreat> (for wood, obviously)
05:07:36 <oklopol> RodgerTheGreat: what have you been reading? :P
05:07:46 <RodgerTheGreat> I dabble in many things. :)
05:07:49 <oklopol> adu: i don't remember, it was quite a lot of time ago.
05:08:08 <adu> oklopol: I actually saved that chat, I could pull it up :)
05:08:17 <oklopol> haha, do that!
05:08:27 <oklopol> i've been trying to answer you for ages :-)
05:08:43 <oklopol> i get a bit obsessed about not being able to answer a question
05:09:05 <adu> [23:17] adu: what new thing?
05:09:05 <adu> [23:17] oklopol: not a programming language
05:09:15 <adu> is that it?
05:09:20 <oklopol> nope
05:09:22 <oklopol> after
05:09:44 <adu> [23:18] oklopol: with happy bouncing balls!
05:09:47 <oklopol> you asked something, then said "nevermind, i have to leave"
05:10:02 <oklopol> :)
05:10:37 <oklopol> you saying there's no question there? :\
05:11:04 <RodgerTheGreat> ooh, found a new one: http://www.answers.com/topic/chinese-bamboo-torture
05:11:28 <puzzlet_> q
05:11:46 <RodgerTheGreat> the whole "wanna buy some bamboo art?" thing on the right makes that article pretty funny
05:12:22 <oklopol> adu: i need to see the log, what day was that?
05:12:50 <oklopol> "acupuncture diagram"
05:13:03 <oklopol> "chinese torture"
05:13:29 <adu> 10:50:21 <oklopol> adu: what do you mean "part of a single model"?
05:13:31 <adu> is that it?
05:13:41 <oklopol> :\
05:13:44 <oklopol> i don't think so
05:14:34 <adu> 11:05:41 <adu> what is "koed"?
05:14:49 <RodgerTheGreat> pikhq: more scientology goodies: http://video.google.com.au/videoplay?docid=-6812164614976718979
05:14:50 <oklopol> ah.
05:14:57 <oklopol> yes, just found that myself too
05:15:04 <oklopol> "koed" == "code"
05:15:07 <adu> oo
05:15:16 <adu> ic
05:15:28 <adu> anyways I've been working on my hash-lang
05:15:38 <oklopol> hash-lang?
05:15:44 <adu> For the longest time I've been debating about Patterns and Symbols
05:15:48 <adu> ya
05:15:56 <adu> everything is a hash-table basically
05:16:03 <adu> if statements are like this:
05:16:25 <adu> {True: texpr; False: fexpr}.(x == "fish")
05:17:13 <RodgerTheGreat> makes sense. After all, one definition of a function is simply a set of mappings from input to output.
05:17:21 <oklopol> {#t: texpr; #f: fexpr} (X == "fish")
05:17:27 <oklopol> (okloyalk)
05:17:29 <oklopol> *t
05:17:35 <oklopol> err
05:17:40 <oklopol> s/:/->
05:17:45 <adu> But if you allow hashtables to have Defaults and Patterns and Order
05:17:50 <adu> then you have everything
05:17:56 <adu> :)
05:18:05 <oklopol> oklotalk does the same, but the functions are actually functions :-)
05:18:19 <oklopol> but i like hashtables
05:18:38 <adu> well, PatternDefaultHashTables are like functions
05:18:53 <oklopol> heh yeaaaah
05:18:56 <oklopol> oh, actually
05:18:57 <adu> square = {\x: x*x}
05:19:12 <oklopol> hashtables make a bit more sense if they're mutable.
05:19:17 <oklopol> oklotalk has mutable functions :D
05:19:36 <adu> nice
05:20:06 <RodgerTheGreat> pikhq: the fascinating thing about these interviews with steven fishman is that he appears to display rational thought GIVEN that you accept the writings he's read as truth. This is pretty much textbook schizophrenia.
05:20:42 <RodgerTheGreat> ...or "faith" as the case may be.
05:20:42 <adu> who is Steven?
05:20:47 <pikhq> Thanks. . . Hmm.
05:20:55 <RodgerTheGreat> I dunno, some guy brainwashed by L. Ron Hubbard.
05:21:13 <adu> who is Hubbard?
05:21:33 <RodgerTheGreat> a mediocre science fiction writer and creator of a highly successful cult/religion
05:21:42 <pikhq> Said cult is called Scientology.
05:21:57 <oklopol> not just a finction writer! also an AVIATOR
05:22:12 <oklopol> *fiction
05:22:39 <pikhq> oklopol: Their shrine to him claims that he had over 60 professions.
05:22:56 <oklopol> WOW
05:22:59 <oklopol> he must be right
05:23:09 <oklopol> i'll go join the cult now
05:23:14 <adu> oklopol: that depends
05:23:29 <adu> what does Mr. Fishman claim?
05:23:30 <pikhq> That's really creepy.
05:23:40 <pikhq> Standard Scientology fair.
05:23:49 <RodgerTheGreat> http://video.google.com.au/videoplay?docid=-6812164614976718979 <- you can watch if you'd like
05:23:51 <pikhq> s/fair/fare/
05:24:43 <oklopol> i'm actually quite terrified by even the normal religious people coming to my door
05:24:50 <oklopol> i don't think i'd make a good cultist
05:25:02 <pikhq> Poison. . . Milk.
05:25:16 <GregorR> I've never had door-to-door Jesus solicitors.
05:25:31 <pikhq> I have.
05:25:52 <oklopol> i was just told the other day about "god having set the variables of the world"
05:25:56 <RodgerTheGreat> I might enjoy that if I could trip them up logically.
05:26:02 <pikhq> Even I, as a Christian, am tempted to respond with "Sorry, you're interrupting my human sacrifice. Could you make this quick?"
05:26:19 <oklopol> and they were a bit worried i might believe in that "evolution thing"
05:26:29 <GregorR> RodgerTheGreat: You can only trip people up logically if their argument has logic.
05:26:55 <RodgerTheGreat> GregorR: therein lies the problem
05:26:58 <GregorR> RodgerTheGreat: When they've totally exempted themselves from the rules of logic and reason, you really have no weapon. Except for bullets.
05:27:29 <adu> hmm
05:27:33 <adu> watching vidieo
05:27:33 <oklopol> i could never tell someone their whole life has no point :\
05:27:46 <oklopol> even if they wouldn't believe me
05:28:32 <oklopol> especially if it's an old woman... i feel it's better not to upset them during the little time they have
05:28:46 <RodgerTheGreat> "How did you exteriorize yourself then?" "Well, I just located myself in space and time. Then I produced a beam. I was vaccilating."
05:28:51 <RodgerTheGreat> wow
05:28:59 <oklopol> :D
05:29:07 <oklopol> then i produced a beam xD
05:29:25 <pikhq> Holy crap. I knew they were crazy, but the crazy goes to 110!!!
05:29:39 <RodgerTheGreat> pikhq: again, I knew you'd like it
05:30:02 <pikhq> I'm convinced that you and I have similar tastes. . .
05:30:09 <oklopol> vaccilate?
05:30:10 <pikhq> Excepting OS choice, of course.
05:30:25 <oklopol> hey, everyone likes a religious freak ;)
05:30:35 <oklopol> vacillate?
05:30:44 <RodgerTheGreat> oklopol: yeah, probably a typo
05:31:15 <oklopol> i'm fairly sure cults are just for the entertainment of the people with a brain.
05:31:29 -!- cherez has quit (Read error: 110 (Connection timed out)).
05:32:13 <pikhq> "You don't need your eyes to see."
05:32:33 <pikhq> So, he wouldn't mind if I removed them?
05:32:51 <adu> pikhq: you take things to litterally
05:33:02 <adu> much of spirituality is linguistic metaphors
05:33:11 <pikhq> In this case, he's being literal.
05:33:19 <oklopol> yep, it doesn't mean anything, and it doesn't have to
05:33:20 <oklopol> !
05:33:24 <EgoBot> Huh?
05:33:26 <RodgerTheGreat> technically speaking, there's a grain of truth to that. "MInd's Eye", or audiovisual scratchpad, depending which model of cognition you subscribe to. :)
05:33:39 <pikhq> He is literally saying that he can leave his body, and see without his eyes.
05:33:47 <pikhq> RodgerTheGreat: That's not quite what he's discussing.
05:33:49 <pikhq> ;)
05:33:51 <uvanta> what's wrong with the topic
05:34:09 <RodgerTheGreat> this is plausible, but it's very difficult to be certain what is metaphor and what is not
05:34:17 <RodgerTheGreat> it's a rich memetic tapestry
05:34:57 <adu> There is only 1 outwrite falsehood I've encountered so far
05:35:12 <oklopol> (outright)
05:35:15 <adu> hehehe
05:35:19 <oklopol> :P
05:35:27 <RodgerTheGreat> it's very interesting, and disturbing at the same time
05:35:37 <RodgerTheGreat> elegantly constructed, this worldview
05:35:56 <adu> RodgerTheGreat: his worldview is not unique
05:36:06 -!- calamari has quit ("Leaving").
05:36:15 <RodgerTheGreat> For a while, I've thought it would be interesting to create a discipline called "Memetic Engineering"
05:36:24 <oklopol> is it? i thought it's rather simple and boring
05:36:26 <adu> RodgerTheGreat: there are elements of his worldview scattered throughout all world Religions
05:36:28 <oklopol> err
05:36:37 <RodgerTheGreat> adu: but it was constructed, in this case by L. Ron Hubbard.
05:36:42 <oklopol> "thought" not as in "my opinion is"
05:37:07 <RodgerTheGreat> I view religions of all kinds as a type of organism, but in this case they are generally built purposefully, at least at first
05:37:38 <RodgerTheGreat> An organism composed not of matter, but of ideas, and living not in the physical universe, but in the minds of human communities
05:38:15 <oklopol> "the viruses of mind"
05:38:16 <RodgerTheGreat> it's like a computer virus- a little bit alive, although existing in an entirely artificial universe
05:38:20 <RodgerTheGreat> precisely
05:38:27 <RodgerTheGreat> or, as I like to say, memetic viruses
05:38:36 <oklopol> yep, that's an interesting way to put it.
05:38:57 <RodgerTheGreat> science is a memetic virus, too, as is the square knot and written language
05:39:14 <adu> my two favorite sources of rational mind candy are:
05:39:14 <RodgerTheGreat> ideas with utility reproduce
05:39:15 <adu> http://anewlife.org
05:39:20 <adu> http://www.geohanover.com/philo.htm
05:39:47 -!- 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.").
05:39:51 <oklopol> science is kinda like the virus in Phenomenon, makes you better and better until you soon die of it
05:40:00 <adu> oops, i forgot http://fusionanomaly.net/
05:40:10 <RodgerTheGreat> or the metavirus of Snow Crash. :)
05:40:18 <adu> whats Snow Crash?
05:40:19 <oklopol> hmm, what's that?
05:40:26 <RodgerTheGreat> a great sci-fi book
05:40:38 <oklopol> well, obviously, but can you describe it?
05:41:10 <RodgerTheGreat> Its... very complicated. It's one of my favorite books, so I don't think I could reduce it very well- check out the wiki article
05:43:14 <RodgerTheGreat> but what I find interesting, as a fundamental difference between science and religion, is that one's very existence is defined by change, while another has intricate mechanisms designed to impede change and maintain a constant memetic genome.
05:44:10 <RodgerTheGreat> and memetic viruses, like biological viruses, cannot stand alone- they function together with a complex network of other ideas and logical frameworks
05:45:11 <oklopol> hmm... religions can live for quite long without new religions though
05:45:41 <RodgerTheGreat> I consider a "worldview" to be the sum total, roughly, of memes hosted by an individual
05:45:58 <oklopol> mmmyeah
05:46:11 <RodgerTheGreat> oklopol: I think you misinterpreted my statement. Science is defined by change, and religions are designed to minimize mutation
05:46:24 <RodgerTheGreat> written language, and written scriptures are one such mechanism
05:46:25 <oklopol> i know
05:46:57 <oklopol> oh
05:47:09 -!- GregorR has set topic: #esoteric: The best channel for ridiculous religious arguments on FreeNode!.
05:47:17 <oklopol> :D
05:47:22 <RodgerTheGreat> The study of religions can be very interesting, but I don't think many theologians would take kindly to my mechanistic way of thinking about them
05:47:42 <RodgerTheGreat> GregorR: I dunno, I don't think we're really having an argument, at least not yet
05:47:52 <RodgerTheGreat> so I'll quit while I'm ahead- 'night, everyone
05:48:01 <oklopol> the problem is i agree with you almost completely
05:48:10 <oklopol> so... hard to make an argument.
05:48:16 <RodgerTheGreat> yeah- so it's a discussion
05:48:38 <oklopol> indeed, execpt i prefer watching you go than contributing myself. :)
05:48:47 <oklopol> so it's a lecture! :)
05:49:05 <oklopol> *Except
05:49:07 <oklopol> *Except
05:49:10 <oklopol> ...
05:49:19 <RodgerTheGreat> well, I appreciate you listening, but as I said I need sleep
05:49:23 <oklopol> *except
05:49:28 <oklopol> yep, nights
05:50:20 <oklopol> "<RodgerTheGreat> and memetic viruses, like biological viruses, cannot stand alone- they function together with a complex network of other ideas and logical frameworks" <<< my mistake was for some reason thinking you especially meant religions by this.
05:50:41 <oklopol> just btw.
05:51:19 <RodgerTheGreat> on the contrary, religions are exceptionally self-sufficient (although not completely)
05:52:09 <RodgerTheGreat> and most religions are exclusive, so they obviously don't need other religions to thrive. ;)
05:52:47 <RodgerTheGreat> they just need other religions as evolutionary pressure, to become resilient
05:53:41 <adu> well that video what certainly entertaining
05:54:11 <adu> Aparently scientology metaphors are so numerous, there are various dictionaries exclusively for it
05:54:16 <oklopol> RodgerTheGreat: indeed, that was what i found weird about it.
05:54:46 <pikhq> adu: There's probably several thousand dollars worth of books needed just to figure out what Scientology is.
05:54:52 -!- cherez has joined.
05:54:56 <pikhq> (I cheat. Project Clambake = w00ts.)
05:54:59 <adu> pikhq: lol
05:55:49 <oklopol> i'm too much a behaviorist to really care what "scientology is"
05:56:22 <adu> Obviously, its the study of "scient"
05:57:29 <pikhq> cherez: You took Latin. Tell us.
05:57:45 <cherez> Pikhq What's up?
05:57:55 <pikhq> Scientology. Etymology.
05:57:56 <pikhq> Go.
05:58:01 <GregorR> adu: Bravo X-D
05:58:15 <cherez> 'tology is Greek-based.
05:58:15 * pikhq mashes go on that Cherez again
05:58:19 <pikhq> Ah.
05:58:26 * pikhq still mashes go on that Cherez
05:58:36 <oklopol> is 'nomy latin?
05:58:42 <cherez> Scient* though, comes from the Latin scientia meaning knowledge.
05:58:42 <oklopol> of greek too
05:58:46 <oklopol> *or
05:58:53 <pikhq> Is Ig-pay Atin-lay Latin?
05:58:55 <cherez> Greek, I believe.
05:59:07 <pikhq> IGPAY ATINLY IS GREEK!!! :D
05:59:09 <pikhq> :p
05:59:12 <cherez> The first day of my Latin class someone did ask that.
05:59:19 <pikhq> LMAO
05:59:25 <adu> X-D rocks!
05:59:43 <GregorR> "Christian Science and Scientology are not related. Christian Science is antasy, Scientology is sci-fi."
05:59:49 <GregorR> *fantasy
06:01:01 <cherez> Scientology would come out literally to something like "the study of knowledge."
06:01:44 <adu> lolol
06:01:51 <adu> I love security check #101
06:01:55 <adu> "101. HAVE YOU EVER CAUSED A PLANET TO DISAPPEAR?"
06:02:07 <oklopol> wut?
06:02:12 <cherez> Aside from how mixing langauge rootsi s generally a no-no....
06:02:14 <adu> lol
06:04:26 <adu> from the " Operation Clambake" site
06:05:10 <cherez> Operation Clambake is a beautiful site.
06:05:48 <adu> no, Wikipedia is a beautiful site
06:07:47 <adu> Why the A x 89 in the title?
06:09:43 -!- GregorR has set topic: TOPIC NOSTALGIA! 'Why is there an 'L' in Noel? || Because "Noël" is prettier than an "L"? Errr... || Celebrate Mungday!'.
06:09:45 <pikhq> Because you're not the boss of me.
06:10:05 -!- GregorR has set topic: TOPIC NOSTALGIA! (topic from 2004/01/05) 'Why is there an 'L' in Noel? || Because "Noël" is prettier than an "L"? Errr... || Celebrate Mungday!'.
06:10:42 <oklopol> i don't get it
06:10:51 <pikhq> http://www.dresdencodak.com/cartoons/dc_038.html Get it.
06:14:27 <oklopol> actually you make a good point, if scientology doesn't make claims, it isn't anything
06:14:58 <oklopol> just a healing label :D
06:17:10 <oklopol> umm
06:17:19 <oklopol> to be honest, i still don't get it :D
06:18:57 -!- uvanta has quit (Read error: 104 (Connection reset by peer)).
06:19:33 -!- uvanta has joined.
06:20:04 <adu> anyways
06:20:19 <adu> oklopol: wanna hear what I came up with today for my lang?
06:20:28 <oklopol> yes
06:20:37 <adu> A syntax for patterns and symbols
06:20:57 <adu> pattern identifiers can be used for whatever the pattern has matched
06:21:05 <adu> and symbols will only match that symbol
06:21:06 <oklopol> hmm
06:21:12 <adu> \pattern
06:21:16 <adu> /symbol
06:21:17 <oklopol> pattern identifiers?
06:21:21 <adu> ya
06:21:23 <adu> like in lambda
06:21:28 <adu> \x:x*x
06:21:43 <oklopol> right
06:21:45 <adu> x is a pattern that matches whatever you give it
06:21:45 <oklopol> yeah
06:21:57 <adu> \[a,b]:a*b
06:22:10 <adu> will only match a list of two "whatever"s
06:22:17 <oklopol> yep
06:22:34 <oklopol> do you have something like haskell's @?
06:22:47 <adu> but /e:(exp 1) will only match E
06:22:55 <adu> er i mean "e"
06:23:07 <oklopol> i hate it when pattern matches lack that, or, similarly, an imperative language lacks an "=" whose result is a normal value
06:23:42 <adu> oklopol, not yet, but i'm thinking about it
06:24:11 <oklopol> that's a very fundamental idea, good if you had it yourself, but many have had it before you
06:24:20 <oklopol> if it was just that match/set distinction
06:24:28 <adu> I like Haskell's @ as well :)
06:26:07 <oklopol> i've realized that not going to school has actually been bad for me... when i'm at school, i get millions of ideas, but i can't code, so i get nothing done... but at least i have stuff to write in the evening... if i don't go anywhere, i'm on the computer, but i have no ideas :D
06:26:31 <adu> oklopol: i understand completely
06:26:48 <adu> Hearing teachers talk about anything gets me thinking
06:26:54 <oklopol> "..." has become my period, i now realize... "." is just too little when you don't capitalize.
06:27:11 <adu> like listening to my spech class teacher, made me want to write a database
06:27:21 <oklopol> yeah, usually it's not even remotely related to whatever they're saying
06:27:24 <oklopol> just like that
06:27:26 <adu> listening to my art teacher made me want to write a typeseting language
06:28:02 <oklopol> yep, had a lecture about b-trees, and i had this idea about a network-shared tuplespace
06:28:12 <adu> lol
06:28:33 <adu> have I told you about my 2 favorite spaces?
06:28:36 <oklopol> http://www.vjn.fi/index.php?app=0 hat!
06:28:52 <oklopol> nope you haven't
06:28:57 <oklopol> or then you have and i don't remember
06:29:17 <adu> FungeSpace, ZZSpace, and possibly the exponential magma over finite sets
06:29:42 <oklopol> fungespace? infinite dimensions?
06:29:47 <oklopol> hmm
06:29:58 <oklopol> like the funge in befunge
06:30:15 <oklopol> i haven't done befunge really, or any 2d language
06:30:56 <adu> http://xanadu.com/zigzag/
06:30:57 <adu> http://quadium.net/funge/spec98.html
06:31:04 <oklopol> hat is awesome, it's a chat with two commands, setting a variable, and checking the value of a variable
06:31:24 <oklopol> you can have any number of users, and they all share the hashmap!
06:31:43 <oklopol> (5 is the maximum, though, any number just sounds better)
06:32:46 <oklopol> i feel graphs are the ultimate datastructure
06:33:09 <adu> http://en.wikipedia.org/wiki/Magma_(algebra)
06:34:09 <adu> oklopol: then how do you represent 2D rectangular arrays?
06:34:26 <oklopol> i can show the graphica program again
06:34:50 <adu> yey
06:35:31 <oklopol> http://www.vjn.fi/pb/p352542264.txt
06:35:49 <oklopol> just have (x,y) connect to (x+1,y) and (x,y+1)
06:36:12 <oklopol> that'
06:36:23 <oklopol> *that notation will be present in graphica later
06:38:04 <adu> ok, how do you select all elements in the second column?
06:38:28 <oklopol> {x y <-> x+1 y <-> x y+1} most likely
06:38:28 <oklopol> (for the notation, that is)
06:38:28 <oklopol> umm, you can't do that yet in graphica
06:38:36 <oklopol> but, it's simple to explain
06:38:38 <adu> ic
06:38:47 <oklopol> so
06:39:00 <oklopol> this graph here does not understand the concept of right and left
06:39:23 <oklopol> but those can easily be added
06:39:52 <adu> you know how ZigZag Space does it?
06:39:58 <oklopol> no.
06:40:20 <adu> every arrow is labelled with a # of a dimension and a sign
06:40:33 <oklopol> umm what?
06:40:46 <oklopol> arrow as in edge?
06:40:47 <adu> i.e. positive in the y direction, negative in the z direction
06:40:55 <oklopol> i mean, is it something that connects two things
06:40:55 <adu> directed edge
06:40:58 <adu> yes
06:41:00 <oklopol> yep
06:41:10 <oklopol> umm, wtf
06:41:22 <oklopol> dimension? graphs go way beyond that..
06:41:34 <oklopol> without any labels.
06:41:36 <adu> technically all edges are "undirected" but somehow know which one is "more positive", which mathematically implies a directed edge
06:41:52 <adu> in ZZ
06:42:01 <oklopol> undirected edges can simulate a directed edge, naturally.
06:42:09 <adu> how?
06:42:21 <oklopol> trivial, but a bit hard to explain on irc
06:42:24 <oklopol> basically
06:42:25 <adu> heh
06:42:34 <oklopol> you have N---N for an edge
06:42:39 <adu> ok
06:43:12 <oklopol> replace each edge with N-f-r-N, where f and t are nodes whose number of connections differentiate them from each other
06:43:23 <oklopol> f=from
06:43:24 <oklopol> t=to
06:43:27 <adu> oic
06:43:32 <adu> interesting
06:43:45 <adu> kind of inefficient, but interesting
06:43:56 <oklopol> i've come up with quite an intuition about graphs
06:44:09 <oklopol> they're awesome
06:44:24 <oklopol> yep, but inefficiency is the way to beauty
06:44:34 <adu> you should add the ability to import RDFS
06:44:46 <oklopol> you see, after you know that can be done, you don't have to do it, just keep in mind what you are simulating when adding features.
06:44:50 <oklopol> RDFS?
06:45:06 <adu> http://www.w3.org/TR/rdf-schema/
06:45:38 <oklopol> left, right, up and down can be done in a similar fashion, which makes it easy to go "down"
06:45:50 <adu> and don't forget http://dublincore.org/documents/dces/
06:46:12 <oklopol> if you don't care about whether to get the second row or the second column, you don't even need to label the directions.
06:46:23 <oklopol> (assuming you can check for identity between nodes)
06:46:46 <oklopol> you can always go straight to *a* direction in a 2d array
06:46:53 <adu> i wish i could "program" in rdf
06:47:37 <oklopol> i'm leaving soon, can you nutshellify that?
06:49:21 <adu> RDF is the platform for OWL = Web ontology lang, which is an rdf word-set for describing classes and relationships, which I hope to build a chat-bot with oneday
06:49:23 <adu> like: http://www.daxtron.com/cyn.htm
06:49:32 <oklopol> i made an attempt once at a natural language with as little vocab as possible
06:49:43 <oklopol> 15 words could already do a lot
06:49:56 <adu> hmm, which words?
06:50:22 <oklopol> hmm, some logic, derivative, integration and "world"
06:50:28 <oklopol> also, i think i had some concept of identity
06:50:44 <adu> interesting
06:50:46 <oklopol> world was for getting something physical in
06:50:52 <adu> ic
06:51:10 <oklopol> it was a bit complex an object, a hashmap with coords in, content out
06:51:14 <oklopol> hmm
06:51:17 <adu> like "a chair is part of the world"
06:51:19 <oklopol> doesn't sound that complex actually.
06:51:26 <oklopol> chair... urghh...
06:51:41 <oklopol> "speed" took about 1000 characters
06:51:43 <oklopol> *100
06:51:51 <oklopol> chair would prolly be impossible.
06:52:30 <oklopol> the idea behind it was, once you've ruled out every other imaginable object by describing, you've described your object
06:52:43 <oklopol> i think this is implicitly true for every language
06:53:09 <adu> hmm
06:53:23 <oklopol> it's just if you don't have a word for "chair", it's interesting to see what you need to be able to explain it unambiguously for someone with the same cultural background as you.
06:53:41 <adu> I knew a guy in california who had this idea that there was a "line" between an object and that which it was not
06:54:09 <oklopol> "lalna", my other lang, had a separate module for geometry, you could explain a chair in that one quite easily without an actual word for chair.
06:54:22 <oklopol> ("table" happened to be one of my most used testcases)
06:54:22 <adu> and he thought that the outside of that boundary-line was "definition" and then he asked me: What do you think is on the inside of that boundary?
06:55:01 <oklopol> hmm
06:55:09 <adu> Then he said, in an authoritative, eureka-like tone: "Ambiguity"
06:55:27 <oklopol> "outside" is the definition?
06:55:33 <adu> yes
06:55:39 <adu> wait
06:55:40 <oklopol> hmm... isn't an object's identity something you approach from all directions?
06:55:42 <adu> maybe I have it backwards
06:55:50 <adu> he was crazy
06:56:20 <adu> He also wrote dense poetry where the shorted word was 17 letters long
06:56:33 <adu> shorted -> shortest
06:56:42 <oklopol> doesn't sound crazy, just sounds like someone has had too little ideas and gotten overexcited about their first good one
06:57:15 <adu> he majored in acoustics, he must have listened to too many ideas
06:57:25 <oklopol> acuostics?
06:57:28 <oklopol> *acoustics
06:57:38 <adu> The study of sound
06:57:44 <oklopol> ...
06:57:46 <oklopol> lol, right.
06:58:07 <oklopol> why did i ask, i should know that perfectly well xD
06:58:25 <oklopol> i guess i didn't know you could major in it
06:58:34 <adu> Apparently you can
06:58:53 <adu> i think only crazy people can major in acoustics
07:00:01 <oklopol> hmm
07:00:33 <oklopol> if you visualized concepts in a 3-dimensional space or something
07:00:48 <oklopol> so that going nearere an object would be describing some part of it
07:01:03 <oklopol> then there wouldn't really be "balls"
07:01:18 <oklopol> since if two objects are close, their balls don't really intersect
07:01:26 <oklopol> because you can only be unambiguous inside one ball.
07:02:09 <oklopol> so basically, balls would take their shape from 1. how unique they are, or how far they are from others, and 2. their importance... the probability at which a certain object is described should grant it greater space
07:02:31 <oklopol> *nearer
07:04:21 <adu> heh
07:04:25 <adu> interesting
07:04:45 <oklopol> so... now we need four words, two to change dimension and two to move on it (we'll assume the "concept space" has infinite dimensions), with these four words you can describe anything!
07:04:55 <oklopol> i'll be removing 11 words from my language now.
07:05:15 <adu> I just made a poem he would be proud of
07:05:26 <adu> Desolate flawlessness snags juxtaposed galvanization.
07:05:50 <oklopol> this might be interesting used as the basis of a simulation, where the humanoids being simulated actually had a 2d concept space.
07:06:03 <oklopol> "snags" is 5 :o
07:06:09 <adu> i know, i lose
07:06:30 <oklopol> <\#your_poem = 5
07:06:34 <adu> lol
07:06:37 <oklopol> oklotalk is niec
07:06:53 <oklopol> i'll need to be going now, still naked and the bus leaves in 10 min.
07:06:57 <oklopol> cya! ->
07:06:58 <adu> lol
07:07:00 <adu> bye
07:16:16 -!- adu has quit (Remote closed the connection).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
11:04:10 <Slereah> Stupid idea : a language with a transformable data structure.
11:05:11 <Slereah> Where's my pen!
11:13:30 -!- jix has joined.
11:16:46 -!- MommeMC has joined.
11:55:45 <uvanta> moin jix
12:02:10 <jix> moin
12:27:11 <uvanta> :)
13:43:57 <Asztal> I knew I'd seen ehird somewhere before
14:34:20 -!- sebbu has joined.
14:44:32 -!- uvanta has quit ("blame!").
15:08:11 -!- ehird has joined.
15:18:32 <ehird> hello
15:19:39 <Slereah> Hi.
15:19:45 -!- MommeMC has quit.
15:20:33 -!- MommeMC has joined.
15:24:46 <ehird> Slereah: did you get qq working :p
15:25:14 <Slereah> Well, I was in class.
15:25:20 <ehird> i was sleeping!
15:25:24 <Slereah> And I was working on another stupid idea
15:25:29 -!- ehird has set topic: TOPIC NOSTALGIA! (topic from 2004/01/05) 'Why is there an 'L' in Noel? || Because "Noël" is prettier than an "L"? Errr... || Celebrate Mungday!' || We are rebellious, and thus anger freenode by not having the logs in the url.
15:25:33 -!- ehird has set topic: TOPIC NOSTALGIA! (topic from 2004/01/05) 'Why is there an 'L' in Noel? || Because "Noël" is prettier than an "L"? Errr... || Celebrate Mungday!' || We are rebellious, and thus anger freenode by not having the logs in the topic.
15:25:53 <Slereah> The idea being, you start your program with one data structure, a string, which is the program itself.
15:26:18 <Slereah> Then, you create moar. Strings, stacks, queues, tapes, whathaveyous. You modify them, make them interact and all.
15:26:40 <Slereah> and everytime the original structure is modified, the program counter goes back to 0.
15:27:12 <Slereah> It would make for some pretty short quines and self-interpreter.
15:29:50 <ehird> i dun get it.
15:30:42 <Slereah> Well, imagine you want to do a CAT program.
15:30:55 <Slereah> First, you create a string.
15:31:01 <Slereah> (N,s)
15:31:35 <Slereah> It's the second structure, so it has number 1. You make it the current.
15:31:41 <Slereah> (N,s) 1
15:31:56 <Slereah> Then, you input something on it, and you output it.
15:32:04 <Slereah> (N,s) 1 i o
15:32:33 <Slereah> And then, you change the first structure (the program itself), by repeating it.
15:33:07 <Slereah> (N,s) 1 i o 0 "(N,s) 1 i o 0 "(N,s) 1 i o 0 ""
15:33:15 <ehird> i dun get it
15:33:19 <Slereah> Hm.
15:33:20 <ehird> give me a soucre file
15:33:20 <ehird> :P
15:33:25 <ehird> and i probably will
15:33:27 <Slereah> Thinking about it, it might not work.
15:33:57 <Slereah> Maybe I should copy the program on some string and paste it back.
15:34:08 <Asztal> ehird: have you visited hoodwink'd before? this explains why I recognised your name.
15:34:15 <ehird> Asztal: yes, i haev
15:34:16 <ehird> *have
15:34:28 <ehird> that was quite a while ago though
15:34:33 <Slereah> (N,s) (N,s) 1 i o 2=0 0=2
15:35:57 <Slereah> There.
15:35:57 <Slereah> Creates one string, two, uses the first one to input something and output it, then the program is copypasted in the second and viceversa
15:35:57 <Slereah> So it starts over
15:38:25 -!- ais523 has joined.
15:38:42 <Slereah> Hi.
15:38:48 <ehird> hello ais523
15:38:51 <ais523> hello
15:39:08 <ais523> I had the following problem: transmit a lot of binary files to a distant terminal
15:39:13 <ais523> where basically no software was installed
15:39:17 -!- MommeMC has quit (Read error: 113 (No route to host)).
15:39:18 <ais523> not even uudecode
15:39:25 <ais523> and the only connection I could use was via telnet
15:39:52 <ais523> so I invented the .tar.gz.sh format to transmit binary as plaintext
15:40:15 <ais523> it has lots of lines starting printf '\x40\x41\x42...`\ and so on
15:40:36 <ais523> >>ing to the output file, and starting with a new printf every now and then to get round argument-length limits
15:40:45 <Slereah> I discovered salt, and invented FM radio.
15:40:58 <ais523> I had actually written a self-uudecode application before, but it only ran on DOS
15:40:58 <Asztal> nice.
15:41:04 <ais523> and produced a plain-text .COM file as the output
15:41:49 <ehird> ais523: bah
15:41:53 <ehird> you should have made it a .shar
15:42:22 <ais523> there were problems with what apps were available at the other end...
15:42:34 <ais523> sed was there, but it was a stripped down version that didn't accept \x escapes
15:42:40 <ais523> so I aimed at printf instead
15:43:00 <ehird> shar is trivial!
15:43:03 <ehird> it's just a shell script
15:43:11 <ehird> except, it's STANDARD unlike your format
15:43:14 <ehird> apart from the escape things
15:43:23 <ehird> but you would be innovating instead of relplacing! ;)
15:44:31 <ais523> shar needs uudecode to work
15:44:40 <ais523> and I already pointed out that there was no uudecode at the other end
15:45:13 <ehird> shar uses uudecode?
15:45:15 <ehird> rubbish!
15:45:32 * ais523 was actually looking at its output a few seconds before they wrote that
15:45:38 <ais523> and | uudecode was definitely there
15:45:41 <ehird> no shar here
15:46:05 <ehird> nope
15:46:09 <ehird> no uudecode
15:46:10 <ehird> i tested
15:46:16 <ehird> though it doesn't encrypt the binary either
15:46:17 <ehird> XD
15:46:48 <ais523> I'm beginning to dream of making a portable-to-as-many-OSs as possible uudecode suite
15:46:58 <ais523> all the programs in the suite are written in plain text in an appropriate language
15:47:18 <ais523> and the OS at the other end doesn't need any software that isn't standard for it to do the uudecoding
15:47:33 <ais523> the idea is that you can transmit someone a uudecode binary, and then use it from then on
15:51:11 <ehird> ais523: so... just implementing uudecode in minimal sh essentially?
15:51:37 <ais523> yes
15:51:45 <ais523> although it's hardly a golfer's implementation
15:52:05 * ais523 has had an idea for a Golf contest that obviously comes out of this discussion
15:52:25 <ehird> ais523: uudecode isn't a hard algorithm
15:52:44 <ehird> with standard base POSIX utils + bourne-compatible sh, it would be easy
15:52:49 <ehird> Just slow
16:00:09 <ais523> I'm just wondering how you'd do the bitwise arithmetic
16:00:12 <ais523> lookup table?
16:00:21 <ais523> anyway, I've entered the Golf submission
16:01:00 -!- helios24 has joined.
16:01:41 <ais523> sample output is the man page for uuencode/decode
16:01:49 -!- timotiis has joined.
16:01:58 <ehird> ais523: lookup table would be best, probably
16:02:02 <ehird> quickest, for shell
16:02:31 <ais523> anyway, my complicated method worked
16:02:33 <ehird> ais523: i think you could do it in maybe 250 lines
16:02:49 <ais523> that would be a better self-uudecode program
16:03:01 <ais523> then the self-uudecode suite could do DOS and POSIXes
16:03:16 <ais523> and because Windows can emulate DOS, that would cover most commonly used OSs
16:03:17 <ehird> ais523: have you noticed that barely any of your underloda submissions are real
16:03:17 <ehird> :)
16:03:23 <ais523> I'm not surprised
16:03:26 <ehird> ais523: also i don't ever consider dos
16:03:30 <ais523> I made the sample outputs too easy to cheat on
16:03:32 <ehird> if it's not unix i don't care about it
16:03:33 <ehird> :)
16:03:55 <ais523> and ehird: on Windows I use the DOS versions of the GNU utilities for everyday work, when at home and for some reason using Windows
16:04:11 <ais523> so just like Mac and Linux users, I can use ls, cp and emacs running via bash
16:04:45 <ehird> ais523: uudecode will be easy to cheat on
16:04:53 <ehird> figure out a simple way to compress the manpage, print it out
16:04:59 <ehird> you should have added more examples
16:05:15 <ais523> there's enough info there that it's likely that a genuine solution will be shorter
16:05:21 <ais523> in most cases
16:05:35 <ehird> ais523: meh. also, is a uuencode script worth it?
16:05:38 <ehird> for my 'long' one
16:05:39 <ais523> and I tried 'man uudecode' as a submission, it doesn't work because neither uudecode nor man are installed
16:05:54 <ais523> what do you mean by your 'long' one?
16:08:46 <ehird> ais523: non-golf
16:10:49 <ais523> worth it for what, in that case?
16:11:04 <ehird> ais523: should i write a uuencode
16:11:08 <ehird> or is it mostly pointless
16:11:13 <ehird> [vs uudecode]
16:11:26 <ais523> write a program that does both depending on what name it's invoked as
16:11:43 <ais523> or even better, figures it from its command line arguments and input
16:12:56 <ais523> but uudecode is much more useful because you can use it to send a uuencode binary
16:15:23 <Slereah> I wonder, are there ways to do binary operations on your hands?
16:15:32 <Slereah> Like, simple ways.
16:15:38 <ehird> Yes.
16:15:42 <ehird> If you use finger down = 0
16:15:43 <ehird> And finger up = 1
16:15:49 <Slereah> Yes, that I know
16:15:55 <Slereah> But to do operations on the numbers.
16:15:58 <ehird> bitshifting is just shuffling your fingers.
16:16:23 <Slereah> It would be a good way for dealign with big numbers, since it can go up to 1023
16:17:40 <Slereah> Although I guess it would be better to keep it under 32, to have two hands to do it.
16:20:08 <Slereah> http://en.wikipedia.org/wiki/Finger_binary
16:20:17 <Slereah> Wikipedia, is there anything you can't do?
16:20:36 <ais523> that one surprised even me
16:21:09 <Slereah> It's like that brainsphere in Futurama.
16:21:13 <Slereah> "2+2 = 4"
16:21:18 <Slereah> "BEAVERS MATE FOR LIFE"
16:21:30 <Slereah> Every information in the universe!
16:22:56 <Slereah> Although I still wonder if there's any algorithm usable on that handcounting
16:24:40 <ais523> bitwise-XOR!
16:25:29 <Slereah> Matching fingers go down :o
16:25:47 <Slereah> And single fingers get paired
16:26:41 <Slereah> Bitwise and would just be single fingers go down.
16:27:50 -!- glen_quagmire has joined.
16:27:52 -!- olsner has joined.
16:28:08 <glen_quagmire> HAI IS LOLCODE?
16:28:13 <Slereah> Noooooes!
16:28:13 <ehird> oh god
16:28:21 <ehird> not lolcode
16:28:36 <ais523> ADD ONE TO COBOL GIVING COBOL
16:28:54 <olsner> heh, cobol with lazy evaluation ;-)
16:28:57 <ehird> COBOL = ++COBOL + COBOL++
16:29:03 <Slereah> Problem with finger-bitwise operation is, it's hard to keep just any finger up
16:29:04 -!- sarah87 has joined.
16:29:14 <ais523> functional COBOL would be quite a sight to behold
16:29:25 <Slereah> Like the flaming gates of hell?
16:30:15 <olsner> actually I think it'd be better than plain cobol in most ways
16:30:23 <Slereah> Is it possible to build some arithmetics from bitwise operations?
16:30:28 <ais523> most things would be better than plain cobol
16:30:33 <ehird> olsner: not quite cobol with lazy evaluation, if you say COBOL already has a value
16:30:44 <ais523> and Slereah: yes, with a certain relaxing of the meaning of 'bitwise'
16:30:48 <ehird> that's just COBOL++, then, ergo 'object-oriented' (sorry, alan kay) cobol
16:30:49 <ais523> that's what's done in INTERCAL
16:31:01 <ais523> although admittedly most arithmetic requires a loop
16:31:16 <Slereah> Well, with fingers, loops wouldn't be too much trouble
16:31:26 <Slereah> You got a hooman supervising most of them
16:32:01 <Slereah> Just wondering if you can build some simple arithmetics with finger binary
16:32:49 <olsner> ehird: no, but it kind of looked like one of those let x = ... in ... x ... constructions familiar from haskell one-liners
16:33:04 <ehird> olsner: yeah
16:33:13 <Slereah> Does the building of arithmetics via bitwise have a particular name?
16:33:20 <Slereah> It is for teh googling.
16:33:22 <ehird> Slereah: 'insanity'
16:33:38 <Slereah> Yes, but, you know, a more professional lame
16:33:42 <Slereah> *name
16:34:03 <ais523> (1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"
16:34:03 <ais523> the shortest addition command I've yet found in INTERCAL that doesn't reference the standard library
16:34:03 -!- ais523 has quit (Remote closed the connection).
16:34:23 -!- ais523 has joined.
16:35:00 <ais523> and requires several extensions to be implemented properly
16:35:26 <olsner> Slereah: you could try looking for half adders and full adders, the digital circuits for addition - connect n full-adders and you can do n-bit addition
16:35:28 <Slereah> I can't read INTERCAL.
16:35:39 <ais523> whyever not?
16:35:41 <Slereah> I'll google it, thank you.
16:35:52 <Slereah> Well, I also can't read Japanese and Malbolge
16:36:06 <Slereah> It's just, you know, lack of skill acquisition in the area
16:36:08 <ais523> INTERCAL isn't too bad when you get used to it
16:36:17 <ais523> it helps if you use a fixed-width font
16:36:22 <Slereah> Much like the HAUNTED AUSCHWITZ :O
16:36:22 <ais523> so you can tell apart ' and " easily
16:36:49 <Slereah> "Adder (snake), a family of snakes."
16:36:50 <Slereah> Heh.
16:36:59 <Slereah> WE NEED LOGS
16:37:27 <ais523> incidentally, I've been working on the concept of a combined Unlambda/Underload/Brainfuck language
16:37:40 <ais523> Underload and Brainfuck are actually not too hard to mix
16:37:47 <ais523> Unlambda and Brainfuck are somewhat harder
16:38:09 <Slereah> Isn't there already some brainfuck-unlambda mix?
16:38:23 <Slereah> 0x29A and C or something
16:38:41 * ais523 had forgotten about 0x29A
16:38:51 <ais523> but it has many significant differences from Unlambda
16:38:55 <olsner> Underload?
16:39:05 <ais523> http://esolangs.org/wiki/Underload
16:39:16 <ais523> !ul (Does this still work?)S
16:39:16 -!- EgoBot has quit (Read error: 104 (Connection reset by peer)).
16:39:26 <ais523> that wasn't meant to happen
16:39:26 -!- EgoBot has joined.
16:39:35 <ais523> !ps d
16:39:38 <EgoBot> 1 ais523: ps
16:39:54 <ais523> !daemon ul bf http://pastebin.ca/raw/367774
16:39:59 <olsner> oh, is it a functional stack language?
16:40:00 <ais523> !ul (Hopefully working now.)S
16:40:02 <EgoBot> Hopefully working now.
16:40:05 <ais523> concatenative
16:40:14 <ais523> which is like functional but even more elegant in my opinion
16:40:20 <Slereah> Hm.I might not have enough hands to do addition with my hands
16:40:23 <ais523> you can write functionally in it, but don't have to
16:40:50 <ais523> well, you can't write in any other known paradigm than functional/concatenative, but there are some weird unknown paradigms you can use
16:41:34 <ehird> !ul (:aSS):aSS
16:41:38 <EgoBot> (:aSS):aSS
16:42:12 <Slereah> Heh. Ass.
16:42:21 <ehird> (from #lisp)
16:42:25 <ehird> <daYZman> hi
16:42:25 <ehird> <daYZman> does anyone know of an online lisp parser that shows the parse tree?
16:42:53 <olsner> heh, that's basically just a web interface for cat
16:43:57 <ehird> olsner: 'xactly
16:44:12 <Slereah> I don't regret making the folding function on Python. Always useful for tapes!
16:44:29 <Slereah> Fifth time I'm reusing it.
16:45:09 <ehird> Slereah: reduce()
16:45:13 <ehird> reduce(func,lst)
16:45:23 <Slereah> ?
16:45:35 <ehird> its standard pyhon, folding.
16:45:36 <ehird> :|
16:45:55 <Slereah> Is it the Z ---> N function?
16:46:27 <ehird> reduce(func,[1,2,3]) -> func(1,func(2,func(3)))
16:46:31 <ehird> err
16:46:33 <ehird> wait:
16:46:38 <ehird> reduce(func,x,[1,2,3]) -> func(1,func(2,func(3,x)))
16:46:42 <ehird> it's a list fold
16:47:24 -!- ais523 has quit (Read error: 104 (Connection reset by peer)).
16:47:28 <Slereah> Folding function is [..., -3, -2, -1, 0, 1, 2, 3, ...] -> [0, -1, 1, -2, 2, -3, 3, ...]
16:47:43 <Slereah> Easier to make infinite tapes or infinite grids.
16:48:37 <ehird> then.. no
16:54:59 <olsner> reduce = foldr?
16:55:16 <ehird> olsner: or foldl, i dunno
16:55:37 <ehird> reduce(lambda x,y:x-y, [1,2,3])
16:55:43 <ehird> => -4 => 1-2-3
16:55:46 <ehird> so foldr
16:55:49 -!- ais523 has joined.
16:55:59 <ehird> hello ais523
16:56:09 * ais523 was having connection problems
16:56:17 <ais523> and so switched to a different connection
16:56:34 <ais523> which involved physically moving to a different location, therefore the wait
16:57:51 <ais523> also, I accidentally renamed all the files in my home directory to be lowercase
16:57:59 <ais523> and then wondered why all my desktop icons had disappeared
16:58:19 <olsner> yeah, connection problems often lead to having your files renamed?
16:58:44 <ais523> they were separate issues
16:58:48 <Slereah> Holistic technical support
16:58:54 <ais523> I have a shell-script to rename all the files in a directory to be lowercase
16:59:00 <ais523> and ran it in the wrong directory by default
16:59:27 <olsner> dangerous script, that
16:59:41 <ais523> yes
16:59:57 <ais523> but it's so annoying to transfer files from Windows and have them all be in uppercase
17:00:09 <ais523> it really needs to chmod a-x the files that aren't really executable, too
17:00:19 <ais523> for some reason Windows sets +x on every file by default...
17:00:23 <olsner> I think you can fix that with the proper mount flags
17:00:55 <ais523> I just use automount
17:01:14 * ais523 remembers a Windows sysadmin trying to install a program
17:01:26 <ais523> it failed because he had permissions to create files in a directory but not to rename them
17:01:37 <ais523> so it was full of executables with names like oiaewrca.tmp
17:02:15 <olsner> hmm, but how can you be a sysadmin without administration privileges on the machines you're supposed to admin?
17:02:30 <ais523> he did have administration privileges
17:02:40 <ais523> but on Windows, even admins are limited by permissions
17:02:58 <olsner> oh joy
17:03:01 <ais523> they can change permissions to allow themselves to do things, but can't do everything by default
17:03:19 <ais523> probably because most Windows XP users ran as administrator all the time but still needed to be prevented from doing stupid things
17:04:15 <ais523> I was actually doing some rather 'stupid things' today, like typing rm /var/log at a root prompt
17:04:33 <ais523> it was on an embedded system, and I was removing a symlink to /tmp ...
17:05:39 <ais523> apt-cache search brainfuck: 4 results, all relevant to some extent
17:05:57 <ais523> apt-cache search unlambda: 1 result, which is relevant
17:06:15 <ais523> apt-cache search intercal: 2 results, the 2 main modern INTERCAL compilers
17:06:28 <ehird> macports has no esoteric stuff
17:06:30 <ais523> apt-cache search befunge: 0. I'm disappointed
17:06:44 <ehird> maybe we need the ePMS (esoteric package management system)
17:06:58 <ehird> [the pun came about naturally but let's say it was intentional from the start]
17:08:22 * ais523 goes and installs all those packages
17:08:38 <ais523> apart from clc-intercal and unlambda, which I already have installed, and intercal, which I develop and so have a newer version of
17:10:09 <olsner> our project management system at work is called Project Management System, i.e. PMS :P
17:11:35 * ais523 just got a relevant result for apt-cache search perligata
17:11:49 <ais523> anyone know of any other esolangs I can fetch like this?
17:11:57 <ehird> ais523: with ePMS, everything!
17:12:03 <ehird> the only problem is implementing it :P
17:12:30 <ais523> how is http://esolangs.org/wiki/EsoInterpreters doing?
17:12:39 <ehird> cuddly
17:12:51 <ais523> we need to get that full of links, really
17:14:20 <Slereah> I can post the Brainfuck on a Turing machine one if you want
17:15:09 <olsner> any nice small string rewriting esolangs out there? thinking of writing an interpreter in mod_rewrite
17:15:15 <ehird> olsner: yes
17:15:16 <ehird> olsner: thue
17:15:26 <ehird> or thutu for something more complex but more usable
17:15:36 <ehird> ais523: also i've pretty much narrowed down the Underload compiler reimplementation langugaes to two: haskell or common lisp
17:15:39 <ehird> ais523: pick one. :p
17:15:54 <ais523> if it's not an esolang, let's go for Haskell
17:16:24 <olsner> you don't know about haskell? you should try it out, it's sweet
17:16:36 <ais523> I do know about Haskell
17:16:54 <ais523> and I'm a big fan, if slightly disappointed that there's no easy way to write a mockingbird
17:16:59 <ais523> but I'm not very good at it
17:17:05 <olsner> "if it's not an esolang, ..."?
17:17:11 <ais523> I meant 'if we're not writing this in an esolang'
17:17:29 <olsner> oh, I see
17:17:30 <ehird> ais523: that would be painful. or optimizations
17:17:45 <ehird> the thing about haskell is that this program has some mutability at the core which i haven't figured out how to refactor out
17:17:48 <ehird> now, i could use a state monad
17:17:58 <olsner> I read it as "what's this haskell? as long as it's not an esolang, let's take it"
17:18:05 <ehird> but it's really anti-haskell if it isn't really truly fundamentally *state*
17:18:34 <ehird> also, lisp may be easier for ais523 to grok than haskell :-) it's really a choice of which type of alienation is better
17:18:46 <olsner> underload :: Stack -> (String, Stack)
17:18:50 <ais523> I understand both, just am not used to either
17:19:03 <ehird> olsner: compiler.
17:19:17 <ehird> olsner: the way we compile it is... a bit hard to grok
17:19:19 <ehird> it involves 'blimps'
17:19:28 <ehird> (it targets c)
17:19:37 <ais523> and wouldn't it be (String, Stack) -> (String, Stack) or possibly IO String -> Stack?
17:20:15 <olsner> does underload have input?
17:20:17 <Slereah> http://membres.lycos.fr/bewulf/Russell/Lore2.txt
17:20:28 <Slereah> Here's a broad outline of my horrible horrible idea
17:20:29 <ais523> olsner: no
17:20:46 <ais523> but you need to input the program
17:20:48 <ais523> which is a string
17:20:56 <ehird> if it had input equiv. to (inputted text) it'd be uncompilable
17:21:00 <ais523> so it could be just String -> (String, Stack)
17:21:09 <Slereah> Hm. Forgot to add the "1" after (N,s) in the example programs
17:21:15 <olsner> ah, yes, forgot the part about the input program
17:21:17 <ehird> thankfully ais523 says that all input stuff would be:
17:21:20 <ehird> church numerals
17:21:22 <ehird> of ascii chars
17:21:28 <ais523> if I get round to writing a new version
17:21:43 <ais523> or I can just make the Unlambda/Underload/Brainfuck language and use Brainfuck's . for input
17:23:20 <ais523> which would input a Church numeral replacing the current TOS
17:24:16 <ehird> ais523: so -- take your pick, you can either have a lot of parens or crazy, terse awesomeness
17:24:49 <ehird> unfortunately to do the optimizations we want we need to parse it
17:25:00 <ehird> which also means storing the originating code in Push parse tree segments
17:25:06 <ehird> which is, aggrevating
17:25:18 <ais523> I still favour Haskell for this
17:25:51 <ehird> okies
17:26:42 <ehird> ais523: i'm going to delete the Makefile, but not underload.scm because i need it for a reference to write the code on
17:26:50 <ais523> again OK
17:27:01 <ais523> I'll save a backup on my own computer for my own amusement
17:27:09 <ehird> ais523: you can always check out a previous revision
17:27:22 <ais523> I know...
17:27:26 <ehird> speaking of VCS... are you sure you don't have darcs? svn is driving me crazy :P
17:27:40 <olsner> apt-get darcs
17:27:56 <ehird> olsner: this is a good point, beforehand ais523 couldn't install anything though
17:28:02 <ais523> I starded doing that as soon as I saw ehird's comment
17:28:07 <ehird> haha
17:28:08 <ais523> s/d/t/
17:28:37 <ais523> now I'm on my own computer, I can be a lot more flexible
17:28:45 <ehird> the bendy kind of flexible?
17:28:49 <ehird> i don't see what computers have to do with that
17:28:59 <Slereah> Auto-fellatio?
17:29:03 <olsner> darcs has a pretty low barrier to entry really, took like 30 minutes to get going
17:29:23 -!- MommeMC has joined.
17:29:28 <olsner> no funky databases, servers or any of that crud
17:29:52 <ais523> flexible in that I have no reasonable excuse not to act exactly according to ehird's orders
17:30:01 <ehird> hehe
17:30:02 <ehird> :)
17:30:08 <ehird> quick darcs primer:
17:30:13 <ehird> - there is no central repository
17:30:20 <ehird> - your _darcs dir has the whole history, isn't that nice
17:30:37 <ehird> - it's distributed, basically you pull and push tons of servers in a tangly web of metapatterns or something
17:30:48 <ehird> - we'll just emulate a distributed server by putting a copy on my VCS
17:30:53 <ehird> - and giving push/pull rights to that
17:31:01 <ehird> - conflicts are easily resolvable, because darcs is clever
17:31:13 <ehird> - it's interactive: when your record a patch it asks which changes you want to record
17:31:18 <ehird> (but you can tell it to record everything)
17:31:32 <ehird> - record != push: you need to push to share your changes
17:31:35 <ehird> end of darcs primer
17:31:53 -!- MommeMC has quit (Client Quit).
17:31:56 <ais523> I'm sure I'll get used to it in a bit
17:31:58 <ehird> hehe
17:32:19 <ehird> ais523: because i'm lazy i'm not setting up a secure darcs push... so you get an ssh account on my server, i hope you feel special
17:32:31 <ais523> thanks
17:33:30 <olsner> how would you set up a darcs push without giving shell access?
17:33:41 <ehird> olsner: i'm not sure, but meh
17:34:08 <ehird> hm
17:34:10 <ehird> darcs-server, probably.
17:34:36 <ehird> ah
17:34:40 <ehird> darcs-server in debian is the cgi
17:36:13 <olsner> I guess the secure way is to darcs send things to an e-mail and let some maintainer person apply after review
17:36:29 <ehird> ais523: now you need to give me a password :P in /msg
17:36:37 <ehird> olsner: yes, well, that's not quite rapid enough for me :-)
17:36:41 <olsner> I've heard of e-mail services with GPG-based authentification of patches
17:36:55 <olsner> but still, ssh-access is probably still easiest
17:39:14 <ehird> lol, $ sudo chmod 777 darcs
17:40:08 <ehird> darcs failed: Failed to download URL ssh://elliotthird.org//home/darcs/underload/_darcs/inventory : unsupported protocol
17:40:09 <ehird> wtf
17:40:15 <ehird> oh
17:40:16 <ehird> duh
17:40:28 <ehird> darcs get elliotthird.org:/home/darcs/underload underl
17:40:28 <ehird> oad_darcs
17:40:29 <ehird> :)
17:40:37 <olsner> isn't user@host:path the syntax for ssh? yeah :P
17:42:02 * ais523 ran that command, and it apparently worked
17:42:59 <ehird> ais523: damnit
17:43:04 <ehird> remove that dir, i need to get the repo up first
17:43:05 <ehird> :-)
17:43:15 <ehird> ais523: by the way, if you use emacs, you'll want this: http://chneukirchen.org/repos/darcsum/darcsum.el
17:43:26 <ais523> it's gone
17:43:44 <ais523> and although I use emacs, I generally prefer to exit it and type shell commands to do things like compile or checkin
17:45:32 <ehird> ais523: pff, you might as well use vi ;)
17:45:35 <ehird> oh by the way
17:45:39 <ehird> when darcs asks you what your email is
17:45:42 <olsner> huh? darcs get worked on a non-repository?
17:45:48 <ehird> answer "Name <email>", not "email"
17:45:54 <ehird> olsner: that is a repository.
17:45:56 <ehird> note the /repos/
17:46:21 <olsner> "remove that dir, i need to get the repo up first"
17:46:26 <ehird> oh
17:46:27 <ehird> I meant
17:46:31 <ehird> importing all the stuff, etc
17:46:33 <ais523> it was an empty repo, as far as I could tell
17:46:57 * ais523 is annoyed that the following Anarchy Golf quine-by-cheating was rejected: ps -Cps -oargs=
17:47:04 <ais523> it segfaults
17:47:11 <ehird> sfghdkjlsfgdhlhdfgsdgjlssdfghjkfgsdhjklsdfghjkl darcsum is odd
17:47:14 <ehird> how do i get it to record my changse!
17:47:29 <olsner> darcs record
17:47:52 <ehird> olsner: darcsum.
17:47:54 <ehird> the emacs mode.
17:48:11 <olsner> oh
17:49:35 <ehird> ais523: oh well:
17:49:47 <ehird> darcs get ais523@elliotthird.org:/home/darcs/underload
17:49:57 <ehird> s/ais523@// if that's your username on your computer
17:50:40 <ehird> ais523: By the way, at one time you said you had a way to make some part of prelude.c less recursive
17:50:41 <ehird> what was it?
17:50:58 <ehird> olsner: the underload compiler is interesting because at first glance, it seems self-modifying and uncompilable
17:51:01 <ais523> it wasn't less recursive, I don't think, but more efficient
17:51:10 <ehird> ais523: which was it, what were the implications?
17:51:13 <ais523> it would have involved using binary trees rather than lists
17:51:17 <ehird> ah
17:51:20 <ehird> that's not acceptable
17:51:27 <ehird> it means call isn't tail-recursive
17:51:27 <ais523> which made dup O(1), but the rest of the program much more complicated
17:51:32 <ehird> it'd have to recurse for both branches
17:51:47 <ais523> yes, I couldn't see a way around that introducing recursion
17:51:55 <ehird> and imo that's more serious than dup being kinda slow
17:52:00 <ais523> and also I think it just spread the inefficiency around, so it wouldn't have been worth it anyway
17:54:03 <ehird> olsner: what's the simple way to get a read-only darcs?
17:54:07 <ehird> without setting up an http server
17:54:27 <olsner> ehird: I had a http server laying around and just set up a vhost for darcs
17:54:40 <ehird> olsner: i don't have a server lying around until i get my site up :-)
17:57:15 <ehird> oh well
17:57:20 <ehird> olsner: any other easy way?
17:58:09 <olsner> searching, but it seems that http is the preferred way of getting read-only public access
17:58:23 <ehird> darcs should come with an http server ;)
17:58:38 <Slereah> ehird: I got the Qq.
17:58:48 <ehird> Slereah: define 'got'
17:58:53 <ehird> the interp works? you wrote a program? ..
17:58:56 <Slereah> It seems to be working
17:58:59 <ehird> yay
17:59:11 <Slereah> Or... Wait
17:59:24 <Slereah> Error during processing of --eval option (LOAD #P"./run.lisp"):
17:59:24 <Slereah> invalid number of arguments: 0
17:59:34 <Slereah> Noes.
17:59:38 <ehird> Slereah: pastebin run.lisp
17:59:46 <ehird> Slereah: also, how did you start it?
17:59:57 <Slereah> slereah@Vixem:~/1201049491-qq-v1_0$ ./run.lisp prog.qq
18:00:06 <ehird> cat prog.qq
18:00:20 <Slereah> slereah@Vixem:~/1201049491-qq-v1_0$ cat prog.qq
18:00:20 <Slereah> 0 7 ((8))
18:00:38 <Slereah> I also tried with only one parethesis
18:00:41 <ehird> you're using old-style commands
18:00:45 <Slereah> Oh
18:00:45 <ehird> 0 7(6)
18:00:55 <ehird> http://esolangs.org/wiki/Qq will be useful ;)
18:01:16 <Slereah> Stop changing syntax damn you!
18:01:26 <Slereah> Now, to try the big cat program
18:01:32 <Slereah> What was my idea again?
18:01:39 <olsner> it's really not that hard to set up apache2 and a vhost (or a symlink for ~darcs to go to the right place)
18:01:43 <ehird> um, i forgot Slereah :)
18:01:45 <ehird> logs might help!
18:01:46 <Slereah> Got it written somewhere, partly
18:01:47 <ehird> ircbrowse.com
18:01:52 <ehird> olsner: eww, apache
18:02:09 <ehird> ITYM nginx, or lighttpd, or maybe some Lisp server
18:02:23 <olsner> or any other web browser for that matter, since darcs only needs plain http file serving
18:02:28 <Slereah> Ah yes
18:03:14 <olsner> do you also get database errors from esolangs.org?
18:03:16 <ehird> olsner: I should write my own :P
18:03:19 <ehird> olsner: and everyone does
18:03:22 <ais523> olsner: once in a while
18:03:26 <ais523> they go away when you refresh
18:03:37 <Slereah> 3 (0 8 (0 (0 7(6)) 3))
18:03:43 <Slereah> Or something
18:04:04 <ehird> Slereah: just check the wiki to see if your stuff is still right :P
18:04:26 <Slereah> I did
18:04:27 <ehird> lalalla sudo vi /etc/thttpd/thttpd.conf
18:04:37 <Slereah> My big problem is the parenthesis
18:04:42 <ehird> yeah
18:04:42 <Slereah> I'm not too sure where to put them
18:04:49 <ehird> Slereah: like in what case
18:04:59 <Slereah> Let's review this program.
18:05:20 <Slereah> Will 3 (something) convert to (something) (something)?
18:05:33 <Slereah> And the first something will be evaluated first, presumably entierly
18:06:15 <ehird> http://elliotthird.org/ look at thttpd's lovely sense of colour design!
18:06:27 <ehird> olsner: if you want to see the crazy state-stuff that the compiler uses to compile:
18:06:31 <ehird> darcs get http://elliotthird.org/underload/
18:06:38 <ehird> (read only, so ais523 - don't do that :P)
18:07:05 * ais523 looks at it with a web browser instead
18:07:08 <ehird> haha
18:07:13 <ais523> did you mean to put your bashrc in there?
18:07:23 <ehird> ais523: not mine
18:07:26 <ehird> 'darcs's
18:07:31 <ehird> it's serving /home/darcs :)
18:07:31 <ais523> ah
18:07:44 <ehird> besides it's 403 forbidden
18:07:54 <ehird> and the error page's colours are superb :P
18:08:00 <ehird> it's from 2002, that thttpd :D
18:08:08 <ehird> not a very updated software: but rock solid, and fast
18:08:13 <olsner> do I want prelude.c, postlude.c or underload.scm?
18:08:31 <ais523> all of them are needed for the current version of the compiler
18:08:38 <ais523> underload.scm is the compiler, the other two are data files
18:09:13 <ehird> olsner: prelude.c is all the library functions and structures that the output uses
18:09:21 <ehird> postlude.c is the end of all the c files
18:09:34 <olsner> I show the code to my brain but it refuses to parse although I know that it knows scheme
18:09:37 <ehird> underload.scm compiles an underload program, and sticks it between prelude.c and postlude.c
18:09:47 <ehird> olsner: it's not pretty that's for sure
18:09:50 <olsner> time to get home from work I think!
18:09:52 <ehird> it's imperative scheme with WTF mixed in
18:10:32 <olsner> the name 'blimp' reminds me of haskell's thunks
18:11:22 <ehird> olsner: it's kind of similar
18:11:22 <ehird> in:
18:11:25 <ehird> ((a)b)c
18:11:29 <ehird> the blimps are: a, b, and c
18:11:33 <ehird> and we 'unroll' them
18:11:38 <ehird> so ((a)b)c transforms into:
18:11:49 <ehird> 1=<2>c; 2=<3>b; 3=a
18:12:04 <ehird> we do this because we need to compile them as C code, and also retain their strings
18:12:12 <ehird> so <2> looks like:
18:12:18 <ehird> push(2, "(a)b");
18:12:28 <ehird> and the whole program is a switch statement dispatching on blimp numbers
18:12:35 <ehird> in a function, so we can handle non-tail-calls too
18:13:50 <ehird> olsner: which is why we have ugly code
18:13:52 <ehird> handling that unrolling.
18:14:25 <olsner> sounds like something you might be able to use a tie-the-knot technique on
18:14:49 <ehird> olsner: is that really a programming technique?
18:14:51 <ehird> :|
18:14:53 <ehird> heh.
18:15:16 <olsner> it's all those cool haskell tricks where you build a value that depends on itself
18:15:53 <olsner> they look like magic
18:15:57 <ehird> ah
18:16:02 <ehird> olsner: how would i use that in THIS case...?
18:16:31 <olsner> dunno, I don't even understand how the language we're compiling works yet ;-)
18:16:39 <olsner> *you're
18:16:41 <ehird> olsner: another thing is that i want to generate a parse tree, but for (...) i need to store the string ... as well as its parse tree
18:16:44 <ehird> which is gonna be a pain
18:16:48 <ehird> olsner: the wiki can help
18:16:58 <ais523> as can the online interpreter
18:19:03 -!- Corun has joined.
18:21:14 <olsner> well, gotta run now, cya
18:21:19 * Slereah 's writing sum Lore interpreter
18:21:24 <ehird> bye olsner :)
18:21:27 -!- olsner has quit ("leaving").
18:22:54 -!- RedDak has joined.
18:31:24 <ehird> http://forums.devshed.com/database-management-46/ddate-discordian-date-problems-321852.html this is too surreal not to be true
18:52:54 <ehird> ais523: you alive? :)
18:53:25 <ais523> yes
18:53:41 <ais523> I've developed a trick of making my terminal window slightly transparent so that I can see IRC through it
18:53:50 <ais523> proper 'I SAID YOUR NAME beeps would still be useful, though...'
18:54:21 <ehird> ais523: M-x erc
18:54:26 <ais523> s/E (.*)'/E' \1/
18:54:46 -!- ehercd has joined.
18:54:48 <ehercd> it's emacslicious!
18:55:01 <ehercd> and perhaps a bit over the top, but hey, it'll beep for you..
18:55:13 <ehercd> I wonder what would happen if i (dissociated-press)'d right now
18:55:16 <ehercd> better not try
18:55:24 <ehercd> ...aw,alright
18:56:03 <ehird> *** #esoteric: topic set by not having the logs in the topic
18:56:35 <ais523> I noticed the topic
18:56:40 <ais523> and I like it
18:57:00 <oklopol> o
18:57:04 <ehercd> ais523: that was what dissociated-press had to say about this erc buffer
18:57:11 <ehercd> oklopol: klopol
18:57:29 <ais523> I thought you were actually trying to make sense
18:57:42 <ehercd> ais523: you know what dissociated-press is right?
18:57:52 <ehercd> it's an implementation of dissociated press, which is a character-based markov chain
18:57:57 <ehercd> in Emacs lisp
18:58:00 <ehercd> and you apply it to a buffer.
18:58:28 <ais523> yes
18:59:01 <ehercd> Because "Noël" is prettier than the thusers on #esociated-press)'d right?
18:59:05 <ehercd> tee hee
19:00:19 <Asztal> character-based, rather than word based? I wouldn't guess that would actually work in practice, without a fairly long chain..
19:00:30 <ehercd> Asztal: it 'works' sofar as it produces funny crap
19:00:41 <ehercd> Asztal: try reading dissociated-press.el, but I warn you: Emacs Lisp is not happy fun time
19:01:00 <Asztal> I've done a markov bot but it made chains of words
19:01:17 <ehercd> I have done that too. I think everyone has.
19:01:24 <ehercd> I am going to refine it in Lisp sometime.
19:01:24 <Asztal> I guess that's why it came up with "thusers"
19:01:28 <Asztal> and esociated
19:01:33 <Asztal> interesting.
19:02:01 <ehercd> Asztal: you do need relatively big files, though, in practice
19:02:42 <ehercd> Gah. I want M-x firefox
19:02:52 <ehercd> I just tried M-> in Safari.
19:03:19 <ehercd> guess I should try conkeror
19:07:59 -!- ehercd has left (?).
19:19:51 -!- olsner has joined.
19:20:18 * ais523 has written a maze solver in GolfScript, but it times out if I set the number of iterations high enough to actually solve the maze
19:20:26 <ehird> hmm, maybe the best thing for an emacs-webbrowser,
19:20:32 <ehird> is creating a sort of 'base-emacs'
19:20:37 <ais523> probably because the GolfScript implementation on Anarchy Golf is so slow
19:20:37 <ehird> emacs sans the editor, kind of
19:20:40 <ehird> i.e.
19:20:43 <ehird> an embedded lisp
19:20:48 <ehird> the basic app infrastructure
19:20:55 <ehird> and some basic concepts like 'frame'
19:21:04 <ehird> and a gui abstraction
19:21:09 <ehird> and a default set of keybindings
19:21:14 <ehird> and then, building apps on top of that:
19:21:17 <ehird> editor, web browser, irc client
19:21:36 <ehird> kind of like 'emacs, planned as it would have been if it was started aiming for what it is today, but cleaner'
19:28:43 <olsner> wow, frappr was useless
19:29:22 <ehird> anyone have opinions on my emacs-base thing? it's pretty esoteric i might say :P
19:29:35 <olsner> stuck in som kind of weird slideshow, and the only place I can put a pin is Null in Texass
19:30:14 <ais523> ehird: that might just be Common Lisp with a windowing library...
19:30:19 <ehird> ais523: naw
19:30:30 <ehird> ais523: it would have loads of infrastructure.
19:30:42 <ehird> ais523: like, standard keybindings by default
19:30:47 <ehird> ways to represent concepts
19:30:50 <ehird> (frame, buffer, etc)
19:31:04 <ehird> CL already has a gui interface btw and it's standard: CLIM
19:31:11 <ehird> with the most-developed impl being McCLIM
19:31:14 <ehird> but it's not very nice. IMO.
19:31:17 <ehird> and Climacs is kinda sucky
19:31:21 <ehird> so: i think a restart is in order
19:31:38 <ehird> ais523: pluggability of the gui lib would be important too: for using gecko for the web browser
19:38:26 <olsner> wow, frappr now takes all keypresses twice
19:41:17 <oklopol> up 'n' down?
19:41:23 <oklopol> oh, frappr
19:41:38 <ehird> oklopol: how about you comment on my emacs-base idea! :P
19:42:33 <oklopol> i'll comment once my friend leaves
19:42:40 <oklopol> he talks all the time, can't irc
19:42:52 <ehird> you don't want him to know that you read things with 'emacs' in? :P
19:43:31 <olsner> emacs should be removed, not rewritten... but I guess that can be construed as motivation for doing it
19:43:54 * ais523 has discovered a new Golfing trick, which owes much to Underload
19:44:10 <ais523> to do something $x times, eval'something;'x$x
19:44:30 <ais523> works the same way that Church numerals can create loops
19:44:56 <ehird> in ruby, it's basically literally what you said:
19:44:58 <ehird> eval'something'*x
19:45:03 <ehird> :)
19:45:07 <ehird> lisp:
19:45:15 <ehird> ooer, i don't know how to replicate a string.
19:46:23 <ais523> in lisp you could do it with progn and replicating a lisp
19:46:30 <ais523> s/p$/t/
19:46:38 <ehird> you could also use literal eval..
19:46:41 <ehird> (eval 'foo)
19:46:41 <ehird> :-)
19:46:48 <ehird> You know... Lisp invented it? ;)
19:46:55 <ais523> maybe
19:46:55 <Asztal> 1 character shorter than "x.times{something}", although much sorter if 'something' is dynamic
19:47:02 <ais523> although it was possible in machine code all along
19:47:13 <ehird> ais523: Uh, Lisp invented the eval function.
19:47:30 <ais523> in machine code, goto or gosub serve the same function
19:47:35 <ehird> no, not really.
19:47:50 <ais523> you just jump into your data, and it's evaluated!
19:48:31 <ehird> (defmacro (times n &body body) (if (= n 1) body `(progn ,body (times ,(- n 1) ,@(cdr body))))
19:48:33 <ehird> silly :D
19:48:50 <ehird> yeah, i know i'm going to hell
19:48:54 <ehird> oshi
19:48:57 <ehird> schemeish XD
19:49:03 <ehird> (defmacro times (n &body body) (if (= n 1) body `(progn ,body (times ,(- n 1) ,@(cdr body)))))
19:49:22 <ehird> aww shucks
19:49:31 <ehird> silly me:
19:49:35 <ehird> (defmacro times (n &body body) (if (= n 1) body `(progn ,@body (times ,(- n 1) ,@(cdr body)))))
19:49:52 <ehird> hm
19:50:20 <ehird> oh duh
19:50:25 <ehird> (defmacro times (n &body body) (if (= n 1) body `(progn ,@body (times ,(- n 1) ,@body))))
19:50:54 <ehird> (defmacro times (n &body body) (if (= n 1) `(progn ,@body) `(progn ,@body (times ,(- n 1) ,@body))))
19:51:16 <ehird> return value magick:
19:51:59 <ehird> hmm
19:58:45 <oklopol> ehird: i still don't know much about emacs, but i agree anything grandioso and awesome is kinda cool.
19:58:57 <ehird> (defmacro times-helper (n &body body)
19:58:57 <ehird> (if (zerop n)
19:58:57 <ehird> nil
19:58:57 <ehird> `((progn ,@body) ,@(macroexpand `(times-helper ,(- n 1) ,@body)))))
19:58:58 <ehird> (defmacro times (n &body body)
19:58:58 <ehird> `(values ,@(macroexpand `(times-helper ,n ,@body))))
19:59:00 <ehird> oops
19:59:02 <ehird> sorry for the flood
19:59:07 <ehird> but there's your compile-time (TIMES n ...)
20:01:08 -!- jix has quit ("CommandQ").
20:02:36 <ehird> oklopol: not that hard, just read what i said :p
20:02:44 <ehird> hm, it would be quite a bit porjcet, wouldn't it
20:04:06 <ehird> ais523: i'm flooding quite a bit aren't i?
20:05:32 <ais523> I'm fine with it
20:05:36 <ehird> hehe
20:05:42 <ehird> ais523: you know, golfscript isn't actually that compact
20:05:47 <ehird> + it loses in speed benchmakrs
20:06:12 <ehird> we need a language that takes some few really strange operators, and mangles them in fun ways to create insanely compact code, implemented in efficient C
20:06:13 <ehird> :D
20:06:35 <ais523> I'm well aware that golfscript can be improved upon
20:06:58 <ais523> I've been working on a language for a long time designed for similar purposes that I think would do better in length, although probably not in speed
20:07:04 <ais523> Underload is a tarpit version of it
20:07:14 <ais523> but the full version has never been implemented or even properly documented
20:07:32 <oklopol> golfscript? i bet cise owns that
20:13:26 <ehird> ais523: perhaps not always using the stack is an idea for conciseness
20:13:50 <ais523> the stack leads to RPN, which tends to be short
20:14:02 <ais523> but having commands for 'double TOS' rather than having to write 2* might help in some cases
20:14:30 <Asztal> ¨ = double TOS
20:14:32 <Asztal> :D
20:14:40 <ehird> ais523: yes, a standard prelude can be written
20:14:45 <ehird> ais523: but, infix can also shorten code
20:14:47 <ehird> prefix less so--
20:14:52 <ehird> but infix can cut down on the spaces
20:15:04 <ehird> also, it can remove quoting
20:15:04 <ehird> e.g.:
20:15:17 <oklopol> prefix == postfix
20:15:20 <ehird> "hello" 'foo {doohickey}
20:15:28 <ehird> where 'blah is a quote
20:15:33 <ehird> with infix that's:
20:15:36 <ehird> "hello"{doohickey}foo
20:15:43 <ehird> because {doohickey} can quote the foo itself
20:15:43 <ais523> the way mine worked no commands were longer than one character, so spaces weren't needed
20:15:52 <ehird> ais523: that can lead to problems though
20:15:54 <ais523> there was a wimpmode for decimals
20:16:03 <oklopol> it's just "stack manipulation" is easier to comprehend than "high-order functions" in most cases
20:16:05 <ais523> although I should probably add a command for arbitrary high number if it's being used for golfing
20:16:05 <ehird> when you have a really useful command but are running out
20:16:12 <ehird> so: 1 = most used for compactness
20:16:14 <ehird> 2 = 2nd most used
20:16:16 <ehird> ... etc
20:16:23 <ehird> and ofc decimals indeed
20:16:26 <ais523> I'm not near running out of letters yet
20:16:30 <ais523> and some commands were multiple letters
20:16:36 <ehird> ais523: one thing that is NEEDED
20:16:41 <ehird> is a way to extend the parser, in some way
20:16:43 <ehird> to add new infix ops
20:16:46 <ehird> instead of: x = 5
20:16:46 <ais523> due to z and Z being modifiers on the next command, and other similarities
20:16:49 <ehird> x=5 must be possibly
20:16:57 <ehird> which is only possible by defining = to be a special kind of token.
20:17:14 <ais523> are you talking about variable assignment?
20:17:16 <ehird> ais523: this also means much of the stdlib can be written in itself
20:17:29 <ais523> much of the stdlib /is/ written in itself in my unfinished implementation
20:17:40 <ais523> and many of those are commented out with some faster C++ code next to them...
20:17:52 <ehird> ais523: maybe ideas from yours could help form UltimateGolfLangugaeThing?
20:17:59 <ais523> I pretty much abandoned the C++ version, though, even though it was the most complete, because it was getting unmaintainable
20:18:26 <ais523> new commands can be defined pretty easily, by the way; so to define x to be y, you could write 'y'x#
20:18:36 <ais523> 'a is equivalent to (a)
20:18:44 <ais523> saves one char in a common situation...
20:18:55 <ehird> ultimategolflanguagething:
20:18:58 <ehird> cmd:code
20:19:07 <ehird> code terminated by, ehh, let's just say ;
20:19:08 <ehird> so
20:19:18 <ehird> foo:2 2+;
20:19:25 <ehird> is the function const(4)
20:19:34 <ehird> though i am thinking that + will be binary
20:19:37 <ehird> foo:2+2;
20:19:39 <ehird> one char shorter.
20:19:48 <ehird> if you want a postfix version of a binop, prefix it with `
20:19:52 <ehird> foo:2 2`+;
20:19:57 <ehird> ais523: seems good to me
20:20:04 <ais523> in my case, if you really wanted to add 2 and 2 and save it in a command, it would be something like (22+)'f#
20:20:24 <ehird> ais523: 2+2 is evaluated when you call foo
20:20:26 <ehird> it's just a function
20:20:28 <ais523> same here
20:20:36 <ais523> (22+) quotes the command, just like in Underload
20:20:40 <ehird> foo:2+;
20:20:46 <ehird> ^^ that takes advantage of partial evaluation ^^
20:20:49 <ais523> gives you an add-2 function
20:20:54 <ehird> yep
20:20:55 <ais523> just like (2+)'f#
20:21:09 <ehird> foo:+2; would also work
20:21:26 <ehird> because numeric literals are positive by default
20:21:27 <ais523> but then you have two commands that do the same thing, which is bad for conciseness
20:21:30 <ehird> so you can't use +foo on them
20:21:38 <ehird> foo:-3; probably won't work, obviously
20:21:42 <ais523> my language didn't /have/ negative numbers
20:21:43 <ehird> foo:3-; will though
20:21:49 <ehird> ais523: they are useful
20:21:53 <ais523> I found they were rarely needed and confusing
20:21:56 <ehird> we're thinking about golf here
20:22:00 <ais523> I know
20:22:08 <ais523> but how do you execute something a negative number of times?
20:22:18 <ehird> probably by triggering an error.
20:22:27 <ehird> anyway, as soon as i figure out a language name maybe we should move to a different channel, it's getting floody in here
20:23:04 <ais523> make a channel called something like #esoteric_flood where we can flood all we like
20:23:11 <ehird> that exists.
20:23:13 <ehird> #esoteric-blah
20:23:18 <ehird> mainly for bots, but basically 'crap'
20:23:22 <ais523> we may as well go there, then
20:23:22 <ehird> but - not good for discussion
20:23:26 <ais523> ah
20:23:33 <ais523> well make one which is for discussion but floodable
20:23:47 <ehird> at that point i might as well just make one for the language :P
20:23:59 <Asztal> #moderatelyrainyesoteric
20:23:59 <ehird> if only golfscript wasn't taken
20:24:13 <ehird> heh
20:24:21 <Asztal> wholeinone :)
20:24:35 <ais523> well, my language was called Overload, due to the massive overloading of the operators and due to the way a simple program could easily overload a computer if not optimised
20:24:44 <ehird> ais523: now I get underload
20:24:45 <ais523> and Underload was a tarpit version of it...
20:24:46 <ehird> hee hee hee
20:24:51 <Slereah> ehird you bitch
20:24:58 <ehird> i am male, Slereah
20:25:05 <Slereah> Yes. Bitch.
20:25:32 <ehird> ais523: how does v^ sound as a name? :P
20:25:42 <ehird> 1. it looks like some kind of mountain, if you squint your eyes
20:25:46 <ehird> 2. it's two directions
20:25:49 <ehird> 3. it's unpronouncable
20:25:58 <ehird> 4. nobody will ever figure out a file extension
20:26:04 * ais523 pronounces it as v followed by a kind of hiccup
20:26:10 <ehird> v-hu!
20:26:28 <Slereah> ehird: .mnt
20:26:36 <ais523> that's already used
20:26:42 <Slereah> So what
20:26:48 <Asztal> .v^
20:26:48 <ais523> by a piece of music composition software for Windows I was using a while ago
20:26:54 <ais523> the so what is that I actually knew what it was used for
20:26:57 <Slereah> One day, I will make a file extension for NTCM
20:26:58 <ais523> but I agree with the so what
20:27:01 <Slereah> It will be .lm9
20:27:16 <ais523> BTW, does anyone know of an Unlambda debugger?
20:27:26 <ais523> I'm having a bit of trouble with a program I've been working on for a while
20:27:38 <Slereah> Not really.
20:29:25 <ehird> hrm
20:29:29 <ehird> ais523: foocode
20:29:30 <ehird> :P
20:29:36 <ehird> or fucode
20:29:57 <ais523> give it a zero-length name
20:29:59 <ehird> no wait
20:30:00 <ais523> due to the shortness of it
20:30:01 <ehird> codeFu
20:30:11 <ais523> although I like that suggestion
20:30:16 <ehird> oh I know!
20:30:18 <ehird> golFu
20:30:19 <ehird> or fugolf
20:30:26 <ehird> eh, ok, here are the options:
20:30:27 <ais523> my regexp language has negative-length strings
20:30:34 <ais523> so you could use one of those
20:30:43 <ehird> foocode, fucode, codeFu, golFu, fugolf, <something else ais523 suggests>
20:30:54 <ais523> golFu looks good
20:31:07 <ehird> but kind of hard to interpret the first time you look at it
20:31:10 <ehird> (kind of like the language then)
20:32:06 <ais523> :)
20:32:21 <ehird> i don't really like fucode
20:32:22 <ehird> agree?
20:32:33 <ais523> yes
20:33:34 <ehird> ok
20:33:40 <ehird> and foocode isn't too hot - agreed?
20:34:08 <bsmntbombdood> food cooked certainly is hot
20:34:28 <ais523> foocode is just a bit meh
20:34:54 <ehird> ok:
20:34:59 <ehird> what about fugolf?
20:35:06 <ehird> i don't like the sound of it, even in fuGolf form
20:35:17 <ais523> and it's not at all obvious what you're getting at
20:35:26 <ais523> the -fu suffix is much more recognisable at the end of a name
20:35:31 <ehird> yes.
20:35:32 <ehird> ok:
20:35:42 <ehird> codeFu, golFu, golfFu (repetition but nicer than golFu maybe), <other>
20:36:10 <ais523> Golf-Fu?
20:36:29 <ehird> ais523: kind of a pain to type
20:36:33 <ehird> also try to pronounce it
20:36:35 <ehird> 'golfufu'
20:36:50 <ais523> golffffu
20:36:59 <ais523> is how I pronounce it
20:37:08 <ais523> I agree about the typing difficulty, though
20:37:30 <ehird> ok, so we're still at what i said last time =P
20:37:46 <Asztal> golfu just sounds japanese to me.
20:38:07 <ehird> ninjaFu!
20:38:14 <ais523> :D
20:38:38 -!- ais523 has set topic: TOPIC NOSTALGIA! (topic from 2004/01/05) 'Why is there an 'L' in Noel? || Because "Noël" is prettier than an "L"? Errr... || Celebrate Mungday!' || We are rebellious, and thus anger freenode by not mentioning the logs in the topic.
20:38:48 <ais523> for better paradoxicality
20:38:51 <ehird> wait you didn't even change the topic xD
20:39:00 <ais523> s/having/mentioning/
20:39:02 <ais523> near the end
20:39:11 <ehird> okay:
20:39:12 <ehird> codeFu, golFu, ninjaFu, <other>
20:39:48 <ais523> do you think it's a good idea to mention golfing in the lang's name or not?
20:39:54 <Asztal> cram
20:39:58 <ehird> does it really matter, ais523? :)
20:40:00 <ais523> it was a precedence when I designed my language
20:40:14 <ais523> I actually had the kind-of-insane idea that it could be used to send interactive content via Teletext
20:40:19 <ais523> thus the need for the shortness of the name
20:40:35 <ehird> teletext :D
20:40:42 <ais523> s/name/code/
20:40:44 <ehird> britain is so weird.
20:40:56 <Corun> Hmm, what?
20:40:58 <ais523> is there an equivalent where you live?
20:41:03 <ais523> other than the Internet, of course?
20:41:03 * Corun is british
20:41:22 <ehird> ais523: I live in britain
20:41:22 <ehird> :P
20:41:29 <ais523> aha
20:41:33 <ais523> so the answer is yes
20:41:39 <ehird> ostensibly,y es
20:43:57 <ehird> ais523: what's wrong with mentioning golf in the name?
20:44:10 <ehird> i guess it does reduce the possibility that people will write in it outside of golf contests
20:44:42 <ais523> if the language has practical utility outside, it might be an idea to use a different name
20:44:50 <ehird> define practical
20:44:51 <ehird> it's an esolang
20:44:52 <ehird> :P
20:45:24 <ais523> practical = you might write in it to produce a program that does X when no language choice is specified and you aren't deliberately choosing an esolang
20:46:22 <ehird> ais523: i don't get what you're saying
20:46:33 <ehird> you mean like to write up a quick hack? like what you might do with perl? :P
20:46:37 <ehird> bit odd to use an esolang for that i guess
20:46:41 <ais523> that sort of thing
20:46:54 <ais523> or maybe you want to write an interpreter for your latest esolang
20:46:55 <ehird> i guess so then
20:46:57 <ais523> and need a language to write it in
20:47:02 <ehird> codeFu, ninjaFu, <other>
20:47:05 <ehird> those are our choices
20:47:15 <ais523> ninjaFu is so much better than codeFu as a name
20:47:23 <ehird> but ninjafu.com is taken, etc
20:47:24 <ehird> so it's common
20:47:30 <ehird> and ninjaFu doesn't really suggest, well, code
20:47:31 <GregorR> How 'bout <other>Fu
20:47:36 <ehird> GregorR: heh.
20:48:34 <ehird> ais523: I can't think of good entries for <other>
20:48:39 <ehird> so: codeFu vs ninjaFu, unless you can
20:49:05 <ais523> codeFu vs ninjaFu sounds like the name of a TV program
20:49:15 <ehird> yes
20:49:16 <ehird> it does
20:49:30 <ehird> ais523: ninjafu 1k goog results
20:49:31 <ehird> codefu 2k
20:49:37 <ehird> ninjafu.com is first result though
20:49:43 <ehird> and seems active
20:49:58 <ehird> codefu.com is taken but just parked
20:50:05 <ehird> codefu.org is taken and used.
20:50:21 <ais523> what about ninjacode? Is that taken?
20:50:25 <ehird> ais523: honestly maybe we should just give it some kind of abstract name
20:50:31 * ais523 guesses probably but can't be bothered to checl
20:50:38 <ehird> like Rast or something
20:50:42 <ais523> s/l$/k/
20:50:48 <ehird> ais523: ninjacode.{com,org} is taken
20:50:52 <ehird> .com->apache2 default
20:50:58 <ais523> not surprising
20:51:06 <ehird> ninjacode.org -> not much done but a few links
20:51:15 <ehird> incl. gallery
20:51:27 <ehird> ok, options:
20:51:34 <ehird> codeFu, ninjaFu, ninjacode, <abstract name>
20:52:27 <ais523> you could give it a name that's a program in the lang itself
20:52:35 <ais523> preferably a very short one which does something crowd-pleasing
20:52:45 <ehird> ais523: and with just a-z..
20:53:35 <ais523> why add that restriction?
20:53:56 <ehird> because otherwise it's kind of hard to pronounce
20:54:23 <ais523> random strings of letters can be hard to pronounce anyway
20:54:56 <ehird> true
20:54:57 <ais523> I have a language called :≠, for instance
20:55:17 <ais523> and just arbitrarily defined a pronunciation for it
20:55:47 <ehird> anyway
20:55:54 <ehird> codeFu ninjaFu ninjacode <abstract>
20:55:55 <ehird> pick one
20:56:33 <ais523> I'll go for ninjaFu, then
20:56:41 <ehird> not ninjacode?
20:56:46 <ehird> or ninjascript
20:57:30 <ais523> ninjascript sounds better
20:57:37 <ais523> bit reminicent of golfscript, then
20:57:46 <ais523> s/en/ough/
20:57:54 <ehird> so?
20:58:17 <ais523> s%n/%n$/%
20:58:24 <ais523> I think that's right now
21:01:11 <ehird> ais523: ninjaFu doesn't sound very good IMO
21:01:14 <ehird> ok! finally! down to three
21:01:27 <ehird> codeFu ninja{code,script} <abstract>
21:01:38 <cherez> Gentleman, I am at war!
21:02:22 * ais523 currently favours ninjascript
21:02:25 <ais523> maybe in camelCase
21:03:38 <ehird> ais523: no love for <abstract>?
21:04:15 <ais523> it's hard to pick something in particular for that
21:04:26 <ais523> if you have a concrete suggestion for <abstract>, feel free to suggest it
21:05:49 <ehird> Vort. Yaern. Baut. Cason. Rafdae.
21:06:31 <ehird> :P
21:07:55 <ehird> ais523: None of them?
21:08:30 <ais523> I like the second and last best
21:08:46 <ais523> ae is obviously a good vowel to use
21:09:34 <Asztal> hwaet?
21:09:53 <ehird> Yaen, Rafdae, codeFu, ninjacode, ninjascript
21:09:53 * Asztal <3 old english
21:09:59 <ehird> pick one and let's be quick this is taking far too long
21:10:19 <ais523> hey, it's your lang, and every time I make a suggestion you disagree
21:10:23 <ais523> I'll randomise if you like
21:11:49 <ehird> :P
21:11:54 <ehird> hmm ninjaCode ninjaScript
21:11:59 <ehird> they look nicer camelcased
21:12:04 <ehird> let's just go with one of them
21:12:08 <ehird> it's a binary decision :-)
21:12:10 <ais523> ninjaScript, then
21:12:23 <ehird> kind of similar to golfscript like you said
21:12:27 <ehird> also, define 'script'
21:12:33 <ehird> its not just a scripting language, is it?
21:12:37 <ais523> hopefully not
21:12:45 <ehird> then ninjacode
21:12:47 <ehird> #ninjacode
21:12:49 <ais523> I'll use the D definition that a script is something that allows #! at the start
21:13:26 <ehird> well, it will allow #! as a comment
21:13:27 <ehird> :)
21:13:30 <ehird> anyway, #ninjacode
21:17:45 -!- helios24 has quit ("Leaving").
21:39:32 -!- Peter3m has joined.
21:44:13 <Peter3m> Hi
21:44:18 <ais523> hello
21:45:17 -!- oerjan has joined.
21:45:56 <Peter3m> you are from?
21:46:11 <ais523> I'm from the UK, anyway
21:48:47 <oklopol> oerjan is from norway!
21:49:19 <Peter3m> I am from brazil
21:49:19 <ehird> i am from the uk!
21:49:31 <oerjan> oklopol is from Kuala Lumpur
21:49:59 <EgoBot> I am from teh interwebs
21:51:05 <oklopol> yeah, i admit it, i'm a kualalumpurian hacker
21:51:30 <olsner> can I be an oompaloompian hacker?
21:52:06 <oerjan> depends. are you good at hacking chocolate?
21:52:22 <olsner> I get by
21:55:03 <oklopol> i wanna be ouagadougouian !
21:55:33 <oerjan> don't be silly. no place could have such a ridiculous name.
21:56:14 <Peter3m> on moment
21:57:02 <olsner> llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogochian!
21:57:13 <oerjan> olsner: bless you!
21:57:16 <olsner> *actual place name*
21:57:24 <ais523> someone entered a massively long cheat BF entry into my uudecode challenge on codegolf
21:57:27 <oklopol> what was that tangiwanga thing now..
21:57:29 <ais523> sorry, Anarchy Golf
21:57:30 <ehird> ais523: lmao
21:57:40 <ehird> this is why i love anarchy golf.
21:57:56 <ais523> it strikes me as a pointless thing to do
21:58:06 <ais523> they probably just memorised the entire man page for uudecode...
21:58:16 <ehird> ais523: or used a text generator
21:58:26 <ehird> also, lots of goruby entries, probably it has a command built in
21:58:51 <ais523> likewise I'm not sure how Perl could be that short without some sort of unpack magic
21:59:21 -!- Gabriz has joined.
21:59:35 <ehird> someone got 105 chars of brainfuck in my scheme interpreter
21:59:37 <ehird> embarrasing
21:59:57 <ais523> cheating, obviously
22:00:15 <ehird> duh, you have to: i have wrong parens in one of the examples
22:00:16 <ehird> :P
22:00:24 <ehird> specifically
22:00:24 <ais523> I know
22:00:24 <ehird> (let ((acc (accgen 4))
22:02:10 -!- Gabriz has quit (Client Quit).
22:02:16 -!- Gabriz has joined.
22:02:40 <Peter3m> What happened?
22:02:59 <ais523> people submitted cheat entries instead
22:03:46 * oerjan thinks that to prevent cheat entries, the test cases should be longer than a real program
22:03:54 <oerjan> don't know if that is allowed...
22:04:09 <ais523> that's how I tried to prevent cheats on the uudecode challenge
22:04:16 <ais523> I used uudecode's man page as the sample output
22:04:51 <Peter3m> crazy
22:04:54 <Peter3m> :D
22:05:09 <oerjan> ic
22:05:41 <ehird> anarchy golf should let you provide a test program
22:05:45 <oerjan> i guess to beat that, there needs to be a reference implementation and a test case generator
22:05:49 <ehird> so along withy our examples, it runs the program with the program
22:05:53 <ais523> I had the same idea as well
22:05:54 <ehird> so you can bash it and see if its really
22:06:12 <ais523> and also get the first entry with certainty
22:06:18 <ehird> nah
22:06:50 <Peter3m> Here are all of England?
22:06:57 <ais523> have you seen my latest golfing challenge, yet?
22:07:01 <ehird> Peter3m: no
22:07:07 <ehird> ais523: which
22:07:09 <ais523> the problem is to transpose a matrix of characters
22:07:21 <ais523> and I'm still winning on the two langs where I entered
22:07:26 <ehird> ah those yes
22:11:43 -!- Gabriz has left (?).
22:12:34 -!- RedDak has quit (Remote closed the connection).
22:17:54 -!- ais523 has quit ("bye").
22:19:46 <ehird> now that ais523 is gone, who wants to discuss an esolang designed to be very good for 1. small code size, for golfing 2. easy to refactor to be smaller 3. mostly written in itself, as an stdlib: a very big stdlib, with tons and tons of stuff 4. the core is just a very simple kernel written in C, which compiles the very small core it provides to native code (!!!) and then the rest is done by the stdlib
22:19:59 <ehird> concatentative, but most of the specifics have been totally-not-decided right now
22:20:02 <ehird> if so: #ninjacode
22:21:00 <ehird> :D
22:21:58 <olsner> something like perl? :P
22:21:59 <Peter3m> Any good movie you recommend me?
22:22:12 <ehird> olsner: nah, not really
22:22:14 <ehird> :)
22:22:36 <ehird> olsner: you can't easily refactor perl, it isn't mostly written in itself, and it doesn't have a native-compiling kernel
22:22:50 <ehird> olsner: but really jokes aside you should join #ninjacode, it's going to be awesome :P
22:22:51 <olsner> yeah, the analogy is quite imperfect
22:23:37 -!- Peter3m has left (?).
22:35:43 -!- Corun has quit (Read error: 110 (Connection timed out)).
22:42:59 -!- immibis has joined.
22:53:43 -!- timotiis has quit ("leaving").
22:58:23 -!- glen_quagmire has quit ("Miranda IM! Smaller, Faster, Easier. http://miranda-im.org").
23:43:20 -!- GreaseMonkey has joined.
23:51:23 -!- sebbu has quit ("@+").
23:53:09 <ehird> Hmm.
23:53:24 <ehird> Anarchy golf didn't have a rot13.
23:53:24 <ehird> Oh well: http://golf.shinh.org/p.rb?rot13
23:59:40 <Asztal> bah... 26 and 65 both have awful factors.
2008-01-24
00:01:08 <ehird> heh
00:12:00 -!- uvanta has joined.
00:12:50 <uvanta> Hi
00:17:40 <ehird> hi
00:27:45 <Asztal> should I mark my program as a cheat?
00:27:56 <Asztal> it still rot13s '[', '] and '_'
00:28:09 <Asztal> ^ and ` too
00:29:03 -!- GreaseMonkey has changed nick to ^_`.
00:31:20 <oerjan> o_O
00:32:05 <oerjan> so what does that rot13 to? :)
00:32:21 <Asztal> [] becomes 46
00:32:28 <Asztal> _ becomes 8
00:35:40 <oerjan> \ too then, i presume
00:36:52 <Asztal> ah yes
00:37:18 <Asztal> \[]^`_ => 546798
00:38:30 <Asztal> 51 bytes though, not as good as I expected :(
00:41:00 <ehird> ={:'a'z..?{'a-13+26%}if}<!
00:41:04 <ehird> ninjacode, without much thought
00:41:10 <ehird> so ninjacode 0.000001 prepreprepreprealpha
00:41:15 <ehird> doesn't handle uppercase though.
00:41:19 <ehird> and doesn't even work properly.
00:47:43 <ehird> oerjan: interesting things in that:
00:47:50 <ehird> < is overloaded
00:47:55 <ehird> if its first arg is a block
00:48:01 <ehird> the second should be an array (or string, same thing)
00:48:06 <ehird> then it works as map
00:48:23 <ehird> ! with stack (a b) where both are arrays, a's contents gets destructively replaced with bs and b popped
00:48:25 <EgoBot> Huh?
00:48:30 <ehird> =... is like a perl filter.
00:48:48 <ehird> "for all lines in input: do the rest of the program on them, then print out the top element of the stack and start again"
00:49:40 <ehird> 0=~1+.' C~.
00:49:43 -!- ^_` has changed nick to GreaseMonkey.
00:49:45 <ehird> that adds a line number to all lines
00:49:57 <ehird> e.g. "a\nb\n\c\n" -> "1 a\n2 b\n3 c\n"
00:51:15 <ehird> quite elegant looking actually.
00:51:41 <ehird> wait
00:51:43 <ehird> that can be done simpler
00:51:47 <ehird> 0=~1+.' C~
00:51:48 <ehird> one less char!
01:07:13 -!- sekhmet has quit (calvino.freenode.net irc.freenode.net).
01:24:53 -!- olsner has quit ("Leaving").
01:45:10 <ehird> heh
01:45:10 <ehird> printf(x="printf(x=%c%s%c,34,x,34)",34,x,34)
01:48:03 <pikhq> Nice quine.
01:48:08 <ehird> yes
01:48:20 <ehird> like the standard c quine, but with an inline assignment thingy
01:48:26 <ehird> pikhq: It's ruby. Do you still like it now? :D
01:49:03 <pikhq> I think that statement would also be valid C, actually.
01:49:11 <pikhq> God. A ruby-C polyglot.
01:49:12 * pikhq shudders
01:49:22 * pikhq shudders some more at Ruby
01:49:26 <ehird> loads of polyglots support ruby.
01:49:33 <ehird> and it's valid c, if you have x defined
01:49:39 <ehird> main(x){printf(x="printf(x=%c%s%c,34,x,34)",34,x,34);}
01:49:50 <ehird> HA! HA! HA! HA! HA!
01:50:21 <pikhq> main(){printf(char*x="printf(char*x=%c%s%c,34,x,34",34,x,34);}
01:50:32 <ehird> longer than mine.
01:50:34 <ehird> less hilarious.
01:50:35 <ehird> fail.
01:50:53 <pikhq> Fair enough.
01:51:54 <pikhq> m(){p(c="p(x=%c%s%c,a,x,a)",a,x,a);} // if you allow judicious use of compile-time defines
01:52:20 <pikhq> m(){p(c="m(){p(x=%c%s%c,a,x,a);}",a,x,a);} // if you want it to also quine. :p
01:52:35 <ehird> bah.
01:52:38 <ehird> lame
01:52:51 <oerjan> um, it's not a quine unless it includes the judicious defines
01:53:40 <pikhq> puts [join [split "puts \[a{a}]" a] {join [split "puts \[a{a}]" a] }]
01:53:54 <pikhq> A Tcl quine. My brain hurts.
01:54:00 <ehird> hmm
01:54:04 <ehird> ninjacode quine:
01:55:19 <ehird> {'{C:.'}C}'{C:.'}C
01:55:30 <ehird> hm wait
01:55:37 <pikhq> format [set a {format [set a %s] $a}] $a
01:55:39 <ehird> {'{C:.'}C.}'{C:.'}C.
01:56:30 <ehird> pikhq: Figure that out.
01:56:56 * pikhq throws a calculus book at you
01:57:06 <ehird> 'char -> char ascii code
01:57:13 <ehird> {...} -> block, usable as string
01:57:17 <ehird> C -> print out char
01:57:19 <ehird> : -> dup
01:57:21 <ehird> . -> print out thing
01:57:30 * pikhq throws it *hard*
01:58:51 <ehird> pikhq: it's easy to figure out :P
02:00:59 -!- ehird has quit.
02:01:58 <pikhq> Don't care.
02:02:47 <pikhq> RodgerTheGreat: Either you're involved in Something Awful, or someone from there reads this channel.
02:03:07 * pikhq has stumbled upon a Something Awful thread discussing that scientology video. . .
02:03:15 <pikhq> And the "how to make a cult" video was also in there.
02:03:58 <pikhq> And the Steven Fishman deposition. . .
02:10:08 -!- Corun has joined.
02:34:26 -!- sekhmet has joined.
03:07:28 -!- Corun has quit ("Arr.").
03:11:54 -!- immibis has quit (Read error: 110 (Connection timed out)).
04:16:25 -!- calamari has joined.
04:44:56 <RodgerTheGreat> pikhq: I read something awful when I'm bored
04:45:03 <RodgerTheGreat> I often link people to things I find
04:45:31 <RodgerTheGreat> I'm not technically a goon, but I've been quite tempted to buy an account
04:49:26 <RodgerTheGreat> hey, calamari- what's up?
04:49:38 <calamari> not much.. you?
04:50:45 <RodgerTheGreat> I'm thinking about making an amusing parody game
04:51:28 <RodgerTheGreat> see if you can guess: http://nonlogic.org/dump/images/1201150121-aperTiles.gif
04:51:43 <RodgerTheGreat> not too many clues yet, but one dead giveaway
04:53:37 -!- oerjan has quit ("Good night").
05:06:27 -!- immibis has joined.
05:08:06 -!- adu has joined.
05:08:27 <adu> well
05:08:29 <adu> I started making my language
05:10:44 <adu> so far I've parsed the syntax into an AST, but now I don't know what to do
05:10:54 <adu> :P
05:54:40 <pikhq> RodgerTheGreat: Fair 'nough.
05:55:08 <RodgerTheGreat> I think I'm going to call my new game "Gateway".
05:55:38 <RodgerTheGreat> because as they say, "there's a hole in the sky, through which things can fly"
06:06:59 <calamari> sliding block puzzle? :)
06:07:58 <RodgerTheGreat> lol
06:08:08 <RodgerTheGreat> calamari: they're just tiles
06:08:31 <calamari> but one is white so there's an empty space to move into :)
06:08:39 <uvanta> Portal?
06:08:41 <RodgerTheGreat> they can be assembled into 2d maps for games like pokemon, zelda, mario and so on
06:08:46 <RodgerTheGreat> uvanta: ding ding ding
06:09:16 <uvanta> you're working on 2-dimensional parody of Portal?
06:11:52 <adu> hmm
06:11:57 <RodgerTheGreat> uvanta: yes
06:12:11 <uvanta> that sounds great
06:12:23 <RodgerTheGreat> it's entirely based on a whim I had earlier today
06:12:43 <RodgerTheGreat> I already have a 2d engine that can *very nearly* do what I need, so I just started pounding out some graphics
06:16:39 <RodgerTheGreat> graphical assets always feel like half the battle for game development, to me
06:30:28 <RodgerTheGreat> uvanta: what would you want to see in a 2d parody of portal?
06:30:48 <uvanta> that talking gun is necessary
06:33:13 <RodgerTheGreat> oh, yes- naturally
06:33:20 <RodgerTheGreat> I have some ideas for the turrets
06:37:11 <RodgerTheGreat> more stuff is completed: http://nonlogic.org/dump/images/1201156466-aperTiles.gif
06:40:40 <uvanta> RodgerTheGreat, you're surely aware of Portal Flash version, right?
06:40:51 <RodgerTheGreat> yeah, the sidescroller
06:40:57 <RodgerTheGreat> a very good implementation
06:41:11 <RodgerTheGreat> I'm aiming for more of a puzzle/adventure game
06:46:06 <uvanta> I think the best thing of Portal as a game was suspensive/thrilling atmosphere
06:46:14 <uvanta> Puzzle genre is good for it
06:50:16 <uvanta> that tiles reminds me of Knytt Stories. http://nifflas.ni2.se/index.php?main=02Knytt_Stories
06:50:50 <uvanta> Knytt Stories is a nice puzzle/adventure game too
06:56:02 -!- schemacs has joined.
06:56:27 -!- schemacs has left (?).
06:59:19 <RodgerTheGreat> interesting. I think I've heard of knytt before
07:16:51 <RodgerTheGreat> 'night, guys
07:17:48 -!- RodgerTheGreat has quit.
07:23:06 -!- uvanta_ has joined.
07:41:30 -!- uvanta has quit (Read error: 110 (Connection timed out)).
07:51:53 -!- helios24 has joined.
07:54:08 -!- puzzlet_ has quit (Remote closed the connection).
07:54:20 -!- puzzlet has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:01:57 -!- adu has quit (Remote closed the connection).
08:02:39 -!- puzzlet has quit (Remote closed the connection).
08:02:41 -!- puzzlet_ has joined.
08:03:00 <immibis> http://hadjin.sourceforge.net/wiki.php/IRC_log/2008/01/24/hadjin lol (ignore the bugged logger)
08:05:17 -!- calamari has quit ("Leaving").
08:05:41 -!- uvanta_ has changed nick to uvanta.
08:09:38 -!- puzzlet has joined.
08:10:12 -!- puzzlet_ has quit (Read error: 104 (Connection reset by peer)).
08:14:21 -!- puzzlet_ has joined.
08:14:25 -!- puzzlet has quit (Remote closed the connection).
08:16:35 -!- puzzlet_ has quit (Read error: 104 (Connection reset by peer)).
08:27:35 -!- puzzlet has joined.
08:28:24 -!- puzzlet has quit (Read error: 104 (Connection reset by peer)).
08:38:18 -!- immibis has quit (Read error: 110 (Connection timed out)).
08:42:41 -!- puzzlet has joined.
08:43:12 -!- sarah87 has left (?).
08:54:16 -!- GreaseMonkey has quit (Client Quit).
08:57:14 <Slereah> Spam alert!
09:21:11 -!- jix has joined.
09:23:20 -!- puzzlet has quit (Read error: 104 (Connection reset by peer)).
09:23:24 -!- puzzlet has joined.
09:23:34 -!- puzzlet has quit (Read error: 104 (Connection reset by peer)).
09:28:57 -!- puzzlet has joined.
09:33:21 -!- GregorR has quit (calvino.freenode.net irc.freenode.net).
09:33:21 -!- Asztal has quit (calvino.freenode.net irc.freenode.net).
09:33:23 -!- oklopol has quit (calvino.freenode.net irc.freenode.net).
09:33:23 -!- Overand has quit (calvino.freenode.net irc.freenode.net).
09:33:24 -!- AnMaster has quit (calvino.freenode.net irc.freenode.net).
09:33:24 -!- bsmntbombdood has quit (calvino.freenode.net irc.freenode.net).
09:34:08 -!- GregorR has joined.
09:34:08 -!- Asztal has joined.
09:34:08 -!- bsmntbombdood has joined.
09:34:08 -!- AnMaster has joined.
09:34:08 -!- Overand has joined.
09:34:17 -!- oklopol has joined.
09:36:02 -!- puzzlet has quit (Remote closed the connection).
09:36:10 -!- puzzlet has joined.
09:39:41 -!- Asztal has quit (Read error: 113 (No route to host)).
09:40:21 -!- Asztal has joined.
09:43:15 -!- puzzlet has quit (Remote closed the connection).
09:48:27 -!- puzzlet has joined.
09:49:00 -!- puzzlet has quit (Read error: 104 (Connection reset by peer)).
09:53:24 -!- puzzlet has joined.
10:05:30 -!- puzzlet_ has joined.
10:09:39 -!- puzzlet has quit (Read error: 104 (Connection reset by peer)).
10:17:37 -!- jix has left (?).
10:26:54 -!- Overand_ has joined.
10:38:25 -!- puzzlet_ has quit (Read error: 104 (Connection reset by peer)).
10:39:03 -!- puzzlet has joined.
10:42:14 -!- lifthrasiir has quit (calvino.freenode.net irc.freenode.net).
10:42:14 -!- lament has quit (calvino.freenode.net irc.freenode.net).
10:42:24 -!- Asztal has quit (calvino.freenode.net irc.freenode.net).
10:42:24 -!- sekhmet has quit (calvino.freenode.net irc.freenode.net).
10:43:27 -!- Asztal has joined.
10:43:27 -!- sekhmet has joined.
10:43:32 -!- Overand has quit (Read error: 110 (Connection timed out)).
10:43:33 -!- Overand_ has changed nick to Overand.
10:44:10 -!- lifthrasiir has joined.
10:44:10 -!- lament has joined.
10:52:20 -!- tejeez has quit (calvino.freenode.net irc.freenode.net).
10:56:58 -!- cmeme has quit (Connection timed out).
11:04:57 -!- cmeme has joined.
11:04:59 -!- tejeez has joined.
11:15:07 -!- Tritonio_ has joined.
11:44:11 -!- helios24 has quit ("Leaving").
13:24:02 -!- MommeMC has joined.
13:35:48 -!- ehird has joined.
13:44:05 -!- jix has joined.
13:47:21 <ehird> question:
13:47:31 <ehird> {'{C:.'}C.}'{C:.'}C. ; is this a cheat quine?
13:47:43 <ehird> it relies on something akin to javascript's ability to print out a funcs source
13:57:57 -!- RodgerTheGreat has joined.
14:05:36 -!- timotiis has joined.
14:38:11 <uvanta> bye
14:38:14 -!- uvanta has quit ("blame!").
14:40:30 -!- salparot has joined.
14:41:10 -!- salparot has changed nick to olsnerWk.
14:54:32 -!- Tritonio__ has joined.
14:55:44 -!- Tritonio_ has quit (Read error: 110 (Connection timed out)).
14:59:07 -!- puzzlet has quit (Remote closed the connection).
14:59:14 -!- puzzlet has joined.
15:04:31 <Asztal> hmm... bef pushes the value of an uninitialised stack variable if & fails
15:04:46 <Asztal> so not cool :(
15:05:14 -!- oerjan has joined.
15:07:09 <RodgerTheGreat> "bef"?
15:07:46 <Asztal> the reference befunge-93 interpreter, and the one anarchy golf uses
15:07:52 <RodgerTheGreat> oh
15:22:01 -!- MommeMC has quit.
15:23:24 -!- olsnerWk has quit ("Changing server").
15:41:25 -!- MommeMC has joined.
15:41:28 -!- MommeMC has quit (Client Quit).
15:53:57 -!- calamari has joined.
15:54:32 -!- sebbu has joined.
16:02:14 -!- calamari has quit ("Leaving").
16:17:47 -!- puzzlet has quit (Remote closed the connection).
16:17:52 -!- puzzlet has joined.
16:23:40 -!- ehird has quit (Read error: 104 (Connection reset by peer)).
16:29:05 -!- jix has quit ("CommandQ").
16:35:55 -!- jix has joined.
16:39:19 -!- jix has quit (Nick collision from services.).
16:39:27 -!- jix has joined.
16:55:09 -!- Slereah has quit ("Konversation terminated!").
17:02:32 -!- slereah_ has joined.
17:48:10 -!- ais523 has joined.
17:53:15 -!- ais523 has quit ("restarting my window manager").
17:59:00 -!- ais523 has joined.
18:20:11 -!- Corun has joined.
18:21:03 -!- RedDak has joined.
18:35:30 -!- oerjan has quit ("leaving").
19:56:53 -!- helios24 has joined.
20:05:13 -!- SimonRC_ has joined.
20:05:13 -!- SimonRC has quit (Read error: 104 (Connection reset by peer)).
20:07:50 -!- faxathisia has joined.
20:25:24 <ais523> it's unusually quite here
20:25:29 <ais523> for this time of day
20:25:36 <slereah_> Let's say stuff.
20:28:29 <faxathisia> I agree
20:28:44 <tejeez> i should go to sleep soon
20:42:37 <ais523> stuff
20:42:46 <slereah_> STUFF
20:43:17 <ais523> it's probably quite because it isn't the case that ehird and me are here simultaneously
20:43:33 <ais523> that's what caused all the traffic over the previous few days
20:44:03 <slereah_> Let's make up some awesome project that we'll never do but will talk about to no end.
20:44:46 * faxathisia wants to write programs to solve combinatory logic problems..
20:45:29 <ais523> what sort of problems?
20:45:34 <slereah_> That mockingbird is laughing at you!
20:45:39 <ais523> unabstraction already exists and can be done automatically
20:45:42 <slereah_> I assume the riddles in "To mock a mockingbird"
20:46:00 <faxathisia> say you have a set of combinators, Try to produce some new combinator from them
20:46:00 * ais523 doesn't have that one
20:46:07 <slereah_> Stuff like "prove that with the existance of the mockingbird, there's birds that love such bird" and stuff.
20:46:26 <ais523> I don't think you can do that much with just a mockingbird
20:46:30 <slereah_> (The vocabulary in to mock a mockingbird isn't very standard)
20:46:34 <ais523> because applying it to itself gives an infinite loop
20:46:40 <faxathisia> I cant use typing because it's all in untyped lambda calc
20:46:44 <ais523> and if it's the only combinator, you can't do anything else with it...
20:46:47 <faxathisia> :(
20:46:53 <slereah_> It's not the only one.
20:47:00 <ais523> well, obviously
20:47:02 <slereah_> But the first chapter says that it exists.
20:47:10 <slereah_> And some other axioms that I forgot
20:47:22 <slereah_> With that, you can prove some properties for all combinators
20:48:18 <faxathisia> Like, every combinator has a fixed point\
20:48:32 <slereah_> Ah yes, fixed point.
20:48:33 <faxathisia> given a Mx = xx and Bxyz = x(yz)
20:48:44 <slereah_> It was "Fond of" in the book IIRC
20:48:47 <faxathisia> Yes
20:49:15 <ais523> and from that, you can prove that some things that sound like combinators can't be
20:49:15 <faxathisia> Any ideas for an algorithm for this? :S
20:49:34 <ais523> such as detecting if a function is a particular combinator or not
20:50:03 <slereah_> If I knew one, I would have found the solution on my own!
20:50:35 <faxathisia> I got stuck this one,
20:50:36 <ais523> you could just brute-force, I suppose
20:50:51 <ais523> but even determining whether two combinators are the same is sometimes difficult
20:50:56 <ais523> and I suspect it's undecidable in general
20:51:12 <faxathisia> ais523, Yeah I tried this, the problem is that It's undecidable if untyped lambda terms are equal
20:51:35 -!- ehird has joined.
20:51:46 <ais523> I find that up to a point, Haskell is quite good for identifying combinators, but past that point it's useless
20:51:46 <ehird> 'ello
20:51:57 <ais523> because you can't fit a mockingbird into the normal type system...
20:51:59 <ais523> oh, and hello
20:52:07 <slereah_> Hi.
20:52:07 <ehird> ais523: you kind of can
20:52:07 <ehird> m x = x x
20:52:23 <ehird> and m m works
20:52:24 <faxathisia> You can't type Y in anything
20:52:27 <ehird> Maybe you meant the pure Y combinator
20:52:36 <ais523> Prelude> let m x = x x
20:52:37 <ehird> faxathisia: we need a typesystem allowing construction of the infinite type
20:52:43 <ais523> Occurs check: cannot construct the infinite type: t = t -> t1
20:52:44 <faxathisia> yes
20:52:50 <ehird> ais523: works for me
20:52:51 <slereah_> faxathisia: Have you looked at the solution?
20:52:54 <ehird> oh
20:52:54 <ehird> no
20:53:13 <ais523> ehird: I'm using ghci, and it definitely doesn't let me define m x to be x x
20:53:14 <faxathisia> slereah, No, I'm going to work it out.. It's just taking weeks :P
20:53:22 <ais523> because it's type would be t -> t -> t -> t -> t -> ...
20:53:44 <ais523> on the other hand, combinators like s and k are easily identified from their types
20:53:44 <faxathisia> y f = f (y f) -- types ok
20:53:48 <slereah_> I'll read it again, and tell you if it gives me an awesome algorithm idea
20:53:50 <ehird> faxathisia: that's not Y
20:53:56 <faxathisia> Yes it is
20:53:58 <ehird> no
20:54:01 <ehird> Y is the lambda calculus form
20:54:04 <faxathisia> It is :P
20:54:05 <ehird> and contains no free names
20:54:06 <ehird> that does
20:54:13 <ehird> that is 'fix'
20:54:37 <faxathisia> It's equal to the y-combinator then...
20:54:46 <slereah_> What riddle is it again?
20:55:01 <ehird> faxathisia: just like every other fixed point combinator
20:55:02 <ehird> doesn't mean it's Y
20:55:24 <ais523> according to Wikipedia, Y is the best known fixed point combinator
20:55:37 <ais523> and y f = f (y f) is one way to describe its behaviour
20:55:42 <slereah_> Is it the "every bird is fond of at least one bird"?
20:56:09 <faxathisia> ok, please don't tell me the answer if you do get it, but given Qxyz = y(xz) and Txy = yx, Can you make Bxyz = x(yz) ?
20:56:40 <slereah_> T, the Thrush bird?
20:56:44 <faxathisia> Yes
20:56:51 <slereah_> (Working on lazy bird got me the names in mah noggin)
20:56:55 <faxathisia> I wrote a typechecker for STLC, and it can type y
20:57:57 <ehird> faxathisia: lazy version?
20:58:05 <faxathisia> It's useless for solving these problems though, http://rafb.net/p/uFekWO50.txt
20:58:14 <ais523> Wikipedia defines Y as S (K (S I I)) (S (S (K S) K) (K (S I I))) in ski form, so that should be enough to be an unambiguous definition
20:58:18 <ais523> assuming it's right, of course
20:58:24 <slereah_> faxathisia: Is it question 37?
20:58:43 <faxathisia> ehird, not sure what you mean, It's using herbrands unification algorithm
20:59:02 <faxathisia> slereah, 45
20:59:22 <slereah_> "The method is a bit tricky!"
20:59:34 <faxathisia> It must be! :S
21:00:14 <slereah_> Seeing the answer, brute force might work.
21:00:23 <ehird> faxathisia: the lazy Y
21:00:34 <ehird> \f. (\x. f (x x)) (\x. f (x x))
21:00:35 <slereah_> But it doesn't really offer a detailed demonstration
21:00:35 <faxathisia> ah yeah
21:00:36 <ehird> as opposed to
21:00:45 <faxathisia> y f = f (y f) -- Is useless in scheme
21:00:52 <ehird> \f. (\x. f (\y. (x x) y)) (\x. f (\y. (x x) y))
21:00:53 <slereah_> Just proves that the answer produce the same result
21:00:55 <ehird> um
21:00:58 <ehird> that is useless in any strict lanug
21:01:06 <ehird> ae
21:01:08 <faxathisia> ((lambda (m) ((lambda (x) (x x)) (lambda (y) (m [lambda (n) ((y y) n)])))) <-- the lambda in []'s is like basically a trick
21:01:13 <slereah_> DOWN WITH STRICTNESS!
21:01:48 <faxathisia> ((lambda (m) ((lambda (x) (x x)) (lambda (y) (m (y y)))))) ;; Should work in a lazy lisp
21:01:59 <ehird> faxathisia: not standard
21:01:59 <ehird> also
21:01:59 <ehird> here is a simple, self-referencing fixpoint
21:02:08 <ehird> (define (fix f) (f (lambda (x) ((fix f) x)))
21:02:08 <faxathisia> not standard?
21:02:15 <ehird> faxathisia: the [..]
21:02:33 <ehird> check r5rs if you don't believe me (r6rs is shit)
21:02:37 <faxathisia> I am using [] to show exactly which lambda I am referring to
21:02:45 <faxathisia> I never use [] in code
21:03:03 <faxathisia> It saves me using two lines, one with ^^^^^
21:03:42 <faxathisia> anyway the cool thing is that you can create recursion
21:04:07 <ehird> thats the point of the fixedcombinator
21:04:14 <ehird> no pun
21:08:09 -!- slereah__ has joined.
21:08:47 <slereah__> faxathisia: You might want to check how the arguments of combinators affect the arity of the resulting combinator.
21:09:00 <slereah__> Might shorten the search, since you know B only has 3.
21:09:21 <faxathisia> I've given up trying by hand
21:09:32 <slereah__> Well, in code form, or something
21:09:34 * faxathisia has pages of dead ends
21:11:13 <slereah__> For instance, Q(something)Q adds two to the arity, T only one.
21:11:40 <slereah__> (I tried to do that kind of conversions when trying to shorten some lazy bird programs)
21:12:30 <slereah__> Not sure if it will help.
21:12:34 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
21:12:51 <slereah__> Although it was useful to notice when it was useless to try to reduce some combinator
21:12:55 -!- slereah__ has changed nick to Slereah.
21:16:42 <faxathisia> I first worte a program that generates every combination of a set of combinators, then checks if they are equal
21:17:23 <Slereah> How does it check for equality?
21:17:25 <faxathisia> I checked equality as you would with STLC, so it can only solve the really basic problems
21:17:37 <Slereah> STLC?
21:17:51 <faxathisia> just see if the simple types of the lambda terms unify
21:18:00 <Slereah> I don't speak that moonspeak.
21:18:25 <Slereah> But well, since it's just B, you can probably just apply three dummy combinator to it.
21:18:31 <Slereah> That's how I do it for most.
21:18:41 <faxathisia> so (λx.x) has type α → α
21:19:20 <faxathisia> you can check that unifying the type of SKK works
21:20:17 <faxathisia> and since it does they must be equal, but yeah.. This is not working in general since lots of valid term in combinatory logic don't type
21:20:39 <Slereah> Iotat's i for one!
21:21:14 <faxathisia> so I think I'll try to solve the problem from the other end..
21:21:18 <ais523> "Few languages ever become sufficiently popular that they are used by more than a few people" -- quote I just came across on Wikipedia
21:21:21 <Slereah> Problems usually arise when there's lambdas in the lambda expression
21:21:33 <faxathisia> start mangling the solution until I get a solution
21:21:41 <faxathisia> er.. :S
21:25:07 * Slereah adds q to Lazy Bird
21:25:14 <Slereah> I'll give you brute force, you'll see!
21:25:20 <faxathisia> :D
21:25:28 <faxathisia> Lazy Bird is your language?
21:26:45 <Slereah> Yes.
21:27:19 <faxathisia> cool?
21:27:33 <faxathisia> Is there an implementation
21:27:44 <Slereah> http://membres.lycos.fr/bewulf/Russell/Lazy%20Bird/Lazy%20Bird%204.py
21:27:50 <Slereah> Although this one lacks q.
21:28:32 <Slereah> http://membres.lycos.fr/bewulf/Russell/Lazy%20Bird%205.py
21:28:34 <Slereah> This one has.
21:29:05 <Slereah> Same syntax as Unlambda. Use a, n, p or x as dummy variables.
21:29:15 <Slereah> The evolution of the expression is displayed.
21:32:08 <faxathisia> How come: mm is invalid?
21:32:31 <Slereah> `mm
21:32:37 <faxathisia> `mm works, buut doesn't loop
21:33:02 <Slereah> The program halts if the previous expression is the same as the current one
21:33:07 <faxathisia> ah ok
21:33:24 <Slereah> But ```sii``sii won't stop
21:33:39 <Slereah> There's i accumulating
21:34:36 <faxathisia> Ooooh
21:34:51 <ais523> ```sii``sii optimises into Underload's (:^):^, which doesn't accumulate is anywhere
21:35:27 <Slereah> Well, with lazy evaluation, it forgets that part.
21:35:32 <faxathisia> ^a^b^c`a`bc
21:35:33 <faxathisia> ``s``s`ks``s`k`s`ks``s`k`s`kkk`k``s``s`ksk`ki
21:35:37 <faxathisia> awesome :D
21:36:05 <Slereah> It is rather a pain to do it by hand!
21:36:26 <ais523> ```sii``sii -> ``i``sii`i``sii -> ```sii`i``sii -> ```sii``sii with eager evaluation
21:36:27 <Slereah> You can check with sum dummy combinators, too!
21:36:33 <ais523> and Underload and Unlambda are eager
21:36:41 <ais523> so there's no accumulation of is
21:38:39 <Slereah> faxathisia: Use the ABSTRACTOR for that though
21:38:47 <Slereah> Much shorter formulas
21:39:18 <Slereah> I've got some "Feather trimming" program in project somewhere, to try to do some minimal length formula
21:39:19 <faxathisia> Is there a description of this ``` syntax?
21:39:28 <Slereah> Well, it's polish notation
21:39:33 <faxathisia> I guess ` means application??
21:39:36 <Slereah> Yes.
21:39:49 <faxathisia> ok
21:39:56 <Slereah> There's a simple trick : take an expression with parenthesis
21:40:02 <Slereah> Eliminate all ")"
21:40:10 <Slereah> Turn "(" into "`"
21:40:39 <faxathisia> That's clever
21:49:33 -!- sebbu2 has joined.
21:52:22 <Slereah> http://membres.lycos.fr/bewulf/Russell/BRUTE%20FORCE.txt
21:52:23 <Slereah> There.
21:52:28 <Slereah> The solution is at the end.
21:52:41 <Slereah> All you had to do was to waste half an hour!
21:54:03 <Slereah> I did it in quite a stupid fashion, since I used expressions without t or q
21:54:26 <Slereah> And I probably should have checked what kind of formulas would end up on something with three variables
21:54:37 -!- sebbu has quit (No route to host).
21:54:37 -!- sebbu2 has changed nick to sebbu.
21:55:10 <faxathisia> Is this true?
21:55:17 <faxathisia> ``s``s`ks``s`k`s`ks``s`k`s`kkk`k``s``s`ksk`ki = ((s ((s (k s)) (k s))) ((s (k s)) (k s)))
21:55:35 <faxathisia> actually, It's obviously wrong :S
21:56:09 <Slereah> ((S((S(KS))(KS)))((S(KS))(KS)))
21:56:09 <Slereah> `k``ss`ss
21:56:09 <Slereah> Expression : `k``ss`ss
21:56:22 <Slereah> Well, that's after reduction.
21:56:29 <Slereah> So I don't know
21:56:44 <faxathisia> oh wait we got the same answer
21:56:57 <faxathisia> What does `k``ss`ss mean?
21:57:01 <faxathisia> at the end
21:57:16 <Slereah> I did it the other way around.
21:57:44 <Slereah> Lazy Bird does everything in combinators in polish notation, so it translates the input into that
21:57:50 <faxathisia> this seems to sort of work then, http://rafb.net/p/mMCqUh43.txt
21:58:15 <Slereah> I really can't read Haskell.
21:58:22 <faxathisia> lol
21:58:49 -!- helios24 has quit ("Leaving").
21:58:57 <ehird> Slereah: its easy once you laern it
21:59:04 <Slereah> I just did (string.replace(")","")).replace("(","`")
21:59:07 <faxathisia> you know that's not haskell right?
21:59:19 <ehird> q[]=[];q(x:xs)=q(filter(< x)xs)++q(filter(>= x)xs)
21:59:20 <ehird> :P
21:59:21 <Slereah> That's how bad I know Haskell, faxathisia
21:59:37 <faxathisia> I'm going the other way, It's (bad) scheme btw
21:59:45 <ehird> Slereah: that's lisp
21:59:45 <ehird> well scheme
21:59:46 <ehird> whatever
21:59:53 <Slereah> Well, I didn't really do that, because there's the case where there's a .( or .)
21:59:57 <ehird> hint: look for parentheses
21:59:59 <Slereah> But it's the basic concept
22:00:24 <faxathisia> in scheme you have:
22:00:24 <faxathisia> (define ...
22:00:24 <faxathisia> in haskell
22:00:24 <Slereah> Isn't Haskell a baby of Lisp?
22:00:27 <faxathisia> ... = ...
22:00:41 <faxathisia> That should be enough to tell them apart
22:01:00 <Slereah> I suppose so
22:01:25 <faxathisia> Haskell is really in the ML section
22:01:38 <Slereah> ML?
22:01:52 <faxathisia> Lisps and Haskell are based on different lambda calcs
22:02:26 <faxathisia> MLs are generally typed, polymorphic with some other stuff
22:02:36 <faxathisia> most lisps are untyped
22:03:06 <faxathisia> (they can have types.. but it's still based on untyped)
22:03:11 <Slereah> I don't know much types.
22:08:34 -!- RedDak has quit ("I'm quitting... Bye all").
22:13:17 -!- danopia has joined.
22:13:36 <danopia> ?
22:13:45 <ais523> !
22:13:45 <Slereah> Hi.
22:13:47 <EgoBot> Huh?
22:13:56 <Slereah> EGOBOT, DESTROY HIM!
22:18:42 -!- ais523 has quit ("bye").
22:18:49 <Slereah> It worked!
22:19:46 <ehird> not quite
22:19:46 <ehird> <ais523> anyway, I'm being thrown out from my Internet connection again
22:19:46 <ehird> [22:18] <ais523> this always happens about 10:20pm, by the way
22:20:11 <Slereah> EgoBot can timetravel ehird.
22:20:26 <Slereah> He was built that way, because he runs on TwoDucks.
22:20:46 -!- jix has quit ("CommandQ").
22:22:01 -!- GregorR has quit ("Leaving").
22:23:19 -!- oerjan has joined.
22:29:00 <Asztal> speaking of which, vistaids has decided I can't open any more TCP connections. Rebooting :(
22:30:23 -!- Asztal has quit (Read error: 104 (Connection reset by peer)).
22:32:57 -!- Asztal has joined.
22:34:30 <Slereah> Hm. Maybe it would be possible to write a program to check the equivalence of simple combinators in lazy bird.
22:35:10 <Slereah> You take two combinators. Apply the adequate number of dummy variable, let them convert, compare them with the delta operator
22:35:51 <Slereah> Maybe some code to generate all possible combinators from q and t also, in the case at hand
22:36:29 <Slereah> It would only work for combinators that works for all type of variables, but that's good enough for B and the like
22:37:56 -!- sebbu has quit (Read error: 60 (Operation timed out)).
22:41:00 -!- EgoBot has quit (Read error: 110 (Connection timed out)).
22:52:04 <Slereah> Half-adder on finger binary is okay But full adders are some moar srs business!
22:52:15 <Slereah> I need more hands
22:55:10 <Slereah> If only I was a chimp!
23:03:00 -!- sebbu has joined.
23:10:32 -!- timotiis has quit ("leaving").
23:11:21 <faxathisia> I think an algorithm like this could work
23:11:22 <faxathisia> http://pastey.net/81238
23:12:08 <faxathisia> It is non-deterministic, So in this case (I have no idea for a heuristic) it might make sense to breadth first search
23:17:27 <Slereah> What does it do exactly?
23:18:09 <faxathisia> say I wanted to make Idiot, out of Warbler & Lark
23:18:43 <Slereah> Idiot is such a mean name.
23:18:50 <faxathisia> I can start with the lambda term (λ x x), and unapply Warbler or Lark
23:18:52 <oerjan> that _does_ sound pretty idiotic already, funny words those...
23:18:55 <Slereah> You know well that he loves every bird!
23:19:00 <faxathisia> (or any composition of them)
23:19:26 <Slereah> How's the unapplying done?
23:23:01 <faxathisia> to do, (λ x x)
23:23:18 <faxathisia> I can suppose, (λ x x) = ((λ x (λ y ((x . y) . y))) . ?1)
23:23:46 <faxathisia> so all I have to do then (after alpha-beta) is solve ((?1 . x) . x) = x
23:24:46 <faxathisia> so I get the solution (λ x x) = ((λ x (λ y ((x . y) . y))) . (λ x (λ y x))) = (W . K)
23:24:57 <faxathisia> It might work? :S
23:25:05 <Slereah> I can't say!
23:27:26 -!- RockerMONO has joined.
23:27:35 <RockerMONO> hi
23:27:53 <faxathisia> Hello
23:28:19 <Slereah> ``^x^y`````tky.xr``xx``v``t0y```t`sb``tky``t0y^x^y`````tky.xr``xx``v``t0y```t`sb``tky``t0y``v0i
23:28:24 <Slereah> Fibonacci :D
23:28:31 <Slereah> Though a very slow one
23:28:44 <RockerMONO> anyone know the most verbose code for outputting 'verbose' in brainfuck? :D
23:28:58 * RockerMONO is just getting into brainfuck and feels like messing around ab it
23:29:03 <Slereah> Here's a shorter oen : ``m^x^y`````tky.xr``xx``v``t0y```t`sb``tky``t0y``v0i
23:29:17 <Slereah> RockerMONO: Define "Most verbose".
23:29:27 <Slereah> You could theorically use an infinite number of symbols!
23:29:35 <RockerMONO> Slereah: as in exteremely overly lengthy useless code =P
23:29:44 <Slereah> Like an absurd quantity of <> that would do nothing
23:29:48 <RockerMONO> hm
23:29:51 <RockerMONO> well
23:30:06 <RockerMONO> i was thinking maybe going to 0 before doing each character? :)
23:30:30 <oerjan> using only + > and . would be pretty verbose
23:30:36 <Slereah> Well, that's how you would do it if you printed it on every cell!
23:30:50 <Slereah> Like ++++....+++ > ++++.... +++ > +++....
23:31:10 <Slereah> And then, go back to 0, and print, >, print, until you're on 000 again
23:31:19 * oerjan assumes .... means ellipsis
23:31:28 <ehird> Slereah: constant folding pwns your pitiful attempts
23:31:37 <Slereah> ?
23:31:40 <ehird> actually, a good brainfuck compiler should generate programs like printf("hello world\n"); when it can
23:31:40 <ehird> :P
23:32:27 <Slereah> I can't think of a verboser way that wouldn't be just adding completely useless characters
23:33:00 <Slereah> Well, maybe you could write it in some code on the tape, and use another part of the program to decode it and print it!
23:33:22 <Slereah> Like you write it in binary, except it's actually a bunch of "0" and "1" char
23:34:13 <oerjan> do it as a COBOL program + interpreter. that _surely_ would be verbose.
23:34:51 -!- olsner has joined.
23:35:21 <olsner> so, I'm working on a sed script that translates thue into mod_rewrite rules... testing it on a brainfuck interpreter written in thue :P
23:35:42 <ehird> olsner: do you get a crapload of redirects or something?
23:35:47 <ehird> as if you stepped through it in your url bar
23:35:57 <RockerMONO> http://nonlogic.org/dump/text/1201217590.html <-- guess what that does :D
23:36:24 * RockerMONO should strip the newline characters...
23:36:50 <olsner> basically you write http://host/brainfuckProgram:000_001_010_ to execute the brainfuck program on input [0,1,2]
23:37:45 <Slereah> Idea : Write a program that will input a brainfuck interpreter in brainfuck, which will do the same, and so on.
23:37:59 <olsner> and I rewrite it to print.php?output in the end, and let print.php just print that string
23:38:56 <olsner> have a few bugs in it I think... and the sed script isn't exactly readable (regexps producing regexps ^^)
23:41:21 <Slereah> I think that's the shortest Fibo in Lazy Bird : ``m^x^y````yk.xr``xx``v`y0```t`sb`yk`y0``v0i
23:41:30 <Slereah> Unless!
23:41:36 <Slereah> I get rid of the last t.
23:42:24 <Slereah> ``m^x^y````yk.xr``xx``v`y0```yk`sb`y0``v0i
23:42:26 <Slereah> Thar
23:42:35 <olsner> oh noes, mod_rewritwe translates ? into a request with a query string... and only uses the URI part for future matching... more ugly sed hacking :S
23:42:47 <Slereah> It is painfully slow, but it does output Fibonacci!
23:43:27 <Slereah> Hm. Or does it?
23:43:32 <Slereah> I'd better check
23:43:33 <RockerMONO> http://nonlogic.org/dump/text/1201218034.html = pure evil :)
23:43:47 <ehird> olsner: you can tell it to match whole
23:45:55 <olsner> hmm... the apache manual suggests otherwise: "The Pattern will not be matched against the query string."
23:46:28 <olsner> http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewriterule under "Note: Query String"
23:49:22 <Slereah> And here it is, in combinators : ``m``s`k`s``s``s`o`kk`k.1`kr``s``s`ks``s``s`kskk`k``s``s`kv`o`k0``s``s`o`kk`k`sb`o`k0``v0i
23:49:55 -!- uvanta has joined.
23:50:27 <olsner> seems the workaround they recommend is to match URI and query string separately, with a RewriteCond %{QUERY_STRING} ... before the RewriteRule
23:51:57 <RockerMONO> http://nonlogic.org/dump/text/1201217590.html <-- Microsoft EULA translated into brainfuck *insert evil grin here*
23:52:20 <RockerMONO> that one actually works too >.>
23:52:23 * RockerMONO realized his other code died
23:52:41 <ehird> makes about as much sense
23:54:18 <RockerMONO> looking at that page in firefox may be worse than waiting for it to compile >.>
2008-01-25
00:00:27 <olsner> apache doesn't handle the case of looping rewrites very well... I don't know how to abort runaway requests in apache
00:01:24 <Slereah> ``m``b`s``c``c`tk.1r``c``bbm``s``bv`t0``s``c`tk`sb`t0``v0i
00:01:35 <Slereah> It is a lot faster for some reason!
00:05:00 <faxathisia> OK
00:05:18 <faxathisia> I run through another problem with this algorithm http://pastey.net/81239
00:05:43 <Slereah> "! Win"
00:05:45 <Slereah> Heh.
00:05:53 <faxathisia> I think it can solve any solveable problem
00:06:10 <faxathisia> But will never terminate for impossible problems
00:06:32 <Slereah> What, so you can't solve the halting problem?
00:06:36 <Slereah> You slacker!
00:06:39 <faxathisia> sorry :P
00:09:23 <Slereah> I should make a small list of lambda expressions to short combinators.
00:09:27 <Slereah> Might be useful
00:09:57 <faxathisia> I would really like a BFS prolog
00:10:06 <Slereah> Like ^a.a, ^a^b.ab, ^a^b.aa, ^a^b.bb, and so on.
00:10:10 <Slereah> BFS?
00:10:21 <faxathisia> I shall try to see if I can trick kanren into doing it for me
00:10:29 <faxathisia> breadth first search
00:10:50 <faxathisia> My algorithm would be miserable in depth first
00:17:15 <ehird> #ninjacode! the only native-code compilation, REPL-based, concatentative esolang!
00:20:21 <Slereah> Does Ninjacode flips out ALL THE TIME?
00:20:41 <ehird> Yeah
00:20:46 <ehird> Then you have to use the debugger.
00:21:54 <Slereah> Hm. My ski-bc abstractor doesn't seem to accept stuff like ^a ^b aaaaa...
00:22:06 <Slereah> There's an infinite loop apparently
00:23:14 <Slereah> Let's try by hand
00:24:17 <RodgerTheGreat> pikhq: dude, the chans declared war on scientology!
00:24:18 <RodgerTheGreat> http://video.google.com/videoplay?docid=-2547253292326096449
00:24:24 <ehird> RodgerTheGreat: old news
00:24:24 <RodgerTheGreat> GO, ANONYMOUS! GO!
00:24:36 <RodgerTheGreat> still frickin' awesome
00:24:41 <RockerMONO> hi RodgerTheGreat
00:24:52 -!- eagle-101 has joined.
00:24:55 <pikhq> RodgerTheGreat: When it hits Slashdot, it's officially old news.
00:25:03 <Slereah> I'm waiting though.
00:25:13 <Slereah> Anonymous gets easily sidetracked
00:25:19 <Slereah> Especially when it's not working too good.
00:25:25 <eagle-101> Hi, I'm looking for a version or an extension of brainfuck that can do networking, does any such version exist?
00:25:34 <RodgerTheGreat> yeah, the power of a steaming locomotive and the attention span of a gnat
00:25:40 <Slereah> Though they stuck to Hal turner for quite a long time
00:25:50 <pikhq> eagle-101: Be sure to prod Sgeo into finishing up PSOX.
00:25:58 <olsner> (Does Brainfuck over HTTP count? :P)
00:26:02 <Slereah> Well, actually, they're pretty much like a swarm of locust.
00:26:22 <eagle-101> olsner, I suppose, if it is able to keep a socket open. (or the brainfuck equivalent)
00:26:30 -!- Corun has quit (Read error: 110 (Connection timed out)).
00:26:34 <Slereah> Not the locomotive power, but they've got number power
00:28:08 <ehird> Slereah: Not in raids
00:28:15 <ehird> anonymous has never given up on a raid
00:29:59 -!- olsner has quit (Remote closed the connection).
00:31:25 -!- slereah_ has joined.
00:31:25 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
00:31:51 <slereah_> The three transformation rules for ^x.ab assume that a or b is free, but in ^a^b`aa, there's a case where nothing is
00:32:15 <slereah_> Either I say that neither means ST[]T[], or I use a fourth rule
00:33:10 -!- slereah_ has changed nick to Slereah.
00:37:13 <Slereah> Hm. It would be some combinator Xxy = ^z.xy
00:37:23 <Slereah> So... ^x^y^z.xy
00:37:56 <Slereah> Well, I think at least.
00:38:02 <oerjan> why should freeness matter? provided you do transformation innermost first
00:38:31 <Slereah> Well, it apparently matters for a transformation into skibc
00:38:40 <Slereah> Says Wikipedia, at least
00:39:15 <Slereah> It's not in Lazy Bird, but I still use that program a lot
00:39:29 <oerjan> the only thing that matters in ^x.ab is whether a or b contain x
00:39:36 <Slereah> Shorter programs are important in that turtle that is lazy bird
00:39:39 <Slereah> Lazy indeed!
00:39:55 <Slereah> Isn't that freeness?
00:39:58 <Slereah> Freedom.
00:40:09 <oerjan> freeness with respect to other bindings is irrelevant
00:40:31 <Slereah> Well, yes
00:40:35 <oerjan> so in ^a^b`aa, the fact that a contains a only matters after the ^b part
00:40:56 <Slereah> Well, at one point, you get this :
00:40:57 <oerjan> ^a^b`aa -> ^a`K`aa
00:41:18 <Slereah> T[^a.S(Ka)(Ka)]
00:41:33 <Slereah> Wait.
00:41:39 <Slereah> What am I saying.
00:41:41 <Slereah> Aaaargh
00:41:45 <Slereah> My head is confused
00:42:04 <Slereah> It is free!
00:42:18 <Slereah> That doesn't solve my problem though, why is there an infinite loop?
00:43:24 <oerjan> -> ``BK``SII, iirc
00:44:20 <Slereah> It apparently gets stuck when analysing ^b`aa
00:45:00 <oerjan> it doesn't recognise the K case properly?
00:45:34 <Slereah> Oh.
00:45:53 <Slereah> It treats everything longer than one combinator as a product
00:46:13 <oerjan> ah
00:46:32 <Slereah> I should add that special case to the product rule.
00:46:41 <Slereah> For no free variable
00:47:16 <Slereah> Although wouldn't that some ^x^y^z`xy also work?
00:47:38 <oerjan> -> ^x^y`K`xy
00:48:22 <Slereah> The idea would just be to make the expression shorter.
00:48:36 <Slereah> Although I'm not sure it would
00:48:41 <Slereah> Hm.
00:48:54 <Slereah> No, I guess not.
00:49:49 -!- sebbu has quit ("@+").
00:49:58 -!- GregorR has joined.
00:51:58 <Slereah> I get back k for ^a^b`aa
00:52:01 <Slereah> Hm
00:52:33 <Slereah> Oh, I forgot a `
00:52:48 <Slereah> ``bk``sii
00:52:49 <Slereah> There
00:54:46 <Slereah> Hm. Thinking about it now, I might have some problem if I use .[name of a variable]
00:55:06 <Slereah> Since I use a hamfisted "variable name in string" to check for freedom
01:00:39 <Slereah> Apparently it doesn't seem to be a problem!
01:01:02 <Slereah> I have that "What did that guy write" feeling again.
01:08:41 -!- immibis has joined.
01:15:45 <RockerMONO> hi
01:21:45 -!- immibis has left (?).
01:22:22 <RockerMONO> Slereah: what exactly are you workin on, by the way?
01:23:05 -!- ehird has quit ("Leaving").
01:24:07 -!- slereah_ has joined.
01:24:24 <RockerMONO> hi slereah_ i'm guessing you missed what i just said? =P
01:24:35 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
01:25:41 * RockerMONO wonders if anyone is here >.>
01:26:07 <oerjan> BRAINS...
01:26:27 <RockerMONO> hi oerjan, a zombie, i see ;)
01:27:34 <pikhq> Hello, my good Zombie. -- From the Desk of Pikhq, Minister Without Portfolio.
01:27:54 <RockerMONO> YAY ANOTHER ZOMBIE!
01:28:00 * RockerMONO pokes the zombies and wonders what they'll do
01:29:01 * pikhq wields his Rubberstamp on Oerjan
01:29:09 -!- slereah_ has quit (Remote closed the connection).
01:29:23 <RockerMONO> oh noes slereah died again :<
01:29:24 -!- slereah_ has joined.
01:29:44 <slereah_> So, what did you say!
01:29:50 <RockerMONO> hi again lol
01:30:02 <slereah_> Connexion with a halting problem.
01:30:16 <RockerMONO> and i was asking what it was you've been working on for what appears to be the whole time i've been here =P
01:30:28 <RockerMONO> :< ow
01:30:40 <RockerMONO> <random> i just sneezed so hard i fell out of my chair </random>
01:30:42 <RockerMONO> >.>
01:31:03 <slereah_> RockerMONO? More like ROCKETSNEEZE
01:31:12 <RockerMONO> haha
01:31:26 <RockerMONO> >.>
01:31:33 <oerjan> AGORA BRAINS...
01:31:34 <slereah_> (It's Lazy Bird : http://www.esolangs.org/wiki/Lazy_Bird )
01:31:35 * RockerMONO gives up on converting this brainfuck parser and starts from scratch
01:58:29 <pikhq> Brainfuck parsing is braindead-easy. . .
01:58:51 <pikhq> You have 8 tokens.
01:58:56 <pikhq> Each token is a single char.
01:58:59 <pikhq> There's your lexer.
01:59:26 <pikhq> BEGINLOOP and ENDLOOP nest.
01:59:29 <pikhq> There's your parser.
02:01:22 <RockerMONO> pikhq: i'm doing it in C++... which i'm like a 100% noob at.... fun =P
02:02:40 <pikhq> Fine. Let's make this simple. . .
02:03:58 <pikhq> switch(input_char){'+':'-':'[':']':'.':',':do_stuff;break;}
02:04:00 <pikhq> Your lexer.
02:04:19 <pikhq> Parsing and lexing Brainfuck is the easiest thing in the world.
02:04:34 <pikhq> (except perhaps dc)
02:05:14 <oerjan> a _separate_ lexer? for _brainfuck_?
02:05:28 <pikhq> oerjan: Fine, it's stupid.
02:05:55 <pikhq> But the point is, Brainfuck is so damned syntactically simple that you don't need to work hard to parse it.
02:06:34 <pikhq> When you've got 8 single-char tokens to deal with, there's not all that much to parse.
02:08:44 <RockerMONO> pikhq: the layout of the parser is simple, the base of it is simple, getting all of the characters handled separately is simple.... knowing how brainfuck is parsed in terms of how the data's manipulated... not so much =\
02:37:42 -!- immibis has joined.
04:06:24 -!- calamari has joined.
04:08:21 -!- uvanta has quit ("blame!").
04:19:18 -!- eagle-101 has quit (Read error: 104 (Connection reset by peer)).
04:19:41 -!- eagle-101 has joined.
04:22:54 -!- immibis 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. It's a dud! It's a dud! It's a du..).
04:29:54 <pikhq> oerjan: Are you aware of any FRC round which removed all fantasy rules?
04:31:46 <oerjan> i don't remember that, but i think there was one with a temporary ordinance to allow repeals
04:32:16 <oerjan> this is very vague though
04:33:31 <pikhq> FRC round 256, former rule 1 (submission 23): Repeal all fantasy rules. This rule repeals itself.
04:33:48 <pikhq> Netted me 0.5 style points.
04:34:56 <oerjan> is this in the last days?
04:35:30 * oerjan hasn't looked at frc for so long he didn't even know if it was still alive
04:35:40 <pikhq> That was a few days ago.
04:35:46 <oerjan> yay!
04:36:11 <pikhq> It recently got a fairly big kick in participation, when the Fantasy Rules Contest of Agora was created, awarding participation in the Commission.
04:36:37 <oerjan> "Committee"
04:36:42 <pikhq> Sorry.
04:36:54 <pikhq> I always think Commission when it's a Committee.
04:37:08 * pikhq is also proud of the second submission of FRC 256. . .
04:37:56 <pikhq> "Each fantasy rule submitted after this one must consist of rules that are known to have been reasonable in other, long-term, online Nomic games. A source for the rule must be given in the submission of the rule."
05:43:27 <RodgerTheGreat> pikhq: you know you need to then leverage that to work in a spicerack
05:52:31 * pikhq shall stick a Spicerack on the board
05:52:36 <pikhq> (that fantasy rule was repealed)
06:08:02 -!- calamari has quit ("Leaving").
06:28:16 -!- oerjan has quit ("leaving").
06:33:11 <bsmntbombdood> heh
06:33:30 <bsmntbombdood> oklopol was talking about dimmu borgir, and i was making fun of him for it
06:33:39 <bsmntbombdood> but then i listened to some and now i really like them :P
07:26:00 <oklopol> mwahahaha :)
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:35:50 -!- eagle-101 has quit (Read error: 110 (Connection timed out)).
09:07:03 -!- EgoBot has joined.
10:58:46 -!- helios24 has joined.
11:04:21 -!- faxathisia has quit ("If there are any aliens, time travellers or espers here, come join me!").
11:18:15 -!- [o_O] has joined.
11:27:51 -!- danopia has quit (Read error: 101 (Network is unreachable)).
11:38:53 -!- [o_O] has changed nick to danopia.
12:30:06 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
12:31:53 -!- slereah_ has joined.
13:14:58 <slereah_> ````s``bb``bs``cc`.0i``s``bs``b`bs``c``bc``b`bc``c``bbbi`.1i``s``bs``b`bs``c``bc``b`bc``c``bbb``sbi`.2i``s``bs``b`bs``c``bc``b`bc``c``bbb``sb``sb``cbi`.3i``s``bs``b`bs``c``bc``b`bc``c``bbb``sb``sb``sbi`.4i``s``bs``b`bs``c``bc``b`bc``c``bbb``sb``sb``sb``sbi`.5i``s``bs``b`bs``c``bc``b`bc``c``bbb``sb``sb``sb``sb``sb``cbi`.6i``s``bs``b`bs``c``bc``b`bc``c``bbb``sb``sb``sb``sb``sb``sbi`.7i``c``bc``b`bc``c``bc``b`bc``c``bbb``sb``s
13:14:58 <slereah_> b``sb``sb``sb``sb``sbi`.8i`.9i``c`t`k0k``c``bc``b`bc``c``bc``b`bb``cb``b`bttki
13:15:08 <slereah_> Finally some Church-to-char!
13:15:12 <slereah_> Maybe now 99!
13:39:36 -!- slereah_ has quit (Remote closed the connection).
13:40:45 -!- MommeMC has joined.
13:42:10 -!- jix has joined.
13:45:18 -!- Corun has joined.
14:10:30 -!- faxathisia has joined.
14:12:57 -!- Slereah has joined.
14:13:13 <faxathisia> Hi Slereah
14:14:04 <faxathisia> I worked so hard to code that idea I had but it doesn't work -_-
14:16:20 <Slereah> I'll try cooking something up
14:17:47 <Slereah> Hm. The problem would be evaluating the expression before applying it to the delta operator
14:18:03 <Slereah> Otherwise, I'd have to solve the halting problem
14:18:05 <faxathisia> ...delta :O
14:18:20 <Slereah> Delta.
14:18:26 <faxathisia> that makes we realize.. I did alpha and beta
14:18:32 <faxathisia> not eta :S
14:18:34 <Slereah> [delta x] x -> True
14:18:40 <Slereah> [delta x] y -> False
14:19:39 <Slereah> 't'was used in "System of logic based on ordinals" by Turing and I thought it might come in handy.
14:20:03 <Slereah> Though Turing's version was 1 and 2 instead of true and false
14:37:27 <Slereah> `^v^w^x^y^z``wz``&xy```w`vz``&`xa`ya`.bi``c``bc``b`bc``c``bc``b`bb``cb``b`bttki
14:37:34 <Slereah> Damn thing won't eliminate correctly
14:37:36 <Slereah> Yarrr
14:37:40 <faxathisia> :(
14:37:58 <faxathisia> I'm going to try again tommorow
14:38:25 <Slereah> There's x's and y's remaining in the output
14:39:01 <Slereah> I think I misplaced some `
14:41:23 <Slereah> Well, it parses. But doesn't work even for only one operator
14:41:36 <Slereah> It tries to compare s with `is
14:41:53 <faxathisia> my solver worked for really easy problems
14:41:57 <Slereah> And since delta only works to an alpha conversion, no dice
14:42:46 <Slereah> Got to find a way to evaluate everything first.
14:43:18 <Slereah> And that & never has more than one ` before it until it is evaluated
14:43:53 -!- Hiato has joined.
14:44:25 <Hiato> Hello all, I am back (with a vengeance :P )
14:44:40 <Slereah> But do you also DIE HARD with it?
14:44:54 <Hiato> heh, lol, hopefully not
14:45:40 <Slereah> We're trying to solve the halting problem!
14:45:47 <Slereah> But, you know, only little ones.
14:46:09 -!- Corun has quit ("This computer has gone to sleep").
14:46:22 <Hiato> The reason that I was away for soooo long was this: I broke and dislocated my fifth finger on my right hand at cricket practise a while ago and thus was unable to type. As a sign that I still existed, I uploaded the ACRONYM spec, which oerjan so kindly fixed. But now, my finger is getting better and the pin should come out in about a month, so I am back :P
14:46:36 <Hiato> Heh, lol, can I help?
14:46:41 <faxathisia> oww
14:46:48 <Hiato> indeed
14:47:01 <Slereah> We're trying to devise a program to check if two lambda expressions (or combinators) can convert to each other
14:47:21 * faxathisia wrote loads of code, then ran it to discover.. It didn't work
14:47:22 <Slereah> For some class of expressions at least, since the general problem is undecidable
14:47:42 <Hiato> hrmm.. I must say: I have no idea how Lambda Calculus/Unlambada/Mocking Bird works....
14:47:59 <faxathisia> I imagine it's possible to terminate for every one with a solution
14:48:14 <Slereah> Hiato: It's not that hard.
14:48:22 <Slereah> Though it is unwieldy.
14:48:27 <faxathisia> but not terminate for all (or at least some) of the unsolveables
14:48:35 <faxathisia> (It *is* that hard! :P)
14:48:51 <Hiato> heh, for my benefit, I'll listen to Slereah
14:48:54 <Hiato> :P
14:49:12 <Slereah> Well, when mixing lambda with combinators, I can really just use it as function-calling.
14:49:16 <Hiato> Should I start at unlambada? Or somewhere else
14:49:41 <Slereah> I use every variable of a lambda expression as a function, that way it's easier.
14:50:00 <Hiato> ok
14:50:11 <Slereah> And since the program will translate it into pure combinators, I can then pretend to be awesome by posting it!
14:50:52 <Hiato> :)
14:50:59 -!- ehird has joined.
14:51:26 <Slereah> The biggest problem seems to be evaluation.
14:51:47 <Slereah> I can see why there's a d in unlambda.
14:52:12 <Slereah> Only one mode of evaluation can pose problems.
14:52:49 -!- ehird has set topic: TOPIC NOSTALGIA! (topic from 9999/12/31) And AC said, "LET THERE BE LIGHT!" And there was light-- TOPIC NOSTALGIA! (topic from 0001/01/01).
14:53:16 <ehird> ^ proof that the universe uses finite, wrap-around integers ^
14:53:39 <Hiato> heh :)
14:53:53 -!- puzzlet has quit (Remote closed the connection).
14:54:01 -!- puzzlet has joined.
14:54:15 -!- eagle-101 has joined.
14:55:11 <ehird> (also, i win for referencing a previous topic, quoting isaac asimov, and applying computational things to the universe -- IN ONE TOPIC)
14:55:59 * Hiato is impressed, with all that multi-tasking ability, ehird` might just be a CPU -- or a women
14:56:04 <Hiato> just pulling your leg
14:56:06 <Slereah> You are false data, and therefor I shall ignore you
14:56:07 <Hiato> :P
14:56:19 <ehird> I don't think anybody is a women. It's hard to be more than one thing.
14:56:28 <Hiato> lol :D
14:56:32 <faxathisia> Here is a great deal of rubbish http://mishu.eu.org/paste/view.php?id=7012
14:57:16 <ehird> Error from `bin/source-highlight --src-lang cpp --out-format xhtml`
14:57:16 <ehird> bin/source-highlight: error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory
14:57:17 <Hiato> faxathisia: say wha...
14:57:20 <ehird> lol lol lol lol lol lol
14:57:22 <ehird> :)
14:57:30 <ehird> Remidns me that I need to write that pastebin... sometime...
14:57:36 <ehird> After I write my web framework in Haskell, of course!
14:57:49 <faxathisia> Hiato.. that was supposed to solve all my problems :(
14:58:00 <Hiato> naturally, is that before or after world domination, ehird
14:58:07 <ehird> before
14:58:15 <Hiato> aha, thanks
14:58:20 <ehird> world domination will involve spreading the word through my webmonad-powered site
14:58:38 <ehird> yes, webmonad. i'm tired of all these m'fn window managers on this m'fn language
14:58:39 <Hiato> ooh, well tried though faxathisia, but I can say that it is far to short to solve any problems let alone all :P
14:59:04 <Hiato> heh, sure, I'm not gonna get in your way :P
14:59:52 <Hiato> well, considering that there is a window manager written in *HASKELL*, perhaps it would not do you harm to use it :P
15:00:10 <ehird> the wm is called xmonad
15:00:16 <ehird> why do you think i'm calling my WF webmonad :)
15:00:32 <Hiato> aha, woops ... erm.. tralalalalala
15:00:55 <Hiato> just pretend that I was remote exploited there, and it was actually someone else...
15:00:58 <Hiato> :P
15:02:05 -!- Corun has joined.
15:02:08 <ehird> faxathisia: You use Haskell don't you? COMMENT ON WEBMONAD'S AWESOMENESS :P
15:02:36 <Hiato> Haskell offers you: Substantially increased programmer productivity (Ericsson measured an improvement factor of between 9 and 25 using Erlang, a functional programming language similar to Haskell, in one set of experiments on telephony software). Shorter, clearer, and more maintainable code. Fewer errors, higher reliability. A smaller "semantic gap" between the programmer and the language. Shorter lead times.
15:02:36 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
15:02:36 <Hiato> from http://www.haskell.org/haskellwiki/Introduction
15:02:57 <ehird> Hiato: yes, that's haskell
15:03:06 <faxathisia> I'm far too depressed to be enthusiastic in even the most monadic web framework
15:03:08 <Hiato> Great :)
15:03:15 <ehird> fact n = product [1..n] -- obligitary factorial example ;)
15:03:18 <ehird> faxathisia: :(
15:03:20 -!- Slereah has joined.
15:04:03 <Slereah> >:|
15:04:37 <ehird> Hiato: this produces an *infinite* list of all the fibonacci numbers:
15:04:38 <ehird> fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
15:05:02 <ehird> and yes -- this actually terminates. You can do (fibs !! 5) to get the 5th fibonacci number (!! is the list index, like list[i] in other languages)
15:05:06 <Hiato> wicked :), but seeing as it is functional, that doesn't actually matter right
15:05:21 <ehird> Hiato: you can actually type 'fibs' into the prompt and see all the fibs go by
15:05:27 <Hiato> w00t
15:05:34 <ehird> the 0 : 1 : stuff is like Lisp lists, [1,2,3] is actually 1:(2:(3:[]))
15:05:39 <ehird> i.e., a linked list
15:06:09 <ehird> "zipWith func lst1 lst2" where lst1=[1,2,3] and lst2=[2,3,4] is [3,5,7]
15:06:42 <ehird> so: since we take the fibonacci numbers as the first argument, and the fibonacci numbers sans the first
15:07:01 <Hiato> ehird: I'm having trouble with GHC (...) ie: when I enter either of the fib = declaration, it moans about "parse error on input"
15:07:03 <ehird> that gets you the fibonacci numbers, i.e. (fibs !! i) = (fibs !! (i - 1)) + (fibs !! (i - 2))
15:07:16 <ehird> Hiato: ghc executes all its input in a "do" statement
15:07:17 <Hiato> cool, that is soo simple
15:07:18 -!- MommeMC has quit (Read error: 113 (No route to host)).
15:07:21 <ehird> you need:
15:07:23 <ehird> let fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
15:07:31 <ehird> just add 'let' to the start.
15:07:37 <Hiato> aha, cool, thanks :)
15:08:10 <Hiato> I'm gonna try it with a foldr and see where I can get to :)
15:08:24 <ehird> SPOILER:
15:08:28 <ehird> it'll run forever. :)
15:08:33 <Hiato> true
15:08:42 <Hiato> but I would like to be able to produce that :)
15:08:47 <ehird> so will (length fibs), aww ;)
15:09:11 <ehird> haskells laziness takes some getting used to
15:09:19 <ehird> i.e. 0-argument functions can just be normal variables, because of laziness
15:09:37 -!- slereah_ has joined.
15:09:51 <Hiato> nice :)
15:10:32 <ehird> Hiato: now you have to go and figure out monads
15:10:33 <ehird> have fun
15:11:16 <Hiato> sure, I will try, but first I want to crack the foldr conundrum (I am correct in using foldr, right?)
15:11:30 <ehird> not with fibs, no
15:11:32 <ehird> use foldl
15:11:37 <ehird> foldr goes to the right first
15:11:41 <ehird> ergo: it goes to the END of fibs
15:11:42 <Hiato> oh yeah
15:11:46 <ehird> that will, uh, never work ;)
15:11:47 <Hiato> I reember
15:11:52 <Hiato> thanks ehird :D
15:11:58 <ehird> HOWEVER
15:12:01 <ehird> foldl won't terminate either
15:12:10 <ehird> on account of having to do the operation over, um, every element.
15:12:30 <ehird> There's no way to give a 'partly-evaluated' fold.
15:12:30 <ehird> 'map' works though
15:12:30 <Hiato> yeah, I get I :P
15:12:30 -!- Slereah has quit (Success).
15:12:56 <ehird> Prelude> map (mod 13) (tail fibs)
15:12:56 <ehird> [0,0,1,1,3,5,0,13,13,13,13,...
15:14:33 <Hiato> let fibs = foldl (+) 0 [0,1,fibs]
15:14:34 <Hiato> ?
15:14:39 <Hiato> I can't actually check :P
15:14:59 <ehird> why would that work? by the way
15:15:01 <ehird> the [0,1,fibs]
15:15:06 <ehird> the fibs doesnt' refer to the fibonaccis you defined before
15:15:10 <ehird> but THE THING YOU ARE DEFINING ITSELF
15:15:20 <ehird> so you have: [0,1,foldl (+) 0 [0,1,fold ..
15:15:32 <ehird> and, ofc, this makes no sense
15:15:41 <Hiato> ahh, but surely you get [0,1,0,1,0,1 etc... when you add you get [0,1,1,2 etc]
15:15:49 <Hiato> yes, I see
15:15:52 <ehird> you want:
15:15:53 <Hiato> thanks
15:15:54 <ehird> 0 : 1 : fibs
15:16:00 <ehird> also, foldl doesn't do what you think it does
15:16:09 <Hiato> really?
15:16:13 <ehird> think of fold* as something replacing the cons operation
15:16:16 <ehird> if you have [1,2,3]
15:16:17 <ehird> you have:
15:16:21 <ehird> 1 : 2 : 3 : []
15:16:24 <Hiato> oh, I see
15:16:27 <Hiato> so you need a map
15:16:28 <ehird> foldl replaces [] with its second argument
15:16:31 <ehird> and the cons with its first
15:16:32 <ehird> so you get
15:16:34 <ehird> 1 + 2 + 3 + 0
15:16:36 <ehird> -> 4
15:16:40 -!- ais523 has joined.
15:16:45 <ehird> foldr is the same but it's the other associative
15:16:48 <ehird> hey ais523
15:16:54 <Hiato> yes, so you need a map, so map foldl etc
15:16:54 <ais523> hello
15:16:57 <Hiato> hello
15:19:54 <Hiato> let fib = [0,1]
15:19:55 <Hiato> map (foldl (+) 0 fib) (tail fib)
15:20:08 <Hiato> in a pseudo-code kind of way?
15:20:28 * faxathisia prefers, map fst $ iterate () $ (0,1)
15:20:29 <ehird> <interactive>:1:5:
15:20:30 <ehird> Couldn't match expected type `a -> b'
15:20:30 <ehird> against inferred type `Integer'
15:20:30 <ehird> In the first argument of `map', namely `(foldl (+) 0 fib)'
15:20:30 <ehird> In the expression: map (foldl (+) 0 fib) (tail fib)
15:20:30 <ehird> In the definition of `it': it = map (foldl (+) 0 fib) (tail fib)
15:20:40 <Hiato> (5:20:48 PM) Hiato: in a pseudo-code kind of way? :P
15:20:41 * faxathisia prefers, map fst $ iterate (\(x,y)->(y,x+y)) $ (0,1)
15:20:45 <ehird> faxathisia: 0 : 1 : zipWith (+) fibs (tail fibs)
15:21:01 <Hiato> ehird: but concept wise, is that correct?
15:21:02 <ehird> Hiato: Well, obviously not. The first argument to map needs to be a function
15:21:10 <faxathisia> ehird, Yes?
15:21:14 <Hiato> oh, I see
15:21:16 -!- puzzlet has quit (Remote closed the connection).
15:21:18 <ehird> Hiato: I think your terminology is a bit wrong
15:21:24 -!- puzzlet has joined.
15:21:25 <Hiato> probably
15:21:32 <ehird> Hiato: Maybe reading a tutorial (or GHC's Prelude docs) would help a bit :)
15:21:39 <faxathisia> map fst $ iterate (\(x,y)->(y,x+y)) $ (0,1) -- also fibs
15:21:53 <Hiato> but for each in fib do fib[current+1]=foldl (+) 0 fib
15:21:58 <Hiato> yes, agrred
15:22:00 <Hiato> *agreed
15:22:23 <Hiato> I will be the first to admit, I know nearly nothing about Haskell
15:23:13 <faxathisia> Actually, Slereah might have said that first :P
15:23:23 <Hiato> lol :)
15:23:25 <faxathisia> (In regards to scheme)
15:25:24 <ehird> Hiato: You can't code that in haskell. Laziness would trip you up
15:25:43 <ehird> fibs always means 'the WHOLE list'
15:25:55 <Hiato> yes, understood :)
15:26:56 <Hiato> I'll dig around and see what I can do :) Thanks ehird, you have been a big help (believe it or not :P )
15:27:32 <ehird> :P
15:27:34 <ehird> np
15:27:41 -!- ehird has quit ("Leaving").
15:28:24 -!- ehird has joined.
15:29:45 <slereah_> faxathisia: I'm cooking up something.
15:30:21 <slereah_> It's a program that will simply generate all possible combinations of combinators and pass them through LB
15:30:41 <slereah_> And then try to see if they correspond to the original expression.
15:30:50 <Hiato> wicked
15:31:09 <Hiato> but slereah: won't that get very big very quickly (Factorial possibilities)
15:31:31 * Hiato knows slereah wasn't talking to me for a reason... :P but felt he had to say something
15:31:59 <slereah_> BRUTE FORCE BITCH
15:32:26 <slereah_> Also, since it was for faxathisia's riddle-solving for "To mock a mockingbird", the answer can't be that big.
15:32:26 <Hiato> heh, I guess I should just then Brute Force my Rijandael encrpyted notes then :P
15:33:22 <faxathisia> I tried that method
15:33:29 <slereah_> What was the problem?
15:33:41 <faxathisia> used the wrong equality check on lambda terms though
15:34:27 <slereah_> What you used?
15:35:10 <faxathisia> I was checking terms in STLC intead of untyped for some reason :S
15:35:34 <faxathisia> I just coded it between class to pass time
15:51:17 <slereah_> faxathisia!
15:51:17 <slereah_> I think I got something!
15:51:40 <faxathisia> cool
15:52:32 <slereah_> http://membres.lycos.fr/bewulf/Russell/Lazy%20Bird/Compare
15:53:32 <slereah_> Also work with the b and {q,t}!
15:54:40 <faxathisia> how did you do that so fast @_@
15:54:57 <faxathisia> that's awesome
15:55:37 <slereah_> Although I should hide the inner workings.
15:55:59 <slereah_> Give me an expression to compose from soemthing else to check
15:56:49 <slereah_> (The program is just take the datas, generate all strings, try them in lazy bird with dummy variables)
15:57:10 <slereah_> As such, it can only check combinators that works on all combinators.
15:57:18 <slereah_> s, k, b, m and so on are okay.
15:57:36 <slereah_> Pred won't work, 'cause it doesn't simply rearrange them
15:59:32 <Hiato> ok, ehird: this might be right, but I have no way of telling, what do you think?
15:59:33 <Hiato> let fib = [1,0]
15:59:33 <Hiato> let fib = (foldl (+) 0 fib) : fib
15:59:35 -!- oerjan has joined.
15:59:40 <slereah_> slereah@Vixem:~/Esolang$ python Generate.py
15:59:40 <slereah_> Expression to compare :t
15:59:40 <slereah_> Number of argument :2
15:59:40 <slereah_> Set of combinators to compose from (separated by ,) :c,i
15:59:40 <slereah_> `ci converts to t
15:59:43 <slereah_> Yay
15:59:46 <ehird> Hiato: let fib = (foldl (+) 0 fib) : fib -- nonsensical self reference
16:00:10 <ehird> Hiato: You CANNOT resassign a variable in Haskell. They are constant. Referring to a variable in a later binding of it completely forgets about that old one. You have no access to [1,0] from your previous fib.
16:00:19 <ehird> There is no state in Haskell.
16:00:49 <Hiato> well, running it once functions, sort of:
16:00:49 <Hiato> Prelude> let fib = [1,0]
16:00:49 <Hiato> Prelude> (foldl (+) 0 fib) : fib
16:00:49 <Hiato> [1,1,0]
16:00:55 <oerjan> um, you are perfectly allowed to do circular definitions, though
16:01:10 <oerjan> but that particular equation won't work
16:01:30 <Hiato> hrmm... yes, I see your point ehird
16:01:45 <ehird> oerjan: yes of course
16:01:48 <Hiato> and this won't work anyway as it will add all the numbers, not just the previous too
16:02:16 <Hiato> *two
16:02:24 <oerjan> actually adding all the previous numbers does work if you do it right - there is a haskell fibonacci golf based on it
16:02:58 <Hiato> hrmm... worth considering, oh well, anywho, I will plough on, and hopefulyl come up with a functioning solution - functionally
16:03:20 <oerjan> hm, i think you need to add one extra 1
16:03:35 <Hiato> yes,it appears so
16:03:36 <oerjan> 1+1+1+2+3+5 = 13
16:03:39 <Hiato> I was just about to say :P
16:04:11 <Hiato> add only to the numbers > 2
16:04:28 <Hiato> nevermind
16:04:41 <slereah_> faxathisia: http://membres.lycos.fr/bewulf/Russell/Lazy%20Bird/Generate.py
16:04:48 <slereah_> Beware of infinite loops!
16:05:47 <Hiato> which is the best Haskell tutorial (assuming no Functional programming experience)? There are too many... http://www.haskell.org/haskellwiki/Tutorials
16:06:21 -!- calamari has joined.
16:08:12 -!- timotiis has joined.
16:08:31 <ehird> Hiato: assuming no functional programming experience is. Kind of hard.
16:08:37 <ehird> But you can get by with MINIMAL.
16:08:52 * ais523 advises you to learn a different functional language first
16:08:53 <ehird> http://darcs.haskell.org/yaht/yaht.pdf Yet Another Haskell Tutorial is generally considered to be the best
16:08:59 <ehird> I've seen http://en.wikibooks.org/wiki/Haskell
16:09:02 <ehird> be reccomended too
16:09:03 <oerjan> there is a "best places to start" section, and later a "Haskell Tutorial for C Programmers"
16:09:14 <ehird> Some like http://halogen.note.amherst.edu/~jdtang/scheme_in_48/tutorial/overview.html, but I think it skims too many things
16:09:17 <ehird> ais523: I don't
16:09:28 <ehird> Scheme, for example, might give you very incorrect perceptions of haskell
16:09:35 <ais523> good point
16:09:42 <faxathisia> Why would it?
16:09:42 <ais523> but it's probably worth getting the concept first
16:09:54 <faxathisia> They're clearly differeng
16:09:58 <ais523> I was going to suggest learning something like functional-style JavaScript just to get into the mood
16:11:42 <Hiato> hrmm... well thanks for all of this info, ehird, ais523
16:11:45 <Hiato> and faxathisia
16:11:58 <oerjan> Hiato: and don't forget the #haskell channel
16:12:18 <ehird> yes!! #haskell
16:12:22 <ehird> and /query lambdabot
16:12:24 <Hiato> cool
16:12:49 <Hiato> thanks :D, well I'm gonna eat some lunch/supper now
16:12:52 <Hiato> and then brb
16:12:53 <Hiato> :)
16:13:08 <slereah_> 'kay.
16:13:27 <oerjan> it's the friendliest (specific) programming language irc channel in existence! or so they tell me because i haven't tried any others :)
16:14:10 <slereah_> Aren't we a programming language IRC channel?
16:14:33 <oerjan> that's why i added (specific) at the last lookover ;)
16:14:55 <slereah_> What of #IRP!
16:15:41 -!- faxathisia has quit ("If there are any aliens, time travellers or espers here, come join me!").
16:16:59 -!- jix has quit ("CommandQ").
16:18:22 -!- Tritonio_ has joined.
16:21:37 -!- jix has joined.
16:21:37 -!- Tritonio__ has quit (No route to host).
16:38:27 -!- sebbu has joined.
16:38:27 -!- Corun has quit (Read error: 110 (Connection timed out)).
16:39:35 -!- calamari has quit ("Leaving").
16:41:33 -!- Corun has joined.
16:44:23 -!- ais523 has quit ("moving to a different Internet connection, I'll be back soon").
16:47:20 -!- Hiato has quit (Read error: 110 (Connection timed out)).
16:47:53 <oerjan> slereah_: are you aware of the Church-Rosser theorem? basically as a consequence, if a lambda expression is normalizable then its normal form is unique
16:48:54 <oerjan> so for such expressions simply lazily evaluating them (possibly with eta-reduction too) will show if they are equal
16:48:55 <ehird> The Church-Rosser Theorem would be a good name for something
16:48:57 <ehird> an album, maybe
16:53:28 -!- Slereah has joined.
16:56:51 -!- ais523 has joined.
16:56:57 <ehird> hello ais523
16:57:02 <ehird> (I should just add that on auto)
16:57:09 <ais523> hello
17:02:21 -!- slereah_ has quit (Read error: 110 (Connection timed out)).
17:29:44 -!- Corun has quit ("This computer has gone to sleep").
18:22:37 -!- Hiato has joined.
18:23:12 * Hiato curses the "Load Shedding" policy eskom, the national electricity board, has acquired....
18:23:32 * ais523 askes Hiato for more details
18:24:29 <Hiato> Load Shedding, or enforced power cuts as they have come to be known in SA, is the brainchild of the (brainless) national electricity borad
18:24:48 <Hiato> they cut off specific areas' power supply to let other areas have some
18:25:02 <Hiato> so, essentially what happens is:
18:25:59 <Hiato> the schedule on their site is never correct, and they say that you should never have more than two power cuts during one given day. However, most times we have ~3 cuts, lasting about 4 hours each -- well beyond the "official" limit of 2 hours
18:26:04 <ais523> sounds awful
18:26:32 <Hiato> then, if you phone them to check what is wrong with the schedule, they tell you to check the website.... trivial, if you had power....
18:26:35 <Hiato> indeed, it is
18:26:55 <oerjan> o_O
18:27:04 <ais523> a laptop with a dial-up modem would mitigate that to some extent
18:27:13 <ais523> although obviously is nowhere near as good as the perfect situation
18:27:26 <Hiato> yes, but then again, we do have the highest telephone rates in the WORLD....
18:27:53 <Hiato> and, only one service provider, who have total market domination and thus charge whatever they feel like
18:28:05 <Hiato> but yes, fair enough
18:28:07 <ais523> which country do you live in?
18:28:17 <Hiato> South Africa
18:28:37 <Hiato> the supposed host of the 2010 games... though we have yet to start construction on a single power plant
18:28:38 <Slereah> Can't you use SOLAR POWER?
18:29:46 <Hiato> yes, that would be fine Slereah, but what happens at night? :P Co-incidentally, in a completely unrelated incident, Eskom bought up thousands of shares in all generator manufacturers and battery re-salers...
18:30:09 <Slereah> Hiato: That's why a solar powered system use batteries.
18:30:19 <Hiato> and guess what, Eksom bosses were all recently paid bonuses well in excess of what the GDP of SA is... O_o
18:30:34 <Slereah> And that the panel's surface is dimensioned especially to such parameters
18:31:22 <Hiato> yes, but the fact is that no-matter what you do (oh, and the Rand is about 14 to 1 against the pound, nothing is feasible here) or what you buy, Eskom wins.... :(
18:31:47 <Slereah> Fucking eskimos
18:31:51 <Slereah> Always stealing our power!
18:32:18 <Hiato> indeed... Oh, and while there is not enough power to power SA alone, we still sell power to Namibia and Botswana....
18:33:09 <Hiato> but hey, that is barely the surface, and this is not "#Tell_the_truth_about_South_Africa"
18:33:14 <Hiato> so, I'll stop now ;)
18:34:11 -!- MommeMC has joined.
18:42:07 -!- RedDak has joined.
18:43:41 -!- Asztal has quit (Read error: 110 (Connection timed out)).
18:45:38 -!- ais523 has quit ("bye").
18:51:06 <Slereah> Either the u combinator is real hard to check, or my combinator-matcher is stuck in a loop
18:52:37 <oerjan> http://www.style.org/unladenswallow/
18:52:47 <oerjan> u?
18:53:01 -!- RedDak has quit (Remote closed the connection).
18:53:25 -!- Asztal has joined.
18:53:37 <Slereah> Turing combinator
18:53:48 <Slereah> ^x^y`y``xxy
18:54:17 <oerjan> did you see my comment on church-rosser?
18:54:36 <Slereah> I don't think so.
18:54:53 <ehird> Typing question
18:55:01 <Slereah> and I also think that some random combination of combinators will indeed eventually end up on an infinite loop.
18:55:08 <ehird> You know how in lisp lists you can do #1=(THIS LIST: #1# FOO)?
18:55:18 <Slereah> I should probably have some number of steps limit.
18:55:22 <ehird> A typing system that can do that, could represent the Y combinator as:
18:55:35 <ehird> #1=(#1 -> a) -> a
18:55:41 <ehird> Or even just
18:55:46 <ehird> #1=(#1 -> a)
18:55:54 <ehird> Now, is this viable for use or is it halting-problem suffering or something
18:57:12 <oerjan> i think it is useable
18:57:43 <ehird> of course with a nicer syntax
18:57:46 <oerjan> in fact ocaml has a flag --rectypes (iirc) that allows it
18:57:56 <ehird> Y :: a = a -> b
18:57:57 <ehird> (I think)
18:58:18 <ehird> Or is it
18:58:34 <ehird> No
18:58:36 <ehird> I think that is it
18:59:41 -!- helios24 has quit ("Leaving").
19:00:04 <ehird> Y :: a = a -> b
19:00:04 <ehird> = f -> (x -> f (x x)) (x -> f (x x))
19:00:11 <ehird> should type correctly
19:00:17 -!- timotiis_ has joined.
19:01:46 <ehird> oerjan: what is a = b = a -> b?
19:01:46 <ehird> :P
19:02:24 <oerjan> same as a = a -> a
19:02:34 <ehird> hm
19:02:35 <ehird> oh yeah
19:02:49 <ehird> a = (b = a -> b) -> b
19:02:52 <ehird> WHAT ABOUT THAT :P
19:02:58 <ehird> wait
19:03:01 <ehird> that's also a = a -> a
19:03:02 <ehird> XD
19:03:19 <oerjan> er, is it
19:03:23 <ehird> i think so
19:03:27 <Slereah> What is the meaning of all this!
19:03:33 <ehird> Slereah: types
19:03:49 <Slereah> Any good source on the subject?
19:04:14 <ehird> ghc's error messages
19:04:17 <ehird> mwahahahahahahaha!
19:04:29 <oerjan> everyone in #haskell keeps recommending TAPL, which is apparently a fairly expensive paper book
19:04:34 <ehird> oerjan: I wish I could do: type WTF = WTF -> WTF
19:04:47 <ehird> wait no
19:04:48 <ehird> type WTF a = WTF a -> WTF a
19:04:49 <oerjan> ehird: you can in ocaml with that flag i think
19:04:52 <ehird> then you could do
19:05:05 <ehird> omg :: WTF a
19:05:11 <oerjan> in haskell you need a newtype instead
19:05:11 <ehird> omg (WTF a) = WTF a
19:05:27 <ehird> oerjan: can't newtype a function
19:05:27 <ehird> <3
19:05:48 <oerjan> newtype WTF a = WTF (WTF a -> WTF a)
19:06:11 <ehird> WTF :: (WTF a -> WTF a) -> WTF a
19:06:13 <ehird> that seems wrong
19:06:15 <ehird> (:t)
19:06:50 <oerjan> that's right
19:07:04 <ehird> oerjan: Cool, a function of type "WTF anything" cannot be realised.
19:07:09 <ehird> ... NOT COOL.
19:07:34 <ehird> Well
19:07:35 <ehird> omg :: WTF omg
19:07:36 <oerjan> it's not very useful in haskell
19:07:43 <oerjan> you need at least some monad wrappin
19:07:45 <oerjan> *g
19:07:56 <ehird> if only you could reference your own function inside a type definition, that would work right, oerjan ?
19:07:58 <ehird> sorry for the space before punctuation - xchat
19:08:35 <oerjan> WTF id is a legal value of that type though
19:09:05 <ehird> oerjan: You can't do much with it though.
19:09:09 <oerjan> you can do any combinator that way
19:09:10 <ehird> oerjan: But:
19:09:15 <ehird> foo = WTF foo
19:09:17 <ehird> should be valid
19:09:18 <ehird> no?
19:09:20 <ehird> well
19:09:21 <ehird> no
19:09:27 <ehird> foo :: WTF <some way of referencing foo>
19:09:35 <ehird> dunno what foo's body would be, but hey
19:09:41 <oerjan> foo x = WTF foo
19:09:59 <ehird> foo :: WTF a -> WTF a
19:10:05 <ehird> which actually is "WTF a"
19:10:10 <ehird> but it prints it as "WTF a -> WTF a"
19:10:12 <ehird> for some bizzare reason
19:10:38 <ehird> oerjan: Also, there is no argument you can pass to foo. Fun!
19:11:14 -!- timotiis has quit (Read error: 113 (No route to host)).
19:11:35 <oerjan> er no
19:11:59 <oerjan> WTF a -> WTF a is not the same as WTF a with that newtype
19:12:06 <ehird> ah
19:12:08 <ehird> well that sucks
19:12:09 <ehird> :)
19:12:27 <oerjan> it requires a good deal of wrapping
19:12:40 <oerjan> but all that should disappear during compilation
19:12:45 <ehird> extract (WTF a) = a
19:12:47 <ehird> you can do that
19:12:54 <ehird> oerjan: how do i do it in ocaml?
19:13:18 <ehird> (I may have to start my own reli^H^H^H^Hlanguage that's like haskell, BUT CRAZIER)
19:13:49 <oerjan> iirc with the --rectypes (or something, see my unlambda implementation in it) you can just do type WTF a = WTF a -> WTF a
19:14:59 <Slereah> Hm. Apparently, a hundred steps without finding anything is already a lot for lazy bird
19:15:22 <ehird> oerjan: How easy is ocaml to learn for a haskellfoo?
19:16:13 -!- timotiis_ has changed nick to timotiis.
19:18:01 <oerjan> well ocaml is somewhat more "ordinary" than haskell
19:18:19 <oerjan> having ordinary imperative side effects
19:18:27 <ehird> yeah
19:18:27 <oerjan> it's syntax is ugly as sin, though :)
19:18:33 <ehird> aww, i like it's syntax
19:18:34 <ehird> wait
19:18:39 <ehird> that's a lie, i like SML syntax
19:18:45 <oerjan> anyway, afk
19:26:45 -!- slereah_ has joined.
19:27:46 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
19:38:22 <ehird> type Action = Unlambda -> Action -> Unlambda
19:38:27 <ehird> Isn't that a CPS unlambda?
19:38:40 <ehird> Oh well. newtype.
19:43:32 <oerjan> that was mine? yes it's CPS
19:44:26 <oerjan> er no
19:44:36 <oerjan> thought you were speaking about the ocaml one
19:45:58 <oerjan> actually, that's none of mine
19:46:49 <ehird> i know
19:46:50 <ehird> :)
19:48:15 <ehird> heh
19:48:25 <ehird> that esco guy added links to EVERY SINGLE ESOLANG page they claim to support
19:48:25 <ehird> :|
19:51:24 <slereah_> I hope it's at least interpreted efficiently!
19:53:40 <ehird> slereah_: can't you remember? it isn't
19:53:50 <ehird> it even parses for no reason
19:54:45 <slereah_> I wonder if someone will one day make a real BF processor.
19:54:52 <slereah_> You know, a full scale one.
19:55:11 <slereah_> Not the blueprint or a limited version.
20:01:51 -!- oerjan has quit ("leaving").
20:13:24 -!- timotiis_ has joined.
20:40:16 <GregorR> I have to imagine that [ and ] would be pretty tough to implement in silicon.
20:41:58 <ehird> GregorR: There was a VHDL for it.
20:41:59 -!- timotiis has quit (Read error: 110 (Connection timed out)).
20:42:07 <ehird> But that's Cheating(TM)(C)(R)
20:42:30 <slereah_> Isn't cheating the mother of all esoteric programming?
20:55:51 <slereah_> What's Unlambda's v in lambda form?
20:58:27 -!- Hiato has left (?).
21:02:14 <slereah_> Heh. The combinator-matching program is quite useful to reduce program's length!
21:04:04 <ehird> v in lambda form requires the y combinator
21:04:07 <ehird> it's:
21:04:12 <ehird> Y (\f x -> f)
21:04:18 <jix> GregorR: you could use some shift registers to implement an address tack for the looping points
21:04:29 <ehird> quite simple
21:05:12 <jix> and to make it more esoteric you store the stack in an ccd using dac and adcs to convert the adress from digital to analog and back ^^
21:05:26 <jix> hmm you need a pretty good ccd and pretty good dacs and adcs then i guess
21:07:39 <ehird> slereah_: Y didn't yout hink of Y? :P
21:08:08 <slereah_> I'm not that used to the theory!
21:08:50 <ehird> Y is just how you do recursion...
21:09:13 <ehird> (Y (\f -> ...)) gets you a recursive function
21:09:28 <ehird> f is the function itself, i.e. (Y (\f -> ...))
21:09:38 <slereah_> I know, though I prefer U personaly
21:09:41 <ehird> (Y (\f -> (\x -> x))) ;; pointless Y combinator
21:10:02 <ehird> Eh, Y is nicer
21:10:08 <ehird> You can build Y on top of USK
21:10:26 <ehird> Y = S (K (U I)) U
21:10:28 <slereah_> But the lambda expression of U can easily be modified.
21:10:40 <ehird> slereah_: Ditto with Y
21:10:43 <slereah_> Especially nice when I want output or the function to stop at some point.
21:10:47 <slereah_> How?
21:10:53 <slereah_> I wasn't able to do it
21:11:52 <ehird> Well, you need to learn lambda calculus then :-)
21:12:16 <slereah_> Ammah tryin'!
21:12:42 <slereah_> I snuck in the computation class monday, but I probably won't be able to do it much longer.
21:12:50 <slereah_> I've got other classes soon to begin
21:21:33 -!- timotiis_ has changed nick to timotiis.
21:26:35 <slereah_> "``bv`t0 converts to ``bv`t0"
21:26:41 <slereah_> Thanks a lot computer.
21:32:50 <ehird> Computer just wants a hug.
21:33:01 <ehird> It wants something more fuzzie than combinators. :(
21:33:28 <slereah_> Well, combinators are more like feathery.
21:35:44 <slereah_> ``m``b`s``c``vk.1r``c``bbm``s``bv`t0``s``vk`sb`t0``v0i
21:35:52 <slereah_> Well, that's as short as I can make it.
21:40:18 <slereah_> Problem is, it's hard to use brute force with u, m, o or w.
21:40:28 <slereah_> Ends up on may kinds of infinite loops.
22:08:34 -!- olsner has joined.
22:36:55 -!- ttm_ has quit (Read error: 110 (Connection timed out)).
22:41:30 -!- oerjan has joined.
23:03:04 -!- jix has quit ("CommandQ").
23:10:34 -!- slereah_ has changed nick to Slereah.
23:23:00 <Slereah> My brute force seems to be a little too brutal.
23:23:21 <Slereah> The size of the set increases quadratically.
23:23:53 <oerjan> what, it's only polynomial? that's not brutal ;D
23:24:13 <Slereah> Well, problem is, it retries things that have already been tried.
23:24:35 <Slereah> For instance, if I got ski, it tries {s, k, i}
23:25:06 <Slereah> And then {s, k, i, `ss, `kk, `ii, `si, `sk, `ks, `ki, `is, `ik}
23:25:29 <Slereah> Wait, that's not even square.
23:25:44 <Slereah> That would be... n² + n at each step
23:26:08 <ehird> ... halting problem question
23:26:10 <Slereah> Well, still polynomial I guess
23:26:21 <Slereah> But it still could use improvement
23:26:47 <ehird> isn't this a halting solver for a turing machine: Run the program, saving each state of the program along the way. If you repeat a previous state, say 'yup -- infinite loop'
23:26:55 <ehird> otherwise, you get to the end and say 'nope'
23:27:01 <ehird> It obviously doesn't work, but why?
23:27:07 <Slereah> ehird: Works for a finite state machine.
23:27:14 <ehird> Slereah: We're talking turing machines
23:27:19 <Slereah> But since the tape is infinite, there's an infinite number of configuration
23:27:33 <ehird> So use Hilbert's Hotel-method to store an infinite tape at each point
23:27:50 <Slereah> It will eventually end up in the same state, but it might be on a different tape
23:28:05 <ehird> So... keep track of that?
23:28:14 <Slereah> What, an infinity of it?
23:28:28 <ehird> Hilbert's Hotel.
23:28:43 <Slereah> The nice thing about computation theory is that the theorems are based on practical facts.
23:29:01 <Slereah> You can't have an infinity of symbols because you couldn't make an infinity of symbols.
23:29:07 <ehird> Slereah: Yes, like machines with an infinitely long tape
23:29:13 <Slereah> Same thing with an infinite number of state for the machine.
23:29:35 <Slereah> Well, it's unbounded.
23:29:56 <Slereah> But yes, you could solve the halting problem of a Turing machine if you used moar infinites.
23:30:10 <Slereah> Infinite time, infinite states, that sort of things.
23:30:31 <Slereah> Wiki for "Hypercomputation", they've got some good links.
23:31:31 <oerjan> ehird: a non-halting computation doesn't need to repeat its state ever
23:31:55 <oerjan> let f n = f (n+1) in f 0, for example
23:32:20 <ehird> i guess
23:33:08 -!- MommeMC has quit.
23:33:53 <Slereah> State, as in machine state or configuration of the tape?
23:34:53 <oklopol> hi ppl!
23:34:59 <ehird> pi hppl
23:35:01 <oklopol> is it sex night?
23:35:11 <Slereah> Well, since you ask so nicely
23:35:13 <oklopol> uhhh i'm so drunk
23:36:19 <oerjan> Slereah: all state
23:36:42 <ehird> oklopol: how esoteric
23:37:13 <Slereah> Always confuse me.
23:39:04 <oklopol> ehird: how what when who?
23:39:27 <Slereah> Oklosextalk?
23:39:48 <ehird> oklopol: you are in?#esoteric
23:39:58 <ehird> oklopol: fkhf abds if not whedfgg
23:40:04 <oklopol> ehird: i don't see your point
23:40:25 <ehird> oklopppol: fahe utyo? maybe if you fjav ngk
23:40:40 <oklopol> Slereah: i have yet to unite sex and programming, but i'm sure there is a connection
23:40:54 <oklopol> "oklopol: fuck you? maybe if you fuck me..."
23:40:56 <Slereah> Use trinary.
23:41:02 <Slereah> Instead of bits, you have tits
23:41:33 <oklopol> good idea
23:41:43 <oklopol> perhaps that would hewlp.
23:41:44 <ehird> oklopol: I sdaid tahtht? nnu...
23:41:46 <oklopol> *help
23:41:55 <olsner> wow, a computer with several billion tits.. now that'd be something
23:42:07 <oklopol> omg!
23:42:16 <oerjan> >_<
23:42:30 <Slereah> All operations should have tit-related names.
23:42:37 <oklopol> yay!
23:42:37 <ehird> oklopol: Ogm? Whtat isty ouur prblemo..
23:42:38 <oklopol> boobies!
23:42:52 <oklopol> ehird: my problem is i did not get any tonight
23:43:10 <oklopol> i hate drinking, but it's even worse if you don't get laid!
23:43:16 <oklopol> you know the feeling
23:43:23 <ehird> oklopol: Yufhsdhj fdghpsd fjkosduaid sduai fids if iausi...
23:43:26 <oklopol> :DSADDDDDDDDDDDDDDD
23:43:34 <oklopol> ehird: iiiijsijhuhf hwuairhf aweurfhuiah erfs
23:43:41 <olsner> unfortunately, #apache didn't seem to be interested in my report on mod_rewrite's memory problems when running a brainfuck interpreter
23:43:52 <oerjan> imagine that.
23:43:53 <ehird> Damnit! You saw through my plot to try to get you to believe you were progressively getting unbelievably drunk
23:44:02 <oklopol> :D
23:44:13 <oklopol> i'm not that drunk, just a bit
23:44:24 -!- Slereah has changed nick to slereah_.
23:44:29 <slereah_> Oh yeah?
23:44:36 <oerjan> he's not as think as you drunk he is
23:44:38 <oklopol> well SHUUUUURE
23:44:38 <slereah_> Count backward using only prime numbers!
23:44:49 <oklopol> fronm WHAT?
23:44:50 <oklopol> adf0
23:44:55 <slereah_> INFINITY
23:44:57 <oerjan> 101
23:45:10 <oklopol> 101, 97, 93, 91
23:45:11 <oklopol> umm
23:45:33 <oklopol> 87, 83, 79, 73, 71, 67, 61
23:45:34 <olsner> neither 0 or 1 are prime numbers according to the definitions I've been taught
23:45:35 <oklopol> umm
23:45:44 <oklopol> please fuck me if i'm wrong
23:45:49 * ehird fucks oklopol
23:45:55 * slereah_ fucks oklopol
23:45:58 <oklopol> 59, 57, 53, 51, 47, 43,
23:46:00 <slereah_> I didn't check, but you know
23:46:01 <oklopol> OMh
23:46:07 <ehird> oklopol: and you said you didn't get any tonight
23:46:10 <oklopol> did i fail?=
23:46:13 <oklopol> :)
23:46:19 <ehird> #ESOTERIC - PROVING YOU WRONG SINCE SOME TIME
23:46:20 <slereah_> 87 isn't prime, I think.
23:46:28 <oklopol> oh, did you just irc-fuck me for fun?
23:46:28 <oerjan> you missed 89
23:46:31 <oklopol> isn't?
23:46:33 <slereah_> 8+7 = 15. It's divisible by 3.
23:46:35 <oklopol> oh, darn
23:46:53 <oerjan> oh, and 91 isn't either
23:46:55 <slereah_> It's... 29*3
23:46:56 <oklopol> slereah_: oh, right, i didn't realize that!
23:47:08 <oklopol> HEY
23:47:12 <oklopol> stop it! :)
23:47:35 <oklopol> just say "oklo, you failed."
23:47:41 <slereah_> OKLO, YOU FAILED
23:47:52 <oklopol> yes, that's the critique i need
23:47:53 <slereah_> Remember that Z game?
23:48:01 <olsner> but the digits 8, 1, 6, 4 and 9 are also non-primes
23:49:01 <oklopol> olsner: i didn't say them though
23:49:31 <olsner> oklopol: 89, 83, 79, 71, 67, 61, 59, 51, 47, 43
23:50:02 <oklopol> olsner: well you fixed me pretty bad there
23:50:26 <slereah_> 51 -> 5+1=6 :o
23:50:30 <ehird> oklopol: ,[.,]
23:50:32 <olsner> well, the condition was *using only prime numbers*
23:50:37 -!- puzzlet_ has joined.
23:50:38 <slereah_> 17*3
23:50:40 <oklopol> i just know the ones on 1..10 * 1..10
23:51:55 <olsner> gotta go sleep, too tired to think
23:52:02 <oklopol> ;-----------)
23:52:08 <slereah_> Bai
23:52:13 <oklopol> bie!
2008-01-26
00:00:08 <slereah_> Hm. 14 combinators, n*(n+1) choice at every step...
00:01:23 <slereah_> EXPLOSION
00:01:23 <slereah_> Aaaaaah
00:01:23 <slereah_> No wonder I can't pass anything longer than 4 combinators long.
00:01:23 <slereah_> 4 is already 1963420410 things to try
00:03:16 -!- puzzlet has quit (Read error: 110 (Connection timed out)).
00:04:12 -!- puzzlet_ has quit (Read error: 104 (Connection reset by peer)).
00:04:33 -!- timotiis has quit ("leaving").
00:05:01 -!- puzzlet has joined.
00:20:13 -!- MommeMC has joined.
00:21:48 -!- MommeMC has left (?).
00:26:37 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
00:26:57 -!- slereah_ has joined.
00:49:54 -!- GregorR has quit ("Leaving").
01:02:46 -!- puzzlet has quit (Remote closed the connection).
01:02:50 -!- puzzlet has joined.
01:13:38 -!- EgoBot has quit (Read error: 110 (Connection timed out)).
01:16:16 -!- EgoBot has joined.
01:16:26 -!- GregorR has joined.
01:18:33 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
01:21:07 -!- slereah_ has joined.
01:31:32 -!- slereah__ has joined.
01:32:04 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
01:49:02 -!- slereah_ has joined.
01:49:41 -!- slereah_ has changed nick to Slereah.
01:57:51 -!- slereah__ has quit (Read error: 110 (Connection timed out)).
02:05:45 -!- slereah_ has joined.
02:05:45 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
02:10:45 -!- ehird has quit ("This computer has gone to sleep").
02:45:44 -!- puzzlet_ has joined.
02:56:14 <RockerMONO> hi
02:58:30 -!- puzzlet has quit (Read error: 110 (Connection timed out)).
03:05:07 -!- dbc has joined.
04:42:59 -!- digital_me has joined.
04:50:30 -!- bsmntbombdood has quit (Read error: 110 (Connection timed out)).
04:51:10 -!- bsmntbombdood has joined.
05:10:14 -!- digital_me has quit ("leaving").
05:41:07 -!- eagle-101 has changed nick to eau.
05:54:03 <oerjan> SPAM SPAM WONDERFUL SPAM
05:54:18 <pikhq> SPAMMITY SPAM!!!
05:54:59 <pikhq> I've got to say that I like the current topic nostalgia.
05:55:09 <pikhq> (that's one of my favorite Asimov stories)
05:56:37 <oerjan> ah. i have read _about_ that story
05:57:39 -!- eau has changed nick to eagle-101.
06:03:49 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
06:06:08 <RodgerTheGreat> spam luncheon meat is delicious.
06:06:42 <oerjan> i was otherwise referring to current wiki events.
06:08:18 * oerjan doesn't recall ever tasting spam, although someone might have secretly fed it to him
06:08:20 -!- slereah__ has joined.
06:18:02 -!- RodgerTheGreat has quit.
06:32:29 -!- puzzlet has joined.
06:45:03 -!- puzzlet_ has quit (Read error: 110 (Connection timed out)).
07:06:37 -!- oerjan has quit ("leaving").
07:18:19 -!- eagle-101 has quit (Connection timed out).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:34:05 -!- uvanta has joined.
08:39:14 -!- slereah__ has quit (Read error: 110 (Connection timed out)).
08:43:31 -!- dbc has quit (Read error: 110 (Connection timed out)).
08:46:44 -!- slereah__ has joined.
09:22:38 -!- dbc has joined.
09:53:34 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
09:56:39 -!- slereah__ has joined.
10:08:25 -!- helios24 has joined.
10:12:23 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
10:15:00 -!- oklopol has joined.
10:49:00 -!- jix has joined.
10:57:53 <uvanta> HELLO!
10:58:17 <oklopol> uvanta: HIEYYYYYYYYYYYY!
10:58:28 <uvanta> ㅐㅌㄴㄴㅇ!
10:58:50 <oklopol> :---------------------__)
10:58:57 <uvanta> (:
11:44:50 <Asztal> the topic... is it "the last question"?
11:45:08 <Asztal> I remember reading a summary of it, either that or it was a very short story
11:54:09 <uvanta> i guess so
11:54:14 <uvanta> Asimov's
11:58:16 <olsner> funny, I read that one like only a week ago
12:30:17 -!- timotiis has joined.
13:16:00 -!- slereah__ has changed nick to Slereah.
13:18:15 -!- jix has quit (Read error: 104 (Connection reset by peer)).
13:22:11 -!- jix has joined.
13:49:04 -!- slereah__ has joined.
13:52:12 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
14:00:24 -!- slereah__ has changed nick to Slereah.
14:10:08 -!- Figs has joined.
14:10:24 <Figs> w00t!
14:10:54 <Figs> I finally got evolution to work :)
14:13:02 <Slereah> What is it!
14:13:07 <Slereah> Any dinosaurs?
14:15:08 <Figs> nothing too complicated, I just evolved binary strings to match zero
14:16:25 <Figs> basically, each entity is 8 bits... I specify rates of mutation and culling and check how many bits have been set as a means of determining fitness
14:16:46 <Figs> after about 10 generations or so, the population tends to level out
14:18:04 <Figs> to breed, I pick two random strings (could be the same, but unlikely) and split them at a random point in the 8 bits, then I recombine the pieces for the child
14:18:19 <Figs> interestingly, I get better results without mutations
14:19:16 <oklopol> Figs: try evolving a tuple into another giving a set of permutations
14:19:39 <oklopol> it's amazing that it actually works, i don't really see how that's a task you can do gradually
14:21:24 <Figs> heh, you can do all kinds of neat things...
14:21:34 <Figs> like evolving tuples into particular patterns
14:21:58 <Figs> I should try to see if I can get it to generate tuples of 5 increasing prime numbers
14:22:24 <Figs> I've found some neat stuff about how the mutation rate works
14:22:29 <oklopol> tell me
14:23:01 <Figs> This should sound completely obvious, but the mutations depend on the rate of culls
14:23:06 <Figs> so if mutations < culls
14:23:37 <Figs> ("weak culls" that is -- where you remove say 25% of the bad ones)
14:23:49 <Figs> then you get different mutations
14:24:03 <Figs> I was seeing things like 1650 to 350
14:24:07 <Figs> in 0 and 1 only
14:24:21 <Figs> and then I changed the rate and managed to get it in 0,1,2
14:25:00 <Figs> it doesn't depend on the size of the population so much to get the percents; it really is mathematical in relation to the chance of mutation and whether or not it will be culled
14:25:34 <Figs> I'd have to go back and rerun a few experiments to figure out what numbers I actually had
14:25:51 <Figs> I think it was something like 33% mutation rate vs 25% culls
14:27:01 <Figs> yeah
14:28:07 <Figs> with 1/3 mutation and 1/4 culled, I get something like ~1450 in "perfect", ~530 in "off by 1" and ~10 in "off by 2"
14:28:26 <Figs> just rough guesses looking at my numbers
14:29:04 <Figs> and the rest (ie, off by more than 2 bits) is basically non-existant after the first 20 generations or so
14:29:14 <Slereah> Let's make "Intelligent Design"
14:29:18 <Figs> although I did get a few in the off by 3 flickering in and out for a little while
14:29:23 <Slereah> Where the answer will be directly displayed
14:29:41 <Figs> hehe, this is evolution by intelligent design :P
14:29:48 <Figs> I should say "intelligent" design
14:29:57 <Figs> since it's 6:30 in the morning here and I'm not thinking too great
14:30:01 <Figs> but still :)
14:33:58 <Slereah> Got a sample program
14:33:58 <Slereah> .
14:33:59 <Slereah> ?
14:35:11 <Figs> Sure
14:35:14 <Figs> In python
14:35:20 <Figs> Want me to upload?
14:35:33 <Figs> the coding style's not very good... but meh :P
14:35:41 <Slereah> Hell, Python is basically all I can do!
14:36:46 <Slereah> It is actually bothersome, because I must do C in class.
14:36:52 <Figs> http://rafb.net/p/Gi5otN11.html
14:36:59 <Figs> there's my little program :D
14:37:02 <Slereah> So I occasionaly use Python in C.
14:37:13 <Figs> 125 lines ^_^
14:37:24 <Figs> you can run it like
14:37:34 <Figs> python -i genetic.py
14:37:36 <Figs> run()
14:38:05 <Slereah> What's -i?
14:39:14 <Figs> interactive
14:39:37 <Figs> I'm basically a noob at python
14:39:49 <Slereah> So am I!
14:40:00 <Slereah> But you can do awesome stuff with little python
14:40:11 <Figs> I guess you could just throw a run() at the end of my file and do python genetic.py
14:40:18 <Figs> but I like to start it myself
14:42:21 <Figs> what thinks ye? :)
14:42:39 <Figs> I know it's not exactly thrilling...
14:43:25 <Slereah> Well, it's hard to judge like that!
14:43:32 <Slereah> I don't know the what'sgoings on
14:45:24 <Figs> Each cell has 8 bits like,
14:45:34 <Figs> [0,1,1,0,1,0,1,0]
14:45:49 <Figs> and, the goal is to get it to [0,0,0,0,0,0,0,0]
14:46:02 <Figs> so when you see 0=1600
14:46:14 <Figs> that means that 1600 of the entities are all [0,0,0,0...
14:46:25 <Figs> 1 means they have 1 bit set
14:46:29 <Figs> 2 means 2, etc
14:48:20 <oklopol> it's a waste of genetic algorithms if you use them for that :)
14:48:24 <oklopol> do something AWESOME
14:48:51 <Slereah> Like a DINOSAUR
14:50:01 <Figs> oklopol: I'm making it evolve prime numbers now
14:50:39 <Figs> I'm just trying to think of a good way to represent the output of each generation
14:50:59 <Slereah> Output asteroid?
14:51:03 <Figs> I might make the generations themselves small and show each one... and then run it longer
14:51:25 <Figs> like 10 individuals and 10000 generations instead
14:51:32 <Figs> and then I can show the actual genes
14:51:43 <Figs> (instead of a summary)
14:52:26 <Figs> it'd be interesting once I get this to work to make it evolve larger primes more preferably than smaller ones... hmm :)
14:52:31 <Figs> this is getting fun
14:58:55 <Figs> wow
14:58:57 <Figs> seems to work
14:59:53 <Figs> haa
14:59:54 <Figs> no wonder
15:00:00 <Figs> my prime function thinks 9 is a prime number
15:00:01 <Figs> haha
15:00:02 <Figs> >.<
15:00:05 <Figs> me = idiot
15:02:33 <Figs> there we go
15:02:34 <Figs> now it works
15:02:35 <Figs> wow
15:02:37 <Figs> I get prime numbers
15:02:39 <Figs> sexy :)
15:02:59 <Figs> (`cuz you _know_ prime numba's are sex-ay!)
15:03:06 <Figs> </random>
15:04:15 -!- slereah__ has joined.
15:04:24 <Figs> hello
15:06:21 <slereah__> Hi.
15:07:04 <Figs> It works :D
15:07:19 <Figs> now it makes prime numbers
15:07:20 <slereah__> Yay
15:07:31 <Figs> but my inteface is ugly
15:08:54 <slereah__> How does it make them exactly?
15:09:52 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
15:10:51 -!- uvanta has quit ("blame!").
15:12:59 <Figs> http://rafb.net/p/33DCyq90.html
15:13:04 <Figs> you can take a look
15:13:21 <Figs> it just tries random numbers and evaluates against a fitness function to cull bad ones
15:14:09 <Figs> I should probably refactor my code and clean it up so this is easier to use
15:17:01 <slereah__> Once the number is well prime, does it stop changing?
15:17:05 <slereah__> Or does the value oscillate around the prime number
15:18:36 <Figs> no, it keeps changing because of mutations
15:18:38 <Figs> but the new numbers are entirely random
15:18:49 <Figs> so say I have 6 in there now, next time it might be 458
15:19:45 <Figs> if you tweak the settings to have a weak-cull rate of .75, and random cull of .25, and a mutation ratio of 1:2
15:19:49 <Figs> it gets interesting
15:19:58 <Figs> it climbs up slowly
15:20:18 <Figs> but because of the high mutation rate, it changes every couple dozen generations to have some new numbers
15:21:33 <slereah__> How do you decide when to output the value then, if you so decide?
15:21:47 <Figs> values are output every generation
15:22:00 <Figs> read the run() function to see what happens
15:22:15 <slereah__> I saw.
15:22:30 <slereah__> But how do you know the results if it's all random number, even if they're around the right value?
15:23:01 <Figs> you mean, how do I determine fitness?
15:23:19 <Figs> it has nothing to do with being close to a prime number
15:23:28 <Figs> it's either a prime or not for each 'bit'
15:23:58 <Figs> it's totally random, but it works! :)
15:25:00 <slereah__> Can you post the running of the program?
15:25:06 <Figs> if my calculations are correct, there are 95 prime numbers under 500
15:25:26 <Figs> so you have a roughly 1/5 chance of guessing a prime number
15:25:37 <Figs> can I post the running?
15:25:41 <Figs> I guess
15:25:49 <slereah__> You know, the program being executed
15:25:49 <Figs> how much do you want?
15:25:56 <oklopol> oh, you're generating primes that way
15:26:07 <slereah__> Well, all primes numbers under 20 should do it
15:26:21 <Figs> ?
15:26:24 <oklopol> that's effectively what you had originally
15:26:33 <oklopol> the random -> 000...0 thing
15:26:54 <Figs> yeah, this is a minor tweak to get the same algorithm to do something different
15:27:07 <Figs> it's a little more interesting than ones and zeros :)
15:27:07 <oklopol> hmm, right, ofc
15:27:13 <oklopol> well, sure
15:27:27 <Figs> slereah__: running of which program?
15:27:37 <slereah__> Prime numbers generation
15:28:01 <oklopol> my idea some time ago was to try getting simple permutations from the set of huge permutations a rubik'
15:28:03 <oklopol> s cube has
15:28:27 <oklopol> the problem is, i never coded in the actual twists of the cube
15:28:56 <oklopol> because there are so little of them i don't wanna do an algo to determine them, but they are so long i don't wanna do them by hand :D
15:30:28 <Figs> slereah__: how much output do you want?
15:30:44 <Figs> the full output (10000 generations) is huge
15:30:55 <slereah__> Just post the code then.
15:30:56 <Figs> 100 generations enough?
15:31:01 <Figs> I posted the code O_o
15:31:13 <slereah__> Was it the first one?
15:31:24 <Figs> link was here: http://rafb.net/p/33DCyq90.html
15:31:24 <slereah__> Oh, right
15:31:46 <Figs> maybe your connection dropped out or something and missed it, I dunno
15:31:58 <Figs> isn't technology fun? :)
15:33:10 <Figs> http://rafb.net/p/wLIFXg72.html
15:33:24 <Figs> here's a sample running it with my .75/.25/1:2
15:33:26 <slereah__> But isn't the computation mostly done by the prime function?
15:33:39 <Figs> prime function only checks primality
15:33:46 <slereah__> Well, yes.
15:34:02 <Figs> it's effectively part of the fitness function
15:35:42 <Figs> I should probably run this with a more interesting scope
15:35:50 <Figs> something where the primes are thinner
15:36:12 <slereah__> Well, 7's a pretty thin number!
15:36:27 <Figs> 7? O_o
15:36:34 <slereah__> It's a joke.
15:36:38 <Figs> ok :P
15:36:52 <Figs> figs.comprehends() != true
15:37:07 <slereah__> 'cause 7 is thin, as a symbol!
15:37:14 <slereah__> I would have used 1, but you know
15:37:16 <Figs> :P
15:38:59 <slereah__> Hm. I should forbid stuff of the form `iC in my combinator match program
15:39:05 <slereah__> Make it go faster
15:39:16 <Figs> `iC?
15:39:45 <Figs> Ya know... I still haven't finished my damned parser system :P
15:39:48 <slereah__> i the identity combinator
15:39:52 <slereah__> C any combinator
15:46:38 <Figs> whoo, evolution in 5 minutes: http://scienceblogs.com/pharyngula/2008/01/evolution_in_5_minutes.php
15:50:21 -!- RodgerTheGreat has joined.
15:51:11 <Figs> hello RTG
15:51:18 <Figs> I'm evolving prime numbers today
15:51:21 <Figs> how are you?
15:51:34 <slereah__> I want a fuzzy little prime number.
15:51:43 <RodgerTheGreat> hi, figs
15:54:19 <Figs> slereah__: 2 ^_^
15:54:20 <Figs> HAI!!!! ^_^
15:54:33 <slereah__> 2 seems a little too angular.
15:54:38 <slereah__> Why can't 8 be prime?
15:55:17 <Figs> 8's divisible by 4
15:55:18 <Figs> ^_^
15:55:29 -!- Hiato has joined.
15:55:30 <Figs> how about 911?
15:55:33 <Figs> 911 is a prime number.
15:55:49 <slereah__> No.
15:55:54 <slereah__> 911 contains 4.
15:55:59 <slereah__> Because NEVAR 4GET
15:56:05 <Figs> 919
16:15:36 <Figs> boing.
16:39:07 <Figs> ding a ling a ling!
16:39:09 <Figs> time for bed
16:39:09 <Figs> 8 am
16:39:10 <Figs> `morning all.
16:39:26 -!- Hiato has left (?).
16:39:50 -!- Figs has quit ("Good-Bye.").
17:58:40 -!- jix has quit (Read error: 104 (Connection reset by peer)).
18:01:07 -!- jix has joined.
18:53:47 -!- eagle-101 has joined.
19:15:59 <slereah__> if c in ["s","k","i","r","a","n","p","x","w","m","&"]
19:15:59 <slereah__> ^
19:15:59 <slereah__> SyntaxError: invalid syntax
19:16:01 <slereah__> Wut?
19:16:23 <slereah__> Oh, forgot the semicolon
19:32:39 <bsmntbombdood> itym colon
19:37:22 <slereah__> Prolly.
19:40:03 -!- ehird has joined.
19:40:07 <ehird> testy test.
19:40:09 <ehird> testing testy test test
19:45:27 <ehird> evidently nobody likes testse
19:50:18 -!- ehird has quit ("Lost terminal").
19:52:15 <slereah__> And now, for something completely different.
20:10:51 -!- ehird has joined.
20:10:56 <ehird> foobar.
20:11:10 <ehird> i think i like xmonad now. just need to get it to recompile properly
20:12:40 <slereah__> Hello little man.
20:14:54 <ehird> i should write my own WM!
20:15:05 <ehird> in Lisp, that is dynamically reconfigurable at runtime!
20:15:09 <ehird> actually that soudns awesome
20:15:36 <ehird> Xparenthesis
20:15:53 <ehird> brb
20:15:54 -!- ehird has quit ("leaving").
20:16:48 -!- ehird has joined.
20:17:18 <ehird> i could have optional esolang configuration backends :P
20:17:51 <slereah__> ?
20:19:15 <ehird> a window manager, written in Lisp, which you can reconfigure at runtime (change setting, see it happen), but youc an also write the configuration in an esolang
20:19:18 <ehird> :D
20:19:28 <slereah__> Well, you know me and computers
20:19:53 <ehird> i didn't hear me asking for your opinion
20:19:53 <ehird> :-P
20:21:44 <slereah__> I didn't hear myself suggest it
20:22:13 <ehird> :)
20:32:11 <olsner> my haskell thue interpreter is far too slow... it's taken more than 30 minutes to run BF hello world through the Thue BF interpreter, and still not done
20:32:46 <olsner> the python thue interpreter does it in 3-4 minutes
20:34:34 <olsner> done! 33m35s :(
20:35:55 <ehird> olsner: Write something that compiles it into Haskell rules
20:35:55 <ehird> :D
20:36:24 <ehird> thueStep ('h':'i':xs) = "hello" ++ thueStep xs
20:37:44 <olsner> yeah, and ending it with thueStep (x:xs) = x:thueStep xs; thueStep [] = thueStep [] - that'd probably work!
20:38:31 <olsner> I was otherwise thinking of building some kind of automaton and running that
20:38:45 <ehird> automaton would be faster :P
20:38:53 <ehird> olsner: that would be a slow thueStep base case
20:38:57 <ehird> you should build a table like:
20:39:17 <ehird> thueTable = ["foo","hi"]
20:39:19 <ehird> then do something like
20:39:42 <ehird> thueStep (x:xs) = x : thueStep (find-element-of-thueTable-in-xs-and-return-the-string-from-that-point-onwards)
20:41:31 <olsner> wouldn't the find part basically do the exact same thing as thueStep only not replace anything?
20:41:53 <ehird> olsner: you could use a more efficient algorithm
20:45:38 -!- RedDak has joined.
20:52:52 -!- ehird has quit ("Lost terminal").
21:10:44 -!- ehird has joined.
21:10:48 <ehird> what did i miss
21:11:42 <slereah__> Awesome stuff, really
21:11:47 <slereah__> I'm totally not lying
21:11:47 <ehird> :| LIKE WHAT
21:11:56 * ehird checks ircbrowse.com
21:12:47 -!- adu has joined.
21:12:49 <ehird> yes, the topic is The Last Question
21:12:53 <ehird> for all those who seem to be asking..
21:13:52 <slereah__> Was it the story with the "how to stop the universe from dying" thingy?
21:14:06 <ehird> Yes
21:14:57 <slereah__> Most of his sort-of comedic stories weren't that great from what I can recall
21:15:51 <ehird> the last question isn't really comedic.
21:15:53 <ehird> :|
21:16:11 <Asztal> at least humanity didn't wipe themselves out :)
21:16:18 <slereah__> It's been a while
21:16:33 <slereah__> I should re-read the big Foundation books.
21:25:45 -!- ehird has quit ("Lost terminal").
21:36:38 -!- ehird has joined.
21:41:20 -!- eagle-101 has changed nick to newpod.
21:42:00 -!- newpod has changed nick to eagle-101.
22:09:40 -!- ehird has quit ("Lost terminal").
22:10:23 -!- ehird` has joined.
22:11:55 <slereah__> People.
22:12:13 <slereah__> I'm trying to optimise the JUGGERNAUT (bitch).
22:13:04 <slereah__> So far, it tests every combination a lot of times. How could I make it only test for new combinations?
22:15:03 <slereah__> The relevant code is something like this : http://pastebin.ca/873833
22:20:04 <ehird`> rewrite it in Lisp and Iwill! ;)
22:20:51 <slereah__> Replace all s with th.
22:21:14 <slereah__> *rimshot*
22:21:34 <slereah__> If I describe the algorithm, will it be okay too?
22:25:09 <ehird`> Yes
22:25:45 -!- ehird[tkirc] has joined.
22:25:51 <slereah__> C is the set of combinators I choose to compose from. Individuals combinators are tested outside this loop once.
22:26:02 <ehird[tkirc]> testy
22:26:15 <ehird[tkirc]> /mea
22:26:16 <ehird[tkirc]> /me a
22:26:18 <ehird[tkirc]> hm
22:26:33 <slereah__> Then, it tests every combination of C, and adds them to C.
22:27:03 <slereah__> For instance, if I have s and k, it will test ss, sk, ks, kk, and the new list will be [s,k,ss,sk,ks,kk]
22:27:12 <ehird[tkirc]> I see
22:27:24 <ehird[tkirc]> so:
22:27:39 <slereah__> But since s and k are still in here (I need them, for instance to compose `s`ss), it retries every value
22:27:52 <ehird[tkirc]> FOR x in C { FOR y in C { append C (concat x y) } }
22:28:08 <slereah__> Roughly
22:28:50 <slereah__> I guess I could use the condition `xy not in C, maybe
22:30:37 -!- ehird[tkirc] has quit (Remote closed the connection).
22:31:24 <oklopol> (append (append C (concat x y)) (concat y)), no?
22:31:34 <oklopol> *(append (append C (concat x y)) (concat y x))
22:31:48 <slereah__> ?
22:32:23 <slereah__> Hm. The not in C test seems to work.
22:33:07 <oklopol> i mean, don't you want to add bot (s(ss)) and (sss) if you have (s k ss kk sk ks)
22:33:13 <oklopol> *both
22:33:43 <oklopol> (where abc = (ab)c)
22:36:39 -!- adu has quit (Remote closed the connection).
22:37:54 -!- oerjan has joined.
22:40:00 <ehird`> essentially you always have infinite permutations.....
22:40:58 <slereah__> This is unpleasant, 'cause I actually have to optimise it.
22:41:00 <slereah__> Aaaaargh
22:43:47 <ehird`> pikhq: You! tcl user! :P
22:44:01 <ehird`> how do i use tklib's lobster style? default tk is ugly
22:46:18 <pikhq> I don't know; don't really use Tk.
22:46:34 <ehird`> asjasdjkgfjafg, :P
22:46:35 <oerjan> ...or Lobster Thermidor a Crevette with a mornay sauce served in a Provencale manner with shallots and aubergines garnished with truffle pate, brandy and with a fried egg on top and spam.
22:48:44 <slereah__> Can't I just have the eggs and bacon spam spam and spam?
22:51:41 <slereah__> Ah shit.
22:51:55 <slereah__> The Juggernaut blocks on `m`ml
22:52:47 <slereah__> It's an infinite loop, but it's supposed to stop the test automatically after 300 steps.
22:53:45 <slereah__> Ah yes, the expression becomes too huge at step 60
22:55:15 <slereah__> What would be a good limit size for an expression?
22:55:20 <slereah__> Thousand chars?
22:58:47 <ehird`> 1024
22:59:04 <oerjan> 1729
23:03:22 <oklopol> 1932
23:03:51 <Asztal> 7.
23:04:36 <slereah__> Well, 5000 seems to be too much at least.
23:08:11 <slereah__> I have in my mind the Juggernaut going through combinators.
23:08:27 <slereah__> "YOUR WEAPONS CANNOT HARM ME"
23:09:16 <oerjan> The Juggernaut vs. The Birds...
23:09:40 <slereah__> Seems unfair.
23:10:21 <slereah__> But they've got number power
23:10:39 <slereah__> I'm still checking for ``v`k0k
23:11:01 <slereah__> With the 14 combinators.
23:12:58 -!- timotiis has quit (Remote closed the connection).
23:13:16 -!- timotiis has joined.
23:13:30 <RockerMONO> hi
23:13:48 <slereah__> Hi.
23:24:50 <olsner> what's the Juggernaut?
23:25:08 <olsner> (and I though it was spelled juggernaught?)
23:25:13 <slereah__> You insert some lambda or combinator expression
23:25:20 <slereah__> You insert a list of combinators.
23:25:37 <slereah__> It will (possibly) find the shortest way to make it out of that
23:25:49 <olsner> ooh, nice tool
23:26:00 <slereah__> It is quite brute force though.
23:26:37 <slereah__> It's usually better to have some sort of idea of what it will be, because using all 14 combinators makes it quite long
23:28:43 <oerjan> http://en.wikipedia.org/wiki/Juggernaut
23:29:52 <slereah__> Although I mostly had him in mind : http://en.wikipedia.org/wiki/Juggernaut_(comics)
23:31:52 -!- RedDak has quit (Remote closed the connection).
23:36:04 <olsner> heh, funny etymology of that word
23:50:14 <ehird`> foo
23:52:14 <slereah__> bar.
23:55:41 <ehird`> quux
23:56:55 <oerjan> waldo
23:57:13 <slereah__> `u`x
23:57:18 <slereah__> `u`ux*
23:57:19 -!- lifthrasiir has quit (Read error: 110 (Connection timed out)).
23:57:31 <slereah__> ^There's Waldo
2008-01-27
00:02:41 -!- jix has quit ("CommandQ").
00:06:50 <ehird`> 54
00:07:08 <slereah__> 23!
00:09:35 <olsner> 25852016738884976640000
00:09:51 <slereah__> Zing
00:10:56 <ehird`> 4096
00:12:39 <slereah__> 2-6-5-8-0
00:12:56 <slereah__> Ooooooh! Dial up if you want to know me!
00:20:48 -!- adu has joined.
00:28:30 <slereah__> The unstoppable juggernaut is still on the same problem as 90 minutes ago.
00:28:41 <slereah__> I hope everything is okay in here
00:28:49 -!- helios24 has quit ("Leaving").
00:38:42 -!- timotiis has quit ("leaving").
01:10:33 -!- ehird has joined.
01:22:06 <ehird> lolz.
01:25:18 -!- ehird` has quit (Read error: 113 (No route to host)).
01:27:54 <ehird> byebye machine 2
01:40:55 -!- adu has quit (Remote closed the connection).
01:49:14 <ehird> pingifieraific
01:50:51 <oerjan> gnop
01:54:16 <ehird> ping time: 1 min
02:12:27 <RockerMONO> hi
02:12:44 * RockerMONO will be in and out without warning due to the fact that he shouldn't even have his computer on
02:20:38 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
02:25:58 -!- olsner has quit ("Leaving").
03:16:59 -!- Tritonio_ has quit (Remote closed the connection).
04:07:45 -!- ehird has quit ("This computer has gone to sleep").
05:03:35 <RodgerTheGreat> I have finished!
05:03:52 <RodgerTheGreat> check it out, guys- I completed my short story "Define your good":
05:03:53 <RodgerTheGreat> http://nonlogic.org/dump/images/1200773495-pg1.png
05:03:53 <RodgerTheGreat> http://nonlogic.org/dump/images/1200773511-pg2.png
05:03:53 <RodgerTheGreat> http://nonlogic.org/dump/images/1200773524-pg3.png
05:03:53 <RodgerTheGreat> http://nonlogic.org/dump/images/1200773536-pg4.png
05:03:54 <RodgerTheGreat> http://nonlogic.org/dump/images/1201410011-pg5.png
05:03:55 <RodgerTheGreat> http://nonlogic.org/dump/images/1201410023-pg6.png
05:04:12 <RodgerTheGreat> I'd love to hear some feedback and constructive criticism. Tell me what you think. :D
05:13:10 <RodgerTheGreat> anybody?
05:16:43 <oklopol> konversation owns, only way to open a link is to click "copy url to clipboard" and paste to a browser, also pg6 is selected 5 times out of six no matter which of those i try to open
05:17:15 <oklopol> was a bit hard to follow the plot since i first read page 1, then page 6, then page 4 (which opened instead of 3) :D
05:17:37 <RodgerTheGreat> erm... I could pastebin the URLs if that would make things easier
05:17:45 <oklopol> HEH
05:17:47 <oklopol> *heh
05:17:59 <oklopol> i could do that myself, but, you know, i'm a martyr
05:18:10 <oklopol> I SHALL NOT REST UNTIL I'VE OPENED THEM
05:19:28 <oklopol> hmm, it seems it's actually impossible to pg2. perhaps i should retry irssi..
05:20:04 <RodgerTheGreat> seriously, wtf is wrong with your client?
05:20:15 <RodgerTheGreat> clicking links should not be this difficult
05:25:21 <oklopol> well, you know, every client has its flaws...
05:26:07 <oklopol> xchat took 2 minute lag pauses every few minutes, this one can't open links...
05:26:19 <oklopol> irssi wouldn't show me which act i'm in
05:26:32 <RodgerTheGreat> hooray linux and open-source software. awesome.
05:26:57 <RockerMONO> hi
05:27:28 <RodgerTheGreat> howdy, RockerMONO
05:27:38 <RockerMONO> what's up?
05:27:38 <oklopol> ...have i mentioned yet the fact my computer screen is randomly scrambled every morning and i have to reboot the comp to see anything?
05:28:03 <oklopol> linux ROCKS
05:28:11 <RodgerTheGreat> this is closely related to why I own a mac.
05:28:25 <pikhq> This is closely related to why I think that distro sucks.
05:28:35 <pikhq> My complaints about my Linux system are small.
05:28:45 <pikhq> And really, it's a complaint about my monitor, not my OS.
05:28:48 <oklopol> pikhq: computers are allergic to me.
05:29:06 <pikhq> My monitor seems to take a bit of time in the morning to warm up.
05:29:09 <oklopol> doesn't matter what i do, nothing works :)
05:29:10 <pikhq> Kinda sucks.
05:30:01 <RodgerTheGreat> RockerMONO: new comics ^
05:30:35 <RockerMONO> RodgerTheGreat: nice... me and danopia got a working brainfuck parser in PHP =P
05:30:48 <RodgerTheGreat> nifty
05:31:08 <RodgerTheGreat> wait, parser? what is there to parse in brainfuck?
05:31:22 <RockerMONO> well
05:31:39 <pikhq> Thank you, Rodger,
05:31:48 <RockerMONO> it uses an array for the data =P
05:32:03 <RodgerTheGreat> RockerMONO: I think you mean "interpreter"
05:32:15 <RockerMONO> >.> yea, my bad
05:32:43 <RockerMONO> but despite my inability to figure out wtf to call things, it works =P
05:32:46 <RodgerTheGreat> pikhq: ?
05:32:59 <pikhq> RodgerTheGreat: I discussed the same thing with him yesterday. . .
05:33:04 <RodgerTheGreat> ah
05:33:35 <pikhq> And I was thinking 'What's there to parse? In pslbnf, top => brainfuck_token'. . .
05:33:46 <RodgerTheGreat> pikhq: what do you think of "define your good"?
05:34:13 <pikhq> I think that it seems a nonsensical sentence.
05:34:20 <pikhq> seems to be, even.
05:34:34 <RodgerTheGreat> http://nonlogic.org/dump/images/1200773495-pg1.png
05:34:34 <RodgerTheGreat> http://nonlogic.org/dump/images/1200773511-pg2.png
05:34:34 <RodgerTheGreat> http://nonlogic.org/dump/images/1200773524-pg3.png
05:34:35 <RodgerTheGreat> http://nonlogic.org/dump/images/1200773536-pg4.png
05:34:35 <RodgerTheGreat> http://nonlogic.org/dump/images/1201410011-pg5.png
05:34:35 <RodgerTheGreat> http://nonlogic.org/dump/images/1201410023-pg6.png
05:34:38 <RodgerTheGreat> ^ this
05:34:44 <pikhq> Ah. Lemme see it.
05:36:16 <pikhq> "ADD 1 TO CRUSADE GIVING CRUSADE" love it.
05:36:56 <RodgerTheGreat> I couldn't help it. :)
05:37:02 <pikhq> :)
05:37:49 <pikhq> Brilliant.
05:38:08 <RodgerTheGreat> you like the ending?
05:38:11 <oklopol> when computers have killed all humans, cobol is probably all they remember from them
05:38:19 <oklopol> *us, perhaps
05:38:19 <pikhq> Depressing, but appropriate.
05:38:39 <oklopol> i like the ending, although a gory battle might've worked better for me
05:38:56 <RodgerTheGreat> I'm pretty pleased with it
05:39:01 <oklopol> (would've made less sense, admittedly)
05:39:01 <pikhq> As you should be.
05:39:28 <RodgerTheGreat> and this fits into the universe of a much larger story that I am slowly, laboriously fleshing out, so rest assured there will be more
05:39:43 <pikhq> Oooh.
05:39:53 <oklopol> was hoping for that, will he unite robots and humans in the end? :D
05:40:09 <RodgerTheGreat> oklopol: who do you mean by "he"?
05:40:12 <oklopol> the bot
05:40:25 <oklopol> the main character those 6 would suggest.
05:40:30 <RodgerTheGreat> oscar is dead, oklopol
05:40:40 <oklopol> fuck :D
05:40:55 <RodgerTheGreat> and it was never mentioned in this series, but his female counterpart is named "galena"
05:40:59 <oklopol> oh, i was a bit confused by the ending, confused two bots there
05:41:14 <pikhq> The question is: will Galena rebel?
05:41:42 <RodgerTheGreat> this remains to be seen
05:41:54 <pikhq> Bastard. :p
05:41:56 <RodgerTheGreat> but even if she does, there's going to be a lot of killing
05:42:07 <oklopol> i blame the fact i read them in wrong order initially. was wondering why the chick was shot because oscar couldn't kill his master :D
05:42:10 <pikhq> Yay, killing. Wait, that's robots killing.
05:42:12 <pikhq> Kuso.
05:44:04 <oklopol> (read 1 first, then 6, so naturally the robot in the last picture was oscar in my eyes)
05:44:39 -!- RockerMONO has quit ("FUCK firefox is eating 213MB of my 512MB RAM :<").
05:44:55 * pikhq hugs Konqueror
05:45:27 <RodgerTheGreat> soo... what aspect of the world do you want me to detail in my next short?
05:45:58 <pikhq> Konqueror is using 131MB. . . With 10 tabs, and each probably has about 10MB worth of pictures. . .
05:46:10 <pikhq> No idea.
05:46:34 <oklopol> (robosex!)
05:46:42 <RodgerTheGreat> I suppose I'll rephrase that. Is there anything about this story that particularly piqued your interest?
05:46:42 <oklopol> No idea.
05:47:42 <pikhq> Hmm. How did Galena get in on the crusade?
05:47:50 -!- RockerMONO has joined.
05:47:53 <pikhq> What's the end result of the crusade, for that matter?
05:48:02 <pikhq> And why are the bots running COBOL?
05:48:02 <pikhq> :p
05:48:27 <oklopol> oh, right, i definately wanna know about what they are praising
05:48:31 <oklopol> *definitely
05:49:02 <oklopol> always interesting whether they can reproduce without humans, because it's kinda ironic if they can't.
05:49:21 <oklopol> but, then again, that's not part 2 material, prolly
05:49:50 <RodgerTheGreat> pikhq: the end result of the crusade is a rather expansive topic
05:50:01 <RodgerTheGreat> oklopol: you're curious about Silica, or the Archetype?
05:50:08 <oklopol> yes
05:50:20 <RodgerTheGreat> please choose one.
05:50:31 <oklopol> :)
05:51:11 <oklopol> i'll read it again, in order this time, seems i've missed some stuff.
05:51:39 <pikhq> The Archetype, myself.
05:51:50 <pikhq> Hell, just cover all of it. ;p
05:52:33 <oklopol> archetype.
05:52:59 <RodgerTheGreat> pikhq: alright, gotcha- I'll start coming up with a good way to flesh that out. Perhaps a guided tour of the Axon Technologies R&D department?
05:54:04 <pikhq> That could work; I assume the Archetype is from there.
05:55:11 <RodgerTheGreat> correct!
05:56:20 <RodgerTheGreat> Axon Technologies was in the business of developing patentable tech and licensing it to other companies to produce. Their original specialization was high-quality random number generators.
05:58:56 <oklopol> before the archetype might be interesting to know how global the robot crusade is
05:59:08 <oklopol> add a comma there, if that was confusing
05:59:12 <RodgerTheGreat> In order to confirm the randomness of their products, they developed quite sophisticated pattern recognition hardware. In fact, as the devices became more complex they began to incorporate genetically engineered bacteria into self-assembling neural-net like material called "neurogel". In a flash of inspiration, one researcher realized that these pattern matchers could be trivially reapplied to artificial intelligence
06:00:20 <RodgerTheGreat> Progress was achingly slow at first, but neurogel's unique properties allowed for experimentation on scales far beyond what was possible with conventional computers.
06:01:06 <oklopol> RodgerTheGreat: you should write scifi
06:01:40 <RodgerTheGreat> The newly formed AI arm of Axon poured their efforts into an assistive design tool- imagine the ultimate CAD application. It learned design techniques as people used it.
06:01:46 <RodgerTheGreat> oklopol: I do.
06:02:12 <oklopol> you do? like, text? :-)
06:02:37 <RodgerTheGreat> The tool could soon extrapolate simple sketches into complete working designs. Then, it was turned on itself.
06:02:48 <oklopol> heh
06:03:32 -!- RockerMONO has changed nick to Rocker|away.
06:04:40 <RodgerTheGreat> The result was the first artificial sentience. It was aware, in some sense, but not in any fashion comprehensible to humans. By studying the design of the new program, researchers made more progress in artificial intelligence in a year than had occurred in the previous century.
06:05:39 <bsmntbombdood> i sure could use some extra sentience
06:07:20 <RodgerTheGreat> The tool continued to grow and evolve, assisted by researchers skilled in diverse fields. Because the AI division of Axon was called "Green sector" he tool was known simply as "Project Green" or just "Green".
06:08:18 <RodgerTheGreat> And so, Green was the progenitor, or archetype, if you will, of every AI that followed it. It designed many itself.
06:08:46 <oklopol> bsmntbombdood: have you been wining up?
06:09:13 <bsmntbombdood> oklopol: maybe
06:09:21 <RodgerTheGreat> oklopol: and no, sorry- I don't have a lot of patience for simply writing. I think making comics is much more rewarding and expressive (if much more grueling)
06:11:24 <oklopol> i just don't like comics that much, since i suck at decrypting them :P
06:11:50 <oklopol> i don't doubt you can get all that in comic form
06:12:00 <oklopol> bsmntbombdood: is it a secret?
06:12:08 <bsmntbombdood> huh?
06:12:13 <RodgerTheGreat> pikhq: thoughts?
06:12:37 <oklopol> bsmntbombdood: about the 'maybe'
06:13:26 <bsmntbombdood> oklopol: i guess that's only an american thing
06:13:47 <bsmntbombdood> (that use of "maybe")
06:14:21 <oklopol> nope, international
06:14:32 <oklopol> i guess taking stuff literally for fun is a finnish thing
06:14:52 <bsmntbombdood> pink gin is pretty good
06:15:48 <pikhq> Bone.
06:17:19 <RodgerTheGreat> bone?
06:18:14 <pikhq> Esperanto for 'good'.
06:18:20 <pikhq> Pronounced bon-eh.
06:20:33 <RodgerTheGreat> I originally assumed you were suggesting a name for something.
06:20:42 <RodgerTheGreat> I'll attempt to apply it in an ironic fashion.
06:21:48 <RodgerTheGreat> oh, side note- there's an entire group of protagonist robots in this story named after 6502 opcodes.
06:24:20 <RodgerTheGreat> TAX TEY DEX ROR ROL BNE LSR CMP, etc
06:24:50 <RodgerTheGreat> It's a little tough selecting ones that are pronounceable. :S
06:26:27 <RodgerTheGreat> the ones above could be phonetically constructed as follows: Tacks, Tay, Decks, Roar, Rahl, Benny, Laser, and Comp
06:26:47 <oklopol> benny?
06:26:54 <oklopol> why not bone :-)
06:26:58 <RodgerTheGreat> heheh
06:27:09 <RodgerTheGreat> now that's an interesting idea
06:27:20 <RodgerTheGreat> that could be perfect
06:27:23 <oklopol> i'm fairly sure pretty much no one could deduce they're from opcodes
06:27:33 <oklopol> i love that, on the other hand
06:27:41 <RodgerTheGreat> well, they'll be spelled like the opcodes in many cases
06:29:09 <oklopol> might be a fun expericence for the reader to realize at some point the names were opcodes all along
06:29:56 <RodgerTheGreat> I'm trying to figure out a way to correlate their names and serial numbers to hide a program to do something
06:30:19 <oklopol> :D
06:30:23 <RodgerTheGreat> but it's really hard to imagine a 6502 program that works at all without repeating. :/
06:30:51 <RodgerTheGreat> I call upon the collective minds of #Esoteric to help me come up with something nifty!
06:31:24 <oklopol> that's the problem with writing fiction: the coding part is simply too hard.
06:31:25 <RodgerTheGreat> ROL, TAX and BNE must all be used in the program, and it must ideally be at least 30 instructions long
06:31:58 <RodgerTheGreat> if we can make a random number generator, it'd be a brilliant full-circle
06:32:29 <oklopol> that's actually something that seems feasible to do
06:33:03 <RodgerTheGreat> yeah, I know
06:33:08 <oklopol> basically, x: add mul jmp x, and then some obfuscation?
06:33:24 <RodgerTheGreat> 6502 doesn't have a multiply instruction
06:33:30 <RodgerTheGreat> welcome to 6502.
06:33:31 <oklopol> hmm
06:34:13 <RodgerTheGreat> we have 5 registers in 6502 land: An accumulator, two index registers X and Y, a stack pointer and a program counter
06:34:27 <oklopol> we need a fixed prime to multiply with, shouldn't be hard to do with binary logic
06:34:32 <RodgerTheGreat> we can address 256 pages of 256 bytes of memory
06:34:33 <oklopol> binary arithmetic
06:34:48 <RodgerTheGreat> stack operations are actually really clean and easy, mercifully
06:36:03 <oklopol> could try cooking something up, wonder if there's a 6502 emulator or something
06:37:10 <RodgerTheGreat> 6502 has 11 addressing modes ranging in complexity from straightforward to outright mindbending
06:37:26 <RodgerTheGreat> oklopol: there are many, many, many 6502 emulators
06:38:50 <oklopol> yeah, just found that out myself
07:09:55 <RodgerTheGreat> 'night, folks
07:56:36 -!- GregorR has set topic: And BP said "LET THERE BE BLIGHT!" And there was blight..
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:02:49 <oklopol> in code golf, is the "size" the size in bytes? 35 bytes is kinda short for choose :\
08:05:00 <oklopol> {AB->*:..A/*$:..B|*:..$A-B}
08:05:05 <oklopol> oklotalk won though
08:05:09 <oklopol> \o/
08:05:28 <oklopol> whoops
08:05:44 <oklopol> {AB->*:..A/*(:..B|:..(A-B}
08:07:06 <oklopol> btw | there is union, fun way to do the factors of the denominator :D
08:07:54 <oklopol> have to do that in cise
08:15:48 <oklopol> ;aB,-A,/FcA*FcBFc best i could do right now, ";aB" splits an input list into n and k, where B (the k in n choose k) is left in the stream "-A" specifies the function that's applied to the object on the stream, in this case B, so A-B will be left on the stream, then just divide factorial of A by the product of the factorial of b and factorial of that which was on the stream == A-B
08:18:29 <oklopol> ;ab;)&*,/_A*_B_-AB here, factorial is defined in terms of reduce, which is )&
08:18:57 <oklopol> the function factorial, )&*, is put on the stream, and used as "_"
08:19:26 <oklopol> i wanna see choose in golfscript, i bet i own it
08:20:06 <oklopol> anyone know golfscript?
08:25:01 <oklopol> Thanks go to Flagitious for sending in this challenge. Something that might be of interest to you Code Golfers - He recently created a language called GolfScript which was designed specifically to be good for golfing. Please visit the site and have a look. This challenge can be solved in 21 bytes in GolfScript, which he estimates being half the size of what the winning submission on Code Golf will be!
08:25:13 <oklopol> i owned golfscript, as i assumed :)
08:25:35 <oklopol> and didn't even use any spesific features of cise, it naturally has Chs for choose.
08:25:49 <oklopol> so...
08:26:03 <oklopol> 3 bytes, 21 bytes, that's an ownage factor of 7
08:33:31 <oklopol> heh, gcd: ;aB,'B%AB
08:33:45 <oklopol> this uses a cise-spesific thingie
08:34:07 <oklopol> which i think i also used with quicksort and mergesort, so this is not especially made for this situation.
08:34:21 <oklopol> when a calculation fails, the contents of the stream are just passed on
08:34:44 <oklopol> this means B=0 naturally ends the calculation, and returns A, because it was on the stream
08:34:50 <oklopol> otherwise, the stream is left untouched
08:35:28 <oklopol> it's actually ;Ab,'B%AB, because we want A on the stream ofc, otherwise gcd(a,b) would've been 0
08:36:30 <oklopol> here, the parsing of "Ab" into ["A", "b"] instead of just one variable is determined by the fact parsing it as ["Ab"] would've left "BA" without meaning.
08:36:58 <oklopol> "B % B A" in case i'm not the only one whose client messed that up
08:37:12 <oklopol> Cise <3
08:40:57 <oklopol> cise does have the minor problem though that there is no way to actually call a function with a value, you can currently just describe functions.
08:41:26 <oklopol> although just specifying that the last function in the program is called should suffice
08:43:22 <bsmntbombdood> wow oklopol has been talking for a long time
08:43:37 <oklopol> hmm, 29 bytes for 1000 digits of pi... fuck
08:43:55 <oklopol> anybody wanna tell me how pi is calculated digit-by-digit :|
08:44:21 <oklopol> bsmntbombdood: just praising my victory over golfscript
08:44:48 <oklopol> and realizing i may be doing that too early, since... 29 bytes for 1000 digits of pi, fuckz :\
08:46:02 <oklopol> probably add support for stuff like that so that you only need to describe the method of getting a new digit and specify the base to use
08:46:09 <oklopol> but that doesn't help me with the actual algorithm :)
08:47:43 * oklopol is contemplating making the empty program output "Hello, world!"
09:19:37 -!- helios24 has joined.
09:20:29 -!- oerjan has quit ("Gooed knight").
10:14:58 -!- lifthrasiir has joined.
11:30:22 -!- Figs has joined.
11:32:26 <Figs> Hello.
11:36:36 -!- jix has joined.
11:38:50 <Figs> If I modify EBNF so that alternations are tried in the order specified, can a grammmar still be ambiguous?
11:38:57 <Figs> *grammar
11:50:40 -!- danopia has quit (Connection timed out).
11:57:15 -!- timotiis has joined.
11:59:52 -!- slereah__ has joined.
12:00:12 <slereah__> Number of argument :9
12:00:12 <slereah__> Set of combinators to compose from (separated by ,) :s,k,i,0,t,l,b,c,q,v,m,u,w,o
12:00:14 <slereah__> ``tk`v`k0 converts to ``c`t`k0k
12:00:16 <slereah__> 44801.8916142 s
12:00:18 <slereah__> 12 hours.
12:00:34 <slereah__> The Juggernaut succeed, though it's not the shortest way
12:02:57 <Figs> what?
12:05:01 <slereah__> It's a combinator shortener.
12:05:27 <slereah__> Although the way it generates them, it's only roughly by order of size.
12:06:10 <Figs> uh, ok
12:06:33 <Figs> slereah__'s talk ------------>
12:06:40 <Figs> (my head)
12:07:09 <Figs> I'm trying to work out how to handle errors in my parser system
12:07:28 <Figs> where should errors be reported?
12:07:51 <slereah__> To the FBI
12:07:57 <Figs> ;_;
12:08:15 <Figs> that's not what I meant :D
12:10:41 <slereah__> Then what!
12:11:44 <Figs> If I have a parser that supports backtracking, how do I tell where my error is?
12:13:50 <Figs> like, if I have foo = (A,B)|(A,C)|(A,D)
12:14:01 <Figs> and my input is AF
12:14:09 <Figs> (or something like ...AF)
12:14:52 <Figs> reporting "failed to match foo at ____" is not necessarily the correct thing to do
12:15:12 <Figs> like say I have the following C code:
12:15:16 <Figs> int x,y
12:15:22 <Figs> int main() {
12:15:25 <Figs> ... etc ...
12:16:21 <Figs> I'd like it to say "expected semicolon at ____ but got ___" but more likely, you'd get something like "unexpected ____ at ____"
12:17:36 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
12:18:06 -!- slereah__ has joined.
12:19:36 -!- eagle-101 has quit (Read error: 110 (Connection timed out)).
12:22:21 <Figs> O_o
12:22:25 <Figs> python lets me do
12:22:28 <Figs> a = [1,2,3,]
12:22:30 <Figs> weird :P
12:23:53 <Figs> huh
12:24:11 <Figs> now that I think about it, python doesn't really explain why the syntax is invalid
12:24:20 <Figs> it just says "syntax error"
12:24:22 <Figs> and points to it
12:24:32 <Figs> perhaps that's the solution to this mess
12:24:50 <Figs> just point to the last place that's actually meetable in the string...
12:25:10 <Figs> that should be after the A, right?
12:25:14 <Figs> ... or
12:25:15 <Figs> hmm
12:26:21 <Figs> what if I had Foo = (A,B)|((A,C),D)|(E,F)?
12:26:21 <Figs> and some input like XYZACX
12:26:37 <Figs> and XYZ is consumed by whatever came before it
12:26:54 <slereah__> NOM NOM NOM
12:39:54 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
12:40:13 -!- slereah__ has joined.
12:56:33 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
13:06:28 -!- Slereah has joined.
13:07:02 <Slereah> >:|
13:15:58 -!- slereah__ has joined.
13:16:37 <Figs> are you having connection problems?
13:22:26 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
13:22:42 -!- slereah__ has joined.
13:28:39 <Figs> I assume that's a yes...
13:34:59 -!- Slereah has quit (Read error: 110 (Connection timed out)).
13:37:32 -!- Slereah-- has joined.
13:37:47 -!- Slereah-- has changed nick to Slereah.
13:46:30 <Figs> @.@
13:46:59 <Figs> wow, this has gone from very nice, very heavy commenting in the last hw assignment, to virtually nothing in this one
13:47:01 <Figs> *sigh*
13:47:14 <Figs> It feels like it was written by two completely different people
13:47:17 <Figs> ...maybe it was. :P
13:47:47 <Slereah> Wut?
13:48:10 <Figs> I'm doing a calculator project for my CS hw
13:48:28 <Figs> basically I have to write a stack and a calculator that converts infix to postfix and then evaluates...
13:48:39 <Figs> yay for basic data structures classes :/
13:49:09 <Figs> A lot of the time, I'd rather start from scratch... is that a bad thing?
13:49:17 <Figs> (that I'd want that; obviously I can't do that)
13:50:10 <timotiis> nah, often easier when you've written the whole lot yourself
13:50:12 <timotiis> what language?
13:51:01 <Figs> C
13:51:29 <Figs> basically the whole assignment is like a big "fill in the blank"
13:52:45 <Figs> if anything, this has taught me that from now on, I should comment what I'm importing from where...
13:52:51 <Slereah> Heh.
13:53:15 <Figs> since the thing is full of all these functions from about three different files and I can't find the one I have to modify :P
13:53:26 <Figs> imagine if there were 100 files!
13:53:29 <Figs> it'd be a mess
13:56:12 <Figs> I should say, three .c files -- there's a lot more in the project
13:56:38 <Figs> I should further qualify that with "that I have to look at"
13:56:38 <Figs> :D
13:56:47 <Figs> </rant>
14:03:21 <Slereah> Justv give him back a program in Malbolge.
14:03:58 -!- slereah__ has quit (Read error: 110 (Connection timed out)).
14:08:18 * Slereah 's trying to make a BF interpreter in python
14:08:24 <Slereah> Unbalanced brackets are hard to deal with
14:14:46 <Figs> I wrote a bf interpreter in C a while back I think...
14:14:51 <Figs> I wonder what I did with it...
14:15:35 <Figs> ha... I just wrote about 7 lines of comments for 3 lines of code...
14:16:06 <Figs> excuse me... 18 lines of comments :P
14:16:16 <Figs> wow, my numberic senses are terrible today
14:16:21 <Figs> *numeric?
14:19:42 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
14:19:57 -!- Slereah has joined.
14:25:19 <Figs> wb
14:37:01 -!- slereah__ has joined.
14:37:06 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
14:41:38 -!- Rainarrow has joined.
14:42:46 <Rainarrow> Please say "Hello, World!"
14:42:59 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
14:46:21 -!- Slereah has joined.
14:46:35 <Rainarrow> Please, someone tell me if there's interpreters working any more?
14:47:34 <Slereah> Of what?
14:56:04 <Rainarrow> IRP, I guess
14:56:11 <Rainarrow> Internet Relay Program
14:56:23 <Rainarrow> I'm told if I put the program here, I get outputs
14:56:24 <Rainarrow> like
14:56:32 <Rainarrow> Please say "Hello, world!"
14:56:34 <Rainarrow> this way
14:56:51 <Figs> I think you want #IRP
14:56:57 <Figs> but I'd have to look at the logs
14:57:39 <Rainarrow> ok, thanks
14:59:03 <Rainarrow> Hello, Figs, I see you entered and left #IRP
14:59:29 -!- slereah__ has joined.
14:59:40 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
14:59:50 <Figs> I did :)
15:00:05 <Figs> doesn't look too active
15:00:12 <Figs> but I could be wrong.
15:00:15 <Rainarrow> yeah, but my program got executed!
15:00:18 <Figs> yay!
15:00:20 <Figs> :)
15:00:30 <Figs> remember to thank your interpreter :)
15:00:52 * slereah__ hates his connection
15:01:18 <Figs> slereah__, what are you on?
15:02:06 <slereah__> WIFI
15:03:55 <slereah__> Oh. So it was IRP
15:04:54 <slereah__> Should I change #esoteric to #IRP ion the wiki?
15:05:54 <Rainarrow> I think you should, #IRP is really amusing me
15:06:14 <Asztal> there's a request on the talk page for that from the 3rd of January
15:06:18 <Asztal> ... 2007
15:06:20 <Asztal> :D
15:06:57 <Rainarrow> :D
15:07:21 <Figs> :P
15:07:28 <slereah__> Asztal: Done.
15:07:47 <slereah__> And if I am to die for this heroic act, then so be it!
15:10:30 -!- RedDak has joined.
15:10:45 <Figs> whoo! it compiles!
15:10:57 <Rainarrow> yeah, and executes
15:11:12 <Rainarrow> wait, shouldn't IRP be a interpretation language?
15:11:21 <Rainarrow> instead of a compiled
15:11:37 <Figs> my C program :P
15:11:39 <Figs> not IRP
15:11:59 <Rainarrow> ok
15:17:57 <slereah__> Heh. The old borgs had such cheap costumes.
15:27:44 -!- ehird has joined.
15:51:10 <Figs> hello ehird
15:51:18 <Figs> IRP with us! :D
15:52:26 <slereah__> Something that has always bugged me is, the force fields can stop a million nuclear missiles, but if there's something theoretically non-threatening, it passes through!
15:53:04 <slereah__> For instance, PEOPLE THAT WILL WIN THE BATTLE
15:56:22 <ehird> Figs: noes
15:58:52 <Rainarrow> ....
15:59:00 <ehird> who are you
15:59:00 <Rainarrow> slereah__: did u mean Starcraft 2 or something?
15:59:04 <ehird> i don't recall you, Rainarrow
15:59:09 <ehird> hmm, 'u'.. bad start
15:59:45 <Rainarrow> Hello ehird, I am new to here
16:00:01 <Rainarrow> ehird: sorry for the abbreviation, I won't do it anymore
16:00:46 <Rainarrow> I was googling around for brainf*ck, then I found IRP
16:00:50 <Rainarrow> and I followed it here
16:00:59 <Rainarrow> so it's my first time visiting here
16:01:02 <ehird> well, welcome
16:01:02 <ehird> :)
16:01:12 <Rainarrow> Nice to see all you guys, nice to see you ehird
16:02:14 <ehird> ditto
16:02:15 <Rainarrow> :)
16:03:54 <Figs> Whee, happy potato magic!
16:04:03 <Figs> O_o, o_O, *flee!*
16:04:35 <Figs> I should write some Obfs. C with all my variables as O_o and o_O
16:04:53 <Rainarrow> .......
16:05:39 <Figs> just think... O_o()->(O_o)->(O_o)()
16:05:39 <ehird> Figs: been done
16:05:40 <Rainarrow> and O_O and 0_0
16:05:40 <Rainarrow> #Error: variables can't begin with numbers
16:05:52 <ehird> Rainarrow: are you a compiler or something
16:05:52 <ehird> :P
16:06:01 <Figs> he's an IRP interpreter
16:06:22 <ehird> Figs: O_o(!!!)->O_O(...(o_o))->o_O
16:06:27 <ehird> with liberal use of #define
16:06:38 <Figs> Yeah, yeah, but I mean no defines. :)
16:06:51 <Rainarrow> Hello ehird, I'm an apprentice IRP interpreter, nice to meet you!
16:06:55 <Figs> using O_o as a void*
16:07:05 <Figs> I'd probably actually have to do
16:07:30 <Figs> (*O_o)()->(O_o)->(*O_o)();
16:07:31 <Figs> etc
16:07:47 <Figs> and have the functions I use actually modify O_o as I go
16:08:16 <Figs> my teacher actually showed us obfuscated C in our CS class
16:08:30 <Figs> s/our/my
16:08:56 <Rainarrow> ..
16:08:56 <Rainarrow> lol
16:09:29 <ehird> Figs: computer science... C... hmm
16:09:34 <ehird> I wouldn't call that computer science
16:09:45 <Figs> my university does
16:09:47 <ehird> I'd call it 'computer programming' :)
16:09:50 <Figs> *shrug*
16:09:56 <Figs> it's simple stuff
16:09:58 <Figs> kind of boring
16:10:14 <ehird> Figs: it's a bad CS class, then :)
16:10:31 <Figs> I'm assuming (hoping) it will get better
16:10:46 * pikhq has yet to take a CS class. . .
16:10:48 <Asztal> have they shown you anything other than C?
16:10:52 <ehird> Figs: It is unlikely.
16:10:52 <Figs> Java.
16:10:56 <Figs> :P
16:10:57 <Rainarrow> tejeez: how do I get him back online?
16:10:58 <ehird> Ahh. You're fucked.
16:11:03 <pikhq> I'm just a self-taught decent coder. . .
16:11:12 <pikhq> Figs: And anything else taught in 'CS'?
16:11:19 <ehird> Congrats for getting a JavaSchool CS course, try not to listen to it, you might turn retarded :-)
16:11:29 <Figs> We're going to see C++ by the end of the class
16:11:39 <ehird> yeesh
16:11:43 <ehird> that is NOT computer science
16:11:44 <Figs> sometime over the next couple years I expect to encounter OCaml
16:11:49 <ehird> unlikely
16:11:51 <Figs> but I don't know when
16:11:54 <Rainarrow> ..I guess they actually meant Counter Strike by CS
16:12:09 <Figs> Not so unlikely since I've seen other CS students (higher grades) doing it for class projects
16:14:12 <ehird> Figs: Still, it's a JavaSchool CS course, probably with an added helping of Jebus(TM) and Enterpriseyness
16:14:56 <Figs> Jebus?
16:14:56 <pikhq> At the school I'm going to, C++ is not the CS program. . . That's just CS 101.
16:15:18 <Figs> They told me that I'm never going to see C++ in the program again, most likely, after this class
16:15:20 <ehird> Figs: I don't know why I said that. :D
16:15:28 <pikhq> Um, what?
16:15:37 <pikhq> Ugh.
16:16:05 <ehird> CS should be a highly theoretical thing :P
16:16:19 <ehird> Personally I think the programming languages involved should be ones like Scheme and Haskell..
16:16:25 <Figs> That's why I'm taking discrete math.
16:17:14 <Figs> I have a (required) basic data structures course (mostly C) and a math cs course
16:17:22 <Figs> in addition to normal math and a logic course
16:18:12 <pikhq> ehird: They strongly recommend you learn other programming languages by the time you're done with the data structures course (freshman level, IIRC).
16:18:52 * pikhq is, of course, at a different, stronger college
16:18:57 <pikhq> Well, will be.
16:19:54 <slereah__> Hm. apparently, this chan's window doesn't light up anymore when new messages arrive
16:20:05 <Figs> I can fly! (m)- ^_^ -(m)
16:20:07 <slereah__> Rainarrow, I meant Star Trek, not Starcraft
16:20:51 <Rainarrow> slereah__: ok, I see
16:20:57 <ehird> I would say that MIT probably is the only university which has a Platonic Ideal CS course, but then they changed Scheme to Python, which also means no more SICP! damn them
16:21:32 <pikhq> ehird: Sadly, there's colleges worse than what Figs described.
16:21:48 <pikhq> One of the ones I glanced at had C Programming as an advanced course.
16:22:01 <ehird> C can be very hard to understand because of integers!
16:22:03 <pikhq> With, of course, Java being used for the first 2 years. D':
16:22:06 <ehird> :D
16:22:31 <pikhq> Oh, and UNIX was also considered an advanced level course. . .
16:22:59 <ehird> Note: PERL is a descendent of the older language Perl, designed for the web. Perl was for desktop programs in Windows(R), but was considered to be too difficult to learn, and PERL was created instead.
16:23:09 <pikhq> (MST just assumes you're building everything with GCC)
16:23:17 <ehird> (Alternatively, s/PERL/CGI/, s/Perl/PERL/)
16:23:51 <Figs> MST?
16:24:01 <pikhq> Missouri University of Science & Technology.
16:24:02 <slereah__> Maladie Sexuellement Transmissible
16:24:37 <Rainarrow> Maximum Shutter Time
16:26:03 <pikhq> Anyways: a lot of schools just suck at teaching CS.
16:26:39 <pikhq> Frankly, programming should be a single, 101-type course, and you should then move on.
16:26:52 <slereah__> To what?
16:27:08 <pikhq> ... Actual computer science?
16:27:51 <Figs> what I'm learning is newbie CS; this is freshman year after all
16:27:58 <pikhq> Ah.
16:28:02 <Figs> what is a stack, tree, queue, etc?
16:28:17 <Figs> most of the people in my class haven't done C, it seems like
16:28:24 <Figs> so they're also learning C
16:28:53 <Figs> the first assignment was to reinvent console IO using fgetc and fputc
16:29:22 <Figs> (including handling numbers properly, etc)
16:29:23 -!- useless_bot has joined.
16:30:01 <useless_bot> I'm
16:30:13 <useless_bot> I'm a silly bot, and I _love_ cheese!
16:30:38 -!- useless_bot has left (?).
16:30:56 <ehird> let me guess
16:31:02 <ehird> asiekerka or whoever did that
16:31:15 <ehird> wait, no
16:31:15 <ehird> .fi
16:31:19 <ehird> cxuriuous
16:31:23 <Figs> it's an extention of #IRP
16:36:28 <RodgerTheGreat> hey guys
16:36:44 <Rainarrow> Hello
16:36:53 <ehird> Hello
16:36:55 <slereah__> Hi.
16:37:01 <ehird> oellH
16:37:21 <Figs> Hi RTG
16:37:23 <slereah__> leo Hl
16:37:25 <Figs> #IRP :)
16:40:04 <RodgerTheGreat> 'sup, Rainarrow, ehird, slereah__, Figs?
16:40:26 <Rainarrow> #IRP :)
16:40:30 <slereah__> Well, the Juggernaut succeeded.
16:40:37 <slereah__> In 12 hours of computation.
16:40:57 <ehird> slereah__: Epic. What was it doing?
16:40:59 <ehird> RodgerTheGreat: Hello
16:41:07 <slereah__> Although I should change the code so that it actually tries every combination in order of *length*
16:41:21 <slereah__> ehird: The IsZero function.
16:42:14 <ehird> What is it?
16:42:51 <slereah__> Well, returns true for 0, false for other numbers.
16:43:00 <slereah__> The result being "``tk`v`k0 converts to ``c`t`k0k"
16:43:09 <slereah__> In 44801.8916142 seconds
16:43:15 <Rainarrow> I'm leaving guys, nice to see you all today
16:43:43 <RodgerTheGreat> cya
16:43:58 <slereah__> The actual shortest result is ``v`k0k, but as said, it doesn't do it in order of length so far.
16:50:37 <Figs> cya rainarrow
16:50:40 -!- Rainarrow has quit ("Leaving").
16:51:37 <Figs> wassup, RTG?
16:52:13 -!- eagle-101 has joined.
16:55:20 <RodgerTheGreat> Figs: not much yet
16:55:28 <RodgerTheGreat> did you see my new comic?
16:57:29 <Figs> no
16:57:35 <ehird> no
16:57:39 <RodgerTheGreat> http://nonlogic.org/dump/images/1200773495-pg1.png
16:57:39 <RodgerTheGreat> http://nonlogic.org/dump/images/1200773511-pg2.png
16:57:39 <RodgerTheGreat> http://nonlogic.org/dump/images/1200773524-pg3.png
16:57:39 <RodgerTheGreat> http://nonlogic.org/dump/images/1200773536-pg4.png
16:57:40 <RodgerTheGreat> http://nonlogic.org/dump/images/1201410011-pg5.png
16:57:40 <RodgerTheGreat> http://nonlogic.org/dump/images/1201410023-pg6.png
16:58:50 <ehird> RodgerTheGreat: what happened to the prime-number-popup one, anyway?
16:59:02 <ehird> you never made more than 2, or at least i dont' recall you having said anything about any further editions in here
16:59:36 <RodgerTheGreat> that was backburnered, but I may pick it back up when I have time
17:00:43 <Figs> Add 1 to Crusade giving Crusade ... haha :)
17:00:48 <Figs> COBOL?
17:00:58 <ehird> Figs: yes
17:01:22 <Figs> One of these days I should learn COBOL...
17:01:29 <Figs> and Fortran
17:01:39 <ehird> please don't
17:01:40 <ehird> :D
17:01:43 <RodgerTheGreat> I know a little COBOL- enough to make jokes, at least. :D
17:02:18 <Figs> ehird: Why not? I already know brainfuck, some Befunge... I don't think COBOL will hurt my mind more than brainfuck
17:02:46 <slereah__> Well, Brainfuck is easy to learn
17:02:51 <Figs> {this is where you should insert "That's what it wants you to think... muahahaha... *ahem*"}
17:03:03 <slereah__> Not to program, but you can learn it in like half an hour.
17:03:19 <Figs> RTG, you've seen Simulated Comic Product #4 right?
17:03:26 <RodgerTheGreat> An hour to learn, a lifetime to master
17:03:34 <RodgerTheGreat> Figs: I think so, lemme check...
17:03:41 <slereah__> Something like that, yes
17:04:45 <RodgerTheGreat> yes
17:09:12 <Figs> Your comic reminded me vaguely of it
17:09:49 <ehird> you know how freenode demands log links in the topic?
17:10:00 <Figs> ?
17:10:00 <ehird> we should encrypt the URL with a one-time pad, tell nobody what it is, and put it in the topic
17:10:17 <Figs> log links?
17:10:24 <ehird> links to the channel logs if there are any
17:10:32 <ehird> you have to link to them or you can't have them, is official policy
17:16:12 <slereah__> I should first generate the new list of combinators, sort it by length, and then try them out.
17:16:50 <slereah__> Otherwise, (v`k0) (k) arrives after (tk) (v`k0)
17:22:06 <Figs> gah
17:22:10 <Figs> my throat is a world of pain
17:22:40 <Figs> evil pain foo! >.< Damn ye, damn ye colds!
17:22:42 <slereah__> Stop drinking Draino
17:33:57 -!- ehird[erc] has joined.
17:34:01 <ehird[erc]> test
17:34:07 <ehird[erc]> \x -> x
17:34:19 <slereah__> Success!
17:34:25 <ehird[erc]> (\x -> [1..2]!!1) <= 2
17:34:26 <ehird[erc]> hah
17:34:29 <ehird[erc]> unicode symbols irc!
17:34:35 <ehird[erc]> unfortunately it trashes ERC's colours
17:34:41 <ehird[erc]> haha, even prime' unicode
17:34:46 <ehird[erc]> but that effs up 'apostraphes'
17:35:34 -!- ehird[erc] has quit (Client Quit).
17:35:37 -!- Asztal has quit (Read error: 104 (Connection reset by peer)).
17:41:16 -!- Asztal has joined.
17:42:07 -!- jix has quit ("CommandQ").
17:49:19 -!- jix has joined.
17:56:35 <Figs> Heading off
17:56:41 <Figs> cyaz
17:56:43 <slereah__> Bai
17:56:50 -!- Figs has quit ("10am -- time for bed!").
17:58:32 -!- Tritonio_ has joined.
17:59:22 -!- Tritonio_ has quit (Client Quit).
18:13:17 -!- Rocker|away has changed nick to RockerMONO.
18:17:23 <slereah__> Seems like a spambot wiped out part of the Piet Q article
18:18:17 <RockerMONO> hi
18:18:20 <RockerMONO> slereah__: Piet Q????
18:18:26 <slereah__> Hi.
18:19:04 <slereah__> Piet Q.
18:19:20 <RockerMONO> what's Piet Q?
18:19:41 <slereah__> http://www.esolangs.org/wiki/Piet-Q
18:20:47 <RockerMONO> oh cool
18:29:44 <ehird> so revert
18:31:32 * slereah__ isn't used to wikis
18:31:40 <ehird> history->
18:31:45 <ehird> click the second-last revision's date
18:31:46 <ehird> click edit
18:31:49 <slereah__> I did it
18:31:52 <ehird> submit, add edit summary 'reverting spam'
18:32:04 <slereah__> Well, not the full procedure
18:32:09 <slereah__> But it's back the way it was
18:33:16 -!- RedDak has quit (Read error: 113 (No route to host)).
18:45:27 -!- RedDak has joined.
18:47:55 <slereah__> What would be sorting a list of strings by length in Python?
18:48:30 <ehird> sort(lst, lambda x,y: len(x) <=> len(y))
18:48:30 <ehird> iirc
18:48:40 <slereah__> Thanks.
18:49:23 <ehird> btw
18:49:25 <ehird> don't use <>
18:49:26 <ehird> use !=
18:50:13 <ehird> oh
18:50:17 <ehird> sorted(lst, lambda x,y: cmp(len(x),len(y)))
18:50:49 -!- danopia has joined.
18:51:12 <slereah__> Hm. Apparently, sorting by length is the default function for lists of strings
18:51:54 <ehird> no
18:51:58 <ehird> i don't think so.
18:52:03 <ehird> it should do alphabetical, then length
18:52:10 <slereah__> >>> a = ["aaa","aaaa","a","","aa"]
18:52:10 <slereah__> >>> a.sort()
18:52:10 <slereah__> >>> print a
18:52:10 <slereah__> ['', 'a', 'aa', 'aaa', 'aaaa']
18:52:24 <slereah__> Oh.
18:52:26 <ehird> try ["abc","b"]
18:52:29 <ehird> :)
18:52:36 <ehird> but anyway! sorted(lst, lambda x,y: cmp(len(x),len(y)))
18:53:40 <slereah__> What's lambda x,y for?
18:53:53 <puzzlet> comparing
18:54:43 <slereah__> Well, seems to work.
18:54:45 <slereah__> Thanks.
18:55:02 <ehird> lambda is an anonymou function.
18:55:07 <ehird> do you even KNOW python..?
18:55:46 <slereah__> Enough to program stuff in it.
18:55:54 <slereah__> Not enough to program it in an elegant way.
18:57:17 <slereah__> I mostly use basic functions.
18:57:30 <slereah__> And so far, not much need to use sorting functions.
18:57:38 <ehird> lambda isn't a sorting function
18:57:41 <ehird> lambda is a basic language feature.
18:58:50 <slereah__> Not basic enough it seems
19:03:38 <slereah__> http://pastebin.ca/875240
19:03:41 <slereah__> Much better.
19:05:33 <oklopol> slereah__: lambda is a lambda...
19:06:07 <oklopol> i'm assuming you know what that means given that you live for your combinators?
19:06:14 <slereah__> Yes
19:07:02 <oklopol> lambda param1, param2.. paramn: result
19:07:23 * Asztal likes C#'s syntax
19:07:38 <oklopol> lambda x, y: cmp(len(x), len(y)) is a lambda that takes two params, takes their len and compares them as integers using cmp
19:08:08 <oklopol> Asztal: enlighten me!
19:08:15 <Asztal> (x, y) => x.Length.CompareTo(y.Length)
19:08:29 <Asztal> ignore the horrible .NETty comparing ;)
19:08:34 <oklopol> hehe
19:08:46 <Asztal> with one parameter, it's something like: x => x.Length
19:09:07 <oklopol> i like oklotalk: {#_}
19:09:27 <Asztal> nice.
19:10:27 <oklopol> well, if you want the comparison, {_<>__}
19:10:41 <oklopol> kinda cute
19:10:57 <ehird> (lambda (x) (cmp (length x) (length y))
19:11:04 <ehird> well, only works on lists and i don't know what cmp would be :)
19:11:18 -!- oerjan has joined.
19:11:42 <ehird> or
19:11:50 <oerjan> nand
19:11:52 <ehird> (fun (x) (<> (length x) (length y)))
19:12:04 <oklopol> xnor
19:12:05 <ehird> which does work on strings, in my AsOfYetUnreleasedDialectTM
19:12:14 <ehird> 'fun' and '<>' may change names
19:12:22 <ehird> Maybe just: (fun (x) (cmp (length x) (length y)))
19:12:41 <oklopol> i like dun for func
19:12:45 <oklopol> *fun
19:13:43 <ehird> yeah
19:13:50 <ehird> borrowed from ML
19:14:08 <ehird> 'LispDialect: makes programming (fun ...)'
19:14:32 <ehird> also it exists nicely with defun
19:16:44 <ehird> :D
19:16:56 <ehird> oklopol: give me a weird oklotalk sample and explain it
19:16:58 <ehird> :P
19:24:16 -!- Hiat1 has joined.
19:24:24 <Hiat1> Hello all
19:25:17 <slereah__> Hi.
19:25:21 <Hiat1> Oerjan : Thanks yet again - what would I do without you :P
19:25:51 <oklopol> ehird: too tired :D
19:26:00 <Hiat1> I thought that this would be appreciated here: http://xkcd.com/285/
19:26:32 <oklopol> btw. i've added some seriously weird stuff, i'm beginning to feel it cannot be executed fast.
19:26:38 <oklopol> i mean, ot
19:26:59 <oerjan> Hiat1: it would if we didn't all read xkcd already :D
19:27:10 <oerjan> well, even then
19:27:16 <Hiat1> oh, lol :)
19:27:33 <oerjan> actually i learned about xkcd from this channel
19:27:34 <Hiat1> I just discovered it today oerjan
19:27:46 <Hiat1> damn, well I tried ;)
19:28:21 <slereah__> Hm. The program found ^x^y.yx in three minutes.
19:28:40 <slereah__> I should try weeding out more possibilities.
19:31:23 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
19:32:57 <slereah__> 2 minutes when removing stuff of the form ```skX[stuff]
19:33:36 <ehird> Hmm, is 'writing malbolge' generally considered not very hard any more? :P
19:33:44 <slereah__> Malbolge
19:33:46 -!- oklopol has joined.
19:33:48 <slereah__> See? Just did it!
19:33:55 <ehird> I might make a 'decoded malbolge -> malbolge' program thing.
19:34:07 <slereah__> Your funeral!
19:34:13 <ehird> then... something like BrainFuck->decoded malbolge
19:34:45 <Hiat1> enjoy...
19:34:48 <Hiat1> but yes, I agree with Slereah, you're digging your own grave ;)
19:35:06 <slereah__> Yes. And you're digging it with a spoon
19:35:19 <Hiat1> *toothpick
19:35:58 <oerjan> *hair
19:36:15 <slereah__> *by breathing really hard on the ground
19:36:30 <Hiat1> *by staring it down until it submits to your will
19:36:31 <oerjan> *by thinking that the soil should move
19:36:53 <Hiat1> *by doing nothing in the hope that something will happen
19:36:54 <slereah__> *At a distance of 7 parsecs from the plot
19:37:18 <Hiat1> ehird: I think you get the point :P
19:37:55 <slereah__> But well, who knows!
19:38:57 <Hiat1> Yes, IFF you succeed you'll be rushed of in a private jet to some exotic location and have your milk personally sliced by three slaves
19:39:11 <slereah__> I read sexuality into that
19:39:13 <Hiat1> (not a typo)
19:39:19 <Hiat1> lol
19:39:34 <Hiat1> ok, your water then
19:39:45 <oklopol> that's just sic
19:40:02 <Hiat1> fine, your tea
19:40:12 <Hiat1> OK WITH EVERYBODY?
19:40:13 <oerjan> mark, if oklopol thinks something is sick then it _really_ is
19:40:13 <slereah__> Makes me think of teabagging
19:40:16 <Hiat1> :P
19:40:23 <oklopol> oerjan: did you miss the pun?!?
19:40:32 <oerjan> oh
19:40:40 <oklopol> :)
19:40:52 <oerjan> well my remark still stands ;)
19:40:57 <oklopol> i guess :D
19:41:12 <oklopol> just watching http://www.pornhost.com/3715829895/ xD
19:41:25 <Hiat1> ok, well, im off to shower
19:41:25 <oklopol> i'm gonna move to japan
19:41:28 <Hiat1> so I suppose, brb
19:43:20 <slereah__> A hord of strapping young men with vibrators?
19:43:26 <slereah__> I don't like where this is going!
19:43:55 <slereah__> Is that like the Japanese version of the hangman?
19:44:08 <oklopol> answer wrong and get raped! this is the greatest game show ever :D
19:44:15 <slereah__> At every mistake, the threat becomes even bigger
19:44:30 <slereah__> It's quite a different culture!
19:44:30 -!- pikhq has quit (Read error: 104 (Connection reset by peer)).
19:45:09 <slereah__> The girl doesn't look too thrilled
19:45:33 <oklopol> that's just their way to enjoy it!
19:46:10 <slereah__> Oh noes, her car is going down!
19:46:15 -!- pikhq has joined.
19:46:15 <slereah__> No doubt to the RAPE MACHINE
19:46:38 <slereah__> That's the silliest rape I've ever seen
19:47:09 <oklopol> i've seen sillier
19:47:28 <slereah__> Well, not in video at least.
19:47:44 <oklopol> japs always cry in porno
19:47:58 <oklopol> it's just convention!
19:48:16 <slereah__> What do you think those people put in their resumes?
19:48:20 <oklopol> a two inch penis isn't gonna hurt anyone
19:48:30 <oklopol> xD
19:48:38 <slereah__> "I raped people in game shows while making silly noises"?
19:49:16 <oklopol> i'd put that in my cv proudly! :D
19:49:34 <slereah__> I always love the pixelated genitals.
19:49:41 <slereah__> Rape is good. Vaginas are bad.
19:50:20 <oklopol> hehe
19:50:44 <slereah__> This video is quite mind boggling.
19:50:56 <oklopol> the one i linked?
19:50:59 <oklopol> or something in there
19:51:11 <slereah__> I'm trying to imagine a context where such a show would be possible, but I'm just drawing a blank
19:51:30 <oklopol> if tv had stuff like that, i would watch.
19:51:36 <oklopol> and i never watch tv.
19:51:41 <slereah__> Watch, or masturbate?
19:51:50 <oklopol> watch
19:52:16 <oklopol> watching porn is my hobby, not masturbation
19:52:21 <pikhq> Both, I suspect.
19:52:32 <oklopol> well, sure, we're all human.
19:52:32 <slereah__> It's probably the kind of show where you have to be real confident in your partner.
19:53:00 <slereah__> "If she gets it wrong, you get gangraped, with silly noises!"
19:53:03 <slereah__> "Sign me in!"
19:53:13 <oklopol> "sign up your friend!"
19:54:05 <slereah__> I hope they're advised to take some contraceptives before.
19:54:30 <oklopol> it'd be interesting to know how much of that is real
19:54:48 <slereah__> Who knows, maybe it's an actual game show of a porn channel!
19:55:15 <slereah__> But I fear that the cultural barrier might be too thick to guess.
19:55:24 <slereah__> I mean... WOOOOOH WOOOOOH
19:55:30 <oklopol> i don't believe in cultures
19:55:43 <oklopol> ...nor barriers
19:56:05 <slereah__> Care to take a guess then?
19:57:00 <oklopol> umm... yes!
19:57:14 <Asztal> wtf, japan!
19:57:20 <oklopol> :DDDDDDDDD
19:57:27 <slereah__> Asztal has guessed it, I think
19:57:29 <Asztal> never ceases to surprise me.
19:58:06 <slereah__> So Asztal, you can go home with what you've got...
19:58:11 <slereah__> Or get DOUBLE OR RAPE!
19:58:33 <oklopol> Asztal: have you looked at the german stuff? you don't see that on the web if you don't look for it, but i can tell ya, quite a lot of surprises there too :)
19:58:57 <oklopol> although game shows are a pretty much just a japanese thing
19:58:59 <bsmntbombdood> i am good at porn
19:59:06 <oklopol> bsmntbombdood: i can imagine that
19:59:30 <oklopol> ...did i start this topic?
19:59:36 <oklopol> whoops! :)
19:59:41 <slereah__> I fear you have.
19:59:43 <bsmntbombdood> who speaks polish here?
19:59:46 <oklopol> gonna make me some hot sausages ->
20:00:01 <slereah__> Only Polish notation
20:00:07 <oklopol> someone polish was here
20:00:09 <oklopol> nooga?
20:00:20 <oklopol> anyway ->
20:00:38 <ehird> bsmntbombdood: reverse polish
20:02:52 <oklopol> bsmntbombdood: why do you ask?
20:08:26 <bsmntbombdood> i want to hear a polish person say "spirytus rektyfikowany"
20:08:46 <Hiat1> spirytus rektyfikowany
20:09:06 <Hiat1> naah, just pulling your polish, I can do RPN though
20:09:32 <Hiat1> anyway,it's late, im tired, im off
20:10:04 <oklopol> bsmntbombdood: what does that mean?
20:10:13 <bsmntbombdood> oklopol: rectified spirit
20:10:29 <bsmntbombdood> ie water-ethanol azeotrope
20:10:37 <oklopol> mmmja
20:27:46 -!- Corun has joined.
20:30:05 <ehird> ABC!
20:30:17 -!- calamari has joined.
20:35:37 -!- calamari has left (?).
20:40:34 <oerjan> !
20:41:00 <slereah__> Ø rlÿ?
20:42:01 <oerjan> rl!
20:43:03 -!- Corun has quit ("This computer has gone to sleep").
20:48:20 -!- RedDak has quit (Remote closed the connection).
20:55:13 -!- RedDak has joined.
21:03:39 <slereah__> Aaaaargh.
21:03:55 <slereah__> Damn Juggernaut.
21:05:37 <ehird> hm. i just spent a load of time writing 'setq' as a macro
21:05:45 <ehird> depending on:
21:05:57 <slereah__> (``ss`kk)(`k`si) appears before (`s`k`si)(k)
21:06:22 <ehird> COMPILE-TIME: if, null, car, pair, cdr, cadr, error, or, cddr
21:06:29 <ehird> RUN-TIME: progn, set
21:06:56 <slereah__> I should find out what's the step at which point the expression can only be bigger
21:11:20 * oerjan smells a halting problem
21:11:39 <ehird> 'There is no empirical proof that Athiest exist.' -- anonymous person
21:12:09 <slereah__> Empirical ~ That I will accept?
21:12:50 <ehird> ATHEISTS DON'T EXIST IT'S A LIE
21:13:22 <slereah__> BRAISE THE LARD!
21:17:36 -!- helios24 has quit ("Leaving").
21:19:19 <pikhq> Of course atheists exist.
21:19:26 <pikhq> Who else would worship Athe?
21:19:44 <slereah__> Muslims?
21:19:48 <ehird> this is a good point
21:21:26 <Asztal> Spagnostics unite! :)
21:21:43 <pikhq> Spagnostics: Those who know sp?
21:22:02 <GregorR> Flying SPAGhetti Monster?
21:22:16 <pikhq> GregorR: That's pastafarianism.
21:22:27 <GregorR> They can have more than one name :P
21:22:40 <slereah__> OR CAN THEY?
21:22:48 <slereah__> That will lead to schisms!
21:24:58 <Asztal> Hmm, apparently "the Flying Spaghetti Monster is often used by atheists, agnostics (known by Pastafarians as "spagnostics"), and others as a modern version of Russell's teapot"
21:25:07 <Asztal> which isn't exactly what I thought it meant.
21:25:29 <slereah__> I think the length will immediatly be superior at every step, since the minimal length of a new step will be the max+1 of the old
21:25:51 <slereah__> So I just need to compare every valid expressions from the first valid step
21:26:46 -!- slereah__ has changed nick to Slereah.
21:30:52 -!- timotiis has quit (Remote closed the connection).
21:32:00 <ehird> personally i think you
21:32:11 <ehird> 're all heathens for not seeing the True Nature of the Invisible Pink Unicorn, in Her Holiness
21:32:48 -!- timotiis has joined.
21:33:30 <RodgerTheGreat> bah. The Invisible Pink Unicorn is just a bunch of nutjobs misinterpreting the presence of his noodliness.
21:34:01 <pikhq> The Invisible Pink Unicorn is a mere servant of His Noodliness.
21:35:09 * RodgerTheGreat is currently wearing his MTU Pastafarian Club T-shirt.
21:38:14 <Asztal> soon my Gospel of the Flying Spaghetti Monster shall arrive... :)
21:38:16 <Slereah> Ah shit.
21:38:30 <Slereah> It doesn't depend on length, it depends on the order of applications.
21:39:16 <RodgerTheGreat> I'm actually the Pastarrr of my local pastafarian youth group
21:39:25 <Slereah> ``ss`kk jus applies two elements from [s,k,i,ss,kk,...], while `s`k`si must apply s to `k`si
21:39:29 <ehird> to be honest i don't like being molested by spaghetti
21:39:40 <ehird> i much prefer being molested by a unicorn, that is invisible, and pink
21:39:42 <Slereah> ehird: Not even for your immortal soul?
21:39:51 <Slereah> Well, pink is a little gay
21:39:54 <Slereah> Especially with that horn
21:39:58 <RodgerTheGreat> http://laughingsquid.com/wp-content/uploads/unicorn_power.jpg
21:39:59 <ehird> Slereah: But it's invisible.
21:40:00 <ehird> QED
21:40:10 <Slereah> But still horny!
21:40:14 <ehird> RodgerTheGreat: Yes, pretty much, except it's white, and visible
21:43:40 -!- Azstal has joined.
21:48:19 -!- Asztal^_^ has joined.
21:49:49 -!- Asztal^_^_ has joined.
21:50:47 <ehird> ..
21:55:15 -!- jix has quit ("CommandQ").
21:57:28 -!- Asztal^_^ has quit (Read error: 104 (Connection reset by peer)).
21:58:31 -!- Asztal^_^_ has quit (Read error: 104 (Connection reset by peer)).
21:58:31 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
21:58:42 -!- Slereah has joined.
21:59:59 -!- Asztal has quit (Read error: 110 (Connection timed out)).
22:00:52 <Slereah> Seems the Juggernaut just exchanged speed for shortness
22:03:14 <Slereah> Third step with three combinators, that's a maximum of 24,492 combinators to check
22:03:31 <Slereah> Damn that combinatorial explosion!
22:04:26 <oklopol> i wonder how many mad scientists have died in a combinatorial explosion
22:05:35 -!- Azstal has quit (Read error: 110 (Connection timed out)).
22:08:04 -!- slereah__ has joined.
22:13:47 -!- eagle-101 has quit (Remote closed the connection).
22:15:08 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
22:15:53 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
22:16:31 -!- Asztal^_^_ has joined.
22:16:37 -!- Asztal^_^_ has changed nick to Asztal.
22:16:39 -!- slereah__ has joined.
22:16:57 <slereah__> Damn you internet!
22:29:56 -!- Asztal has quit (Remote closed the connection).
22:32:44 -!- RedDak has quit (Read error: 110 (Connection timed out)).
22:33:24 -!- RedDak has joined.
22:41:44 -!- RedDak has quit (Remote closed the connection).
22:53:07 <ehird> sdf
23:14:20 -!- Corun has joined.
23:28:32 -!- timotiis has quit ("leaving").
23:34:56 -!- Corun has quit (Read error: 110 (Connection timed out)).
23:36:15 <ehird> POLL
23:36:17 <ehird> stack display:
23:36:24 <ehird> top top-1 top-2 ... end
23:36:24 <ehird> OR
23:36:30 <ehird> end ... top-2 top-1 top
23:37:10 <RockerMONO> ehird: if i knew what either of those were i'd be able to answer =P
23:41:31 <oerjan> obviously it should be
23:41:32 <oerjan> top
23:41:34 <oerjan> top-1
23:41:36 <oerjan> top-2
23:41:37 <oerjan> ...
23:41:38 <oerjan> end
23:42:13 <oerjan> i mean you cannot call it top unless it's on the TOP, now CAN YOU?
23:42:33 <ehird> heh
23:43:28 <ehird> I love Haskell. I'm just terrible at it :D
23:46:09 <slereah__> oerjan: What if you're in Australia?
23:48:24 <oerjan> slereah__: well the Australians have their monitors upside down, so it cancels out
23:52:56 <pikhq> ehird: That depends upon the language.
23:53:05 <pikhq> If it's RPN, end ... top-2 top-1 top.
23:54:25 <slereah__> RPN is like reversing the polarity.
23:54:28 <slereah__> *rimshot*
23:58:32 <ehird> pikhq: Welp it's concatentative, so yeah
23:58:34 <ehird> But..
23:58:35 <ehird> This is easiest.
23:58:41 <ehird> because a stack is top : (top-1 : ...
23:58:51 <ehird> Also: if you represent functions as a stack.
23:59:01 <ehird> You pop off an instruction. run it. loop.
23:59:07 <ehird> So: This way means it's printed correctly.
23:59:29 <oerjan> it's only an added reverse to change it...
23:59:35 <ehird> I guess.
23:59:37 <ehird> I'll do that then
23:59:49 <ehird> Done.
2008-01-28
00:00:07 <ehird> my concatentative language will have a way to run functions in a specific stack :D
00:00:19 <ehird> [2 3] {+} runInStack
00:00:32 <ehird> -> [5]
00:00:43 <ehird> this incidentally makes a repl very easy. :p
00:01:01 <ehird> (methinks a stack will also have a lexical closure: so variables inside it are local to it)
00:01:17 <ehird> which is VERY esoteric :)
00:01:33 <pikhq> :)
00:04:15 <ehird> pikhq: stacks have lexical closure idea: y/n
00:04:22 <pikhq> y
00:05:21 <ehird> :D
00:05:52 <slereah__> I should make a C version of Lazy Bird.
00:06:02 <slereah__> Though the idea of going back to C doesn't thrill me.
00:07:09 <slereah__> What's a good C tutorial?
00:08:31 <pikhq> The C Programming Language.
00:09:11 -!- Tritonio_ has joined.
00:10:37 <slereah__> Thank god for Bittorrent.
00:19:24 -!- Asztal has joined.
00:20:04 -!- ehird has quit ("This computer has gone to sleep").
00:36:48 -!- adu has joined.
00:37:01 <adu> hi
00:37:24 <adu> My hash-language has reached version 0.0.1!
00:37:29 <adu> this is a big step
00:43:51 * pikhq now has time for PEBBLE-tastic stunts
00:43:59 <pikhq> Hmm.
00:44:14 <pikhq> Now, back to the drawing board for the ultimate in Brainfuck-targetting languages. :p
01:08:53 <adu> my hash-language is so advanced, you can make classes in it now :)
01:09:35 <pikhq> PEBBLE is so unadvanced, I don't have arrays in it now.
01:09:37 <pikhq> :)
01:09:40 <adu> counter = (count = 0, tick = (counter = (counter.count = (counter.count + 1))))
01:09:57 <adu> thats how you make a counter object
01:10:51 <adu> counter.tick increments the count by redefineing the object as the output of that expression
01:11:40 <adu> to make a class, just abstract the name with a pattern
01:12:28 <adu> makeCounter = (\name = (count = 0, tick = (\name = (\name.count = (\name.count + 1)))))
01:12:31 <adu> so simple
01:13:13 <oerjan> should there really be \'s on the \names after the first one?
01:13:41 <adu> oerjan: i dunno I haven't implemented patterns yet, just hash's and lists :)
01:15:08 <adu> oerjan: but not that you mention it, I think you're right, only the first one needs a pattern escape
01:15:27 -!- Corun has joined.
01:15:37 <oerjan> possibly you need the first to be doubled
01:16:02 <oerjan> one for the actual pattern, one for assigning to it
01:16:05 <adu> oerjan: why? for obfuscation purposes?
01:16:17 <adu> hmm
01:16:34 <oerjan> well i am thinking lambda calculus
01:16:49 <adu> oerjan: this is close to lambda calculus, its hash-calculus :)
01:17:50 <adu> since the objects of my lang are kind of bastardizations of both lambdas and hashes, I'm thinking of calling them something else...
01:18:12 <adu> phrases
01:18:31 <adu> but then again, that doesn't really make it clear
01:19:08 <adu> I'll let you know when I implement patterns
01:19:51 -!- adu has quit (Remote closed the connection).
02:10:37 -!- chuck has joined.
02:59:34 -!- oerjan has quit ("leaving").
03:00:24 -!- GreaseMonkey has joined.
03:01:36 -!- adu has joined.
03:03:27 -!- Corun has quit ("This computer has gone to sleep").
04:07:14 -!- adu has quit ("Computer went to sleep").
04:17:55 -!- oerjan has joined.
04:25:52 <RodgerTheGreat> oh, joy. We will begin learning scheme in my programming languages class tomorrow!
04:26:04 <RodgerTheGreat> I already know some lisp, so this should be fun
04:26:38 <RodgerTheGreat> I'm not sure it'll beat out LOGO as my favorite Lisp-derivative, though
04:36:43 <GreaseMonkey> RodgerTheGreat: i'm learning an esolang known as "Java"
04:36:48 <GreaseMonkey> you might know it
04:37:28 <RodgerTheGreat> I've heard of it
04:38:40 <GreaseMonkey> i'm trying to get the jvm running under linux
04:40:17 -!- GreaseMonkey has quit (Remote closed the connection).
04:42:00 <RodgerTheGreat> shouldn't be that difficult
05:16:05 -!- adu has joined.
05:55:21 -!- GreaseMonkey has joined.
05:56:49 -!- oerjan has quit ("leaving").
07:21:04 -!- adu has quit (Remote closed the connection).
07:23:21 -!- Hiato has joined.
07:40:12 -!- Hiat1 has quit (Read error: 110 (Connection timed out)).
07:50:02 -!- AnMaster has quit (Client Quit).
07:54:22 <slereah__> Hell, I don't remember C having such a strict syntax.
07:54:36 <slereah__> Or maybe it's just my compiler
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:06:45 <oklopol> zibii dibbi doubibay!
08:06:50 <oklopol> *zibbi
08:07:48 <oklopol> o
08:08:04 <oklopol> slereah__: whutta ya mean?
09:25:32 -!- GreaseMonkey has quit ("i can has sleep").
09:33:03 -!- Hiato has quit (Read error: 110 (Connection timed out)).
09:50:52 -!- AnMaster has joined.
10:15:31 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
10:15:42 -!- slereah__ has joined.
10:17:21 <slereah__> oklopol: I tried {\nprintf("Hello, world!"\n}, (replace \n with as appropriate), and it didn't work.
10:17:40 <slereah__> I had to put *two* carriage return after the printf.
10:17:50 <slereah__> My mind was quite boggled.
10:19:54 <oklopol> what language is that?
10:21:59 <slereah__> C.
10:22:18 <slereah__> It seems like such an arbitrary difference!
10:22:32 <oklopol> umm wut
10:26:39 -!- oklofok has joined.
10:26:39 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
10:33:32 -!- Slereah has joined.
10:48:30 -!- slereah__ has quit (Read error: 110 (Connection timed out)).
10:51:37 <AnMaster> slereah__, err? aren't you missing a ; after the printf statement
10:52:12 <AnMaster> Slereah, printf("Hello, world!\n"); looks like *normal* C
10:53:00 <oklofok> apparently two newlines equals a semicolon :-)
10:53:11 <AnMaster> ah
10:53:16 <AnMaster> it does?
10:53:30 <oklofok> well, didn't Slereah say so?
10:54:20 <AnMaster> oklofok, gcc doesn't think it does
10:54:44 <oklofok> me neither
10:55:23 <Slereah> Well, I put in a semicolon
10:55:34 <Slereah> But it wasn't that
10:56:05 <Slereah> Somehow, some way!
10:56:07 <AnMaster> err btw why do you consider C an esoteric language?
10:56:08 <oklofok> well, the last character does have to be a newline
10:56:20 <Slereah> AnMaster: I don't
10:56:21 <oklofok> AnMaster: i don't think he does
10:56:23 <AnMaster> ah
10:56:31 <Slereah> I'm trying to make an interpreter for Lazy Bird on it
10:56:33 <AnMaster> Slereah, well if you could post a test case I would be interested
10:56:41 <AnMaster> "lazy bird" being?
10:56:52 <oklofok> i'm pretty sure he meant there needed to be a newline after }
10:56:54 <Slereah> http://www.esolangs.org/wiki/Lazy_Bird
10:56:59 <oklofok> at least in c++ you need that newline
10:57:03 <Slereah> It can be quite painfully slow in Python
10:58:15 <AnMaster> http://rafb.net/p/ZzXas459.html
10:59:09 <AnMaster> and well I set my emacs to always make sure there is one ending newline, stuff like diff doesn't like it otherwise
10:59:17 <Slereah> Apparently.
10:59:32 <Slereah> Crazy crazy world.
11:00:14 <AnMaster> huh?
11:00:21 <Slereah> Forget it.
11:42:10 -!- puzzlet has quit (Read error: 104 (Connection reset by peer)).
11:42:53 -!- puzzlet has joined.
12:01:21 -!- Corun has joined.
12:01:59 -!- Corun has quit (Client Quit).
12:11:36 -!- puzzlet has quit (Read error: 104 (Connection reset by peer)).
12:13:49 -!- puzzlet has joined.
12:49:22 -!- puzzlet has quit (Remote closed the connection).
12:57:35 -!- puzzlet has joined.
13:06:49 -!- ais523 has joined.
13:08:52 -!- ais523 has changed nick to ais523_.
13:09:28 -!- ais523_ has changed nick to ais523.
13:49:17 -!- puzzlet_ has joined.
13:55:12 -!- puzzlet_ has quit (Read error: 104 (Connection reset by peer)).
13:55:17 -!- puzzlet_ has joined.
14:02:02 -!- puzzlet has quit (Read error: 110 (Connection timed out)).
14:02:21 -!- helios24 has joined.
14:02:40 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
14:06:14 -!- Slereah has joined.
14:10:09 -!- RedDak has joined.
14:12:37 -!- ehird has joined.
14:17:47 <ehird> I just realised how ugly OS X's link cursor is
14:17:51 <ehird> It looks like it' from OS9. probably is. :|
14:18:42 <RodgerTheGreat> link cursor?
14:18:54 <RodgerTheGreat> the hand?
14:20:26 <ais523> BTW, ehird, I rewrote the Underload compiler in Haskell
14:20:48 <ais523> how do I show you the new changes? Is it just darcs push (I've already 'record'ed it)
14:21:40 -!- oerjan has joined.
14:25:41 -!- puzzlet_ has quit (Remote closed the connection).
14:50:12 -!- puzzlet has joined.
14:51:57 -!- Tritonio_ has quit (Read error: 110 (Connection timed out)).
14:53:01 -!- puzzlet has quit (Read error: 104 (Connection reset by peer)).
14:55:13 -!- puzzlet has joined.
15:00:13 -!- ehird has quit (Read error: 113 (No route to host)).
15:21:31 -!- puzzlet_ has joined.
15:27:37 -!- timotiis has joined.
15:34:21 -!- puzzlet has quit (Read error: 110 (Connection timed out)).
15:47:43 -!- RedDak has quit (Read error: 110 (Connection timed out)).
15:48:35 -!- RedDak has joined.
15:55:28 -!- ais523 has quit ("back in maybe about 70/80 mins, maybe longer").
15:58:18 -!- danopia` has joined.
16:10:55 -!- jix has joined.
16:15:21 -!- danopia has quit (Connection timed out).
16:40:55 -!- molchuvka has joined.
16:41:36 -!- molchuvka has quit (Client Quit).
16:57:41 -!- ehird has joined.
16:57:46 <ehird> INTERESTING IDEA:
16:58:00 <ehird> lambda calculus self-interp
17:03:13 <Slereah> It fills me with fear.
17:09:40 <ehird> nah
17:14:13 -!- Corun_ has joined.
17:28:23 <ehird> I am writing a languae with this syntax:
17:28:37 <ehird> expr := '0' | '1' expr expr expr
17:28:41 <ehird> I don't know the semantics yet!
17:29:55 <Slereah> WHAT IF IT WAS BINARY CODE FOR SOMETHING :o
17:30:41 <Asztal> is that "('0') ('1' expr expr expr)" or "('0' | '1') expr expr expr"?
17:31:09 <oerjan> nah, clearly it is a continuation-passing combinator calculus
17:32:04 <oerjan> Asztal: the latter could never end...
17:32:27 <ehird> Asztal: former
17:32:31 <Slereah> Well, why not.
17:32:37 <ehird> oerjan: continuation passing combinator calculus = win
17:32:47 <ehird> but.. not much use for it.. you could drop all but the last expression
17:32:48 <ehird> :P
17:33:06 <Slereah> Man, I hate C.
17:33:34 <ehird> Slereah: You're trying to use it like a high level language. stop it.
17:33:46 <Slereah> Or am I?
17:33:49 <Slereah> I don't know.
17:33:49 <ehird> oerjan: I want to make it involve state somehow!
17:34:02 <ehird> Slereah: think about the raw hardware, and machine code.
17:34:03 <oerjan> yuck! impurity!
17:34:06 <ehird> you'll understand c a lot better
17:34:17 <ehird> oerjan: It's being implemented in haskell, so that's okay. You can pretend they're monads. :(
17:34:22 <Slereah> Will I also use it a lot better?
17:34:36 <ehird> Slereah: Yes
17:35:22 <Slereah> Can't I just hire a million monkeys on a million laptops to do the job instead?
17:35:26 <ehird> No
17:36:04 * oerjan wonders if there actually are that many monkeys in the world
17:36:12 <ehird> oerjan: I don't get the State monad. Just StateT :D
17:36:25 <Slereah> Well, I'm not picky.
17:36:32 <ehird> What return type should my stateful function have?
17:36:46 <Slereah> I'll take any chimps, otters and raccoon too
17:36:50 <Slereah> As long as they have some sort of fingers
17:37:10 <oerjan> the State monad is isomorphic to StateT Identity
17:37:20 <oerjan> Identity is the trivial monad
17:37:49 <ehird> oerjan: Very helpful. Now can you take off your pointy hat and explain how 'I can has state'? :P
17:37:50 <oerjan> no side effects included
17:38:59 <Slereah> Magic, obviously
17:39:21 <oerjan> um State WhateverStateYouUse WhatEverValueYourActionReturns
17:41:05 <ehird> WhateverStateIUse = like, Int if i want to store an int?
17:41:16 <ehird> Should be State Expr Expr then.
17:41:23 <oerjan> right
17:43:43 <ehird> evalState, yes?
17:43:57 <ehird> and I can just call my state function recursively and it'll all get updated into my monad, and al ltaht crap
17:43:59 <ehird> Good.
17:44:05 <oerjan> if you only want the value returned, evalState
17:44:18 <oerjan> if you also want the final state, runState
17:44:52 <oerjan> (if you only want the final state, execState)
17:45:37 <ehird> Um how do I update the state D:
17:45:45 <ehird> and retreive it, inside the monad
17:45:49 <oerjan> put and get
17:45:54 <ehird> kthx :P
17:46:08 -!- ais523 has joined.
17:46:15 <ehird> HELLO ais523
17:46:20 <ais523> hello ehird
17:46:32 <oerjan> http://www.haskell.org/ghc/docs/latest/html/libraries/mtl/Control-Monad-State-Lazy.html
17:46:35 <ais523> I wrote a Haskell version of the Underload compiler
17:46:38 <ais523> just like you asked
17:46:47 <ais523> how do I commit it with darcs?
17:46:51 <oerjan> um wait
17:47:03 <ehird> ais523: haha
17:47:05 <oerjan> http://www.haskell.org/ghc/docs/latest/html/libraries/mtl/Control-Monad-State-Class.html
17:47:07 <ehird> darcs record
17:47:09 <ehird> then darcs push
17:47:13 <oerjan> for get, put and a couple more
17:47:19 <ehird> and i'll nitpickily fix it around ;)
17:47:25 <ehird> ais523: does it produce the exact same output?
17:47:32 <ais523> ehird: no
17:47:42 <ais523> it combines identical codeblocks into the one case element
17:48:07 <ais523> with that turned off, though, it's identical output except with some of the codeblocks in a different order and with different numbers
17:48:32 <ais523> I've pushed 5 patches at you
17:48:49 <ais523> I was using darcs record for versioning by myself while I didn't have Internet access
17:49:56 <ais523> and oerjan: I did think about using a state monad, but in the end decided it was overkill because a simpler method would work
17:50:00 <ais523> I do like monads in general, though
17:50:13 <ais523> I used Parsec's Parser monad for the parsing
17:51:04 <ehird> ais523: oh damn
17:51:07 <ais523> what?
17:51:13 <ehird> nothing, i'll ahve to look at the code
17:51:30 <ehird> because there was an obscure problem i ran into doing something like that the first time i wrote it.
17:51:37 <ais523> what was the problem?
17:51:42 <ehird> i forgot :|
17:52:14 <ehird> also, parsec is pretty useless for thius.. it'll just make the code bigger
17:52:37 <ais523> it's decent at nesting the ()
17:53:05 <ais523> and it produces great error messages!
17:53:38 -!- RedDak has quit (Read error: 113 (No route to host)).
17:54:06 <Slereah> Segmentation fault (core dumped)
17:54:11 <ais523> you do need some sort of monad for parsing, though; there's no other easy way to chain together the 'how much have I already parsed'ness
17:54:12 <Slereah> By Lucifer's beard!
17:54:14 <ehird> Slereah: you fucxked up memory.
17:54:20 <Slereah> Apparently.
17:54:31 <Slereah> Either that or the warp core was dropped.
17:54:59 <ais523> with assigning unique numbers to codeblocks the full monadness wasn't needed because they followed a reasonably predictable-in-advance pattern
17:55:12 <ais523> so there was no need to return the new next number, just whether you'd used up a number or not
17:56:49 <ais523> besides, optimising the compiler for size isn't really that important; it's the size and speed of its output that's important
17:56:52 <Slereah> Ah, the string's too long.
17:56:58 <ais523> and the output is still apparently leaking memory...
17:58:12 <ehird> ais523: i made a change
17:58:16 <ehird> pull?
17:58:41 <ais523> darcs failed: Not a repository: elliotthird.org:/home/darcs/underload (user error ((scp) failed to fetch: elliotthird.org:/home/darcs/underload/_darcs/inventory))
17:58:45 <ehird> o_O
17:58:55 <ehird> wtf
17:59:02 <ais523> it confused me too
18:03:27 <ais523> ehird: http://elliotthird.org doesn't list underload anywhere, but I'm not sure if it's meant to
18:03:55 <ais523> I can ssh to your server without problem, so it's not an auth problem, although I just logged out again rather than looking around to find out what the problem could have been
18:04:18 <ehird> wtf
18:04:20 <ehird> that's bizzare
18:04:25 <ehird> it should list it yes
18:18:26 <ais523> oerjan: I've just blocked the spambots you were having trouble with on Saturday
18:19:22 <oerjan> ais523: ok btw there were a couple new pages included which need to be deleted
18:19:28 <ais523> done that as well
18:21:18 <oerjan> thanks
18:22:31 <oerjan> oh no i've been doomed... :)
18:22:42 <ais523> sorry
18:30:12 <oklofok> !
18:30:16 <EgoBot> Huh?
18:34:29 <Asztal> !emo
18:34:32 <EgoBot> Huh?
18:35:21 <ais523> EgoBot will generally respond to anything starting with !.
18:35:25 <ais523> !ul (Huh?)S
18:35:28 <EgoBot> Huh?
18:59:46 -!- UnrelatedToQaz has joined.
19:00:18 <UnrelatedToQaz> Who's BP? The fuel company?
19:01:42 <ais523> that was somewhat out of context
19:02:09 <UnrelatedToQaz> I've only just come in, I exist outside of context.
19:02:14 <UnrelatedToQaz> I just saw the title.
19:03:26 <ais523> it's probably an old topic from years ago
19:03:33 <ais523> they seem to be in vogue at the moment
19:06:55 <ehird> no
19:06:56 <ehird> it isn't
19:07:03 <ehird> it's based on my The Last Question topic nostalgia lame gag
19:07:16 -!- ehird has set topic: And fuel companies--.
19:09:22 <UnrelatedToQaz> What time is i
19:09:25 <UnrelatedToQaz> t?
19:09:32 <ais523> 19:09 UTC
19:09:41 <ais523> sorry, 19:10 UTC
19:09:45 <UnrelatedToQaz> not utc, local
19:09:58 * ais523 lives in UTC at the moment
19:10:07 <ais523> and in UTC+1 during summertime
19:10:07 <oerjan> 20:10
19:10:15 <UnrelatedToQaz> oh, ok then
19:10:29 <UnrelatedToQaz> utc's me too
19:11:03 <UnrelatedToQaz> it's just it seemed quiet
19:12:27 -!- UnrelatedToQaz_ has joined.
19:12:36 -!- UnrelatedToQaz_ has quit (Client Quit).
19:21:06 <RockerMONO> hi
19:26:00 <ais523> hello
19:30:02 -!- UnrelatedToQaz has quit (Read error: 110 (Connection timed out)).
19:34:31 -!- puzzlet_ has quit (Read error: 104 (Connection reset by peer)).
19:35:32 -!- puzzlet has joined.
19:40:43 -!- danopia` has changed nick to danopia`school.
19:42:41 -!- danopia`school has changed nick to danopia.
19:44:14 -!- danopia has quit ("2b || !2b").
19:44:29 -!- danopia has joined.
20:08:25 -!- ehird has quit ("This computer has gone to sleep").
20:10:07 -!- Insane has joined.
20:10:09 <Insane> Hey
20:10:21 <Insane> I'm trying to run the 99 bottles of beer program in Malbolge
20:10:22 -!- eagle-101 has joined.
20:10:29 <Insane> On my homemade interpreter
20:10:38 <Insane> But apparantly it's "gzipped" and "uuencoded"
20:11:24 <ais523> you must have the old program that just printed out the literal text
20:11:30 <Insane> Yeah
20:11:33 <ais523> rather than using a loop
20:11:40 <ais523> there's a newer version on 99-bottles-of-beer.net
20:11:42 <ais523> that does loop
20:11:44 <Insane> Well the new program only pritns out three characters that are well above the 20k range
20:11:51 <Insane> For some reason
20:11:59 <ais523> uuencoded gzip should be plaintext
20:12:00 <Insane> It's the only program that didn't run correctly so far
20:12:05 <ais523> because that's what uuencode does
20:12:25 <Insane> Hrm
20:12:34 <Insane> Why can't WinRAR open the file when saved as .zip?
20:12:37 <Insane> the old version
20:12:54 <Insane> ACtually, can somebody unzip and uudecode it for me, and upload the resulting program?
20:13:07 <Insane> Otherwise, I'll just forget 99 bottles and stick with the ~5 text outputting programs
20:16:35 <ais523> the program itself isn't zipped and uuencoded
20:16:38 <ais523> it's the output that is
20:16:49 <Insane> Ooh
20:16:52 <ais523> because they couldn't fit the entire song into the program otherwise
20:16:53 <Insane> so why does it fail to run?
20:17:01 <ais523> don't know
20:17:04 <Insane> Meh
20:17:17 <ais523> BTW, you can recognise uuencoded text by a line that generally starts begin 644
20:17:25 <ais523> although the numbers are sometimes different
20:17:28 <Insane> I think it's becasue I'm following wikipedia's simplified guide instead of the actual specification
20:17:43 <ais523> the spec and sample interpreter contradict each other
20:17:48 <Insane> Well that too
20:17:49 <Insane> I mean
20:17:53 <ais523> most programs are written to follow the interpreter rather than the spec
20:17:55 <Insane> I'm not even following the sample interpreter
20:18:05 <Insane> I'm following what I say on wikipedia
20:18:12 <Insane> *saw
20:18:32 <eagle-101> ais523, follow the sample interpreter :)
20:18:35 <eagle-101> gah Insane
20:19:05 <bsmntbombdood> hey, this is a delicious drink
20:19:15 <Insane> Bah
20:19:39 <Insane> I'll just accept the fact that it works for the small programs
20:20:02 <ais523> Esolang seems to agree with Wikipedia, anyway
20:20:16 <Insane> hm
20:20:36 <Insane> The guide on wikipedia says nothing of decryption, and nothing of "subtracting 33" at any time, while the example interpreter does both of that
20:20:39 <Insane> so I wonder
20:21:58 <ais523> one of the decryption stages cancels itself out
20:22:12 <ais523> or to be more precise, instead of decrypting the program, you can encrypt the spec to get the same result
20:22:20 <ais523> which is what the Wikipedia and Esolang guides do
20:22:45 <Insane> Hmm
20:22:47 <Insane> oh ok
20:22:49 <Insane> That explains it
20:23:00 <Insane> So why doesn't 99 bottles of beer run on mine?
20:23:00 <SimonRC_> apparently ESR didn't write the Jargon Dictionary, Steele did http://www.infoq.com/presentations/fortress-steele
20:23:04 <SimonRC_> (see summary)
20:23:06 <SimonRC_> X-P
20:23:15 <ais523> maybe there's a bug in your interpreter
20:23:27 <ais523> are you encrypting commands correctly after they've run, for instance?
20:23:45 <ais523> after you run a command, you encrypt the command immediately before the next command to be run
20:24:01 <ais523> which is usually the command that just run, but usually not if the command that just run was a jump
20:24:13 -!- SimonRC_ has changed nick to SimonRC.
20:24:17 <ais523> most simple Malbolge programs avoid jumps altogether so that the encryption doesn't matter
20:24:31 <Insane> Well that's what I think I have wrong
20:24:39 <Insane> Since the wikipedia guide was extremely fuzzy on that matter
20:24:42 <Insane> Here's what I'm doing:
20:25:02 <Insane> After execution, if it WASN't a jump, it encrypts the current instruction
20:25:15 <Insane> if it was a jump, it encrypts the instruction before the current one
20:25:21 <ais523> no
20:25:26 <Insane> hm?
20:25:30 <ais523> if it wasn't a jump, it encrypts the instruction that just run
20:25:36 <Insane> after that, it increases C and D regardless
20:25:40 <ais523> if it was a jump, it encrypts the instruction before the one jumped to
20:25:41 <Insane> erm
20:25:47 <Insane> hm
20:25:53 <Insane> ISn't that the same thing?
20:26:13 <ais523> you said 'encrypts the current instruction' the first time
20:26:16 <Insane> Look:
20:26:19 <ais523> although it's probably not what you meant
20:26:29 <Insane> if it wasn't a jump, it encrypts [C]
20:26:34 <Insane> if it was a jump, it encrypts [C-1]
20:26:50 <Insane> Where jump is defined as C = [D]
20:27:07 <Insane> Isn't that correct?
20:27:10 <ais523> no
20:27:12 <ais523> command runs
20:27:16 <ais523> then [C] is encrypted
20:27:19 <ais523> then C is incremented
20:27:35 <Insane> Where's the difference?
20:27:48 <ais523> so in a jump, C = [D], then [C] is encrypted, then C is incremented to give the new command
20:27:54 <Insane> ok
20:28:03 <ais523> outside a jump, something happens, then [C] is encrypted, then C is incremented to give the new command
20:28:49 <Insane> So I get rid of my: if (not jump) encrypt [C] else encrypt [C-1] and replace it with just encrypt [C]?
20:28:55 <ais523> that's it
20:28:58 <Insane> ok
20:29:06 <Insane> lemme test
20:29:11 <ais523> as long as that step happens before the place where you increase C and D
20:29:12 -!- puzzlet has quit (Remote closed the connection).
20:29:17 -!- puzzlet has joined.
20:29:50 <Insane> Hello world works
20:30:37 <danopia> Bye world?
20:30:50 <RockerMONO> danopia: fail
20:33:16 <Insane> Hmm
20:33:23 <Insane> the 99 bottles loop version doesn't work
20:33:29 <danopia> World, how are you today?
20:33:41 <danopia> Insane, did you try it wiht teh official compiler?
20:33:46 <Insane> not yet
20:33:53 <Insane> hmm
20:33:54 <danopia> try
20:33:59 <RockerMONO> Insane: so try it with the official one, damnit =P
20:33:59 <Insane> but the text outputting version works
20:34:00 -!- jix has quit (Remote closed the connection).
20:34:02 <Insane> ok
20:34:08 <Insane> The fake 99 bottles one works with my compiler
20:34:12 <RockerMONO> heh
20:34:21 * RockerMONO pokes the topic and wonders if anyone knows what happened to it
20:34:26 <Insane> heh
20:34:57 <Insane> The official one works
20:34:59 <Insane> hrm
20:35:10 <Insane> So the real loop version is the only one I need to get to work on mine
20:35:12 <ais523> people have been messing with the topic a lot recently
20:35:15 <Insane> Should I upload my source?
20:35:19 <ais523> you may as well
20:35:26 -!- danopia has set topic: And fuel companies--they overprice fuel.
20:35:27 <danopia> there
20:35:31 <danopia> topic is better
20:35:31 <danopia> :P
20:35:34 <ais523> http://pastebin.ca used to be in the topic as a place to do so, before people started messing with it
20:35:38 <RockerMONO> danopia: lol
20:35:38 <Insane> lemme comment it
20:35:43 * danopia only aded on a compile words
20:35:46 <ais523> the topic that is, rather than the pastebin
20:35:46 <danopia> couple*
20:36:05 -!- RockerMONO has set topic: And fuel companies--they overprice fuel || http://pastebin.ca (ais52's idea to put this here).
20:36:07 <RockerMONO> =P
20:36:18 -!- danopia has set topic: And fuel companies--they overprice fuel || http://pastebin.com (ais52's idea to put this here).
20:36:23 <RockerMONO> er......
20:36:27 <danopia> what?
20:36:32 <RockerMONO> danopia: way to change the topic without fixing a typo >.>
20:36:37 * RockerMONO adds the 3 and stops before people get mad
20:36:40 -!- RockerMONO has set topic: And fuel companies--they overprice fuel || http://pastebin.com (ais523's idea to put this here).
20:36:44 * RockerMONO 's done now =P
20:36:55 <danopia> ok
20:37:01 <ais523> now, a sane topic would mention Esolang (http://esolangs.org/wiki), and the logs (http://tunes.org/~nef/logs/esoteric)
20:37:17 <eagle-101> ais523, {{sofixit}} :D
20:37:37 -!- RockerMONO has set topic: http://pastebin.com for pastes || Esolang - http://esolangs.org/wiki || logs - http://tunes.org/~nef/logs/esoteric.
20:37:52 <ais523> RockerMONO beat me to it
20:37:55 <RockerMONO> =P
20:37:59 <ais523> but I was busy sofixiting, honest
20:38:05 <eagle-101> :)
20:38:08 <RockerMONO> lol
20:38:30 <ais523> anyone noticed how sofixit is mentioned far more often than it's actually used?
20:38:41 <eagle-101> http://pastebin.com for pastes || Esolang - http://esolangs.org/wiki || logs - http://tunes.org/~nef/logs/esoteric || fuel companies -- overprice fuel
20:38:43 <ais523> not particularly on-topic here, though, but the conversation often isn't anyway
20:38:44 <eagle-101> gah
20:39:11 <RockerMONO> ais523: it seems to be bursts of on-topic every once in a while ;)
20:39:13 <ais523> and how did pastebin.ca end up changing to pastebin.com anyway?
20:39:24 <RockerMONO> ais523: danopia's fault
20:39:35 -!- RockerMONO has set topic: Pastebin - http://pastebin.ca || Esolang - http://esolangs.org/wiki || logs - http://tunes.org/~nef/logs/esoteric.
20:39:55 * RockerMONO will smack the next person who changes the topic needlessly in the face =P
20:39:59 <ais523> they both seem to work
20:40:06 <ais523> but neither has syntax highlighting for Malbolge
20:40:30 <RockerMONO> ais523: malbolge has a syntax?
20:40:44 <ais523> syntax highlighting is incredibly useful in Malbolge
20:40:45 <eagle-101> RockerMONO, you beat me :)
20:40:52 <ais523> you use the colours to see what the commands mean
20:40:57 <ais523> and the characters to see what the commands area
20:41:01 <ais523> s/a$//
20:41:14 <ais523> because it's kind of hard to read otherwise
20:41:20 <RockerMONO> ais523: once again
20:41:29 <RockerMONO> ... it has a syntax?
20:41:39 <ais523> different letters mean different commands in different locations
20:41:45 <ais523> so you highlight according to which command is which
20:42:05 * ais523 tends to write syntax highlighters for just about anything, when the fancy takes them
20:42:05 <eagle-101> RockerMONO, I take it... it has a syntax :)
20:42:15 <RockerMONO> =P
20:42:33 <eagle-101> now... my question is this... is there a language harder to code in then malbolge?
20:42:57 <ais523> have you seen Malbolge Unshackled?
20:43:22 <eagle-101> ais523, uh... no
20:43:33 <Insane> http://insane.pastebin.com/f66aa2388
20:43:37 <Insane> Now help me with that code :P
20:43:40 <Insane> I can't find the error
20:43:43 * eagle-101 is interested though :P malbolge looks bad enough I'd be shocked if there was something worse
20:43:47 <ais523> nobody's figured out how to code in Xigxag, nor do anything but constant-string output in Dupdog, but neither is known to be programmable in at all
20:43:48 <Insane> And everything but the 99 bottles loop runs
20:44:00 <ais523> eagle-101: all 3 languages have pages on Esolang IIRC
20:44:16 <eagle-101> oh ok
20:44:22 <Insane> Xigxag?
20:44:49 <eagle-101> ais523, and it has not been proven that it is not possible to code in either right?
20:44:58 <ais523> no, it hasn't
20:45:04 <Insane> To my knowledge that's the first Malbolge interpreter ever written in C#
20:45:05 <ais523> it's suspected that both are impossible to code in, in fact
20:45:07 <oerjan> yay, someone mentioned my language :)
20:45:14 <eagle-101> http://esoteric.voxelperfect.net/wiki/Xigxag
20:45:29 <ais523> Malbolge Unshackled is oerjan's, I think
20:46:09 <oerjan> aye
20:47:12 <ais523> I take it the enctable is correct?
20:47:20 <ais523> if there was a typo there it would be unlikely anyone would notice
20:47:21 <Insane> You can re-read it
20:47:27 <ais523> s/was/were/
20:47:27 <Insane> I took the values from wikipedia
20:48:06 <Insane> If the enctable was incorrect, why would every non-loop program work?
20:48:21 <ais523> because it doesn't affect programs that don't loop
20:48:29 <ais523> because commands are encrypted only after they've run
20:48:41 <ais523> and your problem may be that you have the wrong enctable
20:49:10 <ais523> the one on Esolang starts 5z]
20:49:13 <Insane> hmm, right
20:49:18 <ais523> but it's written as corresponding ASCII characters rather than numbers, which makes comparison hard
20:49:24 <ais523> it's not the same as yours, anyway
20:50:15 <ais523> I think...
20:50:47 <ais523> ah, I see
20:50:55 <ais523> Esolang's table starts at 33, whereas Wikipedia's starts at 0
20:51:09 <ais523> as it's modular arithmetic anyway you could start anywhere, I suppose
20:51:09 <Insane> The enctable is correct
20:51:30 <ais523> so yes, it is the right enctable
20:51:30 <Insane> hm
20:51:43 <Insane> I double-checked every single value, they're all correct
20:51:49 <Insane> according to wikipedia
20:52:36 <ais523> the crazy looks right as well
20:52:40 <Insane> yh
20:52:51 <Insane> And I've double and triple and quadruple tested the Ternary encoding/decoding
20:53:25 <ais523> does the Ternary stuff always return exactly 10 trits?
20:53:28 <danopia> Insane, boot Kragoth
20:53:45 <Insane> k
20:53:55 <Insane> ais523, Yeah. Always 10
20:54:14 <Insane> danopia, get you server up
20:54:32 <Insane> *your
20:55:44 <ais523> you don't seem to be doing the chained-crazy method of filling uninitialised memory, but I don't think that would cause the problem you're seeing
20:56:01 <Insane> Yes I did
20:56:03 <Insane> *I do
20:56:21 <Insane> while (__c < 59048)
20:56:24 <Insane> *49
20:56:29 <Insane> That does the crazy
20:56:43 <ais523> ah yes, I missed that bit
20:57:04 <ais523> you should probably check to make sure c is at least 2 first, though, or you'll get a buffer underflow
20:57:09 * RockerMONO hugs his soon-to-have-networking version of brainfuck
20:57:19 <Insane> probably
20:57:42 <Insane> RockerMONO, I made a brainfuck spin-off that supports strings, numbers, networking, file i/o and shell commands
20:57:56 <Insane> The interpreter enver made it past loops though
20:58:00 <RockerMONO> heh
20:58:04 <Insane> I didn't know how to do them back then
20:58:09 <Insane> but my C# brainfuck interpreter works now
20:58:31 <ais523> http://esolangs.org/wiki/L33t is BF-like and supports network connections
20:58:35 <RockerMONO> mine's already functional as a true brainfuck interpreter, embedded loops and all, even breaks out of endless loops and alerts you of them
20:58:41 <Insane> Same
20:58:47 -!- jix has joined.
20:58:49 <Insane> Did you get 99 bottles of beer running on it
20:58:50 <Insane> *?
20:58:51 <Insane> I did
20:58:54 <RockerMONO> Insane: haven't tried
20:58:56 <RockerMONO> got the code?
20:59:13 <Insane> 99-bottles-of-beer.net
20:59:25 <RockerMONO> can you get me the full link so i can try it once i get networking done? ;)
20:59:41 * RockerMONO pokes Insane
20:59:50 <Insane> k
21:00:02 <RockerMONO> :D
21:00:09 <SimonRC> :-)
21:00:22 <RockerMONO> hi SimonRC
21:00:46 <ais523> http://www.bf-hacks.org/programs.html is probably worth looking at if you want some Brainfuck test programs
21:02:35 <ais523> Insane: I can't see anything obviously wrong with your implementation, and I've been staring at it a while
21:02:54 <Insane> Hmm
21:02:57 <Insane> Same for me
21:03:03 <Insane> Which is why the 99 bottles thigny confuses me
21:03:08 <Insane> especially because: (here it comeS)
21:03:16 <Insane> It never calls any output or input command.
21:05:12 <ais523> most likely some jumps are going wayward, or some encryptions are failing
21:05:16 <ais523> I can't see why they would, though
21:05:38 <Insane> Exactly
21:05:45 <Insane> :/
21:14:52 <Insane> Maybe I should debug the C code, printing all of the instructions as they're executed (instead of output), and then do the same with mine
21:14:56 <Insane> And see what went wrong
21:15:17 * ais523 has used that method to debug Underload implementations in the past
21:15:18 * eagle-101 covers his eyes from the bright light that just went on.
21:15:30 <ais523> eagle-101: what?
21:16:10 <eagle-101> ais523, it was a around about comment noting the good idea Insane had (when you get an idea, its similar to the lightbulb turning on)
21:16:25 <ais523> aha
21:16:43 <ais523> but when that happens, the lightbulb's normally above your head, so you can't see it
21:16:56 <eagle-101> ais523, yeah, its above Insane's head, not mine :)
21:17:02 <ais523> but I suppose that if you're looking at someone's head, you can be dazzled by their lightbulb
21:17:08 <eagle-101> exactly!
21:17:09 <oerjan> unless you have a hole in your head
21:17:48 <eagle-101> oerjan, that hole would have to have some visual sensors (like a third eye...)
21:18:07 <ais523> or it could just impinge on your retina from behind
21:18:17 <eagle-101> mmm true :)
21:18:18 <ais523> after all, the light-sensitive part of the retina is at the back
21:18:43 <ais523> the blood vessels, nerves, etc., which supply it are in front of the retina, which isn't the most obvious arrangement
21:18:56 <ais523> as they block the light you would otherwise be looking at
21:19:05 <Insane> I think everybody here knwos that
21:19:51 <RodgerTheGreat> indeed
21:19:56 <Insane> Heh
21:20:25 <Insane> can somebody recompile the C one to output the instruction (JUMP, MOVE, OUT, IN etc.), and have OUT simply do nothing?
21:20:31 <RodgerTheGreat> eyes have a semi- reflective rear coating, however.
21:25:13 <oerjan> ais523: let's all bow down to the squids
21:26:03 <ais523> http://pastebin.ca/876533
21:26:17 <ais523> I think it's a Malbolge debug version in C like Insane requested, although I haven't tested it
21:26:53 <RodgerTheGreat> y'know, now that I think about it, the reference malbolge interpreter is quite compact
21:27:32 <ais523> even if it does do the pointless first layer of encryption
21:28:25 <RodgerTheGreat> the first layer of encryption is there simply to add insult to injury.
21:28:34 <ais523> the second layer is the only one with any real effect on the program
21:33:21 -!- helios24 has quit ("Leaving").
21:37:11 <Slereah> Anyone got an idea on why the string in the AE function is actually just the first char of the string it's supposed to be followed by empty chars? http://membres.lycos.fr/bewulf/Russell/Lazy%20Bird%20C.c
21:38:32 <ais523> Slereah: you aren't responsible for HOMESPRING, are you?
21:38:46 <ais523> I ask because of that code's behaviour on a null input
21:38:56 <Slereah> No.
21:39:07 <RodgerTheGreat> heheh
21:39:09 <ais523> HOMESPRING uses pretty much the same solution to avoid null quines
21:39:45 <RodgerTheGreat> a better way to ask that would be something like "Slereah powers HOMESPRING?"
21:40:35 <ais523> Slereah: with a max string length of 10, you're simply asking for a buffer overflow
21:40:46 <Slereah> ais523: It's just for the tests.
21:40:52 <ais523> and RodgerTheGreat, you're right, I should have tried to work some of the HOMESPRING keywords in there
21:41:02 <Slereah> I'm just using ^aa and ^ab so far
21:41:16 <Insane> Who wants me to write a Piet interpreter?
21:41:33 <RodgerTheGreat> wow, that's a perfect handle
21:42:52 <ais523> Slereah: I've decided that C is probably the wrong language to write that code in
21:43:00 <Slereah> Probably.
21:43:08 <ais523> there's just too much working-around of the lack of a string datatype...
21:43:09 <Slereah> But that's the only other language I know enough
21:43:40 <Insane> Waht are you intepreting?
21:43:40 <Slereah> I could try Scheme or some other functional I guess
21:43:56 <Slereah> Insane: http://www.esolangs.org/wiki/Lazy_Bird
21:44:08 <Slereah> I have an interpreter on Python, but it's just too slow.
21:44:21 <Slereah> The expression tends to grow rapidly in size.
21:44:42 <Slereah> Especially with DER JUGGERNAUT
21:45:55 <ais523> compiling into a functional language is one good way to deal with functional languages
21:46:02 <ais523> when the option is open to you
21:46:41 <Slereah> Well, I suppose I should learn one someday.
21:46:55 <Slereah> Any advice?
21:48:03 <ais523> I would probably try to write something like that in Perl first, but that's just personal preference, and if Python is too slow it's possible Perl would be as well (at least the way I write it)
21:48:25 <ais523> in terms of functional languages, I learnt Haskell on Saturday, and rather like it, but it isn't very good for combinator stuff
21:48:52 <oerjan> o_O
21:48:57 <ais523> and of course, if you're used to C, you could just write C-like C++
21:49:03 <ais523> using just the string type
21:49:07 <oerjan> ah
21:49:16 <ais523> and oerjan, before you complain, try writing a reasonable mockingbird in Haskell
21:49:26 <ais523> the type system just gets too much in the way
21:50:21 <oerjan> it is perfectly well-suited for manipulating combinators, however
21:50:32 <ais523> you just can't write all of them literally
21:50:47 <oerjan> as a data type
21:50:50 <ais523> here's a Haskell problem that I came across:
21:51:16 <ais523> is it possible to write a function that takes a function and a pair as its arguments, applies the function to each element in the pair, and returns the new pair
21:51:24 <ais523> sort of like map, but across pairs rather than lists
21:51:47 <oerjan> join (***)
21:51:49 <ais523> the problem is that the two pair elements can have different types (but functions like show can work on different types, so that shouldn't be a problem)
21:52:03 <oerjan> oh
21:52:09 <oerjan> well that's worse
21:52:23 <ais523> the problem is that the type signature needs to be something like (a -> a2 AND b -> b2) -> (a, b) -> (a2, b2)
21:52:38 <ais523> but Haskell doesn't allow AND in type signatures like that
21:53:38 <oerjan> it allows forall though, with a higher rank types extension
21:53:46 <oerjan> but it will still be awkward
21:54:23 <ais523> in the end I just gave up and passed in the first argument twice
22:01:41 <Slereah> Is Pascal any good?
22:01:52 <Slereah> I used to program in it two years ago
22:03:04 <ais523> it's a bit outdated nowadays
22:03:08 <ais523> the modern version is Delphi
22:03:12 <ais523> but I don't know much about it
22:03:24 <ais523> Pascal was a teaching language, really
22:03:33 <ais523> but it's quite lightweight, which will be good here
22:03:58 <Slereah> I still have my notebook.
22:04:03 <oerjan> i hear Free Pascal is still doing well on language shootout(s(?))
22:04:31 <Slereah> Ah yes, it's the one full of begin and end.
22:04:45 <SimonRC> ais523: maybe you hit the monomorphism restriction...
22:04:56 <SimonRC> did you give the function an explicit type signiture?
22:04:58 <Slereah> As long as it deals well with strings, I guess it's okay.
22:05:00 * ais523 has never heard of that
22:05:09 <ais523> and I always try to give functions a type signature
22:05:12 <oerjan> SimonRC: no, he was probably just stretching polymorphism too far
22:05:19 <ais523> but in that case I couldn't figure out what the type signature ought to be
22:05:33 <SimonRC> what did you want to do?
22:05:41 <Corun_> Monomorphism: http://arcanux.org/lambdacats/type-error-2.jpg
22:06:04 -!- jix has quit ("CommandQ").
22:07:43 <ais523> Corun_: amusing, but not very helpful
22:07:48 <Corun_> Sorry
22:07:52 <Corun_> Try: http://www.haskell.org/haskellwiki/Monomorphism_restriction
22:08:10 <ais523> another thing that annoys me is the different-number-of-params error that GHC gives sometimes
22:08:27 <ais523> where I explicitly have to put junk parameters at the ends of some of the functions just to make the numbers add up
22:08:27 <SimonRC> that is an effect of currying
22:08:33 <SimonRC> um
22:08:42 <ais523> I don't see why I can't write some patterns in a curried form and others uncurried
22:08:48 * SimonRC wonders if ais523's Haskell style isn't a bit skewiff
22:08:59 <SimonRC> ais523: well, you could...
22:09:02 <ais523> it's my functional programming style in general
22:09:11 <SimonRC> just pass in one argument that is a tuple
22:09:18 <SimonRC> can I see the code?
22:10:01 <ais523> it was on ehird's website for a bit, but then disappeared again
22:10:05 <ais523> I'll paste it...
22:11:16 <ais523> http://pastebin.ca/876584
22:11:21 <ais523> but that's a corrected version that compiles
22:11:28 <ais523> even though some of the workarounds are a bit ugly
22:11:46 <SimonRC> so what was wrong there?
22:13:07 <ais523> one example is around line 205
22:13:21 <ais523> where cancelling out the x at the end of the first two cases would be neater in my opinion
22:13:36 <SimonRC> ah, so I see
22:13:42 <SimonRC> yes that would be nice
22:13:50 -!- chuck has changed nick to unixfact.
22:13:53 <SimonRC> though the last line could be written:
22:14:02 <ais523> the example I was discussing earlier is on line 73
22:14:18 <SimonRC> (h:).(replaceExtension t)
22:14:24 -!- unixfact has changed nick to chuck.
22:14:43 <ais523> SimonRC: I know I could make it point-free, but generally I do so only when it makes the code clearer
22:14:50 <SimonRC> just what expression was it not accepting?
22:15:48 <ais523> map2 a p = (a (fst p), a (snd p))
22:16:06 <ais523> where p is of type (t1,t2) not (t,t)
22:16:25 <SimonRC> and what type is a?
22:16:42 <ais523> (t1 -> o1) and also (t2 -> o2)
22:16:48 <ais523> but there's no way to express that easily
22:17:15 <SimonRC> indeed
22:17:17 <ais523> in this exact case, t1 and t2 are both list types with different elements
22:17:18 <SimonRC> that is odd...
22:17:29 * ais523 has to go, anyway
22:17:36 -!- ais523 has quit ("Bye!").
22:18:49 <Slereah> http://shootout.alioth.debian.org/gp4/chartvs.php?test=all&lang=python&lang2=fpascal
22:18:59 <Slereah> I suppose Python isn't all candy and bikerides.
22:24:01 -!- GreaseMonkey has joined.
22:37:07 -!- ehird has joined.
22:37:30 <ehird> ais523 disappeared? blah
22:37:38 -!- ehird has set topic: IRRELEVANT TOPIC.
22:37:46 <ehird> the topic in #esoteric must not be relevant. that's the rule.
22:39:52 <Slereah> But it must have the logs :o
22:40:06 <Slereah> Otherwise, A POX ON US
22:40:22 <ehird> Slereah: bah, if any staff come looking
22:41:00 <Slereah> They'll give us blankets.
22:41:04 <Slereah> Infected with POX
22:41:19 -!- GreaseMonkey has set topic: Pastebin - http://pastebin.ca || Esolang - http://esolangs.org/wiki || logs - http://tunes.org/~nef/logs/esoteric || goatse - http://tinyurl.com.
22:42:13 <Slereah> That's no goatse.
22:43:00 -!- ehird has set topic: goatse.
22:44:01 -!- oerjan has quit ("coughs and wonders what those black spots on his skin are").
22:44:43 -!- timotiis has quit ("leaving").
22:46:08 -!- eagle-101 has set topic: --. --- .- - ... ..
22:49:06 <ehird> 12:58:35 <RockerMONO> mine's already functional as a true brainfuck interpreter, embedded loops and all, even breaks out of endless loops and alerts you of them
22:49:09 <Slereah> I see an O, and an S.
22:49:13 <Slereah> That's not a good sign!
22:49:17 <ehird> RockerMONO: do you know nothing of computer science?
22:49:19 <ehird> Halting problem
22:49:28 <RockerMONO> ehird: erm?
22:49:28 <ehird> But I guess you store every state. That'll really work for real programs on infinite tapes!
22:49:42 <ehird> RockerMONO: it is impossible to detect infinite loops
22:49:48 * RockerMONO took out the endless loop thing, because he's writing an irc bot in it
22:50:00 <ehird> it is impossible
22:50:09 <Slereah> Well, it's impossible for all programs.
22:50:10 <RockerMONO> ehird: true... i sorta took a hackish aproach and made it break after 10,000 loops through the same thing
22:50:18 <ehird> RockerMONO: that's not an infinite loop detector
22:50:20 <RockerMONO> but i took that out
22:50:20 <Slereah> There's plenty of cases where it can be done.
22:50:33 <RockerMONO> and [] is an easy endless loop to detect, btw ;)
22:50:51 <Slereah> For such trivial case for instance!
22:51:32 <Slereah> Hell, if undecidable problems were totally undecidable, I'd have even more trouble with DER JUGGERNAUTEN MACHINE
22:52:55 <RockerMONO> ok lets see if this brainfuck IRC bot works
22:53:01 <RockerMONO> YESSSSSSSSS
22:53:13 <ehird> RockerMONO: what a pointless waste of time
22:53:25 <RockerMONO> ehird: but i have time to waste ;)
22:53:52 <Slereah> If you're here, obviously.
22:54:21 * Slereah <- has a Free Pascal
22:54:27 <Slereah> Let's now tackle the bird.
22:56:10 <RockerMONO> http://pastebin.com/d244e44c3 <-- fun :)
22:57:02 <ehird> lame it has strings.
22:57:38 <RockerMONO> ehird: that's more of a test case
22:57:42 <RockerMONO> i'm working on storing it in memory :)
23:03:53 -!- eagle-101 has quit ("Leaving").
23:06:04 -!- pgimeno has joined.
23:07:58 -!- Insane has quit ("Have a nice day!").
23:14:30 <oklofok> making a brainfuck irc bot is not a waste of time
23:15:28 <Slereah> Don't we already have one?
23:15:39 <Slereah> Egobot, destroy all humans.
23:15:44 <oklofok> do we?
23:15:56 <oklofok> EgoBot is not in brainfuck
23:16:05 <Slereah> Oh, in BF.
23:16:10 <Slereah> I though with a BF interpreter
23:16:34 <oklofok> well, we have dozens of those
23:16:48 <Slereah> Is it enough to kill all humans?
23:16:52 <oklofok> every bot does brainfuck
23:17:02 <oklofok> sure, but killing humans != being made in brainfuck
23:17:37 <pgimeno> has anyone seen graue recently?
23:17:44 <ehird> yes
23:18:46 <pgimeno> there's apparently a problem with the wiki cache, see http://esoteric.voxelperfect.net/wiki/Kayak
23:20:17 <ehird> the wiki is fcsked.
23:21:29 <pgimeno> I have asked in #mediawiki, it seems to be a problem with the page cache because the rest seems to work
23:22:47 <pgimeno> see e.g. http://esoteric.voxelperfect.net/w/index.php?title=Kayak&oldid=7834
23:24:12 <pgimeno> apparently truncating the mw_objectcache table might fix the problem (unless the table structure is so broken as to not being possible to truncate it)
23:25:40 <pgimeno> ehird: could you please tell him if you see him?
23:26:13 <ehird> okay.
23:26:18 <pgimeno> thanks :)
23:28:14 <SimonRC> does GHC have that feature that allows you to partly specify types, and tell the compiler to fill in the rest?
23:28:17 <SimonRC> so instead of writing: (.) (f :: b -> c) (g :: a -> b) = ... you could write (.) :: (b -> c) -> (a -> b) -> _ ; (.) = ...
23:28:28 <SimonRC> and what is it called?
23:31:26 <Corun_> Suggestion: can you just write it without a type and the :t the function to find out it's 'most general' type, then merge what you want with what that says?
23:31:49 <SimonRC> I suppose
23:32:00 <SimonRC> but it might get tricky for some of the uglier types
23:32:04 <SimonRC> just a thought
23:32:07 * SimonRC goes
23:32:21 * SimonRC goes
23:32:24 -!- RockerMONO has changed nick to RockerMONO[enfr].
23:32:24 <Corun_> I guess that's true. Mine was just a thought too :-P
23:32:31 <SimonRC> and wrong window
23:51:38 <Slereah> I'd better go to sleep or I'll regret it.
2008-01-29
00:04:50 -!- puzzlet has quit (Read error: 104 (Connection reset by peer)).
00:05:02 -!- puzzlet has joined.
00:07:18 -!- Corun_ has quit ("This computer has gone to sleep").
00:08:18 -!- pgimeno has left (?).
00:09:33 -!- Corun has joined.
00:22:36 -!- RockerMONO[enfr] has changed nick to RockerMONO.
00:23:11 <RockerMONO> hi
00:31:40 -!- immibis has joined.
00:44:40 -!- dbc has quit (Client Quit).
01:08:55 -!- ehird_ has joined.
01:09:30 -!- ehird has left (?).
01:09:44 -!- ehird_ has changed nick to ehird.
01:17:35 -!- Corun has quit ("This computer has gone to sleep").
01:26:28 -!- immibis_ has joined.
01:26:43 -!- immibis_ has quit (Read error: 104 (Connection reset by peer)).
01:37:50 -!- ehird has quit ("This computer has gone to sleep").
02:19:57 * RockerMONO made an irc bot in brainfuck (using my interpreter that has networking) that can parse brainfuck
02:26:06 -!- immibis has left (?).
02:37:30 -!- RockerMONO has changed nick to Rocker[box].
03:24:40 <GregorR> You shouldn't need an interpreter with networking, just netcat :P
03:25:00 <GregorR> That being said: Really? An IRC bot written IN BF that INTERPRETS BF? That's pretty cool.
03:26:17 <pikhq> Get it on.
03:27:35 <GregorR> This isn't relevant, but it's insanely awesome: http://www.nongnu.org/sps/
03:28:07 <pikhq> Well aware.
03:28:31 <pikhq> Oh.
03:28:36 <pikhq> You did more stuff to it.
03:28:39 <pikhq> That's damned awesome.
03:30:21 <GregorR> I didn't just do more to it, I rewrote it from scratch as a FUSE filesystem utilizing Debian packages.
03:32:28 <pikhq> Damn.
03:48:22 -!- Insane has joined.
03:48:39 <Insane> Somebody do me a favor and randomly link me to a fun language
03:49:04 <pikhq> ERROR: I DON'T WANNA.
03:49:16 <Insane> Ooooooh
03:49:23 <Insane> Let's invent ERRORCODE
03:49:37 <pikhq> What, where everything is a Kimian quine?
03:49:37 <Insane> you program in error messages
03:50:07 <Insane> What's a kimian quine?
03:50:53 <pikhq> A quine which depends upon the error reporting facilities of a language.
03:51:11 <pikhq> In some BF interpreters, "Mismatched ]." is a Kimian quine.
03:51:12 <Insane> mk
04:10:42 -!- adu has joined.
04:15:51 <RodgerTheGreat> could somebody explain a "Kimian quine" to me? I've heard this obscure fact, but I could never find a more detailed explanation
04:16:14 <RodgerTheGreat> like, in detail?
04:16:35 <RodgerTheGreat> is the idea that mismatched brackets will output an error message containing "]" somehow?
04:19:14 <RodgerTheGreat> and Insane- your idea sounds intriguing. Like a language in which you "program" to some extent by purposely producing various types of errors?
04:19:50 <RodgerTheGreat> You'd probably want a nearly TC base language with some key features missing, and then use bizarre side effects of error messages to fill in the gaps
04:27:26 <Insane> Hmm
04:27:50 <Insane> Maybe something like dividing by zero to output memory
04:37:28 <RodgerTheGreat> could work
04:37:50 <RodgerTheGreat> if it was interpreted in some fashion you could use nullpointer exceptions and array index out of bounds violations
04:38:44 <RodgerTheGreat> there are a number of nonfatal things, like conversions that lose precision, that could fail predictably to provide rudimentary math or something
04:43:21 <pikhq> Basically, you create a program whose *error messages* are the program.
04:46:33 <Insane> Maybe you can simply "emulate" error messages
04:46:50 <GreaseMonkey> counter from 1 to 10: i = 1; LOOP { i = i + 1; peek(0); 1/(0-i); }, EXCEPT (DivZero) { BREAK; }, EXCEPT (NullRead) { ErrStr = str(i) + chr(10); COMPLAIN; CONTINUE; };
04:46:59 <Insane> eg. instead of really dividing by 0 and catching an error, you could pretend to
04:47:03 <GreaseMonkey> actually...
04:47:11 <GreaseMonkey> counter from 1 to 10: i = 1; LOOP { i = i + 1; peek(0); 1/(0-i); }, EXCEPT (DivZero) { BREAK; }, EXCEPT (NullRead) { ErrStr[NullRead] = str(i) + chr(10); COMPLAIN; CONTINUE; };
04:49:14 <GreaseMonkey> DO { 1/0; }, EXCEPT (DivZero) { DivZero = "Hello World!" + chr(10); COMPLAIN; CONTINUE; };
04:49:47 <RodgerTheGreat> this could tie into the idea we had earlier about a language where all logic, variables and flow control was a twisted mass of exception throwing and catching
04:50:04 <RodgerTheGreat> exceptions themselves formed the mechanism for storing variables
04:50:22 <RodgerTheGreat> and the potential for conditionals is obvious
04:50:52 <RodgerTheGreat> and with some kinda nasty object oriented stuff it was possible to do recursion with them
04:50:58 <RodgerTheGreat> I forget all the details
04:51:19 <RodgerTheGreat> but we can call the language "DieHard" or something
04:51:38 <Insane> heh
04:51:54 <Insane> I'm still working on writing an irc bot in NetBrainFuck
04:52:08 <Insane> NetBrainFuck provides 4 more instructions
04:52:09 <RodgerTheGreat> or name it after the big iron OS "NonStop", legendary for it's reliablility
04:52:18 <Insane> connecting using data from memory, reading, writing, d
04:52:22 <Insane> *disconnecting
04:52:31 <RodgerTheGreat> NetBrainFuck? shouldn't it be "ClusterFuck"?
04:52:42 <Insane> Heh. Maybe
04:53:41 <GreaseMonkey> how about FuckThis?
04:54:43 <RodgerTheGreat> FuckItAll
05:07:36 <Insane> Let's make SLOCODE where every instruction takes a while, forcing programmers to write efficient code or wait forever
05:07:46 <Insane> hm easy
05:08:04 <Insane> s/*/*sleep(2000);/g
05:11:38 -!- Insane has quit (Remote closed the connection).
05:33:38 <RodgerTheGreat> no, SLOCODE should turn conventions of cost and speed on their heads
05:33:53 <RodgerTheGreat> what should be slow will be fast and vice versa
05:34:22 <RodgerTheGreat> we could essentially accomplish this with a hideously complex "optimizer" routine
05:38:50 -!- adu has left (?).
05:45:01 <oklofok> i read somewhere that any universal lang can simulate any other efficiently, meaning running in polynomic time compared to the original prog in the other language, anyone know if this is true?
05:45:37 <oklofok> was just thinking about ais's O(2^2^n) simulation of a utm, unless i remember that wrong too
05:49:55 <RodgerTheGreat> well, it at least seems plausible
05:50:34 <oklofok> that is a bit hard to google : D
05:51:54 <RodgerTheGreat> I now challenge you to write a lisp (or scheme) interpreter for the Z1.
05:54:42 <oklofok> Z1? :)
05:54:56 <oklofok> i didn't read the paper.
05:55:16 <oklofok> *couldn't
05:56:55 <GreaseMonkey> e.g. v++ goes to v += 0xFF; for(i=0;i<0xFF;i++) v--;
05:56:59 <oklofok> i was just thinking, in case that polynomic time is *not* true, might be interesting to try and make the slowest language ever
05:58:19 <RodgerTheGreat> the Z1 was one of the first computers, created by Konrad Zuse.
05:58:24 <oklofok> if there's no polynomic bound, you can probably make a language, in theory, that can actually be parametrized to be infinitely slow
05:58:43 <oklofok> oh, right, i was assuming that had to do with the proof :D
06:01:07 <oklofok> what i meant was a limit of infinite running time
06:01:45 <oklofok> when growing a param of the language
06:02:45 <oklofok> something like 2^2^2^...^n where you can choose the number of 2's by slightly modifying the language
06:04:54 <oklofok> since i don't think you can assume any optimization when calculating that, doesn't seem impossible really
06:33:20 -!- calamari has joined.
06:46:54 -!- calamari has quit ("Leaving").
07:36:13 -!- puzzlet has quit (Remote closed the connection).
07:36:21 -!- puzzlet has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
09:19:30 -!- GreaseMonkey has quit ("night").
09:36:06 -!- puzzlet has quit (Remote closed the connection).
09:36:14 -!- puzzlet has joined.
09:47:19 -!- sebbu has quit ("bye").
12:23:18 -!- ehird has joined.
12:38:37 -!- ehird has set topic: Continuing the tradition of me changing the topic when I get up, the topic is now "Conti.
13:05:03 -!- jix has joined.
13:26:07 <ehird> hello jix
13:45:45 -!- helios24 has joined.
13:59:44 -!- Tritonio_ has joined.
14:01:25 -!- sebbu has joined.
14:05:25 -!- Hiato has joined.
14:05:48 <Hiato> Wassup
14:18:54 <ehird> the sky
14:19:11 <Hiato> I hoped as much
14:19:23 <ehird> I am trying to pervert Hofstadter's "GOD Over Djinn" into an esolang name.
14:20:04 <Hiato> Hrmm... GOD Over Gin ? Naah, nevermind....
14:20:21 <ehird> He already made that joke, in the same story.
14:20:38 <Hiato> Oh well.. I tried ;)
14:20:59 <ehird> The characters (The Tortoise and Achilles) had entered an M.C. Escher painting using pushing & popping tonics (used to explain call stacks).
14:21:26 <ehird> That was where they met the infinite chain of Djinn (Djii?), collectively referred to as the recursive acronym "GOD Over Djinn".
14:21:35 <ehird> The dialogue, of course, was called "Djinn and Tonic".
14:22:26 <Hiato> Ah, I see. Wel,, I'm out of suggestions (yes, after but one), but I'll keep thinking about it - if that helps :)
14:22:59 <ehird> :-P
14:23:01 <ehird> Thanks, I guess.
14:45:47 -!- jix has quit (Read error: 104 (Connection reset by peer)).
14:46:24 -!- jix has joined.
14:59:57 <ehird> Someone name my concatentative esolang like Joy :P
15:06:05 -!- Elion has joined.
15:19:31 -!- Elion has quit (Remote closed the connection).
15:19:50 <ehird> :|
15:31:26 -!- Tritonio_ has quit (Read error: 110 (Connection timed out)).
15:31:54 -!- Tritonio_ has joined.
15:37:14 <ehird> Hmm
15:37:16 <ehird> Who is alive right now?
15:41:50 -!- Asztal has quit ("not me").
15:43:10 -!- Insane has joined.
15:43:12 <ehird> Nobody?
15:43:25 <Insane> Internet connectivity? check
15:44:32 <oklofok> check! :))))
15:44:40 <ehird> hehe
15:45:03 <ehird> who wants to talk about a concatentative esolang similar to Joy and Cat? *crickets chirp* oh. nobody? :(
15:45:59 <Insane> Joy and Cat?....................
15:46:07 <Insane> Sounds like a disease
15:54:26 <ehird> heh
15:54:38 <ehird> google 'joy programming language'
15:54:39 <ehird> ditto for cat
15:55:39 -!- Insane_ has joined.
15:55:49 <ehird> they are both very interesting
15:56:41 -!- Insane has quit (Read error: 104 (Connection reset by peer)).
15:57:20 -!- Insane_ has changed nick to Insane.
15:57:38 <Insane> IKsn't a cat a pürogr
15:57:44 <Insane> *program that outputs input?
15:57:48 <Insane> *Isn't
15:57:54 <ehird> yes, but it's also a programming language...
15:57:56 <ehird> sheesh!
15:57:57 <Insane> I'm gonna smack his lappy keyboard...
15:58:03 <ehird> first and foremost, a cat is an animal
15:58:04 <Insane> *this
15:58:08 <ehird> it doens't have to be only one program!
15:58:09 <Insane> Eh??
15:58:17 <Insane> What's an animal?
15:58:45 <ehird> English isn't your native language, is it.
15:59:01 <Insane> Yes it is :P
15:59:09 <Insane> Just joking, I know what an animal is
15:59:14 <ehird> :P
15:59:44 <ehird> Insane: You know Forth?
16:00:03 <ehird> Well, Joy is like a functional (not in the sense of 'works', of course) Forth.
16:00:14 <ehird> Cat is like a functional, statically-typed (!) Forth,
16:00:16 <ehird> .
16:01:41 <Insane> Hmm
16:01:45 <Insane> What's Forth? ^^
16:02:14 <ehird> I don't think you're the best person to talk about this with...
16:02:18 <Insane> Right
16:02:24 <ehird> oklofok: You know Forth, don't you :P
16:02:49 <Insane> The only esoteric languages I know are brainfuck, NetBrainFuck and 1337
16:03:33 <ehird> Insane: Forth,Joy,Cat aren't esoteric.
16:03:40 <Insane> Ooh?
16:03:46 <Insane> interesting
16:03:49 <ehird> Well.
16:03:52 <oklofok> ehird: i know it's a stack-based language.
16:03:58 <ehird> You could call them esoteric. But people use Forth for real-world apps, all the time
16:04:01 <ehird> Mainly in embedded systems.
16:04:02 <oklofok> and that it's old and famous
16:04:07 <ehird> Cat is a mainly-research-and-teaching language.
16:04:19 <ehird> Joy is a 'ooh, what would happen if we...' language made by a philosophy professor guy
16:04:26 <ehird> oklofok: well, you know stack based languages.
16:04:31 <oklofok> yeah
16:04:35 <ehird> well, concatentative languages, to be precise.
16:04:58 <ehird> i.e.
16:05:27 <ehird> for all A,B in P. concat(A,B) == compose(A,B) where P = programs in language L
16:05:32 <ehird> ==> language L is concatentative
16:05:43 <ehird> and unless it's a computationally useless language you achive that with a stack.
16:05:47 <ehird> oklofok: there, have a formal definition
16:06:04 <oklofok> well, thanks for that i guess :)
16:06:24 <ehird> oklofok: know Joy?
16:06:45 <oklofok> once again i just know some outlines.
16:07:30 <ehird> http://en.wikipedia.org/wiki/Joy_%28programming_language%29 good primer.
16:07:35 <ehird> basically, it's a functional, concatentative language,
16:07:56 <ehird> but instead of formal parameters and function application, it has program quoting and evaluation
16:08:05 <ehird> kind of like underload, but less crazy
16:08:14 <oklofok> the wikipedia article is all i've read about joy, probably.
16:08:20 <oklofok> haven't used it
16:08:30 <ehird> give it another read, as a refresher
16:08:51 <oklofok> hmm, [] is a false-like lambda?
16:08:58 <oklofok> a generic grouping thingie
16:09:04 <oklofok> i'llr ead.
16:09:08 <oklofok> *typo
16:09:13 <ehird> oklofok:
16:09:14 <ehird> no
16:09:16 -!- Tritonio_ has quit (Read error: 104 (Connection reset by peer)).
16:09:21 <ehird> [...] is a program
16:09:39 <ehird> and you can run it, or use e.g. a combinator to do stuff with them
16:09:42 <ehird> x == [x]i
16:09:50 <ehird> (i is the 'just run it' combinator)
16:11:50 <oklofok> well, that's what i meant by a grouping thingie
16:11:57 <oklofok> you can use that to get a list
16:12:05 <oklofok> not well, but kinda! :)
16:12:14 <oklofok> anyways, i know what it is.
16:12:27 <Slereah> I'm trying of thinking of some non-lazy evaluation command. How's this? ``>A[B] converts to `A[B], and immediatly afterward, [B] is evaluated.
16:12:55 <ehird> Slereah: just don't if it's for IO
16:12:56 <ehird> monads
16:13:01 <ehird> oklofok: okay
16:13:05 <ehird> oklofok: my language is kind of like that
16:13:14 <Slereah> I cannot undersandy monads.
16:13:21 <Slereah> Newton was against Monads!
16:13:24 <ehird> Slereah: Don't write a functional programming language until you do.
16:13:46 <ehird> oklofok: one distinguishing thing is that it has no special syntax apart from [...]
16:14:02 <Slereah> Is there a better source than Wikipedia on it?
16:14:11 <oklofok> yeah, i don't like that
16:14:17 <ehird> oklofok: what don't you liek
16:14:25 <ehird> my prog language has nothing but [..]
16:14:27 <ehird> but joy has things like
16:14:27 <oklofok> the DEFINE thing
16:14:31 <ehird> "DEFINE x == y."
16:14:31 <ehird> yeah
16:14:37 <oklofok> i'm assuming you meant,,.... well, yeah
16:14:50 <oklofok> that's kinda impure. :P
16:14:54 <oklofok> (sadol ftw!)
16:15:25 <Insane> My prog language has: +-><[].,*~!%
16:16:24 <ehird> P := '[' P* ']' | (!WS)+ P |
16:16:24 <ehird> P := '[' P* ']'
16:16:24 <ehird> | (~S)+ S P*
16:16:24 <ehird> | S
16:16:24 <ehird> | P*
16:16:25 <ehird> S := ' ' | '\t' | '\n'
16:16:27 <ehird> errrr
16:16:29 <ehird> wait
16:16:45 <ehird> http://rafb.net/p/w9QzSK93.txt
16:16:45 <ehird> there
16:16:48 <ehird> that's my languages syntax
16:16:55 <ehird> (if we assume ~X means 'anything but x')
16:17:05 <ehird> hm wait
16:17:07 <ehird> you can also do
16:17:08 <ehird> a[b]c
16:17:11 <ehird> but whatever.
16:17:12 <ehird> you get the idea
16:17:25 <ehird> oh wait
16:17:29 <ehird> i also have string literals.
16:17:30 <ehird> heh
16:17:31 <ehird> :)
16:17:50 <oklofok> looks ambiguous
16:17:58 <ehird> maybe my BNF is
16:18:00 <ehird> but the language isn't
16:18:02 <ehird> honest :-)
16:18:18 <oklofok> well, ofc not
16:18:47 -!- Insane has quit (Remote closed the connection).
16:18:51 <ehird> anyway
16:19:00 <ehird> i'm not sure how i'm doing to do assignment in my language
16:19:00 <ehird> XD
16:19:11 <ehird> without adding extra syntax, or using something ugly like a string literal
16:19:20 <oklofok> well, the purest way is not to :)
16:19:37 <oklofok> but that's not a *good* way
16:24:58 <ehird> i mean, fuction definitions
16:25:03 <ehird> which I need since I hav eno paraemters :P
16:25:15 <ehird> i guess i could maybe manage one bit of syntax...
16:25:29 <ehird> WORD = WORD*.
16:25:36 <ehird> So, just like Joy but without the DEFINE thing
16:28:01 -!- Tritonio_ has joined.
16:32:16 <ehird> oklofok: is that ok with you? ;)
16:32:26 <ehird> it just means you can't define = as a word, and the parser needs a lookahead of one word.
16:32:46 <oklofok> hmm
16:32:58 -!- timotiis has joined.
16:33:20 <oklofok> i'd make case putting an atom on the stack and using it as a function
16:33:25 <oklofok> errr
16:33:32 <oklofok> i'd make case differentiate between putting an atom on the stack and using it as a function
16:33:47 <ehird> oklofok: inconsistent, though - and there's no need for atoms elsewhere :)
16:33:50 <ehird> So, I think I like this idea.
16:33:54 <ehird> OK! Time to write some example code..
16:33:59 <oklofok> atoms are great, though
16:34:13 <oklofok> but, do what you want
16:34:16 <oklofok> inconsistent?
16:34:18 <oklofok> how?
16:34:33 <ehird> you define as Abc, you use as abc
16:34:54 <ehird> hmn
16:34:54 <ehird> i might use ; instead of .
16:35:01 <ehird> oklofok: what do you think i should use as a terminating mark?
16:35:16 <oklofok> hmm, depends
16:35:20 <oklofok> can you redefine?
16:35:26 <ehird> not sure yet.
16:35:46 <oklofok> i'd put ";" if you can redefine, otherwise "."
16:36:04 <ehird> oklofok: hm, why?
16:36:18 <oklofok> no reason, except a feeling.
16:36:26 <oklofok> i'll go buy something pretty ->
16:36:31 <oklofok> (thirsty)
16:40:20 <ehird> Really -- all my esoteric programming endeavours are just part of the search for the perfect programming language (for me).
16:40:37 <ehird> I continuously try new abstractions, while removing others.
16:41:32 <Slereah> What's the best so far!
16:44:11 <ehird> I don't know.
16:44:15 <ehird> It seems both extremes work equally.
16:44:26 <ehird> Haskell, Lisp, Joy, Cat... they all seem to be just about the same.
16:44:32 <ehird> But I'm not sure they're good *enough*.
17:01:26 -!- Corun has joined.
17:06:06 -!- Corun has quit (Client Quit).
17:07:03 <ehird> oklofok: you bacj yet?
17:07:31 <ehird> Hmm
17:07:37 <ehird> Maybe I'm looking in the wrong place.
17:07:54 <ehird> Maybe my options of: REPL-based, batch compiler, batch interpreter are wrong.
17:08:03 <ehird> Maybe my options of: unicode text file are wrong
17:13:25 -!- jix has quit ("CommandQ").
17:15:36 <oklofok> o
17:20:51 <ehird> :|
17:20:55 <ehird> oklofok: comments?
17:21:26 -!- oklofok has changed nick to oklopol.
17:21:58 <oklopol> what do you mean by options?
17:23:33 <ehird> well, like what i aim for when designing
17:23:40 <ehird> like, maybe programs aren't inherently flat text files
17:23:49 <ehird> maybe implementations don't have to be one of the things i said.
17:26:13 <oklopol> i don't consider those that important
17:26:23 <oklopol> so... hard to say.
17:57:00 <Slereah> The monads tutorial seems to require some knowledge of Haskell
17:58:25 <ehird> Slereah: gasp.
17:58:26 <ehird> ;)
17:58:34 <Slereah> WHAT A SHOCK!
17:58:49 <Slereah> I guess I'll have to learn Haskell after all.
18:02:24 <ehird> http://sigfpe.blogspot.com/2006/08/you-could-have-invented-monads-and.html http://www.haskell.org/haskellwiki/Monad_%28sans_metaphors%29
18:02:28 <ehird> the latter is just a 'WHAT is a monad'
18:02:34 <ehird> the first is 'WHY is a monad'
18:03:50 <Slereah> Apparently, I could have invented them!
18:03:54 <Slereah> I'm flattered.
18:17:47 -!- Tritonio__ has joined.
18:17:51 -!- Tritonio_ has quit (Read error: 110 (Connection timed out)).
18:19:17 -!- Rocker[box] has changed nick to RockerMONO.
18:20:31 <RockerMONO> hi
18:21:32 <Slereah> Hello sir.
18:23:47 <Hiato> Hello
18:24:02 <RockerMONO> what's up?
18:24:14 * RockerMONO got a dialect of brainfuck that uses sockets working
18:24:21 <Hiato> as ehird said in reply to my exact question: the sky :P
18:24:50 <RockerMONO> well... it works until the socket disconnects.... but if you leave an IRC bot made in it up for 14 and a half hours after it disconnects, it will be ugly :<
18:25:13 <Slereah> Imma reading sum monads
18:25:22 <Slereah> In the hope of making some useful input function
18:25:26 <RockerMONO> mmm
18:25:29 <ehird> Slereah: and output!
18:25:33 <ehird> all IO :)
18:25:47 <RockerMONO> psh why not II or OO? =P
18:25:48 <ehird> You can even do state with monads, just add a magical monad-creator combinator and you can write a state monad :P
18:25:49 <Slereah> Well, output seems to work okay so far.
18:25:53 <RockerMONO> btw
18:25:57 <RockerMONO> what's a monad?
18:26:03 <ehird> Slereah: yes, but if you do one you have to do the other, otherwise things go weird
18:26:05 <Slereah> RockerMONO: I'm still wondering!
18:26:14 <ehird> RockerMONO: 1.learn haskell 2.learn monads
18:26:18 <Slereah> But I hope that the mystery will soon be lifted
18:26:42 <Slereah> It's apparently from category theory, that one from which I don't know squat.
18:27:16 <ehird> Slereah: you don't need to know category theory
18:27:19 <ehird> I don't!
18:28:41 <Slereah> Well, I also don't know Haskell.
18:28:52 <Slereah> But I guess Haskell is easier to learn!
18:29:11 <Slereah> [Narrator : AND THAT WAS HIS FATAL MISTAKE]
18:30:14 <ehird> HE DIED
18:30:16 <ehird> LIKE A TORTOISE
18:30:18 <ehird> IN A BATH
18:30:54 <Slereah> This was brought to you by the campaign against functional languages.
18:34:10 <ehird> Slereah: #haskell!
18:34:18 <ehird> We're Friendly(TM)
18:34:58 <Slereah> MY GOD
18:35:02 <Slereah> IT'S FULL OF STARS!
18:37:49 -!- oerjan has joined.
18:41:11 <ehird> hello oerjan
18:41:17 <ehird> make Slereah's #haskell-time fun and fuzzy
18:41:30 -!- jix has joined.
18:44:08 <Slereah> Well, I'll probably read haskell tomorrow.
18:44:13 <Slereah> After a night of sleep.
18:44:21 <Slereah> Don't have many classes tomorrow.
18:45:50 <Slereah> Well, more than I thought. They added some more.
18:46:06 <Slereah> But I still have nothing on fridays.
18:50:33 * oerjan just says "aye" to that.
19:00:53 <Hiato> Hello oerjan
19:01:09 <Hiato> Thanks (once again) for cleaning up the mess I leave on the wiki :D
19:02:47 <oerjan> i think ais523 did the last cleaning up, actually
19:03:14 <Hiato> well, nontheless, thanks for moving my page and what not :)
19:04:16 <ehird> I wonder
19:04:25 <ehird> If a minimal combinator can be "i"
19:04:29 <oerjan> that was him. he's not here right now (he just comes for short periods)
19:04:35 <ehird> to get an entire TC system,
19:04:44 <ehird> what is it for a stack based language?
19:04:45 <ehird> well, they
19:04:46 <Hiato> oh, woops, well thanks anywho for the typo thing etc :)
19:04:54 <ehird> i imagine it requires multiple: dup and all that, for stack manipulation
19:04:55 <ehird> i'm thinking:
19:05:06 <ehird> quoted programs + basic stack manipulation words + ??? magic thing ??/
19:05:28 <Slereah> -> AWESOME LANGUAGE???
19:05:38 <Slereah> Solve for X.
19:06:05 <ehird> we just need to figure out magic thing
19:06:05 <ehird> :P
19:06:28 <Slereah> Well, I just use an electronic wand, personally.
19:06:40 <Slereah> 3.5 megathaums.
19:07:13 <oerjan> ehird: have you looked at Joy?
19:07:31 <Slereah> It can be used to solve most undecidable problems. Although cannot force someone to love you, as you can learn in Alladin.
19:08:12 <oerjan> someone did a paper on doing combinators in Joy
19:09:12 * oerjan wonders if ??? magic thing = dip
19:13:08 <ehird> oerjan: of course!
19:13:15 <ehird> my neu language is based on joy, kind of.
19:13:21 <ehird> it's a functional, stack-based language so yeah
19:14:26 <ehird> it might be dip, yes
19:14:40 <ehird> oerjan: i've considered a statically typed Joy -- like Cat -- but with type inference
19:14:52 <ehird> so it's just like a regular concatentative lang, except it yells at you when you write something silly
19:14:55 <oerjan> um Cat is supposed to have type inference
19:14:58 <oerjan> afair
19:15:05 <ehird> oerjan: its not that good though.
19:15:08 <ehird> i might even handle variadic functions
19:15:10 <ehird> like
19:15:21 <ehird> you could write a printf which took an argument off the stack when it saw a certain formatting directive
19:15:24 <ehird> and it'd type properly
19:16:33 <oerjan> well you'll have to invent a more clever type system than cdiggins did.
19:16:57 <ehird> indeed
19:17:01 <ehird> i think a printf type could be:
19:17:17 <oerjan> and he had some help from lambda-the-ultimate.org
19:17:19 <ehird> ok, sprintf:
19:17:25 <ehird> oerjan: this is true, i think it may be undecidable
19:17:44 <ehird> ( ... STRING -- STRING )
19:17:49 <ehird> a bit vague, i guese
19:18:03 <ehird> but it gets the essentials right: you need a STRING on the stack, and might need other stuff, and you'll get a string back
19:18:32 <oerjan> my understanding is that it essentially boils down to the undecidabilit of word equations
19:18:43 <oerjan> *my intuition, perhaps
19:18:49 <ehird> i guess
19:19:06 <ehird> oerjan: the reason i said STRING is because lowercase is reserved for polymorphism
19:19:24 <ehird> swap ( a b -- b a )
19:19:44 <ehird> let's assume forth style definition syntax:
19:19:46 <ehird> hmm
19:19:48 <ehird> this is something..
19:19:57 <ehird> oerjan: can you write the S combinator in J?
19:20:08 <ehird> my intuition is that you cannot capture its first argument in the quoted program it should return
19:20:58 -!- RockerMONO has quit ("Firefox using HALF OF MY FUCKING RAM and HALF OF MY FUCKING CPU :<").
19:21:09 <oerjan> i know very little about J
19:21:42 <ehird> i guess
19:22:02 <oerjan> you're not just abbreviating Joy, i assume?
19:22:06 <ehird> oh
19:22:07 <ehird> i meant joy
19:22:08 <ehird> xD
19:22:48 <oerjan> as i implied, someone has shown how to rewrite SKI combinators in Joy, so yes
19:22:52 <ehird> : factorial ( INT -- INT ) [zero?] [1] [1 -] [*] iter-rec ;
19:23:19 <ehird> : iter-rec ( PROG PROG PROG PROG -- a ) .... ;
19:23:22 <ehird> but that's not very helpful
19:23:25 <ehird> so i'll describe iter-rec
19:23:38 <ehird> ( TERM BASE STEP BINOP )
19:23:46 <ehird> TERM is the termination predicate.
19:23:52 <ehird> BASE is the value to use at termination.
19:23:58 <ehird> well, the program to execute.
19:24:12 <ehird> STEP is what we should repeat on, given the previous value.
19:24:29 <ehird> And BINOP is what we should apply to the next and previous values.
19:24:46 <ehird> hm
19:24:48 <ehird> better iter-rec:
19:25:16 <ehird> : iter-rec ( a ( a -- BOOL ) ( -- a ) ( a -- a ) ( a a -- a ) -- a ) ... ;
19:25:44 -!- RockerMONO has joined.
19:25:45 <ehird> which is insane, but good :D
19:25:57 <ehird> oerjan: Do you think that's a general kind of recursion or is it only going to be usful for a factorial? ;)
19:27:17 * RockerMONO wonders why this channel loses topic parts and modes each time he joins..
19:27:19 <RockerMONO> =P
19:27:50 <oerjan> modes?
19:28:05 * oerjan hadn't noticed the modes. actually still haven't.
19:28:14 <ehird> oerjan: any thoughts on iter-rec?
19:28:24 <oerjan> it makes my head hurt? :D
19:28:28 <RockerMONO> oerjan: nvm it was just lag =P it showed 'no modes' now it shows +nc =P
19:28:38 <oerjan> ah
19:28:39 -!- Slereah has set topic: 10 : Continuing the tradition of me changing the topic when I get up, the topic is now GOTO 10.
19:28:53 <ehird> oerjan: Well, i'll annoate the type fully
19:28:57 <RockerMONO> Slereah :DD
19:29:13 <Slereah> Look around you!
19:29:25 <oerjan> one thing, ( -- a ) is just a unless you are doing side effects
19:29:38 <ehird> no
19:29:41 <ehird> its a constant
19:29:43 <ehird> [1]
19:29:51 <ehird> well
19:29:55 <ehird> you could do side effects too
19:30:00 <ehird> maybe i'll pass in a value at some time
19:30:01 <ehird> but for now..
19:32:50 <oerjan> i guess it is at least as powerful as a while loop, so can give TC
19:33:10 <oerjan> at least if a can be a tuple type
19:33:29 <oerjan> or some sort of composition
19:33:48 <oerjan> (a stack, probably?)
19:35:02 <ehird> oerjan: i was asking re: expressivity
19:35:13 <ehird> here, have annotations:
19:35:40 <ehird> http://pastebin.ca/raw/880225
19:36:06 * RockerMONO 's making screwbin, binary counterpart for brainfuck :D
19:36:07 <ehird> oerjan: using that definition, and seeing how it works with the factorial example, would you say iter-rec is an expressive recursive operator, or will it be ugly for things beyond factorial-alikes?
19:38:43 <oerjan> it's a bit primitive recursive, although not exactly
19:38:56 <oerjan> i don't think you can write ackermann with it
19:40:14 <oerjan> (simply)
19:40:36 <oerjan> as in, you can only make one recursive call
19:41:44 <ehird> oerjan: its not meant to be general
19:41:47 <ehird> just one in a toolbox
19:41:56 <ehird> i'm just asking if it's elegant for many other things than a factorial?
19:42:41 <oerjan> it's like a haskell unfoldr + foldr
19:43:01 <ehird> yes
19:43:09 <ehird> I guess it's useful then
19:43:48 <ehird> : bin-rec ( a ( a -- BOOL ) ( -- a ) ( a -- a ) ( a -- a ) ( a a -- a ) -- a ) ... ;
19:44:01 <oerjan> although for the full power of that, you want to distinguish some of the a's
19:44:31 <oerjan> actually it is not a complete unfoldr
19:45:01 <oerjan> though that can be adjusted in the combining function, so not a problem
19:45:22 <ehird> oerjan: give me a syntax for lists
19:45:24 <oerjan> it's iterate + takeWhile + foldr
19:45:27 <ehird> and i'll give you a quicksort with bin-rec
19:45:32 <ehird> and that actually sounds very useful then
19:45:36 <ehird> ;)
19:45:51 <ehird> if you look at factorial with a grokking of iter-rec, it's very clear
19:46:13 <ehird> no stack shuffling or any of that, just the algorithm stated concisely, purely and simply
19:46:30 <ehird> and bin-rec can trivially be tail-recursive!
19:46:34 <ehird> or iterative
19:46:37 <ehird> err
19:46:38 <ehird> iter-rec
19:46:45 <ehird> which remidns me. list syntax :P
19:48:07 <oerjan> head tail : ++
19:48:21 <ehird> oerjan: heh
19:48:27 <ehird> i meant a convenient way to say [a,b,c]
19:48:32 <ehird> not using [] for obvious reason :P
19:49:00 <oerjan> ah yes, i think Joy uses the same for both but that is bad for typing
19:49:41 <oerjan> well there is only one actual bracket left, { }
19:50:37 <oerjan> actually you _could_ use [a,b,c]
19:50:53 <oerjan> saying a b and c are subprograms
19:51:00 <oerjan> er wait
19:51:06 <oerjan> breaks for single element
19:53:43 <ehird> okay then:
19:53:50 <ehird> wait no
19:53:53 <ehird> oerjan: {} is taken
19:53:55 <oerjan> i assume type inference means the initial ( ... ) in a function could be left out, so that spot makes it unsafe to use something with ( )
19:53:56 <ehird> for {* comments *}
19:54:09 <ehird> <, > are used for comparison for now
19:54:12 <ehird> plus <1 2 3> is ugly :P
19:54:20 <ehird> bah, i need unicode
19:54:20 <ehird> ;)
19:54:32 <oerjan> seems you need a multi-char keyword
19:54:39 <ehird> hm
19:54:40 <ehird> like what
19:54:42 <oerjan> ok, (, a, b, c)
19:54:59 <oerjan> or [, a, b, c]
19:57:15 <oerjan> for a slightly harder parsing, the initial , could be optional when there is more than one
19:57:16 <ehird> heh
19:57:20 <ehird> there's no need for a, b, c
19:57:23 <ehird> just a b c
19:57:28 <oerjan> oh
19:57:29 <ehird> since you can have it gobble off the stack
19:57:53 <oerjan> [, a b c]
19:58:13 <ehird> i don't particularly like that. Maybe:
19:58:18 <ehird> {{..}}
19:58:22 <ehird> kinda ugly though
19:58:25 <ehird> {: ... :}
19:58:32 <ehird> {: 1 2 3 :}
19:58:34 <ehird> {: :}
19:58:35 <oerjan> hm another option
19:58:45 <ehird> eh, let's do {: ... :} for now?
19:58:47 <ehird> ok:
19:58:49 <oerjan> [a b c]:
19:58:56 <ehird> i'd prefer
19:58:57 <ehird> ,[a b c]
19:59:05 <ehird> yes, i like that, let's use that FOR NOW
19:59:09 <oerjan> because : could be an actual function
19:59:20 <ehird> no, oerjan. : is define
19:59:30 <ehird> anyway, bin-rec has gone off my screen. stop talking while i write quicksort :)
19:59:32 <oerjan> well something could be
20:00:43 <ehird> : quicksort uncons [length 2 <] [{,}] [swap dup peek <] [swap dup peek >] [concat] ;
20:00:47 <ehird> with syntax:
20:00:49 <ehird> {,1 2 3}
20:00:54 <ehird> but, my problem with that
20:00:57 <ehird> is the stack manipulation
20:01:21 <ehird> : quicksort ( {,a} -- {,a} ) uncons [length 2 <] [{,}] [swap dup peek <] [swap dup peek >=] [concat] ;
20:01:26 <ehird> made it work, added a type signature :P
20:01:32 <ehird> oerjan: but that stuff to get to the pivot is pretty ugly
20:02:33 <oerjan> quicksort needs O(1) mutable arrays to be worthwhile anyhow
20:03:12 <oerjan> mergesort is better for actual linked lists
20:04:07 <ehird> yeah
20:04:30 * Slereah goes back to work on Mulambda
20:05:37 <ehird> oerjan: the language is tentatively called LION
20:05:40 <ehird> or just Lion
20:06:31 <ehird> the object structure is very simple incidentally: just a pointer, if the rightmost bit is 0 the rest of the object is a pointer to something (where *ptr == the type tag structure, and everything after that the data), otherwise the rest is a small integer
20:07:00 <oerjan> lambda in one ... ?
20:07:19 <ehird> oerjan: ?
20:07:26 <oerjan> (inspired by Scheme in one defun)
20:07:26 <ehird> well, the rightmost bit would be 0
20:07:29 <ehird> oh
20:07:30 <ehird> haha
20:07:31 <ehird> :)
20:07:40 <ehird> Lambda in one .. node?
20:07:42 <ehird> Really, we want:
20:07:57 <ehird> Quoted program in one word definition
20:08:03 <ehird> qpiowd isn't very catchy though.
20:08:08 <ehird> hmm
20:08:36 <ehird> #define SMALL_MAX ((~7)>>3)
20:08:41 <ehird> wait
20:08:43 <ehird> >>3?
20:08:45 <ehird> no no no
20:08:45 <ehird> haha
20:08:49 <ehird> ((~1)>>1)
20:09:00 <ehird> oerjan: nifty little definition no?
20:10:06 <ehird> oerjan: interestingly, ptr-to-int is just -1 ;)
20:10:09 <ehird> and vise-versa!
20:11:19 <oerjan> how is ((~1)>>1) different from ((-1)>>1) ?
20:11:52 -!- immibis has joined.
20:11:55 <oerjan> or ((~0)>>1), for that matter
20:12:21 <ehird> oerjan: well, it shouldn't be
20:12:23 <ehird> i just want
20:12:27 <ehird> ...111111111111111111111111110
20:12:44 <ehird> and you're right with ~0
20:12:44 <oerjan> er that 0 the most significant digit?
20:12:45 <ehird> hm
20:12:47 <immibis> ((~0)<<1) yoy mean?
20:12:50 <immibis> *you
20:12:52 <ehird> immibis: no
20:12:58 <ehird> i want the maximum value stuffable, if you lose one bit
20:13:11 <ehird> So currently that's ((~0)>>1) but I think -1 is right
20:13:13 * oerjan would call that 0111...1
20:13:16 <oerjan> or something
20:13:25 <ehird> oerjan: Welp, I stuff on the rightmost bit.
20:13:31 <ehird> And so does mzscheme, so I have backing here!
20:13:42 <oerjan> righmost, shmightmost
20:14:02 <oerjan> i'm a mathematician, i expect the least significant bit to be rightmost
20:14:50 <oerjan> and >>1 shifts off the least significant bit afaik
20:15:17 <oerjan> leaving the most significant bit 0, assuming sign bits don't duplicate
20:15:24 <ehird> oerjan: You are confused.
20:15:32 <ehird> I am accessing WHAT I CAN HAVE, NOT packing stuff ina value
20:15:37 <oerjan> 4>>1 == 2, right?
20:15:42 <ehird> so, an example packed small integer:
20:15:47 <ehird> 1101
20:15:48 <ehird> Or pointer:
20:15:50 <ehird> 1100
20:16:00 <ehird> So: least significant, rightmost.
20:16:14 <oerjan> ok but:
20:16:26 <oerjan> 1...1110 is <<1, not >>1
20:16:37 <ehird> oerjan: your -1 relies on twos complement
20:16:44 <oerjan> true
20:16:52 <ehird> oerjan: Yes! Exactly! So I get 1...110, shift it to the right, then get 0...111
20:16:52 <immibis> ehird: it's still <<1
20:16:58 <ehird> Which is the maximum value a small integer can be!
20:17:00 <ehird> Damnit!!!
20:17:11 <ehird> This is when I read in an integer!
20:17:16 <ehird> To tell if I can stuff it into the pointer directly!
20:17:30 <oerjan> ehird: ok i was confused but you started it :D
20:17:50 <oerjan> so ...1110 is the internal integer format
20:17:59 <ehird> ...1111 actually
20:18:01 <oerjan> and >>1 turns it into ordinary C format
20:18:01 <ehird> 0 is for the pointers
20:18:02 <ehird> :P
20:18:05 <ehird> And yes, that is right
20:18:28 * oerjan assumes it's cleared up now
20:18:30 <ehird> Cute trick:
20:18:31 <ehird> #define IS_SMALL(x) ((x)&1)
20:18:58 <ehird> LION sp; /* JESUS CHRIST IT'S A LION STACK POINTER GET IN THE CAR */
20:19:01 <ehird> ^^ i am tempted ...
20:20:44 <oerjan> and later, /* ARGH CLOSE THE WINDOWS */
20:22:04 <ehird> oerjan: evidently internet memes never effect you
20:22:05 <ehird> :P
20:22:07 <ehird> *affect
20:22:09 <ehird> *eh whatever
20:22:22 -!- Hiato has left (?).
20:22:47 <oerjan> that's a meme?
20:23:08 <oerjan> indeed i browse relatively few sites
20:23:28 <ehird> 'JESUS CHRIST IT'S A LION GET IN THE CAR' is a meme, yes
20:23:31 <ehird> it's died down by now
20:23:42 * oerjan get Larson vibes
20:23:46 <oerjan> *gets
20:23:51 <oerjan> i'm not sure though
20:25:00 <oerjan> ah, probably not
20:25:36 <oerjan> or rather, i am reminded of a Larson strip where a lion has a cloth-hanger
20:27:43 <oerjan> *clothes
20:28:05 <oerjan> (#%& english)
20:28:25 <ehird> sp = 195948557;
20:28:31 <ehird> hilarious!
20:29:07 <ehird> csp = 195935983;
20:29:08 <ehird> hahahahhaa
20:29:26 * oerjan is confused. again.
20:29:42 <oerjan> do you just find numbers funny, or what? :D
20:30:24 <ehird> oerjan: you will figure it out, if you have the fu of not 10.
20:30:29 <ehird> (yes, i am being deliberately obscure)
20:30:58 <oklopol> oerjan: when you get it, explain it to me in pm
20:31:04 <oklopol> i don't wanna look stupid
20:31:24 <ehird> hah
20:31:25 <ehird> it's not that hard
20:31:35 <ehird> hint: that's in my initialization function. it's for future error checking
20:32:23 <oerjan> whatever
20:33:28 <ehird> sigh, ok
20:33:49 <ehird> sp = 0xBADF00D;
20:33:51 <ehird> csp = 0xBADBEEF;
20:33:56 <ehird> but i'm changing BADBEEF to DEADBEEF
20:34:04 <ehird> because that more accurately describes a call stack underflow
20:34:38 <oerjan> you spoiler! i was just starting trying base conversions.
20:34:48 <oerjan> for some reason tried binary first
20:35:02 <ehird> i thought 'whatever' meant 'i gave up'
20:35:03 <ehird> :P
20:35:14 <oklopol> "whatever, i'm not gonna play your stupid games"
20:35:26 <oklopol> ("mwahahaha, i'm so gonna crack this")
20:35:44 <oerjan> er, my giving up passed away
20:35:52 <oklopol> could've been "lololol!"
20:36:53 <oerjan> that badf00d actually caused me some confusion, because those 0's _do_ show up prominently in base 2
20:37:14 <oerjan> but my brain was just too slow this evening
20:39:44 <ehird> oerjan: Should Lion have a call/cc
20:39:46 <ehird> ?
20:39:46 <ehird> :D
20:39:52 -!- jix has quit ("CommandQ").
20:40:21 <oerjan> might be easy if you have a linked-list execution stack
20:40:37 <oerjan> well, even if not
20:40:58 <ehird> oerjan: Well, I don't :P
20:41:32 <oerjan> what are you writing it in?
20:41:41 <ehird> C, duh. Didn't you see my #defines? :P
20:41:52 <oerjan> er...
20:42:08 * oerjan de-evolves further to the neanderthal stage
20:42:11 <ehird> hahah
20:42:20 <ehird> don't worry, i'm going to write it simply
20:42:21 <ehird> :P
20:42:26 <oerjan> THAT NOT FLINT
20:42:48 <oklopol> isn't defining like coarsening?
20:46:35 <ehird> oerjan: Feel free to help me implement it in Haskell. ;)
20:47:02 <ehird> OH NOW YOU DON'T TALK
20:48:53 <oerjan> TOO LONG WORD, HAS, HAS, THAT ONE
20:50:02 <ehird> So now you don't like Haskell either? :P
20:50:20 <oerjan> IS GREAT. JUST NOT CAN SAY IT.
20:50:54 <ehird> oerjan: WILL HELP IMPLEMENT LION HASKELL?
20:51:01 <ehird> primitive :: Stack -> Stack LIKE MUCH
20:51:52 <oerjan> maybe
20:52:07 <ehird> yay
20:52:17 <ehird> C can wait until we've verified the awesomeness of it, I guess :P
20:58:47 <ehird> oerjan: I have an idea for mutability
20:59:01 <ehird> instead of doing like
20:59:05 <ehird> (IORef Value)
20:59:09 <ehird> in various clauses of Value,
20:59:10 <ehird> we can do
20:59:12 <ehird> Location
20:59:20 <ehird> where Location is an Int index, in a heap array
20:59:27 <ehird> and we can just modify that array..
20:59:35 <ehird> perhaps ugly, perhaps not. oerjan: thoughts?
21:00:11 -!- Hiato has joined.
21:00:31 <oerjan> well i think that's the usual way of simulating mutable structures in pure code
21:00:50 <oerjan> it gets ugly if you have more than one type of value though
21:01:17 <oerjan> also, you don't get the benefit of automatic GC
21:01:31 <ehird> oerjan: is it?
21:01:32 <ehird> ok.
21:01:39 <ehird> oerjan: of course, at any time a function could do some IO
21:01:45 <ehird> so maybe we'd be best off using IO and IORef
21:01:53 <oerjan> right
21:01:57 <ehird> But if we do that
21:02:09 <ehird> should we still have (Stack -> Stack), well, now, (Stack -> IO Stack)?
21:02:13 <ehird> Or just:
21:02:20 <ehird> StackMonad ()
21:02:27 <ehird> where StackMonad is IO with a stack in it, heh
21:02:56 <oerjan> well you could have a StackMonad even if you don't keep the Stack in an IORef
21:03:10 * Slereah needs some Garry Gum
21:03:14 <oerjan> (StateT Stack IO for example)
21:03:38 <ehird> oerjan: Yes.
21:03:49 <ehird> I propose:
21:03:58 <ehird> type Stack = StateT [Value] IO
21:04:03 <ehird> So we can have "primitive :: Stack ()"
21:04:08 <ehird> Just looks a bit nicer, I guess. heh.
21:04:45 <oerjan> er
21:04:55 <oerjan> so the actual stack is [Value]
21:05:09 <oerjan> that's a bit confusing terminology
21:05:45 <ehird> oerjan: Well, yeah
21:05:48 <ehird> top : rest
21:05:52 <ehird> A stack is just a linked list
21:06:04 <oerjan> er not that
21:06:08 <ehird> but,
21:06:11 <oerjan> that's perfectly reasonable.
21:06:14 <ehird> haskell compilers can do optimizations on lists.
21:06:15 <ehird> ah
21:06:15 <ehird> ok
21:06:18 <oerjan> i mean calling the monad Stack
21:06:30 <ehird> yeah i know
21:06:34 <ehird> it's just... :-)
21:06:37 <ehird> hmm
21:06:41 <ehird> let's say its called StackMonad
21:06:45 <ehird> drop :: StackMonad ()
21:06:54 <ehird> drop = do (_:xs) <- get
21:07:01 <ehird> put xs
21:07:09 <ehird> return ()
21:07:15 <ehird> I dunno. :|
21:07:18 <ehird> As opposed to:
21:07:22 <ehird> drop :: Stack -> IO Stack
21:07:24 <oerjan> drop = modify tail
21:07:28 <ehird> drop (_:xs) = return xs
21:07:32 <ehird> oerjan: I guess.
21:07:40 <ehird> I just guess I see everything as a stack to stack mapping
21:08:02 <oerjan> although yours has the advantage we can add an error layer easily
21:08:31 <oerjan> both of yours, really
21:08:33 <ehird> oerjan: Which do you prefer? A stack monad, with IORef for all mutable things, or a stack to stack mapping function that has an IO monad attached to it?
21:09:25 <oerjan> i think perhaps Stack -> IO Stack is better, nearly all the functions will need to look at the stack anyhow
21:10:02 <ehird> oerjan: One thing
21:10:03 <oerjan> and few will need to return any other value
21:10:06 <ehird> if we're going to do static type checking
21:10:13 <oerjan> oh
21:10:15 <ehird> we need to make that pleasant to deal with in our primitives
21:10:31 <ehird> i.e. specifying a type for them, and all that jazz
21:10:33 * oerjan actually has no experience implementing that
21:10:45 <ehird> Me neither!
21:10:52 <ehird> And especially no experience implementing type inferrence.
21:11:09 <ehird> Still.
21:11:28 <ehird> oerjan: I'm not sure which of our options -- or a third -- will make specifying the primitive functions and their types easier
21:15:26 <ehird> oerjan: In fact, how will we specify the types at all?
21:16:34 -!- helios24 has quit ("Leaving").
21:16:50 <oerjan> afk
21:50:13 -!- ehird has quit ("Leaving").
21:52:08 -!- ehird has joined.
22:01:34 -!- cherez has quit (Read error: 104 (Connection reset by peer)).
22:10:44 -!- unrepresentative has joined.
22:11:04 <ehird> oerjan:
22:11:09 <ehird> any thoughts?
22:11:14 <ehird> on typability and mutability and taht stuff
22:14:01 <oerjan> i recall faxathisia yesterday was trying to implement type inference for simply typed lambda calculus in haskell
22:15:11 <oerjan> also, that will not be enough for a stack language
22:16:21 <oerjan> i actually didn't look at what Cat ended up with
22:19:59 <ehird> oerjan: i tell you what
22:20:02 <ehird> i'll get ghc back up
22:20:09 <ehird> then let's just see how it goes, when we try and write it
22:22:10 -!- GreaseMonkey has joined.
22:26:15 <ehird> :)
22:26:23 <ehird> oerjan: I think, data types:
22:26:55 <ehird> 1. Integer 2. Float 3. Program 4. Primitive 5. List
22:26:58 <ehird> Maybe 6. Vector
22:27:21 <oerjan> 2. Double
22:27:56 <ehird> oerjan: Bah, ok. But still have a float?
22:28:03 <oerjan> why not
22:29:07 <oerjan> perhaps Tuple
22:29:18 <oerjan> or is that what you mean by Vector?
22:29:48 <oerjan> anyway more of those are easy to add, i think
22:32:21 <ehird> oerjan: Vector is a numerically-indexed, consecuative in memory O(1) access structure
22:32:24 <ehird> (aka 1-dimensional array ;))
22:32:43 <ehird> oerjan: Tuple, maybe but i'm not sure
22:32:48 <ehird> mostly you would just use the stack for that
22:33:06 <ehird> oerjan: I think we should get basic object and stack operations, then write the parser. It often helps enlighten.
22:34:19 <ehird> oerjan: Should types be first class objects?
22:34:26 <oerjan> no
22:34:28 <ehird> So you could do INT and get the integer type pushed to the stack
22:34:30 <ehird> aww, ok
22:34:33 <ehird> that would be fun though
22:34:39 <ehird> it'd also make implementing (...) easy
22:34:40 <ehird> ;)
22:34:41 <oerjan> then we get dependent types
22:34:43 <ehird> yes
22:34:45 <ehird> good point
22:34:50 <oerjan> and we are already in deep enough water
22:34:53 <ehird> TYPE is a TYPE is a TYPE ...
22:35:15 <ehird> oerjan: I'm naming all the constructors LName
22:35:16 <ehird> like
22:35:19 <ehird> LInt Integer
22:35:24 <ehird> to avoid conflicts.
22:35:27 <ehird> the actual type is Value, though.
22:35:40 <oerjan> not strictly necessary
22:35:51 <ehird> oerjan: should i not do it?
22:35:55 <oerjan> data constructors and type constructors are different name spaces
22:35:55 <ehird> i get confused when i see like
22:35:59 <ehird> String "abc"
22:36:02 <ehird> or
22:36:03 <ehird> Int 2
22:36:14 <ehird> oerjan: oh, extra type: String
22:36:26 <ehird> and thus character
22:36:34 <ehird> hm
22:36:38 <ehird> strings: immutable, or mutable
22:36:52 <oerjan> but we'll need constructors for types and values, so need to have two sets of some anyhow
22:36:59 <oerjan> immutable
22:37:43 <ehird> immutable? ok :|
22:37:54 <ehird> I seem to mutate strings all the time, when not programming in a really functional language
22:38:06 <ehird> (Lion isn't purely functional. Just you can utilize the functional paradigm to your benefit.)
22:38:41 <ehird> oerjan: instead of list, maybe we should have stack
22:38:53 <oerjan> when you have a dictionary and the keys can be mutated, you are in deep trouble
22:38:55 <ehird> but... i can't see you using a 'stack' structure heavily in programming, more than a list..
22:38:59 <ehird> oerjan: this is true
22:39:13 <ehird> oerjan: maybe we should provide 'stack' and 'list' which are equivilent :P
22:39:24 <oerjan> yeah
22:39:41 <ehird> oerjan: both are (IORef [Value])
22:39:53 <ehird> actually
22:39:55 <ehird> maybe we should do
22:40:16 <ehird> newtype Stack a = EmptyStack | Stack a Stack
22:40:22 <ehird> just to emphasise the difference
22:40:28 <ehird> but that might stop compilers optimizing
22:40:45 <oerjan> newtype Stack a = Stack [a] should work
22:41:02 <ehird> oerjan: pretty useless, though
22:41:06 <ehird> oerjan: Wait.
22:41:09 <ehird> Should lists be immutable?
22:41:19 <ehird> Schemers seem to like their lists in Diet Immutable flavour..
22:41:53 <ehird> oerjan: by the way
22:41:59 <ehird> type Stack = IORef [Value]
22:42:00 <ehird> or
22:42:03 <ehird> type Stack = [Value]
22:42:04 <ehird> pick one
22:42:28 <ehird> if the latter, then we get | LStack (IORef Stack) which is different from the stack in Lion programs
22:42:54 <oerjan> what is the stack in Lion programs?
22:43:06 <oerjan> they should definitely be interchangeable
22:43:17 <ehird> oerjan: the stack in lion programs is just a [Value]
22:43:22 <ehird> with all the primitives being (Stack -> IO Stack)
22:44:12 <oerjan> we could go the Ref way - having just one type that is mutable, and contains an arbitrary value
22:44:30 <ehird> oerjan: personally i don't like that
22:44:31 <ehird> do you?
22:45:25 <ehird> oerjan: another note: double vs float - i don't want two because it will make the interpreter more complicated
22:45:40 <oerjan> right, so take the best precision
22:45:43 <ehird> I say Double
22:46:08 <ehird> oerjan: In:
22:46:09 <ehird> [a b c]
22:46:13 <ehird> how do we represent the a, b and c?
22:46:23 <ehird> i.e. | LProg Type (WHAT?)
22:46:25 <ehird> err
22:46:25 <ehird> should be
22:46:29 <ehird> i.e. | LProg Type Type (WHAT?)
22:46:37 <ehird> oerjan: speaking of which, what type is a data constructor
22:46:56 <ehird> hmm
22:46:57 <ehird> :P
22:46:59 <oerjan> a function of its arguments, in haskell
22:47:05 <ehird> ah.
22:47:14 <ehird> so how do we represent 'a type in Lion'
22:47:44 <oerjan> also, values do not need to contain types
22:47:58 <ehird> oh
22:47:58 <ehird> true
22:48:04 <ehird> we can do that all pre-interpretation right?
22:48:10 <oerjan> yep
22:48:14 <ehird> hmm, we will need a two-pass interpretation :-)
22:48:29 <ehird> after parsing (which will not be able to parse into values, but some AST):
22:48:36 <ehird> analyze all imports and that shiznit
22:48:42 <ehird> gather up our types, do the inferrin' and the checksin'
22:48:53 <ehird> get all yer AST, munge into values
22:48:55 <ehird> interpret
22:49:24 <ehird> oerjan: oll korrect?
22:49:32 <oerjan> afaict
22:49:48 <ehird> oerjan: and the AST should be in Lion.AST
22:49:48 <ehird> not Lion
22:49:58 <ehird> because it's murky and most people would wet their pants upon seeing it
22:50:16 <oerjan> heh
22:50:21 <ehird> oerjan: So: LProg [AST] or LProg [Value]
22:50:29 * oerjan thinks the same is true for ghc...
22:50:33 <ehird> [Value] would require that we resolve [a b c] into the programs that a, b and c represent
22:50:40 <ehird> which is like forth and... you can't recurse with it
22:50:52 <ehird> So... [AST]? If so, that means we have to do analysis on quoted program call
22:51:00 <ehird> Which is... kinda lame.
22:51:16 <oerjan> LProg (Stack -> IO Stack)
22:51:27 <oerjan> theoretically enough
22:51:52 <ehird> oerjan: whoa, we're compiling?
22:51:55 <ehird> .. when did that happen
22:52:24 <oerjan> we might
22:52:33 <ehird> oerjan: and if we don't? :P
22:52:48 <ehird> also, how would we construct the haskell? we can't exactly generate a string and pass it to eval..
22:52:57 <ehird> we should use Harpy FOR THE SPEED OF IT! :p
22:53:30 * oerjan has heard the word Harpy but isn't quite clear on it
22:54:24 <ehird> oerjan: it's a monadic haskell DSL for generating x86 machine code (and getting a function out of it) at runtime
22:54:36 <ehird> http://uebb.cs.tu-berlin.de/harpy/
22:54:39 <oerjan> not constructing haskell text, just using combinators to combine programs
22:54:53 <oerjan> ah
22:55:06 <ehird> so, oerjan
22:55:10 <ehird> are we compiling or not?
22:55:13 <oerjan> well perhaps we should go via an AST first
22:55:15 <ehird> and if not, what data type for LProg? :P
22:55:24 <ehird> oerjan: oh, we will go via an AST
22:55:26 <ehird> because
22:55:27 <oerjan> oh wait
22:55:32 <ehird> we have to analyze all the types and all that
22:55:36 <ehird> and THEN we can compile that
22:55:45 <oerjan> we need LProg's to be available as runtime values
22:56:08 -!- Corun has joined.
22:56:28 <ehird> oerjan: just to execute them
22:56:45 <ehird> oerjan: though we do need the types i think?
22:57:12 <oerjan> hm if we do imports
22:57:26 <oerjan> of already compiled modules
22:57:40 <oerjan> then they need to include types somehow
22:57:47 <oerjan> although maybe not in the same file
22:57:49 <ehird> exactly..
22:57:55 <ehird> oerjan: I think interpretation is our best best.
22:58:03 <ehird> But then, we go back to the problem: What is an LPRog?
22:58:43 <oerjan> the thing is
22:59:23 <oerjan> interpret (LProg prog) :: Stack -> IO Stack
22:59:44 <ehird> oerjan: what about it
23:00:00 <oerjan> and that is the only way a prog is used
23:00:16 <ehird> oerjan: and getType :: LProg -> ???
23:00:25 <oerjan> so the prog could be just that, and interpret (LProg prog) = prog
23:00:32 <oerjan> or it could be a list
23:00:35 <ehird> oerjan: and getType :: LProg -> ???
23:00:39 <ehird> think about, say, a REPL
23:00:44 <ehird> when you enter an expression
23:00:46 <ehird> it has to typecheck it
23:00:49 <oerjan> it is merely a question when we do the conversion to Stack -> IO Stack
23:00:49 <ehird> but all the compiled functions it has
23:00:52 <ehird> don't have their types!
23:00:57 <ehird> they're just (Stack -> IO Stack)
23:01:05 <ehird> so... whoopsy!
23:01:18 <oerjan> i am assuming this is at the time we have already done type inference
23:01:26 <ehird> oerjan: REPL.
23:01:29 <oerjan> so values don't need to contain types
23:01:29 <ehird> An interactive mode.
23:01:32 <ehird> Do you see the problem now?
23:01:44 <oerjan> the dictionary for a repl
23:01:49 <ehird> watch this
23:01:51 <ehird> : foo ( INT -- INT ) ;
23:01:53 <oerjan> would contain (Value, Type) pairs
23:02:01 <ehird> "abc" foo {* foo has lost its type, so we can't check it *}
23:02:07 <ehird> oerjan: uhm what about the eval function
23:02:08 <ehird> just saying
23:02:20 <ehird> i think that the best way is to have some kind of actual interpretation.
23:02:33 <ehird> LProg Type Type ???
23:02:40 <ehird> The thing we need to fill in is ???
23:02:40 <oerjan> no types needed there
23:02:47 <ehird> oerjan: can you please read what i'm saying
23:02:50 <ehird> we need the types at runtime
23:02:54 <oerjan> yes and i disagree
23:03:02 <ehird> oerjan: so explain.
23:03:09 <oerjan> we don't need them in the values themselves
23:03:13 <ehird> where do we need them
23:03:23 <oerjan> we just need them in the toplevel REPL dictionary
23:03:46 <oerjan> each identifier comes with a value _and_ a type
23:03:47 <ehird> oerjan: REPL isn't the only instance of this.
23:04:22 <ehird> if you have a dynamic language, where ANYTHING could happen at runtime, including loading files in mish-mash order, you NEED to store those types
23:04:31 <ehird> oerjan: OK then, let's pretend we don't need types
23:04:33 <ehird> Fill in ???
23:04:38 <oerjan> if it's dynamic yes
23:04:58 <ehird> oerjan: Well, yeah. It is a dynamic language
23:05:00 <oerjan> it could still be either [Value] or Stack -> IO Stack
23:05:02 <ehird> Not in types, but in other cases.
23:05:09 <ehird> oerjan: [Value] it could not be.
23:05:18 <ehird> [a b c] -> what Value do you use for a, b and c?
23:05:49 <oerjan> hm
23:06:29 <ehird> exactly
23:06:33 <ehird> so the current only option is an AST
23:06:36 <ehird> which is probably the best bet
23:06:58 <oerjan> oh i am not sure [Value] is impossible
23:07:03 <ehird> but i still think having types in the value -- even if not neccessary -- will make writing the interpreter trivial
23:07:15 <ehird> oerjan: basic rule of thumb: everything that's a Value you can put in a ( -- ) declaration
23:08:07 <oerjan> i am still not sure there is a problem
23:08:24 <ehird> oerjan: what is the value for a b and c then
23:08:37 <oerjan> that depends, obviously, on what a b and c is
23:08:51 <oerjan> if a = 1, probably just that
23:08:55 <ehird> no, oerjan
23:08:57 <ehird> i mean literally
23:08:58 <ehird> [a b c]
23:09:21 <oerjan> if a b and c are primitive functions
23:09:32 <ehird> oerjan: primitive or maybe defined..
23:09:36 <ehird> and here's the main thing
23:09:39 <ehird> functions can be redefined.
23:09:44 <oerjan> oops
23:10:02 <oerjan> need to keep their types, right?
23:10:05 <ehird> haha, did i just stomp out our compiler design
23:10:06 <ehird> oerjan: yes
23:10:18 <ehird> otherwise you'd have to do major type rechecking
23:10:30 <ehird> and this would break the system:
23:10:33 <ehird> : dup ;
23:10:52 <ehird> oerjan: so, it does have to be an AST doesn't it
23:10:54 <ehird> realistically
23:11:04 <ehird> ah wait! we don't EVER have to convert an AST into Values
23:11:13 <ehird> we just go through the AST and interpret it
23:11:17 <ehird> just the stuff on the stack are Value-s
23:11:44 -!- timotiis has quit ("leaving").
23:12:03 <oerjan> well if functions can be redefined they need to be stored with their names/lookup keys
23:12:10 <oerjan> or as IORefs
23:12:30 <ehird> oerjan: yes, we'll also gain global variables from this
23:12:31 <ehird> hmm
23:12:38 <ehird> maybe local variables would make some code clearer too
23:12:49 <ehird> though lexical vars would be a huge overhead.
23:12:55 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
23:13:02 <ehird> oerjan: we have a (M.Map String Value)
23:13:10 <ehird> eh, wait
23:13:14 <ehird> oerjan: we have a (M.Map String (Bool,Value))
23:13:25 <oerjan> Bool?
23:13:29 <ehird> otherwise assigning a global variable to a program would have odd results (autocommandifies)
23:13:52 <ehird> (isCommand,value). (True,aProg) or (False,anyValue)
23:14:19 -!- oklopol has joined.
23:14:34 <ehird> oerjan: that's ugly, of course ;)
23:15:56 <oerjan> hm perhaps
23:16:34 <oerjan> a program executes while a value places itself on the stack
23:16:43 <ehird> yes
23:17:07 <ehird> oerjan: actually, i think we should store the type in programs only used by things like the repl
23:17:12 <ehird> it'd just make the repl a lot easier
23:17:12 <ehird> :P
23:17:13 <ehird> no other reason
23:17:34 -!- Insane has joined.
23:17:44 <ehird> oerjan: hmm, what to call the AST object?
23:17:48 <ehird> AST or ASTNode or Expr or..
23:18:37 <oerjan> assuming there is only one type of it, AST is fine?
23:19:31 <ehird> its just not a tree
23:19:33 <ehird> its a tree node
23:19:33 <ehird> :)
23:20:04 * oerjan spontaneously rearranges ASTN and adds a Y
23:21:02 <ehird> heh
23:21:10 * oklopol adds an "i", because this channel lacks it
23:21:25 <ehird> oerjan: I think Expr is good
23:22:01 <ehird> oerjan: hould we duplicate LInt/Char/String etc for the exprs?
23:22:03 <ehird> or should we have
23:22:06 <ehird> Constant Value
23:22:35 <oerjan> data constructors cannot be shared between types
23:23:51 <ehird> oerjan: I meant
23:23:57 <ehird> data Expr = EInt Integer | ...
23:24:04 <ehird> i prefer the Constant Value
23:25:45 <oerjan> -> food
23:25:51 <ehird> oerjan: d'aww
23:25:55 <ehird> i was just about to paste something
23:26:09 <oerjan> only from the fridge...
23:26:11 <ehird> http://hpaste.org/5333
23:26:13 <ehird> ah
23:26:14 <ehird> :P
23:27:12 <ehird> i just need the Type type ;P
23:27:19 -!- unrepresentative has left (?).
23:31:53 <ehird> oerjan: when you're back: what should Type be?
23:32:07 <oerjan> that's the hardest part i guess
23:32:22 <ehird> it'd mostly be a duplication of Expr. But without the constructor parameters
23:32:30 <oerjan> we need Forall Var Type for polymorphism
23:32:44 <ehird> oerjan: whut
23:32:57 <oerjan> er, do you know anything about haskell types?
23:33:11 <ehird> enough to write most stuff!
23:33:16 <ehird> But not Forall Var Type polymorphisms
23:33:25 <ehird> I kind of get the "forall a. ..." stuff though. If it's anything related
23:33:37 <oerjan> yes it's for that
23:33:54 <oerjan> hm, perhaps Forall [Var] Type
23:34:10 <oerjan> oh
23:34:22 <oerjan> stacks cannot be the same type as uniform lists
23:34:46 <ehird> exactly
23:34:48 <ehird> lists are immutable
23:34:51 <ehird> stacks are an IORef
23:34:54 <oerjan> no
23:34:59 <ehird> uh yes, see my paste
23:35:00 <oerjan> that is almost irrelevant
23:35:03 <ehird> h
23:35:05 <ehird> okay :P
23:35:14 <oerjan> lists contain only one common type
23:35:27 <oerjan> stacks need to be distinguished according to their contents
23:35:43 <oerjan> Stack Type Type perhaps
23:35:45 -!- cherez has joined.
23:35:47 <ehird> oerjan: haskell lists or my list
23:35:54 <ehird> because Lion lists are polymorphic
23:35:58 <ehird> they're [Value]
23:35:59 <oerjan> the first is the top type, the second the rest of stack
23:38:43 <oerjan> if there is to be any hope of type inference, then there must be a difference between what corresponds to haskell's tuple-like and list-like types
23:38:55 <ehird> yes, I guess
23:39:06 <oerjan> tuple-like means each position of the tuple (at least those positions we look at) must have a specific type
23:39:12 <ehird> OK, lists are all of one type... Hm... I don't know how to express that in Value
23:39:30 <oerjan> list-like means all positions have the same type
23:39:40 <oerjan> i don't think you can
23:39:49 <oerjan> without Oleg-level type hackery
23:40:39 <oerjan> hm, or...
23:40:52 <oerjan> maybe that's what they do with those GADTs
23:41:52 <oerjan> that would mean having Lion types be more closely connected to haskell types
23:42:03 <ehird> oerjan: maybe we should stop using haskell's type system, the way this is going :P
23:42:10 <ehird> well
23:42:12 <ehird> for Values
23:42:17 <ehird> like
23:42:26 <oerjan> right
23:42:28 <ehird> data Value = Value Type [... but then i wouldn't know what to put here obviously ...]
23:42:55 <oerjan> _either_ we make Value be completely dynamically typed, _or_ we need to be very clever with the haskell
23:43:25 <ehird> oerjan: i think being clever with haskell might make us bump into limimtations later on
23:43:35 <oerjan> right
23:43:47 <ehird> oerjan: OK, what zany magic does a Value become now?
23:45:18 <ehird> :)
23:45:32 <ehird> oerjan: Since I have no idea to say A BLOCK OF POLYMORPHIC MISHMASH since that is... not haskell's speciality
23:45:38 <ehird> Do we need to do weird pointer magic or something? :P
23:46:22 <oerjan> um i thought you said we _shouldn't_ be clever with the haskell
23:47:15 <ehird> oerjan: we shouldn't
23:47:20 <ehird> but i don't see another way to make Value polymorphic
23:47:41 <oerjan> we make Value polymorphic by ignoring all types in it
23:47:54 <oerjan> writing it as if the language is totally dynamically typed
23:47:56 <ehird> I think i'm missing something. What is Value's data definition?
23:48:19 -!- Hiat1 has joined.
23:48:42 <oerjan> you might remove the two Type's from it
23:49:00 <oerjan> i am slightly worried about the IORef Stack
23:49:18 <oerjan> exactly how is it supposed to be legal to change a Stack?
23:49:45 <ehird> oerjan: by pushing to it and popping off it?
23:49:51 <ehird> or swappign two valus in it?
23:49:53 <ehird> or dupping it?
23:49:55 <ehird> JUST A THOUGHT
23:50:20 <oerjan> and that can only be well-typed if all values in it have the same type
23:50:26 <ehird> well, no.
23:50:30 <ehird> It's just like the main program stack.
23:50:35 <ehird> Completely polymorphic
23:50:49 <ehird> there's only a single stack type, STACK
23:50:53 <ehird> it holds any value
23:51:21 <oerjan> that's not a single type in any static type system
23:51:36 <oerjan> er
23:51:46 <oerjan> that might be overgeneralizing
23:51:52 <ehird> oerjan: It is in this case, because otherwise the main stack would be badly typed
23:52:00 <oerjan> no
23:52:03 <ehird> So we have one magical kitten bunny unicorn polymorphic type.
23:52:16 <oerjan> in a concatenative language the type of the stack depends on time
23:52:23 <oerjan> where you are in the program
23:52:40 <ehird> 1 "abc" 2.3 [x y z]
23:52:47 <ehird> that is totally polymorphic.
23:52:54 <ehird> and having the stack as a first-class object is useful
23:52:57 <oerjan> but if it is static like Cat then the type is still fixed at a given point
23:53:07 <ehird> oerjan: oh, in FUNCTIONS, sure.
23:53:12 <ehird> that's just verified that the calls are OK
23:53:17 <ehird> but you can do whatever you want otherwise
23:53:17 <ehird> also
23:53:24 -!- Corun has changed nick to RockTheDragon.
23:53:26 <ehird> runInStack :: Stack -> IO Stack
23:53:46 <oerjan> so you want a lot of dynamic checking of stacks before passing them to functions?
23:54:01 <ehird> runInStack (s : p : xs) = do foo <- readIORef s; return (interpret p s : xs)
23:54:16 <ehird> oerjan: We determine this before interpretation..
23:54:49 <ehird> Since all FUNCTIONS have well defined types, and all PUSHES do, we can determine if a CALL is well-typed, but the STACK itself is totally polymorphic.
23:55:58 <oerjan> hm...
23:56:30 <oerjan> if you dup a mutable stack you are going to get aliasing problems
23:56:49 <ehird> oerjan: present a program (use any stdlib functions you want to do it) that is a problem with typing or whatever because i'm not seeing it
23:56:56 <ehird> oerjan: also, we copy objects with dupping, I think
23:57:05 <oerjan> entire stacks?
23:57:10 <oerjan> hm
23:57:29 <oerjan> in that case there is no point in making Stacks be in IORefs
23:57:55 <ehird> oerjan: yes there is
23:58:36 <ehird> runInStack (p : s : xs) = do foo <- readIORef s; stk <- interpret p s; writeIORef foo stk; (s : xs))
23:58:36 <ehird> hm
23:58:36 <ehird> i guess you are right
23:58:41 <ehird> oerjan: but then stacks are just identical to lists
23:58:46 <ehird> so i don't feel justified including them! ;)
23:58:54 <ehird> oerjan: oh
23:58:59 <ehird> you can stuff stacks in something else
23:59:02 <ehird> - say a structure -
23:59:05 <ehird> without having them copied
23:59:09 <ehird> thus, they need to be iorefs
23:59:32 <oerjan> but then you get aliasing problems again
2008-01-30
00:00:04 <ehird> oerjan: ditto in C and every other language
00:00:09 <ehird> even lisp has that problem, with mutable cons cells
00:00:20 <oerjan> sure, none of which have type inference
00:01:19 <ehird> oerjan: what does that change?
00:01:32 <ehird> seriously, present a program of your choosing
00:01:43 <ehird> : name ... ; or : name ( before -- after ) ... ;
00:01:46 <ehird> [quoted]
00:01:51 <ehird> and make up any library routines you want to demonstate
00:02:12 <oerjan> if a stack can be passed around and mutated then it becomes untenable to decide statically whether runInStack is well-typed
00:02:47 <ehird> oerjan: i still don't quite understand. can you show a program? :p
00:04:26 <oerjan> let's say there are two copies of a stack on the top of the main stack
00:04:49 <oerjan> you do a pop on one of them
00:05:15 <oerjan> *two shared copies
00:05:19 <ehird> does coding in non-haskell break your brain? :P
00:05:20 -!- Hiato has quit (Read error: 110 (Connection timed out)).
00:05:39 <ehird> but yes
00:05:42 <ehird> with you so far
00:06:16 <oerjan> clearly that one pop has changed the types of the top two elements of the stack
00:06:37 <ehird> yes
00:06:39 <ehird> no problem so far
00:06:43 <ehird> since there's only one object
00:06:49 <ehird> continue
00:07:17 <oerjan> then you do a drop, and a runInStack with the remaining stack object
00:07:36 <ehird> so runInStack verifies the types are OK then interprets.
00:07:50 <oerjan> so runInStack needs to do dynamical type checking?
00:08:16 <ehird> : runInStack ( STACK ( -- a ) -- a ) ... ;
00:08:18 <ehird> or similar
00:08:27 <ehird> oerjan: yes.
00:08:29 <ehird> yes it does.,
00:09:36 <oerjan> hm
00:09:54 <ehird> runInStack might not even be in the library
00:09:56 <ehird> it was just an example
00:09:59 <ehird> but yeah: this is OK
00:10:22 <oerjan> it is not statically type inferrable in advance of running the program though
00:10:31 <ehird> no, because runInStack is a type of eval
00:10:47 <ehird> oerjan: one thing that is worth noting: how do we express the type of "i"
00:10:54 <ehird> [X] i => X
00:11:05 <ehird> we need a way to express a polymorphic function.. which we have: PROG
00:11:10 <ehird> but then we need to have the return value
00:11:17 <ehird> : i ( PROG -- ? ) ... ;
00:11:21 <ehird> so we need a ( -- ) form
00:11:24 <ehird> but what is it?
00:11:39 * oerjan gives up
00:11:52 <ehird> oerjan: :( what did i do this time
00:11:52 <ehird> :P
00:12:27 <oerjan> you are trying to make a language that is a mish-mash of dynamical and static types, and expecting _me_ to have any idea how to type it
00:12:41 <ehird> well, ok, oerjan, I don't want it to be dynamically typed.
00:12:59 <ehird> So let's say a stack has a well-defined type at any time.
00:13:05 * oerjan isn't sure he can do it even with static types, to be fair
00:13:09 <ehird> mm
00:13:16 <ehird> How about we ditch first-class stacks for now?
00:13:32 <ehird> oerjan: Let's concentrate on getting Value to be polymorphic, so we can have a Type and do that properly, no?
00:16:52 <ehird> :)
00:17:01 <ehird> oerjan: So you said we needed to make Value polymorphic -- how do we do that?
00:18:40 <ehird> oerjan died
00:18:42 <oerjan> i'm sorry. cannot do it.
00:19:09 <ehird> literal 'cannot' or 'i cannot'? :p
00:19:24 <oerjan> never should have said that "maybe"
00:23:31 -!- immibis_ has joined.
00:25:44 -!- RockTheDragon has quit ("This computer has gone to sleep").
00:30:26 <ehird> oerjan: aww
00:30:27 <ehird> :)
00:36:55 -!- immibis has quit (Read error: 110 (Connection timed out)).
00:44:29 -!- immibis_ has quit (Read error: 110 (Connection timed out)).
00:44:55 -!- immibis_ has joined.
01:00:28 -!- immibis_ has quit (Read error: 104 (Connection reset by peer)).
01:00:45 -!- immibis_ has joined.
01:03:20 -!- RockerMONO has quit ("gentoo VM, here i come =P").
01:13:59 -!- RockerMONO has joined.
01:26:08 -!- ehird has quit ("This computer has gone to sleep").
02:38:07 -!- Insane_ has joined.
02:38:19 -!- Insane_ has quit (Remote closed the connection).
02:54:02 -!- Insane has quit (Read error: 110 (Connection timed out)).
03:20:59 -!- immibis_ has quit ("Clap on! , Clap off! Clap@#&$NO CARRIER").
03:42:45 -!- Tritonio__ has quit (Remote closed the connection).
04:37:29 -!- Hiat1 has left (?).
05:17:24 -!- GreaseMonkey has quit ("might be back later").
06:01:44 -!- oerjan has quit ("leaving").
06:17:53 -!- adu has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
09:42:45 -!- adu has quit (Remote closed the connection).
11:32:00 -!- RodgerTheGreat_ has joined.
11:32:43 -!- RodgerTheGreat has quit (Read error: 104 (Connection reset by peer)).
11:57:24 -!- Tritonio_ has joined.
12:33:21 -!- Tritonio_ has quit (Read error: 113 (No route to host)).
12:47:12 -!- puzzlet has quit (Read error: 104 (Connection reset by peer)).
12:49:16 -!- puzzlet has joined.
12:57:07 -!- Insane has joined.
12:57:19 <Insane> I have a pseudo-idea for a new language
12:57:56 <Slereah> Pseudo-stacks?
12:58:06 <Insane> Maybe a calculations-based language, where different operators (eg. +.*/^%) are different instructions that modify the current memory cell at the same time
12:58:24 <Insane> Like 5+3*8/2 would be a program
12:58:33 <Slereah> I think some guy proved that the Z3 computer was TC, and it was only able to do that
12:58:59 <Slereah> "It was possible to construct loops on the Z3, but there was no conditional jump instruction (although it would have been rather straightforward to insert one). Nevertheless, there is a way of implementing a universal Turing machine on a Z3 (assuming unlimited storage and zero crashing probability), as was shown in 1998."
12:59:19 <Slereah> http://www.zib.de/zuse/Inhalt/Kommentare/Html/0684/universal2.html
12:59:21 <Slereah> Thar.
12:59:22 <Insane> Hmm, no, I mean like the + instruction doubles the value at the same time, and the * instruction would print it etc.
12:59:24 <Insane> things like that
12:59:45 <Slereah> Oh.
13:01:15 <Insane> Hmm
13:01:26 <Insane> I'm just trying to invent an interesting new language :P
13:01:45 <Insane> btw
13:01:50 <Insane> Is there a language harder than malbolge?
13:01:53 <Insane> eg. more confusing
13:02:14 <Insane> I need something to write an interpreter for, now that my C# malbolge interpreter works fine
13:02:39 <Slereah> There's some suggestions to make Malbolge more difficult on the wiki IIRC.
13:04:58 -!- jix has joined.
13:32:32 <Slereah> Would this be confusing enough? A language that's based on the current time.
13:33:00 <Slereah> Instructions would just be wait and execute, and the execution would depend on the current time.
13:33:13 <Slereah> It would be quite vulnerable to lag.
13:37:28 <Insane> I guess
13:37:43 <Slereah> Also, wereprograms.
13:37:52 <Slereah> PRINTS HELLO WORLD ON FULL MOONS!
13:38:00 <Insane> reminds me of my "EFFICIENCY" prototype, a language that's so slow programmers *need* to write efficient code
13:38:04 <Insane> lol
13:38:12 <Slereah> Although for that, I guess you'd need more than just two instructions.
13:38:18 <Slereah> Like also sum conditionals.
13:38:23 <Insane> maybe
13:38:36 <Insane> ah brb, need pizza
13:39:15 <Slereah> You'd also have to time the execution time of the commands, otherwise you'd be screwed!
13:45:01 <Slereah> All I need now is a catchy name, and I can start working on it...
13:59:03 <Insane> back
13:59:16 <Insane> heh
13:59:22 <Insane> FuckTime
14:00:30 -!- ehird has joined.
14:02:13 <Slereah> Too expected.
14:02:26 <Slereah> And it won't be brainfuck comands
14:02:38 <Insane> Erm, no ChanServ in this chan btw?
14:02:46 <Slereah> I dunno
14:02:50 <Insane> lol
14:02:58 <Insane> oh wait
14:03:08 <Insane> I forgot that CahnServ doesn't have to be in the channel
14:03:15 <Insane> :P
14:03:50 <Insane> I'd recommend setting chanserv guard on
14:03:52 <Insane> but w/e#
14:05:42 <Insane> Let's make the language meep
14:06:00 <Slereah> What are you, a road runner?
14:06:17 <Insane> Noooah, I arez a bus meep meep
14:07:02 * Insane <3 lolcatz & lolcode
14:07:18 <Slereah> Considering that I want to use the commands more than once every reset of the computer clock, every 60 years or so, I think I'll need some modulo
14:14:26 <Insane> heh
14:14:47 <Insane> maybe time of day
14:15:09 <Insane> like certain programs can only function at 8 pm
14:16:18 <ehird> Insane: lolcode, insisiting on chanserv...
14:16:19 <ehird> hmph!
14:16:27 <ehird> :p
14:16:53 <ehird> some of us (well, OK, two of us) around here think lolcode's a ripoff :p
14:17:01 <Insane> off?
14:17:32 <ehird> rip - off
14:17:38 <ehird> it's not a big word, i'm sure you can handle it ;)
14:18:09 <Insane> No, I mean, what is it a ripoff of? ^^
14:18:29 <ehird> eh, various similar languages
14:18:36 <ehird> that take on internet memes and similar
14:18:41 <ehird> like l33t and the smiley ones
14:18:47 <ehird> + the hype oh god the hype
14:18:51 <ehird> the guy who made it is ridiculous
14:19:04 <ehird> he thinks he's some kind of god and made this awesome creation that everyone loves and wow aren't i awesome
14:19:18 <Insane> yay, drumming lessons and *coughing fit* church school
14:19:26 <Insane> See you guys in 5 hours
14:19:30 <Slereah> Bai.
14:19:35 -!- Insane has left (?).
14:19:38 <ehird> church 'school'
14:19:59 <Slereah> Involves a lot of getting on your knees, wink wink
14:20:05 <ehird> hah
14:21:21 <Slereah> Hm. Maybe I could do some multiple clocks for clock operations.
14:21:35 <Slereah> For no obvious purpose, but who knows!
14:22:02 <ehird> : dip (a' (a' -- b') -- b') ... ;
14:23:54 <Slereah> Maybe... some sort of multiple clocks memory
14:23:56 <Slereah> Or something.
14:24:11 <Slereah> Damn. I need some Gary Gum.
14:27:01 -!- pikhq has quit (Read error: 110 (Connection timed out)).
14:27:16 -!- helios24 has joined.
14:37:31 -!- pikhq has joined.
14:44:04 -!- Hiato has joined.
14:44:17 <Hiato> Guess who's back :P
14:45:21 <ehird> not hiato
14:45:23 <ehird> ?
14:45:50 <Hiato> damn, was I too obvious...
14:53:16 <RodgerTheGreat_> Slereah: you'd probably need some anti-garry gum, too.
14:54:33 <ehird> anti garrity gum
14:54:38 <ehird> It's japanese.
14:55:15 <RodgerTheGreat_> ehird: Garry Gum is most definitely british
14:55:52 <RodgerTheGreat_> http://www.youtube.com/watch?v=MiMWJ1xBo8w
14:55:55 <ehird> RodgerTheGreat_: 'anti garrity gum'
14:55:58 <ehird> say it out loud
14:56:55 <Slereah> Look around you even produced a music video! http://www.youtube.com/watch?v=g09gOh2qwug
14:57:10 <Slereah> It's quite good.
14:57:29 <RodgerTheGreat_> interesting
14:57:37 <ehird> that's from the Computer episode
14:57:38 <ehird> iirc
14:57:46 <Slereah> Music episode.
14:57:54 <ehird> ah
14:57:58 <ehird> well, a computer did it
14:58:01 <Slereah> Though the music was produced by a music-writing computer!
14:59:47 <RodgerTheGreat_> Look around you: computers! http://www.youtube.com/watch?v=diD2lr_BGcU
14:59:58 <ehird> i love being british
14:59:58 <ehird> :P
15:00:20 <Slereah> So far, my idea's this. Imagine a Turing machine. Only instead of cells, you have clocks (although the clocks must actually be created by the program).
15:00:48 <Slereah> The program either waits a second, or execute the value of the clock, modulo (number of instructions)
15:03:24 <Slereah> Commands being the creation (or possibly just reseting, if I chose that they exist from the beginning) or a clock, input, output mod 256, changing clock, and so on
15:03:51 <Slereah> Probably some special clock for the computer clock, too.
15:07:53 <RodgerTheGreat_> I have an immense urge to name a computer "Bournemouth"
15:08:10 <ehird> RodgerTheGreat_: that's actually a good idea
15:08:10 <Slereah> Will it be able to escape a steel cage?
15:08:14 * ehird sets his hostname to that
15:08:28 <ehird> although bournemouth doesn't really suite an imac
15:08:31 <RodgerTheGreat_> Slereah: if it's powerful enough
15:09:38 -!- timotiis has joined.
15:13:30 <Slereah> Why is there an Esco link in the Byter article?
15:13:42 <Slereah> It doesn't even pretend to interpret it as far as I know
15:13:47 <ehird> beacuse the esco people are annoying spammers
15:13:48 <ehird> :)
15:14:10 <ehird> who also can't write a decent interpreter for even Brainfuck
15:14:36 <ehird> http://esco.sourceforge.net/?page=elang yep, they don't even claim to interpret it
15:14:38 <ehird> gah
15:14:57 <ehird> ' The name of the language is generally not capitalized, although it is a proper noun.' they fucking capitalize it in the same page
15:15:00 <ehird> how dumb have you got to be
15:15:01 <ehird> >_<
15:15:43 <RockerMONO> hi
15:15:49 <RockerMONO> ehird: the wikipedia page for brainfuck?
15:16:01 <ehird> RockerMONO: no
15:16:04 <ehird> esco's carppy site
15:16:13 <RockerMONO> ah, brainfuck has that same quote =P
15:16:18 <RockerMONO> *the brainfuck wikipedia page
15:16:38 <ehird> its copied and pasted
15:17:05 <RockerMONO> heh
15:17:09 <RockerMONO> thing that bugs me...
15:17:20 <RockerMONO> "...and is not suitable for practical use." <-- i made an IRC bot in it
15:17:26 <ehird> no
15:17:27 <ehird> you didn't
15:17:29 <RockerMONO> (using a custom dialect)
15:17:32 <ehird> exactly
15:17:33 <ehird> and
15:17:39 <ehird> that's not 'practical use'
15:17:46 <ehird> just as much as the mandelbrot program is
15:17:57 <Slereah> What is practical use?
15:17:59 <RockerMONO> define 'practical use'?
15:18:03 <RockerMONO> damn Slereah beat me
15:18:14 <ehird> an illdefined thing but mainly involves 'writing serious stuff'
15:18:30 <ehird> serious not being like 'I AM SERIOUS GRRR' but things that aren't just amusing toys to play around with
15:18:34 <ehird> ... like an IRC bot written in BF
15:18:49 <RockerMONO> ... well the irc bot can parse brainfuck too =P
15:18:54 <RockerMONO> s/parse/interpret/g
15:18:54 <Slereah> I have a moustache, isn't it serious enough?
15:19:42 <RockerMONO> issue w/ the bot is it's tendency for the socket to break and send the bot into 50% CPU usage because it isn't using a blocking socket (which slows the loop) >.>
15:20:36 <RockerMONO> i added 3 commands in my dialect of brainfuck... need to work on the connection itself though (that actually requires a string =P)
15:21:30 <Slereah> What's the dialect?
15:22:18 <RockerMONO> Slereah: i haven't decided what to call it yet, i made it myself, starting w/ a simple brainfuck interpreter me and danopia wrote in PHP (that in itself is enough to make me laugh:)
15:22:27 <ehird> in PHP
15:22:27 <ehird> :|
15:22:40 <RockerMONO> ehird: dont piss yourself yet, i'm working on one in C++
15:22:41 <ehird> RockerMONO: do you even know any non-BF esolangs?
15:22:41 <RockerMONO> =P
15:22:45 <ehird> uh
15:22:47 <ehird> thats just as bad.
15:22:55 <Slereah> What are the differences with BF?
15:22:59 <RockerMONO> ... ok, and no i dont
15:23:04 <RockerMONO> Slereah?
15:23:08 <ehird> RockerMONO: typical.
15:23:12 <Slereah> You know, the dialect.
15:23:15 <ehird> what you have done is common and uninteresting.
15:23:33 <RockerMONO> ehird: woohoo thanks for being an ass?
15:23:54 <Slereah> Well, 7 commands. Let's see what I can does with it.
15:24:01 <tejeez> does anyone know a esolang that could be used for anything serious? ;)
15:24:24 <Slereah> tejeez: Theoretical purpose?
15:24:30 <Hiato> ACRONYM, for serious frustration ;)
15:25:15 <ehird> RockerMONO: it's true.
15:25:29 <ehird> tejeez: 'xactly, that's the antiesolang
15:25:45 <RockerMONO> ehird: yea but you dont see anyone else being an ass about it
15:26:16 <Slereah> My ass is, but that's how he's always like
15:26:27 <ehird> i wasn't being an ass.
15:26:40 <ehird> maybe you should be more resistant to criticism
15:27:04 <Slereah> Hm. Maybe Clockpunk for the name.
15:27:21 <RockerMONO> ehird: maybe theirs no reason for criticizing someone messing around because they have nothing better to do at the moment, hm?
15:29:27 <RockerMONO> criticizing someone for messing around in something they just found not even 3 days ago is about as useful as me dealing with this when i dont even need to be in this channel
15:29:34 -!- RockerMONO has left (?).
15:30:39 <ehird> sensitive.
15:30:50 <Slereah> And nothing of
15:30:54 <Slereah> def movehead(w, h):
15:30:58 <Slereah> if w=="LE":
15:31:02 <Slereah> a=1
15:31:06 <Slereah> b=0
15:31:10 <Slereah> if w=="RI":
15:31:14 <Slereah> a=-1
15:31:18 <Slereah> b=1
15:31:30 <Slereah> if h==b:
15:31:33 <ehird> whoa
15:31:33 <ehird> whoa
15:31:34 <Slereah> h=h+a
15:31:34 <ehird> whoa
15:31:35 <ehird> PASTEBIN
15:31:38 <Slereah> elif h>0 and h%2==1:
15:31:39 <ehird> :|
15:31:42 <ehird> pastebin!!
15:31:42 <Slereah> h=h+(2*a)
15:31:42 <Slereah> elif h>=0 and h%2==0:
15:31:42 <Slereah> h=h-(2*a)
15:31:42 <Slereah> return h
15:31:42 <Slereah> Damn, wrong buttin
15:32:19 <Slereah> When I say "wrong button", it means I didn't intend to paste it!
15:34:03 <ehird> that came AFTER you said everything
15:34:08 <ehird> and way after i told you to stop
15:34:52 <Slereah> Or did it?
15:35:21 <ehird> yes
15:35:24 <ehird> [15:31] <Slereah> h=h-(2*a)
15:35:24 <ehird> [15:31] <Slereah> return h
15:35:24 <ehird> [15:31] <Slereah> Damn, wrong buttin
15:35:24 <ehird> [15:32] <Slereah> When I say "wrong button", it means I didn't intend to paste it!
15:37:01 <Slereah> Strange.
15:37:18 <ehird> nos
15:37:18 <ehird> no
15:37:20 <ehird> that's how irc works
15:37:34 <Slereah> [16:30] <Slereah> Damn, wrong buttin
15:37:37 <Slereah> [16:31] <ehird> whoa
15:37:41 <Slereah> [16:31] <ehird> whoa
15:37:46 <Slereah> [16:31] <ehird> whoa
15:37:49 <Slereah> [16:31] <ehird> PASTEBIN
15:37:50 <Slereah> [16:31] <ehird> :|
15:37:50 <Slereah> [16:31] <ehird> pastebin!!
15:37:50 <Slereah> [16:32] <Slereah> When I say "wrong button", it means I didn't intend to paste it!
15:37:50 <Slereah> Time paradox?
15:37:55 <ehird> no
15:37:56 <ehird> that's how irc works
15:37:59 <Slereah> How!
15:38:26 -!- RodgerTheGreat_ has changed nick to RodgerTheGreat.
16:21:08 <ehird> hmm
16:21:11 <ehird> i want a reason to write something in C
16:25:51 <Slereah> I currently have nuclear missiles directly pointed at your house.
16:26:04 <Slereah> They will be launched if you do not program in C.
16:26:26 <tejeez> time paradoxes are quite common in irc
16:29:20 <ehird> Slereah: =(
16:29:25 <ehird> BUT SRSLY
16:29:47 <Slereah> I ARE SERIOUS
16:30:20 <Slereah> Code, or feel the power of my dong!
16:30:23 <Slereah> That is, http://en.wikipedia.org/wiki/Taepodong-1
16:32:40 <puzzlet> seems that you killed the whole channel
16:32:52 <Slereah> "The rocket's first stage is a Nodong-1 IRBM."
16:33:06 <Slereah> It's hard to take the nuclear threat that seriously.
16:33:51 <puzzlet> me neither, it's also funny for native Koreans
16:34:10 <RodgerTheGreat> especially when it has an inferior steering mechanism
16:40:02 <ehird> RodgerTheGreat: Slereah: puzzlet: people who are awake:
16:40:16 <ehird> http://pastebin.ca/raw/880225 what do you think of my iteration/recursion thingy?
16:40:29 <RodgerTheGreat> what language is this?
16:40:30 <ehird> : factorial ( INT -- INT ) [zero?] [1] [1 -] [*] iter-rec ;
16:40:34 <ehird> RodgerTheGreat: mine
16:40:34 <ehird> :P
16:40:47 <ehird> ( before -- after ) is a simple stack diagram, it's a function type
16:41:16 <ehird> if you look at my factorial, you can see the correspondence with my factorial code
16:41:29 <ehird> according to oerjan it's Haskell's iterate+takeWhile+foldr all in one
16:41:35 <ehird> and unfoldr can be built from it, apparently
16:44:28 * Slereah is trying a partial hello world on Clockpunk
16:44:41 <Slereah> Partial because it will already take two minutes to work.
16:47:15 <Slereah> Well, the printing function works okay at least.
16:52:13 <Slereah> Maybe I should work in 0.1 seconds.
16:52:57 -!- Hiato has quit (Read error: 110 (Connection timed out)).
16:55:01 <Slereah> Much better.
16:57:24 <Slereah> Ah yes, the reason why I chose 1 second.
16:57:36 <Slereah> 0.01 second makes the execution time matter.
16:59:06 <Slereah> Well, let's try with 1 and go from there.
17:04:08 -!- Hiato has joined.
17:09:35 <Slereah> It seems that the instruction time quickly matters.
17:14:41 <ehird> try 0.1, not 0.01
17:14:47 <Slereah> I tried.
17:14:53 <Slereah> I also tried 1 second.
17:15:26 <Slereah> I should find out how long each instruction takes.
17:15:47 <Slereah> It might verily be the slowest and least portable language!
17:19:34 -!- puzzlet_ has joined.
17:31:20 <ehird> :(
17:31:33 <ehird> it seems c has absolutely no use!
17:31:42 <Slereah> http://pastebin.ca/raw/884902
17:32:06 <Slereah> That's what Hello, world! would look like, assuming that the symbols are evaluated in 0 seconds.
17:32:37 -!- puzzlet has quit (Read error: 110 (Connection timed out)).
17:34:28 <Slereah> Although I wonder if I can actually take advantage of the execution time.
17:34:38 <Slereah> To reduce the number of -'s.
17:36:23 -!- puzzlet_ has changed nick to puzzlet.
17:38:27 <ehird> puzzlet: you're the one who has loads of logs you can grep right?
17:40:28 <puzzlet> i'm the one who seems to, but no, i don't log things
17:43:02 <ehird> was it timotiis then?
17:43:15 <ehird> someone was fast with the logs when i asked about my TC regexp conversation with ais523
17:43:28 <timotiis> ehird: that wasn't me, but I can look up who it was for you
17:43:54 <timotiis> or not, I don't log this place apparently
17:44:41 <ehird> it was: puzzlet or sekhmet then
17:44:44 <ehird> i dunno
17:44:46 <ehird> they look right
17:44:55 <ehird> i think puzzlet really..
17:45:07 <puzzlet> i'd use google
17:45:53 <ehird> hm ok
17:46:03 <ehird> nope
17:46:12 <sekhmet> ehird: I do
17:46:17 <sekhmet> ehird: What do you desire?
17:46:40 <ehird> sekhmet: hehe, my conversation with faxasthia about concise lisp, and i ought to set up a bouncer so all my logs are in one place..
17:46:48 <ehird> :)
17:47:05 <sekhmet> ehird: Actually I've gotta split, I'm late as it is
17:47:19 <sekhmet> I'll hook you up when I get back (in N hours, where N>2)
17:47:38 <ehird> alright
17:47:40 <ehird> bye :)
18:00:16 <ehird> google isn't helpful ;(
18:00:43 -!- Corun has joined.
18:00:47 <Slereah> THE GOOGLE, THEY DO NOTHING
18:18:09 <Corun> THE NOTHING, THE DO GOOGLE
18:18:54 -!- Corun has quit ("google...").
18:25:09 <AnMaster> <Slereah> That's what Hello, world! would look like, assuming that the symbols are evaluated in 0 seconds.
18:25:14 <AnMaster> what language is that?
18:26:00 <AnMaster> ehird, I do log
18:26:05 <AnMaster> around when was this
18:26:11 <AnMaster> as I rotate logs once / month
18:26:27 <AnMaster> and place ones older than 3 months on cd compressed
18:27:04 <ehird> well
18:27:05 <ehird> kind of recent?
18:27:11 <AnMaster> last 3 months?
18:27:12 <ehird> either in the past 3 months, or the 3 months before that
18:27:28 <AnMaster> I'm not sure I was in this channel 6 months ago
18:27:33 <AnMaster> what word to grep for?
18:28:33 <AnMaster> ehird, ?
18:28:40 <Hiato> Slereah, I know this is delayed, but could you please paste the pastebin paste in nopatse (that was allot of paste ;) ) because Pastebin comes up as blank in my web browser. You are welcome to deny this request :P
18:28:55 -!- Insane has joined.
18:30:44 <AnMaster> ehird, ah "concise lisp" was it? well I found something from this month's log
18:31:13 <ehird> this month? hm maybe
18:31:19 <AnMaster> http://rafb.net/p/kiZFVq83.html
18:31:26 <AnMaster> ehird, tell me if you want more context
18:31:38 <AnMaster> emacs++ btw
18:32:17 <ehird> hm
18:32:21 <ehird> what's emacs got to do with it? :p
18:32:31 <AnMaster> jan 15 02:11:10 <ehird`> faxlore: obviously Concise Lisp will come with its own emacs-alike written in Concise Lisp ;)
18:32:32 <AnMaster> that
18:32:32 <AnMaster> ?
18:32:35 <ehird> ah
18:32:36 <ehird> yeah :D
18:32:50 <AnMaster> ehird, anyway was this the convo you wanted?
18:32:54 <ehird> yes, thank you
18:32:54 <ehird> :)
18:32:56 <AnMaster> more context?
18:33:24 <ehird> yeah, it spanned pretty much all jan 15
18:33:34 <AnMaster> hm can I pastebin that much
18:33:56 <AnMaster> ehird, well the times are in UTC+2
18:33:58 <AnMaster> eh
18:33:59 <AnMaster> +1
18:34:00 <AnMaster> actually
18:34:10 <AnMaster> CET anyway
18:34:30 <AnMaster> ehird, so still all of the 15th?
18:35:03 <AnMaster> $ grep -E '^jan 15' FreeNode-#esoteric.log | wc -l 1288 <-- hrmm
18:35:05 <ehird> i think so
18:36:27 <AnMaster> http://rafb.net/p/LYZPUZ63.html
18:37:45 <AnMaster> ehird, useful? want more?
18:38:32 <ehird> i think that's all
18:38:32 <AnMaster> ehird, also tell me: what is "concise lisp"?
18:38:55 <ehird> AnMaster: my ridiculous dialect of lisp, created when i saw how shitty arc was going to be :P
18:39:05 <AnMaster> arc?
18:39:13 <ehird> eh, you aren't the best person to talk about this to
18:39:13 <ehird> :-)
18:39:16 <AnMaster> ehird, btw: these logs are from erc :)
18:39:18 <ehird> PG's terrible dialect of lisp
18:39:20 <AnMaster> emacs irc client
18:39:21 <ehird> AnMaster: aieeee
18:39:25 <AnMaster> ehird, what?
18:39:31 <ehird> concise lisp's editor, though emacs-like, will certainly have no irc client ;)
18:39:32 <AnMaster> erc rocks
18:39:47 <AnMaster> ehird, aww? but I can check my mail in it I hope?
18:39:52 <AnMaster> and play dunnet?
18:40:51 <ehird> AnMaster: hm, you can check your mail solely on the provision that you're only doing it to edit outgoing mail in it
18:40:52 <ehird> :-)
18:41:02 <AnMaster> heh?
18:41:05 <ehird> dunnet... hm, maybe if i get bored ;)
18:41:09 <AnMaster> and browse the web?
18:41:20 <AnMaster> ehird, well may I'll code extensions to it that does irc then!
18:41:25 <AnMaster> if I get bored
18:41:28 <AnMaster> GNU emacs++
18:41:30 <ehird> AnMaster: okay ;)
18:41:48 <ehird> yeah well concise lisp is a lot saner than emacs
18:41:50 <AnMaster> ehird, anyway how does it differ from normal lisp?
18:41:54 <ehird> for instance it actually has lexical scope
18:41:54 <ehird> xD
18:42:06 <ehird> AnMaster: tidied up, some new stuff, and really concise shit
18:42:10 <ehird> (def accgen [{++ _}])
18:42:22 * AnMaster mostly codes in C (-std=c99 -Wall -Werror -pedantic) or bash in fact
18:42:25 <ehird> ^^ i got tired of paul graham saying how great arc was because the accumulator generator was so short in it
18:42:33 <AnMaster> I'm not very good at elisp
18:42:43 <AnMaster> just did a bit to customize erc with a few custom hooks
18:42:47 <ehird> you don't want to be elisp is horrid
18:42:50 <ehird> it's dynamically scoped
18:42:51 <ehird> :|
18:43:01 <AnMaster> hm?
18:43:31 <ehird> AnMaster: if you define a variable X in function F that calls function G, in G, X refers to F's definition
18:43:34 <ehird> so:
18:43:45 <AnMaster> ah, sounds like local variables in bash
18:43:48 <AnMaster> they work that way
18:43:56 <ehird> (defvar foo 2) (defun f () (let ((foo 3)) (g))) (defun g () foo)
18:43:59 <ehird> (f) ==> 3
18:44:06 <ehird> which, of course, is just ASKING for bugs
18:44:14 <ehird> since what if it's in a long away file, several places up the call stack?
18:44:35 <ehird> lexical scoping is much better
18:44:36 <AnMaster> ehird, well a function local variable in bash is accessible in any functions called from the function that declared it
18:44:41 <ehird> the example there would return 2
18:44:44 <AnMaster> I abused that a few times when coding in bash
18:44:58 <ehird> because the scoping is inferrable entirely form the source text
18:45:01 <ehird> thus: lexical
18:45:01 <AnMaster> like "return by variable name to avoid slow subshells" in my irc bot in bash (http://envbot.org)
18:45:02 <AnMaster> !
18:45:04 <EgoBot> Huh?
18:45:14 <AnMaster> using printf -v of bash 3.1 or later XD
18:46:41 <AnMaster> ehird, :)
18:47:56 <ehird> AnMaster: here's how superior concise lisp is when compared to scheme:
18:47:57 <ehird> jan 15 01:14:11 <ehird`>(def acc [{++ _}])
18:47:57 <ehird> jan 15 01:14:24 <ehird`>(define (acc n) (lambda (x) (set! n (+ n x)) n))
18:48:15 <AnMaster> which is which?
18:48:26 <ehird> former is concise lisp
18:48:30 <ehird> thus, concise
18:48:37 <AnMaster> looks like functional brainfuck
18:48:56 <AnMaster> partly
18:49:03 <AnMaster> gopher://blubb.ch/1/software/fbf
18:49:11 <AnMaster> very interesting brainfuck variant
18:49:26 <AnMaster> I got a version that fixes some tracebacks locally, a sec
18:49:40 <AnMaster> ehird, gopher://inspircd.dyndns.org/1/Software/fbf
18:50:10 * AnMaster waits for comments on the choice of protocol
18:50:18 <ehird> nah
18:50:23 <ehird> i like gopher! (note: lie ;))
18:50:39 <AnMaster> hahah
18:50:45 -!- Tritonio_ has joined.
18:50:47 <AnMaster> ehird, anyway it works in firefox
18:50:50 <AnMaster> or lynx
18:50:56 <AnMaster> don't try wget or curl
18:51:35 <AnMaster> ehird, anyway! what do you think of it?
18:51:38 <AnMaster> fbf I mean
18:52:40 -!- chuck has quit (Remote closed the connection).
18:52:45 -!- chuck has joined.
18:53:12 <Tritonio_> fbf?
18:54:16 <AnMaster> gopher://blubb.ch/1/software/fbf (and my bug fixed version at: gopher://inspircd.dyndns.org/1/Software/fbf )
18:55:02 <AnMaster> Tritonio_, :)
18:57:22 <Tritonio_> http://inshame.blogspot.com/search/label/My%20Progs%3A%20FuckBrainfuck
18:59:34 <AnMaster> Tritonio_, hm? this is not "fuckbrainfuck" it is "functional brainfuck"
18:59:40 <Tritonio_> i know
18:59:48 <Tritonio_> :-)
19:03:51 <AnMaster> Tritonio_, so they are different things
19:04:16 <AnMaster> Tritonio_, do you provide the source in a easier to read online format than zip?
19:04:25 <Tritonio_> not exactly. the both compile to brainfuck and support functions...
19:04:41 <AnMaster> Tritonio_, I don't want to download it to see it so..
19:04:45 <Tritonio_> no. just download the zip and open the Fuckbrainfuck.lua file
19:04:50 <Tritonio_> sorry
19:04:50 <AnMaster> lua? eww
19:04:54 <AnMaster> no way then
19:04:59 <Tritonio_> :-P
19:05:27 <AnMaster> fbf (and that refers to functional brainfuck, FBF to your one) is at least C
19:06:13 <Tritonio_> so?
19:08:13 <Tritonio_> is there a way to create [] blocks with unbalanced <> ?
19:09:09 <oklopol> in what?
19:09:22 <Tritonio_> fbf
19:10:33 <AnMaster> Tritonio_, not sure what you mean?
19:10:47 <Tritonio_> some thing like this [->]
19:11:24 <AnMaster> should compile in brainfuck, however won't it result in an endless loop?
19:11:38 <Tritonio_> not necessarily
19:11:50 <Tritonio_> it might find acell with value 1 and stop there
19:11:54 <AnMaster> if the program contains only that then yes
19:13:03 <AnMaster> Tritonio_, anyway, fbf is functional, purely functional apart from input routine I think
19:13:43 <Tritonio_> what do you mean? (apart for the input routine)
19:14:16 <AnMaster> that a function using the input routine obviously depends on something else than it's parameters
19:14:33 <AnMaster> eh
19:14:35 <AnMaster> statement*
19:14:45 <AnMaster> as in ,
19:15:49 <Tritonio_> O_o
19:15:55 <AnMaster> ?
19:16:10 <Tritonio_> i still don't get what you're talking about... :-(
19:16:37 <Tritonio_> how do you input data? you simply use the , in a code block right?
19:16:39 <AnMaster> any function using the opcopde/statement/whatever for input (,) in fbf will depend on something else than just the parameters to said function
19:17:09 <Tritonio_> and why is that?
19:17:11 <oklopol> AnMaster: if you were talking about bf in general, you need to be able to have unbalanced <>'s
19:17:13 <AnMaster> therefore they are not pure functions
19:17:28 <oklopol> not sure if the semantics are different in your languages
19:17:42 <Tritonio_> read(1) { $1, }
19:17:44 <AnMaster> oklopol, "mine" is wrong, I didn't code it, I mearly fixed a few bugs in it
19:17:45 <Tritonio_> isn't this ok?
19:17:53 <AnMaster> oklopol, gopher://inspircd.dyndns.org/1/Software/fbf
19:18:05 <AnMaster> Tritonio_, sure is, but it isn't a pure function
19:18:22 <Tritonio_> what is it then?
19:18:32 <AnMaster> http://en.wikipedia.org/wiki/Functional_programming#Pure_functions
19:21:10 <Tritonio_> oh ok. i got it now.
19:30:40 <AnMaster> oklopol, so is fbf turing complete?
19:31:12 <Tritonio_> can you implement tables on it?
19:31:23 <Tritonio_> you will need unbalanced <> to do so
19:31:50 <Tritonio_> in brainfuck you can and it's turing complete. so maybe this one is not?
19:32:23 <oklopol> AnMaster: it is not if you have matched <>'s with normal bf semantics, but i'm assuming you have something more
19:32:42 <oklopol> unless, you have bignums, then it prolly is
19:33:48 <AnMaster> oklopol, I gave a link above
19:34:02 <oklopol> yes, but my screen does not have room for firefox
19:34:21 <AnMaster> oklopol, it compiles to brainfuck, so it depends on the interpreter then running that brainfuck code
19:34:22 <oklopol> watching friends
19:34:28 <AnMaster> it could have bignums
19:34:40 <AnMaster> "friends"?
19:34:44 <AnMaster> what friends?
19:34:59 <oklopol> well, anyway, a lot of stuff is very hard to do without unbalanced <>'s
19:34:59 <AnMaster> is it a movie or something?
19:35:18 <oklopol> because you have to have infinite data structures in a fixed number of cells
19:35:25 <oklopol> it's just friends episodes
19:35:55 <AnMaster> "friends" is a tv series or something?
19:36:10 <oklopol> basically, the only feasible way is to use modulus for stuff like lists.
19:36:16 <oklopol> friends is a tv series, yes
19:36:36 <AnMaster> oklopol, hm? fixed number of cells? no, not really, depends on the interpreter
19:36:52 <AnMaster> some doesn't limit except the machine byte size
19:36:56 <oklopol> ...?
19:36:56 <AnMaster> eh
19:37:01 <AnMaster> machine memory size*
19:37:09 <AnMaster> if you mean number of data cells
19:37:12 <oklopol> i mean
19:37:16 <oklopol> lessay you want a stack
19:37:20 <AnMaster> yep
19:37:45 <oklopol> the easy way is to have the stack as numbers on the tape
19:37:48 <oklopol> so that going right is pushing
19:37:52 <oklopol> and going left is popping
19:38:00 <oklopol> this is impossible with unbalanced <>'s
19:38:10 <AnMaster> hm
19:38:26 <AnMaster> but do you need to have a stack to be turing complete?
19:38:36 <oklopol> you have to store the stack as a*N^0 + b*N^1 + c*N^2 etc.
19:38:49 <oklopol> where a, b and c are the values on the stack
19:38:55 <Tritonio_> AnMaster, yeap
19:38:56 <oklopol> and N is the maximum size of one element
19:39:06 <oklopol> AnMaster: lol :P
19:39:15 <oklopol> you need to be able to simulate a stack, yes :D
19:39:17 <AnMaster> couldn't you store a value to identify how long the stack is?
19:39:23 <oklopol> err
19:39:25 * AnMaster ponders
19:39:28 <AnMaster> actually no
19:39:49 <AnMaster> oklopol, however as I said, I didn't make fbf, I just took the software and fixed a few bugs
19:40:02 <AnMaster> maybe I'll extend it if it isn't turing complete
19:40:23 <oklopol> i'm just saying you need unbalanced <>'s or you'll end up simulating a tape with a bignum using modulus.
19:41:09 <oklopol> nothing wrong with that, but i don't think we need another deathmode for brainfuck :-)
19:41:19 <AnMaster> "deathmode"?
19:42:01 <oklopol> my inversion of wimpmode
19:42:09 <AnMaster> wimpmode meaning?
19:42:11 <oklopol> some others have used it, so i'm using it nowadays
19:42:15 <oklopol> umm
19:42:23 <oklopol> simplification of a language that's otherwise hard
19:42:34 <AnMaster> oh yes this makes the language simpler indeed
19:42:37 <oklopol> like adding lambdas to unlambda or something
19:42:40 <AnMaster> ah no
19:42:45 <oklopol> it makes some stuff easier, yes
19:42:50 <AnMaster> just making it functional :)
19:43:03 <oklopol> but for anything complicated, you very much need unbalanced <>'s.
19:43:11 <oklopol> functional? first-class functions?
19:43:18 <AnMaster> oklopol, see the link
19:43:23 <oklopol> :\
19:43:28 <oklopol> do i have to...
19:43:37 <AnMaster> yes!
19:43:41 <AnMaster> but indeed no higher order functions.
19:44:09 <oklopol> then i won't see it, many have added *procedures* to brainfuck and compiled to brianfuck
19:44:10 <oklopol> :)
19:44:31 <Insane> yay my telnet-based netbrainfuck interpreter works
19:44:35 <Insane> Who wants the C# source? ^^
19:44:42 <AnMaster> Insane, how many files?
19:44:45 <Insane> one
19:44:52 <Insane> heh
19:44:54 <AnMaster> oklopol, but well actually it shouldn't be hard to add higher order functions
19:45:01 <oklopol> no?
19:45:02 <AnMaster> Insane, pastebin it?
19:45:07 <Insane> did
19:45:14 <AnMaster> Insane, and post link?
19:45:22 <Insane> I also have a speciallized brainfuck C# class for use in embedded applications (non-console environments with custom i/o)
19:45:28 <oklopol> AnMaster: it's tons harder than making non high-order functions
19:45:31 <Insane> http://insane.pastebin.org/
19:45:34 <Insane> Latest three
19:45:42 <Insane> are (in order) malbolge, netbrainfuck, brainfuck
19:45:46 <AnMaster> oklopol, hm depends
19:46:01 <AnMaster> oklopol, I could code it in bash, not sure if I could mange it in C
19:46:07 <oklopol> well, you have to carry around some kind of pointers to functions
19:46:15 <Insane> Btw, I think I'm the first person ever on planet earth to write a malbolge interpreter in C#
19:46:45 <AnMaster> oklopol, as long as there is no recursion heh
19:46:54 <oklopol> Insane: yes, and you are also the first person ever to say that exact sentence, prolly.
19:47:07 <oklopol> AnMaster: lol :)
19:47:14 <AnMaster> oklopol, however that is needed
19:47:40 <oklopol> recursion in the source code can usually be just translated to imperative stuff
19:47:55 <oklopol> first-class functions allow for much harder stuff to compile.
19:48:07 <AnMaster> Insane, heh if only non-printable chars wasn't such a pain in bash I would do it just to prove it!
19:48:17 <oklopol> you can, after all, just have a list of functions, and randomize which ones to call in which order.
19:48:37 <AnMaster> oklopol, heh that would be uh, undefined
19:48:43 <oklopol> 8|
19:48:55 <AnMaster> the result I mean in some cases
19:49:08 <oklopol> i don't see what you mean
19:49:09 <AnMaster> not if they are pure functions that do not call each other of course
19:49:13 <Tritonio_> AnMaster, did you say that it support's first class functions?
19:49:34 <oklopol> it does not
19:49:41 <oklopol> asdf, i'll take a look
19:50:16 <AnMaster> Tritonio_, afraid not as it just translates to brainfuck, and brainfuck is not self modifying
19:50:28 <oklopol> anyway, making high-order functions compile into brainfuck would prolly require you to write an interpreter, and encode the interpreted prog in the source
19:50:40 <AnMaster> oklopol, ahhaha
19:50:42 <AnMaster> indeed
19:50:47 <oklopol> it's *not* trivial to compile, unlike procedures, where you can just copy and paste
19:51:00 <AnMaster> oklopol, yes, extreme inlining!
19:51:04 <Tritonio_> it would be nice to see an x86 emulator in brianfuck...
19:51:11 <Tritonio_> not an emulator
19:51:22 <AnMaster> x86_64!
19:51:23 <Tritonio_> but something that could run that assembly...
19:51:27 <oklopol> *accumulator
19:52:06 <tejeez> emulator for something simpler that can be more easily used to do the x86 emulation
19:52:18 <Tritonio_> like what?
19:52:29 <tejeez> i don't know
19:52:30 <AnMaster> hm
19:52:43 <AnMaster> what about a brainfuck -> bash translator
19:52:57 <AnMaster> considering I already coded a brainfuck interpreter in bash heh
19:53:35 <AnMaster> actually it wouldn't be too hard, you just need to map stuff like [ to a while loop, then have an array for the memory hm
19:53:45 <AnMaster> yes you could "compile" it into bash quite easily
19:54:02 <oklopol> well, duh :P
19:54:05 <AnMaster> what would be interesting would be optimzing it :)
19:54:14 <tejeez> a brainfuck -> c translator is very easy
19:54:17 <AnMaster> as in getting rid of < and > when possible
19:54:34 <AnMaster> to just access the interesting variable right away
19:54:35 <Tritonio_> that's already done by many people
19:54:42 <AnMaster> but any to bash!?
19:54:54 <Tritonio_> no but it's almost the same code
19:54:55 <oklopol> optimizations, sadly, are pretty much the same :)
19:54:56 <AnMaster> that is the interesting question! :P
19:55:05 <oklopol> Tritonio_: get the fuck off my head?!?
19:55:16 <Tritonio_> oklopol, ??
19:55:32 <oklopol> you said twice what i was just about to say
19:55:36 <Tritonio_> lol
19:55:39 <oklopol> although i didn't say the first one, it seems
19:55:47 <oklopol> so you didn't notice that
19:55:53 <oklopol> anyway, need to do school stuff :\
19:55:54 <oklopol> ->
19:56:02 <AnMaster> Insane, http://insane.pastebin.org/16135 <-- eww, why on earth do you use vb!?
19:56:13 <Insane> I don't
19:56:15 <Insane> Easy enough
19:56:30 <Insane> Just pointing out the difference in two overloads to a different programmer
19:56:36 <Insane> That uses VB
19:56:40 <Insane> :P
19:56:44 <Insane> Although I detest it myself
19:56:58 <Insane> Heh
19:57:02 <Insane> I have about 20 different pastebins
19:57:06 <Insane> some on .org and some on .com
19:57:09 <Insane> ^^
19:57:22 <Tritonio_> what's wrong with VB? it's easy...
19:57:32 <Insane> which is a bummer because one of the two always seems to be down, and I need .com right now
19:57:38 <Insane> Tritonio_, C# is easier
19:57:41 <Insane> Than Vb.NET
19:57:45 <AnMaster> Insane, just use rafb
19:57:45 <Tritonio_> :-P
19:57:46 <AnMaster> :)
19:57:47 <Tritonio_> oh
19:57:50 <AnMaster> it works well
19:57:53 <Insane> Naw, brainfuck pwns
19:58:10 <Insane> I coded an irc bot in netbrainfuck
19:58:22 <Tritonio_> i don't know about .NET. vb6 was easy anyway
19:58:48 <Insane> meh
19:58:53 <Insane> the syntax is much too bloated
19:59:04 <AnMaster> like C++ then
19:59:09 <Insane> { and } for example are much easier to understand than "Start" and "End"
19:59:30 * AnMaster prefers pure C99 to C++ because of bloated syntax, or C#
19:59:50 <Tritonio_> i hate {}. They are angly when mixed with normal text.
20:00:00 <Insane> Not when formatted well
20:00:01 <Insane> lol
20:00:02 <oklopol> i hate keywords
20:00:46 <Tritonio_> hey come on. an "end" is realy nice to close something. And after a while you see the keywords easily
20:01:00 <Tritonio_> let alone using syntax highlighting...
20:01:38 <Tritonio_> anyway it's just personal taste....
20:01:38 <Insane> It's still harder to skim through and quickly navigate than C#, esp. without syntax highlighting ^^
20:01:40 <Insane> Yeah
20:01:46 <Insane> Let's leave the matter at rest
20:01:51 <Tritonio_> :-)
20:02:16 <Insane> And talk about how I lost the url to the spoofed image I was working on on my lappy to fake a password entry screen
20:02:16 <AnMaster> C99!
20:02:17 <Insane> heh
20:02:25 <AnMaster> Insane, C# is bloated too
20:02:32 <AnMaster> C99 for me
20:02:34 <Insane> I pastebin'd the link but pastebin.com is down
20:02:36 <Insane> heh
20:02:44 <AnMaster> C++ got bloated syntax, C# got bloated runtime
20:02:46 <Insane> You mean due to .NET?
20:02:48 <AnMaster> sigh
20:03:00 <AnMaster> Insane, yes the actual syntax of C# isn't as bad as c++
20:03:05 <Insane> Yeah
20:03:07 <Insane> I agree
20:03:16 <Insane> Well .NET is a so-so solution
20:03:23 <AnMaster> "so-so"?
20:03:32 * AnMaster use mono anyway for .NET stuff
20:03:34 <Insane> It's quick to easily develop apps for casual use, but it isn't a good cross-platform and highspeed solution
20:03:36 <Insane> heh
20:03:43 <AnMaster> as I do run linux
20:04:02 <Insane> Heh
20:04:08 <Insane> I run windows on my development machine
20:04:12 <Tritonio_> what about lua? since i used it i odn't want to write in anything else
20:04:22 <Insane> linux on my lappy/private server
20:04:27 <AnMaster> Tritonio_, it's interpreter isn't it?
20:04:34 <Tritonio_> with a VM
20:04:34 <Insane> Lua is interpreted though :/
20:04:41 <AnMaster> Insane, linux on desktops and laptops, freebsd for servers
20:04:45 <Tritonio_> it's one of the fastest interpreted languages
20:04:47 <AnMaster> and gentoo linux when it is linux
20:04:47 <Insane> Try writing a 3D app in Lua
20:05:06 <Insane> Heh
20:05:13 <Tritonio_> luaGL
20:05:17 <AnMaster> Insane, indeed, that is *just* possible in C#, but C++ or C is what is best for 3D
20:05:18 <Insane> I run kubuntu on my lappy and XP on my development machine
20:05:21 <Tritonio_> there are extensions for anything
20:05:29 <Insane> Which is why I use XNA for 3d apps
20:05:29 <AnMaster> Tritonio_, coded in C I bet?
20:05:49 <Tritonio_> yes i've used C
20:05:50 <AnMaster> Insane, nah, just call opengl directly
20:05:52 <AnMaster> ;P
20:05:57 <AnMaster> libGL.so
20:06:01 <AnMaster> works like a charm
20:06:03 <Tritonio_> but only when I ad no other option
20:06:20 <Insane> Heh, thanks, but I prefer a managed and mostly natively coded DirectX framework over direct OpenGL calls
20:06:28 <Insane> Since I prefer DirectX over OpenGL anyways
20:06:32 <Insane> At least for gaming
20:06:42 <AnMaster> Insane, ugh :(
20:07:04 <AnMaster> Insane, no, really, C or C++ and using some opengl framework
20:07:14 <AnMaster> directx is TOTALLY non-portable
20:07:40 <Insane> And that's why about 90% of consumers and developers for today's corporate games use windows + directx
20:07:41 <Insane> Yeah
20:08:08 <Insane> Go into a video game shop. How many games use OpenGL? How many games use DirectX?
20:08:22 <Insane> I use DirectX since it's the current consumer trend for gaming
20:08:23 <AnMaster> Insane, go to freshmeat.net, check the same
20:08:25 <AnMaster> :P
20:08:27 <Insane> Heh
20:08:29 <Tritonio_> lol
20:08:50 <AnMaster> Insane, apart from nvidia binary driver and bios I run 100% open source on my computer
20:09:03 <Insane> Heh
20:09:04 <Insane> Have fun then
20:09:08 <Insane> I don't care about open source
20:09:22 <AnMaster> Insane, I do, I'm involved in several open source projects
20:09:29 <Insane> Each to himself then
20:09:38 <AnMaster> Insane, so the pastes you did, what license are they under?
20:09:46 <Insane> No license
20:09:53 <AnMaster> public domain?
20:09:57 <Insane> I'd guess
20:10:39 <Insane> Feel free to use them if you want, although you might want a more optimized solution with a dynamic growing array and direct io streams instead of a read-all-at-once output
20:10:54 <AnMaster> indeed
20:11:01 <AnMaster> malbolge in C#, heh
20:11:03 <Insane> :P
20:11:15 <Insane> Well I'm most comfortable in C# atm, so I use it for "complicated" stuff
20:11:18 <AnMaster> Insane, is it 100% compatible?
20:11:24 <Insane> No
20:11:44 <Insane> There's at least one bug left that nobody's ever found after many source comparisions and double checks
20:11:52 <AnMaster> Insane, oh what bug?
20:12:01 <Insane> Every program I've seen runs 100% fine, except for the 99 bottles of beer loop version
20:12:07 <AnMaster> ah
20:12:08 <Insane> Which runs fine on the official interpreter
20:12:27 <AnMaster> Insane, what about those cases of abusing non-ascii values?
20:13:12 <Insane> Well it has full 10 digit trit support up to values of 3^10
20:13:48 <AnMaster> Insane, err where is "Ternary" defined?
20:13:51 <AnMaster> it's a class right?
20:14:05 <AnMaster> oh wait
20:14:07 <Insane> I might consider doing a "serious" rewrite of my brainfuck module using three different streams some time, and release it packaged, with documentation etc. since there seems to be no available "ready to use" brainfuck component atm
20:14:07 * AnMaster misread
20:14:12 <Insane> Oh right
20:14:14 <AnMaster> Ternary.ToTernary(a);
20:14:15 <Insane> I wanted to pastebin that too
20:14:16 <AnMaster> that
20:14:21 <AnMaster> can't find ToTernary
20:14:30 <Insane> public static string ToTernary(ushort num)
20:14:34 <Insane> It gives you a string
20:14:43 <AnMaster> yes but where is it defined?
20:14:51 <Insane> pretty inefficient but I didn't find a better way to handle trits
20:14:54 <Insane> In Ternary.cs
20:14:54 <Insane> ^^
20:15:01 <AnMaster> not included in paste?
20:15:02 <Insane> I never pastebin'd it, like I just said
20:15:03 <Insane> nope
20:15:06 <Insane> Want me to upload?
20:15:10 <AnMaster> yep
20:15:44 <AnMaster> at least in pascal you could easily define a new data type for it (heh, every language got it's own upside and downside)
20:15:58 <Insane> http://insane.pastebin.org/17432
20:16:04 <Insane> Heh
20:16:13 <Insane> I considered using a direct bitwise solution
20:16:19 <AnMaster> though pascal got a LOT more of the latter
20:16:22 <Insane> But I voted against it since it would be even slower to convert to/from
20:16:28 <Insane> :P
20:16:32 <AnMaster> hm it would?
20:16:36 <Insane> Well
20:16:50 <Insane> I'd convert to string/bitlist and that to array/list or w/e, and vice versa
20:16:51 <AnMaster> actually just define a struct tenary
20:16:53 <Insane> means I add an extra step
20:16:57 <Insane> hmm
20:16:58 <AnMaster> that represents one bit
20:16:58 <Insane> Maybe
20:17:03 <Insane> Erm
20:17:06 <Insane> Would be called Trit
20:17:08 <Insane> anyways
20:17:09 <AnMaster> ah right
20:17:11 <AnMaster> yes
20:17:18 <AnMaster> a tenary is an array of trits!
20:17:18 <Insane> Hm
20:17:19 <AnMaster> :D
20:17:29 <Insane> A trit needs two bits
20:17:35 <Insane> since a trit can hold 3 different values
20:17:37 <Insane> 0, 1 and 2
20:17:41 <AnMaster> yes indeed, a trit is a enum!
20:17:42 <Insane> Then 4 would be unused
20:17:57 <AnMaster> enum trit { true, false, filenotfound }
20:17:59 * AnMaster runs
20:18:16 <AnMaster> bad syntax heh
20:18:33 <Insane> I think it would be better to store 2 triplets at once, using 3 bits
20:18:45 <AnMaster> hm
20:18:51 <Insane> Better for memory
20:19:01 <AnMaster> how many bytes would you waste in malbolge on it?
20:19:04 <Insane> Since I'd assume that even an enum would use 2 bits for the task
20:19:06 <AnMaster> if you got an overhead of one bit
20:19:10 <Insane> Actually
20:19:14 <Insane> This discussion is pointless
20:19:16 <AnMaster> not much I suspect
20:19:20 <Insane> Since my malbolge interpreter is *so* unifficient
20:19:21 <AnMaster> Insane, oh is it?
20:19:26 <Insane> Heh
20:19:36 <Insane> Anyways
20:19:37 <AnMaster> Insane, well the C one is efficient is it?
20:19:46 <Insane> Yeah
20:19:51 <Insane> It was a for-fun project anyways
20:20:00 <Insane> Nothing serious like the brainfuck class which I actually used
20:20:08 <Insane> Anyways
20:20:16 <Insane> I came here to discuss a new idea I'm having
20:20:17 <AnMaster> Insane, what about intercal in C#?
20:20:23 <Insane> A new "for-fun" esoteric language
20:20:24 <AnMaster> intercal is iirc rather extensive
20:20:24 <Insane> heh
20:20:30 <AnMaster> isn't it?
20:20:34 <Insane> maybe some other time
20:20:44 <Insane> I have this awesome new esoteric language idea
20:20:51 <Insane> It would have the same commands as brainfuck,
20:20:52 <AnMaster> Insane, ah tell us!
20:21:09 <AnMaster> and how would it differ then?
20:21:15 <Insane> but instead of inputting the commadns directly, you input musical notes, and the difference between any two given notes would be the actual command
20:21:33 <Insane> Then the interpreter would play the notes as they get executed
20:21:34 <AnMaster> hehehe
20:21:38 <AnMaster> Insane, what scale?
20:21:50 <AnMaster> make it C# as scale XD
20:22:00 <AnMaster> eh wait
20:22:03 <Insane> Probably standard musical notation, like 1-bar difference is +, 2bar is - etc.
20:22:05 <Insane> Heh
20:22:30 <Insane> I can beep notes through my system speaker
20:22:38 <AnMaster> Insane, anyway I don't know the words for scales in English, I *do* know them in Swedish
20:22:43 <Insane> I wrote a parser for it and implemented it into my irc bot
20:22:43 <Insane> heh
20:22:52 <Insane> Sweden > *
20:22:56 <AnMaster> oh?
20:22:59 <AnMaster> where are you from?
20:23:03 <Insane> Germany
20:23:04 <Insane> :/
20:23:10 <Insane> Sweden > * > Germany
20:23:13 <AnMaster> ah, no elks around where I live!
20:23:15 <AnMaster> ;P
20:23:17 <Insane> Heh
20:23:29 <Insane> no møøse?
20:24:00 <AnMaster> 1) no møøse is monty python 2) moose is in canda
20:24:06 <AnMaster> here we got elk (älg)
20:24:14 <AnMaster> and it is ö not ø in Sweden
20:24:33 <AnMaster> ø is for Danish/Norweegian
20:24:43 <Insane> Heh
20:25:48 <tejeez> there seems to be so many such brainfuck derivatives in existence that someone has possibly already done that.. :P
20:25:59 <Insane> Does this look realistic enough to fool my mother? http://img101.imageshack.us/img101/7492/biosspoofau2.png
20:28:14 <Insane> I'm still deciding between C# WinForms, XNA or GML to code the actual spoofer
20:29:40 <AnMaster> Insane, spoof what!?
20:29:46 <Insane> BIOS
20:29:52 <AnMaster> err why?
20:29:52 <Insane> nvm
20:29:55 <Insane> lol
20:29:58 <AnMaster> Insane, anyway no it doesn't
20:29:58 <Insane> why not? ^^
20:30:03 <Insane> Bah
20:30:06 <AnMaster> Insane, too high resolution
20:30:07 <Insane> Of course it does
20:30:11 <AnMaster> of text
20:30:12 <Insane> only the font is different heh
20:30:16 <Insane> hmm
20:30:17 <Insane> true
20:30:18 <Insane> w/e
20:30:24 <Insane> she doesn't even know what resolution is
20:30:54 <AnMaster> Insane, well I got a 20" TFT (1400x1050) and if my bios looked like that it would be awesom
20:30:56 <AnMaster> some*
20:31:08 <AnMaster> Insane, also the "live update thing" is wrong
20:31:09 <Insane> hehe
20:31:13 <Insane> Why?
20:31:22 <AnMaster> never seen it in a bios
20:31:28 <Insane> It is on mine
20:31:28 <Insane> for real
20:31:33 <AnMaster> what!?
20:31:34 <Insane> even though it doesn't even have a live update
20:31:46 <Insane> I literally copied my own bios 1:1 with different numbers and labels
20:31:51 <Insane> but the design is the same
20:32:00 <AnMaster> yes I see the numbers are different
20:32:04 <Insane> heh
20:32:06 <Insane> v1337
20:32:11 <Insane> Try finding that on a real BIOS
20:32:11 <AnMaster> Insane, but just why do you want this?
20:32:19 <Insane> Because it's fun
20:32:30 <AnMaster> Insane, anyway the font is way less blocky than in a bios
20:32:45 <Insane> True
20:33:02 <Insane> I developed it on my lappy kubuntu so I didn't have my usual supply of bios-like console fonts
20:33:10 <AnMaster> Insane, basically on a tft you need it to look 1) blockly 2) blurry
20:33:44 <AnMaster> on a crt it just needs to be blocky
20:34:04 <tejeez> i'm quite sure your mother doesn't care about the resolution on bios startup messages.. :P
20:34:30 -!- Hiat1 has joined.
20:34:33 <AnMaster> Insane, also why not just use the real password protection of your bios :P
20:34:44 <Insane> AnMaster, huh?
20:35:11 <Insane> this is not for "adding" a password, it's for something else
20:35:13 <Insane> I better stop here
20:35:30 <AnMaster> Insane, anyway I would like to know what it is :D
20:35:54 <AnMaster> however the font looks totally wrong for bios
20:36:16 <Insane> bah
20:36:19 <Insane> lol
20:36:27 <AnMaster> Insane, also the blue logo needs to be fixed to look as blocky
20:36:29 -!- Tritonio_ has quit ("Bye...").
20:36:39 <Insane> best monospaced font I could find at all on kubuntu
20:36:45 -!- Tritonio_ has joined.
20:37:08 <AnMaster> Insane, looks like the font I use for irc, I bet it is bitstream vera sans mono? or maybe dejavu sans mono?
20:37:12 -!- Tritonio_ has quit (Client Quit).
20:37:26 -!- Tritonio_ has joined.
20:37:48 <tejeez> AnMaster: but does his mother notice anything unusual in that? probably not.
20:37:48 <AnMaster> Insane, am I right?
20:38:13 <AnMaster> tejeez, hm no idea
20:38:30 <Insane> heh
20:38:40 <Insane> No
20:38:42 <AnMaster> my mother got a good memory for details, while not knowing much about computers
20:38:43 <Insane> It's "Monospace"
20:39:05 <AnMaster> Insane, "monospace" just maps to a monospace default font on system
20:39:06 <Insane> or "Monospaced" or similar
20:39:06 <Insane> actual name
20:39:11 <AnMaster> same as "sans" maps to a default font
20:39:13 <Insane> hmmk
20:39:18 <Insane> No idea then
20:39:19 <Insane> :P
20:39:57 <AnMaster> Insane, but on gentoo monospace does indeed map to bistream
20:40:08 <AnMaster> bitstream*
20:41:03 <tejeez> take a picture of your real bios with a camera!
20:41:39 <Insane> Heh
20:41:41 <Insane> naw
20:41:49 <AnMaster> tejeez, that will look bad I bet, if CRT bits of it will be missing due to refresh rate, if TFT you will get moire patters
20:43:19 <tejeez> true
20:48:47 -!- Hiat1 has quit ("Leaving.").
20:49:56 -!- Hiato has quit (Read error: 110 (Connection timed out)).
21:09:12 -!- und3f has joined.
21:09:14 <und3f> re
21:18:14 <Insane> Hehehe
21:18:19 <Insane> Both of my parents fell for it
21:18:20 <Insane> totally
21:18:31 <Insane> Well
21:18:37 <Insane> They didn't actually etner the password
21:18:50 <Insane> But they both think's its genuine
21:18:52 <Insane> w/e
21:23:49 -!- helios24 has quit ("Leaving").
21:32:53 -!- chuck has changed nick to meilrahc.
21:33:17 -!- meilrahc has changed nick to _chuck_.
21:33:56 -!- _chuck_ has changed nick to chuck.
21:34:11 -!- und3f has left (?).
21:49:30 <sekhmet> ehird: Dunno, that's a little harder to track down
21:49:50 <sekhmet> http://rafb.net/p/kiZFVq83.html
21:49:51 <sekhmet> maybe?
21:49:58 <sekhmet> Someone else had pasted that some time ago
21:50:20 <ehird> yeah
21:55:06 <ehird> hm
21:55:10 <ehird> who here knows scheme
21:56:03 <oklopol> depends on the definition of "know"
21:57:45 <ehird> oklopol: i think you count
22:01:40 -!- GreaseMonkey has joined.
22:02:30 <GreaseMonkey> IMHO card topples are turing-complete
22:03:09 -!- RedDak has joined.
22:11:22 <oklopol> topples are fine, but i prefer them bottomless
22:14:15 <AnMaster> GreaseMonkey, and what are those?
22:14:44 <GreaseMonkey> you put the cards upright like this: /|\ /|\ /|\
22:14:49 <GreaseMonkey> and then you push them over
22:14:55 <AnMaster> hm?
22:14:58 <GreaseMonkey> so they look something like this: ____________
22:15:01 <AnMaster> domino bricks?
22:15:03 <GreaseMonkey> yeah
22:15:16 <AnMaster> I see, how are they turing complete?
22:15:37 <AnMaster> can you prove it?
22:15:53 <AnMaster> because if it was true, that would be really fun
22:16:04 <AnMaster> write a domino simulator!
22:17:06 <ehird> who is a schemer?
22:17:15 <AnMaster> btw as game of life is turing complete, but what I find more interesting: it is multitasking XD
22:17:33 <AnMaster> all computations happen at once in life
22:18:58 -!- RedDak has quit (Remote closed the connection).
22:22:57 -!- immibis has joined.
22:23:08 <ehird> nobody?
22:26:01 <ehird> well, i know bsmnt's a schemer
22:26:02 <ehird> but who else?
22:26:20 <oklopol> GreaseMonkey: it may be tc given an infinite starting pattern
22:35:09 <Insane> We need a bot in here that executes code in various esoteric languages
22:35:09 <Insane> like brainfuck
22:35:16 <ehird> he's aclled egobot.
22:35:21 <ehird> !bf ,[.,]!hello
22:35:27 <ehird> hm
22:35:29 * ehird pokes EgoBot
22:35:30 <Insane> What's the !hello?
22:35:30 <ehird> !help
22:35:34 <ehird> Insane: input
22:35:36 <ehird> prog!input
22:35:38 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
22:35:40 <EgoBot> 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl
22:35:56 <ehird> !bf ,[.,]!hello
22:36:13 <Insane> !bf ++++++++++++++++++++++++++++++++++++++++++++++++.+.+.+.+.+.+.+.+.
22:36:16 <Insane> :(
22:36:16 <EgoBot> 012345678
22:36:19 <Insane> :D
22:36:23 <AnMaster> ehird, wrong syntax?
22:36:32 <ehird> what's wrong with it?
22:36:34 <Insane> !bf +[,.]!Meep
22:36:46 <ehird> !bf8 ,[.,]!hello, world
22:36:48 <AnMaster> ehird, the !hello maybe?
22:36:52 <ehird> AnMaster: no.
22:36:53 <ehird> egobot does that.
22:37:00 <AnMaster> for input?
22:37:10 <ehird> yes
22:37:17 <AnMaster> what is bf8? bf16 and so on?
22:37:34 <ehird> bf8=0-255
22:37:34 <ehird> etc
22:37:39 <ehird> the amount of bytes per cell
22:37:42 <AnMaster> !bf64 ,[.,]!hello
22:37:50 <AnMaster> ehird, I want a bignum version
22:37:50 <ehird> er bits
22:38:03 <ehird> AnMaster: you'll never get past 64 bits in brainfuck ;)
22:38:08 <AnMaster> oh?
22:38:11 <ehird> if you have a program getting to that, it'll just hang on egobot anyway
22:38:15 <ehird> 'cause it'll take years
22:38:32 <Insane> Let's make a 256bit brainfuck interpreter
22:38:36 <ehird> why
22:38:43 <ehird> and why are you implying plural there
22:38:46 <ehird> why don't you do it
22:39:12 <Insane> Is the environment wrapping?
22:39:12 <immibis> !ps
22:39:14 <Insane> For EgoBot
22:39:23 <EgoBot> 1 ehird: bf
22:39:23 <EgoBot> 2 ehird: bf
22:39:23 <Insane> !help bf
22:39:23 <EgoBot> 3 Insane: bf
22:39:23 <EgoBot> 4 ehird: bf8
22:39:23 <EgoBot> 5 AnMaster: bf64
22:39:24 <EgoBot> 6 immibis: ps
22:39:26 <EgoBot> To use an interpreter: <interpreter> <program> Note: <program> can be the actual program, an http:// URL, or a file:// URL which refers to my pseudofilesystem.
22:39:28 <immibis> !i 1 Hello. This is how you give input, ehird.
22:39:40 <immibis> !kill 1
22:39:42 <EgoBot> Hello. This is how you give input, ehird.
22:39:44 <EgoBot> Process 1 killed.
22:40:09 <ehird> immibis: I knew that,.
22:40:12 <ehird> but you can also use !
22:40:20 <immibis> how come it doesn't work then?
22:40:23 <ehird> beats me
22:40:25 <immibis> !kill 2
22:40:25 <ehird> egobot is on crack?
22:40:28 <EgoBot> Hello worldHello worldHello worldHello worldHello worldGoodbye world
22:40:30 <EgoBot> Process 2 killed.
22:40:33 <ehird> SEE
22:40:35 <ehird> I WAS RIGHT
22:40:47 <ehird> !bf ,[.[-],]!hello foo
22:40:50 <ehird> !ps
22:40:50 <immibis> no, i typed !i 2 Hello world several times in /query EgoBot
22:40:52 <EgoBot> 1 ehird: bf
22:40:54 <EgoBot> 2 ehird: ps
22:40:56 <ehird> !flush 1
22:40:56 <EgoBot> 3 Insane: bf
22:41:06 <AnMaster> !kill 1
22:41:07 <AnMaster> !kill 2
22:41:08 <EgoBot> Process 1 killed.
22:41:10 <EgoBot> Process 2 killed.
22:41:25 <Insane> !bf ++++++++++.[-]>+++++++++[<+++++++++>-]<.++++.------------.+++++++++++.
22:41:35 <Insane> interesting
22:41:39 <Insane> Very interesting
22:41:41 <Insane> Good
22:41:45 <AnMaster> what?
22:41:55 <Insane> No extremely and blatantly obvious security holes ^^
22:42:01 <ehird> duh
22:42:02 <Insane> I tried sending a \n followed by QUIT
22:42:03 <ehird> egobot is robust
22:42:03 <Insane> :P
22:42:05 <ehird> we've had it for ages
22:42:06 <Insane> hehe
22:42:09 <Insane> Just testing
22:42:09 <ehird> it's not a toy irc bot
22:42:11 <immibis> i believe GregorR fixed that hole
22:42:14 <ehird> it doesnt have any bugs like that
22:42:18 <Insane> !bf +++++++.
22:42:22 <Insane> Does it beep?
22:42:33 <ehird> it will on the server it runs on.
22:42:39 <ehird> however, it is unlikely any terminal is open on it.
22:42:42 <AnMaster> <Insane> No extremely and blatantly obvious security holes ^^
22:42:43 <AnMaster> err
22:42:44 <AnMaster> wrong
22:42:52 <AnMaster> you forgot CRLF after
22:42:53 <AnMaster> or LF
22:43:01 <ehird> AnMaster: freenode isn't an anal ircd
22:43:02 <AnMaster> it just prints quit without a newline after
22:43:05 <Insane> You only need \n
22:43:08 <AnMaster> indeed
22:43:10 <Insane> oh
22:43:11 <Insane> duh
22:43:12 <Insane> right
22:43:13 <AnMaster> Insane, but you didn't have one
22:43:13 <Insane> no
22:43:21 <Insane> You only need \nQUIT
22:43:22 <GregorR> It knows what newlines are and doesn't just ignore them, it actually handles them as separate lines of output and sends them all independently.
22:43:28 <GregorR> You should have gotten a PM with the remaining output.
22:43:31 <Insane> Yeah
22:43:32 <Insane> I did
22:43:35 <ehird> GregorR: so why doesn't "!bf ,[.,]!foo" work
22:43:37 <ehird> it did like yesterday
22:43:42 <Insane> Mine just inserts <0x10>
22:43:43 <Insane> heh
22:43:53 <GregorR> ehird: Uhhh, no?
22:43:57 <GregorR> ehird: It takes input with !i
22:44:03 <ehird> It used to allow you to do that though.
22:44:05 <ehird> As well as.
22:44:09 <GregorR> EgoBot never did.
22:44:30 <AnMaster> where do I get the source for egobot?
22:44:36 <GregorR> In the files archive at esolangs.org
22:44:37 * AnMaster wonders what language it is in
22:44:41 <AnMaster> ah thanks
22:44:46 <GregorR> C++ (please don't kill me)
22:45:05 <immibis> what's wrong with C++, gregorr?
22:45:13 <GregorR> I now know D ^^
22:45:16 * ehird really needs to write SuperEgoBot
22:45:18 <ehird> or IdBot
22:45:35 * GregorR just turned in his last graduate application.
22:45:42 <GregorR> Now I just have to wait for rejection letters to pour in.
22:45:48 <AnMaster> D sounds interesting
22:45:50 <Insane> I actually wrote an irc bot in NetBrainfuck
22:46:03 <AnMaster> GregorR, how does D differ from C/C++
22:47:03 <GregorR> http://www.digitalmars.com/d/2.0/comparison.html
22:47:34 <GregorR> Uh, WTF?
22:47:36 <ehird> I personally think SuperEgoBot/IdBot should be written in one of:
22:47:37 <GregorR> That comparison table seems to have gone wonky ...
22:47:38 <ehird> Scheme, Haskell
22:47:38 <ehird> ;)
22:47:44 <ehird> Oooh! I know!
22:47:49 <ehird> Strongly typed IRC bots.
22:47:55 <ehird> Their consistency is guaranteed!
22:47:58 <immibis> what about bash? lol.
22:48:02 <AnMaster> GregorR, there is just D
22:48:04 <immibis> i once wrote an irc bot in bash.
22:48:07 <AnMaster> ehird, ada!
22:48:12 <AnMaster> immibis, http://envbot.org
22:48:12 <ehird> AnMaster maintains an irc bot in bash.
22:48:14 <ehird> It's modular.
22:48:16 <GregorR> AnMaster: Like I said, "<GregorR> That comparison table seems to have gone wonky ..."
22:48:16 <AnMaster> modular!
22:48:16 <ehird> hah
22:48:16 <ehird> typical
22:48:37 <AnMaster> GregorR, indeed and I don't know C++ well enough to fill it in using my head
22:48:40 <GregorR> AnMaster: Suffice to say that there's no one killer feature that makes D better than C++, it's just much cleaner in the general sense.
22:49:00 <AnMaster> GregorR, C++ got a bloated syntax, almost as bad as perl
22:49:08 * AnMaster prefers C99
22:49:14 <GregorR> Yeah, D's syntax is comparatively quite simple.
22:49:19 <GregorR> Even more simple than C in terms of type declarations.
22:49:32 <AnMaster> C# got nice syntax but instead a bloated runtime
22:49:33 <AnMaster> :/
22:49:34 <ehird> GregorR: cast your name vote: SuperEgoBot/IdBot
22:49:40 <pikhq> What I know of D makes it look damned elegant.
22:49:42 <GregorR> char*[] is an array of pointers to characters, none of this wonky char *foo[] (which way does that go?!)
22:49:43 <pikhq> ehird: IdBot.
22:49:54 <GregorR> ehird: "Ego" is trademark GregorCorp, so IdBot ;)
22:49:55 <AnMaster> GregorR, hah
22:49:59 <ehird> but SuperEgoBot is funny :P
22:50:01 <AnMaster> ehird, hum?
22:50:03 <immibis> char* foo[] (any clearer?)
22:50:08 <ehird> it makes me think of egobot in a red cape
22:50:11 <ehird> flying
22:50:11 <AnMaster> what is wrong with plain egobot?
22:50:12 <ehird> superman-style
22:50:17 <ehird> AnMaster: that's GregorR's
22:50:24 <AnMaster> ehird, yes and?
22:50:26 <ehird> and it's also a superego bot!
22:50:33 <pikhq> immibis: Except that the type of foo is char*[]. Confuses yet?
22:51:43 <AnMaster> GregorR, I find pointers in C rather simple most time, unless you get something mad like: char **** blah[][] (or something like that, saw it once, horrible)
22:52:07 <AnMaster> it was in a K&R style parameter definition, inside mosaic iirc
22:52:29 <immibis> char **** blah[][] is an 2-dimensional array of pointers to pointers to pointers to pointers to characters (or pointers to pointers to pointers to strings).
22:52:30 <AnMaster> may have been some other software
22:52:36 <immibis> but who would need that??
22:52:48 <AnMaster> immibis, don't ask me, I use cdecl for that :P
22:52:49 <GregorR> AnMaster: You need parens and such for more complicated types.
22:52:57 <AnMaster> GregorR, yes seen that too
22:52:58 <GregorR> AnMaster: In D it's always just left-to-right type declarations.
22:53:00 <AnMaster> just typedef
22:53:02 <AnMaster> :D
22:53:10 <AnMaster> GregorR, but do D need any runtime?
22:53:14 <ehird> GregorR: If ego is copyrighted, is superego?
22:53:15 <GregorR> Yes.
22:53:16 <AnMaster> I know C++ does
22:53:20 <ehird> That's draconian copyright law! :P
22:53:22 <GregorR> Well, basically yes.
22:53:25 <AnMaster> GregorR, C doesn't need any runtime
22:53:30 <ehird> AnMaster: yes it does.
22:53:34 <ehird> what do you think calls main
22:53:36 <GregorR> Technically people have made it work with no runtime, but you lose many features.
22:53:39 <AnMaster> ehird, yeah...
22:53:42 <pikhq> It's called the C standard library.
22:53:42 <GregorR> Yeah, same with C.
22:53:48 <ehird> OK, so it's a very trivial kind of runtime, but :)
22:53:50 <oklopol> GregorR: has registered /.*ego.*/
22:53:51 <ehird> pikhq: No. That's differnt.
22:54:01 <oklopol> yeah, they take regexps now.
22:54:02 <GregorR> The D language doesn't require a runtime so long as you don't use 'new' or dynamic arrays.
22:54:03 <ehird> oklopol: Now THAT's dracegonian! ;)
22:54:03 <pikhq> ehird: Fine; strictly speaking, you don't need stdlib.
22:54:10 <AnMaster> ehird, what about static linking against your own functions replacing the libc stuff you use?
22:54:20 <pikhq> You just need stdlib for doing more than inline assembly.
22:54:23 <GregorR> AnMaster: That just means you've written your own runtime.
22:54:26 <pikhq> I assume D is actually similar.
22:54:44 <GregorR> Yeah, it is similar, the standard runtime just happens to have more features, so you lose more of the language if you go runtime-less.
22:54:52 <AnMaster> GregorR, well I know C++ does need a rather large cruft thing called libstdc++ or something like that
22:55:04 <AnMaster> anyway uclib :D
22:55:10 -!- timotiis has quit ("leaving").
22:55:20 <pikhq> How large is libstdd?
22:55:29 <ehird> pikhq: Big.
22:55:32 <AnMaster> on x86_64
22:55:33 <ehird> But the neccessary parts - gc, etc
22:55:34 <ehird> are small.
22:55:40 <GregorR> ehird's answer is good.
22:55:53 <GregorR> And if you use Tango (yay for competing runtimes) the core part isn't lumped with additional bits.
22:55:54 <ehird> You could get a working (though not very full featured, as far as garbage collection goes) D system in.. hmm, 300-400 lines?
22:55:56 <AnMaster> also gc is bad, it prevents stuff from going into swap when needed
22:55:58 <pikhq> Does D statically link in the parts you need?
22:56:00 <ehird> That's assuming you write an actual, real GC.
22:56:04 <ehird> AnMaster: you can disable it
22:56:06 <AnMaster> keeping memory resident
22:56:13 <AnMaster> that is what I hate with java and such
22:56:24 <AnMaster> garbage collectors should die
22:56:31 <GregorR> Hahahah
22:56:38 <GregorR> I remember thinking like that ...
22:56:42 <pikhq> AnMaster: D's garbage collection is on by default, but you may turn it off when you want to leave it alone.
22:56:52 * pikhq both loves and hates garbage collection. . .
22:56:59 <pikhq> Really, it depends upon what you're doing.
22:57:04 <AnMaster> garbage collection is for the lazy
22:57:15 <GregorR> AnMaster: Yes, it is. And?
22:57:21 <pikhq> And sometimes laziness is good.
22:57:25 <pikhq> Thus compilers.
22:57:25 <AnMaster> and it keeps memory resident, preventing it from going into swap if needed
22:57:44 <GregorR> Languages higher-level than assembly are for the lazy.
22:57:52 <immibis> especially java.
22:57:53 <pikhq> GregorR: Assembly is for the lazy.
22:57:53 <oklopol> us non lazy people just use asm
22:58:02 <GregorR> Languages higher-level than machine code for the lazy.
22:58:07 <pikhq> You only need a toggle board on your computer. ;)
22:58:08 <GregorR> *are for
22:58:14 <oklopol> hmph, i'll need more complex jokes
22:58:17 <AnMaster> well do they have the downsides of garbage collection?
22:58:18 <AnMaster> no
22:58:37 <pikhq> AnMaster: What kind of paging algorithm would not swap pages out if they're garbage collected?
22:58:41 <pikhq> A Microsoft one?]
22:58:44 <immibis> GregorR: Forgetting the word "are" is for the lazy.
22:59:14 <immibis> pikhq: any one, until the garbage collector runs everything is still allocated.
22:59:20 <ehird> AnMaster: you have too much experience with bad GCs.
22:59:23 <AnMaster> pikhq, that isn't the problem, the problem is if the page still contains data but isn't accessed by program right now
22:59:25 <ehird> Lisp systems have good GCs.
22:59:29 <ehird> They are incredibly efficient.
22:59:34 <ehird> AnMaster: Also, bash has gc you foo
22:59:45 -!- ehird has changed nick to totallynotehirdi.
22:59:58 <pikhq> AnMaster: I think that you've experienced some crappy GCs.
23:00:02 -!- totallynotehirdi has changed nick to ehird.
23:00:03 <immibis> totallynotehirdi????
23:00:05 <AnMaster> pikhq, then if the garbage collector of for example java keeps scanning over it: bad, makes kernel avoid paging out that page, prefering other that may be more important
23:00:16 <AnMaster> pikhq, possible
23:00:28 <pikhq> Ah, *that* kind of GC.
23:00:38 <AnMaster> but I know this has been discussed on the kernel mailing lists a fair bit
23:00:39 <pikhq> That GC algorithm, though accurate, is inefficient as fuck.
23:00:45 <immibis> AnMaster: doesn't java gc only run when the program is using lots of memory?
23:01:15 <pikhq> Wouldn't surprise me; with that GC algorithm, you're going to want to defer it. . .
23:01:44 -!- Insane has quit (Read error: 104 (Connection reset by peer)).
23:01:53 <AnMaster> the only thing that should scan memory like that is IMO stuff like valgrind
23:01:56 <AnMaster> debugging tools
23:02:31 * pikhq would like to cite reference counting for decent GC. . .
23:02:40 <immibis> try running a java program that uses lots of memory (netbeans for example) and have a memory usage monitor open while you run it.
23:02:49 <immibis> pikhq: circular references...
23:02:54 <pikhq> Although it doesn't handle circular references, it certainly works efficiently.
23:02:57 <AnMaster> immibis, I uninstalled java here :P
23:03:06 <pikhq> immibis: I'm saying it's decent, not that it's perfect.
23:03:52 <ehird> pikhq: A good GC strategy: have a reference counter, and a non-conservative GC. Run the GC a lot less often than you'd run just a conservative GC.
23:04:04 <AnMaster> why use a gc? why not just do it the right way, malloc/free new/delete, or if you do it in C++: http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization
23:04:11 <GregorR> I just got offered a research fellowship at Purdue. Which is weird because I haven't been accepted (or rejected) yet.
23:04:26 <ehird> AnMaster: because good programmers are lazy.
23:04:35 <ehird> and doing work the computer can do, unless performing low-level tasks, is a sin.
23:04:42 <ehird> a complete and utter SIN
23:04:47 <AnMaster> ehird, valgrind :D
23:04:50 <ehird> not excusable in any form at all
23:04:53 <ehird> AnMaster: that's even more work.
23:05:21 <AnMaster> ehird, it does it's job. I want my code to run fast. not depend on crappy runtimes (java, and such)
23:05:36 <pikhq> Well, *I* see. . .
23:05:38 * AnMaster wants unmanaged C# :D
23:05:52 <pikhq> AnMaster has been disillusioned from the idea of GC due to the crappiness of Java.
23:06:01 <immibis> Java is crappy?
23:06:10 <pikhq> immibis: For efficiency, yes.
23:06:20 <AnMaster> pikhq, mono/.NET is *slightly* better
23:06:22 <pikhq> (for my sanity, as well)
23:06:23 <AnMaster> but far from good
23:06:29 <ehird> AnMaster: A decent GC system can be very fast.
23:06:36 <ehird> Sometimes, faster than manually managed code.
23:06:37 <pikhq> For the love of $diety, don't touch those two.
23:06:53 <AnMaster> ehird, depends on how good the programmer is
23:06:58 <ehird> If you think otherwise, you had the wrong first impressions of GC and *are wrong*
23:06:59 <ehird> AnMaster: Hah.
23:07:12 <ehird> You are wrong, and I can't be bothered telling you why - once you use a good GC, you will understand.
23:07:19 <immibis> pikhq: I find Java runs reasonably fast (although nothing runs reasonably fast on this computer, but it does on decent ones)
23:07:32 <AnMaster> ehird, well, is there one for C99?
23:07:59 <pikhq> However, rule one of programming: programmer time is worth one hundred times as much as computer time.
23:08:02 <AnMaster> as in I just want to write it as I currently do mostly, but indeed not having to call free all the time...
23:08:04 <pikhq> AnMaster: There's Boehm GC.
23:08:16 <AnMaster> pikhq, is it good?
23:08:21 <ehird> AnMaster: Pretty good, yes.
23:08:25 <ehird> Not as good as some Lisp systems.
23:08:27 <ehird> But good.
23:08:37 <ehird> It can't be as good as them, incidentally, because of the nature of C: it must be conservative
23:09:00 <pikhq> Just replace your malloc and realloc calls with calls to the Boehm functions, and voila.
23:09:02 <ehird> AnMaster: replace malloc with GC_MALLOC
23:09:04 <pikhq> Garbage collected.
23:09:08 <ehird> same with calloc and realloc.
23:09:11 <AnMaster> and no free?
23:09:14 <ehird> and then s/free();\n//
23:09:16 <ehird> Err
23:09:19 <ehird> with ana rgument
23:09:19 <ehird> heh
23:09:21 <ehird> AnMaster: yep
23:09:24 <ehird> WARNING, though.
23:09:31 <AnMaster> ehird, so what about malloc being done in third party stuff?
23:09:34 <pikhq> Do the same with GC_FREE if you *really* want to, but it's not needed. . .
23:09:35 <AnMaster> like glibc
23:09:36 <ehird> If you call misbehaved libraries that think that allocating their own memory is a good idea,
23:09:39 <ehird> then either:
23:09:44 <ehird> 1. stop using these broken libraries
23:09:44 <ehird> or
23:09:50 <ehird> 2. find out which ones it mallocs, then tell the gc about them
23:09:56 <ehird> i forget the macro, but it's along the lines of
23:09:58 <AnMaster> ehird, err, glibc I'm sure allocates memory
23:10:03 <pikhq> ehird: Glibc is one of those libraries. . .
23:10:07 <AnMaster> and it isn't broken
23:10:10 <ehird> HEY_GC_YES_YOU_I_MEAN_YOU_TAKE_A_LOOK_AT_THIS(thing)
23:10:11 <ehird> pikhq: Hmm.
23:10:14 <ehird> Well fuck glibc. :p
23:10:14 <immibis> ehird said fuck!
23:10:16 <ehird> But yes.
23:10:22 <pikhq> Although it's explicitly returning a pointer in that case.
23:10:25 <ehird> immibis: Interesting observation.
23:10:29 <AnMaster> well all libcs in fact
23:10:31 <immibis> ehird: hey, my script works
23:10:32 <ehird> Is that an automatic script? you were veryfuck fast.
23:10:33 <immibis> ehird said fuck!
23:10:38 <ehird> immibis said fuck!
23:10:39 <immibis> ehird said fuck!
23:10:48 <AnMaster> who said fuck?
23:10:48 <immibis> AnMaster said fuck!
23:10:50 <pikhq> Fuckfnuck.
23:10:51 <immibis> pikhq said fuck!
23:10:54 <AnMaster> brainfuck?
23:10:54 <immibis> AnMaster said fuck!
23:11:00 <ehird> ahiahahahahaha AnMaster
23:11:00 <AnMaster> immibis, err brainfuck is normal here
23:11:01 <immibis> AnMaster said fuck!
23:11:04 <AnMaster> you want to ignore that
23:11:13 <ehird> just plain fuck is normal in here
23:11:13 <ehird> :)
23:11:14 <immibis> ok changed
23:11:16 <ehird> well, when i'm around
23:11:18 <ehird> or bsmntbombdood
23:11:19 <ehird> ;)
23:11:27 <AnMaster> yes what ehird fucking said
23:11:32 <AnMaster> ;D
23:12:21 * AnMaster wish valgrind could tell when a pointer was *last* accessible
23:13:01 <ehird> GregorR: Are you sure SuperegoBot isn't permissable?
23:13:08 <ehird> Draconian :P
23:13:29 <GregorR> I can't stop you from making it - but I WILL sue you. O_O
23:13:35 <ehird> :( why
23:13:49 <AnMaster> http://www.hpl.hp.com/personal/Hans_Boehm/gc/ "[ This is an updated version of the page formerly at http://reality.sgi.com/boehm/gc.html and before that at ftp://parcftp.xerox.com/pub/gc/gc.html.]"
23:13:50 <AnMaster> wow
23:13:56 <ehird> wow what
23:13:59 <AnMaster> that page moved a bit between companies heh
23:14:04 <ehird> yes
23:14:09 <immibis> fuck recognition is now set by anyone saying "fuck [on|off]" in any channel or query.
23:14:19 <AnMaster> fuck off!
23:14:22 <AnMaster> ;P
23:14:35 <AnMaster> (do not take it as an attack ;P)
23:14:45 <AnMaster> just wanted to show what it could mean
23:14:52 <immibis> i know.
23:15:00 <ehird> fuck on :O
23:15:01 <immibis> ehird said fuck!
23:15:02 <immibis> any better ideas?
23:15:05 <ehird> immibisfuck
23:15:05 <immibis> ehird said fuck!
23:15:08 <ehird> immibis: yes, disable it
23:15:09 <ehird> its crap
23:15:13 <AnMaster> immibis, it is more uncommon with "fuck enable"
23:15:13 <ehird> or
23:15:14 <immibis> AnMaster said fuck!
23:15:20 <AnMaster> fuck off...
23:15:20 <immibis> ok
23:15:22 <ehird> make it recognize these words as fuck:
23:15:23 <immibis> thanks
23:15:28 <pikhq> fuckdisable
23:15:30 <ehird> waffle, potato, belgium, fruitcake
23:15:33 <ehird> Okay?
23:15:37 <immibis> okay.....
23:15:38 <ehird> Still make them say "X said fuck!"
23:15:38 <AnMaster> ehird, why "belgium"?
23:15:39 <AnMaster> ...
23:15:41 <ehird> AnMaster: Because.
23:15:45 <ehird> AnMaster: Also, HHGTTG.
23:15:47 <pikhq> You have to ask?
23:15:48 <AnMaster> ehird, ah right
23:15:54 <AnMaster> was long ago I read it
23:15:56 <AnMaster> remember now
23:15:59 <ehird> I notice you don't question about waffle, potato or fruitcake.
23:16:02 <AnMaster> some party
23:16:10 <AnMaster> ehird, no I was comming to those
23:16:15 <AnMaster> tell me about them
23:16:23 <immibis> why HHGTTG? what does it mean?
23:16:35 <AnMaster> immibis, if you don't know that!...
23:16:45 <AnMaster> immibis, hitchhikers guide to the galaxy
23:16:45 <ehird> anyway, immibis.
23:16:46 <pikhq> immibis: Geek license revoked.
23:16:47 <ehird> just add them.
23:16:48 <AnMaster> very geeky book
23:16:51 <immibis> ok....
23:16:59 <ehird> belgium
23:17:01 <AnMaster> ehird, now tell me about the other ones
23:17:05 <ehird> sheesh, hurry up! ;)
23:17:07 <immibis> so should i mention that i've read it?
23:17:14 <ehird> AnMaster: they're funny words. I would like them to be filtered.
23:17:19 <ehird> But as "fuck".
23:17:21 <ehird> So:
23:17:21 <AnMaster> immibis, not if you actually haven't
23:17:33 <AnMaster> immibis, you should instead read it
23:17:34 <ehird> <person> Well, waffles ARE tasty.
23:17:36 <AnMaster> all the 5 books
23:17:38 <ehird> <immibis> person said fuck!
23:17:41 <AnMaster> or whatever it is
23:17:45 <immibis> there are 6.
23:17:49 * AnMaster got an omnibus edition
23:17:55 <ehird> GregorR: will you really sue me? :P
23:18:00 <immibis> and i've only read 1 and 3 because i lost the second.
23:18:03 <AnMaster> ehird, sue for what?
23:18:07 <GregorR> ehird: Doubtful :P
23:18:26 <AnMaster> GregorR, egobot is open source isn't it?
23:18:32 <AnMaster> what licence?
23:18:45 <ehird> GregorR: Yay! So I can make SuperEgoBot? :P
23:18:58 <GregorR> I don't even recall what license I stuck it under, it's in the headers I'm sure :P
23:19:26 <immibis> someone say fuckenable
23:19:36 <immibis> it only looks at incoming messages.
23:19:52 <pikhq> It's GPL2.
23:19:53 <immibis> it now recognizes belgium, waffle, potato, fruitcake, and hhgttg.
23:19:59 <immibis> since you asked.
23:19:59 <pikhq> GPL2 or later, IIRC.
23:20:07 <pikhq> Belgium, man, blegium!
23:20:08 <ehird> I didn't ask for hhgttg.
23:20:11 <ehird> :|
23:20:15 <pikhq> s/blegium/belgium/
23:20:16 <ehird> waffle
23:20:19 <ehird> potato
23:20:21 <ehird> fuck on
23:20:22 <ehird> potato
23:20:25 <ehird> fuck off
23:20:25 <immibis> ehird said fuck!
23:20:26 <ehird> fuck on
23:20:26 <immibis> ehird said fuck!
23:20:27 <ehird> potato
23:20:27 <immibis> ehird said fuck!
23:20:29 <pikhq> belgium on
23:20:30 <immibis> pikhq said fuck!
23:20:34 <ehird> loool
23:20:35 <immibis> fuck off means fuckenable.
23:20:36 <pikhq> belgium off
23:20:37 <AnMaster> ehird, about boehm gc, err. what about foo = GC_malloc(whatever); bar = foo
23:20:37 <immibis> pikhq said fuck!
23:20:39 <ehird> Well, I like fruitcake.
23:20:39 <immibis> ehird said fuck!
23:20:46 <ehird> AnMaster: that's fine.
23:20:48 <AnMaster> that is you copy the pointer
23:20:52 <AnMaster> ehird, it will know of that?
23:20:52 <ehird> AnMaster: it is fine.
23:20:54 <AnMaster> hm
23:20:55 <ehird> a pointer is just an integer.
23:20:57 <pikhq> fuckoff
23:20:58 <immibis> pikhq said fuck!
23:20:58 <ehird> like 23573485
23:21:08 <ehird> So -- who is from Belgium here?
23:21:08 <immibis> ehird said fuck!
23:21:18 <ehird> hehe, Belgium -- Anybody read HHGTTG?
23:21:18 <immibis> ehird said fuck!
23:21:21 <AnMaster> ehird, rather longer I bet (since I'm on 64-bit :)
23:21:24 <ehird> I like these new, waffley changes.
23:21:27 <ehird> ...
23:21:29 <ehird> FAIL
23:21:34 <pikhq> AnMaster: Twice as long, actually.
23:21:38 <AnMaster> ehird, indeed
23:21:42 <AnMaster> ehird I know that
23:21:42 <immibis> you said it should recognize waffleS.
23:21:54 <immibis> but ok, changed.
23:22:00 <ehird> waffley
23:22:14 <immibis> someone needs to say fuckenable again.
23:22:25 <immibis> or fuck off.
23:22:28 <AnMaster> ehird, so how does the GC know if there is still any pointer left to a memory block?
23:22:42 <immibis> AnMaster: maybe it could use smart pointers?
23:22:53 <ehird> AnMaster: that's not how it works, i don't think
23:22:54 <immibis> or you need to do something like GC_AddRef(ptr)
23:22:54 <ehird> oh well
23:22:55 <ehird> it's clever.
23:22:59 <ehird> immibis: you don't
23:22:59 <AnMaster> immibis, <AnMaster> ehird, about boehm gc, err. what about foo = GC_malloc(whatever); bar = foo
23:23:03 <ehird> but you do if glibc does that
23:23:04 <AnMaster> <ehird> AnMaster: that's fine.
23:23:05 <AnMaster> err?
23:23:10 <ehird> AnMaster: look
23:23:11 <ehird> it's clever
23:23:12 <ehird> trust it
23:24:22 <AnMaster> ehird, no I don't unless you can tell me how it can know that I copied the pointer, converted it to an correctly sized uint, put in a structure, converted back and duplicated, how could it possibly keep track of that
23:24:33 <ehird> GregorR: ping
23:24:34 <ehird> :)
23:24:43 <GregorR> NEVARPONG
23:24:58 <ehird> AnMaster: It's using deep magic. Do you have a problem with that?
23:25:09 <ehird> It's unlikely you'd be able to understand the inner workings of a deeply magical, advanced C gc.
23:25:10 <AnMaster> ehird, yes! and the code use memcpy too
23:25:17 <GregorR> D only follows pointers in types that contain pointers.
23:25:20 <AnMaster> and much more
23:25:25 <ehird> AnMaster: it's OKAY
23:25:26 <GregorR> That is, if you just have a big ubyte[], it won't follow pointers in it.
23:25:33 <ehird> TONS OF PEOPLE use the boehm gc
23:25:34 <pikhq> GregorR: We're discussing BoehmGC.
23:25:36 <ehird> LOADS of production software
23:25:37 <GregorR> OH
23:25:37 <AnMaster> ehird, I don't trust it
23:25:38 <ehird> LOADS of compilers, too
23:25:40 <AnMaster> yes
23:25:44 <AnMaster> I know that
23:25:49 <AnMaster> but I don't trust it
23:25:52 <pikhq> IIRC, it's in GCC.
23:25:54 <ehird> so SHUT UP and stop thinking that you're the most clever c programmer and if you don't immediately understand how osmething works IT CAN'T BE TRUSTED
23:25:59 <ehird> pikhq: yes, GCC uses it
23:26:01 <GregorR> What do you mean, "how could it keep track of that"?
23:26:08 <GregorR> How is it difficult to keep track of at all?
23:26:20 <GregorR> All it does is scan memory, it doesn't know you put it in an unsigned int, then an array, then whatever.
23:26:27 <ehird> GregorR: So.. is SuperEgoBot okay to use as a name or do I have to be clever and think of somethiing else? ;)
23:26:27 <GregorR> It just knows that it sees something pointer-like that points to valid memory.
23:26:44 <immibis> ehird: DriheBot.
23:26:47 <GregorR> ehird: To be honest, I would appreciate it if you didn't use something derivative of the name "EgoBot"
23:26:47 <AnMaster> GregorR, so it scans the memory pages? it isn't smart using ref counting?
23:26:53 <GregorR> ehird: But I'm not going to stop you.
23:26:59 <ehird> GregorR: all right. SuperEgoBot just amuses me ;)
23:27:04 <GregorR> AnMaster: How could it POSSIBLY use ref counting? It just sits on top of C!
23:27:11 <ehird> GregorR: OK, can I at least call it superegobot until I think of a brilliant name for it? :)
23:27:13 <AnMaster> GregorR, hm
23:27:18 <GregorR> ehird: Valtevar.
23:27:23 <ehird> GregorR: Lame! ;)
23:28:19 <immibis> ehird: AlterEgoBot?
23:28:46 <ehird> immibis: he doesn't want me to use a derivative of EgoBot
23:29:18 <immibis> ehird: Toboge.
23:29:24 <immibis> ehird: I used one.
23:29:28 <immibis> ehird: Why can't you?
23:29:51 <immibis> toBogE is EgoBot backwards.
23:30:09 <ehird> GregorR: are you OK with the name toboge?
23:31:53 <AnMaster> ehird, this works even with many shared objects?
23:32:10 <AnMaster> hm
23:32:19 <AnMaster> (as in *.so)
23:32:24 <ehird> yes
23:32:27 <ehird> GregorR: ping
23:32:27 <immibis> ehird: Pong!
23:32:30 <AnMaster> so the .so file uses garbage collector too
23:32:36 <ehird> AnMaster: something like that
23:32:42 <ehird> i don't know the internals, the creators are wizards :)
23:33:03 <AnMaster> ehird, what if a .so does use garbage collector but the main program doesn't?
23:33:03 -!- jix has quit ("CommandQ").
23:33:57 <ehird> beats me, i think everything still goes OK
23:34:00 <ehird> on some platforms
23:34:04 <ehird> a GC_init() is required, though
23:34:05 <immibis> ehird: Pong!
23:34:05 <immibis> ehird: Ping!
23:34:10 <ehird> so you just have to say in the shared library something like
23:34:10 <immibis> ehird: Pong!
23:34:10 <immibis> ehird: Ping!
23:34:16 <ehird> 'HAY, use gc_init'
23:34:16 <immibis> ehird: Pong!
23:34:16 <immibis> ehird: Ping!
23:34:24 <ehird> or define 'sharedlib_init' and tell people to use that AND SHUT THE FUCK UP immibis
23:34:24 <immibis> ehird: Pong!
23:34:24 <immibis> ehird: Ping!
23:34:27 <ehird> STOP IT
23:34:27 <immibis> ehird: Pong!
23:34:27 <immibis> ehird: Ping!
23:34:27 <ehird> NOW
23:34:27 <immibis> ehird: Pong!
23:34:27 <immibis> ehird: Ping!
23:34:30 <ehird> YOU FUCKING MORON
23:34:30 <immibis> ehird: Pong!
23:34:31 <immibis> ehird: Ping!
23:34:43 <ehird> CAN SOMEONE PLEASE KICK immibis HE HAS AN AFFECTION FOR RETARDED SPAMMING SCRIPTS
23:34:44 <immibis> ehird: Pong!
23:34:44 <immibis> ehird: Ping!
23:34:47 <AnMaster> ehird, also I think a lot of X libraries internally malloc stuff that I don't know about
23:34:54 <AnMaster> ehird, I agree
23:34:54 <immibis> oops bug very sorry
23:35:02 <AnMaster> immibis, stop testing them here
23:35:08 <AnMaster> create a new channel
23:35:17 -!- 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.").
23:36:17 <GregorR> ehird: Toboge is sufficiently different, yuh.
23:36:40 <AnMaster> GregorR, err it is egobot backwards
23:37:21 <immibis> i told you it was not intentional and i am very sorry.
23:37:45 <ehird> GregorR: so is SuperEgoBot
23:37:47 <ehird> I could call it
23:37:50 <ehird> SuperEgoBawt
23:37:52 <ehird> if that would help
23:38:00 <immibis> ChickenBot.
23:38:28 <immibis> OgeRepusBot
23:39:28 <ehird> GregorR: opinions?
23:43:58 <EgoBot> hi world.........................!i 3 hi world.........................!i 3 hi world.........................!i 3 hi world.........................!i 3 hi world.........................!i 3 hi world.........................!i 3 hi world.........................!i 3 hi world.........................!i 3 hi world.........................!i 3 hi world.........................!i 3 h
23:44:33 <AnMaster> huh
23:44:36 <AnMaster> interesting
23:57:41 -!- Tritonio__ has joined.
23:59:06 -!- Tritonio_ has quit (Read error: 110 (Connection timed out)).
2008-01-31
00:12:40 -!- chuck has quit ("leaving").
00:16:06 <ehird> GregorR: I can't think of a better name than SuperEgoBot :P
00:16:52 -!- ehird has changed nick to Endeavour.
00:17:06 <Endeavour> i like this one
00:19:46 -!- Endeavour has changed nick to ehird.
01:26:40 -!- adu has joined.
01:35:19 -!- ehird has quit ("This computer has gone to sleep").
01:46:25 -!- adu has quit ("Computer went to sleep").
01:59:06 -!- Sgeo has joined.
02:02:39 -!- adu has joined.
02:07:15 -!- Corun has joined.
02:19:45 -!- Corun has quit ("This computer has gone to sleep").
02:41:00 -!- adu has quit ("Computer went to sleep").
02:52:22 <RodgerTheGreat> pikhq: can you confirm that this is a moderately acceptable translation?
02:52:23 <RodgerTheGreat> http://nonlogic.org/dump/images/1201721232-RRmockup.gif
02:53:08 <pikhq> I can't read the kanji beneath the "Nihon no tekisuto" line.
02:53:28 <pikhq> But that's a matter of my not being a master of Japanese, not that it's necessarily wrong.
02:53:30 <RodgerTheGreat> well, the entire thing is supposed to read "Japanese text decoration"
02:53:51 <RodgerTheGreat> or something to that effect
03:01:24 <Sgeo> G'night all
03:03:30 -!- GreaseMonkey has joined.
03:05:12 -!- adu has joined.
03:28:27 -!- Sgeo has quit (Success).
04:04:15 -!- adu has left (?).
04:29:19 -!- CakeProphet has joined.
04:32:19 <CakeProphet> :)
04:34:30 <RodgerTheGreat> howdy, CakeProphet
04:34:50 <CakeProphet> allo, m'love
04:34:59 <RodgerTheGreat> ...ok
05:07:15 -!- CakeProphet has quit (Read error: 110 (Connection timed out)).
06:19:05 <Slereah> AnMaster: The Hello World was in some stupid time-language.
06:19:25 <Slereah> (I was sleeping, and I assume that he is now)
06:39:23 -!- Slereah has quit (Remote closed the connection).
06:43:03 -!- Slereah has joined.
07:43:52 <AnMaster> Slereah, morning
07:44:09 <AnMaster> Slereah, can you provide a link to this language?
07:44:10 <Slereah> Hello.
07:44:13 <Slereah> No.
07:44:22 <Slereah> Just a stupid idea I had yesterday.
07:44:29 <Slereah> A language based on clocks.
07:44:35 <AnMaster> ah sounds interesting
07:44:44 <AnMaster> so how would it work?
07:44:58 <Slereah> This Hello, world! wouldn't work, because each instruction would take some time.
07:45:11 <Slereah> You've got clocks.
07:45:26 <Slereah> - means "wait" (I use 1 second right now)
07:45:35 <Slereah> * means "execute"
07:45:49 <AnMaster> ah
07:45:55 <AnMaster> execute what?
07:46:00 <Slereah> The execution is the time mod. 8.
07:46:07 <AnMaster> hah
07:46:11 <Slereah> If t%8 is 0, the clock is reset.
07:46:16 <AnMaster> would this be turing complete?
07:46:22 <Slereah> 1, it outputs the next execution mod 256
07:46:26 <Slereah> 2, input
07:46:31 <Slereah> 3, go on the next clock
07:46:34 <Slereah> 4 previous
07:46:44 <AnMaster> hm interesting
07:46:47 <Slereah> No idea so far
07:46:55 <AnMaster> very interesting
07:47:07 <AnMaster> you should code an interpreter
07:47:24 <Slereah> Probably some instruction to jump back in the code
07:47:38 <Slereah> And some other to use the computer's clock. To make were programs.
07:47:49 <Slereah> Hello world that only execute on a full moon or something
07:47:54 <AnMaster> hah
07:48:09 <Slereah> I have some sort of interpreter.
07:48:19 <Slereah> But execution time quickly matters.
07:48:45 <AnMaster> hm?
07:49:01 <AnMaster> you simulate non-multitasking computer with it's own clock right?
07:49:15 <Slereah> No.
07:49:22 <Slereah> I just use the computer's clock
07:49:24 <AnMaster> because that may be a good idea to do
07:49:45 <AnMaster> as you can't realistically depend on the clock of the computer, the OS is multitasking
07:50:21 <Slereah> Well, if the only time the clock advanced was when there's an - instruction, it would just be equivalent to some Turing machine where a bunch of cells are incremented by 1 for every - !
07:50:47 <AnMaster> well you got to increment for * too
07:51:19 <AnMaster> Slereah, ok can you make it depend on actual run time for the program rather than system time?
07:51:54 <Slereah> I don't know.
07:52:01 <AnMaster> because basically, stuff like multitasking will prevent this from working
07:53:30 -!- sekhmet_ has joined.
07:56:04 <Slereah> Well, using the system time and not considering execution times work for up to 2 minutes, usually, if I use 1 second as a unit.
07:56:31 <Slereah> Second l in Hello world change to m
07:56:42 <Slereah> And I assume it only gets worse from here.
07:57:47 <Slereah> I could tinker it until it works, but yes, I don't have a way to be sure it would work every time
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:04:47 -!- sekhmet has quit (Read error: 110 (Connection timed out)).
08:07:55 -!- immibis has quit ("Give a man a fish and he will eat for a day. Teach him how to fish, and he will sit in a boat and drink beer all day").
08:30:47 -!- 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.").
09:26:42 -!- Insane_ has joined.
09:29:32 -!- Insane_ has changed nick to Insane.
09:30:19 <Insane> Yay somebody's stealing my nickserv regged name. I'm gonna have nickserv keep it in future ^^
09:30:55 <oklopol> Insane: you've registered it?
09:31:25 <Insane> Duh
09:31:43 <Insane> The name in question is "Insane" ^^
09:32:15 <Insane> Let me test something
09:32:20 -!- Insane has changed nick to Insane_.
09:34:17 -!- Insane_ has changed nick to Insane.
09:34:22 <Insane> Hmm
09:35:47 <oklopol> stop the MADNESS!!
09:36:09 <Insane> This is madness! This is blasphemy!°
09:36:21 <Insane> THIS IS SPARTA!
11:05:50 -!- Corun has joined.
11:21:42 -!- Insane has quit ("Have a nice day!").
11:44:50 <Deewiant> +++
11:45:11 <Slereah> Cell 0 = 3
11:45:57 <Deewiant> er, sorry about that, I'm on a school computer with a Sun keyboard
11:46:06 <Deewiant> it has a mind of its own
11:46:25 <Deewiant> and the keys in all the wrong places
11:46:32 <Slereah> <keyboard> KILL ALL HUMANS
11:48:02 -!- Corun has quit ("This computer has gone to sleep").
11:51:54 -!- Slereah has quit (Remote closed the connection).
11:51:59 -!- Slereah has joined.
11:56:18 -!- slereah__ has joined.
12:04:31 -!- Sgeo has joined.
12:09:49 -!- Slereah has quit (Read error: 110 (Connection timed out)).
12:33:37 -!- jix has joined.
13:28:54 <Sgeo> hijix
13:39:14 -!- maristo has joined.
13:50:11 -!- helios24 has joined.
13:52:12 -!- Sgeo has quit (Read error: 110 (Connection timed out)).
13:56:10 -!- maristo has left (?).
14:18:20 -!- Insane has joined.
14:18:24 <Insane> How about string++?
14:18:29 <Insane> A language based on strings
14:18:31 <Insane> instead of numbers
14:19:38 <oklopol> string strang strong
14:19:46 <RodgerTheGreat> // is based entirely upon strings
14:19:51 <RodgerTheGreat> argh
14:19:54 <RodgerTheGreat> I mean ///
14:19:57 <oklopol> try redivider, also
14:20:08 <RodgerTheGreat> or muriel
14:20:15 <Insane> Heh
14:20:25 <oklopol> or thue, perhaps
14:21:46 <RodgerTheGreat> but really, any entirely string based language is just a few functions away from having integers, and even though it'll be much slower it isn't all that difficult to synthesize simple math
14:24:05 <oklopol> except you can make it hard to make a "function".
14:24:19 <oklopol> where function is the generalization of a function, something you make abstraction with
14:24:48 <oklopol> (which is a generalization of a very particular aspect of a function, but you hopefully follow me.)
14:25:20 <oklopol> this is the case with slashes, for example
14:25:35 <oklopol> with redivider, you could prolly make numbers in a zippie
14:25:57 <RodgerTheGreat> yeah, but ultimately those are implementation details
14:26:21 <oklopol> hmm?
14:26:47 <oklopol> well, aren't all languages equal if abstractions are just implementation details?
14:26:59 <RodgerTheGreat> if a language is TC, it will be possible to make something vaguely resembling a function, or at least a serviceable macro
14:27:14 <RodgerTheGreat> oklopol: yes! :D
14:27:22 <oklopol> ofc, but you cannot always make it usable in a short amount of code.
14:27:37 <RodgerTheGreat> once we abandon efficiency and sanity, all languages are *obviously* equal
14:27:41 <oklopol> which is a crucial part in an abstraction
14:28:05 <Insane> Only if it's TC
14:28:07 <Insane> :P
14:28:25 <RodgerTheGreat> Insane: true, we don't know if /// is TC, after all
14:28:37 <oklopol> we are just OPINING it.
14:28:53 <RodgerTheGreat> I strongly suspect it's TC, but we haven't made much progress on the whole infinite loop thing
14:29:03 <Insane> Well it depends on the interpreter
14:29:34 <oklopol> Insane: lolwut?
14:29:55 <Insane> I mean
14:29:58 <Insane> if all languages are equal
14:30:17 <Insane> or rather the interpreter specification
14:30:21 <RodgerTheGreat> The main reason I think it could be TC is that it's semantics contain conditional operations, an ability to nest operations or perform simple concatenations, and an inherent looping structure (as long as you don't run out of code)
14:30:30 <Insane> for example, try doing networking in brainfuck. Now try doing networking in C++
14:31:06 <RodgerTheGreat> with a reasonable extension, BF networking might not be ludicrously painful
14:31:45 <oklopol> well, tcness doesn't specify io, but it does specify there is a way to encode any type of io in the language using a certain state for a certain kind of io operation
14:31:58 <oklopol> (although that was a bit informally put)
14:32:23 <oklopol> btw, we should make a list of "points everyone on the userlist has made multiple times, and should thus be avoided"
14:32:26 <Insane> RodgerTheGreat, I programmed an irc bot in NetBrainFuck
14:32:39 <RodgerTheGreat> impressive.
14:32:41 <oklopol> i mean, how many times have you heard c is not tc :P
14:32:56 <Insane> Heh
14:32:57 <Insane> Not really
14:32:59 <oklopol> (that was mostly a joke)
14:33:14 <Insane> I hard-coded the irc bot
14:33:17 <Insane> and it has 0 interaction
14:33:20 <Insane> basically only one way
14:33:29 <Insane> but the point is that NetBrainFuck works
14:33:35 <Insane> It's telnet based
14:33:39 <Insane> means it sends chars immediately
14:33:44 <RodgerTheGreat> still not a bad proof-of-concept
14:34:10 <RodgerTheGreat> if you can get it to respond to ping requests, it qualifies as a real bot, so you're close
14:34:32 <Insane> Heh
14:34:35 <Insane> Perhaps
14:34:43 <Insane> I've had theories, but I'm not bored enough to try them
14:34:54 <Insane> We need a C to brainfuck translator ^^
14:35:07 <RodgerTheGreat> plus doing that would frighteningly enough build a general bot framework that others could extend
14:35:19 <RodgerTheGreat> Insane: GregorR made one, I think
14:35:36 <Insane> heh
14:35:40 <Insane> frighteningly?
14:35:45 <Insane> And that hardly qualified as a framework
14:36:40 <Insane> I inputted "NICK netbrainfsck\nUSER a b c d\nJOIN #botters\nPRIVMSG #botters :Meep\n" into a text-to-brainfuck converter
14:36:47 <Insane> And did s/./%/g
14:36:52 <Insane> where % means send
14:37:01 <RodgerTheGreat> comment it and show how you can replicate the ping responder structure to do event-based code and recognize IRC signals
14:37:18 <Insane> Hmm
14:37:19 <Insane> Maybe
14:37:21 <Insane> http://insane.pastebin.org/17554
14:37:22 <Insane> Meep
14:37:28 <Insane> That's my code
14:37:35 <Insane> it takes host/port from console
14:37:41 <Insane> Since I'm too lazy to hardcode it
14:37:47 <Insane> * means connect
14:37:50 <RodgerTheGreat> yup
14:37:59 <RodgerTheGreat> that seemed pretty clear
14:38:10 <Insane> :P
14:38:24 <Insane> * goes right starting at the current pointer until a \n is met
14:38:25 <RodgerTheGreat> and % is obviously "output to telnet"
14:38:31 <Insane> heh
14:38:36 <Insane> ! is "input from telnet"
14:38:40 <EgoBot> Huh?
14:39:11 <Insane> returns 0 on error/disconnect
14:39:31 <Insane> So that +[!]~ loops until disconnected and subsequently disconencts+closes (~) the socket
14:40:04 <Insane> and the cheapest telnet console (sans address port) you can make is a one-way console:
14:40:19 <Insane> * +[!.]~
14:40:24 <Insane> It actually works
14:41:04 <RodgerTheGreat> try making a gopher client
14:41:12 <Insane> gopher?
14:41:24 <RodgerTheGreat> pre- http web protocol
14:41:27 <Insane> oh
14:41:29 <Insane> Heh
14:41:29 <RodgerTheGreat> there's a good wiki article on it
14:41:31 <Insane> naw
14:42:01 <Insane> btw, I'm thinking of how to do a two-way telnet console
14:42:10 <Insane> The problem is that both ! and , block
14:42:20 <RodgerTheGreat> so you'd have to buffer
14:42:33 <Insane> I made ? which is like ! but returns 0 if there is no data to be read
14:42:55 <Insane> and I'm thinking of how to do ; which *should* be non-blocking ,
14:43:07 <Insane> Or maybe I should do '
14:43:08 <Insane> or `
14:43:46 <tejeez> or add something like select
14:44:02 <Insane> That'd be too "non-brainfuck" for me :P
14:44:17 <Insane> Heh
14:44:26 <Insane> actually ; is too non-brainfuck for me as well
14:44:31 <RodgerTheGreat> include more parameters in the input connect takes
14:44:40 <Insane> Hmm
14:44:42 <Insane> Like?
14:44:52 <Insane> blocking / non blocking?
14:45:06 <RodgerTheGreat> I would just say "fetch X number of bytes before disconnecting", with 0 meaning "connect indefinitely"
14:45:09 <RodgerTheGreat> hm
14:45:15 <Insane> Hmm
14:45:18 <Insane> That's easy
14:45:23 <Insane> even without extra params
14:45:29 <Insane> this would fetch 10 bytes
14:45:36 <RodgerTheGreat> yeah, I know
14:46:00 <RodgerTheGreat> you could make a "connect stack"
14:46:24 <RodgerTheGreat> if you connect while connected, you create a new connection and push the current one down (but keep it open)
14:46:30 <Insane> /input connection details here/ * <++++++++++> +<[>!. /process/ <-]
14:46:31 <Insane> Heh
14:46:40 <Insane> Add ~ to the end to d/c
14:46:48 <Insane> hmm
14:46:57 <Insane> Well right now connecting while connected simply returns an error
14:47:04 <Insane> Bah
14:47:10 <Insane> Too non-brainfuck already
14:47:10 <Insane> :P
14:47:22 <Insane> I'll stick to C# for my irc bots
14:51:41 <Insane> LOL
14:52:29 <Insane> I told this guy to do "php5 path/to/php/file/here.php" and he kept saying he got "file not found", so I asked him to copy/paste what he was doing and it turns out he actually entered path/to/bot/here.php
14:52:44 <Insane> *php/file
14:52:50 <Insane> heh
15:00:47 <oklopol> classic
15:01:37 <Insane> He actually took it serious though
15:01:37 <Insane> lol
15:02:04 <Insane> He's sorta the cluesless "I don't know what irc, the internet or php is but I wanna code an irc bot in php using others' code"
15:02:08 <Insane> +type of person
15:04:01 <oklopol> ah, the best kind :)
15:04:40 <oklopol> in uni today, i overheard someone say something about an sql evaluator being a 3 year project
15:04:54 <oklopol> now i just have to get mine done in less than 5 hours :D
15:05:37 <oklopol> (although it basically just brute forces, at least the version i have that schedule for)
15:08:39 <Insane> lol
15:09:42 <oklopol> well, it will not generate the whole cartesian product, of course, but it does not check which order is the most feasible.
15:10:08 <oklopol> even i'm not that insane :)
15:10:15 <oklopol> anyway, gotta go ->
15:14:24 <Insane> hehk
15:37:36 -!- timotiis has joined.
16:08:44 -!- Corun has joined.
16:10:32 -!- Insane has left (?).
16:10:45 -!- Insane has joined.
16:16:16 <slereah__> I are back people.
16:16:39 <slereah__> Also, aren't Unlambda and other such languages string-based, in a way?
16:37:08 -!- slereah__ has changed nick to Slereah.
17:00:05 -!- Insane has quit (Client Quit).
17:04:47 -!- Tritonio_ has joined.
17:05:34 -!- Tritonio__ has quit (Read error: 110 (Connection timed out)).
17:17:12 -!- Corun has quit ("This computer has gone to sleep").
18:19:53 <bsmntbombdood> unlambda?
18:19:55 <bsmntbombdood> no....
18:21:00 <Slereah> What's the definition of a string based language?
18:28:39 -!- jix has quit ("CommandQ").
18:37:39 -!- ehird` has joined.
18:50:52 -!- Tritonio_ has quit (Read error: 110 (Connection timed out)).
18:51:24 -!- Tritonio_ has joined.
18:56:41 <ehird`> '... Then, get the Linux kernel sources and read the file linux/Documentation/CodingStyle, and ignore Linus's jokes. These two documents will give you a good idea of what we recommend for GNOME code.
18:56:41 <ehird`> '
18:56:50 <ehird`> pft
19:21:57 -!- ehird` has quit (Remote closed the connection).
19:23:28 -!- ehird` has joined.
19:23:51 <ehird`> using a 57 line WM feels odd.
19:34:12 -!- ehird` has quit (Remote closed the connection).
19:36:41 -!- ehird` has joined.
19:40:53 <ehird`> oklopol: okloping
19:41:39 -!- sekhmet_ has changed nick to sekhmet.
19:42:37 <oklopol> !
19:42:39 <EgoBot> Huh?
19:44:04 <Slereah> Shush robot
19:44:30 <oklopol> i cannot see invites.
20:01:41 -!- TheTedd has joined.
20:01:47 <TheTedd> blarg
20:01:58 <Slereah> Interblag?
20:02:11 <TheTedd> link?
20:02:50 <Slereah> http://xkcd.com/181/
20:03:01 <TheTedd> I know that one :p
20:03:21 <Slereah> Then why ask!
20:03:21 <TheTedd> I totally linked it in myblagspace
20:03:39 <TheTedd> because I felt like it!
20:03:42 <Slereah> Your blagoblagospace?
20:03:44 <Slereah> ...blag.
20:03:51 <TheTedd> no
20:04:01 <TheTedd> I was blarging
20:04:21 <Slereah> What are we, smurfs?
20:04:27 <Slereah> *blurgs
20:04:45 <TheTedd> I see how that's an easy mistake to make
20:05:04 <Slereah> The keys are right next to each other!
20:05:14 <TheTedd> granted
20:07:11 <TheTedd> sooooo
20:07:17 <Slereah> Soooo?
20:07:30 <TheTedd> yes, that's what I said
20:07:42 <Slereah> I'm reassured.
20:07:52 <TheTedd> all part of the service
20:07:54 <Slereah> It could have been a symptom of schizophrenia otherwise
20:08:20 <TheTedd> how so?
20:08:37 <Slereah> If I saw a word, and it wasn't there!
20:08:55 <TheTedd> too much caffeine
20:09:02 <Slereah> I don't drink coffee.
20:09:18 <TheTedd> I never mentioned coffee
20:09:28 <TheTedd> did you see coffee when it wasn't there?
20:10:05 <Slereah> Well, I don't drink tea either, or coca cola, red bull, or eat caffein pills.
20:10:21 <Slereah> Or any other caffein-ful item
20:10:30 <TheTedd> chocolate?
20:11:08 <Slereah> If I ate enough for caffeine, I'd worry about biabeetus before.
20:11:13 <Slereah> diabeetus*
20:11:33 <TheTedd> I'd worry about humungusgutus
20:11:55 <Slereah> I'm a skinny fuck.
20:12:05 <TheTedd> not after all that chocolate
20:13:10 <ehird`> blogoblah
20:13:12 <ehird`> -blag
20:13:45 <Slereah> Blogabloog?
20:13:49 <TheTedd> I blargly agree
20:13:59 <Slereah> Blog blimey!
20:15:31 <TheTedd> blargness
20:16:11 * Slereah wants to do a wiki article for Clockpunk
20:16:23 <Slereah> But first, I must do a diagram of the theoretical model.
20:16:32 <TheTedd> [citation needed]
20:16:33 <Slereah> An infinite tape of clocks. And an Englishman.
20:16:38 <Slereah> Well, the esowiki
20:18:10 <TheTedd> [blarg needed]
20:18:32 <Slereah> [Esco interpreter needed]
20:18:59 <TheTedd> where do they speak esco? escoland??
20:19:07 <ehird`> Slereah: loool, esco
20:19:11 <ehird`> :D
20:19:17 <Slereah> Who knows!
20:19:35 <Slereah> If they make an interpreter for Ook, why not for Clockpunk!
20:20:10 <TheTedd> * Who :No such nick/channel
20:20:18 <TheTedd> shame Who isn't here
20:21:02 <Slereah> It is strange that the ESCO PROJECT is so slow.
20:21:45 <Slereah> I mean, three of their six languages is basically the same, and one of the simplest!
20:21:51 <Slereah> and one isn't even a language.
20:21:58 <Slereah> Although they apparently just added Byter
20:23:28 <Slereah> You can now download ESCO V O.50!
20:23:45 <TheTedd> w00t
20:24:07 <Slereah> Oh, and apparently Befunge too!
20:24:12 <Slereah> Let's see that miracle
20:24:41 <TheTedd> God isn't here right now, please leave a message..
20:27:09 <Slereah> "
20:27:09 <Slereah> This version supports Brainfuck, Ook, Spoon, HQ9+, WhiteSpace, Befunge-93,
20:27:09 <Slereah> Byter.
20:27:13 -!- RedDak has joined.
20:32:08 <Slereah> "configure: error: GMP library not found. Use --disable-gmp"
20:32:24 <Slereah> Hm.
20:32:31 <Slereah> What liberry is this?
20:32:40 <TheTedd> "gmp"
20:33:00 <Slereah> So I assumed.
20:33:08 <GregorR> The GNU MultiPrecision (bignum) library.
20:33:16 <TheTedd> gmplib.org
20:33:22 <Slereah> Thanks.
20:35:36 <ehird`> Slereah: isn't esco wonderfully crap? :)
20:35:53 <Slereah> Well, I can't really read C that thick.
20:36:33 <ehird`> it's just crap though!
20:36:36 <ehird`> and its crappy c++
20:37:24 <Slereah> "checking for suitable m4... configure: error: No usable m4 in $PATH or /usr/5bin (see config.log for reasons)."
20:37:25 <Slereah> Wut?
20:37:33 <ehird`> install m4
20:37:57 <Slereah> But what if m4 asks me to install gmp!
20:38:05 <Slereah> Aaaaaaaaah
20:38:16 <TheTedd> and flex and bison and ......
20:38:51 <Slereah> I'm not even sure what m4 is
20:39:27 <Slereah> "Multi-Modal Mesh Manipulation (M4)"?
20:39:58 <ehird`> no
20:40:01 <ehird`> macro transformer
20:40:14 <TheTedd> some kind of macro language... what eh' said
20:43:02 <Slereah> Fuck this.
20:43:09 <Slereah> Esco can't be worth that much trouble.
20:43:50 <TheTedd> just write a bf++ compiler instead :D
20:44:05 <Slereah> What's bf++?
20:44:17 <TheTedd> brainfuck with oop extensions
20:44:36 <ehird`> you can do that in plain brainfuck
20:44:42 <ehird`> just search for 'OOP brainfuck'
20:44:49 <ehird`> also, STOP CREATING GODDAMN BRAINFUCK VARIANTS!!
20:44:59 <TheTedd> I didn't do it
20:45:02 <ehird`> good
20:45:23 <Slereah> WHAT BF VARIANT DID YOU DO THEN?
20:45:41 <TheTedd> "fu"
20:45:57 <TheTedd> not so much a variant as a full turing machine simulator
20:46:16 <Slereah> I use the Love Machine 9000 for that.
20:46:25 <Slereah> http://www.esolangs.org/wiki/NTCM
20:47:12 <TheTedd> blarg
20:47:50 <TheTedd> multiple tapes is cheating :p
20:48:13 <Slereah> Well, you don't have to use multiple tapes!
20:48:25 <Slereah> I also made a 2D version, but it still has some problems.
20:48:54 <Slereah> There's a BF interpreter on one tape on it
20:49:01 <Slereah> In the external ressources.
20:49:13 <ehird`> Slereah: to beep in linux
20:49:15 <ehird`> echo \7
20:49:18 <ehird`> somethign like
20:49:21 <ehird`> print "\7"
20:49:22 <ehird`> wait no
20:49:26 <ehird`> sys.stdout.write("\7")
20:49:49 <Slereah> ehird`: Wut?
20:49:57 <ehird`> Slereah: what
20:50:05 <Slereah> Why do you say this?
20:50:19 <TheTedd> just if you wanted to know
20:50:46 <Slereah> I have an ASCII chart on the wall, beep's on it.
20:52:22 <Slereah> If you refer to the winsound, it's not because of beep.
20:52:27 <Slereah> It's because of this : [a[cr:F#57RIF#58RINO1RID55RIF#55RIG55RIA55RINO1RIG55RIF#55RIE55RINO2RIF57RINO1RIF55RIE55RIF55RIE55RID55RID59:b]|b[#:RI:c;cr:LE:b]|c[#:HA:c;cr:DIRI:c]][0=#;ims=a;nd;nh;etFecF;t1]
20:52:53 <TheTedd> oh, now I see
20:53:22 <Slereah> Yes.
20:53:33 <Slereah> I wanted to play the Monkey Island theme on a Turing machine.
20:53:51 <TheTedd> chr 7 beep is only one tone
20:54:07 <Slereah> Hence the Winsound on the original Love Machine 9000
20:54:23 <ehird`> Slereah: you have a bip function though
20:54:25 <ehird`> which just beeps
20:54:30 <ehird`> you can implement that trivially
20:54:44 <TheTedd> no, have a virtual device, of which 'beeper' is one
20:54:53 <Slereah> But can it play the Monkey Island theme, can it?
20:55:06 -!- GreaseMonkey has joined.
20:56:17 <ehird`> hm
20:56:51 <Slereah> If I just want a bip, I can prolly use P(alt + 007)
20:57:12 <Slereah> Or use Going Postal, since it uses binary
20:57:36 <ehird`> Slereah: i mean you actually do have one
20:57:40 <ehird`> but its commented out in the linux ver.
20:57:58 <Slereah> Yes.
20:58:09 <Slereah> Because well, since it's winsound, it won't work.
20:58:33 <ehird`> so make it print \7
20:58:56 <Slereah> Nah. Not much point.
20:59:09 <Slereah> Especially since the syntax is based on musical notes for that one.
20:59:46 <TheTedd> I'd go with the beeper 'device' and then you can 'out' to it to play any notes you choose
21:00:07 -!- helios24 has quit (Read error: 110 (Connection timed out)).
21:00:30 <Slereah> That many quotation marks isn't a good sign!
21:00:35 <ehird`> 0000=bool, 0001=void, 0010=nil, 0011=smallint, 0100=bigint, 0101=smallfloat, 0110=bigfloat, 0111=char, 1000=string, 1001=pair, 1010=primitive, 1011=procedure, 1100=continuation, 1101=environment, 1110=port, 1111=symbol
21:00:41 <ehird`> 4 bits still isn't enough for my tag!!
21:00:42 <TheTedd> 'sorry' :p
21:00:45 <ehird`> i need ONE MORE: vector
21:01:49 <TheTedd> so extend it to 8 for future safety
21:02:01 <Slereah> But that will give you 15 other numbers to attribute :o
21:02:36 <ehird`> exactly i don't have 31 types.
21:02:46 <ehird`> just 17
21:03:00 <TheTedd> so attribute the extras as 'violation'
21:03:20 <Slereah> Use ternary.
21:03:36 <ehird`> TheTedd: noes
21:03:45 <ehird`> i only have one pointer
21:04:34 <TheTedd> so?
21:04:47 <TheTedd> you'll still have to deal with it at some point
21:05:05 <ehird`> no
21:05:15 <Slereah> Create some more types maybe?
21:05:16 <ehird`> 17 types, i need to encode 'em as concisely as possible
21:05:49 <TheTedd> well 17 won't fit into 4 bits
21:05:57 <Slereah> Well, 3 ternary tits would be more concise
21:05:58 <ehird`> duh
21:06:00 <ehird`> :)
21:06:12 <Slereah> And leave 10 numbers, just in case!
21:06:13 <TheTedd> so you need 5 bits - and that means 'wasting' some values
21:06:51 <TheTedd> so have the extra values as 'error' type for now, then they can be used in future extension
21:07:10 <Slereah> Maybe you could use a binary value to redirect to something else.
21:07:19 <Slereah> For instance, 1111 -> symbol if next bit is 0, else if bla bla
21:07:39 <ehird`> TheTedd: extensions will never happen
21:07:46 <TheTedd> you've just proven it will
21:07:59 <TheTedd> you now have an 'extra' type
21:08:18 <Slereah> You could... delete one type.
21:08:36 <ehird`> TheTedd: No, I haven't even committed these to code yet.
21:08:54 <TheTedd> but you're trying to extend your design - same diff
21:09:09 <TheTedd> anyway, do you need the separation of both nil and void?
21:09:33 <Slereah> What's the difference between char and symbol, also?
21:10:15 <ehird`> TheTedd: and no i'm not.
21:10:18 <ehird`> and yes.
21:10:28 <ehird`> nil=terminal,void=unspecified
21:10:57 <TheTedd> can they both occur in the same context?
21:11:31 <ehird`> no
21:12:14 <TheTedd> then you only need one of them :p
21:12:23 <TheTedd> which one it 'is' depends on the context only
21:12:42 <TheTedd> and now you have an extra slot :D
21:13:16 <TheTedd> 0=bool, 1=void/nil, 2=....
21:13:24 <Slereah> The gods of types will be angry at him if he does!
21:13:39 <TheTedd> the gods of combinatorial logic will be otherwise
21:13:48 <ehird`> TheTedd: I misunderstood you.
21:13:53 <ehird`> Anyway, it's not my choice to make.
21:14:52 <TheTedd> well it's a suggestion
21:15:36 -!- maristo has joined.
21:22:33 -!- maristo has left (?).
21:24:00 <ehird`> TheTedd: not my lang.
21:24:28 <TheTedd> it's not a change in the lang, just the interpreter/compiler
21:24:56 <Slereah> Unless those denominations ARE IN THE LANGUAGE :O
21:25:37 <TheTedd> even still, the symbolic representation doesn't change the meaning of the language
21:26:02 <Slereah> Yes, but would you program in BF if every symbol was butt?
21:26:05 <Slereah> I don't think so!
21:26:33 <Slereah> BF has pleasing meaningful symbols!
21:27:27 <TheTedd> it's not a change to the symbols used..
21:28:09 <TheTedd> just the _representation_ of 'meaning' from inside the interpreter, while the _meaning_ remains the same
21:29:23 <ehird`> TheTedd: sorry, but void and nil are seperate, and non-interchangable
21:29:27 <ehird`> they are not related
21:29:34 <ehird`> you can consider nil 'end' and void '??'
21:29:48 <TheTedd> I hope they are not related - or it wouldn't work :p
21:30:49 -!- helios24 has joined.
21:31:13 <TheTedd> the case is simple - if they cannot occur within the same context, then you can use the same 'type' representation in either context and there is no confusion between the two
21:31:49 <TheTedd> if they can, then no it's not going to work
21:32:59 <ehird`> everything can occur in the same context
21:33:13 <TheTedd> 5 bits it is then
21:33:39 <TheTedd> or some kind of dynamic mixed representation
21:39:35 -!- helios_ has joined.
21:49:24 -!- helios24 has quit (Read error: 110 (Connection timed out)).
21:59:27 -!- TheTedd has left (?).
22:29:15 -!- RedDak has quit (Remote closed the connection).
22:46:42 -!- bsmntbombdood has quit (Success).
22:47:10 -!- bsmntbombdood has joined.
22:56:06 -!- timotiis has quit ("/me tips his hat").
23:11:48 -!- sebbu2 has joined.
23:20:21 -!- sebbu has quit (Connection timed out).
23:20:22 -!- sebbu2 has changed nick to sebbu.
23:44:01 <Slereah> I should finish that Post machine BF interpreter.
23:44:13 <Slereah> Or at least the basic functions.
←2007-12 2008-01 2008-02→ ↑2008 ↑all