00:07:28 -!- elliott has quit (Quit: doop). 00:14:16 -!- kmc has quit (Quit: Leaving). 00:19:00 -!- pikhq_ has joined. 00:19:15 -!- hagb4rd has quit (Ping timeout: 240 seconds). 00:19:16 -!- pikhq has quit (Ping timeout: 248 seconds). 00:27:29 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 00:29:25 -!- pikhq has joined. 00:29:48 -!- pikhq_ has quit (Ping timeout: 252 seconds). 00:37:11 finish this analogy 00:37:24 Christianity:Windows::Wicca:? 00:40:52 Christianity has many distros 00:42:18 -!- DCliche has joined. 00:45:54 -!- Klisz has quit (Ping timeout: 252 seconds). 00:46:27 -!- DCliche has changed nick to Klisz. 00:51:33 -!- copumpkin has joined. 00:52:34 -!- calamari has joined. 00:53:50 -!- hagb4rd has joined. 00:57:57 Jafet: yes, true, but ignore that for now. is has the property that (a) the majority of religion-users in the western world use it and (b) it is very much targeted at the lowest common denominator, although there is latent potential for power users as well. 01:04:16 Shame you didn't go with Scientology. 01:04:21 Then I could finish it so easily. 01:04:39 ::Scientology:LoseThos 01:05:54 i want to know which OS is so esoteric and obscure that only paganism suits it 01:06:18 I'm inclined to go with OS/2. 01:06:32 Or perhaps FreeDOS. 01:07:16 but but, it needs to be an os which claims to be the modern revival of an os which windows brutally crushed 01:07:45 An OS/2 remake? 01:07:55 OS/2 is still maintained. 01:08:57 Modern Christianity has as many pagan elements as Christian elements 01:09:28 -!- Jafet has quit (Quit: Leaving.). 01:18:13 eek, reddit won't load, i haven't seen that in a while 01:36:25 How about that BeOS remake? 01:38:56 Not that BeOS really counts as "brutally crushed" in the "existed earlier but then" sense, more in the "tried to get going but then" one. 01:39:58 Jafet: Yes, I can understand. The religions are based on older traditions so that includes Christian as well as pagan (for various reasons; you might learn on Wikipedia) 01:40:36 I use FreeDOS at a Roman Catholic education center. 01:47:35 -!- elliott has joined. 01:47:51 01:05:54: i want to know which OS is so esoteric and obscure that only paganism suits it 01:47:54 paganism is "so esoteric and obscure"? 01:48:35 IT TOTALLY IS 01:49:24 01:06:18: I'm inclined to go with OS/2. 01:49:31 pikhq: For some reason I want to say that OS/2 is Zoroastrianism. 01:49:34 I know little about both. 01:49:54 01:36:25: How about that BeOS remake? 01:50:15 fizzie: It's called Haiku, dude, there's pretty much no chance it's not Buddhism? 01:55:32 A quick look as WIikipedia ways that Wicca is a specific form of paganism related to witchcraft. 01:56:42 That agrees with what I know from that Scoobie Doo movie with the wiccans in it. 01:56:50 `addquoet A quick look as WIikipedia ways that Wicca is a specific form of paganism related to witchcraft. That agrees with what I know from that Scoobie Doo movie with the wiccans in it. 01:56:52 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: addquoet: not found 01:56:56 `addquote A quick look as WIikipedia ways that Wicca is a specific form of paganism related to witchcraft. That agrees with what I know from that Scoobie Doo movie with the wiccans in it. 01:56:58 762) A quick look as WIikipedia ways that Wicca is a specific form of paganism related to witchcraft. That agrees with what I know from that Scoobie Doo movie with the wiccans in it. 01:57:05 Haiku - "I can't believe it's not but.. Buddha". 01:57:12 MDude: You should write a book and call it Everything I Know About Wicca I Learned From Scooby Doo. 01:58:04 -!- cheater has joined. 01:59:23 Is there any operating system connected to to some earlier system that was hunted down in a manner similar to a witch hunt? 02:00:04 MDude: All I can think of is if SCO suceeded in DESTROYING LINUX and then someone started developing it again decades later. 02:00:10 That didn't happen though. (YET?) 02:00:21 Also, I heard about wiccans form other places, but figured it was mostly generic pagan stuff. 02:00:28 I don't think operating systems are hunted a lot. 02:00:45 Though I guess I thought a lot of pagan stuff was connected to witches. 02:00:50 They're too boring, and there's a huge barrier to entry so obviously illegal stuff doesn't tend to happen. 02:01:05 MDude: Isn't "witch" just generic pagan stuff these days? :p 02:01:36 I don't really know, it's not the kind of tihng I keep up with. 02:01:49 There is actually a witchcraft-themed linix, though. 02:02:50 I found it by looking up "Linux grimoire". 02:03:54 That just brings up Source Mage for me. 02:04:00 I suppose that counts as "witchcraft-themed". 02:04:04 -!- thatmentat has joined. 02:04:14 Greetings friends. 02:04:28 `welcome thatmentat 02:04:31 thatmentat: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page 02:04:43 i should point out that in some muslim states you can _still_ get executed for presumed witchcraft, i saw one mention from saudi arabia in a paper today 02:04:45 * elliott is a `welcoming machine of ruthless efficiency 02:05:05 oerjan: We sure are unifying the two definitions of esoteric here. 02:05:05 Well it doens't seem like it's themed after ancient Persian scholars. 02:05:19 oerjan: And apparently in Canada it is illegal to charge money for "witchcraft" stuff or something like that..... 02:05:53 elliott: In that case, you can probably unify a lot of stuff in certain ways for certain purposes 02:05:55 This is a chat room for programming languages? 02:05:55 http://esoteric.voxelperfect.net/w/index.php?title=1_Chat_Line&curid=4885&diff=26035&oldid=26034 one of our spambots just tweaked the colours it's using 02:06:03 "naw, i think red is better here" 02:06:06 zzo38: wrt that i read in britain (until recently?) it was not illegal to _be_ a witch but it was illegal to _pretend_ to be one 02:06:12 thatmentat: Yes. Even if it doesn't seem like it right now. 02:06:16 (Are you here for that, or the other kind of esoteric?) 02:06:19 *-that 02:06:25 er 02:06:28 *-*-that 02:06:31 oerjan: well they might burn someone by mistake 02:06:45 thatmentat: Yes, it is a chat room for esoteric programming but we discuss a lot of things here anyways 02:06:45 I came for the second. I haven't the patience to learn programming. 02:06:59 thatmentat: you probably won't find it on freenode, then 02:07:02 it's mostly technology-oriented 02:07:52 What is mostly tech oriented? 02:07:58 freenode, the IRC network you are on 02:08:07 -!- cheater has quit (Ping timeout: 245 seconds). 02:08:23 But if you have a specific question (regardless of topic), you might ask. And then quit if you do not get an answer (unless it is a question about esoteric programming in which case stay) 02:09:17 thatmentat: alas we have never learned of a good irc channel to recommend for those who come here expecting the other interpretation of esoteric 02:09:44 oerjan: we should just make one and let them all trickle in, it'll be more active than this place within a year :P 02:09:52 that 02:09:52 heh 02:09:54 do that thing 02:10:01 I could use recommendations of other irc places though, even if not specifically esoterical. 02:10:07 I realized that if you define a monad transformer and/or comonad transformer then you can easily define return and extract as well the definition will always the be same: return = lift . return; extract = extract . lower; 02:10:16 elliott: well those guys who started #philosophy tried to do that, didn't they? how is it working? 02:10:23 send people to irc.dal.net #esoteric 02:10:26 ^ 02:10:29 it's not #philosophy, is it? 02:10:33 thatmentat: Oh, is that active? 02:10:41 it was a year ago i think 02:10:44 elliott: i thought it was _something_ like that... 02:10:45 more than not existing 02:10:53 * Users on #Esoteric: elliott thatmentat QueenAqua @^roshi marduk666 @Venus666 VenusSatanas_ Trollfood ami- Cocytus hippl^ 02:10:55 Cocytus again! 02:11:03 did that guy just join #esoteric on every server everywhere 02:11:16 -!- derdon has quit (Remote host closed the connection). 02:11:22 elliott: that list looks promising, at least :P 02:11:23 I have an IRC server too, however it has no channels what you want probably and hardly anyone is in there 02:11:29 thatmentat: well, glad you've found somewhere 02:11:36 oerjan: <^roshi> thing is there are several streams of alchemy 02:11:38 oerjan: looks good :P 02:11:52 * elliott lurks. 02:12:08 What about alchemy? 02:12:10 let us know if anything above and beyond the usual pale of ridiculousness falls out 02:13:10 quintopia: thatmentat is still here, you know! :P 02:13:47 What are you talking about alchemy? 02:14:21 elliott: what's your point? 02:14:44 -!- oerjan has set topic: Zeroth to prove spontaneous human combustion wins | This is a programming channel; if you are looking for the other kind of esoteric you might try #esoteric on irc.dal.net | Logs: http://codu.org/logs/_esoteric/. 02:15:05 oerjan: hey i was going to _ask_ them first 02:15:14 -!- elliott has set topic: Zeroth to prove spontaneous human combustion wins | http://codu.org/logs/_esoteric/. 02:15:15 elliott: well we can remove it again 02:15:33 oerjan: OK that is good. But still we discuss a various a lot of things in here. 02:15:52 I just joined ones that looked like they had people in them. 02:15:55 So, figure out, should that message be there or not? Maybe it makes too long? Or other reason? 02:16:07 * elliott asks them 02:16:08 I was curious. 02:17:05 Interesting response. I didn't think he would reject the idea elliott. 02:17:19 yeah that was out of left field :P 02:17:20 But note, once someone accessed this channel, and then quit, and then I had something about astrology and then they could not have their question answered because they missed it. But still, notice that we have more mathematical points of view so they might not have understood the answer anyways (maybe). 02:17:47 What are you talking about alchemy? <-- elliott was quoting an example message from the other #esoteric channel at dalnet 02:18:25 they refused? 02:18:33 quintopia: no, the guy misunderstood what i said 02:18:35 oh 02:18:57 What does "several streams of alchemy" mean anyways? Alchemy is what they did before they had proper science, they could do it like that they did not know things better or have better equipment to know better. Now we have chemistry 02:19:35 The idea is that there are several basic models for Alchemy I believe. 02:20:07 Alchemy as was being discussed goes beyond simply trying to manipulate materials. 02:21:01 `run echo "This channel is about programming -- for the other kind of esoterica, try #esoteric on irc.dalnet.net." >wisdom/esoteric 02:21:03 No output. 02:21:07 `? esoteric 02:21:10 This channel is about programming -- for the other kind of esoterica, try #esoteric on irc.dalnet.net. 02:21:44 elliott: Yes that way might be good idea instead of topic message, I supppose. 02:22:04 And then you can make a shortcut for those kinds of informations message. 02:22:12 the only thing that can successfully survive our constant topic changes is the log link :P 02:22:32 zzo38: as i understand, alchemy sometimes has a strong spiritual component aside from the chemistry - basically you are supposed to transform yourself at the same time as you are learning how to transform materials 02:23:10 when put like that, it sounds like you could possibly even make a modern version based on actual chemistry 02:23:21 oerjan: i'm afraid not: "It must never be supposed that the practice of alchemy consists only in the exercise of the mind, will, and imagination, or that the products obtained are imaginary and intangible or invisible to mortal eyes." 02:23:31 from a link posted in #esoteric while i was there :P 02:23:42 apparently you still need the physical materials, though. 02:23:57 elliott: "only" does not mean that it doesn't also involve that 02:24:02 oerjan: Yes, sometimes they did do spiritual things based on some ideas of alchemy. 02:24:06 oh, wait 02:24:08 must never be supposed 02:24:14 i completely negated that meaning 02:24:19 But I think it is "spiritual alchemy" instead of real alchemy. 02:24:55 hi gaiz 02:25:13 oh right. 02:25:15 -!- xxDarkProphetxx has changed nick to kallisti. 02:25:39 Now we have science so we don't need alchemy (except for the purpose of making up new alloys, sometimes, at least according to some opinions). 02:25:40 (that's /too/ much irony. I can't handle it) 02:27:11 zzo38: okay so I'm working on an IRC bot that is intended to assist tabletop RPGing over IRC. 02:27:12 Whatever the discussion in here, it often involves some scientific and mathematical stuff, sometimes. Because this is how the people in this channel are, in general. 02:27:33 kallisti: Yes I was doing so, too. I think one IRC server has a GS command to do that too 02:27:57 zzo38: should I use my native WoD terminology for concepts, or should I use D&D, or is there some standard terminology that isn't D&D? 02:28:13 most people say "gamemaster" and "campaign" where I would say "storyteller" and "chronicle" I think. 02:28:25 kallisti: I say "referee" in my opinion, at least. 02:28:36 D&D uses dungeon master sometimes, doesn't it? 02:28:38 that... no I don't like that. :P 02:28:38 For dice, just use 1d6+2 or whatever. 02:28:39 oerjan: yes 02:28:50 oerjan: game or dungeon master works. I think gamemaster is typically preferred. 02:29:00 oerjan: D&D usually calls "dungeon master" but you could use different terms. I prefer "referee" but use whatever you prefer. 02:29:01 but I honestly don't know much about D&D culture 02:29:13 because I don't play that game. 02:29:24 * kallisti likes "storyteller" 02:29:25 -!- thatmentat has left. 02:30:04 kallisti: Read the D&D recordings I wrote and learn about how I play the game, at least. 02:30:11 with a single game being a story, and a set of stories with recurring characters and themes being a chronicle. 02:31:02 kallisti: Yes, that is a sensible view. I consider the game (story) consisting of several sessions, which have both session breaks and chapter breaks, which might or might not coincide. 02:31:23 I think some IRC server, if you use the command "GS ROLL 1d6" for 1d6 roll dice, and so on. You can optionally include a channel afterward to copy the results to the named channel 02:31:39 * kallisti plans to incorporate a little bit more than a simple dice roller, since he already has that. 02:31:54 I plan on implementing dice rollers for each system, perhaps with the ability to track stats. 02:32:43 so that you can say: !roll Dexterity+Acrobatics+2 diff 6 02:32:44 @dice 3d6 + 1d20 02:32:44 3d6 + 1d20 => 27 02:32:45 for example 02:33:04 O, lambdabot already has 02:33:21 that doesn't work well with shadowrun and WoD systems 02:33:27 where you roll a large number of dice against a target number 02:33:37 @dice 1000d6 02:33:38 1000d6 => 3527 02:34:37 I have thought of a different system: referee rolls all the dice by hand; players don't, however some common text adventure abbreviations should be understood by the referee 02:34:56 zzo38: well yes I was planning to have options to allow the referee to roll everything 02:35:12 !roll with 02:35:13 for example 02:35:30 I don't know if the complexity is warranted though, for the average tabletop gamer. 02:35:31 kallisti: No, I mean by hand. Like, not on the IRC. 02:35:58 @dice 8d8 02:35:58 8d8 => 28 02:36:12 Do it slightly similar to a text adventure game. (Text adventure game are the closest kind of computer games to a role playing games, in my opinion) 02:37:10 zzo38: oh yes, I play that way as well. 02:42:31 Have a program that runs on the referee's computer, with a separate window and the IRC as well; it is connected to the IRC server so that someone can use PRIVMSG whatever :HELP and so on, and make file transfer of the data if wanted, in the computer data format, and then possibly to DVI to print as well 02:43:16 (Commands other than HELP and STATUS would not be accepted if you are not currently in a game session, I guess) 02:44:01 And everyone makes synchronized local copy of game data, with the main data on the referee's computer 02:44:19 While private data does not have to go into the program at all 02:45:57 I do have a channel in my IRC server for RPG sessions, and I might be able to add server scripts for a few of things you do in there, if I want to do so. 02:47:41 zzo38: I was going to make the entire thing public, but with access restrictions. 02:48:00 of course rolls can be done in private via privmsg 02:48:07 also entering stats 02:48:19 but a storyteller for a certain chronicle would have full access to every characters information. 02:49:00 Just do all commands by private; results can be copied to the channel if the game is in session. And then have data files access 02:49:05 * kallisti would also need to implement an authentication system to make sure that nicks are identified. 02:49:15 I haven't figured out how to do that with the bot framework I'm using in Perl. 02:49:21 kallisti: That is, for IRC servers that have that. 02:49:23 so I might have to rewrite the low-level bits. 02:49:58 And there are some differences between servers too. 02:50:44 * kallisti wishes he was still coding for that WoD MUD 02:50:50 I was going to do so many awesome things with their dice roller. 02:51:33 like having a huge weapon table to automatically handle damage rolls on firearms and melee weapons 02:52:09 The server scripting language for my IRC is called "Cthulhu.194" and this is an example file: http://sprunge.us/SNPD 02:52:11 you'd basically have to know even less about the system than you already did in order to play. 02:52:22 oh god what is this. lol 02:53:33 I assume it's called Cthulhu for a reason 02:53:51 (The WEBIRC command was originally built in to the server program. I removed that feature and then added a script to implement it instead. A script can have multiple command names to access it; this is defined in the configuration file) 02:53:56 I... can't tell if it's postfix or prefix. 02:53:58 it seems to change. 02:54:27 Sgeo: Yes, it is because I implemented the SUMMON command that no other IRC has. And then someone in this channel mentioned SUMMON CTHULHU and they don't like that or whatever, so I called it that. 02:56:29 kallisti: Actually it is all prefix, although a few things act like they are postfix. 03:00:15 Here is another script (currently active in my server; however you do not have permission to access it): http://sprunge.us/RAjB 03:00:20 The memory manager I wrote for class has O(n) access time :( 03:01:13 pro 03:03:59 at first I thought creating a weapons table for a dice roller would be a huge pain, BUT 03:04:27 now that I've got a little better at scraping stuff with perl, I can just steal something online and convert it into a desired format. 03:05:16 instead of manually writing "Colt Anaconda difficulty 6, damage 6, rate 2, clip 6, range 35, Colt Detective Special difficulty 6, damage 4, rate 4, ..." 03:05:24 and then eventually killing myself 03:05:54 Just write the numbers separated by commas and a semicolon at the end of each record, is another way 03:05:58 as I go through common models of revolvers, shotguns, semi-automatic pistols, machine guns, machine pistols, rifles, assault rifles, battle rifles, ... 03:08:00 there's even weapon data on fun stuff like jackhammers, industrial drills, war hammers, tridents, chainsaws, and crossbows 03:08:15 because.. I'm totally going to bring a trident to a gun fight. that's my character's preference. 03:08:36 kallisti: O, OK. But then it is not a proper gun fight, isn't it? 03:08:41 guess not. 03:09:06 actually, if you're playing as vampires, the rules actually make melee weapons feasible, as bullets are nowhere near as effective against vampires. 03:10:35 so, vampire+chainsaw could be a viable option against a squishy mortal + small pistol 03:11:28 Attention self: It is NOT ok for the starting address of each partition to be the number of the partition 03:11:58 .. 03:13:46 Sgeo, why did you 03:14:17 Read the character data that I recorded for D&D games if you want to see some information about it in case it helps you to write a program to store these kind of data (mine is D&D 3.5 edition; but make the program acceptable for many systems including but not limited to this one) 03:14:19 Madoka-Kaname, I didn't deliberately. It's a bug that I somehow didn't notice when testing yesterday 03:14:29 And if you have other questions about the system you can ask that too 03:14:53 zzo38! 03:15:13 hagb4rd: ? 03:15:18 zzo38: I'm going to work on shadowrun and world of darkness first as these are the systems I primarily enjoy, though it's difficult to find anyone who has an interest in those things. 03:15:20 what kind of "information"? 03:15:59 zzo38: basically each system will have mostly unique rules so I'm not going to generalize anything. Each dice roller will use its own special syntax. 03:16:20 each system will have different kinds of data in character tables, etc 03:16:30 kallisti: OK, do that first, then. But see what I have afterward, you might be able to make a more generalized system if necessary. I can also give a little bit of information about the Icosahedral RPG system since it uses a few special requirements for character data storage 03:16:33 I had .Count() instead of .Sum() 03:16:53 hey may i see your ad&d work zzo38? 03:16:57 zzo38: well some of the library code will be generalized. 03:17:07 kallisti: Yes, that is what I was about to suggest. 03:17:17 zzo38: to avoid tedium. The idea is that you could specify what a character sheet contains and the "create character" command would just refer to that in order to generate a blank sheet. 03:17:41 hagb4rd: http://zzo38computer.cjb.net/dnd/recording/level20.tex 03:17:41 zzo38: and since it's all Perl I just let dynamic typing do its thing. 03:17:53 thank you 03:18:25 hagb4rd: It is a game story. If you want spells/feats/whatever I invented, I can show you those things too 03:18:57 kallisti: That was my idea with the Icochash program I wrote; however, I abandoned that and might later rewrite it, but not in PHP next time! Same thing with Icoruma, I might rewrite it in a faster programming language than PHP next time. 03:19:11 zzo38: why would you even consider PHP 03:19:23 yea.. actally yes.. i'm planning to write a irc-bot as a supporting device for pen & paper games over the net 03:19:23 zzo38: also why is performance important? 03:19:29 ...lol 03:19:35 SO MUCH CODE DUPLICATION 03:20:06 but the idea is you still need a game master and a story teller 03:20:12 and real roleplaying 03:20:14 kallisti: PHP is not very good but I have used it before. Next time I will use C or Haskell. And performance is good because when there are a large number of files it becomes slow 03:20:37 not if you just load everything into memory. 03:21:01 but zzo38 your link doesnt resolve in chrome 03:21:03 kallisti: Even if loading everything into memory, it is slow because it still has to load the files and parse them. 03:21:29 is tex like text in (la)tex? 03:21:30 at startup sure. or is this a web thing? 03:21:33 hagb4rd: Try adding "view-source:" to the front; that might work (I know it works in Mozilla; I don't know whether Chrome does or not) 03:21:48 kallisti: No, it is a standalone program, actually. 03:22:07 oh, well then parsing only adds to startup overhead. 03:22:11 and then everything is fine? 03:22:11 k lets do it that way then.. one need them all these days..*dumidum 03:22:12 hagb4rd: LaTeX is a format for TeX; this file is Plain TeX. 03:22:17 k 03:22:19 hagb4rd: what language do you want to use? 03:22:24 kallisti, elliott update 03:22:38 kallisti: Yes but it must reload every time you modify the input files in order to recompile them, and that makes it very slow 03:22:51 php or c# or sth in betwenn.. maybe all.. -> web services 03:22:53 -!- Nisstyre has quit (Ping timeout: 244 seconds). 03:22:53 dunno 03:22:56 Sgeo: I feel this intermission is a bit rushed, but nonetheless awesome to read. 03:23:13 hagb4rd: I thought it was an IRC bot and not a web-thing? 03:23:27 irc just as endpoint 03:23:33 to players 03:23:48 hagb4rd: oh, okay. 03:23:54 that's not a bad approach actually. 03:24:16 I'm used to MUDs though so I have absolutely no problems with a marginally complicated command interface. 03:24:20 a web interface would be convenient though. 03:24:37 im really not that far into how to implement things..and implementation will be trivial at all 03:24:48 I think it should not be a web interface; it should be MUD. But possibly add a Java web interface as an alternative. 03:24:50 +not (?) 03:24:59 (Some systems, such as FICS, do this) 03:25:14 its kind of operation research 03:25:25 -!- Vorpal has quit (Ping timeout: 276 seconds). 03:25:27 commands simplify things for the implementation. Normal people will be scared though because OH MY GOD I HAVE TO LEARN SYNTAX. 03:25:54 -!- Nisstyre has joined. 03:26:06 it would be nice if players could extend the world its actors actions and stuff by writing some kind of easy readable xmlcode 03:26:08 kallisti: Then do what I specified; use MUD and then make a Java frontend as an alternative interface to use? 03:26:20 hagb4rd: It doesn't have to be XML, necessarily. 03:26:28 no it doesnt 03:26:32 as i mentioned 03:26:55 hagb4rd: are you familiar with MOO? 03:27:07 * Sgeo goes to make random access in his memory manager O(1) 03:27:23 im into designing the game itself.. + try to invent something revolutionary new and motivational 03:27:24 hagb4rd: Do you like the document I posted, now? Can you read it now? (You could just download it and open in a text editor, if necessary) 03:27:25 Sgeo: isn't that kind of redundant? 03:27:33 random access typically implies O(1) I thought. 03:27:34 yes exactly 03:27:35 :) 03:27:41 if it's O(n) or anything like that it's no longer random access. 03:28:08 I had the idea Icosahedral RPG too, is the new game; however, it is not a computer game. 03:28:45 * kallisti wishes MUDs were not quickly dying out 03:28:55 they are a good medium for multiplayer roleplaying games I feel. 03:29:17 Here are two examples of Icoruma input files: http://zzo38computer.cjb.net/icosahedral/icoruma/intro.irm http://zzo38computer.cjb.net/icosahedral/icoruma/spells.irm 03:29:21 I definitely think they could use a modern interface, while still retaining the text-based medium. 03:29:24 there was a mud years ago which I believe still exists.. it had a huge map of middle earth and various towns and quests 03:29:29 but incorporating some mixed media. 03:29:41 kallisti: Then use MUDs if you like that way. I think just use the same protocol as the old way 03:29:52 http://esoteric.voxelperfect.net/w/index.php?title=1_Chat_Line&curid=4885&diff=26035&oldid=26034 03:30:03 zzo38: I'm kind of talking about a separate project 03:30:06 You don't need to incorporate some mixed media, I think. 03:30:07 anyways I almost got banned because I made a program that gave me a graphical map and could automatically navigate between towns 03:30:09 zzo38: my IRC bot is much simpler than a MUD 03:30:27 oh already bene noted 03:30:29 ;_; 03:30:37 calamari: those are fairly common in MUD clients. You don't even need to make one. 03:30:47 kallisti: this was a long time ago 03:30:53 kallisti: OK. Still, I think a MUD should be made the same way as the old way, possibly support alternative front-ends if they would help but allow any MUD client to continue working 03:30:59 calamari: also it's generally impossible to detect if you put a reasonable delay between moves. 03:31:06 Even a simple dumb MUD client should be acceptable. 03:31:19 kallisti: that's what I did lol 03:31:29 yes zzo38 at least i can grab it..will examine things later..im far behind tired 03:31:32 zzo38: I was thinking from the perspective of refreshing the community with new people. 03:31:33 need to sleep 03:31:57 kallisti: Well, add on new signals that are turned on when the client indicates support 03:32:00 far beyond 03:32:04 zzo38: though even with interface improvements most people are so attached to their big budget graphical games that they probably wouldn't adjust well to the text-based format. 03:32:10 kallisti: it added features too, where I could have virtual parties that existed.. the game didn't handle them, but we could track each other on the map via special private messages 03:32:16 zzo38: yes that's generally how it would work. 03:32:24 kallisti: was a lot of fun 03:33:00 zzo38: plenty of existing custom MUD clients are implemented over telnet and allow general clients. 03:33:04 But a dumb client supporting no signals other than text receive and command send, should still be acceptable. But also make the new clients with many new options and so on 03:33:42 one occasionaly problem is that many MUD clients are not actually legitimate telnet clients 03:33:54 I implemented this as a modem program actually... had to dial up to my unix shell account in order to telnet 03:34:15 in ms-dos of course, lol 03:34:17 but it's not a huge problem. You just send them something telnety and if they don't respond with something telnety then you just treat them like a basic socket and dump text (maybe with ANSI codes if the option is turned on since most clients support those) 03:34:48 so it was actually layers of hacks.. oh well.. it worked and it was fun 03:34:49 kallisti: Well, yes, if it is a telnet then you should handle backspacing and those things at the server too. 03:34:55 -!- GreaseMonkey has quit (Quit: The Other Game). 03:34:57 zzo38: there are actually some "mud protocols" that exist that allow mixed media and the like, but they're generally bad and not well supported. 03:35:04 But if it is a dumb linemode client, then use that. 03:35:41 kallisti: I remember back in the day that some bbses supported extra codes where if you had the right client you'd get a graphical gui 03:35:51 it was lame overall tho 03:36:16 just made it slower and didn't really add much since it was just showing the same info 03:36:52 well let's see how xfce compares against lxde.. bbl 03:37:22 -!- calamari has quit (Quit: Leaving). 03:45:27 -!- calamari has joined. 03:52:43 I have two lists of words 03:53:16 A and B, split by newlines. what's the fastest way in bash to display the words in A that aren't in B? 03:57:27 My memory manager is demented! Yay! 03:57:37 Probably due to the hastily conceived "random access" idea 03:57:43 * kallisti found the solution to his problem as well: use perl instead of bash 03:57:51 Or, well, poor implementation thereof 03:57:53 was gonna say that :p 03:58:11 quintopia: sometimes I wonder why I even try to use bash. 03:58:24 I get the misguided notion that I'm going to be faster with it if I get the hang of it. 03:58:27 but I'M NEVER GOING TO UNDERSTAND BASH 03:58:53 kallisti: probably bad elliott influence ;P 03:59:09 wat 03:59:10 faster to write? or faster computed? 03:59:13 to write. 03:59:29 yeah I'm all about the BREAKNECK SPEED of my simple automated tasks. 03:59:55 I want them to be UNNOTICEABLE FRACTIONS OF SECONDS FASTER 04:00:09 Icoruma has a few features I would like to see in other programming languages, such as wildcard includes. I don't know of other programming languages that have that. 04:00:23 show 04:00:31 oerjan: wat 04:01:53 elliott: see: certain HackEgo commands i rewrote 04:02:42 >_> 04:03:58 The idea of what exactly a "mana" is in Icosahedral RPG could also be used in other games too if you want to. 04:06:59 (Among other things, it is a commutative monoid, with five primes.) 04:14:29 I think, in the XOR monoid, True is prime. Is it? 04:18:39 .... I think, my professor's default fixed partition memory manager allocates an unneeded partition 04:33:27 elliott, kallisti, update 04:33:46 oh. 04:35:53 -!- calamari has quit (Quit: Leaving). 04:47:40 -!- Jafet has joined. 05:12:38 -!- hagb4rd has quit (Quit: Nettalk6 - www.ntalk.de). 05:13:06 -!- oerjan has quit (Quit: Good night). 05:14:25 -!- pikhq_ has joined. 05:15:01 -!- pikhq has quit (Ping timeout: 268 seconds). 05:33:10 What is the property of applicatives for which this applies: () <$ x = pure () for any x of this applicative type 05:34:24 zzo38: sounds like the equivalent of commutative monads 05:34:40 possibly equivalent to (f <$> a <*> b) = (flip f <$> b <*> a), I think 05:37:02 O, is that what commutative monads means? Your condition seems to me like commutative applicative? 05:37:46 -!- Jafet has quit (Quit: Leaving.). 05:38:05 something like that, yes :P 05:38:15 commutative monad is stronger i think 05:38:22 a >>= \x -> b >>= \y -> f x y = b >>= \y -> a >>= \x -> f x y 05:38:23 apparently 05:38:31 oh 05:38:35 do { a <- mb; b <- mb; f a b } 05:38:35 = 05:38:39 do { b <- mb; a <- ma; f a b } 05:38:43 that's easier to read :P 05:41:08 Is that similar but after join? 05:43:03 right 05:53:57 `style 05:54:00 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: style: not found 05:54:01 ^style 05:54:01 Available: agora* alice c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc iwcs jargon lovecraft nethack pa qwantz sms speeches ss wp youtube 05:54:04 ^celebrate 05:54:04 \o| |o| |o/ \m/ \m/ |o/ \o/ \o| \m/ \m/ \o| |o| |o/ 05:54:05 | | | `\o/´ | | | `\o/´ | | | 05:54:05 |\ /| /| | |\ /`\ /| | /< >\ /'\ 05:54:05 (_|¯´¯|_) /´\ 05:54:05 (_| |_) 06:50:51 -!- Klisz has quit (Quit: You are now graced with my absence.). 06:59:09 so can a single string draw the edge of a mobius strip? 06:59:19 it seems kind of wild to imagine 06:59:44 i guess it just has to float in space a bit 07:00:42 elliott, did you intend to do mb twice in your first part of the equation? 07:00:56 no 07:01:11 x <- mx was the intent 07:01:11 for all x 07:01:33 I should go food 07:02:16 -!- MDude has changed nick to MSleep. 07:05:42 -!- sebbu2 has joined. 07:05:42 -!- sebbu2 has quit (Changing host). 07:05:42 -!- sebbu2 has joined. 07:06:36 -!- sebbu has quit (Ping timeout: 240 seconds). 07:08:37 disregard 07:08:53 especially you, over-zealous log-reader 07:09:00 hi 07:09:51 i watched the tintin movie today 07:17:58 Is this a proper monad? newtype ReadthisT f x = ReadthisT { runReadthisT :: f () -> f x }; lift = ReadthisT . const; fmap f = ReadthisT . (fmap f .) . runReadthisT; join (ReadthisT x) = ReadthisT (\y -> x y >>= ($ (() <$ (y >> x y))) . runReadthisT); 07:31:58 -!- zzo38 has quit (Remote host closed the connection). 07:38:41 > let collatz = takeWhile (/=1) . iterate c; c n = if even n then n `div` 2 else 3*n+1 in collatz 150 07:38:42 [150,75,226,113,340,170,85,256,128,64,32,16,8,4,2] 07:40:11 > map (succ . head . tail) . iterate (drop 2) . map length . group . fix $ show 07:40:16 mueval-core: Time limit exceeded 07:40:22 > take 5 . map (succ . head . tail) . iterate (drop 2) . map length . group . fix $ show 07:40:25 [2,4,8,16,32] 07:40:32 congrats 07:40:37 thank you 07:40:55 I do think it's the best way to compute the powers of 2 07:41:10 no obviously my powerset construction is the best. :P 07:41:18 lengths of powersets. 07:41:34 though really that's probably way better because there's a fix and I have no clue what it's doing as a result. 07:41:42 because fix still kind of baffles me sometimes. 07:41:49 yeah, I'm fixing show 07:41:53 :P 07:42:07 so infinite string of... something. 07:42:11 > fix show 07:42:12 "\"\\\"\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\... 07:42:15 ah right 07:42:16 :P 07:42:17 quotes 07:45:36 > let twood = length . filterM (const [True, False]) . flip replicate undefined in map twood [1..10] 07:45:37 [2,4,8,16,32,64,128,256,512,1024] 07:46:39 copumpkin: you can't deny its elegance. 07:46:51 :) 07:47:00 yeah, but look how much faster yours is than mine 07:47:09 an added benefit! 07:47:13 I can't even get up to 10 07:47:14 avoid speed at all costs 07:47:18 haskell motto 07:47:19 before lambdabot craps out on me 07:47:22 elliott: exactly 07:47:33 copumpkin: well what can we expect from an agda programmer like you 07:47:36 OHHHHHHHHHHHHHHHHHHHHHHHHHBURGNRJKGNR 07:47:46 you want a geometric series? you can't expect it to be fast 07:47:51 once this agda guy tried to burn me 07:47:52 but 07:47:58 copumpkin: what's the runtime on mine... O(2^n)??? 07:48:02 * copumpkin burns elliott 07:48:02 I think that's forgetting something 07:48:04 his irc client froze up calculating the natural number representing his irc line 07:48:14 because he tried to type more than 10 characters 07:48:14 kallisti: nah, that should be it 07:48:15 the joke is 07:48:15 haha 07:48:16 agda is slow 07:48:25 orly? 07:48:26 copumpkin: see look the runtime is the same as the function. how elegant. 07:48:50 > take 10 . map (succ . head . tail) . iterate (drop 2) . map length . group . fix $ show 07:48:51 [2,4,8,16,32,64,128,256,512,1024] 07:48:55 oh I can get to 10 07:49:00 they're probably the same time complexity actually 07:49:46 > let f = length . flip replicate undefined in map f [1..] 07:49:48 [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28... 07:49:59 oh look! a linear function that runs in linear time 07:50:00 YESSSSSSS 07:50:41 i like functions that describe their own complexity 07:50:42 like fib 07:50:58 I think that may be a characteristic of any function that uses the list representation of natural numbers? 07:51:05 unary 07:52:15 no nevermind what am I saying. 07:53:00 wat 07:53:02 oops 07:53:03 wrong window 07:54:54 o.O 07:55:00 what 07:55:11 The thing where numbers came out of fix show 07:55:12 hi 07:55:19 > fix show 07:55:20 "\"\\\"\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\... 07:55:21 numbers 07:55:55 1 3 7 15 07:57:36 I didn't see the > fix show, just copumpkin's take 10 . map etc thing 07:59:36 Why am I still reading Station V3 08:00:03 because you have a history of reading things that are terrible 08:00:06 whats that is it good hi sgeo 08:00:10 like that cliparty universe 08:00:18 i love clip art 08:00:19 monqy, even I think it's stale. 08:00:27 (not the cliparty universe. Station V3) 08:00:48 http://www.stationv3.com/comics/20111213sv3.gif 08:00:49 hilarious 08:01:20 .. 08:01:24 i dont 08:01:25 get it 08:01:40 i vaguely see how it might be gotten 08:01:41 but 08:01:42 nope 08:01:47 http://www.stationv3.com/comics/20111212sv3.gif 08:01:49 hilarious 08:01:58 http://www.stationv3.com/comics/20111211sv3.gif 08:01:59 hilarious 08:02:11 ...................... 08:02:23 these might be the least funny gifs i have viewed with my eyes in like 08:02:24 years 08:02:24 huh 08:02:28 it's like 08:02:32 a picture of wooden flooring 08:02:38 it elicits absolutely no reaction 08:02:39 at all 08:02:55 There are some funny ones 08:02:56 * kallisti actually laughed because of how terribly impossibly bad it was. 08:03:01 They're all in the past 08:03:07 i laughed, possibly for the same reason as kallisti 08:03:41 Sgeo: whats the worst webcomic 08:03:42 in your 08:03:43 opinion 08:03:52 oh man there are so many bad webcomics i dont even know about 08:04:04 excitement 08:04:15 elliott, is it allowed to be in the Station V3 family? 08:04:21 there's a family 08:04:27 Yes, there is a family. 08:04:31 why 08:05:03 is it a happy family 08:05:09 are they frends 08:05:21 http://silenceinthedarknessonq16.comicostrich.com/ 08:05:34 this is a good comic 08:05:50 silence in the darkness on q16 08:05:57 Start at the beginning, it's actually not that bad 08:05:58 http://silenceinthedarknessonq16.comicostrich.com/comic.php?cdate=20111211 08:05:59 wow 08:06:00 this is 08:06:03 are they all like this 08:06:11 this is amazing 08:06:16 Sgeo: i went to the beginning 08:06:18 it's still bad 08:06:22 please advise 08:06:38 Sgeo: how old is 08:06:39 the author of this 08:06:43 they've spent uh 08:06:47 8 years 08:06:47 http://z7.comicostrich.com/ 08:06:48 of their life 08:06:49 writing these things 08:06:57 so they must be like 08:07:05 i don't even know 08:07:12 Linton (on V3) is humorous 08:07:31 sorry sgeo i do not trust your opinions 08:07:48 you read v3 08:07:54 http://forum.comicostrich.com/viewtopic.php?t=418&sid=ceaf354a4066a147d94ca3c93d76ce27 08:08:00 i dont know what htis is but why does it have 21 pages 08:08:14 http://www.stationv3.com/d/20030616.html 08:08:23 * elliott reads 08:08:23 elliott: what would happen if randall munroe and andrew hussie met 08:08:25 today's dinosaur comic 08:08:26 it is therapy 08:08:30 for reading station v3 08:08:31 you are all 08:08:33 welcome to join me 08:08:39 dinosaur comic is bad too 08:08:42 The rumormongers are the blue things 08:08:43 Usually 08:08:47 kallisti.................... 08:08:49 monqy: look at kallisti's wrong opinions 08:08:52 look at him just 08:08:53 casually having them 08:09:18 elliott: I think dinosaur comics is too fast-paced. The scenery changes too rapidly. 08:09:34 it's hard to tell what's going on. 08:09:35 your jokes cannot 08:09:36 make you a good person 08:10:04 beyond redemption 08:10:10 the kallisti way of life 08:10:25 http://www.stationv3.com/d/20050319.html 08:10:30 That one's almost good 08:10:39 Actually, I'm laughing at these. I'm finding them funny 08:10:43 n 08:10:43 o 08:10:45 no sgeo ni 08:10:45 its not 08:10:46 almost good 08:10:48 no, I mean 08:10:48 its not even 08:10:59 Sgeo 08:11:00 its not 08:11:01 healthy 08:11:03 not even remotely anywhere near something resembling good 08:11:03 to laugh at this stuff 08:11:09 i accept 08:11:10 that tastes 08:11:11 are subjective 08:11:15 but i think you are permanently 08:11:17 damaging 08:11:19 your soul 08:11:35 It gave me a soul?!? 08:11:36 Yay! 08:11:40 yay 08:11:44 n;o 08:11:53 elliott: though in its defense dinosaur comics makes excellent use of foreshadowing 08:12:07 that moment when you realize the previous panel hinted at the events of the next 08:12:09 I wonder if T-Rex canonically crushes a new house every single day. 08:12:14 somewhat rewarding. 08:12:51 the many joys of dinosaur comics 08:12:52 the many joys of life 08:13:04 http://www.stationv3.com/d/20050328.html 08:13:42 actually 08:13:47 these comics remind me of you, sgeo 08:13:55 o.O 08:14:06 elliott: well, it's either that or it continually goes back in time 08:14:08 they have your personality 08:14:10 or it's a glimpse of different universes. 08:14:10 or perhaps 08:14:12 you have theirs 08:14:29 have you considered you and stationv3 may be soulmates 08:14:44 kallisti: there's chronology 08:14:54 monqy: yeah these comics are very Sgeo 08:15:05 elliott: so then... he has to crush a house every time. 08:15:11 CONSISTENCY 08:15:21 kallisti: well there's no conclusive PROOF he crushes the house 08:15:28 true. 08:15:38 http://www.qwantz.com/index.php?comic=1 08:15:43 here we see that he doesn't stomp on the girl at least in comic 1 08:15:43 so 08:15:47 elliott: WHY DON'T YOU SAY THAT TO PAST ELLIOT INSTEAD ASSHOLE 08:15:53 http://www.stationv3.com/d/20050415.html 08:15:58 *TT 08:16:32 Sgeo: thats 08:16:33 not funny 08:16:40 i am TRYING to laugh 08:17:28 is there even a joke with these? 08:17:30 I can't tell. 08:17:40 i think that one was supposed to have a joke, at least 08:17:47 can you explain it to me? 08:17:51 Sgeo: was there a station v2 08:17:52 kallisti: the station 08:17:53 isn't safe 08:17:54 that's the joke 08:18:01 ..what? 08:18:04 yes 08:18:14 http://www.stationv3.com/d/20030506.html 08:18:16 station v3 08:18:17 comic 1 08:18:37 http://www.stationv3.com/links.html 08:18:40 list of comics to avoid reading 08:18:44 http://ebb.comicostrich.com/ 08:18:45 not even comic 1 08:18:49 Is that not like judging Homestuck by 1901? 08:18:50 OH YES ANOTHER SPINOFF FUCK YES GOD YES! 08:18:52 unless it is 08:19:11 elliott: dude you're going to have to explain all of the jokes to all of these. 08:19:27 There's plot. 08:19:28 Sgeo: yes, if homestuck was a terrible gag-a-day strip with a dozen spinoffs and also no because we've also looked at like fifty other ones by now and they are all equally bad 08:19:28 * kallisti iIT IS YOUR DUTY 08:19:30 It's plotlines 08:19:42 oh Sgeo's using dots at the end of sentences i think we're disliking station v3 a little too intensely 08:19:49 gripping station v3 plotlines 08:20:00 with enchanting station v3 characters 08:20:01 station v3 plotline one: station... v4??? 08:20:05 Two characters who were previously mute become able to talk 08:20:14 enchanting 08:20:16 Because all of reality changed. 08:20:17 gripping 08:20:19 i'm ehcanthed 08:20:23 are you gripped 08:20:26 im 08:20:28 i'm GRIPPED 08:20:31 so gripped i dont think ill ever be able to be ungripped 08:20:33 permanent grippeling 08:20:34 YES IT GRIPED ME 08:20:39 gripe 08:20:41 we are all 08:20:44 gripped together 08:20:51 monqy: gripe with me 08:20:51 http://forum.comicostrich.com/viewtopic.php?t=11&sid=ceaf354a4066a147d94ca3c93d76ce27 08:20:55 station v3 frendship 08:21:15 monqy: not the only ship in station v3 08:21:19 -punchline- 08:21:29 why are these forums active!!! 08:21:34 why 08:21:40 Who's Prentice? 08:21:47 *Prentis 08:22:00 are 08:22:03 you expecting me to know the answer to this 08:22:58 elliott resident station v3 expert 08:23:05 in mere minutes he has surpassed even sgeo 08:23:11 the robot guy 08:23:12 is called floyed 08:23:17 Floyd 08:23:21 floyde 08:23:25 I think there are two goerges??? 08:23:35 Linton is the idiot security officer 08:23:40 And same species as the pirates 08:23:41 oh 08:23:43 is there nonidiots 08:23:43 that makes sense 08:23:49 goerg 08:24:21 "station v3" -- georg 08:24:25 -!- Ngevd has joined. 08:24:28 The blue things on the planet are called rumormongers, and for some reason XChat thinks that rumormongers is spelled correctly. 08:24:37 hi 08:24:39 Hello! 08:24:41 I do not recall adding rumormongers to the dictionary 08:24:56 you realise 08:25:00 that rumormonger 08:25:01 is a word 08:25:05 outside of this incredibly shitty comic 08:25:15 Now I do (seconds before you told me) 08:25:32 knowledge is power 08:25:41 -keanu reves 08:25:48 France is a meme. 08:25:55 hysterical 08:28:33 * Sgeo looks for good Linton comics 08:28:38 good luck 08:29:26 http://stationv3.com/d/20071009.html 08:29:47 oh I see 08:29:50 it's funny because 08:29:51 he 08:29:53 uh 08:30:16 sgeo i think you got the wrong comic 08:30:17 this isn't good 08:30:18 this is crap 08:30:27 People in this channel really enjoy things that they don't enjoy, don't they. 08:30:36 yes 08:30:39 at least I do 08:30:48 * Sgeo is laughing insanely right now 08:31:38 Hmm, this (not what I linked) was a good arc 08:34:25 no 08:34:26 it wasn't 08:34:51 -!- elliott has quit (Quit: i cant handle any more station v3). 08:34:55 rip 08:35:52 yeah thats a pretty awful comic strip 08:36:04 i mean that particular one... 2007 10 09 08:36:10 i dont mean they're all necessarily bad 08:36:33 incidentally, they are 08:37:19 http://www.stationv3.com/d/20071011.html 08:38:26 thats really devastatingly bad.. 08:38:35 station v3 quality 08:38:39 i am not sure if it's just the mood i'm in 08:39:39 http://www.stationv3.com/d/20080901.html 08:40:12 thanks 08:40:34 maybe they make sense if you read a whole bunch of them.. like very context-dependant 08:40:58 They do, I think 08:41:27 The plot gets repetitive though. How many times can you destroy the universe and have it be restored from backup? 08:41:42 (canned laughter) 08:42:23 http://www.stationv3.com/d/20080908.html 08:44:39 NO. MORE. 08:44:42 MUST NOT CLICK 08:44:47 no it's great 08:44:56 -!- Ngevd has quit (Ping timeout: 240 seconds). 08:45:04 rip 08:45:22 it has a way about it 08:45:39 how many more of us will it kill 08:45:57 I heard a rumor that it won't kill any more of us. 08:46:14 have you considered you may already be dead 08:46:29 Not until you asked. 08:47:28 I mean, actually, yes... i have been led into some superstitious beliefs on that subject 08:50:50 http://stationv3.com/d/20050809.html 08:51:21 great 08:52:05 http://stationv3.com/d/20040709.html 08:52:24 how are you finding these 08:52:53 OhNoRobot 08:53:50 http://stationv3.com/d/20040402.html 08:54:40 why are you finding these 08:54:45 -!- elliott has joined. 08:54:59 pikhq_: OK, I have a really stupid build system idea, you get to tell me why it doesn't work. 08:55:05 hi 08:55:33 * Sgeo failed to see elliott's quit message until now 08:55:44 So, what you missed: More Station V3 08:55:51 awesome. 08:56:00 it was great stuff 08:56:22 Maybe I'm choosing badly, and just selecting random ones will have higher probability of good comics 08:56:54 :t randomR 08:56:56 forall a g. (Random a, RandomGen g) => (a, a) -> g -> (a, g) 08:56:57 Sgeo 08:56:59 there is no possible way 08:57:01 this comic could be salvaged 08:57:27 Homestuck might suck if someone tried to present random panels at you 08:57:52 Who am I kidding. The reason I brought up Station V3 in the first place is that I had no idea why I kept it in my rss reader 08:57:53 not this badly Sgeo 08:57:55 not this badly 08:58:20 It used to be good 08:58:23 like homestuck's first 100 panels over and over again would be about six billion times better than a single station v3 strip 08:58:28 something to clense your mind from station v3http://www.fanfiction.net/s/5937032/1/Grab_a_boob_day 08:58:30 ok i will 08:58:32 take back my opinions Sgeo 08:58:36 if you can link me one (1) good strip 08:58:59 monqy, do the Linton strips I linked count as good? 08:59:29 no 08:59:36 Sgeo: i have decided i like them. 08:59:47 oh 08:59:50 um 08:59:51 why 09:02:54 why itidus21 ;_; 09:03:35 station v3, the worst existential crisis yet 09:03:36 i suppose i could like any graphic which is non-static combined with any grammatical piece of text 09:04:13 but 09:04:14 they're static 09:04:17 theyre not animated.... 09:04:21 i mean uhh 09:04:45 any graphic which is a non-random signal 09:04:46 it's hard to tell with a comic as alive, endearing, enthralling, graipping, enchanting, as station v3 09:04:57 so garipping 09:05:12 Ugh, I want to set a breakpoint in gdb for an address that doesn't exist until some point in runtime. 09:05:14 i meant as in a tv-static 09:05:22 How am I do that. 09:05:35 08:41:42: (canned laughter) 09:05:37 i don't even know what static means in relation to a tv channel with an unrecognized signal 09:05:39 monqy: god i wish i could can laughter 09:05:39 elliott: Aren't you a gdb expert? 09:05:54 shachaf: My gdb knowledge is set args ... \n start \n cont \n bt \n quit 09:06:11 elliott: Did you know gdb --args ./foo bar baz? 09:06:20 Yes, because Deewiant told me, but then I forgot it again./ 09:06:41 * shachaf is trying to debug hs-plugins code. 09:07:04 At least gdb disables ASLR. 09:07:26 http://www.stationv3.com/d/20060204.html 09:07:33 So the address is deterministic (or seems to be), but I can't set a breakpoint at it straight away, because the code is not loaded yet. 09:07:57 http://www.stationv3.com/d/20040710.html 09:07:58 hilarious 09:08:09 Sgeo: is this you trying to link a good one 09:08:49 All the comic's I've linked are attempts to find a good one 09:08:52 comics 09:08:53 wow 09:08:54 uh 09:08:56 good 09:08:57 good work 09:09:23 two thumbs up 09:09:31 Maybe I suck at finding 09:09:34 I'd give you more, but two is all I have. 09:10:56 speaking of thumbs and comics, I made a comic a real long time ago 09:11:25 is it better than station v3 09:11:30 i think so, yes 09:11:30 i could use a better comic than station v3 right now 09:11:59 http://dl.dropbox.com/u/13786158/diner.png 09:12:16 better than station v3 09:12:18 i like the peppers 09:12:18 elliott, Station Z7? 09:12:27 Sgeo: :( 09:13:22 monqy: are they peppers in panel 1 and 2 and you just can't see them 09:13:28 or did he become ppeppeperp 09:13:30 or is that smily 09:13:31 unrelated 09:13:32 everything is pepper 09:13:33 to other characters 09:13:34 ok 09:13:38 * Sgeo looks at the Station V3 encyclopedia 09:13:49 is there a 09:13:50 is that 09:13:51 a 09:13:51 thing 09:14:03 http://www.stationv3.com/wiki/index.php?title=Main_Page 09:14:06 Not much of a thing 09:14:14 it's not spammed 09:14:16 why is our wiki spammed 09:14:18 instead of this 09:14:27 http://www.stationv3.com/wiki/index.php?title=Special:Allpages 09:14:27 why are there edits this month 09:15:32 elliott, SBAHJ apparently updated 09:15:48 wonderful 09:16:08 better than station v3 09:16:36 "phhpppbbbbbthb" - better than station v3 09:16:49 ":'(" - station v3 09:17:20 "not sorry" - better than station v3 09:17:56 sgeo are nay of these station v3 wiki pages good 09:18:01 I don 09:18:10 there are so many choices I don't know which to pick 09:18:11 I don't know, I didn't even know there was a wiki until now 09:18:34 http://www.stationv3.com/wiki/index.php?title=Station_V3_%28comic_strip%29 09:18:52 http://www.stationv3.com/wiki/index.php?title=Tom_Truszkowski 09:18:58 oh, he's a programmer 09:19:00 That Explains Things 09:19:24 elliott: I thought all webcomic authors could program. 09:19:39 it's like a requirement. 09:19:53 Station Q16 is the main station in the comic strip Silence in the Darkness on Q16 The station has had a power failure sometime before the first strip and is still in the dark. This may be because the station only exists within a rumormongers mind. 09:19:54 if he has disabilitys, is it bad to make fun of stations v3..... 09:20:12 his disability: writing station v3 09:20:19 :'( 09:21:53 monqy what does the reverse text say 09:21:54 in your comic 09:21:55 im too lazy 09:22:11 doug's "dougalicious" diner 09:22:12 doug's dougilicious 09:22:14 "it's dougalicious" 09:22:48 it's dougalicious in my heart 09:23:07 im worse at writing dialogue than tom t. 09:23:27 :( 09:23:38 snickers 09:26:11 . o O ( "hello snail" "hello tree" "how are you doing today?" "oh just fine. what about you, how are you doing?" "i am also fine" "i frankly harbor apathetic feelings towards your current state of well being" "is that so?" "it is so" "well ok then" "good" ) 09:26:27 better than station v3 09:26:44 harbor -- tree -- arbor is an accidental pun 09:30:26 im inspired 09:38:59 Station V3 + SBaHJ? 09:39:13 hi 09:39:52 hi 09:42:48 Night 09:42:51 hi 09:42:54 hi 09:43:05 Station Zzz... 09:43:11 no 09:45:09 station bad 09:50:50 -!- monqy has quit (Quit: hello). 10:08:44 -!- kmc has joined. 10:18:00 -!- Jafet has joined. 10:51:18 -!- Jafet has quit (Quit: Leaving.). 10:55:40 -!- ais523 has joined. 11:18:39 md5 is sufficient for avoiding random collisions on non-malicious input, right? 11:19:14 also, and relatedly, are VHDL identifiers allowed to be long enough to fit an entire md5 hash inside them? 11:21:49 ais523: yes, but why not go for SHA-1? 11:22:01 'tis only 32 more bits 11:22:13 md5's in the OCaml standard libraries, SHA1 isn't 11:22:31 :/ 11:22:34 get a better standard library 11:23:02 ais523: googling doesn't show up any obvious limits on identifier name 11:23:05 s 11:23:23 good 11:23:26 ais523: you can pack it into base 62, at least 11:23:50 so it'll be 28 at most (27 + 1 byte prefix to avoid digit as first character) 11:24:13 ais523: wtf, you're not allowed two underlines in a row in a vhdl identifier 11:24:14 yep, but I don't really want to if there's no reason 11:24:18 and they can't end with underlines 11:24:26 (or start, for that matter) 11:24:28 seriously? that is an important limitation for my project 11:24:28 err 11:24:31 s/underline/underscore/g 11:24:33 I'll have to escape them, in that case 11:24:41 ais523: it is? wtf are you doing 11:24:46 also "But VHDL also supports extended identifiers, enclosed by backslashes, which can contain any graphic ISO Latin-1 character (including backslashes if doubled)." 11:25:07 /Latin-1/? 11:25:12 that's, umm, I don't get it 11:25:17 ais523: "any byte" 11:25:26 there, I got it for you :) 11:25:29 i.e. 11:25:36 nope, 32 of the possible values of a byte aren't graphic in Latin-1 11:25:39 if (identc == '\\') append(identifier, getchar()) 11:25:41 ais523: oh, hmm 11:25:43 extended_indentifier ::= \graphic_character { graphic_character } \ 11:25:49 I guess VHDL is just defined in terms of Latin-1 because old 11:26:02 and they presumably think control characters in identifiers is ridiculous 11:26:18 well, it is ridiculous 11:26:28 but then, so is much of VHDL, I guess 11:26:54 anyway, what I'm trying to do, is to translate variable names from a source program into variable names in the resulting VHDL, whilst mangling them as little as possible 11:27:01 so it's easy to see which corresponds to which 11:27:26 and the source language doesn't have any arbitrary rules about double underscores 11:27:38 ais523: have you considered implementing your module layer in not vhdl... 11:27:55 define some intermediate language, and have the linker translate it to vhdl 11:28:00 all at once 11:28:03 ais523: 65 of possible values of byte aren't graphic in Latin-1; 0..31 and 127..159. 11:28:16 fizzie: oh right, I forgot 127 11:28:24 also, screwed up multiplying 32 by 2 11:28:26 oh, wait, this is for name mangling from a source language 11:28:30 I thought this was for adding module prefixes 11:28:31 or something 11:28:41 yep, name mangling from a source language 11:29:02 the module prefixes are where the md5 stuff comes in 11:29:18 VHDL has namespacing, but I need to make sure that the namespaces don't have the same names as each other, or it'd just be a huge mess 11:29:20 ais523: I suggest just mangling everything other than [a-zA-Z0-9] into _xNN_ 11:29:22 where NN is the byte value 11:29:25 assuming there's no Unicode involved 11:29:35 and I think OCaml is dark-ages enough for it presumably not to be 11:29:58 elliott: the source language isn't OCaml 11:30:04 ais523: I didn't say it was. 11:30:18 at the moment, it uses the same identifier rules as pre-Unicode-era C 11:30:29 without the length restrictions 11:30:30 ais523: I'm saying that I'm very sceptical OCaml does Unicode in anything vaguely approximating out of the box. 11:30:36 ah, I see 11:32:57 bleh, is it wrong to want to write the project in OCaml+Perl? 11:33:15 it's quite a nice mix of languages, as their strengths complement each other nicely 11:34:19 ais523: Complaining about your language lock-in will only cause me to mock OCaml more :) 11:34:28 I'm not sure if I have a language lockin 11:34:42 I'd rewrite the whole thing in Anarchy if it wasn't vaporware 11:34:44 ais523: If your alternative is OCaml+Perl, you have no alternative. 11:36:04 what do you dislike about OCaml, by the way? 11:36:13 I'm trying to mentally work out what its bad points are 11:36:22 because it definitely has some, but I have trouble putting a finger on them 11:36:50 ais523: For one, it's essentially stuck in 2002 11:37:01 hmm, that may well be valid 11:37:16 oh right: it doesn't really have typeclasses 11:37:17 It has a reputation for speed, but that's mostly in single-threaded tight loops, it doesn't really have a concurrency story at all, which is ridiculous 11:37:41 Its standard library is weirdly inconsistent and incomplete (the fact that a library exists just to add all the things you forgot to the standard library is telling...). 11:37:44 in particular, you can't add "methods" to other classes 11:37:50 heh, which one's that? 11:37:52 Yes, lack of typeclasses or something similarly useful is painful. 11:37:57 ais523: Batteries (Included) 11:38:13 -!- kallisti has quit (Ping timeout: 252 seconds). 11:38:14 I actually think that Pervasives seems a little too large 11:38:19 in particular, I don't get why it has I/O in 11:38:44 I also don't like the syntax much (Standard ML's is nicer), and the fact that it has multiple sort-of-object-systems is just ridiculous design. 11:39:08 heh, I just saw exception Exit looking at the Pervasives docs 11:39:13 The type system could also do with doing a bit less weak. 11:39:14 it's an exception provided for user use, and not used by the library 11:39:24 And more subjectively: I'd rather it be pure and lazy, but, uh, the language I want OCaml to be already exists. 11:39:30 except, the user can (and frequently does) trivially define exception types 11:39:35 elliott: heh 11:39:42 ais523: sounds like a relic from before you could do that to me :P 11:39:47 perhaps 11:39:54 although, Exit can't carry a payload 11:39:57 ais523: Oh! Another thing I don't like about OCaml: THEY IMPLEMENTED PRINTF IN THE COMPILER 11:40:01 which would make it reasonably useless for that purpose 11:40:03 PRINTF LITERALLY HAS SPECIAL COMPILER SUPPORT 11:40:05 IN THE TYPE SYSTEM 11:40:18 really? that's ridiculous 11:41:06 ais523: yes 11:41:23 ais523: you can't type printf in OCaml even with the dynamically-typed way Haskell does it, since that relies on overloading 11:41:39 ais523: check out the type of printf, basically the "string literal" format you give to it? 11:41:41 that's not a string literal at all 11:41:47 that's a type-carrying format value 11:41:55 (printf ) is just special-cased 11:42:03 and I don't think you can pass a variable format at all, that's the only way you can call it 11:42:11 crazy and heretical way to do printf: make it take all its arguments as strings 11:42:30 ais523: that doesn't help, it's variadic 11:42:34 you need it to take a list of strings 11:42:38 yep, that's what I meant 11:42:39 at which point it becomes a really weird syntax for concat 11:42:40 :P 11:43:00 elliott: no, I meant it'd parse the strings back into the original arguments 11:43:23 ais523: wat 11:43:29 you'd do printf "%2.3g" ["0.0000142"] 11:43:43 or whatever 11:43:51 heh 11:44:22 ais523: oh, another ocaml complaint: bignums are awkward (although i never used them myself, admittedly) 11:44:25 another thing that gets me about OCaml's standard library is its naming 11:44:33 List.hd, List.tl, List.rev, List.length 11:44:47 (but they have their own operator set (of course) and you can't use integer literals with them, so I'm pretty sure I'm right) 11:44:54 ais523: yeah, ew 11:45:08 and List.append is also Pervasives.(@) 11:45:14 ais523: oh, Exit is to exit the program, I think 11:45:17 which I didn't know about for ages because I was looking in the wrong module 11:45:20 I bet it has a top-level handler that just exit(0)s 11:45:25 heh 11:45:29 even that's a two-line wrapper 11:45:50 try … with Exit -> () 11:46:29 val incr : int ref -> unit 11:46:31 Increment the integer contained in the given reference. Equivalent to fun r -> r := succ !r. 11:46:41 ais523: this is making me feel so much better about how crufty the Prelude is 11:46:44 why is that even in the standard library? 11:47:19 I mean, it's not an entirely useless operation, but it's reasonably uncommon, and it's almost as short to write r := !r + 1, and you could define it yourself trivially if you needed to 11:47:30 ais523: oh yeah, strings are their own type and not an instantiation of some sequence type too 11:47:34 that makes so much sense!! 11:48:05 that does make sense, in a way; the internal representation is completely different 11:48:15 ais523: "of some sequence type" 11:48:24 strings are certainly an instantiation of a more general sequence type 11:48:28 in OCaml's case, probably unboxed arrays 11:48:32 with a list interface 11:48:43 nah, not quite, unboxed null-terminated arrays 11:48:56 (admittedly haskell ByteString has this flaw too, but there's an effort to define ByteString as Vector Word8s) 11:49:00 ais523: what?! 11:49:07 ais523: OCaml uses null-terminated strings? 11:49:15 elliott: it stores the length too 11:49:18 >_< 11:49:28 the null terminator's there so that they can be passed to C functions unchanged, or something 11:49:50 ais523: and to make them useless for storing binary data! 11:49:54 also, the defining feature of OCaml strings is that you can't change their length 11:50:19 ais523: even in an impure language I can't think of a decent argument for making strings mutable 11:50:23 even /Python/ has immutable strings 11:50:28 here: earlier towakeperiod I was trying to write a handler that stored every character read 11:50:49 ais523: let me quote to you the types involved in ocaml printf 11:50:51 type ('a, 'b, 'c, 'd) format4 = ('a, 'b, 'c, 'c, 'c, 'd) format6 11:50:51 Format strings have a general and highly polymorphic type ('a, 'b, 'c, 'd, 'e, 'f) format6. Type format6 is built in. The two simplified types, format and format4 below are included for backward compatibility with earlier releases of Objective Caml. 'a is the type of the parameters of the format, 'b is the type of the first argument given to %a and %t printing functions, 'c is the type of the argument transmitted to the first argument of "kprintf" 11:50:51 -style functions, 'd is the result type for the "scanf"-style functions, 'e is the type of the receiver function for the "scanf"-style functions, 'f is the result type for the "printf"-style function. 11:50:52 type ('a, 'b, 'c) format = ('a, 'b, 'c, 'c) format4 11:50:54 val string_of_format : ('a, 'b, 'c, 'd, 'e, 'f) format6 -> string 11:50:56 Converts a format string into a string. 11:50:58 val format_of_string : ('a, 'b, 'c, 'd, 'e, 'f) format6 -> ('a, 'b, 'c, 'd, 'e, 'f) format6 11:51:00 format_of_string s returns a format string read from the string literal s. 11:51:02 val (^^) : ('a, 'b, 'c, 'd, 'e, 'f) format6 -> 11:51:03 basically, suppose you're doing getc in a loop, and you want to store the entire file read 11:51:04 ('f, 'b, 'c, 'e, 'g, 'h) format6 -> ('a, 'b, 'c, 'd, 'g, 'h) format6 11:51:06 f1 ^^ f2 catenates formats f1 and f2. The result is a format that accepts arguments from f1, then arguments from f2. 11:51:21 elliott: I have the page open in w3m right now, no real reason to quote it 11:52:11 also, I wanted it to be O(n), not O(n^2) 11:52:18 out of interest, how do you do that in Haskell? 11:52:34 I suspect it wouldn't be the same as how I eventually did it in OCaml; the result was slightly lower-level than C 11:52:40 because OCaml doesn't have a realloc equivalent 11:53:05 so I had to do what was effectively malloc + memmove (luckily no explicit free required as it's GCed) 11:53:23 /then/, I had to allocate another string when I was finished, in order to trim it down to size 11:56:03 -!- sebbu has joined. 11:56:03 -!- sebbu has quit (Changing host). 11:56:04 -!- sebbu has joined. 11:56:28 * ais523 suddenly wonders what the top Google result is for "search engine optimization" 11:57:56 -!- sebbu2 has quit (Ping timeout: 240 seconds). 11:58:16 hmm, the top paid result is from www.seoconsult.com; the first nonpaid result is Wikipedia, and the second www.searchengineoptimisation.org, followed by www.searchengineoptimisation.co.uk 11:58:45 I suppose the lesson is, that if you really want to win an SEO war against people who are as cutthroat as you are, make the domain name match the search query exactly 11:59:49 haha, indeed; I changed the query to "search optimisation engine", and now the winning non-Wikipedia nonpaid result is on the site www.searchengineoptimising.com 12:00:05 -!- ais523 has set topic: Search optimisation engine | http://codu.org/logs/_esoteric/. 12:01:19 ais523: oh, you asked a question 12:01:32 basically, suppose you're doing getc in a loop, and you want to store the entire file read 12:01:32 also, I wanted it to be O(n), not O(n^2) 12:01:32 out of interest, how do you do that in Haskell? 12:02:03 slurp :: Handle -> IO String; slurp h = do { eof <- hIsEOF h; if eof then return "" else (:) <$> getChar <*> slurp h } 12:02:30 -!- cheater has joined. 12:03:06 ais523: that's for linked-list strings, though 12:03:23 ais523: I presume youw ant it for flat-byte-array type things? 12:03:25 *you want 12:08:18 oops, s/getChar/hGetChar h/ 12:08:31 ais523: in which case, an obvious strategy is just s/hGetChar h/B.hGet h 8192/ and then apply B.concat to the result of it all 12:09:10 the actual implementation of B.hGetContents says: 12:09:18 "This function reads chunks at a time, doubling the chunksize on each read. The final buffer is then realloced to the appropriate size. For files > half of available memory, this may lead to memory exhaustion. Consider using readFile in this case." 12:09:54 readFile is clever; it just asks the OS how big the file is, then does one big B.hGet of that size 12:16:05 ais523: :( 12:44:13 -!- cheater has quit (Ping timeout: 240 seconds). 12:53:28 -!- Phantom_Hoover has joined. 12:53:39 lambdabot! 12:53:39 Phantom_Hoover: You have 2 new messages. '/msg lambdabot @messages' to read them. 13:01:30 helo Phantom_Hoover 13:01:42 Hamlo. 13:01:45 hamlo 13:02:27 Gregor: Is there a shorter way to write {struct foo *bar = malloc(sizeof(struct foo)); memcpy(bar, &foo, sizeof(struct foo));} 13:05:45 "struct foo *bar = malloc(sizeof *bar);" is a classical way to write the malloc sorta-type-safely; "*bar = foo" is a shorter way to write the memcpy, if you don't mind letting the compiler decide how to do it, and that some padding bytes may not get moved if it doesn't want to. 13:08:18 struct foo *bar = g_memdup(&foo, sizeof foo); if you want to be all glib about it. :p 13:10:09 fizzie: glib is the relevant scenario since it's mcmap :P 13:10:17 But I just rewrote it as a malloc plus assignments, so oh well. 13:10:48 fizzie: Do you mind much if I make a directory for map code? It's just that map_flat.c and map_surface.c and map_cross.c and map_iso.c seems a bit ridiculous. 13:11:12 Feel free to. 13:11:38 Most excellente. 13:18:43 elliott: I was at a seminar, I'm back now 13:18:58 you'd probably have understood it better than most of the people there; I managed to follow it eventually 13:19:16 heh; what was it about? 13:19:49 containers and comonads 13:20:16 in particular, it defined an extra structure on containers, then showed that containers with that structure were all comonads, and all containers that were also comonads had that structure 13:20:26 what definition of container? 13:20:32 we ended up concluding that List actually worked more naturally as a comonad than as a monad 13:20:42 lists aren't comonadic 13:20:47 you don't have [a] -> a 13:20:52 nonempty lists are though 13:20:53 err, nonempty lists 13:21:01 right 13:21:27 the definition's that containers have a set of shapes, each shape has its own set of positions 13:21:55 I suspect that the fact that List is a comonad isn't too useful for actual programming, though 13:23:29 ais523: well, (=>>) is \xs f -> map f (tails xs) 13:23:37 which seems useful, in theory 13:23:42 you can implement (a very slow) scanl with it 13:24:27 it was defined in terms of unreturn and unflatten 13:24:45 but that (=>>) looks like a reasonable definition on that basis 13:24:56 ais523: *extract and duplicate 13:25:09 (=>>) is just flip extend, it's the analogy of (>>=) 13:25:15 where extend f = fmap f . duplicate 13:25:27 duplicate is like join, extend is like flip (>>=) 13:26:03 hmm, the thing about general definitions like monads and comonads is that there are all sorts of plausible names for the operations 13:26:24 "This function reads chunks at a time, doubling the chunksize on each read. The final buffer is then realloced to the appropriate size. For files > half of available memory, this may lead to memory exhaustion. Consider using readFile in this case." <-- my OCaml code did that but manually 13:26:46 come to think of it, it'd have been simpler to read everything into memory first, then parse from memory 13:26:50 ais523: nah, the problem is that there's no plausible name for return 13:26:58 return doesn't make any sense, it's just trying to look vaguely like C 13:27:09 pure sort of makes sense but not really 13:27:29 point is meaningful but really bland and unevocative 13:27:30 rather than parse from disk and hook the parser with a hook that builds up a copy of what it parsed in memory 13:27:37 "wrap"? 13:27:46 ais523: wrap's worse than any of those 13:27:57 promotes the container view (fallacy) of monads 13:28:09 (whereas pure promotes the computation view (fallacy) :/) 13:28:34 the computation view is pretty much a special case 13:28:53 no 13:28:58 lots of containers are monads 13:29:04 lots of computations are monads 13:29:11 but describing monads as either is very wrong and misleading 13:29:20 it's not a "special case" any more than Maybe is a special case of Monad 13:29:24 yep, but I meant that computations all fit into a subset of monads 13:29:24 it's not, it just has an instance 13:29:32 that have something in common 13:29:39 and it's a little hard to say what 13:29:40 ais523: well, OK; "computation" isn't used as something with a precise definition here 13:29:45 ah, I see 13:29:48 but instead something people analogise to to try and understand monads 13:29:52 which doesn't work 13:30:01 e.g. State and IO fit into that 13:30:08 but [] doesn't 13:30:17 (well, [] is nondeterministic computation :P) 13:30:21 elliott: I actually have a reasonably computationy view of List 13:30:27 and Maybe, fwiw 13:30:33 yeah, I just cba to think of a better example off the top of my head 13:30:38 the computation view isn't as bad as the container view 13:30:38 hmm, which view would you say Identity falls into? 13:30:42 which insists that an (m a) /contains/ an a 13:30:47 it's a genuinely useful monad 13:30:54 and talks about (>>=) "unwrapping" the value 13:30:59 which is just Not Even Wrong 13:31:05 ais523: it is? 13:31:08 only as the base of a transformer stack 13:31:14 elliott: nope, it handles taint 13:31:36 ais523: well, OK 13:31:42 ais523: I doubt the monad part is that useful 13:31:55 Applicative seems as far as you'd want to go with taint most of the time 13:32:18 you definitely need lift for tainting, but Applicative has that, right? 13:32:30 I can never quite remember what Applicative has, and what it doesn't have 13:33:57 ais523: Applicative is Functor, pure, and (<*>) 13:34:06 although Functor isn't necessary 13:34:11 fmap f x = pure f <*> x 13:34:13 what do monads have over that? 13:34:16 join 13:34:25 pure :: a -> f a, (<*>) :: f (a -> b) -> f a -> f b 13:34:29 join :: m (m a) -> m a 13:34:40 basically, join lets the /structure/ of a computation depend on the /result/ of another 13:34:54 Applicatives have static control structure, Monads have dynamic control structure 13:34:57 and in the case of Identity, you can't really tell whether it exists or not, because it's trivial 13:35:05 there is only the one structure 13:35:11 whether it exists or not? huh? 13:35:12 so join is trivial to define but doesn't do anything 13:35:20 sure join does something 13:35:22 elliott: err, hmm 13:35:24 I'm not denying Identity is a Monad 13:35:38 I'm just saying that I might not agree with "Identity is a useful monad" 13:35:48 ah, OK 13:35:54 although do notation is certainly useful for taint, I think you'd usually express computations that can be expressed with Applicative with it 13:36:00 I think what I'm saying makes sense in my own mind, but is not an elliott-approved concept 13:36:11 heh 13:36:49 ais523: I actually don't know what you mean, though :P 13:37:47 I think, umm, if there's only one possible definition of something (as in, you can get the definition just from the types), it's impossible to tell whether that definition's being used or not 13:37:50 well, obviously it /is/ 13:38:22 note that I almost passed out on the bus this morning, I may not be in a particularly sane state of mind 13:38:30 try not passing out on the bus 13:38:34 * elliott advice 13:38:52 I did; I even succeeded 13:38:57 but it was pretty close for a while 13:39:00 congratulations! now try not almost passing out on the bus 13:39:03 it was lucky that today was so incredibly windy 13:39:04 (advanced stage) 13:39:21 it helped keep me alert, wind does that 13:39:35 -!- Vorpal has joined. 13:39:45 oh, something I read in the paper this morning; you know how non-tech press normally calls all malware viruses? 13:40:13 well, I saw a variation this time, along the lines of "even if you don't enter any personal information, the malicious pages can still fill your computer with bugs" 13:40:31 and I was trying to work out what definition of "bugs" they meant, and if it was a reasonable metaphor or not 13:41:18 heh 13:41:34 There's the "covert listening device" definition of bug. 13:41:42 fizzie: indeed, I was wondering if they meant that 13:41:57 I think it's a more accurate description than the typical newspaper one; also, more vague and more confusing 13:42:05 I think most broadly all a computer user cares about is "it doesn't do what I want" 13:42:09 and you could call all those bugs 13:42:15 if you want to be weird :P 13:42:26 hmm, I don't consider misfeatures to be bugs 13:43:19 elliott: Incidentally, the "listening device" definition of a bug is used in what I believe (from glancing perusal of the earlier discussion) is nowadays your favourite comicky strip ever, the Silence in the Darkness on Q16. 13:43:51 fizzie: Please tell me you learned this from that discussion and you're not like some super Silence in the Darkness on Q16 fan. 13:44:30 Well, I learned it from the discussion in the sense that post-discussion I click-througed quite a number of black squares; one of the few non-black ones was http://silenceinthedarknessonq16.comicostrich.com/comic.php?cdate=20070512 which uses it. 13:44:47 (Hadn't heard of SitDoQ16 before today at all.) 13:44:58 (I suppose it abbreviates like that?) 13:45:03 Yes, that assurance was all I needed. 13:49:18 anyway, I'm reasonably happy with my object file format 13:49:40 it's a bunch of VHDL comments which contain key/context/value triples, followed by something arbitrary, which could well be VHDL 13:49:48 hmm, what's context? 13:51:11 things like what variable the key applies to 13:51:19 whereas there are finitely many keys 13:51:28 that sounds like part of the value to me 13:52:06 elliott: err, what? 13:52:18 oh, hmm 13:52:19 right :) 13:52:32 you could consider it part of the key, I guess 13:52:41 * elliott would probably go straight to key = list of strings and no fixed keys 13:52:50 you should probably ignore unrecognised keys, anyway, for future extensibility 13:52:50 but the whole thing's more flexible than just keys and just values, and doesn't really follow a pattern 13:52:59 and indeed, that seems reasonable 13:58:00 ais523: anyway, you have to hear my ridiculous build system idea since nobody else will: 13:59:31 go on; one of the most important purposes of this channel is finding people to bounce ridiculous ideas off 13:59:47 ais523: set up a FUSE filesystem that has all the output files existing already; they can be opened fine, but read and stat will block until the files exist for real; then, start every single command that needs to be run in parallel (note: the FUSE filesystem doesn't pretend the output file exists for the process trying to write it, i.e. it knows which file not to fake for each process) 13:59:58 this achieves maximum parallelism thanks to the operating system 14:00:18 reads of yet-to-be-built input files succeed as soon as possible 14:00:33 elliott: that's awesome, I'm just upset that many compilers will fail on that sort of thing due to being badly designed 14:00:45 ais523: I'm not sure they would, actually 14:00:52 most compilers don't break on really slow filesystems 14:01:05 what if they seek around in the file that they're writing? 14:01:15 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .). 14:01:15 it wouldn't at all surprise me if an ar/tar variant did that 14:01:18 ais523: that works fine; the output file is "normal" for each command 14:01:23 it's every other output that's faked 14:01:36 i.e. the file to be created doesn't exist in the filesystem each command runs in 14:01:44 elliott: oh, do you only remove the block on the read when the file is actually closed? 14:01:45 just every other output of the build process 14:02:02 ais523: when the command completes successfully, yes; I suppose that would work as an optimisation, too 14:02:02 I thought you meant it only blocked until the relevant portion of the file had been written 14:02:16 heh, that's even better, but most compilers stat 14:02:19 well, some of them anyway 14:02:28 and the vast majority buffer their output fully 14:02:32 so that wouldn't actually help much 14:02:33 yep, but stat wouldn't break it, just read-after-write-barrier it 14:02:49 ais523: well, I mean 14:02:54 you'd have to wait for the whole thing to finish 14:02:57 for them to get the correct stat result 14:03:06 yep, that's what I meant by a read-after-write barrier 14:03:08 right 14:03:11 so the advantage is negated 14:03:21 you know what we need? lazy languages 14:03:31 ais523: thankfully, I fear this scheme won't work very well 14:03:36 so that you could have stat return before its results were available 14:03:40 because I suspect the overhead of setting up every process is too great 14:03:51 and the scheduler will hate you 14:04:07 ais523: heh 14:04:12 ais523: that's just unsafeInterleaveIO 14:04:23 oh, is that what that does? 14:04:33 (what's unsafe about it, btw?) 14:04:33 ais523: it's just (return . unsafePerformIO), essentially 14:04:37 so the IO only gets executed when you force the action 14:04:39 weeeeeell 14:04:42 some people argue it isn't unsafe 14:04:46 but they're wrong 14:04:51 it exposes evaluation order as IO 14:04:53 i.e. 14:05:03 whenever some /pure/ code forces the value you get out of an unsafeInterleaveIO action 14:05:06 the IO occurs 14:05:21 oh right, it lets you tell things apart that should be indistinguishable 14:05:21 you can justify this as still being inside the IO monad -- it doesn't break purity in a strict sense 14:05:25 but it's eurgh 14:05:26 ais523: not rtue 14:05:27 true 14:05:29 _|_ lets you do that 14:05:36 to determine evaluation order 14:05:39 but... it's icky 14:05:49 getContents uses that, it returns all of stdin as a lazy string 14:05:49 well, you can code to protect your code from _|_ in particular 14:05:54 ais523: err, what? 14:05:58 using seq or whatever 14:06:07 you're confused, unsafeInterleaveIO doesn't let you tell things apart that should be distinguishable at all 14:06:18 wow, they're making a film out of Battleship 14:06:33 as in, the game 14:06:34 hmm… I suppose unsafeInterleaveIO could be implemented in terms of exceptions and an unthrow operation that went back to where the exception was thrown from 14:06:46 elliott: it'd just be a generic war film, right? 14:07:12 ais523: "In the Hawaiian Islands, an international naval fleet at Pearl Harbor engage in a very dynamic and intense battle against an alien race known as "The Regents". The aliens come to planet Earth, on a mission to build a power source in the ocean. Upon their visit, they come in contact with the navy fleet. The film is also purported to show both sides of the story, from the aliens' perspective, as well as the humans' so the audience knows exa 14:07:12 ctly where the opponent's ships are.[4]" 14:07:15 -!- Ngevd has joined. 14:07:27 my games of Battleship usually aren't against aliens... 14:07:35 Hello... 14:07:36 Ill 14:07:42 have they made a film out of Monopoly yet? 14:07:49 that would be THE WORST THING EVER AND SO SHIT AND EVERYONE WHO WOULD ENJOY IT SHOULD DIE 14:07:54 IN A DEATHLY MANNER 14:07:56 ahem 14:07:57 hi Ngevd 14:08:16 There are quite a few movie trailers for Tetris: The Movie, but I don't think anyone's made it for reals. :/ 14:08:27 the thing is, that with games that are simplifications (often huge ones) of reality, then complicating them into a film just makes it look like it's a film based on reality 14:08:32 fizzie: I know; some of them are quite good 14:08:41 but I doubt there'd be enough plot in it to carry a full-length movie 14:08:51 ais523: Like a Tetris movie would just be a documentary on the construction of high-rise buildings. 14:09:12 also, pretty much all non-computer attempts to simulate Tetris that I've seen don't allow for the removal of lines to work correctly 14:09:13 fizzie: Well, there's Complete History of the Soviet Union. 14:09:21 I saw a Tetris board game once; it didn't really work 14:09:22 It has plot and everything! 14:09:44 if you completed a line you were meant to put a peg next to it to mean "this line's completed, ignore it" 14:09:49 ais523: haha 14:09:56 I think I've seen that, too 14:10:02 but you couldn't physically stretch the pieces across it because they were made of rigid plastic 14:10:52 * elliott is still feeling let down by that "first person" Tetris. 14:11:05 It could have been my favourite game! 14:11:33 there's no obvious reason why that would necessarily be awful 14:11:34 fizzie: (Admittedly it's not so much as a Tetris film as a film with Tetris jammed into the side of it.) 14:11:34 -!- hagb4rd has joined. 14:11:36 was it just implemented badly? 14:11:39 ais523: it wasn't first person 14:11:44 it just rotated the screen as you rotated the piece, that's all 14:11:47 otherwise it was standard tetris 14:12:14 hmm, it meets one of the necessary conditions to be first person, but is also missing at least one 14:12:15 ah here we are.. hello esofriends :} 14:12:24 hi hagb4rd 14:12:52 ais523: by the way, we found a place to send the lost people 14:12:54 `? esoteric 14:13:01 This channel is about programming -- for the other kind of esoterica, try #esoteric on irc.dalnet.net. 14:13:05 elliott: yay 14:13:15 that will make a lot of people happier, I think 14:13:34 I see no reason why esoterica shouldn't be discussed; just it's awkward to put two mostly unrelated subjects in one channel 14:13:45 We can still mock them before sending them off, right? :( 14:13:46 how are things goin..look like a rainy day..and this cold winds comin from the northern sea 14:13:51 Regarding Tetris, I think they never got the Chernobyl control center simulator they were building for Altparty 2011 to work. There were people fiddling with it at all times of day during the whole weekend, with multimeters and soldering irons and whatnot, but from what I hear it never quite worked out wrong the right way. 14:14:09 fizzie: In, um, Tetris? 14:14:32 No, no, just, you know, associating. Tetris -> Soviet Union + game -> that thing. 14:14:49 Simulating that in Tetris would be impressive. 14:14:59 I've heard a rumour that in nuclear power plants, the alarms sound continuously except when there's a problem, when they stop, because it's more noticeable that way or something 14:15:02 I suspect it's false, though 14:15:11 that seems dubious 14:15:16 it's easy to notice persistent sounds stopping 14:16:03 agreed; but it seems like a bizarre decision to make 14:16:12 when the other way round would presumably work too 14:16:42 Hunt the errors: http://hpaste.org/55219 14:16:58 And the little things that are just /wrong/ 14:17:32 And the wumpus. 14:17:33 elliott: anyway, I've concluded that reducing problems to problems that have already been solved is a fast way to do software development, but tends to lead to subquality programs 14:18:26 also, I did probably the most bizarre optimization I've done ever this morning 14:18:47 it was to a function that calculated strongly connected subsets of graphs 14:19:00 ais523: I reject that because it contradicts one of my core principles :P 14:19:02 the graph was (and still is) represented as a list of pairs 14:19:03 * elliott rational. 14:19:13 ais523: you optimised before getting a better graph representation? 14:19:15 and the order is arbitrary 14:19:39 elliott: that representation comes naturally out of the problem; optimising the representation would involve writing a conversion function 14:19:48 and it was profile-guided optimisation, looking for the slowest part and speeding it up 14:19:55 anyway, I sped the program up by a factor of 6 simply by reversing the list 14:20:03 haha 14:20:43 Ngevd: What do you think interact does? 14:20:44 what have zou optimized..the calculating or the drawing part 14:20:48 my theory in this respect is that the list happens to be sorted, and it's quite plausible that sorted lists happen to hit the worst case of whatever algorithm I'm using (I got it from Wikipedia) 14:21:01 Ngevd: Also, you don't want an Array. 14:21:02 and reversing it gets rid of that worst-casiness in the case of the algorithm in question 14:21:10 hagb4rd: drawing? 14:21:36 elliott, I have no idea what interact is, and I have no idea why I would want an array 14:21:47 elliott: what is an array in Haskell? 14:21:50 Ngevd: Then why did you type "interact $"? 14:22:02 Because the type signature seemed right! 14:22:08 Ngevd: What are you trying to do? 14:22:17 i wonder how one could imprve the speed of calculating maths without changing the architecture of your hardware 14:22:17 ais523: Can I have a standard response for "your question is unanswerable without you clarifying it"? 14:22:36 elliott: hmm 14:22:44 Because $that. 14:22:47 elliott, really, I want to learn my latin vocab 14:22:48 normally, you're in a better position to clarify the questions than I am 14:23:01 because my typical reply is "indeed, I'm not quite sure of what I'm asking, but asked because I want to know what I should be asking" 14:23:09 Ngevd: That's a bit more general than I was intending my question to be answered in. 14:23:18 why don't we just assume the response/reply and save time? 14:23:23 It's what the entire program is for 14:23:23 ais523: OK, let me rephrase what I said: Rephrase what you said, or I can't answer it. 14:23:32 Ngevd: What are you trying to achieve by applying interact? 14:24:04 elliott: what operations does a value of type Array x y support in Haskell, and is there anything particularly notable about their performance behaviour? 14:24:12 By the fact that I don't actually know, I'd guess I should rewrite it 14:24:27 :t interact 14:24:28 (String -> String) -> IO () 14:24:34 right, indeed 14:24:40 ais523: it's (Array i a), where i is the index type, and a is the element type 14:24:47 and it's just a boxed, lazy array 14:24:58 that is, a contiguous region of memory containing pointers to thunks 14:25:12 I could almost remember what interact did, just not the details 14:25:17 and the API is crappy and everyone uses Vector instead but Ngevd doesn't want Vector here either I don't think 14:25:26 ais523: interact happens to use lazy IO (-> unsafeInterleaveIO). 14:25:32 Cue sad track (is that a thing?) 14:25:35 elliott: hmm, so it supports operations like copy but with one element changed? 14:25:57 ais523: There are mutable and immutable versions; the immutable version is stuff like that, yes. 14:26:00 that's what I'd expect an array to do in a pure functional language 14:26:15 There's also unboxed arrays, but that's not the type being used here. 14:26:21 And also the API is horrible and everyone uses Vector instead. 14:26:22 and it's the sort of thing that can reasonably easily be optimised by the compiler into mutation behind the scenes, in cases where the optimisation is obviously correct (which are common) 14:26:26 Have I said that enough? 14:26:30 ais523: that's not reasonably easy at all 14:26:48 I think GHC does do it, but it's not something I'd want to rely on 14:27:10 -!- kallisti has joined. 14:27:11 -!- kallisti has quit (Changing host). 14:27:11 -!- kallisti has joined. 14:27:56 Ngevd: anyway, I think you should use an explicit pattern match instead of either there 14:28:09 Ngevd: you can tell that you're using interact wrong, because 14:28:15 elliott: the most obvious case is if there's only possibly one reference to the input array, and it goes out of scope upon the copy-replace operation 14:28:16 do { ... IO stuff ... } :: IO a (for some a) 14:28:21 in (interact f), f must :: String -> String 14:28:26 IO a =/= (String -> String) 14:28:35 ais523: yes, sufficiently smart compilers are really easy to explain 14:28:38 and I find that's reasonably common in functional languages 14:28:44 elliott: gcc can implement that 14:28:46 and take decades to implement 14:28:53 ais523: gcc doesn't implement Haskell 14:29:04 I'd imagine that most compilers that even vaguely do optimisations do that, actually 14:29:27 the problem is that you'd need a stupidly smart compiler if the array operation was written in Haskell, rather than hardcoded into the compiler 14:29:48 ghc implements array operations as fairly thin wrappers over primitives 14:29:58 but anyway, I think you're vastly oversimplifying things 14:30:36 well, let's see, there are two properties we need to check; "only reference" and "dies here" 14:30:55 "dies here" is trivial to check; in most compilers that go via SSA you need to actively throw away information to not track that 14:31:12 ais523: i am disagreeing with your assessment of the situation 14:31:17 I don't feel like debating it right now though 14:31:23 "only reference" is rather harder, but the common case where you just created the reference and haven't passed it to anything else yet can be optimised 14:31:39 elliott: OK, what about this for an argument: I actually implemented that optimisation for Underload in derlo 14:31:55 except at runtime 14:31:57 ais523: I am glad we live in that special world where Underload is Haskell 14:32:13 elliott: why do you think that Haskell is somehow magically special when it comes to this? 14:32:20 indeed, Underload shares many properties that make this kind of mutating optimisation tricky in Haskell, such as full laziness! 14:32:22 oh, wait, hmm. 14:32:24 no it doesn't 14:32:33 oh right, I forgot about laziness 14:32:50 the world needs a strict version of Haskell 14:32:57 no, it really doesn't 14:33:05 not necessarily because it'd be better, but because it would make it much easier to compare it with things 14:33:12 heh 14:33:15 well, there's DDC. 14:33:26 Haskell has lots of innovations that have nothing to do with laziness, and the laziness gets in the way when you'd like to evaluate them on their own 14:33:44 ais523: haskell is for people who want to write programs, not for people who want to debate languages :P 14:35:18 wait, does Ngevd's Haskell program seriously say "interact $ do"? 14:35:30 yes. 14:35:30 no wonder it jumped out at elliott 14:35:46 trivial type errors are quite easy to spot :P 14:36:28 elliott: well, String = [Char] and thus is a monad action type, technically speaking… 14:36:47 err, no 14:36:53 wait, yes 14:36:57 ais523: yep, but that's irrelevant 14:37:01 the head is (->) here 14:37:04 it's the reader monad 14:37:16 oh, right, that's what I first thought 14:37:19 then I forgot about the $ 14:37:20 but, err, getStdGen rather ruins that theory 14:37:25 ais523: ? 14:37:28 the $ is irrelevant 14:37:31 it's just (interact (do ...)) 14:37:39 err, hmm 14:37:46 yep 14:38:07 no, it is relevant 14:38:18 imagine if it had been (interact $ (do …) "abc") 14:38:22 well, OK 14:38:25 but it isn't 14:38:33 err, that doesn't make sense either 14:38:46 fizzie: When did map.h start including world.h? :/ 14:38:47 elliott: it'll explain a lot if I explain that I don't find Haskell intuitive 14:38:56 ais523: you've said that 14:39:13 I can write in it, but I often make crazy type mistakes or whatever due to not grasping it 14:39:23 whereas in OCaml, pretty much all the type errors I make are typos 14:39:38 that's because OCaml's type system is too shallow to catch any real type errors :) 14:39:43 haha 14:39:44 BRUUUUUN 14:39:48 just wait until Anarchy comes around 14:40:04 no language called Anarchy is allowed to have a type system 14:40:30 the idea is that it's statically typed with a really expressive type system, that's also massively complex but it doesn't matter because the types aren't user-visible 14:40:45 I have problems just coming up with a notation to write the types down 14:40:48 in general 14:40:55 elliott: $ git blame map.h | grep world.h 14:40:55 3105a3b3 (Elliott Hird 2011-07-23 10:00:04 +0100 5) #include "world.h" 14:40:58 elliott: Better ask yourself that. 14:41:02 fizzie: :-( 14:41:06 but it doesn't matter because it just makes sure that the program types for the specific uses of the functions you're using 14:41:11 ais523: scapegoat won't have blame, right? 14:41:14 * elliott rimshot 14:41:29 elliott: it'd be hard not to ;) 14:41:38 why do you think it's called scapegoat in the first place? 14:41:42 dude 14:41:43 i already 14:41:43 did 14:41:44 the rimshot 14:41:49 you don't have to point it out :'( 14:41:52 just wait until Anarchy comes around <== isn't that how everything started? 14:42:03 hagb4rd: nah, Anarchy's an esolang 14:42:07 ah 14:42:07 or will be, once I work it out 14:42:09 k 14:42:17 I suppose I should've used "git annotate", it's less bitchy. 14:42:22 it is slightly more implemented than most completely vaporware esolangs, because it has a parser, which also actually works 14:42:36 (this puts it in a different category from Cyclexa, which has only a parser but it doesn't work) 14:43:06 actually, hmm, Cyclexa : Anarchy :: UNIX : @, but less so 14:43:22 or, hmm, a better analogy 14:43:27 Cyclexa : Anarchy :: bash : Powershell 14:43:32 ais523: hey, add some more spaces around those colons, or those words will start fighting 14:43:32 but more so 14:43:45 ? 14:43:54 ais523: UNIX and @ 14:43:58 I see 14:44:11 that was something like the third interpretation I tried 14:44:45 incidentally, it seems that the next big thing in JavaScript implementation is type inference 14:45:02 not as part of the language, but getting the compilers to infer types so that they don't have to put type checks in at runtime 14:45:20 the next big thing? 14:45:24 you mean the previous big thing 14:45:35 at least, they've been doing that, or at least talking about doing that, for years 14:45:35 oh, have they managed it now? they were starting on it last I looked 14:45:43 oh, well it may be that they're only just now succeeding :) 14:46:08 incidentally, in Anarchy tuples and lists are special cases of the same thing 14:46:25 which is probably obvious, but they use the same type constructor, (,) 14:46:50 ais523: are you sure anarchy isn't just dynamically typed :) 14:47:03 I suppose the defining feature of Anarchy is just picking up a convenient type constructor from somewhere and not worrying about if it already means something else 14:47:13 elliott: it's aptly named 14:47:55 I suppose you could call it an instance of the whole sufficiently smart compiler thing, with respect to "a sufficiently smart compiler should just magically figure out all the types I'm using even if they make no sense" 14:48:01 except I think it's practical 14:48:50 hmm, I'm not really sure what to do about polymorphic recursion 14:48:58 it's obviously allowed, and also obviously not allowed in general 14:49:04 but I can't figure out what the restrictions are 14:50:25 the simplest way would just be to put an arbitrary limit on the number of different type constructors that can be used in any given type (whether or not they have the same names; or perhaps only if they have the same names, as only a finite number of type constructor names can be used in any given program) 14:50:57 ais523: just take the fixed-point 14:51:21 elliott: indeed; the problem is, I'm not yet convinced it's computable to determine if there is a fixed-point 14:51:42 hopefully it'll turn out that there's always one, so its computability is not in question 14:51:49 y isnt just restricted by avaiable memory? 14:52:16 ]that 14:52:22 hagb4rd: the limit's to detect infinite loops in the traditional crude way of "well, it hasn't finished yet, it's probably infinite" 14:52:37 elliott saz 14:52:44 what 14:52:46 says its limited 14:53:02 the number of constructors 14:53:05 Says what's limited? 14:53:10 ais523 is the one who said that. 14:53:12 And he just said "finite". 14:53:18 Programs are finite, usually... 14:53:50 hagb4rd: if you can write a program containing infinitely many different names for type constructors, good on you, but don't expect me to be able to compile it, or even yourself to be able to fit it in a pastebin 14:53:53 no it was ais: as only a finite number of type constructor names can be used in any given program 14:54:10 finitely many, not a fixed amount 14:54:13 hagb4rd: well, you can't exactly generate them at runtime 14:54:16 i was just curious 14:54:23 it might be anarchic, but it isn't Perl 14:54:28 also, limited by memory = a finite limit :) 14:54:35 hagb4rd: i was just answering your curiosity 14:55:11 ok.. so everything works out fine 14:57:03 ais523: Ban fizzie please. :/ 14:57:35 For the offense of not inventing names for you? 14:57:47 Yes. 14:57:54 I'm very upset. 14:58:05 wait, of course it's decidable 14:58:58 also, the same issue is why Haskell and OCaml's error messages for type errors are less helpful than usual when recursion is involved 14:59:24 :t fix id 14:59:25 forall a. a 14:59:42 they are? 14:59:47 not if you specify a type signature, at least 14:59:57 right, I mean in the case of inference only 15:00:29 typically what they end up complaining about is nonobvious because it's based on a bunch of assumptions that you hadn't meant to be correct 15:01:33 elliott: is "even-length list" a type expressible in Haskell? 15:01:49 ais523: yes, extremely trivially 15:01:54 I'll let you think for a second to figure out how 15:02:06 elliott: but not in a way that's a special case of [], right? 15:02:47 I mean, I can define EvenList a = Nil | ConsEven a (OddList a) and OddList a = ConsOdd a (EvenList a) 15:02:54 no: to do that would require subtyping, which wreaks hell on inference; I suspect you would accept something that could be constructed like (Foo [1,2,3,4]), in which case I will complain that you're giving list literal syntax undue weight :) 15:03:13 ais523: I was going for data EvenList a = Nil | Cons a a (EvenList a) 15:03:25 but not EvenList = Nil | Cons a (OddList a) and OddList = Cons a (EvenList a) 15:03:32 elliott: hmm 15:03:36 but then you can't get the tail with a pattern-match 15:04:05 wait, yes you can, just put the element back manually 15:04:39 anyway, the definition which uses Cons in both places rather than ConsEven and ConsOdd is what you'd use in Anarchy, if you could specify types at all rather than having them inferred 15:04:45 and it desugars into ConsEven and ConsOdd 15:05:10 although probably with less meaningful names 15:07:40 Aha I have found the hipsterest metal. 15:15:25 hmm, recent discovery: YouTube's making people give them their cellphone number to uncap accounts and allow them to upload videos longer than 15 minutes 15:15:29 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 15:15:37 I'm not entirely sure I can explain that away in any way /but/ being evil 15:24:59 -!- MSleep has quit (Ping timeout: 276 seconds). 15:25:47 -!- MSleep has joined. 15:27:42 ais523: to avoid bots clogging the servers? 15:28:06 elliott: it's not the only requirement 15:32:47 -!- MSleep has quit (Ping timeout: 276 seconds). 15:32:57 -!- MSleep has joined. 15:34:03 -!- MSleep has quit (Read error: Connection reset by peer). 15:34:22 -!- MSleep has joined. 15:39:45 -!- copumpkin has joined. 15:42:44 I got a Japanese ditto last night :D 15:43:14 coppro: err, context? 15:43:19 it could be Pokémon, but I'm not sure it is 15:43:22 ais523: yes 15:43:37 flawless speed and HP stat? 15:43:41 nah, just japanese 15:44:11 I should really get a quebecois game and do shenanigans if I ever decide to try to breed pokes for combat 15:46:25 don't, the international bonus effectively works out to a 13% decrease in the length of time it takes to train them up to level 50/100, which is not really noticeable 15:46:35 there's no impact on the actual eventual stats 15:48:26 -!- Ngevd has quit (Quit: Goodbye). 15:50:50 -!- Ngevd has joined. 15:55:47 ais523: oh, I wasn't talking about that 15:55:58 also I don't think quebecois would count as international 15:56:08 it's shininess that I'm going for 15:56:28 it would; the cartridges for games in a particular language are identical 15:56:47 But I would register it as having the same location 15:56:49 since it's my location 15:56:50 so it can't distinguish US/France from England/France from English Canadian/French Canadian 15:57:06 registered location is ignored, I think, because it's so easily faked 15:57:15 ah 15:58:10 hmm, TIL that detonating a nuclear bomb was only banned in 1998 15:58:13 in the UK 15:58:34 (it was a consequence of the comprehensive test ban treaty; typically, detonating a nuclear bomb before then would typically violate some other law indirectly) 16:12:19 How about just possessing a nuclear bomb, that legal? 16:22:44 -!- Taneb has joined. 16:24:21 Best ISP-given workaround ever. Paraphrasing here: "We've switched some mobile data connections to use NAT; connecting mobile devices will randomly get either a public IP or a NATted one. [What do I do if a service I'm using requires a public IP?] In this case, you must try establishing the connection again until you get a public IP. Use [link] to check your current IP." 16:24:27 The most helpful. 16:25:04 -!- Ngevd has quit (Ping timeout: 248 seconds). 16:26:14 Official justification is the predicted sparsity of v4 addresses. 16:26:44 So give 'em IPv6 addresses. They'll do just fine. 16:26:58 That would be too futuristic. 16:32:45 I'm kind of surprised at how slowly IPv6 is being adopted. 16:33:47 People don't like change changing 16:34:28 I think NAT probably has slowed down the change as well? 16:35:02 since it lets everyone procrastinate the looming address exhaustion apocalypse 16:35:20 There's no real reason you can't just NAT further and further. 16:35:38 but... 16:35:39 but 16:35:42 so ugly. ;_; 16:36:21 I didn't say it was a good idea. 16:37:07 ""[...] it is possible that its [NAT's] widespread use will significantly delay the need to deploy IPv6. [...] It is probably safe to say that networks would be better off without NAT [...]" -- "Some" 16:37:32 This is what Some[6] say, according to Wikipedia 16:44:42 Yeah, the Some Institute of Somersville. 17:00:13 -!- MSleep has changed nick to MDude. 17:02:44 -!- ais523 has quit (Remote host closed the connection). 17:09:57 -!- Taneb has quit (Quit: Goodbye). 17:24:10 i think station v3 has a sort of gilligan's isle sort of plot except it does seem they are always endeavouring to get from A to B 17:24:40 as for the characters they would all look perfectly at home in commander keen 17:28:12 ... oh i think i see now.. im just in complete confusion over all the events since im just reading from a random position 17:28:36 thus giving the illusion that lots of stuff was all miraculously invented at once 17:30:00 kind of like how video games seemed amazing all at once, despite requiring the discovery of electricity, the invention of computers, the invention of television, the invention of the microchip, 17:35:40 the invention of people. 17:35:56 the invention of money 17:36:14 life too 17:36:22 eyes 17:36:23 hands 17:36:33 light 17:36:59 hmm 17:37:24 its te same effect when you encounter a webcomic for the first time 17:37:46 it can seem like theres endless pages until you catch up 17:38:14 but then, to be fair, theres endless webcomics out there 17:44:40 did itidus get incremented? o_0 17:45:42 `pastelogs itidus21 17:46:08 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.17205 17:47:10 itidus21 from 23rd july 17:47:16 `pastelogs itidus20 17:47:24 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.29013 17:47:57 itidus20 from 16th july .. it seems to vary back and forth 17:48:33 this is a phenomenon which requires explanation 17:48:58 it's my alt nick i guess 17:49:26 since i am not used to irc, i havent made provisions to use underscores 17:52:24 oh 18:01:21 -!- oklopol has joined. 18:37:13 When did freshmeat.net change to freecode.com??? 18:38:47 ___---_-----------------------_______ 18:39:07 Gregor: 2011-10-29 18:39:30 Man, I would have noticed that if it hadn't become so irrelevant. 18:39:37 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds). 18:42:21 Gregor: you're irrelevant. 18:43:05 kallisti: you're a relephant 18:47:01 -!- Klisz has joined. 18:55:58 -!- Phantom_Hoover has joined. 18:59:31 -!- DCliche has joined. 19:03:00 -!- Klisz has quit (Ping timeout: 252 seconds). 19:17:57 -!- kallisti has quit (Read error: Connection reset by peer). 19:21:01 -!- kallisti has joined. 19:21:01 -!- kallisti has quit (Changing host). 19:21:01 -!- kallisti has joined. 19:21:50 my computer just overheated on my bed. 19:21:53 perhaps I need to clean the fan. 19:23:47 did it catch on fire 19:24:40 -!- zzo38 has joined. 19:25:48 -!- derrik has joined. 19:27:12 oklopol: no 19:27:21 presumably it turned itself off 19:27:33 which is not nearly as cool as spontaneous combustion 19:28:02 insert heat joke 19:28:03 -!- sebbu2 has joined. 19:28:03 -!- sebbu2 has quit (Changing host). 19:28:03 -!- sebbu2 has joined. 19:30:57 -!- sebbu has quit (Ping timeout: 240 seconds). 19:39:23 `run cat lol &| echo 19:39:26 bash: -c: line 0: syntax error near unexpected token `|' \ bash: -c: line 0: `cat lol &| echo' 19:39:29 `run cat lol | echo 19:39:32 ​\ cat: lol: No such file or directory 19:39:38 hmm 19:39:47 what was that thing that's like 2>&1 | 19:40:00 `run cat lol |& echo 19:40:03 No output. 19:40:43 `run cat lol | echo 19:40:45 ​\ cat: lol: No such file or directory 19:45:34 -!- sebbu2 has changed nick to sebbu. 19:48:24 head -c 200 | head -n 2 19:48:34 can this be combined into a single head command? 19:49:06 have you tried the obvious yet? 19:49:14 obviously not. :P 19:49:25 well 19:49:28 let me know 19:49:36 oh wait I think I did try it a while ago. 19:49:47 but I will try again because I don't remember 19:50:35 it's ambiguous without an explicit ordering though so I don't think it would work. 19:51:25 yeah using -c with -n just ignores -n 19:58:13 -!- nys has joined. 20:08:29 -!- GreaseMonkey has joined. 20:09:23 > 9**9**9 20:09:24 Infinity 20:12:04 Close enough. 20:17:28 -!- oerjan has joined. 20:25:13 !perl @a = qw(a b c); print splice @a, 0, 5 20:25:16 abc 20:25:41 -!- azaq23 has joined. 20:25:49 -!- azaq23 has quit (Max SendQ exceeded). 20:25:53 !perl @a = qw(a b c); map {print "ha" if undefined } splice @a, 0, 5 20:25:54 hahaha 20:26:10 !perl @a = qw(a b c); map {print "ha" if !defined } splice @a, 0, 5 20:26:23 sanity. check. 20:33:11 > 9^9^9 20:33:16 mueval: ExitFailure 1 20:33:16 mueval: Prelude.undefined 20:33:20 (Just checking.) 20:33:30 I guess "Infinity" was closer. 20:40:24 > 9^9 20:40:25 387420489 20:40:41 !perl sub test(\$) { my ($s) = @_; return my (defined wantarray? undef : $s) = 2; } local $, = ' '; my $s = 1; print test $s; test $s; print $s 20:40:41 Can't declare null operation in "my" at /tmp/input.23478 line 1, near ") =" 20:40:48 -!- calamari has joined. 20:40:53 NOOOOOO 20:41:00 my completely beautiful code is ruined. 20:41:07 I have to use /multiple lines/ 20:41:58 i'd sort of think the point of my is that it's lexically scoped at compile-time 20:42:38 !perl sub test(\$) { my ($s) = @_; return my (defined wantarray? undef : $s) = 2; } local $, = ' '; my $s = 1; print test $s; test $s; print $s 20:42:38 Can't declare null operation in "my" at /tmp/input.23726 line 1, near ") =" 20:42:52 !perl sub test(\$) { my ($s) = @_; return (defined wantarray? undef : $$s) = 2; } local $, = ' '; my $s = 1; print test $s; test $s; print $s 20:42:52 Modification of a read-only value attempted at /tmp/input.23799 line 1. 20:43:13 !perl sub test(\$) { my ($s) = @_; return (defined wantarray? (undef) : $$s) = 2; } local $, = ' '; my $s = 1; print test $s; test $s; print $s 20:43:14 Assignment to both a list and a scalar at /tmp/input.23860 line 1, near "2;" 20:43:38 !perl sub test(\$) { my ($s) = @_; return (defined wantarray? (undef) : ($$s)) = 2; } local $, = ' '; my $s = 1; print test $s; test $s; print $s 20:43:38 22 20:43:45 lol 20:44:39 okay maybe there's a better way to write that in one line. 20:44:54 !perl sub test(\$) { my ($s) = @_; return (defined wantarray? $_ : $$s) = 2; } local $, = ' '; my $s = 1; print test $s; test $s; print $s 20:44:54 22 20:45:18 !perl sub test(\$) { my ($s) = @_; return defined wantarray? $_ : $$s = 2; } local $, = ' '; my $s = 1; print test $s; test $s; print $s 20:45:19 22 20:45:31 it's more confusing without the parens I think. 20:46:19 !perl sub test(\$) { my ($s) = @_; return defined wantarray? $_ : $$s = 2; } local $, = ' '; my $s = 1; print test $s; test $s; print $s; print 20:46:20 222 20:46:26 also it overwrites $_ 20:46:34 !perl sub test(\$) { my ($s) = @_; return defined wantarray? my $_ : $$s = 2; } local $, = ' '; my $s = 1; print test $s; test $s; print $s; print 20:46:34 22 20:46:37 there we go. 20:47:50 return (defined wantarray? my $_ : $$s) = join "\n", (splice @lines, 0, $n // $line_cap); 20:47:56 this is my opus magnus. 20:48:46 I could also write my (undef) 20:49:01 er wait no that wouldn't work 20:49:37 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds). 20:50:10 !perl sub test(\_) { my ($s) = @_; return defined wantarray? my $_ : $$s = 2; } local $, = ' '; my $s = 1; print test $s; test $s; print $s; print 20:50:11 Malformed prototype for main::test: \_ at /tmp/input.24632 line 1. 20:50:21 hmmm, I would think \_ could be a valid prototype 20:50:36 it looks like a nice comfy chair (without legs) 20:51:06 What'd it mean? I mean, _'s not a sigil. 20:51:23 _ means to use $_ if no argument is supplied. 20:51:29 I think the multimana semiring (from Icosahedral RPG) is like (Cont Natural Five) because, a mana can be (Five -> Natural) to tell you how many copies of a prime factor, and a mana -> Natural tells you what integer multiple of that mana is added together. It won't work to read the amount of your mana in Haskell, because the set of manas is infinite. 20:51:30 it's otherwise treated as $ 20:52:01 Yes, but: "Any backslashed prototype character represents an actual argument that absolutely must start with that character." That's not going to work for a \_. 20:52:14 that's a dumb rule. :P 20:52:29 * kallisti is talking about what should be. 20:52:52 hmmm 20:53:05 So you'd like to get a scalarref to $_ if the argument is missing? 20:53:06 plenty of perl operators mutate $_ in place 20:53:11 yes. 20:53:40 I don't actually need it right now 20:53:46 it's just something I could see being useful to have. 20:53:52 Does that make a semiring if the result type (r) of a continuation is a semiring? 20:53:53 when emulating perl operators. 20:55:33 fizzie: but I'm pretty sure you can just do that with manual hacks. 20:55:41 since $_ can be modified in-place anywhere 20:56:28 just make the argument optional. if it's missing, modify a non-lexically bound $_ 20:56:29 (Of course to implement in Haskell requires additional constraints) 20:58:38 !perl sub foo (;\$) { my $ref = shift // \$_; $$ref = "ha"; } $_ = "x"; foo; my $bar = "y"; foo $bar; print "$_ $bar"; 20:58:38 ha ha 20:58:41 fizzie: man I really wish Perl 6 were a branched language and perl 6 were just some basic improvements to perl 5. 20:59:54 fizzie: hm 21:00:26 oh I misread. yes that's basically what I was suggesting. 21:00:56 It doesn't even arguably look that bad, since it's just a //\$_ piece of line-noise. 21:01:12 ($ref? $$ref : $_) = "ha"; 21:01:14 works as well. 21:01:28 fizzie: I am immune to perl line noise.. 21:01:31 it doesn't bother me. 21:01:33 /\/\/ do the wave. 21:02:21 I look at perl and see a beautiful language. :) 21:02:48 kallisti: ocular adjustment required 21:03:02 NOPE I SEE WITH MY BRAIN. 21:03:10 I see beauty with my brain anyway. 21:03:19 probably other things too! 21:04:16 oh hey I just found a great way to grab two elements at a time. 21:04:44 while( my ($x,$y) = splice @array, 0, 2 ) { ... } 21:04:53 -!- monqy has joined. 21:04:56 @array needs to be something you don't mind throwing away. 21:04:57 Arrr! 21:04:57 @tell ais523 elliott: the most obvious case is if there's only possibly one reference to the input array [...] <-- congratulations on reinventing the Clean language 21:04:57 Consider it noted. 21:06:01 -!- Phantom_Hoover has joined. 21:06:32 return (defined wantarray? my $_ : $$s) = join "\n", (splice @lines, 0, $n // $line_cap); 21:06:35 monqy: look at this 21:06:47 is that perle 21:06:50 yes 21:07:14 kallisti: Isn't there a module for that?-) (Grabbing two elements from a list at a time.) 21:07:23 fizzie: List::MoreUtils 21:07:36 Right, the well-named "natatime". 21:07:57 It's natatime! Let's all nata the nat up. 21:08:00 it's not standard though. splice is built-in and arguably takes less code. 21:08:10 But is it FAST. 21:08:12 since natatime uses an iterator object so you need a line before the loop to create it. 21:08:28 fizzie: probably not as fast no. 21:08:39 because it deletes and resizes the array. 21:09:01 fizzie: but yes that's always my first question when talking about something in perl. 21:12:19 for(my $x; $x+1 != $#array; ++$x) 21:12:27 fizzie: fastest natatime 21:13:28 my ($a,$b) = @array[$x,++$x] 21:13:34 ais523: I was going for data EvenList a = Nil | Cons a a (EvenList a) <-- type EvenList a = [(a,a)] kthxbye 21:14:02 kallisti: Also the most scientific benchmark ever: 21:14:03 $ perl -e 'use Time::HiRes qw(time); use List::MoreUtils qw(natatime); { my @a; $#a = 10000000; $t1s = time; while (my ($x, $y) = splice @a, 0, 2) {} $t1e = time; } { my @a; $#a = 10000000; $t2s = time; for (my $it = natatime 2, @a; my ($x, $y) = $it->(); ) {} $t2e = time; } print $t1e-$t1s, " ", $t2e-$t2s, "\n";' 21:14:03 1.51157808303833 2.85868787765503 21:14:19 Splice is them victorious. 21:14:24 oh wow. 21:14:29 I wouldn't expect that. 21:15:33 perhaps perl has a way to efficient remove elements from the front of a list or something? 21:15:37 *efficiently 21:15:49 I might have done something "worng", like my ADSL router configuration interface puts it. But anyhow. 21:16:12 also I guess natatime is written in perl whereas splice is in C, but that's still only constant factors so... 21:16:21 maybe at higher inputs natatime beats splice? 21:17:50 Added a zero (well, technically, two zeros), but ran out of memory. :/ 21:18:05 Doubling goes to 3.05185985565186 5.66645216941833, that looks quite O(n) that far. 21:18:16 huh 21:18:17 There's a Cave Story+?? 21:18:29 so yeah I guess splice can just do efficient deletes at the front (and maybe the end) of arrays. 21:19:36 my computer just overheated on my bed. <-- you are not supposed to use it for that, sheesh 21:19:53 fizzie: perl works hard to maintain its position of just slightly slower than most scripting languages. 21:21:41 Well, you know the old adage, you have to run hard in order to run a still. Or something like that, anyway. (I think it's talking about outrunning the cops.) 21:21:53 yes. 21:22:06 Phantom_Hoover: Has been for a while. (Though it's rather new for PC.) 21:22:08 prohibition era fuck yeaaaah 21:22:21 OMG the bundle has Gratuitous Space Battles. 21:22:44 This is definitely worth the 70p I plan to pay for it. 21:23:08 You'll get neither CS+ nor GSB for 70p 21:24:23 Oh FFS. 21:24:34 Why are people so infuriatingly ethical. 21:25:10 I already owned them both and I still paid well above the average, so... sorry, I guess? 21:25:20 I hate you so much. 21:25:50 In fact, only 3 new games out of 7, it appears 21:26:00 Henceforth, the part of Finland Deewiant lives in is officially in Sweden. 21:26:13 in a C program where are static variables allocated? 21:26:21 I'll have to check with the local authorities; I doubt it 21:26:33 Pah, what do they know. 21:28:25 That's not really a C question but a compiler question, but generally I'd expect them to end up in either the .data, .rodata or .bss section of the executable, depending on constness and zeroinitiality. 21:30:42 fizzie: yeah I knew it wasn't a language question. I just wanted a general idea of what happens there regardless of compiler. 21:31:11 I often ask about a "language" when I really mean "what generally happens in many implementations" 21:33:02 You totally lack proper DS9K attitude 21:33:20 I vaguely recall a comp.lang.c thread about whether the standard says anything about the value of a local (in-function) static variable before the function has been executed for the first time. 21:33:36 It's slightly hard to test for that empirically. 21:33:51 * kallisti hates language lawyery answers to such implementation-related questions. 21:34:29 The correct answer to a randomly chosen C question is usually "it's undefined; if you're feeling lucky, read the documentation for your environment, they might tell you" 21:34:34 it doesn't have to be in the standard. I just want a general idea of what you can typically expect, if anything. 21:34:46 Deewiant: yes that happens a lot. :P 21:35:10 Unfortunately, implementors aren't typically dickish enough for such answers to be realistic 21:36:37 so as it turns out 21:36:42 Perl is a good language to write IRC bots in. 21:37:04 oh? 21:37:36 fizzie: do you know of a way to "delay" interpolation. Basically to have a string with $ variables in it and then fill those variables in later. 21:37:47 Eval. :p 21:37:52 oh... yes. 21:38:02 I always forget the eval hacks. 21:38:35 just have to make sure I don't expose anything to IRC. 21:38:38 kallisti: substitution? 21:38:47 oerjan: yes I use that currently for one thing. 21:38:49 * kallisti vague. 21:38:52 Probably would end up with quoting-related issues. 21:39:21 I guess with no strict refs a single s///e might be able to do it too. 21:39:46 !perl for ($x = 1; x < 5; x++) { s/.*/$x/; print; } 21:39:46 a... single one? 21:39:46 Can't modify constant item in postincrement (++) at /tmp/input.29417 line 1, near "x++" 21:39:52 oops 21:39:59 !perl for ($x = 1; $x < 5; $x++) { s/.*/$x/; print; } 21:40:00 1234 21:40:56 s/\$(\w+)/${$1}/ge or something like that? I don't really know. IIRC you can use a string as a scalarref with no strict refs. 21:41:12 yes that's correct 21:41:31 the "lifetime warranty" nonsense just reached new heights. I saw an advert for a GPU having "double lifetime warranty" 21:41:36 I have no clue what that means 21:42:03 double rainbow? 21:42:14 Vorpal: clearly it means for the lifetime of your heir. 21:42:15 heh 21:42:20 also if I expose that feature to IRC then it would prevent things like @{[`find / -type f -delete`]} 21:42:24 oerjan, right 21:42:55 that would be possible with a basic eval. 21:44:03 !perl $a = 1; $b = 2; sub foo { my $s = shift; my ($a, $b) = (42, 69); $s =~ s/\$(\w+)/${$1}/eg; return $s; } print foo('a$a, b$b'); 21:44:03 a1, b2 21:44:20 Apparently won't go with lexical scope there, unsurprisingly. 21:44:32 * oerjan wonders what's wrong with his suggestion. 21:45:33 new humble bundle btw 21:46:53 oerjan: I'm not sure what your suggestion was. The !perl snippet seemed somewhat unrelated for turning a string '$foo $bar' (received from somewhere) into the string '[current value of $foo] [current value of $bar]'. 21:47:00 fizzie: what I'll probably end up doing is using a hash so s/\$(\w+)/$vars{$1}//$$1" 21:47:03 er 21:47:06 accidentally hit enter. 21:47:40 fizzie: what I'll probably end up doing is using a hash so s(\$(\w+))($vars{$1}//'$'.$1)e 21:48:31 I've done a substitute-with-keys-from-a-hash-with-s///e too, though I think I used %foo% or some-such for the placeholders, since it's clearly not "real" variable interpolation. 21:49:09 Also so DOS-batch-file-retroistic. If I recall them right. 21:49:20 %s were involved anyway. 21:50:28 Python has a modified printf where you can pass in a dictionary and %(name)s will interpolate to d['name']. it's pretty handy. 21:51:02 %var%, but %N for positional params? There was some unsymmetry like that. 21:53:19 * kallisti might learn Ruby one of these days. 21:54:30 -!- derrik has quit (Quit: gone). 21:55:35 but... perl is so comfy as my scripting language. feels nice. 22:05:26 -!- Patashu has joined. 22:08:10 -!- derdon has joined. 22:15:56 fizzie: why would I want to use autoloader? 22:18:07 -!- Darth_Cliche has joined. 22:21:04 -!- Darth_Cliche has changed nick to Klisz. 22:21:47 -!- DCliche has quit (Ping timeout: 268 seconds). 22:23:10 -!- Jafet has joined. 22:46:00 -!- MDude has quit (Read error: Connection reset by peer). 22:47:08 -!- Nisstyre has quit (Read error: Connection reset by peer). 22:52:17 -!- MDude has joined. 22:53:00 -!- MSleep has joined. 22:53:36 -!- MSleep has quit (Read error: Connection reset by peer). 22:53:59 -!- MSleep has joined. 22:57:23 -!- MDude has quit (Ping timeout: 276 seconds). 22:58:37 aha. so that's why I kept having problems when I didn't qualify all of my imported subroutines. 22:58:49 I put my package declaration /after/ my imports. 22:59:12 so the names were going into the main specify, and then I switched over to my package namespace, which didn't have those names. 22:59:46 s/specify/namespace (?#....?)/ 23:01:37 fizzie: http://perldoc.perl.org/perlmod.html#BEGIN%2c-UNITCHECK%2c-CHECK%2c-INIT-and-END 23:01:45 this is my favorite example program in all the docs. 23:01:58 "The begincheck program makes it all clear, eventually" 23:02:59 I know how DOS batch files work; it is %var% for environment variables and %1 for parameter 1 and so on. 23:03:46 Do you know if there is any such things as continuation semiring? 23:04:05 wow "Note that END code blocks are not executed at the end of a string eval(): if any END code blocks are created in a string eval(), they will be executed just as any other END code block of that package in LIFO order just before the interpreter is being exited." 23:07:02 I wonder if anyone actually uses UNITCHECK, CHECK, or INIT 23:07:59 I guess UNITCHECK could be useful. 23:08:17 -!- MSleep has quit (Quit: later chat). 23:11:26 " Because the old-fashioned syntax is still supported for backwards compatibility, if you try to use a string like "This is $owner's house" , you'll be accessing $owner::s ; that is, the $s variable in package owner , which is probably not what you meant. " 23:11:33 wow, that's a nice little gotcha 23:11:54 -!- Nisstyre has joined. 23:12:17 !perl use LWP'Simple 'get'; print get("http://www.google.com/"); 23:12:18 Can't locate LWP/Simple.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at /tmp/input.6122 line 1. 23:12:31 heh. 23:12:36 * kallisti is going to use ' instead of :: now :P 23:15:00 If you have a package called m, s, or y, then you can't use the qualified form of an identifier because it would be instead interpreted as a pattern match, a substitution, or a transliteration. 23:15:04 bahahahaha 23:15:17 * kallisti names his Perl web app framework m 23:18:15 it doesn't define an import method 23:18:33 so you have no way of accessing anything. 23:20:58 well you could use %m:: and access the symbol table 23:25:11 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 23:28:13 Can you make this kind of commutative applicative: a *> z = z <* a 23:28:31 And what is a communist functor/applicative/monad? 23:29:23 zzo38: functor/applicative/monads that believe in a class-less Haskell. (I have no idea) 23:29:48 -!- Nisstyre has quit (Ping timeout: 240 seconds). 23:31:51 -!- Nisstyre has joined. 23:32:15 -!- calamari has quit (Quit: Leaving). 23:34:40 > [1,2,3] *> [4,5,6] 23:34:41 [4,5,6,4,5,6,4,5,6] 23:35:03 > [4,5,6] <* [1,2,3] 23:35:03 [4,4,4,5,5,5,6,6,6] 23:35:16 -!- Nisstyre has quit (Max SendQ exceeded). 23:36:49 -!- Nisstyre has joined. 23:37:27 zzo38: you'd want flip (liftA2 const) = liftA2 (const id) 23:37:28 kallisti: It doesn't apply to list, it is not commutative 23:40:01 * Phantom_Hoover → sleep 23:40:02 -!- Phantom_Hoover has quit (Quit: Leaving). 23:40:59 zzo38: what do you want to be commutative again? 23:41:32 kallisti: I mean, some applicatives are commutative 23:41:54 yes 23:42:26 zzo38: it sounded like you were asking if such a thing existed. 23:42:45 By writing like f <$> x <*> y = flip f <$> y <*> x 23:43:13 Apparently commutative monad is the same but with join. 23:43:13 :t (*>) 23:43:14 forall (f :: * -> *) a b. (Applicative f) => f a -> f b -> f b 23:43:19 :t (<*) 23:43:19 forall (f :: * -> *) a b. (Applicative f) => f a -> f b -> f a 23:44:03 zzo38: Maybe and Reader are commutative, iirc 23:44:17 maybe is, yes. 23:44:24 I know Maybe is commutative 23:44:39 then what was your question? 23:44:51 << zzo38> Can you make this kind of commutative applicative: a *> z = z <* a 23:45:10 any applicative commutative in the usual sense should fulfil that 23:45:23 My question is to do a *> z = z <* a rather than f <$> x <*> y = flip f <$> y <*> x are there a difference? 23:45:29 no 23:45:38 well 23:45:42 erm there _might_ be 23:45:55 for *>, f = const id 23:46:02 And is there a different between commutative applicative and commutative monad? Commutative applicative makes more sense to me 23:46:03 for <*, f = const 23:46:34 :t flip const 23:46:35 forall b a. a -> b -> b 23:46:37 :t flip (const id) 23:46:38 forall a b. a -> b -> a 23:46:45 zzo38: i think i showed the other day that they are the same thing, you just apply an extra join to get the monad version 23:47:07 or an extra return to get the applicative one 23:47:23 oerjan: Yes, I think elliott wrote the code for the commutative monads and it seem to me, it is the same thing but with join. 23:47:44 do x <- mx; y <- my; f x y = join $ liftM2 f x y 23:48:37 er 23:48:37 oerjan: Yes, that was the code they showed to me and I realized it is same as your code 23:48:44 * do x <- mx; y <- my; f x y = join $ liftM2 f mx my 23:48:53 Yes that is better 23:49:20 oerjan: is there an applicative that isn't a monad? 23:49:34 liftM2 f mx my = do x <- mx; y <- my; (\x y -> return (f x y)) x y 23:50:27 kallisti: a free applicative defined with a GADT, for example 23:50:37 "free"? 23:51:24 data FreeA where Pure :: a -> FreeA a; (:<*>) :: (FreeA (a -> b)) -> FreeA a -> FreeA b 23:51:28 i think 23:51:32 oh that kind of free. 23:51:48 * kallisti didn't know that had a name. 23:52:28 um i'm not sure if that's quite right, but something like that; anyhow the point is to construct something which obviously allows _just_ the Applicative operations 23:53:17 that thing above is probably too simple 23:54:34 it keeps getting discussed how to make an Applicative which isn't a Monad and i keep forgetting the examples 23:55:37 is co-applicative a thing? 23:56:11 heh 23:56:22 i don't know 23:56:37 impure :: FreeA a -> a 23:57:59 s/FreeA/g/ 23:58:45 but what would (>*<) be? 23:59:12 -!- copumpkin has joined.