←2011-11-18 2011-11-19 2011-11-20→ ↑2011 ↑all
00:00:10 <CakeProphet> `run find . | paste
00:00:13 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.19816
00:00:16 <CakeProphet> `run find / | paste
00:00:19 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.11587 \ find: `/proc/tty/driver': Permission denied \ find: `/proc/1/task/1/fd': Permission denied \ find: `/proc/1/task/1/fdinfo': Permission denied \ find: `/proc/1/task/1/ns': Permission denied \ find: `/proc/1/fd': Permission denied \ find: `/proc/1/fdinfo': Permission denied \ find: `/proc/1/ns': Permission denied \ find: `/proc/2/task/2/fd':
00:00:34 <CakeProphet> good.
00:00:36 <elliott> `run tree / | paste
00:00:40 <HackEgo> bash: tree: command not found \ http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.10348
00:00:43 <elliott> Aww
00:00:45 <Gregor> elliott: Still no go on SPARC :(
00:00:45 <elliott> Aww.
00:00:46 <CakeProphet> elliott: shame
00:00:53 <elliott> Gregor: Install tre
00:00:54 <elliott> e
00:00:59 <Gregor> What the boink is tree?
00:01:01 <CakeProphet> `run apt-get install tree
00:01:03 <HackEgo> W: Unable to read /etc/apt/apt.conf.d/ - DirectoryExists (2: No such file or directory) \ E: Could not open lock file /var/lib/dpkg/lock - open (2: No such file or directory) \ E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
00:01:04 <CakeProphet> :P
00:01:17 <CakeProphet> `run sudo -u GOD apt-get install tree
00:01:19 <HackEgo> bash: sudo: command not found
00:01:24 <Gregor> CakeProphet: I figure for security sake, I'll just run random users' code as root.
00:01:33 <CakeProphet> GOOD CALL.
00:01:44 <elliott> Gregor: http://en.wikipedia.org/wiki/Tree_(Unix)
00:01:47 -!- sebbu2 has joined.
00:01:47 -!- sebbu2 has quit (Changing host).
00:01:47 -!- sebbu2 has joined.
00:01:50 <elliott> apt-get install tree plz
00:02:11 <Gregor> <Gregor> What the boink is tree?
00:02:45 <elliott> Gregor: I gave you links.
00:02:47 <elliott> Now shut up and install it :P
00:03:01 -!- sebbu has quit (Ping timeout: 244 seconds).
00:03:17 <Gregor> elliott: I don't want links. Explain it in four words or less.
00:03:38 <elliott> Gregor: http://mama.indstate.edu/users/ice/tree/ has it in a thousand, in the form of one ASCII picture.
00:03:39 <CakeProphet> http://sprunge.us/fNgR
00:03:42 <CakeProphet> this is tree
00:03:51 <elliott> As does CakeProphet :P
00:03:58 <pikhq> Gregor: It's a bit like ls, but it prints a directory tree.
00:04:22 <Gregor> SO FAR I SEE ONLY POLYWORD EXPLANATIONS
00:04:24 <Gregor> FOUR OR LESS
00:04:35 <CakeProphet> "this is tree" is totally three
00:04:37 <CakeProphet> 4 if you count the URL
00:04:42 <pikhq> Gregor: "Directory tree"
00:04:55 <elliott> Gregor: It draws a directory tree in ASCII/Unicode.
00:05:06 <Gregor> I don't think I can count the URL as one word :P
00:05:06 <elliott> Gregor: ASCII/Unicode directory tree.
00:05:11 <Gregor> elliott: Perfect.
00:05:14 <Gregor> `run tree / | paste
00:05:46 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.8739
00:06:01 <CakeProphet> good tree.
00:06:01 <elliott> `run tree / >/dev/null
00:06:03 <Gregor> ...
00:06:10 <elliott> It's probably erroring or something?
00:06:24 <HackEgo> No output.
00:06:28 <Gregor> `run tree / | head
00:06:30 <HackEgo> ​/ \ |-- bin \ | |-- bash \ | |-- bunzip2 \ | |-- bzcat \ | |-- bzcmp -> bzdiff \ | |-- bzdiff \ | |-- bzegrep -> bzgrep \ | |-- bzexe \ | |-- bzfgrep -> bzgrep
00:06:36 <Gregor> Maybe it's more than 10M :)
00:06:57 <Gregor> `run tree / | gzip -9 | paste
00:07:02 <Gregor> That ... won't work.
00:07:05 <Gregor> `run tree / | gzip -9c | paste
00:07:23 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.17
00:07:30 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.32133
00:08:04 <CakeProphet> 2.3 MB
00:08:24 <Gregor> Donno why it didn't like it before *shrugs*
00:08:35 <zzo38> Can you install the TeX to PNG webpage I have into Hackiki?
00:08:59 <CakeProphet> Gregor: hey can you install df onto HackEgo?
00:09:13 <Gregor> CakeProphet: Probably, but I doubt that it would do anything useful.
00:09:15 <elliott> `run tree | paste
00:09:17 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.32268
00:09:30 <elliott> `run tree / | paste
00:09:42 <Gregor> zzo38: Idonno if I like the notion of PNG webpages made from TeX ... there's at least one decent TeX->HTML convertor.
00:09:51 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.32291
00:09:55 <elliott> Gregor: 'Swhat Wikipedia does :P
00:09:58 <elliott> But HackEgo doesn't need it...
00:10:06 <CakeProphet> elliott: how does it decide when to use ASCII and when do use Unicode?
00:10:07 <Gregor> elliott: *Hackiki
00:10:11 <elliott> Oh
00:10:14 <elliott> Gregor: P.S. I suspect you mean LaTeX :-)
00:10:17 <Gregor> elliott: Makes more sense for Hackiki
00:10:18 <elliott> `tree --help
00:10:20 <HackEgo> usage: tree [-adfghilnpqrstuvxACDFNS] [-H baseHREF] [-T title ] [-L level [-R]] \.[-P pattern] [-I pattern] [-o filename] [--version] [--help] [--inodes] \.[--device] [--noreport] [--nolinks] [--dirsfirst] [--charset charset] \..[--filelimit #] [<directory list>] \ -a. All files are listed. \ -d. List directories only. \.-l. Follow symbolic links like directories.
00:10:21 <Gregor> elliott: Oh, 'struth.
00:10:29 <elliott> Gregor: Which I doubt zzo is happy with ;-)
00:10:32 <elliott> `run tree --help | paste
00:10:34 <HackEgo> usage: tree [-adfghilnpqrstuvxACDFNS] [-H baseHREF] [-T title ] [-L level [-R]] \.[-P pattern] [-I pattern] [-o filename] [--version] [--help] [--inodes] \.[--device] [--noreport] [--nolinks] [--dirsfirst] [--charset charset] \..[--filelimit #] [<directory list>] \ -a. All files are listed. \ -d. List directories only. \.-l. Follow symbolic links like directories.
00:10:36 <zzo38> Gregor: No, you can use that for making PNG images included inside of a HTML page.
00:10:38 <elliott> `run tree --help 2>&1 | paste
00:10:42 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.29936
00:10:46 -!- oerjan has quit (Quit: Memory leak again).
00:10:51 <zzo38> In general, not for the entire page.
00:10:51 <elliott> `run tree -A | paste
00:10:53 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.26352
00:10:57 <elliott> lol
00:11:02 <Gregor> SPARC is driving me CRAZY.
00:11:04 * CakeProphet thinks we should convert esowiki to hackiki.
00:11:06 <Gregor> Adding a printf cannot make this work >_<
00:11:16 <CakeProphet> what could go wrong?
00:11:21 <Gregor> CakeProphet: I tried to drive that once, but 'twas a wasted effort.
00:11:26 <zzo38> It is a program I wrote; it has to be adjusted to work with Linux (I wrote it for Windows), and it works far better than the Wikipedia one. It also has more options.
00:12:36 <CakeProphet> Gregor: try again :P
00:12:38 <zzo38> You could also probably remove all the restrictions I have since those are managed by a separate program in Hackiki anyways.
00:13:09 <shachaf> Hac Kiki?
00:13:43 <CakeProphet> Hack Iki
00:14:50 <Gregor> shachaf: What HackBot (HackEgo) is to IRC bots, Hackiki is to wikis.
00:17:36 -!- copumpkin has changed nick to c0w.
00:17:42 <CakeProphet> > var "bad\nlambdabot\nbad"
00:17:43 <lambdabot> bad
00:17:44 <lambdabot> lambdabot
00:17:44 <lambdabot> bad
00:17:44 <zzo38> I might be able to add the program myself, as long as Plain TeX, dvipng, and AMS fonts (the METAFONT ones) are installed.
00:19:06 <Gregor> zzo38: I'll check in a bit, in the middle of something else right now.
00:19:14 <zzo38> OK
00:19:47 * CakeProphet just got $30 for applying for a credit card
00:19:50 <CakeProphet> yeaaaaaah
00:19:55 <CakeProphet> free money
00:20:21 <CakeProphet> they're placing a bet that I'm fiscally irresponsible.
00:20:23 <CakeProphet> BOY ARE THEY WRONG.
00:20:26 <zzo38> Do you keep it even if you cancel a credit card immediately?
00:20:35 * CakeProphet goes on an Amazon shopping spree with his new $30
00:20:38 <zzo38> Or if you don't use a credit card?
00:20:40 <CakeProphet> zzo38: probably
00:20:55 <CakeProphet> but it gives you like Amazon reward point things or some shit so I might actually use it.
00:21:03 <CakeProphet> without, you know, owing obscene amounts of interest.
00:21:05 <Gregor> Any SPARC experts? Anything weird about how it handles return addresses? Something to do with its register windows maybe?
00:21:08 <CakeProphet> spelled correctly.
00:22:30 <Gregor> Surely a setjmp would save the return address even if it's otherwise squirreled away in another register window? How could it not?
00:23:06 <CakeProphet> Gregor: turns out one of the 4 people who still know anything about SPARC are on this very channel.
00:23:41 <Gregor> CakeProphet: But whoooooooo
00:24:28 <CakeProphet> yiyus
00:24:39 -!- c0w has changed nick to copumpkin.
00:25:41 <Gregor> yiyus: HAAAAAAAAAALP :P
00:27:24 -!- oerjan has joined.
00:29:46 <elliott> CakeProphet: wat
00:29:55 <CakeProphet> so you know what the death of John McCarthy means?
00:30:00 <CakeProphet> Elephant WILL NEVER BE A REAL THING.
00:30:05 <CakeProphet> unless it already is one and I missed it.
00:30:08 <SgeoN1> elliott arpdoit
00:30:18 <Gregor> I'm just trying to understand how a system could possibly exist on which setjmp+stack doesn't save the return address X-D
00:30:25 <Phantom_Hoover> Elephant?
00:30:51 <CakeProphet> http://www-formal.stanford.edu/jmc/elephant/elephant.html
00:32:49 <oerjan> CakeProphet: elephant will always be remembered
00:33:14 * Phantom_Hoover → sleep
00:33:15 -!- Phantom_Hoover has quit (Quit: Leaving).
00:33:37 <Ngevd> Good idea, PPH
00:33:39 <Ngevd> Goodnight
00:33:40 -!- Ngevd has quit (Quit: Goodbye).
00:33:42 <oerjan> elephant is sort like an anti-feather, i think
00:33:58 <CakeProphet> opposite feather more like
00:34:21 <oerjan> ...in which we learn that CakeProphet doesn't know what anti- means.
00:34:43 <CakeProphet> dunno, to me anti- implied a sort of negation effect
00:34:55 <elliott> phantom phantom hoover
00:35:15 <oerjan> as does opposite
00:36:32 <CakeProphet> nope, no way!
00:37:39 -!- oklopol has joined.
00:37:45 <oklopol> ollon.
00:38:45 <CakeProphet> nollo
00:39:01 <CakeProphet> SWEEET DELICIOUS PALLINDROMIC CORE MMMMM
00:40:55 <CakeProphet> ah finally the more weak-willed of the Birtons have saught respite in their slumberchambers.
00:41:41 <CakeProphet> and the Americans and Norsemen can converse in peace.
00:42:23 <CakeProphet> (note that Britons applies to all UKers here. because I said so.)
00:42:45 <elliott> hi
00:42:49 <zzo38> Program I wrote in Haskell to read DVI file is running out of memory!!
00:42:56 <elliott> rip program
00:43:33 <zzo38> Do you know how to make it to not run out of memory?
00:44:22 <CakeProphet> probably apply strictness somewhere.
00:46:30 <zzo38> Maybe it is not properly tail recursive? And how and where is it supposed to apply strictness somewhere?
00:47:11 * CakeProphet is actually a prophet, by the way.
00:47:25 <CakeProphet> so I like actually know how to debug your program without any source code.
00:47:51 <oerjan> zzo38: tail recursion can sometimes make things _worse_ in haskell
00:48:05 <zzo38> O, that is what you are the prophet of? I thought you were the Prophet Wizard of the Crayon Cake.
00:48:20 <CakeProphet> no, lies.
00:48:22 <CakeProphet> a facade.
00:48:28 <zzo38> oerjan: If you look will you know how to fix it?
00:48:41 <CakeProphet> a pale phantom of the dark frowziness that lies beneath.
00:49:32 <zzo38> Is it running out of ByteString memory?
00:49:36 <CakeProphet> the ineffable funk.
00:50:03 <elliott> zzo38: what kind of memory is it running out of?
00:50:08 <elliott> is a stack overflow reported?
00:50:16 <elliott> or does it just gobble up computer memory until the whole system lags?
00:50:16 <zzo38> It just says out of memory.
00:50:21 <CakeProphet> elliott: I bet it's RAM.
00:50:23 <CakeProphet> :)
00:50:24 <elliott> "out of memory"? that's it?
00:50:31 <zzo38> The system didn't lag.
00:50:33 <Vorpal> hi
00:50:41 <zzo38> elliott: Yes, it just says "out of memory"
00:50:41 <CakeProphet> hello
00:50:41 <elliott> zzo38: are you sure it doesn't say the heap is exhausted? :P
00:50:44 <elliott> weird.
00:51:00 <elliott> zzo38: are you loading a really big file?
00:51:12 <Vorpal> I wonder if skyrim tracks number of hours you played so far somewhere. Probably don't want to check that though...
00:51:13 <elliott> zzo38: you can try +RTS -H<megabytes>M
00:51:15 <elliott> for some <megabytse>
00:51:17 <elliott> megabytes
00:51:19 <elliott> to increase the default heap size
00:51:26 <elliott> if you're trying to load a very big file
00:51:42 <elliott> oh hmm
00:51:46 <Vorpal> elliott, shouldn't the size of the heap grow as required?
00:51:48 <elliott> looks like ghc automatically increases the heap
00:51:54 <Vorpal> yeah
00:51:57 <elliott> Vorpal: well that's not always the best decision... but anyway
00:52:01 <Vorpal> it wouldn't make sense if it didn't
00:52:03 <elliott> zzo38: how much RAM do you have? :P
00:52:04 <zzo38> The file DVI.lhs is 33 KB, and DVI.dvi (the output of TeX processing DVI.lhs) is 51 KB. But I tried loading a very short DVI file and it is still out of memory.
00:52:05 <Vorpal> elliott, true.
00:52:10 <oerjan> zzo38: you might try http://haskell.org/ghc/docs/6.12.3/html/users_guide/prof-heap.html
00:52:17 <Vorpal> elliott, now stacks tend to have a max size more often
00:52:18 <elliott> zzo38: then your program is inefficient *shrugs*
00:52:24 <zzo38> I have 224 MB of RAM
00:52:36 <Vorpal> what... really?
00:52:39 <CakeProphet> ..
00:52:40 <Vorpal> how old is that computer?
00:52:45 <zzo38> I don't know.
00:52:49 <Vorpal> ...
00:52:58 <Vorpal> that belongs in a mueum!
00:53:00 <Vorpal> museum*
00:53:03 <CakeProphet> lol
00:53:08 -!- derdon has quit (Remote host closed the connection).
00:53:29 <Vorpal> wait, did I just do an unintentional Indiana Jones parody? Ouch I think I did...
00:53:35 <zzo38> Actually it says "<interactive>: out of memory" is that different?
00:54:58 <Vorpal> zzo38, just don't try to run windows on that system. Unless it is like 9x
00:55:11 <Vorpal> heck, even windows xp would be a pain with that little ram
00:55:16 <zzo38> It is XP
00:55:16 -!- kmc has joined.
00:55:30 <Vorpal> sounds painful on 224 MB RAM
00:55:48 <Vorpal> zzo38, for laughs you should try windows vista or windows 7 on it
00:56:01 <zzo38> I don't need to change it
00:56:01 <Vorpal> bbiab
00:56:16 <zzo38> If I ever change the operating system I will put Linux, not Windows.
00:56:25 <Vorpal> zzo38, but iirc DX11 doesn't work under XP?
00:56:40 <Vorpal> or maybe your graphics card can't do that anyway
00:56:44 <zzo38> I don't use DX11
00:56:53 <Vorpal> or that
00:58:24 <zzo38> There is no great genius without some touch of madness.
01:00:19 <elliott> Vorpal: people used xp with 256 megs of ram commonly, y'know
01:00:25 <elliott> it came out in 2001
01:01:09 <elliott> Vorpal: also i'm pretty sure most stuff works with directx 9 still
01:01:54 <elliott> "Controversially, the original name for the DirectX project was the "Manhattan Project", a reference to the US nuclear weapons initiative. Alex St. John, creator of the original Microsoft DirectX specification, claims[21] that the connotation with the ultimate outcome of the Manhattan Project (the nuclear bombing of Japan) is intentional, and that DirectX and its sister project, the Xbox (which shares a similar logo), are meant to displace Japanese
01:01:54 <elliott> ame makers from their dominance of the industry.[22]"
01:02:01 <elliott> wow it's like he's trying to be a gigantic asshole
01:02:47 <Gregor> ... wow.
01:02:54 <Gregor> That's ... wow.
01:03:52 <elliott> Gregor: The next Microsoft graphics project: "Holocaust", featuring the 3D subsystem "We're Literally Going To Kill Eleven Million People... But This Time, It's PERSONAL"
01:04:38 <elliott> Slogan: "Bill Gates Is Literally Hitler, Like, He's Growing The Moustache And Everything"
01:04:46 <Gregor> *Ballmer
01:04:51 <elliott> Bill Ballmer
01:11:10 <Vorpal> <elliott> Vorpal: people used xp with 256 megs of ram commonly, y'know
01:11:11 <Vorpal> <elliott> it came out in 2001
01:11:12 <Vorpal> hm yeah
01:11:16 <Vorpal> xp is that old?
01:11:17 <Vorpal> right
01:11:25 <Vorpal> very long lived
01:11:39 <elliott> i believe xp is the longest-lasting version of any maintained microsoft product :P
01:12:04 <elliott> over 5 years
01:12:20 <pikhq> More if you consider the length of official support.
01:12:21 <Vorpal> it is about 10 years now
01:12:26 <zzo38> Genius is an infinite capacity for taking pains. -- Jane Hopkins
01:12:30 <Vorpal> yeah
01:12:51 <pikhq> Support ends in 2014.
01:12:57 <Vorpal> heh
01:13:04 <pikhq> *Sale* ended in 2009.
01:15:27 <oerjan> darn i'm not a genius anyway?
01:18:55 <Vorpal> pikhq, so 8 years of sale and 13 years of support?
01:18:59 <Vorpal> as currently planned
01:20:02 <oklopol> erm, that's like the worst definition of genius i've ever heard
01:20:23 <oklopol> who the fuck is this dude
01:20:41 <elliott> i'm sure "jane hopkins" is male :P
01:20:54 <zzo38> Unix is very simple, but it takes a genius to understand the simplicity. -- Dennis Ritch
01:20:54 <oklopol> jane can be either
01:20:58 <oklopol> dude as well
01:22:59 <oklopol> eh, i just googled and there is no jane hopkins
01:23:21 <oklopol> oh sorry found her http://jane-hopkins.com/
01:23:56 <oklopol> okay i think i need to give geniusness a rethinkover.
01:24:04 <oklopol> because that's some deep shit
01:24:28 <elliott> oerjan i feel bad about using Int all the time am i a bad person
01:24:59 <Vorpal> elliott, obviously you should use Int# yes
01:25:16 <oerjan> use Integer#, that's the best type
01:25:34 <oerjan> the rest is just a bit of gödel numbering
01:25:40 <Vorpal> err
01:25:42 <Vorpal> :t Integer#
01:25:43 <lambdabot> Not in scope: data constructor `Integer#'
01:25:45 <Vorpal> :t Int#
01:25:46 <lambdabot> Not in scope: data constructor `Int#'
01:25:48 <elliott> that isn't a constructor
01:25:53 <Vorpal> derp
01:25:57 <Vorpal> :i Int#
01:26:01 <Vorpal> ah, no
01:26:05 <elliott> :k Int#
01:26:06 <lambdabot> Not in scope: type constructor or class `Int#'
01:26:07 <elliott> @src Int#
01:26:07 <lambdabot> Source not found.
01:26:10 <elliott> lol
01:26:11 <elliott> @src Int
01:26:11 <lambdabot> data Int = I# Int#
01:26:15 <Vorpal> ...
01:26:16 <elliott> well obviously Int# has no source
01:26:19 <elliott> because it's primitive
01:26:20 <Vorpal> well yes
01:26:29 <Vorpal> elliott, but I assumed you would have a type for it
01:26:44 <elliott> types don't have types
01:27:08 <Vorpal> hm true
01:27:13 <CakeProphet> LOGICAL DEAD END OH SNAPA
01:27:22 <oerjan> what kind of type could a type have
01:27:26 * oerjan runs away
01:27:27 <Vorpal> Prelude> :i Int
01:27:27 <Vorpal> data Int = GHC.Types.I# GHC.Prim.Int# -- Defined in GHC.Types
01:27:29 <CakeProphet> typetype
01:27:29 <Vorpal> well that anyway
01:27:52 <CakeProphet> > Int + Char
01:27:53 <lambdabot> Not in scope: data constructor `Int'Not in scope: data constructor `Char'
01:27:54 <Vorpal> oerjan, as far as I can tell there isn't an Integer#
01:27:57 <CakeProphet> WHAT PROPOSTEROUS'
01:28:03 <Vorpal> data Integer
01:28:03 <Vorpal> = integer-gmp:GHC.Integer.Type.S# GHC.Prim.Int#
01:28:03 <Vorpal> | integer-gmp:GHC.Integer.Type.J# GHC.Prim.Int# GHC.Prim.ByteArray#
01:28:03 <Vorpal> -- Defined in integer-gmp:GHC.Integer.Type
01:28:04 <oerjan> lots of whooshing here tonight
01:28:27 <Vorpal> that is an interesting type
01:28:53 <oerjan> S# is for small integers
01:29:04 <Vorpal> oerjan, ah right, but that is still GMP it seems?
01:29:13 <Vorpal> why use gmp for small integers
01:29:18 <elliott> no.
01:29:23 <elliott> Integer is just d efined in integer-gmp.
01:29:24 <elliott> obviously
01:29:26 <Vorpal> ah
01:29:34 <elliott> you see the prefix because you don't have that package exposed
01:30:09 <Vorpal> elliott, that still leaves the original question unanswered....
01:30:14 <elliott> which question
01:30:17 <CakeProphet> Vorpal: S# is the name of the constructor
01:30:22 <CakeProphet> not a different type
01:30:27 <CakeProphet> >_>?
01:30:47 <Vorpal> elliott, why would small integers be done with GMP or why would non GMP stuff be done in integer-gmp!?
01:30:56 <elliott> <elliott> no.
01:30:56 <elliott> <elliott> Integer is just d efined in integer-gmp.
01:30:56 <elliott> <elliott> obviously
01:31:03 <elliott> you have presented no evidence that small integers are done with gmp
01:31:13 <CakeProphet> Vorpal: S# is the constructor for small Integers, within the normal range of ints
01:31:14 <elliott> Vorpal: here's a hint: how do you define Integer outside of integer-gmp
01:31:17 <Vorpal> elliott, indeed, except for the name of the package :P
01:31:23 <CakeProphet> J# is the one that is bignumish
01:31:33 <elliott> Vorpal: hint: you can't, because you need a bignum type
01:31:34 <Vorpal> elliott, I'm not claiming it isn't done. Just that the naming is bad then
01:31:35 <Vorpal> hm
01:31:43 <elliott> Vorpal: integer-gmp = implementation of Integer with GMP
01:31:48 <elliott> Vorpal: integer-simple = implementation of Integer with no dependencies
01:31:52 <Vorpal> elliott, fair enough. I would have assumed that a "small" one was machine word?
01:31:54 <elliott> it's only badly-named if you're a literal idiot
01:31:59 <elliott> Vorpal: <Vorpal> = integer-gmp:GHC.Integer.Type.S# GHC.Prim.Int#
01:32:01 <elliott> what do you think Int# is?
01:32:08 <elliott> it obviously has to be boxed in that constructor
01:32:14 <Vorpal> oh right, I'm just too sleepy for this
01:32:26 <Vorpal> night →
01:33:56 <oerjan> metaphorical idiots think the name is just right
01:36:56 -!- Vorpal has quit (Ping timeout: 258 seconds).
01:40:51 <Gregor> SPAAAAAAAAAAAAAAAAAAAAAARC
02:07:59 -!- MSleep has quit (Quit: later chat).
02:18:11 <CakeProphet> yes
02:18:13 <CakeProphet> mission successful
02:18:17 <CakeProphet> tea, sammich, and cigars.
02:18:20 <CakeProphet> the simple pleasures of life.
02:20:15 -!- augur has quit (Ping timeout: 258 seconds).
02:20:39 <CakeProphet> Gregor: don't you have like
02:20:44 <CakeProphet> documentation of SPARC?
02:21:06 <Gregor> CakeProphet: Yes, but it's doing little to explain things such as why setjmp didn't seem to put the return address anywhere.
02:22:06 <CakeProphet> Gregor: ah so you're compiling to C or?
02:22:18 <CakeProphet> setjmp is a thing in SPARC as well.
02:22:50 <Gregor> No, my code is C ... of course setjmp is a thing in SPARC, it should save all sorts of process state including but not limited to registers.
02:23:58 <CakeProphet> well cursory googling suggests that SPARC does indeed have a stack and it does indeed work like x86 (it grows down)
02:24:03 <CakeProphet> ...
02:25:47 <elliott> Gregor: CakeProphet's helpful, isn't he.
02:26:35 <Gregor> elliott: Quite.
02:26:49 * CakeProphet is the definition of helpful.
02:26:52 <CakeProphet> or well
02:26:56 <CakeProphet> what's the word for helpful
02:26:59 <CakeProphet> but not really being helpful
02:27:00 <elliott> CakeProphet.
02:27:01 <CakeProphet> like "eager to help"
02:28:02 <CakeProphet> hmmm, yes
02:28:13 <CakeProphet> then the antonym, meaning, "helpful but not eager to help"
02:28:16 <CakeProphet> would be elliott.
02:28:46 <CakeProphet> IF WE BECAME ONE PERSON.
02:28:48 <CakeProphet> THINK OF ALL THE HELP
02:28:50 <CakeProphet> THAT WOULD HAPPEN.
02:29:18 <CakeProphet> also think of the great manliness.
02:30:19 <Gregor> ...
02:30:20 <Gregor> X-D
02:31:34 <CakeProphet> holy crap its cold outside.
02:31:52 <CakeProphet> 43 degrees.
02:32:05 <CakeProphet> this is cold for my climate.
02:32:08 <oerjan> -43?
02:32:11 <CakeProphet> no
02:32:22 <oerjan> `sanetemp 43
02:32:24 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: sanetemp: not found
02:32:36 <oerjan> !sanetemp 43
02:32:38 <EgoBot> 6.1
02:33:07 <CakeProphet> it was literally like 70-something yesterday
02:33:22 <CakeProphet> LITERALLY LIKE THIS APPROXIMATE FIGURE.
02:33:25 <oerjan> ah. i saw in a newspaper the other that that and rain is essentially the average norwegian national weather
02:33:32 <oerjan> *the other... month
02:34:31 <CakeProphet> one nice thing about Fahrenheit is that it goes by intervals of 10 in intuitive understanding
02:34:40 <CakeProphet> each degree of 10 is like another level of coldness/hotness
02:34:46 <CakeProphet> or at least
02:35:12 <CakeProphet> that is how people intuitively delineate levels of coldness/hotness in the context of weather.
02:35:26 <CakeProphet> because it's intuitive.
02:36:17 <oerjan> as opposed to celsius which goes by intervals of 5, obviously
02:36:27 <CakeProphet> ah okay
02:39:05 <elliott> CakeProphet: that's the stupidest thing i've ever heard
02:39:19 <elliott> perception of temperature isn't discrete, if it went up by 20s or 5s that'd be just as good
02:39:33 <elliott> you only think it's a good factor to scale by because you're used to thinking in terms of fahrenheit in the first place...
02:39:44 <CakeProphet> I didn't mean to imply "THIS IS THE AWESOMEST THING AND THERE IS NO OTHER WAY THAT WORKS"
02:39:48 <CakeProphet> and yes, I know.
02:40:15 <zzo38> There is also Kelvin temperatures. Are there Planck temperatures?
02:40:23 <CakeProphet> yes
02:40:48 <CakeProphet> you would have to divide by Planck temperature.
02:41:20 <oerjan> i fear they don't go up by 10, though
02:41:25 <CakeProphet> SHIT
02:41:37 <CakeProphet> worst temperature metric.
02:43:39 <elliott> http://en.wikipedia.org/wiki/Planck_temperature
02:43:52 <elliott> 0°C = 1.928 × 10^-30 Tp
02:43:53 <elliott> practical
02:47:47 <CakeProphet> so I'm guessing Planck temperature was the temperature at the beginning of the universe?
02:47:55 <CakeProphet> should be simple to empirically verify.
02:48:27 <shachaf> elliott: "The error is just what it says."? That's, like, a whole new perspective on GHC error messages, man!
02:48:37 <elliott> shachaf: It's as factually accurate as it is unhelpful.
02:48:43 <oerjan> CakeProphet: that's a bit overstating it, i think
02:48:53 <shachaf> elliott: Has anyone ever realized that before?
02:49:04 <elliott> shachaf: No. This is why only I can debug Haskell programs.
02:49:05 <oerjan> there may have been a time during the big bang when that was the temperature
02:49:22 <zzo38> I made a movie once, I have the DVD of it. The label says "Candid Camera" even though the movie has nothing to do with Candid Camera. The label also says "*UOP-FREE*" and has the DVD Video logo on it.
02:49:48 <CakeProphet> shachaf: I have realized that. :P
02:49:55 <shachaf> elliott: I knew it!
02:49:58 <shachaf> But your secret is out now.
02:50:13 <shachaf> <elliott> It would probably be best to tell us what you're actually trying to do.
02:50:21 <shachaf> You should file for a patent or something.
02:50:40 <elliott> shachaf: Hey, I only use the X-Y problem when talking to people who are being really confusing!
02:51:01 <shachaf> > x - y
02:51:02 <lambdabot> x - y
02:51:13 <zzo38> In one scene one of the actors is saying that some text should be placed on the screen at that time. He said something like "On the screen you should write those words, OK?" and the text was literally placed "Those words, OK" on the screen
02:52:12 <CakeProphet> elliott: I oftentimes encounter people trying to solve the XY problem on my questionsin IRC channels
02:52:19 <zzo38> After a test of the camera equipment, the first scene is about how to eat lego.
02:52:34 <CakeProphet> little do they know, they're usually wrong, and continue to be obnoxious when I continue asking my actual question.
02:52:53 -!- copumpkin has changed nick to NotASpy.
02:53:03 <zzo38> Scene 2 comes after scene 3. There is no scene numbered 1.
02:53:06 -!- NotASpy has changed nick to DefinitelyNotASp.
02:53:31 <CakeProphet> DefinitelyNotASp: your foolish disguise fools no one but yourself!
02:53:37 -!- DefinitelyNotASp has changed nick to TotallyNotASpy.
02:54:00 <oerjan> `welcome TotallyNotASpy
02:54:03 <HackEgo> TotallyNotASpy: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
02:56:43 -!- TotallyNotASpy has changed nick to copumpkin.
02:59:04 <oerjan> @hoogle unsafeCoerce
02:59:05 <lambdabot> Unsafe.Coerce unsafeCoerce :: a -> b
02:59:30 <oerjan> @hoogle Any
02:59:31 <lambdabot> Prelude any :: (a -> Bool) -> [a] -> Bool
02:59:31 <lambdabot> Data.List any :: (a -> Bool) -> [a] -> Bool
02:59:31 <lambdabot> Data.Monoid Any :: Bool -> Any
02:59:37 <oerjan> gah
02:59:52 <oerjan> @hoogle -Prelude Any
02:59:52 <lambdabot> Unknown flag: -P
02:59:52 <lambdabot>
02:59:59 <oerjan> arg
03:00:00 <oerjan> h
03:00:12 <elliott> @hoogle GHC.Exts Any
03:00:14 <lambdabot> Did you mean: :: Exts Any +GHC
03:00:14 <lambdabot> No results found
03:00:16 <CakeProphet> a typeof operator would be fun, on top of the ::-as-operator thing previously discussed.
03:00:19 <elliott> @hoogle +GHC Any
03:00:20 <lambdabot> package anydbm
03:00:20 <lambdabot> package Ganymede
03:00:20 <lambdabot> package hp2any-core
03:00:34 <CakeProphet> asTypeOf a b = unsafeCoerce a :: typeof b
03:00:47 -!- augur has joined.
03:01:10 <zzo38> CakeProphet: Yes, typeof operator, I would like to have too; even GNU C has typeof operator too.
03:01:20 <oerjan> !haskell (Unsafe.Coerce.unsafeCoerce (Debug.Trace.trace "hm..." 1) :: GHC.Exts.Any) `seq` "and hm"
03:01:25 <EgoBot> ​"and hm"
03:01:43 <oerjan> heh
03:01:55 <oerjan> !haskell (Unsafe.Coerce.unsafeCoerce (Debug.Trace.trace "hm..." (++)) :: GHC.Exts.Any) `seq` "and hm"
03:01:58 <EgoBot> ​"and hm"
03:02:11 <oerjan> !haskell (Unsafe.Coerce.unsafeCoerce (Debug.Trace.trace "hm..." (++)) :: Int) `seq` "and hm"
03:02:13 <EgoBot> ​"and hm"
03:02:22 <elliott> EgoBot: wait, what
03:02:24 <elliott> oh
03:02:38 <oerjan> !haskell (Unsafe.Coerce.unsafeCoerce (Debug.Trace.trace "hm..." (++)) :: [Int] -> [Int] -> [Int]) `seq` "and hm"
03:02:41 <EgoBot> ​"and hm"
03:02:58 <oerjan> oh maybe there's something wrong with the tracing
03:03:13 <oerjan> !haskell Debug.Trace.trace "hm..." "and hm"
03:03:15 <EgoBot> ​"and hm"
03:03:20 <oerjan> gah
03:03:24 <elliott> `runghc 2+2
03:03:30 <HackEgo> target `2+2' is not a module name or a source file
03:03:34 <elliott> X-D
03:03:39 <elliott> `run ghc -e 'Debug.Trace.trace "hm..." "and hm"'
03:03:44 <HackEgo> hm... \ "and hm"
03:04:13 <elliott> oerjan: enjoy
03:04:33 <oerjan> !haskell (Unsafe.Coerce.unsafeCoerce (System.IO.Unsafe.unsafePerformIO (putStr "hm..." >> return 1)) :: GHC.Exts.Any) `seq` "and hm"
03:04:35 <EgoBot> hm..."and hm"
03:05:05 <oerjan> sorry, found another way :P
03:05:13 <oerjan> !haskell (Unsafe.Coerce.unsafeCoerce (System.IO.Unsafe.unsafePerformIO (putStr "hm..." >> return (++))) :: GHC.Exts.Any) `seq` "and hm"
03:05:16 <EgoBot> hm..."and hm"
03:05:27 <oerjan> !haskell (Unsafe.Coerce.unsafeCoerce (System.IO.Unsafe.unsafePerformIO (putStr "hm..." >> return (++))) :: Int) `seq` "and hm"
03:05:29 <EgoBot> hm..."and hm"
03:05:56 <oerjan> !haskell (Unsafe.Coerce.unsafeCoerce (System.IO.Unsafe.unsafePerformIO (putStr "hm..." >> return 1)) :: Int -> Int)) `seq` "and hm"
03:06:00 <CakeProphet> pikhq: you there?
03:06:06 <oerjan> oops
03:06:13 <pikhq> Ish
03:06:18 <oerjan> !haskell (Unsafe.Coerce.unsafeCoerce (System.IO.Unsafe.unsafePerformIO (putStr "hm..." >> return 1)) :: Int -> Int) `seq` "and hm"
03:06:21 <EgoBot> hm..."and hm"
03:06:30 <elliott> shachaf: What's a ring?
03:06:33 <CakeProphet> pikhq: there was a 25% decrease in fuel efficiency.
03:06:36 <elliott> You can troll me, I won't mind.
03:06:37 <CakeProphet> almost exactly.
03:06:44 <pikhq> CakeProphet: Bravisimo
03:06:54 <CakeProphet> yes, I'm on the path to being a true American.
03:06:58 <shachaf> elliott: Um... http://en.wikipedia.org/wiki/Ring_(mathematics)?
03:06:59 * oerjan concludes that unsafeCoerce has no effect on strictness
03:07:05 <elliott> shachaf: Thx for troll
03:07:09 <elliott> `addquote * oerjan concludes that unsafeCoerce has no effect on strictness
03:07:11 <HackEgo> 723) * oerjan concludes that unsafeCoerce has no effect on strictness
03:07:25 <shachaf> admin + elliott
03:07:32 <CakeProphet> ?
03:07:52 <CakeProphet> "admin + elliott" is a scary thought, to me.
03:08:42 <zzo38> Someone completed an ultra ending for ADOM with 1 XP. Other challenges are: * Never kill anyone other than uniques; you are not allowed to have any companions either. * No use of food. * Kill as many different kind of creatures as possible (some uniques are mutually exclusive however). * Never carry more than 100s of inventory (including equipment).
03:08:58 <pikhq> elliott: From what I'm getting from that Wikipedia article, it's the algebraic structure with "+" and "*" operators, with closure, associativity, existence of identity, existence of inverse, and commutativity for addition, and closure, associativity, and existence of identity for multiplication.
03:09:07 <elliott> pikhq: THANXE BRO
03:09:12 <pikhq> Also, distributitive with addition & multiplication.
03:09:20 <pikhq> Obvious examples of a ring include the set of naturals.
03:09:26 <zzo38> pikhq: I made such a program in Haskell it is called monoidplus
03:09:26 <pikhq> Erm.
03:09:27 <pikhq> Reals.
03:09:29 <pikhq> Erm.
03:09:32 <pikhq> *Integers*.
03:09:40 <pikhq> Jeeze pikhq, say what you mean.
03:10:22 <CakeProphet> other examples of rings include the set of my awesome Persian wallpaper
03:10:26 <CakeProphet> er, wait that's a group.
03:10:26 <shachaf> elliott: pikhq did far better than I could have.
03:10:45 * shachaf isn't a troll, anyway.
03:10:49 <oerjan> elliott: i was wondering whether that insistence that you shouldn't coerce between data types and functions had any effect on seq
03:11:21 <elliott> oerjan: Ah.
03:11:55 <zzo38> * No spells/chat. * Not allowed to use downstairs command (meaning only places you can enter are wilderness encounters); reach level 50. * Enter ToEF at experience level 1, get orb of fire, leave; do not enter any other locations. * Enter small cave; never go up/down stairs; stay until experience level 50. * Edit executable file to force going through small cave, uninteresting dungeon, and main dungeon, in that order.
03:12:50 <oerjan> elliott: since that's just about the only operation you can do which doesn't require things to be of a known type
03:13:59 <oerjan> shachaf is clearly an orc
03:14:15 <CakeProphet> oerjan is a magic elf.
03:14:20 * oerjan is slowly approaching the end of his yafgc binge
03:14:33 <oerjan> with many interruptions
03:15:39 <CakeProphet> I like how caffeine is considered a food and not a drug by the FDA.
03:15:55 <oerjan> a non-magic elf would be such a sad creature
03:17:08 <CakeProphet> all elves are pathetic creatures.
03:17:14 <CakeProphet> I slay them on sight.
03:17:23 <elliott> Hmm, I'm not sure what @'s low-level network IO model looks like.
03:17:25 <elliott> pikhq: Make one up for me.
03:17:29 <oerjan> ah, so CakeProphet is a goblin, check
03:19:53 <elliott> oerjan: Um excuse me dorfs are the ones who hate elves a lot.
03:20:11 <oerjan> elliott: ok those too, then
03:28:31 <pikhq> elliott: *Clearly* you should just send neutrinos in the correct direction.
03:28:37 <elliott> pikhq: NOT HELPFUL :P
03:29:56 <elliott> pikhq: The problem is twofold: I don't know what connection setup should look like, and I don't know what communication should look like :(
03:34:28 <pikhq> elliott: Hmm. Well, *communication* should be nothing more than passing serialised @ objects back and forth, perhaps transparently compressed.
03:34:33 <elliott> pikhq: I said low-level.
03:34:42 <pikhq> Devise a serialisation scheme.
03:34:44 <elliott> Unless you think that'll work to talk to IRC or HTTP servers.
03:34:49 <elliott> Hint: It won't.
03:35:09 <pikhq> Oh, so a *non-native* network IO model.
03:35:21 <pikhq> *Bleh*.
03:35:49 <pikhq> This is annoying, because normal networking is all about sending bytestreams, and @ is all about not-bytestreams.
03:37:50 <pikhq> I'm *tempted* to just go with a kinda stupid send/receive bytestream model.
03:38:05 <elliott> yes, that would be easy if I had imperative sequencing, which I don't
03:38:46 <elliott> everything so far is based on FRP, i can't decide whether to go with FRP (awkward since it doesn't really fit the usecase but fits in better with the other stuff), something iteratee-esque (dunno what the model would look like without sequencing?) or something else entirely
03:39:18 <pikhq> *Really* stupidly moronic [Byte]->[Byte] function? :P
03:39:31 <oerjan> enumeratorities
03:39:47 <elliott> pikhq: that's impure
03:39:59 <elliott> and doesn't allow any sort of out-of-bound control (how do you close the connection?)
03:40:25 <elliott> also it's awfully unperformant and prone to errors but those are even more obvious than the other things i said
03:40:39 <pikhq> I did say "stupidly moronic" for a reason.
03:41:19 <elliott> not moronic enough for my standards; i don't accept mediocrity in my moronicity
03:42:06 <pikhq> Fine, y'know what? Your low-level network IO model shall involve directly creating TCP packets.
03:42:17 <pikhq> Why not go more low-level than is usual? :P
03:42:20 <elliott> that still doesn't help for a model of how to send them :P
03:42:28 <elliott> and receive them
03:44:23 -!- DCliche_ has joined.
03:46:40 <oerjan> your low-level network IO model shall involve neutrinos. _that_ should be low level enough.
03:46:58 <elliott> <pikhq> elliott: *Clearly* you should just send neutrinos in the correct direction.
03:47:15 <oerjan> see? pikhq agrees.
03:48:00 -!- DCliche has quit (Ping timeout: 240 seconds).
03:48:03 -!- kmc has quit (Quit: Leaving).
03:53:24 <CakeProphet> elliott: perhaps you just need to make some concessions in your pureness?
03:53:34 <CakeProphet> or: monads!!
03:53:36 <CakeProphet> yeaaaaah
03:54:20 <CakeProphet> and then just serialize shit and send/receive/check-connection-stuff via an IO monad or <insert other side-effectful workaround>
03:55:31 <elliott> oerjan: Please kick CakeProphet.
03:55:49 <CakeProphet> what?
03:56:06 <CakeProphet> I'm guessing you've got something better?
03:56:08 * oerjan gives CakeProphet a warning swat first -----###
04:01:02 <CakeProphet> elliott: as far as serialization format, what if you arranged objects so that their memory layout and serialized format are equivalent, except for references which would then need to be adjusted from the local RAM address space to a smaller relative-to-some-starting-point-in-stream-datagram-or-whatever address space.
04:01:18 <elliott> oerjan: kick CakeProphet for not having any idea how @ works and also he's stupid
04:02:19 <CakeProphet> elliott: alternatively, you could point me (and the other people you are discussing this problem with) to a source of information on @ that can clarify my ignorance.
04:02:32 <elliott> oerjan: he am go too far.....
04:03:39 <CakeProphet> but anyway, basically as long as the receiving end knows the type of the data then it can reconstruct the transmission
04:03:57 <CakeProphet> and readjusting references isn't terribly inefficient, you have to traverse references to serialize anyway.
04:05:04 <CakeProphet> elliott: or are @ objects not implemented as blocks of memory and pointers? enlighten me.
04:05:23 <elliott> CakeProphet: I'll answer your questions iff oerjan kicks you.
04:07:05 <CakeProphet> but basically you a) no longer have to serialize anything (aside from some minor pre/postprocessing) because your memory layout is your serialization format b) enforce type safety by requiring receiving programs to know the type of the data they're receiving.
04:07:19 <elliott> oerjan: Seriously, kick him so I can put him out of his mysery.
04:10:46 <CakeProphet> elliott: if it makes you feel better I can join -minecraft
04:10:55 <CakeProphet> you'll have to invite me first though.
04:11:05 <elliott> Done.
04:11:30 <CakeProphet> NOOOOOO HOW COULD YOU DO THIS
04:11:36 <CakeProphet> I LOVE MINECRAFT NOW I CAN'T TALK ABOUT IT EVER
04:11:38 * CakeProphet cries.
04:11:54 <elliott> <CakeProphet> elliott: as far as serialization format, what if you arranged objects so that their memory layout and serialized format are equivalent, except for references which would then need to be adjusted from the local RAM address space to a smaller relative-to-some-starting-point-in-stream-datagram-or-whatever address space.
04:12:03 -!- myndzi has quit (Ping timeout: 240 seconds).
04:12:10 <elliott> CakeProphet: Misconception: Logical memory addresses must map to physical RAM locations.
04:12:31 <elliott> (For example, the Linux kernel does not actually require you to have so many terabytes of RAM that you can load it at addresses starting with a 1.)
04:13:08 <pikhq> elliott: Exabytes
04:13:18 <elliott> Exabytes are terabytes :)
04:13:28 <CakeProphet> hmmm, well, the only requirement is that you can access those logical memory addresses so that you can get the data they refer to and then re-adjust addresses to a relative address space for the object stream.
04:13:41 <CakeProphet> they don't need to be physical RAM bytes. >_>
04:13:48 <CakeProphet> just bytes of some kind presumably.
04:14:00 <elliott> You're missing the point. Anyway, this doesn't even remotely solve my stated problem.
04:14:40 <CakeProphet> oh, well no it doesn't solve how you intend to communicate via network. but I recall you mentioning that you need a way to serialize objects, yes?
04:14:54 <CakeProphet> I mean, I assume you'll need to do that at some point anyway if you want @ to be distributed in any way.
04:15:10 <CakeProphet> and run on standard networking protocols.
04:16:04 <elliott> "but I recall you mentioning that you need a way to serialize objects, yes?"
04:16:05 <elliott> No.
04:16:13 <elliott> <CakeProphet> and run on standard networking protocols.
04:16:26 <elliott> Standard networking protocols are completely irrelevant here and are not helped by your proposed solution at all.
04:16:32 <elliott> Freenode doesn't talk in a serialised @ format./
04:16:46 <CakeProphet> ...Freenode? maybe I missed something here.
04:17:04 <elliott> IRC isn't a standard networking protocol?
04:17:06 <elliott> Cool.
04:17:38 <CakeProphet> well obviously inter-@ communication would work differently than non-inter-@ communication.
04:17:50 <CakeProphet> because other things only speak in bytestreams.
04:18:20 <elliott> <CakeProphet> and run on standard networking protocols.
04:18:26 <elliott> you were suggesting this solved standard protocols
04:18:27 <elliott> standard i.e.
04:18:28 <elliott> not @
04:18:35 <CakeProphet> my suggestion was merely a method of serialization for some kind of distributed @. not "here's the solution to your networking IO layer"
04:19:11 <elliott> Okay. I don't see the relevance.
04:19:55 -!- GreaseMonkey has quit (Quit: The Other Game).
04:20:08 <CakeProphet> ah okay, I was following up what was pikhq was saying previously. he said "devise a serialization scheme" and I went with that.
04:20:29 <elliott> Yeah, then I corrected him.
04:20:37 <CakeProphet> I would need to know more about @lang to know anything about what would make sense for basic send/receive bytestream stuff, which... I'm pretty sure you'll want.
04:21:18 <CakeProphet> at some level
04:21:19 <CakeProphet> >_>
04:21:40 <CakeProphet> see? that's helpful.
04:21:41 <CakeProphet> :P
04:21:50 <elliott> Well, the IO model is basically FRPish. So you would e.g. take the mouse input as a coordinate pair in as a Behavior Point or whatever, and then you could return a widget containing a Behavior Doc showing, e.g., the rendering of this pair as (42,-97) or similar.
04:22:11 <CakeProphet> what makes this awkward for a network?
04:22:12 <elliott> And you could have a button beside it which gives you an Event () firing when the button clicks, and wire that up to change the text of the position widget.
04:22:40 <elliott> CakeProphet: Because FRP is awkward for basically completely synchronous, and things where there aren't a large number of interdependent variables?
04:22:45 <elliott> s/synchronous/synchronous things/
04:23:24 <elliott> Something like iteratees would be nicer but it's not clear how to /integrate/ that with the FRP stuff to make it work together, and it's not clear what iteratees would even look like without an underlying monadic structure.
04:23:33 <elliott> And it still doesn't solve the issue of how you actually set up/terminate/etc. connections.
04:24:22 <CakeProphet> would a monad not make sense for that?
04:24:37 -!- SgeoN1 has quit (Read error: Connection reset by peer).
04:24:50 -!- SgeoN1 has joined.
04:25:18 <elliott> Plenty of things are "a monad"; presumably you mean something like the IO monad, which models imperative programs.
04:25:30 <CakeProphet> yes. but not as monolithic as the IO monad
04:25:33 <CakeProphet> just one for networking
04:26:02 <CakeProphet> what about a kind of coroutine thing?
04:26:10 <CakeProphet> well no
04:26:15 <elliott> To convince me of that, you would have to (a) demonstrate how it can be integrated with the FRP stuff (hint: this is incredibly non-trivial), (b) tell me how you think a "non-monolithic" "networking monad" could be done and how to cause the run-time system to execute it, how it fits in with other things blah blah blah which won't work because you can interleave networking and other IO, (c) basically no.
04:26:22 <CakeProphet> that doesn't solve the set up/terminate/etc.
04:26:36 <zzo38> There can be many kind of monad, as long as they follow the monad laws. IO monad is I/O actions. Maybe monad is a value or Nothing.
04:27:09 * CakeProphet scribbles down notes.
04:27:12 <CakeProphet> thanks zzo38.
04:27:28 <zzo38> I read somewhere, something about "successor monad", I think it is like Maybe monad.
04:27:36 <CakeProphet> elliott: well, are you sure FRP would be awkward?
04:28:04 <elliott> FRP's awkwardness for low-level bytestring networking is well agreed-upon. Which is why nobody does it.
04:28:07 <CakeProphet> I mean clearly the set up / terminate / etc stuffs are just different kinds of responses to an event.
04:28:38 <elliott> Uh, no.
04:32:35 <CakeProphet> okay...
04:32:41 <CakeProphet> well: good luck!
04:33:49 <zzo38> They ought to release the source-codes of ADOM, at least when they are dead if not right now, so that many people can correct the bugs in the software!
04:34:21 <CakeProphet> elliott: but it totally is just responses to events. there are just different kinds of connections.
04:34:30 -!- SgeoN1 has quit (Quit: Bye).
04:34:42 <CakeProphet> elliott: also the responses can be a sequence of responses.
04:35:57 <CakeProphet> if the syntax proves to be awkward perhaps some sort of syntax sugar would help? I don't really know much about FRP.
04:37:15 <elliott> that much is clear
04:38:04 <CakeProphet> maybe you actually want a lower-level IO monad similar to Haskell, to do low-level stuff
04:38:13 <CakeProphet> and then FRP for your UI?
04:39:39 <elliott> no, i don't. not above the @ll layer.
04:40:21 <CakeProphet> well, okay, what if the high-level protocols are done with FRP, implemented in a low-level monad layer?
04:40:37 <CakeProphet> that is magical.
04:40:37 <CakeProphet> >_>
04:42:02 <CakeProphet> or just a low-level FRP interface.
04:42:13 <CakeProphet> that is somewhat awkward. :P
04:43:49 * CakeProphet quietly reads about FRP in the background.
04:51:31 <CakeProphet> just make FRP not awkward and everything will be fine.
04:51:39 <elliott> FRP isn't awkward.
04:53:10 <CakeProphet> *not awkward for simple things like network IO
04:53:47 <elliott> It isn't about the simplicity.
04:55:35 <CakeProphet> okay.
05:01:35 -!- SgeoN1 has joined.
05:01:52 <SgeoN1> elliott sudo apt-get update
05:03:54 <SgeoN1> Zzz time
05:03:57 -!- SgeoN1 has quit (Client Quit).
05:08:16 <monqy> thanks
05:08:28 -!- MSleep has joined.
05:08:38 <elliott> hi monqy
05:08:41 <monqy> hi
05:08:50 -!- MSleep has changed nick to MDude.
05:08:54 <MDude> hi
05:09:34 -!- oerjan has quit (Quit: Goof night).
05:09:41 <CakeProphet> hi
05:10:10 <CakeProphet> monqy: what awesome thing are you doing?
05:10:23 <CakeProphet> what are some awesome things you aren't doing right now but are long-term awesome things.
05:11:00 <monqy> i am doing: eating garlic bread things
05:11:15 <monqy> i am not doing: having any good ideas on how to make a programming language to solve all of my problems
05:11:38 * quintopia goes and sits with monqy
05:11:48 <quintopia> you are an okay
05:11:52 <CakeProphet> monqy: maybe you could learn about all the languages.
05:11:55 <CakeProphet> that's my plan.
05:12:01 <monqy> even the bad ones???
05:12:03 <CakeProphet> a) learn all the languages b) make new language
05:12:05 <CakeProphet> yes. even those.
05:12:06 <quintopia> can i have a garlic?
05:12:08 <monqy> sure
05:12:37 <elliott> <monqy> i am doing: eating garlic bread things
05:12:41 <elliott> monqy is a lucky person..........
05:13:34 <monqy> it's to ease the pain of not knowing the taste of digestive biscuite
05:13:58 <CakeProphet> monqy: for example: perl
05:14:00 <CakeProphet> perl is good.
05:14:05 <CakeProphet> perl has good ideas and bad ideas.
05:14:05 <monqy> =/
05:14:06 <elliott> monqy: eat digeststive bsicuti
05:14:13 <monqy> digestive biscotti
05:14:23 <elliott> yes
05:14:24 <monqy> biscotti is good now i want biscotti and milk
05:14:35 <elliott> digestive biscotti and garlic milk
05:14:38 <monqy> mm
05:14:55 <monqy> I have never had garlic milk
05:15:20 <monqy> cakeprophet i have a big perl book and at one point in time i could even do things in perl but i forgot everything
05:15:37 <monqy> at this point in time i liked perl for being hilariously bad
05:15:44 <monqy> now I just trust that it is
05:15:46 <monqy> ;_;
05:17:16 <CakeProphet> monqy: what if your closed-mindedness is limiting your intake of programming language wisdom? you could just siphon the good things as you learn many not-perfect languages.
05:18:08 <monqy> going through not-so-good languages is tiresome but if you have a really nice inspiring elegant language i want to see it
05:18:24 <monqy> especially big not-so-good languages
05:18:55 <CakeProphet> perl
05:18:57 <monqy> and just taking in a lot of good things won't really help me with language design unless they are good things that work well with other good things I want
05:19:00 <monqy> perl is huge and ugly
05:19:17 <monqy> I'll read functional pearl sometime and hopefully that will impart enough of the good ideas
05:19:27 <monqy> er
05:19:29 <monqy> functional perl
05:19:30 <monqy> oopse
05:19:38 <CakeProphet> perl itself isn't very big, I don't think.
05:19:44 <monqy> huuuuge
05:19:47 <CakeProphet> maybe with all the other shit that is written in perl attached.
05:19:56 <monqy> it's big for me, monqy
05:20:31 <CakeProphet> monqy: do you know C#?
05:20:42 <monqy> no is it good
05:20:46 <CakeProphet> no
05:20:54 <monqy> does it have any good ideas
05:21:00 <CakeProphet> yes.
05:21:04 <monqy> what are the good ideas
05:21:10 <elliott> monqy: do you mean higher-order perl
05:21:16 <monqy> elliott: yes that
05:21:21 <monqy> im bad at rememebering names
05:21:29 <CakeProphet> I thought it was functional perl as well.
05:21:30 <monqy> it's in my reading pile
05:21:35 <monqy> along with everything else
05:21:57 <CakeProphet> monqy: hm... good ideas.
05:22:05 <CakeProphet> well they're all only good in the context of Java-style OO
05:22:10 <monqy> oh
05:22:12 <CakeProphet> ...yeah
05:22:13 <monqy> well that won't help me then
05:22:54 <CakeProphet> the handling of pass by reference vs. pass by value is good.
05:23:04 <CakeProphet> but, again, this is in the context of an imperative language.
05:23:45 <monqy> yeah monqy language will not be imperative
05:24:14 <CakeProphet> monqy: io is interesting.
05:24:20 <CakeProphet> more imperative oo stuff though
05:24:30 <elliott> io is shit
05:24:52 <monqy> i want to learn a dependently typed language sometime I think it would be a good thing to know
05:25:17 <monqy> I also want to learn a some good category theory
05:25:19 <CakeProphet> what impressed me in particular was how it handled call-by-need in a highly dynamic language.
05:25:30 <monqy> oh?
05:25:54 <elliott> monqy: (it just passes ASTs directly)
05:25:55 <CakeProphet> yes oh
05:26:00 <elliott> (and the default function interface just evaluates them)
05:26:02 <elliott> (it's really slow)
05:26:04 <elliott> (and ugly)
05:26:18 <CakeProphet> elliott: but makes total sense in a dynamic language. :P
05:37:29 <zzo38> Use sleight of hand to deal yourself the 2,3,4,5,7 (not all of the same suit), and your opponent the 2,3,4,5,8 (again, not all of the same suit). Ask your opponent whether they want to bet on whether they have a better or worse poker hand than you. If they are correct, they don't have to pay. If they are wrong, they have to pay double. They can choose not to bet at all, paying the normal price.
05:38:17 <zzo38> (Tell them the rules before you deal the cards, but they do not have to choose to bet until after they can see their cards.)
05:39:04 -!- MDude has changed nick to MSleep.
05:42:46 <zzo38> What is your opinion of this game?
06:08:20 -!- hagb4rd has joined.
06:18:51 -!- elliott has quit (Remote host closed the connection).
06:30:11 <quintopia> i know an old magic trick that looks like that, except it used different cards, and they could be dealt randomly, as long as you made sure the opponent got the 9
06:30:30 <quintopia> anyway that game sounds evil.
06:33:39 <zzo38> What was the magic trick?
06:36:09 <quintopia> you get together the 9-K of H and the 10-A of S. enough cards for two hands. as long as the spec got the nine, they lost.
06:36:24 <quintopia> even if they got the A
06:38:06 <zzo38> What were the rules? Is it poker hands?
06:39:45 <zzo38> I remember, at Boston Pizza, someone did a card trick, dealt the cards in some way, four cards to each player, two on the table face-up, and asked me to select the one that would give me the better poker hand. He took the other and won. But when the cards were revealed, I can see he would have won regardless of which card I selected. (Nothing was bet on this game, however.)
06:44:21 -!- elliott has joined.
06:51:22 -!- DCliche_ has quit (Quit: You are now graced with my absence.).
06:54:40 <quintopia> yeah poker hands
06:55:17 -!- nys has quit (Quit: 2:54 AM).
07:12:55 -!- elliott has quit (Quit: Leaving).
07:20:16 <CakeProphet> monqy: Ruby is not incredibly bad.
07:20:51 <monqy> ruby is bad. is there anything worth knowing about it?
07:21:21 <CakeProphet> surely it's a step-up from your average OO lang
07:21:42 <CakeProphet> it even supports functional style to some degree.
07:23:18 <CakeProphet> also as far as OO goes the use of mixins and partial classes allows more code re-use than silly C++/Java inheritance
07:24:12 <monqy> sounds boring
07:24:56 <CakeProphet> it certainly combines object-oriented and higher-order functions nicely.
07:25:42 <CakeProphet> but I'm starting to dislike dynamic typing more and more for anything other than simple scripts.
07:26:34 <CakeProphet> I think static typing is The Way Of The Future.
07:26:38 <CakeProphet> well...
07:26:47 <CakeProphet> I would be interested to see if a hybrid is feasible.
07:27:12 <monqy> good thing i dislike object oriented
07:27:32 <monqy> and i dislike the absence of static typing
07:27:32 <CakeProphet> objected oriented itself isn't bad.
07:27:39 <CakeProphet> it's just that most incarnations of it are very bad
07:28:55 <CakeProphet> I think instead of inheritance it makes more sense to have a sort of prototype OO with combinators.
07:29:29 <CakeProphet> the difficult part is making it efficient and statically typed.
07:33:57 <CakeProphet> I guess to make it efficient at runtime you'd want to compute some of the object combinators at compile-time.
07:39:00 <CakeProphet> monqy: I've occasionally considered the idea of "static duck typing" though I don't really know if type inference is possible.
07:40:16 <CakeProphet> actually I guess typeclasses do that better...
07:40:51 <CakeProphet> ah it can be generalized...
07:41:15 <monqy> you're silly
07:42:01 <monqy> how would static duck typing even work and what good would it do
07:42:04 <monqy> duck typing is just awful
07:42:36 <CakeProphet> where you can make functions polymorphic on arbitrary objects as long as they implement some set of methods. but if you provide constraint-level operators you can do basically set operations on these sets of methods. not sure what that would achieve though.
07:42:46 <CakeProphet> also: not as awesome as multi-parameter typeclasses
07:44:50 <CakeProphet> I suppose the main difference between Haskell's typeclasses and an OO system would be that there are no instance declarations
07:45:13 <CakeProphet> you just define the methods and if they match then they're in that particular "typeclass"
07:46:00 <CakeProphet> so defining a method with a particular name and a particular type could potentially match multiple typeclass equivalents.
07:47:09 <CakeProphet> but still it lacks the sort of type relations that multi-param typeclasses allow.
07:50:56 <CakeProphet> hmmm it would be nice if you could do things like create isomorphisms between those typesets
07:51:53 <CakeProphet> no wait, nevermind :P
07:51:57 <CakeProphet> that doesn't work here.
07:52:49 <CakeProphet> you can't magically determine what happens when you a type is supposed to be isomorphic to all monoids ever, but you specifically implement two monoids.
07:52:56 <CakeProphet> unless you explicitly declare the mapping.
07:53:07 <CakeProphet> s/you a/your/
07:58:29 <CakeProphet> hmmm yeah I definitely think it makes more sense to have the type combinators at compile-time...
07:59:13 -!- copumpkin has quit (Ping timeout: 252 seconds).
07:59:39 -!- copumpkin has joined.
07:59:56 <CakeProphet> "this type is the asymmetric union of A and B (sets of methods that already exist), and this anonymous set that I'm just now defining that contains some new stuff"
08:01:12 <CakeProphet> asymmetric union being kind of like disjoint union, except you just ignore elements that originate from one set if an equivalently named element originates from the other.
08:01:25 <CakeProphet> so you can resolve situations where two types define a method with the same name, basically.
08:02:25 <CakeProphet> that's basically like inheritance, but you could have other fun combinators. basically a lot of set operators.
08:03:45 <CakeProphet> I wonder if you could still do the | union thingy in Haskell on top of that....
08:03:53 <CakeProphet> that hurts my brain to think about.
08:04:02 <CakeProphet> I think that messed up all the type constraint stuff.
08:06:09 <CakeProphet> yeah that doesn't work. :(
08:06:40 <CakeProphet> well it could work maybe, I dunno.
08:11:27 <CakeProphet> monqy: I've scared you away haven't I.
08:12:07 <monqy> :(
08:14:14 <CakeProphet> type X = A *> B <* (C | D)
08:15:06 <CakeProphet> everything in A, and everything in B (the > indicates preference towards the methods in B), and either all of this stuff in C or all of this stuff in D (exclusive or kind of)
08:16:20 <CakeProphet> and any object matching this is considered an X.
08:18:25 <CakeProphet> you could also do stuff like relative complement or symmetric difference (no clue why you'd want symmetric difference though)
08:18:48 <CakeProphet> relative complement would be useful to say "I'll take the methods this type defines, excluding these"
08:19:13 <CakeProphet> but I'm not sure that | actually makes sense.
08:21:50 <CakeProphet> monqy: does any of that make sense? :P
08:22:24 <monqy> maybe
08:22:57 <monqy> i can see what you're doing but I can't see why you're doing it or how you're going to implement it, or if it even works at all
08:23:03 <monqy> so
08:23:07 <CakeProphet> maybe | (which essentially is supposed to work like Haskell's | ) actually doesn't make sense with these semantics.
08:23:27 <monqy> do you know type theory? I sure don't. it's on my list of things to learn.
08:23:29 <monqy> crys
08:23:39 <CakeProphet> yeah this isn't really type theory.
08:24:11 <CakeProphet> monqy: the key to all of this working would be that the sets of things that any object contains has to be known at compile-time
08:25:05 <CakeProphet> also I have no clue how primtives would work.
08:25:06 <monqy> oh, another thing: error reporting is probably going to be hell
08:25:18 <CakeProphet> type X = Int | Char -- what?
08:25:40 <monqy> hm9$?
08:26:34 <CakeProphet> so I think either a distinction has to be made, some magic needs to happen, or primtive types have to integrate nicely into this picture.
08:26:53 <CakeProphet> i.e. these are not actually types that I'm defining, but typeclasses, or something.
08:27:35 <monqy> ??????
08:28:13 <CakeProphet> so instead of Int it would be Num... that makes more sense. Num has a defined set of operations.
08:29:08 <CakeProphet> but, that doesn't really address primtive types, it just hides them away for me to deal with later. :P
08:30:25 <CakeProphet> wow I've typo'd primitive successfully three times now.
08:30:33 <CakeProphet> impressive.
08:33:40 <CakeProphet> monqy: well the reason I guess is to get some of the benefits of duck typing in a statically typed system.
08:33:57 <monqy> what benefits of duck typing
08:34:45 <CakeProphet> monqy: try to imagine that you like duck typing, now think of all the benefits. :P
08:35:19 <monqy> try imagining you like punching yourself really hard
08:35:39 <CakeProphet> oh look I can just pass any object here as long as it defines this interface, and you don't have to explicitly declare that it's part of this interface.
08:35:52 <CakeProphet> that's pretty much the only benefit I can think of. :P
08:36:04 <CakeProphet> but no that's not the WHOLE POINT of the language I'm considering.
08:36:22 <CakeProphet> just a piece. I guess the main idea is to mix the good parts of prototype OO with statically compiled functional languages.
08:36:42 <monqy> explicit declaration is good. it's documentation and it prevents stupid errors
08:36:56 <CakeProphet> that's certainly true.
08:37:17 <monqy> there would have to be a significant expressivity benefit to convince me, and even then...
08:37:57 <CakeProphet> still I think there are situations where types are defined without knowledge of another interface, and that type fits perfectly into said interface but the designer hadn't thought of it or it didn't exist or wasn't relevant.
08:38:15 <CakeProphet> I guess instances work perfectly for that situation... so... :P
08:38:35 <CakeProphet> may be a fruitless effort I'm going for, here.
08:39:27 <CakeProphet> but there are other things you could do with such a system.
08:39:39 <CakeProphet> when you consider composing objects together.
08:39:42 <monqy> hm?
08:40:02 <CakeProphet> perhaps there's expressivity gains there? I dunno.
08:40:19 <CakeProphet> a minor benefit: easier to manage namespace creep.
08:41:08 <monqy> surely you can solve that, at least to some degree, in better ways?
08:41:15 <CakeProphet> never.
08:41:16 <CakeProphet> :)
08:43:26 <CakeProphet> it would be interesting to have an operator which combined two objects together in such a way that they remain distinct but become a single entity with the combined operations of both.
08:44:17 <CakeProphet> the operations of the previous object would apply to the state of that object only, any shared operations apply to both.
08:44:38 <CakeProphet> you could call it OBJECT FUSION. MUAHAHAHAHA
08:47:04 <CakeProphet> also you could do things like map and fold in this manner, without actually calling a map or fold
08:47:08 <CakeProphet> not that you'd necessarily want to.
08:47:10 <CakeProphet> but you could.
09:03:02 -!- Phantom_Hoover has joined.
09:48:51 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
09:58:55 -!- Ngevd has joined.
09:59:00 <Ngevd> Hello!
10:00:35 <Ngevd> Hello, fungot
10:00:35 <fungot> Ngevd: again in a fresh memo later be sent you a copy of knitting for assholes
10:00:39 <Ngevd> ^style
10:00:39 <fungot> Available: agora alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck* ic irc iwcs jargon lovecraft nethack pa sms speeches ss wp youtube
10:01:01 <Ngevd> ^echo wiki spam
10:01:01 <fungot> wiki spam wiki spam
10:01:25 -!- Phantom_Hoover has joined.
10:04:05 -!- BeholdMyGlory has quit (Ping timeout: 258 seconds).
10:04:07 -!- Behold has joined.
10:06:46 <Ngevd> Morning, Phantom_Hoover
10:06:53 <Phantom_Hoover> Or is it?
10:06:57 <Phantom_Hoover> Wait, yes it is.
10:07:03 <Phantom_Hoover> Wow, I got up at a reasonable time.
10:09:32 -!- sebbu2 has changed nick to sebbu.
10:17:35 -!- Ngevd has quit (Ping timeout: 252 seconds).
10:44:18 -!- monqy has quit (Quit: hello).
10:51:08 <augur> http://gizmodo.com/5859081/why-is-china-building-these-gigantic-structures-in-the-middle-of-the-desert
11:29:04 <Jafet> "If Lydia dies before the marriage can take place, her body will turn up at the temple, causing you to fail the wedding ceremony mini-mission. The priests will then ask you to leave, and the bride or groom will storm off, angry. [...] The wedding will take place the following day at the same time. To avoid failing the quest a second time, use Unrelenting Force to fire the corpse from out the way of the door."
11:29:45 <Jafet> The Skyrim engine must be incredibly detailed to even allow such a bug...
11:34:35 -!- Vorpal has joined.
11:38:13 -!- FireFly has quit (Changing host).
11:38:13 -!- FireFly has joined.
11:48:55 -!- derrik has joined.
12:08:53 <oklopol> it must be able to move lydia when the wedding ceremony starts without checking if she's alive?
12:09:52 <oklopol> yeah i don't know any other contemporary game engine where you can move objects
12:10:15 <oklopol> and i assume the priests ask you to leave because you killed someone
12:10:39 <oklopol> the usual punishment for murder
12:11:08 <derrik> punishment for murder is to leave?
12:11:59 <oklopol> yes, no one wants a murdering morris in their house. they're really annoying.
12:13:02 <derrik> murderers are annoying?
12:13:27 <derrik> when you are murdered, where is the annoyance?
12:13:28 <oklopol> eh
12:13:45 <oklopol> it's very likely that they kill someone else first
12:13:56 <oklopol> say you're talking to someone
12:14:11 <oklopol> and mister murderpants decides to assrape them with a chainsaw or something
12:14:30 <oklopol> how annoying would that be?
12:14:42 -!- Ngevd has joined.
12:14:57 <oklopol> you're like midsentence and BOOM cockroach in the brain
12:15:30 <oklopol> (that would be an annoying way to die btw)
12:15:31 <Ngevd> How much sense does that make in context?
12:15:46 -!- derdon has joined.
12:15:49 <oklopol> Ngevd: perfect sense
12:15:53 -!- derrik has quit (Quit: gtg).
12:15:55 <oklopol> so perfect
12:16:14 <oklopol> derrik was so annoyed even thinking about this that he had to go
12:16:56 -!- Zuu has joined.
12:16:56 -!- Zuu has quit (Changing host).
12:16:56 -!- Zuu has joined.
12:30:04 -!- Ngevd has quit (Ping timeout: 240 seconds).
12:30:18 * quintopia oklopol
13:11:15 -!- zzo38 has quit (Remote host closed the connection).
13:22:46 <Phantom_Hoover> oklopol, you are a hero of our times.
13:22:58 <Phantom_Hoover> Mind doing the same to tiffany at some point?
13:28:24 -!- MSleep has changed nick to MDude.
13:28:59 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .).
15:01:10 -!- Behold has changed nick to BeholdMyGlory.
15:06:04 -!- MDude has quit (Ping timeout: 240 seconds).
16:01:18 -!- derrik has joined.
16:09:45 <oklopol> http://cache.gawker.com/assets/images/comment/4/2011/11/a651e5ed5d97375a733ca8f62ca9643b/original.jpg what xD
16:10:15 <oklopol> here's an overlay of a penis on a seven fingered horse, conspiracy?
16:11:38 <oklopol> i love how not even one of the lines match a street
16:17:19 -!- Nisstyre has quit (Remote host closed the connection).
16:18:21 <Phantom_Hoover> I think one of them matches a bit of park?
16:18:33 <Phantom_Hoover> The Chinese are very interested in destroying American greenery.
16:21:57 -!- Nisstyre has joined.
16:30:48 <Phantom_Hoover> http://en.wikipedia.org/wiki/Kinect_Disneyland_Adventures
16:30:54 <Phantom_Hoover> Oh, how the mighty have fallen.
16:31:51 <Phantom_Hoover> Dammit, elliott's not here.
16:38:13 <oklopol> apparently they are still keeping einstein's brain
16:38:27 <oklopol> i have my doubts as to whether there was anything special about the dude
16:38:28 <Phantom_Hoover> Well, FSVO 'keeping'.
16:38:41 <Phantom_Hoover> Cutting it up doesn't really count in a lot of people's eyes.
16:38:51 <oklopol> i mean, more than say brad pitt's brain or how ever his name is spelled
16:39:00 <oklopol> however
16:39:42 <Phantom_Hoover> Holy crap I never realised that Elrond was Agent Smith????
16:42:31 <oklopol> i hate the internet
16:42:35 <Phantom_Hoover> oklopol, can we preserve your brain?
16:43:06 <oklopol> i'm not planning on dying
16:43:21 <Phantom_Hoover> I don't see the relevance?
16:44:14 <oklopol> i will use my brain forever and ever, so i will just preserve it myself
16:44:21 <oklopol> so yes. or no. it's irrelevant.
16:44:52 <Phantom_Hoover> Can we insure your brain against accidental damage?
16:45:05 <oklopol> hmm
16:45:36 <oklopol> dunno, would be kind of an interesting challenge to be a retard
16:45:48 <oklopol> well. a very rich retard i guess
16:45:52 <oklopol> so yeah you can insure it
16:46:48 <Phantom_Hoover> OK this is good.
16:47:31 <oklopol> i'd just go around all like hurp durp they call me an oklopol
16:47:41 <oklopol> here's some moneys for ya
16:48:06 <oklopol> and everyone would be like oh all this money makes your skin seem so soft and seducing
16:48:21 <oklopol> and i'd be like hurp durp what's a seducing
16:48:33 <oklopol> but secretly
16:48:36 <oklopol> i wouldn't even care-
16:48:39 <oklopol> *.
16:48:53 <Phantom_Hoover> You seem to have this whole brain damage thing planned out.
16:49:04 <oklopol> apparently.
16:49:59 <Phantom_Hoover> Were I an insurance person, I would be suspicious.
17:02:06 -!- MSleep has joined.
17:17:01 -!- derrik has quit (Quit: gone).
17:28:35 -!- ais523 has joined.
17:28:52 -!- Nisstyre has quit (Ping timeout: 240 seconds).
17:29:43 <Phantom_Hoover> "Robots have replaced slaves[citation needed] in the assistance of performing those repetitive and dangerous tasks which humans prefer not to do,"
17:30:01 <Phantom_Hoover> — Wikipedia, apparently oblivious of the last century.
17:30:11 <Gregor> lolwut
17:30:17 <Gregor> Can has link?
17:30:42 -!- monqy has joined.
17:36:30 <pikhq> Funny, here I was thinking it was "underpaid labor" that replaced slaves.
17:40:12 -!- sebbu2 has joined.
17:40:12 -!- sebbu2 has quit (Changing host).
17:40:12 -!- sebbu2 has joined.
17:42:54 <yiyus> /names
17:43:09 <yiyus> ups
17:43:10 -!- sebbu has quit (Ping timeout: 252 seconds).
17:52:55 -!- sebbu3 has joined.
17:52:55 -!- sebbu3 has quit (Changing host).
17:52:55 -!- sebbu3 has joined.
17:53:12 -!- sebbu2 has quit (Read error: Connection reset by peer).
17:54:24 -!- elliott has joined.
18:01:52 <ais523> hi elliott
18:01:58 <elliott> hi ais523
18:02:02 <oklopol> hi both
18:02:31 <pikhq> Hi troth
18:03:07 -!- TheJimmyJames1 has joined.
18:03:47 -!- TheJimmyJames1 has quit (Read error: Connection reset by peer).
18:03:57 <ais523> wow at the levels of spam on esolang recently
18:05:02 <elliott> "I don't really have an opinion, so I'm going to argue against deletion."
18:05:06 <elliott> ais523: does this sentence make any sense to you?
18:05:26 <ais523> yes; I can parse it and it semantically makes sense
18:05:46 <oklopol> i don't have an opinion, and here it is
18:05:55 <ais523> it's a little inconsistent, but I can mentally expand it to "I'm an inclusionist and think pages shouldn't be deleted without a good reason"
18:06:52 <elliott> ais523: there needs to be a good word to distinguish "has lax notability standards" and "thinks pages should be kept unless proven otherwise"
18:07:12 * elliott suspects most deletionists are aligned against the first position, not the latter
18:07:12 <oklopol> so i suppose he was very confident about his lack of opinion being correct. he would've thought it should be removed if it was that bad.
18:07:17 -!- TheJimmyJames1 has joined.
18:10:41 -!- Slereah has quit (Ping timeout: 252 seconds).
18:11:14 -!- Slereah_ has joined.
18:11:22 <ais523> elliott: I actually think deletionism is a result of biased sampling
18:11:29 <elliott> `@ TheJimmyJames1 ? welcome
18:11:31 <ais523> if you spent a while on Wikipedia's newpage patrol, you'd become a deletionist too
18:11:35 <HackEgo> TheJimmyJames1: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
18:11:38 <elliott> ais523: heh
18:11:47 <ais523> I am serious about this, it almost happened to me
18:11:56 -!- Nisstyre has joined.
18:12:14 <elliott> ais523: Wikipedia really needs to find a way to get its maintanence work done without doing it by making people obsessive :P
18:12:31 <elliott> "Category:Candidates for speedy deletion is currently 202% backlogged."
18:12:46 <Phantom_Hoover> elliott, just outsource it to the general population.
18:12:52 <ais523> heh, cleaning out CSD is /typically/ really easy
18:13:03 <ais523> when it isn't, it's because overeager taggers are tagging all sorts of stuff for deletion that doesn't actually delete it
18:13:09 <ais523> my guess is that A7 has got out of hand again
18:13:16 <elliott> "The queue at Special:NewPages is currently 20.33 days." apparently this only counts as defcon 4
18:13:17 <Phantom_Hoover> Every now and then you get a popup requiring that you do maintenance.
18:13:24 <elliott> I guess defcon 1 is when it's ten years backlogged
18:13:37 <elliott> Administrators: Please do not delete this category even if it is empty!
18:13:37 <elliott> This category may be empty occasionally or even most of the time.
18:13:37 <elliott> --Category:Candidates for speedy deletion
18:13:43 -!- sebbu3 has changed nick to sebbu.
18:13:55 <elliott> ais523: which one is A7?
18:13:59 <ais523> no, defcon 1's when there's a concerted amount of vandalism by people who know what they're doing, that also can't be cleaned up in an automated way
18:14:06 <ais523> elliott: approximately, no assertion of notability
18:14:12 <elliott> ais523: no, newpages defcon
18:14:20 <ais523> oh, there's a newpages defcon now?
18:14:20 <elliott> there's so many defcons!
18:14:27 <elliott> CSD defcon and newpages defcon at least
18:14:33 <ais523> presumably that's much the same thing, except for vandals creating pages
18:14:45 <elliott> ais523: no, I think it's just based on the backlog
18:14:46 <ais523> to me, that sounds like {{adminbacklog}} not {{defcon}}
18:14:47 <elliott> given the captions
18:15:01 <elliott> they need a defcon defcon so we can know when the defcons are getting dangerously high
18:15:51 <elliott> eh, there's only 44 pages in CSD
18:16:04 <elliott> http://en.wikipedia.org/wiki/User:DialTel good
18:17:47 -!- Slereah_ has quit.
18:23:19 -!- azaq23 has joined.
18:31:06 -!- zzo38 has joined.
18:32:58 -!- Slereah_ has joined.
18:37:50 -!- TheJimmyJames1 has quit (Quit: Leaving.).
18:45:29 -!- copumpkin has changed nick to TheWickedChicken.
18:47:38 <elliott> ais523: yikes
18:47:50 <elliott> ais523: all our external links headings are wrong
18:47:57 <elliott> because of Graue
18:48:02 <zzo38> Tell me if there is something you see wrong with this program which I may have missed: http://sprunge.us/LJeL
18:48:25 * elliott wonders how one can judiciously decide to disregard a policy after someone already starts mass-editing a fix to it
18:48:34 <zzo38> I think it must be wrong because it is out of memory even if the module is compiled, so I must have written it wrong.
18:48:53 <elliott> zzo38: did you use -O2?
18:49:05 <elliott> you need -O at least to get basic strictness analysis and -O2 can help as well
18:49:52 <elliott> > type TextString = [Either Int32 Word32];
18:49:53 <lambdabot> <no location info>: parse error on input `type'
18:49:58 <elliott> zzo38: you don't want to store long strings in that
18:50:17 <elliott> it's full of boxes and lazy, so it'll eat up tons of memory
18:51:09 <zzo38> elliott: I tried -O and -O3
18:51:34 <elliott> -O3 is meaningless, it means -O2
18:51:44 <elliott> well, it's not meaningless :) but it's silly
18:51:54 <elliott> zzo38: anyway, I suggest
18:52:15 <elliott> data TextChar = Blah Int32 | Bleh Word32 deriving (Eq, Show, ...) -- with better names for the constructors
18:52:16 <elliott> then
18:52:19 <zzo38> The function "withDVI" which is causing the out of memory never uses the "TextString" type.
18:52:26 <elliott> type TextString = Vector TextChar
18:52:38 <elliott> zzo38: how did you determine that is what runs out of memory? profiling?
18:53:51 <zzo38> Because I compiled the program and then loaded the compiled file and then used: tenrm <- loadFont (Left 1000) "f:/program files2/MiKTeX/fonts/tfm/public/cm/cmr10.tfm" withDVI "test1.dvi" (\_ _ -> return tenrm) 0 (\_ p -> return $ Just (0, pageNumbers p))
18:55:16 <elliott> > withDVI_page_ :: (Word32 -> ByteString -> IO Font) -> s
18:55:16 <elliott> > -> (s -> Page -> IO (Maybe (s, t))) -> DocStat -> Word8 -> IO [t];
18:55:17 <lambdabot> Not in scope: type constructor or class `ByteString'Not in scope: type cons...
18:55:17 <lambdabot> <no location info>: parse error on input `->'
18:55:19 <elliott> zzo38: will the resulting list be long?
18:55:30 <elliott> because this produces no elements until the whole thing has been calculated, and builds up thunks in memory in the meantime
18:55:53 <zzo38> The file "test1.dvi" has only a single page, so the resulting list will have only one element, which is its page number.
18:56:16 <elliott> zzo38: have you tried profiling yet?
18:56:27 <elliott> http://www.haskell.org/ghc/docs/7.0.4/html/users_guide/profiling.html
18:56:34 <zzo38> Will that display exactly what part runs out of memory?
18:57:05 <elliott> it's not possible to determine "exactly which part" since that depends on when the allocator gives up and runs out of heap! but it will help you see which parts of the program allocate more than others
18:58:25 <elliott> if the +RTS -p profiling demonstrated there doesn't help, then http://www.haskell.org/ghc/docs/7.0.4/html/users_guide/prof-heap.html might
18:58:31 <elliott> but try the first page first
18:59:18 <zzo38> Do I need to compile the main module too, to make that work, or can it be used with GHCi if the Graphics.DVI module is compiled and the main commands are entered interactively?
19:00:03 <elliott> You need a Main module, but you can just do:
19:00:11 <elliott> main = do { tenrm <- loadFont (Left 1000) "f:/program files2/MiKTeX/fonts/tfm/public/cm/cmr10.tfm"; withDVI "test1.dvi" (\_ _ -> return tenrm) 0 (\_ p -> return $ Just (0, pageNumbers p)) }
19:00:16 <elliott> err, >>= print at the end of that :)
19:01:16 <zzo38> OK. I can try that.
19:02:30 <elliott> pikhq: I had an idea to make @'s allocator superfast but it won't work :(
19:02:37 <pikhq> Oh?
19:03:50 <elliott> pikhq: Well, a typical allocator would look like \size -> { heapPtr += size; if (heapPtr > heapMax) jump to gc stuff; return (heapPtr - size) }.
19:04:21 <elliott> pikhq: I was thinking, what if I just made it \size -> { x = heapPtr; heapPtr += size; return x }, and aligned things so that the heapMax was on a hardware page boundary?
19:04:37 <elliott> pikhq: Then it'd cause a page fault when the overflow would occur when the memory is first accessed.
19:04:44 <elliott> And I could fix things up from the handler.
19:04:47 <elliott> So allocation would be branch-free.
19:05:21 <elliott> pikhq: The problem is that I'd have to have a free page after it in all circumstances, and obviously I can't just say that the @ abstract machine-local 64-bit address space only uses every other page, because that's ridiculous and means you can't have allocations bigger than a page.
19:05:56 <elliott> Which sucks, because a two-instruction (mov + add), branchless allocator would be awesome.
19:07:17 -!- azaq23 has quit (Quit: Leaving.).
19:08:47 <pikhq> elliott: Actually, it's a free page after each *heap*.
19:09:07 <elliott> Hmm, well, true.
19:09:26 <elliott> pikhq: Still, it sucks to wall off large parts of the address space for an optimisation.
19:09:51 <pikhq> This doesn't *quite* work, though, because you'll need to make sure your allocation isn't bigger than a free page + what's remaining.
19:10:19 <elliott> pikhq: Well, right. Most allocations are smaller than 4 megabytes.
19:10:25 <pikhq> So you'd probably need to make the allocator select a heap of appropriate size first.
19:10:37 <elliott> Hopefully static analysis could determine whether an allocation is always less than 4 megabytes in the common case...
19:10:40 <elliott> Since most allocations are constant-sized.
19:10:51 <pikhq> Yeah, that is definitely something static analysis could do.
19:11:01 <pikhq> Not much different than GCC's memcpy optimisations.
19:12:20 <zzo38> Using those options didn't work. I got "out of memory" and an empty .prof file
19:13:05 <elliott> zzo38: huh. try the http://haskell.org/ghc/docs/7.0.4/html/users_guide/prof-heap.html style of profiling? Alternatively, just terminate the program before it runs out of memory (with Ctrl+C or similar)
19:13:10 <elliott> that'll make the .prof be generated
19:14:52 <zzo38> It runs very fast; there is no time for Ctrl+C
19:15:25 <elliott> zzo38: You could try running it on even smaller inputs so that it doesn't run out of memory and produces a report that you can optimise memory use based on.
19:18:15 <zzo38> I tried it with only an "X" on the page; that also runs out of memory. Trying it with only a rule (no text, not even the page number) succeeds.
19:18:41 <elliott> Well, look at the profiling report for that then :-) Beyond that I don't really have much idea; ask #haskell.
19:23:30 -!- SgeoN1 has joined.
19:24:21 -!- derrik has joined.
19:31:43 -!- pagnol has joined.
19:31:54 <elliott> `@ pagnol ? welcome
19:31:56 <HackEgo> pagnol: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page
19:35:45 <SgeoN1> Hard drive came
19:36:07 <SgeoN1> No internal screws though, and even if I had, I don't see a place to put them
19:36:26 <elliott> what hard drive
19:36:40 -!- zzo38 has left.
19:38:18 <elliott> :t catMaybes >=> listToMaybe
19:38:19 <lambdabot> Couldn't match expected type `[c]' against inferred type `Maybe a'
19:38:19 <lambdabot> In the second argument of `(>=>)', namely `listToMaybe'
19:38:19 <lambdabot> In the expression: catMaybes >=> listToMaybe
19:38:23 <elliott> :t catMaybes
19:38:24 <lambdabot> forall a. [Maybe a] -> [a]
19:38:30 <SgeoN1> New hard drive for my old laptop which I've been using
19:38:32 <elliott> :t \xs -> listToMaybe (catMaybes xs)
19:38:33 <lambdabot> forall a. [Maybe a] -> Maybe a
19:38:44 <elliott> oh, hmm
19:38:46 <shachaf> elliott: Foiled again!
19:38:53 <elliott> shachaf: hi
19:39:01 <shachaf> elliott: Good afternoon.
19:39:14 <elliott> good afternoon to be foiled
19:39:21 <shachaf> Did you think you would find an actual use case for (>=>)?
19:39:34 <shachaf> That operator is forever going to be "nice to express the monad laws in" and nothing more.
19:39:58 <elliott> shachaf: I use (>=>) with... semi-relative frequency.
19:40:25 <shachaf> Semi-relative to zero?
19:40:26 <elliott> shachaf: See, I get "f x = doCrapWith x >>= processMagic", and zomg!
19:40:51 <shachaf> zomg, indeed. I couldn't have put it better myself.
19:41:17 <SgeoN1> Is it bad that I tend to think in terms of do notation, then, if simple, translate to operators?
19:42:02 <elliott> Sorry, we're not qualified Haskell therapists.
19:42:23 <shachaf> Tell us more about you tend to think in terms of do notation, SgeoN1.
19:48:30 -!- sebbu has quit (Ping timeout: 276 seconds).
19:52:32 -!- TheWickedChicken has changed nick to copumpkin.
19:58:41 <pikhq> SgeoN1: YES, YE SHALL BE LYNCHED
20:01:19 -!- sebbu has joined.
20:01:19 -!- sebbu has quit (Changing host).
20:01:19 -!- sebbu has joined.
20:04:03 <elliott> pikhq: I guess whether it's OK or not to have a free page after every heap depends on how big heaps will be.
20:05:01 <elliott> (Shouldn't it be "pool", not heap?)
20:06:57 -!- azaq23 has joined.
20:13:34 <pikhq> Probably.
20:13:59 -!- zzo38 has joined.
20:14:18 <elliott> I mean, an @ system only has one heap.
20:14:28 <elliott> (That actually might be the definition of an @ system.)
20:14:59 <SgeoN1> Well, this is a bad sign
20:16:58 <shachaf> elliott: I could've sworn that the total number heaps that all @ systems in existence have is zero.
20:17:18 <elliott> shachaf: You're a bad person.
20:17:31 <shachaf> :-(
20:17:40 * shachaf would, like, totally use @.
20:18:22 <elliott> OK you are granted minimum decency status.
20:18:47 <shachaf> ...If it only had a better name.
20:19:08 <pikhq> Fortunately, "@" is a placeholder.
20:19:23 <elliott> shachaf: @ ISN'T THE NAME
20:19:26 * elliott kills everyone
20:19:38 <shachaf> elliott: So what's "@"?
20:19:50 <elliott> shachaf: A macro for the English language that expands to the name of @.
20:20:09 <elliott> shachaf: It's just that nobody knows what it is yet, so whenver you use it, your sentence gains an indeterminate amount of words, letters, and sense.
20:20:09 <shachaf> elliott: Why didn't it expand just then when you said "@ ISN'T THE NAME"?
20:20:20 <elliott> shachaf: Lisp macros don't expand when you type out a use of them in Emacs!
20:20:25 <elliott> Oh, I see.
20:20:29 <elliott> Umm, use-mention distinction.
20:20:33 <elliott> Or: I was just lying! For FUN!
20:20:39 <elliott> Fuck you I hate you.
20:20:41 -!- elliott has left ("BAH").
20:21:27 -!- elliott has joined.
20:21:35 <shachaf> @hug elliott
20:21:36 <lambdabot> http://hackage.haskell.org/trac/ghc/newticket?type=bug
20:21:44 <elliott> I'm the worst bug.
20:22:26 <shachaf> elliott is just afraid of picking a name because if it's a suboptimal name, the system won't be perfect anymore.
20:22:30 <shachaf> Unlike the rest of @.
20:23:05 <elliott> shachaf: See, you think you're joking, but no, that's literally the exact reason I won't pick a name.
20:23:17 <elliott> shachaf: (Although I don't think @ is perfect, I'm just really indecisive about names.)
20:23:51 <shachaf> elliott: /whois ec
20:24:07 <elliott> shachaf: I know who that is.
20:24:14 <shachaf> Yep.
20:24:20 <elliott> shachaf: What's your point?
20:24:52 <shachaf> I don't got a point.
20:25:10 <elliott> Deep.
20:36:16 <Gregor> Mmmmmmmmmmmm PEZ
20:42:10 -!- pikhq_ has joined.
20:42:19 -!- pikhq has quit (Ping timeout: 245 seconds).
20:43:02 <fizzie> PEZ!
20:43:12 <Gregor> Inoserite!
20:43:43 <elliott> I no serite.
20:43:55 <fizzie> I, nose.
20:44:21 <elliott> Rite?
20:45:52 <Gregor> elliott: I broke ARM.
20:46:41 <elliott> Gregor: RIP ARM.
20:46:45 <elliott> Gregor: Try it on PEZ.
20:48:42 <fizzie> The best thing about PEZ is that you not only get candy, you're also at the same time practicing killing people by wringing their necks.
20:49:05 <Gregor> I don't use the dispensers.
20:49:11 <Gregor> I feel they cheapen the candy.
20:49:19 <Gregor> They redirect the focus improperly.
20:49:21 <fizzie> But then you don't get any murder practice.
20:49:31 <elliott> Gregor: X-D
20:49:40 <Gregor> I get plenty of murder practice every Sunday at the docks.
20:51:36 <elliott> ais523: You know, a stopgap until Graue finally upgrades MediaWiki and improves the anti-spam stuff would be to have a spam-deletion bot.
20:52:07 <elliott> ais523: Also, you missed "Touches on free mobile dating sites in the comment" and "User:Shopfitting11".
20:52:12 <ais523> no I didn't, I'm just being lazy
20:52:17 <ais523> I'll get to them eventually
20:52:43 <elliott> ais523: I said "missed" because you deleted other pages in the interim.
20:52:54 <ais523> they appeared out of order in my feed
20:52:59 <elliott> Ah.
20:53:05 <ais523> to be precise, in the update after the one that gave me the pages I actually deleted
20:53:10 <ais523> I don't know /why/ the feed is so out of order, btw
20:53:42 -!- zzo38 has quit (Remote host closed the connection).
20:54:29 -!- oerjan has joined.
20:54:34 <elliott> hi oerjan
20:54:45 <oerjan> hello elliott
20:55:55 <elliott> ais523: Do you use the RSS or Atom feed?
20:56:07 <ais523> I can't remember
20:56:18 <ais523> they both contain the same info, though, IIRC
20:56:26 <elliott> ais523: Yes, but one might be less buggily generated.
20:56:43 <elliott> Either the Atom one because Atom is a newer/more modern standard, or RSS because Atom was immature when this ancient MW version came out.
20:58:31 <oerjan> <CakeProphet> monqy: I've occasionally considered the idea of "static duck typing" though I don't really know if type inference is possible.
20:58:43 <oerjan> that's called structural typing and ocaml has it
20:58:44 <elliott> see ocaml object system
20:58:47 <elliott> oerjan: *hi5*
20:58:58 <oerjan> *hi5*
20:59:12 <elliott> yessssssss
21:00:24 <oerjan> i vaguely recall that ocaml's polymorphic records also involve that, perhaps in a simpler way. and that no one uses ocaml's object system anyway.
21:00:40 <oerjan> or was that polymorphic variants. or both.
21:00:43 <elliott> oh, i may have meant its records.
21:00:51 <elliott> yes, i think i did.
21:00:57 <elliott> ocaml is so ugly.
21:02:21 <oerjan> i've forgotten most of it beyond the basics.
21:03:39 <oerjan> although i suppose learning it first may have helped me learning haskell.
21:05:05 * elliott isn't sure any strict, impure language can help with haskell. but i suppose ADTs are a good basis
21:05:38 <oerjan> erm it certainly helps with the _type_ system basics, hindley-milner you know
21:05:56 <elliott> oerjan: well that too.
21:05:59 <elliott> oerjan: apart from that ''a stuff :P
21:06:01 <oerjan> and also higher order functions.
21:06:16 <oerjan> although i'd seen those before in lisp
21:06:17 <elliott> OK, I suppose it helps a bit :)
21:06:25 <elliott> just doesn't eliminate the learning curve
21:08:24 <elliott> pikhq_: I wonder how expensive it would be to give every single thread its own pool...
21:08:31 <elliott> pikhq_: (I want threads at least as lightweight as GHC's)
21:08:36 <elliott> Probably "way too".
21:09:30 -!- Sgeo has joined.
21:13:04 <oerjan> `addquote <fungot> Ngevd: again in a fresh memo later be sent you a copy of knitting for assholes
21:13:05 <fungot> oerjan: just as i was initially believed they were new additions. for that. busy
21:13:06 <HackEgo> 724) <fungot> Ngevd: again in a fresh memo later be sent you a copy of knitting for assholes
21:13:11 <pikhq_> elliott: Actually, it would probably actually dramatically reduce GC overhead.
21:13:26 <pikhq_> And, in fact, Erlang does precisely that.
21:13:38 <pikhq_> Each Erlang process has its own pool.
21:13:55 <oerjan> iirc ghc also gives each thread its own pool, but only in the first generation
21:14:16 <elliott> pikhq_: Yes, but Erlang processes aren't /that/ lightweight.
21:14:20 <elliott> You can have millions of GHC threads easily.
21:14:24 -!- Ngevd has joined.
21:14:34 <pikhq_> True, GHC threads are even more lightweight than Erlang processes.
21:14:49 <pikhq_> Both of which are much more lightweight than "real" processes or threads.
21:14:52 <elliott> oerjan: huh
21:14:54 <elliott> oerjan: I wonder how big the pools are
21:14:55 <Ngevd> Isn't it annoying when you have an amazing revelation then realise it would be ABSOLUTELY USELESS?
21:15:25 <oerjan> elliott: the "nursery", it's called, it's what allows the concurrent gc
21:15:33 <elliott> oh, right
21:15:44 <elliott> 512 kilobytes, heh
21:15:52 <Ngevd> For instance, C-style for loops in Lambda Calculus
21:16:00 <elliott> oerjan: well i definitely need lots of pools, since the heap is like 1 Tio
21:16:02 <oerjan> and it can of course only contain objects not referenced from other threads, a problem which erlang doesn't have
21:16:08 <elliott> and stopping the world would be problematic :P
21:16:23 <elliott> oerjan: right, so things like IORefs allocate their backing storage on something more shared?
21:16:29 -!- Ngevd has changed nick to Taneb|Hovercraft.
21:16:34 <oerjan> elliott: well ghc's concurrent gc still stops the world, unless they've changed it
21:16:48 <elliott> the problem is that reduces to two levels in @, thread-local and global...
21:16:53 <elliott> oerjan: oh you mean parallel ghc ofc
21:16:54 <elliott> not concurrent
21:17:00 <oerjan> oh hm
21:17:05 <elliott> parallel = gc uses threads
21:17:08 <elliott> concurrent = gc runs with program
21:17:39 <oerjan> i vaguely recall they're trying to remove that and make it concurrent
21:17:52 <elliott> Gregor: Is there any hope for non-copying collectors? :'(
21:17:57 <oerjan> unless they already did, very recently
21:18:22 <elliott> oerjan: i don't think so
21:18:22 <Gregor> elliott: Any hope of what?
21:18:32 <elliott> Gregor: Not being worse than copying collectors :P
21:18:46 <Gregor> elliott: Perhaps when we're on many-many-many-core.
21:19:10 <Taneb|Hovercraft> Woah, I can adapt my idea into something awesome!
21:19:36 <elliott> Gregor: Soooo not helpful :P
21:19:49 <elliott> Hmm, I could probably do a copying collector, if I have enough pools.
21:19:54 <oerjan> elliott: i don't know if IORefs allocate outside the nursery _immediately_, or just when they get set to something in another thread
21:20:00 <elliott> You'd only need, like, a few gigs free at a time, not a terabyte.
21:20:12 <elliott> oerjan: well ok
21:20:52 <Sgeo> How annoying would it be to repartition such that I have more swap space, and should I do so?
21:21:05 <oerjan> it's probably part of the same copying that ensures you cannot have a reference from an older generation to a younger
21:21:06 <Sgeo> I'm on a 1GB machine, and the installer decided to give me 1GB of swap
21:21:23 <Sgeo> (approx.)
21:21:30 <pikhq_> Dude, anymore you should be heavily tempted to just not have swap.
21:21:32 <ais523> swap space as a similar size to main memory is the usual guideline
21:21:45 <elliott> ais523: 1.5* for smaller systems
21:21:49 <elliott> pikhq_: Uh no, 1 gig is nothing.
21:21:54 <ais523> elliott: do you consider 1GB a smaller system?
21:21:56 <elliott> 1 gig of swap miight be OK, but I'd shoot for 2 gigs.
21:21:57 <elliott> ais523: Of course it is.
21:22:12 <pikhq_> elliott: I'm using 1 gig ATM, on x86_64 (which, of course, uses more memory)
21:22:17 <elliott> ais523: Nobody but zzo has < 1 gig, and no "usual" (even netbook) computer sold today has fewer than 1-2 gigs.
21:22:27 <elliott> 3 gigs is very common on cheap consumer machines.
21:22:38 <elliott> And 8-16 gigs is becoming common on the high end.
21:22:41 <elliott> So yeah, 1 gig is small.
21:22:44 * Sgeo does need to be able to run MonoDevelop without crying
21:22:56 <pikhq_> Sgeo: Get more RAM
21:23:04 <pikhq_> Swapping like crazy is "with crying".
21:23:21 * oerjan still has 800 something Mb, actually
21:23:47 <ais523> the problem with swap is, you're in serious trouble if it's actually used for the foreground process
21:23:55 -!- derrik_ has joined.
21:24:19 <elliott> Now would be a good time to mention how much better @ is with swapping?
21:24:51 <ais523> what /does/ @ do with swapping?
21:24:57 <Taneb|Hovercraft> Is @ going to be released in the next 10 years?
21:25:07 <pikhq_> ais523: RAM is considered disk cache.
21:25:13 <ais523> pikhq_: ah, ofc
21:25:18 <ais523> so it's more a case of antiswapping
21:25:22 <ais523> swapping out of RAM, rather than onto disk
21:25:24 <elliott> pikhq_: not /quite/, you can have things in the cache that aren't on disk
21:25:25 -!- derrik has quit (Ping timeout: 253 seconds).
21:25:30 <oerjan> elliott: ah you're going to need that precognitive swap algorithm that someone asked me to write years ago
21:25:32 <elliott> it's more like, RAM is the first few GC generations, and whatever's being use
21:25:33 <elliott> d
21:25:40 <oerjan> just too bad i never did
21:25:42 <Phantom_Hoover> Taneb|Hovercraft, no, elliott will be too busy... I don't actually know.
21:25:46 <elliott> and disk is all generations apart from the first few
21:25:48 <pikhq_> elliott: It's still the shortest way of describing @'s memory model. :P
21:25:49 <Phantom_Hoover> Making ElliottCraft?
21:25:52 <elliott> oerjan: wat :P
21:25:52 -!- Taneb|Hovercraft has quit (Quit: Goodbye).
21:26:01 <Sgeo> pikhq_, I assume it's less crying with an HD than with USB stick like I was doing before?
21:26:12 <oerjan> elliott: i don't know if he was joking or severely overestimating me
21:26:18 <Phantom_Hoover> (I will still be trying to find out how you do numerical integration for gravity without it being crazy inaccurate.
21:26:20 <Phantom_Hoover> )
21:26:27 <elliott> oerjan: were you talking about synchronicity or sth :P
21:26:31 <pikhq_> Sgeo: You're still dealing with human-noticable latencies for disk access.
21:26:37 <pikhq_> Spinning disks are *really* slow.
21:26:40 <elliott> Phantom_Hoover: Can't you just rip off that JS thing :P
21:27:00 <oerjan> elliott: no, this was long before i learned of synchronicity. back in the mid-90s at the latest
21:27:18 <Sgeo> human-noticable is not as bad as human-tearing-his-hair-out-for-10-minutes
21:27:28 <elliott> oerjan: Did the page you randomly turned to feature the http://upload.wikimedia.org/wikipedia/commons/e/e2/Sch%C3%A9ma_synchronicit%C3%A9_in_English.png diagram?
21:27:37 <elliott> It'd convince me.
21:27:43 <oerjan> iirc he suggested it would be nice with a swap algorithm which could guess what needed to be swapped in next
21:27:54 <Phantom_Hoover> elliott, he ripped off a JS Library, in the sense of "code which is ~optomised~ to the point of taking too much work to unravel."
21:28:04 <elliott> oerjan: well that's doable, precognition isn't :P
21:28:10 <elliott> (whether it /works/ well is another question)
21:28:28 <ais523> what does optomisation mean?
21:28:45 <Phantom_Hoover> Who knows?
21:29:01 <oerjan> elliott: that horizontal axis is something i've thought about before, the vertical not so much.
21:29:04 <elliott> ais523: It's what only terse can give you.
21:29:09 <elliott> Sorry, *TERSE
21:29:10 <ais523> also, hmm, surrounding the word with ~ = sarcasm marks on a single word?
21:29:36 <oerjan> ais523: ~probably~
21:29:38 <Phantom_Hoover> That's the main use of sarcasm marks I've seen, by which I mean it's what elliott does.
21:29:51 <elliott> http://www.terse.com/pics/topyello.gif
21:29:54 <elliott> OPTOMIZED
21:29:57 <elliott> TERSE
21:29:58 <elliott> PERFORMANCE
21:30:08 <elliott> op-to-mize vt [Gk optos + ISV -mize] : to make as aesthetically perfect, effective, or functional to the eye as possible.
21:30:21 <ais523> oh, like optical optimization?
21:30:42 <elliott> No! It's TERSE! Assembly language with ADDED FUN!
21:30:49 <elliott> Prefix! Infix! Postfix!
21:30:57 <elliott> DOS-compatible! Windows-compatible!
21:31:00 <elliott> Bill Gates approved!
21:31:09 <elliott> Lose Wait(tm) with TERSE(tm) today!
21:31:15 <ais523> you know what; I've decided that unary minus is a really annoying operator
21:31:21 <elliott> (I swear to god the "Lose Wait" thing is a direct quote.)
21:32:30 <oerjan> ais523: haskellers agree
21:32:59 <ais523> so do OCamlers (where it has a different notation from - in a lot of contexts as - would be ambiguous)
21:33:08 <oerjan> elliott: surely it should be "Loose Wait"?
21:33:12 <elliott> When I saw him a few days later he was jubilant! "Wow! I hadn't realized how easy it was to write in . I began translating my stuff and gave up on it. It was much simpler just to write everything directly in . Not only did I totally re-write several weeks worth of code, but I wrote a bunch of other routines too." "I told you," I replied. "With you're free to work on the problem, not the assembly language syntax. There's no need to invent label
21:33:12 <elliott> s, think about reversing conditionals, your typing is significantly reduced, and..." He butted in, "And you can see the structure of the program right on the screen! There is no need to make a listing and draw out the looping structure with a pen, and..." I couldn't get another word in, so I just let him talk as he continued to espouse the virtues of .
21:33:14 <CakeProphet> uh oh, someone has pinged me.
21:33:20 <oerjan> CakeProphet: boo!
21:33:21 * CakeProphet scrolls up
21:33:21 <elliott> I would put the "TERSE"s back in from the logos there, but I think it might be better without.
21:34:53 <CakeProphet> oh good it wasn't elliott pinging me.
21:34:54 <CakeProphet> I'm safe.
21:34:58 <oerjan> elliott: i had to copy and paste to find out if you'd really removed the name or if it was a crazy unicode thing
21:35:01 <elliott> CakeProphet sucks.
21:35:03 <elliott> oerjan: heh
21:35:04 -!- Taneb|Hovercraft has joined.
21:35:07 <elliott> oerjan: each one is an individual <img>
21:35:09 <elliott> with no alt text
21:35:12 <elliott> http://www.terse.com/pics/terse22p.gif
21:35:13 <oerjan> aha
21:35:21 <elliott> http://www.terse.com/reluctan.htm
21:35:34 <elliott> the lack of italics and bold in the black-on-yellow 90s style makes it lose something in translation
21:35:38 <oerjan> a very language
21:35:49 <elliott> :D
21:36:08 -!- derrik_ has quit (Quit: gone).
21:36:42 <oerjan> <elliott> CakeProphet sucks. <-- hey i was afraid he'd suck so much he didn't notice at all
21:37:05 <CakeProphet> :( :( :( :( :(
21:37:32 <oerjan> CakeProphet: it's always dangerous to talk to people who've idled for 12 hours
21:37:42 <Taneb|Hovercraft> What is Terse?
21:37:46 <elliott> Taneb|Hovercraft: .
21:37:56 <oerjan> Taneb|Hovercraft: The st language of all!
21:38:07 <Taneb|Hovercraft> elliott: that helps a lot
21:38:17 <elliott> Taneb|Hovercraft: http://www.terse.com/
21:38:58 <oerjan> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA THE YELLOW, IT BURNS
21:39:24 <Phantom_Hoover> So it's assembly that does control structures for you?
21:39:29 <Phantom_Hoover> i.e. PUSSY ASSEMBLY
21:39:40 <elliott> PLUS SYMBOLICS!!! INFIX!!!!
21:39:40 <oerjan> must be my 1/8 vampire genes
21:39:41 <ais523> i.e. C?
21:39:54 <elliott> ais523: NO ITS TERSE
21:40:05 <CakeProphet> I don't recommend gooling "pussy assembly"
21:40:10 <CakeProphet> *googling
21:40:15 <Phantom_Hoover> ais523, no.
21:40:15 <elliott> ais523: "external resources" is such an ugly heading :(
21:40:25 <oerjan> hey if someone wants to assemble a pussy, i'm not going to stop them.
21:40:28 <CakeProphet> with SafeSearch off, even.
21:40:34 <Phantom_Hoover> C specifies a fair bit of memory management stuff as well.
21:40:59 <Taneb|Hovercraft> Is it bad that I think brainfuck could be more readable
21:41:15 <oerjan> Taneb|Hovercraft: more readable than what?
21:41:18 <CakeProphet> it's kind of confusing.
21:41:21 <Phantom_Hoover> That way lies brick/brain exchange.
21:41:22 <CakeProphet> that you would think that.
21:41:23 <Taneb|Hovercraft> oerjan: Terse
21:41:42 <oerjan> ah. i was afraid you were considering making a derivative.
21:41:49 <oerjan> *WHEW*
21:42:21 <Taneb|Hovercraft> My first esolang was an unpublished Ook! derivative
21:42:35 <CakeProphet> wow terse's website is SO AWESOME
21:42:46 <CakeProphet> it's yellow.
21:42:48 <Taneb|Hovercraft> Sometime probably in 2008
21:42:52 <Sgeo> ....Maybe I shouldn't have gone for encrypted home
21:42:57 <Sgeo> AFAICT, it implies encrypted swap
21:43:08 <CakeProphet> uh, no?
21:43:23 <CakeProphet> your home and your swap are completely separate from each other... >_>
21:43:34 <CakeProphet> assuming linux.
21:43:36 <Sgeo> "Also, it is strongly recommended that you encrypt your swap space. Users installing from Ubuntu 9.10 and selecting the Encrypted Home option will automatically have encrypted swap space. "
21:43:44 <Sgeo> Why would they change it after 9.10?
21:43:44 <CakeProphet> oh
21:43:48 <CakeProphet> weird.
21:43:52 <CakeProphet> THEY NEVER TOLD ME THAT.
21:44:05 <CakeProphet> but anyway encrpytion isn't a problem, it's a good thing.
21:44:42 <elliott> Sgeo: what's wrong with encrypted swap
21:45:09 <Sgeo> elliott, slower, I'd assume
21:45:16 <CakeProphet> ha. ha. ha ha. ha ha ha
21:45:19 <Gregor> I feel like swapping just isn't slow enough.
21:45:23 <Gregor> How could I make it slower?
21:45:25 <Gregor> I KNOW!
21:45:35 <elliott> Sgeo: disk is much slower than cpu.
21:46:18 <pikhq_> Heck, *RAM* is slower than CPU anymore.
21:46:39 <shachaf> Even CPU is slower than CPU these days*.
21:46:42 <pikhq_> :P
21:47:23 <CakeProphet> shit even the speed of light is slower than CPUs now.
21:48:27 <CakeProphet> Sgeo: but yeah encryption is either imperceptible or minor overhead on top of a disk operation.
21:48:39 <CakeProphet> Sgeo: also, how often do you actually use your swap?
21:48:42 <CakeProphet> I don't use mine at all.
21:48:46 <shachaf> All the time!
21:48:50 -!- Taneb|Hovercraft has quit.
21:49:08 <shachaf> Actually, apparently I don't.
21:49:10 <CakeProphet> oh hmmm I'm apparently using 330 MBs of swap right now. :P
21:49:42 <shachaf> But yesterday I accidentally tried to compute a big Integer in ghci and I ended up using quite a lot of swap before I managed to kill it.
21:49:49 <CakeProphet> sudo swapoff -a
21:49:51 <CakeProphet> bahahahahahahaha
21:50:00 <shachaf> CakeProphet: I'm sure your OS has better things to do with that RAM.
21:50:08 * CakeProphet mutters under his breath about "evillllll"
21:51:01 -!- pagnol has quit.
21:52:07 <CakeProphet> the main problem I have with my encrypted home is that
21:52:09 <CakeProphet> if my computer died
21:52:15 <CakeProphet> I will have no way to access everything
21:52:19 <CakeProphet> because I don't know the key. :P
21:52:23 <shachaf> Memorize the key.
21:52:33 <CakeProphet> I actually don't even know where to find it.
21:52:41 <shachaf> Someone needs to write a program that turns arbitrary bytestrings into something that's easy for humans to memorize.
21:53:18 <CakeProphet> well I was just going to do the old write-it-down trick.
21:53:26 <CakeProphet> so when the FBI raid my home they can easily find it!
21:53:32 <shachaf> No, man, memorize it!
21:53:39 <shachaf> I should do that.
21:53:50 <CakeProphet> I could apply a simple Caesar cipher to it
21:53:53 <CakeProphet> they'll never figure that shit out!
21:56:35 <oerjan> wait, if you don't know the key, then it must be stored on the computer, and wth is then the point of encrypted home?
21:56:40 <Gregor> elliott: ARM fixt.
21:56:54 <elliott> Gregor: Horey.
21:57:09 <Gregor> elliott: Whorey.
21:59:45 -!- zzo38 has joined.
22:03:39 <CakeProphet> hoary
22:03:48 <oerjan> <elliott> :t \xs -> listToMaybe (catMaybes xs)
22:03:49 <oerjan> hm...
22:04:03 <CakeProphet> oerjan: you need the key to open the drive...
22:04:09 <CakeProphet> because it's... encrypted
22:04:10 <oerjan> > mconcat [Nothing, Just 3, Just 4]
22:04:11 <lambdabot> Ambiguous type variable `a' in the constraints:
22:04:11 <lambdabot> `Data.Monoid.Monoid a'
22:04:11 <lambdabot> ...
22:04:12 <elliott> oerjan: I was thinking of something involving join first, which was what all that monadery was about.
22:04:13 <CakeProphet> the encrypted drive contains the key.
22:04:23 <oerjan> wat
22:04:24 <elliott> > choice [Nothing, Just 3]
22:04:25 <lambdabot> Not in scope: `choice'
22:04:30 <elliott> @hoogle Alternative f => [f a] -> f a
22:04:31 <lambdabot> Data.Foldable asum :: (Foldable t, Alternative f) => t (f a) -> f a
22:04:31 <lambdabot> Control.Monad msum :: MonadPlus m => [m a] -> m a
22:04:31 <lambdabot> Control.Applicative (<|>) :: Alternative f => f a -> f a -> f a
22:04:41 <oerjan> > mconcat [Nothing, Just 3, Just (4 :: Int)]
22:04:42 <lambdabot> No instance for (Data.Monoid.Monoid GHC.Types.Int)
22:04:42 <lambdabot> arising from a use of...
22:04:50 <oerjan> oops
22:04:50 <elliott> oerjan: it's a wrapper-type Monoid insatnce
22:04:51 <elliott> instance
22:04:52 <elliott> not a semantic-type one
22:04:54 <oerjan> oh hm
22:04:55 <elliott> (terms I just made up)
22:04:59 <elliott> > asum [Nothing, Just 3, Just (4 :: Int)]
22:05:00 <lambdabot> Not in scope: `asum'
22:05:02 -!- bd_ has left.
22:05:03 <elliott> >:(
22:05:06 <elliott> > Data.Foldable.asum [Nothing, Just 3, Just (4 :: Int)]
22:05:07 <lambdabot> Just 3
22:05:09 <oerjan> > msum [Nothing, Just 3, Just 4]
22:05:11 <lambdabot> Just 3
22:05:36 <CakeProphet> mmmm biscuit syrup
22:06:01 <CakeProphet> all governments should be biscuit syrup.
22:06:03 <elliott> oerjan: anyway, listToMaybe [x | C x <- xs] is quite a nice pattern
22:06:27 <elliott> listToMaybe [ x+y | Foo x y <- xs, x < y ]
22:06:28 <oerjan> CakeProphet: um my point is, how can you then get the computer started without knowing the key? even if it's otherwise in order?
22:06:32 <elliott> it's like find but with deconstruction :P
22:06:36 <elliott> hmm...
22:06:42 <elliott> @hoogle (a -> Maybe b) -> [a] -> Maybe b
22:06:42 <lambdabot> Prelude mapM_ :: Monad m => (a -> m b) -> [a] -> m ()
22:06:42 <lambdabot> Control.Monad mapM_ :: Monad m => (a -> m b) -> [a] -> m ()
22:06:42 <lambdabot> Control.Monad forM_ :: Monad m => [a] -> (a -> m b) -> m ()
22:07:10 <CakeProphet> oerjan: oh well I think the code might be based on your password (???)
22:07:22 <CakeProphet> but all it seems to need is my password to access the drive.
22:08:53 <oerjan> very well
22:10:47 <CakeProphet> oerjan: hmmm but I do need a mount passphrase which it apparently gave me and I probably didn't write down.
22:10:54 <CakeProphet> if I want to manually recover the drive.
22:12:43 <CakeProphet> but I'm thinking I can use my login passphrase with a newly installed Ubuntu OS and it will be able to unmount it somehow (?????)
22:12:52 <CakeProphet> according to this wiki page.
22:13:53 <ais523> elliott: "ditto" is not an ideal edit comment when you're dittoing something on another page
22:14:02 -!- Patashu has joined.
22:14:10 <elliott> ais523: IT WAS SO TEDIOUS
22:14:18 <elliott> I note that I apparently forgot it for about five edits :P
22:15:48 <ais523> I've got all the spam now, I think
22:16:06 <CakeProphet> elliott: so FRP would be a good choice for... say, a physics simulator within a game like df?
22:16:30 <Sgeo> What is FRP not an ideal choice for?
22:16:38 <CakeProphet> Sgeo: network IO, apparently.
22:16:58 <elliott> *certain kinds of network io
22:17:00 <Sgeo> Hmm?
22:17:04 * Sgeo is curious now
22:17:55 <CakeProphet> Sgeo: also things where you're not reacting to time-based events.
22:17:57 <elliott> http://stackoverflow.com/questions/6812533/am-i-using-reactive-banana-right is a decent example.
22:17:58 <CakeProphet> or external input.
22:17:59 <elliott> Esp.: @Ben Ford: I've added a small remark to the answer. I don't know what you want to do with the sockets, so I can't tell you whether FRP is overkill for your purpose. Basically, if your event network won't grow much larger than this one with a single accumE and some filterE, then it's more elegantly done without FRP. – Heinrich Apfelmus Jul 25 at 16:16
22:18:24 <elliott> Also FRP is obviously not very well suited to "conversational" style UIs, where you're literally doing things in sequence: ask user for command, do something, repeat.
22:19:12 <Sgeo> Hmm
22:20:09 <CakeProphet> why is the wikipedia article for FRP so bad.
22:22:40 <CakeProphet> elliott: but perhaps some of this bloat could be resolved if your language provided built-in support for FRP similar to what Haskell does with monads.
22:22:43 <CakeProphet> just an idea.
22:23:03 <CakeProphet> but I think it's fair to say that this is too much code for a simple networking task.
22:23:03 <elliott> Haskell offers exactly one bit of language support: do notation.
22:23:10 <elliott> And it's not much.
22:23:38 <CakeProphet> it certainly makes things like, say, simple networking tasks, not quite as annoying.
22:23:51 <CakeProphet> granted
22:24:26 <CakeProphet> it's /easy/ to fit monads to an synchronous style of programming, but FRP doesn't work that way.
22:27:28 <elliott> augur: You might be interested in Clue.
22:27:41 <augur> elliott: the whodunnit game?
22:27:43 <augur> i love clue!
22:27:48 <elliott> No, http://esolangs.org/wiki/Clue_%28oklopol%29.
22:27:56 <elliott> http://esolangs.org/wiki/Clue_%28oklopol%29/Quicksort and http://esolangs.org/wiki/Clue_%28oklopol%29/SKI_calculus are more helpful than the article.
22:27:58 <elliott> Re: your talk in #haskell.
22:27:59 <augur> is it oklopol naked?
22:28:06 <oklopol> yes
22:28:09 <elliott> Yes.
22:28:11 <oklopol> thank you for asking
22:28:20 * augur bites oklopol
22:28:30 <oklopol> now why would you do that
22:28:46 <CakeProphet> clue is the worst game
22:28:46 <CakeProphet> ever
22:28:48 <oklopol> that's just nasty
22:29:18 <oklopol> are you talking about my clue
22:29:19 <oklopol> ca
22:29:20 <oerjan> some people just prefer to be clueless
22:29:23 <oklopol> *-ca
22:29:28 <CakeProphet> oklopol: no the shitty board game.
22:29:30 <oklopol> because that's an awesome game
22:29:32 <oklopol> oh
22:30:14 <oklopol> i haven't played it, what do you actually do in it
22:30:25 <augur> oklopol: do you have a more serious discussion of this language
22:30:26 <CakeProphet> you roll dice, move your little piece across a huge square map
22:30:28 <CakeProphet> and go into rooms
22:30:32 <elliott> augur: http://esolangs.org/wiki/Clue_%28oklopol%29/Quicksort http://esolangs.org/wiki/Clue_%28oklopol%29/SKI_calculus
22:30:33 <CakeProphet> ....that's pretty much the game.
22:30:34 <augur> or a reference to something related, but serious?
22:30:37 <elliott> augur: I linked you to the examples for a reason.
22:30:38 <oklopol> augur: sorry, no.
22:30:54 <augur> oklopol: where is your inspiration for this coming from?
22:30:59 <oklopol> for clue?
22:31:01 <CakeProphet> oh it's apparently called cluedo outside the states.
22:31:02 <Phantom_Hoover> CakeProphet, I always loved how half the game is moving pieces around a square grid.
22:31:10 <CakeProphet> Phantom_Hoover: yes that's my favorite part
22:31:17 <CakeProphet> and by favorite I mean the worst part about it.
22:31:20 <augur> oklopol: yes
22:31:23 * Phantom_Hoover wonders if you could camp by blocking a dor.
22:31:25 <Phantom_Hoover> *door
22:31:36 <elliott> augur: If you think it's not serious, then keep in mind that those programs actually work. :p
22:31:37 <CakeProphet> Phantom_Hoover: I don't think you can elect to not move.
22:31:39 <oklopol> it's the same inspiration that makes everyone come up with the basic idea of example-based computation.
22:31:43 <oklopol> it's an obvious idea
22:31:43 <CakeProphet> Phantom_Hoover: I think you have to use all of your moves in a turn
22:31:49 <augur> elliott: by more serious i mean publishable
22:31:53 <CakeProphet> Phantom_Hoover: but, I guess it's still possible.
22:31:55 <Phantom_Hoover> CakeProphet, sure but doors have two blockable squares.
22:32:01 <augur> oklopol: i see. ok
22:32:01 <Phantom_Hoover> Just move between the two.
22:32:07 <elliott> augur: Sorry, I thought you asked "does anyone have any info about", not "does anyone haev any papers about".
22:32:19 <Sgeo> elliott, epdort
22:32:29 <augur> i didnt know there was such a thing as example based programming
22:32:31 <augur> interesting
22:32:35 <oklopol> augur: but certainly not trying to make anything serious about it
22:32:38 <CakeProphet> who needs RSS when you have Sgeo.
22:33:10 <oklopol> augur: there isn't, because i'm the only one who has made it work to any extent. also that may not be true, but no one has corrected me yet.
22:33:20 <augur> :)
22:33:23 <Sgeo> Someone in one of the Homestuck channel is keeping a log of all typos
22:33:59 <oklopol> of course while making it work, i made it lose most of its practical usefulness. that may not usually be desired.
22:34:12 <CakeProphet> Sgeo: a noble pursuit.
22:34:55 <oklopol> did i say most? i meant all of it.
22:36:00 <augur> oklopol: so you dont know of anyone else who's done this sort of thing
22:36:03 <CakeProphet> oklopol: that's the issue I'm having with my graph automata thing.
22:36:08 <augur> do you have source for the Clue compiler?
22:36:17 <CakeProphet> I can't devise 9 states that do anything practical.
22:36:18 <oklopol> augur: no. and yes, it's probably somewhere....
22:36:23 <CakeProphet> so maybe I should just... not make it practical.
22:36:25 <CakeProphet> yes that sounds good.
22:36:27 <oklopol> it's like the slowest thing in the universe
22:36:33 <augur> oklopol: can you accurately describe the process?
22:37:31 <oklopol> i'm pretty sure i can, but i don't really feel like doing that right now
22:37:37 <oklopol> (or anything really)
22:37:42 <augur> :\
22:37:43 <augur> ok
22:37:50 <oklopol> why u so interested all of a sudden?
22:40:01 <oklopol> well you don't really need to be able to answer, but anyhow what i can do is put the link back up
22:40:22 <oklopol> so you can technically find out more. assuming this is the newest version of the interpiler.
22:40:42 <elliott> oklopol: does it still have the ugly <>s :(
22:40:59 <oklopol> no i think that's now always id
22:41:05 <oklopol> and omitted
22:41:24 <oklopol> i have a way better way to do conditionals, but it's yet to be implemented because i work on this like a day every two years
22:41:43 <elliott> oklopol: well yeah that's the GENIUS CHANGE I made
22:41:48 <elliott> just didn't know you merged it back in :P
22:41:48 <oklopol> what
22:41:54 <oklopol> oh
22:41:55 <elliott> you said it wouldn't work like that
22:41:57 <oklopol> you mean making it id
22:41:57 <elliott> and i did it
22:41:59 <elliott> and it worked
22:41:59 <elliott> yeah
22:42:01 <elliott> and then you were like
22:42:02 <elliott> elliott
22:42:05 <elliott> you are the biggest genius
22:42:08 <elliott> how can i ever repay you
22:42:09 <elliott> humbly,
22:42:10 <elliott> oklopol
22:42:17 <oklopol> huh.
22:42:27 <CakeProphet> big dude for big people.
22:42:30 <oklopol> well cool, i guess i could reduce your debt a bit.
22:42:39 <elliott> what debt. oh that thing.
22:42:44 <oklopol> here i thought your ideas were really stupid
22:43:00 <oklopol> anyway the new way is so completely different that i won't even start to explain it
22:43:37 <oklopol> also i don't remember exactly what it is
22:44:34 <CakeProphet> 9 different states might be too many.
22:44:36 <oklopol> on friday we talked about my colleague's new esolang for like half the workday
22:44:37 <CakeProphet> maybe 5 is good.
22:44:47 <oklopol> and the other half we played my newest game
22:45:37 <CakeProphet> but I need some way to connect subgraphs together...
22:45:51 <elliott> CakeProphet: what
22:45:55 <elliott> oklopol: which game
22:46:01 <oklopol> cp:s rant sounds interesting but i think i won't ask anyway
22:46:12 <oklopol> elliott: there's a few balls and a lot of cubes.
22:46:29 <oklopol> it's basically an fps, just for a game programming course, nothing particularly interesting
22:46:29 <CakeProphet> elliott: I'm working on a graph automata. Like a CA but with a graph instead of an discrete infinte 2d space of whatevers.
22:46:56 <elliott> oklopol: i wanna play anyway but FIIIINE
22:47:05 <oklopol> you can when it's done
22:47:12 -!- SgeoN1 has quit (Quit: Bye).
22:47:16 <oklopol> unless we decide to try to sell it for laughs and giggles
22:47:22 <elliott> I could: buy it.
22:47:27 <oklopol> (it's actually a lot of fun)
22:47:29 <CakeProphet> elliott: the basic idea so far is that the node states are numbers, and higher numbers take precedence over lower numbers with respect to figuring out which rules to apply.
22:48:15 <oklopol> you could. when it's done. or you can just have it for free if it's free. when it's done.
22:48:49 <CakeProphet> that's, basically all I've got, other than some ideas like "this node rotates all of its children so that they swap subgraphs" and "this node deletes child nodes that are even when its degree is odd, and odd children when its degree is even"
22:48:56 <CakeProphet> and other things that don't really fit together in any coherent way.
22:49:53 <oklopol> a rule is always applied to a single node at once?
22:49:59 <oklopol> argh i promised myself i wouldn't ask
22:50:10 <CakeProphet> I, guess? I'm not sure what you mean.
22:50:13 <CakeProphet> by "at once"
22:50:17 <oklopol> maybe i just won't listen, i'll fire questions and ignore you mwahaha
22:50:41 <oklopol> well you know how ca apply the rule everywhere, do you just have like a calculation of where the rule should be applied next and iterate this
22:50:52 <CakeProphet> no.
22:51:02 <oklopol> or do you apply to each node, and just order these in some way because the rules can change the graph itself
22:51:10 <CakeProphet> that one.
22:51:32 <oklopol> okay, this might be interesting, i'll take a look at the end product when you finish
22:51:38 <CakeProphet> ha,
22:51:43 <CakeProphet> ha ha. "finish"
22:52:19 <CakeProphet> the main issue I'm having is that I don't really know how you would program with such a thing.
22:52:36 <CakeProphet> but I guess, like most CA, it's kind of non-obvious.
22:52:58 <CakeProphet> also creating new nodes and attaching subgraphs together is kind of an open question.
22:53:49 <CakeProphet> if I go with 10 states (0-9) then I could have some numbers that connect together automatically, so "all 1s connect to all 9s, and vice versa"
22:53:57 <CakeProphet> or "all 5s connect to all other 5s"
22:55:08 <CakeProphet> but then how do I create nodes, I think I'd need a way to increment the state of a node.
22:55:20 <coppro> haskell
22:55:58 <CakeProphet> so one rule could be "this state creates a new 0 node on some condition" and then have rules by which a node could change its state value.....
22:56:01 <CakeProphet> but......
22:56:07 <CakeProphet> that is a huge clusterfuck :P
22:57:24 -!- myndzi has joined.
22:57:25 <elliott> hi coppro
22:57:28 <CakeProphet> but I want the rules to be somewhat simple, nothing involving paths or cycles or subgraph properties, so that it can compute steps efficiently.
22:57:53 -!- Darth_Cliche has joined.
23:00:08 <CakeProphet> for conditional rules I was thinking I could utilize number parity (do this for (even|odd) degree, or do that to all (even|odd) children) and maybe summation of child nodes (when the sum of all child nodes = X, do this)
23:01:44 <CakeProphet> graph rewriting would be so much easier :P (for me, not the computer)
23:02:11 <Sgeo> There are Reader Writer and State Monoids?
23:02:17 * Sgeo headaches
23:02:24 <elliott> ?
23:03:02 <CakeProphet> oh no, not a binary operation with an identity element!
23:03:11 * CakeProphet mind blown
23:03:26 <oerjan> Sgeo: er, you are not misspelling "Monads"?
23:03:31 <Sgeo> oerjan, I am not.
23:03:37 <Sgeo> http://hackage.haskell.org/packages/archive/monoid-transformer/0.0.2/doc/html/Data-Monoid-State.html
23:03:49 <Sgeo> Searched due to seeing a package in Synaptic
23:04:11 <elliott> oh, cute
23:04:28 <elliott> it does the moral equivalent of mappend <$> m <*> s
23:04:33 <elliott> s/s/m'/
23:05:02 <CakeProphet> elliott: did you read the source code or was it obvious from the Monoid instance.
23:05:18 <elliott> i read the monoid instance's code
23:05:47 <CakeProphet> ah, but it's still pretty obvious from the instance itself.
23:05:54 <CakeProphet> Monoid a => Monoid (T s a)
23:05:58 <CakeProphet> hmmm, wonder what that could do.
23:06:37 <elliott> Doesn't tell you how it threads the state at all.
23:06:46 <CakeProphet> ah, yes.
23:07:00 -!- azaq23 has quit (Max SendQ exceeded).
23:07:04 <CakeProphet> I'm wondering why they used a new type.. and not just the original State monad?
23:07:26 <CakeProphet> also they used the name pure.....
23:07:51 <elliott> to avoid the dependency on transformers or mtl?
23:07:56 <elliott> and to avoid semantic confusion?
23:08:12 -!- azaq23 has joined.
23:08:25 <CakeProphet> too cautious..
23:08:50 <oerjan> hm but isn't _every_ Monad a Monoid under a similar interpretation.
23:09:08 <elliott> oerjan: no, because there's no /binding/
23:09:11 <elliott> it's more like an applicative
23:09:22 <elliott> only the state is threaded
23:09:28 <elliott> you can't thread the result
23:09:36 <elliott> oh
23:09:45 <elliott> i think you can /maybe/ define a monoid for every monad like that?
23:09:47 <elliott> dunno
23:09:58 <oerjan> mappend <$> m <*> s, you said
23:10:04 <CakeProphet> a Monoid for every Functor, perhaps?
23:10:07 <elliott> moral equivalent of, I said
23:10:09 <elliott> CakeProphet: definitely not.
23:10:27 <oerjan> return mempty
23:10:43 <oerjan> or indeed, for every _applicative_
23:10:53 <elliott> oerjan: that's what i was conjecturing.
23:11:28 <oerjan> mappend <$> pure mempty <*> x = mappend mempty <$> x = x
23:11:45 <CakeProphet> ah.
23:11:54 <oerjan> mappend <$> x <*> pure mempty = flip mappend (pure empty) <$> x = x
23:12:01 <oerjan> er
23:12:11 <oerjan> *mappend <$> x <*> pure mempty = flip mappend mempty <$> x = x
23:13:52 <oerjan> mappend <$> x <*> (mappend <$> y <*> z) = (\a b c -> mappend a (mappend b c)) <$> x <*> y <*> z = mappend (mappend a b) c <$> x <*> y <*> z = mappend <$> (mappend <$> x <*> y) <*> z
23:14:05 <oerjan> all pretty standard Applicative laws, i think
23:14:18 <oerjan> er
23:14:21 -!- elliott has quit (Read error: Connection reset by peer).
23:14:41 <oerjan> *= (\a b c -> mappend (mappend a b) c <$> x <*> y <*> z =
23:14:52 -!- elliott has joined.
23:14:53 <oerjan> *+)
23:15:44 <oerjan> in fact it would seem that an Applicative can lift any algebraic structure
23:16:48 <CakeProphet> oerjan: hmmm, CharParser Monoid could be useful perhaps?
23:17:15 <CakeProphet> er Parser monoid actually.
23:17:47 <oerjan> perhaps
23:19:11 <CakeProphet> I don't remember how Parsec combines tokens together by default.
23:19:20 <CakeProphet> *results of parsing tokens
23:21:30 <oerjan> that depends on how you combine the _parsers_ together, in precisely the same way as any other monad or applicative.
23:21:44 <CakeProphet> right
23:22:08 <CakeProphet> so I think a monoid would have the effect of combining two results into one?
23:22:41 <oerjan> x `mappend` y = mappend <$> x <*> y, is what we are going by above
23:24:09 <oerjan> also, this requires the result types to belong to a monoid.
23:24:18 <CakeProphet> right.
23:26:01 <CakeProphet> so yeah that's my guess on what a Parsec Monoid instance would do.
23:27:32 <CakeProphet> match both parsers in sequence (I think), concat the results together (for Strings), while threading the state.
23:32:33 -!- pagnol has joined.
23:33:16 -!- ais523 has quit (Ping timeout: 240 seconds).
23:45:04 <CakeProphet> Sgeo: ehplideot
23:45:20 <Sgeo> CakeProphet, liar
23:45:26 <CakeProphet> Sgeo: are you sure?
23:45:39 <Sgeo> Yes
23:45:44 <CakeProphet> ha
23:45:44 <CakeProphet> ha
23:45:46 <CakeProphet> haha
23:45:47 <CakeProphet> hahaha
23:45:50 <CakeProphet> hahahahaha
23:46:29 <monqy> ehplideot
23:48:13 <CakeProphet> `words 50
23:48:15 <CakeProphet> `word 50
23:48:15 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: words: not found
23:48:18 <HackEgo> oballipa tonimellizzemativatynataguthouslere frupion boeuriarefrurinsatiscon atoachalluybiltissit jickenticeladals mhi fellantanx eudolacyl furnminfifinte alceptem mim gwe ithothum lyhsensiann zii enferite oldt tant zinatomptcriersodebity edes nlich viguenfel blacutheinguabeishititraupossed diforts whiared sidcux shanizurlijau re plaare midocium brourionsoyatengentitn ntenodia chassinchasstheaderce incia le se becorrats
23:49:16 <CakeProphet> so many giant words.
23:52:23 <CakeProphet> `logs fix.*scanl.*ha
23:52:25 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: logs: not found
23:52:29 <CakeProphet> `log fix.*scanl.*ha
23:52:48 * CakeProphet waits.
23:52:53 <Sgeo> > scanl (+) 1 [1,1..]
23:52:54 <lambdabot> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28...
23:52:55 <HackEgo> 2011-11-19.txt:23:52:29: <CakeProphet> `log fix.*scanl.*ha
23:52:59 <CakeProphet> ASSHOLE
23:53:25 <CakeProphet> fibs = fix (("ha. ":) . scanl (++) "ha.")
23:53:28 <CakeProphet> > fix (("ha. ":) . scanl (++) "ha.")
23:53:30 <lambdabot> ["ha. ","ha.","ha.ha. ","ha.ha. ha.","ha.ha. ha.ha.ha. ","ha.ha. ha.ha.ha. ...
23:53:38 <CakeProphet> > fix (("ha. ":) . scanl (++) "ha. ")
23:53:40 <lambdabot> ["ha. ","ha. ","ha. ha. ","ha. ha. ha. ","ha. ha. ha. ha. ha. ","ha. ha. ha...
23:54:07 <Sgeo> > scanl (+) 1 [1..]
23:54:08 <lambdabot> [1,2,4,7,11,16,22,29,37,46,56,67,79,92,106,121,137,154,172,191,211,232,254,...
23:54:27 <CakeProphet> > var . unlines $ fix (("ha. ":) . scanl (++) "ha. ")
23:54:29 <lambdabot> ha.
23:54:29 <lambdabot> ha.
23:54:29 <lambdabot> ha. ha.
23:54:29 <lambdabot> ha. ha. ha.
23:54:30 <lambdabot> ha. ha. ha. ha. ha.
23:54:32 <lambdabot> ha. ha. ha. ha. h...
23:54:36 <CakeProphet> :)
23:56:53 * CakeProphet should perhaps be banned from using var ever again.
23:57:41 <CakeProphet> maybe if go over to #haskell to do it someone will get the gumption to fix lambdabot.
23:57:46 <CakeProphet> +I
23:57:51 <CakeProphet> after they ban me.
23:58:25 <CakeProphet> I think I'll go do that.
←2011-11-18 2011-11-19 2011-11-20→ ↑2011 ↑all