←2011-02-04 2011-02-05 2011-02-06→ ↑2011 ↑all
00:00:00 <EgoBot> Score for impomatic_sexyghoul: 37.4
00:00:11 <zzo38> I also think variable-length arrays should not belong, either.
00:00:32 <elliott> I think that ducks belong in the C standard.
00:00:36 <elliott> Evil, rabid ducks.
00:00:38 <elliott> Do you agree, zzo38?
00:00:54 -!- impomatic has quit (Quit: ChatZilla 0.9.86 [Firefox 3.5.16/20101130074636]).
00:00:57 <zzo38> elliott: No.
00:01:11 <elliott> maybe that's because you're wrong?
00:01:23 <zzo38> Normal ducks do not belong and evil ducks also do not belong.
00:01:35 -!- augur has joined.
00:02:40 <elliott> why
00:04:42 <zzo38> Do you think a computer commonly has machine instructions for complex numbers and rabid ducks?
00:04:55 <elliott> yes
00:05:03 -!- augur has quit (Remote host closed the connection).
00:05:04 <Lymia> C is not a cypher ASM.
00:05:08 <Lymia> cypher for ASM*
00:05:18 -!- Behold has joined.
00:05:29 <zzo38> Lymia: I know but that isn't what I meant.
00:06:37 <Lymia> Do you think a computer commonly has machine instructions for printing to screen?
00:07:29 <elliott> hmm, it doesn't work
00:07:30 <Lymia> Do you think a computer commonly has machine instructions for string manipulation?
00:07:31 <elliott> that's disappointing
00:08:40 -!- BeholdMyGlory has quit (Ping timeout: 240 seconds).
00:09:06 <zzo38> Lymia: For printing to screen, that is a part of the operating system (or BIOS) and the C libraries generally include operating system functions. For string manipulation, although it is not directly machine instructions it is just a way of doing, such as: strlen(x) finds how many bytes before a null byte, and so on.
00:09:16 <Lymia> So.
00:09:16 <elliott> same with complex numbers
00:09:19 <Lymia> What's wrong with complex numbers?
00:09:22 <elliott> they're just "ways of doing"
00:09:33 <zzo38> There are some good features in C99 though, but not a lot.
00:09:42 <Lymia> What's fundamentally different about it.
00:09:54 <elliott> <Lymia> [expecting coherent, logical reasons from zzo38]
00:10:00 <zzo38> Complex numbers does not seem to fit with C very well, especially not by the program language itself.
00:10:16 <zzo38> But maybe in a math library you might make up some functions for complex numbers.
00:10:32 <Lymia> If you don't like it, don't use it.
00:10:43 <Lymia> It's not like the compiler's going to generate code for complex numbers in your program unless it's needed.
00:10:44 <elliott> well that's silly
00:10:50 <elliott> there's plenty of reasons to avoid language feature bloat
00:10:58 <elliott> but complex numbers are a perfectly valid, useful language feature
00:11:03 <elliott> albeit, one that was not implemented very well in C99
00:11:15 <Lymia> Unless you're implementing a compiler, I don't see a reason to care that much.
00:11:23 <elliott> (using "I"? seriously? for all the paranoia the C committee have about clashes that's just ridiculous)
00:11:30 <elliott> Lymia: easier to reason about simpler languages.
00:11:43 <zzo38> But I do not believe complex numbers should be a fundamental data type. Just like, operating system stuff is not good feature in the programming language, it is good for standard library function though (otherwise you cannot write a program at all).
00:11:45 <Lymia> elliott, depends on what you're talking about.
00:11:48 <Lymia> Extra data types?
00:12:01 <elliott> any good language can duplicate the complex number functionality in a library, anyway
00:12:02 <Lymia> You don't have to reason about them unless you use them.
00:12:03 <elliott> C can't
00:12:20 <Lymia> elliott, struct complex{float r; float i;}
00:12:26 <elliott> Lymia: can't implement + on that.
00:12:46 <Lymia> It'd be possible to implement the logic for it at least.
00:12:48 <Lymia> But still.
00:13:00 <Lymia> With no operator overloading, it's not a bad idea.
00:13:00 <Lymia> =p
00:13:58 <elliott> pikhq: BTW, st seems to do multibyte perfectly.
00:14:11 -!- elliott_ has joined.
00:14:16 * Lymia hugs elliott
00:14:16 <elliott_> Unicode! Give me it!
00:14:19 <elliott_> Well, UTF-8.
00:14:43 -!- poiuy_qwert has quit (Quit: This computer has gone to sleep).
00:15:51 <elliott_> oi
00:15:55 <elliott> æßeđæe¶
00:15:58 <elliott> yep
00:16:00 <elliott> working perfectly
00:16:11 <elliott> `translateto ja hello world
00:16:17 <elliott> `translatefromto en ja hello world
00:16:20 <elliott> oh wait
00:16:21 <elliott> Gregor!
00:16:41 <zzo38> No, I think it should have directives to catch compiler errors (such as #catcherror and so on), and then write custom codes to deal with it. Such as, catching negative array index error, cannot do + on structures error, wrong implicit cast error, too large number error, etc.
00:16:52 <elliott_> I don'y.
00:16:55 <elliott_> Because that's ridiculous.
00:16:56 <zzo38> But floating hexadecimal constants is doesn't seems necessary.
00:16:56 <elliott_> *'t.
00:18:39 <zzo38> You can then implement operator overloading by using the functions for catching compiler errors. And you can implement other things with it, too.
00:18:49 <Lymia> ....
00:19:01 <Lymia> elliott, I see why you said that now
00:19:03 <elliott_> wait is this Lymia's first encounter with zzo38?
00:19:08 <Lymia> Yes.
00:19:11 <elliott_> heh
00:19:15 <elliott_> hope you're having fun
00:19:31 <Lymia> Who is he, and why is he here?
00:19:32 <Lymia> D=
00:19:40 <zzo38> And then you can make complex numbers from this too, by placing the catching codes in a header file.
00:20:00 <Lymia> zzo38, tell me you're trolling.
00:20:00 <elliott_> Lymia: http://esolangs.org/wiki/User:Zzo38
00:20:41 <zzo38> That also includes errors such as access a member which is not exist in the structure/union, and that you are calling a function which does not exist, and so on.
00:20:52 <Lymia> ..............
00:21:02 <Lymia> Explain how this would allow you to implement these things again?
00:22:22 <zzo38> Lymia: For example, you define a typedef struct for complex numbers, and then when you try to add them using + operator it throws a compiler error which you must catch in order to modify the program to a valid code (or to another invalid code which will be caught again differently to make valid next time instead).
00:22:43 <Lymia> And why would you do this, instead of say, adding a construct like this.
00:23:01 <Lymia> operater struct complex +(struct complex a, struct complex b)
00:23:32 <zzo38> I think a way to catch compiler errors in this way, though, would have a lot of possible uses.
00:23:33 <elliott_> *operator
00:24:21 <Lymia> zzo38, so.
00:24:28 <Lymia> You want to write syntaticly invalid code.
00:24:40 <Lymia> And add a new construct to define a behavior for it other than erroring.
00:24:41 <zzo38> I also do not like how C++ can override the *x and x[] operator separately, that doesn't even make sense. I don't even use C++, because C is works OK.
00:25:06 <zzo38> Lymia: Syntax errors, but also errors other than syntax errors, too.
00:25:15 <Lymia> The people at IOCCC would like it, but not many other people.
00:25:56 <Lymia> How old is zzo38?
00:26:14 <Gregor> No one knows.
00:26:23 <elliott_> didn't he say he was 16
00:26:49 <zzo38> elliott_: Actually I did not say at all. And I will not say.
00:26:49 <Lymia> I'm not sure to consider this a mitgating factor, or a reason to cringe more.
00:27:14 <elliott_> zzo38: haven't you mentioned highschool before, I think you did, dunno
00:27:45 <zzo38> elliott: I do not remember whether or not I did.
00:28:02 <elliott_> elliott didn't say that, elliott_ did!
00:28:26 <zzo38> Sorry I made a mistake
00:28:39 -!- HackEgo has joined.
00:28:50 <Gregor> `gcc
00:28:51 <HackEgo> Failed to clone the environment!
00:28:55 <Gregor> lawl
00:29:00 <elliott_> SUPA SUCCESS
00:29:23 <Lymia> `killall -9 spamd
00:29:24 <HackEgo> Failed to clone the environment!
00:29:31 <Lymia> `run killall -9 multibot
00:29:31 <HackEgo> Failed to clone the environment!
00:29:36 <Lymia> :v
00:30:09 <Gregor> Why does everybody immediately assume that not only did I write HackEgo in a stupid way, but I run every command AS FUCKING ROOT
00:30:25 <elliott_> Because you're so stupid usually, Gregor.
00:30:37 <zzo38> `run echo "Failed to clone the environment!"
00:30:38 <HackEgo> Failed to clone the environment!
00:30:43 <elliott_> IT WORKED
00:30:55 <Lymia> `run hug
00:30:55 <HackEgo> Failed to clone the environment!
00:30:58 <Lymia> :(
00:31:08 <Gregor> PATIENCE
00:32:39 <elliott_> `./test
00:32:41 <HackEgo> Failed to clone the environment!
00:33:21 <elliott_> `run ./test 2>&1; echo $?
00:33:22 <HackEgo> Failed to clone the environment!
00:36:39 <elliott_> `run ./test 2>&1; echo $?
00:36:40 <HackEgo> No output.
00:36:45 <elliott_> Gregor: Thanks for letting us know :P
00:36:49 <elliott_> Hmm, what ...
00:36:52 <Gregor> It doesn't work yet.
00:36:55 <elliott_> X-D
00:36:57 <elliott_> SRY
00:36:57 <Gregor> I haven't let you know because I'M NOT DONE YET
00:37:00 <Gregor> I'm still installing shit
00:37:01 <elliott_> OKAY
00:37:03 <elliott_> GREGOR MR.
00:37:04 <elliott_> EGG-MAN
00:37:05 <elliott_> GREGSHITS
00:37:07 <elliott_> GREGHAT
00:37:33 -!- Sgeo has quit (Read error: Connection reset by peer).
00:38:02 -!- Sgeo has joined.
00:39:18 <Gregor> `run gcc 2>&1
00:39:20 <HackEgo> gcc: no input files
00:39:25 <elliott_> `run ./test 2>&1; echo $?
00:39:27 <HackEgo> gcc: #!/bin/sh \ name=$(mktemp) \ gcc -x c -O2 -std=gnu99 "$(tail -n +1 "$0")" -o "$name" || exit $? \ shift \ "$name" "$@"; st=$? \ rm -f "$name" 2>/dev/null \ exit $?: No such file or directory \ gcc: warning: '-x c' after last input file has no effect \ gcc: no input files \ 1
00:39:34 <elliott_> X-D
00:39:35 <Gregor> wtfbbq
00:39:37 <elliott_> Durr
00:39:40 <elliott_> I see what I did, kinda
00:39:42 <Lymia> `run rm -rf *
00:39:43 <HackEgo> No output.
00:39:48 <elliott_> *sigh*
00:39:51 <elliott_> Gregor gets to revert.
00:39:52 <Lymia> elliott, don't you like me?
00:39:52 <Lymia> =3
00:39:57 <Gregor> `ls
00:39:58 <elliott_> It's trivially revertable.
00:39:58 <HackEgo> babies \ bin \ paste \ tmpdir.2587
00:40:03 <elliott_> So you've proven that you can ... minorly annoy!
00:40:06 <Gregor> Oh look, it DIDN'T EVEN HAPPEN
00:40:10 <elliott_> X-D
00:40:14 <elliott_> Yes it did
00:40:15 <elliott_> Where's quotes gone
00:40:18 <Lymia> `run :(){:|:&};:
00:40:19 <HackEgo> No output.
00:40:21 <Gregor> Also, anyone gets to revert.
00:40:25 <elliott_> `quote
00:40:27 <Gregor> Hm, where has quotes gone ...
00:40:27 <HackEgo> No output.
00:40:34 <elliott_> Gregor you are a bad person for removing my genius quote db
00:40:36 <elliott_> I want compensation
00:40:46 <Gregor> `help
00:40:47 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
00:40:51 <Lymia> `run :(){:|:&};:;cat
00:40:51 <HackEgo> No output.
00:40:54 <Lymia> :<
00:41:01 <elliott_> "`revert" should *really* just default to last revision :P
00:41:28 <Gregor> `revert 1
00:41:29 <HackEgo> Done.
00:41:31 <Gregor> `ls
00:41:32 <HackEgo> babies \ bin \ paste \ tmpdir.2875
00:41:33 <elliott_> X-D
00:41:38 <Gregor> ... weird
00:41:38 -!- FireFly has quit (Quit: swatted to death).
00:41:41 <elliott_> You neglected the quote DB, methinks.
00:41:49 <elliott_> Please tell me you didn't remove the old files.
00:41:53 <Lymia> Gregor, what protections do you have applied?
00:41:59 <elliott_> Lymia: more than you can possibly circumvent.
00:42:00 <Gregor> `revert 77d154694a2f
00:42:07 <Lymia> `ls /dev/urandom
00:42:08 <HackEgo> No output.
00:42:09 <Gregor> Lymia: More than I want to explain for the fiftieth time.
00:42:15 <Lymia> `ls /dev
00:42:16 <HackEgo> null
00:42:22 <Gregor> `revert 0
00:42:24 <HackEgo> Done.
00:42:24 <elliott_> Lymia: The only way to escape the ability to revert is by breaking plash, which is a VERY well-tested system. That will land you in an empty chroot.
00:42:27 <Gregor> Did the wrong reversion :P
00:42:28 <Gregor> `ls
00:42:29 <HackEgo> babies \ bin \ paste \ tmpdir.3086
00:42:29 <elliott_> Empty apart from one file, the libc.
00:42:33 <elliott_> Talking to the kernel will do nothing.
00:42:37 <Gregor> wtfbbq
00:42:37 <elliott_> You cannot change the file in any way.
00:42:39 <Gregor> Did I break revert :P
00:42:43 <elliott_> You then need to elevate to root with just system calls.
00:42:52 <elliott_> i.e. a major linux exploit.
00:42:54 <elliott_> You then need to chroot("..").
00:43:00 <elliott_> And _then_ you can fuck with files.
00:43:08 <elliott_> But, uhh, you could just break any linux system you have access to if you could do that.
00:43:14 <elliott_> So HackEgo breaking is really the least of our worries :P
00:43:28 <elliott_> Anyway even then you could just remove the HackEgo files.
00:43:33 <elliott_> Well, you're root actually.
00:43:37 <elliott_> So you could do anything.
00:43:39 <elliott_> But yeah :P
00:44:01 <Gregor> `quote
00:44:03 <HackEgo> 171) <Phantom_Hoover> OK, so is conspiring to conspire to commit a crime a crime? <cpressey> Let's all get together and talk about defacing public property sometime
00:44:47 <elliott_> `./test
00:44:48 <HackEgo> No output.
00:44:49 <Lymia> `find / > filelist
00:44:51 <HackEgo> No output.
00:44:52 <Lymia> `url filelist
00:44:52 <elliott_> OK, I have to change it.
00:44:52 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/filelist
00:44:54 <elliott_> With my fist.
00:45:03 <elliott_> Lymia: FFS, "`run find / | paste".
00:45:10 <zzo38> If Linux has some wrong thing like this, then they have to fix them in the next version.
00:45:11 <elliott_> `url bin/rungcc
00:45:12 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/rungcc
00:45:18 <Lymia> elliott, what does paste do?
00:45:19 <Gregor> Damn it, the plash guys just HAD to go and fix things.
00:45:20 <Gregor> Jerks.
00:45:21 <elliott_> Lymia: TIAS
00:45:26 <Lymia> `find / | aste
00:45:26 <HackEgo> No output.
00:45:29 <Lymia> `find / | paste
00:45:30 <HackEgo> No output.
00:45:32 <elliott> ...
00:45:34 <elliott> I SAID RUN IN FRONT
00:45:43 <Lymia> `run find / | paste
00:45:43 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.1790
00:45:44 * Lymia hides
00:45:44 <elliott> YOU DISCOMBOBULATED CORPSE OF A HUMAN DREDGE
00:45:45 <elliott> OR
00:45:45 <Lymia> Sorry.
00:45:46 <elliott> SOMETHING
00:45:53 <elliott> Apologies! I want BLOOD!
00:45:58 * Lymia hands elliott a hug
00:46:06 <Lymia> `run find | paste
00:46:07 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.25839
00:46:08 <elliott_> `run ./test 2>&1
00:46:10 <HackEgo> gcc: #!/bin/sh \ name=$(mktemp) \ gcc -x c -O2 -std=gnu99 "$(tail -n +1 "$0")" -o "$name" || exit $? \ shift \ "$name" "$@"; st=$? \ rm -f "$name" 2>/dev/null \ exit $?: No such file or directory \ gcc: warning: '-x c' after last input file has no effect \ gcc: no input files
00:46:19 <elliott_> Aha
00:46:35 <elliott_> `run echo <(echo hi)
00:46:36 <HackEgo> /dev/fd/63
00:46:58 <elliott_> `fetch http://sprunge.us/WCVL
00:47:00 <HackEgo> 2011-02-05 01:05:17 URL:http://sprunge.us/WCVL [151] -> "WCVL" [1]
00:47:05 <elliott_> `run mv WCVL bin/rungcc; chmod +x bin/rungcc
00:47:06 <HackEgo> No output.
00:47:07 <elliott_> `run ./test 2>&1
00:47:08 <HackEgo> /tmp/hackenv.3933/bin/rungcc: line 3: syntax error near unexpected token `(' \ /tmp/hackenv.3933/bin/rungcc: line 3: `gcc -x c -O2 -std=gnu99 <(tail -n +1 "$1") -o "$name" || exit $?'
00:47:11 <Lymia> `run ls /dev/random
00:47:12 <HackEgo> No output.
00:47:13 <elliott_> Oh.
00:47:13 <Lymia> `run ls /dev/urandom
00:47:14 <HackEgo> No output.
00:47:16 <Lymia> :<
00:47:31 <elliott_> `run sed -i 's/#!.*/#!\/usr\/bin\/env bash/' bin/rungcc
00:47:32 <HackEgo> No output.
00:47:34 <elliott_> `cat bin/rungcc
00:47:35 <HackEgo> #!/usr/bin/env bash \ name=$(mktemp) \ gcc -x c -O2 -std=gnu99 <(tail -n +1 "$1") -o "$name" || exit $? \ shift \ "$name" "$@"; st=$? \ rm -f "$name" 2>/dev/null \ exit $? \
00:47:37 <elliott_> `run ./test 2>&1
00:47:38 <HackEgo> gcc: /dev/fd/63: No such file or directory \ gcc: warning: '-x c' after last input file has no effect \ gcc: no input files \ /usr/bin/tail: write error: Broken pipe
00:47:46 <Lymia> elliott, what are you trying to do.
00:47:49 <elliott_> I reaaaally hate gcc.
00:47:59 <elliott_> Reaaaaaaaally.
00:48:28 <elliott_> `fetch http://sprunge.us/hVhM
00:48:29 <HackEgo> 2011-02-05 01:06:46 URL:http://sprunge.us/hVhM [171] -> "hVhM" [1]
00:48:30 <Lymia> `echo "int main(){printf(\"test\");return 0;}" > test.c
00:48:31 <HackEgo> "int main(){printf(\"test\");return 0;}" > test.c
00:48:34 <elliott_> `run mv hVhM bin/rungcc; chmod +x bin/rungcc
00:48:35 <HackEgo> No output.
00:48:36 <Lymia> `run echo "int main(){printf(\"test\");return 0;}" > test.c
00:48:37 <HackEgo> No output.
00:48:38 <elliott_> `run ./test 2>&1
00:48:39 <HackEgo> gcc: /dev/stdin: No such file or directory \ gcc: warning: '-x c' after last input file has no effect \ gcc: no input files
00:48:43 <elliott_> ...
00:48:45 <Lymia> `run gcc -o test test.c
00:48:49 <Lymia> `run ./test
00:48:50 <elliott_> Gregor, please make /dev/fd work.
00:48:51 <HackEgo> No output.
00:48:52 <HackEgo> No output.
00:48:52 <elliott_> Or at least /dev/stdin.
00:48:53 <elliott_> kthx
00:48:56 <Lymia> `run ./test | paste
00:48:57 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.5039
00:49:05 <Lymia> `ls
00:49:06 <HackEgo> 1 \ babies \ bin \ bluhbluh \ env \ foo \ paste \ ps \ quine \ quotes \ test \ test.c \ tmpdir.4559
00:49:19 <elliott_> `rm 1
00:49:19 <Gregor> elliott_: ... wtf
00:49:19 <HackEgo> No output.
00:49:32 <elliott_> Gregor: /dev/fd doesn't exist so bash can't do <(foo).
00:49:38 <elliott_> Gregor: /dev/stdin doesn't exist so I can't do it the other way.
00:49:43 <elliott_> All you have in /dev is null :P
00:49:55 <elliott_> "Just" some mknods away.
00:49:59 <Lymia> I need to learn more Linuxfu.
00:50:00 -!- Behold has quit (Remote host closed the connection).
00:50:00 <elliott_> (Or some cps :P)
00:50:02 <Gregor> ORLY? Hm :P
00:50:08 <elliott_> `run ls /bin
00:50:09 <HackEgo> bash \ bunzip2 \ bzcat \ bzcmp \ bzdiff \ bzegrep \ bzexe \ bzfgrep \ bzgrep \ bzip2 \ bzip2recover \ bzless \ bzmore \ cat \ chgrp \ chmod \ chown \ cp \ cpio \ date \ dd \ df \ dir \ dmesg \ dnsdomainname \ echo \ ed \ egrep \ false \ fgrep \ grep \ gunzip \ gzexe \ gzip \ hostname \ ip \ kill \ ln \ login \ ls \ lsmod
00:50:09 <elliott_> erm
00:50:12 <elliott_> `run ls /dev
00:50:13 <HackEgo> null
00:50:14 <elliott_> So yeah :P
00:50:43 <Lymia> `run echo $PATH
00:50:43 <HackEgo> /tmp/hackenv.4752/bin:/opt/python27/bin:/usr/bin:/bin
00:50:49 <Lymia> `ls /usr/bin
00:50:50 <HackEgo> 822-date \ X11 \ [ \ a2p \ addpart \ addr2line \ apropos \ apt-cache \ apt-cdrom \ apt-config \ apt-extracttemplates \ apt-ftparchive \ apt-get \ apt-key \ apt-mark \ apt-sortpkgs \ aptitude \ aptitude-create-state-bundle \ aptitude-run-state-bundle \ ar \ as \ awk \ base64 \ basename \ bashbug \ bdftopcf \ bdftruncate
00:50:57 <elliott_> Gregor: mknod /dev/stdout p 15 should do it, I think.
00:51:01 <elliott_> `run 822-date
00:51:03 <HackEgo> Sat, 05 Feb 2011 01:09:20 +0000
00:51:04 <Lymia> `ls /usr/bin | paste
00:51:04 <HackEgo> No output.
00:51:08 <Lymia> `run ls /usr/bin | paste
00:51:09 <elliott_> `man 822-date
00:51:09 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.9602
00:51:12 <HackEgo> No output.
00:51:46 <Lymia> `run ls -al /usr | paste
00:51:47 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.26324
00:52:01 -!- augur has joined.
00:52:18 <Gregor> Please make your pathetic hackery attempts via PM
00:52:32 <Lymia> :V
00:53:03 <elliott_> `ls /dev
00:53:04 <HackEgo> null
00:53:05 <Lymia> Gregor, but yeah.
00:53:13 <Lymia> Are you going to set up MetaBFJoust up?
00:53:18 <Lymia> Remove one up.
00:53:26 <elliott_> Wait it isn't p.
00:53:41 <Gregor> Lymia: Maybe over the weekend.
00:53:46 <elliott_> Uhh, Gregor, just make /dev/stdin :P
00:53:50 <elliott_> Wait.
00:53:52 <elliott_> `ls /proc
00:53:53 <HackEgo> No output.
00:54:00 <elliott_> Gregor: Mount proc and then it's just /dev/f -> /proc/self/fd.
00:54:00 <elliott_> *fd
00:54:02 <elliott_> Symlink.
00:54:17 <elliott_> And then just symlink /dev/stdout to /proc/self/fd/1.
00:54:26 <Gregor> >_O
00:54:27 <Gregor> <_O
00:54:27 <elliott_> And stdin to /proc/self/fd/0.
00:54:31 <elliott_> Gregor: WHY CAN'T YOU MOUNT PROC
00:54:51 -!- augur has quit (Remote host closed the connection).
00:56:36 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
00:56:59 <elliott_> Sheesh Gregor :P
01:01:11 -!- HackEgo has quit (Remote host closed the connection).
01:01:12 -!- EgoBot has quit (Remote host closed the connection).
01:01:24 -!- EgoBot has joined.
01:01:48 -!- HackEgo has joined.
01:01:53 <Gregor> `ls /proc
01:01:54 <HackEgo> 1 \ 10 \ 1015 \ 1025 \ 1026 \ 1030 \ 1034 \ 1035 \ 1036 \ 104 \ 1049 \ 106 \ 1077 \ 11 \ 1114 \ 1126 \ 1127 \ 1140 \ 1141 \ 11831 \ 1185 \ 12 \ 1231 \ 1238 \ 1239 \ 1240 \ 1241 \ 1242 \ 1243 \ 1244 \ 1245 \ 1252 \ 13 \ 13095 \ 13100 \ 13101 \ 13155 \ 1338 \ 13671 \ 13672 \ 13679 \ 13680 \ 13681 \ 13682 \ 13685 \ 14 \ 1425
01:01:57 <Gregor> `ls /dev
01:01:58 <HackEgo> null
01:02:02 <Gregor> Huh
01:02:38 <elliott> xD
01:03:54 <Lymia> `ls /proc/1
01:03:54 <HackEgo> attr \ auxv \ cgroup \ clear_refs \ cmdline \ coredump_filter \ cpuset \ cwd \ environ \ exe \ fd \ fdinfo \ io \ limits \ loginuid \ maps \ mem \ mountinfo \ mounts \ mountstats \ net \ numa_maps \ oom_adj \ oom_score \ pagemap \ personality \ root \ sched \ sessionid \ smaps \ stack \ stat \ statm \ status \ syscall \ task \ wchan
01:04:09 <elliott> `ls /dev
01:04:10 <HackEgo> null
01:04:12 <Lymia> Well.
01:04:14 <elliott> Gregor: gimme root and i'll fix it
01:04:29 <Lymia> That's alot of processes. :V
01:04:54 <Lymia> Gregor, does it count processes from outside the sandbox too?
01:05:40 <Gregor> It's not a magical /proc, it's normal proc
01:06:37 -!- zzo38 has quit (Quit: zzo38).
01:07:22 <elliott> hmm, I've forgotten what catbus did for 3 procs
01:07:27 * pikhq can has date
01:07:59 <elliott> pikhq: 2010-02-05
01:08:00 <elliott> you're welcome
01:08:21 <elliott> pikhq: wait, don't you play Minecraft? how do you have any time in the day left to do things that aren't Minecraft?
01:09:14 <pikhq> elliott: "Date" in the sense of "a common human mating ritual".
01:09:24 <elliott> <elliott> pikhq: wait, don't you play Minecraft? how do you have any time in the day left to do things that aren't Minecraft?
01:09:28 <pikhq> elliott: And that's easy. I procrastinate on everything, including Minecraft.
01:09:36 <elliott> pikhq: Also, dating isn't very common outside of the US.
01:09:43 <elliott> (Although like all things US, it has spread somewhat to the UK.)
01:09:53 * Sgeo suddenly sees some severe similarities between the Jem'Hadar and the Jaffa
01:10:30 <pikhq> elliott: What the heck do you normally do for courtship rituals? Matchmaker?
01:11:45 <elliott> pikhq: Well, as I said it's spread to the UK, but The Infallible Reddit Or Whatever It Was tells me that in Europe it generally goes something like "know each other -> o hai -> relationship".
01:11:46 <elliott> Not that I know.
01:11:49 <elliott> But hey, it's reddit.
01:11:51 <elliott> It's infallible, isn't it?
01:12:11 <pikhq> elliott: ... Lolwut?
01:12:25 <pikhq> elliott: "ME LIKE YOU. RELATIONSHIP EXIST NOW?" "YES."
01:12:36 <elliott> pikhq: Well, as I said, "*know each other* -> o hai -> relationship".
01:12:44 <elliott> It was one person though, so it could obviously just be total bullshitting.
01:12:49 * pikhq can only conclude that European courtship was invented by cavemen.
01:13:00 <elliott> But even as a UKer, the US' attitude to dating is really weird :P
01:13:20 <pikhq> As a USer, the typical US attitude towards it is still weird. :P
01:17:18 <Gregor> You shouldn't characterize all European courtship rituals as the same.
01:17:32 <Gregor> Finland: "Have some fish?" "Fish? Have some sex!"
01:17:41 <Gregor> France: "Surprise sex!"
01:18:08 <pikhq> Ah, yes, France is just a giant orgy.
01:18:13 <Sgeo> I have no idea what courtship is supposed to look like
01:18:19 <pikhq> It's the language, I'm sure.
01:19:36 <elliott> Gregor: Germany: "We shall engineer us an sex relation."
01:19:45 <Gregor> Yup
01:19:58 <Gregor> Spain: *plays chord on guitar* *sex*
01:20:53 <pikhq> Russia: You have someone with sex!
01:24:17 <elliott> Oh man, I fucked something up :DD
01:24:41 <elliott> I never say when my programs work in here.
01:24:42 <elliott> I'm just all
01:24:43 <elliott> oh man
01:24:44 <elliott> i'm so broken
01:24:47 <elliott> inside
01:24:54 -!- copumpkin has joined.
01:24:58 <elliott> pikhq: ANYWAY I compiled the hg version of st and it supports multibyte perfectly.
01:25:00 <pikhq> Clearly elliott is incapable of making functioning programs.
01:25:03 <elliott> `translateto ja Hello, world!
01:25:05 <HackEgo> No output.
01:25:06 <elliott> `translatefromto en ja Hello, world!
01:25:07 <HackEgo> No output.
01:25:13 <elliott> `translateto en jp Hello, world!
01:25:15 <HackEgo> No output.
01:25:16 <elliott> `translateto zh Hello, world!
01:25:18 <HackEgo> No output.
01:25:21 <pikhq> elliott: こんにちは、世界!
01:25:21 <elliott> `translatefromto en zh Hello, world!
01:25:25 <HackEgo> No output.
01:25:28 <elliott_> pikhq: Ooer. What encoding was that.
01:25:33 <pikhq> UTF-8
01:25:42 <elliott> pikhq: Does the Terminus font have UTF-8 characters?
01:25:45 <Lymia> `translateto ja Hello, world!
01:25:48 <HackEgo> No output.
01:25:51 <Lymia> `translateto en Hello, world!
01:25:53 <elliott> There was a patch to the repository recently that implemented UTF-8 support.
01:25:53 <HackEgo> No output.
01:25:57 <elliott> So it should be possible to make it work.
01:25:59 <Lymia> So.
01:26:08 <Lymia> It failed to translate from english to english?
01:26:12 <elliott> pikhq: Aha.
01:26:17 <elliott> pikhq: What's the environment variable for "locale yo"?
01:26:24 <elliott> So I can set it to en_GB.UTF-8 or w/e :P
01:26:26 <pikhq> LC_ALL
01:26:35 <elliott> Is it en_GB.UTF-8?
01:26:37 <elliott> That's the right syntax I think.
01:26:39 -!- elliott_ has quit (Quit: leaving).
01:26:41 <pikhq> Yes.
01:26:50 <pikhq> My locale is en_US.UTF-8.
01:26:55 -!- elliott_ has joined.
01:26:57 <elliott> こんにちは、世界!
01:27:08 <elliott> Still showing as "$3$s$K$A$O!"@$3&!*".
01:27:21 <pikhq> ... That is *very* strange.
01:27:36 * elliott reads the utf-8 patch to figure it out
01:27:43 <elliott> pikhq: I think that possibly my Terminus font specification is insufficiently specific.
01:27:47 -!- elliott_ has quit (Client Quit).
01:27:57 <elliott> "-*-terminus-medium-*-*-*-16-*-*-*-*-*-*-*"
01:28:10 <elliott> _Does_ Terminus do UTF-8?
01:28:21 <elliott> Japanese in particular.
01:28:34 <elliott> Terminus Font is a clean, fixed width bitmap font, designed for long (8 and more hours per day) work with computers. Version 4.32 contains 850 characters, covers about 120 language sets and supports ISO8859-1/2/5/7/9/13/15/16, Paratype-PT154/PT254, KOI8-R/U/E/F, Esperanto, many IBM, Windows and Macintosh code pages, as well as the IBM VGA, vt100 and xterm pseudographic characters.
01:28:36 <elliott> Ah...
01:28:42 <elliott> pikhq: Plz2be naming X11 font that does UTF-8.
01:28:49 <elliott> (Monospaced)
01:29:15 <pikhq> elliott: That looks like valid ISO-2022-JP, BTW. Which is, uh, WTF.
01:29:22 <elliott> X-D
01:29:27 <elliott> Maybe irssi is fucking it up.
01:29:29 <elliott> I'll try NETHACK
01:29:29 <elliott> erm
01:29:31 <elliott> NETCAT
01:29:48 -!- damnwalk has joined.
01:29:53 <elliott> こんにちは、世界!
01:29:57 <elliott> Does the same thing :P
01:30:00 -!- damnwalk has quit (Remote host closed the connection).
01:30:05 <elliott> I blame Terminus.
01:32:39 <elliott> pikhq: NAEM FONT
01:33:38 <pikhq> I DUNNO.
01:33:49 <pikhq> FREETYPE FONT SELECTION WORKS.
01:36:09 <elliott> pikhq: ST DOESN'T SUPPORT XFT, OBVIOUSLY
01:37:42 <elliott> pikhq: IT'S LIKE YOU DON'T KNOW ANYTHING ABOUT DUCKS
01:38:22 <elliott> > zip [0..] [1,2,3]
01:38:23 <lambdabot> [(0,1),(1,2),(2,3)]
01:39:50 <Lymia> > printStrLn "Haskell!"
01:39:51 <lambdabot> Not in scope: `printStrLn'
01:40:01 <Lymia> > putStrLn "Haskell!"
01:40:02 <lambdabot> <IO ()>
01:40:08 <Lymia> Yep, Haskell.
01:40:09 <Lymia> :s
01:40:19 <Lymia> > main = printStrLn "Haskell!"
01:40:20 <lambdabot> <no location info>: parse error on input `='
01:42:33 <elliott> Lymia: It won't let you do that.
01:42:38 <elliott> !haskell putStrLn "blah"
01:42:44 <elliott> EgoBot does, but lambdabot is generally more useful :P
01:42:50 <EgoBot> blah
01:42:57 <Lymia> So.
01:43:01 <Lymia> Let me get it straight.
01:43:03 <elliott> `cat bin/rungcc
01:43:04 <HackEgo> #!/usr/bin/env bash \ name=$(mktemp) \ tail -n +1 "$1" | gcc -x c -O2 -std=gnu99 /dev/stdin -o "$name" || exit $? \ shift \ "$name" "$@"; st=$? \ rm -f "$name" 2>/dev/null \ exit $? \
01:43:14 <elliott> `run sed -i 's/-O2/-w -O2/' bin/rungcc
01:43:14 <HackEgo> No output.
01:43:19 <elliott> `ls /dev
01:43:21 <HackEgo> null
01:43:23 <elliott> Gregor: When we gonna get stdout :P
01:43:25 <Lymia> lambdabot is too lazy to execute IO actions.
01:43:25 <Lymia> :(
01:43:34 <elliott> Lymia: No, it just isn't stupid enough to let you do IO :P
01:43:43 <Lymia> :p
01:48:24 -!- augur has joined.
01:49:45 <pikhq> EgoBot is smart enough to *get away* with letting you do IO.
01:57:09 <elliott> I wish cpressey would come back.
01:59:26 <elliott> SEGFAULTS
01:59:26 <elliott> OH YEAH
01:59:28 <elliott> THEY'RE THE BEST
01:59:35 <elliott> Meanwhile
01:59:39 <elliott> quo_0:
01:59:39 <elliott> ({ struct obj_quot *q = malloc(sizeof(struct obj_quot) + 0); q->tag = 0; q->next = ((void *)0); q->label = &&quo_1; q->str_len = 0; memcpy(q->str, "", 0); push_obj((struct obj_common *) q); }); eval((((struct obj_quot *)stack->top)->label)); ({ struct obj_quot *q = malloc(sizeof(struct obj_quot) + 0); q->tag = 0; q->next = ((void *)0); q->label = &&quo_1; q->str_len = 0; memcpy(q->str, "", 0); push_obj((struct obj_common *) q); }); goto *(((struc
01:59:40 <elliott> t obj_quot *)stack->top)->label);
01:59:40 <elliott> return;
01:59:48 <elliott> pikhq: C TO RIVAL YOUR LAMBDAS
02:00:04 <pikhq> o.O
02:00:33 <elliott> pikhq: (That's the expansion of "PUSH(1) INCLUDE PUSH(2) TAIL_INCLUDE".)
02:01:17 <pikhq> I'm afraid my pants have turned somewhat brown. Excuse me as I go to rectify.
02:01:59 <Lymia> elliott, do we have a Cbot?
02:02:07 <elliott> !c printf("poop\n")
02:02:11 <elliott> pikhq: Brown with APPRECIATION.
02:02:13 <EgoBot> poop
02:02:25 <elliott> !asm I'm not gonna look up syscalls at this hour
02:02:26 <EgoBot> Does not compile.
02:02:35 <elliott> !perl print "donkey\n"
02:02:39 <EgoBot> donkey
02:02:45 <elliott> !python print 'x'
02:02:53 <elliott> Nope :P
02:02:58 <elliott> `run python -c 'print "x"'
02:02:59 <HackEgo> x
02:06:01 <Sgeo> Maybe I should learn Objective-J
02:06:13 <Lymia> !c int a[2]; &(a+2) = 0; return;
02:06:14 <EgoBot> Does not compile.
02:06:25 <Lymia> !c int main(){int a[2]; &(a+2) = 0; return 0;}
02:06:26 <EgoBot> Does not compile.
02:06:39 <Lymia> !c int main(){int a[2]; *(&a+2) = 0; return 0;}
02:06:40 <EgoBot> Does not compile.
02:06:42 <Lymia> :<
02:06:57 <Lymia> !c int a[2]; *(&a+2) = 0; return 0;
02:06:58 <elliott> I like how helpful its error messages are.
02:06:58 <EgoBot> Does not compile.
02:07:02 <Lymia> :<
02:07:23 <Lymia> !c int a[2];
02:08:00 <Lymia> !c char a[2]; strcpy(a,"buffer overflow weeee");
02:08:22 <Lymia> !c void a(){char a[2]; strcpy(a,"buffer overflow weeee");} a();
02:08:23 <EgoBot> ./interps/gcccomp/gcccomp: line 52: 7452 Segmentation fault /tmp/compiled.$$
02:09:38 <elliott> `addquote <oerjan> (the former is a very deep theorem, i'd have had to read the whole book to understand it, so i didn't.)
02:09:38 <HackEgo> 291) <oerjan> (the former is a very deep theorem, i'd have had to read the whole book to understand it, so i didn't.)
02:10:00 <Lymia> !c void b(){printf("Hello, world!");}void a(){int a[2]; a[3] = b;} a();
02:10:13 <Lymia> !c void b(){printf("Hello, world!");} void a(){int a[2]; a[2] = b;} a();
02:10:20 <Lymia> !c void b(){printf("Hello, world!");} void a(){int a[2]; a[4] = b;} a();
02:10:21 <EgoBot> ./interps/gcccomp/gcccomp: line 52: 7619 Segmentation fault /tmp/compiled.$$
02:10:27 <elliott> you can define an explicit main if you want
02:16:49 <Lymia> !c void b(){printf("Hello, world!");}void a(){int a[2]; a[4] = b;} a();
02:16:51 <EgoBot> ./interps/gcccomp/gcccomp: line 52: 7704 Segmentation fault /tmp/compiled.$$
02:16:57 <Lymia> :s
02:20:55 <elliott> Oh, durrr!
02:21:07 <elliott> Hmm, I need to handle that.
02:21:37 <elliott> haha it works
02:21:38 <elliott> awesome
02:22:13 <Lymia> What works?
02:22:28 <elliott> this
02:22:59 <elliott> Lymia: to be precise: http://sprunge.us/XBjf
02:23:06 <elliott> the beginning of unad
02:23:08 <elliott> *beginnings
02:23:11 <elliott> the ugly, ugly beginnings
02:23:11 <Lymia> Haskell?
02:23:14 <Lymia> And...
02:23:14 <Lymia> C?
02:24:45 <elliott> Lymia: Yes.
02:24:51 <elliott> Lymia: The big chunks of C are actually quoted.
02:25:07 <elliott> Were I a sane man, I'd store them in a separate file, and use Template Haskell to read in those files at compile-time.
02:25:12 <elliott> But I am not sane, so the C is embedded instead.
02:25:39 <elliott> This means that I have to edit the C parts using fundamental-mode in Emacs since c-mode thinks all the 's at the end of the Haskell function names are single quotes and so treats the entire block as quoted. Quite messy.
02:26:47 <Lymia> If we were sane, we wouldn't have these languages around.
02:26:48 <Lymia> =p
02:28:28 <elliott> http://catseye.tc/projects/burro/doc/burro.html More language specifications should be formally defined by being a literate Haskell program.
02:28:49 <elliott> Although the "Inductive Definition of a Burro Program" section needs closer coupling of the text and the Haskell.
02:34:21 <elliott> 18:12:21 <Luyt> Maybe this esoteric language thing is more like a hobby or something?
02:34:21 <elliott> 18:12:53 <Luyt> I wouldn't write my company's production code in Piet!
02:35:00 <elliott> 19:17:14 <uorygl> Gregor: you are hereby expelled for truancy. Get out.
02:35:00 <elliott> 19:17:34 <Gregor> Ooooh, truancy.
02:36:01 <elliott> hmm, maybe I'll make an executable specification for Underload
02:37:57 <elliott> Gregor: What was your rebuttal to Eightebed again?
02:38:15 <Lymia> Writing production code in Piet?
02:38:16 <Lymia> Sounds nice.
02:38:21 <Lymia> Good way to impress your bosses.
02:44:56 <elliott> grr, why is Emacs such a bad Emacs :(
02:46:21 <Gregor> elliott: Something along the lines of "OK, so you don't use a garbage collector because you've only put 75% of a garbage collector in it ... TECHNICALLY that fits the requirement, but it's pretty silly"
02:46:39 <elliott> Gregor: There is nothing in there that collects garbage, or even notes things as being garbage.
02:46:53 <elliott> Gregor: Are you saying that looping through a set of objects and flipping bits on them is "75% of a garbage collector"? :p
02:47:28 <Gregor> If you have a mark-and-swap garbage collector, that's about 99.9% of a garbage collector.
02:47:33 <Gregor> I was being generous.
02:48:01 <elliott> "(Starting with the "root set" of the program's global variables, we traverse all memory blocks reachable by following valid pointers from them, looking for pointers which match the pointer about to be freed; any we find, we set their valid flags to false.) After freeing a pointer, we set its valid to false."
02:48:13 <elliott> Gregor: OK, so basically you consider "traverse object space" to be 75% of a GC?
02:48:34 <Gregor> There really isn't very much to a GC, and for some styles of GC that's pretty much all there is.
02:48:36 <elliott> Gregor: Sure, it's very similar to the _mark_ phase, but that's because the mark phase of a mark-and-sweep GC is incredibly fucking simple :P
02:48:41 <elliott> It's a ... loop.
02:48:42 <Gregor> Mark-and-SWAP
02:48:59 <Gregor> In a mark and swap garbage collector, there is no sweep phase. The "sweep" phase is updating two pointers.
02:49:11 <elliott> If it divided objects into generations and shit maybe I'd see your point, but I can think of 100 GC-less languages that loop through object space at points, and they don't have 75% of a GC :P
02:49:23 <elliott> Gregor: Wat.
02:49:36 <elliott> Best GC: Mark-and-mark. It never frees, it can just tell you statistics about how much memory it's wasting.
02:49:57 <Gregor> Mark-and-sweep is dead, non-shitty mark-and-whatever garbage collectors keep both free-lists and allocated-lists, then to "sweep" they just push the remaining old allocated list onto the free list.
02:50:17 <elliott> Gregor: So hey, does Fythe (and thus GGGGGGGGGGC I guess) implement my (ok, not mine) incredibly simple mark-and-sweep GC design that makes GC not block the program at all? :P
02:50:35 <Gregor> No, it's a copying generational collector.
02:50:43 <elliott> Oh yeah :P
02:50:52 <elliott> I have no idea how you'd do that for a generational GC.
02:50:55 <elliott> Actually I doubt it's possible.
02:50:59 <elliott> THIS IS WHY MARK AND SWEEP IS AWESOME, GUYS
02:52:08 <Gregor> Anyway, I'm not arguing that ais didn't win the argument, in fact his language does not have a GC, but I still feel like the language that resulted has proved my point.
02:52:54 <Lymia> Let's play 20 questions.
02:53:00 <elliott> Gregor: ...ais?
02:53:05 <Gregor> Errr
02:53:07 <Gregor> Why did I think ais X-P
02:53:09 <Gregor> cpressey
02:53:14 <elliott> Because you hate cpressey, obviously.
02:53:26 <elliott> Gregor: It proved your point as far as *practical* languages go... but, err, look at the channel you're in, dude :P
02:53:41 <elliott> If we rephrase
02:53:41 <elliott> A C-like language which provides a true explicit free() cannot be safe. (By "true" I mean that you can get that memory back in a later malloc().) To be safe a language must either never free (which is bad) or be GC'd. [C-like languages being] imperative languages with pointers at arbitrary data, where safety is defined as not seeing that data as a different type.
02:53:43 <elliott> as
02:54:07 <elliott> A C-like language which provides a true explicit free() cannot be safe. (By "true" I mean that you can get that memory back in a later malloc().) To be safe a language must either never free (which is bad) or traverse the object space as part of memory management. [C-like languages being] imperative languages with pointers at arbitrary data, where safety is defined as not seeing that data as a different type.
02:54:11 <elliott> then you'd win.
02:54:30 <Gregor> Yup.
02:54:33 <Gregor> I just wasn't specific enough :P
02:54:41 <elliott> BUT YOU DIDN'T, AND SO THE GLORY AND EVERLASTING FAME TO GO CPRESSEY
02:54:47 <elliott> This is what history teaches us, people.
02:54:55 <Gregor> Luckily, it's just #esoteric glory and #esoteric everlasting fame :P
02:56:32 <elliott> Gregor: No, GLOBAL.
02:56:37 <elliott> Haven't you WATCHED the NEWS LATELY.
02:57:02 <elliott> Now how do I make pandoc output as HTML, not xHTML.
02:57:03 <elliott> *XHTML.
03:02:13 <elliott> wow:
03:02:14 <elliott> I am currently using an iPod Touch. When I zoom in on the snowman on your page, my device freezes and causes other glitches afterward. Was this meant to happen, or is it a problem on my side?--72.18.49.91 02:46, 4 February 2011 (UTC)
03:02:21 <elliott> MY SNOWMAN CRASHES PEOPLE
03:23:36 <Gregor> elliott: wtf?
03:23:45 <elliott> Gregor: Yeah X-D
03:23:51 <Gregor> Context?
03:23:54 <elliott> Gregor: If you don't understand, see http://esolangs.org/wiki/User:Ehird
03:24:06 <elliott> (And click "edit" to see the vomit.)
03:24:16 <Gregor> GOD DAMN IT MY BROWSER JUST CRASHED
03:24:28 <elliott> Gregor: ...Seriously?
03:24:36 <Gregor> No :P
03:26:17 <Gregor> D'awwwww
03:26:33 <Gregor> Android doesn't crash or go crazy-slow or anything, but it doesn't have the snowman glyph so it's just a box on a gradient :(
03:27:00 <elliott> Gregor: LAME
03:27:51 <elliott> I don't think Pandoc will be able to understand this Literate Haskell.
03:28:14 -!- copumpkin has quit (Ping timeout: 265 seconds).
03:28:31 <elliott> INDEED
03:28:40 -!- copumpkin has joined.
03:30:26 <Gregor> elliott: I think it's time for "Number of 'of the day's of the day (of the day)"
03:30:32 <elliott> Gregor: X-D
03:31:29 <elliott> Ugh, getting text and a literate program to appear in table cells next to each other is... nearly impossible.
03:31:38 <elliott> (Yes, I do want to match up my English text and code!)
03:32:55 <Lymia> Why are we writing literate programs?
03:33:05 <Lymia> Write literate Brainfuck.
03:33:05 <elliott> Lymia: Executable Underload specification.
03:41:39 <elliott> 13:41:28 <scarf> AnMaster: you start as Yoshi, obviously
03:41:39 <elliott> [...]
03:41:39 <elliott> 13:42:03 <scarf> if it was a straight port, it wouldn't have sold as well as a port with some extra levels
03:41:39 <elliott> 13:42:07 <AnMaster> scarf, s/enhanced/totally wrecked/
03:41:46 <elliott> STARTING WITH A DIFFERENT CHARACTER = RUINED FOREVER
03:42:55 <Gregor> Nobody likes Yoshi.
03:43:08 <Gregor> Yoshi is into trannies, and that's totally not cool
03:43:12 -!- Tabarnaco has joined.
03:44:01 <Tabarnaco> hey guys how about that z80 assembly~~~~~~
03:44:46 <Gregor> We're against technology in this channel. We believe that the only True Assembly is the Assembly of the Earth.
03:45:07 <Tabarnaco> :(
03:45:16 <Tabarnaco> imo it's pretty close
03:45:41 <pikhq> However, the lambda calculus is entirely acceptable.
03:47:51 -!- azaq231 has joined.
03:48:05 -!- azaq231 has quit (Changing host).
03:48:05 -!- azaq231 has joined.
03:48:53 <elliott> Tabarnaco: hi
03:49:02 <elliott> Gregor is just some homeless guy who won't go away, disregard him
03:49:16 <Gregor> Homeless?
03:49:24 <Gregor> My home is the Sky.
03:49:28 <elliott> Of Life.
03:49:34 <Gregor> My home is The Earth.
03:49:39 <Gregor> My home is Nature.
03:49:43 * Gregor humms
03:49:48 <elliott> Tabarnaco: Isn't Z80 relatively *non*-esoteric as CPU architectures go? :)
03:49:59 <Lymia> !fyb i-love-you [@+++++++++++++++!]
03:50:02 <Tabarnaco> as far as i know there's no assembly or z80 channel
03:50:09 -!- azaq23 has quit (Ping timeout: 240 seconds).
03:50:18 <Lymia> If this dosn't get a 0.
03:50:20 <Lymia> Something is wrong.
03:50:21 <EgoBot> Score for Lymia_i-love-you: 4.9
03:50:24 <Lymia> ...
03:50:27 <elliott> There's almost certainly some kind of assembly channel; Z80 maybe not on freenode but definitely elsewhere.
03:50:30 <elliott> But hi.
03:50:47 <Tabarnaco> well i checked z80 and it doesn't exist so i don't want to browse through the list of channels
03:50:54 <Lymia> Gregor.
03:50:58 <Lymia> Why is my program winning.
03:50:59 <Tabarnaco> either way i think i forgot my calculator somewhere
03:51:09 <Tabarnaco> so i can't get my rom onto the computer to debug
03:51:25 <Gregor> Lymia: Some programs will kill themselves if left unchallenged.
03:51:43 <Lymia> Gregor, this program kills itself.
03:51:50 <Lymia> That's what it's meant to do.
03:51:53 <Gregor> Lymia: Not if it stops you first.
03:52:05 <Lymia> !fyb i-love-you :@+[...............................................................................................................]*;[@+++++++++++++++!]
03:52:07 <EgoBot> Score for Lymia_i-love-you: 5.1
03:52:10 <Lymia> /
03:52:12 <Lymia> ...
03:53:10 * azaq231 considers the sort-of trolling halfway commenced
03:53:31 <elliott> azaq231: wait what
03:53:39 <elliott> who are you, anyway?
03:53:46 <Gregor> azaq231: Amazing how you've accomplished that without saying anything :P
03:54:15 <azaq231> I sent the assembly guy here
03:54:21 <elliott> OH WE'RE SO TROLLED
03:54:29 <elliott> Tabarnaco: This channel is about esoteric programming languages, btw :P
03:54:32 <elliott> azaq231: What did you tell him X-D
03:54:37 <Tabarnaco> NO SHIT
03:54:47 <Tabarnaco> assembly is pretty esoteric nowadays
03:55:02 <Tabarnaco> and if i can't find an answer to my question on google it has to be esoteric
03:56:06 <elliott> w
03:56:08 <elliott> *no w
03:56:23 <elliott> Tabarnaco: well I don't know Z80, so I'm going back to my Haskell :P
03:56:35 <Tabarnaco> see
03:56:36 <Tabarnaco> esoteric
03:56:49 <azaq231> Everybody has to start low, using appropriate opportunities, I guess. Actually this was the first place in which the question didn't seem so offtopic and which contains people who might know the answer that popped into my head
03:56:51 <elliott> Har har har har har
03:57:09 <elliott> azaq231: I just hope you realise that the punishment for bringing people here is death by fire.
03:58:01 <Tabarnaco> don't worry i don't give a fuck about you so there's no way i'm staying here longer than necessary to obtain an answer, regardless of the method employed for it
03:58:27 <elliott> Wow, you sound like a really nice, happy chum.
03:59:41 <Tabarnaco> thx
04:00:08 <pikhq> niwanoniwanihaniwanoniwatorihaniwakaniwaniwotahèta.
04:00:17 <elliott> Tabarnaco: You realise nobody in here knows the answer to your question. Also you haven't told us what it is.
04:00:40 <Tabarnaco> well since nobody seems to know z80 assembly in the first place i don't see the point of it...
04:00:52 <Tabarnaco> it's just data overlap
04:01:48 <Tabarnaco> it's ok though i realise that you're too stupid to know how to fix it so i'll check somewhere else
04:02:04 <elliott> azaq231: lol where did this guy come from, efnet?
04:02:13 <Tabarnaco> you're so trollable
04:02:20 <Tabarnaco> where are you from
04:02:22 <Tabarnaco> furnet?
04:02:40 <pikhq> Tabarnaco: I'm afraid þou art ſtupid.
04:03:08 <elliott> "trollable"?
04:03:18 <elliott> don't i have to get angry or at least annoyed for that?
04:03:28 <azaq231> elliott: #Reddit
04:04:05 <elliott> azaq231: psht, you bring this guy in here on my reddit birthday! :-p
04:04:12 * elliott wears party hat
04:04:41 <Tabarnaco> no, you shouldn't get angry or annoyed
04:04:46 <Tabarnaco> you should surpass my trolling
04:04:47 <Tabarnaco> with your own
04:05:23 <elliott> Vorpal: what's the befunge terminology for "second element of stack again"?
04:17:44 -!- poiuy_qwert has joined.
04:24:37 -!- azaq23 has joined.
04:26:01 -!- azaq231 has quit (Ping timeout: 240 seconds).
04:29:58 <elliott> TODO: swap the arguments of this to take the program first ...
04:31:32 * Lymia hugs elliott <3
04:31:50 <elliott> YOU ARE DOING THAT TOO MUCH
04:31:57 <Lymia> I hug everybody
04:31:58 <Lymia> Alot.
04:32:00 <Lymia> No matter who they are.
04:32:01 <elliott> Clearly.
04:32:03 <Lymia> Or where they are.
04:32:06 * Lymia hugs Tabarnaco <3
04:32:07 <Lymia> See.
04:32:11 <elliott> But he's filthy.
04:33:02 <Tabarnaco> at least i don't get trolled by some random asshole who joins the channel
04:33:20 <elliott> what is it with people these days and not knowing what trolling means
04:33:26 <elliott> OR WAS THAT TEH TROLL
04:33:32 <elliott> sorry *trolle
04:34:10 <Tabarnaco> i agree, you don't see to get the definition
04:34:14 * quintopia hugs Lymia
04:34:21 <elliott> get a room
04:34:22 <quintopia> people who hug are cool
04:34:23 <Tabarnaco> maybe you should check wikipedia, but maybe it's not esoteric enough for you...
04:34:27 * Lymia hugs quintopia <3 <3
04:34:30 <Tabarnaco> seem not see
04:34:51 <Ilari> Haha... http://inetcore.com/project/ipv4ec/images/ipv4ec_iana_en.png
04:35:04 <Tabarnaco> time to create esoteropedia, with all sorts of esoteric definitions for ordinary words
04:35:59 <azaq23> that's called urbandictionary.com
04:36:20 <Tabarnaco> urbandic is accurate enough
04:36:36 <elliott> no it's not
04:36:59 * quintopia unhugs lymia
04:37:03 <Gregor> Ilari: Time to start the IPv6 exhaustion counter.
04:38:21 <Ilari> Predicting next IANA IPv6 allocation would be easier... :-)
04:38:23 <quintopia> Gregor: goal: set up a box and a network so reliable it will still be running the day IPv6 runs dry :P
04:38:30 <azaq23> I'm still a little bit suprised that I was asked who I am in some freenode irc channel while #haskell-blah shortly talked about the familiarity with my person
04:38:42 <Ilari> (last was in 2006).
04:39:35 <Ilari> IIRC, the most depleted RIR is at 6% of a block used...
04:39:51 <elliott> azaq23: I can't parse that
04:39:55 <elliott> well, the bit after "while"
04:40:03 <Gregor> Ilari: Spoken like a non-statistician. You can ALWAYS estimate.
04:40:22 <elliott> ALWAYS
04:41:03 -!- Lymia_ has joined.
04:41:17 <Sgeo> estimate the day I snap and injure elliott
04:41:26 -!- Lymia has quit (Disconnected by services).
04:41:28 -!- Lymia_ has changed nick to Lymia.
04:41:36 -!- Lymia has quit (Changing host).
04:41:36 -!- Lymia has joined.
04:43:18 <azaq23> elliott: copumpkin and tswett briefly mentioned that they are not familiar with me. I didn't know that I have to get a member card for certain channels.
04:43:29 <copumpkin> you don't
04:43:44 <elliott> azaq23: hmm, but they're all #esotericers!
04:43:45 <elliott> :p
04:44:10 <Gregor> Pfff
04:44:18 <Gregor> copumpkin is too new to be a TRUE #esotericer.
04:44:48 <Gregor> He hasn't yet experience The Ritual.
04:45:54 <elliott> Yes.
04:45:59 <elliott> He has not yet been subjected to... The Raping.
04:46:01 <elliott> Of the Soul.
04:46:13 <Ilari> LACNIC: 4 322 885 928 /48s used out of total of 68 753 031 168 (6.3% depletion).
04:46:45 <Lymia> That is ipv6?
04:46:53 <Gregor> Ilari: And when was the first allocation?
04:47:11 <Gregor> Lymia: That's of only a particular allocation OF IPv6.
04:47:19 <Lymia> I know.
04:47:40 <elliott> 4 billion /48s... nice :P
04:48:04 -!- elliott has set topic: Tetris hermeneutics | http://208.78.103.223/esoteric/ | http://tunes.org/~nef/logs/esoteric/?C=M;O=D.
04:49:15 <Ilari> Yes. But there's one huge allocation (apparently to NIR of Brazil). Discounting that (as that would get futher allocated), there are 27 918 632 other /48s.
04:49:42 <elliott> GOD DAMMIT BRAZIL
04:49:44 <elliott> WHY YOU GOTTA BE LIKE THAT
04:50:40 <Ilari> BTW: The IPv6 allocations of entiere world would be about /14.84
04:50:48 <Ilari> So /16 is fscking huge.
04:52:44 <elliott> Ilari: Is that /16 relative to the currently allowed unicast blocks?
04:52:58 <Ilari> Relative to whole IPv6 address space.
04:53:54 <Ilari> Assuming advertisment ratio on order of 20%, the number of /48s actually allocated to end users from that block is on order of 25 000 000.
04:54:15 <Ilari> Oops, 12.5M, not 25M.
04:54:37 <Ilari> So that block is maybe 1% used...
04:54:38 <Gregor> Ilari: You didn't answer, when was the first allocation in this block?
04:54:50 <Ilari> On what block?
04:55:12 <Gregor> LACNIC, the oh-so-6.3-percent-depleted one we've been talking about.
04:56:17 <Ilari> Seems like first allocations were in 2003.
04:56:57 <Gregor> And how big is it? A /16?
04:57:16 <Ilari> The huge /16 was allocated in 2008...
04:58:04 <pikhq> I suppose Brazil wanted to never run out ever.
04:58:06 <elliott> WHAT WAS THE FIRST IPv6 ALLOCATION _EVER_
04:59:07 <variable> elliott, the reserved private IPs?
04:59:12 <elliott> THAT'S NOT AN ALLOCATION
04:59:24 <variable> it was to RIPE
04:59:32 <Ilari> Assuming 1% usage of that huge block (and that seems high), the real depletion percentage would be 0.10%
04:59:46 <pikhq> elliott: The first IPv6 allocation would be 2000::/3, to IANA. :P
04:59:54 <elliott> WHEN WAS THAT
05:00:06 <variable> pikhq, you sure? I thought RIPE got the first allocation?
05:00:09 <variable> elliott, STOP SHOUTING
05:00:12 <elliott> NO
05:00:12 <elliott> I AM
05:00:13 <elliott> TOO
05:00:14 <elliott> SERIOUS
05:00:15 <elliott> NOT TO SHOUT
05:00:18 <pikhq> variable: I'm being silly.
05:00:20 <Gregor> Also he is SPARTA
05:00:28 <elliott> Gregor: ONLY SOMEWHAT SPART
05:00:29 <elliott> *SPARTA
05:00:37 <variable> pikhq, I'm dead tired right now - so I'm not thinking)
05:00:45 <Gregor> elliott: I forget what that's from :P
05:01:01 <elliott> Gregor: Chrome build system thing.
05:01:08 <Gregor> Ohyeah 8-D
05:01:33 <Ilari> This was apparently the first IPv6 allocation from RIR: arin|US|ipv6|2001:0400::|32|19990803|allocated ... 3rd August 1999.
05:01:43 <variable> elliott, http://www.sixxs.net/tools/grh/dfp/ -> random stats - I'm sure you you could find it somewhere there?
05:01:48 <variable> Ilari, link?
05:01:55 <elliott> Ilari: Did allocations become "standard" after that or was that just an "initial" thing with a delay before actual allocations?
05:02:03 <elliott> I'm curious as to when IPv6 started actually "existing".
05:02:06 <elliott> ""
05:02:11 <variable> elliott, allocations are requested
05:02:11 <elliott> variable: Ew, SixXS. :)
05:02:14 <elliott> variable: I know that.
05:02:26 <elliott> I just mean that e.g. imagine if some initial allocations were made right when IPv6 was being finalised.
05:02:27 <variable> elliott, erm - I'm dead tired to do too much thinking :-\
05:02:36 <elliott> It could be quite a while before more allocations came in after that.
05:02:41 <elliott> Because of infrastructure being deployed and whatnot.
05:02:47 <variable> and no - the initial IPv6 was finalized way before it was allocated
05:02:51 <elliott> Right.
05:03:01 <variable> but lots of related protocalls were finalized after allocation started
05:03:12 <elliott> http://en.wikipedia.org/wiki/World_IPv6_Day Oh man, this is gonna be so disapointing :P
05:03:15 <elliott> *disappointing
05:03:24 <variable> elliott, its just a test day - nothing major will occur
05:03:38 <elliott> variable: Yeah, and the result will be that absolutely frickin' no-one can access the sites via IPv6 :P
05:03:46 <Ilari> IPv6 RIR system was apparently created 1st July 1999. Also, 1999 was the year IPv6 was considered production-ready.
05:04:03 <elliott> 1999... and here we are, 12 years later.
05:04:03 <variable> google found that 1% of requests failed with IPv6 enabled even if there were using an IPv4 only stack. This is just a similar test on a larger scale
05:04:09 <elliott> Shit still ain't workin'.
05:04:25 <variable> they don't care if people use IPv6 really
05:04:36 <variable> or - not much
05:04:56 <variable> (I'm on the IPv6-ops; dns-ops; NANOG lists btw)
05:04:57 -!- pikhq has quit (Ping timeout: 240 seconds).
05:05:00 -!- pikhq_ has joined.
05:05:10 <elliott> Looks like 6bone started at the same time that Linux got alpha IPv6 support, 1996.
05:05:11 <Ilari> BTW: I have seen interesting IPv6 failure modes... Including ones leading to WSOD with NO fallback.
05:05:54 <elliott> lol: http://lists.cluenet.de/pipermail/ipv6-ops/2011-February/004807.html
05:06:13 <variable> Nice event. No IPv6 on the streaming servers. FAIL. --> lulz
05:06:31 <elliott> But hey, that's all right.
05:06:35 -!- pikhq_ has changed nick to pikhq.
05:06:36 <elliott> After all, we're all switching to IPv8, right?
05:06:37 <elliott> http://www.ietf.org/mail-archive/web/ietf/current/msg23021.html
05:06:49 <variable> Ilari, MS Windows is not supported on a IPv4 only stack :-)
05:06:55 <Ilari> You only get fallback if the connection fails to establish. If the connection establishes and things go wrong after that...
05:06:56 <elliott> More crazy: http://mailman.apnic.net/mailing-lists/apnic-talk/archive/1998/02/msg00030.html
05:07:05 <elliott> More crazy: http://www.icann.org/en/comments-mail/comment-aso/msg00010.html
05:07:12 <elliott> More crazy: http://www.ietf.org/mail-archive/web/ietf/current/msg09777.html
05:07:15 <variable> Ilari, exactly. That is why the IPV6 test day is occuring
05:07:23 <elliott> EXCUSE ME I AM LINKING YOU CRAZY APPRECIATE
05:07:28 <elliott> :p
05:07:47 <variable> elliott, I've already read those :-)
05:07:56 <elliott> Yeah, but that's because you're LAME or something.
05:07:58 <pikhq> variable: And that may happen *after* the first RIR depletion.
05:08:02 <pikhq> Which is so very fail.
05:08:02 <elliott> variable: But have you read http://thehiawathatriad.org/home/?page_id=1780?
05:08:08 <elliott> If Web 4.0 containing terminals of IPv7 is to prove a reliable and generally accessible tool to traverse the mirror boundary, it should “boot up”. In addition, if interpretation of impressions recited in this website are to be used, they must not only be relevant, but also be elements of a coherent or bridged reality. In this context, it might be useful to review early work in Phase II for possible experimental refinement. For the sake of a
05:08:09 <elliott> rgument, we will use one Phase II statement (pg. 13) and another from Schrodinger’s virus:
05:08:09 <elliott> From Phase II: “… is a potency whose actuality or form of realization is determined by the circumstances of the situation defining its purpose. For the sake of the text, it can be considered a platform of convenience in an abstract substratum of attributes rendering it otherwise uninhabitable. (page 9) ” and from Schrodinger’s virus; “A sense of a capability to, at any given moment, validate history of conversations and opinion verbaliz
05:08:10 <variable> elliott, because I care a lot about internet internals
05:08:13 <elliott> ed, written, or thought.”
05:08:50 <Ilari> Oh, there is network protocol with IP version id of 7.
05:08:50 <variable> pikhq, there won't ever really be a 0 point for the RIRs AFIK because of the reallocation policies. But the reserves will get too low to provide most requests (ie <100 addresses)
05:09:12 <elliott> Can you allocate a single address in IPv4? :D
05:09:19 <variable> elliott, no
05:09:31 <elliott> AWW
05:09:45 <elliott> That's a /4294967295 isn't it?
05:09:56 <elliott> Or, no...
05:10:00 <elliott> /31?
05:10:01 <pikhq> variable: "RIR depletion" here means that they're not capable of assigning outside of the reserved space.
05:10:02 <variable> elliott, its a /32
05:10:05 <elliott> hehe
05:10:05 <variable> sorry /31
05:10:08 <elliott> right
05:10:14 <Ilari> (it is easy to guess what IP version ids of IPv4 and IPv6 are).
05:10:25 <variable> pikhq, yes. I understand
05:10:33 <variable> Ilari, 42 and 5?
05:10:39 <variable> (in that order)
05:11:15 <Ilari> Earlier summary of packet exchange (dumped from A): A: SYN, B: SYN+ACK, A: ACK. A: Data 1-415. A: Data 1-415. B: ACK up to 415. B: Data 1209-1614. A: SACK 1,1209-1614. B: FIN+ACK. A: SACK 1,1209-1615. B: ACK up to 415. <connection hung>.
05:11:23 <elliott> Amazing how the development of IPv6 started in 1994... if you went back and time and asked them if they thought their protocol would stay largely unimplemented for 17 years, whaddya think they'd say?
05:11:30 <elliott> 17 years!
05:11:31 <variable> elliott, "yes"
05:11:37 <pikhq> elliott: "Fuck you!"
05:11:48 <variable> maybe not 17 -- but at least 15
05:11:51 <elliott> Mm.
05:11:56 <pikhq> ... Good God. If IPv6 adoption started in 1994, this would *never* have been a problem.
05:12:06 <elliott> pikhq: Impossible.
05:12:10 <elliott> The RFCs were only first published in 1996.
05:12:12 <elliott> And finalised in 1998.
05:12:18 <pikhq> elliott: I can dream, right?
05:12:19 * variable is away
05:12:26 <elliott> A few years ago I thought IPv6 supporters were a bit silly... it's hard to see depletion coming when you're so close to it or something.
05:13:01 * elliott loads kame.net, notes lack of dancing.
05:13:14 <elliott> "If you migrate to IPv6 HTTP, you'll be able to view the NON-MOSAIC DANCING KAME!"
05:13:15 * pikhq loads kame.net, notes the dancing
05:13:27 <elliott> pikhq: You're cheating, with a tunnel.
05:13:40 <pikhq> elliott: It's the closest I can get with US ISPs.
05:13:42 <Ilari> Or if IPv6 migration comitees would have started as early as Telestra's Y2K comitee...
05:13:48 <elliott> I could go to http://tunnelbroker.net/ right now and get me a nice IPv6 tunnel. But will I? No.
05:13:52 <variable> I still build applications (like curl) with IPv6 off :-)
05:13:55 <elliott> Instead I'll switch to http://www.bogons.net/. Native IPv6! :p
05:14:04 <pikhq> Well, if we went to Comcrap, I could at least get IPv6...
05:14:05 <elliott> OK, so they might actually just do IPv6 with a tunnel.
05:14:17 <elliott> Because NOBODY in the UK has the infrastructure for IPv6.
05:14:33 <elliott> Hmm.
05:14:34 <elliott> http://www.bogons.net/network.shtml
05:14:43 <elliott> Someone more knowledgeable than me tell me what that implies about Bogons. :p
05:14:52 <elliott> "Our network is fully multicast and IPv6 enabled, ensuring that we stay at the fore-front of Internet Protocol futures.
05:14:53 <elliott> "
05:14:56 <elliott> I guess it might be native then.
05:14:57 <elliott> *futures."
05:16:34 <elliott> Bogons' prices aren't so nice though... their normal ADSL is cheap enough, and although their cheapest 20Mbps download plan is the same monthly price, it comes with a 200 gig usage limit (it's business service)...
05:16:41 <elliott> Although that's LLU, so I don't even know if it's available here.
05:16:48 <Ilari> "IPv7" is TP/IX.
05:17:26 <elliott> BE is a lot cheaper, but don't offer IPv6 afaik.
05:17:50 <elliott> In August 2009 the UK ISP Andrews & Arnold entered into an agreement to use BE's core and LLU networks to augment BT's legacy 20CN and 21CN infrastructure.[8]
05:17:57 <elliott> I love how 21CN = 21st Century Network is OBSOLETE BY DESIGN.
05:18:20 <elliott> Started off 2005, 2006... BT hopes to transfer 50% of customers by 2008, AND
05:18:24 <elliott> NO SUPPORT FOR IPV6 WHATSOEVER.
05:18:29 <elliott> *Obsolete by design.*
05:18:32 <elliott> Ilari will now facepalm.
05:18:52 <elliott> Sorry: Approved in 2003.
05:18:58 <pikhq> Going to be fun watching them scramble.
05:19:14 <elliott> pikhq: Yeah... that's why "In August 2009 the UK ISP Andrews & Arnold entered into an agreement to use BE's core and LLU networks to augment BT's legacy 20CN and 21CN infrastructure.[8]"
05:19:17 <Ilari> IP version IDs 5, 7, 8 and 9 would likely be good candidates to recycle the identifiers (should more of those be needed)...
05:19:20 <elliott> Local loop unbundling is VERY common in the UK.
05:19:25 <elliott> See WP's LLU page for stats.
05:19:39 <elliott> Ilari: how many valid versions are there?
05:20:10 <Ilari> AFAIK, only 2 have been seen in the wild (4 and 6)...
05:20:27 <Ilari> And the field is 4 bits (16 values)
05:20:47 <Ilari> Total allocations: 6
05:21:13 <pikhq> Ilari: What, exactly, are 7, 8, and 9 used for?
05:21:57 <Ilari> Those _were_ used for prototyping other IPng candidates.
05:22:17 <elliott> the one that used 6 was destined to win :D
05:22:18 <elliott> bye
05:22:19 -!- elliott has quit (Quit: Leaving).
05:22:47 <pikhq> Huh. 2 and 3 are unassigned.
05:22:59 * pikhq found the registry.
05:23:59 <pikhq> Yeah, seems to me that 7-9 should be recycled.
05:24:38 <pikhq> The other IPng candidates suck.
05:31:46 <Ilari> Is that IPv7 stuff from Markov generator or ramblings of some crackpot?
05:35:42 -!- pikhq has quit (Ping timeout: 240 seconds).
05:35:57 -!- pikhq has joined.
05:38:25 * pikhq doesn't understand people some times
05:45:21 -!- pikhq has quit (Ping timeout: 240 seconds).
05:45:28 -!- pikhq has joined.
05:46:54 -!- oerjan has joined.
05:49:55 <oerjan> pikhq: Det er jo et helt vanlig problem.
05:51:47 <pikhq> oerjan: I don't understand that nonsense.
05:52:01 * oerjan whistles innocently.
05:52:03 <pikhq> I will instead respond by noting that beer is delicious.
05:52:28 -!- taotree has joined.
05:52:30 <oerjan> Indeed!
05:53:42 -!- Tabarnaco has left (?).
05:55:37 * Lymia pokes Gregor
05:55:52 <Lymia> How is (a{b}c{d}e)*3 treated in BF Joust
05:55:55 <Lymia> aaabcccdeee?
05:56:37 <oerjan> i don't think that's technically legal syntax
06:33:00 -!- hagb4rd has joined.
06:33:14 <hagb4rd> morgen!
06:33:58 <oerjan> morn!
06:40:47 <Sgeo> That music that I thought came from Hikaru no Go and that I thought I misremembered as being from elsewhere --- I just remember where I originally heard it, it is a distinct song
06:41:04 <Sgeo> ^^may not be correctly parsable
06:41:38 <Sgeo> Am I turning into zzo38?
06:41:42 -!- maximum_yellow has quit (Ping timeout: 264 seconds).
06:43:05 * oerjan parses it just fine
06:44:05 -!- Zuu_ has joined.
06:44:27 -!- Zuu has quit (Read error: Connection reset by peer).
06:44:39 -!- oerjan has quit (Quit: Reboot).
06:48:04 -!- oerjan has joined.
06:56:14 -!- Lymia_ has joined.
06:59:15 -!- Lymia has quit (Ping timeout: 240 seconds).
07:07:54 <oerjan> hmph checking on the command line, 56657856797822194249 is apparently too large for the factor program.
07:08:14 <oerjan> ...but i just need to check for primeness :(
07:09:40 <oerjan> ...that online prime checker cuts off the number during input...
07:10:51 -!- hagb4rd has quit (Ping timeout: 240 seconds).
07:11:00 <oerjan> thank you, wolfram alpha :)
07:14:14 <oerjan> and it _was_ prime, only two candidate lines left...
07:14:40 <oerjan> hm winghci conveniently keeps history from last session
07:21:04 -!- asiekierka has joined.
07:23:22 -!- Lymia_ has changed nick to Lymia.
07:23:23 -!- Lymia has quit (Changing host).
07:23:23 -!- Lymia has joined.
07:54:01 -!- TLUL has changed nick to TLUL|afk.
07:56:09 <oerjan> oh wtf i _missed_ 111 as an octal prime...
07:56:31 <oerjan> that's going to simplify a bit
07:58:57 <oerjan> Ilari: sheesh half my list for base 8 disappeared because i'd missed that... :D
07:59:25 <Lymia> oerjan, what are you looking for?
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:00:34 <oerjan> the set of primes in octal which have no other prime as a non-consecutive substring
08:03:48 -!- hagb4rd has joined.
08:04:18 <oerjan> Ilari: ok what i have now, modulo remaining errors: base 8: 2, 3, 5, 7, 111 (73), 141 (97), 161 (113), 401 (257), 661 (433), 4611 (2441), 6101 (3137), 6441 (3361), 60411 (24841), 444641 (149921), 444444441 (76695841), possibly some 8^(4k)+1 (k > 100).
08:05:14 <oerjan> er,
08:05:24 <oerjan> *er, *k > 25
08:07:54 -!- hiato has joined.
08:08:43 <oerjan> hm wolfram alpha says sum(1/log(8^(4k)+1)) diverges. i _think_ that means by the prime number theorem such a prime is likely to exist.
08:09:25 <oerjan> oh wait.
08:11:07 -!- hiato has quit (Client Quit).
08:11:17 -!- hiato has joined.
08:11:39 <oerjan> it _doesn't_ exist, by what http://en.wikipedia.org/wiki/Fermat_number says.
08:11:56 <oerjan> (it's 2^(12k)+1), and 12k is not a power of 2.)
08:18:43 <oerjan> that fact + the missing 111 means i didn't need most of the huge numbers i checked...
08:21:03 -!- hiato has changed nick to maximum_yellow.
08:25:00 -!- iamcal has joined.
08:27:16 -!- cal153 has quit (Ping timeout: 250 seconds).
08:29:07 -!- hagb4rd has quit (Ping timeout: 240 seconds).
08:37:29 -!- hagb4rd has joined.
08:50:54 -!- Lymia_ has joined.
08:51:28 -!- Lymia has quit (Disconnected by services).
08:51:29 -!- Lymia_ has changed nick to Lymia.
08:51:30 -!- Lymia has quit (Changing host).
08:51:30 -!- Lymia has joined.
09:15:11 -!- hagb4rd has quit (Ping timeout: 240 seconds).
09:19:50 -!- kar8nga has joined.
09:32:39 -!- MigoMipo has joined.
09:39:00 -!- FireFly has joined.
10:22:57 -!- hagb4rd has joined.
10:30:03 -!- FireFly has quit (Quit: swatted to death).
10:41:03 -!- hagb4rd has quit (Ping timeout: 240 seconds).
10:43:18 <Ilari> Latest unallocated file has 441 663 944 IPv4 addresses free. 381 895 112 after substracting reserved space.
10:47:25 <Ilari> APNIC latest data has 3.13 blocks (unallocated file says 54 807 808, which is 3.27 blocks)
10:50:03 <Ilari> APNIC extended stats file says 69 149 184 (52 371 968, 3.122 blocks after substracting reserved space).
10:50:04 -!- hagb4rd has joined.
10:51:57 <Ilari> Haha... This IPv4 exhaustion widget is clearly confused. Giving X-day (first RIR depletion now) in 2022...
10:53:47 -!- azaq23 has quit (Quit: Leaving.).
10:57:29 <Ilari> APNIC available blocks in extended file: 900x/24, 179x/23, 190x/22, 194x/21, 129x/20, 107x/19, 57x/18, 41x/17, 13x/16, 12x/15, 13x/14, 6x/13, 5x/12 and 3x/8.
11:00:32 <Ilari> The 3x/8 are the newly allocated blocks. Other than that, they had fragmented the space down to at most 1Mi address blocks...
11:04:44 -!- Lymia_ has joined.
11:07:39 -!- Cheery has joined.
11:07:55 -!- Lymia has quit (Ping timeout: 240 seconds).
11:19:01 -!- maximum_yellow has quit (Ping timeout: 272 seconds).
11:19:31 -!- cheater00 has quit (Ping timeout: 240 seconds).
11:20:21 -!- cheater00 has joined.
11:20:24 -!- maximum_yellow has joined.
11:20:43 -!- hagb4rd has quit (Ping timeout: 240 seconds).
11:33:10 -!- Zuu_ has changed nick to Zuu.
11:46:12 -!- Cheery has quit (Quit: Lost terminal).
11:53:26 -!- hagb4rd has joined.
11:57:38 -!- TLUL|afk has quit (Ping timeout: 245 seconds).
12:03:44 <Ilari> Hmm... What about splitting Keränen sequence so kth word is k symbols long...
12:05:06 <Ilari> That sequence has base of 'abcacdcbcdcadcdbdabacabadbabcbdbcbacbcdcacbabdabacadcbcdcacdbcbacbcdcacdcbdcdadbdcbca' under Z_4 mapped by 0 <-> a, 1 <-> b, 2 <-> c, 3 <-> d.
12:07:08 <Ilari> Which gives a, bc, acd, cbcd, cadcd, bdabac, abadbab, cbdbcba, cbcdcacb, abdabacad, cbcdcacdbc, bacbcdcacdc, bdcdadbdcbca, bcdbdadcdadba, ...
12:08:30 <Ilari> Those 13 first terms yield substrings: 'a' and 'bc'
12:11:52 <Ilari> And that's all, since no minimal substrings of length 5 or greater can exist.
12:13:11 <oerjan> <Ilari> For base 9: "2, 3, 5, 7, 14, 18, 41, 81, 601, 661, 1011, 1101, ...
12:13:39 <oerjan> darn there doesn't seem to be _any_ of length 5 or 6, making it blow up a lot
12:14:35 <oerjan> and it started so nicely by getting rid of the 4's and 8's
12:15:33 <Ilari> Far more difficult question: For set of strings over k symbols, what is the maximum size of minimal subset of substrings? Is it finite? Or is it unbounded? Finite for small bases but unbounded for large?
12:16:14 <oerjan> huh i'd been assuming it was infinite
12:16:21 <oerjan> but when you mention it...
12:16:30 <Ilari> Yeah, probably infinite.
12:16:36 <Ilari> (unbounded that is)
12:17:45 <Ilari> Actually, it is unbounded in any base: Consider the set that contains all binary strings at least k bits long. The size of set is 2^k which is unbounded as k increases.
12:18:00 <oerjan> ...of course it is. just take _all_ strings of length n for any base. this ... right
12:18:47 <Ilari> With 1 symbol, the size of minimal substring subset is always 0 (empty set) or 1 (for any non-empty set).
12:19:02 <Ilari> 2 or more symbols, it is unbounded.
12:24:44 <Vorpal> <Phantom_Hoover> AnMaster, Gregor, aloril, are we some kind of international conspiracy now? <-- what were you two doing over there.
12:44:54 -!- NiFkE has joined.
12:47:26 <hagb4rd> hello NiFkE.. feel comfortable not to fear to ask yoûr unholy questions on that dark matter
12:47:51 <hagb4rd> here
12:48:03 -!- rendy has joined.
12:48:19 -!- nddrylliog has joined.
12:48:46 <NiFkE> about the tool or about parsing? :p
12:49:25 <rendy> jhfdhjhjhf
12:50:13 <hagb4rd> ask, they'll soon make you whish not to been thrown into this hell ;)
12:50:37 * hagb4rd needs to do some shopping now
12:50:40 <hagb4rd> cu later
12:50:50 -!- hagb4rd has changed nick to hagb4rd|afk.
12:50:52 -!- nddrylliog has quit (Client Quit).
12:50:53 <rendy> :@
12:51:05 -!- nddrylliog1 has joined.
12:51:08 <NiFkE> [13:41] <NiFkE> does anyknow know a tool that could do this: let's say I have 2GB of memory. I open the tool and tell it: "hey, make sure my ram never drops below 1.66GB."
12:51:08 <NiFkE> [13:41] <NiFkE> so filling my ram with dummy shit
12:51:08 <NiFkE> [13:42] <NiFkE> memtest86 3.0 or 2.0 had this but I'm not sure
12:51:12 <NiFkE> [13:42] <NiFkE> because I need to simulate something which only occurs between ram usage x and y.
12:51:43 -!- nddrylliog1 has changed nick to nddrylliog.
12:53:11 -!- rendy has left (?).
13:05:41 -!- NiFkE has left (?).
13:26:16 -!- sftp has quit (Remote host closed the connection).
13:28:30 -!- sftp has joined.
13:46:59 -!- Phantom_Hoover has joined.
13:47:00 -!- Phantom_Hoover has quit (Client Quit).
13:47:21 -!- Phantom_Hoover has joined.
14:15:11 -!- impomatic has joined.
14:15:13 <impomatic> Hi :-)
14:15:53 <nddrylliog> ohai
14:29:33 -!- hagb4rd|afk has quit (Ping timeout: 272 seconds).
14:34:42 <Phantom_Hoover> There exist people who think C is a good first language.
14:34:44 <Phantom_Hoover> I despair.
14:36:02 <Vorpal> Phantom_Hoover, depends on your goal. Good first language for the lower layers of an OS perhaps? Though I would suspect it should be asm instead.
14:36:11 <Vorpal> but *not* for learning
14:36:21 <Phantom_Hoover> That's what I meant.
14:43:07 <Vorpal> Phantom_Hoover, this versioning scheme was insane: http://df.magmawiki.com/index.php/40d:Version_number
14:43:13 <Vorpal> good thing it changed
14:46:42 <impomatic> So what is a good first language? BASIC, Pascal, Logo?
14:46:58 <Vorpal> impomatic, scheme maybe
14:47:29 <nddrylliog> Underload
14:47:45 -!- oerjan has quit (Quit: VERY GOOD).
14:48:03 <Vorpal> nddrylliog, what was the one elliott mentioned... OCC?
14:48:21 <nddrylliog> Vorpal: is that a troll attempt?
14:48:23 <Vorpal> haven't looked at it
14:48:27 <Vorpal> nddrylliog, no idea :)
14:48:34 <impomatic> Don't let newbie programmers near Underload.
14:48:46 <nddrylliog> hey, Underload is a very nice first language
14:48:48 <Vorpal> anyway scheme is a good early and/or first language
14:48:49 <nddrylliog> or maybe Befunge
14:48:57 <Vorpal> nddrylliog, yes in esolangs
14:49:02 <nddrylliog> hell, I'll teach Befunge to my children as soon as they can hold a pencil
14:49:04 <Vorpal> I think they meant more generally
14:49:12 <nddrylliog> I meant more generally as well
14:49:17 <Vorpal> ouch
14:49:33 <Vorpal> oh right, OOC that was it
14:49:36 <Vorpal> nddrylliog, so what is wrong with that OOC?
14:49:55 <impomatic> I like Underload. I hate the though of newbie programming using it to write ugly newbie code :-P
14:49:56 <nddrylliog> you know we used to have a bot on the channel that screamed "It's "ooc", not "OOC", you dumbnut!"
14:50:11 <Vorpal> nddrylliog, I wasn't aware of the case.
14:50:11 <nddrylliog> if someone does that to #esoteric I will fill his/her house with candy
14:50:29 <impomatic> How about Ruby or Python for a first language?
14:50:38 <Vorpal> nddrylliog, so okay, what is wrong with the ooc language that made you talk about trolling?
14:51:01 <Vorpal> nddrylliog, also I don't really care about case on irc. after all you don't start your sentences with upper case letter either
14:51:29 <Vorpal> impomatic, I feel scheme or similar is a good first one. Python if you *have* to use imperative
14:51:31 <nddrylliog> Vorpal: the compiler could use some love (bug-fixing), some corners of the language I regret ever implementing (double use for 'cover', implicit as, pointers...)
14:51:40 <nddrylliog> Vorpal: also I don't care about case that much except for names
14:53:02 <Vorpal> nddrylliog, anyway such a bot as the one you mentioned have to be very smart since OOC in upper case has other meanings as far as a quick googling suggests
14:54:07 <nddrylliog> I'd suppose that when someone says "OOC" in #ooc-lang it's not that he/she is breaking the rules of role-playing, but rather than he/she is talking about the language.
14:56:22 <Vorpal> nddrylliog, indeed but in here it could be either
14:56:28 <nddrylliog> right
14:56:46 <Vorpal> nddrylliog, is it a pure language?
14:57:17 <nddrylliog> nope
14:57:42 <nddrylliog> in fact, I'm really tired of speaking about it - which I've mentioned multiple times, so I guess the better option is just to try it :)
14:58:20 <Vorpal> nddrylliog, mhm
14:58:33 -!- Lymia__ has joined.
15:01:24 -!- Lymia_ has quit (Ping timeout: 240 seconds).
15:01:42 <nddrylliog> Vorpal: sorry for that
15:13:02 <Vorpal> nddrylliog, for what?
15:13:15 <nddrylliog> Vorpal: for not being really helpful
15:13:20 <Vorpal> ah
15:13:23 <Vorpal> *shurg*
15:13:27 <Vorpal> shrug*
15:13:48 -!- Mathnerd314 has quit (Ping timeout: 240 seconds).
15:25:51 <Phantom_Hoover> nddrylliog, can you explain how fe2 is supposed to work?
15:26:25 <nddrylliog> Phantom_Hoover: fe2's dead already, you want to have a look at its successor http://esolangs.org/wiki/Crowbar
15:26:38 <nddrylliog> Phantom_Hoover: pretty poorly explained, but you're an esolanguist, you should be able to make some sense out of it
15:27:58 <Phantom_Hoover> Is it case-sensitive?
15:28:08 <nddrylliog> Phantom_Hoover: yup
15:28:14 <nddrylliog> func != Func
15:28:21 <nddrylliog> Func's the type, func's the keyword to define a function
15:29:51 <Phantom_Hoover> So how does the "rule \A" bit work?
15:31:37 <nddrylliog> ah right I should've added that to the wiki
15:31:38 <nddrylliog> hang on
15:34:00 <nddrylliog> http://esolangs.org/w/index.php?title=Crowbar&diff=20951&oldid=20949
15:34:03 <nddrylliog> Phantom_Hoover: ^ done
15:35:12 -!- pikhq_ has joined.
15:35:17 -!- pikhq has quit (Ping timeout: 255 seconds).
15:43:55 -!- nddrylliog has quit (Ping timeout: 255 seconds).
15:44:20 -!- kar8nga has quit (Remote host closed the connection).
16:12:59 <variable> impomatic --> python for a good first language
16:13:21 <impomatic> :-)
16:15:24 <olsner> after you've reached guido's level you can only go up... yep, a good start
16:16:33 -!- FireFly has joined.
16:17:45 <variable> anyone know a good tutorial for R ?
16:22:56 -!- poiuy_qwert has quit (Quit: This computer has gone to sleep).
16:23:46 -!- BeholdMyGlory has joined.
16:46:26 -!- MigoMipo has quit (Ping timeout: 255 seconds).
16:56:16 -!- variable has quit (Quit: Daemon escaped from pentagram).
17:03:34 -!- elliott has joined.
17:03:35 <Phantom_Hoover> http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/includes/parser/Parser.php?view=markup
17:04:01 <Phantom_Hoover> Is it just me, or is using regexes for parsing such a stupid idea the MW devs ought to be shot?
17:04:31 <elliott> yes
17:04:41 <elliott> most markdown processors are like that too
17:04:57 <Phantom_Hoover> That it is called a parser offends me.
17:05:07 <elliott> Parser-arser.
17:05:15 <elliott> It's a compiler in the yacc tradition, except ad-hoc and with regexps.
17:05:31 <elliott> (i.e., the "traditional" use of yacc puts all the compiling logic in the parser actions)
17:05:36 <elliott> (thus yet another *compiler* compiler)
17:06:34 <elliott> 05:37:35 <Ilari> And the field is 4 bits (16 values)
17:06:34 <elliott> 05:37:55 <Ilari> Total allocations: 6
17:06:35 <elliott> lol
17:06:37 <elliott> allocate a new IPv6 version
17:06:40 <elliott> *IP version
17:06:42 <elliott> WE'RE OUT OF VERSIONS
17:06:44 <elliott> IP VERSION DEPLETION
17:06:55 <elliott> 05:48:55 <Ilari> Is that IPv7 stuff from Markov generator or ramblings of some crackpot?
17:07:08 <elliott> Ilari: Seems like Markov. The IPv8 posts I linked are crackpottery.
17:07:13 <elliott> (Pottery that has been cracked.)
17:07:22 <elliott> Ilari: I think it's one of those fake-scientific-paper generator things' output.
17:07:30 <kfr> Phantom_Hoover: Woah, that's one huge file
17:07:37 <elliott> 06:13:01 <Lymia> How is (a{b}c{d}e)*3 treated in BF Joust
17:07:37 <elliott> 06:13:04 <Lymia> aaabcccdeee?
17:07:40 <elliott> Lymia__: that's not valid
17:07:40 <kfr> What is it with people's hatred against splitting up code
17:07:45 <elliott> one, (a{b}c) forms use %, not *
17:07:48 <Sgeo> Links?
17:07:48 <elliott> two, you can only have one per form
17:08:26 <elliott> 08:25:56 <oerjan> hm wolfram alpha says sum(1/log(8^(4k)+1)) diverges. i _think_ that means by the prime number theorem such a prime is likely to exist.
17:08:34 <elliott> This is the most rigorous anyone has ever done Underload before.
17:08:41 <elliott> 08:26:38 <oerjan> oh wait.
17:08:42 <elliott> 08:28:52 <oerjan> it _doesn't_ exist, by what http://en.wikipedia.org/wiki/Fermat_number says.
17:08:42 <elliott> lawl
17:09:48 <elliott> 13:04:47 <hagb4rd> hello NiFkE.. feel comfortable not to fear to ask yoûr unholy questions on that dark matter
17:09:48 <elliott> 13:05:12 <hagb4rd> here
17:09:48 <elliott> way to give the wrong impression :P
17:10:02 <elliott> 13:08:29 <NiFkE> [13:41] <NiFkE> does anyknow know a tool that could do this: let's say I have 2GB of memory. I open the tool and tell it: "hey, make sure my ram never drops below 1.66GB."
17:10:02 <elliott> 13:08:29 <NiFkE> [13:41] <NiFkE> so filling my ram with dummy shit
17:10:02 <elliott> 13:08:29 <NiFkE> [13:42] <NiFkE> memtest86 3.0 or 2.0 had this but I'm not sure
17:10:02 <elliott> 13:08:34 <NiFkE> [13:42] <NiFkE> because I need to simulate something which only occurs between ram usage x and y.
17:10:05 <elliott> oh god.
17:10:14 <elliott> i wonder if it's the same person's fault
17:10:34 <elliott> 15:05:28 <Vorpal> nddrylliog, what was the one elliott mentioned... OCC?
17:10:34 <elliott> 15:05:46 <nddrylliog> Vorpal: is that a troll attempt?
17:10:34 <elliott> 15:05:48 <Vorpal> haven't looked at it
17:10:34 <elliott> 15:05:53 <Vorpal> nddrylliog, no idea :)
17:10:40 <elliott> oh man, I'm causing people to troll accidentally
17:10:45 <elliott> well
17:10:47 <elliott> maybe accidentally
17:10:49 <elliott> or Vorpal is evil
17:11:55 <elliott> 15:43:51 <nddrylliog> Phantom_Hoover: fe2's dead already, you want to have a look at its successor http://esolangs.org/wiki/Crowbar
17:12:00 <elliott> how did it die so quickly?!
17:12:48 <Phantom_Hoover> I still can't get over the way that MW stores revisions as full page text.
17:13:04 <elliott> git does that
17:13:05 <elliott> and hg :P
17:13:10 <elliott> Nat: cover from Number {
17:13:10 <elliott> rule \A (a: Nat | a >= 0)
17:13:10 <elliott> }
17:13:16 <elliott> nddrylliog: you want that to be "a: Number"
17:13:26 <Phantom_Hoover> elliott, no.
17:13:52 <elliott> Phantom_Hoover: ?
17:13:54 <Phantom_Hoover> Well, I suppose both would work.
17:14:00 <elliott> not really
17:14:03 <elliott> the way it is now is circular
17:14:05 <elliott> which is just weird
17:14:09 <elliott> all nats are >= 0
17:14:15 <elliott> except that it's only because of that rule that it's valid
17:14:18 <elliott> which then makes it a tautology
17:14:22 <elliott> I'd definitely make it "a: Number"
17:14:30 <elliott> 16:30:26 <variable> impomatic --> python for a good first language
17:14:30 <elliott> 16:30:48 <impomatic> :-)
17:14:31 <elliott> 16:32:52 <olsner> after you've reached guido's level you can only go up... yep, a good start
17:14:32 <elliott> olsner++
17:14:52 <Phantom_Hoover> It's universal wossname, so "Number" doesn't make much sense.
17:15:45 <elliott> Phantom_Hoover: "Nat: cover from Number"
17:15:51 <elliott> Number is the type that Nat is covering.
17:15:51 <elliott> Duh.
17:15:57 <Phantom_Hoover> Covering?
17:16:02 <elliott> RTFLanguage
17:16:05 <Phantom_Hoover> And yes, I know that.
17:16:34 <elliott> Number is just integer there I think.
17:16:35 <elliott> So, uh.
17:16:36 <Vorpal> <elliott> oh man, I'm causing people to troll accidentally <-- indeed, you are evil!
17:16:47 <elliott> It should definitely be Number.
17:16:52 <elliott> It's a predicate that tells you whether a Number is a valid Nat.
17:17:07 <Phantom_Hoover> Universal quantification is not the right thing to have, then.
17:17:11 <Vorpal> elliott, btw here is the definition in those text files for a dwarf: http://df.magmawiki.com/index.php/DF2010:Dwarf/raw
17:17:16 <Vorpal> elliott, have fun reading about their nails
17:17:19 <elliott> Phantom_Hoover: Well, possibly.
17:17:30 <Vorpal> elliott, oh and eyelashes!
17:17:36 <Vorpal> don't forget that
17:18:02 -!- locks has joined.
17:18:09 <locks> not long, elliott
17:18:12 -!- locks has left (?).
17:18:20 <Vorpal> what was that
17:18:20 <elliott> :D
17:18:28 <Vorpal> elliott, a bot of yours?
17:18:40 <elliott> nope
17:18:44 <Vorpal> elliott, then what
17:18:56 <elliott> a reaction to me trolling #ooc-lang
17:19:01 <Vorpal> elliott, heh
17:19:10 <Vorpal> elliott, stop doing that. It isn't nice
17:19:26 <elliott> Vorpal: I just said "now that fe2 is dead, how long until ooc dies too?!"
17:19:29 <elliott> and left
17:19:32 <elliott> it's ok, they know to ignore me
17:19:47 <Vorpal> elliott, fe2 being?
17:20:06 <elliott> nddrylliog's lang that is now the significantly less ambitious Crowbar.
17:21:34 <Vorpal> elliott, why is crowbar on the esowiki. It doesn't look very esoteric at all
17:21:53 <elliott> why, because it doesn't have a tarpit's syntax?
17:22:06 <Vorpal> elliott, no, it just seemed too... sane?
17:22:15 <elliott> believe me, it is not sane.
17:22:31 <Vorpal> elliott, how so?
17:22:46 <elliott> rtflogs for fe2 :P
17:23:32 <Vorpal> elliott, when approx in this channel?
17:23:47 <elliott> dunno, days ago? a week maybe?
17:23:55 <Vorpal> ok
17:24:58 <elliott> it was mentioned before it was called fe2 though
17:25:06 <elliott> i'd just grep for <nddyrlliog> or however the fuck you spell it
17:54:00 -!- Lymia__ has changed nick to Lymia.
17:54:01 -!- Lymia has quit (Changing host).
17:54:01 -!- Lymia has joined.
18:10:18 <olsner> elliott: guido-bashing never gets boring :)
18:10:35 <elliott> olsner: i just don't understand reduce, maaaan
18:10:46 <elliott> ugh, ais isn't in here on weekends I just remembered
18:12:17 <elliott> I need to restructure my executable semantics for Underload. yay!
18:12:26 <elliott> which will complicate things a lot
18:12:59 <olsner> elliott: it's a fold
18:13:09 <elliott> olsner: SORRY I'M GUIDO VAN ROSSUM
18:13:09 <olsner> but you never know which one...
18:13:10 <elliott> WHAT IS A FOLD
18:13:12 <elliott> IT SOUNDS LIKE FUNCTIONS
18:13:14 <elliott> I DON'T LIKE FUNCTIONS
18:13:18 <elliott> THEY'RE...FUNCTIONAL
18:13:30 <elliott> I LIKE DOING A, B, AND THEN C, AND THAT'S WHY PYTHON DOESN'T HAVE EXCEPTIONS, IT WOULD BE NON-LINEAR
18:13:33 <elliott> ...OH WAIT
18:13:36 <elliott> PYTHON 4 WILL NOT HAVE EXCEPTIONS
18:13:38 <elliott> ALERT THE PRESSES
18:14:21 <elliott> writing goods specifications is hard
18:15:16 <quintopia> who is guido van rossum
18:15:38 <quintopia> python designer
18:15:40 <quintopia> ??
18:15:54 -!- pikhq_ has changed nick to pikhq.
18:15:59 <Vorpal> quintopia, who else?
18:16:13 <quintopia> i don't python. how would i know?
18:16:24 <Vorpal> quintopia, you don't verb either
18:16:34 <elliott> quintopia: gudio van rossum is ~THE GENIUS GOD OF PROGRAM~
18:16:45 <olsner> you could say he's a man who grew a beard but acquired none of the associated good properties
18:16:51 <quintopia> elliott: oh good. as long as it's not you.
18:17:05 <elliott> he is the recordholder for "master of the greatest number of slaves in a BDSM relationship of all time"
18:17:06 <elliott> basically it's him
18:17:08 <elliott> and every python user
18:17:18 <Vorpal> quintopia, I doubt elliott is a van (nor any other type of car)
18:17:20 <elliott> `addquote <quintopia> who is guido van rossum <olsner> you could say he's a man who grew a beard but acquired none of the associated good properties
18:17:27 <HackEgo> 292) <quintopia> who is guido van rossum <olsner> you could say he's a man who grew a beard but acquired none of the associated good properties
18:26:15 * Gregor strokes his lack of a beard.
18:26:53 <elliott> hmm, writing the executable semantics and then translating them to English seems easier than the other way around
18:27:04 -!- variable has joined.
18:27:07 * quintopia strokes Gregor's non-beard also
18:27:19 <quintopia> why do you shave sir?
18:27:22 <variable> http://pl.atyp.us/wordpress/?p=3184 --> might interest some people here
18:27:40 <Gregor> quintopia: I don't.
18:27:49 <elliott> DHT or bust
18:27:54 <quintopia> wat
18:28:00 <quintopia> you just don't grow beard?
18:28:01 <elliott> quintopia: Gregor is transgender.
18:28:05 * elliott nods sagely
18:28:12 <Gregor> I am not transgender >_<
18:28:16 <Gregor> Just ... transfacialhair.
18:28:18 <quintopia> elliott: transgender men can grow beards
18:28:22 <elliott> Gregor: Sorry, sorry, I won't bring it up in here again.
18:28:28 <elliott> quintopia: HE ISN'T TAKING HORMONES YET
18:28:31 <elliott> now shut up about it
18:28:32 <elliott> he's sensitive
18:28:58 <quintopia> if it were the case, you'd be the one being insensitive by saying "he" so much
18:29:06 <Gregor> quintopia: Being a blond anglo-ashkenazi does not make for much of a beard :P
18:29:13 <quintopia> Gregor: that's pretty lucky, not having to shave, really
18:29:39 <Vorpal> quintopia, what? that's terrible
18:29:45 <Gregor> Well, it's not that I NEVER shave, I shave maybe shave once every two-three weeks.
18:29:48 <Vorpal> by the way I wish my beard was larger
18:29:52 <Gregor> "shave maybe shave" ...
18:30:06 <quintopia> yep
18:30:15 <quintopia> it's how your weeks go
18:30:27 <quintopia> you shave, then maybe think about shaving, and then shave resp. each week
18:30:29 <elliott> quintopia: Err, saying "he" wouldn't be insensitive...
18:30:30 <Vorpal> quintopia, I have to shave twice a week if I wish to not have a beard
18:30:38 <elliott> Saying "EX-SHE" would be :P
18:30:54 <quintopia> oh yeah sorry
18:31:00 <quintopia> i just got up
18:31:15 <quintopia> Vorpal: but of course, you do not wish to not have a beard
18:31:35 <olsner> I'd have to shave twice a day to not have a beard of some kind
18:31:41 <elliott> * hackagebot pandoc 1.8.0.3 - Conversion between markup formats http://hackage.haskell.org/package/pandoc-1.8.0.3 (JohnMacFarlane)
18:31:45 <elliott> heh, time to update pandoc a day after I installed it
18:31:57 <elliott> HEY GUYS I DON'T HAVE A BEARD
18:31:58 <olsner> so I shave as often as Gregor instead
18:32:14 <Vorpal> quintopia, I *do* wish to have a beard
18:32:25 <variable> what exactly does "eventually consistent" re Cassandra ? before it becomes consistent its undefined which value one obtains?
18:32:27 <Phantom_Hoover> elliott, you are PATHETIC
18:32:31 <quintopia> Vorpal: not wish not = wish.
18:32:32 <elliott> NO
18:32:34 <elliott> I'M A WOMAN
18:32:41 <elliott> quintopia: Classicist scum.
18:32:43 <Vorpal> quintopia, eh, missed that :P
18:34:55 <Gregor> Who's the blondest person here? :P
18:34:59 <Gregor> *blondest male
18:35:08 <kfr> I used to have nearly white hair when I was a kid
18:35:13 <kfr> And blue eyes!
18:35:16 <elliott> ME
18:35:25 <elliott> I'M SO BLOND I'M NOT
18:35:29 <kfr> But then my father's genes kicked in and I became unaryan around age 10-14
18:35:38 <Gregor> When I was a baby I was black, but had near-white blond hair.
18:35:59 <elliott> Gregor is a nigger.
18:36:02 <elliott> Sorry, negro.
18:36:10 <elliott> *was
18:36:11 <elliott> BUT NO LONGER
18:36:13 <kfr> Racist scum :[
18:36:20 <elliott> Therefore, Gregor is Michael Jackson and therefore dead.
18:36:22 <elliott> Ergo, Gregor is a ghost.
18:36:27 <elliott> It stands to reason that he haunts this channel.
18:36:29 <kfr> http://siyobik.info/misc/year_book.jpg left side was when I was like 17, right side around uhm no idea
18:36:57 <kfr> Damn you can't actually see how bright the hair was back then, filthy lighting
18:37:05 <kfr> But let me assure you, it was very Aryan!
18:37:23 <Gregor> http://www.facebook.com/photo.php?pid=30178018&l=1f7b9ff624&id=1055580469 Never mind, I guess my hair didn't lighten up 'til later :P
18:37:30 <Vorpal> I have dark brownish hair but for some reason my beard is a slightly lighter shade of brown. Which is a bit annoying.
18:37:53 <quintopia> my hair is awesome-colored
18:38:02 <olsner> is that a picture of Gregor charging his lazors?
18:38:04 <kfr> http://siyobik.info/misc/e420/user/productive.jpg <- now it's pretty dark blonde, not sure what the colour is called
18:38:04 <elliott> Ugh, this is not going well.
18:38:08 <elliott> A failure stream of As is defined as follows:
18:38:09 <elliott> Successful end is a failure stream.
18:38:09 <elliott> Failure is a failure stream.
18:38:09 <elliott> If x is an A, and xs is a failure stream of As, then Cons x xs is a failure stream.
18:38:18 <Gregor> olsner: Yup, the cameraman was killed when I FIRED MAH LAZAR seconds later.
18:38:23 <elliott> My specification is turning into a mechanical translation of Haskell implementation details to English :P
18:38:35 <elliott> Gregor: Holy shit you look weird.
18:38:53 <olsner> elliott: just quote the haskell code? :)
18:39:03 <elliott> Gregor: I think you were a guido baby.
18:39:06 <elliott> Therefore, Gregor is GvR.
18:39:09 <Gregor> I have a video of my not-birth too. Blue -> black -> white :P
18:39:20 <elliott> olsner: I'm trying to do http://catseye.tc/projects/burro/doc/burro.html but for Underload
18:39:32 <elliott> olsner: But cpressey seems to be much better at it than I :P
18:40:18 <kfr> I was wondering why the programming language looked exactly like Haskell
18:40:30 <kfr> Until I noticed the "reference implementatino in Haskell" part
18:40:40 <Vorpal> Gregor, do you actually follow the hat voting decisions?
18:40:58 <Gregor> Yes
18:41:07 <quintopia> elliott: yeah, that (/) is quite a brilliant piece of work
18:41:10 <Vorpal> Gregor, how many people vote normally?
18:41:14 <Gregor> Vorpal: 1-3
18:41:20 <Vorpal> Gregor, heh
18:41:31 <quintopia> is there a hat vote everyday?
18:41:32 <Vorpal> Gregor, how often do you end up wearing that pirate-style hat?
18:41:41 <Gregor> I have no pirate-style hat.
18:41:48 <Vorpal> Gregor, the black one?
18:41:56 <Gregor> I have at least five black hats.
18:42:07 <Vorpal> Gregor, this one http://codu.org/hats/Tricorn-sm.jpg
18:42:15 <Gregor> Fairly rarely.
18:42:18 <elliott> quintopia: It's not the language he's better at, it's the "specification is executable formal semantics" :P
18:42:24 <Vorpal> Gregor, what is it if not pirate style?
18:42:26 <elliott> (Gregor will now kill me for saying "formal semantics".)
18:42:31 <Gregor> It's an American tricorn.
18:42:40 <Gregor> It postdates the hight of piracy by a century.
18:42:41 <quintopia> aka
18:42:45 <quintopia> a sam adams hat :P
18:42:50 <Vorpal> Gregor, oh :(
18:42:50 <Gregor> *height
18:42:53 <Gregor> Yes, a Sam Adams hat.
18:42:55 <Vorpal> Gregor, you need a pirate style one!
18:43:07 -!- MigoMipo has joined.
18:44:21 <quintopia> a french tricorn!
18:45:09 <elliott> ...wait, how does that work.
18:45:13 <elliott> Ohh.
18:45:23 <elliott> ...wait, what.
18:45:25 <Vorpal> elliott, how does *what* work?
18:45:28 <Vorpal> elliott, hats?
18:45:28 <elliott> This!
18:45:30 <elliott> Yes, hats.
18:45:36 <Vorpal> they work by putting them on your head!
18:45:36 <elliott> I don't understand them
18:45:38 <elliott> in the slightest
18:45:40 <elliott> they're so
18:45:41 <elliott> confusing
18:45:44 <Vorpal> elliott, :D
18:45:44 <Gregor> France: "Surprise sex!"
18:45:51 <elliott> > data FailureStream a = End Stack
18:45:51 <elliott> > | Failure
18:45:51 <elliott> > | Cons a (FailureStream a)
18:45:52 <lambdabot> <no location info>: parse error on input `data'
18:45:52 <lambdabot> <no location info>: parse error on input `|'
18:45:52 <lambdabot> <no location info>: parse error on input `|'
18:45:54 <elliott> Now it's NOT GENERAL AT ALL
18:46:16 <elliott> > data Result = End Stack
18:46:16 <elliott> > | Failure
18:46:17 <elliott> > | Output String Result
18:46:17 <lambdabot> <no location info>: parse error on input `|'
18:46:17 <lambdabot> <no location info>: parse error on input `|'
18:46:18 <lambdabot> <no location info>: parse error on input `data'
18:46:18 <elliott> That's better.
18:46:20 <elliott> Shut up, lambdabot.
18:46:35 <quintopia> Gregor: which hat is the most trilby-like?
18:47:26 <Gregor> quintopia: http://codu.org/hats/LGreyTrilby-med.jpg <-- the one that's a Trilby.
18:47:48 <quintopia> thx. i can never tell what hats are by looking
18:48:14 <elliott> hey, i think it might be a gonad
18:48:17 <elliott> hmm
18:48:18 <elliott> maybe
18:48:19 <elliott> oh
18:48:20 <elliott> if it was generic
18:48:21 <elliott> darn
18:48:24 <elliott> insufficiently gonadic
18:49:20 <elliott> yep
18:49:22 <elliott> it's a gonad
18:49:25 <elliott> sorry NOMAD
18:49:33 <elliott> > andThen :: Result -> (Stack -> Result) -> Result
18:49:34 <lambdabot> Not in scope: type constructor or class `Result'Not in scope: type construc...
18:49:35 <elliott> :DDDDDDDDDDDDDDD
18:50:17 <elliott> > andThen :: Result -> (Stack -> Result) -> Result
18:50:17 <elliott> > End xs `andThen` f = f xs
18:50:17 <elliott> > Failure `andThen` _ = Failure
18:50:17 <elliott> > Output s r `andThen` f = Output s (r `andThen` f)
18:50:18 <lambdabot> <no location info>: parse error on input `='
18:50:18 <lambdabot> Not in scope: type constructor or class `Result'Not in scope: type construc...
18:50:18 <lambdabot> <no location info>: parse error on input `='
18:50:18 <lambdabot> <no location info>: parse error on input `='
18:50:18 <elliott> beautiful
18:50:22 <elliott> FUCK OFF LAMBDABOT
18:50:38 <Vorpal> elliott, you are sure you want it to leave the channel?
18:50:42 <elliott> no
18:50:44 <Vorpal> you will be asking for it back soon
18:50:45 <elliott> i just want it to shut up for a bit
18:50:54 <Vorpal> elliott, use another prefix
18:50:57 <quintopia> >stfu
18:50:59 <elliott> it's literate haskell
18:51:01 <elliott> that's the prefix.
18:51:05 <Vorpal> quintopia, that works?
18:51:12 <elliott> <elliott> it's literate haskell
18:51:12 <elliott> <elliott> that's the prefix.
18:51:12 <quintopia> iunno :P
18:51:17 <elliott> i'm copying it from my file.
18:51:30 <Vorpal> elliott, I saw it first time...
18:51:33 <elliott> :p
18:51:41 <quintopia> elliott: your gonad monad has an enormous continuation
18:51:48 <elliott> absolutely
18:51:55 <Vorpal> quintopia, gonad nomad you mean
18:52:12 <quintopia> possibly
18:52:16 <Vorpal> elliott, btw what are you doing currently
18:52:41 <elliott> Vorpal: writing a formal specification with Underload -- formal in that it contains executable formal semantics for the language
18:52:48 <elliott> which also serves as a reference interpreter
18:53:13 <elliott> (the executable semantics taking precedence over the English text in case of contradiction)
18:53:22 <quintopia> who designed this formal semantics grammar?
18:53:33 <elliott> it's... Haskell
18:53:35 <elliott> what do you mean?
18:53:41 <quintopia> mm
18:53:44 <elliott> (ML was designed for the specification of formal semantics, btw)
18:53:54 <elliott> (and Haskell is close enough that it does it just as well, perhaps even better)
18:56:03 <elliott> anyway, the idea is to improve it sufficiently, get ais523's approval, and then call that the new official Underload specification
19:03:17 <elliott> :t lookup
19:03:17 <lambdabot> forall a b. (Eq a) => a -> [(a, b)] -> Maybe b
19:06:54 <olsner> lookup? consider using Data.Map :)
19:07:09 -!- oerjan has joined.
19:07:16 <elliott> olsner: for 6 keys?
19:07:34 <elliott> besides, this is an executable semantics. dependencies are bad.
19:08:13 <oerjan> <elliott> 08:25:56 <oerjan> hm wolfram alpha says sum(1/log(8^(4k)+1)) diverges. i _think_ that means by the prime number theorem such a prime is likely to exist.
19:08:28 <oerjan> 17:26:11 <elliott> 08:28:52 <oerjan> it _doesn't_ exist, by what http://en.wikipedia.org/wiki/Fermat_number says.
19:08:31 <oerjan> 17:26:11 <elliott> lawl
19:08:43 <elliott> hey you CUT OUT A LINE
19:09:03 <oerjan> of course the first idea requires assuming that these behave like random numbers, which _most_ prime numbers seem to do. just not these.
19:09:21 <elliott> oerjan: so uh, finished your base converter yet? :p
19:09:54 <oerjan> um btw regarding the missing line, this has nothing to do with underload
19:10:14 <elliott> oerjan: erm
19:10:20 <elliott> wasn't it sparked after writing your base converter?
19:10:54 <oerjan> no it was sparked by Ilari mentioning the base 10 minimal prime substring list
19:11:26 <oerjan> as for base converter, my current idea is to actually do decimal arithmetic in underload
19:11:47 <elliott> @hoogle (a -> m a) -> (a -> m a) -> a -> m a
19:11:48 <lambdabot> Data.Generics.Aliases extMp :: (MonadPlus m, Typeable a, Typeable b) => (a -> m a) -> (b -> m b) -> a -> m a
19:11:48 <lambdabot> Data.Generics.Aliases extM :: (Monad m, Typeable a, Typeable b) => (a -> m a) -> (b -> m b) -> a -> m a
19:11:48 <lambdabot> Control.Monad (>=>) :: Monad m => (a -> m b) -> (b -> m c) -> a -> m c
19:11:53 <oerjan> not particularly converting though, except possibly from/to church numerals
19:12:01 <elliott> ah
19:12:02 <elliott> so
19:12:08 <elliott> eval (i:is) = step i >=> eval is
19:12:09 <elliott> nice!
19:12:15 <elliott> TODO: replace it with that after implementing monad instance
19:12:19 <elliott> (thus generalising Result...)
19:12:39 <elliott> then it's just
19:12:40 <oerjan> >=> is a Monad version of Arrow >>>, btw
19:12:43 <elliott> eval [] = End
19:12:47 <elliott> eval (i:is) = step i >=> eval is
19:12:53 <elliott> oerjan: omg, does that mean my result type might be an arrow? :D
19:13:07 <oerjan> because the type subclasses are historically not enforced
19:13:08 <elliott> > data Result = End Stack
19:13:08 <elliott> > | Failure
19:13:08 <elliott> > | Chunk [Word8] Result
19:13:08 <elliott> >
19:13:08 <elliott> > andThen :: Result -> (Stack -> Result) -> Result
19:13:09 <lambdabot> <no location info>: parse error on input `data'
19:13:09 <lambdabot> mueval-core: NotAllowed "These modules have not been loaded:\nL\n"
19:13:09 <elliott> > End xs `andThen` f = f xs
19:13:09 <lambdabot> mueval-core: NotAllowed "These modules have not been loaded:\nL\n"
19:13:09 <lambdabot> Not in scope: type constructor or class `Result'Not in scope: type construc...
19:13:10 <lambdabot> <no location info>: parse error on input `='
19:13:11 <elliott> > Failure `andThen` _ = Failure
19:13:12 <lambdabot> <no location info>: parse error on input `='
19:13:13 <elliott> > Chunk s r `andThen` f = Chunk s (r `andThen` f)
19:13:14 <lambdabot> <no location info>: parse error on input `='
19:13:15 <elliott> obviously, needs typeclasses
19:13:17 <elliott> but andThen is just >>= flipped
19:13:21 <oerjan> in fact the structure is such that they cannot be
19:13:25 <elliott> however you spell it starting with klieilieisei
19:13:26 <elliott> arrow
19:13:28 <elliott> thing
19:13:55 <oerjan> :k Kleisli
19:13:56 <lambdabot> (* -> *) -> * -> * -> *
19:14:02 <oerjan> er
19:14:13 <oerjan> :t Kleisli
19:14:14 <lambdabot> forall a (m :: * -> *) b. (a -> m b) -> Kleisli m a b
19:14:51 <oerjan> yes that's the thing converting from Monad to Arrow, essential just a newtype wrapper to get the kinds right
19:14:57 <oerjan> *ly
19:15:08 -!- pikhq_ has joined.
19:15:13 -!- pikhq has quit (Ping timeout: 250 seconds).
19:15:31 <elliott> oerjan: no i meant
19:15:39 <elliott> oerjan: Kleisli arrow or whatever
19:15:42 <elliott> what >>= was originally called
19:15:44 <elliott> same apart from flipped args
19:15:47 <elliott> it's in category-extras I think
19:15:50 <elliott> as just flip (>>=)
19:16:02 <elliott> *Main> eval [Push [Duplicate, Enclose, Output, Output], Duplicate, Enclose, Output, Output] []
19:16:02 <elliott> Chunk [40,58,97,83,83,41] (Chunk [58,97,83,83] (End []))
19:16:08 <elliott> just going to assume that that's (:aSS):aSS there :D
19:16:17 <elliott> (Word8s because Underload programs can output invalid Unicode)
19:16:22 <elliott> well, invalid UTF-8
19:16:36 <elliott> that structure can also end in Invalid
19:16:43 <elliott> i.e. it's like (Maybe [a]), except lazy
19:16:50 <elliott> [Maybe a], except after Nothing no further elements are allowed
19:16:52 <oerjan> elliott: i vaguely recall that the _actual_ math kleisli arrow is just as close to >=> as to >>=
19:16:57 <elliott> oerjan: hm
19:17:07 <oerjan> it's just a slight change in viewpoint i think
19:17:46 <oerjan> when your category is cartesian closed, anyway
19:17:52 <elliott> I suppose that
19:17:58 <elliott> data Result = End Stack | Failure | Chunk [Word8] Result
19:17:59 <elliott> should be
19:18:13 <elliott> data Result e a = End e | Failure | Chunk a (Result e a)
19:18:20 <elliott> then (Result e) is a monad
19:18:24 <elliott> i think
19:18:28 <elliott> indeed
19:18:30 <elliott> probably
19:18:33 <elliott> wait is it?
19:18:35 <elliott> yes
19:18:36 <oerjan> elliott: an Arrow requires your type to be polymorphic in the argument and result types, though
19:18:36 <elliott> it is
19:18:45 <elliott> oerjan: data Result e a = End e | Failure | Chunk a (Result e a)
19:18:49 <elliott> could a be the argument and e the result?
19:18:50 <elliott> or something?
19:19:03 <oerjan> the reverse
19:19:14 <oerjan> for order
19:19:25 <oerjan> (->) a e for functions e.g.
19:19:40 <elliott> oerjan: ah
19:19:48 <elliott> oerjan: but then (Result a) being a monad is strange
19:19:51 <elliott> because (Result e) is essentially like []
19:20:08 <oerjan> and there is an embedding of functions using the pure function
19:20:14 <oerjan> er, *arr
19:20:24 <oerjan> i think pure is a deprecated synonym
19:20:33 <oerjan> (confuses with Applicative
19:20:34 <oerjan> )
19:20:46 <elliott> oerjan: hm I'm not sure you can map functions to Result
19:20:58 <elliott> so perhaps it isn't an arrow
19:21:01 <oerjan> elliott: as i said, the kinds are wrong for a type being both Monad and Arrow simultaneously
19:21:04 <elliott> right
19:21:09 <elliott> it's more a Monad than an Arrow I believ
19:21:11 <elliott> *believe
19:21:33 <oerjan> all Monads "are" Arrows, but the kinds require the Kleisli wrapper
19:21:43 <elliott> oh, shit
19:21:45 <elliott> i don't have return
19:21:50 <elliott> return :: a -> Result e a
19:21:52 <elliott> because that has to be
19:21:58 <elliott> return x = Chunk x (End y)
19:22:03 <elliott> and we don't know that e is inhabited
19:22:09 <elliott> perhaps it should be "Chunk x Failure", but that seems /weird/
19:22:11 <elliott> :/
19:22:28 <oerjan> hm even Arrows have that kind of return (it's just arr . const, i think)
19:23:00 <elliott> oerjan: I /could/ fix e to Stack
19:23:02 <elliott> but that seems strange
19:23:06 <elliott> being polymorphic in the type of output but not the end
19:23:12 <elliott> admittedly, this is a kind of "single use" monad
19:23:18 <elliott> but I'm having to make it unnecessarily polymorphic /anyway/
19:23:22 <elliott> not being able to go all the way seems stupid
19:24:17 <oerjan> <elliott> (Word8s because Underload programs can output invalid Unicode) <-- only if the program contains them to begin with...
19:24:26 <elliott> oerjan: well, duh
19:24:27 <elliott> oerjan: your point?
19:26:54 <elliott> oerjan: :p
19:27:36 <oerjan> underload programs _are_ intuitively arrows imo, as long as you ignore the "always stack" part
19:27:58 <elliott> oerjan: it's not programs here
19:27:59 <elliott> it's Results
19:28:09 <oerjan> whatever that is
19:28:13 <elliott> > data Result e a = End e
19:28:13 <elliott> > | Failure
19:28:13 <elliott> > | Chunk a Result
19:28:13 <elliott> > deriving (Show)
19:28:14 <lambdabot> <no location info>: parse error on input `data'
19:28:14 <lambdabot> <no location info>: parse error on input `|'
19:28:14 <elliott> like I said
19:28:14 <lambdabot> <no location info>: parse error on input `deriving'
19:28:14 <lambdabot> <no location info>: parse error on input `|'
19:28:20 <elliott> for underlload, e = Stack and a = [Word8]
19:28:29 <elliott> this allows for programs that output infinite output, but still handling invalid programs without error
19:28:33 <elliott> e.g.
19:28:36 <elliott> (abc)Sx
19:28:36 <elliott> ->
19:28:41 <oerjan> somehow i don't think pasting .lhs is a very good idea here :D
19:28:41 <elliott> Chunk "abc" Failure
19:28:44 <elliott> oerjan: INDEED
19:28:55 <oerjan> you could use the \begin{code} version...
19:29:30 <oerjan> well i assume, not that i've tried lhs
19:29:38 <elliott> oerjan: it's Markdown
19:29:40 <elliott> so that would be weird
19:29:53 <elliott> dunno if pandoc would handle that
19:30:03 <oerjan> hm must > be at the beginning of the line?
19:30:05 <elliott> yes
19:30:06 <oerjan> > test
19:30:11 <elliott> even in lhs
19:30:14 <elliott> which stopped me making a table
19:30:16 <oerjan> aww
19:30:17 -!- Wamanuz3 has joined.
19:30:19 <elliott> where LHS = english and RHS = corresponding haskell :D
19:30:23 <elliott> for data types
19:30:33 -!- Wamanuz2 has quit (Ping timeout: 265 seconds).
19:30:35 <elliott> oerjan: with that Kleisli thing, does it auto-derive an Arrow instance?
19:30:36 <elliott> i guess not
19:31:05 <oerjan> um sure
19:31:08 -!- iconmaster has joined.
19:31:21 <oerjan> instance Monad m => Arrow (Kleisli m) where something
19:31:26 <elliott> yeah, what's something :P
19:31:42 <oerjan> pretty obvious, really
19:32:16 -!- asiekierka has quit (Remote host closed the connection).
19:33:14 <elliott> oerjan: yeah but i don't really know Arrows
19:33:15 <elliott> I haven't done them
19:33:17 <elliott> much
19:33:18 <elliott> at all
19:33:34 <oerjan> elliott: C:\Programfiler\Haskell Platform\2010.2.0.0\doc\html\libraries\base-4.2.0.2\src\Control-Arrow.html
19:33:38 <elliott> oerjan: *fail*
19:33:44 <oerjan> wait what :D
19:33:52 <elliott> :D
19:34:03 <elliott> http://www.haskell.org/ghc/docs/latest/html/libraries/base/Control-Arrow.html
19:34:06 <oerjan> hugs always opened the web site
19:34:19 <elliott> i think you _can_ choose not to install the docs
19:34:23 <elliott> but i imagine opening them would just fail
19:34:31 <oerjan> elliott: i wanted to link you the source, but i guess you can just click in there
19:34:39 <elliott> http://www.haskell.org/ghc/docs/latest/html/libraries/base/src/Control-Arrow.html
19:35:19 -!- Mathnerd314 has joined.
19:35:19 <elliott> ooh, maybe I'll make it
19:35:24 <elliott> (Monoid e) => Monad (Result e)
19:35:26 <elliott> and use mzero
19:35:28 <elliott> for the End
19:35:36 <elliott> ARGUABLY, however, that's retarded
19:35:53 <elliott> in the "makes no sense" way
19:36:30 <elliott> @pl \(i:is) -> step i >=> eval is
19:36:30 <lambdabot> ap ((. eval) . (>=>) . step . head) tail
19:36:34 <elliott> hmph
19:36:56 <elliott> @pl foldr (\(i:is) r -> step i >=> r) End
19:36:56 <lambdabot> foldr ((>=>) . step . head) End
19:37:00 <elliott> :D
19:37:03 <elliott> oerjan:
19:37:04 <elliott> eval [] = End
19:37:07 <elliott> eval (i:is) = step i >=> eval is
19:37:09 <elliott> OR----
19:37:15 <elliott> eval = foldr ((>=>) . step . head) End
19:38:11 <elliott> `quote noticed
19:38:16 <HackEgo> 90) <Sgeo> I'd imagine that it already has, and no one noticed
19:38:37 <elliott> oerjan: I wish Control.Monad was called Data.Monad.
19:38:45 <oerjan> elliott: um there shouldn't be any head, surely
19:38:54 <elliott> oerjan: er, why not?
19:39:04 <elliott> <elliott> @pl foldr (\(i:is) r -> step i >=> r) End
19:39:04 <elliott> <lambdabot> foldr ((>=>) . step . head) End
19:39:07 <elliott> oh
19:39:08 <elliott> indeed
19:39:13 <elliott> @pl foldr (\i r -> step i >=> r) End
19:39:13 <lambdabot> foldr ((>=>) . step) End
19:39:22 <elliott> oerjan: ooh, I think that's actually a lot more appealing
19:40:04 <oerjan> but Monad is not a data structure, it's a class...
19:40:38 -!- impomatic has left (?).
19:40:39 <oerjan> admittedly some things in Data are so generalized they've turned into classes too
19:40:58 <elliott> oerjan: well, yes, but Control implies control structure
19:41:04 <elliott> and Haskell doesn't really have any of them
19:41:20 <elliott> well, it has things like "while" generic on monads, but those only act like control structures on "sequential" monads
19:41:30 <elliott> e.g. I have no idea what while would do in the list monad
19:41:50 <elliott> Couldn't match expected type `Word8'
19:41:51 <elliott> against inferred type `[Instruction]'
19:41:51 <elliott> Expected type: [Word8]
19:41:51 <elliott> Inferred type: Stack
19:41:51 <elliott> In the second argument of `(>=>)', namely `eval is'
19:41:51 <elliott> In the expression: step i >=> eval is
19:41:53 <elliott> wat
19:41:57 <oerjan> well while is rather meaningless in a monad without mutable state
19:41:59 <elliott> oh, sweet
19:42:01 <elliott> my program is broken
19:42:03 <elliott> oerjan: indeed
19:42:10 <oerjan> since each iteration cannot see anything different
19:42:11 <elliott> underload.hs:32:22:
19:42:12 <elliott> Couldn't match expected type `a' against inferred type `[Program]'
19:42:12 <elliott> `a' is a rigid type variable bound by
19:42:12 <elliott> the type signature for `>>=' at <no location info>
19:42:12 <elliott> In the first argument of `f', namely `xs'
19:42:13 <elliott> In the expression: f xs
19:42:15 <elliott> In the definition of `>>=': End xs >>= f = f xs
19:42:17 <elliott> let's
19:42:19 <elliott> see
19:42:21 <elliott> andThen was
19:42:29 <elliott> andThen :: Result -> (Stack -> Result) -> Result
19:42:31 <elliott> or
19:42:33 <elliott> generalising
19:42:46 <elliott> andThen :: Result Stack a -> (Stack -> Result Stack b) -> Result Stack b
19:42:46 <elliott> or
19:42:47 <elliott> generalising
19:43:03 <elliott> andThen :: m e a -> (e -> m e b) -> m e b
19:43:05 <elliott> hmm
19:43:06 <elliott> so if we flip
19:43:19 <elliott> andThen :: (m a) e -> (e -> (m a) e') -> (m a) e'
19:43:22 <elliott> indeed
19:43:31 <elliott> it should be (Result a e), as silly as that is
19:43:36 <elliott> this makes return possibly too
19:43:37 <elliott> *possible
19:44:18 <elliott> hm I should rename it from Result
19:44:22 <elliott> oerjan: what would you call (ListT Maybe)?
19:44:31 <elliott> except that Nothing takes an argument
19:44:38 <elliott> so (ListT (Either e)), I guess
19:44:42 <elliott> except
19:44:46 <elliott> yes, that's it
19:44:53 * oerjan isn't very familiar with ListT
19:44:57 <elliott> so (Right []) and (Left foo) are the possible endings
19:45:02 <elliott> oerjan: basically every cons cell is wrapped in the argument
19:45:02 <elliott> i.e.
19:45:03 <elliott> instead of
19:45:06 <elliott> 1 : 2 : 3 : []
19:45:07 <elliott> you get
19:45:15 <elliott> Just (1 : Just (2 : Just (3 : Just [])))
19:45:17 <elliott> or alternatively
19:45:19 <elliott> Just (1 : Nothing)
19:45:23 <elliott> except in this case
19:45:26 <elliott> s/Just/Right/
19:45:29 <elliott> and s/Nothing/Left e/ for some e
19:45:45 <elliott> I'm calling it Result, but really what I call Result should be what I call (Result [Word8] Stack), it's Underload-evaluation-specific
19:45:48 <elliott> FailureStream maybe?
19:45:54 <oerjan> ...i somehow have doubt that's what they usually call ListT...
19:45:54 <elliott> but that's ugly and long.
19:46:04 <elliott> oerjan: I think it is... at least ski in #haskell implied so
19:46:06 <elliott> oerjan: well, this is the actual structure
19:46:14 <oerjan> huh
19:46:16 <elliott> data Foo a e = End e | Failure | Chunk a (Foo a e)
19:47:07 <elliott> in underload evaluation, (End stack) means "I've finished evaluating this program or instruction or whatever, and here's what the stack was at the end", Failure meant "oops, your program is wrong, it executed an invalid instruction / popped from an empty stack / etc.", and "Chunk s r" means "hey, I have some output! print out s now, and my further work is in r"
19:47:09 <elliott> so e.g.
19:47:23 -!- Lymia_ has joined.
19:47:29 <elliott> (x)(foo)S -> Chunk "foo" (End [theQuotation "x"])
19:47:34 <elliott> (foo)Sx -> Chunk "foo" Failure
19:47:42 <elliott> just not sure what to call that generic verison
19:47:42 -!- Lymia has quit (Disconnected by services).
19:47:43 -!- Lymia_ has changed nick to Lymia.
19:47:44 -!- Lymia has quit (Changing host).
19:47:44 -!- Lymia has joined.
19:48:43 <oerjan> well End is pretty returny
19:48:57 <oerjan> and the a looks Writery
19:49:23 <elliott> oerjan: :D
19:49:30 <elliott> oerjan: indeed
19:49:37 <elliott> > instance Monad (Foo a) where
19:49:37 <elliott> > return x = End x
19:49:38 <elliott> > End xs >>= f = f xs
19:49:38 <elliott> > Failure >>= _ = Failure
19:49:38 <elliott> > Chunk s r >>= f = Chunk s (r >>= f)
19:49:38 <lambdabot> <no location info>: parse error on input `instance'
19:49:38 <lambdabot> <no location info>: parse error on input `='
19:49:38 <lambdabot> <no location info>: parse error on input `='
19:49:39 <lambdabot> <no location info>: parse error on input `='
19:49:39 <lambdabot> <no location info>: parse error on input `='
19:49:41 <elliott> (fuck off lambdabot)
19:49:43 <elliott> that's the monad instance
19:49:47 <elliott> I just don't know what to call it
19:50:01 <oerjan> and Failure looks ErrorTy
19:50:06 <elliott> oerjan: :D
19:50:14 <elliott> oerjan: i don't mean "reduce this to simpler monads"
19:50:17 <elliott> i mean literally "what do i call it"
19:50:35 <olsner> the Undermonad
19:51:32 * Sgeo goes to try WebGL
19:51:48 <elliott> olsner: wat
19:51:56 <Sgeo> WebGL + AJAX fascinates me
19:52:07 <olsner> elliott: underload+monad, undermonad'
19:52:43 <olsner> or ULM for UnderLoadMonad, or whatever
19:54:34 -!- TLUL has joined.
19:56:24 <elliott> I wish fail didn't take a tsring
19:56:25 <elliott> *string
19:56:26 -!- azaq23 has joined.
19:56:27 <elliott> why does it do that?
19:57:12 <olsner> so that you can give it to error while you complain about the mistakes of the founding fathers
19:57:46 <elliott> olsner: i pretty much think that spj must have been on crack to fuck up the Prelude as much as he did
19:57:54 <elliott> oerjan why didn't you tell them it sucked when you had the chance!
19:57:55 -!- MigoMipo has quit (Ping timeout: 260 seconds).
19:58:18 <Sgeo> http://people.mozilla.com/~sicking/webgl/ray.html PRETTY
20:00:22 <elliott> oerjan: ooh, eval is actually "foldr ((>=>) . step) return"
20:00:28 <elliott> I have a feeling that might be a rather general concept...
20:00:30 <oerjan> elliott: fail takes a string so that the compiler can pass file and line number to it for do notation match failures. i think.
20:00:37 <elliott> oerjan: "BLAH BLAH BLAH"
20:00:44 <elliott> :t \step -> foldr ((>=>) . step) return
20:00:45 <lambdabot> forall (m :: * -> *) c a. (Monad m) => (a -> c -> m c) -> [a] -> c -> m c
20:00:57 <elliott> what a peculiar type
20:01:09 <elliott> well c is evaluation state
20:01:10 <elliott> so s
20:01:13 <elliott> a is instruction, so i
20:01:14 <olsner> :t foldM
20:01:15 <lambdabot> forall a b (m :: * -> *). (Monad m) => (a -> b -> m a) -> a -> [b] -> m a
20:01:20 <elliott> (i -> s -> m s) -> [i] -> s -> m s
20:01:22 <elliott> aha
20:01:28 <elliott> olsner: not quite
20:01:32 <elliott> hmm
20:01:36 <elliott> :t foldM . flip
20:01:37 <lambdabot> forall a b (m :: * -> *). (Monad m) => (b -> a -> m a) -> a -> [b] -> m a
20:01:38 <olsner> though foldM iirc is a left fold, not a right one
20:01:42 <elliott> right
20:01:44 <elliott> that's the issue
20:01:47 <elliott> this needs to be lazy
20:01:51 <elliott> (i -> s -> m s) -> [i] -> s -> m s
20:01:53 <elliott> quite easy to decipher
20:02:03 <elliott> given (given an instruction, and state, evaluate and return the new state),
20:02:06 <elliott> and a program (list of instructions),
20:02:08 <elliott> and an initial state,
20:02:10 <elliott> return the state
20:02:12 <elliott> @hoogle (i -> s -> m s) -> [i] -> s -> m s
20:02:12 <lambdabot> Data.Foldable foldrM :: (Foldable t, Monad m) => (a -> b -> m b) -> b -> t a -> m b
20:02:12 <lambdabot> Control.Monad zipWithM_ :: Monad m => (a -> b -> m c) -> [a] -> [b] -> m ()
20:02:13 <lambdabot> Control.Monad zipWithM :: Monad m => (a -> b -> m c) -> [a] -> [b] -> m [c]
20:02:17 <elliott> foldrM is exactly it.
20:02:26 <elliott> :)
20:02:39 <elliott> or, wait, what's b there
20:02:47 <elliott> oh, initial state
20:03:05 <elliott> foldrM step []
20:04:09 <elliott> hmm
20:04:15 <olsner> if you add some transformer you could make it e.g. mapM_ step
20:04:17 <elliott> @check (\f g x -> f x == g x)
20:04:17 <lambdabot> Overlapping instances for GHC.Show.Show (t -> a)
20:04:17 <lambdabot> arising from a use of `...
20:04:23 <elliott> olsner: lol
20:05:10 <olsner> elliott: lol why?
20:05:32 <elliott> olsner: well i can't imagine what transformer it would be
20:05:45 <elliott> although (Result a e) is basically (ListT (Either e) a) I think
20:06:20 <elliott> foldrM step []
20:06:20 <elliott> :: (Foldable t) => t Instruction -> Result [Word8] Stack
20:06:21 <elliott> awesome
20:06:41 <olsner> looks like a match for StateT s, but maybe that applies your state transformations backwards
20:06:59 <elliott> olsner: well
20:06:59 <olsner> reverse state monad :)
20:07:04 <elliott> > data Result a e = End e
20:07:04 <elliott> > | Failure
20:07:04 <elliott> > | Chunk a (Result a e)
20:07:04 <elliott> > deriving (Show)
20:07:05 <lambdabot> <no location info>: parse error on input `deriving'
20:07:05 <lambdabot> <no location info>: parse error on input `|'
20:07:05 <lambdabot> <no location info>: parse error on input `data'
20:07:05 <lambdabot> <no location info>: parse error on input `|'
20:07:07 <elliott> that's just the result
20:07:11 <elliott> *type
20:07:14 <elliott> (Result a) being the monad
20:07:24 <elliott> Chunk is partial output, End gets the stack at the end
20:07:27 <elliott> Failure is obvious
20:07:51 <elliott> olsner: basically, (Result a e) is like (Maybe ([a], e)), except that the "a"s are delivered lazily
20:08:04 <elliott> the latter can't handle infinite output when you evaluate recursively
20:08:07 <elliott> but the former can
20:08:12 -!- Lymia_ has joined.
20:08:18 <elliott> both are an alternative to ([a], e) and using "error" for invalid programs
20:08:18 -!- Lymia has quit (Disconnected by services).
20:08:19 -!- Lymia_ has changed nick to Lymia.
20:08:20 -!- Lymia has quit (Changing host).
20:08:20 -!- Lymia has joined.
20:09:57 <elliott> on a scale of 1 to 10, depending on parsec for your language's semantics rates somewhere around -50
20:10:00 <elliott> time to write a recursive parser
20:10:04 <elliott> ooh, ooh, I should parse _lazily_!
20:10:15 <elliott> so that "(:^):^hello" never errors.
20:10:19 <elliott> GOOD THING I HAVE A TYPE FOR THAT
20:10:33 <elliott> or wait, do I :/
20:10:35 <elliott> yes, I do
20:10:36 <elliott> kinda
20:10:37 <elliott> I think
20:10:38 <elliott> maybe
20:10:39 <elliott> hmm
20:10:45 <elliott> aw man
20:10:50 <elliott> I need all kinds of Foldable shit here I think
20:12:51 <elliott> yeah it'll be lazy except that
20:13:04 <elliott> ((:^):^hello)^
20:13:07 <elliott> will parse invalidly
20:13:09 <elliott> i guess that is ok
20:13:18 <oerjan> um no
20:13:21 <elliott> i suppose I could make Program be "t Instruction" for foldable t
20:13:25 <elliott> oerjan: no, as in
20:13:27 <elliott> it'll parse error
20:13:28 <elliott> wait
20:13:29 <elliott> no it won't
20:13:33 <oerjan> you need to support ((:^):^hello)S
20:13:35 <elliott> right
20:13:36 <elliott> indeed
20:13:37 <elliott> i know _that_
20:13:38 <elliott> hmm
20:13:44 <elliott> so in fact, the parser being lazy gets me exactly one thing
20:13:50 <elliott> (:^):^( will run correctly
20:14:00 <elliott> the thing is, it lets me use (interact run)
20:14:02 <elliott> and it'd be like a repl
20:14:04 <elliott> thanks to lazy parsing :P
20:14:07 <elliott> except that \n is invalid
20:14:08 <elliott> oh whatever
20:14:09 <oerjan> ^ul (hi)S(
20:14:09 <fungot> hi ...unterminated (!
20:14:15 <elliott> ^ul (:^):^(
20:14:16 <fungot> ...out of time!
20:14:18 <elliott> see?
20:14:20 <olsner> elliott: well, it would be worse to put semantics in the parser if the parser wasn
20:14:27 <olsner> wasn't written in parsec
20:14:28 <oerjan> oh
20:14:39 <elliott> olsner: it's a recursive function
20:14:52 <olsner> the parser?
20:14:53 <elliott> because having the semantics of your language depend on the subtleties of parsec and even its error handling is Not Good
20:14:55 <elliott> yes
20:15:00 <elliott> thankfully Underload is dirt simple
20:16:06 <oerjan> !underload (:^):^(
20:16:11 <EgoBot> Error: Expected ) at end of input
20:16:26 <elliott> hm in fact i want to return the rest of the input separately I think
20:16:26 <elliott> urgh
20:16:30 <elliott> this is so complicated :)
20:16:35 <elliott> i'll have to consult ais523
20:16:43 <elliott> another matter i have to consult him about: whether infinite programs are valid or not
20:16:44 <oerjan> it would seem our implementations don't quite agree on parsing...
20:16:47 <elliott> I'll strongly recommend "no"
20:16:56 <elliott> because if infinite programs are allowed, then there is a program that outputs Chaitin's constant
20:17:04 <elliott> and it looks like (0)S(.)S(something)S(something)S...
20:17:09 <olsner> booh! why disallow infinite programs?
20:17:12 <elliott> and that's just not right
20:17:14 <elliott> olsner: <elliott> because if infinite programs are allowed, then there is a program that outputs Chaitin's constant
20:17:20 <olsner> so?
20:17:25 <elliott> olsner: Chaitin's constant is not even _remotely_ computable
20:17:30 <olsner> so?
20:17:37 <elliott> olsner: *sigh*
20:17:41 <olsner> :)
20:17:43 <elliott> i'm sure oerjan agrees >:D
20:17:52 <elliott> i don't even know what it would do the computational complexity
20:17:55 <elliott> infinite programs can do anything :p
20:18:04 * oerjan sidles away carefully
20:18:13 <olsner> IMO, if it causes horribleness, then that's just all the more reason to do it
20:18:36 <oerjan> but underload is _elegant_
20:18:49 <olsner> hmm, I thought it was an esolang?
20:18:58 <oerjan> it is still elegant
20:19:24 <elliott> yeah, Underload isn't horrific at all
20:19:32 <elliott> it's a tarpit, but a really graceful one, it doesn't feel forced
20:20:34 <elliott> wow, Chris Pressey wrote a _CGI frontend_ to the DragonFly BSD installer
20:20:35 <elliott> that's just wrong!
20:20:47 <elliott> seriously: http://www.bsdinstaller.org/images/screenshots/cgi-partition.png
20:22:48 <elliott> > parse ('(':s) = r >>= \s' -> Chunk (Push p) (parse s')
20:22:48 <elliott> > where r = parse s
20:22:48 <elliott> > p = toList r
20:22:48 <elliott> > toList (Chunk x xs) = x : toList xs
20:22:48 <elliott> > toList _ = []
20:22:49 <lambdabot> <no location info>: parse error on input `where'
20:22:49 <lambdabot> <no location info>: parse error on input `='
20:22:49 <lambdabot> <no location info>: parse error on input `='
20:22:49 <lambdabot> <no location info>: parse error on input `='
20:22:50 <lambdabot> <no location info>: parse error on input `='
20:22:52 <elliott> SCARED YET
20:23:10 <elliott> yes, that really processes the internal monadic stuffs as well as using it as an action.
20:23:11 <elliott> mwahahaha.
20:23:43 <olsner> Chunk (Push p) . parse =<< r
20:24:31 <elliott> olsner: lol
20:24:38 <elliott> @pl r >>= \s' -> Chunk (Push p) (parse s')
20:24:38 <lambdabot> Chunk (Push p) . parse =<< r
20:24:45 <elliott> oerjan: NOW WHAT FANCY MONAD FUNCTION IS THAT
20:24:52 <oerjan> !underload (hi)Sthere
20:24:57 <EgoBot> hiAttempt to execute unknown command 116
20:25:21 <olsner> hmm, turns out I'm doing @pl in my head whenever I see haskell code
20:25:22 <elliott> I really wish Haskell had overloaded chars
20:25:26 <fizzie> ^ul (hy)Sterical
20:25:27 <fungot> hy ...bad insn!
20:25:30 -!- MigoMipo has joined.
20:25:41 <elliott> :t lookup
20:25:42 <lambdabot> forall a b. (Eq a) => a -> [(a, b)] -> Maybe b
20:25:43 <fizzie> (Just checking what the error message was.)
20:25:49 <oerjan> elliott: it has overloaded strings
20:25:56 <elliott> oerjan: but not chars
20:26:07 <elliott> we also need overloaded lists so that ['a','b','c'] can be kept to mean "abc" :D
20:27:14 <oerjan> :t msum
20:27:15 <lambdabot> forall (m :: * -> *) a. (MonadPlus m) => [m a] -> m a
20:27:19 <elliott> :t maybe
20:27:20 <lambdabot> forall b a. b -> (a -> b) -> Maybe a -> b
20:27:39 <oerjan> :t fromMaybe
20:27:40 <lambdabot> forall a. a -> Maybe a -> a
20:28:27 <oerjan> i wonder if comma-separated lists used msum and return back when lists were monad comprehensions
20:29:04 <elliott> http://en.wikipedia.org/wiki/List_of_emoticons look at the last row of the first table
20:29:16 <elliott> oerjan: heh, [1,2,3] denoted a monad comprehension?
20:29:22 -!- pikhq_ has changed nick to pikhq.
20:29:30 <oerjan> elliott: that's what i'm asking
20:30:08 <elliott> ONLY ONE WAY TO FIND OUT, anyone have a really old hugs release?
20:30:14 <oerjan> i _think_ [x] would have had to be a synonym for return x, to fit with the rest, i'm just less sure of commas
20:30:21 <elliott> hmm
20:30:24 <elliott> I guess it was Gofer then
20:30:49 <elliott> oerjan: what would [x,y,z] be? [msum [return x, return y, return z]]?
20:30:53 <oerjan> @hoogle (a -> m b) -> [a] -> m b
20:30:53 <lambdabot> Prelude concatMap :: (a -> [b]) -> [a] -> [b]
20:30:53 <lambdabot> Data.List concatMap :: (a -> [b]) -> [a] -> [b]
20:30:53 <lambdabot> Prelude (=<<) :: Monad m => (a -> m b) -> m a -> m b
20:31:13 <elliott> oerjan: why do I get the impression that Haskell 98 made Haskell quite a bit less awesome?
20:31:15 <oerjan> elliott: yeah
20:31:27 <oerjan> elliott: because many people agree
20:31:32 <elliott> :D
20:32:00 <elliott> oerjan: i just want monad comprehensions, they're cool
20:32:13 <elliott> wonder if that guy who added them to ghc ever submitted the patch
20:32:15 <oerjan> elliott: well i think they were recently added again
20:32:22 <elliott> there was a blag post about it
20:32:25 <elliott> but afaik it's not in mainline ghc
20:32:42 <oerjan> there was a recent reddit post about someone using it for sql i think
20:32:49 <elliott> interesting how Haskell started off as a very standards-defined language, and then when standards stopped getting published it became implementation-defined by GHC
20:32:56 <elliott> even more surprising considering that this was the case even when GHC wasn't the only player
20:32:59 <oerjan> (stealing linq back from c#)
20:33:21 <elliott> that's embarrassing, having to add a feature removed in the past just to match C# :D
20:34:58 -!- Behold has joined.
20:36:27 -!- BeholdMyGlory has quit (Ping timeout: 240 seconds).
20:39:53 <pikhq> elliott: It seems that monad comprehensions will be back in GHC 7.2
20:39:58 <elliott> Yay.
20:40:54 <pikhq> (as that's the deadline for the feature request, nobody is opposed to adding it, and Simon Peyton-Jones is for it.)
20:41:06 <elliott> @hoogle (a -> a') -> (a,b) -> (a',b)
20:41:07 <lambdabot> Data.Graph.Inductive.Query.Monad mapFst :: (a -> b) -> (a, c) -> (b, c)
20:41:07 <lambdabot> Data.Graph.Inductive.Query.Monad (><) :: (a -> b) -> (c -> d) -> (a, c) -> (b, d)
20:41:07 <lambdabot> Data.Graph.Inductive.Graph nmap :: DynGraph gr => (a -> c) -> gr a b -> gr c b
20:41:12 <elliott> hm
20:41:16 <elliott> what's the arrow thing for that
20:45:44 <elliott> HEY OERJAN
20:45:45 -!- copumpkin has changed nick to dddarius.
20:45:46 <elliott> WHAT'S THE ARROW THING FOR THAT
20:45:52 -!- elliott has changed nick to ddddarius.
20:48:11 -!- dddarius has changed nick to copumpkin.
20:48:33 -!- ddddarius has changed nick to elliott.
20:49:36 <oerjan> :t first
20:49:36 <lambdabot> forall (a :: * -> * -> *) b c d. (Arrow a) => a b c -> a (b, d) (c, d)
20:51:36 -!- poiuy_qwert has joined.
20:53:29 <elliott> right
20:53:34 <elliott> > first succ (1,2)
20:53:35 <lambdabot> (2,2)
20:55:38 <elliott> > let foo | Just x <- Just 3 = x | otherwise = 4 in foo
20:55:39 <lambdabot> 3
20:55:41 <elliott> yay
20:56:19 <oerjan> lambdabot does pattern guards now?
20:56:45 <elliott> evidently
20:56:52 <elliott> oerjan: *Caleskell
20:57:25 <oerjan> well that's not just caleskell, it doesn't define anything just sets an option?
20:57:49 <elliott> oerjan: IT'S ALL PART OF THE CALESKELL REPORT
20:58:05 <oerjan> i just recall lambdabot was pretty much restricted to '98 syntax when i was around there
20:59:15 <elliott> oerjan: no it has all sorts of options.
20:59:18 <elliott> not tuple sections though, IIRC they clash
20:59:20 <oerjan> um is this caleskell report an actual document?
20:59:22 <elliott> also no template haskell i believe
20:59:24 <elliott> presumably for security
20:59:25 <elliott> oerjan: no :D
20:59:43 <oerjan> AM DISAPPOINT
20:59:51 <oerjan> food ->
21:04:11 <oerjan> one thing i noticed recently
21:04:16 <oerjan> > (0$0$)
21:04:17 <lambdabot> The operator `GHC.Base.$' [infixr 0] of a section
21:04:17 <lambdabot> must have lower prec...
21:04:39 <elliott> oerjan: how quickly do you eat? :P
21:04:43 <oerjan> $ is still infixr, contrary to a well known Cale suggestion
21:04:48 <elliott> lol
21:04:50 -!- BeholdMyGlory has joined.
21:04:55 -!- Behold has quit (Read error: Operation timed out).
21:04:59 <elliott> we should get that fixed!
21:05:11 <oerjan> i haven't actually started eating, i just made my slices of bread...
21:05:38 <elliott> <elliott> hey Cale, you should fix Caleskell, ($) is still infixr
21:06:09 <oerjan> you actually told him? :D
21:06:36 <elliott> <elliott> theory: people like spending more time coding for shorter runtime, because coding is busywork and you don't notice time passing
21:06:36 <elliott> <elliott> whereas execution is usually uneventful until you get a result, and thus the time drags out
21:06:38 <elliott> oerjan: yep :P
21:06:56 <oerjan> nice theory
21:08:21 <Sgeo> elliott, I don't get the ($) thing
21:08:23 <Sgeo> Shouldn
21:08:35 <Sgeo> Shouldn't it be infixr?
21:08:59 <Sgeo> Or am I thinking too imperatively?
21:09:09 <oerjan> Sgeo: Cale believes that people should write f . g $ h x instead of f $ g $ h x chains
21:09:09 <elliott> oerjan: shortened by gwern:
21:09:11 <elliott> <gwern> coding is fun. waiting isn't.
21:09:21 <elliott> doesn't everyone do "f . g $ x" instead of "f $ g $ x"?
21:09:24 <elliott> the latter is kinda perverse
21:09:26 <elliott> maybe cale started that
21:09:37 <oerjan> if people do that, $ becomes more useful as infixl
21:09:50 <oerjan> elliott: yeah i guess he's been championing it for a while
21:10:06 <Vorpal> elliott, very nice theory about runtime
21:10:10 <Lymia> f.g x means f (g x) correct?
21:10:17 <elliott> Lymia: no
21:10:18 <elliott> f . (g x)
21:10:23 <elliott> f.g$x means f (g x)
21:10:27 <elliott> so does (f.g) x
21:10:30 <Lymia> Ah.
21:10:51 -!- impomatic has joined.
21:10:56 <oerjan> Lymia: f.g$x = f (g x) is not a parsing rule btw, it just follows from the definitions of . and $
21:11:04 * Lymia makes a note to seriously learn Haskell
21:11:08 <Vorpal> <elliott> the latter is kinda perverse <-- why
21:11:21 <elliott> <ezyang> aristid: Coding is fun. Being wrapped up in a puzzle that you're gradually solving is fun. Getting stuck is not.
21:11:22 <elliott> <ezyang> Lack of puzzle (reduction of coding to data entry) is not fun.
21:11:22 <elliott> <ezyang> Of course, I find that when I get unstuck is usually when I learn the most.
21:11:24 <elliott> <aristid> ezyang: full agreement
21:11:26 <elliott> my theory, 'tis sparking of much discussion
21:11:29 <elliott> Vorpal: because it's hideous
21:11:37 <elliott> f . g . h $ x looks much better
21:11:42 <elliott> and the $ serves as a visual indicator
21:11:48 <elliott> "ok, enough stacking, we're applying now"
21:11:54 * oerjan is still wrapped up in minimal string puzzles, now trying squares...
21:12:03 <elliott> oerjan: i should have said f.g $ x
21:12:07 <elliott> f.g$x is unspeakably ugly :)
21:12:09 <Vorpal> elliott, so purely aesthetical reasons then?
21:12:10 <oerjan> i gave up on the base 9 primes, it seemed to blow up
21:12:16 <elliott> Vorpal: *aesthetic
21:12:28 <elliott> Vorpal: if it wasn't for aesthetics, you could just write f (g (h x)).
21:12:35 -!- impomatic has quit (Client Quit).
21:12:37 <Vorpal> elliott, hm isn't aesthetic the noun rather than the adjective?
21:12:51 <elliott> nobody says it singular afaik
21:12:53 <elliott> aesthetics is the noun
21:12:55 <elliott> aesthetic is the adjective
21:12:59 <Vorpal> elliott, ah
21:13:00 <elliott> well
21:13:02 <elliott> yeah
21:13:54 <fizzie> The noun aesthetic has 1 sense (no senses from tagged texts)
21:13:54 <fizzie>
21:13:54 <fizzie> 1. aesthetic, esthetic -- ((philosophy) a philosophical theory as to what is beautiful; "he despised the esthetic of minimalism") ← see, there.
21:14:04 <fizzie> (But it does list "aesthetic, esthetic, aesthetical, esthetical" as the adjective.)
21:14:09 <elliott> Yes, that was the exception I was thinking of.
21:14:13 <elliott> Aesthetical is ridiculous though. :p
21:14:22 <fizzie> Aisthetical.
21:14:36 <Vorpal> elliott, it was a good try I think
21:14:52 <elliott> Also anyone who says "esthetic*" is evil.
21:14:56 <elliott> It's just ugly.
21:15:01 <elliott> Unaesthetical, one might say.
21:15:21 <Vorpal> elliott, funnily estetisk is the Swedish adjective
21:15:33 <oerjan> and the norwegian one
21:15:41 <elliott> > ord '('
21:15:42 <lambdabot> 40
21:15:43 <elliott> > ord ')'
21:15:44 <lambdabot> 41
21:15:58 <Vorpal> oerjan, isn't estetik the noun?
21:16:10 <oerjan> Vorpal: estetikk
21:16:17 <Vorpal> oerjan, *not* kk in Swedish
21:16:30 <Vorpal> oerjan, and I doubt it is ck
21:16:37 <elliott> *Main> parse . map ord8 $ "(:aSS):aSS"
21:16:38 <elliott> Chunk Duplicate (Chunk Enclose (Chunk Output (Chunk Output (Chunk (Push [Duplicate,Enclose,Output,Output]) (Chunk Duplicate (Chunk Enclose (Chunk Output (Chunk Output (End [])))))))))
21:16:38 <elliott> gah!
21:16:40 <elliott> that's not right
21:17:01 <elliott> oh, duh
21:17:10 <elliott> the structure, it is the wrongs!
21:17:12 <oerjan> Vorpal: well maybe you pronounce it with a long i?
21:17:22 <Vorpal> oerjan, indeed I do
21:17:37 <oerjan> so it's logical in both languages
21:17:59 <Vorpal> oerjan, yes indeed but more so in Swedish (as usual) ;P
21:18:08 * oerjan swats Vorpal -----###
21:18:15 <Gregor> Lysol: Actively evil, or just horribly misguided?
21:18:30 <Vorpal> Gregor, who/what?
21:18:41 <Gregor> Somebody in the US: Lysol: Actively evil, or just horribly misguided?
21:18:51 <oerjan> Gregor: i thought you were saying Lymia for a moment there and wondered what the poor guy had done
21:19:24 <Lymia> Killed his FYB bot?
21:19:25 <Lymia> Dunno.
21:19:36 <Lymia> I should get to working on an evolver for BF Joust now.
21:19:40 <elliott> This Lysol solution was also used as a birth control agent, as post-coital douching was a popular method of preventing pregnancy at that time. The use of Lysol was later discouraged by the medical community as it tended to eliminate the bacteria normal to the healthy vagina, thus allowing more robust, health-threatening bacteria to thrive, and may have masked more serious problems that certain odors in
21:19:40 <elliott> dicated in the first place.[8] All the same, Joseph De Lee, a prominent American obstetrician who held great sway over American obstetric practice through his writings, encouraged the use of Lysol during labor. "...[J]ust before introducing the hand, the vagina is liberally flushed with 1 per cent lysol solution squeezed from pledgets of cotton, the idea being to reduce the amount of infections matter
21:19:41 <pikhq> Gregor: Merely misguided.
21:19:41 <elliott> unavoidably carried into the puerperal wounds and up into the uterus by the manipulations."
21:19:46 <Lymia> Though it's doubtful Ic ould get anything on the hill.
21:19:47 <elliott> Gregor: My googling gave me only this.
21:19:52 <elliott> [[It has been reported that some alcoholics use some formulations of Lysol as a beverage for its alcohol content. In some jurisdictions laws have been passed prohibiting the sale of this and similar products to a person whom the seller believes is likely to use the product as a beverage.[11][12]
21:19:53 <elliott> Lysol was also used for suicide purposes (for example, by Vachel Lindsay and Charlotte Mew).]]
21:20:01 <elliott> Sounds like a ... great product :P
21:20:06 <pikhq> elliott: Lysol is *currently* commonly used as a disinfectant. Its history is fucking nuts.
21:20:20 <elliott> Ah, household disinfectants. Also known as: the stupidest fucking idea ever.
21:20:27 <Gregor> Yes
21:20:41 <elliott> LYSOL® Healthy Touch® No-Touch Hand Soap System
21:20:41 <elliott> Never Touch a Germy Soap Pump Again
21:20:46 <elliott> hmm
21:20:47 <pikhq> elliott: It's quite a bit better than household antibiotics, though.
21:20:48 <elliott> Dettol has that
21:20:53 <elliott> I bet Dettol is Lysol's UK brand.
21:21:00 <elliott> yep
21:21:01 <elliott> same company
21:21:03 <elliott> same shit
21:21:07 <elliott> DETTOL PROTECTS, FACT
21:21:15 <pikhq> elliott: At least Lysol won't start to induce resistant strains of bacteria.
21:21:18 * Sgeo still hasn't seen Ghostbusters
21:21:22 <elliott> :D
21:21:43 <elliott> 'Dettol Man' cleans himself to death --El Reg
21:21:56 <elliott> http://www.theregister.co.uk/2007/05/29/dettol_man/
21:22:03 <pikhq> ... Oh, fuck.
21:22:07 <elliott> ?
21:22:11 <pikhq> Lysol *does* produce resistant strains.
21:22:22 <elliott> :DDDDD
21:22:28 <Ilari> Heh... This HOWTO is extremely old (but still may be relevant): It talks about 6bone (dead and gone a LONG time ago).
21:22:41 <Sgeo> I just ate breakfast. I am now more hungry than before.
21:22:43 <pikhq> And even produces strains of bacteria resistant to antibiotics.
21:22:45 <Sgeo> Please explain this.
21:23:05 <elliott> THIS DOESN'T WORK probably because of RABIES
21:23:15 <elliott> cause of all bugs
21:23:32 <pikhq> (studies have found that a less-than-lethal exposure to benzalkonium chloride, the active ingredient in Lysol, induces a resistance to ciproflaxin in bacteria *that had never before been exposed to ciproflaxin*)
21:23:57 <pikhq> Why can't they just freaking use alcohol?
21:24:25 <elliott> http://en.wikipedia.org/wiki/Ptolemaic_dynasty#Simplified_Ptolemaic_family_tree
21:24:25 <pikhq> You're about as likely to get resistance to that as you are to get resistance to a freaking autoclave.
21:24:26 <elliott> "Many of the relationships shown in this tree are controversial."
21:24:49 <Sgeo> pikhq, aren't there some bacteria that are resistant?
21:25:10 <pikhq> Sgeo: Some bacteria can handle somewhat high concentrations of alcohol.
21:25:18 <pikhq> (see: yeast)
21:25:25 <elliott> this is so broke that i think it might actually be a robot
21:25:26 <pikhq> (... yeast are fungi, though)
21:25:32 <elliott> you're a fungi
21:25:56 <Phantom_Hoover> pikhq, yes, but it can't deal with more than 14% concentrations.
21:26:00 <Vorpal> <pikhq> elliott: It's quite a bit better than household antibiotics, though. <-- does US allow that?
21:26:12 <elliott> I presume he means antibiotic soap, etc.
21:26:24 <Vorpal> pikhq, you need prescription to get *any* antibiotics in Sweden
21:26:27 <Vorpal> elliott, what?
21:26:30 <elliott> Which is an epidemic in the UK here too.
21:26:34 <elliott> Erm.
21:26:37 <elliott> Antibacterial soap.
21:26:39 <elliott> OK, he said antibiotic.
21:26:41 <Vorpal> oh that
21:26:42 <elliott> I have no idea what pikhq is referringt o.
21:26:47 <pikhq> Sorry, I meant antibacterial shit.
21:26:54 <elliott> I presume Sweden has antibacterial soap :P
21:27:00 <elliott> Which, btw, should be illegal.
21:27:09 <Sgeo> Do antibacterial products allow for resistance?
21:27:12 <elliott> Except in hospitals, I guess.
21:27:18 <pikhq> elliott: Some of those are actually using antibiotics that managed to get classed as antibacterials somehow.
21:27:25 -!- TLUL has changed nick to deadmau5_.
21:27:26 <pikhq> Though you can get *actual OTC antibiotics* here.
21:27:27 <elliott> pikhq: *Ouch.*
21:27:31 <Vorpal> elliott, I have no idea. Isn't all soap antibacterial in some sense, in that it removes bacterias...
21:27:32 <elliott> *sigh*
21:27:38 <elliott> You guys are gonna ruin things for the rest of us.
21:27:45 <elliott> Vorpal: Antibacterial soap is any cleaning product to which active antibacterial ingredients have been added. These chemicals kill bacteria and microbes, but are no more effective at deactivating viruses than any other kind of soap or detergent, and they also kill nonpathogenic bacteria.[1]
21:27:47 <Sgeo> pikhq, wait what?
21:27:56 <elliott> Vorpal: Also: At one conference, Dr. Stuart Levy, a microbiologist at Tufts University, cites these studies to conclude: "Dousing everything we touch with antibacterial soaps and taking antibiotic medications at the first sign of a cold can upset the natural balance of microorganisms in and around us, leaving behind only the 'superbugs'."1
21:27:58 -!- deadmau5_ has changed nick to TLUL.
21:28:05 <elliott> Note: This shit is incredibly popular in the UK!
21:28:07 <elliott> We're all fucking fucked!
21:28:25 <elliott> That plus antibiotics-because-I-sneezed, but that's more a US problem.
21:28:30 <olsner> bah, what else is new.. the apocalypse will rinse us all away
21:28:42 <elliott> Oh, and of course the morons who will stop taking antibiotics as soon as they feel better, even if they haven't finished the course.
21:28:51 <elliott> Life is wasted on idiots.
21:28:55 <pikhq> elliott: There's also give-antibiotics-to-all-livestock.
21:29:01 <elliott> pikhq: -__-
21:29:24 <pikhq> Which is actually made necessary by the *ridiculously* cramped and unsanitary conditions many livestock are raised in.
21:29:28 <Ilari> There's basically two methods of action for antimicrobials: 1) Those that have specific action (and resistance can develop). 2) Brute force agents that do heck a lot of damage to everything (unlikely to develop resistance).
21:29:32 <elliott> > return () :: ((),())
21:29:33 <lambdabot> No instance for (GHC.Base.Monad ((,) ()))
21:29:33 <lambdabot> arising from a use of `GHC.Bas...
21:29:37 <elliott> hmm
21:29:43 <elliott> oerjan: is ((,) t) not a monad?
21:30:21 <oerjan> hm... not sure, it's isomorphic to Writer
21:30:37 <elliott> oerjan: oh, it's not, you can't do return
21:30:41 <elliott> return x = (???,x)
21:30:53 <oerjan> elliott: it needs Monoid t
21:31:16 <pikhq> Ilari: The absurdly prevalent use of stuff that resistance can develop to *really* bothers me.
21:31:17 <Phantom_Hoover> http://www.irregularwebcomic.net/2932.html
21:31:21 <oerjan> but () is a monoid...
21:31:25 <elliott> oerjan: right
21:31:29 <elliott> return x = (mzero, x)
21:31:30 <oerjan> > mempty :: ()
21:31:30 <Phantom_Hoover> Is this a subtle Casey & Andy tribute, or do I misremember?
21:31:30 <lambdabot> ()
21:31:40 <pikhq> Especially as it's really, really not hard to get the more brute-force antimicrobial agents.
21:31:40 <elliott> (a,b) >>= f = f b
21:31:41 <elliott> hmm
21:31:42 <elliott> surely not
21:31:53 <elliott> gotta be a better definition for >>= there
21:31:54 <Phantom_Hoover> Surely (,) == Either.
21:31:54 <elliott> oh wait
21:31:58 <elliott> i'll try join instead
21:32:01 <elliott> Phantom_Hoover: errrr... no
21:32:01 <pikhq> We've been making one such agent for 9,000 years now!
21:32:16 <Phantom_Hoover> elliott, oh, yes.
21:32:23 <elliott> oerjan: ok so join :: (t,(t,a)) -> (t,a)
21:32:28 <pikhq> (granted, you need to distill it to make it actually effective at sterilisation, but hey.)
21:32:30 <oerjan> elliott: (a,b) >>= f = first (a `mappend`) f b
21:32:35 <elliott> oerjan: so it's either "join (a,(_,b)) = (a,b)" or "join (_,(a,b)) = (a,b)"
21:32:36 -!- poiuy_qwert has quit (Quit: This computer has gone to sleep).
21:32:40 <elliott> heh
21:32:40 <oerjan> er * $
21:32:40 <elliott> nice
21:32:49 <elliott> oerjan: what's join with that definition?
21:32:49 <Vorpal> <Phantom_Hoover> Is this a subtle Casey & Andy tribute, or do I misremember? <-- to me it looks like a reference to Dr. Who and a reference to Back to the Future?
21:32:57 <elliott> oerjan: join (a,(b,c)) = (a `mappend` b, c)?
21:33:02 <Phantom_Hoover> Vorpal, I mean the "JURRRZ!".
21:33:16 <Phantom_Hoover> Which IIRC was the C&A time travel noise.
21:33:17 <Vorpal> Phantom_Hoover, oh. No idea.
21:33:32 <Vorpal> Phantom_Hoover, haven't read/watched/heard of C&A
21:33:39 <Ilari> The stuff in 2) includes stuff that just plain dissolves cell membranes or attacks darn near everything inside the cell (and can penetrate cell membranes).
21:33:48 <oerjan> Phantom_Hoover: the jurrrz you mean?
21:33:53 <Phantom_Hoover> oerjan, yes.
21:33:57 <pikhq> Ilari: Yup.
21:34:05 <pikhq> Ilari: For instance, ethanol. :)
21:34:08 <Ilari> Yeah, antibiotic resistance is a big problem. MRSA is bad enough. VRSA is even worse (thankfully rare).
21:34:28 <Ilari> Or soap (does nasty things to cell membranes).
21:34:36 <elliott> tv tropes: [[All There In The Manual: Jenn's occupation was "international jewel thief", which you should have known if you had bought David Morgan-Mar's C&A GURPS module.]]
21:34:42 <elliott> --[[CaseyAndAndey]]
21:34:44 <elliott> (I haven't read the comic)
21:34:48 <pikhq> Ah, yeah, standard soap does that to an extent as well.
21:34:50 <elliott> (but the mention of DMM's name makes me think it's likely to be a reference)
21:34:58 <Phantom_Hoover> elliott, DMM was a big fan.
21:35:03 <oerjan> <Phantom_Hoover> Surely (,) == Either. <-- no.
21:35:07 <elliott> then it seems likely.
21:35:10 <Phantom_Hoover> oerjan, I admitted that.
21:35:20 <Phantom_Hoover> elliott, yes, but it might not have been "JURRRZ".
21:35:41 <pikhq> And of course there's the ever-popular bleach.
21:36:14 <Ilari> And then there's the whole "ok this is viral but let's just give you antibiotics as placebo / just to be sure".
21:36:17 <elliott> oerjan: really I just want a monad that lets me handle "parser :: String -> ([Result], String)" nicely.
21:36:26 <pikhq> Ilari: Pisses me off even more.
21:36:37 <oerjan> <elliott> oerjan: join (a,(b,c)) = (a `mappend` b, c)? <-- think so
21:36:42 <elliott> oerjan: i.e. some way to write what amounts to "foo : parse xs" that's nicer than "(foo:ps, xs') where (ps,xs') = parse xs"
21:36:53 <pikhq> Every single time someone does that, antibiotics become less effective.
21:36:59 <elliott> oerjan: would (foo :) <$> parse xs work maybe?
21:37:02 <elliott> with (String, [Result])
21:37:03 <elliott> or something
21:37:15 <oerjan> Phantom_Hoover: i thought it looked like you denied it :D
21:37:23 <Ilari> Oh, and it isn't just doctors: "I feel better so let's save the rest for later".
21:38:04 <pikhq> Gaaaah.
21:38:15 <pikhq> Antibiotics really, really need to be strictly regulated.
21:38:27 <elliott> Ilari: that's what i said before
21:38:37 <oerjan> elliott: why don't you just look at the Writer code :D
21:38:37 <elliott> i'm not sure there's even a good solution to that
21:38:44 <elliott> apart from instant death penalty if you're found doing that
21:39:05 <elliott> oerjan: hm what would the type be for that?
21:39:07 <elliott> i've never used writer :D
21:39:13 <pikhq> elliott: If caught, you are given a jail sentence for the duration of any future antibiotic treatments.
21:39:17 <oerjan> it _is_ (,) except for a strange wrapping
21:39:20 <elliott> pikhq: *killed
21:39:25 <Phantom_Hoover> elliott, are you going to read IWC any time soon?
21:39:40 <oerjan> :t Writer
21:39:41 <lambdabot> Not in scope: data constructor `Writer'
21:39:41 <elliott> Phantom_Hoover: I check it occasionally. Its entire archive is on the Fiction Backlog which pikhq knows all about.
21:39:45 <elliott> :info Writer
21:39:46 <oerjan> :t runWriter
21:39:47 <lambdabot> forall w a. Writer w a -> (a, w)
21:39:55 <elliott> oerjan: ghci really needs some kind of :tellMeAbout
21:39:57 <Phantom_Hoover> Aha, http://galactanet.com/comic/view.php?strip=660
21:39:59 <pikhq> elliott: The idea being that you are mother-fucking taking the whole course, and you are *not* leaving with any extras.
21:40:01 <elliott> that works on types, classes, functions, constructors, ...
21:40:04 <Phantom_Hoover> So it looks like it was indeed a tribute.
21:40:38 <elliott> :t write
21:40:39 <lambdabot> forall (a :: * -> * -> *) w. (ArrowWriter w a) => a w ()
21:40:45 <oerjan> <elliott> oerjan: really I just want a monad that lets me handle "parser :: String -> ([Result], String)" nicely.
21:40:46 <elliott> oerjan: is that caleskell?
21:41:06 <oerjan> um is the last String supposed to be the remaining part of the argument?
21:41:09 <elliott> oerjan: yes
21:41:15 <elliott> oerjan: I realise that this is ReadS
21:41:22 <elliott> but I don't think ReadS comes with convenient functions for the kind of thing i'm doing
21:41:25 <oerjan> because if so then what you have there is State String [Result]
21:41:28 <elliott> also, String is actually [Word8]
21:41:30 <elliott> oerjan: well yes...
21:41:32 <elliott> oerjan: but that's so imperative
21:41:33 <elliott> and ugly
21:41:34 <elliott> and imperative
21:41:35 <elliott> and ugly!
21:41:37 <Phantom_Hoover> elliott, what is the Fiction Backlog?
21:41:44 <elliott> Phantom_Hoover: My Backlog, of Fiction.
21:41:44 <elliott> :t runStateT
21:41:45 <lambdabot> forall s (m :: * -> *) a. StateT s m a -> s -> m (a, s)
21:42:03 <elliott> oerjan: hm what would non-do-notation using State code look like?
21:42:44 <elliott> quintopia: you win a prize
21:42:54 <Ilari> One good thing about MRSA is that the antibiotic those are mostly vulernable to is really nasty to use...
21:43:01 <elliott> on 2007-11-15, you figured out what took #esoteric until 2010-01-22
21:43:24 <Phantom_Hoover> http://fashionablygeek.com/t-shirts/dinosaurs-as-mammals-saviors-shirt/
21:43:38 <elliott> quintopia: and also, fixed it at the same time, whereas it took a famous member of #esoteric two months after my quoted date
21:43:42 <Phantom_Hoover> This is the only amusing T-shirt I am actually tempted to buy.
21:43:59 -!- poiuy_qwert has joined.
21:44:02 <elliott> Phantom_Hoover: Apart from every Dinosaur Comics tshirt?
21:44:06 <oerjan> elliott: ReadS has a list wrapper too, for possible nondeterminism
21:44:08 <Phantom_Hoover> Wait, it doesn't credit SMBC for it!
21:44:12 <Phantom_Hoover> THEY WILL PAY
21:44:13 <elliott> oerjan: indeed
21:44:15 <elliott> Phantom_Hoover: Apart from every Dinosaur Comics tshirt?
21:44:29 <Phantom_Hoover> elliott, I have not actually read most of DC.
21:44:42 <elliott> Phantom_Hoover: Nobody has, but that's okay, because it has NO CHRONOLOGY WHATSOEVER.
21:44:52 <elliott> omg
21:44:52 <elliott> omg
21:44:53 <elliott> omg
21:44:54 <elliott> http://www.topatoco.com/merchant.mvc?Screen=PROD&Store_Code=TO&Product_Code=ASW-QW-IMNOT&Category_Code=QW
21:44:54 <elliott> they made them
21:46:44 * Phantom_Hoover wonders if he should see if Dresden Codak has updated.
21:47:07 <elliott> I DISTINCTLY RECALL EVERYONE COLLECTIVELY DECIDING THAT DRESDEN CODAK SHOULD SUCK A DICK
21:47:16 <elliott> Updated Feb 1st, apparently.
21:47:24 <Phantom_Hoover> It updates?
21:47:36 <Phantom_Hoover> http://www.topatoco.com/merchant.mvc?Screen=PROD&Store_Code=TO&Product_Code=BEAT-PONY-ONESIE&Category_Code=BEAT
21:47:37 <Phantom_Hoover> OMG
21:48:04 <elliott> Topatoco is pretty much the only thing anyone should ever buy products from.
21:48:04 <Ilari> (But still, MRSA is bad enough...)
21:48:17 <Phantom_Hoover> Ilari, not as bad as Dresden Codak!
21:48:32 <elliott> The only thing worse than Dresden Codak... is not the holocaust. It does in fact not exist.
21:48:35 <elliott> INFINITE
21:48:36 <elliott> WORSENESS
21:48:58 <Phantom_Hoover> I WISH I COULD WEAR NOVELTY T-SHIRTS
21:49:04 <Phantom_Hoover> BUT I WEAR A JUMPER LIKE ALL THE TIME
21:49:20 <elliott> THAT IS BECAUSE YOU ARE SCOTTISH
21:49:39 <Ilari> Fun tactics from plant kingdom: Some plant uses 6(!) different toxins (all quite toxic to against the same things but via different mechanisms) as all at once defense...
21:49:48 <elliott> http://www.topatoco.com/merchant.mvc?Screen=PROD&Store_Code=TO&Product_Code=ASP-SCIENCEIS&Category_Code=ALLSHIRTS
21:50:12 <Ilari> Real nasty for those pests to develop resistance...
21:50:54 <elliott> Phantom_Hoover: Perry Bible Fellowship hasn't been updated yet, SORRY TO RUIN YOUR DAY.
21:51:05 <Phantom_Hoover> elliott, I DON'T READ IT FOR SOME REASON
21:51:11 <elliott> Phantom_Hoover: what
21:51:13 <Phantom_Hoover> I MEAN, I'VE ALREADY READ ALL OF THE COMICS
21:51:22 <elliott> Phantom_Hoover: Well, it updates like once a year, so :P
21:51:23 <Phantom_Hoover> BUT I DIDN'T KEEP FOLLOWING IT
21:51:33 <elliott> From the creator of PBF: http://www.kickstarter.com/projects/2116548608/help-erase-the-national-debt-of-the-usa
21:51:36 <elliott> BEST KICKSTARTER PROJECT EVER
21:51:39 <elliott> $180
21:51:39 <elliott> PLEDGED OF $21,474,836 GOAL
21:51:44 <Phantom_Hoover> http://www.kickstarter.com/projects/2116548608/help-erase-the-national-debt-of-the-usa
21:51:51 <elliott> "If we all got together we could remedy this problem.
21:51:51 <elliott> NOTE: KICKSTARTER HAS A MAXIMUM GOAL OF $21,474,836.47.
21:51:51 <elliott> THIS IS NOT MY GOAL. THE GOAL IS 15 TRILL."
21:51:52 <Phantom_Hoover> Goddam it.
21:51:57 <elliott> BEST THING EVER
21:51:59 <Phantom_Hoover> http://www.topatoco.com/merchant.mvc?Screen=PROD&Store_Code=TO&Product_Code=RB-MAGNETS&Category_Code=RB
21:52:17 <Phantom_Hoover> WANT
21:53:40 <elliott> Phantom_Hoover: http://www.qwantz.com/adventures/
21:55:28 <elliott> ^ul (a
21:55:28 <fungot> ...unterminated (!
21:55:32 <elliott> !underload (a
21:55:37 <elliott> yay?
21:55:39 <EgoBot> Error: Expected ) at end of input
21:55:40 <elliott> !underload (a)S
21:55:40 <EgoBot> a
21:55:42 <elliott> darn
21:56:53 <elliott> *Main> eval . fst . parse . map ord8 $ "(:aSS):aSS"
21:56:53 <elliott> <interactive>:1:0:
21:56:53 <elliott> No instance for (Show (Stack -> EvalResult))
21:56:57 <elliott> oerjan: i totally agree, $ should be infixl
21:57:00 <elliott> so i don't have to parenise :P
21:57:30 <elliott> Phantom_Hoover: Buy this: http://www.topatoco.com/merchant.mvc?Screen=PROD&Store_Code=TO&Product_Code=SMBC-DANGEROUS&Category_Code=SMBC-SHIRTS
21:57:39 <elliott> It would be better without the caption, though.
21:58:03 <Phantom_Hoover> elliott, but it makes more sense with the caption!
21:58:12 <elliott> IT IS NOT TO MAKE SENSE IT IS TO FEEL SMUG AND HIP
22:01:08 <Phantom_Hoover> HOW CAN I DO THAT WHEN I AM WEARING A JUMPER OVER IT
22:01:57 <elliott> oh shit, i need bytestring
22:03:11 <Phantom_Hoover> http://i.imgur.com/lO9OV.jpg
22:03:34 <Phantom_Hoover> My inner Scot is asking why England, Ireland and Wales all get included on that.
22:05:44 <elliott> It's a conspirac.
22:05:47 <elliott> *conspiracy.
22:05:55 <Phantom_Hoover> I thought they had cut you short.
22:05:57 <elliott> hahahahaha scotland isn't on there
22:05:57 <elliott> :D
22:06:12 <Phantom_Hoover> But yes, this is just ANOTHER EPISODE of the CAMPAIGN OF OPPRESSION from Westminster.
22:06:28 <Phantom_Hoover> (Yes, Westminster made that image.)
22:06:48 <elliott> :D
22:07:17 <oerjan> that is a completely uninteresting question.
22:07:24 <elliott> oerjan: what is
22:07:31 <Phantom_Hoover> oerjan, AHA
22:07:32 <elliott> oh, did Sgeo say something.
22:07:33 <oerjan> the important question is WHY IS THERE A SWEDE BUT NO NORWEGIAN
22:07:34 <elliott> Phantom_Hoover: QUICK! Note how awesome the Burro 2.0 specification is! http://catseye.tc/projects/burro/doc/burro.html
22:07:36 <elliott> oh
22:07:54 <Phantom_Hoover> oerjan, CLEARLY THE SAME PEOPLE ARE KEEPING US DOWN
22:07:57 <elliott> Phantom_Hoover: THE SPECIFICATION IS EXECUTABLE SEMANTICS IN THE FORM OF LITERATE HASKELL, THAT ALSO SERVES AS THE REFERENCE INTERPRETER
22:08:02 <Phantom_Hoover> JOIN ME, BROTHER
22:08:19 <elliott> DUDE
22:08:20 <elliott> ADMIRE
22:08:20 <elliott> THE
22:08:21 <elliott> AWESOME
22:08:31 <Phantom_Hoover> elliott, yesyesyes.
22:08:35 <elliott> NO WRONG
22:08:36 <elliott> *TOTAL
22:08:38 <elliott> AWESOME
22:08:50 <Phantom_Hoover> THE OPERATIVE ISSUE IS THE WESTMINSTER/STOCKHOLM CONSPIRACY
22:09:25 <augur> elliott: todays nedroid is so you
22:09:44 <elliott> nedroid is always e
22:09:44 <elliott> *me
22:09:52 <augur> yes but today its especially you
22:09:57 * augur hugs elliottato
22:10:40 <elliott> meanwhile, in the realm of scary functions:
22:10:42 <elliott> fixIO :: (a -> IO a) -> IO a
22:11:06 <oerjan> mm, fixIO
22:11:23 <elliott> oerjan: HOW IS THAT MM :D
22:11:25 <Phantom_Hoover> How does that...
22:11:25 <augur> thats an a-in-IO-a continuation, surely!
22:12:08 <Phantom_Hoover> I mean, surely it would need typeclass constraints...
22:12:16 <oerjan> :t fixIO
22:12:17 <lambdabot> Not in scope: `fixIO'
22:12:31 <oerjan> um
22:12:40 <oerjan> :t mfix
22:12:41 <lambdabot> forall a (m :: * -> *). (MonadFix m) => (a -> m a) -> m a
22:12:59 <oerjan> i think fixIO is the IO case of that
22:15:36 <oerjan> elliott: also: see Malbolge Unshackled implementation.
22:15:43 <Phantom_Hoover> http://i.imgur.com/bIooj.png
22:15:46 <Phantom_Hoover> I don't get it.
22:15:58 <elliott> oerjan: right
22:16:04 <elliott> Phantom_Hoover: -minecraft
22:16:09 <Phantom_Hoover> Oh, yes.
22:16:12 <augur> what
22:16:30 <olsner> Phantom_Hoover: that's fun, take a random image and paint a big circle and HOW?!? somewhere
22:16:42 <elliott> :D
22:16:43 <elliott> omg
22:16:44 <elliott> best trolling method
22:16:46 <Sgeo> elliott, am I on ignore?
22:16:48 <olsner> yep, a variant of the "when you see it" troll
22:17:37 <Gregor> http://www.youtube.com/watch?v=C8Wu3Bps9ic <-- this is Vorpal
22:17:54 <elliott> Gregor: I have already said that :P
22:18:02 <elliott> olsner linked to one of those and I said that I bet Vorpal is like that in real life.
22:18:04 <Gregor> So's your face.
22:18:07 <elliott> IRC is the only place where he can seem calm and relaxed.
22:18:15 <elliott> It's therapeutic for him.
22:18:38 <olsner> outbursts are the key to staying calm
22:18:48 <Sgeo> Serenity Now?
22:19:10 <Gregor> SERENITY NOOOOOOOOOOOOOOOW!
22:19:16 <olsner> add the spices! GRRRR!
22:19:18 <oerjan> :t mfix \v -> do r1 <- newIORef ("boo!":v); readIORef r1
22:19:18 <lambdabot> parse error on input `\'
22:19:28 <oerjan> :t mfix $ \v -> do r1 <- newIORef ("boo!":v); readIORef r1
22:19:29 <lambdabot> Not in scope: `newIORef'
22:19:29 <lambdabot> Not in scope: `readIORef'
22:19:35 <Lymia> Gregor.
22:19:36 <oerjan> fff
22:19:49 <olsner> he actually did that line in english... still don't know if it's supposed to be in english or swedish
22:19:52 <Lymia> What is egojoust's return value?
22:20:03 <oerjan> :t mfix $ \v -> do r1 <- Data.IORef.newIORef ("boo!":v); Data.IORef.readIORef r1
22:20:04 <lambdabot> IO [[Char]]
22:20:07 <Gregor> Lymia: Idonno :P
22:20:25 <Lymia> Gregor, it'd be useful to know, as I intend on invoking it as an external program.
22:20:25 <Lymia> =p
22:20:32 <Gregor> That's how it works.
22:20:35 <Gregor> So its return value is useful.
22:20:39 <Gregor> But that doesn't mean I recall what it is.
22:20:40 <Phantom_Hoover> <Gregor> http://www.youtube.com/watch?v=C8Wu3Bps9ic <-- this is Vorpal ← SEE THE BRUTALITY THAT STOCKMINSTER ENTAILS
22:20:41 <Gregor> Look at report.c
22:20:52 <olsner> stockminster?
22:21:22 <elliott> olsner: the Westminster-Stockholm Conspiracy
22:21:29 <elliott> dedicated to destroying Scots and Nords worldwide
22:21:31 <elliott> yes, Nords is now a word
22:21:54 <olsner> actually, I think vorpal is the "retarded team member" to the left
22:21:57 <oerjan> nords and greeks
22:22:17 <Phantom_Hoover> oerjan, AHA, SO IT IS STOCKMINSTEROME
22:23:07 <elliott> `addquote <olsner> actually, I think vorpal is the "retarded team member" to the left
22:23:18 <HackEgo> 293) <olsner> actually, I think vorpal is the "retarded team member" to the left
22:23:35 <Phantom_Hoover> HE IS ONLY PLAYING THE FOOL
22:26:15 <Vorpal> hey you
22:26:26 <Phantom_Hoover> Vorpal, SHUT UP FASCIST
22:26:40 <Phantom_Hoover> MEL GIBSON^W^WWILLIAM WALLACE DIED FIGHTING YOUR KIND
22:26:59 <elliott> @pl x >> return y
22:26:59 <lambdabot> x >> return y
22:27:00 <Sgeo> `ul (elliott are you ignoring me?)S
22:27:01 <HackEgo> No output.
22:27:03 <elliott> :t (>>)
22:27:04 <lambdabot> forall (m :: * -> *) a b. (Monad m) => m a -> m b -> m b
22:27:07 <elliott> @hoogle m a -> b -> m b
22:27:08 <Phantom_Hoover> Sgeo, yes, yes is.
22:27:08 <lambdabot> Control.Applicative (<$) :: Functor f => a -> f b -> f a
22:27:08 <lambdabot> Control.Applicative (*>) :: Applicative f => f a -> f b -> f b
22:27:08 <lambdabot> Prelude (>>) :: Monad m => m a -> m b -> m b
22:27:19 <oerjan> :t (*>)
22:27:20 <lambdabot> forall (f :: * -> *) a b. (Applicative f) => f a -> f b -> f b
22:27:20 <Phantom_Hoover> *yes he is
22:28:05 <elliott> yay it works
22:28:07 <elliott> kind of
22:28:10 <elliott> :t ($>)
22:28:11 <lambdabot> Not in scope: `$>'
22:28:12 <elliott> :t (>$)
22:28:13 <lambdabot> Not in scope: `>$'
22:28:16 <elliott> :(
22:28:18 <Vorpal> Phantom_Hoover, that "http://www.youtube.com/watch?v=C8Wu3Bps9ic" is like cook going berserk or something
22:28:19 <Vorpal> :D
22:28:28 <elliott> no, it's regular ordinary Swedish meal time
22:28:31 <elliott> can't you read?
22:28:48 <Vorpal> elliott, well, could be in North Sweden maybe.
22:28:59 <Phantom_Hoover> Vorpal, it is a SATIRE of how you treat SCOTS, NORWEGIANS AND GREEKS
22:29:00 <Vorpal> elliott, we are far more begin in the southern parts
22:29:04 <elliott> Vorpal: Shut up, instrument of the Westminster-Stockholm conspiracy.
22:29:08 <elliott> That's what you'd _want_ us to think.
22:29:18 <Phantom_Hoover> elliott, it includes Rome as well.
22:29:34 <elliott> Vorpal: Shut up, instrument of the Westminster-Stockholm-Rome conspiracy.
22:29:35 <elliott> That's what you'd _want_ us to think.
22:29:44 <Vorpal> Phantom_Hoover, heh
22:30:04 <Phantom_Hoover> Vorpal, STOP TREATING US LIKE MEATBALLS
22:30:09 <Phantom_Hoover> FFS
22:30:13 <oerjan> :t runRWS
22:30:14 <lambdabot> forall r w s a. RWS r w s a -> r -> s -> (a, s, w)
22:30:14 <Phantom_Hoover> THEY HAVE UZBEK
22:30:24 <Phantom_Hoover> NOÖNE HAS EVER HEARD OF UZBEKISTAN
22:30:29 <oerjan> EVEN HASKELL IS TOUCHED BY THE CONSPIRACY
22:30:34 <Phantom_Hoover> IT'S DOUBLE LANDLOCKED FOR CHRIST'S SAKE
22:30:45 <elliott> oerjan: wat
22:31:09 <Phantom_Hoover> elliott, run Rome Westminster Stockholm.
22:31:14 <oerjan> elliott: the Rome-Westminster-Stockholm conspiracy, it's plain to see
22:31:18 <Phantom_Hoover> BUT OF COURSE YOU'D BE SCEPTICAL
22:31:24 <Phantom_Hoover> YOU ARE PART OF THE CONSPIRACY
22:31:24 <Vorpal> Phantom_Hoover, my favourite bit was "skål" in milk!
22:31:28 <Vorpal> so weird
22:32:11 <Ilari> Are AHA and ADA just plain clueless or is there something worse going on? :-/
22:32:12 <oerjan> Phantom_Hoover: um wasn't uzbekistan on borat or something
22:32:17 <Vorpal> oh my, pitepalt next time they said at the end
22:32:27 <Phantom_Hoover> oerjan, that was Kazakhstan.
22:32:31 <elliott> the perils of lazy IO:
22:32:33 <elliott> elliott@elliott-MacBookAir:~/Code/ul-exc-sem$ ./underload
22:32:33 <elliott> (:aSS):aSS
22:32:33 <elliott> [Invalid program]
22:32:33 <elliott> (:aSS):aSS
22:32:44 <elliott> first line is input
22:32:46 <oerjan> Phantom_Hoover: no, i mean the neighboring country he hated
22:32:50 <Vorpal> <Phantom_Hoover> NOÖNE HAS EVER HEARD OF UZBEKISTAN <-- uh yes?
22:32:56 <elliott> NO
22:32:56 <Vorpal> I don't know where it is exactly
22:32:57 <elliott> NOBODY
22:32:59 <Vorpal> somewhere in Asia
22:33:01 <Vorpal> that is all
22:33:08 <Phantom_Hoover> Vorpal, it's DOUBLE LANDLOCKED
22:33:18 <Vorpal> Phantom_Hoover, okay that have to hurt
22:33:18 <Phantom_Hoover> DO YOU KNOW WHAT THE OTHER DOUBLE LANDLOCKED COUNTRY IS
22:33:25 <oerjan> I KNOW
22:33:28 <Vorpal> Phantom_Hoover, nope
22:33:34 * oerjan reads xkcd
22:33:44 <Vorpal> Phantom_Hoover, Switzerland have to be single-landlocked only
22:33:44 <Vorpal> hm
22:33:46 <Vorpal> so no idea
22:33:52 <elliott> hm how strange
22:33:59 <elliott> I have noooo idea why that is happening.
22:34:07 <elliott> @hoogle Handle -> IO String
22:34:07 <lambdabot> System.IO hGetContents :: Handle -> IO String
22:34:07 <lambdabot> System.IO hGetLine :: Handle -> IO String
22:34:07 <lambdabot> System.IO hShow :: Handle -> IO String
22:34:07 <Vorpal> Phantom_Hoover or oerjan: tell me then
22:34:16 <elliott> I WANT A READ-WHOLE-FILE-STRICTLY DAMMIT
22:34:17 <Phantom_Hoover> Vorpal, NO
22:34:23 <Vorpal> Phantom_Hoover, why not
22:34:34 <Phantom_Hoover> WE WILL NOT BOW TO YOU
22:34:43 <Phantom_Hoover> YOU SWENGLITALIAN BASTARD
22:34:51 <Vorpal> Phantom_Hoover, so you detest those who seek information?
22:35:05 <oerjan> Vorpal: lie?chtenstein
22:35:16 <Vorpal> oerjan, ah
22:35:28 <Vorpal> oerjan, I know of it. But where is it? Somewhere in Europe right?
22:35:40 <oerjan> right next to switzerland
22:35:44 <Vorpal> ah
22:35:58 <quintopia> elliott: what were you talking about when you pinged me?
22:36:20 <elliott> quintopia: http://forums.xkcd.com/viewtopic.php?f=12&t=14350&view=next
22:36:37 <elliott> quintopia: ais only figured out that Burro disobeyed the laws in January 2010
22:36:44 <elliott> quintopia: and it took another two months for cpressey to fix it and release version 2
22:36:50 <quintopia> ah
22:36:53 <elliott> but you found out about the problem and solved it two weeks after the language came out :D
22:37:01 <elliott> and thus over two years before we figured it out
22:37:17 <elliott> "Neat.
22:37:17 <elliott> I found his email address: cpressey[at]gmail[dot]com"
22:37:20 <quintopia> makes you wish i IRCed back then eh?
22:37:20 <elliott> Now why would anyone poste that.
22:37:47 <elliott> not really, your solution is way less elegant than burro 2.0 :D
22:37:54 <quintopia> i agree
22:38:26 <Vorpal> quintopia, is that a picture of you as that icon?
22:39:25 <elliott> oerjan: thought you might like to know: your look and say doesn't work in my reference interpreter
22:39:30 <elliott> no idea why :D
22:39:49 <elliott> hm looks to be an evaluation error
22:39:50 <elliott> it parses fine
22:40:03 <elliott> oh
22:40:04 <elliott> lol
22:40:07 <quintopia> Vorpal: it's my self-portrait
22:40:08 <elliott> I don't parse !
22:40:15 <Vorpal> quintopia, nice
22:40:23 <Vorpal> quintopia, you paint?
22:40:27 <elliott> in fact my spec completely lacks !
22:40:28 <elliott> :D
22:40:39 <Vorpal> elliott, what does ! do now again
22:40:44 -!- zzo38 has joined.
22:40:46 <elliott> discard (pops)
22:40:48 <elliott> aka drop
22:40:52 <Vorpal> ah right
22:40:53 <quintopia> hello zzo38
22:41:06 <zzo38> Hello
22:41:09 <quintopia> Vorpal: i tried painting. i'm not very good at it. i'm decent at graphite though
22:42:26 <Vorpal> it is interesting that in English "hello" is a greeting and "hey" is more of a call for attention. In Swedish the word "hallå" (close to "hello" in how it is pronounced) is either a greeting or a call for attention in the same way that "hey" is in English, but "hej" (pronounced almost exactly the same as "hey" in English) is only a greeting.
22:42:30 <elliott> oerjan: erm how does your look-and-say output?
22:42:57 <oerjan> elliott: what
22:43:10 <elliott> elliott@elliott-MacBookAir:~/Code/ul-exc-sem$ ./underload foo
22:43:10 <elliott> , ,
22:43:12 <oerjan> one digit at a time, mostly
22:43:12 <elliott> and then it hangs
22:43:17 <elliott> Stack space overflow: current size 8388608 bytes.
22:43:18 <elliott> Use `+RTS -Ksize -RTS' to increase it.
22:43:25 <oerjan> elliott: um the first output should be a digit
22:43:31 <elliott> oerjan: WELP :D
22:43:49 <oerjan> elliott: i suggest testing simpler programs
22:44:01 <elliott> indeed.
22:44:03 <elliott> well (0)S works
22:44:17 <oerjan> ^ul (0)(1)!S
22:44:17 <fungot> 0
22:44:22 <oerjan> ^ul (0)(1)~!S
22:44:22 <fungot> 1
22:44:26 <oerjan> ^ul (0)(1)*S
22:44:26 <fungot> 01
22:44:35 <elliott> *Main> run (map ord8 "(()(*))(~:^:S*a~^a~!~*~:(/)S^):^")
22:44:35 <elliott> */*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/...
22:44:39 <elliott> well that is NOT the fibonacci sequence :D
22:44:50 <oerjan> indeed
22:44:57 <oerjan> ^ul (()(*))(~:^:S*a~^a~!~*~:(/)S^):^")
22:44:57 <fungot> */*/**/***/*****/********/*************/*********************/**********************************/*******************************************************/*****************************************************************************************/********************************************************************************* ...too much output!
22:45:07 <elliott> hm yet the code seems absolutely fine
22:45:13 <zzo38> I do have a few kind of questions based on a few different things.
22:45:13 <elliott> what's the thing that causes more *s to be added there
22:45:14 <elliott> * or ^?
22:45:14 <oerjan> elliott: try each of the ones i pasted
22:45:36 <elliott> oerjan: lol
22:45:39 <elliott> (0)(1)* = 10
22:45:43 <elliott> *(10)
22:45:53 <elliott> oerjan: i like how fibonacci still ran like that, just went wrong
22:45:57 <oerjan> right that'd do it
22:46:01 <oerjan> hm...
22:46:14 <elliott> 011010011001011010010110011010011001011001101001011010011001011010010110011010010110100110010110011010011001011010010110011010011001011001101001011010011001011001101001100101101001011001101001011010011001011010010110011010011001011001101001011010011001011010010110011010010110100110010110011010011001011010010110011010010110100110010110100101100110100110010110011010010110100110010110011010011001011010010
22:46:14 <elliott> 110011010011001011001101001011010011001011010010110011010010110100110010110011010011001011010010110011010011001011001101001011010011001011001101001100101^C1Interrupted.
22:46:16 <oerjan> ^ul (()(~*))(~:^:S~*a~^a~!~~*~:(/)S^):^")
22:46:16 <fungot> ~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/~*/ ...too much output!
22:46:18 <elliott> looks like Thue-Morse to me!
22:46:23 <elliott> :DDD
22:46:37 <oerjan> indeed
22:46:45 <elliott> *Main> run . map ord8 $ "(12)S(*a(~:)~*^~):((1)S)~*~((2)S:*)~*:(~:()~)~*^(a(:^)*~a(*()~)~*^~^):^"
22:46:45 <elliott> 12[Invalid program]
22:46:46 <elliott> lol
22:46:55 <elliott> oerjan: wait was it thue-morse?
22:47:05 <elliott> if so then thue-morse works with flipped *...
22:47:06 <oerjan> it looked like it
22:47:10 <zzo38> Do you know any DSPs that has Free assemblers and can emulate the GameBoy Advance audio and video (when the correct program is loaded into it), and can have programs loaded into it externally? What else should be good if it can have a program to output a Ogg Vorbis / Ogg Theora video to the television set, and emulate any other kind of audio/video too.
22:47:11 <oerjan> heh
22:47:26 <Phantom_Hoover> elliott, that's not Thue-Morse.
22:47:33 <elliott> $ ./underload rule110
22:47:33 <elliott> [Invalid program]
22:47:33 <elliott> aww
22:47:34 <Phantom_Hoover> WAIT IS THAT A JOKE
22:47:56 <oerjan> elliott: HAVE YOU FIXED * YET
22:48:01 <elliott> DOING SO
22:48:19 <elliott> look and say works now
22:48:25 <elliott> gets progressively slower ofc
22:48:41 <elliott> ...but then faster again
22:48:42 <elliott> how queer
22:48:52 <elliott> yep, it's definitely going fast, slow, fast, slow
22:49:05 <elliott> perhaps because of GC?
22:49:24 <oerjan> maybe
22:49:34 <elliott> elliott@elliott-MacBookAir:~/Code/ul-exc-sem$ time ./underload foo >bar
22:49:34 <elliott> ^C
22:49:34 <elliott> real0m18.222s
22:49:34 <elliott> user0m17.910s
22:49:34 <elliott> sys0m0.290s
22:49:35 <elliott> elliott@elliott-MacBookAir:~/Code/ul-exc-sem$ ls -lh bar
22:49:37 <elliott> -rw-r--r-- 1 elliott elliott 60K 2011-02-05 23:07 bar
22:49:39 <elliott> speedy :P
22:49:40 <elliott> to be fair it flushes after every write
22:50:31 <olsner> you could try enabling profiling
22:50:51 <oerjan> elliott: perhaps there is some laziness happening
22:51:01 <olsner> or use ghc-core and meditate over the core output until you see it
22:51:09 <elliott> oerjan: oh, it's totally lazy in pretty much every way
22:51:25 <elliott> oerjan: remember, the aim is to be a _specification_ in a formal language (Haskell)
22:51:32 <elliott> the fact that it doubles up as a correct reference implementation is a mere bonus
22:51:40 <elliott> strictness annotations, therefore, are not appropriate
22:51:42 <oerjan> elliott: is the slowing down happening in any particular part of the output of a number?
22:52:03 <elliott> oerjan: I could just give you the program and let you find out for yourself :P ... but no, it's between numbers
22:52:10 <elliott> elliott@elliott-MacBookAir:~/Code/ul-exc-sem$ time ./underload foo >bar
22:52:10 <elliott> ^C
22:52:11 <elliott> real1m5.714s
22:52:11 <elliott> user1m2.550s
22:52:11 <elliott> sys0m1.900s
22:52:11 <elliott> elliott@elliott-MacBookAir:~/Code/ul-exc-sem$ ls -lh bar
22:52:13 <elliott> -rw-r--r-- 1 elliott elliott 86K 2011-02-05 23:09 bar
22:52:15 <elliott> without flushing
22:52:17 <elliott> so flushing isn't it :)
22:52:20 <elliott> oerjan: it was, like
22:52:32 <elliott> oerjan: prints numbers fast... starts slowing down (char-by-char slowdown)
22:52:33 <olsner> neat, nasm comes with a macro package for using r0-r7 instead of the traditional register names
22:52:36 <elliott> ...starts speeding up
22:52:37 <elliott> FULL SPEED
22:52:40 <elliott> very quickly, goes slow again
22:52:42 <elliott> starts speeding up
22:52:43 <elliott> FULL SPEED
22:52:43 <elliott> etc.
22:52:52 <elliott> olsner: hehe
22:53:29 <oerjan> elliott: digits 3 might be slower than digits 1, for example (they _are_ church numerals)
22:54:10 <elliott> oerjan: indeed
22:54:21 <olsner> (but I don
22:54:27 <olsner> damn enter key
22:54:54 <elliott> http://sprunge.us/UFKH the haskell part of the specification (note that concatenate, push, tos, sos aren't used, they're just there for illustration earlier on)
22:55:00 <olsner> (but I don't think that makes much more sense unfortunately)
22:55:01 <elliott> also I plan to clean this up a bit
22:55:14 <elliott> olsner: it makes sense once you don't have to talk to the bios any more
22:55:53 <olsner> divisions and multiplications put the results in registers 0 and 2?
22:56:38 <Gregor> I NEED INSPIRATION
22:56:42 <Gregor> Musically speaking
22:56:43 <elliott> Gregor: wat
22:56:44 <elliott> olsner: yep!
22:57:13 <Phantom_Hoover> Welcome to x86!
22:57:15 <olsner> point is, it's all arbitrary regardless of it's an arbitrary letter or an arbitrary number
22:57:18 <Gregor> HEY CHANNEL PEOPLE
22:57:20 <Gregor> Give me inspiration
22:57:24 <Gregor> GIVE IT TO ME
22:57:27 <olsner> and some of the letters actually correspond to sensible mnemonics
22:57:28 <Gregor> OR I WILL TAKE IT BY FORCE
22:57:39 <Phantom_Hoover> Gregor, a language where you can only write programs by accident.
22:57:42 <elliott> Gregor: opus 13 + superturing remix = ?
22:57:44 <Phantom_Hoover> Like, if you try, it won't work.
22:57:50 <elliott> Phantom_Hoover: "musically speaking"
22:57:51 <Gregor> Phantom_Hoover: "<Gregor> Musically speaking"
22:57:58 <Gregor> elliott: Phail
22:58:05 <elliott> Gregor: it would be amazing
22:58:08 <elliott> just mix opus 13 into superturing
22:58:13 <Phantom_Hoover> Gregor, you should totally do that though.
22:58:19 <Gregor> >_<
22:58:22 <Phantom_Hoover> OK, a piece you can only appreciate by accident.
22:58:23 <Gregor> I need to ask on a different channel.
22:58:38 <elliott> Gregor: Make the world's most stunning Fugue program.
22:59:43 <Phantom_Hoover> http://buttersafe.com/2011/01/20/moths-to-a-flame/
22:59:46 <Phantom_Hoover> XD
22:59:52 <elliott> Buttersafe++
22:59:53 <zzo38> Yes it has to be a music 1 year long and also a good program that does a lot of things and it has to be a good music that can win the music contest, too.
23:00:17 <elliott> Gregor: On second thoughts, yeah, ask a different channel.
23:01:41 <Phantom_Hoover> Now I am glad I looked at Dresden Codak, because there's an SMBC guest strip.
23:01:54 <elliott> oerjan
23:01:59 <elliott> why are ducks?
23:02:00 <Vorpal> Phantom_Hoover, link?
23:02:07 <elliott> that's my question
23:02:07 <elliott> for you
23:02:08 <Phantom_Hoover> Vorpal, NO
23:02:09 <zzo38> Do you have idea what kind of commands and things might be useful added in Plain TeXnicard? http://repo.or.cz/w/TeXnicard.git/blob_plain/HEAD:/system/plain.cards
23:02:09 <elliott> if you are cool
23:02:10 <elliott> enough
23:02:16 <Vorpal> Phantom_Hoover, why not
23:02:16 <Phantom_Hoover> STOP REPRESSING ME AND THEN WE'LL TALK
23:02:17 <Vorpal> ...
23:02:25 <Vorpal> Phantom_Hoover, when did I ever repress you?
23:02:41 <Phantom_Hoover> Vorpal, SEE
23:02:43 <Phantom_Hoover> REPRESSION
23:03:02 <Vorpal> uh what
23:03:20 <elliott> RWS RWS RWS
23:03:28 <Vorpal> Phantom_Hoover, which meaning of repression here
23:03:38 <Vorpal> are we talking about social repression or memory repression
23:03:38 <elliott> I'm going to do something no man has ever attempted before.
23:03:41 <Vorpal> I assumed the former
23:03:59 <Vorpal> elliott, write unlambda on toilet paper?
23:04:06 <elliott> COMPILE TEXNICARD
23:04:12 <elliott> Hey zzo38, your compile script has an error.
23:04:14 <Vorpal> elliott, oh.
23:04:18 <zzo38> elliott: What is the error?
23:04:20 <elliott> It should say "#!/usr/bin/env bash", not "#!/bin/bash".
23:04:26 <elliott> The latter won't work if bash is not in /bin.
23:04:33 <elliott> The former will work as long as bash is on the $PATH which it will be.
23:04:37 <Vorpal> elliott, why do you assume /usr/bin/env?
23:04:53 -!- oerjan has quit (Quit: Good night).
23:05:02 <zzo38> elliott: OK I will fix that, but now I have to leave. This time you can just change it yourself.
23:05:03 -!- zzo38 has quit (Remote host closed the connection).
23:07:23 <Phantom_Hoover> elliott, re your catbus question, it seems logical that they should be linked cyclically.
23:07:39 <elliott> Phantom_Hoover: Ah. Quite possibly.
23:09:34 <elliott> Phantom_Hoover: Still...
23:09:43 <Phantom_Hoover> elliott, what?
23:09:55 <elliott> Phantom_Hoover: It seems like my interpretation might be more useful somehow.
23:10:03 <Phantom_Hoover> What's yours?
23:11:00 <elliott> Phantom_Hoover: See the talk page.
23:11:09 -!- cheater00 has quit (Ping timeout: 240 seconds).
23:11:25 <elliott> Phantom_Hoover: i.e. each pair of two programs' stdout is combined and sent to the remaining program.
23:11:42 <elliott> For four programs, it would be: each length-3 list of unique programs' stdout is combined and sent to the remaining program.
23:11:42 <Phantom_Hoover> Hmm.
23:12:02 -!- cheater00 has joined.
23:12:12 <Phantom_Hoover> That wouldn't make much sense unless every program had basically the same output format.
23:13:23 -!- elliott has left (?).
23:13:25 -!- elliott has joined.
23:13:27 <elliott> Phantom_Hoover: Well, sure.
23:14:27 -!- elliott has quit (Remote host closed the connection).
23:14:32 -!- elliott has joined.
23:15:36 <Phantom_Hoover> http://www.reddit.com/r/mathematics
23:15:41 <Phantom_Hoover> I SUPPOSE I EXPECTED TOO MUCH
23:17:29 <Phantom_Hoover> http://www.reddit.com/r/mathematics/comments/d782f/reddit_have_i_done_this_wrong_if_you_think_so/
23:17:42 <Phantom_Hoover> I want to be contemptuous sooooo much, but I can't bring myself to.
23:19:42 <elliott> Phantom_Hoover: */r/math
23:19:44 <elliott> si the real subreddit
23:19:49 <Phantom_Hoover> Ah, that explains it.
23:19:54 <Phantom_Hoover> GODDAMN AMERICANS
23:20:02 <elliott> /r/math has plenty of stupid though
23:20:19 <olsner> y = 14/2 + 1/x => y = -2+x, wtf?
23:20:24 <Phantom_Hoover> Someone's mind is blown by Weirstrass functions.
23:20:29 <Phantom_Hoover> What.
23:21:13 <elliott> they like
23:21:13 <elliott> strass
23:21:14 <elliott> my weir
23:21:17 <elliott> *weier
23:22:01 <Phantom_Hoover> FAIR ENOUGH
23:23:26 * Phantom_Hoover → sleep
23:23:28 -!- Phantom_Hoover has quit (Quit: Leaving).
23:24:21 <Sgeo> http://senseis.xmp.net/?Yahoo
23:24:23 <Sgeo> oops
23:24:30 <Sgeo> 2y = -4+X
23:24:31 <Sgeo> y = 14/2 + 1/X
23:24:32 <Sgeo> WTF?
23:25:09 <Sgeo> Oh, olsner already commented
23:25:47 -!- MigoMipo has quit (Remote host closed the connection).
23:26:52 <olsner> "I'm not sure what to do with half an x."
23:28:03 <elliott> olsner: wat
23:28:17 <olsner> elliott: comment on the same reddit page
23:28:25 <elliott> ah :D
23:34:22 <Ilari> Guesses what could cause current obesity/diabetes epidemic (might be none of these, might be multiple in combination): Fructose, Plant polyunsaturated fats, gluten, WGA, goitrogens, micronutrient defiencies, protein defiencies, fat defiency, lack of sleep, chronic stress, messed up excercise habits, ...
23:34:37 <Ilari> (as said, nobody really knows)
23:35:04 <elliott> Ilari: I know
23:37:46 <Ilari> And that list is after dropping things like (because they don't seem to be possible causes) saturated fat (or "solid fats") or fast carbohydrates (yes, most of those are total garbage, but probably not because of their high GI)....
23:38:38 <Ilari> BTW: Ever heard of French paradox and Israeli paradox? :-)
23:42:23 <Ilari> Somehow I get the feeling polyunsaturated fats act more like micronutrients than macronutrients... The requirements are greater than anything traditionally considered micronutrient, but also the amounts required are much less than the stuffs primarily used for energy...
23:42:36 <elliott> man, this is hard
23:42:57 <Ilari> And the intake ranges are relatively narrow...
23:43:06 <elliott> aha, i think i can avoid pipes
23:43:07 <elliott> maybe
23:45:45 <elliott> hmm
23:45:59 <elliott> how can I cause fd 7 (say) in a parent process be the fd 0 of a child process?
23:46:01 <elliott> do I need a pipe?
23:46:10 <elliott> or can i do it with dupfd/fcntl?
23:47:46 <olsner> I think you use dup (dup2?) to do stuff like that
23:47:59 <olsner> common thing to do I think
23:48:36 -!- Sgeo_ has joined.
23:48:42 <olsner> i.e. set up some pipes in parent, fork, swizzle the file descriptors around to make it stdin/out/err, exec
23:50:14 -!- augur has quit (Remote host closed the connection).
23:50:46 <elliott> olsner: yeees, but
23:50:52 <elliott> olsner: dup operates inside the child process
23:50:58 <elliott> I don't see how I can dup from child process to parent
23:51:07 <elliott> or are fds shared from child and parent? at least, 0,1,2 aren't
23:51:08 -!- Sgeo has quit (Ping timeout: 240 seconds).
23:51:16 <iconmaster> Life sucks- I just learned about EBNF after inventing SynDev. Just wanted to let the IRC world know of my random development!
23:51:30 <olsner> elliott: yes, when you fork you share fd's
23:51:49 <elliott> iconmaster: wait, you didn't know about EBNF? :D
23:52:03 <elliott> how did you think parsers were written? by hand?
23:52:05 <elliott> (ok, some are)
23:52:08 <olsner> at least normally, there are likely weird flags and shenanigans all over
23:52:13 <iconmaster> elliott: nope, just found out from a friend a few mins ago. LOL.
23:52:18 <elliott> iconmaster: bahaha :)
23:52:20 <elliott> iconmaster: but hey
23:52:51 <elliott> iconmaster: this means you're as smart as John Backus, Peter Naur and Niklaus Wirth put together
23:53:02 <elliott> (Wirth created EBNF based on BNF (arguably) by Backus and Naur)
23:53:31 <elliott> iconmaster: I'd be proud of how comprehensive your lang is in comparison
23:53:37 <iconmaster> elliott: lol, RLY? I only assume that SynDev can describe things with equivalent power of EBNF, idk.
23:53:42 <elliott> (when I saw it I thought "hang on, this is just EBNF, how is this esoteric?" :))
23:53:54 <elliott> iconmaster: pretty sure it can, yes
23:54:05 <elliott> you have alternation and constants, that's all you really need
23:54:08 <iconmaster> elliott: cool. Life sucks less now.
23:54:15 <elliott> that's the spirit!
23:54:20 <elliott> now go accidentally reinvent something else
23:54:41 <iconmaster> ok, how about.... Minsky machines! Wait, I already know about those....
23:54:49 <elliott> olsner: ugh, this is complicated (catbus that is)
23:54:57 <elliott> maybe I'll just support two processes to start with
23:55:06 <olsner> catbus?
23:55:39 <iconmaster> I'm bored... I think i'll implement Underload... In LUA! See you guys later.
23:56:27 <elliott> iconmaster: lol, we've been on quite the underload kick lately
23:56:29 <olsner> seems pretty trivial, dup2 allows you to duplicate any open file descriptor to a given number you want such as 0/1/2
23:56:42 <elliott> olsner: well sure
23:56:54 <elliott> olsner: just need to get my head around dup and dup2 first :P
23:56:55 <iconmaster> elliott: Ya, i know, ive been reading board for about a few hours
23:57:00 <elliott> iconmaster: hehe
23:57:03 -!- cheater00 has quit (Read error: Connection reset by peer).
23:57:13 -!- cheater- has joined.
23:57:28 <elliott> olsner: anyway, if that "catbus?" was an actual question - the ultimate Unix pipe-fitting tool
23:57:39 <olsner> dup always gives you a new previously unassigned fd so not entirely useful if you want to e.g. redirect stdout
23:57:55 <elliott> it connects the stdin of the first process to the stdout of the last, the stdout of the first process to the stdin of the second, ...
23:58:02 <elliott> i.e. a circular loop of connections
23:58:15 <elliott> olsner: indeed, but I think I have to do it in two parts
23:58:26 <elliott> olsner: dup2(64, 0) in one
23:58:28 <elliott> then in another
23:58:36 <elliott> dup2(1, 64)
23:58:40 <olsner> create all the pipes, create all the children, hook each child up to the right end of the right pipe, make each child exec its process?
23:58:43 <elliott> that way, in the latter process, output goes to the input of the second
23:58:47 <elliott> olsner: ok, so I _do_ need pipes
23:59:13 -!- FireFly has quit (Quit: swatted to death).
←2011-02-04 2011-02-05 2011-02-06→ ↑2011 ↑all