00:00:15 to disallow based on algorithmic differences, but I guess that makes it easier to compare?? I don't know. 00:00:32 ... 00:00:36 Well. 00:00:40 I meant that it's subjective to decide what constitutes an algorithmic difference. 00:00:49 oh, sort of. 00:00:59 The maintainer claims to have a policy of rejecting differing algorithms, but allows programs with and without parallelism for the same task. 00:01:02 Which is an algorithmic difference. 00:01:03 I suppose, a good way of choosing to accept or not might be "shortest non-trivial, non-overly-naive solution" 00:01:08 But that's highly subjective. 00:01:43 yeah that's pretty much meaningless without further criteria. 00:02:02 non-trivial means you're not calling sort. 00:02:10 non-overly-naive means you're not bogosorting 00:02:56 wat 00:03:03 What if calling sort is the fastest implementation of sort 00:03:12 "no using libraries" 00:03:17 that's silly. 00:03:27 kallisti, well. 00:03:33 I suppose that's if the problem is "sort this list" 00:04:10 How about "no making the library do the entire job" so it's a comparison of things implemented in the language and not the standard library. 00:04:46 Haskell's sort is implemented in Haskell. 00:04:51 so that's still fairly arbitrary. 00:05:03 but I can see the rationale, I guess. 00:05:40 it's the same reason I'd like all of the Python-C API, Haskell FFI, etc entries to not be counted. 00:07:19 Madoka-Kaname: Is the benchmark game not a competition to see who's language is fastest and shortest? 00:07:29 It is surely a testament to an implementation if 00:07:31 main = interact sort 00:07:38 produces an extremely fast sorting program. 00:07:54 But it doesn't say much about programming in the language. 00:08:05 sure it does. 00:08:20 people are likely to use sort when programming in Haskell and in need of a sorting algorithm. 00:08:27 At least. 00:08:38 It doesn't say much about programming non-trival things in the language. 00:08:51 You might be able to pull things like that off easily, but, more complex, and things fall apart. 00:08:53 And HQ9+ can't be beat when it comes to 99 bottles of beer on the wall 00:08:56 people are less likely to write everything in C and then hook up to the language implementation. 00:09:54 Actually, it can, probably. 99 bottles of beer on the wall require a character. 00:10:12 But it doesn't say much about programming in the language. 00:10:13 Is it meant to? 00:10:19 Sgeo: language where everything is 99 bottles of beer on the wall? 00:10:26 There are a fixed set of simple problems; the idea is to get bragging rights by showing your implementation fastest and shortest. 00:10:34 monqy, or at least, the empty program 00:10:41 If you have a very fast standard-library sort, then it would be against the purpose of the game not to use it. 00:10:47 the empty program is a thing, after all 00:11:06 Homespring special-cases it 00:11:12 I think the language benchmark game is indicative of what is at least possible in terms of performance, but isn't really indicative of what "normal programs" do. 00:12:01 the second one is very difficult to determine. 00:12:15 No shit. 00:12:23 There are warnings plastered all over the site saying exactly that. 00:12:32 even if you have a large sample of wild programs, how do you categorize them so that you can determine that program in language X does the same thing as program in language Y. 00:13:13 Homespring special-cases it 00:13:22 'Special-cases' seems a bit odd in that context. 00:13:38 Phantom_Hoover: It actually does, though? 00:14:14 homespring is interesting in that the null program is not a quine. :) 00:15:02 colloinkgravisom, but everything is a special-case, isn't it? 00:15:20 Why is doing nothing on the null program any less of a special case? 00:15:39 but it doesn't do nothing? 00:15:51 Phantom_Hoover: I don't think you know what Homespring is? 00:15:59 Phantom_Hoover: Homespring does not do nothing on the null program. 00:16:03 I know that. 00:16:19 It prints "In Homespring, the null program is not a quine.", or words to that effect. 00:16:50 Yes. 00:16:58 But Homespring isn't just a collection of special cases? 00:17:02 It's an actual language. 00:17:12 One whose semantics presumably do not print out that string on the null program. 00:17:14 So it's a special case. 00:18:53 Has anyone written a Homespring quine? 00:19:20 I doubt it. 00:19:53 -!- Patashu has joined. 00:20:43 colloinkgravisom: http://shootout.alioth.debian.org/u32/performance.php?test=threadring I find it kind of interesting that he includes the GHC program but not the Java 7 server program 00:21:48 which is listed as an "interesting alternative" 00:23:24 ... 00:23:35 Those are alternate implementations of programs whose main implementations appear in the previous table. 00:23:50 yes I understand that. 00:24:12 It's an actual language. 00:24:12 One whose semantics presumably do not print out that string on the null program. 00:24:37 I... don't see how you can infer the behaviour of the null program based on the behaviour of all the other programs. 00:24:51 you can't. it's a special case. 00:26:18 Phantom_Hoover: Um, an inductive definition? 00:26:30 Phantom_Hoover: Consider defining the semantics of BF as [Ins]. 00:26:40 Go on. 00:26:43 The semantics of the null program is to do nothing. 00:26:54 The semantics of add followed by program p is to increment [...] followed by the semantics of p. 00:26:55 And so on. 00:26:58 It's called a base case. 00:27:09 hmm, interesting, Haskell beats everything on the thread-ring challenge except for Erlang on the x86 Ubuntu Intel Q66000 one core. 00:27:18 er 00:27:19 x64 00:27:41 Phantom_Hoover: Obviously given a black box homespring-without-null-program interpreter you can't deduce the behaviour; it's a property of the mathematical specification. 00:27:50 kallisti: Haskell's threading is really good. 00:28:04 colloinkgravisom: that wasn't the interesting art. 00:28:04 Null program does whatever. (inst:insts) is the base case. 00:28:07 +p 00:28:17 colloinkgravisom: I was wondering why Erlang wins in that case. 00:28:36 kallisti: Erlang also has really good threading. 00:28:41 Phantom_Hoover: What? 00:28:45 Phantom_Hoover: You don't know what a base case is. 00:28:49 :t foldr 00:28:50 forall a b. (a -> b -> b) -> b -> [a] -> b 00:28:54 Second argument is base case. 00:28:57 First argument is induction step. 00:29:03 colloinkgravisom, I know how inductive definitions and recursion work, thank you very much. 00:29:14 Phantom_Hoover: Yes, so don't make statements in direct contradiction of those. 00:29:47 colloinkgravisom: the same Erlang program runs much slower on all the other machines. And then suddenly is the fastest on this particular machine. 00:29:50 -!- cheater has quit (Ping timeout: 240 seconds). 00:29:58 kallisti: Oh. I parsed your statement differently. 00:29:58 But you seem to be picking one specific model and saying it's the only legitimate one, in such a way that I've lost track completely of what I was saying. 00:29:59 this is still pretty strange to me, regardless of "X language has good threading" 00:30:04 kallisti: Are the others >1-core? 00:30:10 I think Erlang's VM is single-threaded. 00:30:18 colloinkgravisom: one other is 1-core. 00:30:19 Phantom_Hoover: No, you're just not really making any sense. 00:30:30 Phantom_Hoover: Of course you can deduce the behaviour of the null program given a specification of the language. 00:30:33 http://shootout.alioth.debian.org/u32/performance.php?test=threadring 00:30:38 Homespring's spec specifically says that the null program is handled specially. 00:30:42 vs 00:30:43 http://shootout.alioth.debian.org/u64/performance.php?test=threadring 00:30:45 Specially, i.e. not according to the rules defined elsewhere. 00:30:48 kallisti: Dunno then. 00:30:52 colloinkgravisom, if the language doesn't specify what the null program does, you can't deduce that. 00:31:47 Phantom_Hoover: No shit? 00:32:01 This is basically what I am saying? 00:32:03 colloinkgravisom: the only difference is that it's 64-bit. Could Erlang be faster on a 64-bit machine for some reason? 00:32:25 Phantom_Hoover: The point is that any reasonable definition will, and you haven't given any evidence that Homespring's spec doesn't, so it just seems like you're complaining about a perfectly valid use of "special case" that the original document itself uses for the sake of it. 00:32:27 kallisti: Maybe. 00:32:42 *single-threaded 64-bit 00:32:50 s/single-threaded/one core/ 00:33:01 I have once again lost track of what you're saying completely. 00:33:53 "Hoyle On Poker: A Dead White Guy Teaches You How To Think Like One" 00:34:36 Wild cards must be less than seventeen per deck. 00:36:43 colloinkgravisom: also, Haskell performs comparatively poorly on another threading task. http://shootout.alioth.debian.org/u64q/performance.php?test=chameneosredux 00:38:38 but I'm not really sure what "symmetrical thread rendezvous" is 00:38:43 sounds romantic. 00:39:04 maybe Haskell is not very good at love? :( 00:39:26 I think I need lighter headphones in the future. 00:39:53 err, wrong channel 00:40:39 I think I need lighter headphones in the future. 00:40:57 Err, wrong person 00:41:17 lol 00:41:46 "allocate and deallocate many binary trees" so you have to force them to be garbage collected in Haskell? 00:41:54 colloinkgravisom, /anyway/ the reason was that I just had my headphones on for like 5 hours straight due to watching a live stream and then listening to a podcast 00:41:56 -- normally you would ensure the branches are lazy, but this benchmark 00:41:56 -- requires strict allocation. 00:41:57 ah 00:42:10 colloinkgravisom, but I didn't intend to discuss that in this channel 00:42:17 colloinkgravisom, it would be so sgeo to discuss that 00:42:18 -!- cheater has joined. 00:43:10 Vorpal: It's kind of beautiful that "Sgeo" and "Vorpal" are both adjectives now. 00:43:23 My name is too long to fall prey to such slander. 00:43:49 kallisti: The Haskell benchmark game programs would be better if the maintainer wasn't biased like that :) 00:44:03 TBH, I would just not restrict the algorithms at all. 00:44:15 If someone comes up with a massively better algorithm, is it really unreasonable to expect everyone else to copy it? 00:44:57 a lot of these benchmarks are DNA-related 00:45:10 this should be called "How well programs compute DNA stuff" 00:45:19 colloinkgravisom, heh 00:45:26 More like "how well programs compute string manipulation" 00:45:38 My name is too long to fall prey to such slander. <-- that is a very elliott thing to say 00:46:19 Vorpal: Shut up you colloinkgravisom piece of shit. 00:46:26 You're so Phantom_Hoover. 00:46:26 colloinkgravisom: I guess it's a testament to JAva's garbage collection that it actually performs better than C++ on the allocate/deallocate binary trees. 00:46:31 JAva. 00:46:42 How might one be Phantom_Hoover. 00:46:56 Does it involve being incredibly witty, charming, suave and good-looking? 00:47:07 Phantom_Hoover: No, just gay and vampiric. 00:47:09 Like Twilight. 00:47:37 Phantom_Hoover: witty, charming, suave, and good-looking is more about being kallisti, really. 00:47:44 literally "to the fairest" 00:48:14 or well, Wikipedia says "to the most beautiful" but that's because Wikipedia is racist. 00:51:16 -!- hagb4rd2 has joined. 00:51:36 they should add another parameter to the language benchmark game, where they image the programmer's brain while programming and quantify how much joy they are experiencing. 00:52:45 PHP would rank worst. 00:53:23 -!- calamari has joined. 00:53:30 -!- hagb4rd has quit (Ping timeout: 240 seconds). 00:55:17 Python would rank releatively high because lolzealots. All male Ruby fans would actually have erections while programming. 00:57:18 I guess that's unfair to say though, because all languages have this inexplicable overzealous following (except maybe PHP, no one actually likes PHP) 00:57:33 kallisti, even the people in ##php don't like PHP 00:58:24 Sgeo: Just wait until you can subscript arbitrary expressions. 00:58:31 then they'll be like "OMG SO EXPRESSIVE" 00:58:45 Yes, it is true; I don't really like PHP either. 01:00:19 Sgeo: didn't they even give it a name or something? 01:00:23 like it's something special. 01:00:57 nothing is as special as the paamayim nekudotayim 01:01:02 http://php.net/manual/en/language.oop5.paamayim-nekudotayim.php 01:01:19 which actually appears in error messages 01:01:21 with no hint as to what it is at all 01:02:44 huh. 01:03:13 "Paamayim Nekudotayim" is double colon 01:03:18 I guess perl has some equally colorful terminology. 01:03:49 can't call method on non-blessed hashref or whatever. 01:04:15 kallisti, yes 01:04:39 I know the abbreviation is FAD 01:05:05 Sgeo: !+fad 01:05:05 Sgeo, Want to be able to access array elements like this: function()[0]? It's called function array dereferencing, and it's coming in PHP 5.4. 01:05:06 -!- iconmaster has quit (Quit: DAMN YOU LIGHTLINK). 01:05:23 which is on rc4!!! 01:07:00 They are now talking about disadvantages of FAD 01:07:03 Particularly abuse 01:07:06 lol 01:07:14 "is dreading having to debug code that looks like $foo()->bar()[1]->baz('bat')[0]" 01:07:26 wow 01:07:27 really? 01:07:46 PHP programmers are worse than Python programs when it comes to aversion to nested expressions, I guess. 01:08:25 Sgeo: don't tell them about functional programming 01:08:29 (no, really: don't) 01:08:46 or Perl. 01:08:49 don't tell them about Perl. 01:09:11 kallisti: "PHP is language defined by a tool built by some guys who saw a Perl interpreter once and thought it was really neat. They thought that it would just rock to make a similar tool that lived in a webserver and whose default operation was print." 01:09:35 where is this from. 01:09:55 http://catseye.tc/about/php.html 01:10:32 "One of the most interesting aspects [of PHP version 2] included the way while loops were implemented. The hand-crafted lexical scanner would go through the script and when it hit the while keyword it would remember its position in the file. At the end of the loop, the file pointer sought back to the saved position, and the whole loop was reread and re-executed." 01:10:37 loooool 01:13:37 "I would have to say the single greatest software engineering achievement of PHP is how it taught us all that programming should never be done without having constantly within arm's reach a book with a photo of the author's face on it." 01:14:01 This is why Haskell hasn't caught on, yet. Unless Bonus is an elephant 01:15:55 it actually kind of blows my mind that PHP is faster than Perl in the benchmark game. 01:16:30 Benchmarks are only a good measure of surprise 01:17:00 `addquote Benchmarks are only a good measure of surprise 01:17:03 783) Benchmarks are only a good measure of surprise 01:17:07 PHP is still slow. Even though, some of my programs are PHP implementation of other programming language, such as FurryScript and Icoruma. That makes it very slow. I might eventually rewrite Icoruma in C or Haskell. 01:17:16 ("A good measure of only surprise" would haev been better, though.) 01:17:37 * NihilistDandy shrugs 01:18:32 *have 01:19:57 http://catseye.tc/about/cplusplus.html 01:20:08 Gratuitous expertise is a phrase I will be using daily from now on 01:20:19 I was hoping for more than "mostly harmless" on "About Python" 01:20:20 I may put that on a résumé 01:21:25 kallisti: Can you think of anything *better* to say about Python? 01:21:43 "Perl is what happens when you play Katamari Damacy with the Unix toolchain." 01:22:13 this is an accurate description. 01:23:50 Yet, the IRC client I am using is written in PHP and it runs sufficiently fast. 01:24:06 (It processes every single keystroke, even.) 01:24:30 hax 01:24:39 Yeah, clients that process every kysroke are overtd 01:25:13 :D 01:25:44 Well, it has to process every keystroke in order to work. 01:25:54 kallisti: Can you think of anything *better* to say about Python? 01:26:04 Something something something Sierpinski numbers? 01:26:31 And Scheme's better at that, anyway 01:27:02 Phantom_Hoover: Wait, how do they relate to Python? 01:27:09 I think I'm having an acid flashback 01:27:28 NihilistDandy: Better at what? 01:27:31 colloinkgravisom, they were invented as a result of an amusingly stupid example in the Python docs. 01:27:54 It mentioned that it allowed you to add a set of numbers between C and R, and we were wondering what that would be. 01:27:56 -!- cheater has quit (Read error: Operation timed out). 01:28:12 colloinkgravisom: Sierpinski numbers :D 01:28:47 Phantom_Hoover: Ohh, right. 01:29:11 Phantom_Hoover: Are the Sierpinski numbers actually closed under anything, though. 01:29:15 Nope. 01:29:28 Phantom_Hoover: How... good? 01:29:49 Weeeellll, I don't recall if I actually proved that they weren't closed under multiplication, but I strongly suspect they weren't. 01:42:54 -!- itidus21 has joined. 01:43:14 -!- cheater has joined. 01:51:19 Gregor: What fun things can I do with this loltablet :P 01:51:28 I have absolutely no idea what to do with it. 01:57:02 http://www.cracked.com/article_18983_5-complaints-about-modern-life-that-are-statistically-b.s..html 01:57:14 colloinkgravisom: turn it into a touchscreen synthesizer. 01:57:20 kallisti: is that an obnoxious or non-obnoxious Cracked article. 01:57:25 non-obnoxious 01:57:26 Also dude the screen is only 7 inches 01:57:35 But developing Haskell stuff on it could be cool I guess. 01:57:39 colloinkgravisom: optimize for efficient screen space use. 01:57:47 when designing your synthesizer. 01:58:17 Phantom_Hoover: Pls verify veracity of obnoxiousness claim,. 01:58:20 *clam. 01:58:35 colloinkgravisom: it's like, informative and stuff. 02:00:33 colloinkgravisom: That's kinda the issue, isn't it. 02:01:17 Gregor: SO TEMPTED TO INSTALL INFERNO ON IT 02:01:35 Sorry, *HELLAPHONE 02:01:37 Hellablet. 02:01:59 sweet mac book pro and hellablet 02:04:46 kallisti: Sorry I am ragequitting this article because they're dissing Sugar Sugar which is the BEST WORST SONG EVER. 02:05:14 Phantom_Hoover: Pls verify veracity of obnoxiousness claim,. 02:05:19 Non-obnoxious. 02:05:26 "[Rock music] is deplorable. It is tribal. And it is from America. It follows ragtime, blues, jazz, hot cha-cha and the boogie-woogie, which surely originated in the jungle. We sometimes wonder whether this is the negro's revenge." 02:05:26 Read more: 5 Complaints About Modern Life (That Are Statistically B.S.) | Cracked.com http://www.cracked.com/article_18983_5-complaints-about-modern-life-that-are-statistically-b.s._p2.html#ixzz1hn6RlHL9 02:05:31 OK they won me back over with Daily Mail quotes. 02:05:32 ARGH 02:05:32 YOU 02:05:33 FUCKING 02:05:33 COPY PASTE 02:05:35 SCRIPT 02:05:35 ASS 02:05:37 OF 02:05:39 SHIT 02:05:52 Put GPS+Astrolog in that computer 02:05:56 zzo38: ok 02:06:32 (Astrolog has no GPS input; but source-codes is available (although not free-software/open-source, probably due to licensing issues with other parts it was combined with), so it could be modified to have it) 02:07:15 * Phantom_Hoover → sleep 02:07:16 -!- Phantom_Hoover has quit (Quit: Leaving). 02:07:16 colloinkgravisom: but they're dissing Sugar Sugar while BRINGING UP AN INTERESTING POINT ABOUT POPULAR MUSIC COMPARED TO TIMELESS CLASSICS. 02:07:21 -!- derdon has quit (Remote host closed the connection). 02:07:24 Normally, if you push "n" it uses the current date/time and takes the coordinates from the default setting (which you can change), but if it have GPS, then it can be made to, instead, take the coordinates from the GPS. 02:07:41 Possibly it can take the time from the GPS too, if it is possible to do so. 02:08:02 I wonder if GPS does give time info. 02:09:06 colloinkgravisom: do you like Radiohead? 02:09:06 Astrolog even has a world map on it, and the ability to draw on any chart. Maybe it will sometimes be useful with that kind of computer. 02:09:19 * kallisti is one of those asshole radiohead fans. 02:10:01 Asshole Radiohead: famous asshole, band. 02:10:13 Their asses are holes, their radios heads. 02:10:18 Their surgeons general. 02:10:39 colloinkgravisom: that's a sweet ass-car 02:10:53 More like a sweet xk-cd. 02:11:02 well, yes. 02:11:23 it's also the only one I would describe as "GOOMH Randall" 02:11:41 Describing anything like that is unforgivable sin. 02:12:12 colloinkgravisom: recall that it was actually your linking to xkcdsucks that made me familiar with the term 02:12:15 so you can blame yourself. 02:13:30 * colloinkgravisom is unable to read "GOOMH" as anything but a single word "goomh" pronounced "goomh". 02:13:35 same. 02:13:43 GOOMH elliott. 02:13:55 Are you able to make Astrolog with GPS input on Android based computer? 02:13:57 Goomh Colloinkgravisom. 02:14:00 zzo38: Probably? 02:14:05 Isn't Astrolog Windows-only. 02:14:22 `words --eng-gb --finnish 50 02:14:28 absorman poilem munifeby isopergekry fponn poppim fnfpeach pera lolustam vina nouthangeke sorrbv quirallato scsista elwinderiut noure sekened artaterive laiser lysoidassur bestoarvoimmat seueatteell yhemprobo mowned pros cemenen latiii buryhmivationikiot ski suutorimen her virarchesf lenrecollessum wybui alencziansagni iljaaotta direämmembreet eldobbatii äußerdidalwa old fennari törkeämmte ihorj firmuseva deanamremque 02:14:42 fnfpeach 02:14:56 laiser 02:15:11 No, Astrolog is also available for DOS and UNIX as well as Windows. 02:15:57 Sgeo: you've been lazy with the direämmembreets lately 02:16:44 fennari 02:16:50 you should have known that, while I was making fun of you constantly for updating us about MSPA, I actually used it as a source of information at the same time. 02:16:50 ihorj: international house of real jews 02:17:18 Will you need a compiler C into Java to do so? 02:18:25 * kallisti imagines the horribleness of that. 02:18:41 zzo38: No, Android runs Linux, it just has a srtipped down libc and few traditional tools. 02:18:51 kallisti, I don't see any updates 02:19:00 But the UI stuff is Java, so you have to write some Java glue code, presumably with JNI or whatever. 02:19:01 kallisti, and I'm not always by IRC 02:19:01 Sgeo: you missed the last one, or didn't ping me or something 02:19:04 I know people do Android stuff in C. 02:19:05 Sgeo: jerk 02:19:13 kallisti, what, you want me to write a bot? 02:19:21 I want you to do whatever it takes 02:19:23 to inform me 02:19:25 eventually 02:19:29 not necessarily instantaneously 02:19:33 but within a reasonable timeframe. 02:19:36 or I will be upset. 02:19:40 and think of you as a lesser person. 02:19:52 Wow, people actually do coffee enemas. 02:19:57 colloinkgravisom: yep 02:20:18 Is there a standard processor code or do you need to compile native code differently for different devices? 02:20:36 kallisti, ok, when I'm updated away from IRC, I'll try to remember to update #esoteric eventually 02:20:40 zzo38: I don't think there's any actual Android device that runs something that isn't ARM. 02:20:43 IIRC the x86 port isn't really official. 02:21:07 colloinkgravisom: also: sears catalogs used to sell vibrators. 02:21:57 One of the first vibrators was a steam-powered device called the "Manipulator", which was created by American physician George Taylor, M.D.[2] This machine was a rather awkward device, but was still heralded as some relief for the doctors who found themselves suffering from fatigued wrists and hands. 02:22:03 looooool 02:22:03 I find this notion hilarious. 02:23:04 The "pelvic massage" was especially common in the treatment of female hysteria during the Victorian Era, as the point of such manipulation was to cause "hysterical paroxysm" (orgasm) in the patient. However, not only did they regard the "vulvular stimulation" required as having nothing to do with sex, but reportedly found it time-consuming and hard work. 02:23:09 we've come so far. 02:31:56 There are unofficial Android variants such as Replicant (which removes all proprietary Google stuff from the system), so will many softwares work with it? 02:32:26 probably 02:39:10 -!- androidgravisom has joined. 02:42:31 I'm going to buy the Wolfram Alpha app and NOBODY CAN STOP ME 02:42:45 oh no 02:43:12 Apart from kallisti or someone who I guess could theoretically talk me out of it. 02:44:00 Or the battery running out which it seems like it might soonish. 02:44:28 androidgravisom: wat 02:44:30 what the fuck 02:44:32 are you even thinking 02:44:35 why would you spend MONEY 02:44:37 on a THING 02:44:39 that 02:44:44 is a) not going to be all that useful to you 02:44:47 b) freely available on the internet 02:45:57 Um dude it will let me calculate the number of calories in one solar mass of hamburgers with a COMPLETELY STREAMLINED USER INTERFACE 02:46:12 Q.E.D.? 02:46:31 Also it's under 2 pounds. 02:47:18 two pounds too many. 02:47:52 I said under; it's like 1 pound 20 pence. 02:48:20 not worth it. 02:48:41 You're not worth it. 02:49:13 NBC gig grill jerk used Maghull cashbox shriek org leash go padraig gothic etc period 02:49:24 JFK Fagan finish Dougherty offtrack habitation orthodOX captor disposal 02:49:41 Stream of Bruno Garth FL JFK fashion poster ricochet fibrinogen hard SC wb JFK 02:49:55 hm W|A has improved a little bit since last I used it to do calculus homework for me. 02:50:18 Fibrinogen is a word? 02:51:53 wtf "hepatisis patient height" is a valid query. 02:52:05 *hepatitis 02:52:59 But not "your mom's girth". 02:53:28 That doesn't fit in a bignum. 02:54:03 I should go to sleep soon. 02:54:59 -!- cheater has quit (Ping timeout: 255 seconds). 02:59:48 Result: 1.1×10^-26 kW/Cal (kilowatts per dietary Calorie) (2007 estimate) 03:00:05 when I asked wolfram alpha "Germany electricity consumption / calories in a solar mass of Burger King hamburgers" 03:00:09 Oh Lord. 03:00:21 The screen is glitching. 03:02:56 -!- androidgravisom has quit (Remote host closed the connection). 03:06:45 kallisti, wow 03:08:12 -!- incomprehensibly has quit (Quit: Leaving.). 03:08:39 -!- cheater has joined. 03:09:11 also that's apparently 2.73e-27 hertz?? what? 03:09:18 kallisti, what is? 03:09:21 that figure 03:09:29 how can it be in hertz? 03:09:31 maybe I misunderstand the "unit conversions" section. 03:09:32 that makes no sense 03:09:52 http://www.wolframalpha.com/input/?i=Germany+electricity+consumption+%2F+calories+in+a+solar+mass+of+Burger+King+hamburgers 03:09:57 * Vorpal looks 03:10:11 You have: kW 03:10:11 You want: 03:10:11 Definition: kilo W = 1000 kg m^2 / s^3 03:10:13 well 03:10:16 there are seconds there? 03:10:29 You have: cal 03:10:29 You want: 03:10:29 Definition: calorie = cal_IT = 4.1868 J = 4.1868 kg m^2 / s^2 03:10:30 and there 03:10:48 I don't know if they cancel each other out? 03:10:52 Once someone entered "how much beer can i drink" and it came up with an answer in units of inches to the sixth power. Now it gives different output because it interprets the input differently. But in both cases it is not what is intended. 03:10:57 ah yes 03:10:58 You have: kW / cal 03:10:58 You want: 03:10:58 Definition: 238.8459 / s 03:10:59 oh yeah 03:10:59 they do. 03:11:02 when you divide 03:11:05 kallisti, indeed 03:11:07 that leaves you with s^-1 03:11:13 which is hertz 03:11:17 indeed 03:11:31 kallisti, for these things units(1) is better than Wolfram Alpha :P 03:11:40 now to interpret what the hell that means. 03:11:57 But how it gets another different answer from what it was last time I tried before. 03:12:02 kallisti, I don't think the whole sodding thing means anything :P 03:12:08 * kallisti thinks about hertz and how they could relate to german electricity consumption per calories in a solar mass of burger king hamburgers 03:12:34 kallisti, shouldn't you get an unit-less ratio out of this? 03:12:41 no 03:12:46 why not 03:12:46 both of those quantities have units. 03:12:51 well yes 03:12:55 that are not directly inverse. 03:13:01 therefore there is a unit. 03:13:05 in the result of dividing them. 03:13:12 It asked if I wanted to make it interpret it as a multiplication, so I selected that option and it came up with an imaginary number of square drinks (I don't know what kind of unit that is?) 03:13:14 er, not directly equal rather 03:13:17 since you're dividing 03:13:24 if you were multiplying inverses you would get a unitless quantity. 03:13:25 kallisti, oh right, is that "german electricity consumption per year"? 03:13:35 -!- androidgravisom has joined. 03:13:51 KW-hours per year 03:13:56 kallisti: http://stackoverflow.com/questions/8651316/is-there-a-functional-representation-for-strict-evaluation 03:14:06 and kWh just means some number of J 03:14:18 And it still cannot compute ecliptic coordinates 03:14:29 and cal translates into J as well iirc 03:14:31 which mean J/y / J 03:14:34 (Even though their blog once mentions ecliptic coordinates) 03:14:39 which cancels out to give hertz 03:14:41 indeed 03:15:42 androidgravisom: well? you better get to answering 03:15:47 if you want your SO rep to go up. 03:16:03 you should explicitly mention how seq has side-effects. 03:16:08 this is important. 03:16:09 kallisti, for these things units(1) is better than Wolfram Alpha :P 03:16:16 Drink!!!!! 03:16:18 lol 03:16:20 Seem 03:16:21 Drink!!!!!! 03:16:22 Seem 03:16:23 androidgravisom, at least I find it easier to use 03:16:25 Seem 03:16:28 Seem 03:16:29 also I don't get the reference 03:16:31 Erm 03:16:36 Frink 03:16:39 lol 03:16:42 ah 03:16:42 Finally. 03:16:44 frink 03:16:45 right 03:16:51 Seem! 03:16:52 androidgravisom, seem? really? 03:16:57 Yes. 03:17:11 androidgravisom, I guess that keyboard app wasn't that good when you type names of things 03:17:24 For "erm". 03:17:28 -!- DCliche has joined. 03:17:39 The paths are almost identical, so... 03:17:46 right 03:17:47 `frink kW/kilocalorie 03:17:51 But it's really quite lovely in general 03:17:56 right 03:18:00 why is hackego so slooooowww... 03:18:00 2500/10467 (approx. 0.23884589662749595) s^-1 (frequency) 03:18:08 kallisti, because iirc it runs on codu 03:18:18 which is slooow 03:18:22 `run time frink kW/kilocalorie 03:18:34 2500/10467 (approx. 0.23884589662749595) s^-1 (frequency) \ \ real.0m8.490s \ user 0m8.660s \ sys.0m0.250s 03:18:39 Frink is slow to start up to boot 03:18:57 what else can frink do? 03:19:03 Everything. 03:19:05 runs in 3 seconds on my machine. 03:19:08 apart from that? 03:19:09 Seriously. 03:19:11 user time. 03:19:22 Google the dogs, they're amazing 03:19:26 is it in ubuntu repos? 03:19:26 Lol 03:19:34 no 03:19:41 right, got a link then? 03:19:47 http://google.com 03:19:48 I wanted bohlen-pierce music, so I typed in "bohlen-pierce" and its answer is 7646 km 03:20:00 androidgravisom: don't worry, I've got this covered. 03:20:18 androidgravisom: you can save yourself from trying to use your shitty keyboard to talk to Vorpal. 03:20:21 Vorpal: no, it's (the single best) closed source thing I've ever used 03:20:32 Thankfully it's fully extensible. 03:20:33 -!- Klisz has quit (Read error: Operation timed out). 03:20:33 oh closed source, right 03:20:38 -!- DCliche has changed nick to Klisz. 03:20:51 androidgravisom: better than dwarf fortress? 03:20:53 64-bit version around? Or do I need to mess with 32-bit libraries? 03:21:00 kallisti: fsvo sorry 03:21:03 Sorry 03:21:06 Sorry 03:21:08 Sit 03:21:10 lol 03:21:11 heh 03:21:23 androidgravisom, that typing thing sucks I think 03:21:23 Virtual: it's java 03:21:32 virtual? really? 03:21:32 -!- cheater has quit (Ping timeout: 276 seconds). 03:21:33 who is that 03:21:42 Nah, it's fifty times better than iPhone keyboard 03:21:46 well okay 03:21:54 my blackberry keyboard is awesome. 03:22:00 It doesn't know your nicks though 03:22:04 :p 03:22:06 androidgravisom, but compare to an actual keyboard. It is less bulky sure, but typing accuracy seems terrible 03:22:17 Only because I'm going way too far 03:22:22 Fast 03:22:31 androidgravisom, I should so change to a nick like ][_a328ds 03:22:32 I only started using it yesterday 03:22:46 It seems wrong so I entered "what is wrong with you" and its answer is "Human Discourse: Additional functionality for this topic is under development..." 03:23:18 Remember when I used to show incoherent babble with my iPhone every night? 03:23:28 androidgravisom, I tried to forget 03:23:31 Now I use a computer instead. 03:23:42 Windsor. 03:23:46 Windsor. 03:23:49 .... 03:23:51 Windsor. 03:23:57 come on 03:23:57 Timeout 03:24:02 So now make up a open-source/free-software version of a similar thing, so that everyone can correct it if it has these kind of problem 03:24:07 lol 03:24:29 -!- PatashuXantheres has joined. 03:24:51 androidgravisom, idea: read line then decide if you actually want to send it. 03:24:53 (You might even if it is wrong, for the comedic value. I assume that is what you are doing actually) 03:25:05 Btw I'm deliberately trying to say things I know won't be in its dictionary for comedy purposes 03:25:15 :p 03:25:18 figures 03:25:29 androidgravisom, what were you trying to say instead of "Windsor"? 03:25:35 actually "timeout"? 03:25:40 Ringgit. 03:25:43 Sigh 03:25:45 no 03:25:49 Rimshot 03:25:57 Ringgit is not even a real word 03:26:11 how could that be in the dictionary 03:26:15 that makes /no/ sense 03:26:16 That sigh was actually an argh 03:26:22 hah 03:26:46 oh god, I'm actually laughing out loud thanks to this but there are people sleeping in the next room 03:26:47 :( 03:26:50 -!- Patashu has quit (Ping timeout: 240 seconds). 03:27:10 Just sooooo playing for the comedic presuppose please 03:27:31 ? 03:27:33 what? 03:27:39 Sooooo? SERIOUSLY? 03:27:43 presuppose? seriously? 03:27:51 That's not a word exclamation marks 03:28:08 heh 03:28:18 it wrote out "exclamation marks"? 03:28:22 `words --eng-all 25 03:28:26 No, admittedly 03:28:29 formode postaft prepa eul grit ambiecurr olbau zre poult rich nob ping flyiatherasyah curly hratysell blach sedenting ceri ocapu uni vexegel colefficefn bach yol baitj 03:28:29 I did that 03:28:29 androidgravisom, aww 03:28:53 what would cause the real time to faster than the user time. 03:28:57 Let me try and type that word output 03:28:57 androidgravisom, " Just sooooo playing for the comedic presuppose please" <-- what /were/ you trying to say? 03:29:11 type that word output? 03:29:14 right 03:29:56 "User+Sys will tell you how much actual CPU time your process used. Note that this is across all CPUs, so if the process has multiple threads it could potentially exceed the wall clock time reported by Real." 03:30:00 ah 03:30:09 Dormouse p post period will get it Albrecht play are our rich Nov ping gooseflesh curly hardshell blah assenting CEO I pappy uni verbal Colleen Bach tool batik 03:30:17 GOOSEFLESH 03:30:23 androidgravisom, ... 03:30:50 androidgravisom, this is too absurd to be funny. Because there is no way I can even guess what was meant 03:31:20 I was reproducing the output of the words program 03:31:21 androidgravisom, and gooseflesh seems fairly reasonable 03:31:26 Badly. 03:31:29 androidgravisom, ah 03:32:07 androidgravisom, I have to say a real keyboard is superior. Just imagine writing haskell code with that thing of yours 03:32:12 that would just be terrible 03:32:22 or any sort of code even 03:32:37 Not a real keyboard that would fit into 7 inches 03:32:38 cobol? 03:32:46 androidgravisom, well obviously 03:32:56 Anyway, it's just need an appropriate dictionary 03:33:02 For Haskell 03:33:12 androidgravisom, I'm just saying that for many tasks a device with a real keyboard, such as a laptop, is superior 03:33:31 but tablets are the future 03:33:33 sorta like a c64 basic dictionary? :-D 03:33:33 I'm writing on a laptop atm 03:33:39 Okay? I don't think that's a controversial opinion 03:33:44 it is not as good as a desktop keyboard. 03:33:50 Sooooo I'm knot sure what your point is 03:33:54 Sooooo 03:33:57 Wow 03:33:59 Okay? I don't think that's a controversial opinion <-- I'm not aiming to be controversial 03:34:04 -!- cheater has joined. 03:34:10 Sooooo I'm knot sure what your point is <-- wut? 03:34:10 It assumes I want so by default now 03:34:15 Ha, then it doesn't 03:34:21 androidgravisom, what did you actually want? 03:34:29 So 03:34:31 can't you type it out slowly 03:34:39 Just pronounce the line 03:34:46 It remains coherent 03:34:54 androidgravisom, well knot -> not obviously 03:35:26 Yes, I do agree they ought to have physical keyboard 03:35:47 androidgravisom, you could fit a keyboard into that thing 03:35:59 No you couldn't 03:36:00 androidgravisom, remember those old thinkpads with keyboards that folded out? 03:36:04 you could do that 03:36:11 Tearaway 03:36:16 -!- DCliche has joined. 03:36:18 Yeaaaaah 03:36:26 tearaway keyboard? 03:36:26 nah 03:36:31 Lol 03:36:32 I don't think that is a good idea 03:36:39 I'm trying speech recognition again 03:36:42 https://en.wikipedia.org/wiki/IBM_ThinkPad_Butterfly_keyboard 03:36:44 androidgravisom, ^ 03:36:48 It seems to be better now that = British 03:36:57 Wow this is actually coherent 03:37:02 it is 03:37:06 Busy I apologise for everything 03:37:11 apart from the = 03:37:11 Is 03:37:13 and now it fails 03:37:18 Busy 03:37:28 F I ZZIE 03:37:48 Actually plants that outlet by letter 03:37:48 "androidgravisom, [...] I apologise for everything" 03:37:51 right 03:37:57 that works 03:38:04 I was apologising to FI ZZ ie 03:38:07 -!- calamari has quit (Ping timeout: 252 seconds). 03:38:07 you are sorry for everything you did? 03:38:19 Actually plants that outlet by letter <-- what 03:38:20 was that 03:38:21 For my comments about speech recognition 03:38:26 ah 03:38:28 I was apologising for those 03:38:32 ah 03:38:48 I do think " Busy I apologise for everything" is quote-worthy though 03:38:51 It was I actually pronounce that out letter by letter 03:39:27 She should ship 03:39:54 that sounds dirty 03:39:55 Book shop shop shop a couple couple of 03:39:56 -!- Klisz has quit (Ping timeout: 248 seconds). 03:40:07 a tounge twister or some kind? 03:40:18 tongue* 03:40:37 I don't think it wants me to say duck 03:40:39 Duck 03:40:41 Duck 03:40:45 Duck 03:40:47 fuck? 03:40:49 -!- cheater has quit (Ping timeout: 240 seconds). 03:40:51 Yes 03:40:55 what the duck. 03:41:03 androidgravisom, that is silly 03:41:09 I don't give a flying. 03:41:10 androidgravisom, try other vulgar language? 03:41:11 Lol 03:41:23 It cut off the"duck" 03:41:35 come on, where did that space go? 03:41:54 Kids shopping but I don't give 03:42:00 ... 03:42:01 LOL 03:42:15 where did "Kids shopping" come from? 03:42:28 No clue 03:43:00 does google provide the speech recognition software? 03:43:21 it actually seem better than the built in one on OS X from my experience with that one 03:43:31 unless it just sucks at accents that badly 03:43:36 It's dragon 03:43:48 I think it's a Swype specific thing 03:43:48 until it took an arrow to the knee? 03:43:52 Due 03:43:53 Site 03:43:56 Due 03:43:58 Due 03:44:00 Die 03:44:14 Die die die die die 03:44:26 Tasty 03:44:30 ... 03:44:31 lol 03:44:48 androidgravisom, anyway you said dragon 03:44:52 what did you expect 03:45:09 I keep going in feet 03:45:17 And keep dragging my feet 03:45:18 you are? 03:45:26 I keep dragging my feet 03:45:33 I keep track on my feet 03:45:39 really 03:45:44 You think 03:46:00 wait is this repeating whatever it think you said and see if ends up consistent? 03:46:07 I keep driver Matthew 03:46:11 that could be fun 03:46:15 and what 03:46:32 No, but I'll try that now 03:46:44 why is it that software failing at speech recognition is so funny? 03:47:03 I'm great grandson and I approve this message 03:47:12 I'm great grandson and I approve this message 03:47:18 hm 03:47:20 I agree Branson and I approve this message 03:47:31 working out great so far 03:47:43 I agree Bronson and I approve this message 03:47:55 I agree Johnson and I approve this message 03:47:56 tell me what the original was instead of "great grandson" btw. Using typing or something 03:48:05 I agree Johnson and I approve this message 03:48:14 "photoluminescent" 03:48:19 heh 03:48:24 "colloinkgravisom" 03:48:28 oh 03:48:30 :/ 03:48:35 I agree Johnson and I approve this message 03:48:36 I thought it was "photoluminescent" 03:48:43 "photoluminescent" is so much better 03:48:48 I'm totally messed it and I approve this message 03:48:57 it certainly did! 03:48:58 Went to the lesson 03:49:05 what it cut it short!? 03:49:07 Virtually no less 03:49:07 :( 03:49:15 Forgiveness 03:49:31 no you shall not be forgiven for your mangling of the message 03:49:32 Photos and wanted 03:49:41 I'm sorry 03:49:43 lol 03:49:58 wait it turned "photos and wanted" into "I'm sorry"? 03:50:00 -_- 03:50:28 -!- azaq23 has quit (Quit: Leaving.). 03:52:11 Nah 03:52:23 I was going for photoluminescent 03:52:47 Dangling guardian PDT the superior soul 03:53:01 ... 03:53:02 :( 03:53:30 Dangling guardian PDT the superior soul <-- what was that 03:53:45 I'm not sure. 03:53:50 heh 03:54:17 -!- cheater has joined. 03:59:14 hi 04:03:03 -!- androidgravisom has quit (Ping timeout: 252 seconds). 04:04:52 "Can you spot what's wrong with what I'm doing? I'm at a loss. The complaining about constructing infinite types really ticks me off because I though Haskell was all about that sort of thing. It has infinite data structures, so why the problem with infinite types? I suspect it has something to do with that paradox which showed untyped lambda calculus is inconsistent. I'm not sure though. Would be good if someone could clarify." 04:04:54 this guy is 04:04:57 dunning-kruger personified 04:05:01 he'd get along great with kallisti 04:06:04 lolwat 04:06:15 I would never associate myself with this uneducated trash, hmph. 04:06:36 i encountered that paradox while snooping around on wiki 04:06:42 but apparently they fixed it 04:06:48 or did they? 04:07:11 speaking of dunning-kruger 04:07:57 the dunning-kruger effect in educational materials 04:08:18 colloinkgravisom: it complains about infinite types because infinite types are /impossible/. Anyone with a brain knows this. 04:08:24 sheesh. 04:08:28 i guess that works 04:08:30 kallisti: ur joking too rite 04:08:33 all primates have brains 04:08:35 no. 04:08:36 (yes) 04:09:19 itidus21: deep 04:09:54 apart from monqy 04:10:00 he has brane 04:10:09 My guess would be that Haskell doesn't support infinite types because a) it needs types to be fully realized by the end of compile-time b) infinite types cause the compilation process to not halt thanks to (a) 04:10:15 is that correct? 04:11:31 wrong and wrong 04:12:12 :( 04:13:12 -!- const has quit (Quit: I found a 1 /dev/zero). 04:13:34 i found a 1 /dev/zero 04:15:14 colloinkgravisom: this is a hard question to google for. can you clarify? 04:16:53 what i have learnt so far in my time here is that mathematics of computation, cellular automata, turing machines, haskell curry, alonzo church, lisp, haskell, brainfuck .. all form a stratum of topics which you will never find in a volume of sams teach yourself c++ in 21 days 04:17:33 that would be a shitty C++ reference if it randomly talked about lisp and brainfuck. 04:18:17 s/shitty/best/ 04:18:35 its not really a reference though so much as set of lessons 04:18:45 kallisti: anyway no infinite types are not really problematic. we have lists f.e. 04:18:51 but many programs start typing that we don't want to. 04:18:56 and i don't know what it does to inference 04:19:22 "And so, to dereference a pointer you use the * operator. Also, Alonzo Church was born in 1903." 04:19:36 colloinkgravisom: I assume you mean infinite type-level lists?? 04:19:42 infinite lists do not have an infinite type in Haskell. 04:20:01 kallisti: is there a way to tell you you're being stupid without hurting your feelings 04:20:13 can you just clarify this simple point? 04:20:27 i don't actually understand any of the topics i listed :P 04:20:47 i just realize that something about them. some ineffable quality in them forms the basis of esoteric programming 04:20:50 [a] = Maybe (a, [a]) 04:21:04 itidus21: no, more like it forms the basis of what we talk about 04:22:04 somewhere i learned that lewis carroll wrote a book about how people should learn euclid directly from euclid instead of modern textbooks 04:22:16 whether that is actually what the book is about i won't be sure until i've read it 04:22:45 you should learn lewis carroll talking about euclid directly from lewis caroll instead of internet renditions 04:23:07 i downloaded the book, just haven't read it yet 04:23:17 (yet is a bit hopeful) 04:23:17 colloinkgravisom: hm. 04:23:19 colloinkgravison: Yes that is one way. 04:24:02 colloinkgravisom: but that won't type in Haskell. 04:24:14 kallisti: yes. because infinite types are banned. 04:24:18 it's easy for someone to learn assembly language without ever being aware of turing or functional programming, etc... 04:24:33 today we learned kallisti saying "uneducated trash" is the prelude to irony 04:24:51 colloinkgravisom: except they're no problem becauses of lists f.e. 04:24:53 ? 04:25:34 so for someone who only knows BASIC, as perhaps included in a manual in a commodore 64 box, then assembly language might seem elite to him. but for the assembly language programmer then lambda calculus might seem elite to him 04:25:34 My guess would be that Haskell doesn't support infinite types because a) it needs types to be fully realized by the end of compile-time b) infinite types cause the compilation process to not halt thanks to (a) 04:25:34 You can define a recursive type by newtype 04:25:38 your reasons are incorrect 04:25:52 because lists are infinite types (behind data-type wrapping) and neither (a) nor (b) applies 04:26:09 colloinkgravisom: but Haskell doesn't really consider them infinite types does it? 04:26:14 itidus21: lambda calculus is about a billion times easier than any assembly language 04:26:28 kallisti: it's an abstract entity, i'll leave the psychoanalysis to you 04:26:39 I guess Haskell just permits a subset of infinite types that can be formed via product and sum types. 04:27:07 what 04:27:10 you're dumb 04:27:19 brb 04:27:31 * colloinkgravisom 's patented educational method is based on a healthy amount of superiority and burning hatred for all inferior to him 04:27:49 as you can see it's super effective. 04:27:53 * pikhq discovers the Kindle is pretty much a perfect manga raw reading device 04:27:58 kallisti: in entertaining me, yes 04:28:12 colloinkgravisom: really? you always seem pretty annoyed 04:28:16 especially if I continue being confused. 04:28:25 that's part of the fun 04:28:38 it's more like... disgust 04:28:38 "gee, no matter how many times I tell him he's stupid or wrong, he continues being stupid and wrong! so frustrating" 04:28:58 like im sure in ancient times people went to watch i dont know natives rip each other apart 04:29:16 revelling in their savagery and idiocy, actually this never happened, probably what actually happened was genocide or something 04:29:21 but the spirit is there 04:29:32 i'm making a lot of sense, i think i'll knock myself unconscious soon 04:30:09 okay so Haskell supports infinite types, but not at the type... level? I mean, I get that lists are an infinite type, but not how to word why Haskell permits it and not other infinite types. 04:30:34 you seem to be having trouble with the what, not why 04:31:47 basically you're saying because infinite data structures such as lists are isomorphic to infinite types, Haskell supports infinite types. right? 04:32:10 s/isomorphic/equivalent/ I guess 04:32:17 let me try this the third time 04:32:20 My guess would be that Haskell doesn't support infinite types because a) it needs types to be fully realized by the end of compile-time b) infinite types cause the compilation process to not halt thanks to (a) 04:32:26 if either of these were true, then lists could not exist 04:32:31 therefore your reasons are wrong 04:32:39 .. 04:32:47 infer anything about what i am trying to say beyond this at your own peril 04:34:07 well, it has to do with type inference as well. 04:34:51 since [Char] is a concrete type it doesn't have to make the inference that [Char] = Maybe (Char, [Char]) or whatever 04:35:01 whereas something like a = b -> a 04:35:17 is not concrete. 04:35:28 sorry, you passed my threshold of "coherent enough to bother trying to decode" 04:35:28 what 04:35:34 have fun 04:35:38 yes mine too 04:36:43 basically [Char] is done... there are no more inferences to make. 04:37:10 kallisti 04:37:10 stop 04:37:19 also its 5 a m Lauhing Out Loud !!! 04:37:19 colloinkgravisom: no. 04:37:35 I will continue being wrong 04:37:36 loudly 04:37:50 kallisti: everyone present just gave up on you so i guess if you really want to just continue saying things to no avail so that you embarrass yourself more fully on the permanent record that is the logs then 04:37:51 have fun!!! 04:38:14 * kallisti sighs. 04:38:52 #esoteric is a bad place to learn things. 04:38:58 learn? 04:39:00 yes. 04:39:10 i've learned tons and tons here, it's just not a good place to learn really basic things 04:39:19 like what? what is basic about this? 04:39:24 everything 04:39:27 or rather 04:39:36 it's not really basic in and of itself but the parts you are stumbling on are 04:39:37 name things that are basic, I will look them up. problem solved. 04:39:39 anyway monqy tell me to go to bed thanks 04:39:44 go to bed 04:39:55 kallisti: well you obviously don't understand type inference/checking so start there, try [[hindley milner]] 04:40:02 monqy: ok thnx when 04:40:11 you didn't specify 04:40:19 help 04:40:22 D: 04:40:40 we need our qdb to support bold :( 04:40:47 Gregor: please unfilter ctrl+b, ctrl+c, thanxkx 04:40:50 @tell Gregor Gregor: please unfilter ctrl+b, ctrl+c, thanxkx 04:40:51 Consider it noted. 04:41:45 ,monqym, should i bed in 8 hr 04:41:53 ould that be a good idea 04:42:34 idm idfn oidrnt ernt rent knwo 04:42:37 probalbklyjh nto 04:42:39 praobajklyhl: earlier 04:42:42 woduewl be beterjer 04:43:17 7hr 04:43:22 0hr??? 04:43:26 -2 hr 04:43:44 -!- calamari has joined. 04:43:48 ehlp 04:43:50 Maybe if I make Astro-Q, I can include a function to use GPS input. (Astrolog lacks GPS input function) 04:44:18 if you should bed in negative hours you are late to bed 04:44:42 unless you did bed. good job. 04:45:04 i 04:45:05 didnmt 04:45:13 oops 04:45:21 bleeeeeurgh bed is just so ahrd theres so many rules and restrictions and prices and values 04:45:31 and formfilling 04:46:08 for me bed is easeiy i just turn things off then the floor is right there and wow blankeyts how nice 04:46:26 Let's make a list of proposed features of Astro-Q, whether or not any of it will be implemented. 04:47:17 zzo38: universe 04:47:18 spatial 04:47:19 temporal hug 04:47:20 mechanism 04:47:22 friend 04:47:26 (thats one feature) 04:47:27 speech recognition 04:47:30 yes 04:47:35 on-screen keyboard robot mouse 04:47:38 on-screen keyboard robot cat 04:47:40 (they chase) 04:47:46 I don't understand what "spacial temporal hug mechanism friend" means. 04:47:47 i need voice commands for my universe spatial temporal hug mechanism friend 04:47:50 me neither 04:47:54 that's for astro-q to find out 04:48:06 colloinkgravisom: okay, so, [a] is a monotype. 04:48:38 im going to turn off my computer now by 04:48:39 putting my nose 04:48:41 on the powerb utton 04:48:44 and smudging it in 04:48:46 wish me luck monqy 04:48:49 luck luck 04:48:59 help i cant fit 04:49:05 4t5rrttdf 04:49:05 power button may be a bad idea 04:49:07 is it 04:49:11 monqy: okay elliott is leaving, you explain things instead. 04:49:12 i dont know expertise in this area... 04:49:18 aklistey: what tHigns 04:49:31 do you want "explaiend 04:49:51 ytygkyjfuyhtfyuuyyufuyfig 04:49:53 hope that helps. 04:50:00 sorrey i cant explaijn that 04:50:06 it is a mystery of life 04:50:11 Haskell allows infinite types but also doesn't allow infinite types? 04:50:14 what 04:50:16 help. 04:50:19 what 04:50:33 One thing I almost certainly intend to include is all the features of Swiss Ephemeris. So Astro-Q will be a superset of Swiss Ephemeris. 04:51:03 monqy: help. 04:51:14 monqy: where you paying attention earlier? 04:51:42 I updated my D&D recording with the latest session. 04:53:09 -!- colloinkgravisom has quit (Ping timeout: 240 seconds). 04:55:34 how do you describe the infinite types that Haskell allows compared to the infinite types it doesn't allow. 04:55:48 what do you mean allows and not allows 04:56:13 you can have lists, which are an infinite type, but other infinite types are not allowed. 04:56:18 liuke what 04:56:24 a = a -> b 04:56:28 but you can have that 04:57:45 i think its: newtype Ohno a = Ohno (Ohno a -> a) 04:57:50 and then your thing would be: Ohno b 04:57:54 ohno 04:57:59 You cannot have any infinite types, not even lists. But what you can have is types where some or all of its constructors have have reference to themself 04:58:13 And values do the same thing 04:58:34 yes. okay. that's what I already knew, then. 04:59:46 kallist6ey what do you mean by infinite types 04:59:53 -!- pikhq_ has joined. 05:00:28 monqy: I don't know. Basically elliott said lists are infinite types and then I got confused. 05:00:43 * Sgeo has top comment on a YouTube video 05:00:46 * Sgeo feels weird 05:00:47 congrats. 05:00:48 conmgratualtieosne 05:01:06 kallisti: well if you don't wnknow what your'e asking aobut: :?????? 05:01:17 it's hard for me to help 05:01:46 sgeo is it a bad video 05:02:10 http://www.youtube.com/watch?v=fA7UqQtUS7g 05:02:30 -!- pikhq has quit (Ping timeout: 240 seconds). 05:02:40 good top comment 05:05:00 I'm confused as to why "Haskell doesn't allow infinite types" is an incorrect statement. 05:06:04 because at least to elliott infinite types means something that haskell does anllow 05:06:18 okay, that's what I figured. 05:07:11 but in Haskell, [a] is not considered infinite type.. 05:07:26 unless a is an infinite type. 05:09:12 theoretically, [a] = (a, [a]) | [] ...but Haskell does not treat as equivalent to this in any way. 05:09:29 for the purposes of type inference. 05:10:57 Algebraically it is still f(x) = x f(x) + 1 and you can factor and expand and whatever 05:11:23 so I guess it's fair to say that Haskell can't make recursive type inferences. 05:11:26 but can allow infinite types. 05:12:44 waht 05:13:12 how is that confusing? 05:13:17 whats this about inferences again 05:13:18 Assume x and f(x) are cardinal numbers. If x is nonzero then f(x) will be infinite, I think. 05:14:48 monqy: basically, if Haskell infers a type to be infinite within its type system then it doesn't allow that. If you define a recursively infinite data type (which is theoretically an infinite type) with data/newtype then it can allow this. 05:15:12 If x=1 then f(x) is aleph zero as far as I can tell. The type [()] is like natural numbers but can also be infinite list. Its only property will be its length. 05:15:13 ????? 05:16:02 monqy: I feel as though basically anything I'm about to say is going to sound like meaningless gibberish to you. 05:16:07 yes 05:18:23 > let intersperse _ [] = []; intersperse _ [x] = x; intersperse s (x:y:xs) = x:s:y:intersperse s xs in intersperse '|' ["a", "b", "c"] 05:18:24 Occurs check: cannot construct the infinite type: a = [a] 05:18:34 monqy: this is a recursive type inference. it's not allowed. 05:19:35 data [a] = a : [a] | [] -- syntax errors notwithstanding, this contains a recursively defined product type and that's OK. 05:19:51 also not allowed: type Bad = [Bad]; what does htis have to do with inference 05:20:18 because that's the type it's trying to construct via inference. 05:20:19 monqy: That is because it is a macro 05:20:26 Kind of 05:21:08 monqy: it has inferred that a is a recursive type... it can't do those when they're inferred in this way (or a type alias as you just said) 05:21:46 kallisti: but does it have anything to do with the inference or does it just happen that inference is the only way to get it to go bad 05:22:02 possibly the latter. 05:22:09 possibly 05:22:17 I think the reason recursive data structures are allowed is because /Haskell does not consider them to be infinite types/ 05:22:23 what 05:22:33 -_- 05:23:35 because Haskell considers [a] to be... [a]. not Maybe (a, [a]) 05:23:43 -!- MDude has changed nick to MSleep. 05:24:08 obviously if you write type [a] = Maybe (a, [a]) 05:24:12 and it only has problems if it considers stuff to be infinite types, regardless of if they actually are 05:24:13 haskell will complain about an infinite type. 05:24:18 monqy: yes 05:24:23 no 05:24:24 monqy: that is what I just said. 05:24:26 i was being 05:24:27 joke 05:24:29 i 05:24:30 oh 05:24:39 ? 05:25:11 You could probably do: newtype Bad = Bad [Bad]; bad1 :: Bad; bad1 = Bad [Bad [], Bad [], Bad [Bad [], Bad []], Bad [bad1], bad1]; O! Does this kind of mathematical structure have a standard name? ("Bad" probably isn't its standard mathematical term) 05:26:31 monqy: so then what is the best way to describe this different. 05:26:36 *difference 05:26:55 the difference between a recursive type inference and a recursive data type. 05:27:05 that makes one unacceptable and the other one okay. 05:27:08 HOW DO YOU SAY THIS 05:27:12 IN A WAY THAT DOESN'T CONFUSE PEOPLE AAAAAAAH 05:27:15 it has to do with stuff 05:27:20 official monqy answer 05:28:06 I think it has to do with Haskell not treating recursive types defined via data and newtype to be infinite types. 05:28:14 dont 05:28:15 say 05:28:15 that 05:28:16 aagh 05:28:17 at the type level. 05:28:18 ? 05:28:19 aaagh 05:28:47 i dont know how to explain these things 05:28:47 im 05:28:49 bad at explain 05:29:19 because at the type level [a] is not recursively defined. it's just.. [a] 05:29:28 there is no infinite loop. 05:29:32 ooh 05:29:33 i dfounfd 05:29:35 a thing 05:29:36 that might 05:29:37 help 05:29:40 maybE 05:29:47 or is IT?? 05:30:00 ??????????///////// 05:30:05 it has a really dumb name its called an occurs chekc???? 05:30:32 but it might not ehlep... 05:31:36 yes that helps. 05:31:42 ok 05:31:48 I wondered what "occurs check" meant... 05:32:08 I had not considered that it was a thing 05:33:46 What is the mathematical structure newtype X = X [X]; called? Mathematically, what typeclasses can it belong to? I think it is a monoid. Is it a semiring or anything else? 05:34:41 it looks to me like an ordered set. 05:34:53 wh 05:35:06 .. 05:35:10 hhh 05:35:12 hhhhh 05:35:51 how is it a set it can contain duplicates?? 05:36:02 an ordered multiset. :P 05:37:01 im not seein ght eorder 05:37:14 X[ X[ X [], X[], X[]], X [], X[X [], X[], X[]]] 05:37:18 weeeee 05:37:21 waht 05:37:44 what? 05:37:56 what 05:38:11 that is an example of newtype X = X [X] 05:38:11 One of my questions means does this *specific* mathematical structure have a name. 05:38:34 kallisti: by ordered multiset did you mean: list?????? 05:38:46 well, yes, it's also one of those. 05:38:57 but it allows arbitrary nesting. 05:39:10 like a set, and it has an order, like an ordered set, and can has duplicates, like a multiset. 05:40:25 im 05:40:26 giving up 05:40:58 I don't understand what's confusing about that. 05:41:15 i;ll let future colloingkravisom sort this out, or not bother to, or whatever he wants to do,.., 05:41:40 *colloinkgravisom 05:42:21 congratulatiosn won conrrrecting my words 05:42:29 * Sgeo did not get a single A this semester. 05:42:34 oops 05:43:23 4 As and an A- 05:43:25 >.> 05:43:25 monqy: other mistakes are permissible. 05:43:34 but you can't misspell colloinkgravisom. 05:43:42 o k 05:43:42 it's (c) kallisti 05:43:55 can i misspell kallisti? i already have, in the past. 05:44:03 yes 05:44:11 kallisti is not (c) kallisti 05:44:21 callistey (C) not kallistey 05:44:36 colloinkgravisom however is a work of art that I (er, well, a progfram I wrewote) made 05:45:50 -!- Vorpal has quit (Ping timeout: 276 seconds). 05:53:12 -!- Sut-Heb has joined. 05:54:41 -!- Sut-Heb has left. 06:10:07 "Casts Aboleniency: Allows +8 on all saving rolls on sneaking an aboleth into the dinner party" [This seems a very specific kind of spell. And also not applicable to the current situation in the game.] 06:10:44 @tell Hey, so I don't think [a] = Maybe (a, [a]) because there's no equivalent to (Just _|_) or (a, Just _|_) or .. 06:10:44 Consider it noted. 06:10:48 lol 06:10:52 @tell elliott Hey, so I don't think [a] = Maybe (a, [a]) because there's no equivalent to (Just _|_) or (a, Just _|_) or .. 06:10:53 Consider it noted. 06:10:57 -!- kallisti has changed nick to Hey. 06:11:05 hi 06:11:08 @clear-messages 06:11:09 Messages cleared. 06:11:09 elliott isn't called elliott anymore 06:11:20 -!- Hey has changed nick to kallisti. 06:11:36 once you go colloinkgravisom you dont go back.......... 06:12:00 @tell colloinkgravisom Hey, so I don't think [a] = Maybe (a, [a]) because there's no equivalent to (Just _|_) or (a, Just _|_) or .. 06:12:01 Consider it noted. 06:12:24 also: what 06:12:45 newtype T = T A 06:12:57 T is not isomorphic to A because there is no equivalent to T _|_ 06:13:24 what 06:13:28 ..? 06:13:33 precisely 06:13:39 indeed 06:13:47 help 06:13:50 I honestly don't know how to make that more clear. 06:13:58 it sounds 06:13:59 confused 06:14:09 But newtype makes them automatically unwraps when compiled? 06:14:29 i probably said something bad a while ago though oops....i hope it wasnt really really bad 06:14:36 because that would be 06:14:37 bad 06:14:54 zzo38: hmmm... 06:15:04 Maybe if you put data instead of newtype 06:15:07 yes. 06:15:27 what 06:15:44 monqy: what is the equivalent of T _|_ for type A 06:15:51 But in generally you can ignore _|_ if you want to. 06:15:52 everything else maps to an equivalent value 06:16:05 i dont understand your question 06:16:27 >_> 06:17:32 _|_ = _|_; T a = a; T _|_ = ??? 06:17:40 what 06:17:53 they aren't isomorphic 06:17:54 becase 06:17:55 of that. 06:18:05 because of what 06:18:09 i dont understand what you mean with that 06:19:00 I mean there's no bijective map between T and A. 06:19:08 because of... 06:19:16 because of what 06:19:18 that lack of a mapping for T _|_ to something in A. 06:20:14 so T _|_ is a value? 06:20:17 yes. 06:20:23 newtype T = T A 06:20:30 ok 06:20:31 maps to _|_ 06:20:32 or, just 06:20:38 no _|_ maps to _|_ 06:20:39 _|_ inhabits every type 06:20:42 what 06:20:51 o 06:20:52 if _|_ mapped to T _|_ 06:20:56 then what maps to _|_? 06:21:27 I think that is the difference between newtype and data, or am I wrong? 06:21:36 zzo38: yes it does unwrap in compilation. 06:21:44 so data T = T A 06:21:49 i;ll fall back to a nitpick: dont conflate bijections and isomorphism B) 06:22:17 I'm not. I'm saying it usually helps to have a bijective map if there's an isomorphism 06:22:20 since that's like... the thing. 06:22:22 that you need. 06:22:35 a thing that you need 06:22:42 yes one of them 06:22:45 a necessary thing. 06:24:07 zzo38: I had forgotten about the C _|_ = _|_ thing. thanks. 06:24:58 but whats this about _|_ mapping to _|_ 06:25:13 is that a thing 06:25:21 i guess so 06:25:22 but 06:25:23 well, if T and A are sets of their values. 06:25:36 then to make a bijective map, the easiest starting point would be to say _|_ maps to _|_ 06:26:44 I think you can usually just ignore _|_ for figuring out their mathematical properties. Otherwise everything would be a monad and comonad and everything else. 06:27:05 return _ = _|_ --yay! 06:27:19 ignoring _|_ makes me feel good inside 06:27:24 _|_ is scarey 06:27:25 Instead you can say that they mean, sometimes something is mathematically undefined 06:27:37 Which is why it is undefined 06:28:14 Like, factorial of negative integers is undefined. 06:28:39 kallisti: oh right with that bijective map thing i was talking about: i rem,embered the point iwas trying to make with the nitpicL: but forgot to say: sometimes you can make a bijective map??? 06:28:52 yes, you can. 06:28:54 that is possible. 06:28:56 (???) 06:29:12 yes,,,,,, 06:30:39 say A is natural nubmers and bottom. _|_ -> _|_; T _|_ -> 0; T 0 -> 1; ... that is assuming this whole mapping bottoms thing isnt fundamentally fdlawed 06:32:22 You can't map bottoms! It is not mathematically correct to do so. 06:32:27 -!- augur has quit (Remote host closed the connection). 06:32:44 this makes me feel better 06:33:07 because this whole mapping bottoms thing feels really dumb 06:33:14 and bad 06:33:18 and icky 06:34:02 why 06:34:04 hi 06:34:09 hi 06:34:29 it's hard to describe but 06:34:32 it feels wrong??? 06:34:32 I'm going to go work on my horrible evil magic conversion code, but independently of any connection with my Cap stuff 06:34:42 have fun 06:34:45 (i.e. for the hell of it) 06:35:13 kallisti: do you have a definition of what you maen by isomorphism/isomorphic w/r/t haskell types? 06:38:30 -!- kallisti has quit (Ping timeout: 252 seconds). 06:38:34 oop 06:41:28 -!- NihilistDandy has quit (Remote host closed the connection). 06:46:11 -!- NihilistDandy has joined. 06:53:08 -!- DCliche has quit (Quit: You are now graced with my absence.). 06:54:54 Anyone in here use package.el and the marmalade repo? 07:10:41 -!- kallisti has joined. 07:10:41 -!- kallisti has quit (Changing host). 07:10:41 -!- kallisti has joined. 07:13:04 -!- sebbu3 has joined. 07:13:05 -!- sebbu3 has quit (Changing host). 07:13:05 -!- sebbu3 has joined. 07:13:22 -!- sebbu2 has quit (Ping timeout: 252 seconds). 07:15:15 If I make electronic device, including for selling, I have to do it as follows: 07:15:22 * The customer has complete freedom to use it and do what they want with it, including modification, even though that would void the warranty. 07:15:27 * Complete specification must be freely available. 07:15:32 * In most cases, no separate computer is required for its use. But it can be used, regardless of architecture or operating system, if you want to, including for user reprogramming. 07:15:36 * The hardware shall be designed to prevent copy protection and DRM from being implemented on it, and all specification of such is freely available and freely implementable. 07:15:40 * No HDMI/HDCP. 07:15:44 * Book can be available in paper, and in computer DVI file and even the source file in case you want to reformat it. 07:15:52 * It can be protected by copyleft and/or trademarks in order to avoid some bad things 07:15:58 * Hackers and hobbyists can possibly use these device for many interesting things. 07:16:03 * Don't overcomplicate things please. 07:16:07 * For softawre, include source codes and valid free-software/open-source, such as GNU GPL v3, or another license if it is based on another software that uses that other license that is still valid free-software/open-source. 07:16:12 * All business shall be accessible by postal mail, although other methods of communication are still possible. 07:17:36 Are they good so far? 07:18:47 sounds overly complicated 07:18:59 just promise not to sue anyone 07:19:05 problems all solved 07:19:22 lol quintopia 07:20:36 if promises could all be kept then there would be very few troubles in the world 07:21:15 but 07:21:30 keeping such a promise engenders good will with customers 07:21:36 disregard my former post 07:21:55 my former post was not logically sound 07:23:25 My idea "Hypernet" for extra-free decentralized universal anonymous encrypted multi-mode network. 07:24:30 free as in beer too? 07:25:07 i understand quite well (but not perfectly) how problems begin when any given human individual responds to his(or her) wants and needs 07:25:19 Yes. Free as in beer too. And free as in speech too. 07:25:37 the most nasty wants and needs are those which involve positioning in a hierarchy 07:27:11 such as, strongest kid in school, top of the chicken pecking order, boss of the company, 07:27:25 upper class 07:27:44 dominant partner in a relationship 07:27:59 The only purpose authorities would have in Hypernet would be specification of free standards, and would have absolutely no other purpose. 07:28:03 high tier level of dominance in a relationship tree 07:30:58 in order to acquire these hierarchical positions one acquires: money, power, fame, underlings, strength, allies 07:31:24 also having control of a resource that others need goes a long way 07:32:01 I should attempt to understand incoherent instances 07:32:11 Hopefully this last instance doesn't bring the code into that realm though 07:32:18 But I'm not smart enough to guess 07:32:24 an ability to exploit the vulnerabilities in others (as seen with mao tse tung) 07:35:13 Sgeo: why are you doing typeclass hasck,,,,why,,,, 07:35:25 monqy, for fun! 07:35:31 cries 07:35:43 monqy, what? 07:35:53 What's wrong with fooling with stuff for fun? 07:36:02 This should be the last instance I need to write for this 07:36:05 Then I'll post it 07:36:19 -!- calamari has quit (Quit: Leaving). 07:36:24 {-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies, FlexibleInstances, UndecidableInstances, OverlappingInstances #-} 07:37:10 yikes 07:38:57 My code compiles, but I think it's wrong 07:39:22 control can eventually become not a means but an end. a sense of control gained by making someone do those things which are most distant from their own will, to act most distantly against their own self interest 07:39:56 ^distant from their own will and close to the controllers will, distant from their own self interest and close to the controller's self interest 07:39:59 Fixed, compiles 07:40:10 No incoherent instances 07:40:16 Now I need to find a way to test it :/ 07:40:22 What's a nice isomorphism between types 07:40:31 Or at least, close enough that I can test on simple stuff 07:40:41 when it's otherwise all the same, it is important for the controller to find means to induce fear and agony in those he is controlling 07:40:42 Char and Int? 07:41:22 like it's important for north koreans to know that their leader can control the weather (which i am reminded NKs ally china can infact do) 07:41:23 http://hpaste.org/55792 07:41:30 I have only compiled it, I have not tested it 07:41:51 but they are to be kept ignorant and having a superstitious understanding 07:42:06 Kaboom 07:42:39 and.. the controller must be situated in such a way that all hell will break lose if he is removed 07:43:14 http://hpaste.org/55793 07:43:21 in other words, it was in Saddam's interest to make himself a keystone which if removed would ensue a crumbling of the arch 07:44:01 itidus21: I suspect in NK control really *is* a means. The targetted end: an easy fucking life for Kim Jong-Il. 07:44:40 -!- kallisti has quit (Ping timeout: 240 seconds). 07:45:02 it is of course the same in the software world, and in the lawyer world 07:46:56 on a side note it is interesting how many plastic toys are sold by cartoons, where the cartoons are exercizes in advertising toys 07:47:39 and, how as they age the animators of those cartoons probably think about the kind of cartoons which could be made 07:48:03 they must ask themselves "are we dumbing down these stories on purpose?" 07:54:06 -!- augur has joined. 08:00:46 -!- sebbu2 has joined. 08:00:47 -!- sebbu2 has quit (Changing host). 08:00:47 -!- sebbu2 has joined. 08:02:10 -!- sebbu3 has quit (Ping timeout: 240 seconds). 08:08:16 -!- aloril has quit (Read error: Operation timed out). 08:14:02 -!- aloril has joined. 08:39:59 but thats all speculation, sometimes things just turn around 08:52:08 -!- Ngevd has joined. 08:52:12 Hello! 08:54:03 I'll try last night's Haiku again 08:54:09 With Haiku I found 08:54:17 A problem: it lacks support 08:54:21 For my WiFi card 08:55:35 you miss the point of haiku 08:56:01 I know, it needs to be about the passing of the seasons or something 08:57:07 it must include a season reference 08:57:15 also your morae are wrong 09:01:22 this is confusing 09:01:29 i wonder what is being talked about 09:01:36 screw you guys, i'm going home 09:01:53 itidus21, the Haiku operating system lacks support for my WiFi card 09:01:58 This is a problem 09:02:04 (-> (^_^) (-> 09:02:19 I do not understand this emoticon 09:02:36 bad ascii art to indicate pointing home with both hands 09:02:55 Oooh 09:03:38 http://fc07.deviantart.net/fs46/f/2009/204/c/2/Screw_you_guys_I__m_going_home_by_h4X0ry0uL34.jpg 09:03:49 itidus21: china can control the weather? 09:04:03 `log control the weather 09:04:20 02:41:20 < itidus21> like it's important for north koreans to know that their leader can control the weather (which i am reminded NKs ally china can infact do) 09:04:37 well.. i remember saying that but 09:04:40 2011-12-23.txt:00:11:16: itidus21: well, the Chinese government can control the weather 09:04:47 haha.. 09:04:58 ah 09:05:03 I smell sarcasm 09:05:43 `log cloud seeding 09:05:54 2011-12-28.txt:09:05:43: `log cloud seeding 09:06:01 wp 09:06:19 `log control the weather 09:06:24 oops wrong command 09:06:26 2011-12-28.txt:09:03:49: itidus21: china can control the weather? 09:06:29 sorry 09:06:35 `pastelogs control the weather 09:06:42 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.4416 09:07:08 Remember two tricks of hiding the log query: [1] You can put a letter in square brackets [2] You can send the query by private 09:07:09 lazy 09:07:33 lol @ 2008 reference 09:07:48 elliott is the meat of this channel, pikhq is the salad, and zzo38 is the desert 09:11:09 so i have been pondering the ways brainfuck can be applied 09:11:52 It can be more applied with PSOX! Apply today! 09:12:05 as it's wiki page explains, it acts on an array of cells 09:13:25 but it needs complete control over that array eh 09:14:26 -!- oerjan has joined. 09:17:16 like if you were to take an ascii string such as "This is a test.\0" and try to use it as a 16 cell brainfuck array, you couldn't really get very far with it 09:17:50 or could you... 09:18:14 this is where my failure to cognize the distinction between the brainfuck program and the cell array starts to hurt 09:25:11 like it seems to me you would run into trouble that every time you tried to store working numbers, and that doing a string length program would be quite troubling 09:26:24 however, if the string was just used as input, then the program could count the number of input numbers before zero was reached 09:29:32 itidus21: it's actually a little tricky unless you have a 0 before the first T as well, to mark the boundary on both sides (bf tapes often errror out if you go off the left edge) 09:30:47 assuming you have more useable tape to the right, of course 09:30:56 *-r 09:32:32 because if you don't, you will have problems about where to place your counter in such a way as to be able to find the ends of the strings as well 09:32:50 oerjan: the number of times i confuse the difference between the program and the cell tape never fails to amaze me 09:33:07 i think that is the first degree of brainfuckery 09:33:25 itidus21: well there _have_ been esolangs which made them equal, i think 09:34:44 do you know any "normal" programming languages? the cell tape is just the data for the brainfuck program which is the code 09:35:47 and normally when programming you try to distinguish code and data most of the time. except when you're doing tricks based on _not_ doing so. 09:35:51 so, it seems that for the kind of thing i was talking about, a useful extension of brainfuck would be input/output iterators for non-streaming I/O 09:37:08 hm or is oo kind of a subversion of that already. 09:37:55 itidus21: prepare for Phantom_Hoover's brick of wrath 09:38:39 depends what you mean by oo. do you mean object orientation? 09:38:44 yes. 09:38:55 ahh 09:39:43 well i couldn't say if it is or isn't 09:40:15 In writing the annotations for music, I have invented some of my own notations, such as for cadences. Perfect cadence is P, imperfect is P with slash through it, plagal is PL, deceptive is D, closed is a circle around it, semiclosed is half circle, and open has no enclosure. (I is the first letter of "imperfect" but the notation I means the chord on the tonic instead.) 09:40:52 How many of you have ever used your own notations when writing music, or thought about such thing? 09:41:53 Because handwritten uppercase/lowercase is sometimes confused, I don't use uppercase/lowercase roman numerals. I write them all in uppercase. I use + for major, - for minor, x for augmented, and o for diminished; but rarely use them when writing music in major keys since they are implied by the scale. 09:42:03 Sometimes a chord's function is different from its notes; I use double underlines to indicate this when necessary. 09:44:24 elliott is the meat of this channel, pikhq is the salad, and zzo38 is the desert <-- i'm the too fat bearnaise sauce 09:45:45 Gregor writes some music, isn't it? 09:45:57 it would appear so 09:46:31 Has Gregor ever thought about these kind of things like what I have mentioned here? 09:47:18 i don't know 09:47:54 `log [G]regor>.*notation 09:48:01 2010-03-05.txt:20:00:11: AnMaster: The English word has negative connotation. 09:48:34 `log [G]regor>.*music.*notation 09:48:41 2010-01-19.txt:02:58:25: (Lilypond, if you don't know, is TeX for musical notation) 09:49:48 Next time, ask Gregor. 09:51:49 -!- zzo38 has quit (Quit: YES CARRIER). 09:54:00 `pastelogs lilypond 09:54:07 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.20141 10:02:24 `addquote Yes, it is true; I don't really like PHP either. 10:02:27 784) Yes, it is true; I don't really like PHP either. 10:24:37 -!- Phantom_Hoover has joined. 10:31:39 -!- pikhq has joined. 10:31:45 -!- pikhq_ has quit (Ping timeout: 255 seconds). 10:49:16 -!- Taneb has joined. 10:49:17 -!- Ngevd has quit (Read error: Connection reset by peer). 10:58:34 revelling in their savagery and idiocy, actually this never happened, probably what actually happened was genocide or something <-- erm, roman circus. case closed. 11:00:53 sorry, you passed my threshold of "coherent enough to bother trying to decode" <-- never go into teaching, will you? not that i expect you to. 11:02:04 i mean, you are refusing to mention the one piece of information kallisti misses, while he is clearly close to grasping at it, and simultaneously you are deriding him. 11:03:32 clearly you are not arguing in order to help, but in order to fuel your ego by exaggerating other's faults. heck you basically admitted it above. 11:04:17 and not only do you exaggerate other's faults, but you aim your rhetoric in such a way as to trap them further. 11:04:33 it's quite annoying to watch. 11:06:40 *others' 11:06:57 God, oerjan, you suck at grammar so much, I may even leave because I can't be bothered? 11:09:19 I thought of an interesting way to number combinatory logic things 11:10:13 It's probably been done before 11:14:21 -!- kallisti has joined. 11:16:14 hi 11:16:19 Hello! 11:16:23 -!- Taneb has changed nick to Ngevd. 11:16:25 Taneb: what's up? 11:16:28 how's the Haskell going 11:16:31 Alright 11:16:40 I now sort of get what an applicative functor is 11:17:19 Also, I AM ABOUT TO DEACTIVATE MY LARGER FACEBOOK ACCOUNT 11:18:37 -!- Labbekak has joined. 11:19:05 Hello 11:20:33 Ngevd: nice 11:20:36 Labbekak: hello 11:20:43 Labbekak, hello 11:20:45 `welcome Labbekak 11:20:48 Labbekak: 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 11:20:53 kallisti, it had outlived its purpose. 11:21:02 Lots of spam on the wiki 0.o 11:21:10 Labbekak: unfortunately... 11:21:16 It's a wiki with an awful captcha system 11:21:44 ..surely we could make a bot that automatically deletes some spam. 11:22:07 with all of the ridiculous talent we have. 11:22:32 Ngevd: also, that's cool. Applicative is a very useful thing. 11:23:07 do you understand the f <$> x <*> y <*> ... idiom? 11:23:37 * Phantom_Hoover remembers that he still has Ngevd on ignore. 11:23:44 wat why. 11:23:51 LIKING MATT SMITH 11:23:51 My opinions on Doctor Who 11:24:31 kallisti, sort of 11:25:30 I maintain my opinion that Matt Smith is a better actor for the Doctor than David Tennant 11:26:04 Ngevd: Essentially, Applicative abstracts the notion of function application onto a parametric type. 11:26:21 so if you have a function wrapped into a parametric type, Applicative allows you apply that function within that wrapping. 11:26:38 Should I share my intuition of the f <$> x <*> y idiom? 11:26:42 yes. 11:27:04 It allows you to pass someapplicative x arguments as though they were x 11:27:33 likewise, Functor allows you to lift a function into a parametric type. 11:27:47 If x is an IO Int, and y is an IO Char, and f is :: Int -> Char -> String, then f <$> x <*> y will probably do what you want 11:28:12 -!- cheater has quit (Ping timeout: 264 seconds). 11:28:20 It will be an IO String that does the action of x and the action of y then passes those to f and the program to do that is the IO String 11:28:25 yes, that's one way to look at it. It can be used in other situations though. 11:28:46 Note that if f returns an IO whatever, than the new thing will be IO (IO whatever). 11:28:49 This bit me once. 11:29:09 yes <*> retains the wrapping around its return value. 11:29:22 Sgeo, so you'd need to do the <- thingy twice? 11:29:30 if you have a function that returns IO whatever, then you most likely want to use >>= instead. 11:29:41 Ngevd, I could have, but join is a function that essentially does that. 11:29:44 :t join 11:29:45 forall (m :: * -> *) a. (Monad m) => m (m a) -> m a 11:29:51 also >>= allows you to avoid that situation entirely. 11:29:52 *others' <-- damn i had a bad feeling about that word but somehow couldn't quite recall why it was wrong. 11:29:55 Or what kallisti said is probably more idiomatic. 11:30:20 but yes they're equivalent. 11:30:27 join m_m_a = do {m_a <- m_m_a; m_a } 11:30:53 > [1,2,3,4] >>= id 11:30:54 No instance for (GHC.Num.Num [b]) 11:30:54 arising from a use of `e_11234' at er 11:31:10 I maintain my opinion that Matt Smith is a better actor for the Doctor than David Tennant 11:31:12 > [[1,2],[3,4]] >>= id 11:31:13 [1,2,3,4] 11:31:16 -!- SgeoN1 has joined. 11:31:20 This is because you are exceptionally stupid and/or gullible. 11:31:25 > join [[1,2],[3,4]] 11:31:26 [1,2,3,4] 11:31:27 Damn This battery so much 11:31:33 Note I did not mention the episodes 11:31:34 join m = m >>= id 11:31:50 Smith is unbearable in and of himself. 11:33:00 -!- Sgeo_ has joined. 11:33:12 This is why I struggle making friends. 11:33:13 DAMN THIS BATTERY 11:33:55 Ngevd: is there anything that I said that confuses you? 11:34:01 Ngevd, why would anyone want to be friends with someone who likes Matt Smith?? 11:34:04 kallisti, Not really 11:34:12 Phantom_Hoover, Matt Smith would, I assume 11:34:20 > join (Just (Just 'a')) 11:34:21 (a much better question than "does any of this confuse you" because someone is more likely to say "yes" even though they don't mean it) 11:34:21 Just 'a' 11:34:23 No, he knows how awful he is too. 11:34:26 > join (Just Nothing) 11:34:27 Nothing 11:34:28 kallisti, but I think I'm still a bit behind 11:34:31 > join (Nothing) 11:34:32 Nothing 11:34:51 -!- Sgeo has quit (Ping timeout: 240 seconds). 11:35:10 > 2+2 11:35:11 4 11:35:11 This is because you are exceptionally stupid and/or gullible. <-- * oerjan briefly ponders repeating the whole rant above to Phantom_Hoover. wait, you are all like this. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 11:35:14 cool 11:35:40 Ngevd, you know that (+) adds two numbers, right? 11:35:41 Labbekak, pfft. 11:35:45 > (+) 2 2 11:35:46 4 11:35:50 Watch: 11:35:52 > let 2 + 2 = 5 in 2 + 2 11:35:53 5 11:36:02 s/repeating/redirecting/ 11:36:04 > (+) <$> Just 2 <*> Just 3 11:36:05 Just 5 11:36:11 Sgeo_, I did not know that. I must have got it confused with ++ 11:36:13 Ngevd, does that make sense? 11:36:15 oerjan, no, not really. 11:36:25 Sgeo_, yes 11:36:26 It's justified in this case because Matt Smith. 11:36:28 Ngevd: lol 11:36:32 > do { Nothing } 11:36:32 Nothing 11:36:47 > do { return () } 11:36:48 No instance for (GHC.Show.Show (m ())) 11:36:48 arising from a use of `M466201207... 11:36:49 Ngevd: (am I the only one that detected sarcasm?) 11:37:02 kallisti: (sarcasm was there) 11:37:04 (please say no) 11:37:09 * oerjan sits down on his lawn with his cane and recalls something the youngsters call "dissing" 11:37:35 Ngevd: okay so, I'll just explain the f <$> x <*> y idiom briefly 11:37:41 ARE YOU A CLOSET MATT SMITH SUPPORTER 11:37:41 Ngevd: are you aware of <$>? 11:38:06 Yes, it's an expression of the supremacy of the almighty dollar. 11:38:11 Greater than all around it. 11:38:14 kallisti, it takes a function and a value inside a functor and does the function on the value inside the functor? 11:38:45 Ngevd: yes it's fmap. that's basically what I was asking. 11:38:46 It .. kind of, but the result is wrapped in the functor 11:38:49 > random (mkStdGen 949494) :: (Int, StdGen) 11:38:50 (261237333865217244,75809027 2103410263) 11:38:57 :t succ 11:38:58 forall a. (Enum a) => a -> a 11:39:03 > succ 1 11:39:04 2 11:39:06 :t fmap 11:39:07 forall a b (f :: * -> *). (Functor f) => (a -> b) -> f a -> f b 11:39:08 :t <$> 11:39:09 parse error on input `<$>' 11:39:11 > succ <$> (Just 1) 11:39:12 Just 2 11:39:12 > join (.) succ 0 11:39:14 2 11:39:17 Maybe is a functor 11:39:33 I knew maybe is a functor 11:39:46 Huh, it is fmap. 11:40:00 Sgeo_: I believe that's what he meant by "inside the functor" 11:40:05 Oh, ok 11:40:06 I thought it was f (a -> b) -> f a -> f b for some reason. 11:40:06 > (+1) <$> [1..5] 11:40:08 [2,3,4,5,6] 11:40:14 Phantom_Hoover, that's <*> 11:40:17 :t (<*>) 11:40:18 forall (f :: * -> *) a b. (Applicative f) => f (a -> b) -> f a -> f b 11:40:21 Ah. 11:40:26 Ngevd: okay so for example here's how you do a cartesian product. 11:40:30 -!- cheater has joined. 11:40:33 Makes sense. 11:40:42 > (,) <$> [1..3] <*> [1..3] 11:40:42 [(1,1),(1,2),(1,3),(2,1),(2,2),(2,3),(3,1),(3,2),(3,3)] 11:41:02 Ngevd: first of all you apply (,) <$> [1..3] 11:41:15 :t (,) <$> [1..3] 11:41:16 forall a b. (Num a, Enum a) => [b -> (a, b)] 11:41:31 this applies (,) to every value in the list [1..3] 11:41:43 and produces a list of curried functions. yes? 11:42:01 :t (,) <$> [1..3] 11:42:02 forall a b. (Num a, Enum a) => [b -> (a, b)] 11:42:35 so now we have a function typed wrapped within a parametric type, namely the list type. 11:42:42 s/typed/type/ 11:42:43 Hmm, now I'm thinking I can actually find a use for Just Right 11:43:39 this is the situation where applicative is useful. Applicative takes a function type wrapped within a parametric type, and extends the notion of function application "within" this wrapped type. 11:43:42 kallisti, sorry, I had to brb 11:43:43 but there's no use if there's Nothing Left 11:44:04 But I am now rb 11:44:17 okay. :) 11:44:21 catch up! 11:44:41 I still keep forgetting that , is a function 11:44:59 oh, yes. it's kind of a special case. 11:45:18 , is not /actually/ an infix function. 11:45:32 So, (,) <$> [1..3] is a list of functions 11:45:35 yes 11:46:11 Of course, you *can* just look at the type signatures. 11:46:18 since list is an instance of Applicative, lists extend the notion of function application. So that if you have a list of functions, you can apply that list of functions to another list of values. 11:46:21 And <*> applies each function on the left to each value on the right IN THIS EXAMPLE 11:46:22 -!- SgeoN1 has quit (Quit: Bye). 11:46:29 f :: a -> b -> c -> d 11:46:42 Ngevd: yes, this is what happens in the case of list. 11:46:58 f <$> x (x :: f a) :: f (b -> c -> d). 11:47:26 That <*> y (y :: f b) :: f (c -> d). 11:47:28 And so on. 11:47:59 Ngevd: but if you look at the type you can infer what happens in the general case. 11:48:03 :t (<*>) 11:48:04 forall (f :: * -> *) a b. (Applicative f) => f (a -> b) -> f a -> f b 11:48:25 in case of lists this is: [a -> b] -> [a] -> [b] 11:48:42 This has actually helped a lot 11:49:07 Maybe is also an applicative so: Maybe (a -> b) -> Maybe a -> Maybe b 11:49:27 if you have a function wrapped with Just, you can apply other Maybe values to that function and receive a Maybe result. 11:49:29 :t ($) 11:49:30 forall a b. (a -> b) -> a -> b 11:49:39 it's basically function application, within a parametric type. 11:52:11 > last [1, 2, 3] 11:52:11 3 11:52:18 sweet 11:52:28 Labbekak, are you new to Haskell? 11:52:44 > last [1..] 11:52:45 Ngevd: hopefully that makes everything make a little more sense. 11:52:46 Ngevd, yes :p 11:52:48 mueval-core: Time limit exceeded 11:53:11 how does whispering work? 11:53:11 Labbekak, Haskell is almost the default non-esolang on this channel 11:53:21 Labbekak: what client are you using? 11:53:28 webchat.freenode 11:53:30 qwebirc 11:53:36 Labbekak: in most clients you use the /msg command. 11:53:45 Labbekak: /msg 11:53:51 /msg person message 11:53:52 Labbekak: and that usually opens another window 11:54:16 oke thanks ;) 11:54:37 Labbekak: WoW? 11:54:39 :P 11:54:49 or basically any blizzard game. 11:54:52 with battle.net 11:55:03 "whispering" is the term used for private messages 11:55:05 06:12:45: newtype T = T A 11:55:05 06:12:57: T is not isomorphic to A because there is no equivalent to T _|_ 11:55:22 o.O I already know what oerjan's going to say 11:55:25 well i played some WoW yes 11:55:26 T _|_ = _|_ for newtypes, this is a main difference from data 11:55:33 oerjan: yes I realized that further. 11:55:33 long time ago 11:55:41 oerjan: so I changed it to data. because it still applies there. 11:57:11 last [1, 2, 3] * [1, 2, 3] 11:57:16 Labbekak: no 11:57:23 type error. 11:57:30 :( 11:57:34 3 * [1,2,3] = ????? 11:57:44 APL knows :p 11:57:52 ah yes 11:57:55 > map (* last [1,2,3]) [1,2,3] 11:57:56 -!- Sgeo has joined. 11:57:56 [3,6,9] 11:58:05 -!- Sgeo_ has quit (Read error: Connection reset by peer). 11:58:05 pff 11:58:07 I can't even put this laptop in my lap anymore :( 11:58:16 Haskell doesn't like people cheating 11:58:21 Labbekak: haskell has the restriction that multiplication requires the same type for both operands. 11:58:24 :t (*) 11:58:25 forall a. (Num a) => a -> a -> a 11:58:56 > last ((*) <$> [1,2,3] <*> [1,2,3]) 11:58:57 9 11:59:06 > (*) <$> [1,2,3] <*> [1,2,3] 11:59:07 [1,2,3,2,4,6,3,6,9] 11:59:15 A perfect demonstration of applicatives 11:59:22 perfect? 11:59:27 Sgeo, always the oppurtunist 11:59:47 cartesian product was way better, sheesh. :P 11:59:59 you should leave the teaching to me. :P 12:00:01 bahahahaha 12:00:02 .. 12:00:40 > (*) <$> [x,y,z] <*> [x,y,z] 12:00:41 [x * x,x * y,x * z,y * x,y * y,y * z,z * x,z * y,z * z] 12:00:49 yes that's good. 12:00:54 well 12:00:55 almost 12:01:04 > (*) <$> [a,b,c] <*> [x,y,z] 12:01:05 [a * x,a * y,a * z,b * x,b * y,b * z,c * x,c * y,c * z] 12:01:06 The spacing is bad 12:01:37 > Just (*) <$> Just a <*> Just b 12:01:37 Couldn't match expected type `a1 -> a -> b' 12:01:38 against inferred type `... 12:01:42 Also, wasn't sure that a was the appropriate weird thing 12:01:46 hh 12:01:50 *huh 12:01:57 > map ($ 3) [(*1), (*2), (*3)] 12:01:58 [3,6,9] 12:02:00 > Just (*) <*> Just a <*> Just b 12:02:01 Just (a * b) 12:02:07 oh right 12:02:12 > (*) <$> Just a <*> Just b : 12:02:12 : parse error (possibly incorrect indentation) 12:02:15 > (*) <$> Just a <*> Just b 12:02:16 Just (a * b) 12:02:49 :t pure 12:02:50 forall a (f :: * -> *). (Applicative f) => a -> f a 12:03:09 pure f <*> x <*> y is the same as f <$> x <*> y 12:03:32 pure takes something and brings it into a functor 12:03:38 *applicative 12:03:44 *Applicative 12:03:45 For Maybe, it's ... kallisti's correct. 12:04:11 monqy: hahahaha silly humans and there significance of capitalization. 12:04:15 For Maybe, it's Just. For lists, it's putting it in a singleton, like \a -> [a] 12:04:34 same as return for Monad, in... most cases. 12:04:43 most cases? 12:04:50 monqy, idiots exist. 12:04:50 most cases that appear in Haskell programs, yes. 12:04:58 idiots? whats that 12:05:14 Someone who has a pure and a return defined but they do different things? 12:05:19 monqy: dunno. they certainly don't exist on this channel. 12:05:21 cries 12:05:24 -!- derdon has joined. 12:05:35 Sgeo: well the case I was thinking of is an Applicative that's not a Monad. 12:06:03 Fair enough, I guess that's acceptable. 12:06:06 But if return is defined... 12:06:15 a bit funky with the way you worded it yeah but yeah 12:07:02 apologies. I imagine being slightly drunk is not the best time to be EXCELLENT MENTOR 2000. 12:07:17 PERFECT IN ALL WAYS AND STATEMENTS. 12:08:23 2000 is a lot of mentor 12:08:32 maybe you should settle for perfect mentor 1999 12:08:39 too retro. 12:08:44 2000 is FURUTISTSIC 12:10:08 last [1..5] 12:10:10 idiots? whats that 12:10:19 > last[1..5] 12:10:20 5 12:10:28 Ngevd: but yeah <$> and <*> make it easy to basically ignore the parametric type wrapping. 12:10:42 huh?? 12:10:44 People who don't understand that monads etc. actually have laws you need to satisfy, not just type signatures. 12:10:50 kallisti, ??? 12:10:58 last[1..(last[1..5])] 12:10:58 Ngevd: So, for exampke: lines <$> readFile "foo.txt" 12:11:06 > last[1..(last[1..5])] 12:11:07 5 12:11:17 :t enumFromTo 12:11:18 forall a. (Enum a) => a -> a -> [a] 12:11:19 Ngevd: reads a file, splits it into lines, and returns that as the result of an IO action. 12:11:32 Labbekak, [a..b] notion is syntactic sugar for a function 12:11:32 kallisti: but you're not ignoring anything if you put a <$> in there..... 12:11:36 kallisti, That would have type IO [String], right? 12:11:44 [1..5] == enumFromTo 1 5 12:11:48 monqy: well, yes... the <$> is what makes the ignoring possible. 12:11:50 Ngevd: yes. 12:11:52 ah 12:11:54 [1..] == enumFrom 1 12:11:59 > enumFromTo 1 5 12:12:00 [1,2,3,4,5] 12:12:03 right 12:12:04 monqy: it's.. well, ignoring is not the best way to describe it. 12:12:05 kallisti: ignoring by not ignoring 12:12:06 > enumTo 5 12:12:07 Not in scope: `enumTo' 12:12:21 * Sgeo forgets what [1,3..] and [1,3..5] desugar to 12:12:26 :t enumFromStep 12:12:27 Not in scope: `enumFromStep' 12:12:30 :t enumFromBy 12:12:31 Not in scope: `enumFromBy' 12:12:33 oop 12:12:37 :t enumBy 12:12:38 :t enumFromToBy 12:12:38 > enumFromThenTo 1 3 9 12:12:38 Not in scope: `enumBy' 12:12:39 Not in scope: `enumFromToBy' 12:12:39 [1,3,5,7,9] 12:12:40 monqy: but it allows you to apply functions to inner results of parametric types thereby ignoring the usual dance you would otherwise do with >>= and such. 12:12:41 ooop 12:12:44 I win 12:12:50 oh then 12:13:14 perhaps that's a better way to describe what I mean. 12:13:27 > take 20 (enumFromThen 1 3] 12:13:28 map (+1) "Albert" 12:13:28 : parse error on input `]' 12:13:29 > take 20 (enumFromThen 1 3) 12:13:30 [1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39] 12:13:35 > map (+1) "Albert" 12:13:36 No instance for (GHC.Num.Num GHC.Types.Char) 12:13:36 arising from the literal `1... 12:13:51 Labbekak, Strings are lists of Chars. Chars are not numbers. 12:13:59 :p 12:14:01 > map succ "Albert" 12:14:02 "Bmcfsu" 12:14:12 > map char (map (+1) (map ord "Albert")) 12:14:13 Couldn't match expected type `GHC.Types.Char' 12:14:13 against inferred type... 12:14:16 > map (chr . (+1) . ord) "Albert" 12:14:17 "Bmcfsu" 12:14:31 > map chr (map (+1) (map ord "Albert")) 12:14:31 "Bmcfsu" 12:14:32 brb 12:15:37 -!- oerjan has quit (Quit: leaving). 12:15:58 Ngevd: (+) <$> (read . getLine) <*> (read . getLine) 12:16:18 :t readLine 12:16:18 Not in scope: `readLine' 12:16:20 oop 12:16:26 Ngevd: here's an expression that reads two lines from stdin, converts them to numbers, and adds them together as the result of an IO action. 12:16:31 getLine is going to be IO String. 12:16:34 :t getLine 12:16:35 IO String 12:16:36 er 12:16:39 @hoogle Read a => IO a 12:16:40 Prelude readLn :: Read a => IO a 12:16:40 System.IO readLn :: Read a => IO a 12:16:40 Prelude readIO :: Read a => String -> IO a 12:16:43 yes... my bad. 12:16:45 ahh, readLn 12:17:01 Ngevd: (+) <$> readLn <*> readLn 12:17:06 * Phantom_Hoover has a pascback 12:17:22 (it's a flashback but with pascal and it's really unpleasant) 12:17:36 kallisti, we're ignoring errors, I presume? 12:17:44 Pesky IO errors, that is 12:17:47 Ngevd: yes 12:17:55 I have saved myself from pascbacks by not ever touching pascal, in the past 12:17:57 for those you would want to use catch, I believe. 12:18:38 Is readLn any safer than read? 12:18:45 don't believe so. 12:18:48 No, it's less safe 12:18:53 I think it's literally just read <$> getLine 12:19:02 @src readLn 12:19:02 readLn = do l <- getLine; r <- readIO l; return r 12:19:13 @src readIO 12:19:14 Source not found. You speak an infinite deal of nothing 12:19:23 yeah same thing I think. 12:19:34 @source readLn 12:19:35 readLn not available 12:19:51 Ngevd: no equally unsafe. 12:20:06 you can still catch the exception from readLn 12:20:35 I have a bizarre concept of many things 12:21:04 me too. 12:21:21 Including safety and money 12:21:34 safe money and unsafe money. 12:22:08 unsafeBuySex 12:22:14 sgeo..... 12:22:16 moniful safety and unmoniful safety. 12:31:01 Ngevd: oh by the way, functions are a Functor, Monad, and Applicative. 12:31:13 It is very windy up here 12:31:22 it's pretty windy here as well. 12:31:29 (in Georgia (USA)) 12:31:45 Hmm... 12:31:49 > :t chr. first 12:31:50 : parse error on input `:' 12:31:51 Georgia, eg? 12:31:57 Labbekak: just :t 12:31:58 :t chr . first 12:31:59 Couldn't match expected type `Int' 12:31:59 against inferred type `a (b, d) (c, d)' 12:31:59 Expected type: a b c -> Int 12:32:03 :t first 12:32:04 forall (a :: * -> * -> *) b c d. (Arrow a) => a b c -> a (b, d) (c, d) 12:32:05 Ngevd: oh by the way, functions are a Functor, Monad, and Applicative. 12:32:06 ?? 12:32:13 Do you mean (->r)? 12:32:16 ...yes. 12:32:20 nice nitpick. 12:32:20 Which are functions 12:32:31 Labbekak: you want fst I think. 12:32:42 Labbekak: first is an Arrow thing, fst is a 2-tuple thing. 12:32:42 it's a pretty important distinction?? 12:32:53 :t chr . fst 12:32:53 forall b. (Int, b) -> Char 12:32:55 i mean (->) vs (->r) 12:33:05 I wasnt really thinking 12:33:07 (->) isn't a function. 12:33:18 neither is (->r) 12:33:28 they're types. 12:33:29 >_> 12:33:33 * kallisti nitpick 12:33:43 (->) does not represent the function type 12:33:51 It's not (r->)? 12:33:52 well, yes it does. 12:33:58 oh... yes 12:33:59 it is. 12:34:02 it's ((->) r) 12:34:10 which is (r->) which is not valid Haskell. 12:34:28 waht 12:34:43 monqy: is (r->) valid syntax in Haskell? 12:34:53 that's not the wrong part 12:34:59 iirc ((->) r) is (-> r) iirc 12:34:59 oops 12:35:03 no.. 12:35:07 > (+) <$> (1+) <*> (2-) $ 5 12:35:08 3 12:35:09 it's 12:35:11 ~special~ 12:35:17 monqy: .....no 12:35:25 ok maybe im just tired 12:35:28 Of course, lambdabot does its insane functions are numbers thing 12:35:31 :t return 12:35:31 forall a (m :: * -> *). (Monad m) => a -> m a 12:35:36 :t const 12:35:36 forall a b. a -> b -> a 12:35:48 > const + 1 12:35:49 Overlapping instances for GHC.Show.Show (a -> b -> a) 12:35:49 arising from a use... 12:36:02 monqy: m = (b->) 12:36:06 * Phantom_Hoover realises he's forgotten which way round the function monad goes. 12:36:07 Which sounds convenient, but Applicative for functions is simple enough when you develop some intuition about it 12:36:39 \(l, n) -> map (chr . (+n) . ord) l 12:36:46 kallisti: yeah im tired. i'll take your word for it because i cant think enough to do the stuff in my head 12:36:58 monqy: this makes me happy. :) 12:36:59 > (\(l, n) -> map (chr . (+n) . ord) l) "Whatup" 5 12:37:00 Couldn't match expected type `t1 -> t' 12:37:00 against inferred type `[GHC.... 12:37:02 It's just the reader monad. The value you grab out of a function that's not fully applied is the result that the whole shebang will have when the whole shebang's argument is passed to the partially applied function. 12:37:10 monqy: because I'm not wrong by default. 12:37:20 Wait, no 12:37:20 promising. 12:37:24 Yeah, it's r ->. 12:37:29 Oops. 12:37:33 opse 12:37:40 is the result that the function will have when the whole shebang's argument is passed to the partially applied function 12:37:49 Reader monad without Reader: 12:38:21 are you going to paste something 12:38:34 Sgeo, monad? 12:38:35 > do { x <- (+1); y <- (*5); return x+y} $ 1 12:38:36 Occurs check: cannot construct the infinite type: a = m a 12:38:41 ..? 12:38:48 Reader monad without Reader 12:38:53 > do { x <- (+1); y <- (*5); return (x+y)} $ 1 12:38:54 7 12:38:57 I aspire to be a cruciverbalist 12:39:06 (>>=) f g x = g x (f x) 12:39:08 > do { x <- (+1); y <- (*5); return (x,y)} $ 1 12:39:09 (2,5) 12:39:17 I think.. 12:39:18 Ngevd, do you know what the Reader monad is? 12:39:40 No 12:39:45 I was making a joke 12:39:45 it reads. ha, ha. 12:39:52 * kallisti mad joke 12:40:05 (2x joke comob) 12:40:12 * kallisti 2x reference combo 12:40:15 (now 3) 12:40:25 aha ha 12:40:29 * Sgeo gives kallisti an A - - 12:40:46 is that good or bad.... 12:40:51 I can't tell. 12:40:52 Worst grade imaginable 12:41:05 > (\(l, n) -> map (chr . (+n) . ord) l) "Whatup" 5 -- it wont work 12:41:06 Couldn't match expected type `t1 -> t' 12:41:06 against inferred type `[GHC.... 12:41:26 Labbekak, 12:41:39 :t ord 12:41:40 Char -> Int 12:41:45 > (\l n -> map (chr . (+n) . ord) l) "Whatup" 5 -- this is how to do a multi-argument lambda 12:41:47 "\\mfyzu" 12:42:02 Aah oke thanks 12:42:23 and now I blow some peoples minds. 12:42:41 > (`replicateM` "abc") =<< [0..] 12:42:42 ["","a","b","c","aa","ab","ac","ba","bb","bc","ca","cb","cc","aaa","aab","a... 12:43:00 AAAAH 12:43:01 boom 12:43:02 not the palindromes? 12:43:06 monqy: no 12:43:06 mind.blown == true 12:43:13 no.... 12:43:13 but I use that to make palindromes yes. 12:43:16 :t replicateM 12:43:17 forall (m :: * -> *) a. (Monad m) => Int -> m a -> m [a] 12:43:31 * Sgeo gets it, he thinks 12:43:41 it has to do with how sequence works for lists. 12:43:54 Well, almost get it 12:43:57 @src replicateM 12:43:58 replicateM n x = sequence (replicate n x) 12:44:10 > sequence "abc" "def" 12:44:10 Couldn't match expected type `m a' 12:44:10 against inferred type `GHC.Types... 12:44:13 goo 12:44:14 ....looool 12:44:14 d 12:44:25 > sequence ["abc","def"] 12:44:26 ["ad","ae","af","bd","be","bf","cd","ce","cf"] 12:44:38 > sequence ["abc","def","ghi"] 12:44:39 ["adg","adh","adi","aeg","aeh","aei","afg","afh","afi","bdg","bdh","bdi","b... 12:44:45 Labbekak, that is the same as: 12:44:56 > (\l -> \n -> map (chr . (+n) . ord) l) "Whatup" 5 -- this is how to do a multi-argument lambda 12:44:57 "\\mfyzu" 12:45:13 > sequence "abc" 12:45:14 Couldn't match expected type `m a' 12:45:14 against inferred type `GHC.Types... 12:45:20 ah yea 12:45:29 so for example if you have a situation where each position of a list can be a list of possibilities, and you want to determine the list of all possibilities...... this is a terrible explanation. 12:45:55 here look at this instead: http://sprunge.us/jFQe 12:45:58 good use of sequence 12:46:01 But it's only a terrible explanation if you have a situation where each position of a list can be a list of possibilities! 12:46:21 you have a thing that's a list of the possible things at a given position in a list 12:47:12 and another list that's a list of the possible things at another given position in a list, etc. 12:47:12 > sequence ["abc", "def"] 12:47:12 ["ad","ae","af","bd","be","bf","cd","ce","cf"] 12:47:13 "abc" is the list of possibilities for the first element 12:47:13 "def" for the second 12:47:13 > sequence [["excellent", "good", "great"], ["work", "job", "hello"]] 12:47:13 oh no did i mess it 12:47:13 [["excellent","work"],["excellent","job"],["excellent","hello"],["good","wo... 12:47:22 so in http://sprunge.us/jFQe 12:47:22 oh my connection just for a few seconds 12:47:35 I use sequence to output the possibilities for the letter sequences of a telephone number 12:47:53 (back in the day number pads on telephones had these letters on them and you could use them to spell out stuff...) 12:48:00 i used sequence to make compliments 12:48:17 like excellent hello 12:48:40 so anyway if you do sequence (replicate n ls) 12:48:43 where ls = "abc" 12:48:47 then you're basically saying 12:48:56 sequence ["abc", "abc", ..., "abc"] 12:48:59 up to n 12:49:18 > sequence ["abc", "abc", "abc"] 12:49:19 ["aaa","aab","aac","aba","abb","abc","aca","acb","acc","baa","bab","bac","b... 12:49:28 possible combinations of a, b, and c of link 3 12:49:30 so then... 12:49:42 Ngevd, you should learn the Reader monad 12:49:50 (`replicateM` "abc") =<< [0..] 12:50:05 or the Env Comonad because excitement 12:50:11 just concatenates all of those lists together, for every length n. 12:50:21 s/link/length/ 12:50:39 Sgeo, wait 'till I've learnt monads 12:50:49 oh 12:50:54 Learning how to use a monad is different from learning how monads work. 12:50:55 yes that's a good thing to learan 12:51:32 s/how monads work/what a monad is/ 12:51:42 what monad work, how monad is 12:51:54 monqy: monad is but doesn't wor. 12:51:56 k 12:51:57 . 12:52:01 wor.k. 12:52:15 is friendship a monad 12:52:24 no you can escape friendship. 12:52:29 -!- Labbekak has quit (Quit: Page closed). 12:52:34 is friendship a comonad 12:52:39 uh... 12:52:40 maybe? 12:52:46 what is dual to friendship 12:52:48 * Sgeo hits kallisti with a bunch of functions whose name begins with run 12:52:57 not monadic functions 12:53:02 not monad things. 12:53:06 runs don't exist 12:53:08 sorry sgeo 12:53:26 runList = head 12:53:30 LOL MONADS CAN BE ESCAPED FROM 12:53:37 no 12:53:38 runlist is a filthy lie 12:53:39 there is no escape 12:53:41 * Sgeo did not say in general 12:53:43 you will die in monad forever. 12:53:58 Just that it's wrong to say no monads can be escaped from for limited definitions of escape 12:54:06 but 12:54:10 unsafePerformIO 12:54:13 you can't escape friendship monad 12:54:16 proven fact 12:54:16 unsafeCoerce 12:54:16 QED 12:54:28 -!- pikhq has quit (Quit: See ya Sunday). 12:54:30 er 12:54:34 you can escape friendship not-monad 12:54:34 uh 12:54:36 QED 12:54:42 good 12:55:07 with comonads you can make a friendship-friendship 12:55:23 monqy: ARE OUR FRIENDSHIPS FRIENDSHIPS 12:55:26 * Sgeo doesn't quite understand comonas 12:55:29 comonads 12:55:34 Sgeo: think like monad but backwards. 12:55:36 flipped turnways 12:55:41 they're pretty much the same 12:56:00 no they are opposites. 12:56:05 are opposites the same? 12:56:05 i.e. the same 12:56:07 yes 12:56:10 oh okay 12:56:12 they are the same. 12:56:15 Sgeo: if you think Reader is a good example Monad, take a look at Env 12:56:31 Sgeo: it may or may not even be conceptually simpler than Reader 12:56:39 * kallisti thinks Maybe is a good example monad. 12:56:48 What is comaybe? 12:56:51 it's like... the bare minimum 12:56:53 of what you need 12:56:54 to be a monad. 12:56:59 kind of. 12:57:00 not really. 12:57:04 kallisti, you mean, other than trivial stuff? 12:57:08 yes. 12:57:19 The Trivial monad 12:57:27 Running from his alter-ego, Identity 12:58:00 I don't think maybe is a comonad... 12:58:08 extract = ??? 12:58:24 (partial functions are cheating) 12:58:36 anyway I'll bbl. 12:59:51 I don't know of anything that could reasonably be called comaybe 13:00:00 but Maybe is an Extend 13:00:54 Maybe if I saw examples of Env in use... 13:01:12 -!- kallisti has quit (Read error: Operation timed out). 13:02:02 Env: (some state, some value) 13:02:07 Reader: some state -> some value 13:07:24 I'd example but I can't think of anything interestjing 13:08:15 -!- monqy has quit (Quit: hello). 13:13:55 :i Env 13:14:33 comonad 13:15:20 ISTR from that cothings in category theory are what you get when you reverse the direction of morphisms or something. 13:16:22 Like, rather than having f : X → Y, F : C → D, F(f) : F(X) → F(Y), you have F(f) : F(Y) → F(X). 13:16:35 So I suppose a comonad would... hmm. 13:18:14 Oh, also F(f . g) = F(g) . F(f). 13:19:52 >t liftA2 (+) id id 5 13:19:58 > liftA2 (+) id id 5 13:19:58 10 13:21:02 Yeah, comonads are monads with all the function types reversed. 13:23:56 -!- kallisti has joined. 13:23:57 -!- kallisti has quit (Changing host). 13:23:57 -!- kallisti has joined. 13:24:25 -!- PatashuXantheres has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .). 13:25:08 hi my name is kallist i 13:26:29 Hello, kallist. My name is Taneb|Lunch 13:26:33 -!- Ngevd has changed nick to Taneb|Lunch. 13:26:47 Taneb|Lunch: mmmm delicious 13:37:11 Taneb|Lunch: http://sprunge.us/jFQet 13:37:22 you should examine this awesome program. 13:37:45 jFQet not found 13:37:49 best program? 13:38:16 Taneb|Lunch: http://sprunge.us/jFQe 13:38:18 oopse 13:39:14 Taneb|Lunch: it's one of those questions that's asked on job interviews. 13:39:28 Given a telephone number print all of the possible character sequences that it forms. 13:46:12 -!- Taneb|Lunch has changed nick to Ngevd. 13:46:13 Back 13:47:19 actually I don't know why I import Control.Applicative. 13:48:11 -!- incomprehensibly has joined. 13:48:18 The Times Person of the Year 2011... died in 2010 13:48:23 `welcome incomprehensibly 13:48:26 incomprehensibly: 13:48:37 hello 13:48:41 `welcome 13:48:45 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 13:48:48 weird. 13:48:57 `cat bin/welcome 13:49:01 ​#!/usr/bin/perl -w \ if (defined($_=shift)) { s/ +/ @ /g; exec "bin/@", $_ . " ? welcome"; } else { exec "bin/?", "welcome"; } 13:49:55 `welcome test 13:49:58 test: 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 13:50:08 `welcom Ngevd 13:50:11 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: welcom: not found 13:50:14 `welcome Ngevd 13:50:17 Ngevd: 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 13:50:19 `welcome incomprehensibly 13:50:23 incomprehensibly: 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 13:50:26 ah 13:50:37 back to normal 13:51:55 Ngevd: anyway it's a pretty un-noteworthy program, except that I use the monad over lists to do something. 13:52:43 also I use lookup for lists, but in a "real program" you'd usually want to use Data.Map's lookup instead. 13:53:35 lookup on [(a,b)] is O(n) worst case. lookup on Map a b is O(log n) worst case. 13:56:52 :t (M.fromList undefined <$>) 13:56:53 Couldn't match expected type `a -> b' 13:56:53 against inferred type `M.Map k a1' 13:56:53 In the first argument of `(<$>)', namely `M.fromList undefined' 13:57:07 oh, yes. 13:57:13 :t fmap (M.fromList undefined) 13:57:14 Couldn't match expected type `a -> b' 13:57:14 against inferred type `M.Map k a1' 13:57:14 In the first argument of `fmap', namely `(M.fromList undefined)' 13:57:20 oh, yes, indeed 13:57:29 :t (<$> M.fromList undefined) 13:57:30 forall a b k. (Ord k) => (a -> b) -> M.Map k b 13:58:28 ah okay. But I doubt Data.Map has an Applicative instance because there's no Ord instance for functions. 14:02:56 oh wait it doesn't need an ord instance... 14:03:26 I'm going to do something else for a bit 14:03:28 Bye! 14:03:29 -!- Ngevd has quit (Quit: Goodbye). 14:04:26 hm weird. 14:04:41 ah I guess pure is difficult to define for Map. 14:05:53 I think for a pure for lists, you need to make it an infinite list rather than a singleton 14:05:54 right? 14:06:01 or else <*> doesn't work right always 14:06:07 erm, pure for lists works fine. 14:06:10 > pure 1 14:06:11 No instance for (GHC.Show.Show (f t)) 14:06:11 arising from a use of `M1276157568... 14:06:14 ... 14:06:18 lol 14:06:31 > pure 1 :: [Int] 14:06:32 [1] 14:07:07 lambdabot: why can't you read my mind??? 14:08:09 > (pure (+1)) <*> [1, 2, 3] 14:08:10 [2,3,4] 14:08:12 oh 14:08:37 > [(+1), (+2)] <*> [1, 2, 3] 14:08:38 [2,3,4,3,4,5] 14:08:48 oh 14:08:54 incomprehensibly: perhaps you were thinking of zipWith ($) 14:08:57 I thought <*> was like zipWtih ($) 14:08:58 yeah 14:09:34 what's a good objective-c channel? 14:09:39 no such thing. 14:09:43 (I don't know) 14:09:45 ok 14:09:55 because I need to ask a question somewhere 14:10:05 you could try #objective-c but I don't if that's a thing. 14:10:14 nope 14:10:31 ... #iphone maybe? I doubt it. 14:10:36 try to find like an iphone dev channel 14:10:42 or... an objective-c channel. 14:10:45 * kallisti helpful. 14:11:07 #iphonedev is it 14:11:12 although I figured out my problem myself :P 14:11:26 that's always good. 14:19:00 "The Monad class defines the basic operations over a monad, a concept from a branch of mathematics known as category theory. From the perspective of a Haskell programmer, however, it is best to think of a monad as an abstract datatype of actions." 14:19:05 untrue, Haskell docs 14:19:13 (that it's helpful to think of them that way) 14:23:54 incomprehensibly, have you been here before? 14:24:12 Phantom_Hoover: yeah, I lurk a lot and occasionally talk 14:24:22 kallisti: yeah, that pisses me off 14:24:42 about the only place it fits is like IO and State 14:24:53 It also fits in List and Maybe. 14:24:58 for [], Maybe, etc., it's completely off 14:25:03 it does not fit them in any way whatsoever 14:25:03 Nope. 14:25:10 a list is not an action. it's the results of an action. 14:25:12 Maybe is obviously computations which can fail. 14:25:13 eh, it fits sort of. 14:25:18 it's just not /helpful/ for learning. 14:25:21 no, Maybe is the *answers* to those computations. 14:25:25 "oh actions... okay what does that mean" 14:25:33 IO actually encodes actions 14:25:42 incomprehensibly: Maybe represents sequencing actions that can possibly fail. 14:25:48 as in, you have putStrLn "something" or getLine, and those are actions that you can do 14:25:52 List is trickier, but when you think about it the monad represents nondeterministic computation. 14:25:53 list represents sequencing actions with many possible results. 14:25:54 it kind of fits. 14:25:57 kallisti: yes, but a value of type Maybe a is *not* an action. 14:26:03 a value of type list is *not* an action. 14:26:09 so the type doesn't represent actions. 14:26:11 oh, well, yes. 14:26:13 neither is State. 14:26:13 Yes, it does. 14:26:19 Phantom_Hoover: how…? 14:26:24 IO is like a list of instructions 14:26:26 it encodes an action 14:26:27 A value of type Maybe is an action which can either result in a value or fail. 14:26:29 but Maybe and list do not 14:26:37 Phantom_Hoover: how is Just 3 an action? 14:26:40 how is Nothing an action? 14:26:48 that's the results of an action which has already been done. 14:26:55 Same way (return 3) :: IO Int is an action. 14:27:05 return 3 can be later *executed*. 14:27:08 same as State 14:27:14 Define 'executed' here. 14:27:26 in the case of IO, handed to the Haskell runtime and performed 14:27:35 in the case of State, handed an input value, right? 14:27:45 and functions are monads, right? 14:27:55 giving them an argument is executing that action 14:27:56 Yes; this came up earlier today. 14:28:04 however, for Just 3, there's no way to execute that 14:28:15 Maybe does not encode actions. it just encodes values that can be the results of actions. 14:29:13 saying that Just 3 is an action is the same type of confusion as saying that getLine is a String. 14:29:22 in the opposite direction 14:29:22 How? 14:29:28 getLine is manifestly not a String. 14:29:35 yep, and Just 3 is manifestly not an action. 14:29:44 say you have an IO (Maybe a) 14:29:48 Action is not a type. 14:29:50 *that* is an action that can succeed or fail 14:29:59 whereas Maybe a is just the answer to that action. 14:30:08 It's a concept we're assigning to certain things. 14:30:35 and I'm saying it makes no sense to assign it to Just 3. 14:30:38 is 3 an action? 14:31:02 if Just 3 is an action, 3 is too. 14:31:22 You seem to be saying that a monad is an action if there's a function m a -> a. 14:31:35 I think you're confusing "action" with "things that perform side-effects". and you think we're saying "action" means "value" 14:31:40 no, because there is no function for that with IO 14:31:42 State is not an action by your own definition. 14:32:04 ok, forget State 14:32:09 look at Parsec 14:32:21 although State is an action by my own definition 14:32:27 because it encodes an action that you can later perform 14:32:33 What *is* your own definition? 14:32:51 what's yours? 14:32:56 I just stated mine 14:33:17 Does fromMaybe count as an action by your definition? 14:33:19 incomprehensibly: "encodes an action that you can later perform" describes any lazily evaluated expression. 14:33:26 you realize that State is implemented with pure code, yes? 14:33:31 ok, then every value in Haskell is now an action 14:33:37 kallisti: yes, I realize that. 14:33:38 * incomprehensibly sighs 14:33:39 After all, it's doing no more than 'executing' State. 14:33:57 if lazily evaluated values, thunks, etc., are actions, then every single value in Haskell is an actino 14:34:13 but there's *still* an abstract difference between State, ->, IO, etc. than 3 14:34:13 foldr "executes" a list. 14:34:33 incomprehensibly: we're not talking about 3 14:34:36 we're talking about Maybe a 14:34:38 or [a] 14:34:47 ok, well what's the difference between [3] and Just 3 and 3 in terms of action-ness? 14:35:48 because if [3] is an action because of lazy evaluation, the exact same logic applies to 3. 14:36:13 It occurs to me that Identity 3 is basically the same as what you're saying about 3. 14:36:42 hm this is basically a semantic thing around the meaning of "action" 14:37:12 I'm saying, people are confusing levels of a hierarchy by saying that the list monad is an actino 14:37:14 action* 14:37:33 I don't think [a] represents an action so much as it represents a value within an action. specifically, a value with zero or more possible values, with >> and >>= acting as a means to sequence computations over these values. 14:37:54 lists do not represent actions. 14:38:00 values of type IO do represent actions. 14:38:11 Why? 14:38:26 because lists are plain old values 14:38:29 IO is also plain old values 14:38:34 therefore? 14:38:36 but it's also instrucitons you can execute 14:38:37 After all, IO is conceptually just State RealWorld, and State is no more esoteric than a list. 14:38:53 yes, but State is an action you can perform 14:38:55 so is -> 14:39:15 I don't get what consing 3 with [] does to it that makes it an action 14:39:19 it's still a number 14:39:24 it doesn't tell you how to do something 14:39:48 if State represents an action 14:39:51 so does tuples. 14:40:00 sure, you can do some godel encoding stuff and encode actions of type IO in Ints, but then you're missing the point: my definition of action is not defined by the type system 14:40:04 it's defined by how the type is used 14:40:22 kallisti, Writer is the tuple monad. 14:40:55 so sure, you can say foldl "executes" a list, and if the list somehow encodes things that foldl can do, and you can frame it that way, then lists are actions. but lists are not being used as actions in the list monad 14:41:05 also, the Identity monad is not an action like -> is 14:41:24 Id is a plain old container 14:41:46 and when you do Id 1 >>= (Id . (+1)), the value you get is just Id 2 14:42:04 you don't get instructions describing how to take a value and add one to it 14:42:07 I'm afraid that you appear to be hopelessly confused, and as I am myself slightly more hopefully confused I can't really help. 14:42:08 incomprehensibly: I'm saying that your own definition is inconsistent because it permits State to be an action but not a list. 14:42:19 If you wait until elliott turns up, he can probably yell at you for a while. 14:42:47 kallisti: my definition is not inconsistent because there's no boolean predicate over types that tells you whether it's an action! 14:43:02 so it's your own whim 14:43:02 it's just how you use it 14:43:02 okay 14:43:04 can't argue that. 14:43:06 * incomprehensibly sighs 14:43:06 carry on. 14:43:09 no, it's not my own whim 14:43:12 it's in how the type is used. 14:43:15 so it has criteria 14:43:16 so you can use lists as actions 14:43:20 kallisti: my definition is not inconsistent because there's no boolean predicate over types that tells you whether it's an action! 14:43:29 Sure there is; the one in your head. 14:43:41 Phantom_Hoover: yes, but there are more arguments than just the specification of the type 14:43:48 such as, how it is currently being used. 14:44:03 Of course, the action is not determined by the type alone, but by what return and >>= are, but that scarcely matters. 14:44:28 there's a difference between const 3 and 3. 14:44:33 the first is an action that returns 3 14:44:38 Erm, wait, *type transformer or whatever. 14:44:41 and the second is just the plain old 3 14:44:50 the same thing is true of const [3] and [3] 14:44:58 the first is a function that can return multiple values 14:45:02 and the second *is* those multiple values 14:45:09 const (Just 3) is the same thing 14:45:15 it's a function that can possibly succeed or fail 14:45:17 it happens to succed 14:45:26 Just 3 is not an action that can succeed or fail, but the *answer* to such an action. 14:45:33 You are definitely hopelessly confused here. 14:45:36 … 14:45:37 how? 14:45:56 Try going into #haskell, there should be some not very confused at all people in there. 14:46:00 I'm making a distinction between layers of a hierarchy 14:46:05 stop being so patronizing 14:46:24 I'm not being patronising, you're just really confused. 14:46:28 no, I'm not really confused. 14:46:29 incomprehensibly: IO (IO a) IO a is just a value you get form an action, not an action itself. etc. 14:46:41 *from 14:46:44 if you're calling Just 3 an action, you're really confused, and I don't see how you have any grounds tro call me confused 14:46:59 Unfortunately, my own definition of 'action' is itself a rather nebulous thing which can only function if you aren't looking it too closely. 14:47:02 kallisti: yep, that's true! however, IO a is *also* an action itself. 14:47:07 Schrodinger's definition, if you will. 14:47:08 it's a hierarchy 14:47:27 Where the hell did you arrive at hierarchies from. 14:47:28 kallisti: IO (IO a) is an action that returns an action that returns another value that may or may not be an action, depending on what it is and how it's uisd 14:47:30 used* 14:47:30 incomprehensibly: which suddenly fails on lists and maybe. not only does it fail, it can be demonstrated to fail because of the examples you provide above. 14:47:35 Seriously, go into #haskell now. 14:47:36 Phantom_Hoover: not tree hierarchies 14:47:38 Phantom_Hoover: just levels 14:47:47 * incomprehensibly sighs 14:47:53 how is Just 3 an action? 14:47:56 can we go back to that? 14:47:57 incomprehensibly: >>= 14:47:57 I don't know that much about monads, and kallisti knows less than he thinks he does. 14:47:58 and >> 14:47:59 and return 14:48:10 s/and >>// 14:48:13 kallisti: using >>= is performing an action 14:48:22 but that doesn't mean Just 3 is an action 14:48:28 incomprehensibly, yes, it does. 14:48:37 Just 3 >>= (Just . (+1)) 14:48:41 By using >>= on Just 3, you are performing the associated action. 14:48:44 that's not building up an action 14:48:49 incomprehensibly: so then IO is also not an action 14:48:49 i.e. succeeding with a value or failing. 14:48:52 using >>= on IO a is an action 14:48:54 Phantom_Hoover: ok, you're *performing the associated action* 14:48:57 so Just 3 is not an action itself 14:49:01 Yes, it is. 14:49:03 it's a value, with an associated action. 14:49:30 because Just 3 is a very different thing from the code that performs Just 3 >>= (Just . (+1)) 14:49:36 Maybe a contains actions which either succeed, resulting in a value, or fail, resulting in Nothing. 14:49:40 incomprehensibly: except when that code returns Just 3 14:49:44 then they're the same 14:49:45 suddenly 14:49:51 * incomprehensibly sighs 14:49:59 the code is different from the value that it returns 14:50:08 just like const 3 is different from 3 14:50:12 just like IO a is different from a 14:50:12 [a] contains actions which result in a list of values. 14:50:14 and id 3 is different from 3 14:50:15 how can you not comprehend this 14:50:30 Phantom_Hoover: no, [a] encodes those lists of values itself 14:50:51 Phantom_Hoover: a -> [b] is an example of an action that returns multiple values 14:50:53 or IO [a] 14:51:01 kallisti: id 3 is equal to 3 14:51:05 incomprehensibly: you're not going to get anywhere by repeating yourself. 14:51:18 incomprehensibly: Just 3 >>= (Just . (+1)) is equal to Just 4 14:51:22 therefore Just 4 is an action. 14:51:29 does not follow 14:51:38 k 14:51:39 State r a contains actions which produce a value from some state r, and can alter r in the process. 14:51:42 then your definition is inconsistent. 14:51:46 how? 14:51:56 Phantom_Hoover: correct 14:52:12 How is that different from either [a] or Maybe a. 14:52:19 does lambdabot know about the function monad? 14:52:23 Yes. 14:52:43 > const 3 >>= (const . id) 14:52:44 Overlapping instances for GHC.Show.Show (b -> a) 14:52:44 arising from a use of `... 14:52:51 > const 3 >>= (const . (+1)) () 14:52:51 Couldn't match expected type `b -> b1' against inferred type `()' 14:53:01 > (const 3 >>= (const . (+1))) () 14:53:01 The function monad contains actions which produce a value from some constant. 14:53:03 4 14:53:53 as far as I can tell your definition of action is: 14:54:05 a) IO values b) State values c) code written with >>= and >> 14:54:11 which is a really useless definition of action. 14:54:22 this is an incredibly frustrating conversation, and I am not enjoying the way you are all talking down to me. I have thought through this position, and I've used Haskell. I'm not a baby. You don't have to act like I'm one. 14:54:24 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 14:54:46 incomprehensibly, I'm not. 14:55:04 incomprehensibly: saying you're wrong is different from talking down to you. 14:55:08 Phantom_Hoover: "you're very confused. go talk to #haskell and they'll fix you up right quick" 14:55:18 yeah, you're not at all 14:55:20 But I barely have any idea of what I'm talking about, and kallisti doesn't have much more. 14:55:38 In #haskell, there are, surprise surprise, people who know what they are talking about. 14:55:46 ok, imagine a piece of paper that has, written on it, the words "wash your hands". 14:56:02 now imagine a person washing their hands 14:56:13 now imagine that person's hands before, dirty, and after, clean. 14:56:22 I wish you could force people to join channels. 14:56:30 I am in #haskell. 14:56:30 try invite 14:56:51 I wish you could force people to talk in another channel. 14:56:56 Maybe I can paste everything you say? 14:57:05 Thank you. 14:59:04 incomprehensibly: btw in your metaphor values of type IO a are the paper saying "wash your hands" 14:59:15 yep 14:59:22 -!- elliott has joined. 14:59:32 i'm quitting stack overflow if this guy keeps asking terrible questions 14:59:36 elliott: You have 5 new messages. '/msg lambdabot @messages' to read them. 14:59:46 Oh, speak of the devil and he shall appear ten minutes after you needed him. 15:00:00 kallisti: and Maybe a would be a type that either includes clean hands or failure 15:00:18 elliott: what makes Just 3 an action that doesn't make 3 an action too 15:00:25 incomprehensibly: State does not match your metaphor 15:00:44 kallisti: how does it not 15:00:45 state is not a piece of paper that encodes an action to do anything (aka it doesn't represent a side-effect to be performed) 15:00:49 incomprehensibly, the fact that 3 doesn't have bind or return defined? 15:00:56 doing something doesn't have to mean performing a side effect 15:01:05 it can mean transforming a pure value 15:01:21 You seem to have confused monads with functions. 15:01:27 * incomprehensibly sighs 15:01:31 This is quite difficult, and I applaud your perseverance. 15:01:31 you seem to have confused what I'm saying. 15:01:45 Phantom_Hoover: you say you're not talking down to me 15:01:46 incomprehensibly: State does not transform anything 15:01:48 neither does IO 15:01:57 for that matter 15:01:59 but you'er putting zero effort into understanding me, then treating me like I don't know anything 15:02:08 you're talking down to me 15:02:11 you're being an asshole 15:02:23 incomprehensibly, I'm talking down to you now, because I dislike people who assume that because they don't understand things, those things are flawed. 15:02:23 kallisti: watch this 15:02:32 elliott: what makes Just 3 an action that doesn't make 3 an action too 15:02:34 Phantom_Hoover: I understand those things, probably better than you do. 15:02:42 incomprehensibly: 3 is not of type (m a) for some m that is an instance of Monad. 15:03:18 elliott: I'm disputing that action is an apt name for values of type Monad a => m a 15:03:20 * elliott usually reserves "action" for IO actions, but speaking about "monadic actions" in general is meaningful since "monadic value" is misleading (suggests the value passed to return is "inside" somehow, at least I see this perception a lot when that terminology is used) 15:03:27 incomprehensibly: no one has talked down to you. we said you were wrong. 15:03:32 those are different things. 15:03:41 kallisti: Phantom_Hoover has talked down to me 15:03:46 kallisti: not simply said that I'm wrong 15:04:13 okay. 15:04:21 Phantom_Hoover: shame on you. 15:04:32 incomprehensibly: shame on you for claiming to know more than Phantom_Hoover 15:04:42 elliott: shame on you for being reasonable. 15:04:51 kallisti: shame on you because I don't know what am I doing wrong. 15:05:00 14:25:48: as in, you have putStrLn "something" or getLine, and those are actions that you can do 15:05:00 14:25:52: List is trickier, but when you think about it the monad represents nondeterministic computation. 15:05:00 14:25:57: kallisti: yes, but a value of type Maybe a is *not* an action. 15:05:00 14:26:03: a value of type list is *not* an action. 15:05:01 14:26:09: so the type doesn't represent actions. 15:05:03 incomprehensibly: A value of type [a] can easily be interpreted as an action in a nondeterministic backtracking language, such as e.g. Prolog. 15:05:08 The fact that it can also be not interpreted as this is irrelevant. 15:05:21 (Maybe a) is an action in a partial short-circuiting language, etc. 15:05:29 (Either e a) is an action in a language with exceptions of type e. 15:05:47 The existence of other valid interpretations of these values does not invalidate the action interpretation. 15:05:49 it's not an action in that short-circuiting language, it's a value that you get out of that language. 15:05:55 And indeed that interpretation is rqequired to understand the use of do notationw ith them. 15:06:00 incomprehensibly: same logic applies with IO, sir. 15:06:02 an action of that language would be, e.g., an AST. right? 15:06:08 incomprehensibly: No, the value of type `a` would be the value you get out of that language. 15:06:11 And no, untrue. 15:06:53 14:27:05: return 3 can be later *executed*. 15:06:53 14:27:08: same as State 15:06:55 :t maybe 15:06:56 forall b a. b -> (a -> b) -> Maybe a -> b 15:06:59 :t runCont 15:07:00 forall r a. Cont r a -> (a -> r) -> r 15:07:09 elliott: I failed to find a good example for lists 15:07:11 runMaybe :: Maybe a -> r -> (a -> r) -> r 15:07:11 so I went with foldr 15:07:19 what it seems like to me is that since IO is the most prominent monad, since it's used in every compilable Haskell program, etc., people often ascribe features of it to all monads 15:07:22 incomprehensibly: Note essential identicality to runCont. 15:07:35 * elliott does not do that at all. 15:07:50 It's very powerful to realise that monads are essentially mini programming languages, viewed from the lens of do notation. 15:08:08 Maybe is a partial embedded DSL, IO is an imperative embedded DSL. 15:08:09 you know the common misconceptions that monads are a language feature, or a way to cheat to put impurity in a pure language, or that monads are about side effects 15:08:10 etc. 15:08:13 State is a stateful embedded DSL. 15:08:23 Cont is a call/cc-having embedded DSL. 15:08:26 I think calling values of a monad "actions" is another misconception 15:08:34 incomprehensibly: Yes, and I think you're wrong. 15:08:42 I think it's unhelpful for teaching monads, but not incorrect to say. 15:08:42 * elliott is under no confusion as to what your position is. 15:08:52 what a monad is has nothing to do with actions 15:08:53 incomprehensibly: what it is it that makes a value of IO a an action. 15:08:56 it has to do with layers 15:08:59 unit and join 15:09:05 adding and removing layers of a functor 15:09:13 incomprehensibly: Yes, that is one interpretation. 15:09:16 I am not saying monads are "about" actions. 15:09:23 I am saying that "monadic action" is reasonable, consistent, meaningful terminology. 15:09:31 That does not mean I think they betray some deep underlying truth about monads or anything. 15:09:44 elliott: I'm saying that actions is an interpretation that applies to only a subset of monads, and has nothing to do with the qualities inherent in a monad, but simply with some specific applications of them 15:10:04 incomprehensibly: Yes, and I think you're wrong. 15:10:04 * elliott is under no confusion as to what your position is. 15:10:17 Please stop trying to tell me what you're saying as a substitute for actually replying to things I say. 15:10:31 I'm not 15:10:46 Then why are you trying to tell me what you're saying? 15:11:27 ok, the types of runMaybe and runCont are the same 15:11:34 *maybe 15:11:35 does that mean every container is an action? 15:11:38 no 15:11:42 yes it does 15:11:46 okay. 15:11:47 Depends what you mean by "container". 15:11:47 yes it does. 15:11:57 because any container you make, if it can be nested, is an action by that definition 15:12:04 because you can make a function of the same type 15:12:05 Depends what you mean by "container". 15:12:11 No, it means that every container for which you can define return and join is an action. 15:12:18 This is not at all odd. 15:12:21 kallisti: will you stop being so god damn condescending towards me 15:12:35 * elliott notes that he doesn't think he completely agrees with kallisti or Phantom_Hoover here, so please don't take their answers as my answers. 15:12:48 Also, kallisti isn't being condescending? If anyone's being condescending it's Phantom_Hoover (this is a universal truth). 15:12:58 elliott: "okay. yes it does." 15:13:07 incomprehensibly: you didn't supply a very good reason there. 15:13:09 you can just hear the condescension and rolleyes exuding from his messages 15:13:15 kallisti: I was *about to*, and I did 15:13:16 but I am a victim to mindless peer pressure 15:13:16 Well, it does depend on what 'container' means, but it looks like you just mean any t a. 15:13:17 sorry. 15:13:20 can you be the slightest bit patient? 15:13:38 maybe. 15:13:39 incomprehensibly: You're mistaking kallisti being stupid and/or annoying for condescending. 15:13:48 * elliott keeper of peace. 15:14:08 But seriously, if you're going to interpret things that uncharitably and personally this is a waste of time. 15:14:10 ok, kallisti, I've just been informed you're being stupid and/or annoying 15:14:17 rather than condescending 15:14:19 sorry for the misunderstanding 15:14:21 Obviously the condescension from my messages spilt over. 15:14:43 incomprehensibly: I hate your mother. 15:14:47 incomprehensibly: Pretty condescending of you, no? 15:14:51 elliott: yep 15:15:05 because I'm incredibly frustrated with this conversation 15:15:14 I think I'm going to give i tup 15:15:17 it up* 15:15:42 yes. this is what happens when two people think they're right in different ways. 15:15:43 incomprehensibly: Okay, we'll put it down in the history books that you lost. 15:16:00 fine with me 15:16:08 I don't care how #esoteric defines winning 15:16:16 you will also be accused of inhumanity 15:16:18 Excellent, now we just wait until elliott reads oerjan's comments in the logs and get some popcorn. 15:16:19 if they define it as poorly as they define action, it really means nothing 15:16:24 the conversation is about convincing the other person. it becomes frustrating when they refuse to be convinced because they're trying to convince you as well. 15:16:35 waste of time. this should be obvious. 15:16:42 incomprehensibly: For someone complaining about how rude we're all being you sure are being a twerp. 15:16:45 (Twerp: best word?) 15:16:54 I was attempting to be respectful before 15:17:02 Also, considering "action" is common terminology throughout the Haskell community, we're in very good company. 15:17:14 that's what I don't like about the Haskell community 15:17:18 the whole business with monads 15:17:44 it's so cargo cult 15:17:59 people use monads everywhere, and monad transformers 15:18:05 while they *work*, they make your code uglier than most Java 15:18:05 yes I think monads are actions because someone told me to interpret it that way. 15:18:14 incomprehensibly: No; that's people who look at Haskell from outside and are unable to distinguish people who know Haskell from people who dabble in it. 15:18:26 And, ironically, that complaint only applies to certain monads. 15:18:30 incomprehensibly, you know, you can just stop digging this hole. 15:18:48 elliott: it's definitely the worst with the IO monad 15:18:53 Yes, putting everything in IO is ugly, yes, putting everything in State is ugly, no, threading error-handling with Either is not ugly, no, modelling nondeterministic computation with [] or a probability monad is not ugly. 15:19:14 incomprehensibly: yes I agree. IO monad is bad for Haskell code. 15:19:16 If you go into #haskell you will see people warned away from putting everything in IO, so unless you provide an actual basis for this cargo-culting claim... 15:19:20 I think we should get rid of IO. 15:19:27 it would make compilation much easier. 15:19:31 kallisti: Now you *are* being a shit. 15:19:35 loooool 15:19:44 kallisti: I think so too, but there are possible good replacements 15:19:49 incomprehensibly: Anyway, it's not like we can just switch to FRP tomorrow so until then the IO monad will continue to be used more than we'd like. 15:19:53 for instance, an FRP system would be way more desirable 15:19:57 elliott: just joking. 15:20:05 incomprehensibly: Whining about cargo culting when the alternatives are still topics of active research is shitty. 15:20:07 I stopped taking this conversation seriously long ago. 15:20:19 incomprehensibly: Especially since the Haskell community is one of the only communities actually actively developing FRP. 15:20:31 (I say "one of" because I think Scala has a thing that's gaining traction.) 15:20:40 (Otherwise it'd just be the one, singular. Well, there's that Agda thing too.) 15:20:45 elliott: I've read too much that extols the virtues of monads and how beautifully they solve the problem of IO 15:20:50 for instance, Simon Peyton JOnes 15:21:09 this is not indicative of some kind of mindless Haskell IO monad cult. 15:21:21 incomprehensibly: The IO monad is the best way to model imperative programs I've seen; it's first-class, higher-order, etc. etc. etc. 15:21:28 That's separate from the issue of how good it is to model IO in general. 15:21:54 incomprehensibly: Anyway, you're obviously not actually in the Haskell community or you'd know that most people aren't satisfied with IO. 15:22:10 what does "in the Haskell community" mean 15:22:37 I follow Haskellers, I'm occasionally active in #haskell, etc. 15:22:44 I guess I'm outside it because I hold different impressions than you 15:22:48 no true scotsman 15:22:56 incomprehensibly: Dunno, but I know that thinking everyone stuffs everything into monads and thinks IO is the best thing ever proves you aren't. 15:23:46 I really don't want this to come across antagonistically or condescendingly, but don't try to hold the Haskell community to such a high standard 15:23:52 it's not God, and it's not the perfectest 15:23:54 i's just people 15:24:03 so you don't have to rationalize all of its follies 15:24:05 lol? 15:24:08 there are some bad sides to it 15:24:11 kallisti: lol? 15:24:19 I just find it funny that you inferred that, somehow 15:24:21 from elliott just said. 15:24:24 +what 15:24:33 kallisti: he's trying to redefine the Haskell community to fit all of his personal beliefs 15:24:37 incomprehensibly: Dammit: you've uncovered my secret promotoin of the Haskell Master Race. 15:24:37 incomprehensibly, the Haskell community is not perfect, therefore it must be full of Nazis! 15:24:41 *promotion 15:24:42 QED. 15:24:46 Phantom_Hoover: yeah, that's what I said 15:24:48 Phantom_Hoover: *SIMULTANEOUS GODWIN HIGH-FIVE* 15:24:49 Phantom_Hoover: good job 15:24:50 * incomprehensibly pats on head 15:24:53 godwin's law also applies to haskell 15:24:56 incomprehensibly: not elliott is actually familiar with the Haskell community 15:24:56 incomprehensibly: Oh go away. 15:25:00 incomprehensibly: this is not his agenda. 15:25:09 s/not/no/ 15:25:16 incomprehensibly, no, but it's implied by what you said. 15:25:21 I'm saying, elliott is exhibiting fanboyish loyalty to a community 15:25:24 Yes, totally. 15:25:29 Psychoanalyse me harder!!! 15:25:30 incomprehensibly: if you go to #haskell they will caution you from overzealous use of IO and (I would think) monad transformers. 15:25:34 redefining it to fit his personal beliefs whenever he disagrees with a common belief there 15:25:37 HE DEFENDED IT AGAINST A SINGLE PIECE OF CRITICISM 15:25:45 I sentence him to death by accusations of fanboy. 15:25:53 incomprehensibly: but seriously though, go away. 15:26:30 elliott: http://d37nnnqwv9amwr.cloudfront.net/entries/icons/original/000/003/617/okayguy.jpg 15:27:08 -!- incomprehensibly has left. 15:27:10 Oh! Rage faces! Excellent! 15:27:17 incomprehensibly has beaten the Kola Superdeep Borehole for deepest hole! 15:27:18 He's assured I will never wish he comes back. 15:27:29 Phantom_Hoover: BTW, I'm pretty sure you and kallisti were wrong too, but he was more wrong. 15:28:19 elliott: I pretty much agree with what you said, I just did not word it correctly. 15:28:24 elliott, I said that I barely knew what I was talking about, but I knew he was wrong. 15:28:57 elliott: also in the process of thinking about it I changed my mind a few times. 15:28:58 kallisti: No, you were wrong, you just aren't right enough to see how your wrongness differed from my rightness. 15:29:01 Sorry, *supreme righteousness. 15:29:11 elliott: sure. 15:29:15 whatever you'd like to think. 15:29:35 * kallisti is wrong by default. 15:30:27 everyone is wrong as proven by the fact that their languages are imperfect 15:30:45 itidus21: you are wrong. 15:31:06 yes but i used a paradox :-s 15:31:14 SO DID I 15:31:15 HAHA 15:31:15 HA 15:31:24 * itidus21 chokes 15:31:54 kallisti: pls stop being so dumb in logs i've had my fill of dumb for today 15:31:57 maybe i'll just quit the internet 15:32:08 elliott: where. 15:32:31 elliott: surely I'm not being dumber than everyone else. 15:32:36 if it's the moment I'm thinking of. 15:32:49 `addquote kallisti: by ordered multiset did you mean: list?????? 15:32:53 785) kallisti: by ordered multiset did you mean: list?????? 15:33:02 sheesh, it's like you put these unrealistic standards of perfection on me. 15:33:10 SUCH A BURDEN. ;_; 15:33:42 elliott: describe to me that ways in which that is not like an ordered multiset. 15:33:43 06:10:52: @tell elliott Hey, so I don't think [a] = Maybe (a, [a]) because there's no equivalent to (Just _|_) or (a, Just _|_) or .. 15:33:43 i'm not responding to this 15:35:00 elliott: you're really bad at letting me be wrong. 15:35:07 my wrongness is just going to overwhelm you one day. 15:35:14 because you failed to explain all of these small wrongnesses 15:35:57 06:12:45: newtype T = T A 15:35:57 06:12:57: T is not isomorphic to A because there is no equivalent to T _|_ 15:36:02 congratulations this is the stupidest you've ever been 15:36:08 > Sum undefined 15:36:09 Sum {getSum = *Exception: Prelude.undefined 15:36:10 elliott: I forgot about newtype 15:36:12 doing that 15:36:15 > undefined :: Sum () 15:36:15 Sum {getSum = *Exception: Prelude.undefined 15:36:15 elliott: see below 15:36:49 elliott: so I assume you want [a] to be constructed with newtype? 15:36:57 newtype [a] = Maybe (a, [a]) 15:37:09 i'm not talking to you about this 15:37:45 well it would make sense with newtype. 15:37:53 that they are equivalent 15:39:05 newtype [a] = Oops (Maybe (a, [a])) 15:39:35 elliott: it's almost like you want me to be wrong about basic things 15:39:42 wrong and talking to you almost daily. 15:39:46 about not-basic things. 15:39:52 no i just don't feel obligated to educate you, especially when you insist you're right 15:39:59 I /don't/ 15:40:18 only /sometimes/ 15:40:41 no 15:40:42 you really do 15:40:43 always 15:41:08 10:58:34: revelling in their savagery and idiocy, actually this never happened, probably what actually happened was genocide or something <-- erm, roman circus. case closed. 15:41:15 @tell oerjan THAT'S NOT FAIR YOU WEREN'T HALF-ASLEEP 15:41:16 Consider it noted. 15:41:19 oh god, incomprehensibly just /msg'd me 15:41:36 I apologize. You don't have to respond, or ever talk to me again, but I'm sorry for being a retard. 15:41:36 ok 15:41:36 hi 15:41:38 this actually just happened 15:41:41 and now he's offline??? 15:41:48 wh.....,,,,, 15:41:50 Phantom_Hoover: wh, 15:41:54 elliott: I seriously think if you actually took effort to explain simple basic things I would quickly change my mind about something I'm wrong about it. 15:42:01 w,,,,,,h 15:42:13 if you, however, conclude that I'm just going to insist I'm right /regardless of any information presented to me/ 15:42:22 then... nothing is going to change. 15:43:07 I think you have the mistaken notion that I think I'm infallible. Which is abusrd. 15:45:50 11:00:53: sorry, you passed my threshold of "coherent enough to bother trying to decode" <-- never go into teaching, will you? not that i expect you to. 15:45:50 11:02:04: i mean, you are refusing to mention the one piece of information kallisti misses, while he is clearly close to grasping at it, and simultaneously you are deriding him. 15:45:50 11:03:32: clearly you are not arguing in order to help, but in order to fuel your ego by exaggerating other's faults. heck you basically admitted it above. 15:45:50 11:04:17: and not only do you exaggerate other's faults, but you aim your rhetoric in such a way as to trap them further. 15:45:53 11:04:33: it's quite annoying to watch. 15:45:55 @tell oerjan I /used/ to just point out the one piece of information kallisti appeared to be missing, the problem is that doing so just makes him argue back about it and generally continue insisting he's right; combined with the fact that I was also incredibly tired at the time it was obviously not a good time to try and get an explanation out of me. also, that "admission" was what we refer to as a "joke". I /did/ point him at material I believed 15:45:55 Consider it noted. 15:46:00 would help him, based on misconceptions I perceived; the fact that I can't think of a way to explain without just having him learn these things from the ground-up may be a flaw, but whatever, it's not like I /offer/ to teach. 15:46:04 lambdaboooooooooooot 15:46:06 or er 15:46:08 IRCCCCCCCCC 15:46:10 @tell oerjan I /did/ point him at material I believed would help him, based on misconceptions I perceived; the fact that I can't think of a way to explain without just having him learn these things from the ground-up may be a flaw, but whatever, it's not like I /offer/ to teach. 15:46:10 Consider it noted. 15:47:37 elliott: that is true. you do not offer. Perhaps I shouldn't be so insist. 15:47:40 I CRAVE KNOWLEGE. 15:47:48 like a knowlege vampire. 15:48:15 i am perfectly happy trying to teach, but that's a different thing from trying to explain to somebody why they're wrong 15:50:10 @tell oerjan anyway, I'm not sure why you've taken it upon yourself to repeatedly complain about me semi-passive-aggressively to the exclusion of basically all others except Phantom_Hoover to some degree. even in the face of people behaving much, much worse. 15:50:10 Consider it noted. 15:50:33 Wait what how do I come into it. 15:50:55 11:35:11: This is because you are exceptionally stupid and/or gullible. <-- * oerjan briefly ponders repeating the whole rant above to Phantom_Hoover. wait, you are all like this. AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 15:51:03 oerjan complains about you once in a blue moon too. 15:51:19 elliott: from my perspective it makes perfect sense why oerjan would do such a thing. 15:51:27 but that's somewhat obvious I think. 15:52:58 It would be understandable if he complained about all negative behaviour in the channel, but focusing almost exclusively on me even when there are people doing much worse is bizarre. 15:55:47 Well, I can't think of many regulars who contribute much negative behavior. I suppose I can be quite negative when I'm arguing with you, but otherwise that's the extent of what I contribute to that. 15:56:47 * elliott 's message to oerjan was not an invitation to analyse things deliberately left vague. 15:57:15 -shrug- I don't see any harm in doing so. 15:57:30 You seem to expect me to respond to such analyses. 15:59:07 Well, yes, kind of. At least in some insightful way. I don't want any strife to come from it. 15:59:15 if you'd rather not discuss it, that's fine. 16:02:52 in any case, I will be consciously attempting to be more respectful to everyone in the future, because I think I've forgotten such simple things, and it's overall good for our little community for us to be respectful to each other. 16:03:27 I think we should instead warmonger and dominate. 16:04:03 heh. I disagree, but in a very disrespectful way. 16:04:04 To crush the channels of your enemies beneath your feet and hear the lamentations of their women. 16:04:07 er 16:04:09 respectful oops. 16:04:16 FREUDIAN SLIP HA 16:04:23 asshole dickmunchers. 16:05:37 11:57:11: last [1, 2, 3] * [1, 2, 3] 16:05:38 11:57:16: Labbekak: no 16:05:38 11:57:23: type error. 16:05:40 > last [1, 2, 3] * [1, 2, 3] 16:05:41 No instance for (GHC.Num.Num [t]) 16:05:41 arising from a use of `e_1123123' at <... 16:05:43 argh 16:05:47 come on lambdabot, you have instances for everything else 16:06:42 yeah an instance to allow 3 * [1,2,3] should be easy. 16:12:29 12:10:44: People who don't understand that monads etc. actually have laws you need to satisfy, not just type signatures. 16:12:37 Phantom_Hoover: It is perfectly legitimate for pure and return to disagree. 16:12:50 It's just not recommended. 16:13:36 Ah, but people who don't understand the latter are unlikely to understand anything at all about that sort of thing. 16:14:02 what 16:14:18 the words made sense when i thought them?? 16:14:24 12:18:53: I think it's literally just read <$> getLine 16:14:24 12:19:02: @src readLn 16:14:24 12:19:02: readLn = do l <- getLine; r <- readIO l; return r 16:14:24 12:19:13: @src readIO 16:14:24 12:19:14: Source not found. You speak an infinite deal of nothing 16:14:25 12:19:23: yeah same thing I think. 16:14:27 kallisti: no 16:14:36 readIO uses fail on parse failure 16:14:41 ah 16:15:01 isn't that just error though? 16:15:02 12:20:35: I have a bizarre concept of many things 16:15:02 12:21:21: Including safety and money 16:15:02 hi 16:15:16 kallisti: no... 16:15:24 otherwise do { x:xs <- m; ... } would be uncatchable 16:15:27 well 16:15:33 not uncatchable but it'd go via the async exceptions and skldfhsdjkf 16:15:36 i dno'tw ant to think about that 16:15:42 @src IO fail 16:15:42 fail s = failIO s 16:15:45 @src failIO 16:15:45 failIO s = ioError (userError s) 16:15:52 @src ioError 16:15:53 Source not found. :( 16:15:55 it's just throw 16:15:57 . IOError 16:15:58 or something 16:15:59 er 16:16:00 throwIO 16:16:15 hmmm so error is ana async exception 16:16:27 whereas throw is not? 16:16:35 I honestly haven't taken much time to learn about Haskell exceptions. 16:16:41 12:33:18: neither is (->r) 16:16:42 12:33:28: they're types. 16:16:42 12:33:29: >_> 16:16:42 12:33:33: * kallisti nitpick 16:16:44 kallisti: wrong again! 16:16:50 elliott: SEE BELOW 16:16:53 something amazing happens. 16:16:54 (->) is a type constructor 16:16:57 (-> r) is invalid syntax 16:16:59 ((->) r) is a type constructor 16:17:03 ((->) a b) is a type 16:17:05 elliott: something amazing happens later 16:17:05 read 16:17:28 12:34:59: iirc ((->) r) is (-> r) iirc 16:17:28 12:34:59: oops 16:17:31 no monqy no.............. 16:17:36 I'm right and at least 3 other people are wrong 16:17:39 ALMOST CONCURRENTLY 16:17:43 it's amazing. 16:18:05 12:35:28: Of course, lambdabot does its insane functions are numbers thing 16:18:17 Sgeo: would you feel awkward again if i pointed out that those instances are due to Conal Elliott 16:18:20 like when hsftp 16:18:51 not only are functions numbers but numbers are functions. 16:19:01 > 3 4 16:19:02 3 16:20:20 12:52:15: is friendship a monad 16:20:20 12:52:24: no you can escape friendship. 16:20:21 wrong 16:20:25 it's like the martix of soolidityi 16:20:46 elliott: did you note the part where I corrected myself and PH and monqy continued to be wrong for like whole seconds 16:20:49 did you note how amazing it was? 16:21:38 12:52:24: no you can escape friendship. 16:21:42 You can escape Identity. 16:21:50 it was just garden-variety wrongness, as opposed to your hanging gardens of babylon wrongness >:) 16:22:11 Phantom_Hoover: HE TRIED TO ESCAPE HIS IDENTITY... BUT CAN HE ESCAPE... FROM HIMSELF 16:22:14 THE MONAD.RUNNER 16:22:16 THIS SUMMER 16:22:34 "Would YOU dare to extract?" 16:22:57 comonad jokes are not allowed 16:23:18 13:48:18: The Times Person of the Year 2011... died in 2010 16:23:20 ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg sir elliott colloinkgravisom of hexham 16:23:27 what, it's one of those sodijosdjiosdjiojoijiojoijsdfiosdjoisdjoisdjo multiple people 16:23:28 ones 16:23:29 so what 16:23:30 also 16:23:32 hi quintopia 16:23:33 of 16:23:37 wherever thefuck you live 16:23:46 Georgia apparently 16:23:52 THERE ARE TWO GEORGIANS 16:23:58 OK I'm done logreading apart from the parts where the argument about action. 16:24:07 kallisti: get in the same city/town and you can start a third clique 16:24:08 elliott: good idea 16:24:38 kallisti: yes all of the brilliant esoteric programmers come from Jasper, GA. 16:24:46 kallisti: indeed 16:25:31 we should have like 16:25:35 a hexham-helsinki diplomacy meetup 16:25:40 Phantom_Hoover: you can be an honorary hexhite for the duration 16:25:48 it would be 16:25:53 beautiful crossnation friendship :') 16:25:54 elliott: also I really don't think my wrongness is all that remarkable, it just happens often because I'm talk a lot even when I don't know what I'm talking about. 16:26:01 elliott: this is my secret plan to ensure that someone corrects me. 16:26:04 it's brilliant. 16:26:28 elliott, yes 16:26:48 Phantom_Hoover: (It's OK we'd have Hexham become an honorary Scottish town so that it wouldn't make you a pansy.) 16:27:10 OK first decision, do we hold it in Hexham or Helsinki. 16:27:12 Hmm, wait. 16:27:19 (sad ending spoiler: all Europeans are pansies) 16:27:24 Phantom_Hoover: Find out what the exact midpoint of the shortest path between Hexham and Helsinki is, please. 16:27:39 what if it's in sweden 16:27:40 elliott: that might end up in the ocean somewhere. 16:27:45 Phantom_Hoover: I don't think geography works that way. 16:27:51 kallisti: We could have it on a ship. 16:27:55 do we invade sweden 16:28:17 Phantom_Hoover: we can leave those questions for the risk game (actually I don't think Sweden is a country in risk) 16:28:44 oh I forgot to mention 16:28:56 I'm the honoronororary American ambassador. 16:29:08 Phantom_Hoover: I think it's actually in Denmark? 16:29:19 Can we invade Sweden anyway. 16:29:23 elliott: that would be convenient. 16:29:24 Phantom_Hoover: If I give you the latitude and longitude of Hexham and Helsinki can you do the hard division part. 16:29:45 elliott: since that's like the place that's not ocean. 16:29:50 between those landmasses. 16:29:53 I'm not sure if you can just divide. 16:30:01 In fact I'm sure you can't just divide. 16:30:04 Phantom_Hoover: Well um however you find the midpoint of a line I'M NOT A SCIENTIST!!! 16:30:16 elliott, you're finding the midpoint of a great circle. 16:30:23 lol 16:30:49 Phantom_Hoover: UM JUST PRETEND THE WORLD IS FLAT? 16:31:02 USE DYMAXION 16:31:12 (That would be a fairly good approximation, actually.) 16:31:13 http://maps.google.com/maps?q=helsinki&hl=en&ll=66.018018,26.894531&spn=45.088568,173.144531&sll=58.378679,9.755859&sspn=13.524544,43.286133&vpsrc=6&hnear=Helsinki,+Finland&t=h&z=3 16:31:14 http://maps.google.com/maps?q=Hexham,+UK&hl=en&sll=66.018018,26.894531&sspn=45.088568,173.144531&vpsrc=0&hnear=Hexham,+Northumberland,+United+Kingdom&t=h&z=13 16:31:26 OK, I don't know which part is the latitude and longitude there. 16:31:29 It could be ll or sll. 16:31:33 But Hexham only has the sll one. 16:31:42 Wait. 16:31:44 Wikipedia has coordinates. 16:32:09 Hexham: Coordinates: 54.971°N 2.101°W 16:32:10 Helsinki: Coordinates: 60°10′15″N 024°56′15″E 16:32:14 Phantom_Hoover: Go forth and calculamate. 16:32:36 I don't know enough spherical geometry. 16:33:09 Phantom_Hoover: TRY PLEASE!!! 16:33:10 (spoiler: I bet it's in the ocean) 16:33:18 Phantom_Hoover: At least just pretend the world is flat and calculate it like that?? COME ON 16:33:22 no, you must, ask oerjan 16:33:24 it's okay when I'm rich guys you can borrow my chisip 16:34:08 elliott, you gave me one set of coördinates in decimal and the other in minutes and seconds you idiot. 16:34:18 Phantom_Hoover: Those are the ones in the Wikipedia article. 16:34:23 Phantom_Hoover: Can't you conver them yourself? 16:34:26 convert 16:34:29 `frink 16:34:34 No, I am too lazy? 16:34:36 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1 \ at frink.parser.Frink.parseArguments(frink) \ at frink.parser.Frink.main(frink) 16:34:43 Phantom_Hoover: Helsinki: 60.170833, 24.9375 16:34:44 HAPPY NOW? 16:35:18 > (54.971+60.171)/2 16:35:19 57.571 16:35:38 > (2.101+24.938)/2 16:35:39 13.519499999999999 16:35:45 Phantom_Hoover: YOU LACK THE COMMITMENT OF A REAL SCIENTIST. 16:35:50 No idea where that actually is. 16:36:14 http://maps.google.com/maps?ll=57.570833,13.518889&spn=0.01,0.01&t=m&q=57.570833,13.518889 16:36:17 SWEDEEEEEEEEEEEEEEEEEEEEEEN 16:36:47 Phantom_Hoover: That's assuming the world is flat, right? 16:37:08 And assuming a particular projection. 16:37:25 Phantom_Hoover: Which one. 16:37:27 tranverse mercator is what people use for coordinates or something right? 16:37:28 But it's close enough that I doubt the geodesic one will be outside Sweden. 16:37:29 Dunno. 16:37:45 (theta,phi) → (theta,phi). 16:37:46 http://upload.wikimedia.org/wikipedia/commons/1/15/MercTranSph.png 16:37:49 oh my god this is amazing 16:38:13 Phantom_Hoover: http://en.wikipedia.org/wiki/Equirectangular_projection? 16:38:17 Hmm, maybe not. 16:39:08 Yes, it is. 16:39:14 Right. 16:39:44 Phantom_Hoover: Are you sure the world isn't round enough to put it in Denmark. 16:39:55 http://en.wikipedia.org/wiki/Polyconic_projection Worst map projection. 16:40:02 I think the distortion might be enough to move it that far, actually. 16:40:30 I don't know if there are any projections which map geodesics to straight lines. 16:40:51 http://en.wikipedia.org/wiki/Gnomonic_projection 16:40:52 Aha. 16:40:53 http://www.geomidpoint.com/ 16:40:57 I'll just use this? 16:41:12 hm, I think latitude and longitude is actually not projected to anything. 16:41:19 maybe? 16:41:22 Hmm, wait, that won't preserve distances. 16:41:32 Phantom_Hoover: Er. 16:41:34 elliott, but we don't know the algorithm! 16:41:35 Phantom_Hoover: Your calculations are wrong. 16:41:43 Phantom_Hoover: One of those Hexham coordinates is in the sea. 16:41:58 Ah, centre of minimum distance should be it. 16:42:00 Eh? 16:42:01 And indeed, the midpoint is in Sweden. 16:42:10 Phantom_Hoover: Input the coordinates into http://www.geomidpoint.com/; observe matrix of aquidity. 16:42:15 * elliott gets the numbers from Google instead. 16:43:12 It's °W for those coörds, not °E. 16:43:15 Change the sign. 16:43:19 -!- Ngevd has joined. 16:43:19 Oh. 16:43:31 Hello! 16:43:40 Phantom_Hoover: Now the midpoint is in the sea. 16:44:03 I'm considering unifying my amateurish interests in programming and genealogy 16:44:05 http://en.wikipedia.org/wiki/Skagerrak 16:44:07 Now then, is that in Swedish waters? 16:44:08 This thing, in particular. 16:44:19 Ngevd: are you going to calculate who your ancestors are? 16:44:20 The name is Dutch. 16:44:26 No, it is not. 16:44:42 http://en.wikipedia.org/wiki/File:Oslo_from_holmenkollen.jpg ooh 16:44:53 "Both names Skagerrak and Kattegat are commonly held to be of Dutch origin. Skagerrak means in Dutch approximately 'Skagen Channel'. The Danish town of Skagen (The Skaw) lies at the northern tip of the Danish mainland. Rak means 'straight waterway' (compare the Damrak in Amsterdam); it is cognate to 'reach'.[1][2] The ultimate source of this syllable is the Proto-Indo-European root *reg-, 'straight'. The modern Norwegian word rak means 'straight' 16:44:53 . There is no evidence to suggest a connection to the modern Danish word rak (meaning rabble or riff-raff)." 16:44:55 Phantom_Hoover: SORT OF DUTCH 16:45:00 Oh, not in Swedish waters. 16:45:01 kallisti, no, there's a book about that. 16:45:08 @tell fizzie WE WOULD LIKE TO CORDIALLY INVITE YOU TO http://upload.wikimedia.org/wikipedia/commons/0/06/Skagerrak-2005-IV-13_ubt.jpeg 16:45:08 Consider it noted. 16:45:08 kallisti, Well, my dad's mum's side 16:45:10 @tell Deewiant WE WOULD LIKE TO CORDIALLY INVITE YOU TO http://upload.wikimedia.org/wikipedia/commons/0/06/Skagerrak-2005-IV-13_ubt.jpeg 16:45:11 Consider it noted. 16:45:15 @tell Phantom_Hoover WE WOULD LIKE TO CORDIALLY INVITE YOU TO http://upload.wikimedia.org/wikipedia/commons/0/06/Skagerrak-2005-IV-13_ubt.jpeg 16:45:15 Consider it noted. 16:45:19 @tell Ngevd WE WOULD LIKE TO CORDIALLY INVITE YOU TO http://upload.wikimedia.org/wikipedia/commons/0/06/Skagerrak-2005-IV-13_ubt.jpeg 16:45:19 Consider it noted. 16:45:21 @messages 16:45:21 elliott said 10s ago: WE WOULD LIKE TO CORDIALLY INVITE YOU TO http://upload.wikimedia.org/wikipedia/commons/0/06/Skagerrak-2005-IV-13_ubt.jpeg 16:45:21 @tell kallisti WE WOULD LIKE TO CORDIALLY INVITE YOU TO http://upload.wikimedia.org/wikipedia/commons/0/06/Skagerrak-2005-IV-13_ubt.jpeg 16:45:22 Consider it noted. 16:46:10 elliott: I'm sorry but the United States ambassador respectfully declines on the grounds that it does not benefit the interests of the American people. 16:46:11 kallisti: You have 1 new message. '/msg lambdabot @messages' to read it. 16:46:20 OK wait. 16:46:27 kallisti: Where are you again? 16:46:31 the United States 16:46:32 @messages 16:46:32 elliott said 1m 13s ago: WE WOULD LIKE TO CORDIALLY INVITE YOU TO http://upload.wikimedia.org/wikipedia/commons/0/06/Skagerrak-2005-IV-13_ubt.jpeg 16:46:39 elliott, Jasper, Georgia. 16:46:39 Phantom_Hoover: You have 1 new message. '/msg lambdabot @messages' to read it. 16:46:46 The one that looks like any other bit of woodland. 16:46:48 Phantom_Hoover: NO!! MY SECRET LOCATION 16:47:40 kallisti: The three-way midpoint is... in the sea. 16:47:47 Near Iceland and Greenland. Well, "near". 16:48:05 Let's try adding more data points??? 16:48:05 elliott: wow this is shocking 16:48:08 I would never considered 16:48:09 that the midpoint 16:48:10 Phantom_Hoover: Where in Edinburgh do you live. 16:48:25 between some points in Great Britain, Finland, and the eastern united states 16:48:25 Ahahaha nice one. 16:48:32 Phantom_Hoover: I guess Edinburgh is small enough to just use the whole thing. 16:48:39 would be in some massive ocean between all of those things. 16:48:53 Now it's still below Iceland. 16:49:18 elliott: isn't oerjan in Norway? invite him? 16:49:28 oh. 16:49:45 yes do that. 16:50:36 -!- Klisz has joined. 16:50:41 http://www.smbc-comics.com/index.php?db=comics&id=2470#comic 16:50:49 FRACTALS /= RECURSION YOU TWAT 16:51:10 kallisti: hahahahaha 16:51:31 ha ha? 16:51:53 Phantom_Hoover: solution: stop reading shitty webcomics 16:52:15 Oh no, they redesigned bbc.co.uk. 16:52:21 kallisti: Excuse me SMBC is objectively good. 16:52:23 Again?? 16:52:30 Phantom_Hoover: also isn't the mandelbrot set defined recursively? 16:52:41 NOOO THEY'VE MADE A TV SERIES OUT OF GREAT EXPECTATIONS??? 16:52:43 STOP IT BBC 16:52:48 kallisti: no. 16:52:55 "Fractals are recursive, therefore recursive things are fractals!" 16:52:55 Phantom_Hoover: I... just the homepage. 16:52:58 well it's defined by iterating a function 16:53:02 which is... similar. 16:53:59 @src iterate 16:53:59 iterate f x = x : iterate f (f x) 16:54:00 SEE? 16:54:06 The relative self-similarity is the recursion. 16:54:35 > fix ("Recursion works because " ++) 16:54:36 "Recursion works because Recursion works because Recursion works because Re... 16:55:17 Calculation method: 16:55:17 Midpoint (Center of gravity) 16:55:17 Center of minimum distance 16:55:17 Average latitude/longitude 16:55:21 Phantom_Hoover: Wait, why didn't I choose the second one. 16:55:25 I bet that will solve everything. 16:55:37 I bet it will 16:55:40 I already did. 16:55:43 unless minimum distance stops being great circles. 16:55:43 Ah, now it's in a different place in that same sea. 16:55:46 I will add Jasper again. 16:55:49 Jaspersprite, GA. 16:55:53 -!- Vorpal has joined. 16:55:53 lol 16:55:59 AHA 16:56:00 Is Vorpal included? 16:56:03 Waitwaitwait, centre of minimum distance and centroid are the same for 2 points. 16:56:07 It's... 16:56:09 It's now in Edinburgh. 16:56:15 Ngevd, no, because that would pull the point towards Sweden. 16:56:16 elliott, are 16:56:18 are you serious 16:56:19 Using Hexham, Helsinki, Jasper and Edinburgh. 16:56:19 best 16:56:21 Phantom_Hoover: Yes. 16:56:36 16:56:38 16:56:39 16:56:41 16:56:44 Phantom_Hoover: Try it yourself with those. 16:56:46 elliott, double-weitht Hexham 16:56:50 is it okay if I don't show up even though my location is used in the definition? 16:57:01 kallisti: No. 16:57:11 Can you link me again. 16:57:35 Phantom_Hoover: http://www.geomidpoint.com/ 16:58:09 http://www.geomidpoint.com/meet/ ;; this one filters the search to places with, e.g. land :P 16:58:40 How do I use those