00:00:02 (Note: mmm-mode is common across Emacs and XEmacs, SO DON'T GO RUNNING TO THE FSF :P) 00:00:28 I should just write my own editor. With multiple major modes. And breakout. 00:00:32 In fact, forget the editor. 00:00:33 -!- ais523 has quit (Remote closed the connection). 00:00:45 Breakout: inside the blocks, breakout. 00:00:54 Multiple major modes + Breakout = best game/editor/OS ever?? 00:01:09 (yes) 00:02:16 (pikhq: You wouldn't happen to have any idea of how to whip mmm-mode into submission?) 00:06:38 -!- coppro has joined. 00:07:21 Bah. It's ridiculous that none of the modern editors were designed with modes being an atomic, composable thing. 00:07:26 Were these things even *designed*??? 00:07:28 -!- jpc has quit (Read error: 104 (Connection reset by peer)). 00:07:33 -!- jpc1 has joined. 00:09:57 I strongly suspect that all editors were evolved. 00:10:16 Except Notepad. That's just stagnant. 00:10:34 At least notepad is totally consistent. 00:10:51 True. 00:11:05 I guess I'm just going to have to write my own editor. *sigh* 00:11:57 Doesn't Notepad have some sort of unicode issues? 00:12:04 Not in Vista onwards. 00:12:13 Oh 00:12:48 Notepad is basically perfect, except for the unnecessary .LOG feature. 00:14:19 Editor wishlist: File's modes are a tree; the topmost mode is managed by the editor. 00:14:27 I've said this before, but someone should make an esolang whose source files start with .LOG 00:14:49 Modes are self-contained: they can be applied to any buffer, with any settings (for instance, base indent N for code embedded in HTML), 00:15:09 and things like every instance of a mode in the same buffer being the "same instance" are possible 00:15:13 for e.g. completion, etc 00:15:16 (or even interactive evaluation) 00:15:32 also, buffers are abstract and, hopefully, composable 00:15:41 you can define a buffer that is the rot13 of a file, for instance 00:15:50 and modifying and saving it rot13s the contents and puts it in the file 00:16:46 now someone pledge to switch to my editor if it's any good so i have some sort of motivation. 00:18:02 -!- Sgeo has left (?). 00:18:05 -!- Sgeo has joined. 00:18:23 I definately want to try it 00:18:27 *definitely 00:18:34 do you still use windows 00:18:41 Yes 00:18:44 bugger 00:18:55 well you'll have to switch to something that runs X unless I change my mind :P 00:19:20 You can't use GTK+ or Qt or wxWindows or something along those lines? 00:19:32 ehird: pledged 00:19:42 coppro: why thank you. 00:19:44 Xming = awesome 00:19:45 just get that 00:19:57 Windows runs X. Just not as well as anything else ever. 00:20:02 yeah I was considering telling him to just get an X server 00:20:07 pikhq: what, even ubuntu 00:20:23 * ehird installs xming himself 00:20:25 ehird: Have you ever used X on Windows? 00:20:32 Cygwin X is shit 00:20:35 xming isn't, from what i hear 00:20:43 Xming is good 00:20:48 Granted, part of the issues are because Cygwin isn't all that great... But still. 00:20:59 Xming is totally Windows, no cygwin 00:21:03 * Sgeo sees a screenshot 00:21:13 ...Ubuntu on Windows? 00:21:19 yes, with coLinux. 00:21:19 no, X on windows 00:21:22 ehird: X11 using programs are either Cygwin or not on Windows, though. 00:21:27 (a driver that runs a linux kernel) 00:21:31 oh, yeah 00:21:36 hmm 00:21:38 coppro, yes, I know, but the screenshot on the wiki page 00:21:45 coppro: pikhq's right, you know; I do want to depend on posix 00:21:52 I mean, not fork() or anything 00:22:00 probably mmap() though.... 00:22:02 *though... 00:22:02 ehird: language? 00:22:07 but I refuse to depend on Cygwin 00:22:08 Hm, I'm going to have to try coLinux 00:22:16 coppro: oh, I assumed C; good point, there's no reason to assume C 00:22:27 hmm... perhaps Scheme 00:23:16 although I'd have to write my own impl for the $whatever_toolkit bindings and the like 00:23:24 (scheme implementation state is... rather dismal) 00:23:47 you have to donate to xming to get the latest version that's kinda lame 00:23:59 6.9.0.31 vs 7.5.0.15 00:24:49 I'll probably just depend on Tk or something (with default config on X11 that makes it not be shit) 00:25:06 I believe newer Tks can do Xft and the like; pikhq will know. 00:25:14 and Tk is native on Windows 00:25:18 Yeah. 00:25:21 OS X I don't really care about because I won't be using it soon 00:25:29 Wait, it's possible to have non-shitty Tk? 00:25:32 Sgeo: yes 00:25:34 And Tk is nativish on OS X. 00:25:36 Sgeo: Yes. 00:25:41 ok, Tk 8.5+ includes the new theming engine and outline fonts 00:25:52 Sgeo: http://tktable.sourceforge.net/tile/ 00:25:53 It's slightly shitty on UNIX still, but it at least isn't complete suck now. 00:25:54 Pick a theme, any theme. 00:26:12 http://tktable.sourceforge.net/tile/screenshots/unix.html 00:26:23 And it's still got one of the nicer APIs... 00:26:24 oooo 00:26:25 Note the reasonableness of Default, Revitalized and Clam. 00:27:10 No vistanative or sevennative ? 00:27:19 winnative uses native Windows widgets. 00:27:23 Sgeo: you know IDLE? Python? 00:27:25 That's Tk. 00:27:44 ehird, yes, and that's why I held my believe that Tk was shit 00:27:52 Maybe I'm misremembering IDLE's look 00:27:57 have you ever used IDLE on Windowsw? 00:27:57 Sgeo: xpnative uses the XP themed widgets API. 00:27:59 *Windows 00:28:01 it is 100% native 00:28:08 pikhq: winnative uses actual widgeets though 00:28:13 The same API is used for Vista and 7. 00:28:17 Maybe I could write the editor in Tcl. pikhq: Tcl has lambda right? 00:28:23 or rather, closures 00:28:25 http://zzo38computer.cjb.net/img_10/healthbaseisreallystupi.png 00:28:35 Well, I don't think I've used IDLE on Windows in a very long time 00:28:36 Hold on 00:28:43 Kinda-sorta-maybe. 00:28:50 pikhq: Elaborate. 00:29:20 ehird: donate and mirror imo 00:29:43 coppro: It isn't open source. 00:29:50 The old binaries are public domain but the donate ones aren't. 00:29:54 oh 00:29:57 Unless you're actually instructing me to violate copyright law. 00:29:59 I'm going to guess that this is what you'd actually *want*: http://www.tcl.tk/cgi-bin/tct/tip/187 00:30:19 But that isn't accepted. 00:30:27 What can I do in practice? 00:30:33 Also, does Tcl let you use dashes-in-names? 00:30:42 (Is that the default naming convention?) 00:30:43 ehird: I've had no trouble with the PD release 00:30:56 Whereas this is what you actually get: http://www.tcl.tk/cgi-bin/tct/tip/194.html 00:30:56 but I'll be fair in saying I haven't used it a ton 00:31:02 coppro: It's from 2007. Donate release is from 2010. 00:31:04 ehird: Tcl allows you to use dashes-in-names. 00:31:07 Kinda crappy. 00:31:13 pikhq: Is it the naming convention? 00:31:16 The typical naming convention is underscores, however. 00:31:16 old != bad 00:31:30 coppro: Yes, but it's a whole major version behind. That's just crappy behaviour on tnhe part of the author. 00:31:32 (don't see it much, though) 00:31:45 ehird: He probably bumped the major when he closed it off 00:32:07 people wouldn't donate for 6.9.0.32 when they can get 6.9.0.31 00:33:07 pikhq: what do you mean, don't see it much? 00:33:46 ehird: ... There's like 20 names in underscores in the n section of my manpages... 00:33:53 Ah. 00:33:58 So most names are scruncheduplikethis? 00:34:35 It's just that, say, run-extended-command is much nicer than run_extended_command or runextcmd. 00:34:40 No, you've just got things like the string proc. 00:34:46 Ugh, yeah. 00:34:47 Ugly. 00:35:04 "string is", "string range", etc. 00:35:24 I could do Scheme+Tk... 00:36:00 (STklos) 00:36:10 Wait. 00:36:15 STklos changed to Gtk. Ugh. 00:36:57 I swear my editor will have a _nice_ user interface. 00:37:21 Keyboard-oriented but point-'n-clickable and no RSI. 00:38:36 Definitely no modal dialogs, except maybe if you run I-want-a-crazy-WIMP-file-selector. 00:39:00 ("dialog" with no title bar will appear in the bottom of the window, probably.) 00:39:07 Like a souped-up minibuffer. 00:39:10 I'm going for today. Bye. 00:39:30 -!- ehird has quit. 01:01:17 I think this has 3 instructions, not 2 instructions http://esoteric.voxelperfect.net/wiki/Ultimate_bf_instruction_minimalization%21 01:01:57 Because, no operation is one of the instructions, too (see the information about "(" command) 01:04:47 zzzzzzzzz 01:07:59 yyyyyyyyy 01:23:22 -!- oerjan has quit ("Good night"). 01:23:33 -!- zzo38 has quit ("Good day"). 01:38:15 -!- oklopol has joined. 01:38:29 Is OpenSVN dead? 01:42:25 your MOM is dead 01:56:57 -!- oklofok has quit (Read error: 110 (Connection timed out)). 02:00:37 -!- Cerise has quit (farmer.freenode.net irc.freenode.net). 02:01:09 -!- Cerise has joined. 02:14:43 -!- BeholdMyGlory has quit (Remote closed the connection). 02:18:51 ehird, i was thinking in the graphics language, we'd need a function that takes some shapes and constructs and arbitrary composite shape out of (copies of) them 02:20:30 e.g. group { ... } where everything in ... is a subpart of the group object; so their positions are bound to the group objects, their sizes, etc. 02:20:47 so that if you scale the group object, the subobjects scale, if you rotate it, they as a whole rotate, etc etc. 02:20:54 -!- FireFly has quit ("Leaving"). 02:21:09 ping me with an opinion when you get back 02:21:16 augur, what, are you making a competitor to SL? 02:21:23 sgeo: whats SL 02:21:39 Second Life 02:21:44 no. 02:22:52 were trying to design the latex-of-images, so to speak 02:23:57 svg? 02:40:30 Hmm, I want to make some aperiodic tiles. 02:41:44 we have a course about tiling, but not in this semester :'( 02:42:26 i hear it's rather hard to do that 02:42:39 I think I can make some aperiodic tiles for a half-plane. 02:43:21 how then? 02:43:29 Give me a moment. 02:43:50 do you use wang tiles? 02:44:05 Yeah. 02:44:33 i guess it's a w.l.o.g system 02:44:40 *. 02:44:46 A without loss of generality system? 02:44:48 yes 02:45:18 that you can simulate any set of tiles using wang tiles... but that's actually not at all true 02:45:56 Surely for every set of nice tiles, there's a Turing machine that halts if and only if it has a periodic tiling. 02:46:20 yes, obviously 02:46:36 Put the tiles together in every possible way; halt when you make something whose edges have the right symmetry. 02:46:44 just enumerate all possible ways to piece those tiles together, and for each check whether it fits its own boundary 02:46:56 ...i think ;) 02:48:08 i haven't actually thought much about tiling, just seen the proof of tm < tiling with a seed tile, once 02:48:51 where seed tile is a tile you have to use, then you can force the initial turing machine block to be on the plane 02:49:02 but you already knew that 02:51:02 Did I? 02:51:32 i usually assume people know the things i know through the same media i know them 02:51:57 i don't mean physical medium, more like context 02:52:38 in any case, the original use of aperiodic tilings was to show tiling is undecidable even without a seed tile 02:52:51 (the guy who proved it with a seed tile actually postulated the opposite) 02:54:32 so did you have something for half-plane? 02:54:53 i would probably need paper and an afternoon 02:57:32 http://pastebin.ca/1743607 02:58:16 wait 02:58:25 why is there a row of e on the bottom? 02:58:36 Because the bottom matches with the edge of the half-plane. 02:58:41 i mean the problem is trivial if you have seed tile :P 02:58:42 *s 02:59:15 i assumed you just require it to fill half the plane sensibly, and the rest can fail 02:59:59 but i'll read it still, maybe 03:01:23 Am I allowed to congratulate myself on my insight even if the problem is trivial? 03:02:33 certainly, especially as i consider it trivial only because i know how a turing machine is embedded given a seed tile, and i don't even see how to do it given a seed *row* :) 03:02:48 Wonderful! 03:04:12 okay i think they are aperiodic, but can't really see why 03:04:41 i mean i can't find a counter-example, what does it do? 03:04:47 You know how Sturmian words are aperiodic and can be collapsed? 03:05:36 very vaguely 03:05:43 are they err 03:06:03 Take the infinite Fibonacci word: ABBABABBABBAB... 03:06:05 err i'll just google, i'm thing of lind... something 03:06:27 The letter A only occurs in the string AB. Replace AB with A, and you get ABAABABA... 03:06:35 Then the letter B only occurs in the string AB, and so on. 03:06:49 Therefore, this is a Sturmian word. 03:07:17 what's an infinite fibonacci word? 03:07:46 It's a thing that you get by repeatedly applying the replacement {A -> B, B -> AB}, or an equivalent one. 03:07:58 right 03:09:52 My tiling, going from the bottom up, repeatedly applies the replacement {AB -> B, B -> A}, thereby forcing the bottom row to be an infinite Fibonacci word. 03:10:49 Though it uses the color O to represent nulls, which it ignores from then on. 03:11:11 ah 03:13:44 i'm quite convinced that works 03:13:47 It's easy enough to make the tiles allow any Sturmian word, except I don't know how to force alpha to be irrational. 03:14:43 The resulting set of tiles will contain 22 instead of 7. 03:15:43 Now to ponder how to tile the entire plane. 03:17:49 okay, a turing machine can be pretty easily embedded given a seed row 03:17:56 Lessee. These tiles cannot tile the entire plane as long as there is are at least two tiles, horizontally separated, each containing an A or B; each one would generate more of itself below itself until they got crowded out. 03:18:47 those tiles certainly can fill the whole plane 03:18:55 in fact just one of them can 03:20:14 Hence the "as long as . . ." part. 03:21:20 maybe i didn't actually read what you said, sorta half-asleep 03:21:43 just looking for errors in what you say i guess, easy way out 04:19:38 -!- coppro has quit (Read error: 60 (Operation timed out)). 05:08:11 -!- oklofok has joined. 05:13:30 -!- oklopol has quit (Read error: 110 (Connection timed out)). 05:16:24 -!- Pthing has quit (Remote closed the connection). 05:30:46 -!- soupdragon has joined. 05:39:40 -!- jpc1 has quit ("I will do freaking anything for a new router."). 05:40:15 -!- jpc has joined. 06:07:22 -!- jpc has quit (Read error: 110 (Connection timed out)). 06:09:31 -!- zzo38 has joined. 06:10:40 I made a beer program in Icoruma (a markup language for RPG rules). Why? is, just because I can, that's why. http://pbox.ca/11dhp 06:12:21 To write a brainfuck interpreter, would be more difficult, because Icoruma lacks two things, input facilities and infinite loops (although you could still do infinite self-recursion) 06:39:16 -!- jpc has joined. 06:40:50 + 06:44:03 -!- lifthrasiir has quit (Read error: 104 (Connection reset by peer)). 06:44:08 -!- lifthrasiir has joined. 06:50:29 -!- jpc has quit (Read error: 54 (Connection reset by peer)). 06:50:29 -!- jpc has joined. 06:53:52 hey zzo I didn't get around to trying to compile your forth yet :( 06:55:50 OK 06:57:23 -!- zzo38 has quit ("I am still in the process of writing the adventure standard library but now I have to sleep OK thanks bye"). 07:06:41 -!- coppro has joined. 07:14:23 -!- whtspc has joined. 07:16:06 -!- whtspc has left (?). 07:45:03 -!- coppro has quit (Remote closed the connection). 07:45:50 -!- coppro has joined. 07:57:18 -!- Sgeo has quit ("Leaving"). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:12:06 -!- pikhq_ has joined. 08:26:36 -!- pikhq has quit (Read error: 110 (Connection timed out)). 08:30:55 -!- coppro has quit ("I am leaving. You are about to explode."). 09:41:24 -!- lament has joined. 09:54:35 -!- lament has quit. 10:06:30 -!- jpc has quit (Read error: 60 (Operation timed out)). 10:16:34 -!- oerjan has joined. 10:33:17 -!- Slereah_ has joined. 10:49:07 -!- Slereah has quit (Read error: 110 (Connection timed out)). 11:07:51 -!- oerjan has quit ("leaving"). 11:34:01 -!- lifthrasiir has quit (Read error: 104 (Connection reset by peer)). 11:40:25 -!- rodgort has quit (Client Quit). 11:40:35 -!- rodgort has joined. 11:45:48 -!- kar8nga has joined. 11:48:41 -!- MizardX has joined. 11:50:12 -!- FireFly has joined. 12:35:20 -!- Sgeo has joined. 12:42:34 okay I think I figured out an algorithm 12:50:54 where is my reward? 12:51:21 soupdragon, algo for what? 12:51:28 parsing 12:51:41 soupdragon, parsing what language? 12:52:02 I figure if you just parse every length 1 subseqence, then every length 2 subseqence, ... up to the lenght of your input 12:52:06 that should work fine.. 12:52:31 soupdragon, parsing what language? C? English? infix math notation? Haskell? 12:52:48 soupdragon, link to your IRP programmer projecteuler account? 12:52:58 http://projecteuler.net/index.php?section=profile&profile=InternetRelayProgrammer 12:53:04 Ah 12:53:11 :D 12:53:15 3 done! 12:53:23 Btw, congrats on beating #2 12:53:25 Yeah 12:53:42 http://projecteuler.net/index.php?section=profile&profile=InternetRelayProgrammer <-- redirects to front page? 12:53:49 not here 12:54:01 AnMaster, im not parsing a specific language but a class of languages 12:54:26 how it work is every word is given a category, and a parse is such that the categories all fit together properly 12:54:33 soupdragon, what class? 12:54:42 which* 12:55:56 my idea for the algorithm is that you take as input, all the pases of the subseqences 12:56:09 then making a parse for the full thing just means connecting those up 12:56:26 soupdragon, *which class* 12:58:01 it is used for english language btw 12:58:24 that's an example: Frank < ((gave > (a > flower)) > (to > Mary)) 12:58:53 that's a parse of Frank gave a flower to Mary, and the semantics are GIVE(FLOWER,MARY,FRANK) 13:06:56 -!- lifthrasiir has joined. 13:09:30 oh lol, i thought "congrats on beating #2" meant soupdragon was now #2 on the overall player ranking. 13:11:36 haha I wish 13:20:09 i never got very far, all the problems started looking the same after, well, whatever amount i did 13:20:24 (also there was the fact they were hard, but let's not mention that.) 13:47:36 ;P 13:54:33 -!- ehird has joined. 13:55:13 -!- BeholdMyGlory has joined. 13:57:07 AnMaster: You have to be logged in to be able to view the profile 14:01:00 ehird, if you're somehow reading logs of #xkcd, don't read what I said. I sort of hinted at a somewhat important FS spoiler 14:01:09 Quick, name an editor: Alter or Amend 14:01:09 If you're the lowercase type, you could pick from one of these: alter or amend 14:01:20 Sgeo: I am, in fact, stalking you, so thanks for the info? 14:01:41 -!- ais523 has joined. 14:03:24 Deewiant, ah 14:03:48 ehird: amend is very fuzzy and touchable. 14:04:00 Totally. 14:04:32 alter sounds like it wants to change the world with its old ideas 14:05:08 oklofok, alter's old ideas, or the old ideas of the world? 14:05:26 alter's 14:05:29 ah 14:06:00 ehird, what sort of editor would it be? Didn't you say you wanted to write a text editor recently? 14:06:29 Yes, and I decided I would and expanded a bit on my ULTIMATE VISION yesterday. 14:06:37 oh? 14:06:58 Driven by my frustration at how hard it is to do multiple major modes in Emacs, while trying to make a Frink Server Pages mode. 14:07:14 ah 14:07:24 tl;dr blurb: Buffers are abstract and possibly composable; modes are atomic, not regexp hacks operating on a buffer, and composable; 14:07:33 fully extendable like emacs; 14:07:39 less RSI than emacs; 14:07:50 ehird, sounds nice. What language would it use instead of elisp? 14:07:55 and simultaneously command/keyboard based while still being comfortably point-and-clickable while appropriate 14:07:58 the end 14:08:50 very nice. 14:08:55 hm 14:08:55 we gonna see some changes around here 14:09:04 AnMaster: Undecided. I'm probably going to use Tk for the GUI toolkit (don't worry, it doesn't have to be ugly! See http://tktable.sourceforge.net/tile/screenshots/unix.html; default, revitalized and clam are nice.), so I might use Tcl, but probably not since Tcl doesn't do lambdas well and stuff. 14:09:05 -!- Sgeo_ has joined. 14:09:08 I might use Scheme. 14:09:15 So, undecided, basically. 14:09:47 hm 14:09:51 ehird, alter > amend 14:09:59 bbl 14:10:09 So 1:1. 14:14:43 back 14:15:13 well, amend sounds like it can not completely restructure things. Just amend, like amendments to the US constitution 14:15:26 alter sounds much more powerful and capable 14:16:12 what's this debate about? 14:16:20 to radically restructure things, if that is required. As well as just making small alterations should that be your goal 14:16:26 ais523, naming of ehird's editor 14:16:37 Quick, name an editor: Alter or Amend 14:16:37 If you're the lowercase type, you could pick from one of these: alter or amend 14:16:37 * ais523 (n=ais523@unaffiliated/ais523) has joined #esoteric 14:16:40 pick whatever backronyms better 14:16:48 I don't do backronyms. 14:16:58 well, someone else will if it becomes popular 14:17:05 and you want the backronym to be a good one rather than a terrible one 14:17:27 personally I'd go for "alter" because it sounds more like "editor", and I think name-feel is important 14:17:28 ais523, well that is easy, alter stands for alter 14:17:44 People backronymmed "vi"? 14:17:53 People backronymmed "Notepad"? 14:18:07 I'm pretty sure Emacs is a unique recipient, and it was an acronym to start with. 14:18:22 Also, it's technically not just an editor, as I'm fairly sure it would make a good mail interface too. (BUT NO TETRIS!) 14:18:48 if it's not powerful enough to implement tetris, it fails as an editor 14:18:58 otoh, feel free to not include tetris as part of the standard distribution 14:19:00 ehird, notepad = note or text editor plus a diagram. Oh sorry, did it have to make sense too? 14:19:00 It's certainly powerful enough. 14:19:07 I'll just kill you if you do it. 14:19:24 ehird, isn't vim = Vi IMproved? 14:19:28 or something like that 14:19:51 maybe it's called VI because it's the world's sixth best editor 14:20:04 :D 14:20:27 NOTEPAD: Not Only a Text Editor: Putrid Alchemic Death! 14:20:46 ais523, that high ranking? I doubt it. lets see... better ones: emacs, nano, joe, pico, kate, gedit 14:20:53 so it would be the seventh at most 14:21:13 Come on, even I won't argue that nano is better than vi. 14:21:23 Only a zealot or an idiot who really likes nano would do that. 14:21:26 I don't think I can either, I was trying to come up with a plausible argument and failed 14:21:29 I presume you're not the latter. 14:21:33 the best I can manage is "nano is better for beginners" 14:21:45 ais523: AnMaster's argument is undoubtedly "vi is the worst thing EVARRRRRRRRRRRR and I hate it" 14:21:45 which I don't consider to be an important property of an editor 14:22:06 And gedit? No... not really. 14:22:23 ehird, well, vi probably isn't. worse. But personally I found vi more confusing than nano 14:22:24 gedit's "good enough", I use it sometimes, but I don't think it's better than vi 14:22:26 Kate, well, I disagree, but we're getting into actual personal opinion here. 14:22:37 also, kate > gedit, I really should install kate on here 14:22:45 bbl 14:22:46 Joe, joe isn't bad. So sure, if you have idiosyncratic tastes. 14:22:51 "Good Enough eDIT" 14:22:54 I want cake 14:22:57 * ehird scares AnMaster: Tuomov uses joe, you know 14:22:58 who doesn't 14:23:10 * ais523 sudo aptitude install kate 14:23:10 oh, and he listed pico as well as nano 14:23:14 how disingenuous 14:23:17 I noticed 14:23:21 I was working on a Python project, and was asked what editor I use. "Kate". "You get a girl to type in your programs for you? Lucky!" 14:23:33 in conclusion, the defensible subset of his list is {emacs, joe, kate} 14:23:45 yotto 14:24:00 Sgeo_: was that a "joke" and if so was it yours or did this actually happen 14:24:24 It was a joke, it actually happened, although perhaps phrased differently, I don't remember. 14:24:43 It was 2005 or 2006, so 14:24:49 a few times i've gotten a girl to read my books to me. 14:24:58 it's great except it doesn't work 14:25:07 yeah I was gonna say, how does that work 14:25:18 because i need to constantly explain notation, and need to take pauses to think about proofs 14:25:24 works great for fiction tho 14:25:37 what we need is 2D natural language 14:25:37 yeah 14:25:38 mind doen't drift when the stream is constant 14:27:17 also with math and cs there's the slight problem the girl might get bored if she doesn't understand a single word 14:27:45 yeah girls don't understand things like math and computing 14:27:53 or LIFIE 14:27:55 *LIFE 14:27:59 OR BREATHING 14:28:01 soupdragon: some do 14:28:09 i think soupdragon was being sarcastic 14:28:09 maybe. 14:28:27 * Sgeo_ wishes there were more girls in his programming classes 14:28:44 oh shit, i was supposed to meet this dude today and teach him game theory 14:28:53 hmm... I can't develop my editor in OS X because Tk is yuck on OS X 14:28:54 prisoners dilemma 14:29:00 (16:30 now) 14:29:04 also, because the tcl/tk os x comes with is old 14:29:08 and i'm too lazy to install a new one 14:29:10 will he show up? 14:29:19 doing it in a vm would be a bit of a bitch though 14:29:20 i don't really let people here 14:29:28 so i have to install a non-os x OS on a second partition 14:29:38 if he's still up for it, maybe uni, oh wait, it's saturday 14:29:45 ehird, you really want to create an editor that will be ugly on OS X? 14:29:46 ooh, I've just had a ridiculous thought 14:29:49 an inside-out VM 14:29:57 as in, you open a second OS inside your first one 14:30:02 xD 14:30:10 then the VM sort of 'flips' and leaves you with your original OS running inside the new one 14:30:11 ais523: that's the same thing as a vm :p 14:30:14 Ok, around 2 o'clock then. Where do we meet? 14:30:15 ah. 14:30:20 seems we also set a time 14:30:22 Sgeo_: Well, _anything_ that isn't Cocoa is ugly on OS X. 14:30:27 one fucking thing to do all week 14:30:27 Or Carbon I guess if used carefully. 14:30:33 I won't be using OS X soon anyway. 14:31:23 soupdragon: even if the girl was a mathematician, it's possible she wouldn't understand a single word, starting from a random chapter, with a random topic 14:31:43 although i'm not arguing girls usually have different interests 14:32:22 ais523: don't VMs usually have a different sort of hardware on the inside to the outside?: 14:32:23 Any ideas on what I should start reading online so conversation in here stops going over my head? 14:32:36 SimonRC: yes, but I don't think that's a fundamental limitation 14:32:39 what subset of conversation 14:32:42 just it's done that way because that way's easier 14:32:43 we talk about everything 14:32:49 ais523: ok 14:32:51 -!- Sgeo has quit (Read error: 110 (Connection timed out)). 14:32:55 Sgeo_: the interesting stuff or the OS stuff 14:32:59 * ehird scares AnMaster: Tuomov uses joe, you know <-- name sounds familiar, can't place it. 14:33:04 lol 14:33:05 oklofok: we don't do much os stuff anymore :| 14:33:07 AnMaster: Ion. 14:33:20 ais523: the cool thing about your inside-out vm would clearly be the switching animation 14:33:23 oh, and he listed pico as well as nano <-- if you didn't realise it, it was half a joke. 14:33:27 ehird, ouch 14:33:34 ehird: i label pretty much anything as OS stuff that contains individual program names :D 14:33:41 I'm imagining the VM inside growing to be as big as the screen, and the other OS shifting into the window area 14:33:49 while the window chrome fades appropriately 14:33:50 xD 14:33:53 oklofok: lulz 14:33:59 ehird: OK, that /would/ be a great animation 14:34:01 ehird, anyway, I would place emacs, kate, joe and nano above vi, but vim above nano 14:34:03 so it would be: 14:34:10 emacs, kate, joe, vim, nano, vi 14:34:37 ehird, I find it hard to imagine even you could place nano below vi 14:34:37 ehird: i should probably call it something else, maybe "conversations containing individual program names". 14:34:42 I wonder if some sort of hypervisor would be needed 14:34:49 eh, tuomov isn't all bad. Yes, ion's license is really stupid, and he's a total asshole... but I read his blog a bit a while back, and he has a lot of good ideas 14:35:01 * oklofok is afraid he got a random uni acquaintance mad! 14:35:20 ehird, possibly also gedit should be above vi, it isn't too bad. 14:35:21 SimonRC: I assumed you'd have one anyway, because virtualisation's really slow without it, and I can't imagine how the operation of turning a VM inside-out would work otherwise 14:35:30 ais523, would you agree with that list? 14:35:40 Well, off to watch a movie on YouTube 14:35:42 AnMaster: I've never used joe 14:35:43 also soupdragon: not far from the truth, prisoner's dilemma was in the last exam 14:35:52 :D 14:35:57 and I don't think kate > vim is uncontroversial (and emacs v vim is definitely controversial) 14:36:00 sorry about random buffer emptying. 14:36:00 ais523, only used it a bit, not much. The editors I actually use often are emacs, kate and nano 14:36:35 Nothing is better than vim. 14:36:40 vim rules all. 14:36:42 Muahahahaha 14:36:53 * Sgeo_ has become addicted to using Chrome's Task manager to kill everything and close all tabs except one 14:36:54 kate + joe > vim is highly controversial 14:37:02 very few people would agree with that 14:37:19 nano > vi too, although saying vi instead of vim means more people would agree 14:37:22 but still controversial 14:37:42 nano and vi have similar capabilities, I think 14:37:54 ehird, well, depends on what aspect you are rating. Customisability: then vim is probably directly after emacs. Ease of use: then my rating probably isn't too far off 14:37:55 vi's harder to learn but a bit faster to use once you have 14:38:02 ais523: nano doesn't have vi's composable commands 14:38:04 nor :! 14:38:09 afaik 14:38:13 or ex mode 14:38:14 so it's not even remotely as powerful as vi 14:38:17 brb 14:38:21 ehird: I said capable, not powerful 14:38:23 How is it that I always get interested in stuff for stupid reasons? 14:38:26 I agree that vi's a lot more powerful 14:38:26 LOL 14:38:34 AnMaster thinks emacs is easier to use than kate or joe or nano? 14:38:35 My reason for learning Python in the first place is rather idiotic 14:38:41 what would it be 14:38:49 on crack on crack on crack, crack crack crack crack crack crack, onnnnnn crack 14:38:54 just call it the AnMaster song 14:39:01 The fact that the interpreter is free 14:39:13 us who are afraid of programs can have a side conversation about liking stuff 14:39:24 ehird: one fun test is to find someone who doesn't know how to use editors at all, and see how long it takes them to exit editors they haven't seen before 14:39:26 that's not a reason 14:39:28 oh well aren't they for most languages? 14:39:37 : aye 14:39:46 what less-mainsteam spoken/human languages do you do? 14:39:54 oklofok, I didn't know that 14:40:01 you can get emacs, vi[m], and nano any way round on that test, depending on the details 14:40:01 everyone 14:40:12 I seriously thought I had to pay some company or other to use C or C++ 14:40:34 soupdragon: finnish 14:40:45 it's a dead language on the north coast of the world 14:40:46 Sgeo_: that used to be the case, maybe 10 or so years ago 14:40:49 a finn speaks finnish? gosh amazing 14:40:49 not any more though 14:40:51 ok 14:40:54 ais523: err... gcc? 14:40:58 *used 14:41:00 late 1980s 14:41:03 I may have been reading about C and C++ 10 years or more ago 14:41:04 ehird: was it available for Windows 10 years ago? 14:41:11 In books 14:41:12 hmm 14:41:16 well djgpp when was that 14:41:20 Hm, I also read about Perl, so 14:41:23 hmm, good point 14:41:27 1989 14:41:36 maybe first usable 1990-1991 14:41:44 so more like 20 years 14:41:45 Also, I remember talking to some waitress being so excited that the Java SDK was free 14:42:02 Waitresses excited about the Java SDK being free. 14:42:02 O-kay. 14:42:06 ehird, no, I was 14:42:11 :P 14:42:13 Oh. 14:42:18 You're crazy. :P 14:42:22 that's just as weird 14:42:23 hi 14:42:28 Perhaps weirder. 14:42:30 yeah 14:42:33 hi soupdragon 14:42:37 I can almost imagine a waitress-by-day, master-hax0r-by-night. 14:42:43 Sgeo_: how old were you 14:42:45 like 12? 14:42:58 when ehird was 12, he was already programming for nasa 14:43:04 ehird, I don't remember. Probably around that age, or younger? 14:43:05 seems it was 1996 before DJGPP could completely self-bootstrap 14:43:09 oklofok: DON'T TELL THEM 14:43:13 ais523: self-bootstrapping isn't important 14:43:17 oh was that confidential 14:43:19 ehird: I know 14:43:23 oklofok: ULTRA CONFIDENTIAL 14:43:23 I'm just amused at the timelag 14:43:36 EVERYONE TYPE /CLEAR PLS 14:43:37 hmmmmm 14:43:40 this conversation isn't im[proving my mood 14:43:50 "I thought of this episode yesterday while playing around with my laptop’s webcam and a Python shell. Finally I wrote a little fun script that does almost the same: Just register it as a hg hook and it takes a picture of you exactly at the unique moment when merging fails and it sends it directly and without any further questions to Twitpic and Twitter:" 14:43:56 http://andialbrecht.wordpress.com/2009/05/09/when-merging-fails/ 14:44:00 hi SimonRC 14:44:14 SimonRC: what, are you upset that I programmed for nasa*? 14:44:15 *lie 14:44:22 ehird, re[ae]ddit 14:44:23 ehird: that seems like a rather weird thing to do 14:44:38 soupdragon: you took 10 mis to spot me? 14:44:39 I mean, the merge-fail thing 14:44:42 what is the term for non-computer programming/informal language? 14:44:47 ais523: click the link for the reason 14:44:51 soupdragon: natural language 14:44:57 but they are not all natural 14:45:02 like the ones people make up for films 14:45:13 constructed language 14:45:13 /conlang 14:45:17 there is no good name 14:45:19 Or Loxian? 14:45:28 <3 Enya 14:45:30 but what is the union of conangs and natlangs? 14:45:31 hmmmmm 14:45:51 ehird: I still don't get it even after reading the page 14:45:57 hey im going out see you 14:46:02 the page didn't really say anything useful other than the quote 14:46:07 -!- soupdragon has quit ("Leaving"). 14:46:20 ais523: merge failing = terrible emotional anguish 14:46:24 terrible emotional anguish = funny 14:46:30 ehird: I'm just vaguely annoyed at people being more capable than I was at their age. It happens all the time on this channel 14:46:32 no, merge failing = merge failing 14:46:35 schadenfreude = funny 14:46:39 I don't see why it's particularly anguishing 14:46:40 ais523: for you perhaps 14:46:43 * oklofok read "i'm going out to see you" 14:46:45 because you have to merge manually 14:46:53 SimonRC: just get a time machine 14:47:09 ehird: but that only happens if either there's a conflict, or the merge is trivial but something the VCS didn't think of 14:47:11 SimonRC, same here 14:47:21 SimonRC: when i was 12, i was just as stupid as now 14:47:21 Or are more capable than I currently am now 14:47:31 in the first case you need to talk with the person who made the other version, and sort it out with them, the second case is easy 14:47:40 incidentally, one of my projects that hasn't got off the ground is my own VCS 14:47:40 plus i didn't know any math 14:47:47 i remember when i was... 10? i was jealous of an 11 year old who could code c because i couldn't :p 14:47:49 Although I take some comfort in the fact that when I try to tell people that, they don't believe me 14:47:52 not knowing any math makes you worthless 14:47:58 ...as if c was some immensely difficult thing or whatever 14:48:02 ehird: could you code C at age 11? 14:48:20 ais523: i don't know when i learned c. maybe 11 yeah 14:48:22 or very early 12 14:48:40 i learned c++ at 10 from a book, first tried coding in it when i was like 13 or 14 14:48:48 i don't recall learning it, I wrote hello world and 99 bottles of beer, wrote some stupid unworking interpreters some time later, and then suddenly the next time I grokked it completely 14:48:49 or maybe it was 11 14:48:54 and...now I'm pretty good at c 14:49:01 all i know is it took months 14:49:18 and i think i didn't really understand most of the last 200 or so pages 14:49:27 just had to read all of it 14:49:42 heh, I learnt Prolog something like 7 years before I got my hands on a Prolog interp 14:49:53 how did it go? 14:50:02 If you consider reading from a book enough to learn a language, then I learned C++, Perl, COBOL, and probably some others 14:50:05 pretty well, actually 14:50:11 I sort-of understood how it worked, just couldn't try anything out 14:50:13 I've never actually written a line of Perl or COBOL in my life 14:50:14 i was pretty much fluent right away, in the c subset that is 14:50:16 hmm 14:50:19 and when I installed gprolog much later, I could write in it 14:50:28 IDENTIFICATION DIVISION. 14:50:32 There. I wrote a line of COBOL 14:50:36 luckily Prolog syntax is trivial, otherwise it would be easy to mess it up 14:50:47 * ehird ponders whether to install windows or linux on the separate partition; Windows plays nicer with Frink, I believe, and is easier to set up to be bearable for me, but Linux lets me use tk more "natively" 14:50:53 Sgeo_: also, half the stuff you write is probably valid Perl by chance, assuming appropriate imports 14:51:05 prolly linux, debian or something so i don't have to get packages myself 14:51:06 lol 14:51:20 all of the stuff 14:51:26 if preceded by a single use statement 14:51:40 ehird: I'm assuming no source filters, they make it too easy 14:51:46 Ok, this is the second time in two days I've experienced deja vu 14:51:50 then you're wrong 14:51:59 I get deja vu all the time 14:52:11 Sgeo_: it's a sign of alzheimer's 14:52:12 ehird: was that "then you're wrong" directed at me? 14:52:16 ais523: yes :P 14:52:27 In fact, often I'm sure that I've had the same deja vu more than once before. 14:52:34 you can make anything a valid Perl program with "use ACME::JAPH;" at the top 14:52:35 I think this is because the deja vu implants such fake memories in my brain. 14:52:42 rather than me actually having recurring deja vu 14:52:45 but I wasn't counting that 14:52:51 Same when I think I've had a dream before 14:52:55 (or had a prequel to a dream I just had before) 14:52:59 This time, the statement about deja vu wasn't part of the deja vu 14:53:05 Often, it is 14:53:43 ehird: my dreams seem to be more consistent with each other than they are with real life 14:55:18 my dreams are great. 14:55:33 they're like really well made movies 14:55:57 ehird 14:55:58 opinion? 14:56:03 i was sad waking up from a dream recently even though I was tense as hell in it because the story was so good :) 14:56:34 Admittedly at the time I was some of yours ages I did not have aaccess to the technology you have. My parents have never been great upgrades of computing hardware. 14:56:34 also, anyone have a CS4 serial number? :| 14:56:47 http://torrent-site.getityourself/ 14:57:10 SimonRC: as i said. time machine 14:57:31 in a different way 14:58:02 wat 14:58:13 ehird :P 14:59:21 AnMaster thinks emacs is easier to use than kate or joe or nano? <-- "isn't too far off". kate and nano I would place above emacs at least in ease of use. Maybe joe too. 14:59:30 bbl again 14:59:35 isn't too far off, that was like a half of your list 15:01:46 Time for movie watching 15:02:26 ehird, whats your opinion on groups? 15:02:46 /shrugggggggggggg 15:02:57 many are dead, but some are still vibrant communities 15:03:01 well you seemed pretty opinionated the other day :| 15:03:15 -!- pikhq_ has changed nick to pikhq. 15:03:21 did I successfully pick the wrong meaning of "groups"? 15:03:39 yes 15:03:46 AnMaster: Depends on your notions of "usability". 15:04:00 Usable by an expert on the program, or usable by someone who knows nothing about it? 15:04:06 It makes a difference. 15:04:14 -!- Sgeo_ has quit ("Leaving"). 15:04:20 he said "easy to use" 15:04:27 which is definitely the latter 15:04:47 Oh, okay then. 15:05:03 Yeah, nano, kate, and joe are all much easier to use. 15:05:06 there's a group theory course in both the psychology and the math dep 15:05:20 Since they don't assume you're putting in time to learn them. 15:05:32 pikhq, true 15:06:26 anyone know if there's a website that lets you set up like a little poll thing without bullshit or ads or whatever, i wanna make one for alter/amend :P 15:06:32 oh forgot one that ranks above vi: ed 15:06:32 ;P 15:07:01 vi > ed in terms of ease of use, almost certainly 15:07:08 because you can use it much like ed, just ignoring the visual stuff 15:07:33 Or you can use it visually, which is at least not a complete mindfuck for a new user. 15:07:59 ais523, ed has much less clutter in the user interface to distract new users. 15:08:29 ehird: ah, I have seen a polling website like that somewhere... 15:08:34 I think I found a nice one 15:09:53 hmm 15:10:02 I wonder if lowercase vs title case would sway people's opinions 15:10:10 alter 15:10:10 amend 15:10:10 --- 15:10:11 Alter 15:10:11 Amend 15:10:20 most_pleasing(X) == most_pleasing(Y)? 15:11:20 well the one I had seen is SurveyMonkey 15:11:43 and what are these words for? 15:13:31 The name of my editor. 15:14:31 http://www.doodle.com/rhriqxe2rb226it2 15:14:42 ehird, I prefer alter to Alter. But both are better than amend/Amend 15:14:44 oklofok: ais523: pikhq: you are contractually obligated to vote 15:14:50 AnMaster: you too 15:15:16 ehird, at least it should be "alter" that you type in the terminal in any case. 15:15:23 ehird: I disagree with your contractual obligations 15:15:35 there are several reasons I don't have a binding contract on me to do that 15:15:40 ais523: is it because you refuse to use web browsers or something 15:15:42 and if I have a voidable contract on me to do that, I hereby void it 15:15:45 and what ais523 said. 15:15:46 or are you just nitpicking and will vote anyway :) 15:15:47 ehird: no, legal reasons 15:15:50 how about a word that isn't already used for something? 15:15:59 SimonRC: I'll add an other option 15:16:33 ehird, unable to vote. Page requires javascript 15:16:37 http://www.doodle.com/rhriqxe2rb226it2 15:17:04 hmm, I dunno which is easier to type 15:17:23 both are pretty easy 15:18:17 both are left-hand-heavy on QWERTY, but really, neither are problematic 15:18:25 I avoided theone with COBOL connotations 15:18:46 ehird, at least it doesn't seems to have registered my vote. Page didn't reload or anything 15:19:05 ehird, however, put me down for "alter" in lower case 15:19:12 why is upgrading xterm reducing its size by 205kB? 15:19:15 I made a poll so I didn't have to tally the votes myself. 15:19:20 Just enable JS for three seconds... 15:19:21 that is somewhat add 15:19:23 *odd 15:19:45 COBOL connotations, what a problem :P 15:19:51 wouldn't that be ALTER 15:19:59 ehird, I'm not running X atm 15:20:06 cobol isn't case-sensitive IIRC 15:20:24 well use a text-mode browser that does javascript? 15:20:37 ehird: OK, I voted 15:20:39 in w3m 15:20:42 SimonRC: AnMaster is just a malcontent, he'll come up with objection after objection most likely 15:20:48 hm okay w3m might do it 15:20:49 AnMaster: there's a link to a JS-free version, I used that 15:20:53 * shrug 15:20:59 there is? 15:21:14 ehird: it's probably removed if you have JS available 15:21:22 by the KS itself 15:21:24 *JS 15:21:30 thought so 15:21:39 also voted with w3m 15:21:43 not sure it worked 15:21:50 anyway it beats all the other poll sites which are straight out of the 90s and filled with ads 15:22:06 or would you have _preferred_ I used Angelfire Polls or something :-P 15:22:23 AnMaster: it did not. 15:22:25 click the non-js link. 15:22:46 ehird, I did click the non-js one 15:22:58 did you put a name in? maybe it's requiring that 15:23:29 ehird, I did put a name in 15:23:37 also now some of them are grayed out 15:23:39 how strange 15:24:14 I'm unable to select anything but "other" now 15:24:18 yeah i think you're meant to be able to like... change your vote or something, this thing is really designed for multiple choice polls I think 15:24:18 the other options are grayed out 15:24:21 lemme see if Ii set the settings wrong 15:24:44 Limit number of OKs per participant (row) to 1 15:24:44 Limit number of OKs per option (column) Limit: 1 15:24:59 oh, i see 15:25:13 the latter one means "people can only select every option unless nobody else has" 15:25:15 due to limit: 1 15:25:16 fix'd 15:25:28 you can even change your vote now and shizz if you like that kind of thing 15:25:58 * ehird makes a mental note: make poll site that isn't total bullshit 15:27:03 and stop AnMaster from voting because he'll just reject the thisguyhasalreadyvotedsodon'tlethimvoteagain cookie :P 15:27:32 ehird, I just did rm ~/.w3m/cookie afterwards 15:27:45 this is why we can't have nice things. 15:28:44 ehird, nice what? 15:29:28 just things in general, or some specific things? 15:29:42 mostly those that cost too much 15:30:50 oklofok, according to the old or the new classification system? 15:31:58 bbl 15:32:42 oklofok: you haven't voted :| 15:32:58 wait what vote i haven't been reading 15:33:01 http://www.doodle.com/rhriqxe2rb226it2 15:33:43 WHY NOT TETRIS I LIKE TETRIS 15:33:52 * SimonRC goes for breakfast 15:33:55 * oklofok goes out to have a life 15:34:36 oklofok: VOTE BASTARD 15:34:36 :| 15:34:55 "BASTARD" is not an option in this poll. 15:34:58 * SimonRC goes for breakfast 15:35:24 -!- lieuwe has joined. 15:35:29 oh no, now SimonRC gone for breakfast twice without going back in between 15:35:31 ;P 15:35:41 so he must come back twice afterwards 15:35:47 err 15:35:49 i already voted 15:36:37 no 15:36:38 you didn't 15:36:41 you have to click save 15:36:44 hi, i was thinking about writing an implementation for a high level esolang, but none of the articles on the wiki are descripive enough... 15:36:46 also put in a name if you didn't i guess 15:36:53 lieuwe: define high level :) 15:36:57 most esolangs are low level 15:37:28 ehird: a language which understands the concepts of functions and expressions ;-p 15:37:35 underload! 15:37:37 ais523: plug underload. 15:37:55 well, Underload's rather low-level 15:38:02 it understands the concept of a function. 15:38:06 i.e. it has functions 15:38:16 and it has expressions. which are the functions. 15:38:18 but Underload (and more so Underlambda) treat everything as functions from stacks of functions to stacks of functions 15:38:18 Esolangs tend to be rather low-level 15:38:35 ais523: *functions from stacks of functions from stacks of ... 15:38:45 yes, it's infinitely recursive 15:38:53 you define "function" = "function from stack of functions to stack of functions" 15:39:05 and the recursion bottoms out eventually because some of the stacks are going to be empty 15:39:14 type UL = Stack UL -> Stack UL 15:39:18 IF ONLY THAT TYPED 15:39:23 (it does with newtype around it) 15:40:16 hmm, I'm vaguely interested to see an Underload implementation in pure Haskell now 15:40:22 ehird: not quite what i need :-p might be time to create my own esolang... 15:40:25 way ahead of you, writing it now 15:40:36 although, it could be a little tricky because Underload is strict and Haskell is lazy 15:40:38 lieuwe: sure, we welcome every esolang 15:40:40 unless it's crap 15:40:47 -!- pikhq has quit (Read error: 54 (Connection reset by peer)). 15:40:51 so statistically we have ~0.1% probability of welcoming an esolang 15:40:58 heh 15:40:58 ehird: :-P 15:41:08 statistically, though, the vast majority of bad esolangs are trivial BF variants 15:41:19 ais523: sad, but true 15:41:23 ais523: i'm gonna implement underload without S first, because S just makes things uglier 15:41:32 agreed 15:41:36 -!- pikhq has joined. 15:41:43 you could implement Underlambda, S means something different there 15:41:53 lolo 15:41:54 *lol 15:42:03 i clicked save 15:42:04 oh name 15:42:06 pikhq: http://www.doodle.com/rhriqxe2rb226it2 :| 15:42:07 it means "output this function", but doesn't specify the format (the only restriction is that you have to be able to read the function back in again later) 15:42:40 ehird: i was thinking about something with too much brackets(even worse than lisp one-liners...) 15:43:06 lieuwe: just do "pure" (original mccarthy) lisp with s-expressions and no (quote x) shorthand as 'x 15:43:10 :P 15:43:15 wee 15:43:17 ais523: hmm... I've just realised that maybe implementing it in a Windows VM with WinHugs and an XEmacs without a Haskell mode is not the best idea 15:43:22 oh well! 15:43:24 Underload does have quite a lot of parens too 15:43:25 i have a primitive javascript prolog interpreter 15:43:26 :D 15:43:37 * ehird secretly opens Emacs in OS X instead 15:43:39 ehird: get haskell-mode, then 15:43:48 way too much work when I could just open the host emacs 15:44:01 and get inferior haskell mode for free 15:44:17 although winhugs is surprisingly nice 15:45:04 beh, that's the #2 problem with Windows: it's such a pain to install anything 15:45:09 it has a haskell module manager thingy, lets you browser typeclasses, their superclasses, members and instances, lets you browse defined names (functions or values) and their types, and search them... 15:45:21 it's taken around 2 months so far to install the Xilinx development environment on this Windows computer, for instance 15:45:32 ...and types plus their constructors and typeclass instances 15:45:36 ais523: oh, it's not hard 15:45:42 ehird: nah, not nearly good enough, i was thingking about using every possible type off bracket for different things ()<>{}[]\/ etc. 15:45:49 installing xemacs was just clicking next a bunch of times; haskell-mode would just be putting stuff in C:\home\.xemacs 15:45:51 lieuwe: heh go ahead 15:46:06 lieuwe: most of us find that syntax is the least interesting avenue for esolangs, but there are some it works for 15:46:07 e.g. smith 15:46:38 hmm, smith is more concept than syntax 15:46:46 ehird: hmm, ah, well, i'll just mess about with this for a while... 15:46:50 INTERCAL plays with syntax quite a bit, although that's the least interesting part of the language 15:46:55 it's a good start though 15:47:08 making a non-syntax esolang is _hard_ 15:47:32 and I think Forte's aided by its syntax, although again the syntax isn't the point there 15:48:49 ais523: lol, I didn't even realise how ugly S would be, I just thought it'd be adding IO or making it ([UL],String) 15:48:57 having to have the string versions of the functions never even crossed my mind 15:49:13 S is truly ugly, that's why Underlambda doesn't have Underload's S 15:50:06 ulChar 'a' = (\(x:xs) -> (\ys -> x:ys):xs) 15:50:38 ais523: and S slowed the development of the efficient underload compiler, due to the interpretation of ^ as "include text" 15:50:40 or "eval" 15:50:48 ehird: yes 15:50:59 although, derlo is pretty fast, despite being an interp 15:51:00 ulChar '^' = (\(x:xs) -> x xs) 15:51:00 pretty 15:51:20 would be fun if you could write that as (:) -> ( ) or something 15:51:39 or maybe (:) -> ($) 15:51:42 to avoid whitespace issues 15:51:56 ;query lambdabot 15:52:12 fail :P 15:52:24 [15:51] @pl (\(x:xs) -> x xs) 15:52:25 ais523: or rather to avoid () being () issues 15:52:25 [15:51] ap head tail 15:52:30 yes 15:52:39 that's a rather pretty version of it 15:52:50 ap is monadic iirc but for functions i believe it's 15:52:56 ap f g x = (f x) (g x) 15:53:00 i.e. branching of a sort 15:53:11 more like the s combinator 15:53:12 ap = apply, maybe 15:53:17 in fact, that's exactly the s combinator, isn't it? 15:53:17 not really 15:53:19 no 15:53:21 ap = S. 15:53:23 oh 15:53:24 hmm 15:53:25 right yes 15:53:26 i'm dumb 15:53:33 ```sxyz = ``xz`yz 15:53:52 Of course, that it *is* the S combinator on the functions is just coincidence. :P 15:54:26 ugh, I can't do: 15:54:30 ulChar '*' = \(x:y:xs) -> (x.y):xs 15:54:36 because x and y are wrapped in a newtype 15:54:42 haskell should allow recursive types :( 15:54:44 who cares about type safety 15:56:43 \(UL x:UL y:xs) -> (x.y) : xs 15:56:51 yes, yes 15:56:55 or newtype UL = UL { app :: [UL] -> [UL] } 15:57:16 -!- soupdragon has joined. 15:57:33 Or use (.) from Control.Category and define an instance Category UL 16:00:08 also, you got it wrong 16:00:19 \(UL x:UL y:xs) -> UL (x.y) : xs 16:00:36 Quite right 16:00:44 I recommend the custom (.) TBH :-P 16:00:59 I wish this were Caleskell and (.) = fmap 16:01:00 whats UL 16:01:03 underload 16:01:07 Hey, maybe I could just define (.) = fmap 16:01:10 You can set (.) = fmap easily 16:01:46 Wonder if Applicative has anything useful or whatever 16:02:06 -!- kar8nga has quit (Remote closed the connection). 16:02:17 Deewiant: Oh, that won't work though 16:02:26 Because the first argument is a function 16:02:28 Control.Category it is 16:02:59 http://www.pasteit4me.com/99004 16:03:03 Deewiant: Caleskell makes (.)=fmap. 16:03:13 he knows 16:03:15 Ooh, id and (.) form a monoid. 16:03:15 Erm. So ehird said. 16:03:41 you are a monoid 16:03:56 wait, I can use newtype deriving can't I 16:04:07 You can use whatever you like; the world is open to you 16:04:14 ^___^ 16:04:26 Cannot derive well-kinded instance of form `Category (UL ...)' 16:04:26 Class `Category' expects an argument of kind `* -> * -> *' 16:04:29 And here we find our problem. 16:04:42 newtype UL = UL ([UL] -> [UL]) deriving (Category) 16:04:52 Oh, true, it wants a different kind 16:05:00 Maybe I'll just define my own (.) typeclass. 16:05:01 Doesn't really matter though 16:05:13 Deewiant: Yes it does, it means I can't do it without an ugly type alias 16:05:36 One ugly type alias versus hundreds of ugly (UL f) -> UL (f x) ! 16:05:43 Fiiiine. 16:05:46 :-P 16:06:00 Ugh, I wish Haskell allowed recursive types. 16:06:03 It is limiting my expression! 16:06:33 Deewiant: Ooh, but I can't do that. 16:06:38 type UL = UL' [UL] [UL] 16:06:45 fgsfds 16:06:58 data UL = UL [UL] [UL] 16:07:01 Haha, good point. 16:07:02 And if I add a new newtype, I need to define Category on it manually. 16:07:07 zero = UL [] [] 16:07:08 ...which I can't do because of kinds. 16:07:38 Deewiant: I'm just going to define a separate operator for UL-(.) 16:07:48 Not your own type class? 16:08:03 If I make it (class Composable a) then I can't do the traditional (.) on functions. 16:08:29 Hmmh, this is a bit annoying. 16:08:48 Haskell's typeclass system is kinda crap. 16:09:08 yes 16:09:13 I wouldn't say that :-P 16:09:15 Sweet, (..) isn't a valid identifier? 16:09:20 Because of ranges. 16:09:28 I should just say fuck it and use OCaml. 16:09:33 It allows recursive types. :P 16:09:57 Have you noticed that all the good operator names are taken 16:10:05 No 16:10:11 have you noticed that import qualified Prelude 16:10:20 soupdragon: i'd rather not 16:10:25 that's insane 16:10:39 Maybe I'll be patriotic and use (£) 16:10:50 ehird: Have you noticed that Japanese punctuation is mostly unused as operators? 16:11:02 pikhq: Ooh, what's that Japanese dot thing? 16:11:11 That they use instead of . because they like big, fat, chunky hollow things. 16:11:17 o 16:11:38 Wonder if (∘) is an identifier 16:11:38 The... Period? :P 16:11:46 pikhq: nooo it's fatter. 16:12:04 Anyway, ASCII only :P 16:12:13 I may just end up calling it o 16:12:14 According to Unicode, (。) is a "ideographic full stop". 16:12:57 It's a full stop. 16:13:16 Or, if you prefer, a kuten. 16:14:09 ais523: are there "invalid" UL programs, do you think? 16:14:14 or is (/) matching not strictly required 16:14:22 the matching is required 16:14:26 i.e. ) without ( is like any other unhandled character, an error 16:14:32 but only when run 16:14:36 it's a compile-time error 16:14:40 alright 16:14:45 although you can handle it at runtime instead if you prefer 16:14:49 kay 16:14:55 ehird: You could also use Japanese quote marks. 16:15:01 「 」 『 』 16:15:04 :) 16:15:05 ais523: but something like "x" is a runtime error, right? 16:15:10 yes, in Underload 16:15:27 Irritating Haskell semantics: 16:15:27 in Underlambda, it's compile-time unless you defined it in advance, or it's inside a string literal 16:15:29 I love those 16:15:29 「 」 『 』 16:15:37 (error "foo") is not the same as (\() -> error "foo") 16:15:44 Fucking impurity 16:15:50 -!- Pthing has joined. 16:15:58 is error monadic? 16:16:01 no 16:16:03 error :: String -> a 16:16:06 ouch 16:16:14 it's what e.g. (1 `div` 0) gives 16:16:22 even Perl6 does better 16:16:24 it has lazy errors 16:16:57 "You did not provide any name." voted for alter 16:17:00 who's that; pikhq? 16:17:10 Not I. 16:17:42 ehird: can you work it out by elimination? 16:17:47 * ais523 wonders if it's AnMaster voting twice 16:18:01 ehird: Well, of course error "foo" != \()->error "foo". 16:18:05 AnMaster is a malcontent, he tries very hard to stray from outright malicious 16:18:09 so I doubt it 16:18:14 that's me I voted 16:18:14 although it is the same vote 16:18:16 That's _|_ != \()->_|_ right there. 16:18:30 pikhq: yes, and _|_ is shit :( 16:18:41 ehird: So, you want a total language. 16:18:49 no, because totality implies sub turing completeness :P 16:18:51 total awesome language 16:18:56 ehird no it doesn't 16:18:57 maybe have partiality be a monad 16:19:03 And totality implies no _|_. 16:19:06 soupdragon: total language + partiality monad != total 16:19:11 And no _|_ implies totality. 16:19:16 == non-total but with the total bits marked 16:19:19 kinda like haskell+io tbh 16:19:42 ehird: you can model lambda calculus, turing machines with semantics, mu-operators 16:19:42 what's the partiality monad again, data Partial a = Now a | Later (Partial a)? 16:19:56 soupdragon: well the "total fp" paper says it is sub-tc 16:20:00 * ais523 wonders if it's AnMaster voting twice <-- no, why? 16:20:03 codata Computation a = Now a | Delay (Computation a) 16:20:19 AnMaster: well, it had to be someone 16:20:24 soupdragon: s/codata/data/ if you want to model it in haskell right 16:20:31 screw haskell 16:20:35 ais523, someone voted twice? 16:20:37 that is not an answer 16:20:44 AnMaster: because you said you removed the cookie 16:22:23 ehird, well yes, I always do. 16:23:00 but I wouldn't vote twice, that is against my morals 16:23:52 ais523: hmm... a UL program ins1ins2 is identical to (ins1)(ins2)* 16:24:08 not quite 16:24:10 so I think I'll structure my parser as String -> [UL] and then fold compose them 16:24:18 (ins1ins2) = (ins1)(ins2)* 16:24:23 ins1ins2 = (ins1)(ins2)*^ 16:24:24 ais523: hmm... a UL program ins1ins2 is identical to (ins1)(ins2)*^ 16:24:27 whatever 16:24:28 you get the idea :P 16:24:29 yep 16:26:18 ugh, lambdabot can't pattern match on tuples? 16:26:33 `@pl let (x,xs') = f xs in x : f xs'` fails 16:26:38 pl can't 16:27:13 well right 16:27:16 Use fst/snd 16:27:42 [16:27] ehird: @pl let blah = f xs in fst blah : f (snd blah) 16:27:43 [16:27] lambdabot: fst (f xs) : f (snd (f xs)) 16:27:48 Thanks, lambdabot. 16:27:49 :-) 16:28:08 [16:27] ehird: @pl \blah -> fst blah : f (snd blah) 16:28:09 [16:27] lambdabot: liftM2 (:) fst (f . snd) 16:28:11 Now we're getting somewhere 16:28:17 liftM2 has a more general name right 16:28:17 I guess what you want is liftM2... yeah, that. 16:28:58 ulSplit' ('(':xs) = let (x,xs') = ulSplit' xs in x : ulSplit' xs' 16:28:58 ulSplit' ('(':xs) = liftM2 (:) fst (ulSplit' . snd) $ ulSplit' xs 16:29:04 The latter is, shall we say, uncompelling 16:29:40 ais523: hmm... would you accept an implementation that, if you give it an unmatched ), discards it and the rest of the program, as conforming? 16:30:00 yes, because an unmatched ) is undefined behaviour 16:30:06 although I think an error message would be more useful 16:30:48 ais523: yes, but I'm going for implementation simplicity and purity here 16:32:33 ais523, aren't you supposed to be able to escape those (but no one implements that). or something like that 16:32:40 No. 16:32:54 Other characters are reserved, but nobody implements the reservation. 16:33:00 They cannot be used in a valid Underload program. 16:33:00 yes, in theory you can use " as an escape character in Underload, but that's sufficiently unimplemented that it doesn't count as part of the lange 16:33:01 ah that was it 16:33:05 *lang 16:33:08 ais523: not in theory, it's not part of the spec 16:33:09 ais523, right 16:33:21 ehird: yes, but nobody obeys the spec 16:33:24 not even me 16:33:26 w00t, tokenizer done, man, that was easy :-p 16:33:29 I kind-of like it that way, though, it's very eso 16:34:49 what I mean is 16:34:55 in theory no you cannot use " as an escape char 16:34:59 it isn't in the specc 16:35:01 it's just reserved 16:35:02 *spec 16:35:18 I thought the spec said you could use " as an escape char 16:35:27 but given that it's on a wiki, maybe someone edited it to match reality 16:35:54 http://esolangs.org/files/underload/underload.html 16:35:56 you can escape []<> 16:35:58 but not () 16:36:01 god only knows why 16:36:53 ooh 16:37:00 ais523: my implementation will support infinite-length programs 16:37:08 Deewiant: which is the one that works with infinite lists, foldl or foldr 16:37:10 foldr right? 16:37:44 ehird: I know why too, it's an implementation details of my first underload interp that somehow made it into the spec 16:37:49 Yes, foldr 16:37:56 you can escape []<> <-- but do those even mean anything in the language? 16:37:56 ais523: slight issue with my impl, there's no way to inspect the output 16:38:00 AnMaster: no 16:38:05 ehird, :D 16:38:06 AnMaster: they are reserved, you cannot use them without escaping 16:38:09 just you aren't allowed to use them 16:38:16 ais523: you'd better have a test suite whose output only depends on the length of the resulting stack 16:38:18 ais523, can you escape a literal " though 16:38:20 otherwise i can't test this thing :) 16:38:23 AnMaster: no 16:38:27 ehird, how fun 16:39:46 ehird, why can't you allow output? 16:40:16 because I'm representing underload functions as haskell functions 16:40:43 A UL program is a function from a list of UL programs to a list of UL programs. 16:41:37 *Main> length $ ulRun "(:)(:)*^" 16:41:37 *** Exception: /Users/ehird/Code/scraps/2010-01/underload.hs:(18,8)-(25,31): Non-exhaustive patterns in function ulSplit' 16:41:37 That may look like an error message... but it's actually a bug in my parser. 16:41:38 ehird, why not make it a function to a tuple of output and ul pgoram 16:41:53 AnMaster: that isn't sufficient 16:41:55 program* 16:41:58 I'd need a function (function → string) 16:42:10 and that string must be the original UL source code 16:42:16 hm okay 16:42:19 I'd have to pass around the string anywhere, which removes all the purity 16:42:24 hah 16:43:20 soupdragon: so the partiality monad, can it be used just like the identity monad in haskell 16:43:31 val <- partialFunc x 16:43:35 ... 16:43:38 return (someComputation val) 16:45:01 *Main> length $ ulRun "(:)(:)*^" 16:45:02 *** Exception: /Users/ehird/Code/scraps/2010-01/underload.hs:13:25-45: Non-exhaustive patterns in lambda 16:45:04 ais523: it's alive!!! 16:45:12 gimme some test program and the length of the tape it should result in :P 16:45:37 *Main> length $ ulRun "(poop)(:)(:)*^" 16:45:38 *** Exception: Invalid instruction: p 16:45:38 wait, what 16:45:59 *Main> length $ ulRun "(poop):" 16:45:59 *** Exception: Invalid instruction: p 16:46:04 okay some quoting issues here. 16:46:20 oh 16:46:25 would help if i actually put the quoting stuff in 16:46:27 :))))))) 16:47:17 -!- Asztal has joined. 16:47:49 ehird that's correct but it has super powers too 16:48:20 ehird here is an example http://moonpatio.com:8080/fastcgi/hpaste.fcgi/view?id=562 16:48:55 and (Now True) y = y 16:48:55 and (Now False) _ = Now False 16:48:55 and x (Now True) = x 16:48:55 and _ (Now False) = Now False 16:48:56 and (Delay x) (Delay y) = Delay (and x y) 16:48:56 there should be like a wrapper function 16:49:11 toPartial1 :: (a -> b) -> Partial a -> Partial b 16:49:39 soupdragon: okay so what's interesting about that snippet 16:49:46 bear in mind i'm in retard mode (my only mode) 16:50:16 ehird it uses lazy-lazy evaluation, if you write this in direct haskell style it would diverge on many more cases 16:50:34 so what it shows is that the partiality monad can give you even more lazyness than lazy evaluation 16:51:05 hmm it'd be cool if sequencing was an evaluation 16:51:07 that is >> = seq 16:51:10 *was a monad 16:51:22 >>= = $! or w/e it's called 16:52:37 ais523: taking a break from underload to write that i'm afraid 16:52:46 I don't mind 16:53:20 hey even optional sequencing 16:53:28 data Sequence a = Strict a | Lazy a 16:54:08 hmm 16:54:12 so should return be strict or lazy, I wonder 16:54:13 I think lazy 16:54:33 because you might use it at the end of your mega sequence function or w/e 16:55:44 hmm 16:55:46 instance Functor Sequence where 16:55:46 fmap f (Strict a) = strictorlazy (f $! a) 16:55:46 fmap f (Lazy a) = lazy (f a) 16:55:53 interesting 16:55:54 soupdragon: any ohpinyuns on strictorlazy there? 16:55:57 i think strict 16:56:02 strictness should propagate 16:56:06 but then, if you do 16:56:10 do foo <- astrict; return foo 16:56:11 im not sure if it works 16:56:13 that turns it into a lazy 16:56:15 since return = lazy 16:56:23 so maybe strictness should fade quickly 16:56:32 no, wait 16:56:34 it should definitely be strict 16:56:43 otherwise your "strict" application isn't, which is ridiculous 16:57:02 got functor, monad, let's give it an applicative instance 16:57:24 ooh 16:57:25 (<*>) :: f (a -> b) -> f a -> f b 16:57:38 maybe the strict or laziness of the function should determine the strictness or laziness of the result 16:57:39 yeah! i like that 16:57:44 unless it doesn't make sense 16:57:49 no wait, it does 16:57:52 lazy = avoid evaluating this 16:57:55 so avoid evaluating any applications of this 16:58:55 although shouldn't (Strict f <*> Lazy x) be Lazy (f $! x) 16:59:03 soupdragon: opinyons? Applicative sure is tricky :P 16:59:50 well im not sure this even works 16:59:56 it's not completely clear what 'strict' means 17:00:02 yeah 17:00:04 and I assume lazy is just the identity 17:00:05 ok let's define 17:00:17 yeah the lazy portion of the monad is identity monad 17:00:21 *is the identity monad 17:00:23 you might elaborate a bit by defining this in ocaml (or similar, strict language) simultaneously 17:00:31 strict = evaluate this before doing anything else 17:00:44 lazy = use haskell semantics 17:00:44 and see what sort of intesection you get 17:00:51 soupdragon: i'll try that after doing it in haskell since i know haskell better 17:01:06 ofc "evaluate this before doing anything else" doesn't help if the thing is a function and you're applying it 17:01:07 aha 17:01:07 yes it does 17:01:10 if you make the result lazy 17:01:17 then you can ignore the result of the application and do-anything-else 17:01:21 without having the function evaluated 17:01:54 ehird: Y'want an applicative instance and have a monad instance? pure=return;(<*>)=ap 17:02:04 pikhq: shaddap 17:02:08 :P 17:02:15 Monad should be Applicative f => Monad f, clearly 17:02:29 hmm 17:02:43 And Applicative should be Functor f => Applicative f. 17:02:44 Lazy f <*> Strict x = lazy (f $! x) 17:02:44 or 17:02:44 Lazy f <*> Strict x = strict (f $! x) 17:02:50 pikhq: it is 17:02:55 ehird I just mean any strict language like ML or scheme or whatever 17:03:00 Oh, right. 17:03:02 soupdragon: yeah i know 17:03:05 ok 17:03:09 Applicative makes sense, just not monad. 17:03:17 * ehird makes it lazy (f $! x) because he already has a definition resulting in strict (f $! x) 17:03:19 can always change it 17:03:33 although that violates "evaluate this before anything else" 17:03:33 hmm 17:03:37 maybe i should change the definition 17:03:52 Strict: If you ever use this, evaluate it before doing so. 17:04:12 The Functor instance should satisfy 17:04:12 fmap f x = pure f <*> x 17:04:17 so pure = lazy 17:04:25 so Lazy f <*> x 17:06:48 is (<*) x `seq` y `seq` x or y `seq` x 17:06:53 i guess the former 17:07:16 eh 17:07:20 * ehird omits *> and <* 17:07:24 let the compiler infer them 17:08:38 *Main> runSequence (do x <- strict [1..]; return 3) 17:08:39 3 17:08:41 Well, that's certainly wrong. 17:09:09 *Main> (const 3) $! [1..] 17:09:10 3 17:09:11 ?! 17:09:47 oh ofc 17:09:53 i mean deepSeq 17:10:04 soupdragon: do you think it's more useful with deepseq or as is 17:10:13 i think it should be deepseq personally 17:10:55 deepseq ;p 17:11:17 what does that mean :P 17:12:50 soupdragon: so I'd like to officially call SequenceT (Partial a) the Haskell monad :P 17:13:00 I can't stop you 17:13:04 or can you 17:13:05 f $!!!!!!!!! x = rnf x `seq` f x 17:13:16 I like that 17:13:22 how does rnf differ from deepseq 17:14:00 What is deepseq 17:15:49 typeclass 17:15:51 deeply evaluates 17:15:55 like for [...] it's map seq 17:15:57 well 17:15:58 fold seq 17:15:58 Where is it 17:16:07 http://209.85.229.132/search?q=cache:RV_IB04cfYoJ:hackage.haskell.org/packages/archive/hxt/7.4/doc/html/Control-Strategies-DeepSeq.html+deepseq&cd=1&hl=en&ct=clnk&client=safari has it, it's also in Pugs 17:16:11 where's rnf 17:16:22 * pikhq has been reading up on the Cont monad... 17:16:23 Control.Parallel.Strategies in parallel 17:16:27 ah, x `deepSeq` y == rnf x `seq` y 17:16:34 Unsurprising :-P 17:16:38 Hmm. Makes continuations seem clever, rather than obscure magic. 17:17:01 ugh 17:17:09 that restricts my monad to Control.Parallel.Strategies.NFData 17:17:18 i wish there was like haskell but strict so i could implement this :) 17:18:20 Throw a bunch of #s everywhere? :P 17:18:34 Oh, and ! and seq. 17:18:54 ... And wonder why people reading your code hate you so damned much. 17:20:18 pikhq: not sufficient, I need deepSeq 17:20:22 without a typeclass 17:24:26 there is a language around somewhere that aims to be a strict Haskell 17:25:02 HAQUELLE 17:26:45 i have an ocaml compiler 17:26:46 ocaml it is 17:27:15 dammit, no ocaml-mode 17:27:16 oh well 17:28:02 let's see how much ocaml i remember 17:32:55 I can't find it though 17:35:15 -!- Sgeo has joined. 17:35:30 ais523: you know ocaml right 17:36:57 http://www.reddit.com/r/AskReddit/comments/anexq/hey_reddit_what_awesome_graffiti_have_you_found/c0igyyg 17:39:15 SimonRC: is it http://www.haskell.org/haskellwiki/DDC ? 17:39:39 ehird: vaguely, although I haven't written it for a while 17:40:06 type 'a sequence = Strict of 'a | Lazy of (() -> 'a) 17:40:07 why is this a syntax error? 17:40:12 in the Lazy of part 17:42:46 ehird: I take it that's fictional 17:43:06 ais523: perhaps reading the epilogue and the alternate ending will remove any doubts you have 17:43:14 Yes indeed: this person is quantum! 17:43:17 ehird: yes 17:43:19 He experiences every branch of the many worlds. 17:45:44 so, in other words, it was all, in fact, offtopic 17:46:31 are you actually complaining about someone posting a really good piece of fiction :) the only point of threads like that is for entertainment, truth is more or less irrelevant especially if it's that well-written 17:46:52 flossdaily is well-known for spinning yarns anyway so it doesn't really "fool" anyone 17:47:08 Flossdaily, you successfully managed to completely derail the entire point of this thread. I applaud you for that. 17:47:11 I'm not actually complaining 17:47:16 I'm just amused 17:47:25 MysteryStain's comment sums up my attitude 17:47:48 then the answer is yes :P 17:48:15 heh, are we asking and answering questions recursively? 17:48:29 two simultaneous conversations with someone is one thing, but this... 17:48:59 i can barely talk to normal people because I can't argue recursively with them :( 17:49:25 maybe i should start calling them "linears" :D 17:49:35 i can barely talk to normal people because I can't argue recursively with them :( 17:49:37 that needs sigging 17:49:42 (and I agree with the sentiment) 17:49:56 i'm not even joking, I think about everything with nesting 17:50:03 I don't even know how to argue linearly 17:50:07 I know you aren't joking 17:50:19 i know you know i aren't joking. 17:50:25 sometimes I end up in queue-arguments rather than stack-arguments 17:50:33 which are equally confusing for someone not used to that sort of thing 17:50:44 normally caused by answering logs rather than conversing in realtime 17:52:03 * ais523 waits for AnMaster to come in with a nonsequitur 17:53:03 recently i was arguing with someone and they said "~p => q, bad(q), therefore good(p)" and I said "even assuming bad(q), ~prevents(q,p) => unconnected(p,q), ~prevents(q,p), therefore your argument is invalid" 17:53:06 they didn't get it 17:53:32 we were talking about that in #agda the other 17:53:32 day 17:53:41 and when I say talking.. I mean trying really hard to make puns about it 17:54:03 talking about what 17:54:08 people sucking at recursion? 17:54:10 that logical fallacy 17:54:39 well, "~p => q, bad(q), therefore good(p)" is valid, but it can be rebutted with ~(~p => q) 17:54:49 (assuming p has no other consequences) 17:54:56 hmm 17:55:01 if recursion is self-calling, clearly cursion is calling 17:55:07 people suck at cursion. 17:55:39 -!- kar8nga has joined. 17:56:03 anyone know why i can't do 17:56:04 type 'a sequence = Strict of 'a | Lazy of (() -> 'a) 17:56:04 in ocaml? 17:58:36 what error are you getting? 17:59:00 File "sequence.ml", line 1, characters 44-45: 17:59:00 Error: Syntax error 17:59:12 error is at Lazy of |(|... 17:59:25 try an extra pair of parens around everything past the = 17:59:29 Asztal: yeah, DDC 17:59:35 O'Caml is rather finicky about precedence, I normally end up putting parens everywhere 17:59:53 that won't work, it's a type declaration, no? 18:00:06 yep, that breaks it even moreer 18:00:07 *more 18:00:28 more parens!! 18:00:35 what about fewer parens, then? 18:00:41 just Lazy of () -> 'a 18:00:46 ehird http://caml.inria.fr/pub/docs/manual-ocaml/libref/Lazy.html 18:00:50 ais523: same error 18:01:01 soupdragon: that's not what he's trying to do 18:01:08 in my search for that language, I found this: http://lambda-the-ultimate.org/node/1546 <-- oh dear 18:01:09 ? 18:01:09 soupdragon: that isn't the same as () -> 'a afaik 18:01:16 it's better! 18:01:27 ehird: almost done with the basics off my lang :-) 18:01:31 "Why do languages even touch execution which is a technique used to get around current hardware limitations? What will happen when processors can execute seemingly infinite instructions at the exact same time?" 18:01:33 crackpot detected 18:01:42 soupdragon: but it's not what i'm trying to model. 18:01:54 I don't know what you mean 18:02:02 I'm just saying, read this 18:02:09 Why? I do not want to use it. 18:02:23 oh well 18:02:27 Even if I do, that does not help my syntax problem. 18:04:09 maybe i need to give () -> 'a a name 18:05:10 ehird: here's an example from the O'Caml book I have: "type 'a listf = | Val of 'a | Fun of ('a -> 'a) * 'a listf" 18:05:13 the leading | is redundant 18:05:28 what's that weird * 'a listf' 18:05:49 ehird: it means that a Fun is a tuple 18:05:54 right 18:05:55 of a funtion from 'a to 'a, and an 'a listf 18:05:56 oh right 18:05:57 'a listf 18:05:58 *function 18:06:08 OH 18:06:10 (() 18:06:11 (unit 18:06:14 I am so fucking dumb 18:06:20 http://caml.inria.fr/pub/docs/manual-ocaml/libref/Lazy.html 18:07:14 yeah i just relooked at that and it is what i want 18:07:21 how do you use a module without opening it in ocaml i forget 18:07:34 oh just use it 18:07:37 http://caml.inria.fr/pub/docs/manual-ocaml/manual004.html :P 18:07:56 I can never remember any of the module stuff 18:07:59 ehh, I wish I could use the lazy keyword directly 18:08:05 instead of Lazy (lazy poop) 18:09:20 ouch windows 7 18:09:31 why does this thing insist on grouping, say, two folder windows? 18:09:38 it makes it almost impossible to switch between them quickly with the mouse 18:11:57 even worse, it starts fading windows in and out while you're trying to choose which to select 18:12:08 which is fine if you're going slowly, but massively annoying if you already know which you want 18:16:48 im actually still realizing just how brilliant that Metamorphosis of Prime Intellect is 18:17:04 soupdragon: huh? 18:17:15 hi SimonRC 18:17:17 MPI? 18:17:28 you don't know it? 18:17:32 soupdragon: once again I must speak several times before you notice me :-) 18:17:41 I meant, what is MPI? 18:17:44 soupdragon: is your nick a Clangers reference? 18:17:50 ais523 yes! 18:19:25 SimonRC: The Metamorphosis of Prime Intellect is a novel. 18:19:33 http://www.kuro5hin.org/prime-intellect/ 18:19:43 ("This online novel contains strong language and extreme depictions of acts of sex and violence. Readers who are sensitive to such things should exercise discretion.", etc.) 18:19:49 Speaking of which I really must get around to reading it sometime. 18:20:26 I think that I must have read it a long time ago 18:20:39 but probably not all the way through 18:20:40 im not sure 18:20:59 ais523: Windows 7 is application based 18:21:04 it's not "grouping two folders" 18:21:08 the task bar is filled with application icons 18:21:12 ehird: I know how it works 18:21:20 that doesn't prevent it being inconvenient, though 18:21:29 click Explorer. click the relevant window 18:21:31 that was hard 18:21:35 yes, but it's two clicks 18:21:39 * Sgeo likes how the things in the task bar can have status bars 18:21:43 and the thing you have to click on doesn't appear until after the first one 18:21:49 which makes it impossible to plan where you're going before you do 18:21:50 I was Remote Assisting a friend who has Win7 18:21:55 it's not hard, but it /is/ slow 18:22:06 Sgeo: yes, browsers use that to show progress of a download, it's nice 18:22:23 ais523: WFM. also, with browsers it shows all tabs, not windows 18:22:24 which is nice 18:22:33 soupdragon: I can't use http://caml.inria.fr/pub/docs/manual-ocaml/libref/Lazy.html, it doesn't let a lazy computation depend on itself 18:22:41 "Raise Undefined if the forcing of x tries to force x itself recursively." 18:22:48 ehird: not with Firefox, at least 18:22:50 ...All tabs? That would be pain for me 18:22:50 hmm 18:22:58 hmmm 18:22:59 ais523: IE does it, I think Chrome too 18:23:04 Firefox sucks at platform-nativity 18:23:06 * Sgeo often has a LOT of tabs in one window 18:23:09 use Chrome, it's the best windows browser 18:23:17 didn't Okasaki use lazyness like this to do infinite streams 18:23:19 ehird: can't install software here 18:23:19 I don't understand 18:23:26 maybe I am just imagining that 18:23:31 ais523: tell them to install chrome, then :P 18:23:39 Chrome++ 18:23:39 soupdragon: it's generalised laziness 18:23:40 well 18:23:41 why? IE and Firefox are both good enough 18:23:44 it's generalised lazy/strictness 18:24:04 ais523: IE 8 is alright 18:24:11 but firefox makes you select a window, *then* a tab 18:24:13 which is, indeed, inefficient 18:24:16 but not Windows' fault 18:24:27 ehird: but you're doing that anyway 18:24:31 soupdragon: it's just the evaluation order monad :-) 18:24:33 ais523: no you're not 18:24:36 you're selecting the firefox icon on the task bar, then the individual firefox tab 18:24:36 you click IE, then the tab 18:24:40 vs 18:24:46 you click Firefox, then the window, then the tab 18:24:52 okay 18:24:54 except I only use one Firefox window at a time 18:25:03 ais523: well, don't. 18:25:14 :p 18:25:20 the only reason to open multiple windows of the same browser, apart from showing two things side-by-side or ontop of each other which is rare, is to organise tabs 18:25:35 and if Win7 is just going to lump all the tabs together anyway, why the hell are you opening multiple browser windows? 18:26:06 in other words, Firefox is giving you the choice here, IE is forcing you to effectively use just a single window 18:26:19 how do you define an infix op in ocaml? 18:26:34 not sure, never tried 18:26:49 -!- jpc has joined. 18:27:29 ( op ) 18:27:33 Ctrl-Click the taskbar icon to cycle through windows in that group. 18:28:08 Asztal: that's suboptimal because it's worse than alt-tab in nearly every respect 18:28:16 control-clicking implies I'm using the keyboard 18:28:27 in which case I wouldn't want to use the mouse, because using the keyboard /and/ the mouse is incredibly slowing 18:28:29 Asztal: don't bother, ais523 has been anti-win7 every time he's mentioned it, even though the task bar is superior to the os x dock 18:28:40 ais523: no it's not 18:28:42 ehird: I mostly like it, just the taskbar gets in my way a lot 18:28:44 always keep one hand on the keyboard, duh 18:28:55 ehird: I have both hands on my laptop keyboard atm 18:29:04 moving both hands over to the desktop is substantially slower than moving just one 18:29:09 wow 18:29:13 and that just one I want to put on the mouse, because I'm using it for web browsing 18:29:17 you're criticising a UI because you use a laptop as well as a desktop 18:29:25 and it doesn't account for the movement time 18:29:25 yes, I am 18:29:31 talk about looking for a complaint 18:29:52 ehird: a UI that assumes I'm focusing all my attention on that UI is suboptimal design 18:30:09 quite often I want to use one or both of my hands for something else, e.g. typing on another computer 18:31:32 besides, the UI is slower even when you are focusing all your attention on that computer 18:31:46 a UI that assumes one hand on the keyboard, one on the mouse, /consistently/ (like Blender) is fine 18:31:53 one that makes you move around a lot isn't, though 18:32:00 i'm sure there is some hack to make it use the old taskbar 18:32:32 There is one case in which giving each tab its own thumbnail is slower, which is when you want to pick a window, not a tab (so that you can open a new tab, for example). I find that more common than wanting to open a particular tab. 18:32:39 what I'd really like is something where multiple windows of the same app unbunch, with a text legend to say which is which 18:32:48 but otherwise the same as it is 18:33:00 but that would be inconsistent UI, and so no sane UI maker would do it, despite being useful 18:33:15 Asztal: agreed, if that case wasn't useful to you you wouldn't have multiple windows in the first place, as it's the only reason to use them 18:34:42 I should really try this "never combine" option for the taskbar, see how that works out. It seems to have been improved since the RC. 18:35:01 -!- oerjan has joined. 18:35:46 ooh, there is a "never combine" option, thanks 18:36:01 that fixes the issues I was having with it nicelyt 18:36:03 *nicely 18:36:08 in fact, it does just what I described 18:37:57 Ah, I just noticed there is a text legend if there's room. 18:39:58 soupdragon: i'm trying to do an infinite stream now actually 18:40:47 ...actually, no point 18:40:53 it'd just be the regular stream impl 18:40:58 let's try... 18:41:06 hm 18:42:15 * ehird gets "int sequence sequence" back from the type checker 18:42:17 well that's not right 18:42:50 trying to implement `foo = do _ <- lazy foo; strict 42` 18:42:52 i.e. 18:43:00 lazy foo >>= (\_ -> strict 42) 18:43:30 ehird: wtf are you guys talking 'bout :-p 18:43:47 lieuwe: a monad for lazy or strict evaluation, duh. 18:43:49 ;) 18:44:07 ehird: a what for what or what what? 18:44:08 if you don't know functional programming it won't make any sense to you 18:44:10 that's ok :P 18:44:39 Chrome is so fast, especially when all its children are crashed 18:44:43 fffff i really need my >>= itself to be lazy 18:45:00 Sgeo: :-p 18:45:01 ehird: Learn you some lambda. 18:45:06 -!- bsmntbombdood has quit (Read error: 60 (Operation timed out)). 18:45:09 oh wait 18:45:10 | Lazy x -> f (x ()) 18:45:12 god i'm dumb 18:45:16 Lazy == Strict 18:45:39 so... i need all my values to be unit->'a 18:45:42 but some pre-forced 18:46:15 ehird: Erm. Not you. 18:46:18 lieuwe: You. Learn you some lambda. 18:46:23 ehird: note that lazy = return, by the monad laws, iirc 18:46:35 oerjan: yeah i had that in my haskell version 18:46:41 because return x >>= f = f x 18:46:44 but i'm doing it in ocaml first because it's clearer what is strict and what is lazy 18:46:48 and also because rnf requires a typeclass 18:46:54 and for the same reason Set is not a monad Sequence cannot be 18:46:57 -!- bsmntbombdood has joined. 18:47:00 (typeclass restriction on its argument) 18:47:04 pikhq: eh, why? 18:47:14 lieuwe: because functional programming is the best. 18:47:14 oh wait not really return, just id, since you pass it something monadic 18:47:24 oerjan: no, you don't 18:47:35 data Sequence a = Strict a | Lazy a 18:47:47 you have foo = do ..., so foo must me monadic... 18:47:49 i guess Strict !a could work 18:47:52 and then lazy foo 18:47:57 oerjan: right it was nested monadic or whatever 18:48:01 i'm trying to fix it shush :P 18:48:07 how's this for a gnarly type sig 18:48:09 val ( >>= ) : 'a sequence -> ('a -> 'b sequence) -> 'b sequence = 18:48:12 erm 18:48:13 wrong one 18:48:18 val ( >>= ) : 'a sequence -> ((unit -> 'a) -> 'b sequence) -> 'b sequence = 18:48:53 # foo ();; 18:48:53 - : int sequence = Strict 42 18:48:53 woot 18:48:58 let rec foo () = 18:48:59 Lazy (fun () -> foo ()) >>= (fun _ -> 18:48:59 Strict 42) 18:49:13 oh wait I can rewrite (fun () -> foo ()) as foo 18:49:14 excellent 18:49:22 let rec foo () = Lazy foo >>= (fun _ -> Strict 42) 18:49:31 I guess it should be "sequenced" not "sequence" 18:50:21 that () arg is just because ocaml doesn't like you doing that otherwise :P 18:50:36 rnf is for deep normalization though, not just top constructor (which doesn't require a type class in haskell) 18:51:01 oerjan: yes, but it behaved rubbishly like that 18:51:08 do x <- strict [1..]; return 42 18:51:18 kinda poopy if that is == return 42 18:51:32 mhm 18:52:20 let rec ones () : (int list) sequence = 18:52:21 Lazy ones >>= (fun me -> 18:52:27 so me : unit -> int list 18:52:40 Lazy (fun () -> 1 :: (me ()))) 18:52:53 Error: This expression has type int list sequence 18:52:53 but an expression was expected of type int list 18:52:53 wut?? 18:53:45 let rec ones () : (int list) sequenced = 18:53:45 Lazy ones >>= (fun me -> 18:53:45 Lazy (fun () -> 1 :: (me ()))) 18:53:46 * ehird can't see anything wrong with that 18:54:10 it's just `ones = do me <- lazy ones; lazy (1 : me)` 18:54:18 more or less 18:54:53 1 :: me is int list, right 18:55:09 1 :: me () is int list 18:55:23 so Lazy (fun () -> 1 :: me ()) is (int list) sequenced 18:55:45 so (fun me -> Lazy (fun () -> 1 :: me ())) is (unit -> int list) -> (int list) sequenced 18:56:02 which is what the right operand to >>= should be. 18:56:17 and therefore the result of >>=, assuming the left hand is typed properly, 18:56:21 is (int list) sequenced 18:56:33 therefore ones () is of type (int list) sequenced, therefore the left hand side, Lazy ones, is typed correctly 18:56:37 QED 18:56:40 now why does ocaml disagree? 18:56:48 um the right operand to >>= should have an arbitrary first argument, surely? 18:57:25 (>>=) :: Monad m => m a -> (a -> m b) -> m b 18:57:36 val ( >>= ) : 'a sequenced -> ((unit -> 'a) -> 'b sequenced) -> 'b sequenced = 18:57:37 18:57:44 type 'a sequenced = 18:57:45 | Strict of 'a 18:57:45 | Lazy of (unit -> 'a) 18:57:45 let ( >>= ) (x : 'a sequenced) (f : (unit -> 'a) -> 'b sequenced) : 'b sequenced = 18:57:46 match x with 18:57:46 | Strict x -> f (fun () -> x) 18:57:47 | Lazy x -> f x 18:57:50 we need to preserve laziness, you see 18:58:53 -!- Slereah has joined. 18:58:55 oh well 18:59:06 * ehird discovers he can make ones not a function 18:59:07 let rec ones : int list sequenced = 18:59:07 Lazy (fun () -> ones) >>= (fun me -> 18:59:08 Lazy (fun () -> 1 :: me ())) 18:59:11 oerjan: "oh well" meaning? 19:00:42 -!- lieuwe has quit ("Page closed"). 19:00:48 hmm does ocaml have undefined 19:00:53 nothing. it wasn't me. you cannot prove it. nobody saw me. oh wait, you did. 19:01:26 how could it? it's a bottom. 19:01:38 hi oerjan 19:01:42 yes and? 19:01:50 i just want something that types for any type and barfs on execution 19:01:56 haskell subverts the type system with this, why can't ocaml 19:02:00 ehird: error? 19:02:01 i can use unsafe.coerce or something iirc in ocaml 19:02:04 internals or something 19:02:14 oerjan: error is not defined :/ 19:02:15 or raise something 19:02:24 let everything = everything 19:02:26 ?? 19:02:40 yeah raise will work 19:02:45 let rec** 19:02:48 # let rec everything = everything;; 19:02:48 Error: This kind of expression is not allowed as right-hand side of `let rec' 19:02:51 hmm maybe it's disallowed :( 19:02:57 oh well you could use rectypes for a Y combinator 19:03:03 make omega 19:03:05 exception Barf 19:03:06 let barf = raise Barf 19:03:12 you can do without Y actually 19:03:34 wait 19:03:36 that needs to be barf () 19:04:03 augur !!!!!!! 19:04:10 I figured out how to parse CCG 19:04:13 O_O 19:04:15 oh? 19:04:19 it took me a long time but I worked it out 19:04:53 I might code it tommowor 19:05:08 what i'd end up doing is a left-to-right parser 19:05:21 which tries to build a left-corner parse 19:05:21 oerjan: aha 19:05:28 the problem is that since ones : int list sequence 19:05:33 Lazy ones : int list sequenced sequenced 19:05:33 and when it cant, it tries compose, or lift, etc etc 19:05:49 so, /me is confused 19:05:49 and it backtracks when it cant do anything, to try alternatives 19:06:49 augur, oh yeah something a bit irritating was none of the papers on parsing it has T, just B_n 19:07:19 what 19:07:27 oh, compose 19:07:33 not lift 19:07:35 meh. 19:07:37 there's a few papers about parsing these but they're kinda confusing 19:07:47 like.. I couldn't follow any of them 19:08:12 i should try to write a parser too 19:08:12 :o 19:08:24 augur in your prolog 19:08:26 ;) 19:08:28 :) 19:08:31 nah 19:10:19 -!- Slereah_ has quit (Read error: 110 (Connection timed out)). 19:10:44 augur what language do yu use 19:11:01 augur is a ruby guy. 19:12:01 for the prolog interp? 19:12:15 its in JS. theres no web-based Prolog interp so ive decided to make one 19:12:39 http://ioctl.org/logic/prolog1 19:12:43 http://yieldprolog.sourceforge.net/ 19:12:48 I beg to differ. 19:12:51 for the parser 19:12:54 :| 19:13:00 how'd you find these? 19:13:03 Google. 19:13:06 "javascript prolog" 19:13:09 :| 19:13:24 It lets you find pages on the web by typing in keywords found in those pages or pages that link to them. 19:13:40 It even ranks them by how relevant it thinks they are to your keywords, using a fancy algorithm based on pages that link to it. 19:13:43 well thats ok. that wasnt the only reason i was making this. 19:13:44 You should try it sometime. 19:16:48 Yield Prolog looks quite nice, infact 19:18:25 soupdragon: in total languages there's no runPartial :: Partial a -> a, so i guess it's sorta like how the haskell runtime does runIO :: IO a -> a right? 19:18:39 yes 19:19:50 what about bottom, can you do this in a total language + Partial: 19:19:57 bottom :: Partial a 19:19:57 bottom = do 19:19:57 foo <- bottom 19:19:58 return foo 19:20:02 haha 19:20:10 i'll take that as a no 19:21:11 how do you implement _|_ then 19:21:28 bottom = Delay bottom 19:21:40 it's a properly guarded corecursion 19:21:47 Delay = Later for me 19:21:51 (because I like Now/Later as a name pair) 19:22:03 anyway, yeah, should have thought of that... 19:22:11 Now/Later heh 19:22:18 * SimonRC goes for a bit 19:22:24 soupdragon: so when do I have to explicitly say Delay 19:22:26 what language are you asking about, ehird 19:22:29 as opposed to it being identical to the identity monad 19:23:04 *Main> runPartial $ factorial 33 19:23:05 *** Exception: stack overflow 19:23:07 shweet 19:23:16 hahaha 19:23:17 (yeah ok factorial isn't partial shut up) 19:23:23 ehird :( 19:23:28 runPartial _ = error "stack overflow" 19:23:37 you suck ehird. you suck so much. 19:23:39 T_T 19:24:06 augur: from you that's a compliment, right? 19:24:17 well no, not in this case 19:24:24 i was going to make some sort of a comment or another about being straight but decided not to open that can of worms 19:24:32 not with augur 19:24:34 what can of worms 19:24:34 that is never a good idea 19:24:42 oh WELL 19:24:51 ehird, its ok 19:24:54 soupdragon: invoking his "make a bunch of gay innuendo" procedure 19:24:55 we know you're a queer anyway 19:25:04 innuendo? 19:25:05 ("I'll invoke your procedure if you know what I mean") 19:25:12 x3 19:25:28 what the heck is that smiley 19:25:36 X3 19:25:41 a cross-eyed cat 19:25:52 not cross eyed 19:26:07 soupdragon: data PartialList a = Nil | Cons a (Partial (PartialList a)) 19:26:07 or 19:26:12 soupdragon: data PartialList a = Nil | Cons (Partial a) (Partial (PartialList a)) 19:26:14 presumably the former 19:26:17 -!- coppro has joined. 19:26:20 its the squinted-eyes you get when you laugh too hard 19:26:30 ehird data List list a = Nil | Cons a (list a) 19:26:41 coppro: http://www.doodle.com/rhriqxe2rb226it2 you are contractually obligated to vote due to pledging. kthx :P 19:26:53 soupdragon: how fancy 19:26:53 hm 19:26:56 ehird data List list a = Nil | Cons a (list list a) 19:27:01 one of them... 19:27:06 soupdragon: no that's ridiculous 19:27:11 if you do List Poop a 19:27:13 there's some kind of methodical way to do it 19:27:14 you get 19:27:18 soupdragon: no way list list a types 19:27:20 Cons a (Poop Poop a) 19:27:28 I kind of get it 19:27:29 so that's basically list... for one iteration 19:27:34 the thing can't self apply 19:28:02 ah, PartialList a should only ever be used as Partial (PartialList a) 19:28:08 otherwise, pHead :: PartialList a -> a 19:28:13 and that's just not very partial is it now 19:28:14 I wonder if it should be a list or list a 19:29:36 pTail :: PartitalList a -> Partial (PartialList a) 19:29:36 ↑ this desugars to 19:29:45 pTail :: Partial (PartialList' a) -> Partial (Partial (PartialList' a)) 19:29:47 List a list = Nil | Cons a list List a (List a) 19:29:47 TOO MANY PARTIALS 19:29:53 yerh 19:30:14 *PartialList 19:30:18 not PartitalList :P 19:30:48 pTail :: PartialList a -> Partial (PartialList a) 19:30:49 pTail lst = do 19:30:49 Cons _ xs <- lst 19:30:49 xs 19:30:52 weirdest function I ever did see 19:31:00 data List wrapper a = Nil | Cons (wrapper a) (wrapper (List wrapper a)) 19:31:09 woah 19:31:33 type PartialList = List Partial 19:31:48 ehird: done 19:32:12 or perhaps = Partial (List Partial) 19:32:18 coppro: you are a good person and deserve much praise 19:32:28 yay! 19:32:31 oerjan: http://www.doodle.com/rhriqxe2rb226it2 Voting is NOT OPTIONAL 19:32:43 coppro, you're awesome 19:32:45 no but visiting is, right? 19:32:54 oerjan: NO 19:32:59 darn 19:33:14 ehird: tell coppro: "coppro: ehird says you're awesome" 19:33:18 coppro: ehird says you're awesome 19:33:24 *tell coppro: "ehird 19:33:29 :P 19:34:29 * soupdragon spills worms all over everyone 19:35:21 O_O 19:37:02 -!- soupdragon has quit ("Leaving"). 19:37:53 ehird: either that poll is broken in IE, or it requires registration. in any case, i consider myself excused. 19:38:31 probably the former 19:38:32 oerjan: you forgot to enter a name 19:38:36 coppro: he uses IE 8 19:38:39 oh 19:38:42 IE 8 is quite solid, and what corporation wouldn't support it? 19:38:47 probably what ehird said then 19:38:56 yeah, 8 is good 19:38:57 oerjan: (it's to the left of the choices) 19:38:59 not great 19:39:02 but good 19:39:07 coppro: apart from the UI above the page 19:39:15 true 19:39:17 they fucked up with the whole removing the menus thing 19:39:39 ehird: what _choices_? 19:39:50 oerjan: the checkboxes 19:40:00 -!- ais523 has quit (Read error: 104 (Connection reset by peer)). 19:40:03 wait, alter and amend are your suggested editor names? 19:40:09 yes... 19:40:13 something wrong with that? :D 19:40:33 ic i thought they were some kind of polling options... 19:40:38 -!- lament has joined. 19:42:45 oerjan: you are now contractually obligated to specify other 19:43:14 i cannot, there is nowhere to write it. MWAHAHA 19:43:27 that's not my fault :( 19:44:21 but i think my not being able to recognize that the other options _were_ editor names was a good enough reason to specify Other... 19:44:55 would you prefer EhirdsEd or something insane like that :P 19:44:57 *inane 19:45:03 freudian slip... 19:45:41 as for slip, what about "writhe" 19:46:15 * ehird attempts to decode that sentence 19:46:45 i mean, i suggest "writhe", as an insane typo of write 19:47:14 also in the spirit of lewis carroll, iirc 19:47:47 The Mock Turtle went on. .We had the best of educations . . . Reeling and Writhing, of course, to begin with, and then the different branches of Arithmetic.Ambition, Distraction, Uglification, and Derision.. 19:48:19 that would have been better with proper punctuation, naturally 19:49:17 writhe is too unpleasant, clearly :P 19:50:02 oh WELL 19:51:44 * ehird slaps oerjan 19:52:57 I have invented a method for never losing anything. 19:53:17 Suppose you have 100 items, and you are afraid of losing even one of them. This means you have 100 opportunities to lose something. 19:53:18 uorygl: the game 19:53:42 Consider these 100 items to be 100 one-item piles. Put two of these piles together; now you have 99 piles, meaning 99 opportunities to lose something. 19:54:11 Put two piles together again; then you'll have only 98 opportunities to lose something. Simply repeat until you have 0 opportunities to lose something, and you will never lose anything again. 19:54:21 it's the Haystack solution. oh wait... 19:54:36 i sense an induction base problem 19:54:50 uorygl: impossible 19:54:52 you can only get to 1 19:54:57 combining the last two piles into 1 19:55:01 → 1 chance of losing everything 19:55:36 Ah, but there is a flaw in your reasoning! 19:55:42 Simply consider yourself to be one of the items! 19:55:59 ehird: but that would go against the well-known advice of egg-sperts! 19:56:04 item = thing-that-can-be-lost, correct? 19:56:11 I can't lose myself, so I am not an item. 19:56:12 -!- coppro has quit (Read error: 104 (Connection reset by peer)). 19:56:12 If you carry all your stuff with you all the time, you will never lose anything. 19:56:44 are we ignoring environmental factors here? 19:56:44 That's kind of a strange definition of an item. 19:56:48 e.g. stuff dropping out of pockets 19:56:51 uorygl: your method appears foolproof. 19:57:03 Zip your pockets. 19:57:03 uorygl: your method was to stop you ever losing anythhing 19:57:05 *anything 19:57:10 and involved putting everything together 19:57:31 so if you say "put everything together" in response to "how can i stop these pesky things being lost", clearly everything that is a thing can be lost 19:57:38 otherwise your response should have said "put every losable thing together" 19:57:43 -!- coppro has joined. 19:57:46 therefore, since I cannot lose myself, I am not a thing. 19:57:46 QED 19:58:08 Also, consider building all your stuff into a tower so tall it can be seen from anywhere in the world. 19:58:15 * oerjan approves: http://blog.makezine.com/archive/2010/01/toy_train_used_to_calibrate_fusion.html 19:58:39 (yeah it's from reddit. so what, it's awesome) 20:00:01 -!- Slereah_ has joined. 20:00:48 Or sell all of your stuff and buy a backpack full of iPhones. 20:01:23 * oerjan realizes that was blogspam based on http://www.nytimes.com/2009/12/29/science/29train.html?_r=4&ref=science 20:04:49 -!- Slereah has quit (Read error: 60 (Operation timed out)). 20:05:32 grr, new york times wants me to login 20:05:47 MWAHAHA i got past without this time 20:06:04 I think I created a New York Times account. 20:06:05 incidentally i never login when it wants me to 20:06:19 You know, this is what BugMeNot was made for. 20:08:15 -!- MigoMipo has joined. 20:09:06 -!- MizardX- has joined. 20:23:27 -!- zzo38 has joined. 20:24:26 How can I make a program to read fax document, with a barcode and with filling in like scantron forms 20:25:02 -!- MizardX has quit (Connection timed out). 20:25:32 -!- MizardX- has changed nick to MizardX. 20:26:49 -!- coppro has quit ("I am leaving. You are about to explode."). 20:27:25 -!- coppro has joined. 20:31:20 -!- zzo38 has quit (Remote closed the connection). 20:56:38 -!- snowscape has joined. 21:06:26 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)). 21:11:14 -!- MigoMipo has quit (Read error: 110 (Connection timed out)). 21:58:33 -!- pikhq has quit (Read error: 54 (Connection reset by peer)). 22:02:02 -!- pikhq has joined. 22:02:14 -!- pikhq has quit (Read error: 104 (Connection reset by peer)). 22:07:04 -!- pikhq has joined. 22:15:31 -!- coppro has quit (Remote closed the connection). 22:17:06 -!- coppro has joined. 22:21:06 -!- MigoMipo has joined. 22:21:35 -!- MigoMipo has quit (Remote closed the connection). 22:44:24 -!- lament has quit. 22:58:48 -!- Azstal has joined. 23:01:17 -!- MigoMipo has joined. 23:04:22 -!- Aszstal has joined. 23:09:06 -!- Asztal has quit (Read error: 110 (Connection timed out)). 23:09:16 -!- Aszstal has changed nick to Asztal. 23:16:24 -!- Azstal has quit (Read error: 110 (Connection timed out)). 23:17:12 -!- ehird has quit. 23:21:10 -!- snowscape has quit (Remote closed the connection). 23:29:49 -!- ehird has joined. 23:29:51 Hello! 23:29:54 Guess what OS I am using. 23:29:57 coppro cannot guess. 23:30:33 EhirdOS? 23:30:33 OpenVMS 23:31:17 Plan9 from Bell Labs? :-) 23:31:21 oklofok: I. Wish. 23:31:23 Windows? 23:31:27 oerjan: I really, really anti-wish. 23:31:32 :D 23:31:36 Ilari: Good luck getting it running on this hardware, though I love the thing. 23:31:40 pikhq: Nope. 23:32:07 pikhq: Nice try. 23:32:08 Imma go with Linux. 23:32:18 Konqueror. 23:32:20 4.3. 23:32:51 Aww, darn you. 23:32:58 Fucking web chat exposin' mah browser. 23:33:05 Hahah. 23:33:41 linux? how vanilla. 23:34:47 Quite. 23:37:41 well guess what os *i'm* on! 23:38:03 losethos 23:38:28 Windows 23:38:30 Pthing: regarding svg: not quite. 23:38:40 cheater 23:38:52 [16:37:59]===CTCP version reply “mIRC v6.31 Khaled Mardam-Bey” from oklofok 23:39:21 oklofok: oklOS 23:39:27 I'm still relying on you to write that someday 23:39:39 coppro: it's cheating even if you admit it is. 23:40:30 ehird: might be long till i next program anything. 23:41:09 oklofok: i'll totally pay you to do it* 23:41:11 *lie 23:41:26 * oklofok i tired of explaining stuff to simpletons 23:41:28 *is 23:42:28 explanation: oklofok is a mathematician now. he is only allowed to prove the programs exist, not to write them. 23:42:57 yup 23:43:34 can he prove them correct but not test them? 23:43:35 however, if you input his proof to Coq, you can extract the program for there. 23:43:43 *from 23:44:16 oerjan: if it's not in oklo style, it's not an oklo program. 23:44:27 true that 23:46:48 also great news, i did manage to meet the game theory dude 23:46:58 so i did not get a mortal enemy. 23:48:35 * oklofok considers doing something