00:01:12 I did work experience in RBS once, muha...ha? 00:01:34 Sgeo: the ? was implicitly asking about it 00:02:46 elliott, back in high school, over the summer I would work for the school district doing things like putting RAM into the computers or vacuuming the insides of computers 00:03:01 Mostly meanial computer stuff 00:03:14 ok 00:17:40 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 00:17:53 -!- Nisstyre has joined. 00:36:36 -!- copumpkin has joined. 00:50:05 -!- DHeadshot has joined. 00:52:10 -!- DHeadshot has quit (Read error: Connection reset by peer). 00:52:19 -!- DHeadshot has joined. 01:27:18 I have recorded this session of Dungeons&Dragons game now. 01:28:21 -!- derdon_ has joined. 01:30:25 elliott, Phantom__Hoover monqy new album 01:31:23 -!- derdon has quit (Ping timeout: 245 seconds). 01:41:28 -!- NihilistDandy has quit. 01:46:04 -!- Phantom__Hoover has quit (Ping timeout: 260 seconds). 01:48:42 -!- Phantom_Hoover has joined. 01:49:13 Sgeo: is there anything worth getting in the humble android bundle? 01:49:33 quintopia, I don't know about the other games, but Uplink is good 01:50:26 Hey cool, I can get an internet connection in my Linux partition again. 01:51:01 Sgeo: i dont have a tablet 01:51:41 quintopia, is the PC version available if you buy the bundle? 01:51:53 ayes 01:52:18 will it run in 1gig of RAM? 01:52:31 It's from 2000, so probably. 01:54:04 ok 02:00:41 Why are all commands of Ragaraja are undefined? 02:02:41 because ragaraja says what he wants and you better do it or else 02:02:51 he doesnt have to predefine his commands 02:02:58 his commands are his wishes 02:05:22 -!- DHeadshot has quit (Read error: Connection reset by peer). 02:05:27 -!- DH____ has joined. 02:14:30 -!- Phantom_Hoover has quit (Remote host closed the connection). 02:17:58 hey guys 02:18:00 does http://esolangs.org/wiki/Special:RecentChanges work 02:19:15 it appears to? 02:20:38 good 02:26:24 -!- DH____ has quit (Read error: Connection reset by peer). 02:26:29 -!- DHeadshot has joined. 02:28:46 -!- DHeadshot has quit (Read error: Connection reset by peer). 02:41:00 -!- david_werecat has quit (Ping timeout: 244 seconds). 03:24:57 -!- copumpkin has changed nick to pumpkin. 03:26:07 -!- heroux_ has joined. 03:26:26 -!- pumpkin has changed nick to copumpkin. 03:27:48 -!- variable has quit (Ping timeout: 268 seconds). 03:27:48 -!- heroux has quit (Ping timeout: 268 seconds). 03:28:06 -!- variable has joined. 03:28:07 -!- variable has quit (Changing host). 03:28:07 -!- variable has joined. 03:28:13 -!- yiyus_ has joined. 03:29:01 -!- yiyus has quit (*.net *.split). 04:16:57 -!- MoALTz has joined. 04:26:57 -!- itidus21 has joined. 04:28:36 -!- jlaire_ has changed nick to jlaire. 04:42:57 -!- ais523 has joined. 04:43:45 lambdabot: messages? 04:44:03 ais523: it's @messages? :) 04:44:07 -!- MoALTz has quit (Ping timeout: 272 seconds). 04:45:20 lambdabot: @messages? :) 04:45:20 Sorry, no messages today. 04:45:29 lambdabot: @botpoison :'( 04:45:29 Unknown command, try @list 04:52:01 elliott: it'd tell me if I had messages if I said anything at all 04:52:06 @messages 04:52:07 You don't have any new messages. 04:52:11 see, that was redundant :) 04:52:16 ais523: that's not quite true 04:52:22 * elliott if you use ACTIONs, it won't bother you 04:52:29 there's some other way I think but I forget what it is 04:52:30 oh, I didn't know that 04:57:05 kmc: Did you know that in Python2, random.choice('aá') will randomly return one of ['a','\xc3','\xa1']? 04:58:15 How about u'aá'? 04:58:55 Oh, that works. 05:00:41 I guess that's just how Python strings are. 05:02:28 I guess 'foo' is like a ByteString, encoded with some arbitrary encoding, and u'foo' is like Text. Or something. 05:02:43 O, you have to indicate if you want byte strings or Unicode strings. I do not think it is a problem 05:03:45 Right. I just didn't know Python worked that way. 05:09:13 -!- oonbotti has quit (Quit: oonbotti). 05:10:55 -!- oonbotti has joined. 05:14:01 -!- oonbotti has quit (Client Quit). 05:15:56 It's clearer in Python 3. 05:16:00 str is renamed to bytes and so on. 05:16:56 And unicode is renamed to str? 05:17:15 elliott: Hey, computers are bad. Can I have a copy of @? 05:17:30 No. 05:17:34 And yes, I think so? Not sure. 05:17:37 Maybe not. 05:17:43 :-( 05:18:17 -!- oonbotti has joined. 05:21:03 -!- derdon_ has quit (Remote host closed the connection). 06:18:05 -!- oerjan has joined. 06:46:24 -!- oerjan has quit (Quit: leaving). 06:47:48 One thing a continuation monad seem to do in Haskell is to build up a data structure, including backward. Does a continuation in a different programming language does something similar? 07:02:36 zzo38, I'm not entirely sure, but I think the Continuation monad is delimited continuations 07:03:19 Sgeo: Cont in Haskell? 07:03:31 So delimited continuations in other languages might be able to do similar. I should note that I'm not thinking this through at the moment, just remembering what I've seen things called 07:03:46 It depends on what primitives you provide. 07:04:15 You can write shift/reset for Cont, or you can write callCC (or others). 07:06:15 What does shift/reset mean? 07:06:37 https://en.wikipedia.org/wiki/Delimited_continuation 07:07:11 Other programming language continuation is usually callCC, in Haskell we can have callCC but also the monad operations (fmap/return/join/bind) and the operation of its type ((x->r)->r) 07:07:36 -!- aloril has quit (Ping timeout: 244 seconds). 07:09:09 * Sgeo wants to bring monads into every language he touches 07:09:21 I don't know how plausible that would be for Prolog 07:09:49 Assembly, now with monads 07:10:39 Before having a monad you need a category. It could be the category of the functions in that programming language, though, so if the functions can perform I/O operations it could be like Haskell's (Kleisli IO) category. And then you define fmap, return, join, having the proper laws on that category. 07:12:20 Possibly with JavaScript you could have, if M is the monad, then M itself is the return operation and then M.prototype.join and M.prototype.map for the others. 07:23:09 -!- aloril has joined. 07:23:09 -!- Phantom_Hoover has joined. 07:24:14 -!- nooga has joined. 07:30:54 -!- epicmonkey has joined. 07:35:32 -!- epicmonkey has quit (Ping timeout: 244 seconds). 07:57:26 -!- Nisstyre has quit (Read error: Connection reset by peer). 07:59:25 -!- Nisstyre has joined. 08:00:55 -!- glogbackup has quit (Ping timeout: 246 seconds). 08:05:07 OK I read about the delimited continuations. 08:06:01 Are they similar to their reset being (flip runCont id) and their shift being (cont)? 08:06:22 I don't think so. 08:07:09 zzo38: Did you see edwardk's puzzle with newtype Mu f = Mu (forall a. (f a -> a) -> a); data Nu f = forall a. Nu a (a -> f a); newtype Fix f = Fix (f (Fix f)) 08:08:27 No, I did not see. 08:08:49 I think the puzzle is just to write conversion functions. 08:29:43 -!- ais523 has quit (Read error: Connection reset by peer). 08:29:51 -!- ais523 has joined. 08:31:45 -!- mig22 has joined. 08:39:33 -!- AnotherTest has joined. 08:47:33 -!- epicmonkey has joined. 08:54:03 -!- liljuska has joined. 09:03:45 -!- monqy has quit (Quit: hello). 09:09:00 -!- zzo38 has quit (Remote host closed the connection). 09:28:41 http://writelatex.com 09:34:12 do laptops charge slower when they're on? 09:35:03 i always assumed so, but maybe the max charge rate of the battery is much less than the available power 09:39:27 -!- olsner has quit (Ping timeout: 240 seconds). 09:39:50 -!- olsner has joined. 09:39:53 -!- elliott has quit (Quit: Leaving). 09:40:19 -!- Nisstyre has quit (Ping timeout: 246 seconds). 09:43:02 -!- Nisstyre has joined. 09:46:00 `run time | echo 09:46:11 bash: -c: line 0: syntax error near unexpected token `|' \ bash: -c: line 0: `time | echo' 09:46:18 ais523: ? 09:46:23 shachaf: try that command in csh some time 09:46:34 % time | echo 09:46:35 % 09:46:43 bleh, did they fix it? 09:46:45 well, mostly fix it 09:46:57 it should still give an error message, due to being meaningless 09:47:14 it used to give a really nonsensical error 09:47:49 btw, is that actually csh, or tcsh pretending? 09:48:15 /bin/bsd-csh 09:48:29 hmm 09:48:40 I'll try it with Debian's/Ubuntu's, installing it now 09:48:54 This is Debian. 09:49:06 The package csh installs /bin/bsd-csh 09:49:19 ah, right 09:50:10 huh, it seems that "time | echo" actually spawns a process 09:50:14 called "time |" 09:50:17 try looking in jobs 09:50:30 % time | echo 09:50:31 % jobs 09:50:32 [1] + Running time | 09:50:34 % Reset tty pgrp from 11937 to 11927 09:50:37 ooh, they didn't fix it, it's just intermittent 09:50:55 (the "Reset tty pgrp" thing got printed after the prompt % , I didn't type it) 09:52:58 -!- mig22 has quit (Quit: mig22). 09:56:08 (that's the message I was angling for, btw) 09:56:27 btw, time | eventually dies with SIGPIPE, some considerable time after you ran it 10:06:07 -!- heroux_ has quit (Ping timeout: 240 seconds). 10:07:11 -!- AnotherTest has quit (Quit: Leaving.). 10:07:30 -!- AnotherTest has joined. 10:11:41 kmc: Do you know the source of 2c1;2c1;2c1;2c1; being typed on the command line when catting /dev/urandom? 10:18:26 A low amount of entropy I imagine 10:18:58 Being typed. As in, my shell is getting it as input. 10:20:38 Hmm 10:20:44 Could be some escape code 10:22:37 -!- mig22 has joined. 10:38:32 -!- heroux has joined. 10:45:07 * ais523 is scared of Mauriceling's BF derivs 10:45:29 -!- david_werecat has joined. 10:45:33 shachaf: it's probably an escape code that asks for information in response 10:45:41 ais523: Sure, but which one? 10:45:44 not sure 10:46:09 this reminds me of HTTP access log trojans 10:46:46 the idea is to insert escape codes in your user agent, so that if someone cats their access log to a terminal, it sends data back into the terminal to run arbitrary commands 10:46:59 although most modern terminals are immune nowadays 10:47:35 same sort of concept as sending people to shock sites via XSS attacks on plain text files… 10:59:07 Because the webserver doesn't tell the browser that it's plain text and not html? 11:01:16 -!- david_werecat has quit (Read error: Connection reset by peer). 11:06:53 -!- david_werecat has joined. 11:15:56 -!- mig22 has quit (Quit: mig22). 11:22:51 -!- david_werecat has quit (Ping timeout: 240 seconds). 11:23:12 -!- MoALTz has joined. 11:47:28 -!- epicmonkey has quit (Remote host closed the connection). 11:52:55 -!- epicmonkey has joined. 11:58:41 -!- liljuska has quit (Quit: Leaving.). 12:12:46 -!- aloril has quit (Read error: Operation timed out). 12:18:50 ahh 12:18:53 what a fine day 12:19:06 found a bug in Boost libs 12:19:32 win 13 12:29:41 another more meta way to do an attack would be to lie about something in a readme file 12:30:17 but i'm not sure what 12:31:07 maybe recommend an antiquated terminal in a readme file 12:31:15 -!- kinoSi has quit (Read error: Connection reset by peer). 12:31:26 -!- aloril has joined. 12:31:42 -!- kinoSi has joined. 12:31:48 <-- dumb. nevermind.. 12:46:06 nooga: which lib 12:48:42 filesystem 12:49:36 oh 12:49:39 what didn't work? 12:54:38 -!- boily has joined. 13:14:04 -!- aloril has quit (Ping timeout: 250 seconds). 13:15:37 -!- derdon has joined. 13:23:54 -!- ais523 has quit. 13:30:49 -!- aloril has joined. 13:35:17 nooga: I just had this issue with boost::lexical_cast; it seems to cast "9001" to 2329 ? 13:36:51 AnotherTest: o_O 13:37:58 I've probably done something wrong 13:38:09 the weird thing is 13:38:21 I added an output statement on the variable that I'm casting 13:38:25 and on the result 13:39:11 paste or it didn't happen! 13:42:25 -!- ogrom has joined. 13:50:11 jlaire: I would have to paste over 2000 lines of code that I'm not even supposed to paste :( 13:50:18 unless it always happens 13:50:33 I'll try whether it does 14:19:42 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 14:24:16 I'm about to spam 14:24:18 std::string port_s = address.substr(pos2 + 1); 14:24:18 std::cout << "Port string: " << port_s << std::endl; 14:24:18 int port = boost::lexical_cast(port_s); 14:24:18 std::cout << "Port number: " << port << std::endl; 14:24:38 output: 14:24:39 Port string: 9001 14:24:40 Port number: 2329 14:25:30 Is a lexical cast the correct way to convert a string to integer? 14:27:06 Yes 14:27:44 http://www.boost.org/doc/libs/1_50_0/doc/html/boost_lexical_cast/synopsis.html#boost_lexical_cast.synopsis.lexical_cast 14:34:52 there's always the atoi() way of casting a string to an int: http://pastebin.com/5iDifJhC 14:37:09 atoi() is the C way 14:41:07 -!- copumpkin has joined. 14:41:50 i'm only one very lazy programmer when it comes to C++. 15:16:33 I know about atoi 15:16:43 but I (and many others) dislike it 15:16:58 lexical_cast is much more generally 15:17:36 boily: your example works with lexical_cast equally well, but it's just this particular situation (I must be doing something wrong) 15:18:05 also isn't writing (void) as arguments a typical C thing to do 15:35:14 guess what 15:35:25 int port = std::atoi("9001"); still gives me the same 15:36:14 Now that's weird 15:36:48 Yes it is 15:37:02 this works in any other file 15:37:08 just not in my current project 15:37:31 well in this file 15:38:33 I compiled a test case and I get 9001 15:38:49 My tests cases give me 9001 too 15:39:47 I don't understand it 15:40:25 how can std::cout << boost::lexical_cast("9001") << std::endl; or std::cout << std::atoi("9001") << std::endl; ever output 2329 15:40:39 I put that literally in my code 15:41:51 8001 = 1f41 15:41:53 oh wait 15:41:59 hexadecimal? 15:42:05 Oh 15:42:08 so 15:42:16 cout is in hexadecimal mode 15:42:19 yes 15:42:23 that must be it 15:42:25 and I know why 15:42:40 somewhere else I was outputting hexadecimal numbers 15:42:41 :S 15:42:49 stupid error -> time waste 15:43:01 forgot to turn that flag of :( 15:43:14 =P 15:43:37 This is what happens when your output routines have hidden state 15:44:12 indeed :'( 15:44:31 rage against std::ostream! 15:45:40 I actually solved the actual bug in the code there a long time a go 15:45:57 but the output was just still wrong :/ 16:13:00 -!- epicmonkey has quit (Ping timeout: 246 seconds). 16:19:02 -!- ogrom has quit (Ping timeout: 268 seconds). 16:20:43 -!- ogrom has joined. 16:33:23 -!- ogrom has quit (Quit: Left). 16:38:12 -!- ogrom has joined. 17:24:51 -!- epicmonkey has joined. 17:29:10 -!- zzo38 has joined. 17:43:08 -!- aloril has quit (Ping timeout: 244 seconds). 17:44:19 shachaf: i don't know 17:44:39 did you figure it out? 17:45:15 Not that one. 17:45:20 butts 17:45:25 I figured out another one. 17:45:30 oh yeah? 17:45:34 c62;9; 17:45:34 what have you been trying to figure out? 17:45:46 That's just from an escape sequence. 17:45:50 Something like \e[c 17:45:58 kmc: There was a bigger mystery, though. 17:46:15 Remember how cat /dev/urandom used to turn your terminal to line-drawing mode? 17:46:33 It hasn't happened in a while, has it? At least it hasn't for me. 17:46:45 We were trying to figure it out, and there were various theories. 17:47:09 A surprising observation was that catting /dev/urandom for a bit, followed by printf '\e(0', wouldn't turn box-mode on. 17:47:23 So somehow there's an escape sequence that disables it or something. 17:47:33 or maybe a terminal bug 17:47:38 Possible. 17:48:05 someone in here should know all the vt100 codes by heart and be able to tell you directly if there's a sequence to disable box-mode and what it is 17:48:35 olsner: There were mysterioius happenings, though. 17:48:43 Which I don't remember, partly because it's 10:48 and I still haven't slept. 17:49:20 you can look through /usr/share/doc/xterm/ctlseqs.txt.gz 17:49:59 You can always reset your terminal 17:51:45 what would we learn from that? 17:52:05 is it literally always possible to reset the terminal, or is it possible to end up in a state where the terminal is unrecoverable? 17:52:16 there is a code which explicitly means "reset terminal" 17:52:29 i'm not sure if it's usable even inside like "i'm sending you a new window title now" mode 17:53:16 I wonder how secure terminal emulators tend to be 17:53:33 e.g. if you use them to connect to evil servers 17:54:13 Speaking of which, why does `reset` take a really long time to run? 17:54:26 kmc: Sometimes `reset` isn't enough. 17:54:44 I mean, sometimes you get into a state where the terminal is messed up even after typing reset into your shell. 17:55:06 http://www.thinkgeek.com/product/e95e/ seems related 17:55:23 shachaf: you do? 17:55:44 shachaf: did you know that in the Linux VT (but not in any X terminal emulator i've found) you can enter line drawing mode with the single byte 0E? 17:56:20 kmc: Oh, wow, that explains why it's so much easier to get into it in the TTY! 17:56:31 shachaf: run reset inside script and then look at the typescript 17:56:35 i did this but forgot the results 17:56:44 i know it sets all the tabstops 17:56:51 i think it may have a hardcoded delay between sending control codes 17:57:08 kmc: Hmm, but \e(0 doesn't work. 17:57:09 -!- aloril has joined. 17:58:45 fun 17:59:26 kmc: Did you see edwardk's puzzles with Mu and Nu? 17:59:44 no 17:59:46 what is it that happens when binary data results in crud getting passed back as input? usually it looks something like semicolon-separated hex values 18:00:01 there are some codes to ask for terminal status 18:00:03 look through /usr/share/doc/xterm/ctlseqs.txt.gz 18:00:05 newtype Mu f = Mu (forall a. (f a -> a) -> a) 18:00:08 (on debian) 18:00:16 data Nu f = forall a. Nu a (a -> f a) 18:00:22 newtype Fix f = Fix (f (Fix f)) 18:00:27 I think. 18:00:40 The idea was to write functions to convert these back and forth. 18:01:37 ctlseqs.txt is 1540 lines here, that's almost exactly 64 screens of text 18:01:52 -!- monqy has joined. 18:03:23 shachaf: ah, i understand now 18:03:43 Understand what? 18:03:48 \x0e (ascii SO) means "shift to the G1 character set" (and \x0f = SI means switch to G0) 18:04:03 What's G1? 18:04:03 \e(0 sets the G0 character set to be line drawing characters 18:04:13 G0 and G1 are variables which can be assigned to different character sets 18:04:25 Ah. 18:04:29 in the Linux VT, G0 = US ASCII and G1 = line drawing, by default 18:04:32 in xterm they are both ASCII 18:04:43 Makes sense. 18:04:53 cata is Fix f -> Mu f 18:04:56 so if you do \x0e in xterm, then \e(0 has no effect 18:05:07 but now \e)0 (set G1 = line drawing) will have a visible effect 18:06:01 and if you set both G0 and G1 to line drawing, \x0e and \x0f will no longer have any effect? 18:06:07 yeah 18:06:11 (no visible effect) 18:07:03 except maybe the vt doesn't allow reassigning G0 18:07:20 so \e(0 might be disallowed? 18:07:25 yeah 18:07:29 beats me 18:07:42 i fear that to be more knowledgable on this subject, i would have to read ISO 2022 18:07:53 seems it would be better to just have a "choose character set" instruction, instead of all these states 18:08:08 which would cost like CHF 40 and my soul 18:08:16 olsner: i know, right? 18:08:32 but! that would take three bytes per switch 18:09:04 and if you're trying to do e.g. switch to japanese every other character on a 3 baud modem, that might be significant 18:10:49 shachaf: you can printf '\e(C' in xterm for the 7-bit finnish experience 18:12:04 kmc: I've had enough of the Finnish experience trying to type on Finnish-layouted keyboards. :-( 18:12:10 -!- Taneb has joined. 18:12:11 I've also had enough of the French experience. 18:12:17 AZERTY is the devil. 18:12:45 Heh, that brings back memories 18:15:21 shachaf: if you do printf '\e)0\e~' within LC_ALL=C xterm 18:15:32 then you can get line-drawing characters using bytes within the range 80 - FF 18:16:15 turns out you can set which of G0, G1, etc. is used by each half of the byte space independently 18:16:24 -!- Taneb has changed nick to atriq. 18:16:24 Makes sense. 18:16:29 not really 18:16:36 well 18:16:55 so that sets up upper-half characters to use G1, after setting G1 to line-drawing? 18:16:55 nothing in computer engineering makes sense except in the light of evolution 18:16:59 yes 18:17:12 http://en.wikipedia.org/wiki/ISO/IEC_2022 18:17:19 @ping 18:17:20 pong 18:17:24 Reassuring 18:18:33 sometimes when you say ping something says pong, it's amazing 18:19:02 ^ping 18:19:15 if someone built an esoterm, how would its control characters look? 18:19:31 !ping 18:19:36 Pong! 18:19:48 `ping 18:19:55 pong 18:20:01 olsner: it would be a brainfuck program outputting the normal ansi control code 18:20:18 I'd rather make control characters be words in a popular language so they're easy to remember 18:20:21 Say, Chinese 18:20:27 You could probably condense all of them down to a single character. 18:20:44 some of the early terminals had e.g. 8080 cpus, you could start with something like that connected to a frame buffer and just send it the whole instruction stream 18:21:25 it wouldn't even need an instruction pointer or a stored program 18:23:06 In Linux console you could use shift-out/shift-in to use line drawing. You could also use the program I have written to allow the entire CP437 to be used on Linux including shift-out/shift-in. 18:27:29 Therefore I think you should just use the Linux console codes. 18:27:41 (Regardless of if it is CP437 or not) 18:31:30 @ping 18:31:31 pong 18:31:41 Is everything down for everyone else again 18:34:22 kmc: Are you still in .fi? 18:34:22 Oh, everything's back up 18:36:35 That's good 19:14:50 If Good Friday is a statutory holiday, and if you want to have separation of church and state, then the laws should include the way to caluclate Easter isn't it? 19:15:08 Since otherwise you don't have the separation of church and state. 19:15:18 Hmm, I suppose 19:19:36 -!- ogrom has quit (Quit: Left). 19:19:44 Hmm 19:19:50 Hmmmmmmmmm 19:20:26 bfThing :: [BFChar] -> RWS [Word8] [Word8] Tape () 19:33:54 data BFChar = L | R | P | M | S | E; data Tape = Tape {lhs :: [Word8], rhs :: [Word8]} 19:34:22 -- writing a brainfuck interpreter thingy using IRC as a text editor may be a bad idea 19:38:02 -- I don't think I'll bother 19:38:24 -!- AnotherTest has quit (Quit: Leaving.). 19:42:37 -!- aloril has quit (Ping timeout: 240 seconds). 19:45:16 -!- Phantom_Hoover has quit (Read error: Connection reset by peer). 19:48:17 I am not sure that type for bfThing is correct anyways 19:49:37 But maybe it is 19:50:20 -!- oerjan has joined. 19:52:57 You can use "local tail" to reduce the input? 19:53:22 :t local tail 19:53:23 forall a (m :: * -> *) a1. (MonadReader [a] m) => m a1 -> m a1 19:53:25 Yes you can, I think so 19:54:18 :t local tail . ($) 19:54:21 forall a a1. ([a] -> a1) -> [a] -> a1 19:54:36 But "local" does not belong to the Kleisli category (although that might not be important) 19:54:44 > local tail . head $ "test" 19:54:46 Couldn't match expected type `m a' 19:54:46 against inferred type `GHC.Types... 19:54:53 darn 19:54:56 og 19:55:00 *oh 19:55:08 > local tail head "test" 19:55:10 'e' 19:55:46 http://www.reddit.com/r/IAmA/comments/ybmmh/we_are_engineers_and_scientists_on_the_mars/c5u7qm7 19:57:53 ion: hey just apply for a job at nasa already :P 19:57:56 -!- aloril has joined. 19:58:24 “Do you have an opening for a photoshopper?” 19:59:12 i'd work on the presentation. or rather, i'd suggest you do. 20:00:05 Hey, it's coming up to a year since I joined this channel 20:00:06 anyway, they probably fired the old one after budget cuts. 20:00:16 wat. 20:00:32 it seems shorter. but years always do. 20:00:33 For the first time, not this time 20:00:42 `pastlogs Taneb 20:00:45 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: pastlogs: not found 20:00:54 `pastlog Taneb 20:01:10 Oh dear 20:01:13 Bad idea 20:01:27 No output. 20:01:33 `help 20:01:35 Runs arbitrary code in GNU/Linux. Type "`", or "`run " for full shell commands. "`fetch " downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert " can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/ 20:01:41 `ls /bin 20:01:44 bash \ bunzip2 \ bzcat \ bzcmp \ bzdiff \ bzegrep \ bzexe \ bzfgrep \ bzgrep \ bzip2 \ bzip2recover \ bzless \ bzmore \ cat \ chgrp \ chmod \ chown \ cp \ cpio \ dash \ date \ dd \ df \ dir \ dmesg \ dnsdomainname \ domainname \ echo \ ed \ egrep \ false \ fgrep \ grep \ gunzip \ gzexe \ gzip \ hostname \ ip \ kill \ less \ lessecho \ lessfile \ lesskey \ lesspipe \ ln \ login \ ls \ lsmod \ mkdir \ mknod \ mktemp 20:02:33 `ls 20:02:36 bin \ canary \ foo \ karma \ lib \ paste \ quotes \ share \ wisdom 20:02:42 `ls /paste 20:02:44 ls: cannot access /paste: No such file or directory 20:02:50 `file paste 20:02:53 paste: directory 20:02:59 :/ 20:04:37 -!- Eladith has quit (Quit: leaving). 20:05:37 -!- yorick has quit (Ping timeout: 272 seconds). 20:07:26 -!- yorick has joined. 20:09:21 Okay, I think I first appeared here on the 11th of July 2011 20:09:53 Hello! 20:10:21 Yeah 20:10:26 So, over a year already 20:10:28 Wow 20:10:49 Nobody welcomed me that day 20:11:21 `WELCOME atriq 20:11:25 ​ATRIQ: WELCOME TO THE INTERNATIONAL HUB FOR ESOTERIC PROGRAMMING LANGUAGE DESIGN AND DEPLOYMENT! FOR MORE INFORMATION, CHECK OUT OUR WIKI: HTTP://ESOLANGS. 20:11:35 `? Ngevd 20:11:38 QeK{.[. 20:12:03 `learn atriq is rot13 for something. Needs further investigation. 20:12:06 I knew that. 20:12:38 `? Ngevd 20:12:41 ​!e..+.V.\T/>03N.&."t..d.{D_Mw'n,t;-xɼ..5\_Ҝ..|.w^..ѧj$.VG@dBJ9$.g.&%...q=`j \ i._.MB'3.cH....>CX...x@?.>K...=UgP#bfuy+0!lA..\.W(8=߾ `.wu 20:12:55 `? Taneb 20:12:58 Taneb is not elliott, no matter who you ask. 20:13:02 `? Hexham 20:13:05 Hexham is a European town. There are nine people in Hexham, and at least two of them are in this channel. Taneb looks after the ham. 20:13:37 -!- atriq has quit (Quit: AAAAH HEADACHE). 20:15:36 You can make a (Codensity ((->) x)) monad to be like a (State x) monad? And what do you make from (Codensity (State x)) monad? 20:17:35 -!- morel has joined. 20:21:41 ion: are you a professional photoshopper 20:21:52 I figured out how to make double negative elimination by continuation monads. 20:21:54 ... questionmark 20:22:29 olsner: Just an amateur gimper. 20:22:45 Do NASA need any professional photoshopper? Don't they have their own software? 20:23:06 they need to apply some color filters to make mars images mars red 20:23:19 ... so that people don't think they're fake 20:24:03 But I think they have their own software for that, isn't it? 20:24:52 And I think the purpose of that is to make the picture more clear, not because of thinking they are fake? Since the picture from the camera is imperfect. 20:24:53 probably, but perhaps photoshop would be way better at it only they have no qualified personel to operate it 20:25:28 olsner: I don't think Photoshop would be better at it. 20:25:38 me neither 20:25:51 I'm just trying to figure out a way for ion to get a job at NASA 20:25:57 -!- Phantom_Hoover has joined. 20:26:37 I would use ImageMagick (I think ImageMagick even supports the formats used in astronomy) but don't know enough about the camera and that stuff to know what filters to use. Their own specific software might work better for this purpose, though. 20:26:49 so that he can become known as "ion: the man who finnished NASA" 20:26:55 oh, oops. i thought this chan is about esoteric programming languages :D sorry 20:27:11 morel: It is but people say many other thing too 20:27:21 oic 20:28:12 `welcome morel 20:28:16 morel: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page. (For the other kind of esoterica, try #esoteric on irc.dal.net.) 20:28:27 yay 20:28:40 that's #esoteric@irc.dal.net?? 20:28:44 *what 20:29:00 is HackEgo written in brainfuck? :) 20:29:08 alas, no. 20:29:16 not quite sure what the "other kind of esoterica" is, but ghosts and stuff I guess 20:29:20 A neopagan channel. 20:29:20 fizzie: WHERE IS FUNGOT 20:29:21 Phantom_Hoover: You have 1 new message. '/msg lambdabot @messages' to read it. 20:29:46 `quote poltergeist 20:29:50 No output. 20:29:53 oh, neat. lambdabot is here, too <3 20:30:48 !bf bf_txtgen Egobot knows many esolangs. 20:30:49 Yes, thanks to my brilliant diplomacy. 20:30:50 No output. 20:30:53 oops 20:30:57 !bf_txtgen Egobot knows many esolangs. 20:31:00 ​278 ++++++++++++++[>++>+++++>+++++++>++++++++<<<<-]>>-.>+++++.>-.<<+++++++++++++++++++++++++++++.+++++++++++++.+++++.<++++.>>++++.+++.>.<<+++.----.<.>>-.------------.>-.<<++++++.<.>>++++.<------.----.---.>----.>.<++++++.>+++++.<<<++++++++++++++.------------------------------------. [751] 20:31:08 @faq Can Haskell create a such a heavy-weight stone such that it can't even hold the stone itself? 20:31:09 The answer is: Yes! Haskell can do that. 20:31:13 !bf ++++++++++++++[>++>+++++>+++++++>++++++++<<<<-]>>-.>+++++.>-.<<+++++++++++++++++++++++++++++.+++++++++++++.+++++.<++++.>>++++.+++.>.<<+++.----.<.>>-.------------.>-.<<++++++.<.>>++++.<------.----.---.>----.>.<++++++.>+++++.<<<++++++++++++++.------------------------------------. 20:31:14 Egobot knows many esolangs. 20:31:51 cool 20:32:12 > "Egobot knows many esolangs." -- the haskell version 20:32:14 "Egobot knows many esolangs." 20:32:21 :D 20:33:20 Ask ghost and stuff if you want, too, I suppose, but generally that is not the topic here. But a lot of stuff are ask that are not quite the topic here, anyways. But still you should read the wiki of esolang if you are able to do so. 20:34:08 `? zzo38 20:34:11 zzo38 is not actually the next version of fungot, much as it may seem. 20:34:41 `? boily 20:34:44 boily? ¯\(°_o)/¯ 20:34:46 `? oerjan 20:34:49 Your evil overlord oerjan is a lazy expert in future computation. 20:35:05 HackEgo doesn't know about me :-/... 20:35:12 `? olsner 20:35:16 olsner? ¯\(°_o)/¯ 20:35:21 last time I checked it didn't know about me either 20:35:36 People make a link of a file on Wikipedia someone else thought resembles the portrait of me, but I think it is actually a drawing, even though some people don't agree. 20:35:38 oh well. I'm a known unknown in the set of unknowns. 20:35:46 olsner: Do *you* know about you? 20:36:06 zzo38: not a lot, but I seem to exist at least 20:36:09 `run echo "boily may be French or something. We are not sure about the rest." >wisdom/boily 20:36:12 No output. 20:37:28 `run echo "boily may be French or something. We are not sure about the rest." >wisdom/boily 20:37:31 No output. 20:37:36 `? boily 20:37:39 boily may be French or something. We are not sure about the rest. 20:37:43 :D 20:38:17 `learn olsner seems to exist at least. 20:38:17 I like the vagueness of it. 20:38:21 I knew that. 20:38:25 `? olsner 20:38:29 olsner seems to exist at least. 20:38:43 somewhat underwhelmingly wise 20:39:01 WELL YOU DIDN'T GIVE US MUCH INFORMATION TO GO BY 20:39:10 SORRY 20:39:10 shachaf: no, i'm in .ie for the night and then back to .us tomorrow afternoon 20:41:55 I want aerogel now 20:42:22 Theromos with aerogel insulation would be neat >.> 20:42:34 *Thermos 20:42:51 how hard is it to sustain a comparably insulating partial vacuum? 20:47:13 Aerogel may also be more fun to play with >.> 20:51:02 kmc, uh, what's standard Thermos flask vacuum? 20:51:46 no idea 20:51:53 just seems like it should be cheaper than aerogel >_< 20:54:07 -!- MoALTz has quit (Ping timeout: 240 seconds). 20:54:09 someone on the internet claims that thermal conductivity does not decrease much with decreased gas pressure o.O 20:54:35 http://www.eng-tips.com/viewthread.cfm?qid=210603 20:56:14 Hmm 20:56:15 http://www.shivershield.com/ 20:56:23 Clothing made with aerogel for insulation 20:57:14 ...it is very expensive. 20:59:39 kmc, hmm, that does say that convection is the reason partial vacuums insulate. 21:00:14 makes sense 21:02:03 * Sgeo wonders if clothing with vacuum insulation could ever make sense 21:02:17 Uh. 21:02:33 The concept of a flexible vacuum chamber is... impractical. 21:07:07 http://www.youtube.com/watch?v=9zocS3sxi0Q 21:12:50 i just implemented the lambda-calculus with bruijn-indexes in haskell =) 21:14:56 IT ONLY COUNTS IF YOU DO IT IN THE TYPE SYSTEM 21:20:34 -!- soundnfury has quit (Ping timeout: 256 seconds). 21:21:44 I THINK YOU MEAN THE KIND SYSTEM 21:22:17 * kmc drops his pants 21:23:08 `sanetemp -310 21:23:11 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: sanetemp: not found 21:23:13 ion: O KAY 21:23:16 wat 21:23:22 !sanetemp -310 21:23:23 dc: stack empty \ 154.4 21:23:28 argh 21:23:51 `frink -310 F -> C 21:24:03 Error 21:24:27 bloody frink and its weird way of doing temperature 21:24:36 `frink -310 Fahrenheit -> Celsius 21:24:37 `frink -310 F*volt -> C 21:24:49 Warning: undefined symbol "Fahrenheit". \ Warning: undefined symbol "Fahrenheit". \ Error 21:24:53 * oerjan swats ion -----### 21:25:04 ​-310 21:25:16 > (-310-32)*5/9 -- bah 21:25:18 -190.0 21:25:28 -!- elliott has joined. 21:25:31 coppro: You work on clang, right? 21:25:42 elliott: ish 21:25:55 !sanetemp 310~ 21:25:56 dc: stack empty \ 154.4 21:26:03 coppro: How's its C++11 support? 21:26:05 that isn't it either :( 21:26:08 elliott: excellent 21:26:09 Oh, http://clang.llvm.org/cxx_status.html. 21:26:22 the attributes thing is a lie 21:26:24 OK, that does look pretty good. 21:26:29 the rest is right 21:26:31 !show sanetemp 21:26:31 sh dc -e "1k?32-5*9/p" 21:26:38 attributes are supported except for a few corner cases 21:26:48 "Patches are needed to make libstdc++-4.4 and libstdc++-4.7 work with Clang in C++11 mode." 21:26:53 This sounds bad. Do I need to care about this? 21:26:56 Maybe I'll check what version I have. 21:27:06 I have v6, apparently! Good. 21:27:09 how does one give a negative number in dc anyway 21:27:15 Oh, wait, that's the soname. 21:27:45 oerjan: _ 21:27:53 !sanetemp _310 21:27:54 ​-190.0 21:28:15 yay! now i just have to actually remember that. 21:28:39 elliott: get libc++ obv 21:28:52 coppro: That's a little more work than I can be bothered with. 21:29:40 elliott: the net result is clang is the best compiler ;) 21:32:01 -!- aloril has quit (Ping timeout: 244 seconds). 21:37:29 coppro: help. http://sprunge.us/OMAB 21:39:00 elliott: that's libstdc++ 4.7 21:39:15 those errors aren't caused by that though 21:39:24 (okay that's actually 4.7.1; I don't know if they fixed the bug) 21:39:36 elliott: link against libstdc++ 21:39:42 elliott: did you use clang++ 21:39:45 oh 21:39:49 i was using clang rather than clang++ 21:39:50 ha ha woops 21:40:00 all i remembered is that clang was fancy and autodetected .cc file extensions 21:40:02 are you meant to use clang++ instead 21:40:32 clang will autodetect into C++ mode, but won't add corresponding flags like -lstdc++ 21:40:39 clang++ will 21:40:43 possibly this is a bug 21:41:34 coppro: consider it reported 21:41:35 (to you) 21:41:54 yeah 21:42:04 elliott: are you compiling to a .o file? 21:42:09 or directly to binary? 21:42:32 clang build/abl-show.o build/abyss.o build/acr.o build/beam.o build/chardump.o build/cloud.o build/command.o build/console.o build/debug.o build/delay.o build/decks.o build/describe.o build/direct.o build/dungeon.o build/effects.o build/fight.o build/files.o build/globals.o build/hiscores.o build/initfile.o build/insult.o build/invent.o build/it_use2.o build/it_use3.o build/item_use.o build/itemname.o build/itemprop.o build/items.o build/lev-pand 21:42:32 .o build/libutil.o build/macro.o build/maps.o build/menu.o build/message.o build/misc.o build/monplace.o build/mon-pick.o build/monstuff.o build/monspeak.o build/mon-util.o build/mstuff2.o build/mutation.o build/newgame.o build/ouch.o build/output.o build/overmap.o build/player.o build/randart.o build/religion.o build/skills2.o build/spells1.o build/spells2.o build/spells3.o build/spells4.o build/spl-book.o build/spl-cast.o build/spl-util.o build 21:42:33 /stash.o build/stuff.o build/tags.o build/transfor.o build/travel.o build/view.o build/Kills.o build/mt19937ar.o -lncurses -o build/crawl-anc 21:42:36 that's the exact command 21:42:40 so yes, linking a binary 21:42:48 from a bunch of C++ objects 21:42:49 it can't autodetect source language of object files 21:42:51 right 21:42:57 I assumed not, but you said it might be a bug 21:43:01 so I thought maybe there is some fanciness I was missing 21:43:07 well clang foo.cpp should probably work right imo 21:43:37 Can we make a card game based on chess boxing? 21:43:49 coppro: are you sure it can't detect whether an object file is C++? 21:43:50 zzo38: only you can 21:43:51 hmm 21:44:07 i think zzo38 is precisely the right person for that 21:44:08 elliott: not really. clang uses system ld iirc 21:44:15 -!- aloril has joined. 21:44:17 elliott: ld perhaps could be inspecting for definitions of mangled names 21:44:32 but any such thing would be heuristic 21:45:20 Someone who knew how to play Xiangqi once told me that she tried to learn chess but couldn't because it was complicated. 21:45:34 you could just put something in the object file which says what the source language was 21:45:47 it would not be hard in principle, but i don't know of any such thing 21:46:05 object files already have all kinds of non-loadable informative sections 21:46:20 kmc: but the clang driver would have to inspect it 21:46:25 clang does not know how to read object files 21:46:41 with gcc the object files can actually contain intermediate representation code 21:46:50 for eventual link-time optimization and codegen 21:46:51 coppro: yeah 21:46:56 I think clang even supports most of GNU89 21:47:06 zzo38: it does 21:47:31 "Cambridge police: Man huffs screen cleaner, resists arrest" 21:48:12 so proud of my town 21:48:37 kmc: which country? 21:48:47 cambridge massachussetts USA 21:49:17 I know all the cambridges that matter 21:49:23 and there's no more than one per country 21:50:45 also "Woman arrested for flashing breasts at passersby" 21:50:48 just down the street 21:52:03 Cambridge, Ontario has 126,000 people 21:52:27 and is the home of a bunch of famous hockey players i've never heard of 21:53:08 there's a town of Cambridge *and* a village of Cambridge in New York State 21:53:11 they partially intersect 21:55:55 -!- david_werecat has joined. 21:56:23 There are 3845 Cambridges in England 21:56:49 They are all in the same place though 21:57:34 -!- Phantom_Hoover has left ("Leaving"). 21:58:02 amazing 22:05:14 coppro: does nesting std::arrays do what i expect 22:05:20 "Cambridge police: Man huffs screen cleaner, resists arrest" <-- sheesh, the poor guy obviously was just trying to clean his nose! 22:05:38 elliott: think so 22:05:50 yay 22:06:07 -!- sirdancealot7 has quit (Read error: Connection reset by peer). 22:08:59 does anyone know anything about mingw 22:09:10 I do 22:09:11 Why 22:10:03 is it up-to-date enough gcc-wise for c++11? is, uh, whatever C++ runtime library it uses? (just Windows'? I forget how it works.) 22:11:20 Hmm, I don't know that, let me test 22:11:59 specifically I'm worried things like std::array and so on won't work 22:12:08 because Windows 22:12:11 i486-mingw32-g++ (GCC) 4.7.0 22:12:17 That should be up-to-date enough 22:12:22 ok, so the gcc is definitely up-to-date enough 22:12:38 My gcc is 4.7.1 though 22:12:43 So mingw isn't the latest 22:12:44 it still uses Windows runtime libraries though, right? 22:12:49 i guess with C++ it's weird because so much is defined in header files 22:12:49 But almost the latest 22:16:54 oerjan: Perhaps the police should tell him if that is not a good way to clean his nose. 22:18:39 elliott: Windows headers only declare the Windows stuff, not the rest 22:19:31 Right. But Windows still has a libc/libstdc++, doesn't it? 22:19:36 Or maybe MinGW supplies that. Windows is confusing. :/ 22:23:55 Oh god why am I looking at Smalltalk I hate single-dispatch 22:23:58 zzo38: well they don't have to be so impolite about it! 22:24:07 And I also hate cultures of monkey-patching 22:24:09 oerjan: Yes I agree 22:24:12 So why am I looking at it 22:24:21 They shouldn't have to be so impolite about it 22:25:01 'Bradbury reportedly exhaled and then yelled, letting out “a thunderous laugh.” Officers identified themselves and told him he was under arrest, at which point, Bradbury reportedly said, “Ohh, shit,” and laughed again.' 22:25:38 then he tried to punch the cops 22:25:45 * oerjan beckons Sgeo with some multiparameter type classes 22:26:10 they're functional _and_ dependable! 22:26:52 c.c 22:27:04 kmc: he was just looking for a free place to stay 22:27:09 the rent is too damn high, etc 22:27:20 it is 22:28:24 oerjan, and the only language I know of with them is not generally considered a language with a dynamic environment and a nice debugger and IDE 22:29:01 Sgeo: you want a dynamic environment but _not_ monkey-patching? how inconsistent! 22:29:46 Is Common Lisp not a good example? 22:29:49 i think common lisp has multiple dispatch + the rest though 22:30:02 Dynamic, no monkey-patching that I know of 22:30:13 well you go right ahead 22:34:44 -!- boily has quit (Quit: Poulet!). 22:34:49 I'm trying to remember why I recently preferred Tcl to Lisp 22:35:25 an evil circle, surely 22:36:00 "More importantly, I can read code written by others and understand what they meant relatively easily. " 22:36:18 Really? Seems like Lisp is a good language for deliberate obfuscation 22:36:30 Or... I would think so 22:37:16 I think one thing that scared me away was I wasn't sure how to do file stuff 22:38:03 Lisp has a lot of ()s 22:38:15 Common Lisp doesn't have coroutines. Tcl 8.6 will have coroutines. 22:38:28 I prefer uncommon lisp 22:40:42 If the parens is what's bothering me about Lisp, then that's sad, it shouldn't be 22:40:49 I think the whole emacs thing does bother me though 22:42:31 I do prefer vim 22:42:41 http://www.wuwei.name/render-update-demo 22:42:49 The factorial thing is too much fun 22:45:09 Factorial in Haskell: factorial 1 = 1; factorial n = n * factorial (n - 1) 22:45:44 At least I think this would work 22:45:47 FreeFull, not TCO 22:46:06 Also, breaks on factorial 0 22:46:25 Well, then add a case for factorial 0 at the beginning 22:49:11 I think also, I appreciate Tcl's "Look at the provided AST or whatever and manipulate stuff at runtime" vs CL's "Do it at macroexpansion time" 22:49:51 In Tcl, there's a clear visual distinction between giving a command a variable's name and giving it some variable's value. 22:50:03 In CL, a macro can do whatever it pleases. 22:50:06 > scanl1(*)[1..] 22:50:08 [1,2,6,24,120,720,5040,40320,362880,3628800,39916800,479001600,6227020800,8... 22:50:17 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 22:50:18 Although admittedly, it means Tcl is less flexible. 22:50:25 But I'm not sure if that's really that major a concern. 22:50:30 Sgeo: but you can do that with cl functions tho 22:50:38 (if x 'y), define if appropriately 22:50:46 only problem is scoping but I think you can manage that with a wrapper macro 22:51:01 Lisp has a lot of ()s 22:51:02 woah 22:51:05 i hadn't noticed 22:51:10 thanks for pointing this out 22:51:16 elliott, but typically for metaprogramming stuff, people don't write functions, they write macros 22:59:20 -!- epicmonkey has quit (Ping timeout: 244 seconds). 23:00:21 -!- Phantom_Hoover has joined. 23:01:09 ...this page just called macros "less powerful" than something 23:01:37 people have a tendency to define the word "power" in whatever way suits their agenda 23:01:58 http://web.cs.wpi.edu/~jshutt/kernel.html 23:02:13 oh, right 23:02:21 not what i was expecting 23:02:28 yes, operatives are nicer than macros 23:02:48 i don't know about "more powerful" exactly 23:03:03 you can use operatives to build everything else, in a way that doesn't work for macros 23:03:20 read shutt's phd thesis or read my blog post here: http://mainisusuallyafunction.blogspot.ie/2012/04/scheme-without-special-forms.html 23:03:34 i love kernel 23:03:37 except for its symbol prefices 23:03:39 i don't love those much 23:03:54 or you know use blogspot.com or blogspot.whatevercountryyouhappentobein 23:04:00 it matters not a damn 23:04:04 elliott: yeah i know right 23:04:09 How is main usually a function? 23:04:17 Sgeo: it's a gcc warning 23:04:30 Oh. But in Haskell main is usually not a function. 23:04:38 kmc: don't you know you only code in haskell 23:04:38 forever 23:04:45 blogspot.ie is a very cool blogspot domain I think 23:04:47 Sgeo: indeed 23:04:48 how many people even realise .ie exists 23:05:14 Sgeo: so you can take it as a statement about how unusual haskell is 23:05:33 Sgeo: but my blog is not about haskell, anyway. you'll find bits of code in lots of languages 23:05:41 the one i just linked is scheme 23:06:34 * Sgeo is reading 23:06:43 it matters not a damn <-- I WANT CANONICAL URLS DAMMIT 23:07:26 i think i've featured haskell, python, c, c++, scheme, bash, and Autoconf 23:07:53 as well as x86 assembly (possibly 16-, 32-, and 64-bit) 23:08:06 -!- copumpkin has joined. 23:09:04 cannon nickel 23:09:14 so in haskell main isn't a function, python, scheme and bash don't _need_ main and i dunno about Autoconf :P 23:10:12 const int main[] = { 14776, 3942977280, 247 }; 23:10:22 I THINK THAT'S A _USUALLY NOT_, MATE 23:10:45 -_- 23:10:49 kmc: that is a bad idea right? 23:11:02 lexande: no it's the best idea 23:11:07 ideally do it in all your prorgams forever 23:11:09 *programs 23:11:22 ass butts 23:11:40 `? kmc 23:11:43 kmc? ¯\(°_o)/¯ 23:12:05 `learn kmc is nice but we don't get his occasional bouts of Tourette's. 23:12:09 I knew that. 23:12:39 that is a bad entry 23:12:43 you should feel bad, oerjan :'( 23:12:56 this is usually a pointer? 23:13:20 ok i guess it's not fun making fun of people with tourette's 23:13:24 Wanted to say "that is usually a pointer" but that makes no sense 23:13:29 `rm wisdom/kmc 23:13:33 No output. 23:14:35 sweet, i have the ability to make oerjan feel bad on demand 23:15:03 Sgeo: only in C++ but not in visual basic or cobol 23:15:05 herp derp 23:15:05 * Sgeo ponders similarities between operatives and Tcl commands 23:15:24 I LEAVE http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.10835 AS EVIDENCE, HOWEVER 23:16:18 * Sgeo reads "Revised -1 Report on the Kernel Programming Language" 23:16:34 prevised 23:18:36 i don't actually have tourette's btw 23:18:42 elliott, I assume the $ prefix is a convention to distinguish operatives from applicatives? 23:18:44 O KAY 23:18:48 elliott, what alternatives are there? 23:19:01 you don't need an alternative because applicatives are a subset of operatives 23:19:05 in fact I don't know why Kernel separates them at all 23:19:13 i have some obsessive-compulsive tendencies and some tourettes-like tendencies but i think neither is strong enough to be a diagnosable condition 23:19:22 elliott: so that you can write 'apply' more cleanly 23:19:33 kmc: i find the low-level tangly definition more satisfying 23:19:36 anyway i did it differently in my thing 23:19:36 it looks purer 23:19:37 yeah 23:19:44 it's purer because the interpreter has fewer cases 23:19:47 Applicatives may be a subset of operatives but mistaking an operative for an applicative could be bad 23:19:56 my interpreter has three cases: variable, operative, and anything else 23:20:11 anything else = evaluates to itself 23:20:17 Erm, a non-applicative operative for an applicative 23:20:22 sorry, that should be variable, application, and anything else 23:20:33 sweet, i have the ability to make oerjan feel bad on demand <-- everyone has that ability, elliott. what's unusual is getting me to _act_ on it. 23:20:34 an operative itself evaluates to itself 23:20:43 but a combination like (operative arg1 arg2...) does not 23:21:26 elliott: anyway even if applicatives are operatives, you might still want that convention to distinguish that subset of operatives from the rest 23:21:36 it's an important subset because you can apply functional / equational reasoning to them 23:22:40 but i decided it was ugly for my little thing 23:22:48 and plus i wanted the names to match scheme 23:23:04 or else the magic trick doesn't work 23:23:19 "but still, where did the lighter fluid come from?" 23:24:41 * Sgeo will re-read kmc's blog post more thoroughly after reading this pdf 23:26:41 kmc: well when I want equational reasoning I don't use a language like this 23:28:09 Does Kernel have continuations? And if so, delimited or undelimited? 23:28:41 Sgeo: shutt writes about those on his blog: http://fexpr.blogspot.ie/ 23:28:57 this went way the hell over my head 23:29:49 elliott: in principle the idea of a language like kernel is that you can start with a very small core and build it up using libraries into something you'd actually want to use 23:29:49 I can recite (well, paraphrase) Oleg's claims about delimited vs undelimited continuations but without comprehension 23:30:02 which would presumably include equational reasoning 23:30:08 at least of the weak sort 23:30:22 where you want like (f 2) = (f (+ 1 1)) 23:30:40 f(2) = f(1+1) for you LOLPARENTHESES people 23:30:52 kmc, there's something to be said for building a community around X idea or not, which is distinct from whether a language supports X 23:31:02 elliott: in principle the idea of a language like kernel is that you can start with a very small core and build it up using libraries into something you'd actually want to use 23:31:07 in Kernel this is not necessarily true, and it depends on the value bound to f at runtime 23:31:07 i don't really do equational reasoning in any lisp-like 23:31:14 elliott: i don't believe you 23:31:20 unless you don't use these languages at all 23:31:21 well the thing is that I don't really use Lisp-likes 23:31:25 Well, not distinct, but... you can imagine a library for Lisp to do mostly immutable programming, but that doesn't mean there's a community of people using it 23:31:26 well ok then 23:31:27 because I can't do equational reasoning with them :P 23:31:53 but yes I think unrestricted macros are a bad idea in general 23:31:56 but they are cute, at least 23:32:00 and they make a very small language 23:32:17 are you talking about macros or operatives? 23:32:29 it's probably true for both, but you said "macros" and we were just talking about operatives 23:32:48 Are kernel variables objects? 23:33:08 the variable itself? no 23:33:20 ... 23:33:21 like scheme, you have environments which map names to values 23:33:38 a "variable" is just a single slot in this mapping 23:33:56 And these maps are first-class, I guess? 23:34:12 i don't remember how it is in kernel 23:34:28 in my language they are, because the interpreter exposes the fact that an environment is just a list of alists 23:34:44 well right they need to be at least minimally first-class in kernel 23:35:17 because vau binds the dynamic environment to a name 23:35:33 "This abstract behavior need not cause actual 23:35:33 implementations to rapidly exhaust their storage space, because without violating 23:35:33 the required abstract behavior, they can reclaim the storage occupied by an object 23:35:33 if they can prove that the object cannot possibly matter to any future computation." 23:35:43 basically the caller's environment is made into an implicit function parameter 23:35:47 Things that Tcl cannot do. 23:35:49 s/function/operative/ 23:37:44 Sgeo: it's impossible to implement Tcl with garbage collection? 23:38:27 It's impossible to claim that a value will never be used again 23:38:37 Although I think there is some internal garbage collection 23:39:15 It's really only a problem when a value represents some external resource 23:39:22 why is it impossible 23:39:38 kmc, everything is a string. Easy to build a string at any point 23:39:57 i think you are confusing variables and values again 23:40:18 in most dynamic languages you can read or write a variable by its string name 23:40:19 If there's extra data associated with that string beyond what's in the string itself, having the string again won't help reconstruct whatever 23:40:30 but if an object in memory no longer has any name whatsoever 23:40:32 then it is unreachable 23:40:35 Can you design a computer hardware? 23:40:58 The way OO systems in Tcl usually work is having the "object" be a string that refers to, say, a namespace 23:41:10 Can't prove that the string won't ever be reconstructed... 23:41:47 when i said "object" above i was not trying to bring OO into it 23:42:05 i'm just talking about an allocated thing 23:42:06 * Sgeo was trying to use an example of when it's an issue 23:42:30 anyway it sounds like that string is just the name of the namespace 23:42:35 and so, the namespace is not dead 23:42:49 because it's referenced by some environment 23:42:59 this sounds exactly like scheme or python or whatever other dynamic language you like 23:43:22 if i write "foo.x = 3" in a Python program, i can later do getattr(foo, "x") 23:43:28 that's fine 23:43:36 the 3 doesn't get garbage collected because it's reachable from foo 23:44:32 kmc: if foo is a global thing that you store all your data in tho 23:44:36 What programming language can be used to design the computer hardware by specifying the transistors? 23:44:37 as in if foo is everyObjectInTheSystemByName 23:44:42 then that means you can never GC any object 23:44:59 (object as in member of everyObjectInTheSystemByName, not as in datum) 23:45:28 zzo38: SPICE 23:45:55 yes, you cannot garbage collect things which have names 23:46:16 GC is mainly interesting if you have mutation 23:46:16 kmc, in Tcl, there's no way to have mutable data structures that don't have names 23:46:55 x = f(x) 23:47:04 the old value of x can be forgotton because it is no longer reachable 23:47:09 it has been overwritten with the new value of x 23:47:28 (You can have immutable data structures with no names) 23:47:33 SPICE can try to emulate it but I mean to make it in a real computer hardware. 23:49:30 I think SPICE is for analog electronics anyways. 23:49:38 But what if you want a digital computer? 23:52:03 digital electronics are really analog electronics 23:52:25 this way you can have a precise physically based model of the gate delays in your computer 23:52:31 of course it will be completely impractical to simulate 23:52:47 but you asked for specifying transistors, not gates or other abstract HDL elements 23:55:14 6.004 uses an analog transistor simulator for early labs 23:55:18 with a SPICE-like language 23:55:29 and then in later labs you use the same language in a digital simulator 23:55:47 where the primitives are things like "4-input NAND gate" or "2-way multiplexer" 23:56:22 but it still models gate delay, using specified output strength and input impedence for each gate 23:56:50 and you try to change the logic around so your processor can support a higher clock speed in the simulator 23:57:15 like inserting buffers after gates which need to drive a lot of inputs 23:57:31 and switching to inverting gates (nand, nor) rather than and/or 23:57:36 because apparently those are faster in cmos 23:57:53 and changing the topology of the adder