00:12:50 -!- FireFly has quit (Quit: FireFly). 00:22:52 But one thing should be in TH, is an expression that it require the list of expression and select the first one that typechecks. 00:23:02 (If none of them typecheck it is error) 00:25:01 -!- Vorpal has quit (Ping timeout: 276 seconds). 00:31:14 > let a ☺ b = a / b in 2 ☺ 3 00:31:15 0.6666666666666666 00:32:47 Divisiooooooon is the loneliest op'rator you'll eeeeever dooooooooo 00:34:06 so why does smiley face count as an operator not an identifier? 00:34:52 one of the problems with Unicode is that nobody's memorized the difference between lowercase/uppercase letters and lowercase/uppercase punctuation in it 00:35:27 well since i picked it out from a SO discussion linked on reddit of why that char isn't allowed in javascript identifiers: because it's not a unicode letter. 00:36:40 ☺ is easy enough to type if you have a working compose key 00:36:43 Yeah, JS tokenization actually uses the Unicode categories. 00:37:10 as does ghc 00:37:19 So there ya go :P 00:37:46 > let 4 = 2 in 4 + 4 00:37:47 8 00:38:39 o 00:39:20 > let 2 = 4 in 4 + 4 00:39:21 8 00:39:23 Hm 00:39:30 ...don't tell me you don't understand that one yet. 00:39:56 "Yet"? I haven't used Haskell in years :P 00:41:37 and I've never bothered to inquire into that particular corner of Haskell 00:41:39 I understand this one 00:41:47 > let 2 + 2 = 3 in 2 + 2 00:41:48 3 00:41:58 Oh right, that's what I was looking for :) 00:41:59 but the examples above don't seem to be following that pattern 00:42:16 (in particular, I don't get why "let 4 = 2" isn't a parse error) 00:42:17 Because you can specific cases for functions, but can't redefine literals I guess. 00:42:29 Right, seems like that ought to be caught earlier. 00:43:00 ais523: 4 is a legal pattern so may be on the left side of = , it just doesn't actually bind any variables. 00:43:18 ah right 00:43:23 So then it should be a /semantic/ error >_< 00:43:32 so how can you tell whether the pattern matched or not? 00:43:56 it doesn't seem to have anything to match 00:43:59 also, patterns in let are lazy so are not checked until a variable in them is used - in this case never, since there aren't any. 00:44:28 > let !4 = 2 in () 00:44:29 *Exception: :3:4-9: Non-exhaustive patterns in pattern binding 00:44:31 it's just a logical but unintuitive consequence of orthogonal features. 00:45:14 > let a + 2 = 4 in a 00:45:15 a 00:45:42 > let a + 2 = 4 in a + 2 00:45:43 4 00:45:50 heh 00:46:01 the right a isn't in the scope of the first one 00:46:02 I take it a here is a value, rather than a variable? 00:46:05 -!- azaq23 has quit (Quit: Leaving.). 00:46:24 so it's actually one of lambdabot's predefined Expr values. 00:46:31 yep, I thought it'd be something like that 00:46:43 > let ttt + 2 = 4 in ttt 00:46:44 Not in scope: `ttt' 00:46:50 > let ttt + 2 = 4 in ttt + 2 00:46:51 Not in scope: `ttt' 00:46:54 that's way saner 00:46:58 -!- CakeProphet has quit (Ping timeout: 260 seconds). 00:47:45 That defines (+). 00:47:51 > let (x + 2) = 4 in x 00:47:52 : Parse error in pattern 00:48:03 That attempts to use a horrible deprecated feature. 00:48:31 lambdabot already has a ghc version without it? 00:48:37 @version 00:48:37 lambdabot 4.2.2.1 00:48:37 darcs get http://code.haskell.org/lambdabot 00:48:47 doesn't say which ghc version 00:48:59 > let f (n+1) = n in f 2 00:48:59 : Parse error in pattern 00:49:04 indeed 00:50:16 It has always been possible to turn that off. 00:50:43 hmm, I sent CTCP SOURCE to lambdabot, but didn't get a reply 00:50:50 why does nobody implement that nowadays? 00:50:56 (also, did anyone ever implement that ever?) 00:52:48 haha, INTERCAL will have that feature all to itself now! 00:53:20 (admittedly, it doesn't actually /work/, but it's nontrivial to make it do so without bruteforcing all possible values in the representable range for every variable and constant in the expression) 00:53:59 ais523: you need to work more on your maniackal laughter. 00:55:12 I don't think I've ever seen CTCP SOURCE .... 00:55:56 it's standard! 00:56:20 Yeah, but I've got four quarts of curry in my 'fridge. 00:56:22 So there's that. 00:56:27 haha, INTERCAL will have that feature all to itself now! <-- i thought you were referring to CTCP SOURCE here 00:56:40 no, to putting expressions on the LHS of an assignment 00:57:02 you can end up with expressions overloading arbitrary identifiers in INTERCAL anyway, so it was more or less inevitable 00:57:06 if no one uses CTCP SOURCE, then clearly INTERCAL should. 00:57:30 (C-INTERCAL won't let you do that with a completely different data type from the one that's meant to be there; CLC-INTERCAL will) 00:58:00 hm, maybe I should learn INTERCAL sometime. 00:58:31 perhaps I should give lessons in-channel, so elliott doesn't have to walk all the way from Hexham to attend them 01:00:39 I didn't implement CTCP SOURCE because I didn't know the proper response 01:01:30 maybe the joke is that CTCP SOURCE is actually unimplementable 01:02:53 well, you're meant to give details of an FTP server you can get the source of the IRC client from, and where on the server to look 01:03:25 An FTP URL would give those details, I think. 01:04:02 yep, but there's a different format defined in the standard, IIRC, that nobody uses 01:04:23 However I do not run an FTP server and I don't know FTP server to put it on. If you have any FTP server, then I will be glad to upload my IRC client source code to that server and program it to give that information. 01:05:16 It is the nineties, and there is time for FTP server. 01:05:27 I think that's the real reason CTCP SOURCE isn't implemented much, the people who remember it exists don't have FTP servers handy 01:05:53 Surely IRC doesn't predate URLs ... 01:06:39 i assume the frc stuff is still on the nvg ftp server where i put it 01:07:02 or else somewhat would probably have complained 01:07:06 *someone 01:07:10 -!- augur has quit (Remote host closed the connection). 01:10:44 -!- CakeProphet has joined. 01:10:44 -!- CakeProphet has quit (Changing host). 01:10:44 -!- CakeProphet has joined. 01:11:32 > let 4 = 2 in 4 + 4 01:11:43 I must be master of Haskells for understanding that one. 01:12:05 IT'S COMPLETELY LOGICAL, I SAID 01:12:15 yeah not a semantic error 01:12:20 just a failed pattern match 01:14:02 = as equality is a lie! 01:14:40 no equality in Haskell. it is a fascist language. 01:15:19 > let [] = 4 in undefined 01:15:20 No instance for (GHC.Num.Num [t]) 01:15:20 arising from the literal `4' at yeah okay. I wasn't sure if it could give "types" to patterns or not. 01:15:57 You could mention properties of URLs (depending on URI scheme, but sometimes also on other parts of the URL): interactive, readable, writable, enumerable, fileable, displayable, ... 01:16:24 (Although some things depend on the system, such as which URLs are displayable type of URL, and so on) 01:16:27 interactive = readable + writable? 01:17:16 CakeProphet: No, not quite. 01:17:50 HTTP URLs are readable and writable but not interactive. 01:18:05 ah interactive as in stateful 01:18:29 Telnet is interactive. 01:18:59 as is ftp 01:19:11 right. 01:19:16 sustained connection. 01:19:20 I forgot the term. 01:20:29 persistentI know HTTP is referred to as a stateless protocol, so an interactive protocol would be the opposite of a stateless one I think. 01:20:39 >_> 01:21:36 my subconscious must be at work. 01:21:48 I was thinking of a system with the following URI schemes: ftp gopher http telnet tape sprunge file h o s x (h = hard drive, o = optical drive, x = USB Plan 9 or network Plan 9, s = active saver directory, tape = encode data in audio I/O) 01:21:58 * CakeProphet sits in an armchair and consternates. 01:22:35 don't forget data 01:22:46 Where the commands are LOAD, SAVE, and DISPLAY with one URL, and COPY with two URLs. (These are in BASIC. However, it will also have corresponding Forth commands) 01:22:58 -!- oerjan has quit (Quit: Good night). 01:23:30 I think being inspired by BASIC should be against the rules. 01:24:36 O, and the sprunge URL is write-only URL that is treated like HTTP, but the # if any is the name of the form field to send to ("sprunge" is the default), and there can be a status message. 01:25:26 For example: sprunge://sprunge.us/#sprunge is an upload URL for text programs, and then it has a status message is the "http://" URL which downloads the file. (If you upload to "http://" directly it uses PUT method) 01:25:48 zzo38: I have an idea for a chess variant you might be interested in. 01:26:07 CakeProphet: OK. 01:27:08 you begin the game with a king, and two portals (knights) 01:27:28 OK 01:27:45 all of your other available pieces are in a pool at the start of the game. When a portal moves it can optionally leave behind a piece from the pool. 01:28:07 OK. 01:28:27 Does the knight still move and capture as in FIDE chess or is there different rules? 01:28:56 there are two cannons (rooks), four arrows (pawns with a sharpie mark to indicate a direction), missiles (pawns), and... some other pieces I haven't decided on yet. 01:29:15 different movement rules for everything, except the king who is pretty much the same at this point. 01:29:23 though I may give him some special rules. 01:29:48 haven't workd out the movement rules 01:29:50 OK. Is there castling? 01:30:03 -!- SgeoN1 has joined. 01:30:30 but the basic idea is that when a cannon is adjacent to a missile, then the missile is expended and anything in a straight line from the missile going away from the cannon is captured. 01:30:45 missiles can be fired cardinally or diagonally. 01:31:04 no castling 01:31:08 OK 01:31:08 nothing from chess is given. 01:31:30 okay, so portals and arrows have directionality. at the end of their move they can be rotated a different direction, also diagonally or cardinally. 01:31:59 when an arrow is in the path of a fired missile, it redirects the path of capturing in the direction of its nose (arrows are knights) 01:32:20 * SgeoN1 badmoods 01:32:31 I thought arrows were sharpied pawns 01:32:36 make up your mind!!! 01:32:39 CakeProphet: thats a fantastic damn idea 01:32:55 if a missile is fired at a portal, and the sharpie mark on the portal is facing the path of the projectile, then the path of fire continues out of the other portal on the board. 01:33:06 Are they sidewinders? They must be sidewinders. 01:33:13 also, if a portal is captured, its corresponding linked portal explodes and captures itself and all pieces adjacent to it. :) 01:33:51 pieces can also move through portals, by moving "on top" of the portal, their path of motion continues in the direction the other portal is facing. 01:34:01 "captures itself" is ridiculous terminology 01:34:11 -!- augur has joined. 01:34:11 for a piece that only moves one square this means that they appear on the other side in front of the portals opening. 01:34:20 why not just use "dies" or whatever, given that you're changing everything else about chess? 01:34:21 -!- sebbu has quit (Read error: Connection reset by peer). 01:34:42 so portals act as teleporters as well. these rules are independent of piece color. So you can use enemy portals and arrows just as well as your own. and fired missiles can capture any piece regardless of color. 01:35:18 Because it wouldn't be a chess variant any more! 01:35:22 the goal is to capture the king. 01:35:32 is the number of pieces the same as in chess or can you portal-place at most more or less than chess 01:35:34 that's probably the only thing that stays the same. 01:36:12 there is a reason that people don't play much chess on video game consoles 01:36:34 oh? this has always puzzled me 01:36:41 same number of pieces. you get two portals (knights), two cannons (tooks), one king, one queen (whose role is undecided), two bishops (role also undecided), and four arrows (four specially marked pawns) 01:37:02 the remaining pawns are replenishable so when they are captured they return to your spawn pool for replacement by a portal. 01:37:24 originally the queen was going to be the piece-spawner but I realize the queen would then serve no purpose once all pieces are spawned, other than to place missiles and capture normally. 01:37:31 monqy: i suppose my argument isn't fair because chess is free 01:38:26 -!- sebbu has joined. 01:38:26 -!- sebbu has quit (Changing host). 01:38:26 -!- sebbu has joined. 01:40:21 cannons are slow moving pieces, I'm thinking one square any direction per turn, with no capturing. portals have large movement spans, perhaps 3-4 squares with jumping though I haven't decided if there are any restrictions to how they can move. they can only capture in the direction of their portal, and can only be captured from directions that their portal is not facing otherwise you piece just teleports to the other sid 01:40:46 s/you/the/ 01:41:20 arrows move like bishops and can't capture. kings movement and capturing is the same. 01:41:57 most pieces can't move very quickly, thus making the missile firing and teleporting more valuable. 01:42:28 also I've got some rules for how infinite loops work with the projectiles. 01:42:52 because you can easily set up an infinite loop with four arrows or two portals and any number of arrows. 01:43:21 ALL THE PORTALS ASPLODE. 01:43:56 so an arrow in an infinite loop can capture in any direction by simply turning, which then breaks the loop but gives one free capture. 01:44:06 same with portals. 01:44:31 you could also have multiple circuits the loop could take, with arrows and portals acting as switches. 01:45:29 but I imagine in practice the setup time would often not be worth the gain. 01:46:56 the idea is to make capturing somewhat difficult. you have to rely on misguiding your opponent with convoluted portal/arrow setups. 01:47:17 knight pieces would make the best arrows, as they clearly point in a single direction, so no sharpie, but you specify 4 arrows, and there are only 2 knmights 01:47:27 well portals have direction as well 01:47:30 and there are only two of those. 01:47:35 I like four arrows because it allows more craziness. 01:47:51 four portals would be, perhaps, too much craziness. :P 01:48:12 some bishop pieces have notches on them as well, so arrows could be bishops in that case but then there are only two. 01:48:20 not sure what the bishop does at this point. 01:48:38 I was thinking one piece would be special in that if a friendly projectile passes through it it would change the nature of the projectile 01:48:42 I dunno how anyone would use arrows 01:48:43 perhaps allowing the capturing of arrows. 01:48:51 monqy: strategically. 01:48:52 it might be interesting to program bots for this game and see what people do 01:48:52 :P 01:49:02 CakeProphet: but how? what strategies? 01:49:11 well cannons are slow, arrows are fast. 01:49:26 so you don't want to move cannons all over the board, you would just redirect projectiles via arrows. 01:50:03 I'm also thinking you could guard your cannon and then use arrows to move around 01:50:10 also you can point your arrows at opponent arrows/portals and utilize them / force them to move elsewhere. 01:50:19 by move around I mean go into dangerous places 01:50:29 essentially the strategy would be much like chess in that you could set up situations where your opponent has to choose between two pieces. 01:50:34 can arrows capture? I think they'd be most intesting if they can't 01:50:41 they can't 01:50:43 good 01:50:46 er 01:50:49 intesting/interesting 01:50:53 also they are difficult to capture because they redirect projectiles. 01:50:55 intesting is _not a word_ 01:50:58 as far as I know at least 01:51:19 though I was thinking one of the queens abilities would be to change friendly projectiles that pass through her so that they can capture arrows. 01:51:32 or perhaps the king. 01:51:34 but 01:51:42 utilizing the king in that way to capture arrows seems not so smart. 01:52:04 do arrows have a fixed direction or is repositioning them a valid move or part of a valid move 01:52:12 also not sure how missiles work. if they can move/capture. 01:52:14 and how does portal repositioning go 01:52:23 repoisition is a valid move and can be done after they are moved normally 01:52:31 so you can turn them and leave them in the same place 01:52:36 or move them and then turn them in one turn. 01:52:48 same rules for portals. 01:52:53 all of the directional pieces have this rule. 01:52:58 currently there are only two directional pieces. 01:53:07 How do you use the (Maybe Dec) parameter of the VarI constructor? 01:53:38 CakeProphet: You could have a rule for rooks to flip if you need that too, flip right-side-up or upside-down 01:53:38 I believe portals will be highly valuable due to their mobility and their ability to make other things mobile 01:53:44 also you don't want to lose them because they asplode. 01:53:57 zzo38: yes I've seen that in Ultima 01:54:06 I've considered a possible use for that but don't have one so far. 01:54:43 In the game Baroque (a.k.a. Ultima) you do have one rook up and one upsidedown, but they don't ever flip during the game. 01:54:50 right. 01:55:03 I probably wouldn't do that as two cannons seems like a good number 01:55:06 one would be very limiting. 01:55:17 OK. 01:55:18 but the cannons could have two different moves of operation somehow. 01:55:21 *modes 01:55:25 OK, maybe. 01:55:45 bahahaha terran siege tanks. 01:56:04 siege mode allows firing, tank mode allows faster movement. 01:56:06 (no, this is a bad idea) 01:56:49 still need to figure out the queen and bishop 01:57:03 But I realized, that even in FIDE chess, you might have flippable rooks; start upsidedown but flip them the right way up as soon as they make a move or if the king moves. This is used in case it is difficult to remember if you are allowed you castle; now you can know for sure castling or not. 01:57:03 the queen should obviously do something kind of queen-like. 01:57:19 ah, yes. 01:57:25 (I implemented Chess.zrf in a similar way to this, actually) 01:57:42 (This is a public domain prorgam, an alternative to the standard Chess.zrf) 01:57:42 How do people forget whether they're allowed to castle 01:58:00 in some earlier mental drafts the queen could swap places with any other piece but the king, and spawned pieces at the beginning of the game like portals currently do. 01:58:11 I don't think I like that though. 01:58:32 Jafet: Even if the people do not forget, I used a similar method to make the computer keep track of if castling is allowed 01:59:40 but the idea is for the queen to be similar to that in chess. a very powerful piece but something you wouldn't want to sacrifice and thus limited by that in the early game. 01:59:41 Jafet: Well, it's possible due to being a form of game state that's not directly encoded. 01:59:46 not sure how that would work with these rules. 02:02:39 I also considered, simply for the fun of the though, that bishops could be prisms. So when they are hit by a projectile the projectile branches in the other three cardinal (or diagonal, depending on the original path) directions. 02:02:51 this is however a terrible idea. but fun to consider. 02:03:00 s/though/thought/ 02:03:33 or the queen could do this. 02:04:33 there are still some issues to work out. 02:05:04 on the topic of chessvariants, one move scheme i thought of one time is giving a piece 2 options. a short move which can capture, and a longer move which cannot capture 02:05:08 I have implemented many variants including 123456 Chess and Chess with Wickets. 02:05:22 itidus21: there are variants with exactly this sort of scheme 02:05:45 i was thinking of street fighter 2 when i thought of it 02:05:51 in particular one problem is that, if your piece spawner dies, you now have a finite supply of missiles. 02:06:06 and such things.. where you have this speed vs strength trade off 02:06:18 and just in general this tradeoff exists eh 02:06:36 so perhaps I should use the original rules, where the cannons spawn missiles adjacent to them, and then the subsequent turn they're fired. making projectiles a 2-turn process, but this also has disadvantages. 02:06:50 the nimble weakling vs the stumbling oaf 02:07:45 :D :D oh man.. i wonder if they ever made chess variants based off of animes 02:07:58 hmmm./ 02:08:22 like dragon ball z, naruto, bleach, these kinds of things 02:08:28 I guess no one is interesting in offering suggestions so I'll shush now. I was hoping for some ideas. 02:08:39 sorry.. im off-topicing 02:08:48 * itidus21 sidles away. 02:09:01 itidus21: DBZ checkers. when you reach the end of the board you're promoted to super saiyan. 02:09:31 i like the idea of a cannon and a cannonball(which you have called a missile) 02:09:49 yes but there are issues with strategy and overall game progression 02:10:00 such as what happens when you lose all of your cannons, or both of your portals, etc. 02:10:18 if missile spawning is tied to a piece that's expendable then you have a situation where cannons are basically useless. 02:10:18 its a bit like a pinball scheme you have dreamed up.. where the cannon is the launcher 02:10:41 and once cannons are useless then arrows are useless. 02:10:47 and the arrows are those bouncy parts 02:11:39 so perhaps cannons should spawn their own missiles. 02:11:53 or something like gregor's 2L which i was peeking at the other day 02:12:41 hmm 02:13:05 see im really not a chess guy.. ill drop out here and let someone who better understands in 02:14:13 there could be no missile pieces. 02:14:17 cannons can just fire... 02:14:31 and then pawns are some sort of expendable but useful thing. 02:15:03 ah, one-time use trampolines. :) 02:15:06 perhaps. 02:15:36 this gives them a defensive use while also making them not overpowered. They're not invincible. 02:15:50 but they protect pieces behind them in the line of fire. 02:15:53 for one shot. 02:15:57 perhaps. 02:16:20 nah... 02:18:44 but it definitely makes sense for cannons not to rely on a missile piece for firing. 02:20:44 ah okay. 02:21:17 the two cannons are different. one fires diagonally one fires cardinally. otherwise they'd be ridiculous. 02:21:30 also help what is a sidewinder. 02:22:54 I have played pinball games with nonstandard launch, such as JiggleBox. 02:23:26 CakeProphet: Yes, that is idea; you could use rook upsidedown to indicate that, too. 02:24:23 right that was implied. 02:24:45 so that removes the cumbersome missile requirement without making cannons like super-queens 02:24:57 well, slow super-queens :P 02:25:37 perhaps the piece spawning mechanic should also be ditched. 02:25:40 I do know about Chinese cannons (in Xiangqi and some other chess variants), but I suppose your game is entirely different cannons and has nothing to do with that. 02:26:15 yes the cannons are vital. portals are probably second most vital. 02:26:25 arrows are probably more useful than I currently realize. 02:26:55 okay, nevermind, I now realize they are useful. 02:27:03 than I previously realized, or whatever. :P 02:27:46 okay so either the queen or the two bsihops have the arrow-destroying property. 02:29:30 * CakeProphet is going to go read some chess variant rules for inspiration. 02:30:14 Do you know Emperor-Wars? I had a book about it once, but now I lost it. It is also a chess variant. 02:31:05 Here is my chess variants using mostly normal chess pieces. All URLs start with http://www.chessvariants.org/index/msdisplay.php?itemid= 02:32:36 the queen /could/ be like an arrow with no direction. 02:32:45 the player can freely choose in which direction it redirects. 02:33:00 but then there is no drawback to this. there isn't the same sacrifice-dynamic here. 02:33:51 MS123456chess MS2choicechess MSblandchess MSchecker-captur MSchesswithcheck MSchesswithquant MSchesswithwicke MScommunistchess MSinvisiblekingc MSvariantswithqu 02:33:51 -!- augur has quit (Remote host closed the connection). 02:35:25 These are list of my variants using mostly normal chess set. A chess/checkers/backgammon set is preferred. 02:37:24 perhaps two arrows is sufficient. 02:37:33 so then bishops could be arrows. 02:37:49 OK. 02:39:26 Do you know about Shogi or Xiangqi? 02:39:33 Xiangqi yes. 02:41:25 I know how to play both. 02:43:24 perhaps there could be... no pawns. 02:43:39 And I especially like Tsume Shogi. 02:43:59 otherwise I think they should be trampolines (think befunge #) 02:48:46 Here are some chess variants: http://www.chessvariants.org/fiction.dir/hitchhiker/zork_and_turn.html (I like many of the variants by Claude Chaunier and Joao Pedro Neto) 02:48:46 It defines chess variants as follows: Chess is a class of games that comply with the following restriction: There must be at least one special piece, called King. Each player must protect his own King and loses if it is captured or checkmated. 02:48:59 -!- EgoBot has quit (Ping timeout: 252 seconds). 02:49:35 -!- Zetro has quit (Quit: End of Stream). 02:49:36 -!- EgoBot has joined. 02:49:42 -!- Zetro has joined. 02:51:38 -!- MDude has changed nick to MSleep. 02:54:20 -!- augur has joined. 02:55:05 so suicide chess isn't a chess variant? 02:55:20 ais523: I think it is a chess variant, actually. 02:55:32 but it doesn't have any special powers involving the king 02:55:36 The definition that description gives is not completely accurate, I think. 02:55:45 ais523: Some forms of suicide chess allow castling. 02:55:59 is suicide chess anything like strip chess 02:56:11 but the capture or checkmate of the king doesn't end a game of suicide chess 02:56:13 monqy: not really 02:56:38 zzo38: I would think the only real technical requirement of a chess variant is that it bear some semblance to chess. Either using the same board, a similar rule, or the same pieces. 02:56:43 ais523: I know; that is why I say I think that definition is inaccurate 02:57:07 I dunno how strip chess would work. Is there a good ruleset? 02:57:12 CakeProphet: That definition is also inaccurate, I think, as seen by the various chess variants existing. 02:57:48 so if a chess variant has a completely different board, completely different pieces, and no rules in common with chess 02:57:52 is it still a chess variant? 02:57:52 loser retroactively takes off clothes? is that fair? 02:57:54 monqy: normally on captures, is how chess is adapted to the usual forfeit-related game-patterns 02:58:10 although that probably works better with alcoholic chess than strip chess 02:58:33 yeah, you could also employ piece values to determine various things. 02:58:35 Oops! GHC told me to report a bug because the 'impossible' happened. 02:58:48 in drinking chess the piece value would determine how much or what you drink. 02:58:56 indeed, it does 02:59:14 "please report a bug: it's not that anything drastic's gone wrong internally, we're just lonely" 03:00:07 okay so the only things to figure out now are a) starting piece position b) purpose of the queen c) make the movement rules a bit more precise 03:01:13 Oops! The database for GHC bug tracker is locked. 03:01:20 the queen can swap with any piece? is that too useless or powerful or similar to other pieces? 03:01:20 Therefore I cannot report a bug. 03:02:06 monqy: it's not useless it would actually give it a similar sacrifice dynamic. it would be similar to the portal but more useful I think. Also it needs to have some other purpose besides that 03:02:30 originally it was to spawn pieces, but I later ditched that. Also I considered some kind of sacrifice dynamic where pieces adjacent to the queen could be sacrificed and replaced by other pieces. 03:02:36 but that could be a little wonky. 03:02:44 Type of classInstances is classInstances :: Name -> [Type] -> Q [Name] different from the documentation, and the code producing error is $(classInstances ''Num [ConT ''Integer] >>= reify . head >>= runIO . print >> [| 0 |]) 03:03:27 monqy: I think the queen should permit the capturing of arrows by cannons. perhaps it could also change the nature of friendly projectiles so that they clear an entire path instead of capturing only one piece, but this might make it incredibly easy to checkmate. 03:03:47 you wouldn't want your king in an enclosed area where it can't move. 03:03:55 What does "reifyType PredTy" mean? 03:04:11 CakeProphet: my idea would give the queen the job of positioning important pieces, rescuing important pieces, and fleeing by swapping with an unimportant piece 03:04:38 rescuing and what way? 03:04:44 CakeProphet: important pieces mainly being clumsy slowmoving things like the king and the cannons 03:04:54 rescuing as in swapping out with a piece in danger 03:04:59 well I would specifically not allow swapping with the king. 03:05:02 I think. 03:05:03 what!!! 03:05:13 special cases are not cool!!! 03:05:21 sure they are. the king is already a special case. 03:05:37 diaf, cakechess 03:06:29 so then the queen basically becomes a very useful support tool that is very difficult to capture. Not sure I like that. 03:07:04 what's not to like? not a rhetorical question; I honestly haven't thought much about my queen, beyond what I already said 03:07:17 OK, I managed to report bug now 03:07:31 the best way to capture the queen would be to put the king in a check in which the only way to escape is to swap with the queen. 03:07:44 otherwise the queen can just disappear as it pleases. 03:10:16 disappear as it pleases at the cost of sacrificing your pieces!! of coruse all pieces would have to be fairly valuable for this to be meaningful 03:10:16 also the portal fills a similar role albeit in a different way. 03:10:31 all pieces except pawns are extremely valuable. 03:10:59 portal sort of fulfiles the moving a piece into attack role except only once when it places the piece 03:11:31 CakeProphet: so then i guess you place pawns either when you're out of other stuff to place or you want queen escape teleport fodder? 03:11:33 yes sort of makes the cannons slowness less of an issue, in a way similar but different to arrows. 03:12:31 monqy: oh by the way I ditched the portal spawning stuff. 03:12:35 oh 03:12:35 you begin the game with all pieces on the board. 03:12:44 that makes queens more problematic 03:12:49 but portal however can still teleport pieces. a piece walks into the direction the portal is facing 03:12:53 and comes out the other side. 03:12:55 like a poral. 03:12:59 portals are portals. 03:13:01 i was going on the assumption that you had to take turns to place pawns for use with queens 03:14:10 the queen could always just be a simple piece adept at capturing. 03:14:19 something that is lacking in this game. 03:14:28 currently arrows are very tricky to capture. 03:14:37 and are very valuable when strategically placed. 03:14:38 -!- augur has quit (Remote host closed the connection). 03:15:08 also i forgot about portals actually working as portals oops 03:15:19 yes portals will be fun. 03:15:21 also i remember you saying something about portals having a direction? what's that about 03:15:53 the direction is the direction the portal is facing. you can't capture it from that direction because you just pass through. 03:16:08 projectiles pass through as well as pieces. 03:16:24 all other directions are open for capture though. 03:16:51 directional capturing? what's that about 03:16:54 not sure how or if portals capture. Perhaps that can capture in one direction, making them kind of useful defensively. 03:17:05 ...I mean, I hoped it was kind of an intuitive concept but I guess not. 03:17:15 "People usually think great things about Planets. The fact is planets are just small and rocky or big and foggy gravity modeled spheres, where complex biological cells try to grab to its surface as hard as they can, in order to invent cable television." 03:17:18 if anything has knightsmoves, will portals not work for them? 03:17:36 knights still have a direction in which they're moving when capturing, so it will still work 03:17:43 also I don't plan on having anything that moves like a knight 03:17:49 except that portals can hop. 03:18:22 .....also I have no considered what happens when a portal tries to pass through a portal it is linked to. 03:18:26 I'd thinkt his isn't possible. 03:18:47 or they just explode or something. 03:18:51 which could be useful. 03:19:12 a portal is bound to explode at some point. it's in their nature. 03:19:47 (explode meaning that all adjacent pieces and the piece itself are captured) 03:20:28 how big's the board? 8x8 would be hilarious given this complexity 03:20:43 8x8 I'd imagine. I don't have fancy boards. 03:23:27 I've been running situations in my head and if you use a starting board placement that's exactly the same as normal chess it works out similarly. 03:23:47 well, actually I'll probably modify it a little bit. 03:24:38 but basically it works similarly to chess from what I can except that where you should move pieces is now drastically different. 03:24:51 you should basically have no need to move cannons until the endgame. 03:25:50 the cannon essentially acts as a piece that turns other friendly pieces in its path of fire into projectiles. 03:26:04 put a portal directly in front of a cannon and now your second portal can shoot things. 03:26:23 -!- evincar has joined. 03:27:21 also what is being sacrificed is not directly straightforward, for example. say you have your portal set up directly in front of your cannon, and an arrow is placed so that the enemies cannon can capture your portal. 03:27:34 so, you spend your turn to turn your portal to face the arrow so that the portal won't be captured. 03:28:17 ...but now you've either sacrificed some other piece you own on a completely different location on the board, or you've pointed the potential projectile at an enemy piece and thus caused them not to fire. 03:28:28 wildly different things could happen as the result of a single move. 03:29:32 I thoroughly endorse these shenanigans. 03:30:04 -!- copumpkin has joined. 03:34:17 hi evincar 03:35:23 Make a chess variant based on this idea: "A Black Hole is a place where all the White squares has been removed from the local representational Chess board." 03:35:48 ... Relativistic chess? 03:36:21 I don't know. 03:40:42 I need a name for my game. 03:40:53 I've been calling it cakechess, once. 03:40:59 CakeProphet: I don't know. 03:41:20 Cakechess is fine as a working title. 03:41:43 I was thinking shellshock but I'm almost certain that's already the name of something. 03:41:46 monqy: Ohai. 03:43:48 there's some stupid online game called shellshock 03:43:53 so I could call my game shellshocked 03:44:34 I think cannon placement will be somewhat problematic 03:44:39 for the starting layout. 03:45:38 though I think pawns will perhaps mitigate the problem to a degree. 03:46:21 essentially since capturing by cannon is indirect there's no defenses for things like bishops and rooks in chess 03:46:35 where you have many units surrounding the piece to capture it 03:46:42 because the cannon can just capture from afar. 03:47:03 I suppose it's the same thing you just have to think about it differently. 03:47:28 those above sentences probably make no sense to anyone else but me. 03:49:06 okay so assuming the diagonal cannon is on queenside and the cardinal cannon on kingside. 03:49:17 -!- pikhq has joined. 03:49:29 moving g2 to g3, then f1 to g2 03:49:46 er no, wrong side. 03:49:54 -!- pikhq_ has quit (Ping timeout: 260 seconds). 03:50:01 b2 to b3. then c1 to b2. 03:50:05 would be a good starting move for white. 03:50:38 because the arrow protects your diagonal cannon while also allowing you to aim it 03:50:43 but there are likely other good starting moves. 03:51:16 and then black will need to do very different things in order to react defensively to white. 03:52:05 also strange things could easily happen very quickly. :P 03:53:48 infinite loops between two opposing arrows would be, uh, interesting. 03:55:03 yeah I'm thinking the queen could act as a directionless arrow. 03:55:19 that can also capture. 03:55:24 but doesn't move as quickly. 03:58:23 I have read about program to make up the Haskell function from the type, but can it work with Template Haskell? 03:58:53 just integrate @djinn 03:58:59 @djinn a -> Not (Not a) 03:59:00 f a b = b a 03:59:12 @djinn Either (Not a) (Not b) -> Not (a, b) 03:59:13 f a = 03:59:13 case a of 03:59:13 Left b -> \ (c, _) -> b c 03:59:13 Right d -> \ (_, e) -> d e 03:59:14 meaning that a friendly projectile can be redirected to any path across the queen, and will at that point be able to capture arrows, but enemy projectiles will still capture her. (yes, a special case.) 04:00:37 so this is something that is incredibly useful, but vulnerable 04:00:47 copumpkin: That is seem a function taking two parameters, the type specifies only one, what is the Not type? 04:01:00 type Not a = a -> Void 04:01:11 And how do I do djinn? I cannot find the information it seem broken 04:01:38 you just give @djinn a type and it will try to write a function (prove) of that type 04:01:55 what I wrote up there was one of the deMorgan laws 04:02:22 OK, I understand those things. But it still doesn't explain how to integrate @djinn into another program, because I do not have the information of that program. 04:02:22 oddly enough, in haskell, only three out of the four deMorgan laws are true 04:02:43 http://hackage.haskell.org/package/djinn-th 04:02:54 and http://hackage.haskell.org/package/djinn 04:03:42 OK thanks 04:03:59 CakeProphet: to avoid infinite loops you could possibly give each arrow a finite number of arrowings per turn 04:04:07 just a thought 04:04:14 im sure theres other ways to get around it 04:04:41 itidus21: I have no intention of avoiding infinite loops 04:04:46 lol.. 04:04:55 the only annoying about them is that you need to verbally declare that you have created one 04:05:03 which is kind of annoying and not very chess-like. 04:05:21 I guess you could just say "loop" or something like that, similar to check. 04:05:29 you have to declare check right? 04:05:39 (i don't know chess ) 04:05:42 yes. 04:05:48 so it is chesslike really 04:05:51 not to worry 04:05:53 ...yes it's a chess variant. 04:06:07 using chess pieces, on a chess board, with what is currently the exact same starting layout. 04:06:16 i mean declaring a state of the game is chess-like 04:06:25 oh, well, right I just don't want it to be like 04:06:31 precidented on "check" 04:06:47 ^precedented 04:06:49 "oh uh, by the I just fired this cannon here and made this loop here that follows this path like so..." 04:06:55 * CakeProphet gestures and points awkwardly 04:07:17 which is normally not very chess-like as most of the time it's completely silent. 04:07:31 so I think saying "loop" would be sufficient except in cases where multiple possible loops can happen. 04:07:33 copumpkin: Which deMorgan laws not true in Haskell? 04:07:52 @djinn Not (a, b) -> Either (Not a) (Not b) 04:07:52 -- f cannot be realized. 04:08:07 it's not provable in constructive logic 04:08:50 Is there a way to do different kind of logic? 04:09:10 "a player may simply declare "loop" in the event that they've fired a projectile that forms an infinite loop. If the opponent wishes the player to clarify, then they must do so." 04:09:19 no, most programming (and proof assistants) model an intuitionist (constructive) logic 04:09:20 sounds good to me. 04:09:40 classical logic is very non-computational 04:10:08 copumpkin: I know, Curry-Howard uses intuitionistic logic, and sometimes it is good, but sometimes you might want different logic and I think I read someone can somehow make it using different logic too 04:10:29 itidus21: actually I forsee loops being a useful defensive and offensive strategy. 04:10:31 some type systems encode substructural logics 04:10:43 What are substructural logics? 04:10:46 but you typically don't get classical logic 04:10:46 is a loop the end of a game? 04:10:54 either to respond to an enemies arrow placement with your own arrow pointing in the opposite direction, or to form defensive walls. 04:11:13 (part of the loop rules include that firing a projectile into an existing loop cancels both the loop and the fired projectile) 04:11:21 substructural logics basically place restrictions on what you can do with your context, which in programming language terms, means that you put restrictions on how many times you can (or must) use your variables 04:11:28 oh so the loop persists between turns? :D 04:11:30 some say that a variable must be used exactly once 04:11:32 OK, Wikipedia does have article about substructural logic, I will read that too 04:11:35 others say at least once 04:11:35 loops work similarly to how you would imagine them to work, if you imagine the projectile as a deadly laser death wall 04:11:38 others say at most once 04:11:38 itidus21: yes. 04:11:40 and so on 04:11:41 itidus21: until the loop is broken. 04:11:41 dude you're good at this. 04:11:51 even more strict ones say that you must use variables in the same order you declare them 04:12:06 itidus21: so all you have to do is turn an arrow in the loop and you immediately capture something. loops are a very dangerous situation. 04:12:23 ATS and clean have type systems that support certain kinds of substructural logics 04:12:27 or turn a portal. 04:12:46 this thing you're describing is so far the coolest chess variant i have heard of 04:13:10 of how many chess variants have you heard, anyhow 04:13:25 1,220,005 04:13:26 actually I can forsee some situations in which the best way to counteract an infinite loop being used to capture something is to form another chain in the loop 04:13:35 is this laserchess? 04:13:38 yes. 04:13:40 I loved laserchess 04:13:45 had to write an AI for it a while back 04:13:46 oh, is that a thing? nevermind 04:13:52 oh 04:13:54 no this is something I've come up with that might be similar. 04:14:04 you should check it out. It's lots of fun 04:14:08 you have a laser and mirrors 04:14:09 and rotation 04:14:14 and the complexity is way higher than regular chess 04:14:32 yes it basically looks like this game but with way more arrows. 04:14:41 and different kinds of arrows 04:14:47 I've added portals as well. 04:14:52 Wikipedia does mention "Correspondence between classical logic and control operators", it has to do with continuations, apparently. 04:15:15 ah and mirrors don't work exactly like arrows. 04:15:28 an arrow forced the direction of a projectile into one specific direction. the mirrors can reflect two different ways. 04:15:49 er multiple different ways. 04:16:20 monqy: ok i will say there is no best chess variant. but basically, some games are more memorable than others independant of factors like marketing 04:16:33 ^and word of mouth 04:16:54 I think portals will be great fun. 04:17:08 i never even really followed the portal part of it 04:17:22 bah, I've explained it so many times now. :P 04:17:35 i can read log if i have to 04:17:39 its all there 04:17:42 zzo38: yeah 04:18:03 portals are knights. the direction of their nose is the direction of the portal. You can literally think of it as a portal. If you move a piece into the opening they come out the other opening, moving as they normally would through the portal 04:18:15 a game only has to be slightly more memorable than the other games in order to achieve mainstream popularity 04:18:16 projectiles can travel through the portal opening as well. 04:18:18 for great fun. 04:18:20 and profit. 04:18:59 if you capture a portal its corresponding portal EXPLODES and everything around it and itself is captured. 04:19:17 portals can't point to nothing, and obviously this requires that they explode. 04:19:41 also trying to pass a portal through its sister portal will cause them to EXPLODE in the same fashion 04:19:44 paradox is not allowed. 04:19:58 like if i wrote a simulation where people play games and talk about them, the games which were talked about even slightly more would have iterated positive feedback 04:20:02 and obviously causes explosions. 04:20:35 also, if any other rules I discover cause annoying side-effects, you can be sure something will explode. 04:21:57 hmm, perhaps I should have four arrows again instead of just two. 04:22:03 sounds more fun. 04:23:40 I think I can understand why Pierce's law is not deducible, though. If it is a function type, you have a value of type ((a -> b) -> a) there is nothing to call the function because you need (a -> b) which you don't have. Is that correct? (I know there is unsafe functions, and undefined, but I believe you have to be limited to safe and halting computations) 04:26:13 I know there is (x ->) monad and I have suggested using do-notation for fantasy rule. Would you simply use different monads, or...? 04:32:03 so basically as it currently stands if you lose a portal, cannon, or prism (queen) you are very likely to lose. 04:32:12 especially a portal, as a portal takes many pieces with it. 04:32:24 :t fix($) 04:32:25 forall a b. a -> b 04:32:34 zzo38, what do you mean by "you don't have" 04:32:41 @djinn (a->b) -> a 04:32:41 -- f cannot be realized. 04:33:14 can anyone think of any interesting ideas for pawns? Currently they move and capture exactly as chess pawns. 04:33:44 which is perfectly fine with me. pawns are definitely one of the most useful pieces in chess. 04:35:09 Lymee: Isn't that an infinite loop though? 04:35:33 they will be even more expendable in this game though, as capturing a pawn with a cannon does not place any of your pieces in danger like capturing a pawn would in chess. 04:35:39 zzo38, yes. 04:35:45 But it fits the type signature. 04:36:42 Can you even write a function with the signature (a->b)->a? 04:36:48 @djinn a->b->c 04:36:49 -- f cannot be realized. 04:37:25 @djinn a->b->(e->d->c->a->b)->c->d->e->(b->r)->r 04:37:25 f a _ b c d e f = f (b e d c a) 04:37:40 @djinn a->b->(e->d->c->a->x)->c->d->e->(x->r)->r 04:37:40 f a _ b c d e f = f (b e d c a) 04:38:09 @djinn a->([a]->(a,b,c)->x)->b->(e->e->e->x->x)->c->d->e->(x->r)->r 04:38:09 Error: Undefined type [] 04:38:11 :( 04:38:16 @djinn a->(a->(a,b,c)->x)->b->(e->e->e->x->x)->c->d->e->(x->r)->r 04:38:17 f a b c d e _ f g = g (d f f f (b a (a, c, e))) 04:38:22 * Lymee stops silly 04:38:41 hmmm 04:38:57 I have a feeling shellshock AI will be more difficult than chess AI. 04:39:04 Lymee: Maybe you can if you have infinite loop and all of that stuff, but for all 'a' and 'b' you probably do not have such a function that is always defined output for all defined input. 04:39:46 But even if you can, what you need is (((a -> b) -> a) -> a) 04:40:39 Which means you require (a -> b), at least I think it does. 04:46:19 hmmm, here's an interesting idea. perhaps a portal could swap places with any friendly pieces in its movement radius. 04:46:27 monqy: ^^^ 04:47:02 this is perhaps a bad idea though. 04:47:13 so that would be any place to which it can move? 04:47:17 yes 04:47:26 which, currently is three spaces in any direction. 04:47:30 but might be shortened to two. 04:47:39 I will play with my first draft and then go from there. 04:47:54 also portals can hop. 04:48:07 which puts them near the top of the mobility list, below arrows. 04:48:36 -!- evincar has quit (Quit: Night.). 04:49:14 because both portals and arrows will need to get to places quickly and often. 04:49:37 as they're the primary defensive pieces. 04:49:41 and offensive pieces. 04:49:43 >_> 04:50:27 Has anyone in here played DROD (Deadly Rooms of Death) and Braid? 04:51:14 Braid sounds familiar. 04:52:55 What is a "dependent product type"? The article about Curry-Howard mentions it, but the article about dependent types, while I read it, I still don't know what dependent product type is. 04:53:06 I've played some braid and I think I've played some drod as well. don't remember either that well. 04:55:33 hmmm, I'll need to clarify the rules involving infinite loops and prisms. 04:56:47 I had an idea two nights ago in bed to combine the time travel elements of braid with drod 04:56:52 Drod already lets you undo as many moves as you like 04:56:57 So why not introduce achronal elements into it? 04:59:59 @let abaa :: ((a -> b) -> a) -> a; abaa p = fix($) 04:59:59 :3:39: 04:59:59 Couldn't match expected type `a1' against inferred type `... 05:00:05 dude shellshock is going to be so fun I can't wait to play it. 05:00:38 i'm still going to call it cakechess it sounds better to me 05:00:41 @let abaa :: ((a -> b) -> a) -> a; abaa p a = fix($) 05:00:42 :3:30: 05:00:42 Couldn't match expected type `a1' 05:00:42 against inf... 05:00:56 Wait, never mind. 05:01:01 laser chess would be a good name but that's already taken. 05:01:03 maybe portal chess. 05:03:10 arrows might be equally important as cannons, or just slightly below importance. 05:03:17 portals are pretty vital I think. 05:04:05 portal, cannon, prism, arrow. perhaps. 05:04:19 but losing any of them would be very much like losing a queen in chess. 05:06:27 anybody play sc2 05:06:31 I'm thinking about getting back in. 05:19:19 a similar game: http://en.wikipedia.org/wiki/Khet_(game) 05:19:25 to my chess variant. 05:19:44 more like laser chess though 05:21:25 it has actual lasers too. this is something portal chess cannot do because of portals. :P 05:21:48 well, no, if the portal pieces were electronic, they could have a sensor/laser combo on one of their sides. 05:21:52 i started taking down some notes on a dbz-chess 05:21:55 and a wireless transmitter. :P 05:22:00 itidus21: oh god no. 05:22:03 don't do it. 05:22:06 cos thats how i like to pass 10 minutes on a sunday 05:22:18 chess does not work like that. 05:22:29 also, no stealing my ideas. 05:22:43 feh 05:23:14 you're encouraging me to actually take down more notes! 05:23:23 no 05:23:25 however.. to also be mindful of not stealing your ideas 05:23:33 your game will be horrible and unbalanced. while mine is obviously not. 05:23:37 good idea: explosion chess. 05:23:41 I'll leave the rest up to you 05:23:48 yes explosions are always good 05:23:52 especially to avoid rule paradox. 05:23:58 such as portals going into portals. 05:24:03 i am probably subconciously stealing ideas. 05:24:15 itidus21: well it's difficult to have DBZ chess without ENERGY BEAMS 05:24:44 so basically you'd have something where like... every piece can shoot some kind of projectile, and so everything would just die very quickly and it would be lame. 05:24:47 bad game. 05:25:20 and you could give some piece cool powers like the queen could be cell which would absorb other pieces and take their leet powerz 05:25:33 but it wouldn't matter because everything else would just shoot everything to deth. the end. 05:25:35 oh.. i would scrap the whole idea of using chess pieces 05:26:14 *sigho* as long as you're not getting genuinely too upset. 05:26:21 either way unless you have a lame hit points system you will have a) projectiles b) rapid death 05:26:32 yes I'm furious. 05:26:32 someone else mentioned that some of your ideas are similar to laserchess 05:26:40 yes but it's not the same. 05:27:06 it's actually very different. the only similarity is that there are cannon pieces and there are pieces that redirect the direction of the cannons fires. 05:27:29 but the way they redirect is very different.. 05:27:51 maybe you're furious because i don't like chess 05:27:54 as is the number of pieces that redirect. 05:28:05 and my ideas are basically attempts to destroy it 05:28:08 nah I'm just saying dbz chess is probably not a good idea. 05:28:14 you can't destroy chess. 05:28:23 that's like saying "today I'm going to destroy communism" 05:28:36 or "today I'm going to destroy object-oriented programming" 05:28:46 mr fischer, tear down this board 05:28:56 *checkmate* 05:29:19 Did you think to kill me? There's no flesh or blood within this cloak to kill. There's only an idea. Ideas are bulletproof. 05:29:21 months ago i had ideas about streetfighter style fighting game with chess characters drawn in that style 05:30:11 i even had an idea about a chess platform game 05:30:28 itidus21 05:30:33 have you been to www.chessvariants.com 05:30:41 no don't encourage him. 05:31:10 well ya see.. the characters: King, Queen, Knight, Bishop, Pawn, Rook can be abstracted entirely out of the gameplay structure 05:31:13 I figure either he'll get better ideas or be overwhelmed by all the stuff on the site and ruminate 05:31:37 hmm also another neat idea for a chess variant inspired from Khet 05:31:38 heck, you could even make chess the sitcom 05:31:50 where your pieces are all arranged in a massive block and movement is done by swapping out pieces. 05:32:01 not sure what the objective would be. 05:32:08 chess the sitcom: "Welcome home King." "Thanks Queen." *canned laughter* 05:32:30 "Wheres our little pawns?" "Oh they're watching TV" *more canned laughter* 05:32:54 all the pawns would obviously die in horrible ways to protect other pieces. 05:32:55 CakeProphet: Castlingmost Chess 05:33:23 and the queen would always run away. 05:33:30 and the knight would always hop out of danger. 05:33:39 "King: It was a busy day at work today. 3 of our men got captured" 05:33:44 meanwhile the bishop is doing something strategic. 05:34:11 and sneaky 05:34:31 "Moooom! Timmy says he's gonna capture me!" 05:34:39 okay this can't continue. 05:35:04 i think there may have been an xkcd comic about a chess raft 05:35:19 the punch line so far is: "haha anthropomorphic chess family" "haha capturing" 05:35:37 maybe its just in my head 05:35:40 haha 05:35:49 I remember that comic 05:35:53 they were going to settlers of catan 05:35:59 and the knights was having an argument with the bishop 05:36:34 so how does one post a contribution to chessvariants? 05:36:38 I must write up ze rules. 05:36:46 CakeProphet: yes anthropomorphic chess characters. 05:36:49 http://www.chessvariants.com/index/membersubmission.php presumably 05:36:52 of what is either portal chess or shellshock I can't decide. 05:36:57 I'm not sure if stuff is still getting added to it though... 05:37:11 well, I still need to work out a final draft after some test plays 05:37:17 so taking something like a manga.. and importing it into chess is simply an inverse operation of anthropomorphizing chess pieces 05:37:19 but surely they will see the awesomeness and allow it. 05:38:11 ah, yes. there are still new pages 05:38:16 excellent. 05:38:33 they shall witness what is probably the most excellent game ever made. well, maybe, after extensive testing. 05:38:50 yeah, you better playtest it :fistshake: 05:38:56 oh I will. 05:38:58 in my youth I had an overwhelming desire to come up with chess variants 05:39:01 but no desire to playtest them 05:39:03 so yeah it was awful 05:39:15 well playtesting is where you figure out if your game is actually good. 05:40:07 I have a feeling it will be extremely fun to begin with, and then get gradually less fun for one person as they lose all of the incredibly important pieces. hopefully at that point losing will be swift. 05:40:29 just gg out when you can't win 05:40:30 I guess 05:40:54 sidenote: it is probably always a bad idea to have a portal next to a king 05:41:15 basically i don't like chess for exactly the same reason that chessplayers do like it. i don't like knowing that it takes 50 years to learn to do anything in the game which hasn't been done before redundantly :D 05:41:38 I wonder if I should include some kind of indirect check rule in which portals can be placed in check if capturing the portal would result in capturing the king. 05:41:43 or if I should just not care. 05:41:55 and include that "oh by the way if a portal explodes on a king you lose" 05:42:21 itidus21: chess isn't about breaking the mold, really. 05:42:45 one idea i had was to make the tiles shaped as golden ratio instead of squares 05:42:55 good luck with that 05:43:04 a golden ratio is not a... shape. 05:43:14 a golden ratio rectangle 05:43:37 that's not an actual thing. 05:43:48 an approximation of a golden ratio rectangle 05:43:54 you need more than one. 05:44:15 ah wait, no you don't. 05:44:37 still what does changing the dimensions of the squares do exactly? 05:44:45 it doesn't mean anything yeah 05:45:26 it could unfortunately make certain distances on the board seem larger than they are also 05:45:46 do you mean make a golden SPIRAL? 05:46:03 or just have squares whose side ratios are phi? 05:46:26 yeah, i just mean take the sqaures and turn them into rectangles whose side ratios are pi 05:46:47 I see. 05:47:09 it would create a false sense of distance though 05:47:22 but i wonder if that would matter 05:47:26 I doubt it. 05:47:57 hmmm, just found some more things I need to clarify 05:48:03 these rules are going to get pretty large I think. 05:48:40 ah wait, no. I don't need the rule I was thinking of. I was thinking in terms of lasers but that's not how it will work. 05:48:49 Chess rules are hard enough to write down. 05:48:53 @google joke chess problem 05:48:54 http://en.wikipedia.org/wiki/Joke_chess_problem 05:48:54 Title: Joke chess problem - Wikipedia, the free encyclopedia 05:49:07 I was thinking if at any point the projectile crosses its own path it would nullify itself 05:49:14 but that would only make sense if it were imagined as a laser 05:49:35 and not as an abstract path thing. 05:49:37 Laser beams can cross themselves... 05:49:44 Do you mean TRON? Star Wars? 05:49:45 also that. 05:49:48 yes. 05:50:11 however I am making it a rule that infinite loops act basically like big laser death walls. 05:50:30 and if you fire a projectile /at/ an infinite loop then it cancels the projectile that was fired as well as the loop. 05:50:46 they collide. 05:51:09 also if an infinite loop captures a piece it ceases to exist. no permanent death walls. 05:51:47 basically you can imagine it as a pointlike projectile move around very very quickly inside the circuit. it collides with anything that crosses the circuit and then goes away. 05:51:59 TRON chess, the next big thing since trek chess 05:52:20 ha 05:52:24 tron chess would be madness 05:52:30 you'd need some kind of piece to keep track of the walls. 05:52:34 checker pieces I guess. 05:52:41 Play on a whiteboard 05:52:54 here I think the loops are simple enough that you can simply use your memory to locate loops. 05:52:59 Also, every piece moves every turn. 05:53:30 though perhaps I will precisely define how loops should be handled 05:53:41 I think you should have to redeclare a loop if you create a new loop from an existing loop. 05:54:14 how about chess where the board's colours update every round according to a CA (game of life or day and night would be appropriate) and then movement is determiend as follows: http://www.chessvariants.org/boardrules.dir/piedchess.html 05:54:21 ... 05:56:11 hmmm the simplest loop I think would be a wall structure. on a single row, column, or diagonal you could have: (canon) >> << 05:56:55 you could also have an L-shaped circuit, but that would involve the opponent's arrow. shared loops are nasty situations. 05:57:23 and then you could have an L-shaped loop between two portals and a connecting arrow inbetween them. 06:01:08 ...bah, I think I'll actually need to give loops a directional quality as well. 06:01:33 in a portal-arrow-portal loop only one portal could change directions wouldn't being captured. 06:01:49 the other would change directions and then collide with the looping projectile. 06:05:32 so basically in any portal-based loop there's an in-portal and an out-portal, based on the direction the projectile was originally fired. 06:06:20 rotating the in-portal without moving it would cause it to be captured, the out-portal can rotate and move freely, thus breaking the loop and capturing the piece directly in front of it at the end of the turn. 06:06:40 yeah... that's probably the most complex rule of the game. 06:09:07 it also makes the out-portal an extremely deadly thing 06:09:41 as it can, in one turn, move three spaces in any direction, hoping over any piece, and face any direction... capturing whatever is in front of it at the end of the turn as it breaks the loop. 06:29:58 http://www.chessvariants.org/diffsetup.dir/pattsch.html 06:30:46 haha, that's hilarious 06:32:01 I don't really see how that's a double stalemate. 06:32:07 you can easily move one of the pawns forward. 06:32:14 no 06:32:22 look at where they start 06:32:24 then look at a normal board 06:32:27 notice something different? 06:32:47 aside from the two pawns above the rank no. 06:33:12 also the colors are flipped. 06:33:29 so, is that implying the pawns move backwards? 06:35:11 help 06:35:21 think 06:35:25 I am. 06:35:40 'the players start the game in a position in which they are both stalemated.' 06:35:43 Is the page lying? 06:36:04 "it's a stalemate because it says it is" is not a valid explanation. 06:36:47 my only guess is that pawns move backwards because they reversed the locations of the pieces. 06:37:09 bravo 06:37:24 you'll note that I said that several lines ago. 06:37:38 and you didn't confirm it. 06:38:07 you should have been able to figure it out on your own lol 06:38:22 I didn't deny it 06:38:47 asshole. 06:38:58 wow 06:39:13 oh wait 06:39:20 I forgot the :P 06:39:25 see now everything is better. 06:39:32 yes 06:40:01 hahaha you're a terrible person just kidding hahaha 06:40:14 hahahaha 06:40:15 :) 06:40:58 anyway yeah 06:41:00 on chess variants 06:41:04 always assume fide rules and rule zero to the letter 06:41:18 until it says something contradictory 06:41:42 fide rules for instance explicitly says white starts on THIS side black starts on THIS side white's pawns go THIS way 06:41:44 and so on 06:45:40 -!- ive has quit (Quit: leaving). 07:08:26 -!- augur has joined. 07:11:58 in some book i downloaded(stole) it began by explaining its easier to describe fairy chess pieces relative to standard pieces... (please note: i am using my own words here in this paraphrase, and my memory always makes small forgettings) 07:12:21 reason for saying this? i suppose that fide provides a stable base 07:14:19 yes it's easier to say "this piece moves like a bishop" or "this piece moves like a knight, except.." 07:15:05 I don't this is entirely true for portal chess. "This piece moves like a king, except it can shoot bulletz lol" 07:15:15 +think 07:15:20 he's a badass king 07:15:25 carrys a rifle 07:15:51 also I've found some other abstract strategy games that have a directional componnt 07:15:54 calls himself k1ng 07:15:54 jwiriwejr 07:16:19 in one game you had to change direction a single turn, except there was one kind of piece that could move and turn in the same turn. 07:16:42 `log pawn 07:16:54 but I think it makes things more interesting if you can move and turn in one move. 07:17:03 2007-09-26.txt:22:51:33: something like Like a flock of hellspawns \ And stewards of the son of despite \ We parry their guile with the magnificence of disgust 07:17:18 hmmm, though once again I have more loop dilemmas... 07:17:37 CakeProphet: can i predict laserchess never had loops? 07:18:18 loops in chess is sort of cool. loops in chess in _the_ esolang channel, is quite special. 07:18:21 let's say I have a loop, and the opponent puts his portal inside of the loop and then turns his piece so that the portal is facing the path of the projectile 07:18:42 does the portal get captured or does it break the loop? 07:18:55 I would think it breaks the loop 07:19:17 are your portals anything like narbacular drop portals? 07:19:35 you can kind of think of them as walls with Portal portals on them. 07:19:44 you can reorient the walls. 07:19:50 `log narbacular 07:19:51 ...I've explained it like 4 times at least. 07:19:55 2008-07-18.txt:15:43:01: shooting a portal through a portal? that worked in narbacular drop 07:20:02 ^_^ 07:20:25 sorry cake.. i hate being so wrong that i have to regularly apologize 07:21:01 so anyways I guess the portal should break the loop... 07:21:14 any loop-breakage should be calculated at the end of a turn, in other words. 07:21:20 not halfway through it. that would be kind of arbitrary. 07:21:39 * CakeProphet will have a fairly large section on loop-breaking at the end of the rules 07:21:46 it's the most potentially confusing part of the game. 07:21:56 im a right groan and grunt 07:22:06 thank you big book of rhyming slang 07:22:51 ok i see 07:22:57 so a portal can divert a laser 07:23:02 faark thats cool 07:23:12 bah, okay I don't have a solution for this one. 07:23:19 let's say you have the simple 2-arrow loop 07:23:39 ok ill stop calling em lasers 07:23:46 (Cannon) >>------(loop)------<< 07:23:56 >> and << are arrows. 07:24:07 yeah im following most of it believe it or not 07:24:24 okay so in the L-shaped loops, there was an obvious direction to the loop. so that a portal could suddenly jump into te loop and something predictable would happen. 07:24:39 ahhhhh 07:24:39 but... what happens here when a portal jumps into a loop. do you flip a fucking coin? 07:25:21 hmm 07:25:31 I have to decide one way or another. 07:25:43 either the portal dies or it breaks the loop safely. 07:25:49 you could default to facing the portal at the cannon 07:25:56 along the loop 07:25:58 meh. 07:26:07 but yeah i know that answer sucks 07:26:10 that breaks my intuitive loop thinking. :P 07:26:21 flipping a coin makes the most sense but that's gross. 07:26:41 okay, the projectile is moving way too fast there's no way to time it correctly, the portal is always captured. :P 07:27:00 hummmm 07:27:02 however, portals can hop... thus allowing them to pass through. they just can't stand in it and break the loop. 07:27:59 so yeah I'll basically have to document the two cases (arrow-based loops vs portal-based loops) and how they differ. 07:28:15 portal-based loops have a directional quality. arrow-based loops do not. 07:28:21 so what happens if 2 loops cross each other.. is that the explosion case? 07:28:38 that can't happen because if a projectile crosses a loop they're both negated. 07:28:45 ahh 07:28:56 hmm 07:29:01 the explosion case involves a portal trying to pass through its linked portal 07:29:07 * itidus21 troll grins. 07:29:10 also when portals are captured their linked portal explodes. 07:29:35 you want to keep your portals alive... 07:31:08 actually portal-based and arrow-based is bad terminology as there's a 4-arrow case with directional qualities 07:31:17 so basically I should call them bidirection and unidirectional loops. 07:31:34 (the 4-arrow case would be extremely unlikely as it involves all four arrows on the board) 07:32:26 at times like this i bet you wish you could code up a simulator for it in 10 minutes 07:32:58 ........nooooo 07:32:59 I just found 07:33:04 something I'm pretty sure cannot be solved. 07:33:12 without a major rule change. 07:33:48 oh wait nevermind. 07:33:52 that can't happen. 07:33:53 phew 07:34:24 okay so anytime you break a loop, there is ONE predictable path the projectile can take. 07:34:33 itidus21: do you understand what happens when a loop breaks? 07:34:47 nope 07:34:56 okay simplest case: 07:35:06 (Cannon) >>------(loop)------<< 07:35:16 the arrow on the far right moves diagonally up-right 07:35:32 the loop is broken, which causes 07:35:42 (Cannon) >>--------(projectile)----------- 07:35:47 right 07:36:05 right, so everytime a loop is broken a potential capture is possible. 07:36:30 making loops a situation where the person controlling the loop has a huge advantage. 07:36:58 (Cannon) >>------(loop)------<< (bob) 07:37:03 because there's I think 12 options even in that simple case. 07:37:06 of where the projectile can go. 07:37:09 (Cannon) >>--------(projectile)---------(bob captured)--- 07:37:12 yes. 07:37:32 no there's 10 07:37:34 10 options 07:37:50 the two options that are removed the ones that form the loop 07:37:56 +are 07:38:13 that's a lot of different ways for things to potentially be captured, and the opponent can only react to one. 07:38:29 unless 07:38:43 they can, in their turn, break the loop via portal. which is not possible in the bidirectional case. 07:39:08 hmmmm, maybe it should be. otherwise that very very easy to setup loop could not be easily handled. 07:39:43 maybe you can declare a loop direction on creation of a loop 07:39:43 WHAT SAYETH? 07:39:50 no... that's not how it works. 07:39:55 ok :P 07:40:00 the projectile moves back and forth. it's bidirectional 07:40:23 a unidirectional loop moves in a circle thanks to portals or very unlikely arrow situations 07:40:35 >>-----V 07:40:35 ahhhhhh i see 07:40:38 ^-----^ 07:40:40 or whatever 07:40:46 very unlikely with arrows 07:41:06 but more likely with portals. two portals + 1 arrow = L-shaped loop with a single direction of travel. 07:41:31 well there's also a line-based version. 07:41:45 ()-------<<------() 07:41:48 the ()'s are portals 07:42:03 the cannon is perpendicular to the arrow and fires. 07:42:51 the L-shaped loops is similar but with the portals not on the same rank/file 07:43:07 ╔═►═╗ 07:43:11 ▲ ▼ 07:43:12 ╚═◄═╝ 07:43:15 yep. 07:43:22 i know thats not how it works but it looks cool 07:43:30 that's the 4-arrow loop 07:43:45 the only loop that consists entirely of arrows and is also unidirectional. 07:43:58 i realize in practice those arrows would be on the corners but artistic license 07:44:03 it is owned by both players. Hilarity ensues. 07:44:32 -!- zzo38 has quit (Remote host closed the connection). 07:44:44 basically you would not want to be the person to form this loop as it gives your opponent license to redirect the loop as he pleases. 07:45:14 UNLESS you can somehow make it so that any possible breaking of the loop causes the opponent to lose a piece 07:45:21 but that's even more unlikely than forming the loop itself. 07:45:34 hmm 07:45:42 ok heres a random idea 07:45:52 -!- kmc has quit (Ping timeout: 260 seconds). 07:46:08 okay so for the sake of balance I think bidirectional loops can always be broken by an intervening portal. 07:46:11 you could say that you can only control the loop if your opponent has no pieces adjacent to it.. or that might be going a bit far 07:46:24 uh, that's not how it works. 07:46:25 or it could be if you have more pieces adjacent 07:46:31 the loop is the result of an arrangement of pieces 07:46:38 re-arranging those pieces should logically alter it. 07:47:15 there's no balance issues with the loop rules as far as I can tell. 07:47:22 yeah.. you can imagine how fucked up a chess variant would be if i produced it 07:47:41 they're expensive in time to set up and allow for a wide-number of neat possibilities. all positive things in my opinion. 07:47:57 to prevent them from being unbalanced and not fun. 07:48:27 I /could/ make the bidirectional portal break thing-a-ma-jig a coin flip... 07:48:43 the ONLY element of chance in the entire game. 07:49:03 -!- kmc has joined. 07:49:17 but no I think a ortal should be able to break a bidirectional loop always because they're the most trivial to set up and are still very nasty for the opponent who isn't in control of it. 07:49:58 nothing drives me more crazy about game design than knowing that victory is usually the result of opponent error 07:50:28 and that where victory is not the result of opponent error it is the result of inherent advantage to one player 07:50:47 and where those aren't the case it could be pure luck 07:51:13 yes those are generally the three cases. 07:51:15 but still.. that is an extreme and unrealistic way of looking at it i have 07:51:23 here's an interesting case 07:51:32 >>----()()----<< 07:51:52 also bidirectional 07:52:27 >>----() ()----<< 07:52:32 or any equivalent arrangement 07:52:41 but what i described is not really the case. and that is where i draw hope from 07:52:48 its an oversimplifcation i made 07:52:58 well no if you look at game theory that's pretty much true I believe. 07:53:18 `log nash 07:53:21 2009-11-08.txt:15:52:22: Observation: gnash actually ... like ... works 'n stuff. 07:53:29 `log \bnash\b 07:53:33 2011-09-18.txt:07:53:18: `log nash 07:53:36 `log \bnash\b 07:53:40 2011-08-16.txt:03:18:46: 362) I've only watched bad movies about video game. I enjoyed every second of it. \ 536) Game theory is not a perfect tool for analyzing video games. Nash failed to create a "video game theory" 07:53:47 there are so called perfect games in which one player can always win. 07:53:55 my quote is not necessarily true.. 07:54:08 but theres proof that it is something that plagues me :D 07:54:09 the only case you didn't mention is an impartial game where stalemate is possible if no one makes an error. 07:54:17 -!- Patashu has quit (Ping timeout: 252 seconds). 07:55:42 the majority of competitive video games have some degree of chance. 07:56:07 I think even a game like starcraft 2 has elements of chance. 07:56:28 in the end i guess it's that it's not who wins 07:57:13 ah wait no the element of chance I thought existed in starcraft actually does not. 07:57:33 I thought the damage calculations were semi-random but they have definite values. 07:57:55 i rant about my ideas a lot 07:58:00 I see. 07:58:00 `log test of reflexes 07:58:03 2011-09-18.txt:07:58:00: `log test of reflexes 07:58:08 `log test of reflexes 07:58:11 2011-09-18.txt:07:58:03: 2011-09-18.txt:07:58:00: `log test of reflexes 07:58:16 hmm 07:58:23 `log test of 07:58:26 2010-04-24.txt:02:02:09: i think i uploaded the most recentest of changes 07:58:29 -!- ais523 has quit (Remote host closed the connection). 07:58:31 `log test of 07:58:34 2009-01-08.txt:17:08:12: fizzie: they are not the brightest of bots 07:58:40 ha ha ha haha ha 07:58:43 -!- pikhq_ has joined. 07:58:52 sorry 07:58:55 -!- pikhq has quit (Ping timeout: 260 seconds). 07:59:04 i gotta chill out more effectively 08:00:22 don't be afraid to tell me off.. i have some bad chat habits. 08:00:42 im basically not much of a contributer 08:01:05 now ill see if i can get your topic back after i broke it 08:01:47 ok so 08:01:58 a normal piece can be captured by the missile right? 08:02:28 any piece that doesn't interact with projectiles, yes. 08:02:36 a cannon can be captured. a missile can be captured. 08:02:43 missiles are not pieces anymore 08:02:47 ahh 08:02:56 cannons fire missiles, which are kind of just abstract rule-things. 08:04:05 so... there is an interesting case 08:04:33 (cannon) >>------(loop)------(portal-a) (portal-b)------(loop)-------<< 08:04:59 thats exactly what you said isnt it 08:05:22 thats another of my bad chat habits .. repeating peoples text back at them 08:05:40 yeah that's a case I already covered. 08:05:55 it's just a more interesting case of the basic bidirectional one 08:06:05 because it can exist on two seperate locations. 08:06:11 also I haven't considered cases involving four portals. 08:06:14 " here's an interesting case >>----()()----<<" 08:06:38 i practically copied your post word for word.. 08:06:40 because as far as the projectile rules are considered opponent arrows and portals are fair game. 08:06:55 so there are 4 portals and 4 arrows total on the board, if none have been captured. 08:07:20 it's interesting because it represents the situation of whether a portal is in a loops path before the loop is created 08:07:36 well not exactly 08:07:51 it's not possible to place both portals into a loop unless you have a secondary loop to pass it off to. 08:07:51 hmm 08:08:18 placing one portal into >-----< just breaks the loop, sends the projectile somewhere else. 08:08:34 which could be a new loop, sure. 08:08:41 oops i mean 08:08:43 maybe I don't understand what you're getting at. 08:09:08 in order to have >>----() ()----<< .. it means that a portal is in the loops path before the loop is created 08:09:23 yes 08:10:03 there is another way it could be done 08:10:10 (A)------(b) (B)--<<--(a) here's a fun and unlikely case 08:10:16 also you could have..... 08:10:31 if you pushed an arrow into the loop the loop would be cut short 08:10:37 (A)------(b) (B)-----<< 08:10:41 then you could insert a portal 08:10:41 followed by 08:10:47 and remove the arrow 08:10:53 (A)------(b) (B)----(a)----<< 08:11:06 er wait... 08:11:11 hnn.. what does upper case mean? 08:11:13 that case is not possible I messed that up. 08:11:21 upper case is one players portals, lower case is the others. 08:11:31 yeah there is no 4-portal case unless arrows are involved 08:12:22 1) >>-----------<< 2) >>------<< << 3) >>------<<() << 4) >>-------() << 08:12:43 oh thats the same problem.. 08:12:44 i see 08:12:46 in those cases a loop breaks and a new one is formed. 08:12:56 (2) is wrong 08:12:57 ...in the event that you break the loop 08:13:04 well two is an entirely possible setup. 08:13:33 oh uhhh no no 2 is correct because the loop would ultimately be shrunk that way 08:13:52 an interesting case where a loop breaks and no projectile-flies-off-the-board capturing occurs. 08:13:53 oops 08:14:07 because it gets caught in a second loop. 08:14:08 1) >>-----------<< 2) >>------<< << 3) >>------<<() << 4) >>-------() << ()------<< 08:14:15 ultimately these loop scenarios are highly contrived and unlikely. 08:14:18 but still possible. 08:14:34 so the rules need to be clear on them. 08:14:57 yes nothing new is happening in these examples. 08:15:05 so i am just pointing out that if loops capture portals theres still ways to use them 08:15:18 I'm looking for cases I haven't considered with possibly ambiguous rules. 08:15:30 ...oh, well sure. 08:15:39 the main use for capturing a loop with a portal would be to capture something on the other end. 08:15:47 a loop is just a capture waiting to happen. 08:16:09 does a loop end with a capture? 08:16:42 do you mean does a capture break the loop? yes. 08:16:53 do you mean do all loops conclude with a capture inevitably? no. 08:17:24 in the basic rules if a projectile captures something the path of the projectile is stopped. 08:17:41 same rule applies for loops as they're essentially projectiles that have been sustained across multiple turns. 08:18:04 I haven't been paying attention how do you represent active loops 08:18:51 also what happens if the opponent fires a projectile into an active loop 08:19:02 mutual annihilation? 08:19:08 -!- SgeoN1 has quit (Quit: Bye). 08:19:55 monqy: yes 08:20:21 also, you declare that a loop exists and if requests by your opponent disambiguate the nature of the loop 08:20:29 in most situations there's probably only one loop that's possible though. 08:20:44 and... you just keep a mental note of it. there is no on-board representation. 08:20:47 oh 08:21:01 hidden state is messy 08:21:10 especially in things like this 08:21:13 -!- augur has quit (Remote host closed the connection). 08:21:22 it's just a consequence of the projectile, which is a hidden state itself. 08:21:28 it might be possible to represent a loop with an object on the loops path 08:21:40 sure but it's not really necessary. 08:21:43 nah forget that 08:21:44 optional rule. 08:21:49 im silly. 08:22:03 CakeProphet: but projectiles normally don't persist, so they aren't problematic 08:22:07 I find it quite easy to picture evil death walls. 08:22:19 monqy: right, even when they do persist they remain in a stable circuit until broken. 08:22:42 but how do you know when the circuit is active or inactive (your own memory and the memory of your opponent that's what) 08:22:46 also directionality can be inferred from arrows along the loop so that's not a problem either. 08:23:17 monqy: when someone declares a loop it's active, meaning that he spent his turn to fire a cannon into a loop, thus activating it 08:23:25 it remains so until broken. 08:23:34 if you really wanted you could have a second board which shows the loops :D 08:23:41 CakeProphet: that isn't my problem 08:23:50 which occurs as the result of a re-arrangement of the loop components or obstruction by something else. 08:23:51 CakeProphet: my problem is with loops persisting without indication 08:24:08 the loop declaration is the indication. 08:24:17 if you really wanted you could have a second board which shows the loops :D = the monqy board 08:24:19 and then you just remember it 08:24:24 yes. 08:24:27 it's not difficult. 08:24:28 hidden state 08:24:33 the Worst Thing 08:24:37 go back to perl 08:24:39 ;_; 08:24:41 lol 08:24:47 also when you move a pawn two squares forward in regular chess 08:24:59 you have to remember that it can be captured on the space it would have been had it moved one space. 08:25:08 *been at 08:25:09 what 08:25:19 that's not remembering 08:25:23 http://en.wikipedia.org/wiki/En_passant 08:25:28 sure it is. 08:25:34 you could use bits of string on the board even ^^; 08:25:48 what if the pawn had moved one square, and then one square a second turn? 08:25:55 the rule doesn't apply even though the board is in the same state physically. 08:25:57 oh multiple turns i forgot about that. 08:26:03 yuck chess is disgusting ;_; 08:26:39 the state doesn't have to be hidden.. its just that representing it requies a kludge or 2 08:26:42 oh, btw, "hidden state woooooo" is not a design philosophy of perl. 08:26:49 i know 08:26:56 they're related by being gross 08:27:17 the irony of perl is that it's not meant to be an esolang 08:27:29 in any case it's not an issue as loops are in practice very short lived entities. 08:27:30 i don't know perl so empty words from me 08:27:41 -!- zake has joined. 08:27:46 CakeProphet: hahaha good luck making them short-lived 08:27:51 -!- zake has quit (Client Quit). 08:27:53 monqy: ??? 08:28:01 CakeProphet: nobody will want to enter them 08:28:16 they'll persist for turns at least 08:28:20 CakeProphet: bits of string could do it.. as could a second board.. it's not really insurmountable 08:28:22 protal chsse 101 08:28:26 how to break a loop 08:28:35 1) >>-------<< 08:28:41 2) >>-----^ 08:28:41 what is this notation 08:28:55 >> and ^ are arrows the direction of the symbol indicates the direction of the arrow 08:29:03 ------ is a projectile path (aka the loop) 08:29:15 (>>)/(<<)/(^)(v) = (arrow piece) 08:29:17 on one row/file/diagonal. it's a 1d view of the board 08:29:32 I am constrained by IRC 08:29:40 use a paste bin 08:29:58 okay basically all you have to do is change the direction of an arrow and the loop will break. 08:30:05 change the state of any of the loops components and it breaks. 08:30:13 and how do you change the direction of someone else's arrow 08:30:17 put a portal which can redirect the loop into the loop and it breaks. 08:30:23 .....you don't. it's yours. 08:30:26 you have two arrows. 08:30:58 ►═══▼ 08:31:00 there are several ways to break loops. in many cases it will be advantageous to break an arrow as it captures something. 08:31:01 why would you break your own loop if not for the enemy falling into range of one of its constituent arrows 08:31:01 ║ ║ 08:31:03 ▲═══◄ 08:31:04 ... 08:31:08 you don't understand at all. 08:31:30 breaking a loop essentially allows you to capture something by /turning an arrow in a direction/ 08:31:36 yes I know 08:31:56 because someone will put definitely something in that direction 08:32:13 there are 10 of them in the most basic loop you can make. 08:32:15 10 paths 08:32:18 the loop can break. 08:32:24 ►═════▼ 08:32:29 ║ ║ 08:32:30 ▲═) (═◄ 08:33:05 and even, as you say, "no one will want to break their own loop", the opponent can still place a portal into the loop to redirect it. 08:33:23 (which is, consequently, even more reason for the loop-maker to want to break their own loop, otherwise they give their opponent a free projectile) 08:33:25 people will want to break their own loops 08:33:29 yes. 08:33:30 did you reade the "unless" clause 08:33:38 I mean "if not" 08:33:53 and the "why would you" not "nobody will ever" 08:33:57 but whatever 08:34:01 hmmm? 08:34:36 ah my mistake. 08:34:44 "nobody will want to enter them" 08:34:48 the dangers of paraphrasing. 08:34:51 still all of my points are valid. 08:34:57 what points 08:35:09 you're assuming people will walk into deathtraps 08:35:15 i.e. into range of the arrows 08:35:28 that loops are systematically short-lived entities as a result of their purposes and the ability to be "stolen" from you 08:35:55 what purposes 08:36:00 by stolen do you mean via portals 08:36:12 to allow 10 or more possible paths of capture at the same time 08:36:13 and yes. 08:36:21 -!- Vorpal has joined. 08:36:33 sure they could be defensive as well, but again there's the case where a portal can redirect it 08:36:38 so you wouldn't want it to stay around long 08:36:45 a few turns is not a long time to remember the existence of a portal. 08:36:49 it's not an issue. 08:36:58 s/portal/loop/ 08:37:42 1) yes it is (2) elegance suffers greatly and i will hate it forever (3) how would you use them offensively, positioning and firing and all 08:37:51 they seem like a pretty defensive thing to me 08:38:17 and offensive when broken because you forced the enemy to move into range 08:38:32 or the enemy is being stupid or using a pawn to break it intentionally 08:38:38 they're both. but being able to fire a projectile at will from any of the components is a major perk of breaking them. 08:38:47 yes, no one will walk into a death trap. 08:38:49 but i guess using a pawn isn't fulfulling much of its purpose my train of thought kind of derailed there 08:39:41 also there are only 4 arrows at any given time 08:39:49 it's not like the board is going to be littered with loops to keep track of. 08:40:10 it seems a lot more like a tool for restricting movement than killing 08:40:17 also.. how many players do you think is optimal for this game? 08:40:25 is this a 4 player jubilee? 08:40:28 ....2 08:40:32 hehe 08:40:35 it's on a chess board. 08:40:39 also also 08:41:02 in loop case 1... >>-----<<...positioning a portal in there...what happens 08:41:03 d&d Also? 08:41:07 it is very much a tool for killing. 08:41:13 does it both do the redirection and get destroyed? 08:41:13 ignore that comment 08:41:26 monqy: portal redirects it. I considered that case and decided for balance reasons that was the best choice. 08:41:34 but there are two variant rules you could play. 08:41:36 also what happens when you put your own pieces in a loop. destruction? 08:41:42 yes. 08:41:47 projectiles are friendly-fire always. 08:42:02 with the exception of arrows, prisms, and portals facing the right direction. 08:42:19 (also need to clarify prism-based loops as they're kind of tricky) 08:43:19 ...actually a prism based loop with arrows is impossible 08:43:33 oh? 08:43:51 the prism, by the way, is the queen piece. it's an arrow without a direction, basically. the player is free to choose a path. also once a projectile passes through a prism is destroys arrows in its path. 08:44:09 what 08:44:12 ? 08:44:18 destroys arrows in its path 08:44:18 why 08:44:24 to allow that to be possible. 08:44:32 as otherwise arrows are kind of difficult to capture and can just roam around easily. 08:44:47 -!- FireFly has joined. 08:44:58 CakeProphet: when i was reading about 2L there was a thing which redirects dependant on incoming direction 08:45:00 arrows are highly useful as well, which compounds the issue of them being difficult to capture. 08:45:25 so far it's the best idea for a queen piece I have. it might change but I like it. 08:45:53 if I allowed prisms to destroy portals as well then I could avoid clarifying prism-based loops entirely. :P 08:45:57 but I'm not sure I want to do that. 08:46:39 monqy: oh also prisms can capture, but have restricted movement (currently 2 squares no hoping) 08:47:12 but I might increase their movement capabilities since they're one of the few pieces that are effective at non-projectile captures. 08:47:20 -!- augur has joined. 08:48:20 hmmm, actually no 08:48:29 I'll make prism movement/capturing a combination of knight and king. 08:48:33 I like that better. 08:48:39 what do you mean by that 08:48:53 ....it can move and capture like knights and kings can in chess... 08:48:58 either way. 08:49:04 very simple. 08:49:05 to grasp... 08:49:41 oh so you choose between them? 08:49:44 yes. 08:49:48 ok 08:49:55 ah I see the confusion. 08:50:08 anyways what do you think about these prisms? 08:50:31 I basically used as a convenient to close some issues concerning arrow capture. 08:50:39 s/used/used them/ 08:50:44 s/convenient/convenient way/ 08:51:27 prisms only have that effect on friendly fire, btw. 08:51:30 they are not like arrows. 08:51:34 this makes them more vulnerable. 08:51:57 ew gross special case, etc. 08:52:33 i wis this game was ~elegant~ 08:52:36 wish 08:52:53 "all pieces are parenthetical lists" 08:53:09 question: what makes something elegant? 08:53:30 me saying it's elegant (thumbs up) 08:54:12 but anyways if you can think of something better for the queen let me know. 08:54:28 but it gives it queen-like attributes while allowing arrow capture so I think it's pretty solid. 08:54:55 queeen like attributes like what 08:55:14 being powerful offensively but weak defensively. 08:55:19 er, no 08:55:26 that's not what it does. 08:55:28 it's pretty defensively powerful 08:55:30 it has knight moves 08:55:48 though the queen can escape from a bunch of things as well 08:55:57 it is still vulnerable compared to arrows 08:56:10 arrows are weird 08:56:12 so it's not something you'd use 08:56:16 like 08:56:19 at the beginning of the game 08:56:25 My scouter indicates the prism has a power level over 9000. 08:56:34 because then every arrow decides to point at it, and it must flee. 08:56:53 monqy: arrows are awesome. 08:57:07 arrows are definitely all-around amazing defensive/offense. 08:57:58 provided they have cannons... 08:59:06 arrows are probably better defense than offense though, I think. 08:59:28 as they can "block" cannon fire. 09:00:02 from multiple sources. 09:00:15 portals can only block from one direction at a time. 09:00:23 which game are you discussing? 09:00:33 a chess variant I created. 09:00:36 ah 09:00:46 it's like... laser chess with portals. 09:00:51 whoa 09:00:59 CakeProphet, are there pirates and ninjas too? 09:01:08 unfortunately no. 09:01:10 aww 09:01:14 what if instead of special cases you had pirates and ninjas 09:01:18 i would be less angry 09:01:19 ...no 09:01:22 there are no special cases. 09:01:23 just rules. 09:01:30 how about the hidden state then 09:01:36 that's not a special case of anything. 09:01:39 that's just a rule. 09:01:46 CakeProphet, so you removed en passant (nfc about spelling) 09:01:46 i didn't say it was a special case 09:01:51 the distinction is completely pointless in a board game. 09:01:55 that is a special case in normal chess IMO 09:02:12 Vorpal: actually haven't decided. pawns work like chess pawns but I dunno if they should have en passant. 09:02:22 use checkerspieces or coins to mark active loops 09:02:38 monqy: put a coin under each active component? 09:02:57 is it legal to sell money? 09:02:59 CakeProphet, how are the lasers used? As weapons? 09:03:06 yes they're the primary means of capture. 09:03:14 CakeProphet: as long as it makes the state explicit and works in all cases, sure 09:03:24 if so you need hitpoints 09:03:25 eg... if you sell a toy with actual legal tender in the packaging. is that legal? 09:03:30 the rooks are cannons. the upside-down rook can fire a projectile in any diagonal direction. right-side up rook is the same but cardinal. 09:03:36 lol 09:03:50 CakeProphet, heh 09:03:55 probably would attract many thiefs 09:04:11 a projectile will capture anything in its path up to the first thing it captures. 09:04:14 ... 09:04:19 a weird way to word it I know. 09:04:27 CakeProphet, projectile? Doesn't sound like a laser 09:04:38 it's... well it doesn't really matter how you view it. 09:04:52 it's an abstract path like thing 09:04:57 CakeProphet, anyway grenades. 09:05:00 laser grenades! 09:05:00 with a direction. 09:05:04 (no clue how that would work) 09:05:21 Vorpal: I'm afraid I already have most of the rules solidified minus some minor future revision perhaps. 09:05:24 need to playtest. 09:05:26 ah 09:05:52 remove en passant and i'll be hapey 09:05:56 CakeProphet, random idea: zombie chess 09:06:07 I've never liked castling being a thing either 09:06:12 so yeah an interesting thing is that you portals. the knights. the direction of their nose indicates the opening of the portal 09:06:21 monqy: castling is no longer thing. I'll remove en passant sure. 09:06:27 hurrey 09:06:30 maybe even the 2-square pawn thing. 09:06:36 sure 09:06:46 I don't care as much about that though 09:06:48 what about piece promotion? :D can more cool items be made? silly question i know 09:07:02 itidus21: no, no, and yes. 09:07:14 Vorpal: I think there are chess variants with zombie pieces. 09:07:17 XD 09:07:24 well, bbl, need to leave for a while 09:07:27 Vorpal: http://www.chessvariants.com/other.dir/nemoroth.html 09:07:28 ah okay. 09:07:34 -!- Taneb has joined. 09:07:41 when pawns (humans) go to the end of the board they're promoted to zombies. 09:07:42 vorpal would probably like my lowbrow style of chess variation 09:07:46 Hello! 09:07:53 Taneb: heyo 09:08:06 monqy: you're just jealous because my special cases make the game awesome in all ways. 09:08:12 ;_; 09:08:12 nyah!!! :P 09:08:23 also hidden state ;________; 09:08:45 more like "state that is verbally declared and just needs to be remembered" 09:08:50 might be a problematic rule for goldfishes. 09:08:57 FUNCTIONAL PYTHON <- awful idea? amazing idea? YOU DECIDE 09:09:02 thats a false myth 09:09:20 mythbusters proved goldfish have good memory 09:09:32 CakeProphet: itidus21: there's one of those "hidden" states in regular chess 09:09:33 but maybe theres multiple kinds of memory 09:09:33 fine. snakes. insects. anything. 09:09:41 "Has this king moved yet?" 09:09:44 he taught a goldfish to run an obstacle course 09:09:53 Taneb: we also determined en passant was similar. 09:09:56 so maybe its not so much memory as conditioning 09:09:59 but whatever 09:10:32 Similar to Functional Python, or similar to deciding whether the king has moved yet? 09:10:36 but honestly if you can't remember where a loop is you probably should accidentally walk into it. 09:10:39 Because it's neither really 09:11:04 CakeProphet: that is a possible design decision :) 09:11:05 and probably shouldn't be playing a game that's played with chess pieces and involves redirecting projectiles across the board. 09:11:09 if you can't remember if you've allocated/freed the memory........ 09:11:23 *imaginary projectiles 09:11:31 or what your values are 09:11:46 because your varaibales are mutable and there's manaul memroy memanagement with poeinters 09:11:51 speaking of which I have a feeling portal chess AI is very difficult. 09:11:58 I am implementing one of DMM's sorting algorithms in Python! 09:12:01 because you're using c or something 09:12:17 -!- Vorpal has quit (Ping timeout: 248 seconds). 09:12:17 Taneb: I occasionally use functional style in Python, but the syntax is very limiting. 09:12:23 also no tail call optimization. 09:12:32 i guess perl has the mutable variables but most of its inelegance is in other areas??? 09:12:48 monqy: perl is beautiful if not elegant. 09:12:48 I meant an entirely functional version of python 09:12:55 oh well that's just weird. 09:12:55 oh? 09:12:56 weirdo. 09:13:00 Python is dysfunctional by design 09:13:04 TCO is Unpythonic -- master guido 09:13:08 monqy: er, not saying perl is elegant. 09:13:13 Anyone who tries to fix this will face the wrath of guido 09:13:17 `log unpythonic 09:13:21 2007-07-03.txt:20:27:55: bsmntbombdood: so? this is still unpythonic. Besides, it's clearly not the only stdout, otherwise you wouldn't need that __stdout__ thing. 09:13:28 ok 09:13:34 monqy: I meant "perl is beautiful, but definitely not elegant" 09:13:40 ah 09:13:48 so the word is common 09:13:59 yes pythonic is a term invented by pythonistas 09:14:02 a beautiful trainwreck 09:14:03 which is another term invented by pythonistas. 09:14:21 pythonistas are lame. 09:14:26 I call them pyfaces 09:14:40 itidus21: if you want to get banned from a channel right now 09:14:48 join #python, type "lol", press enter. 09:14:53 I haven't called them anything consistently, but I've probably parroted "pythonistas" once or twice 09:15:05 i've been banned from 2 recently 09:15:05 monqy is a good parrot. 09:15:08 -!- Nisstyre has quit (Ping timeout: 260 seconds). 09:15:38 ##c-basic because of bad connection, and efnet #xna for being off topic and ranting 09:16:33 if you need any evidence that Python users are style fascists, the "no lol" rule is it. 09:16:44 ok here goes 09:16:55 * itidus21 rubs hands together 09:17:11 They can't possibly ban everyone that says lol, I think 09:17:22 The channel ban list would overflow 09:17:30 they do. 09:17:39 Probably temporary bans 09:17:46 most likely. 09:17:54 Go in there every day and lol until you get permanently banned 09:18:02 otherwise they'd ban some long-time visitors that accidentally say it. 09:18:10 Automate it. 09:18:13 Jafet: no I occasionally ask #python questions 09:18:16 and occasionally get good answers! 09:18:42 i left after taunting the quiet room 09:18:55 what did you say 09:18:59 don't really want to be banned bad enough to wait 09:19:13 i said lol more euler problems needed 09:19:22 banned from life 09:19:23 don't really want to wait bad enough to be banned. 09:19:40 itidus21: they can still ban you even if you're not there you know. 09:19:50 well i kinda assumed i would be banned when i did that 09:20:07 they should have a nololbot 09:20:33 that reminds me of the #jesus bot 09:20:40 with the broken bad words filter 09:21:52 -!- Taneb has quit (Read error: Connection reset by peer). 09:22:12 monqy: did it need moar \b? 09:22:44 it banned when you said "ands" or "an s" 09:22:51 wat 09:22:57 "ants" was special-cased not to ban 09:23:10 why those phrases. 09:23:17 it was meant to ban on "anus", the baddest word, but I guess "anvs" is bad too 09:23:26 anqs 09:23:28 wow like.... 09:23:35 how do you break something that badly. 09:23:39 how can you get that wrong. 09:24:17 variants of "fuck" were also repeated everywhere, despite "fuck" itself being in the list of things to ban on even if it's within other words etc 09:24:30 One time, yahoo's discussion board censored "breast" 09:24:31 man christians sure are weird. 09:24:43 It was not appreciated by women who wanted to talk about their chicken breasts 09:25:04 chicken breasts? gross. 09:25:19 I bet they didn't censor other variants of the word 09:25:24 where they genetically modified? 09:25:30 .... 09:25:31 *were 09:26:57 monqy: I challenge you to make a chess variant that is more elegant than mine. 09:27:11 oh snap!!!!! 09:27:25 AND YET RICH WITH COMPLEXITY AND FUN. 09:27:33 MAYBE 09:27:34 maybe i could take you up on that s-expression chess 09:27:37 -!- Nisstyre has joined. 09:29:03 K vs K. Can only capture diagonally. 09:29:08 I dunno how it would go. 09:29:21 K? 09:29:24 king? 09:29:40 not sure of notations 09:30:28 I dunno about king vs king stuff but I'd be willing to call it a stalemate 09:30:58 im not sure how my rules would override the usual king vs king rules 09:31:05 Ultima is a neat chess variant. 09:31:07 your rules? 09:31:26 mostly consisting of odd capturing rules. 09:31:28 "King vs King. Can only capture diagonally." 09:31:41 for example there's one type of rook that captures by moving /away/ from something adjacent to it. 09:32:06 and chameleons (bishop) can only capture pieces by using their capture rules. 09:32:23 heh 09:32:34 I imagine it's actually cumbersome to play. 09:32:39 UNLIKE PORTAL CHESS WHICH IS VERY GOOD. 09:32:44 ok 09:32:47 -ahem- 09:32:54 excuse me. 09:33:05 also I remember you saying something about knigt-moves having direction? what's that about 09:33:16 relevant if any of your pieces have knight moves and try stepping into portals 09:33:31 also what happens when portals step into their counterparts 09:33:39 is that invalid? 09:33:43 well I suppose they have two different possible directions actually. 09:33:46 do they explode? 09:33:47 monqy: they explode. 09:33:47 yes. 09:34:10 possibly useful as a suicide strategy but probably a really bad idea. 09:34:13 `log explode 09:34:16 2010-09-28.txt:21:09:22: The LWSSes hit it and everything explodes. 09:37:06 monqy: the portal direction could be made irrelevant for entrance perhaps. 09:37:25 or knights-likes could simply enter from two directions 09:37:29 CakeProphet: but then you've got really weird stuff 09:37:45 how so? 09:38:19 nevermind 09:38:29 actually yes do mind it's really weird 09:38:47 (cannon)>>-------()-------<<(cannon) ()------<< 09:38:49 :P 09:39:08 itidus21: that doesn't breakanything. 09:39:13 also how will you deal with bishop-movers and portals? is them switching to the other coloure just a natural thing? 09:39:17 fair enough 09:39:22 its kind of cool 09:40:02 I was going to say something els ebut I forgot it 09:40:55 monqy: portals can hop anywhere in a 3-square radius 09:41:05 thus I don't see how bishop movement is a problem. 09:41:17 ok? 09:41:39 ooooh 09:41:40 I see. 09:41:46 yeah it doesn't matter. 09:42:01 in fact that would be a useful way to switch colors for arrows. 09:42:11 which are the pieces that move like bishops 09:42:19 (possibly like queens in the future... I haven't decided) 09:42:26 radius? :p 09:42:42 ah ok. radius] 09:42:57 understood 09:42:57 presumably by chebyshev distance 09:44:14 -!- DH____ has joined. 09:44:36 CakeProphet: is it chebyshev or is it manhattan or are you So Wrong 09:44:52 I have no idea what that means. 09:45:18 ah yes 09:45:18 is your "3-square radius" measured by chebyshev distance or manhattan distance or are you Wrong 09:45:19 chevyshev 09:45:19 i realized that it probably means 3 spaces in 8 directions when i said (ah ok. radius]) 09:45:23 *cheby 09:46:16 though perhaps 3 is a bit extreme? especially with hoppage. 09:46:35 oh ok i see what chebyshev is 09:46:40 portals can't capture can they 09:46:47 directly, I mean 09:47:29 if portals trigger when hopping onto someone you could kill them by portalling dudes into active loops 09:47:50 er 09:48:07 if portals trigger when hopping onto pieces you could kill them by portalling them into active loops 09:48:12 there 09:48:14 less confusion 09:48:15 that 09:48:15 time 09:48:17 well, sort of. 09:48:27 you can't portal something to a loop though. 09:48:37 because moving the portal breaks the loop 09:48:38 oh? 09:48:48 however 09:48:50 no I mean 09:48:51 there is a neat trick you can do. 09:48:54 portal isn't part of the loop 09:48:59 the portal is pointing into the loop 09:49:09 ah okay 09:49:11 yes that's possible 09:49:29 that;s one way to use loops offensively 09:49:50 also breaking a loop with the out-portal is very nice. 09:49:53 with a little preparation you have an extremely mobile capturing machine 09:50:21 and i guess you could also move portal into loop to get the thing worky 09:50:32 because you can hop three spaces, and change direction to release the project whose loop you just broke. 09:50:38 which is actually kind of ridiculous. 09:50:43 if you consider the possibilities. 09:50:46 mhm 09:50:50 oh right I remembered a thing 09:50:50 about 09:50:53 what I was going to say 09:50:54 about 09:51:04 portals where the in-portal triggers from any direction 09:51:05 which is 09:51:12 how do you capture them? 09:51:19 ah, yes. 09:51:21 that's a problem 09:51:27 I think I just need to define the movement rules well 09:51:34 answer: a portal explosion (by portal suicide) 09:51:34 so basically even if you move like a knight you still have directionality. 09:51:53 alternatively a prismed projectile 09:52:03 if that works the same was on portals as arrows 09:52:08 yeah but currently prismed projectiles do not kill portals. 09:52:11 oh 09:52:20 ...might change that? 09:52:20 I think they should for consistency 09:52:24 hmmm 09:52:35 anyway I think it'd be best to fix directionality anyway 09:52:39 well, portals can still be killed when facing the wrong direction 09:52:46 while arrows work from any direction 09:52:54 fix it how? 09:53:09 to give every movement a direction 09:53:34 oh, yes, that's what I meant. 09:53:35 fior knights it could be the side in which they move more 09:53:38 -!- DH____ has quit (Ping timeout: 260 seconds). 09:53:56 well, no. knights could just have multiple entrance directions. 09:53:57 since they move 2 in one direction and 1 in the other isn't it 09:54:05 that works too 09:54:14 and they enter from the applicable one? 09:54:16 yep 09:54:20 same with portals 09:54:28 who move like knights but with a chevyshev distance of 3 09:55:02 no need to get incredibly detailed... 09:55:09 I feel it's a fairly intuitive notion. 09:55:16 do portals hopping onto things have a direction or do they always work or do they not work anymore 09:55:29 the only thing that's not reall very intuitive so far is the bidirectional loop portal breakage rule thing. 09:55:53 since portals turn whenever they hop I can see portal hops always working being fine 09:56:01 monqy: I was thinking if portals captured that would be how they capture. only able to capture in the direction they're facing. 09:56:18 but that's kind of weird 09:56:25 intuitively they should just teleport whatever they land on. 09:58:24 it's probably a bad idea to teleport things unless they die immediately on the other side. 09:58:40 or 09:58:42 i.e. there's a loop waiting for them? 09:58:44 they have nothing to capture. 09:58:44 yes 09:58:59 there's also the situation where killing the portal on the other side causes an explosion and kills a bunch of the opponents pieces. 09:59:07 so they wouldn't want to capture said portal. 09:59:32 I'm imagining moving an enemy piece into any piece via portal will capture that piece 09:59:36 in this way the portal explosion rule can be used for bargaining power. 09:59:48 so I guess you could use enemy pieces to capture other enemy pieces? or your own pieces if you're dumb 10:00:01 hmmm... it would capture enemy pieces but would be an illegal move otherwise I think. 10:00:14 illegal? 10:00:22 ..yes because you can't capture your own pieces. 10:00:27 you can;t??? 10:00:28 well, I would think not. 10:00:32 ...not without projectiles. 10:00:34 why not!! 10:00:34 I DON'T KNOW 10:00:40 MAKES SENSE? 10:00:53 fine okay you can elect to capture your own pieces. 10:00:56 like a boss. 10:00:57 hurray 10:01:19 so in this weird corner case where someone is directly in front of your portal and you teleport something to that portal it gets captured . 10:01:31 this game is full of weird corner cases. 10:01:33 most likely usually a bad move but getting rid of pawns which are in the way may prove useful 10:01:46 naturally emerging corner cases, right? 10:01:50 yes. 10:01:54 not special exceptions in the rules good good 10:02:53 but I'll have to list that as how the portals work. 10:02:55 to clarify. 10:02:58 it's not immediately obvious. 10:03:33 also if a piece moves through a portal it can continue moving on the other side, as you would expect I hope. 10:03:34 as long as you note it in such a way to make it clear that it's natural and not just some other rule you made up!! 10:03:42 as long as it legaly has more squares that it can move in its turn. 10:03:46 *legally 10:04:01 oh right I was going to ask about that too 10:04:06 with regard to direction changing and all 10:04:11 yes 10:04:22 portals are direction/location changers. 10:04:39 hmmm... I wonder if I should include that. 10:04:41 it won't work with knightsmoves either right 10:04:42 if an arrow goes through a portal 10:04:50 it reorients to keep the same angle..... 10:04:54 if that makes sense. 10:05:00 ??? 10:05:06 what do you mean reorients and same angle 10:05:14 okay so imagine you're the arrow 10:05:20 you're facing up-right 10:05:24 and you walk through a portal 10:05:35 you are still going the same direction when you come out, but now facing a different way. 10:05:40 thus.... your direction would change 10:05:46 your absolutely direction 10:05:49 -ly 10:05:57 yes that's what I was hoping 10:06:01 to reflect that your direction actually didn't change as you walked through the portal and reoriented. 10:06:03 unless I interpreted you backwards 10:06:17 but that's a pretty complex thing to worry about. 10:06:38 also knight movers still have legal moves if they go through a portal. 10:06:45 I just need to define knight moves properly 10:06:45 like if you're going left and facing left into a rightfacing portal and the outportal is up now you're going up and you're facing up 10:06:48 as a series of single-square moves 10:06:51 for it to make sense. 10:06:53 absolute-wise 10:07:06 yes. 10:07:18 a series of single-square moves? how will the leaping work then? 10:07:33 ....uh, it just will. :P 10:07:38 :| 10:08:04 "the prism can leap across pieces in the course of making its move" 10:08:08 I mean 10:08:27 you don't have to interpret it as a LITERAL series of single-square movements where you MUST have an EMPTY square. 10:08:36 also the destination according to the knightsmoves rules and not being "here go three spaces leaping over stuff" 10:08:41 it's just to make the directions and portal stuff well-defined. 10:09:03 hmmm? 10:09:04 I liked it better when it was a single move with two directions :( 10:09:16 it's the same thing... just different ways to say it. 10:09:26 not really 10:09:49 it will be way easier to comprehend when talking about portals. 10:09:53 it's easier to specify the knightsmove conditions for single moves than make a state machine to get three moves to obey the knightsmove rules 10:09:53 who can move 3 squares. 10:10:28 am I sense ing???? 10:10:30 ....no it's the opposite of that. 10:10:35 what???????????????? 10:10:38 you have only ONE direction entering the portal. 10:10:46 because it's all defined in terms of single square moves. 10:11:00 with your system you have two/three directions 10:11:07 which makes less sense. 10:11:27 three directions? when's that? 10:11:49 with your system you have to specify the second and third moves in terms of their predecessors 10:11:54 which is ugly- gross 10:12:15 and hard to follow 10:12:16 .......? 10:12:34 oh and the three direction case is when you enter a portal on your second jump as a portal---oh wait that causes explosions 10:12:37 but still a valid move I suppose 10:12:49 in my system knights leap over portals 10:13:02 so they have to hop on them to teleport? 10:13:03 as they leap over all other pieces 10:13:04 yes 10:13:11 hmmm 10:13:19 so then the direction doesn't matter with knights? 10:13:21 that works. 10:13:24 I thought you might complain about that. 10:13:41 either it doesn't matter or it's one of the directions in which they traveled or it's the longer of the directions in which they traveled 10:13:41 also portals are not restricted to where they can land. 10:13:44 either one 10:13:48 meaning they don't /have/ to move three squares. 10:13:54 they can move one, or two. 10:13:56 right 10:13:58 is that ridiculous? 10:14:05 I figured that when you said "within" rather than "at" 10:14:10 in "within a 3-square radius" 10:14:12 or whatever it was 10:14:24 that's like... being a queen and a knight 3 squares around you. 10:14:32 granted you can't capture anything 10:14:35 so I guess that's fine. 10:14:51 you can pull off wickednasty stunts though!!! 10:14:56 yes. 10:15:08 the portal is mobile but by itself not effective. 10:15:10 so that's fine. 10:15:36 it would be silly if portals were not very good at jumping around and portalling things. 10:15:56 indeed!! 10:16:07 they're currently the second most mobile in terms of sheer distance. arrows are the only pieces that can move an unlimited number of squares in a single direction. 10:16:36 I think this makes sense in this game. 10:16:44 I need to see it in action now 10:16:51 ...how will you do that? 10:17:04 monqy: you could write a program for it. :) 10:17:08 an IRC bot. 10:17:10 never 10:17:14 wait irc bot what 10:17:19 how would that even work 10:17:20 ASCII board 10:17:22 commands 10:17:22 it could be static animated 10:17:30 ...yes/ 10:17:31 ? 10:17:38 it would be very spammy. 10:17:44 the spamest 10:17:44 but each turn it would print out the board. 10:17:54 i mean as in.. it could have an animation mocked up 10:17:57 which would not be bad, say, in a separate channel. 10:18:02 itidus21: explain. 10:18:07 how does that even make sense in IRC. 10:18:09 and why do you need to animate it. 10:18:33 like a game drawn frame by frame and saved as a gif or something for purpose of I need to see it in action now 10:18:51 well. monqy can just play it with some friends IRL? 10:18:57 whats friends 10:19:00 oh.. 10:19:04 well, that's how I'm going to playtest it. 10:19:08 I have some friends that like chess 10:19:12 so I'm pretty sure they'd like this game. 10:19:21 they also like Portal... so... 10:19:27 do they like lasers 10:19:28 i used to have friends.. thats almost the same thing as having friends :-s 10:19:29 and hookah. 10:19:30 probably. 10:19:34 that was a joke everyone loves lasers 10:19:52 I wonder if they like prisms. 10:19:57 -!- sllide has joined. 10:20:04 I wonder if the prism is a good piece... 10:20:07 prisms _are_ nifty 10:20:13 I mean real prisms 10:20:22 I am somewhat suspicious that they could be improved upon. 10:20:26 me too 10:20:45 but something needs to capture arrows... 10:20:57 can normal pieces not? 10:21:10 currently that includes: pawn, king, and queen 10:21:15 aahh 10:21:20 s/queen/prism/ 10:21:33 what are bishopes agian i forgot 10:21:36 arrows. 10:21:42 ah 10:21:54 moved it from sharpied pawns, then? good 10:21:56 I changed the piece roles a bit near the end of brainstorming. 10:21:57 yes. 10:22:28 queenside rook is the d-cannon, kingside rook is the c-cannon 10:22:33 that's diagonal and cardinal. 10:22:47 d-cannon is upside down. 10:24:30 these designations may change entirely. needs more playtesting. 10:24:48 but a cannon that fires in all directions seems bad to me. 10:24:55 but then prisms basically do that are more mobile... 10:25:21 still they're not offensively mobile in that they need to be in a projectile path to be effective. 10:25:48 ...except when they're just hopping around capturing normally. 10:25:53 which is one of their advantages as well. 10:26:28 it's a very effective anti-arrow piece. but not something that's invincible itself. 10:27:24 I was imagining it'd be a pretty good piece for staying in some degree of saftey and sniping at the enemy 10:27:42 -!- Patashu has joined. 10:27:50 well, that's kind of why I want portals to not be affected by prisms 10:27:51 as with some assistance it can do what queen-captures without moving itself 10:28:07 portals could be used to defend against prisms then. 10:28:47 only if they're facing the right direction!! 10:28:49 which can otherwise just destroy anything in three different paths without having to move out of safety. 10:28:52 monqy: right 10:29:25 so yeah leaving portals unaffected by prisms would be a nice balance I think. 10:30:30 arrows defend against cannon fire, prisms can kill arrows, but regular cannon fire can kill prisms 10:30:57 portals can defend against anything in which it's facing. 10:31:11 (...results may vary on the other end of the portal. :P ) 10:31:37 hm 10:31:41 a thing 10:32:02 yes a thing. 10:32:03 so is this chess or a wargame 10:32:06 what happens when you have two corresponding portals pointing into each other and someone somehow gets into one of them, say by knightsmoves 10:32:12 Patashu: what is a wargame 10:32:25 like panzer general and stratego and so on 10:32:26 monqy: oh my. 10:32:32 CakeProphet: explosions? 10:32:37 monqy: uh...... 10:32:39 uh....... 10:32:42 yeah explosions. 10:32:44 woohoo 10:32:52 explosions are cures for all forms of paradox. 10:33:12 monqy: stargate rules? 10:33:15 Patashu: uh I'd say it's chess-like 10:33:17 That would be a funny premise for a time travel game 10:33:20 is there any applicable rule? 10:33:22 Mess up? EXPLOOOSION 10:33:27 itidus21: never seen it 10:33:40 i dont think anything like that ever happened 10:33:47 but stargate is much like a portal 10:33:53 monqy: it could just be like illegal or something... 10:34:07 illegal is boring 10:34:18 also how should diagonal movement work through a portal that isn't facing diagonal 10:34:23 so long as you're making an exception for it, might as well make it explodey 10:34:26 or similarly with cardinal movement. 10:34:51 CakeProphet: oh right that was a thing I was going to ask you about. when I was thinking about bishopmovement/portals 10:35:04 well, for example 10:35:08 if a king goes through a portal 10:35:14 and the out-portal is diagonally facing 10:35:19 then he should come out right in front of it. 10:35:24 no problem. 10:35:41 so 10:35:49 bishopmove attempt to reorient? explosion 10:35:53 maybe things should just always come out on the square adjacent to the portals opening 10:35:56 and then they continue movement from there. 10:36:12 or rookmove attempt to reorient. either way. 10:36:25 OR 10:36:38 maybe they continue along the path the portal points them? as a strategic element. 10:36:49 so a diagonally moving arrow goes through a portal and comes out a portal that's facing in a cardinal direction 10:36:52 at which point it continues cardinally. 10:36:55 and then they're back to normal after stopping movemntn? 10:36:59 yes. 10:37:00 that works 10:37:08 best solution 10:37:14 yes allows for shenanigans. 10:37:44 ....wow these rules are ridiculously complicated. 10:37:59 the implications on this rule is huge 10:38:05 it'll be fun trying to explain it all to my friends. 10:38:27 well it really only affects arrows. 10:38:38 of which there arenot many 10:38:39 :P 10:39:07 if I decide to make something else that isn't a knight-mover or a king-mover 10:39:17 or which doesn't explode upon going through a portal. 10:39:25 then it would follow that rule as well. 10:39:35 i.e., a rook-like could go diagonally. 10:39:51 * itidus21 blinks 10:40:00 now that is hardcore 10:40:14 but there are no rooklikes. 10:40:28 changing the frame of reference of a chesspiece surely doesn't happen a lot 10:40:56 everything is king-like, knight-hop-hop, pawns, or bishop-like 10:41:02 wow. rotating a piece via portal 10:41:39 monqy: also I realized that the whole angle-reorienting stuff is kind of pointless since you can just change directions at the end of the turn anyways. 10:42:08 oh right 10:42:23 that makes it a bit less complicated 10:42:27 should I make re-angling take a whole turn? seems kind of... lame. 10:42:42 it's fine as-is 10:42:49 well this frame of reference thing would be more meaningful in a game with regular pieces 10:43:08 yes but then no projectile shenanigans and loops. 10:43:29 im just imagining pawns rotated to walk to the walls 10:43:36 wat 10:43:39 they change back to normal at turn-end 10:43:40 "walls"? 10:43:42 walls 10:43:42 lol 10:43:48 sorry.. side panels 10:43:51 the chess board is surrounded by infinitely high walls of infinitely thick concrete 10:43:54 "side panels"? 10:43:55 spectator stands of rome 10:43:57 or 10:43:58 wait 10:43:59 what if 10:44:00 you could move 10:44:02 caesar looks on 10:44:02 -between the squares- 10:44:05 along the edges and corners 10:44:11 Patashu: woah dude 10:44:13 actually considering that rome probably never saw chess 10:44:19 changing back to normal at turn end is how you avoid a choice between hidden state and sharpieing your pawns!!! 10:44:35 it wouldn't even make sense for them to continue moving that way afterwards. 10:44:49 GOES AGAINST THE LAWS OF PORTAL CHESS PHYSICS. 10:45:03 glados has infected the system 10:45:19 -!- monqy has quit (Quit: hello). 10:45:37 hmm, I'm picturing a simple 'chess with portals' variant now. 10:46:00 also if you a have a portal adjacent to a king 10:46:11 any time the linked portal can be captured you're in check. 10:46:30 FIDE rules except both teams start with a them-coloured portal on a tile in their third rank. a portal moves to any unoccupied tile. you can move a piece onto a portal and it continues out the other side like the two tiles were in fact right together 10:46:55 or possibly make both portals neutral instead of owned by a side and add 'no repeating an earlier state' as a rule 10:47:04 help where's directionality of portals. 10:47:04 hi I have not tested my game at all 10:47:41 I do find adding a concept of direction to chess to be interesting. 10:47:44 could explore that with other variants. 10:47:51 #esoteric-chess? :P 10:48:10 I assume they'd never be rotated 10:48:13 but you could add that easily 10:48:36 portals have an orientation, you can move it to any tile or change its orientation as your turn. when you go into one portal you look at what its orientation is re: the other one and that's how much it angles by 10:49:02 lolwat 10:49:27 -!- Vorpal has joined. 10:49:28 Patashu is not allowed to write rules for portal chess. 10:49:29 -!- Vorpal has quit (Changing host). 10:49:29 -!- Vorpal has joined. 10:49:30 example, if both portals face north then there's zero difference so you go through unchanged. if one is bent 90 degrees then going through one bends you 90 degrees 10:49:31 oh 10:49:33 well then! 10:49:36 !!!!! 10:49:38 * Patashu storms off in a huff. through a portal 10:49:41 * Patashu closes it behind him 10:49:59 you could have chess with a portal gun 10:50:02 the portal gun is directional 10:50:07 hi 10:50:09 and then fires portals on the infinite concrete walls 10:50:12 i considered portal gun earlier but stayed silent :D 10:50:13 vorpal would probably like my lowbrow style of chess variation <-- oh? 10:50:23 (was the last line I saw before putting computer to sleep) 10:50:53 i haven't completed any though 10:51:08 itidus21, what is your lowbrow style of chess? 10:51:34 he drools on the pieces. 10:51:44 XD 10:51:45 CakeProphet, are there pirates and ninjas too? 10:51:46 lowbrow style of chess makes me think of the version of chess played in...sweden? germany? someplace like that. where you throw a piece of wood underarm across a field and try to hit your enemy's king with it 10:52:02 what if instead of special cases you had pirates and ninjas i would be less angry 10:52:04 Patashu, that isn't chess, that is kubb I think 10:52:08 yes 10:52:08 kubb 10:52:09 Patashu, very different from chess 10:52:21 I might be confusing it with a hhgttg joke 10:52:24 lol patashu 10:52:29 soon I will publish my chess variant and no one will play chess anymore 10:52:35 they will only play PORTAL CHESS!!!!!!111111111 10:52:53 Patashu, I mean, it has nothing to do with chess. Apart from being a game. It is normally played between two teams. 10:53:12 * CakeProphet fantasizes about his future fame as a renowned chess variant writer. 10:53:12 anyway it is from Sweden, I played it once. I suck at it. 10:53:43 spend 10 years becoming a kubb grandmaster 10:53:48 and complain about how no one appreciates this game anymore 10:53:53 heh 10:54:31 Patashu, wikipedia indicates it is common in Germany too at least. 10:55:04 note that Wikipedia says nothing about portal chess. 10:55:29 CakeProphet: if you're checking wikipedia thats because you're afraid of the nasty truths you'll find in google 10:55:33 CakeProphet, and? 10:55:36 (which i havent checked) 10:55:38 http://en.wikipedia.org/wiki/Portal:Chess 10:55:40 not the same. 10:55:44 XD 10:56:10 Vorpal: I'm just revelling in my ego right now having just created something entirely new to the world. 10:56:17 pay no mind. 10:56:30 CakeProphet, sounds like a combination of chess and Portal. 10:56:37 well yes... 10:56:47 CakeProphet: this isn't a competitor... but... worth looking at http://www.youtube.com/watch?v=dav9OyEORk4 10:56:47 new things are usually resynthesized from previous ideas. 10:56:52 but this doesn't make them any less original. 10:57:23 speaking of games, I recently played Bastion. Very impressive game. Innovative. 10:57:41 and it is right up there with Braid in terms of games being art. 11:00:40 CakeProphet: ok heres the first bitter taste of your competition. but don't lose hope too easily. http://blog.chess.com/balifid/portal-chess 11:01:12 -!- Taneb has joined. 11:01:16 it doesn't even have guns though 11:01:23 its not exactly a big threat 11:03:17 http://www.quora.com/How-might-one-add-portals-to-chess -- curious 11:06:42 yeah that doesn't look like a good game. 11:06:53 now this is a badass idea http://www.youtube.com/watch?v=WtcGiZelPfk 11:08:18 bahaha 11:09:17 good game * good game = good game 11:09:41 I think I would be a good game designer actually. 11:09:54 I've done some brainstorming on an Android game I've thought about. 11:09:58 ive been following super mario very closely 11:10:00 kind of a metroid-like game. 11:10:07 but a puzzle game. 11:10:13 so im excited to see a video of super mario with portals 11:10:24 action-puzzle game. 11:10:36 with things like time dilation missiles. 11:10:56 and... other things I haven't thought of. time dilation missiles are basically the main idea I've got. 11:11:28 lemme check my notes... 11:11:43 so combining themes from laserchess with original loops idea with portals and i think it is likely you're onto something original 11:12:31 ....I think this is an original chess variant already. 11:12:46 thats what i meant to say 11:12:46 I will need to playtest it but the game seems pretty complete to me. 11:12:56 i cant find any obvious copies 11:13:21 I didn't even know about laserchess actually. 11:13:37 laser chess is more strictly about bouncing lasers everywhere. 11:13:43 each piece reflects differently. 11:14:19 man I need to sleep. 11:14:24 too much thinking about portal chess 11:14:27 not enough homeworkdone. 11:16:22 "Little known fact: knights in chess travel over other pieces by rocket jumping." 11:17:26 itidus21: also what is L2 11:17:39 -!- oerjan has joined. 11:17:49 2L http://codu.org/eso/2l/README 11:19:43 oerjan: there is now such a thing as portal chess. Obviously you are as excited as I am right now. 11:20:40 well i _do_ have to consider the possibility that the CakeProphet is a lie. 11:21:08 oerjan: no no it's real all the paradoxes cause explosions. 11:21:15 everything is fine. 11:21:16 yay 11:21:20 Does SK do the same as KI in a different way? 11:21:27 Taneb: yes 11:21:35 INTERESTING 11:21:38 ALSO WEIRD 11:21:42 with lazy evaluation, anyhow 11:21:44 :t const id 11:21:45 forall a b. b -> a -> a 11:21:50 :t ap const 11:21:50 forall b a. (b -> a) -> b -> b 11:22:14 in (strict) unlambda they're slightly different in what can be evaluated. 11:22:57 :t ap const (const id) 11:22:58 I'm really thinking in terms of MIBBLLII 11:22:58 forall b. b -> b 11:23:19 :t ap const undefined 11:23:20 forall b. b -> b 11:24:46 see I'm tempted to not listen to monqy and gives knights directionality to their movements 11:25:12 so that the adjacent portals with infinitely teleporting knight situation can't happen. 11:25:47 well, infinitely teleporting prism, which can move like a knight. 11:26:20 Next: Portal Monopoly 11:26:43 yeah... monqy's rule causes more problems than the way I wanted to do it. 11:27:57 so, monqy's rule it is, then? 11:29:04 Which ap is lambdabot's ap? 11:29:18 there's more than one? 11:29:19 the usual one... 11:29:21 @hoogle ap 11:29:21 Control.Monad ap :: Monad m => m (a -> b) -> m a -> m b 11:29:22 Data.Graph.Inductive.Query.ArtPoint ap :: Graph gr => gr a b -> [Node] 11:29:22 Control.Arrow app :: ArrowApply a => a (a b c, b) c 11:30:53 -!- Taneb_ has joined. 11:30:53 "I'd like to be able to apply Arrows to each other." "There's an app for that." 11:31:19 -!- Taneb has quit (Read error: Connection reset by peer). 11:31:22 Control.Monad, I presume? 11:31:25 -!- Taneb_ has changed nick to Taneb. 11:31:33 well yes 11:32:35 arrows are weird. 11:33:43 as far as I understand they're like monads but tuplier 11:35:13 arrows = category + applicative + some extra laws 11:35:25 no bind, unless you have arrowapply 11:35:51 in which case they're equivalent to monads 11:42:02 -!- Taneb has quit (Ping timeout: 252 seconds). 11:42:40 I guess I should play Braid 11:42:46 CakeProphet, yeah it is awesome 11:43:49 -!- pikhq has joined. 11:44:02 -!- pikhq_ has quit (Ping timeout: 260 seconds). 11:44:46 Vorpal: what was the other game someone was talking about? 11:44:54 CakeProphet, Bastion? 11:45:07 no 11:45:10 deadly death something. 11:45:13 minecraft? magicka? Deus Ex? 11:45:18 CakeProphet, oh, dead island? 11:45:23 no 11:45:38 harry potter and the deadly hallows (I heard it was shit) 11:45:53 Vorpal: wow imagine that. 11:46:11 Deadly Rooms of Death 11:46:17 never heard of that 11:46:20 what sort of game is it? 11:46:39 well *googles* 11:46:45 hm, released in 1997 11:56:20 -!- sllide has quit (Ping timeout: 260 seconds). 12:11:53 Vorpal: you've played magicka? 12:12:00 it's a favorite of mine. 12:13:38 -!- hagb4rd has quit (Ping timeout: 260 seconds). 12:25:26 harry potter and the deadly rooms of death 12:25:32 he even gets a Really Big Sword 12:25:46 and has to sm.. sl... well it kind of works! 12:29:06 -!- Taneb has joined. 12:31:16 Does anyone know any combinatory logic system things other than BCKW and SKI? 12:31:23 And Iota's 12:31:59 they're all equivalent anyway :downs: 12:33:06 Taneb: there are a bunch of single-combinator bases, e.g. Fokker's X combinator 12:33:10 ... his paper also has a few alternative single-combinator bases he compares against 12:33:57 and yes, any complete combinatory logic system is equivalent to all the other complete ones 12:34:14 but that doesn't really make it any less interesting 12:42:30 -!- sebbu has quit (Read error: Connection reset by peer). 12:43:35 -!- sebbu has joined. 12:43:35 -!- sebbu has quit (Changing host). 12:43:35 -!- sebbu has joined. 12:45:09 Taneb: there's one without K that is not equivalent but nonetheless TC 12:45:46 Taneb: also, if you look at it the right way, Underload is one 12:47:23 (curry (i think) proved it TC by showing you could approximate K well enough for numbers, or something like that) 12:49:23 oerjan, hm. What do you mean with equivalent if not equivalent computational class? 12:49:41 it cannot express the same lambda terms 12:49:45 ah 12:50:19 http://en.wikipedia.org/wiki/Combinatory_logic#CLK_versus_CLI_calculus 12:52:05 hm, interesting 12:56:20 ?hoogle (a -> a) -> [a] -> [a] 12:56:20 Prelude iterate :: (a -> a) -> a -> [a] 12:56:21 Data.List iterate :: (a -> a) -> a -> [a] 12:56:21 Prelude map :: (a -> b) -> [a] -> [b] 12:57:11 Deewiant: do you want something different from map? 12:57:25 I want to modify the head only 12:57:32 ah. 12:58:05 there is a distinct lack of functions that act separately on head and tail 12:58:20 Data.List.NonEmpty doesn't seem to have it either 12:59:03 :t uncurry (:) . first ?f . splitAt 1 12:59:04 forall a. (?f::[a] -> a) => [a] -> [a] 12:59:10 oops 12:59:37 oh well, it's easy to write 13:00:21 Should it be a noöp or an error on [] 13:01:34 that would depend on your use case, wouldn't it 13:01:53 Just thinking what makes more sense for the general case 13:02:52 noop can easily be converted to the other form 13:03:19 :t uncurry (:) . first (map ?f) . splitAt ?n 13:03:20 forall b. (?f::[b] -> b, ?n::Int) => [[b]] -> [[b]] 13:03:34 er 13:03:38 :t uncurry (++) . first (map ?f) . splitAt ?n 13:03:39 forall b. (?f::b -> b, ?n::Int) => [b] -> [b] 13:04:30 :t uncurry (++) . (map ?f *** map ?g) . splitAt ?n 13:04:30 forall b a. (?f::a -> b, ?g::a -> b, ?n::Int) => [a] -> [b] 13:04:49 moar generaller 13:09:06 -!- sebbu2 has joined. 13:09:09 ?hoogle [a] -> Int -> Ordering 13:09:09 Prelude (!!) :: [a] -> Int -> a 13:09:09 Data.List (!!) :: [a] -> Int -> a 13:09:09 Data.List genericIndex :: Integral a => [b] -> a -> b 13:10:34 :t null . drop n 13:10:35 Couldn't match expected type `Int' against inferred type `Expr' 13:10:35 In the first argument of `drop', namely `n' 13:10:35 In the second argument of `(.)', namely `drop n' 13:10:38 :t null . drop ?n 13:10:38 forall a. (?n::Int) => [a] -> Bool 13:11:51 > map (null . drop 5) ["LESS","EQUAL","GREATER"] 13:11:53 [True,True,False] 13:12:33 -!- sebbu has quit (Ping timeout: 260 seconds). 13:21:36 -!- Taneb has quit (Ping timeout: 252 seconds). 13:57:44 -!- oerjan has quit (Quit: leaving). 14:11:30 I am fucking terrible at combinatory logic 14:11:40 http://www.angelfire.com/tx4/cus/combinator/birds.html 14:11:52 How do I go through the process of evaluating Bluebird ((S(KS))K) to f x y 14:12:14 It should turn it into (f (g x)) since that's what B does 14:12:24 But I have no idea what receives what first and how much of it it wants and blah blah blah 14:12:31 Even thouhg I can look at the page and be like oh, S does this and K does this 14:12:37 My head is fucked by actually trying to do it 14:18:16 -!- Phantom_Hoover has joined. 14:29:53 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .). 15:06:04 -!- sebbu2 has changed nick to sebbu. 15:36:51 -!- MSleep has changed nick to MDude. 15:48:26 -!- azaq23 has joined. 16:01:30 -!- monqy has joined. 16:08:34 -!- Taneb has joined. 16:08:43 Hello! 16:09:13 You know, I almost had the middle name Elliott? 16:10:45 Taneb Elliott Somethingorother 16:12:20 My initials would have been N.G.E.vD. 16:12:52 so mcuh name 16:18:12 Taneb: 's name is now Ngevd. 16:18:15 I have here a record of the songs from Disney's the Jungle Book 16:18:19 -!- Taneb has changed nick to Ngevd. 16:20:08 How do you pronounce your name, Ngevd? 16:23:15 First is a velar nasal 16:23:53 Then an open-mid front unrounded vowel 16:24:13 Then a voiced labiodental fricative 16:24:53 Then a voiced alveolar plosive 16:24:58 Ngevd 16:25:18 Oh good. I was afraid the 'g' might be pronounced independently of the 'ng' 16:25:44 -!- sebbu has quit (Read error: Connection reset by peer). 16:26:38 A bit like ng-ev'd 16:27:32 Does anyone know how to convert an LP into an iPod compatible format? 16:28:07 -!- sebbu has joined. 16:28:29 LP? 16:28:40 You're probably stuck with finding a player with line-out and recording. 16:28:50 If there exist players with line out :P 16:29:10 Shouldn't be too difficult to make 16:29:21 However, I am not one of life's makers 16:29:32 And it probably quite difficult to buy 16:29:53 But how else will I listen to Eagles Greatest Hits Volume 2 while on the move? 16:30:01 http://www.thinkgeek.com/electronics/digital-conversion/c7fd/ 16:30:17 You can probably get these for less than this retarded price too :P 16:30:45 I think there's actually someone near HEXHAM, THE CAPITAL OF ESOTERIC PROGRAMMING who does it for a living 16:31:53 Last summer I converted a bunch of beta tapes to DVD 16:34:22 I've once built the correct analog filter to make a regular line out into something that can be plugged into the "usual" LP player input of an amplifier (because the amplifier in question was from the 1970s or so and didn't really have any sensible "aux" inputs for a computer); the inverse shouldn't be too tricky. 16:35:44 "First, any self-respecting audiophile would be embarrassed to admit using a USB turntable, as there are no high-end models." 16:38:55 And what if you're not an audiophile :P 16:39:33 Then you are unimportant and not worth an answer, I believe. (I'm speaking from the viewpoint of this document, you understand.) 16:39:47 Anyway, you only need about $1000 to do it almost right, that's not too bad. 16:41:14 (Or $100 if you already have a good analog turntable.) 16:41:32 I think there's actually someone near HEXHAM, THE CAPITAL OF ESOTERIC PROGRAMMING who does it for a living 16:41:43 Dude, Helsinki is the capital. 16:41:48 Look at all the Finns here. 16:41:53 How about this: What if the LP format sucks ass, your records have been sitting around for years and are probably scuffed anyway, and audiophiles are retardedly trying to preserve what amounts to white noise? 16:43:49 -!- impomatic has joined. 16:43:53 Hi :-) 16:46:53 impomatic: Let us discuss the correct procedure for converting LP -> FLAC 16:48:11 The correct procedure is: you put the LP into a flatbed scanner, scan it as a Windows .bmp file, and then rename that file to .flac. 16:49:46 *clap clap* 16:50:08 `addquote Let us discuss the correct procedure for converting LP -> FLAC The correct procedure is: you put the LP into a flatbed scanner, scan it as a Windows .bmp file, and then rename that file to .flac. 16:50:10 669) Let us discuss the correct procedure for converting LP -> FLAC The correct procedure is: you put the LP into a flatbed scanner, scan it as a Windows .bmp file, and then rename that file to .flac. 16:50:54 What? It's lossless! 16:52:34 no it isn't. The scanner will introduce some noise 16:52:44 at the very least some thermal noise 16:53:21 and even if you get rid of that you have various quantum noise thingies 16:56:37 No, no, it's called "free LOSSLESS audio codec". 16:56:54 What's LP, apart from "Limited Process"? :-) 16:57:22 Long Playing 16:59:13 impomatic, which in this case refer to a type of gramophone record 17:02:06 -!- ive has joined. 17:11:54 -!- impomatic has quit (Quit: impomatic). 17:12:09 We really need better terms for degrees of lossiness. 17:12:23 Since it's not the /format/ that causes loss, it's the /conversion/. 17:12:45 FLAC is lossless, but converting from an LP can't be, GIF is lossless but only supports a 256-color palette ... 17:22:06 Assuming we're inside a simulation anyway, converting from an LP sure can be lossless. 17:32:15 * Phantom_Hoover ponders again the perennial question of what ais' middle name is. 17:42:03 Phantom_Hoover, does it matter? 17:42:34 Phantom_Hoover: Irene. His parents ... they weren't so good with names. 17:43:21 fizzie, why? What if the simulation runs on a analogue computer? 17:43:39 Gregor, not implausible, given that he did say that his parents gave both him and his brother gender-neutral names, although not his sister. 17:44:33 My guess is "I-don't-have-a-middle-name" is his middle name. 17:45:01 "Irene" is not a gender-neutral name :P 17:47:40 -!- SgeoN1 has joined. 17:47:56 You should become a magical girl. 17:48:16 ... who? 17:48:31 EEEEEEEEEEEEEEEEEEEVERYONE 17:49:35 -!- Ngevd has quit (Ping timeout: 276 seconds). 17:49:38 Lymee, aha, your sock is revealed! 17:50:20 I don't understand windows IO handling. When windows is under heavy disk load, other programs that seemingly should not need to access the disk respond slowly too, that doesn't happen under linux. 17:50:24 same disk too 17:50:33 so wtf 17:50:56 My what? 17:56:03 -!- Phantom_Hoover has quit (Ping timeout: 260 seconds). 18:02:34 -!- Taneb has joined. 18:06:10 Oh yeah, I changed my name 18:06:14 -!- Taneb has changed nick to Ngevd. 18:06:22 Welcome back, Ngevd! 18:19:26 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 18:24:11 -!- elliott has joined. 18:24:18 Deewiant: http://hackage.haskell.org/packages/archive/bifunctors/0.1.2/doc/html/Data-Bifunctor-Apply.html 18:24:27 There's your (three ampersands) 18:24:49 f [three ampersands] g == ((f,g) <<.>>) 18:25:13 Yeah I noticed that earlier today 18:25:25 Deewiant: Hideous name though 18:25:30 I also filed a bug about the fact that his definitions aren't as lazy as Control.Arrow's 18:26:17 And here I am thinking I'm a genius for realising that what you wanted were essentially Biapplicatives, going to check bifunctors for a detail I needed to write them down, and then noticing they were already there :P 18:26:31 Still need Trifunctors though right??? 18:26:42 Also it's missing `both`. :p 18:27:11 join (uncurry (<<.>>)) 18:27:47 Deewiant: Yes, which is not nice to use 18:28:03 Thus giving it a name :-P 18:28:17 Yep :-P 18:28:41 It'd be nice if Data.Bifunctor.Apply exported bilift = (<<.>>) 18:28:46 -!- ais523 has joined. 18:28:51 Or at least I wouldn't want to write ((f,g) <<.>>) 18:29:27 http://hackage.haskell.org/packages/archive/bifunctors/0.1.2/doc/html/Data-Bitraversable.html Prize to the first person to find a use for these :P 18:29:52 Why do electronics disintegrate in my hands? 18:30:43 Deewiant: But I was thinking (before I realised all this) that I could snap up the "combinators" name on Hackage, since it's not taken; then I could include nice things like (.:) too. 18:30:58 And names for flip (.) and flip ($). 18:31:04 How cunning 18:31:14 I detect sarcasm 18:31:53 Well, more sinful than cunning 18:32:06 What part is sinful 18:32:10 Claiming the combinators name? 18:32:11 "combinators" 18:32:18 Nothing should be called that :-P 18:32:32 Got a good old email account phishing mail 18:32:39 Completely generic 18:32:50 Deewiant: What would you call something that defined all the birds in To Mock a Mockingbird, except with reasonable names so they're not birds 18:32:59 birdlike-combinators 18:33:07 When people reply, is there database automatically or manually filled? 18:33:11 Deewiant: I UNBIRDED THEM 18:33:30 What would happen if I said my password is FUCKPHISHERS 18:33:52 elliott: http://esoteric.voxelperfect.net/wiki/User:Ncrazyj isn't as good as some of the spam we've been getting, but I'm about to delete it, so if you care about saving a copy you'd better look now 18:34:34 thank you kindly 18:35:50 can I delete it now, then? 18:36:03 Absolutely not. (Yes, I doubt I can stop you anyway.) 18:36:11 (diff) (hist) . . N Talk:Brainlove‎; 23:47 . . (+102) . . Maharba (Talk | contribs) (New page: Don't let User:Phantom Hoover see this. —~~~~) 18:36:12 Sage words 18:36:24 I was hoping the word love would keep him away... --Aptennap 07:14, 18 September 2011 (UTC) 18:36:26 NOTHING CAN SAVE YOU 18:36:47 I raged at it in-channel 18:37:13 although not very hard, as raging ais523 looks much the same as normal ais523 18:37:15 We need to seriously deincentivise the creation of BF derivatives somehow. 18:37:17 -!- mycrofti1 has changed nick to mycroftiv. 18:37:29 Like, if you make a brainfuck derivative, you have to provide a translation of your page in Swahili. 18:37:33 well, it's not like all these BF derivatives hurt anyone 18:37:36 -!- derdon has joined. 18:37:41 and it helps get their authors into esolangs 18:37:45 ais523: They hurt me. 18:39:18 Do MIBBLLII and I hate your bf-derivative I really do count as branfuck derivatives? 18:39:46 I liked I hate your bf-derivative I really do before it turned out that the author actually likes BF derivatives 18:39:52 :( 18:41:24 21:52:17: bleh, a search for "which punctuation marks are uppercase?" gave me no results 18:41:27 ais523: try ask jeeves 18:41:35 21:57:59: Is there any standard function for "foldr (.) id"? 18:41:38 haha, I forgot that existed 18:41:42 > ala Endo foldMap [succ, succ] 99 18:41:43 Not in scope: `foldMap' 18:41:46 > ala Endo mconcat [succ, succ] 99 18:41:46 Couldn't match expected type `(a -> a) -> Data.Monoid.Endo a' 18:41:47 again... 18:41:48 > mconcat [succ, succ] 99 18:41:49 Ambiguous type variable `a' in the constraints: 18:41:49 `Data.Monoid.Monoid a' 18:41:49 ... 18:41:53 >_< 18:41:55 wrong intsance 18:41:56 ok wait I forget... 18:42:04 hmm 18:42:10 :t mconcatMap 18:42:11 Not in scope: `mconcatMap' 18:42:13 IIRC it's just an alias for some other search engine, but I'm trying it anyway 18:42:18 > ala Endo (mconcat . map) [succ, succ] 99 18:42:19 Couldn't match expected type `[b -> n']' 18:42:19 against inferred type `[a ... 18:42:29 > ala Endo (const mconcat) [succ, succ] 99 18:42:30 No instance for (Control.Newtype.Newtype (a -> a) (t -> a1)) 18:42:30 arising fro... 18:42:32 ?hoogle concatMap 18:42:32 :t ala 18:42:32 Prelude concatMap :: (a -> [b]) -> [a] -> [b] 18:42:32 Data.ByteString concatMap :: (Word8 -> ByteString) -> ByteString -> ByteString 18:42:32 Data.Foldable concatMap :: Foldable t => (a -> [b]) -> t a -> [b] 18:42:33 forall o n b n' o'. (Newtype n o, Newtype n' o') => (o -> n) -> ((o -> n) -> b -> n') -> b -> o' 18:42:39 ?hoogle foldMap 18:42:39 Data.Foldable foldMap :: (Foldable t, Monoid m) => (a -> m) -> t a -> m 18:42:39 Data.Traversable foldMapDefault :: (Traversable t, Monoid m) => (a -> m) -> t a -> m 18:42:44 > ala Endo Data.Foldable.foldMap [succ, succ] 99 18:42:44 101 18:42:47 there we go 18:42:49 monqy: http://hackage.haskell.org/packages/archive/newtype/0.2/doc/html/Control-Newtype.html 18:43:00 oh wow, one of the results was even relevant 18:43:16 ais523: nice 18:43:20 not very /good/, but relevant: http://typophile.com/node/60376 18:43:56 oh, oerjan started working this out later on 18:44:32 22:59:14: data Many a = One a | Many (Many a) 18:44:40 CakeProphet: this is the partial computation monad 18:45:04 CakeProphet: also known as resumption 18:45:08 23:01:08: count (One a) = 1; count (Many a) = 1 + count a 18:45:14 that counts the number of steps needed to complete the computation 18:45:21 23:01:54: also it's isomorphic to that delayed monad thing 18:45:21 yeah 18:47:07 23:32:12: hmm, idea my supervisor had for sandboxing OCaml (whilst preventing uses we don't want of the standard library): reject all mentions of modules other than Pervasives, combined with rejecting the stuff in Pervasives we don't want them to use 18:47:15 ais523: that's basically a one-time hack version of SafeHaskell :P 18:47:20 which is in latest ghc 18:47:34 hmm, glad to know the idea isn't completely stupid 18:47:48 I may put a prctl() on there just to make sure 18:47:54 ais523: just use UMLBox, dude 18:47:59 it's a simple "make" to build 18:48:00 I wonder if it's possible to run OCaml in one of those? 18:48:07 and you can disable all file access 18:48:12 and just use nice and sleep to handle the rest 18:48:19 five line shell script 18:48:28 no OCaml module hacks required 18:50:15 -!- copumpkin has joined. 18:50:23 ais523: no? 18:51:11 00:56:27: haha, INTERCAL will have that feature all to itself now! <-- i thought you were referring to CTCP SOURCE here 18:51:11 00:56:40: no, to putting expressions on the LHS of an assignment 18:51:15 ais523: the only thing gone is n+k patterns 18:51:23 you can still redefine (+) locally just fine 18:51:33 INTERCAL reverse assignments work like n+k patterns 18:51:36 just, on anything 18:52:07 (as long as it doesn't use the same variable or constant twice, e.g. .1$.1 <- #1$#2 isn't going to work well) 18:52:18 that's just finding a fixed point 18:52:29 01:05:53: Surely IRC doesn't predate URLs ... 18:52:29 URLs: 1994; IRC: 1988 18:52:30 Gregor: so yes it does 18:53:04 hmm, now I'm wondering when the Web was invented 18:53:22 1989 18:53:36 ah, now why it requires an FTP server location makes a lot of sense 18:53:37 Sheesh, I was just about to tell you. 18:53:48 The web only went public in 1990 anyway. 18:54:32 It was invented by someone from Hexham 18:54:37 Well, it wasn't 18:54:41 Same country 18:54:54 -!- elliott has quit (Read error: Connection reset by peer). 18:55:00 -!- elliott has joined. 18:56:03 01:32:20: * SgeoN1 badmoods 18:56:03 not a verb 18:56:58 01:50:55: intesting is _not a word_ 18:56:58 it's what intestines do 18:57:06 what's up intestines? oh nothing, just intesting 18:58:18 `addquote :D :D oh man.. i wonder if they ever made chess variants based off of animes 18:58:19 670) :D :D oh man.. i wonder if they ever made chess variants based off of animes 18:58:36 it is a good quote 18:59:36 02:55:59: is suicide chess anything like strip chess 18:59:36 suicide strip chess 19:00:06 intercal x_x 19:00:10 hi 19:00:33 what's wrong with INTERCAL? 19:00:46 ais523: tiffany just says random words at random times followed by x_x, as far as I can tell 19:00:53 "A Sieve of Eratosthenes benchmark, computing all prime numbers less than 65536, was tested on a Sun SPARCStation-1. In C, it took less than half a second; the same program in INTERCAL took over seventeen hours.[6]" 19:01:01 how does that even 19:01:05 ah yes, now we finally know what's wrong with intercal 19:01:07 it's slower than C 19:01:16 Noooo! 19:01:17 ais523: make C-INTERCAL produce faster programs and it'll be a great language 19:01:33 intercal uses <- for assignment 19:01:35 squirrel does too 19:01:36 ;-; 19:01:36 elliott: C-INTERCAL is substantially faster, I remember running the same program a year ago 19:01:48 tiffany: congratulations you've figured it out 19:01:59 why intercal is a Bad Language 19:02:00 that's the other bad thing about intercal, using <- to assign 19:02:01 x_x 19:02:03 well, there are only that many plausible syntaxes for assignment 19:02:11 really, INTERCAL's expression syntax needs redoing 19:02:11 RUINED FOREVER 19:02:18 I'm really happy with the control flow 19:02:26 it's not a bad thing 19:02:30 but the expressions, while interesting, are just obstructive for no good reason (other than being INTERCAL) 19:02:37 I honestly prefer <- over = for assignment of mutable variables 19:02:49 it's that a programming language that i used to like a lot uses <- for assignment, which a parody language also uses 19:03:00 oh no 19:03:08 squirrel uses variable <- value; and local variable=value; 19:03:11 isn't squirrel that boring game extension languages 19:03:18 yes languages PLURAL 19:03:23 squirrel's a 6k interpreted language 19:03:29 used in the source engine 19:03:31 and other thingies 19:03:37 I remember squirrel being a boring game extension language last I checked 19:03:45 I'm a fan of having separate "define initial (and thus eventual) value of immutable variable" and "assign to memory pointed to by variable name" operators 19:04:15 mm 19:04:31 most commonly, languages which make the distinction call them = and := 19:04:40 tiffany: but does that make it interesting 19:04:48 tiffany: so yes then 19:04:53 the interpreter being 6k and used in places 19:05:07 I think I've grown closer to javascript 19:05:08 i briefly considered using squirrel for mcmap i think but i didn't because it was bad 19:05:15 oh well not as bad as javascript certainlt 19:05:16 y 19:05:22 heheheh 19:05:23 I was bored and wrote a 3D renderer with it using canvas and kind of like it 19:05:31 6k's quite big for an interp 19:05:37 6k lines of code? 19:05:42 isn't lua like 50k? 19:05:49 if you're aiming for small interp size 19:06:02 I wrote a super basic programming language in 40 lines of lua once 19:06:09 rather than speed or clarity of input 19:06:39 03:02:44: Type of classInstances is classInstances :: Name -> [Type] -> Q [Name] different from the documentation, and the code producing error is $(classInstances ''Num [ConT ''Integer] >>= reify . head >>= runIO . print >> [| 0 |]) 19:06:41 not a bug 19:06:44 you're using an older GHC/TH 19:06:50 http://hackage.haskell.org/packages/archive/template-haskell/2.5.0.0/doc/html/Language-Haskell-TH.html has the correct type for that version 19:07:08 does zzo logread 19:07:16 ?tell zzo38 the docs for classInstances aren't broken; you're just using an older GHC. see http://hackage.haskell.org/packages/archive/template-haskell/2.5.0.0/doc/html/Language-Haskell-TH.html for the documentation of your version 19:07:16 Consider it noted. 19:07:34 my record for small interp is 14 bytes (http://esoteric.voxelperfect.net/wiki/MiniMAX), but it doesn't do I/O and the source is in binary 19:07:35 -!- Ngevd has quit (Ping timeout: 276 seconds). 19:07:48 ._. 19:08:15 there's a 36-byte one by someone else which avoids both issues 19:08:35 -!- rottytooth has joined. 19:08:38 03:07:17: OK, I managed to report bug now 19:08:38 do I have to comment /there/ too? 19:08:40 http://esoteric.voxelperfect.net/wiki/MinISCule 19:08:45 hmm, rottytooth rings a bell 19:08:53 but I'll `? welcome all the same 19:08:54 `? welcome 19:08:55 Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page 19:09:04 thanks `? welcome 19:09:04 Hi there 19:09:41 oh, he had an actual bug 19:09:43 compiler panic 19:09:48 hmm, seems calamari's website is down 19:09:59 what ghc version though maybe it was fixed?? who knows..... 19:10:06 7.0.3 19:10:34 elliott: valgrind panics and reports a bug when running in the Secret Project 19:10:37 hmm, I should probably use enumerators for this 19:10:58 but that's probably just an effect of the Debugger Repulsion Field 19:11:00 ais523: did you report it? 19:11:03 no 19:11:07 lame :P 19:11:39 I'm not convinced the Secret Project counts as a supported platform 19:12:50 04:09:19: no, most programming (and proof assistants) model an intuitionist (constructive) logic 19:12:57 copumpkin: you can always just add LEM as an axiom 19:13:16 and stop being able to compute things 19:13:18 which one's LEM? 19:13:24 A or NOT A 19:13:28 aha 19:13:35 you're right 19:13:51 now I'm wondering what the double negation shift looks like in Curry-Howard 19:13:54 elliott: it's fine as long as you're only thinking about truth of statements 19:14:07 but if you ever want to deal with anything algorithmically it's pretty useless 19:14:25 (a basic rule of computer science seminars is, if you ever see someone write f(¬¬A) = ¬¬f(A) on the whiteboard, you run) 19:15:16 hmm, OISCs are always going to win, in general, on compiler/interp size, right? 19:15:25 as in, a simple OISC will beat a simple more-instruction-set-computer 19:15:28 not necessarily 19:15:34 ByteByteJump splits into two instructions fairly easily, IIRC 19:15:36 and a complex one will typically beat a non-OISC of similar complexity 19:15:41 that might be simpler than implementing the combined one 19:15:54 because lots of OISCs are basically two instructions in disguise 19:16:01 http://esolangs.org/wiki/ByteByteJump#The_two-instruction_ByteByte.2FJump 19:16:10 depends on what you're implementing it in ofc 19:17:05 04:14:52: Wikipedia does mention "Correspondence between classical logic and control operators", it has to do with continuations, apparently. 19:17:05 v 19:17:06 http://okmij.org/ftp/Computation/lem.html 19:19:55 ais523: quick, what's a Perl script to print if I have two newlines at the end of a file? 19:20:00 as opposed to just one terminating newline 19:20:12 to check for double-newline at the end of a file? 19:20:13 -!- Taneb has joined. 19:20:45 yes 19:20:54 umm... "undef $/; $_=<>; print "ends with double newline\n" if /\n/\n$/s 19:20:56 " 19:20:58 "Haskell frameworks -vs- Arc for web apps" oh no, someone let the kids into /r/haskell :/ 19:21:05 err, I screwed up the quoting the program onto IRC 19:21:11 undef $/; $_=<>; print "ends with double newline\n" if /\n/\n$/s; 19:21:12 there we go 19:21:13 thx 19:21:16 I think, at least, it's untested 19:21:17 people still care about arc? 19:21:33 people cared about arc? 19:21:33 Backslash found where operator expected at -e line 1, near "/\n/\" 19:21:33 (Missing operator before \?) 19:21:33 syntax error at -e line 1, near "/\n/\" 19:21:33 Substitution pattern not terminated at -e line 1. 19:21:34 :-P 19:21:40 just need to remove the extra / 19:21:42 undef $/; $_=<>; print "ends with double newline\n" if /\n\n$/s; 19:21:46 it's actually an extra / 19:21:52 oh right, that's what yous aid 19:21:55 *you said 19:22:13 just assume I'm drunk, it's simpler 19:22:17 (I'm not, but I get this way anyway sometimes) 19:22:41 I need to change my nick permanently 19:22:48 -!- Taneb has changed nick to NGEvD. 19:22:53 ngevd 19:22:59 taneb: why 19:23:01 -!- NGEvD has changed nick to Ngevd. 19:23:19 whos taneb 19:23:22 taneb is nicer than ngevd imho 19:23:24 as 19:23:25 a name 19:23:37 :t "Ping" 19:23:37 [Char] 19:24:07 "I see you didn't list javascript. For prototyping, it's hard to imagine how another existing language would make it much faster as it can be done with jQuery currently." 19:24:15 jQuery: a good language to develop web apps in 19:26:04 -!- Ngevd has quit (Remote host closed the connection). 19:26:19 bye ngevd 19:26:24 rip ngevd 19:26:25 died as he lived 19:26:29 ngevd 19:27:18 hmm, there are too many iteratee libraries :'( 19:27:36 :( 19:28:14 -!- Ngevd has joined. 19:28:32 i cannot decide between iteratee, enumerator, and iterIO :'( 19:28:58 Right, Ngevd is what I am called on IRC now 19:29:05 Unless I change it 19:29:11 im dont like ngevd 19:29:13 whym not taneb :( 19:29:16 Taneb|Kindle doesn't like it 19:29:23 ngevd|kindle 19:29:23 why doesnt, he like it 19:29:52 whym doesnt 19:29:54 he like it 19:29:55 :'( 19:29:56 Awkward to type on a Kindle 19:30:23 and 19:30:24 ngevd isn't 19:30:53 No, Ngevd is 19:30:55 Taneb isn't 19:31:02 oh 19:31:03 -!- dell has joined. 19:31:04 this sounds 19:31:07 like superiority for taneb 19:31:08 hi dell 19:31:09 `? welcome 19:31:10 Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page 19:31:50 i have simply dropped the idea of llvm-bf converter....i think asm-bf will be awesome! 19:31:52 ? 19:32:07 oh 19:32:09 were you dell last time 19:32:13 i think you had a different nick then 19:32:13 asm? 19:32:15 hmm, that seems like a decent idea 19:32:18 although could be difficult 19:32:26 ais523: oh, i told dell to talk to you about gcc-bf, they were asking about it 19:32:41 they wanted to do llvm-bf and I said to talk to you because you had considered it 19:32:41 etc. 19:32:47 ais523:real mind fucker project 19:32:48 but I guess that doesn't matter now if... what is asm-bf 19:32:56 are you trying to convert xeightsix asm into bf 19:32:57 assembler to brainfuck 19:33:01 which assembler 19:33:02 x86 19:33:05 ah 19:33:07 good 19:33:08 really, BF isn't that bad, despite its name 19:33:10 luck with that 19:33:21 although x86 is possibly going to make life hard for yourself 19:33:28 -!- Nisstyre has quit (Ping timeout: 260 seconds). 19:33:35 that makes it easier to drop, which is a good quality in projects 19:33:35 I wonder what the simplest asm would be? Redcode? 19:33:40 ais523: OISC, duh 19:33:42 i find llvm a little too complex to parse 19:33:47 dell: LLVM has an API... 19:33:49 I don't consider OSICs to be asms 19:33:59 you could just write a backend the proper way 19:34:01 like ais523 was doing with gc-cbf 19:34:03 gcc-bf 19:34:08 elliott: I looked into llvm-bf 19:34:18 LLVM makes so many assumptions that aren't true about BF, I was heartbroken 19:34:25 whereas gcc tries not to 19:34:32 ais523: however hard it is, doing it by manually parsing LLVM IR is never going to be easier than writing a backend 19:34:34 admittedly, the code doesn't actually /work/ 19:34:42 elliott: right, that much is obvious 19:34:45 so I didn't need to comment on it 19:35:01 and just argued with the most recent statement that wasn't 19:35:18 -!- Ngevd has quit (Read error: Connection reset by peer). 19:35:18 -!- Ngevd_ has joined. 19:35:35 what was that statement? 19:35:49 I already told dell that you considered llvm-bf more of a pain to do than gcc-bf 19:35:53 last time they were here 19:35:57 -!- zzo38 has joined. 19:36:02 that llvm was worth using at all 19:36:40 LLVM is better designed than C, in my opinion. 19:36:40 zzo38: You have 1 new message. '/msg lambdabot @messages' to read it. 19:36:52 @messages 19:36:52 elliott said 29m 36s ago: the docs for classInstances aren't broken; you're just using an older GHC. see http://hackage.haskell.org/packages/archive/template-haskell/2.5.0.0/doc/html/Language- 19:36:52 zzo38: I'm not sure that's a good comparison 19:36:52 Haskell-TH.html for the documentation of your version 19:37:24 it's like comparing gcc's internal intermediate representation with ADA 19:37:30 *Ada 19:38:06 I think Ada is better than cheese. 19:38:30 these days i get involved in college crap so much that not getting enough time 19:38:53 ais523: What I mean is, with a good macro system and literate programming environment, I think LLVM would be a good programming language to program in, instead of being limited to C. 19:38:59 i am still wondering whether to do this in python or C 19:39:08 do it in asm MORE HARDCORE YEAAAAAAAAAAAAAAAAAAAAAH 19:39:10 dell: Doing what in Python or C? 19:39:17 zzo38: I don't, it'd be rather inflexible and nonportable 19:39:23 x86 asm to bf 19:39:47 I suppose you could write it in 32-bit LLVM 19:40:01 dell: C is a really inappropriate lang for that, and Python is almost as bad 19:40:16 I don't think I'd consider doing that in anything other than a functional language 19:40:19 although, I wouldn't really consider it at all 19:40:27 haskell ocaml 19:40:30 dell: If you're gonna do an ASM->BF, may I recommend MIPS. 19:40:35 FORTH 19:40:43 elliott: oh, Haskell and OCaml are both pretty similar for that sort of thing 19:40:46 I AM CURIOUS 'BOUT SOMETHING 19:40:56 even though they're different languages in general 19:40:58 Ngevd_: How you got that stylish underscore? 19:40:58 Gregor: He's set on x86, since that is surely easier than the LLVM-BF he's given up on. 19:41:04 elliott: lol 19:41:08 What do pythonbashers generally think of Boo? 19:41:15 they generally haven't heard of it 19:41:22 at least, if you count me as the main Pythonbasher here 19:41:25 Ngevd_: Mostly, "wtf is Boo" 19:41:46 i looked at boo once it is so boring 19:41:55 it's PYTHON... but SLIGHTLY DIFFERENT... 19:41:57 and ONLY FOR .NET 19:42:02 THIS IS WHAT THE WORLD NEEDS 19:42:05 It's strongly typed python, essentially 19:42:12 Yeah, "for CLI" pretty much means "I love sucking Microsoft's cock" 19:42:14 oh is it strongly typed 19:42:17 Sooooooo, a big no on that one. 19:42:20 it's PYTHON... but SLIGHTLY BETTER 19:42:21 my objections to Python have pretty much nothing to do with its typing discipline 19:42:31 there's a place for both statically and dynamically typed languages 19:42:40 a, b = 0L, 1L #The 'L's make the numbers double word length (typically 64 bits) 19:42:40 as opposed to "bignum", like Python 19:42:42 this is kind of like Erlang 19:42:47 let's use all of Prolog's syntax but none of its semantics 19:42:50 (I sort of subscribe to the viewpoint that "strongly typed" has been used to mean so many different things that it's meaningless) 19:43:15 ais523: IMO, the place for dynamically-typed languages is as a subset of statically-typed ones 19:43:26 static and dynamic typing are basically two completely different things, anyway 19:43:29 comparing them is near-meaningless 19:43:40 if statements are a kind of dynamic typing, really 19:44:18 I like to call dynamic types "monoidal programming" 19:44:22 for compiled languages, the distinction is easy: a statically-typed language is one where, after compilation, you can take any variable in the program and know what type it is without having to actually run the program 19:44:39 languages are not compiled 19:44:44 implementations are 19:45:33 well, yes 19:45:48 languages that can reasonably directly be compiled then, I guess 19:45:57 But one thing I think missing in LLVM is explicit unions. You can still do unions by what it has, but I would prefer an explicit type for unions (this can also allow certain optimizations and analysis to be done) 19:47:00 -!- dell has quit (Quit: Leaving). 19:48:16 You could check many things at runtime, even in a system that doesn't actually have pointers, by representing a pointer by an object ID and offset. Object IDs are garbage collected. If you try to dereference a pointer with an invalid offset or invalid object ID, you get an error message. Same thing when using unions incorrectly. You can use it for both static and dynamic analysis. 19:52:14 -!- Nisstyre has joined. 19:55:38 -!- Ngevd_ has quit (Read error: Connection reset by peer). 19:59:15 Hey Vorpal, you get to be the substitute fizzie 20:02:07 -!- sllide has joined. 20:02:25 Pah 20:03:40 -!- Ngevd has joined. 20:03:43 ais523: Go wake fizzie up 20:04:04 how? it's not like he's in the room 20:04:21 Well then find the room he's in and be in it so that you can wake him up 20:04:29 he'd probably wake up naturally first 20:04:43 That's for the universe to know and you to find out 20:07:46 Hmm, seems nobody really uses iterIO 20:07:52 But maybe everyone is just a bad person??? 20:08:08 -!- Ngevd has quit (Ping timeout: 252 seconds). 20:10:55 monqy: Hey, pick the library for me. It is your duty. 20:12:48 :( 20:12:55 i know nothjing about their diffierences 20:13:05 never even heard of the ones that aren';t iteratee 20:13:12 Well, it's pretty much between enumerator and iterIO :-P 20:13:20 enumerator is like iteratee but more things use it and it's simpler. 20:13:23 iterIO is different. 20:13:35 And has a lot of seeming advantages, e.g. http://www.scs.stanford.edu/~dm/iterIO/, http://hackage.haskell.org/packages/archive/iterIO/0.1/doc/html/Data-IterIO.html 20:13:43 But I do not know :'( 20:14:04 "Because of CPS, iteratee should be capable of delivering the best performance of the three iteratee packages. A disadvantage of iterIO's approach is that every invocation of lift must be propagated all the way up the call chain, where a small amount of overhead is added for each enclosing catchI or similar call. While iterIO can handle most successful IterR outcomes and caught exceptions locally without popping back up the call stack, there is a 20:14:04 lso potentially overhead from actually checking that the outcome was successful at each bind site. (GHC's inliner may be able to avoid the check in some cases.) 20:14:04 However, iteratee lacks several features of iterIO; offering these features would likely reduce the benefits of CPS and complicate code. For instance, there is no way to execute a pure iteratee without monadic actions (the benefit touted above and described below for LL(*) parsing). Moreover, iteratee's exception mechanism discards the current location in the input stream, making it unsuitable for failed parse alternatives. IterIO provides a gene 20:14:10 ral control mechanism to make arbitrary requests from enumerators (such as seek, tell, getpeername, get SSL information, etc.); iteratee instead overloads the exception mechanism for control purposes, which prevents control operations from returning values. Thus, while iteratee can implement seek, it cannot, for instance, implement tell. 20:14:14 The enumerator package's approach is closer to iterIO's, but makes every iteratee into a monadic action in the underlying monad m: 20:14:17 -- From the enumerator package: 20:14:18 newtype Iteratee a m b = Iteratee { runIteratee :: m (Step a m b) } 20:14:21 Here Step is similar to iterIO's IterR type, but the m wrapper disallows iterIO's LL(*) parsing tricks. It also causes gratuitous invocation of m's bind function, which can be expensive when using stacks of monad transformers. Furthermore, enumerator discards the input state on all errors, making it impossible to resume from failures that leave the input in a known state (such as a parsing lookahead failure) 20:15:37 " 20:16:01 iterIO looks like a Fancy Better thing but I don't know if I should use it since it only has one release and nobody else has used it... 20:16:39 that is not a good reason not to use it????? maybe???????? 20:16:49 monqy: but it might have lots of bugs :( 20:16:55 Whereas enumerator is used in a lot of high-profile packages like Yesod 20:17:07 maybe iterIO will be really slow or something... 20:17:23 Hey Vorpal, you get to be the substitute fizzie <-- ? 20:17:51 Vorpal: Turns out I could answer my own question 20:17:54 Well, maybe 20:18:05 I was wondering how many packets a Minecraft client would send before it waits for the server to respond before sending any more 20:18:09 And I think the answer is just the login packets 20:18:43 I'm not going to be non-away today, sorry. 20:18:56 (Today I've been mostly Portal.) 20:19:26 So irresponsible. 20:19:29 My guess is also that it just sends the login, if you have a completely quiet server. 20:19:35 Your people NEED you. 20:20:06 Don't know about the case where you have a server that goes non-responsive in the middle of the game; in that case I think it might keep on sending movement stuff until some sort of a timeout. 20:23:58 fizzie: The usecase is pretty much "testing my client parser stuff before writing the server packet code". :p 20:24:07 Whereby code, I mean "protocol.txt-alike". 20:24:13 -!- sllide has quit (Ping timeout: 260 seconds). 20:24:21 So I think I'll just write the server stuff. 20:24:54 -!- oerjan has joined. 20:25:15 heloerjan 20:25:29 `log hell?oerjan 20:25:33 2011-09-18.txt:20:25:15: heloerjan 20:25:50 *gasp* 20:25:53 :( 20:25:54 `log hell?oerjan 20:25:56 `pastelogs hell?oerjan 20:25:57 i swear ive done it before 20:25:57 2011-09-18.txt:20:25:33: 2011-09-18.txt:20:25:15: heloerjan 20:25:59 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.22953 20:26:01 ais523: so cheating 20:26:07 2011-08-31.txt:20:45:31: heloerjan 20:26:09 :') 20:26:11 `log `log 20:26:12 Mmmmm ... no. 20:26:16 >:c 20:26:22 I'll get you next time. 20:26:25 2011-08-31.txt:20:45:31: heloerjan 20:26:26 2011-09-18.txt:20:25:15: heloerjan 20:26:29 once before 20:26:30 Lymee: HackEgo doesn't like talking to you any more. 20:26:37 ais523: yes, that's what I just quoted :P 20:26:45 does `log `log not work anymore? 20:26:55 I was wondering about it 20:27:02 -!- Ngevd has joined. 20:27:04 but I think there's just some anti-Lymia feature 20:27:07 too bad there is no way to find out 20:27:12 just like the bots don't talk to each other 20:27:15 Hello! 20:27:20 hi 20:27:21 `log fungot 20:27:22 hello 20:27:22 ais523: mr president, mrs soltwedel-schfer, perhaps i might continue with the member states, including austria. only by doing so the commission is not allowed to be marketed. this parliament has judged the customs union the economic benefits of the use of the best food industries in the same way as heterosexuals. nor can you say who is to carry out an analysis of the market. 20:27:25 2010-05-02.txt:17:50:20: http://git.zem.fi/fungot/blob/HEAD:/fungot.b98 20:27:26 ais523: it's an ignore list 20:27:30 `log `log 20:27:32 still works 20:27:34 2011-09-17.txt:13:54:08: `log recogni 20:27:35 see what I mean? fungot didn't respond to hackego's mention of its name 20:27:36 ais523: as to the " no" campaign was not pushing for a " no" to drugs and arms, which originates with this criminal structure in fnord that is alleged to have been in the vanguard for change as mr martens said, but it was, but she has managed to flout the treaty and widened in the concept of reducing the emission of greenhouse gases ( of which parliament forms a part of these amendments were adopted by the iter. i shall only gi 20:27:54 ^ul (`log ^ul)S 20:27:54 `log ^ul 20:27:58 No output. 20:27:58 "the " no" campaign was not pushing for a " no" to drugs and arms" 20:28:02 elliott: You could of course dump-to-a-file a mcmap session (it's just one line: "fwrite(net_dpacket.p->bytes, 1, net_dpacket.p->size, clientdumpfile);" in the PACKET_FROM_CLIENT case of proxy.c) and then test your thing with nc localhost 26655 < blah.dump. But since you need to do both directions at some point anyway... 20:28:02 just say no to legs 20:28:08 hmm, although hackego does respond to fungot, it seems 20:28:11 ais523: the report on the current uclaf to be strengthened at european level. against that we have had in getting information with regard to monetary policy, a factor of six. i am asking, under rule 115, that we should offer help to alleviate the effects of global warming caused by concentrations of dangerous substances. i can reassure mrs keppelhoff-wiechert: the object of discussion at the intergovernmental conference, mr pre 20:28:14 ^ul (`log \^ul)S 20:28:14 `log \^ul 20:28:17 2011-02-10.txt:16:55:32: elliott: On fungot's ^ul interpreter, we're talking 10s vs 15s or something 20:28:19 fizzie: Ooh, clever. 20:28:26 fizzie: It's easier than that though isn't it 20:28:30 fizzie: I can just use nc or whatever 20:28:36 nc mcserver port | nc -l port 20:28:39 Erm 20:28:43 Except with tee in there 20:28:46 nc mcserver port | tee log | nc -l port 20:28:49 Then connect to that with MC 20:29:20 No, because that won't feed the output of the final 'nc' back to the stdin of the first 'nc'. 20:29:27 And you need bidirectional forwarding there. 20:29:46 ^ul (!echo hi) 20:29:46 fizzie: just use a fifo, and connect it in a loop 20:29:46 fizzie: That just needs my "tie" tool. 20:29:50 ais523: No FIFO required 20:29:51 I do that all the time when making IRC bots 20:29:59 ^ul (!echo hi)S 20:29:59 !echo hi 20:30:01 hi 20:30:03 tie is just pipe(), dup[two], and an exec 20:30:03 elliott: indeed, but it's the easiest way to do it with standard UNIX commands 20:30:12 and it just takes a shell line 20:30:18 ais523: yeah, 'strue 20:30:19 I wrote something tie-like in my first degree 20:30:33 It was originally more complex because I thought it needed to take a list of shell statements to pipe 20:30:33 and then discovered mkfifo, which saves having to get a separately-compiled program involved 20:30:37 but I realised you could just join them with | 20:30:44 ais523: tie is more elegant though :P 20:30:51 I want a whole suite of pipe-wrangling tools 20:30:57 heh, I wrote one 20:31:21 the most general one there was "backpipe" which gave a bunch of FDs connected to each other, so that you could connect programs in arbitrary ways 20:31:30 but it turns out to do the same thing as mkfifo, just more confusingly 20:32:10 ais523: well, catbus connects each command in a list to every other command 20:32:17 I never implemented it, mostly because I could never find a use for it 20:32:26 nc -e can be recreated with tie, you don't need catbus 20:32:29 tie 'nc server port | prog' 20:32:29 or 20:32:31 tie 'prog | nc server port' 20:32:42 (you can rotate the pipeline passed to tie arbitrarily with no semantic effect) 20:33:20 prog < fifo | nc server port > fifo 20:33:29 yeah but that's grosser 20:33:31 although it's probably a little neater with a UUOC 20:33:50 I pretty much just use socat. 20:33:59 It's major overkill for most things, but soooo delicious. 20:34:10 socat is awful. 20:34:19 elliott: YOU'RE AWFUL 20:34:29 But at least it's not GNU netcat, which is just plain defamation of the netcat name. 20:34:36 $ mkfifo fifo; nc p.nerd.nu 25565 log 20:34:36 This looks right, right? 20:34:52 ("log" is meant to end up containing everything the Minecraft client sent; it will connect to port 9999) 20:35:56 hmm... I can connect fine, at least 20:35:59 s/ dollar sign// 20:36:00 I would've done "tee log >fifo", but there's no particular reason. 20:36:21 fizzie: there is for interactive applications, I think; tee ends up buffering 20:37:02 ais523: oh, it does? 20:37:03 I would hope bash can do it with an anonymous pipe too; if with nothing else, then with coproc, but coproc's horrible. I would hope you could get by with just "nc server port <&3 | nc -l listenport | tee logfile > &4" + some magic to make the pipe. 20:37:07 ais523: will it flush once the nc -l quits? 20:37:19 I don't know, but I hope so 20:37:49 -rw-r--r-- 1 elliott elliott 41K 2011-09-18 21:38 log 20:37:49 seems to have worked 20:37:51 smaller than I was expecting, too 20:38:05 although mostly ^As 20:38:15 Client-to-server direction is a lot less costly too. 20:38:19 (Minecraft sends hundreds of pings per second for no obvious reason) 20:38:50 I should probably take this to -minecraft to avoid annoying ais523, but at least it's fairly esoteric 20:39:16 elliott: oh no, you've made me rage at SDL's event loop again 20:39:23 wat 20:39:27 I suppose I just hate tick-based event loops 20:39:29 oh, right 20:39:39 have I mentioned that @'s event loop is THE BEST? :-P 20:39:44 (it doesn't have one) 20:39:44 and much prefer the schedule-future-action-then-wait-until-next-scheduled-action version 20:40:07 elliott: well, how does @ idle the processor if all process-equivalents are sleeping simultaneously, for whatever reason? 20:40:23 My initials would have been N.G.E.vD. 20:40:27 I suppose, it doesn't have an explicit event loop, but it still needs a scheduler 20:40:33 which has the same sort of issues that an event loop does 20:40:39 Nathan Galactus Elliott von Death 20:41:20 fizzie: I wonder ... if you did have a very high-quality scanner, COULD you make a converter from a scanned LP to a super-low-quality audio file? I wonder if you could guess the pits based on something. 20:41:57 "Additional to the result of get it returns the number of consumed bytes and the rest of the input." No it doesn't, you're lying :-( 20:42:02 Gregor: I think someone did that 20:42:14 same person as the person who did "use a CRT as a radio transmitter" maybe? 20:42:17 it sounded quite bad 20:42:27 Evidence that elliott is my evil twin: 20:42:28 elliott: well, how does @ idle the processor if all process-equivalents are sleeping simultaneously, for whatever reason? 20:42:28 http://www.phys.huji.ac.il/~springer/DigitalNeedle/ 20:42:33 That seems to be the first likely hit. 20:42:37 ais523: it's more like, to do event things you just register handlers at the low elvel 20:42:39 level 20:42:42 We both live in the same town, despite never having met 20:42:49 ais523: or if you block, then your continuation just gets inserted as an event handler, and your (lightweight) thread killed 20:42:56 We both have some connection to the name "Elliott" 20:43:06 elliott: but you're going to need to implement the thing that dispatches events to the handler 20:43:12 ais523: so if you block on waiting for the next event, your thread's continuation is installed as an event handler, and the thread is killed 20:43:19 ais523: not really 20:43:22 yep, I understand that much 20:43:28 but something has to call the event handler 20:43:29 ais523: /causing/ the event causes each handler to be spawned as a thread 20:43:35 say a process does sleep(1000) 20:43:44 what's responsible for calling the continuation it gives once the sleep ends? 20:43:47 so, e.g., what does writing to a pipe do? spawn off all the read-handlers for that pipe with the data, nothing else 20:43:53 ais523: the timer driver 20:44:00 ah, OK 20:44:09 so how does the timer driver idle when it doesn't have any timings to give right now? 20:44:11 presumably you'd abstract over it to offer sleep to processes 20:44:12 it can't do the equivalent of a sleep 20:44:29 as it can't ask itself 20:44:37 ais523: well, how do you talk to hardware timers nowadays? 20:44:40 When questioned about this situation, elliott suggested a fight to the death, I suggested something more civilized 20:44:47 presumably, there's an interface that doesn't involve polling constantly 20:44:52 I have facial hair 20:44:55 Elsewhere, someone wanted a "line-in to CD" adapter in the same vein as those "line-in to tape" things you can buy to plug your MP3 player to an old tape-only car stereo; now *there's* quite a technical challenge. 20:44:56 it might use interrupts 20:44:57 elliott, fizzie: Yessssssssssss 20:44:58 elliott: ah, OK, it's triggered by interrupts? 20:45:01 which are basically hardware event handlers 20:45:09 Ngevd: goatie? 20:45:11 fizzie: that seems to be it 20:45:14 *goatee 20:45:16 ais523: probably 20:45:28 fizzie: ouch, that sounds basically impossible 20:45:35 I think it'd have to be wireless 20:45:40 oerjan: No, that requires more hair 20:45:42 lol, it's so gloriously bad. 20:45:48 ah. 20:45:48 but even then it'd be basically impossible 20:45:49 But it is recognizably music! 20:45:51 Gregor: You just need to anti-phaser it 20:45:56 I presume that's possible 20:45:58 Uh 20:45:59 Phaser 20:46:04 I mean the effect that you can hear on the first recording 20:46:13 Some time in 2008-2009, elliott or someone with the same name as elliott kicked someone in the face 20:46:29 that probably wasn't me 20:46:31 Someone who later became good friends with me 20:46:36 well, if it /was/ me, I don't remember it 20:46:54 The "someone" in that sentence is Taneb/Ngevd. 20:46:56 there are quite a lot of people called elliott in the world 20:46:57 ais523: anyway, @ handles push-based things better than things you need to poll, I think 20:47:03 we've had two of them here 20:47:05 ais523: but you can model a pull as a push 20:47:18 My cat just LEAPED off the windowsill, halfway across the room. 20:47:22 She had no reason at all to do that. 20:47:26 Someone called Elliott Hird? 20:47:28 ais523: just tell the driver you'd like to know X, and give a handler 20:47:37 the other one had a different surname 20:47:38 or whatever 20:47:44 Ngevd: The later "someone" I meant :P 20:47:55 Gregor: She had the most important reason: she's a cat. 20:48:00 elliott: Tre. 20:48:01 *True 20:48:07 That was neither me nor elliott 20:48:34 Ngevd: are you claiming that you're the real Elliott Hird, and elliott is just some sort of imposter who happens to have the same name as you? 20:48:36 ais523: Well, I suppose it might depend on the structure of the reader. You don't really need a rotating fake-disc, "just" some sort of a fixed thing that reads the rotation of the central spine, and a thing clamped firmly on top of the radially moving read-head, that can both read the radial distance as well as change its reflectivity. Still. 20:48:45 ais523: My name is Nathan 20:49:06 ais523: I am claiming that elliott is my evil twin 20:49:08 fizzie: I'm thinking more about the issue of connecting wires through all possible interfaces for inserting a CD into a reader 20:49:15 also, you'd have to know where the read-head was 20:49:33 ais523: Well, yes, it'd work in pretty much one CD player model only. 20:49:37 and it could be at any place rotationally around the disk 20:49:40 oh, I see 20:49:44 I thought you meant a general one 20:49:45 hmm, do evil people think that good people are evil? 20:49:51 ?hoogle (a,b) -> (b->c) -> (a,c) 20:49:51 Data.Graph.Inductive.Query.Monad mapSnd :: (a -> b) -> (c, a) -> (c, b) 20:49:51 Control.Arrow (>>^) :: Arrow a => a b c -> (c -> d) -> a b d 20:49:51 Data.Graph.Inductive.Query.Monad (><) :: (a -> b) -> (c -> d) -> (a, c) -> (b, d) 20:49:54 Well, a general one would of course be more desirable. 20:49:57 gah 20:50:00 Deewiant: 20:50:16 flip second 20:50:27 Deewiant: I want it flipped :P 20:50:29 I'm trying to write 20:50:31 | otherwise = do 20:50:32 (a, dump') <- runGetState (get :: Get ClientPacket) dump 0 20:50:32 (a:) <$> parseDump dump' 20:50:34 nicerly 20:50:34 (e.g. when there's an evil twin, does the evil twin think he has a good twin or that his good twin is his evil twin?) 20:50:57 second parseDump $ runGetState (get :: Get ClientPacket) dump 0 20:51:05 then I need (a,[a]) -> [a] 20:51:11 oh hmm 20:51:16 second parseDump <$> runGetState (get :: Get ClientPacket) dump 0 20:51:19 uncurry (:) . second parseDump <$> runGetState (get :: Get ClientPacket) dump 0 20:51:19 I think 20:51:20 ais523: "Perhaps if you had some sort of a separate CD-shaped medium upon which you could (in advance) "print" the required impressions, maybe with some sort of a laser... uh, wait." 20:51:21 ?ty uncurry (:) 20:51:22 forall a. (a, [a]) -> [a] 20:51:45 :t (:) 20:51:46 forall a. a -> [a] -> [a] 20:51:55 Oh that 20:52:09 :t fix(:) 20:52:09 Occurs check: cannot construct the infinite type: a = [a] -> [a] 20:52:10 Probable cause: `:' is applied to too few arguments 20:52:10 In the first argument of `fix', namely `(:)' 20:52:10 Main.hs:13:38: 20:52:10 Couldn't match expected type `[ClientPacket]' 20:52:10 with actual type `Either String [ClientPacket]' 20:52:10 Expected type: ByteString -> [ClientPacket] 20:52:10 Actual type: ByteString -> Either String [ClientPacket] 20:52:14 Deewiant: Not quite :( 20:52:15 :t fix(flip :) 20:52:16 forall (f :: * -> *) a b. (Functor f) => [f (a -> b) -> a -> f b] 20:52:18 I think I do need something monadic 20:52:39 hmm, do evil people think that good people are evil? <-- at least they pretend to think that. 20:52:49 @hoogle fix 20:52:50 Data.Function fix :: (a -> a) -> a 20:52:50 Control.Monad.Fix fix :: (a -> a) -> a 20:52:50 module Control.Monad.Fix 20:52:57 Why do electronics disintegrate in my hands? 20:52:58 Not enough people are signing my epetition 20:53:01 pauli effect? 20:55:09 -!- ais523 has quit (Remote host closed the connection). 20:56:29 a non-spam esoforum message appears! 20:57:36 of course it's a brainfuck derivative. 20:58:22 :t fix.(:) 20:58:22 forall a. a -> [a] 20:58:39 repeat? 20:58:42 yep 20:59:09 :t fix.(++) -- cycle 20:59:10 forall a. (Monoid a) => a -> a 20:59:16 ...or that. 20:59:24 mcycle 21:00:16 micyle 21:00:40 olsner: I would think you cannot tell the answer to "when there's an evil twin, does the evil twin think he has a good twin or that his good twin is his evil twin?" in general; you need to determine by each specific case 21:00:41 > head 20 $ fix.(:) 1 21:00:42 Couldn't match expected type `a -> a' against inferred type `[t]' 21:01:02 Lymee: precedence error 21:01:07 > take 20 $ fix.(:) 1 21:01:08 Couldn't match expected type `[a -> a]' 21:01:08 against inferred type `[t] ... 21:01:13 > take 20 $ (fix.(:)) 1 21:01:15 [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1] 21:02:10 :t fix.(>>) -- forever 21:02:11 forall (m :: * -> *) a b. (Monad m) => m a -> m b 21:09:08 gah 21:09:49 cereal's error messages are _not_ helpful. 21:12:07 fizzie: wait, Minecraft prefixes the length of strings in /codepoints/? 21:12:08 not /bytes/? 21:12:22 THANK GOD, IT ALMOST AVOIDED USING LENGTH PREFIXES! 21:12:33 IT WAS ALMOST SIMPLE TO PARSE THIS ONE FIELD TYPE!!!! ALMOST!! 21:12:55 minecraft 21:13:07 OK, this has ceased to be esoteric, now it's just annoying, I'm going to -minecraft to avoid incurring ais' wra- oh, he's gone 21:13:13 STAYING HERE THEN HAHAHAHAHAHAHA 21:13:47 hmm, apparently all the strings are 240 bytes or less, which might come in handy... 21:14:51 oerjan: "Note: this structure is not thread safe. It is not safe to use value of this type simultaneously from multiple threads." 21:14:57 oerjan: suffer with me pls 21:15:03 (yes, it has _pure_ functions operating on it) 21:15:07 "pure" 21:15:31 OK, well at least it's UCS-2, so there's no surrogate. 21:15:32 surrogates. 21:15:37 So it does /kind of/ prefix the length in bytes. 21:18:08 oh my, 1407808682066025 is a very long string 21:18:23 oh 21:18:24 hey monqy 21:18:30 hii 21:18:39 how many bits are there in a short? hint: the answer is not 64 21:18:54 trick question it's system dependant 21:19:06 or is it not 21:19:11 i'm bad at bit sizes 21:19:35 elliott: Well, it's actually in UTF-16 elements, so you just multiply by two to get bytes. 21:19:45 fizzie: DING DING DING WRONG 21:19:54 at least 16 bits per short, iirc 21:20:03 fizzie: It's in UCS-2 elements, so that works. 21:20:10 fizzie: Were it UTF-16, that would not work. 21:20:12 Surrogate.s 21:20:15 s/\.s/.s/ 21:20:17 s/\.s/s./ 21:20:48 if your bytes are 16-bit, two bytes is enough for any UTF-16 surrogate pair 21:20:53 elliott: No, it's a Java string; they are UTF-16, just that everything counts surrogate pairs as two elements. 21:20:58 $ dist/build/mchost/mchost < log 21:20:58 CHandshake "ehird" 21:20:58 CLogin 17 "ehird" 0 0 0 0 0 0 21:20:58 too few bytes 21:20:58 From:demandInput 21:20:58 Well... it's a start. 21:21:01 fizzie: Oh. Weird. 21:21:23 * elliott makes his TH code generate Debug.Trace.trace calls. 21:21:24 So gross. 21:22:53 java.lan.String has a separate API which returns codepoints (as 'int's) decoding the surrogate pairs, but I don't think people generally bother to use it, because it's so clumsy (offsets are still counted as 'char's and all). Still, officially it's UTF-16. 21:23:01 s/lan/lang/ 21:23:05 There should be more Esoteric Markup Languages 21:23:40 getClauseExp = [| Debug.Trace.trace (showHex $(litE (integerL (fromIntegral ptype))) "") $(foldl apE (appE (varE 'pure) (conE pname)) . map fieldGet $ fields) |] 21:23:41 Yesssssssssssssssss 21:23:44 markup is kind of boringggggggggg 21:23:59 getClauseExp = [| Debug.Trace.trace (showHex ($(litE (integerL (fromIntegral ptype))) :: Int) "") $(foldl apE (appE (varE 'pure) (conE pname)) . map fieldGet $ fields) |] 21:23:59 EVEN BETTER 21:24:01 nice TH 21:24:13 I implemented Maybe as an instance of Quasi (in Template Haskell) 21:24:16 Yay, I misparse 0D. 21:24:37 Goodnight 21:24:39 Oh, float/double confusion. 21:24:39 zzo38: oh? 21:24:39 -!- Ngevd has quit (Quit: what a big quitter he is, eh?). 21:24:41 Ngevd: goodnight 21:24:52 elliott: Yes. runIO is the only unimplemented method. 21:25:00 I am not monqy. 21:25:11 monqy: Yes. 21:25:40 how do the rest work, then? 21:26:24 :t encodeFloat 21:26:24 It is this: instance Quasi Maybe where { qNewName = const Nothing; qReport _ _ = Just (); qRecover = flip mplus; qReify = const Nothing; qClassInstances _ _ = Nothing; qLocation = Nothing; qRunIO _ = error "Cannot run I/O in Maybe"; }; 21:26:25 forall a. (RealFloat a) => Integer -> Int -> a 21:26:32 What. 21:26:37 Oh, hmm. 21:26:38 instance Serialize Double where 21:26:38 put d = put (decodeFloat d) 21:26:39 get = liftM2 encodeFloat get get 21:26:41 instance Serialize Float where 21:26:43 put f = put (decodeFloat f) 21:26:45 get = liftM2 encodeFloat get get 21:26:47 This is not right. 21:26:49 I think? 21:26:52 Is this right? 21:26:54 :t decodefloat 21:26:54 Not in scope: `decodefloat' 21:26:56 :t decodeFloat 21:26:57 forall a. (RealFloat a) => a -> (Integer, Int) 21:26:58 In the state monad I could probably make better implementations of these things. 21:27:07 Yeah, that's not right. 21:27:24 your instance looks kind of useless :( 21:27:34 are there any Quasi laws 21:27:47 monqy: I don't know. But if there is, I hope to fix it. 21:28:01 -- Conversions use 'STUArray' and the 'ST' monad to reinterpret bytes 21:28:02 -- and get /what we assume to be/ the IEEE 754 binary representation 21:28:02 -- of single and double precision floating point numbers. 21:28:03 One reason I have it is simply to get an Exp from a [| ... |] 21:28:04 bad doggy :( 21:28:15 fizzie: Hey, you should port your float/double code to Haskell :-P 21:29:17 -!- ive has quit (Ping timeout: 276 seconds). 21:33:24 How do I make an instance of a state monad? 21:33:45 @src MonadState 21:33:45 Source not found. You untyped fool! 21:33:49 bah 21:33:54 -!- pikhq has quit (Ping timeout: 252 seconds). 21:34:05 :t put 21:34:06 forall s (m :: * -> *). (MonadState s m) => s -> m () 21:34:12 it's that class, anyway 21:34:55 I want to make "instance Quasi (State QuasiState)" but it won't accept that. 21:35:49 zzo38: do you have FlexibleInstances option? 21:36:44 OK, it seems to work now. 21:37:03 otherwise there are some stupid ancient restrictions on instances and their types 21:37:14 Why? 21:38:02 standards compliance i assume 21:40:34 originally it was presumably to make type classes easy to implement 21:42:46 and Haskell 2010, the first revision in 12 years, only did a couple tiny changes to the fundamentals 21:43:07 (of the language, i don't think they touched type classes) 21:45:30 mainly they just incorporated the ffi and hierarchical module addendas, i think. and removed n+k patterns. 21:45:55 or was n+k later... 21:46:58 there was a syntax change, I think 21:47:05 to that stupid layout rule that nobody uses 21:47:07 ("reparse if fail") 21:47:13 or was it just making dangling else work 21:47:16 as it does in all implementations 21:47:16 dunno 21:47:24 but yeah, Haskell has never been easy to implement :P 21:47:27 not the reparse if fail 21:47:32 FlexibleInstances really needs to be default. 21:47:36 it was the operator precedence iirc 21:47:48 it was detached from the main parsing, to make things sane 21:47:52 fizzie: Um, is there an 0x84 packet type? 21:47:55 It's certainly not on the wiki. 21:48:15 mcmap doesn't know it either. Hmph. 21:48:46 Pretty sure I'm not desync'd either: 21:48:49 CPlayerPosition 281.69999998807907 27.0 28.62000000476837 46.51032322405371 True 21:48:49 CRespawn 21:48:49 CKeepAlive 16777344 21:48:49 CKeepAlive 0 21:48:49 Failed reading: Unknown packet type 0x84 21:48:49 Empty call stack 21:49:13 Oh hmm what 21:49:27 , packet 0x09 "CRespawn" [] -- dunno 21:49:29 Not helpful, past me 21:49:38 also pattern guards. http://www.haskell.org/onlinereport/haskell2010/haskellli2.html#x3-5000 21:50:37 not much in there, but at least the changes were good.... 21:50:59 Pattern guards are standard now? Great 21:51:23 Okay, entity_animate is sent by the client, apparently. :/ 21:54:15 the dangling else wasn't mentioned, but it see from http://www.haskell.org/onlinereport/haskell2010/haskellch3.html#x8-320003.6 that it was changed 21:54:35 cool 21:55:05 http://hackage.haskell.org/trac/haskell-prime/wiki/DoAndIfThenElse 21:55:05 http://hackage.haskell.org/trac/haskell-prime/wiki/NondecreasingIndentation 21:55:13 I think the first was accepted too 21:55:22 at least, I use that style in one place in Shiro :-P 21:57:05 -!- derdon has quit (Remote host closed the connection). 22:00:19 elliott: i don't think NondecreasingIndentation is there 22:00:34 ok 22:01:27 Now I managed to make instance Quasi (State QuasiState) 22:01:47 *i see from 22:02:16 It doesn't implement recover, reify, classInstances, or runIO. It might be possible to implement later, though. 22:02:25 If I know what its implementation should be. 22:03:20 elliott: also "that stupid layout rule which no one uses" is probably used quite a bit. one-liners in particular. 22:03:33 oerjan: It's not used at all because nobody implements it. 22:03:44 They implement similar behaviour in a different manner. 22:03:48 wat 22:04:03 Go ask the GHC devs whether they implement layout by reparsing on failure 22:04:06 Deewiant: I'm afraid I'm likely to make my TH generate less applicative output :-) 22:04:23 Deewiant: (I'm micro-optimising ahead of my time for the hell of it and the Applicative stuff is not inlined out) 22:04:39 elliott: i thought you were talking about the insertion of } at syntax error... 22:05:47 -!- Zuu has joined. 22:06:08 oerjan: I think I am; I'm not sure of the specifics 22:06:39 http://www.haskell.org/onlinereport/haskell2010/haskellch10.html#x17-17800010.3 22:07:02 hm i guess i should look at h98 version 22:08:23 With the Maybe instance I can do that: extractQ :: Q a -> a; extractQ = maybe (error "No value in Quasi") id . runQ; 22:08:45 -!- pikhq has joined. 22:09:14 elliott: what they _did_ remove is the dependency on operator fixities, which indeed no one implemented, because it's insane 22:10:24 What is the dependency on operator fixities? 22:11:09 http://haskell.org/onlinereport/syntax-iso.html end of section 9.3 22:13:02 basically when operator fixities were allowed to affect whether there is the kind of syntax error which needs inserting a }, things get horribly complicated (especially since fixities can be defined anywhere, even later in the file or in a local scope), so no one ever implemented it that way 22:14:19 i've heard rumors of someone managing to make a paradoxical case where the } insertion affected the size of the local scope of a definition such at the } should be inserted iff it wasn't :P 22:14:27 *such that 22:15:42 or something like that, i may be confusing somewhat with my own thoughts on the matter 22:16:06 oerjan: that's beautiful :P 22:16:11 maybe that was what was being talked about, then 22:25:18 if the fixities are not considered, then the underlying layout-free haskell syntax presumably becomes context-free and handleable by a yacc-style parser. since i vaguely think that's how ghc does it. 22:27:26 OK, I can understand why to remove the stuff mentioned at the end of section 9.3 because it can be difficult to implement, I read about how some things are implemented in GHC, and fixities are not known at parsing time, so that would make it difficult to implement. 22:27:49 yeah 22:31:40 -!- sebbu2 has joined. 22:31:40 -!- sebbu2 has quit (Changing host). 22:31:40 -!- sebbu2 has joined. 22:32:46 -!- sebbu has quit (Ping timeout: 260 seconds). 22:33:35 [GblId, Arity=2, Caf=NoCafRefs, Str=DmdType LU(SAAAAAAAA)] 22:33:41 SAAAAAAAA! 22:34:20 sounds like the core is preparing to attack 22:34:23 at this point oerjan notices I'm reading core and fears for the safety of neighbouring towns 22:34:25 snap 22:35:39 The Core - the story of how haskell destroyed northern england 22:36:01 oerjan: here's a sad thing: GHC turns my "case" on a bunch of Word8 constants (with a single default case) into a bunch of nested if/then/elses, at least at the Core level, rather than some sort of jump table 22:36:12 it was all a plot by the glaswegians 22:36:28 I might have to write my own, say by creating a Data.Vector of monadic actions 22:36:48 or one of GHC's low-level array things 22:37:31 huh 22:37:35 -!- zzo38 has quit (Remote host closed the connection). 22:38:01 -!- Patashu has joined. 22:38:24 even after optimization? (not that i know this stuff) 22:38:30 food -> 22:39:27 oerjan: yes, -O2 22:41:33 -!- Jafet has quit (Quit: Leaving.). 22:42:18 elliott: no i mean, are you printing the core after the optimization stage, i think there are different options... 22:43:29 -ddump-simpl 22:43:43 -ddump-simpl 22:43:43 Dump final simplifier output 22:43:43 [dynamic] 22:43:44 so yes 22:43:52 apparently GHC never does it, alas 22:43:58 but backends might, I guess 22:49:10 -!- FireFly has quit (Quit: FireFly). 22:52:56 -!- ive has joined. 22:54:51 -!- NihilistDandy has joined. 22:56:02 -!- NihilistDandy has quit (Client Quit). 22:56:26 -!- NihilistDandy has joined. 23:13:54 -!- augur has quit (Remote host closed the connection). 23:28:21 ?t \f x y -> flip f x `fmap` y 23:28:21 Maybe you meant: tell thank you thanks thx ticker time todo todo-add todo-delete topic-cons topic-init topic-null topic-snoc topic-tail topic-tell type . ? @ ft v 23:28:24 ?ty \f x y -> flip f x `fmap` y 23:28:26 forall a a1 b (f :: * -> *). (Functor f) => (a -> a1 -> b) -> a1 -> f a -> f b 23:28:30 ?hoogle (a -> a1 -> b) -> a1 -> f a -> f b 23:28:30 Control.Monad liftM2 :: Monad m => (a1 -> a2 -> r) -> m a1 -> m a2 -> m r 23:28:30 Control.Applicative liftA2 :: Applicative f => (a -> b -> c) -> f a -> f b -> f c 23:28:30 Prelude scanr :: (a -> b -> b) -> b -> [a] -> [b] 23:28:35 Hmph. 23:30:40 -!- sllide has joined. 23:33:04 :t \f x y -> Prelude.flip f x `fmap` y 23:33:04 forall a b c (f :: * -> *). (Functor f) => (a -> b -> c) -> b -> f a -> f c 23:33:06 -!- Jafet has joined. 23:33:12 oh 23:34:22 @pl \f x -> fmap . flip f x 23:34:22 ((fmap .) .) . flip 23:34:47 -!- sebbu2 has changed nick to sebbu. 23:35:14 -!- augur has joined. 23:35:34 @pl \fmap flip -> ((fmap .) .) . flip 23:35:34 (.) . (.) . (.) 23:38:02 nice 23:39:33 :t flip 23:39:33 forall (f :: * -> *) a b. (Functor f) => f (a -> b) -> a -> f b 23:40:19 @pl \ f x y -> flip f x `fmap` y 23:40:19 (fmap .) . flip 23:40:28 :t \f x y -> flip x (f `fmap` y) 23:40:28 forall (f :: * -> *) b a b1 (f1 :: * -> *). (Functor f1, Functor f) => (a -> b1) -> f (f1 b1 -> b) -> f1 a -> f b 23:40:30 @pl \ fmap flip -> (fmap .) . flip 23:40:30 (.) . (.) 23:40:35 argh 23:40:45 oh wait 23:40:59 :t \f x y -> f `fmap` y `flip` x 23:41:00 forall a a1 b (f :: * -> *). (Functor f) => (a -> a1 -> b) -> a1 -> f a -> f b 23:41:06 *MWAHAHAHAHA* 23:41:15 -!- sllide has quit (Read error: Connection reset by peer). 23:41:37 @pl \f x y -> f `fmap` y `flip` x 23:41:38 flip . (flip .) . fmap 23:42:13 * oerjan sits down to watch heads explode 23:42:15 :t fmap fmap fmap 23:42:16 forall (f :: * -> *) a b (f1 :: * -> *). (Functor f, Functor f1) => (a -> b) -> f (f1 a) -> f (f1 b) 23:42:55 :t fmap fmap (fmap fmap fmap) 23:42:56 forall (f :: * -> *) (f1 :: * -> *) a b (f2 :: * -> *). (Functor f, Functor f1, Functor f2) => (a -> b) -> f (f1 (f2 a)) -> f (f1 (f2 b)) 23:43:26 this is good 23:44:09 caleskell flip should definitely be an operator somewhere 23:44:22 is it useful 23:44:39 :t flip 23:44:39 forall (f :: * -> *) a b. (Functor f) => f (a -> b) -> a -> f b 23:44:47 yeah 23:44:52 ?hoogle f (a -> b) -> a -> f b 23:44:52 Control.Applicative (<*>) :: Applicative f => f (a -> b) -> f a -> f b 23:44:53 Control.Monad ap :: Monad m => m (a -> b) -> m a -> m b 23:44:53 Control.Applicative (<**>) :: Applicative f => f a -> f (a -> b) -> f b 23:44:58 wait, how does that work? 23:44:59 there's no pure 23:45:06 oh yeah that thing 23:45:15 looks useful but flip is a bad name for it 23:45:19 ?djinn Functor f => f (a -> b) -> a -> f b 23:45:19 Error: Class not found: Functor 23:45:23 oerjan: help 23:45:52 :t \ff x -> fmap ($x) ff 23:45:53 forall a b (f :: * -> *). (Functor f) => f (a -> b) -> a -> f b 23:45:59 i was just about to say that 23:46:06 except with a isntead of x and f instead of ff 23:46:14 and a space between \ and f 23:46:21 and $ and a 23:46:42 oerjan: I was about to ask a question about zip and map but then I realised that I was using mapM so it was irrelevant :( 23:46:54 ?pl \ f a -> fmap ($ a) f 23:46:54 flip (fmap . flip id) 23:47:17 irrelevant? 23:47:26 elliott: i think fmap and caleskell flip together implement the intuition that when you combine applicatives where all except one term is a pure, only Functor is really needed. 23:47:35 monqy: oh right 23:47:39 oh oerjan did it 23:47:40 before 23:47:41 ok 23:47:42 yes 23:47:49 oerjan: yeah 23:48:00 oerjan: I kind of find Functors ugly :( 23:48:08 because of the weird restriction to one-argument functions 23:48:16 it would be nice if there was a way to get N-argument functions without pure 23:48:26 maybe just f a -> f b -> f (a,b) 23:52:01 you can get that with just <*> and <$>, i think 23:52:25 oerjan: how 23:52:27 hmm 23:52:28 oh right you can 23:52:49 so the question is, what can you implement (<$>) for but not (<*>)? and is it interesting at all? :P 23:53:19 well Functors are mathematically fundamental 23:53:23 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net). 23:53:59 oerjan: yeah, I'm just wondering if they're Haskelly fundamental :P 23:54:54 hm i think (,) a is an example 23:55:06 oerjan: No, (,) is an Applicative. 23:55:10 It's Writer. 23:55:19 shachaf: that requires a constraint though 23:55:23 shachaf: not without Monoid restriction on a 23:55:30 you need some way to combine two a's 23:55:37 Well, OK. 23:55:42 Map k has an instance of Functor. 23:56:12 that's pretty obviously an Applicative too, i think 23:56:39 in an analogous way as ZipList, just throw away non-common keys 23:57:42 might even be a Monad 23:58:34 oh wait, no return/pure is the problem 23:59:11 scratch that