00:00:10 `run find . | paste 00:00:13 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.19816 00:00:16 `run find / | paste 00:00:19 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 good. 00:00:36 `run tree / | paste 00:00:40 bash: tree: command not found \ http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.10348 00:00:43 Aww 00:00:45 elliott: Still no go on SPARC :( 00:00:45 Aww. 00:00:46 elliott: shame 00:00:53 Gregor: Install tre 00:00:54 e 00:00:59 What the boink is tree? 00:01:01 `run apt-get install tree 00:01:03 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 :P 00:01:17 `run sudo -u GOD apt-get install tree 00:01:19 bash: sudo: command not found 00:01:24 CakeProphet: I figure for security sake, I'll just run random users' code as root. 00:01:33 GOOD CALL. 00:01:44 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 apt-get install tree plz 00:02:11 What the boink is tree? 00:02:45 Gregor: I gave you links. 00:02:47 Now shut up and install it :P 00:03:01 -!- sebbu has quit (Ping timeout: 244 seconds). 00:03:17 elliott: I don't want links. Explain it in four words or less. 00:03:38 Gregor: http://mama.indstate.edu/users/ice/tree/ has it in a thousand, in the form of one ASCII picture. 00:03:39 http://sprunge.us/fNgR 00:03:42 this is tree 00:03:51 As does CakeProphet :P 00:03:58 Gregor: It's a bit like ls, but it prints a directory tree. 00:04:22 SO FAR I SEE ONLY POLYWORD EXPLANATIONS 00:04:24 FOUR OR LESS 00:04:35 "this is tree" is totally three 00:04:37 4 if you count the URL 00:04:42 Gregor: "Directory tree" 00:04:55 Gregor: It draws a directory tree in ASCII/Unicode. 00:05:06 I don't think I can count the URL as one word :P 00:05:06 Gregor: ASCII/Unicode directory tree. 00:05:11 elliott: Perfect. 00:05:14 `run tree / | paste 00:05:46 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.8739 00:06:01 good tree. 00:06:01 `run tree / >/dev/null 00:06:03 ... 00:06:10 It's probably erroring or something? 00:06:24 No output. 00:06:28 `run tree / | head 00:06:30 ​/ \ |-- bin \ | |-- bash \ | |-- bunzip2 \ | |-- bzcat \ | |-- bzcmp -> bzdiff \ | |-- bzdiff \ | |-- bzegrep -> bzgrep \ | |-- bzexe \ | |-- bzfgrep -> bzgrep 00:06:36 Maybe it's more than 10M :) 00:06:57 `run tree / | gzip -9 | paste 00:07:02 That ... won't work. 00:07:05 `run tree / | gzip -9c | paste 00:07:23 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.17 00:07:30 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.32133 00:08:04 2.3 MB 00:08:24 Donno why it didn't like it before *shrugs* 00:08:35 Can you install the TeX to PNG webpage I have into Hackiki? 00:08:59 Gregor: hey can you install df onto HackEgo? 00:09:13 CakeProphet: Probably, but I doubt that it would do anything useful. 00:09:15 `run tree | paste 00:09:17 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.32268 00:09:30 `run tree / | paste 00:09:42 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 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.32291 00:09:55 Gregor: 'Swhat Wikipedia does :P 00:09:58 But HackEgo doesn't need it... 00:10:06 elliott: how does it decide when to use ASCII and when do use Unicode? 00:10:07 elliott: *Hackiki 00:10:11 Oh 00:10:14 Gregor: P.S. I suspect you mean LaTeX :-) 00:10:17 elliott: Makes more sense for Hackiki 00:10:18 `tree --help 00:10:20 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 #] [] \ -a. All files are listed. \ -d. List directories only. \.-l. Follow symbolic links like directories. 00:10:21 elliott: Oh, 'struth. 00:10:29 Gregor: Which I doubt zzo is happy with ;-) 00:10:32 `run tree --help | paste 00:10:34 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 #] [] \ -a. All files are listed. \ -d. List directories only. \.-l. Follow symbolic links like directories. 00:10:36 Gregor: No, you can use that for making PNG images included inside of a HTML page. 00:10:38 `run tree --help 2>&1 | paste 00:10:42 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 In general, not for the entire page. 00:10:51 `run tree -A | paste 00:10:53 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.26352 00:10:57 lol 00:11:02 SPARC is driving me CRAZY. 00:11:04 * CakeProphet thinks we should convert esowiki to hackiki. 00:11:06 Adding a printf cannot make this work >_< 00:11:16 what could go wrong? 00:11:21 CakeProphet: I tried to drive that once, but 'twas a wasted effort. 00:11:26 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 Gregor: try again :P 00:12:38 You could also probably remove all the restrictions I have since those are managed by a separate program in Hackiki anyways. 00:13:09 Hac Kiki? 00:13:43 Hack Iki 00:14:50 shachaf: What HackBot (HackEgo) is to IRC bots, Hackiki is to wikis. 00:17:36 -!- copumpkin has changed nick to c0w. 00:17:42 > var "bad\nlambdabot\nbad" 00:17:43 bad 00:17:44 lambdabot 00:17:44 bad 00:17:44 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 zzo38: I'll check in a bit, in the middle of something else right now. 00:19:14 OK 00:19:47 * CakeProphet just got $30 for applying for a credit card 00:19:50 yeaaaaaah 00:19:55 free money 00:20:21 they're placing a bet that I'm fiscally irresponsible. 00:20:23 BOY ARE THEY WRONG. 00:20:26 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 Or if you don't use a credit card? 00:20:40 zzo38: probably 00:20:55 but it gives you like Amazon reward point things or some shit so I might actually use it. 00:21:03 without, you know, owing obscene amounts of interest. 00:21:05 Any SPARC experts? Anything weird about how it handles return addresses? Something to do with its register windows maybe? 00:21:08 spelled correctly. 00:22:30 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 Gregor: turns out one of the 4 people who still know anything about SPARC are on this very channel. 00:23:41 CakeProphet: But whoooooooo 00:24:28 yiyus 00:24:39 -!- c0w has changed nick to copumpkin. 00:25:41 yiyus: HAAAAAAAAAALP :P 00:27:24 -!- oerjan has joined. 00:29:46 CakeProphet: wat 00:29:55 so you know what the death of John McCarthy means? 00:30:00 Elephant WILL NEVER BE A REAL THING. 00:30:05 unless it already is one and I missed it. 00:30:08 elliott arpdoit 00:30:18 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 Elephant? 00:30:51 http://www-formal.stanford.edu/jmc/elephant/elephant.html 00:32:49 CakeProphet: elephant will always be remembered 00:33:14 * Phantom_Hoover → sleep 00:33:15 -!- Phantom_Hoover has quit (Quit: Leaving). 00:33:37 Good idea, PPH 00:33:39 Goodnight 00:33:40 -!- Ngevd has quit (Quit: Goodbye). 00:33:42 elephant is sort like an anti-feather, i think 00:33:58 opposite feather more like 00:34:21 ...in which we learn that CakeProphet doesn't know what anti- means. 00:34:43 dunno, to me anti- implied a sort of negation effect 00:34:55 phantom phantom hoover 00:35:15 as does opposite 00:36:32 nope, no way! 00:37:39 -!- oklopol has joined. 00:37:45 ollon. 00:38:45 nollo 00:39:01 SWEEET DELICIOUS PALLINDROMIC CORE MMMMM 00:40:55 ah finally the more weak-willed of the Birtons have saught respite in their slumberchambers. 00:41:41 and the Americans and Norsemen can converse in peace. 00:42:23 (note that Britons applies to all UKers here. because I said so.) 00:42:45 hi 00:42:49 Program I wrote in Haskell to read DVI file is running out of memory!! 00:42:56 rip program 00:43:33 Do you know how to make it to not run out of memory? 00:44:22 probably apply strictness somewhere. 00:46:30 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 so I like actually know how to debug your program without any source code. 00:47:51 zzo38: tail recursion can sometimes make things _worse_ in haskell 00:48:05 O, that is what you are the prophet of? I thought you were the Prophet Wizard of the Crayon Cake. 00:48:20 no, lies. 00:48:22 a facade. 00:48:28 oerjan: If you look will you know how to fix it? 00:48:41 a pale phantom of the dark frowziness that lies beneath. 00:49:32 Is it running out of ByteString memory? 00:49:36 the ineffable funk. 00:50:03 zzo38: what kind of memory is it running out of? 00:50:08 is a stack overflow reported? 00:50:16 or does it just gobble up computer memory until the whole system lags? 00:50:16 It just says out of memory. 00:50:21 elliott: I bet it's RAM. 00:50:23 :) 00:50:24 "out of memory"? that's it? 00:50:31 The system didn't lag. 00:50:33 hi 00:50:41 elliott: Yes, it just says "out of memory" 00:50:41 hello 00:50:41 zzo38: are you sure it doesn't say the heap is exhausted? :P 00:50:44 weird. 00:51:00 zzo38: are you loading a really big file? 00:51:12 I wonder if skyrim tracks number of hours you played so far somewhere. Probably don't want to check that though... 00:51:13 zzo38: you can try +RTS -HM 00:51:15 for some 00:51:17 megabytes 00:51:19 to increase the default heap size 00:51:26 if you're trying to load a very big file 00:51:42 oh hmm 00:51:46 elliott, shouldn't the size of the heap grow as required? 00:51:48 looks like ghc automatically increases the heap 00:51:54 yeah 00:51:57 Vorpal: well that's not always the best decision... but anyway 00:52:01 it wouldn't make sense if it didn't 00:52:03 zzo38: how much RAM do you have? :P 00:52:04 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 elliott, true. 00:52:10 zzo38: you might try http://haskell.org/ghc/docs/6.12.3/html/users_guide/prof-heap.html 00:52:17 elliott, now stacks tend to have a max size more often 00:52:18 zzo38: then your program is inefficient *shrugs* 00:52:24 I have 224 MB of RAM 00:52:36 what... really? 00:52:39 .. 00:52:40 how old is that computer? 00:52:45 I don't know. 00:52:49 ... 00:52:58 that belongs in a mueum! 00:53:00 museum* 00:53:03 lol 00:53:08 -!- derdon has quit (Remote host closed the connection). 00:53:29 wait, did I just do an unintentional Indiana Jones parody? Ouch I think I did... 00:53:35 Actually it says ": out of memory" is that different? 00:54:58 zzo38, just don't try to run windows on that system. Unless it is like 9x 00:55:11 heck, even windows xp would be a pain with that little ram 00:55:16 It is XP 00:55:16 -!- kmc has joined. 00:55:30 sounds painful on 224 MB RAM 00:55:48 zzo38, for laughs you should try windows vista or windows 7 on it 00:56:01 I don't need to change it 00:56:01 bbiab 00:56:16 If I ever change the operating system I will put Linux, not Windows. 00:56:25 zzo38, but iirc DX11 doesn't work under XP? 00:56:40 or maybe your graphics card can't do that anyway 00:56:44 I don't use DX11 00:56:53 or that 00:58:24 There is no great genius without some touch of madness. 01:00:19 Vorpal: people used xp with 256 megs of ram commonly, y'know 01:00:25 it came out in 2001 01:01:09 Vorpal: also i'm pretty sure most stuff works with directx 9 still 01:01:54 "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 ame makers from their dominance of the industry.[22]" 01:02:01 wow it's like he's trying to be a gigantic asshole 01:02:47 ... wow. 01:02:54 That's ... wow. 01:03:52 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 Slogan: "Bill Gates Is Literally Hitler, Like, He's Growing The Moustache And Everything" 01:04:46 *Ballmer 01:04:51 Bill Ballmer 01:11:10 Vorpal: people used xp with 256 megs of ram commonly, y'know 01:11:11 it came out in 2001 01:11:12 hm yeah 01:11:16 xp is that old? 01:11:17 right 01:11:25 very long lived 01:11:39 i believe xp is the longest-lasting version of any maintained microsoft product :P 01:12:04 over 5 years 01:12:20 More if you consider the length of official support. 01:12:21 it is about 10 years now 01:12:26 Genius is an infinite capacity for taking pains. -- Jane Hopkins 01:12:30 yeah 01:12:51 Support ends in 2014. 01:12:57 heh 01:13:04 *Sale* ended in 2009. 01:15:27 darn i'm not a genius anyway? 01:18:55 pikhq, so 8 years of sale and 13 years of support? 01:18:59 as currently planned 01:20:02 erm, that's like the worst definition of genius i've ever heard 01:20:23 who the fuck is this dude 01:20:41 i'm sure "jane hopkins" is male :P 01:20:54 Unix is very simple, but it takes a genius to understand the simplicity. -- Dennis Ritch 01:20:54 jane can be either 01:20:58 dude as well 01:22:59 eh, i just googled and there is no jane hopkins 01:23:21 oh sorry found her http://jane-hopkins.com/ 01:23:56 okay i think i need to give geniusness a rethinkover. 01:24:04 because that's some deep shit 01:24:28 oerjan i feel bad about using Int all the time am i a bad person 01:24:59 elliott, obviously you should use Int# yes 01:25:16 use Integer#, that's the best type 01:25:34 the rest is just a bit of gödel numbering 01:25:40 err 01:25:42 :t Integer# 01:25:43 Not in scope: data constructor `Integer#' 01:25:45 :t Int# 01:25:46 Not in scope: data constructor `Int#' 01:25:48 that isn't a constructor 01:25:53 derp 01:25:57 :i Int# 01:26:01 ah, no 01:26:05 :k Int# 01:26:06 Not in scope: type constructor or class `Int#' 01:26:07 @src Int# 01:26:07 Source not found. 01:26:10 lol 01:26:11 @src Int 01:26:11 data Int = I# Int# 01:26:15 ... 01:26:16 well obviously Int# has no source 01:26:19 because it's primitive 01:26:20 well yes 01:26:29 elliott, but I assumed you would have a type for it 01:26:44 types don't have types 01:27:08 hm true 01:27:13 LOGICAL DEAD END OH SNAPA 01:27:22 what kind of type could a type have 01:27:26 * oerjan runs away 01:27:27 Prelude> :i Int 01:27:27 data Int = GHC.Types.I# GHC.Prim.Int# -- Defined in GHC.Types 01:27:29 typetype 01:27:29 well that anyway 01:27:52 > Int + Char 01:27:53 Not in scope: data constructor `Int'Not in scope: data constructor `Char' 01:27:54 oerjan, as far as I can tell there isn't an Integer# 01:27:57 WHAT PROPOSTEROUS' 01:28:03 data Integer 01:28:03 = integer-gmp:GHC.Integer.Type.S# GHC.Prim.Int# 01:28:03 | integer-gmp:GHC.Integer.Type.J# GHC.Prim.Int# GHC.Prim.ByteArray# 01:28:03 -- Defined in integer-gmp:GHC.Integer.Type 01:28:04 lots of whooshing here tonight 01:28:27 that is an interesting type 01:28:53 S# is for small integers 01:29:04 oerjan, ah right, but that is still GMP it seems? 01:29:13 why use gmp for small integers 01:29:18 no. 01:29:23 Integer is just d efined in integer-gmp. 01:29:24 obviously 01:29:26 ah 01:29:34 you see the prefix because you don't have that package exposed 01:30:09 elliott, that still leaves the original question unanswered.... 01:30:14 which question 01:30:17 Vorpal: S# is the name of the constructor 01:30:22 not a different type 01:30:27 >_>? 01:30:47 elliott, why would small integers be done with GMP or why would non GMP stuff be done in integer-gmp!? 01:30:56 no. 01:30:56 Integer is just d efined in integer-gmp. 01:30:56 obviously 01:31:03 you have presented no evidence that small integers are done with gmp 01:31:13 Vorpal: S# is the constructor for small Integers, within the normal range of ints 01:31:14 Vorpal: here's a hint: how do you define Integer outside of integer-gmp 01:31:17 elliott, indeed, except for the name of the package :P 01:31:23 J# is the one that is bignumish 01:31:33 Vorpal: hint: you can't, because you need a bignum type 01:31:34 elliott, I'm not claiming it isn't done. Just that the naming is bad then 01:31:35 hm 01:31:43 Vorpal: integer-gmp = implementation of Integer with GMP 01:31:48 Vorpal: integer-simple = implementation of Integer with no dependencies 01:31:52 elliott, fair enough. I would have assumed that a "small" one was machine word? 01:31:54 it's only badly-named if you're a literal idiot 01:31:59 Vorpal: = integer-gmp:GHC.Integer.Type.S# GHC.Prim.Int# 01:32:01 what do you think Int# is? 01:32:08 it obviously has to be boxed in that constructor 01:32:14 oh right, I'm just too sleepy for this 01:32:26 night → 01:33:56 metaphorical idiots think the name is just right 01:36:56 -!- Vorpal has quit (Ping timeout: 258 seconds). 01:40:51 SPAAAAAAAAAAAAAAAAAAAAAARC 02:07:59 -!- MSleep has quit (Quit: later chat). 02:18:11 yes 02:18:13 mission successful 02:18:17 tea, sammich, and cigars. 02:18:20 the simple pleasures of life. 02:20:15 -!- augur has quit (Ping timeout: 258 seconds). 02:20:39 Gregor: don't you have like 02:20:44 documentation of SPARC? 02:21:06 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 Gregor: ah so you're compiling to C or? 02:22:18 setjmp is a thing in SPARC as well. 02:22:50 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 well cursory googling suggests that SPARC does indeed have a stack and it does indeed work like x86 (it grows down) 02:24:03 ... 02:25:47 Gregor: CakeProphet's helpful, isn't he. 02:26:35 elliott: Quite. 02:26:49 * CakeProphet is the definition of helpful. 02:26:52 or well 02:26:56 what's the word for helpful 02:26:59 but not really being helpful 02:27:00 CakeProphet. 02:27:01 like "eager to help" 02:28:02 hmmm, yes 02:28:13 then the antonym, meaning, "helpful but not eager to help" 02:28:16 would be elliott. 02:28:46 IF WE BECAME ONE PERSON. 02:28:48 THINK OF ALL THE HELP 02:28:50 THAT WOULD HAPPEN. 02:29:18 also think of the great manliness. 02:30:19 ... 02:30:20 X-D 02:31:34 holy crap its cold outside. 02:31:52 43 degrees. 02:32:05 this is cold for my climate. 02:32:08 -43? 02:32:11 no 02:32:22 `sanetemp 43 02:32:24 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: sanetemp: not found 02:32:36 !sanetemp 43 02:32:38 6.1 02:33:07 it was literally like 70-something yesterday 02:33:22 LITERALLY LIKE THIS APPROXIMATE FIGURE. 02:33:25 ah. i saw in a newspaper the other that that and rain is essentially the average norwegian national weather 02:33:32 *the other... month 02:34:31 one nice thing about Fahrenheit is that it goes by intervals of 10 in intuitive understanding 02:34:40 each degree of 10 is like another level of coldness/hotness 02:34:46 or at least 02:35:12 that is how people intuitively delineate levels of coldness/hotness in the context of weather. 02:35:26 because it's intuitive. 02:36:17 as opposed to celsius which goes by intervals of 5, obviously 02:36:27 ah okay 02:39:05 CakeProphet: that's the stupidest thing i've ever heard 02:39:19 perception of temperature isn't discrete, if it went up by 20s or 5s that'd be just as good 02:39:33 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 I didn't mean to imply "THIS IS THE AWESOMEST THING AND THERE IS NO OTHER WAY THAT WORKS" 02:39:48 and yes, I know. 02:40:15 There is also Kelvin temperatures. Are there Planck temperatures? 02:40:23 yes 02:40:48 you would have to divide by Planck temperature. 02:41:20 i fear they don't go up by 10, though 02:41:25 SHIT 02:41:37 worst temperature metric. 02:43:39 http://en.wikipedia.org/wiki/Planck_temperature 02:43:52 0°C = 1.928 × 10^-30 Tp 02:43:53 practical 02:47:47 so I'm guessing Planck temperature was the temperature at the beginning of the universe? 02:47:55 should be simple to empirically verify. 02:48:27 elliott: "The error is just what it says."? That's, like, a whole new perspective on GHC error messages, man! 02:48:37 shachaf: It's as factually accurate as it is unhelpful. 02:48:43 CakeProphet: that's a bit overstating it, i think 02:48:53 elliott: Has anyone ever realized that before? 02:49:04 shachaf: No. This is why only I can debug Haskell programs. 02:49:05 there may have been a time during the big bang when that was the temperature 02:49:22 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 shachaf: I have realized that. :P 02:49:55 elliott: I knew it! 02:49:58 But your secret is out now. 02:50:13 It would probably be best to tell us what you're actually trying to do. 02:50:21 You should file for a patent or something. 02:50:40 shachaf: Hey, I only use the X-Y problem when talking to people who are being really confusing! 02:51:01 > x - y 02:51:02 x - y 02:51:13 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 elliott: I oftentimes encounter people trying to solve the XY problem on my questionsin IRC channels 02:52:19 After a test of the camera equipment, the first scene is about how to eat lego. 02:52:34 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 Scene 2 comes after scene 3. There is no scene numbered 1. 02:53:06 -!- NotASpy has changed nick to DefinitelyNotASp. 02:53:31 DefinitelyNotASp: your foolish disguise fools no one but yourself! 02:53:37 -!- DefinitelyNotASp has changed nick to TotallyNotASpy. 02:54:00 `welcome TotallyNotASpy 02:54:03 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 @hoogle unsafeCoerce 02:59:05 Unsafe.Coerce unsafeCoerce :: a -> b 02:59:30 @hoogle Any 02:59:31 Prelude any :: (a -> Bool) -> [a] -> Bool 02:59:31 Data.List any :: (a -> Bool) -> [a] -> Bool 02:59:31 Data.Monoid Any :: Bool -> Any 02:59:37 gah 02:59:52 @hoogle -Prelude Any 02:59:52 Unknown flag: -P 02:59:52 02:59:59 arg 03:00:00 h 03:00:12 @hoogle GHC.Exts Any 03:00:14 Did you mean: :: Exts Any +GHC 03:00:14 No results found 03:00:16 a typeof operator would be fun, on top of the ::-as-operator thing previously discussed. 03:00:19 @hoogle +GHC Any 03:00:20 package anydbm 03:00:20 package Ganymede 03:00:20 package hp2any-core 03:00:34 asTypeOf a b = unsafeCoerce a :: typeof b 03:00:47 -!- augur has joined. 03:01:10 CakeProphet: Yes, typeof operator, I would like to have too; even GNU C has typeof operator too. 03:01:20 !haskell (Unsafe.Coerce.unsafeCoerce (Debug.Trace.trace "hm..." 1) :: GHC.Exts.Any) `seq` "and hm" 03:01:25 ​"and hm" 03:01:43 heh 03:01:55 !haskell (Unsafe.Coerce.unsafeCoerce (Debug.Trace.trace "hm..." (++)) :: GHC.Exts.Any) `seq` "and hm" 03:01:58 ​"and hm" 03:02:11 !haskell (Unsafe.Coerce.unsafeCoerce (Debug.Trace.trace "hm..." (++)) :: Int) `seq` "and hm" 03:02:13 ​"and hm" 03:02:22 EgoBot: wait, what 03:02:24 oh 03:02:38 !haskell (Unsafe.Coerce.unsafeCoerce (Debug.Trace.trace "hm..." (++)) :: [Int] -> [Int] -> [Int]) `seq` "and hm" 03:02:41 ​"and hm" 03:02:58 oh maybe there's something wrong with the tracing 03:03:13 !haskell Debug.Trace.trace "hm..." "and hm" 03:03:15 ​"and hm" 03:03:20 gah 03:03:24 `runghc 2+2 03:03:30 target `2+2' is not a module name or a source file 03:03:34 X-D 03:03:39 `run ghc -e 'Debug.Trace.trace "hm..." "and hm"' 03:03:44 hm... \ "and hm" 03:04:13 oerjan: enjoy 03:04:33 !haskell (Unsafe.Coerce.unsafeCoerce (System.IO.Unsafe.unsafePerformIO (putStr "hm..." >> return 1)) :: GHC.Exts.Any) `seq` "and hm" 03:04:35 hm..."and hm" 03:05:05 sorry, found another way :P 03:05:13 !haskell (Unsafe.Coerce.unsafeCoerce (System.IO.Unsafe.unsafePerformIO (putStr "hm..." >> return (++))) :: GHC.Exts.Any) `seq` "and hm" 03:05:16 hm..."and hm" 03:05:27 !haskell (Unsafe.Coerce.unsafeCoerce (System.IO.Unsafe.unsafePerformIO (putStr "hm..." >> return (++))) :: Int) `seq` "and hm" 03:05:29 hm..."and hm" 03:05:56 !haskell (Unsafe.Coerce.unsafeCoerce (System.IO.Unsafe.unsafePerformIO (putStr "hm..." >> return 1)) :: Int -> Int)) `seq` "and hm" 03:06:00 pikhq: you there? 03:06:06 oops 03:06:13 Ish 03:06:18 !haskell (Unsafe.Coerce.unsafeCoerce (System.IO.Unsafe.unsafePerformIO (putStr "hm..." >> return 1)) :: Int -> Int) `seq` "and hm" 03:06:21 hm..."and hm" 03:06:30 shachaf: What's a ring? 03:06:33 pikhq: there was a 25% decrease in fuel efficiency. 03:06:36 You can troll me, I won't mind. 03:06:37 almost exactly. 03:06:44 CakeProphet: Bravisimo 03:06:54 yes, I'm on the path to being a true American. 03:06:58 elliott: Um... http://en.wikipedia.org/wiki/Ring_(mathematics)? 03:06:59 * oerjan concludes that unsafeCoerce has no effect on strictness 03:07:05 shachaf: Thx for troll 03:07:09 `addquote * oerjan concludes that unsafeCoerce has no effect on strictness 03:07:11 723) * oerjan concludes that unsafeCoerce has no effect on strictness 03:07:25 admin + elliott 03:07:32 ? 03:07:52 "admin + elliott" is a scary thought, to me. 03:08:42 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 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 pikhq: THANXE BRO 03:09:12 Also, distributitive with addition & multiplication. 03:09:20 Obvious examples of a ring include the set of naturals. 03:09:26 pikhq: I made such a program in Haskell it is called monoidplus 03:09:26 Erm. 03:09:27 Reals. 03:09:29 Erm. 03:09:32 *Integers*. 03:09:40 Jeeze pikhq, say what you mean. 03:10:22 other examples of rings include the set of my awesome Persian wallpaper 03:10:26 er, wait that's a group. 03:10:26 elliott: pikhq did far better than I could have. 03:10:45 * shachaf isn't a troll, anyway. 03:10:49 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 oerjan: Ah. 03:11:55 * 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 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 shachaf is clearly an orc 03:14:15 oerjan is a magic elf. 03:14:20 * oerjan is slowly approaching the end of his yafgc binge 03:14:33 with many interruptions 03:15:39 I like how caffeine is considered a food and not a drug by the FDA. 03:15:55 a non-magic elf would be such a sad creature 03:17:08 all elves are pathetic creatures. 03:17:14 I slay them on sight. 03:17:23 Hmm, I'm not sure what @'s low-level network IO model looks like. 03:17:25 pikhq: Make one up for me. 03:17:29 ah, so CakeProphet is a goblin, check 03:19:53 oerjan: Um excuse me dorfs are the ones who hate elves a lot. 03:20:11 elliott: ok those too, then 03:28:31 elliott: *Clearly* you should just send neutrinos in the correct direction. 03:28:37 pikhq: NOT HELPFUL :P 03:29:56 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 elliott: Hmm. Well, *communication* should be nothing more than passing serialised @ objects back and forth, perhaps transparently compressed. 03:34:33 pikhq: I said low-level. 03:34:42 Devise a serialisation scheme. 03:34:44 Unless you think that'll work to talk to IRC or HTTP servers. 03:34:49 Hint: It won't. 03:35:09 Oh, so a *non-native* network IO model. 03:35:21 *Bleh*. 03:35:49 This is annoying, because normal networking is all about sending bytestreams, and @ is all about not-bytestreams. 03:37:50 I'm *tempted* to just go with a kinda stupid send/receive bytestream model. 03:38:05 yes, that would be easy if I had imperative sequencing, which I don't 03:38:46 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 *Really* stupidly moronic [Byte]->[Byte] function? :P 03:39:31 enumeratorities 03:39:47 pikhq: that's impure 03:39:59 and doesn't allow any sort of out-of-bound control (how do you close the connection?) 03:40:25 also it's awfully unperformant and prone to errors but those are even more obvious than the other things i said 03:40:39 I did say "stupidly moronic" for a reason. 03:41:19 not moronic enough for my standards; i don't accept mediocrity in my moronicity 03:42:06 Fine, y'know what? Your low-level network IO model shall involve directly creating TCP packets. 03:42:17 Why not go more low-level than is usual? :P 03:42:20 that still doesn't help for a model of how to send them :P 03:42:28 and receive them 03:44:23 -!- DCliche_ has joined. 03:46:40 your low-level network IO model shall involve neutrinos. _that_ should be low level enough. 03:46:58 elliott: *Clearly* you should just send neutrinos in the correct direction. 03:47:15 see? pikhq agrees. 03:48:00 -!- DCliche has quit (Ping timeout: 240 seconds). 03:48:03 -!- kmc has quit (Quit: Leaving). 03:53:24 elliott: perhaps you just need to make some concessions in your pureness? 03:53:34 or: monads!! 03:53:36 yeaaaaah 03:54:20 and then just serialize shit and send/receive/check-connection-stuff via an IO monad or 03:55:31 oerjan: Please kick CakeProphet. 03:55:49 what? 03:56:06 I'm guessing you've got something better? 03:56:08 * oerjan gives CakeProphet a warning swat first -----### 04:01:02 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 oerjan: kick CakeProphet for not having any idea how @ works and also he's stupid 04:02:19 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 oerjan: he am go too far..... 04:03:39 but anyway, basically as long as the receiving end knows the type of the data then it can reconstruct the transmission 04:03:57 and readjusting references isn't terribly inefficient, you have to traverse references to serialize anyway. 04:05:04 elliott: or are @ objects not implemented as blocks of memory and pointers? enlighten me. 04:05:23 CakeProphet: I'll answer your questions iff oerjan kicks you. 04:07:05 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 oerjan: Seriously, kick him so I can put him out of his mysery. 04:10:46 elliott: if it makes you feel better I can join -minecraft 04:10:55 you'll have to invite me first though. 04:11:05 Done. 04:11:30 NOOOOOO HOW COULD YOU DO THIS 04:11:36 I LOVE MINECRAFT NOW I CAN'T TALK ABOUT IT EVER 04:11:38 * CakeProphet cries. 04:11:54 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 CakeProphet: Misconception: Logical memory addresses must map to physical RAM locations. 04:12:31 (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 elliott: Exabytes 04:13:18 Exabytes are terabytes :) 04:13:28 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 they don't need to be physical RAM bytes. >_> 04:13:48 just bytes of some kind presumably. 04:14:00 You're missing the point. Anyway, this doesn't even remotely solve my stated problem. 04:14:40 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 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 and run on standard networking protocols. 04:16:04 "but I recall you mentioning that you need a way to serialize objects, yes?" 04:16:05 No. 04:16:13 and run on standard networking protocols. 04:16:26 Standard networking protocols are completely irrelevant here and are not helped by your proposed solution at all. 04:16:32 Freenode doesn't talk in a serialised @ format./ 04:16:46 ...Freenode? maybe I missed something here. 04:17:04 IRC isn't a standard networking protocol? 04:17:06 Cool. 04:17:38 well obviously inter-@ communication would work differently than non-inter-@ communication. 04:17:50 because other things only speak in bytestreams. 04:18:20 and run on standard networking protocols. 04:18:26 you were suggesting this solved standard protocols 04:18:27 standard i.e. 04:18:28 not @ 04:18:35 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 Okay. I don't see the relevance. 04:19:55 -!- GreaseMonkey has quit (Quit: The Other Game). 04:20:08 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 Yeah, then I corrected him. 04:20:37 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 at some level 04:21:19 >_> 04:21:40 see? that's helpful. 04:21:41 :P 04:21:50 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 what makes this awkward for a network? 04:22:12 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 CakeProphet: Because FRP is awkward for basically completely synchronous, and things where there aren't a large number of interdependent variables? 04:22:45 s/synchronous/synchronous things/ 04:23:24 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 And it still doesn't solve the issue of how you actually set up/terminate/etc. connections. 04:24:22 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 Plenty of things are "a monad"; presumably you mean something like the IO monad, which models imperative programs. 04:25:30 yes. but not as monolithic as the IO monad 04:25:33 just one for networking 04:26:02 what about a kind of coroutine thing? 04:26:10 well no 04:26:15 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 that doesn't solve the set up/terminate/etc. 04:26:36 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 thanks zzo38. 04:27:28 I read somewhere, something about "successor monad", I think it is like Maybe monad. 04:27:36 elliott: well, are you sure FRP would be awkward? 04:28:04 FRP's awkwardness for low-level bytestring networking is well agreed-upon. Which is why nobody does it. 04:28:07 I mean clearly the set up / terminate / etc stuffs are just different kinds of responses to an event. 04:28:38 Uh, no. 04:32:35 okay... 04:32:41 well: good luck! 04:33:49 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 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 elliott: also the responses can be a sequence of responses. 04:35:57 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 that much is clear 04:38:04 maybe you actually want a lower-level IO monad similar to Haskell, to do low-level stuff 04:38:13 and then FRP for your UI? 04:39:39 no, i don't. not above the @ll layer. 04:40:21 well, okay, what if the high-level protocols are done with FRP, implemented in a low-level monad layer? 04:40:37 that is magical. 04:40:37 >_> 04:42:02 or just a low-level FRP interface. 04:42:13 that is somewhat awkward. :P 04:43:49 * CakeProphet quietly reads about FRP in the background. 04:51:31 just make FRP not awkward and everything will be fine. 04:51:39 FRP isn't awkward. 04:53:10 *not awkward for simple things like network IO 04:53:47 It isn't about the simplicity. 04:55:35 okay. 05:01:35 -!- SgeoN1 has joined. 05:01:52 elliott sudo apt-get update 05:03:54 Zzz time 05:03:57 -!- SgeoN1 has quit (Client Quit). 05:08:16 thanks 05:08:28 -!- MSleep has joined. 05:08:38 hi monqy 05:08:41 hi 05:08:50 -!- MSleep has changed nick to MDude. 05:08:54 hi 05:09:34 -!- oerjan has quit (Quit: Goof night). 05:09:41 hi 05:10:10 monqy: what awesome thing are you doing? 05:10:23 what are some awesome things you aren't doing right now but are long-term awesome things. 05:11:00 i am doing: eating garlic bread things 05:11:15 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 you are an okay 05:11:52 monqy: maybe you could learn about all the languages. 05:11:55 that's my plan. 05:12:01 even the bad ones??? 05:12:03 a) learn all the languages b) make new language 05:12:05 yes. even those. 05:12:06 can i have a garlic? 05:12:08 sure 05:12:37 i am doing: eating garlic bread things 05:12:41 monqy is a lucky person.......... 05:13:34 it's to ease the pain of not knowing the taste of digestive biscuite 05:13:58 monqy: for example: perl 05:14:00 perl is good. 05:14:05 perl has good ideas and bad ideas. 05:14:05 =/ 05:14:06 monqy: eat digeststive bsicuti 05:14:13 digestive biscotti 05:14:23 yes 05:14:24 biscotti is good now i want biscotti and milk 05:14:35 digestive biscotti and garlic milk 05:14:38 mm 05:14:55 I have never had garlic milk 05:15:20 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 at this point in time i liked perl for being hilariously bad 05:15:44 now I just trust that it is 05:15:46 ;_; 05:17:16 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 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 especially big not-so-good languages 05:18:55 perl 05:18:57 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 perl is huge and ugly 05:19:17 I'll read functional pearl sometime and hopefully that will impart enough of the good ideas 05:19:27 er 05:19:29 functional perl 05:19:30 oopse 05:19:38 perl itself isn't very big, I don't think. 05:19:44 huuuuge 05:19:47 maybe with all the other shit that is written in perl attached. 05:19:56 it's big for me, monqy 05:20:31 monqy: do you know C#? 05:20:42 no is it good 05:20:46 no 05:20:54 does it have any good ideas 05:21:00 yes. 05:21:04 what are the good ideas 05:21:10 monqy: do you mean higher-order perl 05:21:16 elliott: yes that 05:21:21 im bad at rememebering names 05:21:29 I thought it was functional perl as well. 05:21:30 it's in my reading pile 05:21:35 along with everything else 05:21:57 monqy: hm... good ideas. 05:22:05 well they're all only good in the context of Java-style OO 05:22:10 oh 05:22:12 ...yeah 05:22:13 well that won't help me then 05:22:54 the handling of pass by reference vs. pass by value is good. 05:23:04 but, again, this is in the context of an imperative language. 05:23:45 yeah monqy language will not be imperative 05:24:14 monqy: io is interesting. 05:24:20 more imperative oo stuff though 05:24:30 io is shit 05:24:52 i want to learn a dependently typed language sometime I think it would be a good thing to know 05:25:17 I also want to learn a some good category theory 05:25:19 what impressed me in particular was how it handled call-by-need in a highly dynamic language. 05:25:30 oh? 05:25:54 monqy: (it just passes ASTs directly) 05:25:55 yes oh 05:26:00 (and the default function interface just evaluates them) 05:26:02 (it's really slow) 05:26:04 (and ugly) 05:26:18 elliott: but makes total sense in a dynamic language. :P 05:37:29 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 (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 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 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 anyway that game sounds evil. 06:33:39 What was the magic trick? 06:36:09 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 even if they got the A 06:38:06 What were the rules? Is it poker hands? 06:39:45 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 yeah poker hands 06:55:17 -!- nys has quit (Quit: 2:54 AM). 07:12:55 -!- elliott has quit (Quit: Leaving). 07:20:16 monqy: Ruby is not incredibly bad. 07:20:51 ruby is bad. is there anything worth knowing about it? 07:21:21 surely it's a step-up from your average OO lang 07:21:42 it even supports functional style to some degree. 07:23:18 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 sounds boring 07:24:56 it certainly combines object-oriented and higher-order functions nicely. 07:25:42 but I'm starting to dislike dynamic typing more and more for anything other than simple scripts. 07:26:34 I think static typing is The Way Of The Future. 07:26:38 well... 07:26:47 I would be interested to see if a hybrid is feasible. 07:27:12 good thing i dislike object oriented 07:27:32 and i dislike the absence of static typing 07:27:32 objected oriented itself isn't bad. 07:27:39 it's just that most incarnations of it are very bad 07:28:55 I think instead of inheritance it makes more sense to have a sort of prototype OO with combinators. 07:29:29 the difficult part is making it efficient and statically typed. 07:33:57 I guess to make it efficient at runtime you'd want to compute some of the object combinators at compile-time. 07:39:00 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 actually I guess typeclasses do that better... 07:40:51 ah it can be generalized... 07:41:15 you're silly 07:42:01 how would static duck typing even work and what good would it do 07:42:04 duck typing is just awful 07:42:36 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 also: not as awesome as multi-parameter typeclasses 07:44:50 I suppose the main difference between Haskell's typeclasses and an OO system would be that there are no instance declarations 07:45:13 you just define the methods and if they match then they're in that particular "typeclass" 07:46:00 so defining a method with a particular name and a particular type could potentially match multiple typeclass equivalents. 07:47:09 but still it lacks the sort of type relations that multi-param typeclasses allow. 07:50:56 hmmm it would be nice if you could do things like create isomorphisms between those typesets 07:51:53 no wait, nevermind :P 07:51:57 that doesn't work here. 07:52:49 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 unless you explicitly declare the mapping. 07:53:07 s/you a/your/ 07:58:29 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 "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 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 so you can resolve situations where two types define a method with the same name, basically. 08:02:25 that's basically like inheritance, but you could have other fun combinators. basically a lot of set operators. 08:03:45 I wonder if you could still do the | union thingy in Haskell on top of that.... 08:03:53 that hurts my brain to think about. 08:04:02 I think that messed up all the type constraint stuff. 08:06:09 yeah that doesn't work. :( 08:06:40 well it could work maybe, I dunno. 08:11:27 monqy: I've scared you away haven't I. 08:12:07 :( 08:14:14 type X = A *> B <* (C | D) 08:15:06 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 and any object matching this is considered an X. 08:18:25 you could also do stuff like relative complement or symmetric difference (no clue why you'd want symmetric difference though) 08:18:48 relative complement would be useful to say "I'll take the methods this type defines, excluding these" 08:19:13 but I'm not sure that | actually makes sense. 08:21:50 monqy: does any of that make sense? :P 08:22:24 maybe 08:22:57 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 so 08:23:07 maybe | (which essentially is supposed to work like Haskell's | ) actually doesn't make sense with these semantics. 08:23:27 do you know type theory? I sure don't. it's on my list of things to learn. 08:23:29 crys 08:23:39 yeah this isn't really type theory. 08:24:11 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 also I have no clue how primtives would work. 08:25:06 oh, another thing: error reporting is probably going to be hell 08:25:18 type X = Int | Char -- what? 08:25:40 hm9$? 08:26:34 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 i.e. these are not actually types that I'm defining, but typeclasses, or something. 08:27:35 ?????? 08:28:13 so instead of Int it would be Num... that makes more sense. Num has a defined set of operations. 08:29:08 but, that doesn't really address primtive types, it just hides them away for me to deal with later. :P 08:30:25 wow I've typo'd primitive successfully three times now. 08:30:33 impressive. 08:33:40 monqy: well the reason I guess is to get some of the benefits of duck typing in a statically typed system. 08:33:57 what benefits of duck typing 08:34:45 monqy: try to imagine that you like duck typing, now think of all the benefits. :P 08:35:19 try imagining you like punching yourself really hard 08:35:39 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 that's pretty much the only benefit I can think of. :P 08:36:04 but no that's not the WHOLE POINT of the language I'm considering. 08:36:22 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 explicit declaration is good. it's documentation and it prevents stupid errors 08:36:56 that's certainly true. 08:37:17 there would have to be a significant expressivity benefit to convince me, and even then... 08:37:57 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 I guess instances work perfectly for that situation... so... :P 08:38:35 may be a fruitless effort I'm going for, here. 08:39:27 but there are other things you could do with such a system. 08:39:39 when you consider composing objects together. 08:39:42 hm? 08:40:02 perhaps there's expressivity gains there? I dunno. 08:40:19 a minor benefit: easier to manage namespace creep. 08:41:08 surely you can solve that, at least to some degree, in better ways? 08:41:15 never. 08:41:16 :) 08:43:26 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 the operations of the previous object would apply to the state of that object only, any shared operations apply to both. 08:44:38 you could call it OBJECT FUSION. MUAHAHAHAHA 08:47:04 also you could do things like map and fold in this manner, without actually calling a map or fold 08:47:08 not that you'd necessarily want to. 08:47:10 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 Hello! 10:00:35 Hello, fungot 10:00:35 Ngevd: again in a fresh memo later be sent you a copy of knitting for assholes 10:00:39 ^style 10:00:39 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 ^echo wiki spam 10:01:01 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 Morning, Phantom_Hoover 10:06:53 Or is it? 10:06:57 Wait, yes it is. 10:07:03 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 http://gizmodo.com/5859081/why-is-china-building-these-gigantic-structures-in-the-middle-of-the-desert 11:29:04 "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 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 it must be able to move lydia when the wedding ceremony starts without checking if she's alive? 12:09:52 yeah i don't know any other contemporary game engine where you can move objects 12:10:15 and i assume the priests ask you to leave because you killed someone 12:10:39 the usual punishment for murder 12:11:08 punishment for murder is to leave? 12:11:59 yes, no one wants a murdering morris in their house. they're really annoying. 12:13:02 murderers are annoying? 12:13:27 when you are murdered, where is the annoyance? 12:13:28 eh 12:13:45 it's very likely that they kill someone else first 12:13:56 say you're talking to someone 12:14:11 and mister murderpants decides to assrape them with a chainsaw or something 12:14:30 how annoying would that be? 12:14:42 -!- Ngevd has joined. 12:14:57 you're like midsentence and BOOM cockroach in the brain 12:15:30 (that would be an annoying way to die btw) 12:15:31 How much sense does that make in context? 12:15:46 -!- derdon has joined. 12:15:49 Ngevd: perfect sense 12:15:53 -!- derrik has quit (Quit: gtg). 12:15:55 so perfect 12:16:14 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 oklopol, you are a hero of our times. 13:22:58 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 http://cache.gawker.com/assets/images/comment/4/2011/11/a651e5ed5d97375a733ca8f62ca9643b/original.jpg what xD 16:10:15 here's an overlay of a penis on a seven fingered horse, conspiracy? 16:11:38 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 I think one of them matches a bit of park? 16:18:33 The Chinese are very interested in destroying American greenery. 16:21:57 -!- Nisstyre has joined. 16:30:48 http://en.wikipedia.org/wiki/Kinect_Disneyland_Adventures 16:30:54 Oh, how the mighty have fallen. 16:31:51 Dammit, elliott's not here. 16:38:13 apparently they are still keeping einstein's brain 16:38:27 i have my doubts as to whether there was anything special about the dude 16:38:28 Well, FSVO 'keeping'. 16:38:41 Cutting it up doesn't really count in a lot of people's eyes. 16:38:51 i mean, more than say brad pitt's brain or how ever his name is spelled 16:39:00 however 16:39:42 Holy crap I never realised that Elrond was Agent Smith???? 16:42:31 i hate the internet 16:42:35 oklopol, can we preserve your brain? 16:43:06 i'm not planning on dying 16:43:21 I don't see the relevance? 16:44:14 i will use my brain forever and ever, so i will just preserve it myself 16:44:21 so yes. or no. it's irrelevant. 16:44:52 Can we insure your brain against accidental damage? 16:45:05 hmm 16:45:36 dunno, would be kind of an interesting challenge to be a retard 16:45:48 well. a very rich retard i guess 16:45:52 so yeah you can insure it 16:46:48 OK this is good. 16:47:31 i'd just go around all like hurp durp they call me an oklopol 16:47:41 here's some moneys for ya 16:48:06 and everyone would be like oh all this money makes your skin seem so soft and seducing 16:48:21 and i'd be like hurp durp what's a seducing 16:48:33 but secretly 16:48:36 i wouldn't even care- 16:48:39 *. 16:48:53 You seem to have this whole brain damage thing planned out. 16:49:04 apparently. 16:49:59 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 "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 — Wikipedia, apparently oblivious of the last century. 17:30:11 lolwut 17:30:17 Can has link? 17:30:42 -!- monqy has joined. 17:36:30 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 /names 17:43:09 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 hi elliott 18:01:58 hi ais523 18:02:02 hi both 18:02:31 Hi troth 18:03:07 -!- TheJimmyJames1 has joined. 18:03:47 -!- TheJimmyJames1 has quit (Read error: Connection reset by peer). 18:03:57 wow at the levels of spam on esolang recently 18:05:02 "I don't really have an opinion, so I'm going to argue against deletion." 18:05:06 ais523: does this sentence make any sense to you? 18:05:26 yes; I can parse it and it semantically makes sense 18:05:46 i don't have an opinion, and here it is 18:05:55 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 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 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 elliott: I actually think deletionism is a result of biased sampling 18:11:29 `@ TheJimmyJames1 ? welcome 18:11:31 if you spent a while on Wikipedia's newpage patrol, you'd become a deletionist too 18:11:35 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 ais523: heh 18:11:47 I am serious about this, it almost happened to me 18:11:56 -!- Nisstyre has joined. 18:12:14 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 "Category:Candidates for speedy deletion is currently 202% backlogged." 18:12:46 elliott, just outsource it to the general population. 18:12:52 heh, cleaning out CSD is /typically/ really easy 18:13:03 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 my guess is that A7 has got out of hand again 18:13:16 "The queue at Special:NewPages is currently 20.33 days." apparently this only counts as defcon 4 18:13:17 Every now and then you get a popup requiring that you do maintenance. 18:13:24 I guess defcon 1 is when it's ten years backlogged 18:13:37 Administrators: Please do not delete this category even if it is empty! 18:13:37 This category may be empty occasionally or even most of the time. 18:13:37 --Category:Candidates for speedy deletion 18:13:43 -!- sebbu3 has changed nick to sebbu. 18:13:55 ais523: which one is A7? 18:13:59 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 elliott: approximately, no assertion of notability 18:14:12 ais523: no, newpages defcon 18:14:20 oh, there's a newpages defcon now? 18:14:20 there's so many defcons! 18:14:27 CSD defcon and newpages defcon at least 18:14:33 presumably that's much the same thing, except for vandals creating pages 18:14:45 ais523: no, I think it's just based on the backlog 18:14:46 to me, that sounds like {{adminbacklog}} not {{defcon}} 18:14:47 given the captions 18:15:01 they need a defcon defcon so we can know when the defcons are getting dangerously high 18:15:51 eh, there's only 44 pages in CSD 18:16:04 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 ais523: yikes 18:47:50 ais523: all our external links headings are wrong 18:47:57 because of Graue 18:48:02 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 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 zzo38: did you use -O2? 18:49:05 you need -O at least to get basic strictness analysis and -O2 can help as well 18:49:52 > type TextString = [Either Int32 Word32]; 18:49:53 : parse error on input `type' 18:49:58 zzo38: you don't want to store long strings in that 18:50:17 it's full of boxes and lazy, so it'll eat up tons of memory 18:51:09 elliott: I tried -O and -O3 18:51:34 -O3 is meaningless, it means -O2 18:51:44 well, it's not meaningless :) but it's silly 18:51:54 zzo38: anyway, I suggest 18:52:15 data TextChar = Blah Int32 | Bleh Word32 deriving (Eq, Show, ...) -- with better names for the constructors 18:52:16 then 18:52:19 The function "withDVI" which is causing the out of memory never uses the "TextString" type. 18:52:26 type TextString = Vector TextChar 18:52:38 zzo38: how did you determine that is what runs out of memory? profiling? 18:53:51 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 > withDVI_page_ :: (Word32 -> ByteString -> IO Font) -> s 18:55:16 > -> (s -> Page -> IO (Maybe (s, t))) -> DocStat -> Word8 -> IO [t]; 18:55:17 Not in scope: type constructor or class `ByteString'Not in scope: type cons... 18:55:17 : parse error on input `->' 18:55:19 zzo38: will the resulting list be long? 18:55:30 because this produces no elements until the whole thing has been calculated, and builds up thunks in memory in the meantime 18:55:53 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 zzo38: have you tried profiling yet? 18:56:27 http://www.haskell.org/ghc/docs/7.0.4/html/users_guide/profiling.html 18:56:34 Will that display exactly what part runs out of memory? 18:57:05 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 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 but try the first page first 18:59:18 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 You need a Main module, but you can just do: 19:00:11 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 err, >>= print at the end of that :) 19:01:16 OK. I can try that. 19:02:30 pikhq: I had an idea to make @'s allocator superfast but it won't work :( 19:02:37 Oh? 19:03:50 pikhq: Well, a typical allocator would look like \size -> { heapPtr += size; if (heapPtr > heapMax) jump to gc stuff; return (heapPtr - size) }. 19:04:21 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 pikhq: Then it'd cause a page fault when the overflow would occur when the memory is first accessed. 19:04:44 And I could fix things up from the handler. 19:04:47 So allocation would be branch-free. 19:05:21 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 Which sucks, because a two-instruction (mov + add), branchless allocator would be awesome. 19:07:17 -!- azaq23 has quit (Quit: Leaving.). 19:08:47 elliott: Actually, it's a free page after each *heap*. 19:09:07 Hmm, well, true. 19:09:26 pikhq: Still, it sucks to wall off large parts of the address space for an optimisation. 19:09:51 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 pikhq: Well, right. Most allocations are smaller than 4 megabytes. 19:10:25 So you'd probably need to make the allocator select a heap of appropriate size first. 19:10:37 Hopefully static analysis could determine whether an allocation is always less than 4 megabytes in the common case... 19:10:40 Since most allocations are constant-sized. 19:10:51 Yeah, that is definitely something static analysis could do. 19:11:01 Not much different than GCC's memcpy optimisations. 19:12:20 Using those options didn't work. I got "out of memory" and an empty .prof file 19:13:05 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 that'll make the .prof be generated 19:14:52 It runs very fast; there is no time for Ctrl+C 19:15:25 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 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 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 `@ pagnol ? welcome 19:31:56 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 Hard drive came 19:36:07 No internal screws though, and even if I had, I don't see a place to put them 19:36:26 what hard drive 19:36:40 -!- zzo38 has left. 19:38:18 :t catMaybes >=> listToMaybe 19:38:19 Couldn't match expected type `[c]' against inferred type `Maybe a' 19:38:19 In the second argument of `(>=>)', namely `listToMaybe' 19:38:19 In the expression: catMaybes >=> listToMaybe 19:38:23 :t catMaybes 19:38:24 forall a. [Maybe a] -> [a] 19:38:30 New hard drive for my old laptop which I've been using 19:38:32 :t \xs -> listToMaybe (catMaybes xs) 19:38:33 forall a. [Maybe a] -> Maybe a 19:38:44 oh, hmm 19:38:46 elliott: Foiled again! 19:38:53 shachaf: hi 19:39:01 elliott: Good afternoon. 19:39:14 good afternoon to be foiled 19:39:21 Did you think you would find an actual use case for (>=>)? 19:39:34 That operator is forever going to be "nice to express the monad laws in" and nothing more. 19:39:58 shachaf: I use (>=>) with... semi-relative frequency. 19:40:25 Semi-relative to zero? 19:40:26 shachaf: See, I get "f x = doCrapWith x >>= processMagic", and zomg! 19:40:51 zomg, indeed. I couldn't have put it better myself. 19:41:17 Is it bad that I tend to think in terms of do notation, then, if simple, translate to operators? 19:42:02 Sorry, we're not qualified Haskell therapists. 19:42:23 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 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 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 (Shouldn't it be "pool", not heap?) 20:06:57 -!- azaq23 has joined. 20:13:34 Probably. 20:13:59 -!- zzo38 has joined. 20:14:18 I mean, an @ system only has one heap. 20:14:28 (That actually might be the definition of an @ system.) 20:14:59 Well, this is a bad sign 20:16:58 elliott: I could've sworn that the total number heaps that all @ systems in existence have is zero. 20:17:18 shachaf: You're a bad person. 20:17:31 :-( 20:17:40 * shachaf would, like, totally use @. 20:18:22 OK you are granted minimum decency status. 20:18:47 ...If it only had a better name. 20:19:08 Fortunately, "@" is a placeholder. 20:19:23 shachaf: @ ISN'T THE NAME 20:19:26 * elliott kills everyone 20:19:38 elliott: So what's "@"? 20:19:50 shachaf: A macro for the English language that expands to the name of @. 20:20:09 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 elliott: Why didn't it expand just then when you said "@ ISN'T THE NAME"? 20:20:20 shachaf: Lisp macros don't expand when you type out a use of them in Emacs! 20:20:25 Oh, I see. 20:20:29 Umm, use-mention distinction. 20:20:33 Or: I was just lying! For FUN! 20:20:39 Fuck you I hate you. 20:20:41 -!- elliott has left ("BAH"). 20:21:27 -!- elliott has joined. 20:21:35 @hug elliott 20:21:36 http://hackage.haskell.org/trac/ghc/newticket?type=bug 20:21:44 I'm the worst bug. 20:22:26 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 Unlike the rest of @. 20:23:05 shachaf: See, you think you're joking, but no, that's literally the exact reason I won't pick a name. 20:23:17 shachaf: (Although I don't think @ is perfect, I'm just really indecisive about names.) 20:23:51 elliott: /whois ec 20:24:07 shachaf: I know who that is. 20:24:14 Yep. 20:24:20 shachaf: What's your point? 20:24:52 I don't got a point. 20:25:10 Deep. 20:36:16 Mmmmmmmmmmmm PEZ 20:42:10 -!- pikhq_ has joined. 20:42:19 -!- pikhq has quit (Ping timeout: 245 seconds). 20:43:02 PEZ! 20:43:12 Inoserite! 20:43:43 I no serite. 20:43:55 I, nose. 20:44:21 Rite? 20:45:52 elliott: I broke ARM. 20:46:41 Gregor: RIP ARM. 20:46:45 Gregor: Try it on PEZ. 20:48:42 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 I don't use the dispensers. 20:49:11 I feel they cheapen the candy. 20:49:19 They redirect the focus improperly. 20:49:21 But then you don't get any murder practice. 20:49:31 Gregor: X-D 20:49:40 I get plenty of murder practice every Sunday at the docks. 20:51:36 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 ais523: Also, you missed "Touches on free mobile dating sites in the comment" and "User:Shopfitting11". 20:52:12 no I didn't, I'm just being lazy 20:52:17 I'll get to them eventually 20:52:43 ais523: I said "missed" because you deleted other pages in the interim. 20:52:54 they appeared out of order in my feed 20:52:59 Ah. 20:53:05 to be precise, in the update after the one that gave me the pages I actually deleted 20:53:10 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 hi oerjan 20:54:45 hello elliott 20:55:55 ais523: Do you use the RSS or Atom feed? 20:56:07 I can't remember 20:56:18 they both contain the same info, though, IIRC 20:56:26 ais523: Yes, but one might be less buggily generated. 20:56:43 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 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 that's called structural typing and ocaml has it 20:58:44 see ocaml object system 20:58:47 oerjan: *hi5* 20:58:58 *hi5* 20:59:12 yessssssss 21:00:24 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 or was that polymorphic variants. or both. 21:00:43 oh, i may have meant its records. 21:00:51 yes, i think i did. 21:00:57 ocaml is so ugly. 21:02:21 i've forgotten most of it beyond the basics. 21:03:39 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 erm it certainly helps with the _type_ system basics, hindley-milner you know 21:05:56 oerjan: well that too. 21:05:59 oerjan: apart from that ''a stuff :P 21:06:01 and also higher order functions. 21:06:16 although i'd seen those before in lisp 21:06:17 OK, I suppose it helps a bit :) 21:06:25 just doesn't eliminate the learning curve 21:08:24 pikhq_: I wonder how expensive it would be to give every single thread its own pool... 21:08:31 pikhq_: (I want threads at least as lightweight as GHC's) 21:08:36 Probably "way too". 21:09:30 -!- Sgeo has joined. 21:13:04 `addquote Ngevd: again in a fresh memo later be sent you a copy of knitting for assholes 21:13:05 oerjan: just as i was initially believed they were new additions. for that. busy 21:13:06 724) Ngevd: again in a fresh memo later be sent you a copy of knitting for assholes 21:13:11 elliott: Actually, it would probably actually dramatically reduce GC overhead. 21:13:26 And, in fact, Erlang does precisely that. 21:13:38 Each Erlang process has its own pool. 21:13:55 iirc ghc also gives each thread its own pool, but only in the first generation 21:14:16 pikhq_: Yes, but Erlang processes aren't /that/ lightweight. 21:14:20 You can have millions of GHC threads easily. 21:14:24 -!- Ngevd has joined. 21:14:34 True, GHC threads are even more lightweight than Erlang processes. 21:14:49 Both of which are much more lightweight than "real" processes or threads. 21:14:52 oerjan: huh 21:14:54 oerjan: I wonder how big the pools are 21:14:55 Isn't it annoying when you have an amazing revelation then realise it would be ABSOLUTELY USELESS? 21:15:25 elliott: the "nursery", it's called, it's what allows the concurrent gc 21:15:33 oh, right 21:15:44 512 kilobytes, heh 21:15:52 For instance, C-style for loops in Lambda Calculus 21:16:00 oerjan: well i definitely need lots of pools, since the heap is like 1 Tio 21:16:02 and it can of course only contain objects not referenced from other threads, a problem which erlang doesn't have 21:16:08 and stopping the world would be problematic :P 21:16:23 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 elliott: well ghc's concurrent gc still stops the world, unless they've changed it 21:16:48 the problem is that reduces to two levels in @, thread-local and global... 21:16:53 oerjan: oh you mean parallel ghc ofc 21:16:54 not concurrent 21:17:00 oh hm 21:17:05 parallel = gc uses threads 21:17:08 concurrent = gc runs with program 21:17:39 i vaguely recall they're trying to remove that and make it concurrent 21:17:52 Gregor: Is there any hope for non-copying collectors? :'( 21:17:57 unless they already did, very recently 21:18:22 oerjan: i don't think so 21:18:22 elliott: Any hope of what? 21:18:32 Gregor: Not being worse than copying collectors :P 21:18:46 elliott: Perhaps when we're on many-many-many-core. 21:19:10 Woah, I can adapt my idea into something awesome! 21:19:36 Gregor: Soooo not helpful :P 21:19:49 Hmm, I could probably do a copying collector, if I have enough pools. 21:19:54 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 You'd only need, like, a few gigs free at a time, not a terabyte. 21:20:12 oerjan: well ok 21:20:52 How annoying would it be to repartition such that I have more swap space, and should I do so? 21:21:05 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 I'm on a 1GB machine, and the installer decided to give me 1GB of swap 21:21:23 (approx.) 21:21:30 Dude, anymore you should be heavily tempted to just not have swap. 21:21:32 swap space as a similar size to main memory is the usual guideline 21:21:45 ais523: 1.5* for smaller systems 21:21:49 pikhq_: Uh no, 1 gig is nothing. 21:21:54 elliott: do you consider 1GB a smaller system? 21:21:56 1 gig of swap miight be OK, but I'd shoot for 2 gigs. 21:21:57 ais523: Of course it is. 21:22:12 elliott: I'm using 1 gig ATM, on x86_64 (which, of course, uses more memory) 21:22:17 ais523: Nobody but zzo has < 1 gig, and no "usual" (even netbook) computer sold today has fewer than 1-2 gigs. 21:22:27 3 gigs is very common on cheap consumer machines. 21:22:38 And 8-16 gigs is becoming common on the high end. 21:22:41 So yeah, 1 gig is small. 21:22:44 * Sgeo does need to be able to run MonoDevelop without crying 21:22:56 Sgeo: Get more RAM 21:23:04 Swapping like crazy is "with crying". 21:23:21 * oerjan still has 800 something Mb, actually 21:23:47 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 Now would be a good time to mention how much better @ is with swapping? 21:24:51 what /does/ @ do with swapping? 21:24:57 Is @ going to be released in the next 10 years? 21:25:07 ais523: RAM is considered disk cache. 21:25:13 pikhq_: ah, ofc 21:25:18 so it's more a case of antiswapping 21:25:22 swapping out of RAM, rather than onto disk 21:25:24 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 elliott: ah you're going to need that precognitive swap algorithm that someone asked me to write years ago 21:25:32 it's more like, RAM is the first few GC generations, and whatever's being use 21:25:33 d 21:25:40 just too bad i never did 21:25:42 Taneb|Hovercraft, no, elliott will be too busy... I don't actually know. 21:25:46 and disk is all generations apart from the first few 21:25:48 elliott: It's still the shortest way of describing @'s memory model. :P 21:25:49 Making ElliottCraft? 21:25:52 oerjan: wat :P 21:25:52 -!- Taneb|Hovercraft has quit (Quit: Goodbye). 21:26:01 pikhq_, I assume it's less crying with an HD than with USB stick like I was doing before? 21:26:12 elliott: i don't know if he was joking or severely overestimating me 21:26:18 (I will still be trying to find out how you do numerical integration for gravity without it being crazy inaccurate. 21:26:20 ) 21:26:27 oerjan: were you talking about synchronicity or sth :P 21:26:31 Sgeo: You're still dealing with human-noticable latencies for disk access. 21:26:37 Spinning disks are *really* slow. 21:26:40 Phantom_Hoover: Can't you just rip off that JS thing :P 21:27:00 elliott: no, this was long before i learned of synchronicity. back in the mid-90s at the latest 21:27:18 human-noticable is not as bad as human-tearing-his-hair-out-for-10-minutes 21:27:28 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 It'd convince me. 21:27:43 iirc he suggested it would be nice with a swap algorithm which could guess what needed to be swapped in next 21:27:54 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 oerjan: well that's doable, precognition isn't :P 21:28:10 (whether it /works/ well is another question) 21:28:28 what does optomisation mean? 21:28:45 Who knows? 21:29:01 elliott: that horizontal axis is something i've thought about before, the vertical not so much. 21:29:04 ais523: It's what only terse can give you. 21:29:09 Sorry, *TERSE 21:29:10 also, hmm, surrounding the word with ~ = sarcasm marks on a single word? 21:29:36 ais523: ~probably~ 21:29:38 That's the main use of sarcasm marks I've seen, by which I mean it's what elliott does. 21:29:51 http://www.terse.com/pics/topyello.gif 21:29:54 OPTOMIZED 21:29:57 TERSE 21:29:58 PERFORMANCE 21:30:08 op-to-mize vt [Gk optos + ISV -mize] : to make as aesthetically perfect, effective, or functional to the eye as possible. 21:30:21 oh, like optical optimization? 21:30:42 No! It's TERSE! Assembly language with ADDED FUN! 21:30:49 Prefix! Infix! Postfix! 21:30:57 DOS-compatible! Windows-compatible! 21:31:00 Bill Gates approved! 21:31:09 Lose Wait(tm) with TERSE(tm) today! 21:31:15 you know what; I've decided that unary minus is a really annoying operator 21:31:21 (I swear to god the "Lose Wait" thing is a direct quote.) 21:32:30 ais523: haskellers agree 21:32:59 so do OCamlers (where it has a different notation from - in a lot of contexts as - would be ambiguous) 21:33:08 elliott: surely it should be "Loose Wait"? 21:33:12 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 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 uh oh, someone has pinged me. 21:33:20 CakeProphet: boo! 21:33:21 * CakeProphet scrolls up 21:33:21 I would put the "TERSE"s back in from the logos there, but I think it might be better without. 21:34:53 oh good it wasn't elliott pinging me. 21:34:54 I'm safe. 21:34:58 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 CakeProphet sucks. 21:35:03 oerjan: heh 21:35:04 -!- Taneb|Hovercraft has joined. 21:35:07 oerjan: each one is an individual 21:35:09 with no alt text 21:35:12 http://www.terse.com/pics/terse22p.gif 21:35:13 aha 21:35:21 http://www.terse.com/reluctan.htm 21:35:34 the lack of italics and bold in the black-on-yellow 90s style makes it lose something in translation 21:35:38 a very language 21:35:49 :D 21:36:08 -!- derrik_ has quit (Quit: gone). 21:36:42 CakeProphet sucks. <-- hey i was afraid he'd suck so much he didn't notice at all 21:37:05 :( :( :( :( :( 21:37:32 CakeProphet: it's always dangerous to talk to people who've idled for 12 hours 21:37:42 What is Terse? 21:37:46 Taneb|Hovercraft: . 21:37:56 Taneb|Hovercraft: The st language of all! 21:38:07 elliott: that helps a lot 21:38:17 Taneb|Hovercraft: http://www.terse.com/ 21:38:58 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA THE YELLOW, IT BURNS 21:39:24 So it's assembly that does control structures for you? 21:39:29 i.e. PUSSY ASSEMBLY 21:39:40 PLUS SYMBOLICS!!! INFIX!!!! 21:39:40 must be my 1/8 vampire genes 21:39:41 i.e. C? 21:39:54 ais523: NO ITS TERSE 21:40:05 I don't recommend gooling "pussy assembly" 21:40:10 *googling 21:40:15 ais523, no. 21:40:15 ais523: "external resources" is such an ugly heading :( 21:40:25 hey if someone wants to assemble a pussy, i'm not going to stop them. 21:40:28 with SafeSearch off, even. 21:40:34 C specifies a fair bit of memory management stuff as well. 21:40:59 Is it bad that I think brainfuck could be more readable 21:41:15 Taneb|Hovercraft: more readable than what? 21:41:18 it's kind of confusing. 21:41:21 That way lies brick/brain exchange. 21:41:22 that you would think that. 21:41:23 oerjan: Terse 21:41:42 ah. i was afraid you were considering making a derivative. 21:41:49 *WHEW* 21:42:21 My first esolang was an unpublished Ook! derivative 21:42:35 wow terse's website is SO AWESOME 21:42:46 it's yellow. 21:42:48 Sometime probably in 2008 21:42:52 ....Maybe I shouldn't have gone for encrypted home 21:42:57 AFAICT, it implies encrypted swap 21:43:08 uh, no? 21:43:23 your home and your swap are completely separate from each other... >_> 21:43:34 assuming linux. 21:43:36 "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 Why would they change it after 9.10? 21:43:44 oh 21:43:48 weird. 21:43:52 THEY NEVER TOLD ME THAT. 21:44:05 but anyway encrpytion isn't a problem, it's a good thing. 21:44:42 Sgeo: what's wrong with encrypted swap 21:45:09 elliott, slower, I'd assume 21:45:16 ha. ha. ha ha. ha ha ha 21:45:19 I feel like swapping just isn't slow enough. 21:45:23 How could I make it slower? 21:45:25 I KNOW! 21:45:35 Sgeo: disk is much slower than cpu. 21:46:18 Heck, *RAM* is slower than CPU anymore. 21:46:39 Even CPU is slower than CPU these days*. 21:46:42 :P 21:47:23 shit even the speed of light is slower than CPUs now. 21:48:27 Sgeo: but yeah encryption is either imperceptible or minor overhead on top of a disk operation. 21:48:39 Sgeo: also, how often do you actually use your swap? 21:48:42 I don't use mine at all. 21:48:46 All the time! 21:48:50 -!- Taneb|Hovercraft has quit. 21:49:08 Actually, apparently I don't. 21:49:10 oh hmmm I'm apparently using 330 MBs of swap right now. :P 21:49:42 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 sudo swapoff -a 21:49:51 bahahahahahahaha 21:50:00 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 the main problem I have with my encrypted home is that 21:52:09 if my computer died 21:52:15 I will have no way to access everything 21:52:19 because I don't know the key. :P 21:52:23 Memorize the key. 21:52:33 I actually don't even know where to find it. 21:52:41 Someone needs to write a program that turns arbitrary bytestrings into something that's easy for humans to memorize. 21:53:18 well I was just going to do the old write-it-down trick. 21:53:26 so when the FBI raid my home they can easily find it! 21:53:32 No, man, memorize it! 21:53:39 I should do that. 21:53:50 I could apply a simple Caesar cipher to it 21:53:53 they'll never figure that shit out! 21:56:35 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 elliott: ARM fixt. 21:56:54 Gregor: Horey. 21:57:09 elliott: Whorey. 21:59:45 -!- zzo38 has joined. 22:03:39 hoary 22:03:48 :t \xs -> listToMaybe (catMaybes xs) 22:03:49 hm... 22:04:03 oerjan: you need the key to open the drive... 22:04:09 because it's... encrypted 22:04:10 > mconcat [Nothing, Just 3, Just 4] 22:04:11 Ambiguous type variable `a' in the constraints: 22:04:11 `Data.Monoid.Monoid a' 22:04:11 ... 22:04:12 oerjan: I was thinking of something involving join first, which was what all that monadery was about. 22:04:13 the encrypted drive contains the key. 22:04:23 wat 22:04:24 > choice [Nothing, Just 3] 22:04:25 Not in scope: `choice' 22:04:30 @hoogle Alternative f => [f a] -> f a 22:04:31 Data.Foldable asum :: (Foldable t, Alternative f) => t (f a) -> f a 22:04:31 Control.Monad msum :: MonadPlus m => [m a] -> m a 22:04:31 Control.Applicative (<|>) :: Alternative f => f a -> f a -> f a 22:04:41 > mconcat [Nothing, Just 3, Just (4 :: Int)] 22:04:42 No instance for (Data.Monoid.Monoid GHC.Types.Int) 22:04:42 arising from a use of... 22:04:50 oops 22:04:50 oerjan: it's a wrapper-type Monoid insatnce 22:04:51 instance 22:04:52 not a semantic-type one 22:04:54 oh hm 22:04:55 (terms I just made up) 22:04:59 > asum [Nothing, Just 3, Just (4 :: Int)] 22:05:00 Not in scope: `asum' 22:05:02 -!- bd_ has left. 22:05:03 >:( 22:05:06 > Data.Foldable.asum [Nothing, Just 3, Just (4 :: Int)] 22:05:07 Just 3 22:05:09 > msum [Nothing, Just 3, Just 4] 22:05:11 Just 3 22:05:36 mmmm biscuit syrup 22:06:01 all governments should be biscuit syrup. 22:06:03 oerjan: anyway, listToMaybe [x | C x <- xs] is quite a nice pattern 22:06:27 listToMaybe [ x+y | Foo x y <- xs, x < y ] 22:06:28 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 it's like find but with deconstruction :P 22:06:36 hmm... 22:06:42 @hoogle (a -> Maybe b) -> [a] -> Maybe b 22:06:42 Prelude mapM_ :: Monad m => (a -> m b) -> [a] -> m () 22:06:42 Control.Monad mapM_ :: Monad m => (a -> m b) -> [a] -> m () 22:06:42 Control.Monad forM_ :: Monad m => [a] -> (a -> m b) -> m () 22:07:10 oerjan: oh well I think the code might be based on your password (???) 22:07:22 but all it seems to need is my password to access the drive. 22:08:53 very well 22:10:47 oerjan: hmmm but I do need a mount passphrase which it apparently gave me and I probably didn't write down. 22:10:54 if I want to manually recover the drive. 22:12:43 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 according to this wiki page. 22:13:53 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 ais523: IT WAS SO TEDIOUS 22:14:18 I note that I apparently forgot it for about five edits :P 22:15:48 I've got all the spam now, I think 22:16:06 elliott: so FRP would be a good choice for... say, a physics simulator within a game like df? 22:16:30 What is FRP not an ideal choice for? 22:16:38 Sgeo: network IO, apparently. 22:16:58 *certain kinds of network io 22:17:00 Hmm? 22:17:04 * Sgeo is curious now 22:17:55 Sgeo: also things where you're not reacting to time-based events. 22:17:57 http://stackoverflow.com/questions/6812533/am-i-using-reactive-banana-right is a decent example. 22:17:58 or external input. 22:17:59 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 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 Hmm 22:20:09 why is the wikipedia article for FRP so bad. 22:22:40 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 just an idea. 22:23:03 but I think it's fair to say that this is too much code for a simple networking task. 22:23:03 Haskell offers exactly one bit of language support: do notation. 22:23:10 And it's not much. 22:23:38 it certainly makes things like, say, simple networking tasks, not quite as annoying. 22:23:51 granted 22:24:26 it's /easy/ to fit monads to an synchronous style of programming, but FRP doesn't work that way. 22:27:28 augur: You might be interested in Clue. 22:27:41 elliott: the whodunnit game? 22:27:43 i love clue! 22:27:48 No, http://esolangs.org/wiki/Clue_%28oklopol%29. 22:27:56 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 Re: your talk in #haskell. 22:27:59 is it oklopol naked? 22:28:06 yes 22:28:09 Yes. 22:28:11 thank you for asking 22:28:20 * augur bites oklopol 22:28:30 now why would you do that 22:28:46 clue is the worst game 22:28:46 ever 22:28:48 that's just nasty 22:29:18 are you talking about my clue 22:29:19 ca 22:29:20 some people just prefer to be clueless 22:29:23 *-ca 22:29:28 oklopol: no the shitty board game. 22:29:30 because that's an awesome game 22:29:32 oh 22:30:14 i haven't played it, what do you actually do in it 22:30:25 oklopol: do you have a more serious discussion of this language 22:30:26 you roll dice, move your little piece across a huge square map 22:30:28 and go into rooms 22:30:32 augur: http://esolangs.org/wiki/Clue_%28oklopol%29/Quicksort http://esolangs.org/wiki/Clue_%28oklopol%29/SKI_calculus 22:30:33 ....that's pretty much the game. 22:30:34 or a reference to something related, but serious? 22:30:37 augur: I linked you to the examples for a reason. 22:30:38 augur: sorry, no. 22:30:54 oklopol: where is your inspiration for this coming from? 22:30:59 for clue? 22:31:01 oh it's apparently called cluedo outside the states. 22:31:02 CakeProphet, I always loved how half the game is moving pieces around a square grid. 22:31:10 Phantom_Hoover: yes that's my favorite part 22:31:17 and by favorite I mean the worst part about it. 22:31:20 oklopol: yes 22:31:23 * Phantom_Hoover wonders if you could camp by blocking a dor. 22:31:25 *door 22:31:36 augur: If you think it's not serious, then keep in mind that those programs actually work. :p 22:31:37 Phantom_Hoover: I don't think you can elect to not move. 22:31:39 it's the same inspiration that makes everyone come up with the basic idea of example-based computation. 22:31:43 it's an obvious idea 22:31:43 Phantom_Hoover: I think you have to use all of your moves in a turn 22:31:49 elliott: by more serious i mean publishable 22:31:53 Phantom_Hoover: but, I guess it's still possible. 22:31:55 CakeProphet, sure but doors have two blockable squares. 22:32:01 oklopol: i see. ok 22:32:01 Just move between the two. 22:32:07 augur: Sorry, I thought you asked "does anyone have any info about", not "does anyone haev any papers about". 22:32:19 elliott, epdort 22:32:29 i didnt know there was such a thing as example based programming 22:32:31 interesting 22:32:35 augur: but certainly not trying to make anything serious about it 22:32:38 who needs RSS when you have Sgeo. 22:33:10 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 :) 22:33:23 Someone in one of the Homestuck channel is keeping a log of all typos 22:33:59 of course while making it work, i made it lose most of its practical usefulness. that may not usually be desired. 22:34:12 Sgeo: a noble pursuit. 22:34:55 did i say most? i meant all of it. 22:36:00 oklopol: so you dont know of anyone else who's done this sort of thing 22:36:03 oklopol: that's the issue I'm having with my graph automata thing. 22:36:08 do you have source for the Clue compiler? 22:36:17 I can't devise 9 states that do anything practical. 22:36:18 augur: no. and yes, it's probably somewhere.... 22:36:23 so maybe I should just... not make it practical. 22:36:25 yes that sounds good. 22:36:27 it's like the slowest thing in the universe 22:36:33 oklopol: can you accurately describe the process? 22:37:31 i'm pretty sure i can, but i don't really feel like doing that right now 22:37:37 (or anything really) 22:37:42 :\ 22:37:43 ok 22:37:50 why u so interested all of a sudden? 22:40:01 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 so you can technically find out more. assuming this is the newest version of the interpiler. 22:40:42 oklopol: does it still have the ugly <>s :( 22:40:59 no i think that's now always id 22:41:05 and omitted 22:41:24 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 oklopol: well yeah that's the GENIUS CHANGE I made 22:41:48 just didn't know you merged it back in :P 22:41:48 what 22:41:54 oh 22:41:55 you said it wouldn't work like that 22:41:57 you mean making it id 22:41:57 and i did it 22:41:59 and it worked 22:41:59 yeah 22:42:01 and then you were like 22:42:02 elliott 22:42:05 you are the biggest genius 22:42:08 how can i ever repay you 22:42:09 humbly, 22:42:10 oklopol 22:42:17 huh. 22:42:27 big dude for big people. 22:42:30 well cool, i guess i could reduce your debt a bit. 22:42:39 what debt. oh that thing. 22:42:44 here i thought your ideas were really stupid 22:43:00 anyway the new way is so completely different that i won't even start to explain it 22:43:37 also i don't remember exactly what it is 22:44:34 9 different states might be too many. 22:44:36 on friday we talked about my colleague's new esolang for like half the workday 22:44:37 maybe 5 is good. 22:44:47 and the other half we played my newest game 22:45:37 but I need some way to connect subgraphs together... 22:45:51 CakeProphet: what 22:45:55 oklopol: which game 22:46:01 cp:s rant sounds interesting but i think i won't ask anyway 22:46:12 elliott: there's a few balls and a lot of cubes. 22:46:29 it's basically an fps, just for a game programming course, nothing particularly interesting 22:46:29 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 oklopol: i wanna play anyway but FIIIINE 22:47:05 you can when it's done 22:47:12 -!- SgeoN1 has quit (Quit: Bye). 22:47:16 unless we decide to try to sell it for laughs and giggles 22:47:22 I could: buy it. 22:47:27 (it's actually a lot of fun) 22:47:29 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 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 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 and other things that don't really fit together in any coherent way. 22:49:53 a rule is always applied to a single node at once? 22:49:59 argh i promised myself i wouldn't ask 22:50:10 I, guess? I'm not sure what you mean. 22:50:13 by "at once" 22:50:17 maybe i just won't listen, i'll fire questions and ignore you mwahaha 22:50:41 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 no. 22:51:02 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 that one. 22:51:32 okay, this might be interesting, i'll take a look at the end product when you finish 22:51:38 ha, 22:51:43 ha ha. "finish" 22:52:19 the main issue I'm having is that I don't really know how you would program with such a thing. 22:52:36 but I guess, like most CA, it's kind of non-obvious. 22:52:58 also creating new nodes and attaching subgraphs together is kind of an open question. 22:53:49 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 or "all 5s connect to all other 5s" 22:55:08 but then how do I create nodes, I think I'd need a way to increment the state of a node. 22:55:20 haskell 22:55:58 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 but...... 22:56:07 that is a huge clusterfuck :P 22:57:24 -!- myndzi has joined. 22:57:25 hi coppro 22:57:28 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 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 graph rewriting would be so much easier :P (for me, not the computer) 23:02:11 There are Reader Writer and State Monoids? 23:02:17 * Sgeo headaches 23:02:24 ? 23:03:02 oh no, not a binary operation with an identity element! 23:03:11 * CakeProphet mind blown 23:03:26 Sgeo: er, you are not misspelling "Monads"? 23:03:31 oerjan, I am not. 23:03:37 http://hackage.haskell.org/packages/archive/monoid-transformer/0.0.2/doc/html/Data-Monoid-State.html 23:03:49 Searched due to seeing a package in Synaptic 23:04:11 oh, cute 23:04:28 it does the moral equivalent of mappend <$> m <*> s 23:04:33 s/s/m'/ 23:05:02 elliott: did you read the source code or was it obvious from the Monoid instance. 23:05:18 i read the monoid instance's code 23:05:47 ah, but it's still pretty obvious from the instance itself. 23:05:54 Monoid a => Monoid (T s a) 23:05:58 hmmm, wonder what that could do. 23:06:37 Doesn't tell you how it threads the state at all. 23:06:46 ah, yes. 23:07:00 -!- azaq23 has quit (Max SendQ exceeded). 23:07:04 I'm wondering why they used a new type.. and not just the original State monad? 23:07:26 also they used the name pure..... 23:07:51 to avoid the dependency on transformers or mtl? 23:07:56 and to avoid semantic confusion? 23:08:12 -!- azaq23 has joined. 23:08:25 too cautious.. 23:08:50 hm but isn't _every_ Monad a Monoid under a similar interpretation. 23:09:08 oerjan: no, because there's no /binding/ 23:09:11 it's more like an applicative 23:09:22 only the state is threaded 23:09:28 you can't thread the result 23:09:36 oh 23:09:45 i think you can /maybe/ define a monoid for every monad like that? 23:09:47 dunno 23:09:58 mappend <$> m <*> s, you said 23:10:04 a Monoid for every Functor, perhaps? 23:10:07 moral equivalent of, I said 23:10:09 CakeProphet: definitely not. 23:10:27 return mempty 23:10:43 or indeed, for every _applicative_ 23:10:53 oerjan: that's what i was conjecturing. 23:11:28 mappend <$> pure mempty <*> x = mappend mempty <$> x = x 23:11:45 ah. 23:11:54 mappend <$> x <*> pure mempty = flip mappend (pure empty) <$> x = x 23:12:01 er 23:12:11 *mappend <$> x <*> pure mempty = flip mappend mempty <$> x = x 23:13:52 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 all pretty standard Applicative laws, i think 23:14:18 er 23:14:21 -!- elliott has quit (Read error: Connection reset by peer). 23:14:41 *= (\a b c -> mappend (mappend a b) c <$> x <*> y <*> z = 23:14:52 -!- elliott has joined. 23:14:53 *+) 23:15:44 in fact it would seem that an Applicative can lift any algebraic structure 23:16:48 oerjan: hmmm, CharParser Monoid could be useful perhaps? 23:17:15 er Parser monoid actually. 23:17:47 perhaps 23:19:11 I don't remember how Parsec combines tokens together by default. 23:19:20 *results of parsing tokens 23:21:30 that depends on how you combine the _parsers_ together, in precisely the same way as any other monad or applicative. 23:21:44 right 23:22:08 so I think a monoid would have the effect of combining two results into one? 23:22:41 x `mappend` y = mappend <$> x <*> y, is what we are going by above 23:24:09 also, this requires the result types to belong to a monoid. 23:24:18 right. 23:26:01 so yeah that's my guess on what a Parsec Monoid instance would do. 23:27:32 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 Sgeo: ehplideot 23:45:20 CakeProphet, liar 23:45:26 Sgeo: are you sure? 23:45:39 Yes 23:45:44 ha 23:45:44 ha 23:45:46 haha 23:45:47 hahaha 23:45:50 hahahahaha 23:46:29 ehplideot 23:48:13 `words 50 23:48:15 `word 50 23:48:15 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: words: not found 23:48:18 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 so many giant words. 23:52:23 `logs fix.*scanl.*ha 23:52:25 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: logs: not found 23:52:29 `log fix.*scanl.*ha 23:52:48 * CakeProphet waits. 23:52:53 > scanl (+) 1 [1,1..] 23:52:54 [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 2011-11-19.txt:23:52:29: `log fix.*scanl.*ha 23:52:59 ASSHOLE 23:53:25 fibs = fix (("ha. ":) . scanl (++) "ha.") 23:53:28 > fix (("ha. ":) . scanl (++) "ha.") 23:53:30 ["ha. ","ha.","ha.ha. ","ha.ha. ha.","ha.ha. ha.ha.ha. ","ha.ha. ha.ha.ha. ... 23:53:38 > fix (("ha. ":) . scanl (++) "ha. ") 23:53:40 ["ha. ","ha. ","ha. ha. ","ha. ha. ha. ","ha. ha. ha. ha. ha. ","ha. ha. ha... 23:54:07 > scanl (+) 1 [1..] 23:54:08 [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 > var . unlines $ fix (("ha. ":) . scanl (++) "ha. ") 23:54:29 ha. 23:54:29 ha. 23:54:29 ha. ha. 23:54:29 ha. ha. ha. 23:54:30 ha. ha. ha. ha. ha. 23:54:32 ha. ha. ha. ha. h... 23:54:36 :) 23:56:53 * CakeProphet should perhaps be banned from using var ever again. 23:57:41 maybe if go over to #haskell to do it someone will get the gumption to fix lambdabot. 23:57:46 +I 23:57:51 after they ban me. 23:58:25 I think I'll go do that.