←2011-08-28 2011-08-29 2011-08-30→ ↑2011 ↑all
00:01:42 -!- Patashu has joined.
00:04:12 -!- zzo38 has joined.
00:06:58 <zzo38> I want to replace the front-end of GHC so that I can add stuff
00:07:18 -!- sllide has quit (Ping timeout: 276 seconds).
00:08:09 <elliott> zzo38: ok
00:09:05 <zzo38> How can I download only the front-end codes?
00:11:42 <elliott> you can't, just download all of GHC and ignore the rest
00:11:56 <elliott> http://haskell.org/ghc/dist/7.2.1/ghc-7.2.1-src.tar.bz2
00:16:35 <zzo38> Can you tell me which directories from the tape archive I need, though?
00:16:59 <elliott> I think they're all mixed together in the source directories; you may find the developer wiki helpful
00:17:23 <elliott> http://hackage.haskell.org/trac/ghc/wiki
00:17:26 <oerjan> maybe the ghc-api documentation?
00:17:36 <elliott> oerjan: can't do what he wants
00:18:22 <oerjan> well isn't the rest a wrapper around the ghc-api, more or less? (note: no actual clue inside)
00:19:35 <elliott> oerjan: I don't know what that means
00:20:56 -!- kmc has joined.
00:21:32 <zzo38> If I do get only the front-end files, will it still compile if I already have Haskell Platform?
00:22:06 <zzo38> Can it make it use the GHC API for everything else?
00:22:14 <elliott> You cannot get only the front-end files.
00:22:17 <elliott> GHC is distributed in whole form.
00:22:19 <elliott> It is not a large tarball.
00:23:01 <zzo38> I did download it already but can I extract only some of the files from the tape archive?
00:24:20 <cheater> why not just do a git checkout from the darcs server?
00:24:29 <ais523> cheater: that is, umm, not helpful?
00:24:55 <cheater> that would be intended as i was trying to help zzo not you
00:25:04 <ais523> cheater: that is not helpful for him either?
00:25:48 <cheater> are you asking because you don't know
00:26:21 <ais523> cheater: no, I'm trying to give you a chance to defend yourself as being mistaken rather than trolling
00:30:36 <cheater> what happens if i don't take that chance
00:30:43 <cheater> do i roll?
00:30:54 <cheater> and, what are my modifiers?
00:31:01 <ais523> no, you just get banned again
00:31:06 <ais523> or at least kicked
00:31:09 -!- ChanServ has set channel mode: +o ais523.
00:31:13 -!- ais523 has kicked cheater trolling.
00:31:15 -!- ais523 has set channel mode: -o ais523.
00:31:19 <elliott> I...
00:31:20 <elliott> you have ops here?
00:31:30 -!- cheater has joined.
00:31:41 <ais523> elliott: you wouldn't believe me if I said no after that, would you?
00:31:58 <cheater> nice, abusing op privileges after falsely assuming i'm trolling
00:32:00 <elliott> ais523: I'd probably check to see if you removed them afterwards
00:32:02 <cheater> how cute
00:32:08 <elliott> cheater: backchat to an op after they kick you after you just got unbanned
00:32:11 <elliott> smart things to do: the novel
00:32:18 <ais523> cheater: I doubt the other ops will overrule me on that one, although of course they can if they want to
00:32:32 <Patashu> we have ops here?!?
00:32:33 <cheater> well, i was trying to help zzo38
00:32:36 <zzo38> I don't think git checkout would help; I am asking which files correspond to the front-end, as well as some other questions such as whether it can access the GHC API to do the stuff after the front-end, whether it can use the different version, etc
00:32:38 <Patashu> oh, you have stealth ops
00:32:38 <Patashu> clever
00:32:46 <ais523> not taking a chance to prove you aren't trolling, after being given one and making it clear you're suspected as a troll, is tantamount to admitting to trolling
00:32:49 <cheater> as you can see he just gave a serious answer
00:32:51 <oerjan> Patashu: *MWAHAHAHA*
00:32:51 <zzo38> cheater: I understand you try to help, is OK, but you perhaps have misunderstand my question
00:33:20 <cheater> zzo38, i did not understand why you only wanted to get a part of the tar file.
00:33:34 <cheater> i find it easier to get the whole thing and then copy files out as needed.
00:33:49 <zzo38> cheater: I have downloaded the entire file. I can tell 7-Zip to extract only the files I needed. However, I do not know which files I need to extract.
00:34:30 <cheater> ais523, you started conversation with me by using an derisive tone and then made a statement which i could only take as humor, because i'd have never thought you would be taking yourself seriously at that point.
00:34:49 <cheater> i was wrong!
00:34:58 -!- elliott has quit (Read error: Connection reset by peer).
00:35:01 <ais523> cheater: the whole context was relatively clear
00:35:03 -!- elliott has joined.
00:35:16 <cheater> zzo38, are you perhaps looking for the place where teh ghci ui is defined?
00:35:27 <ais523> cheater: or do you just not read context at all, like Vorpal?
00:36:17 * elliott wonders what cheater is actually trying to achieve
00:36:19 <cheater> ais523, the context of your communication to me as i saw it was you picking on me, if you thought htere was a different context then you have failed to communicate it, or have chosen not to, in order to confuse me and then have an excuse for abusing op powers
00:36:34 <ais523> cheater: the context was that zzo38 /already had the files/, as you could tell from his comments
00:36:37 <zzo38> I am looking for the front-end of GHC, that is, the lexer, parser, renamer, and typechecker. Perhaps I can just try to do it with haskell-src-exts whatever I try to do and see if it helps; although it means I cannot access it with TH if I do that
00:36:52 <elliott> ais523: has it come up that you can't actually make a git checkout from a darcs repository yet
00:37:02 <ais523> so suggesting that he gets them again, using git, from a darcs server, is a little silly even if the darcs server provides a git mirror
00:37:13 <cheater> ais523, i thought maybe he's low on disk space or something like that and that's why he doesn't want to unpack the whole file
00:37:21 <ais523> elliott: it did, but that's not necessarily wrong in case there's multiple VCSes on the server
00:37:25 <cheater> the darcs server is a git server.
00:37:39 <ais523> cheater: well, that /is/ wrong, because git history takes up quite a bit of disk space compared to a tarball
00:38:07 <cheater> yeah, i guess that's right
00:38:30 <cheater> still doesn't justify you picking on me
00:38:55 <cheater> zzo38, let me see if i can find that in my checkout
00:39:00 <cheater> then i could tell you the file names
00:40:31 <zzo38> Perhaps I will just try to do it by modifying haskell-src-exts at first, and then if that doesn't work, modify GHC. But then, should I install "hint" package, so that I can make a interpreter, and be able to add interpreted codes. But is there a way to use that to add stuff for accessing by Template Haskell? Possibly I need to add my own kind of "reify" commands
00:41:23 <cheater> i have the directory compiler/parser in my checkout
00:41:47 <cheater> and compiler/typecheck
00:42:21 <zzo38> Is there a separate one for the renamer, or is the renamer and typechecker together?
00:42:36 <zzo38> cheater: Have you ever made changes to GHC?
00:43:26 <cheater> oh there is also compiler/rename
00:43:36 <zzo38> OK
00:43:54 <cheater> i think the lexer is part of the parser:
00:43:55 <cheater> ./compiler/parser/LexCore.hs
00:43:55 <cheater> ./compiler/parser/Lexer.x
00:44:01 <cheater> yes, i have
00:44:03 <cheater> to ghci
00:44:06 <zzo38> OK
00:44:17 <elliott> zzo38: you may find #ghc helpful, it contains a lot of people familiar with the ghc source
00:44:23 <zzo38> What things to GHCi, specifically?
00:46:19 <cheater> i have modified some commands
00:46:42 <zzo38> Which ones, and in what ways? And which version of GHCi?
00:47:49 <cheater> 7 but that part was the same in 6 i think
00:48:08 <cheater> i was just testing how and what i can modify the commands really
00:48:14 <cheater> nothing worth of sharing
00:48:21 <zzo38> OK
00:48:33 <cheater> *in the
01:00:06 <zzo38> Does cabal install user or global by default? Should I install user or global?
01:00:32 <elliott> on Unix, user; on Windows, it doesn't matter
01:00:40 <elliott> unless you have a multi-user Windows setup, which is very rare
01:00:43 <elliott> I'd just stick with the default
01:00:49 <elliott> which I think depends on your settings at install?
01:03:00 <zzo38> I do actually have two accounts so that I can do adminstrative functions with one account (usually using "runas") and everything else using another account.
01:03:24 <elliott> You probably want a user install, then
01:03:34 <elliott> which is the default
01:03:35 <ais523> elliott: OK, most people don't do Windows accounts correctly; but do you seriously believe that /zzo38/ wouldn't do Windows accounts correctly?
01:03:40 <ais523> (I do them correctly too)
01:03:45 <ais523> (when on Windows)
01:04:00 <elliott> ais523: I think he likes DOS, and doesn't like the computer to try and stop him doing things, even if they're dangerous
01:04:10 <elliott> so I find it perfectly plausible that zzo38 would want to use only an administrator account
01:04:49 <zzo38> The reason is not to stop me but to stop other software from doing things that I do not run under the administrator account.
01:05:17 <elliott> fair enough
01:07:23 <zzo38> Is it possible to tell cabal to access multiple servers? Is it possible to give the servers prefixes for package names in case some of them might have packages that have the same name but are different packages?
01:12:55 <zzo38> Some people told me that shell scripts set to suid in Linux doesn't switch. I think it should do it anyways. I did read somewhere that you can make a symlink named -i to trick it, but can you fix it by changing the shebang like to say #!/bin/bash --
01:13:43 <zzo38> Anyways it should be whoever decides to make it suid whose fault it is if they do it wrong, rather than the kernel. UNIX should not stop you from doing stupid things because then you cannot do smart things either.
01:14:42 <ais523> zzo38: the problem is not with a symlink called -i, but if you make a symlink to the shellscript itself, then load the shellscript, then after the shebang is read and while sh is loading, change the symlink to point to a different shellscript
01:15:07 <ais523> there's nothing the person who writes the script can do about that, except to name something in the shebang line that checks to see if the file it's operating on is actually suid with the right user
01:16:11 <zzo38> That could probably be corrected, by making the kernel seize the file if you run any suid program in that way; for consistency it can do that for all programs rather than only shell scripts.
01:16:42 <coppro> That would violate a principal part of the Unix model
01:20:14 <zzo38> Another way could be to make it if you run a symlink of a suid shell script it will call the program with the name of the actual file instead. Or make it so that symlinks don't run suid unless it is owned by the same user. But either way it seem it is the fault of whoever made it suid
01:22:05 <kmc> suid is irredeemably broken anyway
01:22:14 <Sgeo_> "Or make it so that symlinks don't run suid unless it is owned by the same user." I'm parsing that in two ways. One makes suid useless, the other seems risky, in that not all shellscripts owned by the suid-setting user should be suid-able
01:23:55 <zzo38> Sgeo_: You are probably correct. Is the other one any better?
01:24:29 <Sgeo_> I personally don't see any problems with sending the real file, but I'm not a UNIX geek
01:24:37 <ais523> zzo38: there is actually a fix that some UNIXes use; upon encountering a suid shell script, they open the shell script, then pass the open file descriptor to the interpreter
01:24:44 <ais523> changing the symlink won't change what the file descriptor points to
01:25:02 <ais523> Linux doesn't do it, though, for some reason
01:25:19 <ais523> kmc: what in particular do you dislike about it, and would recommend as an alternative?
01:25:31 <elliott> did kmc follow zzo back here? :P
01:26:19 <kmc> it's a confused deputy problem waiting to happen
01:26:22 <ais523> I'm one of those people who believes that UNIX is really far from perfect, but that you really need to know what you're doing to come up with anything better
01:26:37 <ais523> kmc: aren't all methods of escalating permissions? or are some worse than others?
01:26:52 <kmc> there are just too many ways the person running a binary can screw with that binary's execution
01:27:04 <elliott> that's more a rebuttal of the entire unix security model
01:27:12 <kmc> Linux et al try to patch this up with blacklisting
01:27:17 <elliott> which is certainly valid, but you can't really fix that within the contexts of unix
01:27:21 <ais523> kmc: pretty much all of them don't work on scripts that are either suid or have called setuid
01:27:24 <kmc> can't ptrace setuid binary due to special rule. can't set this or that environment variable by special rule. etc.
01:27:36 <kmc> ais523, right, because there are special blacklist rules, and sometimes they forget one
01:27:38 <kmc> anyway
01:27:44 <kmc> i agree this can't really be fixed without changing unix drastically
01:27:47 <ais523> you can't even look at all the procfiles of a process that's your own child that dropped permissions, if you've also dropped permissions
01:27:48 <kmc> like including real capabilities
01:27:59 <kmc> but there are still better alternatives
01:28:03 <kmc> that work in the confines of existing unix
01:28:09 <Sgeo_> Better than capabilities?
01:28:09 <elliott> Unix should just be @ instead, and then have never existed, and then @ should have existed in its place.
01:28:11 <ais523> Linux does have real capabilities, but I don't see how they avoid the problem
01:28:15 <elliott> that's my controversial Unix security opinion
01:28:17 * Sgeo_ is curious
01:28:19 <ais523> they're rather coarse-grained, though
01:28:20 <kmc> Linux has real capabilities?
01:28:22 <elliott> ais523: Linux does not have object-capability
01:28:27 <elliott> it has POSIX-capability, which are something else entirely
01:28:28 <zzo38> Then you should just fix suid so that it prevents the user running it from doing various things. The suid process could then add the permission that allows the actual user that run the program to send signals, if they want to.
01:28:30 <ais523> elliott: no, just subset-of-root-capability
01:28:34 <elliott> it has POSIX-capability, which are something else entirely
01:28:41 <kmc> POSIX capabilities are barely better than root / not-root
01:28:43 -!- azaq23 has joined.
01:28:48 <elliott> "real capabilities" refers to the object-capability model whenever I've seen it :P
01:28:57 -!- azaq23 has quit (Changing host).
01:28:58 -!- azaq23 has joined.
01:29:04 <Sgeo_> What's better than capabilities?
01:29:10 <ais523> well, object-capabilities are /still/ subject to the confused deputy problem
01:29:14 <kmc> i did not claim anything was better than object capabilities
01:29:26 <ais523> arguably, even more so than suid, because the person is still running an executable and able to mess with it
01:29:29 <kmc> ais523, yes, of course. in security one must talk about less-susceptible vs more-susceptible, not in absolutes
01:29:35 -!- azaq23 has quit (Client Quit).
01:29:43 -!- azaq23 has joined.
01:29:46 <ais523> at least with suid, you can say "that's suid" versus "that's not suid" and use it as a basis for blacklisting
01:29:51 <kmc> anyway, i propose to replace each setuid binary with a persistent daemon that serves requests over a UNIX socket
01:30:00 <zzo38> Elevation permission can be done using suid; in addition, reduce permission to that of other users while the program is still running could be done with other function calls (if the calling program is root), and then everything else to change permission of processes can be done with ptrace.
01:30:07 <kmc> it's a much narrower interface to the less-privileged user
01:30:22 <kmc> people know how to write secure network daemons, more than they know how to write secure setuid binaries
01:30:30 <ais523> it seems potentially vulnerable to DOS issues that setuid binaries aren't vulnerable to
01:30:36 <kmc> yeah
01:30:46 <ais523> and you can do bizarre things on sockets too, like using them to send SIGPIPE signals
01:31:49 <ais523> I suppose the argument's a resource-limit one; if a daemon is doing work on your behalf, how do you make it count against your own resource limits rather than the daemon's?
01:32:13 <kmc> that's an interesting question
01:32:46 <Sgeo_> How does one patch KDE2 under FreeBSD?
01:33:04 <kmc> one could argue that setuid binaries shouldn't be doing nontrivial work anyway
01:33:12 <kmc> i'm not sure if that really holds
01:33:30 <kmc> anyway replacing privilege escalation flaws with denial of service flaws is frequently a good tradeoff
01:34:00 <quintopia> the same way similar things are done in stuff like xen?
01:34:43 <Patashu> What does division by zero do in a language without runtime errors?
01:34:54 <ais523> Sgeo_: the most sensible answer to that question I know of was one about KDE3 being out
01:35:04 <ais523> presumably, you could use KDE4 as a substitute nowadays
01:35:36 <kmc> here's an example which looks much like object capabilities: instead of your HTTP server running as root just so it can get port 80, it talks to a daemon whose sole purpose is to open privileged ports on behalf of other processes
01:35:38 <ais523> (for those here who don't know of the phrase, it's a meme in certain countries (I forget which) where people ask that question at politicians and other celebrities in apparently serious interviews)
01:35:43 <kmc> (and send them back through a UNIX socket)
01:35:52 <Sgeo_> ais523, Wikipedia says Russian
01:35:53 <Sgeo_> http://en.wikipedia.org/wiki/How_does_one_patch_KDE2_under_FreeBSD%3F
01:36:26 <Sgeo_> Or, well, hmm
01:36:30 <ais523> ah, Russian-speaking countries in general, it seems
01:37:01 <ais523> kmc: and how does the daemon know who can open the port? and what the HTTP server will do with it?
01:37:21 <ais523> with object capabilities, you attach a "port 80" capability to the file containing the executable for the HTTP server
01:37:27 <kmc> not necessarily
01:37:29 <ais523> with a daemon, there's no obvious way to do that
01:37:36 <kmc> that's only one sort of object-capability system
01:37:42 <zzo38> Well, not only HTTP. It also includes a very large number of other protocols. Maybe even Message Send Protocol; although I forget what its port number is.
01:37:48 <ais523> well, that's one way in which it works
01:37:54 <kmc> that's basically the case where the daemon also happens to be the filesystem
01:37:56 <ais523> and I can't see an obvious way for daemon-capability to duplicate that
01:37:58 <elliott> ais523: nah, you pass the listen-on-port-80 capability to it at runtime
01:38:05 <ais523> elliott: oh, init passes it, or whatever?
01:38:13 <elliott> whoever starts the httpd passes it
01:38:32 <ais523> and needs it to be able to start the httpd
01:38:52 <elliott> unless they want to start it on another port, which would presumably be acceptable
01:38:53 <ais523> why would that whoever happen to have a port-80 capability? I can understand why init would have it
01:39:06 <ais523> but say I'm a network admin who wants to restart Apache or whatever
01:39:10 <ais523> where do I get a port-80 capability from?
01:39:50 <elliott> ais523: presumably you have near-omnipotence, considering that in unix you'd have access to sudo
01:39:59 <ais523> yep
01:40:11 <ais523> although, you'd actually only need a suid HTTP server to manage that
01:40:12 <elliott> so you'd just get one from the network driver
01:40:28 <ais523> or sudo can be set up to only allow people to run particular executables, which is much the same thing
01:41:41 <oerjan> <elliott> did kmc follow zzo back here? :P <-- poor HackEgo is going to be overworked
01:41:55 <ais523> gah, Firefox version numbers make discussions of website problems really hard to follow
01:41:57 <zzo38> The other way is monadic capability system. You have a Haskell program with a monadic type for operating system, and it exposes all of its constructors representing the basic operations (derived ones are just combiniations of the basic ones), when one program calls another in I/O mode it will intercept everything and there is no limit to the number of times it can be done
01:42:11 <ais523> you get "this doesn't work in Firefox 6" "well it works in Firefox 8" and no longer have an idea of who to follow
01:42:19 <ais523> or which one's remotely recent
01:42:25 <ais523> C-INTERCAL is winning, though, it's on version 29
01:42:35 <kmc> i don't know what a HackEgo is
01:42:44 <elliott> `run echo :(
01:42:47 <ais523> some projects like Java have discarded the major version number
01:42:48 <HackEgo> sh: -c: line 0: syntax error near unexpected token `(' \ sh: -c: line 0: `echo :('
01:42:49 <elliott> `run echo ':('
01:42:51 <HackEgo> ​:(
01:42:55 <ais523> C-INTERCAL effectively merged the minor and patchlevel, and discarded the major
01:43:29 <elliott> discard all version numbers, just fork the project and move every developer over before each new release
01:44:13 <zzo38> One part of the system is written in assembly language and manages the lowest level operating system operations, as well as all serialization and saving state to disk and restoring everything properly, and so on.
01:44:18 <ais523> elliott: haha
01:44:25 <ais523> but then I couldn't use a -2 version number component for betas
01:44:40 <ais523> (which I've recently caught myself wanting to do in non-INTERCAL-related projects; it really does make a lot of sense)
01:44:42 <elliott> ais523: just use more boring names for betas to discourage regular users from trying them
01:44:55 <elliott> Sigma-Zyzyzyzyzzz INTERCAL becomes Corporate Language Implementation Framework 9
01:45:02 <zzo38> (I don't know how well these ideas work; I have never tried it and am not even quite sure how)
01:45:02 <ais523> I generally want to encourage people to use betas in the case of INTERCAL
01:45:02 <elliott> becomes ALL INTERCAL ALL THE TIME!!
01:45:26 <elliott> ais523: hmm, name each fork after a particularly nice line of INTERCAL
01:45:32 <elliott> ais523: for the case of betas, a half-broken one
01:45:32 <ais523> I do'nt think it /has/ any "regular users"
01:45:39 <ais523> *don't
01:45:54 <zzo38> Please use negative version numbers if it helps in making the version numbers.
01:46:43 <Patashu> I want my version numbers to be arbitrary unicode
01:47:04 <zzo38> Patashu: Including control characters or not?
01:47:08 <Patashu> Sure
01:47:28 <Patashu> No, better - it's a link to a program that calculates the version number when ran
01:47:42 <oerjan> classical chinese numerals
01:47:49 <Gregor> No, better - it's a quine.
01:48:20 <Patashu> Every version number is a quine in echo
01:48:40 <kmc> every version number is an entire copy of Goedel Escher Bach
01:49:09 <zzo38> I usually just use the Major.Minor.Revision system except that if the minor increases beyond 9 then it is the next major instead, and if the revision increases beyond 9 then it is the next minor instead.
01:50:19 <zzo38> Which allows you to write it as a decimal number such as 100 for version 1.0
01:53:06 <oerjan> ^ul ((version 1.0)!(^ul )SaS(:^)S):^
01:53:06 <fungot> ^ul ((version 1.0)!(^ul )SaS(:^)S):^
01:53:57 <Lymee> version 1.0 < wat
01:54:15 <Lymee> ^ul ((um what is this part)!(^ul )SaS(:^)S):^
01:54:15 <fungot> ^ul ((um what is this part)!(^ul )SaS(:^)S):^
01:54:17 <Lymee> Heh.
01:54:33 <Lymee> !echo
01:54:38 <Lymee> !echo test
01:54:39 <EgoBot> test
01:54:43 <Lymee> ^ul ((um what is this part)!(!echo ^ul )SaS(:^)S):^
01:54:43 <fungot> !echo ^ul ((um what is this part)!(!echo ^ul )SaS(:^)S):^
01:54:44 <EgoBot> ​^ul ((um what is this part)!(!echo ^ul )SaS(:^)S):^
01:55:10 <ais523> kmc: how many printings does it have? you might run out of numbers after a while
01:55:24 <ais523> Lymee: ( ... )! is a comment in Underload
01:55:34 <Lymee> Ah.
01:55:40 <zzo38> EgoBot sends a zero-width character if the output starts with any punctuation mark
01:56:00 <zzo38> Although it should probably just send NOTICE for replies
01:56:08 <Lymee> > text "test"
01:56:09 <lambdabot> test
01:57:05 <Lymee> `echo ^ul ((`echo ^ul )SaS(:^)S):^
01:57:07 <ais523> how impossible is it to implement eval in Haskell?
01:57:07 <HackEgo> ​^ul ((`echo ^ul )SaS(:^)S):^
01:57:13 <Lymee> :<
01:57:17 <ais523> I'm wondering if it's doable at all, just to annoy purists
01:57:20 <elliott> ais523: not impossible at all
01:57:23 <elliott> http://hackage.haskell.org/package/hint
01:57:28 <ais523> haha, it's been done?
01:57:35 <elliott> ais523: how do you think lambdabot works?
01:57:42 <elliott> hint is great because it actually reifies the value
01:57:49 <ais523> I thought it was invoking an interpreter
01:57:53 <ais523> just like EgoBot runs interpreters
01:57:59 <elliott> it is, it just happens to use the GHC API to do it :P
01:58:01 <ais523> and so the eval would be unconnected with the original program
01:58:07 <elliott> oh, well it doesn't inherit your scope
01:58:13 <elliott> unless you pass things in explicitly
01:58:25 <elliott> and I doubt you could pass an IORef or anything
01:58:36 <elliott> but it provides an eval that results in a bona-fide actual value, so it's good enough :)
01:58:47 <elliott> and you could ofc have it produce a State monadic value and run that
01:59:06 <ais523> "monadic value" = "monad action"? or "thing you apply a monad action to"?
01:59:13 <elliott> monad action, yes
01:59:31 <kmc> what does EgoBot do?
01:59:52 <elliott> !help
01:59:52 <ais523> runs programs in a variety of languages, mostly esolangs
01:59:52 <EgoBot> ​help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help <command>.
01:59:55 <elliott> !help languages
01:59:56 <EgoBot> ​languages: Esoteric: 1l 2l adjust asm axo bch befunge befunge98 bf bf8 bf16 bf32 boolfuck cintercal clcintercal dimensifuck glass glypho haskell kipple lambda lazyk linguine malbolge pbrain perl qbf rail rhotor sadol sceql trigger udage01 underload unlambda whirl. Competitive: bfjoust fyb. Other: asm c cxx forth sh.
01:59:57 <elliott> !help userinterps
01:59:58 <EgoBot> ​userinterps: Users can add interpreters written in any of the languages in !help languages. See !help addinterp, delinterp, show | !userinterps. List interpreters added with !addinterp.
02:00:03 <elliott> !userinterps
02:00:04 <EgoBot> ​Installed user interpreters: acro aol austro bc bct bfbignum brit brooklyn bypass_ignore bytes chaos chiqrsx9p choo ctcp dc decide drawl drome dubya echo ehird elmer fudd google graph gregor hello id insanetemp jethro kraut lperl lsh map num numberwang ook pansy pi pikhq pirate plot postmodern postmodern_aoler prefixes python redneck reverse rimshot rot13 rot47 sadbf sanetemp sfedeesh sffedeesh simplename slashes svedeesh swedish valspeak wacro warez wc yodawg
02:00:07 <elliott> those things
02:00:19 <elliott> it's HackEgo's sibling
02:00:24 <ais523> !bfjoust simple_attack (>)*8(>[-])*21
02:00:32 <EgoBot> ​Score for ais523_simple_attack: 17.1
02:00:52 <ais523> good, it came last
02:00:55 <Sgeo_> You can't really use it to modify host functions, can you?
02:00:56 <ais523> I'd have been a little worried otherwise
02:01:18 <elliott> Sgeo_: define modify, mutate? you can't mutate values in Haskell
02:01:26 <elliott> whether through an eval mechanism or not
02:01:32 <Sgeo_> Mm.
02:02:00 * Sgeo_ mutters about inconveniently-se MIME types
02:02:02 <Sgeo_> http://code.haskell.org/hint/devel/examples/
02:02:12 <Sgeo_> *inconveniently-set
02:03:09 <elliott> Content-Type: text/x-haskell
02:03:10 <elliott> looks correct to me
02:03:27 <ais523> inconvenient because the browser won't open it inline?
02:03:41 <ais523> there should really be some content-type modifier that says "if you don't understand this, it's just fine for you to treat it as a text file"
02:03:48 <ais523> "but not try to execute it even if you're Internet Explorer"
02:04:03 <elliott> ais523: content-disposition: inline
02:04:10 <ais523> ah, great, it does exist
02:04:22 <elliott> it's a bit vague though
02:04:31 <ais523> (Wikipedia will not serve pages raw as text/plain, but will as text/css; text/plain triggers an old-IE bug where it'll interpret it as HTML sometimes)
02:04:54 <elliott> gross
02:05:06 <ais523> I know
02:05:12 <Sgeo_> "Evaluates an expression, given a witness for its monomorphic type."
02:05:26 <elliott> it actually works with polymorphic types, at least it did when i tried :p
02:05:26 <Sgeo_> Like a :: String or whatever?
02:05:28 <ais523> but avoiding a really exploitable XSS bug in old-IE is necessary, I think
02:05:38 <elliott> a witness is just (undefined :: T) or whatever
02:05:49 <Sgeo_> Ah, ok, that's what I thought
02:06:49 <Sgeo_> Wait, why is the as needed?
02:07:02 <Sgeo_> interpret "head [True,False]" (as :: Bool)
02:07:05 <elliott> its just sugar
02:07:15 <Sgeo_> What would that look like without the as function? Ugly?
02:07:34 <Sgeo_> Oh, type signature of interpret would be different
02:08:18 <elliott> ...
02:08:23 <Lymee> String -> a?
02:08:25 <elliott> it would explicitly involve an "undefined"
02:08:26 <elliott> which is ugly
02:09:03 <Lymee> Sgeo_, I think it'd be either String -> a or String -> IO a
02:09:24 <CakeProphet> class Eval e where eval :: String -> e ???
02:09:40 <Sgeo_> Lymee, http://hackage.haskell.org/packages/archive/hint/0.3.3.2/doc/html/Language-Haskell-Interpreter.html
02:09:41 <Lymee> (Which would make more sense anyways)
02:09:54 <Sgeo_> elliott, I meant something more like
02:10:12 <Lymee> Sgeo_, ah.
02:10:20 <CakeProphet> Lymee: a = IO b for when you need IO
02:10:24 <CakeProphet> so String -> a
02:10:29 <Sgeo_> interpret "head [True,False]" :: InterpreterT Id Bool
02:10:41 <Lymee> CakeProphet, makes sense.
02:11:59 <CakeProphet> so yeah you basically want Read except now every instance interprets Haskell to some kind of intermediate value and then makes sure it's the correct type
02:12:01 <CakeProphet> or something.
02:13:21 <CakeProphet> also you probably want to name your typeclass IsString
02:13:37 <CakeProphet> and turn on overloadedstrings
02:13:39 <CakeProphet> totally a good idea.
02:14:13 * elliott rips CakeProphet's soul.
02:14:25 <Sgeo_> http://hackage.haskell.org/packages/archive/hint/0.3.3.2/doc/html/Language-Haskell-Interpreter.html#g:10 the parens note here fails to show that that should be =\n and not =n
02:15:50 <elliott> oh noes
02:15:55 <elliott> send a patch
02:15:59 <elliott> its just a missing \ in the haddock
02:16:52 <CakeProphet> http://pastebin.com/kQ53Wdyy
02:16:54 <CakeProphet> help what is wrong
02:17:08 <CakeProphet> pyparsing.ParseException: Expected end of text (at char 0), (line:1, col:1)
02:18:44 <Sgeo_> I'm not at all set up to send patches
02:20:48 <monqy> CakeProphet: alternatively instead of providing an isstring instance make a quasiquoter and use dataToExpQ or whatever it is
02:20:56 <monqy> CakeProphet: to make the quasiquoter
02:21:17 <monqy> (dataToExpQ/dataToPatQ/dataToQa is very convenient for making quasiquoters)
02:21:48 <CakeProphet> monqy: help python
02:23:01 <monqy> CakeProphet: no
02:23:15 <monqy> I'm probably awful at python by now
02:23:43 <oerjan> CakeProphet: a hunch, are you successfully skipping whitespace where needed?
02:24:09 <CakeProphet> oerjan: pyparsing skips all whitespace (including newlines) by default
02:24:13 <oerjan> ok
02:24:14 <CakeProphet> or so I am led to beieve.
02:24:46 <elliott> i doubt your grammar is non-ambiguous with no newlines involved at all
02:25:26 <CakeProphet> it still did not work with newlines included.
02:25:41 <elliott> that isn't what i meant
02:25:43 <elliott> but w/e :P
02:26:39 <CakeProphet> elliott: no I mean I used newlines to define the grammar and told the parser to not skip newlines and it still did not work.
02:27:06 <oerjan> CakeProphet: perhaps try smaller test cases, such as just statement on the first line, and so on down until it succeeds?
02:29:33 <oerjan> basic bug case minimization
02:30:10 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .).
02:31:14 <Sgeo_> I intended to say something stupid in here, not in #haskell
02:31:26 <zzo38> You can sometimes open any text file inline in Mozilla browsers by prepending view-source: to the URL.
02:31:26 <monqy> did you say something stupid in #haskell
02:32:35 <Sgeo_> "<Sgeo> I think I can express what makes me uncomfortable about duck-typing lately in terms of the microwave metapho."
02:32:54 <monqy> yep
02:33:05 -!- GreaseMonkey has joined.
02:33:05 -!- GreaseMonkey has quit (Changing host).
02:33:05 -!- GreaseMonkey has joined.
02:34:42 <CakeProphet> oerjan: it's giving an error on the first line now, expecting a (
02:34:53 <CakeProphet> but with expr << stringLiteral | ...
02:35:01 <CakeProphet> it should see the " and parse as a string
02:35:02 <CakeProphet> SO CONFUSED
02:35:32 <zzo38> The browser I use also allows you to show anything internally when the download prompt is displayed. Push i to show as a specified MIME-type, or t to show as text/plain. That only works for HTTP (and HTTPS), though. For gopher, you push M-0 to view as text.
02:35:37 <monqy> maybe the library is bad...,maybe the python is bad...
02:36:16 <oerjan> CakeProphet: maybe it just gives bad error messages?
02:36:19 <elliott> maybe I'm bad
02:37:00 <zzo38> But I know that Parsec (with Haskell) displays proper error messages, even though I have not programmed any in.
02:37:44 <zzo38> Just try to feed an invalid program to my Constantinople compiler and it will display an error message telling you exactly what is expected.
02:37:45 <oerjan> btw how do backslashes work inside """ strings anyway
02:38:10 <oerjan> do they actually need doubling or not
02:38:40 <elliott> I believe so
02:39:02 <oerjan> `run python -c 'print """te\\st"""'
02:39:09 <HackEgo> te\st
02:39:17 -!- evincar has joined.
02:39:26 <oerjan> `run echo python -c 'print """te\\st"""'
02:39:32 <HackEgo> python -c print """te\\st"""
02:40:07 <oerjan> `run echo python -c "print '''te\\st'''"
02:40:09 <HackEgo> python -c print '''te\st'''
02:40:27 <oerjan> um wait
02:40:45 <oerjan> `run echo python -c "print '''te"'\\'"st'''"
02:40:47 <HackEgo> python -c print '''te\\st'''
02:40:53 <oerjan> `run python -c "print '''te"'\\'"st'''"
02:40:55 <HackEgo> te\st
02:41:02 <oerjan> hm
02:41:30 <zzo38> It displays the following message, which I did not even program in: (line 1, column 1): unexpected '@' expecting white space, "replace", "repeat", "in", "out", "end" or end of input In the expression: $parseConstantinople In the expression: $parseConstantinople initialMem In an equation for `main': main = $parseConstantinople initialMem
02:41:43 <oerjan> CakeProphet: anyway, continue making the error case smaller
02:41:54 <CakeProphet> working on just that.
02:42:38 <oerjan> <Sgeo_> "<Sgeo> I think I can express what makes me uncomfortable about duck-typing lately in terms of the microwave metapho." <-- that just means you fit in, and are soon ready to make a monad tutorial
02:43:02 <zzo38> (Actually according to the specification for Constantinople, "end" shouldn't go there, but my program treats "end" the same as end of input; i.e. it ends a block of code.)
02:43:03 <CakeProphet> oerjan: oh, well probably would help if I gave the parse function the correct arguments.
02:43:17 <CakeProphet> I was still using the same arguments from my own hand-written parser, where the first argument was the filename.
02:43:20 <Sgeo_> oerjan, more to do with OO and duck-typing than anything to do with monads
02:44:21 <CakeProphet> the joys of programming.
02:44:34 <oerjan> zzo38: Parsec tries to make good error messages but you can often improve them with the <?> operator
02:45:28 <zzo38> oerjan: OK. Well, in this case the error message seem OK to me. But thank you for telling me in case of future program I write and want to adjust the error message.
02:46:03 <oerjan> Sgeo_: WHOOSH (or just be glad you haven't seen that kind of monad tutorials)
02:46:25 <Sgeo_> oerjan, I've heard of the monad tutorial issue
02:46:28 <zzo38> I would prefer if it used the serial comma but that doesn't matter much and I don't plan to affect that, it is still OK how it is.
02:52:03 <zzo38> I noticed that it says expecting white space even though the white space check already succeeded (something like (spaces >> (...))) which is still a useful error message, however.
02:52:27 <oerjan> zzo38: hm right if you wanted that you'd probably write your own version of showErrorMessages
02:53:17 <oerjan> that commasOr local function in http://hackage.haskell.org/packages/archive/parsec/3.0.0/doc/html/src/Text-Parsec-Error.html#showErrorMessages looks like the culprit
02:53:57 <zzo38> I never even used showErrorMessages. The output of the parser is just sent to a function of this: either (fail . show) return
02:54:17 <oerjan> yes it's used in the Show instance
02:55:27 <zzo38> I do not really care much about that though.
03:01:34 <zzo38> Is there a TH program to compile regular expressions into Parsec?
03:02:26 <CakeProphet> I've been using emacs so long now that M-x h M-w is starting to feel naturally
03:02:38 <CakeProphet> -ly
03:03:29 <CakeProphet> oerjan: anyways thanks for the help. Here's the current program if you're interested. Currently testing cases and it's looking promising: http://pastebin.com/5kK8B35w
03:07:29 <zzo38> It seems you could make the regular expression compile, depending on capturing and that stuff, the containing type of the monad would correspond to String or (String,String) or (String,[String],String) etc depending on what it is. I don't really know for sure exactly, though.
03:07:52 <Gregor> Hmmm, which of the many file compression formats is the best when speed is paramount (but not to the point that just not compressing at all is better)
03:08:46 <zzo38> As far as I know, ZIP in extra fast mode. I am not sure. I would like to know the *real* answer to this question, too.
03:09:16 <elliott> Gregor: LZO
03:09:19 <elliott> Gregor: No contest.
03:09:19 <evincar> Gregor: Deflate and LZMA are both fairly fast. There are highly optimised libraries for both.
03:09:23 <elliott> No.
03:09:24 <elliott> LZO.
03:09:28 <evincar> Alright then.
03:09:32 <elliott> LZMA is not even in the same universe.
03:09:41 <elliott> Gregor: Oh, hmm
03:09:45 <elliott> Gregor: Compression speed
03:09:57 <elliott> Gregor: I still suspect LZO will be the fastest
03:10:03 <elliott> But its primary goal is lightspeed decompression
03:10:06 <elliott> I'd say either LZO or gzi
03:10:07 <elliott> p
03:10:21 <elliott> LZO has the advantage of needing very little RAM to compress :P
03:10:22 <Gregor> LZO, to my knowledge, doesn't have a convenient command-line tool like gzip
03:10:31 <elliott> sure it does.
03:10:34 <elliott> sudo apt-get install lzop
03:10:34 <zzo38> Gregor: Then write one.
03:11:24 <evincar> elliott: WP says compression is "comparable in speed to deflate".
03:11:39 <elliott> i thought Gregor meant decompression
03:11:40 <evincar> And that decompression is the "very fast" bit.
03:11:44 <Gregor> I mean both in fact.
03:11:48 <elliott> regardless, LZMA is nowhere in the same universe :P
03:11:54 <elliott> Gregor: Yeah, LZO is almost certainly gonna be your best bet
03:12:03 <ais523> LZO doesn't get massively good compression ratios, does it?
03:12:08 <ais523> it's purely there for speed and memory usage?
03:12:18 <elliott> ais523: now with Vorpal context powers
03:12:27 <Gregor> Holy CRAP but LZO is fast.
03:12:29 -!- azaq23 has quit (Ping timeout: 245 seconds).
03:12:34 <ais523> elliott: I did read context
03:12:39 <Gregor> Its compression rate isn't as good as gzip, no, but wow.
03:12:45 <ais523> it talked about the decompression speed, but not about ratio at all
03:12:47 <Gregor> We're talking 14sec vs 0.6sec.
03:13:00 <ais523> surely, a null compressor would be fastest
03:13:06 <elliott> <Gregor> Hmmm, which of the many file compression formats is the best when speed is paramount (but not to the point that just not compressing at all is better)
03:13:08 <elliott> You did not read context :P
03:13:13 -!- azaq23 has joined.
03:13:27 <elliott> Gregor: I think it should be relatively competitive with gzip at the highest level
03:13:31 <elliott> although, of course, not as fast
03:13:33 <elliott> erm
03:13:36 <elliott> although, of course, not as fast as it is on lower levels
03:14:27 <ais523> Gregor: null compressor fulfils the letter of your request
03:14:32 <ais523> because not compressing at all is /not/ better than it
03:14:41 <elliott> ais523 sure is helpful
03:14:48 <ais523> sorry, I'm tired and being a little silly
03:14:49 <CakeProphet> program.ignore(cppStyleComment)
03:14:52 <Gregor> elliott: Yeah, so helpful :P
03:14:52 <CakeProphet> this is almost too easy now...
03:15:06 <ais523> azip is rather too slow to compress, unfortunately, but decompresses in O(original file)
03:15:12 <Gregor> Also, lzop -9 is crazy-slow X-D
03:15:41 <Gregor> But yeah, lzop default is ridiculously fast and gets 52% compression ratio on this test file, which is good enough for me.
03:15:55 <evincar> CakeProphet: Screw you and your easy parser combinators. I did mine the hard way.
03:16:04 <ais523> Gregor: use the GPL version 3 as a test file, it's what I used for azip
03:16:06 <evincar> Deliberately, though. :P
03:16:16 <ais523> and thus, is now going to be the only acceptable test benchmark for compressors ever, apart from Lenna
03:16:25 <Gregor> ais523: Yeah, my file is big enough to be borderline-meaningful :P
03:16:28 <ais523> (I used the C-INTERCAL tarball as a larger test)
03:16:39 <ais523> Gregor: the GPL-3 is big enough to be borderline-meaningful too
03:16:42 <CakeProphet> evincar: my parser WORKED... until I realized my language needed infix operators.
03:16:54 <ais523> why does a language "need" infix operators?
03:17:09 <CakeProphet> *my implementation of an existing language
03:18:00 <evincar> ais523: Add macros. Implement infix operators as macros. Language no longer needs them.
03:18:17 <ais523> evincar: you'd have to implement infix macros, though
03:18:23 <zzo38> Then you need to add macros that are good enough to be able to implement infix operators.
03:18:25 <oerjan> <ais523> Gregor: the GPL-3 is big enough to be borderline-meaningful too <-- now _there's_ a statement that needs context.
03:18:26 <Gregor> ais523: My file is 86MB and only took lzop -3 0.6sec to compress :P
03:18:27 <ais523> which still, for decent macros, requires being able to parse infix
03:18:40 <evincar> ais523: Not at all. You would just need to wrap them.
03:18:55 <ais523> Gregor: just compress it 1000 times, and dodge cache effects as a bonus
03:19:08 <evincar> I saw a Pratt parser done as a Lisp macro so you could write (expr '(2 + 3 * 5)) or whatever.
03:19:37 <oerjan> evincar: if it's a macro you wouldn't use ' would you
03:19:44 <Gregor> Anyway, .sf.lzo: Clearly the best lossless audio compression format.
03:19:47 <evincar> Which is essentially how Tcl does it, if I recall.
03:19:56 <elliott> sf.lzo, the hip new domain name for sourceforge
03:20:00 <evincar> oerjan: I don't recall. I think that article did, but you wouldn't necessarily have to...
03:20:20 <zzo38> How do Lisp macros work?
03:20:41 <ais523> I won't answer, because whatever I say I'll be wrong
03:20:41 <elliott> well
03:20:44 <elliott> hth
03:20:45 <ais523> and shouted at as a result
03:20:48 <elliott> ais523: try "badly"
03:20:51 <Gregor> Like fuckin' MAGNETS
03:21:05 <ais523> elliott: I personally dislike them, but am willing to accept that that isn't a majority opinion
03:21:11 <ais523> and dislike them for reasons unrelated to how well they work
03:21:30 <elliott> properly-done fexprs are nicer, but macros are a lot easier
03:21:33 <elliott> to implement well and efficiently
03:21:38 <elliott> by far
03:22:06 <ais523> fexpr?
03:22:15 <evincar> ais523: Unevaluated expression, essentially.
03:22:21 <evincar> You just don't evaluate terms eagerly.
03:22:42 <ais523> oh, that is indeed very elegant, nice, and effective
03:22:49 <ais523> like slipping a call-by-name function into a call-by-value language
03:23:08 <elliott> no
03:23:25 <elliott> people really need to stop answering questions addressed at me incorrectly :P
03:23:43 <evincar> ais523: That's not exactly how it works.
03:23:54 <elliott> ais523: an fexpr is just a function that doesn't have its arguments evaluated; it's really easy to mess this up, though (see http://www.nhplace.com/kent/Papers/Special-Forms.html, a paper dedicated to advocating monads over fexprs from 1980)
03:23:59 <evincar> elliott: My explanation wasn't wrong.
03:24:00 <elliott> but it's possible to make them work well with lexical scoping
03:24:04 <elliott> see the Kernel language
03:24:06 <elliott> evincar: yes, it was
03:24:10 <elliott> fexprs are not unevaluated expressions
03:24:25 <evincar> Fine, they are functions taking unevaluated expressions.
03:24:36 <ais523> evincar: which is what a call-by-name function effectively is
03:24:46 <ais523> if elliott tells me they're different, then one of us is wrong
03:25:05 <elliott> ais523: it's not quite the same
03:25:11 <elliott> ais523: call by name functions can't expect their argument's ast, traditionally
03:25:31 <ais523> oh, the difference is that they can do things with their arguments other than evaluate them (possibly repeatedly)?
03:25:32 <elliott> (foo (f 9 0)) can't evaluate the same as (f 9 'avocado 0) (generically etc.)
03:25:36 <elliott> ais523: yes
03:25:42 <ais523> now I'm trying to work out the difference between that and macros
03:25:45 <elliott> basically, all their arguments are automatically quoted
03:25:49 <elliott> ais523: they're run at runtime
03:25:52 <elliott> ais523: the trick is, you don't need functions like this
03:25:56 <elliott> you can implement them in terms of fexprs
03:26:06 <elliott> that is, you can implement lambda in terms of vau
03:26:12 <elliott> (kernel's name for the fexpr-defining primitive)
03:26:15 <elliott> s/defining/creating/
03:26:21 <elliott> s/primitive/syntax/ I suppose
03:26:25 <evincar> ais523: Right, and compilation of fexprs is...problematic.
03:26:29 <elliott> (vau is itself an fexpr ofc)
03:26:37 <elliott> evincar: no it isn't, it's just constant-folding
03:27:01 <ais523> elliott: because fexprs are a generalisation of call-by-name, and you can implement call-by-value in call-by-name
03:27:22 <ais523> hmm, does Underload have fexprs?
03:27:45 <elliott> Who was it again who was responsible for the Vector skin change? Perhaps somebody could recommend a Design your own wikipedia skin option as most of the options suck. There ought to be a graphic option to design your own wikipedia design and main page. I am aware you can change the main page design in monobook but I want the option to make the frame much darker and make the articles stand out more. There is only so much you can do with changing y
03:27:45 <elliott> our Internet options colors and fonts. ♦ Dr. Blofeld 19:14, 28 August 2011 (UTC)
03:27:46 <ais523> it seems to meet every part of the definition so far, except that it can't do anything with the AST but print it
03:27:50 <elliott> [[Talk:Main Page]] is really weird
03:27:57 <elliott> ais523: sure it can; it can compose it with things
03:28:06 <oerjan> hardly, you can rarely pick anything apart unless the format is restricted
03:28:07 <elliott> admittedly, the things it can do are rather "safe"
03:28:19 <evincar> elliott: I thought you couldn't safely optimise them, at least.
03:28:26 <ais523> elliott: I'm not certain if that's AST-level composition, except because it's defined ot be
03:28:27 <ais523> *to be
03:28:32 <elliott> evincar: that's true iff you can't optimise function applications
03:28:37 <elliott> which is a rather hilarious, albeit bad, opinion
03:28:38 <ais523> you could do it without knowing the AST at all, by using a lambda, in other languages
03:28:44 <elliott> ais523: indeed
03:28:46 <evincar> Isn't it undecidable whether a particular expression is actually evaluated though?
03:29:02 <evincar> By static analysis alone.
03:29:03 <ais523> evincar: you don't need to know that to be able to optimise it, though
03:29:29 <ais523> in the cases where it is decidable that it's always, say, evaluated once and has no side effects, you can reorder it; but even if it isn't, inlining + standard optimisations will probably help
03:29:29 <elliott> evincar "You mean it isn't possible to optimise any TC language perfectly?" evincar
03:29:30 <evincar> But to compile it, you still need to have the data available.
03:29:34 <elliott> that is your new name
03:29:47 <ais523> optimisations don't have to work in 100% of cases
03:30:07 <elliott> the issue is mostly that your AST transformations could change what AST an fexpr gets at runtime
03:30:09 <elliott> but that's no problem
03:30:09 <ais523> and one that works in 99% of cases, like recognising if fexprs or call-by-name functions work identically to call-by-value functions, is going to be helpful
03:30:14 <evincar> I guess I'm just not clear how to compile a language with fexprs without just embedding an interpreter.
03:30:18 <elliott> since the AST should be semantically equivalent, if it's being used for evaluation
03:30:31 <elliott> evincar: you have to embed it, but that doesn't mean you have to use it all the time
03:30:36 <elliott> if you can statically eliminate all uses of it
03:30:36 <ais523> evincar: Underload's compiled by storing both the source and the meaning of every function together
03:30:41 <ais523> and using the source only when necessary
03:30:51 <ais523> and the meaning the rest of the time
03:30:59 <evincar> We do what we must I guess.
03:31:07 <ais523> elliott: how did your ul compiler compare to derlo?
03:31:20 <ais523> I can't remember which was faster, and whether it depended on the program
03:31:28 <elliott> ais523: badly, I think, but then I started writing a much better one recently
03:31:33 <ais523> ah, that would make sense
03:31:41 <ais523> and then didn't finish it because everyone has hundreds of unfinished projects
03:31:43 <elliott> ais523: (one that optimised numerals)
03:31:51 <elliott> well, I had a haskell version
03:31:54 <elliott> I started translating it to C, I forget why
03:31:57 <elliott> or was it an interpreter
03:31:58 <elliott> I forget
03:32:06 <elliott> I think I may have been trying to write a really good interpreter
03:32:16 <ais523> now I can't remember if derlo optimises numerals
03:32:18 <ais523> (it's an interp)
03:32:20 <elliott> it doesn't
03:32:25 <elliott> (I read derlo when writing mine)
03:32:41 <ais523> I know I have a Perl Overload interp somewhere which optimises numerals and nothing else
03:32:44 <ais523> that's unfinished
03:32:49 <ais523> because all overload interps are unfinished
03:32:52 <elliott> my numeral optimisation was better :)
03:32:57 <ais523> and the language itself is too hard to get your head around
03:32:58 <elliott> oerjan wrote a far-too-general number-detector
03:33:16 <ais523> elliott: indeed it is, the Perl program just regexes its memory every step looking for numbers
03:34:11 <elliott> hahaha
03:34:43 <evincar> So I had a thought about fractals.
03:35:10 <evincar> If you were to have a VM that logged every operation it evaluated...
03:35:35 <evincar> ...and decreased a "scale" value whenever it entered a new stack frame and increased it when leaving...
03:35:38 <elliott> ais523: argh, where is my interp? find it please
03:35:50 <ais523> elliott: I don't think you sent me a copy
03:35:53 <elliott> oh, I wonder if I lost it with my Code.tar.gz
03:35:59 * elliott prepares to cry softly
03:36:05 <evincar> ...then you could make a sort of nonuniform dotplot of the instructions executed, and you'd get a fractal representation of the execution of the program.
03:36:19 <evincar> It would show iteration at uniform scale and recursion fractionally.
03:36:36 <evincar> I don't know what purpose it would serve other than to look nice.
03:38:04 <elliott> ais523: looks like I may have lost it :(
03:38:43 <CakeProphet> okay so a huge problem with pyparsing is that the error messages are not good.
03:39:14 <ais523> elliott: how did you lose a tarball of code?
03:39:38 <ais523> and have you taken steps so it doesn't happen again?
03:39:39 <evincar> CakeProphet: Fork and improve?
03:39:45 <elliott> ais523: by not realising that megaupload would expire it rapidly, and by somehow losing my original download of it
03:39:59 <ais523> ah, right
03:40:13 <elliott> ais523: (I used it to transfer code from old OS install to new one, with no convenient storage media to hand)
03:40:17 <ais523> I use gitorious/patch-tag as backup for some things, but wouldn't expect, say, a pastebin or megaupload to do so
03:40:28 <elliott> well, I didn't intend it to stay there for longer than a day or so
03:40:36 <ais523> I take it that the old install is no longer accessible/wiped?
03:41:39 <CakeProphet> evincar: perhaps I can just find a way to augment errors like Parsec allows
03:41:46 <elliott> ais523: replaced by the new one :P
03:43:10 <CakeProphet> ah setFailAction is probably what I want.
03:44:57 <ais523> elliott: I'll generally keep at least an unpacked tarball and the original tarball for importantish tarballs like that
03:45:01 <ais523> and often a separate copy on a USB stick
03:50:53 -!- BeholdMyGlory has joined.
03:53:50 <CakeProphet> wooo everything works.
03:56:29 -!- oerjan has quit (Quit: Good night).
04:05:01 <ais523> wow, TIL that Thomas Edison invented the use of "Hello" to start conversations
04:05:24 <ais523> and suggested it to Alexander Graham Bell as a standard method of answering the telephone
04:05:43 <elliott> so that's the one thing edison /did/ invent
04:08:09 <ais523> heh
04:08:26 <ais523> the word was around beforehand, but with a different meaning (it was an expression of surprise)
04:08:47 <ais523> ofc, this is the sort of thing that's very likely to have unreliable sources behind it, so I'm not sure if it's so likely to be true, even if TIL it
04:15:04 <elliott> it seems to check out on googling
04:15:59 -!- copumpkin has quit (Quit: Leaving...).
04:16:58 -!- copumpkin has joined.
04:21:12 <evincar> I identify much more with Tesla. Edison should've come to his senses sooner.
04:22:01 <evincar> Also, it wasn't strictly surprise. It was just a literal "hey there".
04:22:11 <CakeProphet> DEBUGGING THIS IS PRETTY FUN
04:22:14 <evincar> Same as "hola".
04:25:08 <evincar> I can't decide if coming here makes me more or less productive as a programmer...
04:25:25 <itidus20> evincar: you are asking the wrong question.
04:25:38 <itidus20> it is the frequency of coming here
04:26:14 <evincar> And the duration.
04:26:25 <itidus20> a person is made or broken by their ability to do a day's work
04:26:42 <evincar> I tend to do a week's work in a day.
04:26:52 <evincar> That's not to say I'm seven times as productive as anybody.
04:27:03 <evincar> Rather that I slack off for six days a week then make up for it.
04:27:30 <itidus20> apparently if you have an employer you have to slack off because an employer will simply expect more and more from you for the same pay
04:27:33 <itidus20> so i hear
04:27:43 <itidus20> but if you are working on your own
04:27:45 <evincar> Being a freelancer seems to be working for me.
04:28:05 <CakeProphet> ME TOO ESPECIALLY DEBUGGING IT IS GREAT. :D :D :D
04:28:37 <evincar> I'm making a site for a guy who's going to pay me in Bitcoin...
04:28:51 <evincar> Mostly because I know him already.
04:29:02 <evincar> Also the dollar is going down the tubes anyway, so might as well diversify.
04:30:16 <evincar> But when I come here I get inspired to do stupid fun experimental projects.
04:30:16 <CakeProphet> I do not actually think the dollar is "going down the tube"
04:30:19 <CakeProphet> anymore.
04:30:24 <evincar> Some of which have turned into useful things.
04:30:30 <evincar> The dollar will fail.
04:30:37 <evincar> Evidence: every fiat currency ever.
04:31:00 <CakeProphet> I just realized that I am not drinking these beers.
04:31:01 <evincar> They might revalue it and re-back it.
04:31:03 <CakeProphet> clearly that is a problem.
04:31:09 <evincar> I doubt it, though.
04:31:11 <CakeProphet> and doing such will probably aid in my debugging skills.
04:31:37 <evincar> Alcohol tends to put me in a bad programming mindset.
04:31:40 <evincar> Caffeine as well...
04:31:52 <evincar> ...if I need to do something mindless and repetitive, caffeine is great.
04:32:05 <evincar> But my critical thinking skills go down the tubes when I have too much caffeine.
04:32:24 <evincar> And anyway, if you're using a language where there are mindless and repetitive tasks to be done, that might be your real problem.
04:32:40 <CakeProphet> no the real problem here is that THIS DOCUMENTATION LIES
04:32:46 <CakeProphet> it says call backs can take 0-3 arguments
04:32:59 <CakeProphet> so I give it a callback with one argument, and it calls it with zero
04:33:47 <elliott> self argument
04:33:51 <elliott> @ CakeProphet
04:34:09 <CakeProphet> onOperatorMatch() takes exactly 1 argument (0 given)
04:34:17 <CakeProphet> if it were being called as a method it would give me 1 argument.
04:34:17 <elliott> self argument
04:34:20 <CakeProphet> at least.
04:34:22 <elliott> ok
04:35:07 <CakeProphet> lol wat
04:35:12 <CakeProphet> adding the line: tokens = tokens.asList()
04:35:15 <CakeProphet> suddenly fixes everything
04:37:00 <CakeProphet> I don't even see how that's possible
04:37:32 <CakeProphet> why would adding a line of code in my callback change the way it's called...
04:38:02 <evincar> CakeProphet: print type(tokens) to see what's up?
04:38:18 <evincar> Or...what?
04:40:06 <CakeProphet> tokens is a ParseResult. that doesn't really have anything to do with my confusion.
04:40:22 <CakeProphet> my confusion is: before, my function was called with zero arguments. I add a line of code _in that function_, and it is called with 1.
04:42:22 <evincar> CakeProphet: \(°_o)/
04:42:46 -!- MDude has changed nick to MSleep.
04:43:00 -!- BeholdMyGlory has quit (Remote host closed the connection).
04:47:26 <CakeProphet> evincar: pyparsing seems to put a function wrapper around my function before it's called.
04:47:50 <CakeProphet> perhaps the wrapper uses some kind of exception handling hack to detect which number of arguments to use.
04:48:09 <CakeProphet> meanwhile, an exception in my code was triggering that hack, and giving me an obtuse error message as a result.
04:48:17 <CakeProphet> fixing my codes error fixed the problem.
04:48:54 <evincar> Blurg.
04:49:08 <evincar> Hearing about this makes me cringe at a design I haven't even looked at.
04:49:15 <evincar> Pyparsing's, that is.
04:49:26 <CakeProphet> really they should have used inspect to get the actual number of arguments.
04:50:32 <CakeProphet> >>> inspect.getargspec(test)
04:50:33 <CakeProphet> ArgSpec(args=['a', 'b', 'c'], varargs=None, keywords=None, defaults=None)
04:50:54 <evincar> So much simpler.
04:52:19 <zzo38> Do you know how to play Scope or Pasur?
04:53:36 -!- jcp|1 has quit (Read error: Operation timed out).
04:53:47 <CakeProphet> evincar: granted the logic is still a bit more complicated than just taking len(spec.args), but it's not much more difficult than that and it would be _accurate_
04:55:08 <CakeProphet> though I guess the situation could also be improved by fixing Python's exception hierarchy
04:55:20 <CakeProphet> call to a function with too few / too many arguments = TypeError
04:55:22 <CakeProphet> obviously.
04:55:25 -!- jcp has quit (Ping timeout: 245 seconds).
04:58:33 <evincar> THROW TYPEERROR FOR ALL THE THINGS
04:58:57 <CakeProphet> TypeError is pretty common yes.
04:59:15 <CakeProphet> TypeError and ValueError are common for logic bugs.
04:59:24 <CakeProphet> though AttributeError can sometimes be the result of a type error.
04:59:55 <evincar> Don't most exceptions boil down to "argument was too high/low/otherwise invalid"?
05:00:01 <CakeProphet> no....?
05:00:18 <evincar> I don't mean in Python.
05:00:20 <evincar> I mean in general.
05:00:27 <CakeProphet> >_> also no?
05:00:28 <evincar> Name an exception that isn't one of those things.
05:00:42 <CakeProphet> NameError, IndexError, ImportError
05:00:49 <evincar> Other than "something blew up that was totally beyond our control".
05:00:59 <CakeProphet> !python import foo
05:01:00 <EgoBot> Traceback (most recent call last):
05:01:11 <CakeProphet> >_> oh, well yeah that's supposed to say ImportError
05:01:23 <evincar> Yeah, so the argument "foo" was invalid for "import".
05:01:55 <evincar> It boils down to "you fucked up" or "something beyond the scope of your program fucked up".
05:02:03 <CakeProphet> also you're going to argue that NameError is just locals()["variable"] which is silly because that's not how it owrks.
05:02:06 <evincar> Boil boil boil.
05:02:28 <CakeProphet> locals().__getkey__("variable") oh look invalid function call=.
05:02:49 <evincar> YouFuckedUpException
05:02:54 <elliott> evincar: hammer, nail
05:04:16 <CakeProphet> evincar: also you changed your definition of what _all exceptions ever_ are at least once now.
05:04:19 <evincar> elliott: Cactus, Dom DeLuise?
05:04:32 <evincar> I grouped the earlier three categories.
05:04:41 <evincar> Because I intended them as one.
05:04:43 <evincar> But didn't make it clear.
05:05:04 <CakeProphet> yes "you fucked up" is often a good a characterization of exceptions.
05:05:12 <CakeProphet> but is not the same as "function argument too low / too high/ invalid"
05:05:48 <evincar> I didn't say "function", but I would argue that it is.
05:06:00 <evincar> But it's a pointless argument.
05:06:04 <CakeProphet> < evincar> Don't most exceptions boil down to "argument was too high/low/otherwise invalid"?
05:06:04 <evincar> So I won't.
05:06:10 <CakeProphet> what else has arguments?
05:06:33 <evincar> Nothing. Statements have "operands" I guess.
05:06:51 <evincar> The point is that you're supplying an invalid value to a function somewhere.
05:06:53 <CakeProphet> basically now you're saying "an exception is an exceptional circumstance of the program"
05:06:58 <CakeProphet> how tautological
05:07:08 <evincar> No, specifically an invalid argument.
05:07:17 <evincar> It wasn't supposed to be a profound statement.
05:07:21 <evincar> We just keep talking about it.
05:07:30 <CakeProphet> > x
05:07:32 <lambdabot> x
05:07:38 <CakeProphet> oh right.
05:07:40 <CakeProphet> > hahahaha
05:07:41 <lambdabot> Not in scope: `hahahaha'
05:08:23 <CakeProphet> >>> def test())
05:08:25 <CakeProphet> [...]
05:08:30 <CakeProphet> SyntaxError: invalid syntax
05:09:09 <evincar> Yeah, you passed an invalid token sequence to the parser. :P
05:09:33 <evincar> Why is this still going on?
05:09:35 <CakeProphet> >>> while True: 1+1
05:09:36 <CakeProphet> ...
05:09:36 <CakeProphet> KeyboardInterrupt
05:09:37 <evincar> Go work on your program.
05:11:07 <CakeProphet> >>> iter([]).next()
05:11:08 <CakeProphet> ...
05:11:11 <CakeProphet> StopIteration
05:12:20 <CakeProphet> heh, I like how warnings in Python are actually exceptions.
05:13:17 <CakeProphet> warnings that stop your program aren't really very warning-like.
05:13:47 <quintopia> WARNING: YOUR PROGRAM ISNT RUNNING!
05:14:03 <quintopia> there should probably be a setting that suppresses those yes?
05:14:05 <CakeProphet> oh wait nevermind that's not how warnings work.
05:14:11 <CakeProphet> yeah they don't raise exceptions
05:14:36 <CakeProphet> they just have exceptions associated with them, that you can use with the warnings modules to filter warnings and stuff.
05:15:00 <zzo38> Can it make such a thing as "Haskell computer"?
05:15:24 <evincar> zzo38: You mean can such a thing be made?
05:16:16 <evincar> Probably. What fundaments of Haskell should be implemented in hardware?
05:16:23 <evincar> elliott?
05:16:27 <elliott> reduceron
05:16:30 <elliott> google it
05:16:33 <CakeProphet> evincar: no he's currently impersonating Buffalo Bill.
05:16:58 <elliott> (http://www.cs.york.ac.uk/fp/reduceron/)
05:17:36 <evincar> Oddly enough, I've read this.
05:17:41 <CakeProphet> reduceron is also a good name for a giant planet decimating robot.
05:17:53 <evincar> Must've come by it while looking up something Haskell-related.
05:18:02 <evincar> Though I can't imagine what.
05:18:13 <evincar> Considering I don't use Haskell.
05:18:44 <elliott> this isnt the personal character flaws channel :P
05:18:48 <CakeProphet> but you totally should.
05:19:31 -!- braap has joined.
05:20:07 <evincar> Probably.
05:20:07 <evincar> I've got nothing against it.
05:20:11 <elliott> braap braap
05:20:32 -!- braap has quit (Client Quit).
05:20:47 -!- jcp has joined.
05:20:58 <CakeProphet> I have lots of things against most languages.
05:21:02 <CakeProphet> I am a language antagonist.
05:21:05 -!- jcp|other has joined.
05:21:20 <monqy> I have lots of things against most languages as well. what are we talking about, now?
05:21:54 <CakeProphet> I was being sarcastic actually.
05:22:01 <monqy> I wasn't 8))
05:22:10 <CakeProphet> monqy however is a vile fundamentalist.
05:22:16 <CakeProphet> and thus we are destined to be language enemies.
05:22:21 <evincar> It's hard for me to feel legitimate, disliking a language I don't use.
05:22:27 <evincar> So I just reserve judgement.
05:23:49 <CakeProphet> operator_names = map(itemgetter(0), operator_table)
05:23:54 <CakeProphet> weeee duck typing + functional programming
05:24:08 <Sgeo_> What language is that?
05:24:12 <CakeProphet> python
05:24:23 <CakeProphet> itemgetter is from the operator module
05:24:50 <CakeProphet> >>> operator.itemgetter(2)([1,2,3])
05:24:51 <CakeProphet> 3
05:24:59 <monqy> I'm dying
05:25:27 <CakeProphet> monqy: the fact that such constructs are possible in Python is a vast improvement over most languages.
05:25:38 <CakeProphet> *possible and in the standard library
05:25:47 <monqy> most languages suck
05:26:09 <Sgeo_> CakeProphet, have fun with the crappy lambdas >.>
05:26:18 <CakeProphet> Sgeo_: yeah I don't use them ever...
05:26:25 <CakeProphet> I'd much rather define named functions.
05:26:40 <monqy> names are for losers
05:27:22 <CakeProphet> >>> map(functools.partial(operator.add, 1), [1,2,3])
05:27:22 <CakeProphet> [2, 3, 4]
05:27:30 <CakeProphet> functional programming in Python is very, uh, natural.
05:28:10 <evincar> Very uhnatural.
05:28:20 <zzo38> Is there possibility of converting GHC Core codes to F-lite codes?
05:28:23 <CakeProphet> well it's not /too/ bad if you get ride of the module names.
05:28:28 <CakeProphet> *rid
05:28:42 -!- pumpkin has joined.
05:28:44 <monqy> it will never not be too bad
05:28:48 -!- pumpkin has quit (Changing host).
05:28:48 -!- pumpkin has joined.
05:28:51 <CakeProphet> map(partial(add, 1), count(1))
05:28:58 <CakeProphet> count(1) being like [1..] in Haskell
05:29:24 <CakeProphet> though you'll want to use imap from itertools actually.
05:29:28 <CakeProphet> to maintain laziness;
05:29:29 <monqy> is count a what generator then
05:29:38 <CakeProphet> yes.
05:29:48 <CakeProphet> just an iterator actually.
05:29:55 <monqy> python terms I will never memorise
05:30:06 <CakeProphet> actually generator just means a function that returns an iterator
05:30:10 <CakeProphet> so yes, that is a generator
05:30:26 <CakeProphet> er, wait, no. fuck I don't know :P
05:31:10 <CakeProphet> itertools basically has a bunch of lazy versions of python list functions. pretty handy module.
05:31:19 <CakeProphet> I just wish functools came with more utilities.
05:31:42 <zzo38> However, in Javascript any function with "yield" is a generator function, it returns a Generator object and does not execute until the Generator object is called, and then it returns the first yield, it can be called next time to execute up to and returning the value of the next yield, and so on.
05:32:06 <CakeProphet> essentially the same in Python.
05:32:08 <Sgeo_> zzo38, similar to Python
05:32:18 <CakeProphet> though Python also has the whole coroutine thing.
05:32:30 -!- copumpkin has quit (Ping timeout: 245 seconds).
05:32:54 -!- pumpkin has changed nick to copumpkin.
05:35:58 <CakeProphet> you know what's really fun to look at?
05:36:07 <CakeProphet> C++'s operator precedence chart.
05:36:13 <evincar> Ugh.
05:36:23 <evincar> C++'s operator precedence is bad.
05:36:26 <evincar> Dumb and bad.
05:36:39 <monqy> thats what makes it fun
05:36:54 <evincar> I guess writing those lazy parsing iterators was kinda fun.
05:36:57 <evincar> In a horrifying way.
05:37:07 <CakeProphet> ...this being said by monqy, the language purist.
05:37:16 <CakeProphet> probably not sarcastically what so ever.
05:37:36 <evincar> Bad things can be fun by virtue of being bad.
05:37:48 <monqy> telling when or how much I'm joking at any given time may prove difficult
05:37:50 <evincar> I've had plenty of fun movie nights with less-than-excellent-quality films.
05:38:10 <monqy> you know what language has good operator precedence rules?
05:38:15 <CakeProphet> !wacro
05:38:16 <EgoBot> AECMBSP
05:38:20 <monqy> no its lisp
05:38:21 <monqy> also J
05:38:44 <CakeProphet> yeah I love mounds of parens.
05:38:44 <evincar> Also Factor.
05:38:52 <evincar> And Forth.
05:38:56 <CakeProphet> that's why I love Perl so much. all the parens.
05:39:05 <evincar> And whatever the hell I'm calling the language I'm working on.
05:39:11 <evincar> It's code-named "Very" at the moment.
05:39:22 <evincar> I was trying to come up with the least searchable language name I could.
05:39:30 <evincar> I failed, but it was a good time.
05:39:33 <Sgeo_> Null
05:39:44 <CakeProphet> of
05:39:52 <Sgeo_> Not "Null". ""
05:40:09 <evincar> No, the name of that one Sigur Rós album, ( )
05:40:18 <monqy> name it an operator character so google won't work
05:40:25 <evincar> Possibly the most painfully artsy thing that has ever been produced.
05:40:42 <monqy> " " would also work
05:40:56 <CakeProphet> site:goatse.bz
05:40:57 <monqy> or a literal mess of parentheses
05:41:17 <Sgeo_> (((((((((()))))))))
05:41:23 <monqy> too clean
05:41:29 <monqy> ())()(()))()()()((()()()()()()()))((()(()()
05:41:31 <Sgeo_> It's missing an end-paren
05:41:45 <evincar> It's missing several parens.
05:41:46 <monqy> it is still too lcean
05:42:02 <Sgeo_> I was referring to mine >.>
05:42:03 <monqy> (()(){[]][[]][}}}{[]())()(({}}{{}}0[((){]-0)
05:42:09 <CakeProphet> > length $ replicateM 20 "()"
05:42:09 <monqy> the 0s and - are for artistic effect
05:42:10 <lambdabot> 1048576
05:42:22 <Sgeo_> replicateM?
05:42:27 <monqy> replicateM.
05:42:32 <CakeProphet> > replicateM 20 "()" !! (1048576/2)
05:42:33 <lambdabot> No instance for (GHC.Real.Fractional GHC.Types.Int)
05:42:33 <lambdabot> arising from a use o...
05:42:38 <monqy> hheheheh
05:42:40 <CakeProphet> > replicateM 20 "()" !! (1048576 `div` 2)
05:42:41 <evincar> Perhaps the GPLv3 encoded in octal where the digits are ([{<>}]).
05:42:42 <lambdabot> ")((((((((((((((((((("
05:42:47 <monqy> good name
05:42:56 <CakeProphet> > replicateM 20 "()" !! (1048576 `div` 3)
05:42:57 <lambdabot> "()()()()()()()()()()"
05:43:01 <CakeProphet> ...
05:43:10 <CakeProphet> > replicateM 20 "()" !! (1048576 `div` 10)
05:43:11 <lambdabot> "((())(())(())(())(()"
05:43:17 <Sgeo_> > replicateM 2 "()"
05:43:18 <lambdabot> ["((","()",")(","))"]
05:43:45 <CakeProphet> > (`replicateM` "abc") =<< [0..]
05:43:45 <lambdabot> ["","a","b","c","aa","ab","ac","ba","bb","bc","ca","cb","cc","aaa","aab","a...
05:44:03 <Sgeo_> "replicateM n act performs the action n times, gathering the results.
05:44:03 <Sgeo_> "
05:44:09 <CakeProphet> yep.
05:44:10 <monqy> > (`replicateM` "abc") -<< [0..]
05:44:11 <lambdabot> Not in scope: `-<<'
05:44:13 <monqy> oops
05:44:17 <Sgeo_> "performs the action". Entirely, 100% clear outside of the IO monad
05:44:21 <monqy> > [0..] >>- (`replicateM` "abc")
05:44:22 <lambdabot> ["","a","aa","b","aaa","c","ab","aaaa","ac","aab","ba","aaaaa","bb","aac","...
05:44:32 <CakeProphet> Sgeo_: >> I believe
05:44:34 <CakeProphet> @src replicateM
05:44:34 <lambdabot> replicateM n x = sequence (replicate n x)
05:44:41 <Sgeo_> Or maybe the list monad's not all that intuitive to me
05:44:43 <CakeProphet> @src sequence
05:44:43 <lambdabot> sequence [] = return []
05:44:43 <lambdabot> sequence (x:xs) = do v <- x; vs <- sequence xs; return (v:vs)
05:44:43 <lambdabot> -- OR: sequence = foldr (liftM2 (:)) (return [])
05:44:59 <Sgeo_> I think I get it
05:45:00 <monqy> CakeProphet: >> doesn't gather results so it couldn't be that
05:45:16 <monqy> the list monad is easy
05:45:43 <Sgeo_> Not when documentation talks about monads in terms of their "actions"
05:46:14 <monqy> thinking of the list monad as nondeterministic computation, a list action is a list of possible results
05:46:57 <Sgeo_> I knew the nondeterministic thing, just didn't think of it as an "action", ty
05:48:14 <CakeProphet> > (`replicate` "abc") =<< [0..]
05:48:15 <lambdabot> ["abc","abc","abc","abc","abc","abc","abc","abc","abc","abc","abc","abc","a...
05:48:40 <monqy> great
05:49:05 <CakeProphet> > sequence $ (`replicate` "abc") =<< [0..]
05:49:07 <lambdabot> *Exception: stack overflow
05:49:35 <CakeProphet> > sequence "abc"
05:49:36 <lambdabot> Couldn't match expected type `m a'
05:49:36 <lambdabot> against inferred type `GHC.Types...
05:49:43 <CakeProphet> > sequence ["abc", "abc"]
05:49:44 <lambdabot> ["aa","ab","ac","ba","bb","bc","ca","cb","cc"]
05:50:06 <CakeProphet> > sequence ["abc", "cba"]
05:50:07 <lambdabot> ["ac","ab","aa","bc","bb","ba","cc","cb","ca"]
05:50:20 <CakeProphet> > sequence ["abc", "123"]
05:50:20 <lambdabot> ["a1","a2","a3","b1","b2","b3","c1","c2","c3"]
05:50:46 <CakeProphet> > sequence ["abc", "123", "!@#"]
05:50:46 <lambdabot> ["a1!","a1@","a1#","a2!","a2@","a2#","a3!","a3@","a3#","b1!","b1@","b1#","b...
05:50:47 <monqy> sequence in list monad is handy
05:51:12 <monqy> does lambdabot have syb
05:51:13 <monqy> > everywhere (mkT reverse) [1..10]
05:51:14 <lambdabot> Ambiguous type variable `a' in the constraint:
05:51:14 <lambdabot> `Data.Typeable.Typeable a...
05:51:16 <monqy> oops
05:51:26 <monqy> > everywhere (mkT (reverse :: Integer -> Integer)) [1..10]
05:51:27 <lambdabot> Couldn't match expected type `GHC.Integer.Type.Integer'
05:51:27 <lambdabot> against inf...
05:51:31 <monqy> oops oops
05:51:31 <CakeProphet> :t everywhere
05:51:32 <lambdabot> forall a. (Data a) => (forall a1. (Data a1) => a1 -> a1) -> a -> a
05:51:40 <CakeProphet> lol wat
05:51:45 <monqy> > everywhere (mkT (reverse :: [Integer] -> [Integer])) [1..10]
05:51:46 <lambdabot> [2,4,6,8,10,9,7,5,3,1]
05:51:50 <monqy> yes lambdabot has syb
05:52:12 <CakeProphet> :t mkT
05:52:13 <lambdabot> forall b a. (Typeable a, Typeable b) => (b -> b) -> a -> a
05:52:23 <CakeProphet> ....
05:52:27 <monqy> > everywhere (mkT (reverse :: [Integer] -> [Integer]) `extT` (succ :: Integer -> Integer)) [1..10]
05:52:28 <lambdabot> [3,5,7,9,11,10,8,6,4,2]
05:52:57 <evincar> So there's this girl I know who's a software engineering major.
05:53:24 <CakeProphet> > everywhere (mkT (map toUpper :: String -> String)) "hello"
05:53:25 <lambdabot> "HELLO"
05:53:26 <evincar> And she was trying to argue today that iteration is more intuitive than recursion.
05:53:30 <monqy> > everywhere (mkT (reverse :: [Integer] -> [Integer]) `extT` ((:[]) :: Integer -> [Integer]) `extT` (concat :: [[Integer]] -> [Integer])) [1..10]
05:53:31 <lambdabot> Couldn't match expected type `GHC.Integer.Type.Integer'
05:53:31 <lambdabot> against inf...
05:53:33 <monqy> oops
05:53:47 <CakeProphet> evincar: lolno
05:53:48 <nisstyre> I would tend to disagree with that viewpoint
05:53:50 <evincar> And I wept.
05:53:59 <evincar> Well, not really.
05:54:00 <CakeProphet> evincar: for simple algorithms, maybe.
05:54:03 <evincar> I just told her she was wrong.
05:54:07 <CakeProphet> but... not really.
05:54:10 <evincar> Or at least misguided.
05:54:11 <CakeProphet> it's the same thing.
05:54:25 <evincar> It is...
05:54:40 <evincar> ...but there's internal repetition and external repetition...
05:55:00 <evincar> ...and internal repetition is usually more intuitive for, y'know, decomposing problems.
05:55:12 <evincar> But I can't fault her.
05:55:13 <monqy> recursion is less confusing to me
05:55:13 <CakeProphet> I think you're just making up terms now.
05:55:24 <monqy> recursion is also cleaner
05:55:27 <monqy> recursion is also better
05:55:27 <evincar> She's only studied a quarter of Python and two quarters of Java.
05:55:40 <monqy> not self-taught? pfffffffffffft
05:55:41 <evincar> And you just know they didn't get into any FP.
05:55:46 <CakeProphet> monqy: not as efficient if unoptimized, however.
05:56:02 <evincar> She's surprisingly good for having just started.
05:56:04 <evincar> To her credit.
05:56:16 <evincar> But her process is so...processy.
05:56:17 -!- GuestIceKovu has joined.
05:56:19 <evincar> Businessy.
05:56:54 <CakeProphet> @pl join . sequence
05:56:54 <lambdabot> join . sequence
05:57:05 <monqy> CakeProphet: congratulations
05:57:28 <CakeProphet> > everywhere (mkT (join . sequence :: String -> String)) "hello"
05:57:29 <lambdabot> Couldn't match expected type `GHC.Types.Char'
05:57:29 <lambdabot> against inferred type...
05:57:42 -!- Slereah has quit (Ping timeout: 240 seconds).
05:58:24 <CakeProphet> oh rite
06:00:01 <itidus20> recursion vs iteration
06:00:05 <monqy> hi
06:00:20 <CakeProphet> I think itidus20 is a bot.
06:00:30 <Sgeo_> Tail-optimizable recursion might not be that intuitive all the time
06:00:51 <itidus20> i wonder if one is more intuitive than another
06:01:07 <CakeProphet> >_>
06:01:15 <evincar> Wouldn't tail-calls make more sense to someone who prefers iteration?
06:01:34 <evincar> Also, just gonna point out, everydamnthing is a fractal.
06:01:45 <CakeProphet> what?
06:02:06 <evincar> In nature. Many things exhibit fractal characteristics. They're recursive, in a way.
06:02:24 <evincar> From clouds to rocks to brains to coastlines.
06:02:31 <CakeProphet> ah I just didn't association nature to everydamnthing
06:02:53 <evincar> You bloody well should.
06:03:04 <CakeProphet> also I don't think coastlines are fractals.
06:03:05 <evincar> :P
06:03:12 <CakeProphet> and I've never heard of brains being fractals.
06:03:17 <monqy> > everywhere (mkT (reverse :: [Integer] -> [Integer])) (take 5 $ inits [0..])
06:03:18 <lambdabot> [[],[0],[1,0],[1,2,0],[1,3,2,0]]
06:03:21 <CakeProphet> but plants, sure, kind of.
06:03:26 <itidus20> but unpacking a truck is iterative
06:03:26 <evincar> Talking about self-similarity here.
06:03:27 <monqy> oh right
06:03:34 <monqy> i messed up :(
06:03:53 <CakeProphet> itidus20: you can also describe unpacking a truck recursively.
06:03:54 <elliott> <CakeProphet> also I don't think coastlines are fractals.
06:03:56 <elliott> they are.
06:04:00 <evincar> In your brain, there is an arrangement of weights in your neurons that mirrors the outside world, and one that mirrors yourself.
06:04:06 <evincar> elliott: Thank you.
06:04:06 <itidus20> i might be wrong
06:04:17 <evincar> CakeProphet: Go read Mandelbrot's paper on it.
06:04:17 <CakeProphet> elliott: how does that work. Where is the self-similarity?
06:04:19 <elliott> CakeProphet:
06:04:24 <elliott> http://en.wikipedia.org/wiki/How_Long_Is_the_Coast_of_Britain%3F_Statistical_Self-Similarity_and_Fractional_Dimension
06:04:27 <elliott> http://en.wikipedia.org/wiki/List_of_fractals_by_Hausdorff_dimension#Random_and_natural_fractals (fourth item)
06:04:37 <elliott> Hausdorf dimension of the coast of Britain ~= 1.25
06:04:38 <evincar> Fractional dimension isn't necessarily restricted to self-similar structure.
06:04:52 <elliott> (credit to Lewis Fry Richardson, popularised by above Mandelbrot paper)
06:04:56 <itidus20> CakeProphet: how exactly would you do that? @ unpacking a truck
06:05:05 <itidus20> describing it recursively i mean
06:05:37 <evincar> unpack first:rest = unpackOne(first) + unpack(rest)?
06:05:42 <CakeProphet> itidus20: to unpack a truck with 0 items, you sit back and relax. to unpack a truck with n items, you remove one item from the truck, and then unpack a truck with n-1 items.
06:05:44 <itidus20> ok humm
06:06:11 <itidus20> so is iteration is a specialization of recursion?
06:06:15 <CakeProphet> yes.
06:06:20 <CakeProphet> well, no.
06:06:32 <evincar> They're computationally equivalent.
06:06:45 <evincar> Neither's really a specialisation of the other.
06:06:46 <monqy> unpacking a truck: mapM_ unpack stuff
06:06:51 <CakeProphet> generally the same kinds of problems can be solved with both approaches. however the iterative approach uses extra data structures that are hidden away in the mechanism of recurson.
06:07:03 <CakeProphet> +i
06:07:14 <elliott> itidus20: iteration is a specific kind of recursion.
06:07:15 <elliott> evincar: false
06:07:19 <elliott> evincar: iteration is equivalent to tail recursion only
06:07:23 <zzo38> How do you figure out the order of specificness of patterns in case alternatives? Would it work to count how many constructors are mentioned?
06:08:04 <zzo38> Would a tree structure work?
06:08:24 <itidus20> is recursion slower and uses more memory for the same task?
06:08:47 <itidus20> only on a typical computer perhaps ^_^;
06:09:04 <elliott> itidus20: mu
06:09:10 <itidus20> computers aren't built for recursion after all
06:09:19 <elliott> unwarranted assumption.
06:09:28 <elliott> implicit unjustified assumption: computers are built for iteration.
06:09:40 <elliott> implicit unjustified assumption: recursion can never be compiled to iteration.
06:09:48 <itidus20> ooh
06:09:52 <Sgeo_> They're built for GOTOs, aren't they? Or am I mistaken?
06:09:56 <itidus20> now that last one is interesting
06:10:12 <evincar> elliott: Yes, but I was only saying that any recursive function can be expressed iteratively.
06:10:39 <monqy> if you emulate the call stack or what have you
06:10:48 <itidus20> so if the compiler can handle such things, then efficiency is no longer an issue
06:11:00 <itidus20> and its a matter of what is more usable
06:11:06 <monqy> ~recursion~
06:11:07 <elliott> itidus20: also assumption: the fact that hardware is not specifically created for recursion means it's inefficient to recurse.
06:11:11 <elliott> none of these things are good assumptions
06:11:35 <Sgeo_> It's memory-inefficient to non-tail-recurse, isn't it?
06:11:37 <evincar> Hardware these days, and instruction sets specifically, are pretty obviously geared toward compiler writers.
06:11:58 <monqy> h,,m?
06:12:25 <itidus20> ^^;;
06:12:27 <elliott> Sgeo_: in lazy languages, nearly irrelevant.
06:12:43 <elliott> tail recursive functions can leak stack and non-tail recursive functions can use constant space.
06:13:12 <Sgeo_> tail recursive functions can leak stack? How so?
06:14:09 <ais523> elliott: I use a slightly different definition in my work; leaking stack means that it's not tail recursion even if it looks like it
06:14:22 <itidus20> space doesn't really matter..
06:14:55 <Sgeo_> > let fac n = if n == 0 then 1 else n * fac (n - 1) in fac 1000
06:14:56 <lambdabot> 402387260077093773543702433923003985719374864210714632543799910429938512398...
06:14:58 <elliott> ais523: tail recursion is a syntactic thing
06:15:00 <Sgeo_> > let fac n = if n == 0 then 1 else n * fac (n - 1) in fac 100000
06:15:04 <lambdabot> mueval-core: Time limit exceeded
06:15:04 <elliott> itidus20: space means memory.
06:15:14 <itidus20> ya
06:15:15 <ais523> elliott: well, "not a legal target for a tail recursion operator"
06:15:18 <Sgeo_> Time limit, not space limit, bleh.
06:15:28 <Sgeo_> > let fac n = if n == 0 then 1 else n * fac (n - 1) in fac 10^100
06:15:29 <lambdabot> 946898192795960083943247682213801587131773992158187493243695155509789235917...
06:16:56 <Sgeo_> > 10^100
06:16:57 <lambdabot> 100000000000000000000000000000000000000000000000000000000000000000000000000...
06:17:13 <zzo38> I think [2,3] is equally specific as [2,3,4] even though the former mentions five constructors and the latter mentions seven constructors
06:20:13 <itidus20> ok my assumptions are founded on cognitive dissonance
06:20:23 <itidus20> a good foundation for any healthy assumption
06:20:24 <monqy> hi
06:20:28 <elliott> i should probably sleep
06:21:55 <Sgeo_> Why does fac 10^100 seem to work decently?
06:22:02 <Sgeo_> > let fac n = if n == 0 then 1 else n * fac (n - 1) in fac (10^100)
06:22:03 <lambdabot> *Exception: stack overflow
06:22:10 <elliott> lol
06:22:11 * Sgeo_ mumbles about precedence
06:26:53 <evincar> Huh. Neil Gaiman's daughter is Madeleine Rose Elvira Gaiman.
06:27:01 <evincar> I dated a Madeleine Rose.
06:27:35 <evincar> She was insane, and not in the usual sense that guys say their ex-girlfriends are insane.
06:28:41 <evincar> Also, I'm thinking of adding macros to Very but it would involve making parsing the source require executing it. :(
06:29:16 <evincar> Might hold off on that.
06:31:41 <itidus20> evincar: how do you know what guys mean about their ex's being insane? :D
06:32:14 <evincar> itidus20: I've asked.
06:32:16 <itidus20> sorry.. yeah.. women can really be insane
06:32:28 <evincar> Nope. Had nothing to do with the fact that she's female.
06:33:03 <itidus20> insanity can be attractive up to a limit
06:33:27 <evincar> She's just self-absorbed, elitist, and New Agey, and always had to get her way or would shut down.
06:34:45 <evincar> Demonstrates mental illness, but I shouldn't get into it.
06:34:45 <evincar> And I dated her for...almost three years? Two and a half?
06:35:09 <elliott> nothing you said is actually related to mental illness; signed, someone with mental illnesses
06:35:23 <evincar> elliott: I don't really want to talk about the legitimately wrong things.
06:35:31 <elliott> what?
06:36:15 <evincar> Well, I dunno. It's a bit disrespectful.
06:36:23 <evincar> Though I've already passed that line somewhere.
06:36:36 <elliott> calling someone insane is generally seen as disrespectful in most cultures, I think
06:37:47 <itidus20> she probably reads psychology books and plays mind games
06:38:09 <elliott> "she probably reads psychology books and plays mind games" -- itidus20, expert on women
06:38:10 <evincar> Alright, so she was depressed, suicidal, would hit and starve herself, sucked her thumb, and I'm sure I'm forgetting things.
06:38:25 <elliott> mainly the thumb-sucking, right?
06:38:52 <evincar> Basically she was spoiled to the point of it negatively affecting her life and the lives of those around her.
06:38:58 <evincar> But her parents didn't do the spoiling.
06:38:59 <evincar> Nobody did.
06:39:05 <evincar> She was just *like that*.
06:39:35 <itidus20> i will put this all into context
06:39:49 <evincar> I didn't find out about these things all at once.
06:39:53 <itidus20> evincar was casually trying to read about neil gaiman, and then his daughters name triggered memories of his insane ex
06:39:59 <evincar> And I was away at school most of the time.
06:40:03 <evincar> So that's how it went on so long.
06:40:09 <evincar> And yes, that's exactly what happened.
06:40:14 <evincar> It was a shitty period in my life.
06:40:22 <evincar> I know it's not exactly relevant to your interests, all.
06:40:48 <elliott> but seriously what has thumb-sucking got to do with anything
06:41:32 <itidus20> elliott: it's a symptom, indicative of his ex's manifold of insanity
06:41:59 <evincar> I'd call it "not a good sign that she's a well-adjusted adult".
06:42:25 <itidus20> i don't know anyone who is well adjusted to be honest except my relatives
06:42:49 <evincar> It's a relative thing. I know plenty of people who are perfectly stable in day-to-day life.
06:42:53 <evincar> But in relationships they go batty.
06:42:57 <itidus20> what is it with relatives, they always seem so well adjusted.. except the uncle who home-brews his beer and tells dirty jokes loudly
06:43:49 <evincar> Fun fact: because of having painful conversations with this girl on IM while my roommate ate food behind me, I now have a unique response to that sound.
06:44:20 <evincar> Specifically, if someone eats sloppy or crunchy food around me, especially while I'm on a computer, I get stressed and disoriented and need to leave.
06:44:20 <itidus20> evincar: so all these associative triggers need to be purged?
06:44:39 <evincar> It's kind of sad how Pavlovian conditioning works.
06:44:39 <itidus20> ah.. wow.
06:44:52 <evincar> Nah, that's just a fun snippet.
06:44:55 <evincar> I'm done.
06:45:04 <itidus20> you can refer to my previous statement: <elliott> "she probably reads psychology books and plays mind games" -- itidus20, expert on women
06:45:26 <itidus20> i think he was being sarcastic but that is probably for good reason
06:45:37 <evincar> Worst part was, she was totally unaware that anything she did bothered me. :P
06:45:43 <evincar> I lied constantly.
06:45:50 <evincar> Now I don't.
06:45:55 <evincar> And my life is full of win.
06:46:04 <itidus20> oh you poor thing.. women can often tell when a man is lying
06:46:26 <elliott> s/women/people/ s/man/person/
06:46:32 <evincar> I lied compulsively for like eight years.
06:46:38 <evincar> So I got pretty good at it.
06:46:50 <itidus20> elliott: no, the female gender is especially good at reading body language >:)
06:47:08 <evincar> I disagree.
06:47:21 <itidus20> ok fine.. more unwarranted assumptions
06:47:23 <itidus20> from me
06:47:29 <itidus20> graaahhh!
06:47:40 <elliott> s/gender/sex/, then define female sex unambiguously (you will have an almost impossible time doing this)
06:47:41 <evincar> I don't have any evidence for my opinion that the sexes are roughly evenly matched...
06:47:47 <evincar> ...but it's a reasonable assumption.
06:47:47 * elliott -- THE GREAT ANTAGONIST
06:47:54 <evincar> And I can play the "bisexual" card if necessary.
06:47:59 <evincar> Not sure if that helps.
06:48:40 <evincar> Hah, yeah, it's practically impossible to determine the gender of an individual in a rigorous way.
06:48:51 <evincar> If it looks like a female, call it a female.
06:48:54 <evincar> That's what I say.
06:49:46 <elliott> you could ask
06:50:00 <evincar> Also, I appreciate transsexuals have a hard time, but the ones that insist on being called male when they're obviously female, and get angry when strangers "mistake" them for the biological gender that they are, are not winning any points with me.
06:50:25 <evincar> You can want to live for a while as the other gender, and that's great.
06:50:32 <evincar> But...you have to cut people some slack.
06:51:25 <evincar> Asking is frowned upon for some reason.
06:52:38 <itidus20> evincar: theres a few schools of thought i think on this matter of traumatic associations
06:53:09 <itidus20> one is to simply try to avoid the stimulus.. i think this kind of works.
06:53:33 <itidus20> but it has a price to pay also.. it involves kind of micromanaging ones environment
06:54:11 <itidus20> but i should also point out that for example.. if your town is ravaged by a world war that there could be no escaping the reminders
06:54:54 <evincar> ...
06:55:05 <itidus20> the alternative i do not understand so well
06:55:16 <itidus20> as in, how to combat conditioning
06:55:23 <evincar> You know, I'm pretty sure no one's gonna be eating beans behind me while I program, in the event of my obscure New Hampshire town being ravaged by world war.
06:55:33 <evincar> Hell, this is an excellent place to be in the event of a zombie apocalypse.
06:55:58 <itidus20> evincar: what i mean is that if a war is the source of your trauma, it would be kind of inescapable
06:56:02 <evincar> In the hills, 10 miles from the nearest city, plenty of fresh water, everyone has guns, and a forest full of game.
06:56:36 -!- elliott has left ("Leaving").
06:56:53 <itidus20> the expectation that it should be somehow easy to get over it is wrong of course
06:57:54 <itidus20> it seems intuitive that beans shouldn't have such an effect on someone. however the truth is that it does. it is not about your strength, but it is just that the damage done is deeper than it appears
06:58:30 <evincar> It's not damage, though.
06:58:36 <evincar> It's Pavlovian conditioning.
06:58:47 <evincar> I simply *associate* that sound with the feeling of a need to escape.
06:59:01 <evincar> Which isn't the worst feeling.
06:59:02 <itidus20> why is it not damage?
06:59:05 <evincar> It's not painful.
06:59:29 <evincar> It's gotten me out on a nice long walk on more than one occasion.
07:00:08 <itidus20> if i was to bestow on someone an association between the sound of eating beans and the need to escape, would they not be damaged by it?
07:01:19 <evincar> It's not beans specifically.
07:01:27 <evincar> And no, I wouldn't count it as damage.
07:01:45 <itidus20> if a person is better off without it then i think its damage
07:01:55 <evincar> I used beans as an example because I could really go for some beans.
07:02:03 <itidus20> ^crunchy foods
07:02:03 <evincar> The Heinz ones, in the sauce. Mm.
07:03:36 <evincar> I think it's so oddly specific that it's not a detriment, anyway.
07:03:43 <itidus20> the real trouble is assuming we are entirely responsible for our mental wellbeing through application of willpower
07:03:48 <itidus20> when clearly there is more going on
07:04:16 <itidus20> like just sitting and the thoughts gather and an overwhelming storm of thoughts
07:04:45 <itidus20> the errors introduced by one pavlovian conditioning piled upon another
07:04:51 <itidus20> soon you are very far from the truth
07:05:15 <evincar> Or...it's an amusing anecdote.
07:05:28 <evincar> And I ask my roommate to please not eat that right now while I'm trying to work.
07:05:53 <itidus20> like trying to guide a robotic arm, where each of the joints has a slightly inaccurate rotation
07:06:13 <itidus20> and collectively the inaccuracies end up with the robot's arm far from where you expected
07:06:54 <itidus20> you can't really account for every last piece of traumatic conditioning... they don't stop
07:07:07 <itidus20> ok they occasionally stop... but not enough
07:07:28 <evincar> You're talking about something much broader than what I am. :P
07:07:55 <evincar> And to be honest I'm not really interested in examining the psychology of it.
07:08:07 <evincar> Or philosophical implications or whatever.
07:08:32 <itidus20> the rational aspect of the mind tries to explain it all... but it can't
07:09:25 <itidus20> it is practically useless to be rational about these things
07:10:29 <itidus20> i watched indiana jones 4 on tv the other day.. he is trapped in quicksand kinda
07:10:55 <itidus20> someone brings him a snake for him to use as a rope
07:11:07 <itidus20> he can't grab it because of his phobia
07:11:26 <itidus20> so he tells the guy "don't call it a snake! tell me to grab the rope!"
07:11:43 <itidus20> so he is able to grab the snake when the guy says "grab the rope"
07:12:42 <itidus20> its not rational, but it worked (i know its only fiction)
07:24:40 -!- ais523 has quit (Remote host closed the connection).
07:25:14 <zzo38> What happen in Haskell if you make instance of Eq class but == operator is not commutative? Or if == and /= are not the "not" of each other?
07:25:42 <monqy> things will break
07:31:15 <monqy> or at least not work as expected
07:33:29 <evincar> Anyone interested in starting a country?
07:33:41 <evincar> I've had this idea called "Opensourcia" floating around for awhile.
07:35:50 <monqy> sounds miserable
07:37:15 <evincar> I'll take that as a no.
07:37:38 <evincar> Should Very have references?
07:37:48 <evincar> Currently everything's done with values.
07:37:52 <evincar> Not that it matters much I guess.
07:38:18 <evincar> 3 dup results in two copies of "3", not two references to the same instance.
07:38:52 <monqy> why not have sharing :)
07:39:20 <evincar> Sharing is nice. It'd increase performance probably.
07:50:43 <monqy> so uh
07:50:46 <monqy> what's opensourcia
07:51:44 <evincar> I dunno, I was thinking about the possibility of a government with full transparency.
07:51:53 <evincar> Citizens submit bug reports in laws.
07:51:56 <evincar> That sort of thing.
07:52:05 <monqy> oh
07:52:17 <zzo38> Do you know about the BLISS programming language?
07:52:20 <evincar> The currency would be fixed to the population.
07:52:22 <monqy> what is bliss
07:52:35 <monqy> "the currency would be fixed to the population"? helo?
07:52:37 <monqy> help, I mean
07:52:37 <cheater> bug reports assume that there is a desired and an undesired outcome
07:52:45 <monqy> ???
07:52:55 <cheater> with laws, there will always be some people who desire another outcome as you
07:52:57 <evincar> monqy: The total amount of Opensourcian dollars would be limited based on the population of Opensourcia.
07:53:24 <cheater> that is because every society has a big part which is speculative or criminal
07:53:27 <evincar> So we wouldn't legislate things that are contentious.
07:53:34 <cheater> at least in some detail
07:53:49 <evincar> It would be individual and minor court settlement, mostly.
07:53:54 <cheater> e.g. a majority of people have crossed the street at a red light at least once
07:54:06 <cheater> yes evincar
07:54:16 <cheater> you've just described every law system in existence
07:54:19 <evincar> I think the majority of laws can be made discretionary.
07:54:27 <cheater> except your bug reports are called court cases
07:54:34 <evincar> Which is tantamount to not having them.
07:54:48 <itidus20> So what do mathematicians want these days? Are they coming to terms with the fact that their knowledge is effectively a meaningless excuse to sit at a desk and press keys?
07:54:54 <evincar> Not really. Court cases don't go meta.
07:54:54 <itidus20> Or is there something more going on?
07:54:59 <cheater> you cannot abide by laws you do not understand
07:55:13 <evincar> Okay...
07:55:27 <evincar> ...that's another topic.
07:55:29 <zzo38> BLISS was designed in 1970.
07:55:34 <cheater> arbitrarily changing laws are not possible to understand in any sort of even slightly complex situation
07:55:44 -!- elliott has joined.
07:55:58 <monqy> hi
07:56:04 <itidus20> mathematicians are useful for "me"... but are mathematicians useful for themselves?
07:56:21 <evincar> It's not arbitrary, but okay.
07:56:25 <itidus20> or are they a kind of labor force of the mind... industrialized
07:56:27 <cheater> most of the time court cases are just discourse that establishes facts and brings up relevant laws, trying to reduce the situation at hand to the outcome pointed to by the laws
07:56:39 <cheater> most arguments are about the interpretation of said laws
07:56:44 <evincar> And it's all publicly available anyway.
07:56:56 <cheater> there are very few so called first precedents happening
07:57:05 <itidus20> mathematics: the sweatshop of the intellect
07:57:47 <cheater> itidus20, i have no idea where ever you would get a stupid notion like this
07:57:59 <cheater> mathematics is applicable in lots and lots of places
07:58:02 <elliott> a more entertaining place than you get yours
07:58:07 <evincar> But it's a half-formed idea anyway.
07:58:28 <evincar> I just brought it up because I was curious what people's reactions would be.
07:58:46 <evincar> It's largely just a name.
07:58:58 <evincar> And really, most open-source projects are run by "benevolent dictators".
07:59:15 <cheater> government transparency and openness is a target for many countries
07:59:18 <cheater> but not all
07:59:20 <itidus20> cheater: but still, are mathematicians nothing more than a highly paid sweatshop
08:00:05 <monqy> evincar: benevolent dictators such as yourself?
08:00:08 <cheater> however most governments are structures that are very dated and it's difficult to roll out institutional transparency
08:00:19 <elliott> did evincar say benevolent dictator
08:00:31 <elliott> please tell me evincar proposed government by benevolent dictator
08:00:42 <elliott> guido 4 prez
08:01:24 <itidus20> cheater: it is the way that mathematicians seem to acknowledge that nothing new is really encountered.. they just provide formal proofs for things which are already known etc
08:01:25 <monqy> he said "benevolent dictator" in relation to open source projects, connecting that to his opensourcia
08:01:37 <monqy> so i drew the ocnnectione.....
08:02:02 <elliott> opensourcia "one nation under god (god is a fake, evincar rules the place instead)"
08:02:06 <elliott> (official motto)
08:02:31 <evincar> I wouldn't make a good leader.
08:02:40 <zzo38> In BLISS, if you want to read the value of a variable you must prefix it with a dot
08:02:43 <evincar> I mean, I am a good leader when forced into the position.
08:02:47 <evincar> But I don't like it.
08:02:59 <elliott> "I wouldn't make a good leader." "I am a good leader"
08:03:03 <elliott> -- e v. incar
08:03:06 <elliott> founder of opensourcia
08:03:07 <evincar> I'm more of a Pompous Grand Vizier type.
08:03:16 <elliott> s/ dollar sign/nothing/oops
08:03:21 <evincar> Welcome to correcting yourself.
08:03:27 <evincar> Oh wait, you're a functional programmer.
08:03:30 <evincar> There's no mutation.
08:03:39 <evincar> I can see how you got confused.
08:04:24 <evincar> Wait, there's a timestamp.
08:04:27 <evincar> FRP!
08:04:29 <evincar> :D
08:04:36 <evincar> All is well.
08:04:52 <elliott> "what is FRP" -- e v. incar, founder of opensourcia, motto: "what is frp"
08:05:06 <cheater> itidus20, that is wrong, new things are encountered, the notion is that they are not created.
08:05:24 <cheater> that is a deep philosophical rather than every day notion
08:05:45 <monqy> "bad joke or am i really poking fun at functional programeng and eliot" - evincar, one and only supreme führer of open source ia
08:06:04 <cheater> itidus20, or to better word it, things are encountered anew
08:06:12 <cheater> they're not new, but are new to you!
08:06:41 <evincar> monqy: Can't it be both?
08:06:51 <elliott> what is frp is a really good country motto
08:07:00 <monqy> maybe it was an inclusve ore...
08:07:02 <elliott> i want to live in a country whose motto is "what is frp"
08:07:17 <evincar> You may want to reconsider.
08:08:35 -!- evincar has quit (Quit: Anyway, sleep.).
08:08:39 <monqy> bye evincar
08:09:24 <elliott> "bye evincar" --monqy, enemy of opensourcia, motto: "what isn't frp"
08:09:44 <monqy> im proprietaria
08:10:05 <itidus20> sorry went afk
08:10:37 <elliott> proprietaria
08:10:51 <monqy> proprietaria
08:10:58 <itidus20> cheater: i am projecting. as in, i am taking those things i percieve in myself and accusing you of having them
08:11:08 <itidus20> or not so much "you" as mathematicians
08:11:24 <elliott> burn
08:12:51 <cheater> itidus20, can you elaborate?
08:13:45 -!- myndzi has quit (Ping timeout: 245 seconds).
08:14:24 -!- azaq23 has quit (Ping timeout: 252 seconds).
08:17:29 <itidus20> cheater, i was trying to define projectin
08:17:33 <itidus20> ^projection
08:17:39 <itidus20> such as..
08:17:45 <itidus20> if i said.. you're lazy
08:18:14 <itidus20> if i was projecting, it means, deep down i believe i am lazy, and so i am saying you are the lazy one
08:24:26 <cheater> right i understand projection
08:24:36 <cheater> what sort of work are you doing?
08:24:50 <cheater> i understand you are not working as a mathematician
08:28:56 <zzo38> I read the manual. Declarations of structure types in BLISS are extremely versatile; they can even contain arbitrary program code. They can have access parameters and declaration parameters. You can optionally have field names, but those are also very generalized.
08:31:52 <zzo38> It has a lot of compile-time functions which can be used to write macros. These macros are far more powerful than C macros; I think they are more like TeX macros.
08:33:48 <itidus20> My job is to occupy my bedroom. Loading the dishwasher. Putting groceries away sometimes. Chat in IRC.
08:34:18 <elliott> good job
08:39:25 <itidus20> And to challenge any obstacles that obstruct me from ... and at this point it gets murky
08:40:45 <elliott> so rude of cheater not to thank you for your in-depth answer :{
08:42:14 <itidus20> that obstruct me from (living/forging my mind for myself and humanity/sharpening my mind/doing what I must do in life/making my dead father proud)
08:42:20 <itidus20> etc etc
08:42:33 <itidus20> lol
08:49:36 <itidus20> I think it is because that focusing in a world full of distractions is so difficult that it is good.
08:49:55 <itidus20> Uh. A lot can be learned in the space of one day where attention is focused, you know.
08:50:05 <itidus20> A great deal indeed.
08:50:39 <elliott> ok
08:50:41 <itidus20> Infact, one can learn so much in the space of a day as to brag about it for a month.
08:51:16 <elliott> is that what you do
08:51:22 <itidus20> no
08:51:30 <monqy> bragging about learning things?
08:51:32 <monqy> is this what you do
08:51:38 <itidus20> i dont learn things
08:51:45 <monqy> would you brag
08:51:48 <itidus20> i brag because i don't learn things
08:51:53 <monqy> oh
08:52:16 <itidus20> i should like to think (laughs to myself) that if i learned something substantially useful that i would actually apply it
08:52:32 <itidus20> but... yeah i am the foolish bragging sort
08:52:36 -!- zzo38 has quit (Quit: +!>@./~#!).
08:52:59 <itidus20> i know that even learned mathematicians have their off days, down time..
08:53:18 <itidus20> heavy learning peaks and then plateaus
08:53:57 <itidus20> maybe they have enough that it comes time to balance theory with practice
08:57:32 <itidus20> maybe i have an aversion to learning in the same way that evincar is conditioned to need to escape when he hears the noise of someone crunching
08:58:43 <monqy> hm?
08:59:07 <itidus20> hmmmmm
09:09:05 <itidus20> this woman.. would send me email after email of porn images in order to condition me to associate her with pornography
09:10:43 <itidus20> of course it is wrong as elliott explained to tar all women with the same brush.. but that is an example of the madness i attracted into my online life
09:11:37 <monqy> how did this even happen
09:11:44 <elliott> itidus20: she might have been a spambot
09:12:18 <itidus20> no she just cut and pasted the images from websites into the email somehow
09:12:22 <monqy> does this have anything to do with that yahoo chat thing you were talking about
09:12:29 <monqy> a while ago
09:12:31 <itidus20> of course.. i met her in yahoo
09:12:34 <monqy> about how it didn't do you any good
09:12:47 <monqy> I think that may have been all you said
09:13:23 <elliott> are you sure she wasn't a spambot
09:13:41 <itidus20> its not completely evil... but basically i bit off more than i could chew
09:14:25 <itidus20> "oh isn't it great this girl likes porn and likes sending me porn" he thinks to himself. no she was a demonic woman. hahahaha.
09:14:36 <elliott> okay
09:16:15 <itidus20> its my own fault for having such twisted perversions
09:42:55 -!- kmc has quit (Ping timeout: 245 seconds).
09:44:13 -!- kmc has joined.
09:50:07 <CakeProphet> itidus20: I like to eat people.
09:50:09 <CakeProphet> good night.
09:57:48 -!- kmc has quit (Ping timeout: 252 seconds).
10:02:14 -!- myndzi has joined.
10:05:11 -!- GreaseMonkey has quit (Quit: The Other Game).
10:11:46 -!- kmc has joined.
11:25:50 -!- Patashu has joined.
11:29:16 -!- monqy has quit (Quit: hello).
11:29:48 -!- sllide has joined.
11:34:14 -!- Deewiant has quit (Ping timeout: 258 seconds).
11:38:37 -!- boily has joined.
11:49:58 -!- Deewiant has joined.
12:02:27 -!- boily has quit (Quit: WeeChat 0.3.5).
12:13:59 -!- boily has joined.
12:14:19 -!- augur has joined.
12:33:13 <Gregor> W3 validator seems to be giving me internally-inconsistent errors >_>
12:33:19 <Gregor> Element source not allowed as child of element audio in this context. (Suppressing further errors from this subtree.)
12:33:24 <Gregor> Then: If the element does not have a src attribute: one or more source elements, then zero or more track elements, then transparent, but with no media element descendants.
12:33:31 <Gregor> Except, it doesn't have a src attribute, so that's clearly OK.
13:04:57 <atehwa> Remember I told you about arranging a course on esoteric programming languages? We're arranging an "evening school" (peer meeting) first. See https://wiki.helsinki.fi/display/lambda/esoteeriset+ohjelmointikielet
13:06:06 -!- atehwa has set topic: Esolang event @ Hel/Finland on 3.10.2011 | I think pointers are considerably more useful than lambda calculus | http://codu.org/logs/_esoteric/.
13:06:15 -!- atehwa has set topic: Esolang event @ Hel/Finland on 3.10.2011: https://wiki.helsinki.fi/display/lambda/esoteeriset+ohjelmointikielet | I think pointers are considerably more useful than lambda calculus | http://codu.org/logs/_esoteric/.
13:22:56 <elliott> neat
13:23:21 <atehwa> ain't it, though :)
13:27:09 <Gregor> "esoteeriset ohjelmointikielet"
13:27:13 <Gregor> Finnish is such a beautiful language.
13:29:37 <elliott> Gregor: hey, if we talked in Finnish then you'd have no problem deciphering my keyboard-mashings
13:29:45 -!- MSleep has changed nick to MDude.
13:31:50 <itidus20> mika tama on? se on bussi
13:33:38 <atehwa> onko tosiaan?
13:34:20 <atehwa> I'm somehow proud to have an esoteric mother's tongue
13:34:59 <atehwa> *mother tongue
13:37:01 <elliott> I'm still not convinced Finnish isn't a hilarious fabrication
13:48:35 -!- kmc has quit (Quit: Leaving).
13:53:02 -!- elliott has quit (Read error: Connection reset by peer).
13:53:12 -!- elliott has joined.
13:53:18 <atehwa> oh, but it is
13:53:30 <atehwa> I have the same feeling about German
13:54:15 <atehwa> A language that works so, must be someone's quirk
13:55:28 -!- kmc has joined.
14:16:55 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
14:20:58 -!- BeholdMyGlory has joined.
14:24:55 -!- CakeProphet has quit (Read error: Operation timed out).
14:27:11 -!- CakeProphet has joined.
14:27:11 -!- CakeProphet has quit (Changing host).
14:27:11 -!- CakeProphet has joined.
14:35:58 -!- FireFly has joined.
14:40:58 -!- copumpkin has joined.
14:41:48 -!- kwertii has joined.
14:51:02 -!- elliott_ has joined.
14:51:03 -!- elliott has quit (Read error: Connection reset by peer).
15:05:47 -!- Phantom_Hoover has joined.
15:10:13 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .).
15:11:20 -!- derrik has joined.
15:14:46 <Phantom_Hoover> Hello everyone.
15:14:46 <lambdabot> Phantom_Hoover: You have 8 new messages. '/msg lambdabot @messages' to read them.
15:14:57 <Phantom_Hoover> What a lovely surprise, lambdabot.
15:15:10 <elliott_> That weirdo derrik keeps sending Phantom_Hoover messages.
15:15:48 <derrik> /msg elliott_ :p
15:16:15 <Phantom_Hoover> No.
15:16:27 <Phantom_Hoover> @tell derrik Stop sending me messages, you sick bastard.
15:16:27 <lambdabot> Consider it noted.
15:21:00 -!- derrik has quit (Ping timeout: 264 seconds).
15:25:34 -!- augur has quit (Remote host closed the connection).
15:26:59 <itidus20> I guess I'm just a sick, sick bastard. Just one sandwich short of a picnic basket.
15:27:50 -!- augur has joined.
15:28:27 <Phantom_Hoover> itidus20, are you Deewiant?
15:28:47 <itidus20> `findquote deewiant
15:28:51 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: findquote: not found
15:28:53 <itidus20> oops
15:32:46 <elliott_> `pastequotes deewiant
15:32:48 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.22811
15:53:07 -!- augur has quit (Remote host closed the connection).
15:57:37 -!- cheater has quit (Ping timeout: 276 seconds).
15:59:47 -!- augur has joined.
16:01:05 -!- kmc has quit (Quit: Leaving).
16:09:56 <itidus20> elliott_: so i have this idea
16:10:32 <itidus20> IDEA: Ideas Destined for Esolang Arena
16:10:32 -!- elliott_ has quit (Read error: Connection reset by peer).
16:10:39 -!- elliott has joined.
16:11:00 <itidus20> elliott: so i have this idea
16:11:06 <elliott> ok
16:11:09 <elliott> go on
16:11:27 <itidus20> its a game engine idea basically.. one i've been cooking for a while
16:11:39 <itidus20> but.. it is gradually making more sense over time
16:11:46 <elliott> ok
16:11:47 <Phantom_Hoover> Is it 2D.
16:12:08 <itidus20> The essence of the idea is 3d gameplay displayed in 2d.
16:12:39 <elliott> itidus20: dwarf fortress does that
16:12:48 <Phantom_Hoover> You mean literally every 3D game ever.
16:12:51 <elliott> arguably, also nethack and all other roguelikes, but that's rather more limited
16:12:58 <elliott> Phantom_Hoover: well I assumed it's something more nuanced than that :
16:12:58 <elliott> :D
16:13:00 <itidus20> Phantom_Hoover: well yes and no....
16:13:02 <itidus20> hmm
16:13:04 <elliott> itidus20: but go on, is it more interesting than just a cross-section view?
16:13:08 <elliott> (that's what DF does)
16:13:09 <itidus20> yes in the literal sense
16:13:13 <itidus20> i mean
16:13:17 <elliott> (because it was designed as a two-dee game first)
16:13:27 <itidus20> yes in the sense that every 3d game is a 2d projection
16:13:36 <itidus20> but...
16:14:20 <itidus20> uhmmm
16:14:22 <itidus20> uhmm
16:14:24 <Phantom_Hoover> Unfortunately, I realised that there are a few 3D games which don't just project to 2D, but they're like 0.1% of games, so it's not a huge deal.
16:15:03 <itidus20> Basically the key to the idea is that it is to look like a 2d game, and yet play like a 3d game.
16:15:31 <itidus20> >:-)
16:15:38 <elliott> go on, then
16:15:42 <itidus20> hummm
16:15:48 <Phantom_Hoover> So you mean like every 3D game ever?
16:15:55 <itidus20> lol
16:16:00 <Phantom_Hoover> I mean, how do you define 3D in the first place?
16:16:02 <itidus20> there isn't an exact idea
16:16:12 <itidus20> phantom.. 3 dimensional vertices
16:16:16 <itidus20> [x][y][z]
16:16:22 <itidus20> :P
16:16:27 <Phantom_Hoover> That's pretty vague.
16:16:30 -!- cheater has joined.
16:16:57 <itidus20> so what is the term for a 3d rectangle? is that a prism?
16:17:01 <itidus20> rectangular prism?
16:17:05 <Phantom_Hoover> A cuboid?
16:17:58 <itidus20> like a umm.. book
16:18:06 <Phantom_Hoover> A cuboid.
16:18:09 <itidus20> ok thanks
16:18:52 <itidus20> ok so my temporary definition is that 3d gameplay means that collision detection happens between cuboid primitives or spheres
16:19:10 <itidus20> or perhaps finite 3d planes
16:19:30 <elliott> That doesn't apply to anything polygon-based, does it?
16:20:10 <Phantom_Hoover> Depends.
16:20:13 <itidus20> a few polygon-based games might be like that ^^;
16:20:30 <Phantom_Hoover> Oolite, at least, does collision detection on cuboids.
16:20:53 <itidus20> now i have to read up what oolite is
16:21:04 <elliott> Play DF instead it's better and also obviously comparable.
16:21:10 <Phantom_Hoover> Open-source Elite remake/
16:21:24 <itidus20> yes... i am working on the assumption that cuboid collision detection is very common in 3d
16:21:38 * itidus20 winces.
16:21:49 <itidus20> or if not... then spheres
16:21:55 <elliott> DFDFDFDFDFDFDFDF, you should play DF.
16:22:46 <itidus20> ok so a cuboid and a sphere are both defined in terms of 3d vertices.
16:23:00 <CakeProphet> I am a Dorf Fartruss
16:23:10 <elliott> itidus20: will you play DF if I ask real nicely.
16:23:19 <cheater> itidus20, in older games bounding boxes would be cuboids or upright cylinders or spheres.
16:23:43 <cheater> nowadays a lot of models also have complicated meshes for collision
16:24:16 <itidus20> i assume here that spheres or cuboids also serve as a kind of preliminary bounds checking
16:24:32 <CakeProphet> I have a great urge to not go to class today
16:24:35 <CakeProphet> and just play DF.
16:24:49 <elliott> itidus20: So if I make a three-dimensional game and it doesn't do collision detection is it not three dimensional?
16:24:51 <itidus20> CakeProphet: can't you transform your classroom into a dwarf fortress?
16:24:52 <elliott> CakeProphet: A good urge.
16:25:04 <CakeProphet> hmmm
16:25:20 <CakeProphet> I am almost certain I will have no reason to go to any of my classes other than, uh, learning.
16:25:25 <cheater> Dwarf Fartress
16:25:33 <cheater> she who farts dwarven.
16:25:48 <CakeProphet> s/.*/Dorf Fartruss/
16:25:59 <elliott> CakeProphet: Then clirth.
16:26:03 <elliott> Phantom_Hoover: (Did I get my -rth form right?)
16:26:18 <elliott> I guess it should be "Then go-clirth.", which would be stopping going to the class.
16:26:18 <CakeProphet> elliott: ...I
16:26:25 <CakeProphet> you are not allowed to use -irth
16:26:28 <CakeProphet> and get a response from me.
16:26:28 <Phantom_Hoover> elliott, no, it'd just be girth.
16:26:34 <elliott> Phantom_Hoover: oh, duh.
16:26:37 <elliott> CakeProphet: Girth.
16:26:39 <Phantom_Hoover> CakeProphet, complainirth.
16:26:42 <itidus20> elliott: an interesting counter example is that a 2d rogue-like(i use this slang as if i ever played one) can be implemented with 3d graphics, polygons, procedural textures, geometry shaders,
16:26:50 <elliott> Phantom_Hoover: That still kind of implies you go and then stop, though, but I guess CakeProphet did go in the past, so.
16:26:56 <CakeProphet> girthhub
16:27:02 <elliott> itidus20: You should play DF it is great.
16:27:14 <CakeProphet> githubirth?
16:27:25 <itidus20> i knew a guy who was working on a 3d ultima frontend of some kind once
16:27:29 <itidus20> dunno which ultima
16:27:45 <CakeProphet> the chess variant no doubt.
16:28:21 <itidus20> technically anything made of electrons is 11 dimensional isn't it?
16:28:25 <elliott> I don't think itidus20 wants to play DF. :(
16:28:29 <itidus20> :D
16:28:35 <CakeProphet> elliott is sad face. :(
16:28:58 <itidus20> i wanna talk more about this though
16:29:27 <CakeProphet> ಥ_ಥ
16:29:32 <Phantom_Hoover> elliott, grievirth.
16:29:41 <itidus20> elliott> itidus20: So if I make a three-dimensional game and it doesn't do collision detection is it not three dimensional? -- good question
16:30:02 <elliott> Phantom_Hoover: But itidus20 considirthed playing DF, if he ever considered it in the first place.
16:30:33 <itidus20> humm
16:30:55 <CakeProphet> I am kind of confused as to how the cross-section works.
16:31:03 <Phantom_Hoover> What cross-section?
16:31:05 <CakeProphet> especially in open places outside.
16:31:07 <CakeProphet> DF.
16:31:30 <Phantom_Hoover> CakeProphet, it displays dots with the colour of the stuff below if it's one level down, or blue crosshatch otherwise.
16:31:50 <CakeProphet> ah okay.
16:32:01 <CakeProphet> so to move down a level outside you just walk flatly across the ground right?
16:32:10 <CakeProphet> >_>
16:32:14 <elliott> You don't move.
16:32:16 <itidus20> elliott: that is a tough question
16:32:22 <elliott> "You" are an omnipotent camera.
16:32:27 <CakeProphet> elliott: your dorfs
16:32:35 <elliott> They can handle slopes, yes.
16:32:39 <CakeProphet> okay.
16:32:48 <elliott> The mechanism is irrelevant to you; maybe they crawl.
16:33:15 <CakeProphet> it might be if I intend for them to be able to reach a specific location and they cannot for whatever reason.
16:33:37 <itidus20> I have thought about using color luminance as an indicator of depth with an orthographic projection.
16:33:57 <itidus20> (naturally i am not the only one >.<;)
16:34:33 <CakeProphet> ah okay so the giant blue spots are cliffs.
16:34:41 <Phantom_Hoover> <elliott> The mechanism is irrelevant to you; maybe they crawl.
16:34:49 <CakeProphet> I didn't actually have to build a slope downward I realize now... I could have just dug into the mountain south of me
16:34:51 <Phantom_Hoover> No it isn't.
16:35:00 <Phantom_Hoover> You should no DF simulates that in painfully exact detail.
16:35:03 <Phantom_Hoover> *know
16:35:16 <Phantom_Hoover> As any fule no.
16:35:30 <CakeProphet> so channel = dig a big pit thing.
16:35:32 <elliott> Phantom_Hoover: Well OK but I mean, it doesn't matter whether it's just by normal walking or by ascend-walking or anything.
16:35:48 <elliott> CakeProphet: Mine = Mine the actual block. Channel = Mine the floor.
16:35:56 <CakeProphet> oky
16:35:59 <elliott> Channel creates a room as if you mined it out on the level below.
16:36:10 <Phantom_Hoover> elliott, not as of df2010.
16:36:13 <elliott> (You're effectively removing the floor, and the block below it.)
16:36:15 <elliott> Phantom_Hoover: Huh?
16:36:22 <Phantom_Hoover> It makes ramps on the level below now, which need to be removed.
16:36:25 <elliott> Phantom_Hoover: That's exactly how it worked in Handlekindled; see: below my bedroom.
16:36:27 <elliott> Oh, well yeah.
16:36:31 <elliott> But it's still the essential same thing.
16:36:35 <elliott> Just with a side-effect.
16:36:36 <CakeProphet> oh.
16:36:40 * CakeProphet never removed the ramps.
16:36:54 <Phantom_Hoover> CakeProphet, keep them if you just want a way down to the next level.
16:36:57 <elliott> CakeProphet: What are you actually trying to channel?
16:37:08 <CakeProphet> nothing I'm referring to my originate channel in front of my entryway
16:37:14 <Phantom_Hoover> elliott, I'm assuming he's using the fortress quickstart guide.
16:37:15 <CakeProphet> that the guide recommends.
16:37:19 <CakeProphet> yes.
16:37:20 <elliott> Oh.
16:37:27 <CakeProphet> ANYWAYS MUST GET READY FOR CLASSES.
16:37:28 <Phantom_Hoover> Which advises you to channel a 3x3 pit and dig into it if there isn't a convenient cliff.
16:37:39 <elliott> Umm, but hasn't CakeProphet already got a fortress up.
16:37:48 <elliott> I mean, one with no workshops or anything, but.
16:37:51 <CakeProphet> turns out there was a convenient cliff I'm just bad at imagining ASCII cross-sectional textmaps as 3D space
16:38:03 <elliott> Protip: Blackness is solid rock.
16:38:09 <CakeProphet> yeah I got that.
16:38:17 <CakeProphet> now anyways
16:39:05 <itidus20> advantages to 2d graphics: 1)aesthetically pleasing. 2)easy to judge distances. 3)computationally cheap. 4)my girl. my girl. where will you go? i'm going where the cool wind blows.
16:39:19 <Phantom_Hoover> Always important, is 4.
16:39:41 <CakeProphet> yes, leadbelly is god.
16:39:53 <itidus20> i dont know them.. im listening to a nirvana cover
16:39:56 <CakeProphet> or, you know, just this really cool blues musician guy.
16:40:02 <Phantom_Hoover> Surely berylliumbelly?
16:40:05 <CakeProphet> itidus20: of course you are because no one knows anything about old blues artists.
16:40:13 <elliott> Except CakeProphet.
16:40:22 <elliott> Cake Prophet would be a really good name for an old blues artist.
16:40:23 <itidus20> he announces at the start of the song that he was offered leadbelly's guitar for $500,000
16:40:41 <CakeProphet> probably not a very good guitar.
16:41:44 <itidus20> "we're passing the basket. i even asked david geffin personally if he'd buy it for me"
16:42:19 <itidus20> hmm
16:42:40 <itidus20> i know which discography to share next then
16:53:03 <itidus20> anyway
16:53:28 <itidus20> advantages to 2d graphics: 1)aesthetically pleasing. 2)easy to judge distances. 3)computationally cheap.
16:54:02 <itidus20> extra detail on '2' one reason for pursuing stereoscopic 3d is to make it easier to judge distances in games and such things
16:54:38 <itidus20> because it's simply difficult
16:55:36 <itidus20> more details on '1' i will present 2 animated scenes.. and those who are bored enough to look can see which looks best :D
16:55:46 <elliott> if you think three-dee worlds are computationally cheap just because they're rendered two-dimensionally, you _need_ to play DF.
16:56:39 <Phantom_Hoover> Well, DF is not renowned for its intensive graphical strain.
16:57:04 <elliott> Phantom_Hoover: No, but if DF was rendered with actual three-dee in OpenGL it's not like the system requirements would skyrocket.
16:57:18 <elliott> (Heck, it uses OpenGL already to do the twodee.)
16:57:36 <itidus20> this is the contender representing 2d art: http://www.youtube.com/watch?v=kaIliI0gc1I
16:58:57 <itidus20> this is definitely a biased comparison .. sighs.. but 3d example is: http://www.youtube.com/watch?v=zB2gPZRsz0Q
16:59:06 <itidus20> the bias really isnt fair
17:02:24 -!- CakeProphet has quit (Ping timeout: 252 seconds).
17:03:31 <itidus20> i suppose gollum from lord of the rings would be a better contender for 3d
17:10:44 <itidus20> and.. the contrasting side of things is
17:12:11 <itidus20> 3d offers richer gameplay... for example.. movement in 26 general directions instead of 8
17:13:10 <elliott> play df, df has movement in a nearly infinite amount of directions (because it is like being a hundred characters at once) (except you can ALSO count all the menu things and designations as moves!!!!!!!)
17:14:43 <itidus20> a curious note is that some games such as ninja turtles arcade game have 3 dimensions, while some games like wolfenstein 3d have 2 dimensions
17:15:19 -!- elliott has left ("Leaving").
17:15:25 -!- elliott has joined.
17:15:32 <elliott> itidus20: will monetary bribes make you play df
17:15:37 <itidus20> yes
17:15:41 <elliott> how big
17:15:44 <elliott> name your price
17:16:11 <itidus20> lets start off to the tune of 1,000,000 euros so we have room to move
17:16:18 <elliott> ok. how about ten euros
17:16:54 <itidus20> oh you are clearly quite taken with df
17:17:02 <itidus20> that is good
17:17:55 <elliott> we have been taken with df for weeks (where taken means playing it)
17:18:04 <elliott> (everyone has been admiring df since it started existing ever)
17:18:26 <Phantom_Hoover> elliott has been ecstatic lately. He admired a fine DF lately.
17:18:47 <elliott> Phantom_Hoover: What is it with dwarves and, like, admiring doors.
17:18:56 <itidus20> because what i am talking about is not really common, i have spent some time comparing and contrasting 2d and 3d
17:19:11 <Phantom_Hoover> elliott, it's a *fine* door.
17:19:23 <itidus20> it is hard to really express "2d graphics with 3d gameplay"
17:19:34 <elliott> Phantom_Hoover: are there even non-fine doors.
17:19:35 <Phantom_Hoover> It opens with the smoothest of swings.
17:19:40 <elliott> Dorfs admired shit in my fortress of crap.
17:19:46 <Phantom_Hoover> Do you know how hard that is with a door made of rock?
17:19:53 <elliott> By which I don't mean they admired faeces in a fortress made out of faeces.
17:19:57 <itidus20> elliott: hmm.. perhaps i should tell you about a chapter from my childhood.
17:19:57 <elliott> Although that does give me my next megaproject.
17:20:08 <Phantom_Hoover> elliott, come on, you don't affect how your masons make stuff, which is why they can make nice things.
17:20:19 <Phantom_Hoover> itidus20, yesyesyes STORY STORY STORY
17:20:21 <elliott> Phantom_Hoover: Woodcrafter actually.
17:20:25 <Phantom_Hoover> Friendship story.
17:20:25 <elliott> Not that good a one, I don't think either.
17:20:28 <Phantom_Hoover> elliott, ELF
17:20:34 <elliott> Phantom_Hoover: um excuse me there was an AQUIFER
17:20:37 <itidus20> Phantom_Hoover: ok i had several artistic visions growing up.
17:20:40 <elliott> And also LOTS OF TREES _BUT_
17:20:44 <elliott> We had to get it all from the REALLY COLD OUTSIDE
17:20:49 <elliott> THERE WERE HONEY BADGERS AND SNOWSTORMS
17:21:02 <Phantom_Hoover> elliott, dude, you never even _saw_ the aquifer on that map.
17:21:09 <Phantom_Hoover> You ran out of food because you're an idiot.
17:21:21 <elliott> Phantom_Hoover: Nobody has technically died yet.
17:22:01 <itidus20> One vision I had was when i had some paper folded up like a book or whatever... I started to wonder, is there a way I can fold/cut/turn this paper to make it less linear.. to make it more like an interactive fiction
17:22:31 <itidus20> as if my brain was blasting the paper with matrices and the paper was not ready to yield
17:22:55 <Phantom_Hoover> itidus20, consider that you may have superpowers.
17:23:01 <itidus20> :P
17:23:06 <elliott> I rate this hypothesis as: plausible.
17:23:22 <Phantom_Hoover> itidus20 is......... THE MATRIXINATOR
17:23:56 <itidus20> as if my brain had an itching that there was more ways the paper could fold than i could imagine
17:24:22 <itidus20> like back then my idea of interactive fiction was "choose your own adventure" books
17:24:32 <itidus20> where at the bottom of the page you branched via page numbers
17:24:44 <Phantom_Hoover> itidus20, also, have you considered trying origami.
17:24:48 <itidus20> so the book had already demonstrated a capacity at branching
17:25:32 <itidus20> and maybe because when growing up we had this kids book which had paper pockets in it you could sorta stick things
17:25:42 <itidus20> probably all these things played on my mind
17:26:19 <itidus20> so.. the problem with a book of course is that you can't erase the pages
17:26:50 <itidus20> uh.. it is ROM... vs RAM
17:27:28 <itidus20> yes.. essentially a book is a ROM.. and a few operations are available
17:27:55 <itidus20> Jump to the next page. Jump to the previous page. Jump to page N.
17:28:14 <itidus20> it even had conditional jumps
17:28:57 <itidus20> if (you choose option 1) jump to page A; if (you choose option 2) jump to page B;
17:29:12 <itidus20> and some pages had a HALT instruction
17:31:36 <itidus20> ok so that was one idea.. pondering about the magic of book computation.
17:31:47 <Phantom_Hoover> Bookputation.
17:32:01 <itidus20> the second idea was more relevant. i had a decent collction of lego which was donated by a parents friend.
17:32:35 <itidus20> one day, while playing with these legos, i got this dream of a giant tower built out of lego bricks which stretched from hte ground to the ceiling
17:32:56 <itidus20> which would basically be 2ft square
17:33:30 <itidus20> and whenever i would go to a toystore growing up i would have my eyes out for lego blocks, secretly having the ambition to build it
17:33:50 <itidus20> but never found any lego compatible bricks or ones cheap enough etc
17:34:16 <Phantom_Hoover> The saddest story.
17:34:21 <itidus20> eventually about the time i had a 486 i started considering the possibility of creating my own 3d software.
17:34:48 <itidus20> so in a book about turbo pascal 6 system programming i started reading about segmented memory addressing :-s
17:34:49 <Phantom_Hoover> Here, behold http://www.youtube.com/watch?v=mEFPhXl3QQY and be happy.
17:34:59 <Phantom_Hoover> Oh god, segments.
17:35:01 * itidus20 facepalms.
17:35:05 <Phantom_Hoover> I know them only as an ancient horror.
17:35:13 <itidus20> 16bits -> 20 bits
17:35:19 <itidus20> anyway... nothing came of that.
17:35:52 <itidus20> ok ill watch video
17:36:43 <elliott> itidus20: will you play DF.
17:37:34 <elliott> Nobody likes my unsafe hackery in #haskell. /sniff
17:37:57 <itidus20> not today
17:38:23 <itidus20> my experiment at lego stopmotion can be seen here: http://www.youtube.com/watch?v=NzMEQlK1EBA
17:40:08 <elliott> Phantom_Hoover: Here, you appreciate my hack: http://hpaste.org/50760
17:42:17 <Phantom_Hoover> Is that printing IO Strings?
17:42:31 <elliott> ...no.
17:42:37 <Phantom_Hoover> THEN WHAT
17:42:42 <elliott> OK YOU HAVE INSUFFICIENT KNOWLEDGE TO APPRECIATE MY GENIUS SORRY
17:42:53 <elliott> A SADLY COMMON OCCURRENCE IN MY LIFE
17:43:22 <itidus20> i suppose that what i felt when sitting in my family room floor with a rug full of legos looking into the corner and imagining a tower, is what you feel when you play minecraft
17:43:39 <itidus20> hehe.
17:44:00 <Deewiant> elliott: Now make it work without --interactive ;-)
17:44:22 <elliott> Deewiant: Well that's the thing, I was running main from within GHCi
17:44:51 <itidus20> another of these childhood artistic visions was that i had this idea of carving a car out of wood... but not just a solid block car with the illusion of an interior
17:44:52 <elliott> *Main> do{ print "Hello, world!"; withInstance litD $ print "Hello, world!" }
17:44:53 <elliott> "Hello, world!"
17:44:53 <elliott> "Hello, world!"
17:44:53 <elliott> *Main> print "Hello, world!"
17:44:53 <elliott> "Hello, world!"
17:44:53 <elliott> *Main> withInstance litD $ print "Hello, world!"
17:44:57 <elliott> Hello, world!
17:45:00 <elliott> Deewiant: Wow, I broke monads
17:45:24 <itidus20> but a means to carve out the interior of a block of wood
17:45:41 <itidus20> somehow.. i felt a taste of mathematical magic in this primitive idea
17:45:45 <itidus20> as a child getting about
17:46:15 <elliott> Deewiant: I guess GHC makes unreasonable assumptions like only one instance per type :)
17:46:22 <itidus20> that it was somehow asking too much to carve the interior of a car out of wood
17:46:46 <itidus20> again.. computing provided the means to do it virtually.. again.. i never bothered :-s
17:47:27 <itidus20> also i thought slotcars were very very cool...
17:48:31 <itidus20> the natural progression of the slotcar to me was the ability to change lanes. i still think it is a problem that needs to be solved
17:48:48 <itidus20> so you can have something like the video game daytona usa except with slotcars
17:50:44 <itidus20> this tower.. it may have been inspired by the many towers of final fantasy 6
17:51:33 <itidus20> and perhaps star wars bases
17:56:02 -!- Sgeo has joined.
17:56:48 <itidus20> so theres this george lucasy way of exploring a space as seen in thx 1138 and the opening of starwars 4
17:57:05 <itidus20> and i don't think you really feel it much.. its very schizophrenic
17:58:00 <itidus20> i take it for granted, but it is as if his cameras are haunted by phillip k dick
17:58:10 <itidus20> or franz kafka
17:58:30 -!- Sgeo_ has quit (Ping timeout: 264 seconds).
18:04:48 -!- derrik has joined.
18:04:53 <elliott> Deewiant: Aha!
18:04:56 <elliott> main :: IO ()
18:04:56 <elliott> main = a >> b
18:04:56 <elliott> a = print "Hello, world!"
18:04:57 <elliott> b = withInstance litD $ print "Hello, world!"
18:04:58 <elliott> Deewiant: This works.
18:05:01 <elliott> Deewiant: Not in a where clause though.
18:05:31 <Deewiant> Not very robust now is it :-)
18:06:19 <elliott> Deewiant: I'm... not really sure what I can do about it; I suspect GHC has an instance cache type dealie that kicks in at the top-level declaration scope for whatever reason.
18:29:13 -!- augur has quit (Ping timeout: 240 seconds).
18:54:17 <itidus20> Phantom_Hoover: i just finished the video series
18:54:31 <Phantom_Hoover> It ended in tragedy.
18:54:42 <Phantom_Hoover> Noöne would buy the house so they unbuilt it.
18:55:20 <itidus20> my first thought is that what they need to do in future is to design a brick which is some degree more difficult to pull apart than it is to put together
18:55:38 <elliott> Phantom_Hoover: I would buy it.
18:55:56 <Phantom_Hoover> Yes, but this is related to the fact that you don't have enough money to.
18:56:13 <itidus20> this is the real appeal of minecraft isn't it
18:56:16 <elliott> Phantom_Hoover: Face it, I would spend money in the best way possible if I had it.
18:56:27 <itidus20> and.. perhaps df also
18:56:44 <itidus20> except he did it in real life
18:56:47 <itidus20> with lego voxels
18:56:48 <elliott> It might be the appeal of MC but probably not DF.
18:56:56 <elliott> DF isn't really about building something aesthetically appealing.
18:57:00 <itidus20> ok just mc
18:57:03 <elliott> Well, it is, but not aesthetically as far as visuals go, unless you're into that thing.
18:57:05 <coppro> mc is awesome
18:57:19 <elliott> now let's wait for the hilarious reveal where coppro is expanding mc to mean something different to the rest of us
18:57:25 <elliott> oOPS I RUINED IT
18:57:34 <coppro> ^
18:57:37 <Phantom_Hoover> Manilla cream?
18:57:39 <itidus20> so to repeat, my first thought is that what they need to do in future (for a real life minecraft) is to design a brick which is some degree more difficult to pull apart than it is to put together..
18:57:49 <elliott> Masturbation Club
18:57:54 <elliott> Mappers... Castration-arena?
18:58:02 <elliott> Mreally Clamepeople.
18:58:05 <coppro> elliott: math and computer
18:58:17 <elliott> that's the stupidest expansion of any acronym ever
18:58:19 <Phantom_Hoover> wat
18:58:54 <coppro> MC: the Math and Computer building at UW
18:59:15 <Phantom_Hoover> You guys have them in the same building?
18:59:25 <coppro> Phantom_Hoover: Computer Science is part of the Math faculty
18:59:57 <Phantom_Hoover> I'd approve if I didn't suspect that they don't just mean the mathsy bits of CS.
19:00:03 <itidus20> a garden of eden would be complete with lego bricks
19:00:16 <coppro> Phantom_Hoover: regrettably so
19:00:21 <itidus20> and exploding zombie types
19:01:03 <coppro> (the singular "computer" is not a typo)
19:01:07 <Phantom_Hoover> And then the serpent came unto Eve and said, approach that green frowny thing, for ye shall not be harmed.
19:01:22 <Phantom_Hoover> Computers science?
19:01:31 <elliott> Surgeons general.
19:01:34 <coppro> Phantom_Hoover: No. It got its name back when there was A Computer.
19:01:48 <coppro> The building housed Math, and the computer.
19:01:54 <elliott> [asterisk]the Math
19:01:57 <elliott> there was A Math then, too
19:02:10 <coppro> math is an acceptable abbreviation for mathematics
19:02:26 <Gregor> Computer Science has nothing to do with computers.
19:02:33 <Gregor> Therefore calling it "computers science" is nonsense.
19:02:43 <Phantom_Hoover> elliott, did you know that any sturgeons caught in British waters have to be given to the Queen, and as such a group of them is referred to as a Royal College of Sturgeons?
19:03:07 <Phantom_Hoover> `quote poultry
19:03:09 <HackEgo> 219) <Gregor> elliott: My university has two Poultry Science buildings. <Gregor> Two! \ 327) <Phantom__Hoover> Gregor, yeah, but Purdue has poultry science facilities beyond the dreams of avarice.
19:03:10 <coppro> [citation needed]
19:03:23 <elliott> Phantom_Hoover: I don't believe it, but I will henceforth act as if I did for the betterment of humanity
19:03:27 <elliott> Thank you for enriching my life.
19:03:39 <elliott> <Gregor> Computer Science has nothing to do with computers.
19:03:40 <elliott> <Gregor> Therefore calling it "computers science" is nonsense.
19:03:41 <Phantom_Hoover> elliott, courtesy of J.B.S. Haldane.
19:03:48 <elliott> Gregor: No more nonsense than calling it computer science
19:04:01 <Gregor> Yeah, it should be computational science or (my favorite) informatics.
19:04:08 <elliott> Gregor: Computing theory.
19:04:13 <coppro> ^
19:04:14 <elliott> It isn't a science.
19:04:16 <Gregor> elliott: But that's a subfield of computer science.
19:04:21 <Gregor> It /is/ a science.
19:04:31 <elliott> Gregor: No, theory of computation is a field of CS.
19:04:43 <coppro> *is a field of mathematics
19:04:51 <Gregor> elliott: I have reversed your "of" to form a synonym X_X
19:04:54 <elliott> coppro: CS is a branch of mathematics.
19:04:54 <Phantom_Hoover> Gregor, no it's not.
19:05:03 <Phantom_Hoover> Do you use the scientific method?
19:05:04 <elliott> CS is not a science; it is a branch of mathematics. That people incorrectly overlap it with SE is irrelevant.
19:05:12 <Phantom_Hoover> Are you trying to work out how computers function?
19:05:20 <elliott> Also the fact that you have machines that operate kind of like your theoretical ones is irrelevant, since calculators exist too.
19:05:30 <Phantom_Hoover> Calculator Science.
19:05:39 <elliott> That is henceforth what I will call mathematics.
19:05:44 -!- augur has joined.
19:05:46 <Gregor> Phantom_Hoover: The fact that there are layers of abstraction on top of it is the unfortunate (?) fact that engineering and science are merged in this field.
19:06:01 <Gregor> Phantom_Hoover: But the fact that I'm an engineer does not reduce the legitimacy of the field as a science.
19:06:15 <Gregor> That first sentence was weirdly formed :P
19:06:21 <Phantom_Hoover> Gregor, dude, it's not a science.
19:06:23 <Phantom_Hoover> Seriously.
19:06:37 <elliott> Gregor: That just means you do SE and CS; the former happens to be the applied version of the latter.
19:06:40 <Phantom_Hoover> In science, you have a complex system and try to model it.
19:06:47 <elliott> Engineers sometimes do mathematics, too :P
19:06:48 <Gregor> Phantom_Hoover: We did not invent computation. Computation is an extension of mathematics. You need to take some theory courses.
19:06:57 <Gregor> Phantom_Hoover: (Also, math is a science)
19:07:01 <elliott> <Gregor> Phantom_Hoover: (Also, math is a science)
19:07:01 <Phantom_Hoover> ...no.
19:07:04 <elliott> suddenly all credibility is lost
19:07:09 <Phantom_Hoover> Yeah, you have no idea what a science is.
19:07:27 <Gregor> lol
19:07:38 <elliott> "Science (from Latin: scientia meaning "knowledge") is a systematic enterprise that builds and organizes knowledge in the form of testable explanations and predictions about the universe.[1][2][3][4]"
19:07:52 <elliott> Things mathematics is not about: testable predictions about the universe.
19:08:14 <Gregor> Oy, this is so retarded.
19:08:31 <elliott> Gregor makes pedantic point about naming, reacts badly to further pedantic points.
19:08:40 <elliott> Novelisation, film in a few years.
19:08:57 <Gregor> Except that your pedantry is clearly not common opinion. See for example: THE NAME "COMPUTER SCIENCE" >_<
19:09:10 <elliott> Gregor: The name you think is nonsense
19:09:24 <Gregor> I said calling it "computerS science" is nonsense.
19:09:32 <elliott> <elliott> Gregor: No more nonsense than calling it computer science
19:09:32 <elliott> <Gregor> Yeah, it should be computational science or (my favorite) informatics.
19:09:44 <Phantom_Hoover> Gregor, funnily enough, I'm inclined to be prescriptivist with technical terms.
19:09:51 <Phantom_Hoover> Y'know, because it's *the entire point*.
19:10:11 <Gregor> elliott: ... lol. You and reading so much into things :P
19:10:44 <elliott> "Yeah" =/= agreement
19:12:13 <elliott> Gregor: But seriously, there's no way mathematics is a science.
19:20:08 -!- oerjan has joined.
19:20:34 <fizzie> http://en.wikipedia.org/wiki/Mathematics#Mathematics_as_science bla bla pro and con, neutral viewpoint, [who?] [citation needed] and so on.
19:20:51 <Gregor> lol, apparently my Purdue computer is prone to Totally Random Reboot Syndrome.
19:20:53 <Gregor> I shall determine the cause of this phenomenon ... with COMPUTER SCIENCE! lolololol*shot*
19:21:34 <Gregor> fizzie: <Literally every page on Wikipedia> bla bla pro and con, neutral viewpoint, [who?] [citation needed] and so on. :P
19:21:44 <elliott> Well let's see, Gauss is using a different definition of science to common English usage and is also a big ol' douche, "Gödel means mathematics isn't logic ergo science" is the most braindead shit ever... and the rest has nothing compelling at all.
19:21:55 <elliott> Except that universities sometimes group sciences and mathematics together.
19:21:59 <oerjan> Gregor: it cannot be real science if it's lolololol, sheesh.
19:22:05 <elliott> Which is compelling if by compelling you mean bulslhit.
19:22:08 <oerjan> you need *MWAHAHAHA* for that
19:22:23 <fizzie> Gregor: No, sometimes it's a direct copy-paste of some PR material.
19:23:14 <Gregor> This point is not worth arguing. Like, at all. We're so far into the pedantry rat hole that I can't see light and the air is stale.
19:23:31 <elliott> Gregor: Yeah, but which one of us is using up the hot air fastest?
19:23:40 * elliott is tooootally surviving this thing.
19:24:26 <elliott> so anyway http://esolangs.org/wiki/DPEMOFKOXM is the best language we've ever had
19:25:20 <Gregor> Lemme guess; Brainfuck, NOW WITH LETTERS
19:25:30 <Gregor> Oh, it's a quine.
19:25:39 <Gregor> The page conveniently includes its own interpreter.
19:25:41 <elliott> DPEMOFKOXM
19:25:59 <Phantom_Hoover> elliott, it's not a BF derivative, so it is significantly above angry.
19:26:14 <elliott> DPEMOFKOXM
19:26:34 <fizzie> Incidentally, there was a brain guy giving today's keynote speech. This Mitchell guy -> http://www.ccbi.cmu.edu/projects_neurosemantics.html -- and I have to add, "neurosemantics" is the fanciest term evar.
19:26:35 <elliott> Here I was about to DPEMOFKOXM out topic, but we have something actually serious in it for once!
19:26:42 <elliott> s/out/our/
19:26:49 <fizzie> Also they do mind-reading, they're like more than half the way to supervillainy there.
19:26:55 <Gregor> elliott: I had the same thought X-D
19:27:05 <elliott> Although I do wonder how many people here are in Finland and don't have some kind of bitter university-related rivalry going on that prevents them from caring.
19:27:13 <Gregor> elliott: I mean, we can't just go removing the pointers-lambda-calculus comparison.
19:27:14 <fizzie> Next they'll just pseudoinverse their matrices and do mind control. (What do you mean that's not how it works?)
19:27:27 <elliott> fizzie: please assemble relevant Finland statistics; thanks.
19:27:30 -!- Sgeo has quit (Ping timeout: 245 seconds).
19:28:24 <fizzie> I think our "rivalry" with the "UH" guys (best abbrv ev.?) is more of a friendly one than a bitter one.
19:28:37 -!- Sgeo has joined.
19:28:39 <oerjan> fizzie: it _might_ work that way, if the matrix represents the concept -> neuron map
19:29:12 <fizzie> oerjan: Well, they already pseudoinversed it, to make predictions of the neural activations for unseen words.
19:29:26 <fizzie> oerjan: Sadly the FMRI scanner will not suddenly start to control brains even if you inverse some matrices.
19:29:31 <elliott> fizzie: What if I hopped on the next plane to Finland and crashed the event.
19:29:34 <fizzie> oerjan: (At least I believe it will not. I'm no physicist.)
19:29:39 <elliott> Would you ban me?
19:29:48 <oerjan> it's a friendly rivalry, the reindeer head in your bed was just for amusement
19:30:34 <oerjan> fizzie: well you need to reverse the MRI rays too, duh
19:30:50 <fizzie> elliott: Oh hey, it says it's co-organized with our student organization too.
19:31:00 <elliott> fizzie: So would you... ban me...
19:31:10 <elliott> Also I'm glad that Finland unites for the cause of esolangs.
19:31:41 <fizzie> Is it even a thing you can crash? I mean, limited to any people?
19:32:07 <Phantom_Hoover> fizzie, how many Finnish people did you even bring here.
19:32:11 <elliott> fizzie: Weeeell, I'm an annoying little kid, and I doubt you're meant to enter through the window.
19:32:17 <elliott> Phantom_Hoover: Hey, that guy's the old list administrator.
19:32:19 <elliott> He found us independently.
19:32:21 -!- zzo38 has joined.
19:32:25 <oerjan> eek spiders in the roof.
19:32:30 <Phantom_Hoover> Who is?
19:32:39 <elliott> fizzie: Also if I spend all my time loudly rambling on about Feather's superiority they might get a bit annoyed.
19:32:40 <fizzie> Phantom_Hoover: atehwa, who's organizing that thing.
19:32:46 <elliott> Phantom_Hoover: The person who set the topic.
19:32:50 <elliott> Or that, yes.
19:33:19 <fizzie> I don't think I really bought anyone else to the channel. (Except maybe ineiros by copy-pasting the best bits to him. Maybe. I don't quite recall.)
19:33:20 <Phantom_Hoover> Guys why is it in Finland it should be in Edinburgh.
19:33:32 <elliott> I read that as "why is it called Finland it should be Edinburgh".
19:33:40 <elliott> A renaming which I wholeheartedly support.
19:34:14 <Phantom_Hoover> fizzie, so half the population of Finland ended up here of their own accord?
19:34:31 <elliott> Um, there are more Finns in here than there are Finns.
19:34:34 <elliott> I have been over this many times.
19:34:35 -!- Sgeo has quit (Ping timeout: 245 seconds).
19:34:41 <Phantom_Hoover> elliott, oh.
19:34:45 <oerjan> eviction complete.
19:34:56 <itidus20> one time when i was supposed to be studying at school i took out a book about finnish
19:34:56 <Gregor> Actually, esoteric languages convert people into Finns (if you're not careful).
19:35:07 <Gregor> Case in point -> itidus20.
19:35:10 <itidus20> i didn't learn much. i learned about the mysterious double-v
19:35:34 <itidus20> and i memorized two sentences "mika tama on? se on bussi."
19:35:41 <itidus20> haha.........
19:35:43 <fizzie> Phantom_Hoover: In particular I think I first "met" Deewiant here, even though I think he works in the same place.
19:35:44 <zzo38> I don't think they will convert people into Finns
19:36:09 <itidus20> also.... whenever i see a photo of finland it's always some wonderful wooden bridge going by a lake and trees
19:36:13 <Deewiant> fizzie: And you're correct.
19:36:16 <itidus20> ... haha....
19:36:19 <oerjan> *ceiling
19:36:36 <Gregor> itidus20: FIGHT IT
19:36:42 <Gregor> itidus20: FIIIIIIIIGHT
19:36:44 <itidus20> oh but theres one more thing
19:37:20 <itidus20> ieva's polka
19:37:27 <elliott> <itidus20> also.... whenever i see a photo of finland it's always some wonderful wooden bridge going by a lake and trees
19:37:33 <elliott> Deewiant: fizzie: confirm/deny description of Finland.
19:37:44 <coppro> confirm
19:37:45 <elliott> Actually not Deewiant he's never fun about these things.
19:37:51 <Deewiant> Confirm
19:37:53 <elliott> Oh
19:37:55 <Deewiant> Too late
19:37:59 <coppro> Norway is also entirely waterfalls
19:38:00 <elliott> I guess it really is like that
19:38:03 <elliott> "Huh."
19:38:04 <zzo38> In D&D game, I took one book from some office (probably the office of some evil potion maker). I have a lot of plan the use of this book in the game. (It can be eventually returned, if he survives and his office survives)
19:38:14 <itidus20> ieva's polka .. i'll link to the youtube
19:38:21 <elliott> I think we've all heard Ieva's Polka.
19:38:21 <oerjan> coppro: FALSE. we also have mountains for them to run from.
19:38:41 <oerjan> and fjords for them to run into.
19:38:41 <coppro> oerjan: that is part of "entirely waterfalls"
19:38:48 <oerjan> oh well ok then
19:38:54 <itidus20> try and close this song before the end of hte video.. go ahead and try: http://www.youtube.com/watch?v=1ygdAiDxKfI
19:39:05 <coppro> and the fjords don't count because they're bodies of water.
19:39:10 <elliott> itidus20: ok i will try
19:39:13 <coppro> Not that there's anything wrong with the fjords
19:39:18 <coppro> they are beautiful :D
19:39:21 <oerjan> coppro: but but they have infinite length
19:39:22 <coppro> and have won awards, I'm told
19:39:23 <elliott> closed at ten seconds in
19:39:24 <elliott> im magician
19:39:26 <Phantom_Hoover> Fjords are just a crappy imitation of firths.
19:39:27 <oerjan> (fractal facts 101)
19:39:43 <coppro> oerjan: fractal fjords?
19:39:45 <elliott> oerjan: cakeprophet doubted that coastlines were fractal earlier, the uncultured swine
19:40:11 <elliott> Phantom_Hoover: So how's that derived as an irth-form?
19:40:31 <elliott> Phantom_Hoover: Where the water stops going in /forwards/ because it's a body?
19:40:32 <Phantom_Hoover> It's when you stop going forth.
19:40:43 <elliott> Right.
19:40:47 <oerjan> elliott: *GASP*
19:41:56 <oerjan> first, go forth to the firth, forsooth.
19:42:41 -!- kmc has joined.
19:43:03 -!- zachk has joined.
19:43:15 <elliott> hi zachk
19:43:19 <zachk> hello
19:43:35 <itidus20> once i was innocently wandering around second life and someone approached twirling a leek which was emitting the sound of ieva's polka
19:44:00 <itidus20> it was only much later that i discovered the song outside of secondlife
19:44:00 <elliott> zachk: this is a channel about esoteric programming languages. sometimes.
19:44:00 <elliott> oerjan: hide the goats
19:44:12 * zachk nods his head
19:44:45 <Gregor> Hide the Finns!
19:45:05 <elliott> they're stealth finns
19:45:42 <Gregor> Oh good.
19:45:45 <cheater> you could say
19:45:48 <cheater> sealthinns.
19:46:05 <itidus20> and noone hates the finns :P
19:46:12 <Phantom_Hoover> The Russians do.
19:46:16 <Gregor> Damn you Noone!
19:46:21 <Gregor> Why you gotta be racist!
19:46:35 <Gregor> <Noone> screw finns they suck
19:46:36 <cheater> i didn't know finland was a race
19:46:48 <derrik> swedes think finns are weird
19:46:48 <lambdabot> derrik: You have 1 new message. '/msg lambdabot @messages' to read it.
19:47:01 <itidus20> ok so the russians do. thats more realistic
19:47:09 <itidus20> never say never after all
19:47:13 <Gregor> cheater: "Racist" is commonly used for ethnicities and heritages as well.
19:47:23 <elliott> But is racism a science?
19:47:33 <cheater> is it?
19:47:37 <cheater> why would it?
19:47:38 <itidus20> lets just pretend i didnt say noone hates them
19:47:42 <Gregor> elliott: It's an art!
19:47:42 <derrik> scientific racism comes close
19:47:43 <oerjan> finland is a big race to the bottom
19:48:22 <elliott> derrik: I would say one of the prominent features of scientific racism is being unscientific crap.
19:48:56 <derrik> that goes for many isms
19:49:08 <elliott> Doesn't make it a science :P
19:49:51 <derrik> generally, if you do lab tests, it is considered a science - if you tend to be materialist
19:49:58 <derrik> scientific racism is like that
19:50:01 <itidus20> it is difficult to live in a country which was founded by british convicts who arrived 200 years ago and cleansed and assimilated the native tribes..
19:50:27 <Phantom_Hoover> derrik, they don't let them do lab tests any more.
19:50:28 <itidus20> there is no meaning in it
19:50:31 <elliott> derrik: That's a rubbish definition.
19:51:12 -!- ais523 has joined.
19:51:13 <derrik> elliott: give a better one
19:51:26 <itidus20> ok its not as bad as i describe really :D
19:51:48 <elliott> derrik: A science is a field of research that meets the minimum standard of being better than terrible at meeting the scientific method.
19:51:57 <elliott> hi ais523
19:52:33 <derrik> elliott: there used to be a time when scientific racism was good enough.. so there
19:52:33 <ais523> hi
19:52:39 <derrik> stop being a racist now
19:52:47 <elliott> derrik: Whaddya mean by good enough
19:52:59 <zzo38> How many computers are there that use LFSR-based PC?
19:53:01 <derrik> as in better than terrible
19:53:11 <elliott> I doubt that :)
19:53:31 <itidus20> ok i have said too much and stirred up trouble.. i was going so well up till then
19:53:36 <Gregor> MEAT IS MOODER
19:53:43 <elliott> itidus20: When do you ever stir up trouble ever
19:53:55 <zzo38> The NES CIC uses LFSR-based PC.
19:54:22 <oerjan> itidus20: what do you mean stir up, no one even commented on it :P
19:55:06 <oerjan> itidus20 is the anti-troll
19:55:09 <itidus20> i am an n-dimensional vector... my life's mission is to orient myself to the correct "direction"
19:56:00 * itidus20 is basically kidding.
19:57:12 <itidus20> "A man from the Netherlands is being sued by RealNetworks for linking to a freeware application. The application, RealAlternative, is considered by some to be a competitive product to software from RealNetworks."
19:57:53 <elliott> is this the 90s
19:57:57 <itidus20> i have that installed
19:58:03 <elliott> so yes then
19:58:45 <itidus20> heh
19:59:02 -!- Phantom_Hoover has set topic: It is the 90s and there is time for Esolang event @ Hel/Finland on 3.10.2011: https://wiki.helsinki.fi/display/lambda/esoteeriset+ohjelmointikielet | I think pointers are considerably more useful than lambda calculus | http://codu.org/logs/_esoteric/.
19:59:03 <itidus20> yes some motherfuckers choose to encode things in real formats
19:59:17 <elliott> ais523: umm, wow, you know how you hate Ribbons?
19:59:33 <Phantom_Hoover> Ribbons?
19:59:34 -!- derrik has left ("better than terrible").
19:59:46 <Phantom_Hoover> Oh, the MS Word thing?
19:59:48 <ais523> elliott: the interface element?
19:59:52 <elliott> yep
20:00:07 <elliott> ais523: I might be coming around to your point of view; here's Microsoft's redesigned Explorer: http://i.imgur.com/pJcH5.png
20:00:13 <ais523> I don't so much hate them, I just think they're less efficient than toolbar+menu for no good reason
20:00:16 <elliott> a masterful trainwreck
20:00:29 <elliott> argh, what is taking up all my network pipe?
20:00:30 <ais523> their intended advantage seems to be discoverability
20:00:59 <ais523> wow, is that a crazy waste of screen space as well as requiring extra clicks for some actions
20:01:34 <elliott> ais523: bonus: "Here, they proudly overlay the UI with data from their research into how often various commands are used. They use this to show that “the commands that make up 84% of what users do in Explorer are now in one tab”. But the more important thing is that the remaining 50% of the bar is taken up by buttons that nobody will ever use, ever, even according to Microsoft’s own research. And yet somehow they remain smack bang in the mi
20:01:40 <elliott> ddle of the interface."
20:01:50 <itidus20> the problem with conlangs such as lojban and esperanto is they cheapen the value of language developing naturally
20:02:00 <elliott> i
20:02:16 <itidus20> oops i worded that bad
20:02:43 <itidus20> i mean, they lack what the non-constructed languages have in history
20:02:59 <ais523> elliott: see, as far as I can tell, you want to use a toolbar for one-click access to the most commonly used commands, and a menu for two-click access to more rarely used commands
20:03:19 <ais523> a ribbon's equivalent to toolbar+menu where the menu doesn't shut after you use it, it just stays covering the menu until you explicitly get rid of it
20:03:20 <elliott> obviously you want to use @ for everything, come on
20:03:31 <itidus20> it's the age old problem of over-engineering something.. or making something efficient and emotionally-void
20:04:17 <ais523> elliott: we currently don't have any idea on what @'s UI is, so we can talk about the relative merits of menus and ribbons with a clear concience
20:04:34 <elliott> ais523: maybe _you_ can.
20:04:46 <itidus20> uhhh... what am I saying? I am saying that i am a natural-language-anarcho-primitivist
20:04:49 <elliott> I know one important thing about @'s UI, and it's that it's perfect
20:05:08 <itidus20> or perhaps a natural-langage-neo-luddite
20:05:18 <ais523> elliott: I mean, you can say "A is perfect but I don't know what it is; B is imperfect, but better than C"
20:05:40 <elliott> anarcho-primitivists and neo-luddites, good role models
20:05:44 <elliott> by good i mean worst
20:06:20 <itidus20> but instead of applying the idea to technology(which i do sometimes) instead i am applying it to natural languages.. and the advancement of conlangs
20:10:05 <itidus20> elliott: yeah i heard the unabomber was one
20:10:09 <itidus20> not a good sign.
20:12:38 -!- kwertii has quit (Quit: bye).
20:15:01 <oerjan> yes you should take good role models such as mathematicians. ...oh wait...
20:22:36 <Gregor> Hey esopeople, what does this do on a 32-bit system (don't check, just guess): int x = 1234567890123L; if (x == 1234567890123L) printf("A\n"); else printf("B\n");
20:23:05 <elliott> Something wacky because this is C.
20:23:19 <elliott> Gregor: There's those rules about overflow in intermediate expressions, mayhaps they apply to == too.
20:23:23 <elliott> Pinging fizzie the language lawyer.
20:23:45 <oerjan> hm conversion rules...
20:23:51 -!- Sgeo has joined.
20:23:54 <Lymee> You need a laywer for C?
20:23:56 <Lymee> ...
20:23:57 <Lymee> Sounds about right.
20:24:11 <oerjan> Lymee: isn't that obvious.
20:24:29 -!- zachk has quit (Read error: Connection reset by peer).
20:24:31 <oerjan> the _sane_ thing would be A, i think
20:24:39 <oerjan> converting to the largest type
20:24:56 <oerjan> but i'm not a C lawyer so i'm not sure
20:25:14 -!- zachk has joined.
20:25:54 <oerjan> oh wait duh
20:25:58 <oerjan> B
20:26:15 <oerjan> x has already been truncated
20:26:35 <oerjan> so converting back won't give the original constant
20:26:40 <elliott> oerjan: um yes but the native integral type is that too
20:26:43 <elliott> so it should overflow then, as well
20:26:58 <fizzie> I would assume on a 32-bit system you would get some complaints about 1234567890123L, as it doesn't fit in a "long".
20:27:00 <Deewiant> In the ==, the x gets promoted to long
20:27:11 <Deewiant> In the =, the literal gets truncated
20:27:29 <oerjan> um won't long be 64-bit on a 32-bit system? i don't know that either :P
20:27:35 <elliott> oerjan: no
20:27:37 <oerjan> i was assuming so
20:27:37 <elliott> long is generally pointer-size
20:27:50 <oerjan> hm
20:27:53 <Deewiant> Oh right, small longs
20:28:12 <oerjan> is there even a difference between int and long then?
20:28:30 <fizzie> Not in value ranges; maybe in conversion rank.
20:28:38 <fizzie> I'm not sure it's a difference you could notice, though.
20:29:18 <fizzie> I'm not really a C lawyer; it's borderline possible that despite the suffix, integer constants automatically get a "long enough" type.
20:29:34 <oerjan> ok my official stance now is "i have no clue"
20:30:25 <oerjan> perhaps it's even undefined behavior
20:30:58 <elliott> I guess it prints B
20:31:02 <fizzie> "The type of an integer constant is the first of the corresponding list in which its value can be represented.
20:31:05 <elliott> Only because that's completely unintuitive
20:31:09 <fizzie> The list includes 'long long'.
20:31:09 <elliott> Which is the only reason Gregor would ask.
20:31:14 <oerjan> is EgoBot 32-bit or 64-bit?
20:31:32 <elliott> fizzie: Well hmph, if Gregor is relying on long long being sixty four bits then poo to him
20:31:36 <fizzie> If there is a "L" after it, the type is either "long" or "long long", depending on value.
20:31:45 <fizzie> And C99 "long long" is guaranteed to be at least that wide.
20:31:50 <oerjan> aha
20:31:54 <elliott> Hmm, fair enough
20:32:03 <elliott> Gregor: Yeah, it says B because mumble long long mumble.
20:32:10 <fizzie> So the x gets truncated in assignment, then promoted to 'long long' in the comparison, probably.
20:32:28 <oerjan> !help languages
20:32:29 <EgoBot> ​languages: Esoteric: 1l 2l adjust asm axo bch befunge befunge98 bf bf8 bf16 bf32 boolfuck cintercal clcintercal dimensifuck glass glypho haskell kipple lambda lazyk linguine malbolge pbrain perl qbf rail rhotor sadol sceql trigger udage01 underload unlambda whirl. Competitive: bfjoust fyb. Other: asm c cxx forth sh.
20:32:38 <fizzie> There was something *really* unintuitive in the automatic integer promotions involving signed and unsigned stuff, but I've forgotten what it was.
20:32:43 <oerjan> !c int x = 1234567890123L; if (x == 1234567890123L) printf("A\n"); else printf("B\n");
20:32:47 <EgoBot> B
20:33:27 <Deewiant> !c printf("%zu\n", sizeof(long));
20:33:29 <EgoBot> 8
20:33:43 <elliott> long is irrelevant here
20:33:50 <oerjan> !c printf("%zu\n", sizeof(int));
20:33:52 <EgoBot> 4
20:33:52 <elliott> int is thirty-two bit on linux/xeightsix-sixtyfour
20:33:57 <elliott> so the results should be accurate
20:34:05 <elliott> Gregor: what do we win?
20:34:07 <oerjan> !c printf("%zu\n", sizeof(long long));
20:34:09 <EgoBot> 8
20:34:13 <Deewiant> If L makes it a long long then it doesn't matter whether it's 32 or 64 bit
20:34:30 <fizzie> Notably the type of "2147483648" is "long long int" (assuming 32-bit int, long; >32-bit long long), while the type of 0x80000000 is "unsigned int", despite having the same value.
20:34:38 <elliott> Deewiant: Yes it does, because "int" matters
20:34:39 <oerjan> Deewiant: well what matters is that it doesn't fit in an int
20:34:48 <fizzie> (The rules are different for decimal constants vs. octal/hex constants.)
20:34:54 <Deewiant> All current systems I'm aware of have int <= 32-bit
20:35:04 <elliott> Deewiant: DING DING DING
20:35:07 <elliott> DING
20:35:08 <elliott> DING DING DING
20:35:09 <elliott> DING DING DING
20:35:11 <Phantom_Hoover> DING DING DING
20:35:14 <elliott> DING
20:35:16 <elliott> DING DING DING
20:35:17 <coppro> DONG
20:35:18 <elliott> DAMMIT WHERE IS THE WIKIPEDIA PAGE
20:35:22 <Deewiant> elliott: My point is, both 32 and 64-bit systems.
20:35:35 <elliott> DING DING DING
20:35:37 <Deewiant> elliott: Gregor specified "32-bit system" as though it made a difference
20:35:38 <elliott> http://en.wikipedia.org/wiki/64-bit#Specific_C-language_data_models
20:35:44 <elliott> Deewiant: Solaris/SPARC64, Unicos
20:35:50 <elliott> Bitchez
20:36:23 <fizzie> It's what you could call "real 64-bit for men".
20:36:24 <elliott> Heh, Unicos is Cray, and has sixty-four bit shorts. How completely unexpected.
20:36:39 <elliott> What is it with Cray and weird bit-widths?
20:36:59 <Deewiant> Alright, Unicos. Solaris/SPARC64 doesn't count as "current" :-P
20:37:02 <fizzie> I seem to recall that at least some of the stuff that Cray makes is completely word-accessible, and they fake CHAR_BIT == 8 with those funky "word + offset" pointers.
20:37:22 <fizzie> But maybe that's just older stuff.
20:37:39 <elliott> Deewiant: TBH I hate LLP64 and LP64
20:37:45 <elliott> Because int is C's Standard Type(tm)
20:37:59 <elliott> It really sucks to waste half of everything unless you write your program atypically, and that doesn't help with libraries
20:38:15 <Deewiant> People who write typically write stupidly
20:38:28 <elliott> Deewiant: Yep, but have you coded @ yet?
20:38:46 <Deewiant> It don't exist bro
20:39:06 <elliott> Deewiant: I was making a vague point about perfection vs. conventions and compatibility
20:39:51 <Deewiant> There's not much of a compatibility argument for using int everywhere, I find
20:39:55 <Deewiant> Maybe I just don't use enough C libraries
20:40:13 <elliott> int is a lot less typing than unsigned long for loop indexes :-D
20:40:21 <elliott> (Yeah yeah, typedef ulong)
20:40:23 <oerjan> hm today's iwc is unexpected. i was guessing they'd choose Me.
20:40:33 <elliott> oerjan: how close to the end is it
20:40:50 <oerjan> about 24 strips iirc
20:40:55 <Deewiant> elliott: size_t
20:41:15 <elliott> Deewiant: And ssize_t for all the values?
20:41:18 <elliott> Brillant
20:41:27 <Deewiant> ptrdiff_t
20:41:41 <elliott> ssize_t makes me vomit puppy blood. I mean, metaphorically.
20:41:49 <elliott> But maybe also literally in a sufficiently animal-themed OS.
20:42:06 <Deewiant> How often do you find yourself needing ptrdiff_t/ssize_t? :-P
20:42:14 <Vorpal> ssize_t is a nasty hack
20:42:28 <elliott> Deewiant: Every time I use any function returning ssize_t
20:42:28 <Phantom_Hoover> http://www.irregularwebcomic.net/cgi-bin/poll.pl
20:42:32 <elliott> I kill a few people when that happens
20:42:37 <elliott> Good to get the spirit cleansed
20:42:43 <Phantom_Hoover> 29% of people don't wear any form of footwear at home.
20:42:46 <Phantom_Hoover> Whaaaaaaaaaaaat
20:42:46 <ais523> err, http://esolangs.org/wiki/DPEMOFKOXM
20:42:50 <ais523> that isn't even spam
20:42:51 <elliott> ais523: do not delete
20:42:56 <elliott> do not modify
20:43:00 <elliott> in fact, protect it, if you can
20:43:07 <ais523> it isn't categorized correctly
20:43:13 <Vorpal> <oerjan> hm today's iwc is unexpected. i was guessing they'd choose Me. <-- could be changed. Like "no, that won't do"
20:43:13 <elliott> ais523: ah, but it is
20:43:23 <elliott> ais523: your error is presuming that any categories could possibly fit it.
20:43:25 <Vorpal> oerjan, anyway is it confirmed IWC is going to end?
20:43:28 <elliott> apart from maybe [[Category:DPEMOFKOXM]]
20:43:32 <ais523> elliott: I expect you to expand it into a full article about something ontopic for Esolang
20:43:44 -!- Sgeo has quit (Read error: Connection reset by peer).
20:43:45 <elliott> ais523: No, I'm just going to invent an esolang called [[Talk:DPEMOFKOXM]]
20:43:51 <elliott> It can be discussed at [[Talk talk:DPEMOFKOXM]]
20:44:00 <elliott> I'm sure you will agree this policy is reasonable + sane
20:44:03 <Vorpal> <Phantom_Hoover> 29% of people don't wear any form of footwear at home. <-- that is a lot
20:44:18 <elliott> Phantom_Hoover: And five percent wear shoes.
20:45:40 <oerjan> Vorpal: no, but i'm still worried about it, with DMM always complaining about lack of time for stuff...
20:45:49 <Vorpal> oerjan, ah...
20:46:03 <elliott> maybe I'll binge iwc after its INEVITABLE END
20:46:07 <oerjan> he might very well decide to stop iwc when he hits his milestone
20:46:25 <Vorpal> oerjan, true :(
20:46:33 <ais523> Vorpal: I don't wear footwear at home, partly because most of the time I spend at home, I spend in bed
20:46:37 <ais523> I do wear it everywhere else
20:46:43 <elliott> I find it kind of hard to conceptualise the idea of IWC ending, and that was a very ais523 thought apparently because I almost put a - between sort and of instead of a space
20:46:50 <elliott> It's like a constant force of nature
20:46:50 <ais523> except in a few extreme circumstances like swimming baths
20:46:56 <elliott> I find it relatively hard to imagine IWC starting
20:47:04 <ais523> I've never actually read IWC
20:47:06 <oerjan> ais523: someone mentioned that on the forum, and DMM said he hoped that wasn't the reason for the poll result
20:47:10 <Vorpal> ais523, I tend to use indoor-sandals in home during summer, and warmer slippers during winter.
20:47:26 <ais523> Vorpal: ah, I see
20:47:35 <Vorpal> (spring and autumn are undefined)
20:47:35 <ais523> I find default house temperature warm enough as it is
20:48:37 <elliott> socks are the only option; I don't know why I hold this rabid opinion but it's probably for some good tradition-related reason
20:48:38 <Vorpal> ais523, I live in an old house. It can get quite cold inside even with both fireplaces in use. I mean, in an old house, when it is -27 C outside, it will get a bit colder inside too.
20:48:41 <elliott> I trust Phantom_Hoover has the good taste to agree
20:48:58 <ais523> Vorpal: -27 outside is a little rare in the UK
20:49:12 <Vorpal> ais523, yeah
20:49:13 <elliott> what does -27 feel like, i'm not sure i understand temperatures that low
20:49:13 <Phantom_Hoover> elliott, I wear slippers, actually.
20:49:18 <ais523> I'm one of those people who is known to open the window even in winter
20:49:23 <ais523> elliott: -8 is about where I start feeling the cold
20:49:31 <Phantom_Hoover> I have mentioned that my breath mists indoors in May, right?
20:49:32 <Vorpal> ais523, it is not exactly common here either. But happened a few times during the last winter.
20:49:39 <ais523> -15 is the coldest I've been out in in just a T-shirt, and got shouted at for that
20:49:44 <ais523> and to be fair, in retrospect it was a mistake
20:49:48 <Phantom_Hoover> I was once on top of a glacier in shorts.
20:49:55 <elliott> Phantom_Hoover: How soft are they; also how many depictions of rabbits do they contain. (These are literally the only important aspects of slippers.) (Also yes I exaggerate my liking of rabbits to please the crowd, shut up.)
20:49:57 <Vorpal> elliott, open a freezer. It is -18 C or so iirc?
20:50:02 <Vorpal> then make it worse
20:50:07 <ais523> Vorpal: in the UK? probably not that cold
20:50:07 <Vorpal> elliott, stay inside for a while too
20:50:08 <elliott> Vorpal: freezers are pretty mild as far as cold goes
20:50:10 <Phantom_Hoover> elliott, they are soft but lack rabbits.
20:50:20 <Gregor> <Deewiant> elliott: Gregor specified "32-bit system" as though it made a difference // it does make a difference in how the code is compiled, although the result happens to be the same
20:50:34 <elliott> Phantom_Hoover: OK fine. (Some slippers are not soft and their prime purpose is to make you step on your own toes and go ow because they are not soft; these slippers are the enemy.)
20:50:39 <Vorpal> elliott, only because you don't stay inside them. And when you open them the warm air from the room quickly mix with the cold air inside.
20:50:44 <elliott> Gregor: I don't see why, all the types involved are the same
20:50:46 * oerjan is wearing woolen socks with cotton socks inside. and shorts, my body is weird...
20:50:57 <elliott> Vorpal: Well, I guess I'll visit one of you guys' cold countries some time to find out
20:51:15 <elliott> I can't imagine it's that bad though, because below a certain temperature my behaviour is constant
20:51:18 <Phantom_Hoover> elliott, how do you even step on your feet.
20:51:19 <Vorpal> elliott, well -27 C was like during a week in total during the last two winters.
20:51:26 <Phantom_Hoover> Also most places have warmer summers than the UK.
20:51:27 <elliott> ("Freak out and shake wildly and uncontrollably and gibber about death.")
20:51:30 <elliott> (I'm not kidding.)
20:51:41 <elliott> Phantom_Hoover: You step on your feet because the slippers that are not soft are also inevitably too big for some reason.
20:51:44 <Phantom_Hoover> So if you're looking for consistent cold, you're better just moving here.
20:51:53 <Phantom_Hoover> elliott, consider that you are merely a midget.
20:51:53 <Vorpal> elliott, so yeah not exactly common, but it happens often enough that it isn't a freak event you will never encounter again in your lifetime
20:51:55 <elliott> I think we can all agree that the ideal form of footwear is whatever the smurfs use.
20:52:02 <elliott> Wait, do they even wear anything or are they just partly white.
20:52:16 <itidus20> smurf cartoons = easy to find..
20:52:18 <itidus20> however
20:52:27 <itidus20> smurf comicbooks = very difficult to track down
20:52:35 <ais523> Phantom_Hoover: Scotland might indeed be superior to England for temperature purposes for me
20:53:11 <Vorpal> elliott, btw, I know someone who been in -50 C. He walked from a hotel to a house across the square. He said that his moustache hard frozen hard from the moist in the exhaling air when he reached the other side.
20:53:29 <elliott> that's his fault for having a moustache
20:53:32 <Vorpal> thankfully I never experienced that
20:53:36 <itidus20> Phantom_Hoover: i have now seen 2 episodes of james may's toy stories..
20:53:38 <Phantom_Hoover> ais523, it is annoyingly warm in the summer even then, though.
20:53:51 <Vorpal> elliott, what is wrong with facial hair?
20:53:51 <ais523> indeed
20:54:07 <Phantom_Hoover> This may simply because I wear a jumper in all conditions, though.
20:54:09 <elliott> Vorpal: Show me a moustache that is not terrible and I'll show you a moustache that doesn't exist.
20:54:13 <elliott> Also, they will be the same moustache
20:54:17 <Phantom_Hoover> elliott, handlebar.
20:54:29 <Vorpal> elliott, moustache + beard of course. Grown together.
20:54:30 <elliott> Phantom_Hoover: Your definition of terrible is inadequate.
20:54:47 -!- Sgeo has joined.
20:54:48 <Phantom_Hoover> elliott, dude.
20:54:51 <Phantom_Hoover> Ohwait.
20:54:53 <Phantom_Hoover> Of course.
20:54:57 <Phantom_Hoover> Moustache envy.
20:55:51 <fizzie> You can get a frozen-beard experience in something like -20 already.
20:55:54 <elliott> Actually my face seems to want to develop a moustache before any other kind of hair at all, which is really annoying because I look like a prick and can't really do anything about it.
20:56:04 <Vorpal> elliott, shave?
20:56:22 <elliott> Vorpal: It's not a moustache, it's a hint that one day there might be a fledgling moustache attempting to claim this spot :P
20:56:39 <elliott> I suppose I could, like, rip the top layer of skin off.
20:56:40 <Vorpal> elliott, anyway that is common, I got moustache first too. Took a few years until I got a proper beard.
20:56:56 <elliott> Yes OK but this one is a really annoying moustache you don't UNDERSTAND my face is ANTAGONISING ME.
20:57:07 <Vorpal> Still, not enough to grow a full beard. But then, why would I want to look like RMS
20:57:12 <Vorpal> (oh god)
20:57:25 <Phantom_Hoover> elliott, I... think that's the natural pattern of beard growth.
20:57:35 <elliott> Phantom_Hoover: Yes OK but MY MOUTH STRUCTURE IS ALL WRONG FOR IT OKAY
20:57:58 <Vorpal> Phantom_Hoover, you will get that too one day, remember.
20:58:09 <elliott> ONE DAY PH YOU WILL BE AS OLD AS ME, VORPAL, WISEST IN THE LAND
20:58:22 <Phantom_Hoover> Vorpal, no I am actually a woman.
20:58:28 <Vorpal> elliott, nah, I wouldn't say that. I'm probably only second or third ;)
20:58:44 <elliott> Phantom_Hoover: This explains everything! I think!
20:58:49 <Vorpal> Phantom_Hoover, ah, then it will take a couple of more years
20:58:58 <Vorpal> err, grammar fail there
20:59:10 <Phantom_Hoover> Vorpal has not seen a woman.
20:59:26 <fizzie> Also, speaking of beards! Here's a surprise visitor at the Interspeech 2011 opening ceremony: http://www.interspeech2011.org/photos/getimage+ip.php?id=809400295
20:59:27 <Phantom_Hoover> Or maybe he's only seen prepu— no, I'm not going down that train of thought.
20:59:55 <Vorpal> Phantom_Hoover, I'm talking about http://en.wikipedia.org/wiki/Bearded_lady
21:00:05 <elliott> Vorpal has that article bookmarked.
21:00:10 <Vorpal> elliott, no I googled it
21:00:19 <Phantom_Hoover> Vorpal cannot love anything without a beard.
21:00:20 <Vorpal> elliott, try it yourself, awesome website
21:00:21 <elliott> Maybe Vorpal is a dorf.
21:00:22 <Phantom_Hoover> He is also straight.
21:00:25 <elliott> He fits the stupidity criterion.
21:00:27 <Vorpal> Phantom_Hoover, XD
21:00:30 <Phantom_Hoover> elliott, female dorfs don't have beards.
21:00:38 <fizzie> (Also http://www.interspeech2011.org/photos/gallery.php?gallery=Sunday_28_August_2011 has three other photos of him about 1/4th down the page.)
21:00:40 <Phantom_Hoover> As such, his options are extremely limited.
21:00:48 <Vorpal> Phantom_Hoover, depends on which fictional setting.
21:00:50 <elliott> Phantom_Hoover: Goblins?
21:01:03 <Vorpal> Phantom_Hoover, NOW YOU KNOW WHY I ALWAYS LIKED DISCWORLD ;)
21:01:30 <oerjan> did anyone link http://gerrycanavan.files.wordpress.com/2010/12/phmf5.jpeg yet
21:02:00 <Phantom_Hoover> No, but I was considering it.
21:02:13 <Phantom_Hoover> elliott, yes, what about Riker's beard WHAT NOW
21:02:32 <elliott> Phantom_Hoover: what.
21:02:48 <Vorpal> oerjan, nice
21:03:04 <Phantom_Hoover> elliott, CHECKMATE
21:03:09 <Phantom_Hoover> UNO
21:03:26 <elliott> oerjan: I really don't think we need to supply Vorpal his fetish material.
21:03:32 <elliott> This channel is rated PG OK.
21:03:36 <Vorpal> elliott, XD
21:03:47 <Phantom_Hoover> elliott, especially after his search for SCSI porn.
21:04:17 <elliott> "scsi porn" gets upsettingly few results.
21:04:42 <Phantom_Hoover> <elliott> Phantom_Hoover: Goblins?
21:04:47 <Phantom_Hoover> Do goblins even have beards?
21:04:56 <Phantom_Hoover> elliott, you and Vorpal both, then?
21:04:59 <elliott> I don't know, but they sure are ugly.
21:05:02 <Vorpal> <Phantom_Hoover> elliott, yes, what about Riker's beard WHAT NOW <-- that would suit you in a few years
21:05:03 <Phantom_Hoover> SCSI must be one sexy interface standard.
21:05:23 <Phantom_Hoover> Vorpal, no I will not be objectified by you I am a Strong Female Character.
21:05:26 <elliott> Actually I literally just conceptualise goblins as Prequel-Gro-Upp, but I'm fine with that.
21:05:30 <elliott> Except stupider.
21:05:41 <Vorpal> <Phantom_Hoover> elliott, especially after his search for SCSI porn. <-- don't forget google image search on PCMIA rule 34
21:05:46 -!- zachk has left.
21:05:47 <Vorpal> (safe search off)
21:06:14 <Vorpal> Phantom_Hoover, then it would suit elliott
21:06:32 <ais523> rule 34 always struck me as cheating a bit
21:06:35 <Phantom_Hoover> Were you looking for a bearded lady taking male and female plugs to a whole new level?
21:06:39 <Vorpal> ais523, oh?
21:06:46 <Vorpal> Phantom_Hoover, XD
21:06:49 <elliott> maybe i should grow the longest beard ever grown
21:06:50 <oerjan> <elliott> oerjan: I really don't think we need to supply Vorpal his fetish material. <-- sorry i didn't see that part as i was busy trying to find the picture, and then to find a version which wasn't an unreadable jpeg
21:06:50 <ais523> 35 seems a more accurate description of those sort of things
21:06:52 <elliott> that would be fun
21:06:57 <elliott> like if i tripped over my own beard
21:06:57 <Vorpal> elliott, good luck
21:07:01 <ais523> (it's a corollary/exception to rule 34, "if it doesn't exist it will be made")
21:07:29 <ais523> elliott: growing a long beard is rather difficult and requires a lot of knowledge of beard mechanics
21:07:33 <elliott> ais523: you just need to be biblical about it; rule thirty-four is more of a statement about many worlds
21:07:35 <ais523> I never shave, but my beard naturally stays quite short
21:07:47 <elliott> in that, over time, the world approximates a world in which porn of everything exists
21:07:50 <ais523> precisely /because/ I don't shave, apparently
21:07:53 <elliott> driven by rule thirty-five
21:08:00 <ais523> elliott: indeed, that's why I think rule 34 is cheating/misleading
21:08:06 <Vorpal> ais523, anyway as far as I can tell, there was *no* porn on PCMIA when I checked. Thankfully.
21:08:07 <elliott> ais523: welcome to religion
21:08:09 <elliott> ais523: beard mechanics sounds like a good thing to get a phd in
21:08:15 <elliott> http://www.sikhiwiki.org/index.php/Longest_beard_in_the_world
21:08:18 <elliott> how can this be the longest?? wtf
21:08:20 <elliott> cartoons have lied to me
21:08:23 <ais523> Vorpal: perhaps because you can't spell PCMCIA?
21:08:27 <elliott> i thought there were relaly people whose beard stretches out in front of them
21:08:31 <elliott> : /
21:08:38 <Phantom_Hoover> elliott, the beard *is* longer than him.
21:08:43 <elliott> Phantom_Hoover: Yes but come on.
21:08:43 <Vorpal> ais523, err I didn't typo it then. I got pictures of PCMCIA cards so :P
21:08:45 <elliott> I mean enough to trip on.
21:08:46 <Vorpal> just no pron
21:08:48 <Vorpal> porn*
21:08:50 -!- kwertii has joined.
21:08:51 <Vorpal> gah that typo
21:09:08 <elliott> http://farm5.static.flickr.com/4002/4488411025_b5aa0b0874.jpg
21:09:17 <elliott> apparently this is what google thinks constituets PCMCIA porn
21:09:18 <Vorpal> elliott, Phantom_Hoover: the reason why I checked this was that I was trying to find something that had no porn made on it. :P
21:09:19 <elliott> it might even be right
21:09:29 <elliott> "I have a feeling of divine happiness and I am thankful that God has chosen me for the gift of the longest beard," said Singh, 42. The measurement was presided over by Surrey-Newton MLA Harry S Bains, Surrey RCMP Sgt. Baltej S Dhillon and lawyer Sukhjinder S Grewal.
21:09:35 <elliott> that's the best blessing i've ever heard of
21:09:43 <Vorpal> elliott, what length was it?
21:09:54 <Phantom_Hoover> Referring to Sikhs as 'Singh': the stupidest?
21:09:57 <elliott> seven feet or w/e
21:10:08 <Phantom_Hoover> It's like referring to Dutch people as 'van'.
21:10:11 <elliott> "The longest beard ever was grown by Hans Langseth of Norway, whose whiskers stretched an incredible 5.33 m (17' 6) when measured upon his death in Kensett, Iowa, in 1927. The beard was presented to the Smithsonian Institution, Washington, DC, in 1967."
21:10:13 <Vorpal> 2.1 meters. Impressive
21:10:17 <elliott> measured upon his death
21:10:17 -!- Labbekak has joined.
21:10:17 <elliott> awesome
21:10:19 <Vorpal> ah
21:10:25 <elliott> oerjan: props
21:10:27 <elliott> hi Labbekak
21:10:28 <Phantom_Hoover> Such as noted Dutch musician, Van Morrison.
21:10:32 <Labbekak> goodday
21:10:32 <elliott> we're talking about the longest beards.
21:10:37 <Phantom_Hoover> (If you don't know who he is you are fortunate.)
21:10:38 <Vorpal> elliott, and 5.33 m, wow
21:10:41 <elliott> Phantom_Hoover: "what are lambdas" --van
21:10:48 <ais523> help what is lambda
21:10:57 <elliott> ais523: scary, that's what
21:10:58 <Phantom_Hoover> ais523, the cosmological constant.
21:11:12 <Labbekak> lol i got to this irc through ais523 esolang page
21:11:18 <Vorpal> ah
21:11:23 <Vorpal> Labbekak, a bit off topic at times
21:11:25 <Labbekak> and hes online
21:11:25 <ais523> Labbekak: that's one way to get there
21:11:37 * oerjan thinks Labbekak sounds norwegian.
21:11:38 <ais523> going via the community portal is the usual way, but I'm glad my userpage is doing something useful
21:11:45 <ais523> are you here to discuss esolangs or report spam?
21:11:47 <Vorpal> Labbekak, like... a lot of the time. Though when esolangs come up that is generally discussed.
21:11:49 <Labbekak> its dutch :p
21:11:51 <elliott> discuss spam and report esolangs
21:11:52 <oerjan> ah
21:11:58 <Phantom_Hoover> Labbekak, ah, van.
21:12:02 <elliott> hmm, that's actually more fitting of what we do here
21:12:15 <ais523> heh, it actually is as well
21:12:17 <elliott> at least, i like to consider myself a spam connoisseur
21:12:24 <elliott> and there are certainly plenty of esolangs to whine about
21:12:27 <ais523> new esolangs typically get reported as being incredibly bad
21:12:28 <elliott> s/esolangs/bad esolangs/
21:12:33 <Labbekak> :p was just interested in what was going on here
21:12:37 <ais523> why have all the people who make good esolangs stopped?
21:12:47 <Vorpal> ais523, well go implement feather!
21:12:47 <elliott> ais523: because of all the people who make bad ones?
21:12:48 <Vorpal> ;)
21:12:54 <Phantom_Hoover> Because all the good esolangs have been made.
21:12:58 <ais523> elliott: I'm still waiting on a spec for My Name Is Johny
21:13:04 <Labbekak> so what are the ideas behind feather
21:13:08 <elliott> ais523: I'm working on it, I got distracted by Rezzo, which is similar
21:13:10 <ais523> don't ask
21:13:11 <Phantom_Hoover> Labbekak, you don't want to know.
21:13:14 <ais523> /please/ don't ask
21:13:16 <elliott> Labbekak: try reading the esowiki article, then never ask again
21:13:18 <elliott> it's inhumane
21:13:23 <oerjan> <Phantom_Hoover> It's like referring to Dutch people as 'van'. <-- well at least singh is a noun (meaning lion iirc)
21:13:25 <Vorpal> Phantom_Hoover, that raises an interesting question: While the set of possible esolangs is clearly infinite, is the set of good esolangs finite or infinite?
21:13:35 <elliott> ais523: honestly, I don't think production has slowed down, it's just that we get so much rubbish on the wiki at a higher rate than good esolangs have ever been generated
21:13:42 <ais523> could be
21:13:49 <elliott> ais523: catseye still churns out multiple languages a year, after all, and most of them are interesting
21:13:49 <Phantom_Hoover> Vorpal, given that it's a subjective thing, I'm going to go for "shut up Vorpal".
21:14:05 <elliott> Labbekak: (http://esolangs.org/wiki/Feather)
21:14:07 <Phantom_Hoover> come back cpressey we mmiss you
21:14:08 <ais523> the random sample experiment I did a year back showed that the majority of esolangs are not completely awful, still, if you take all esolangs ever written
21:14:24 <oerjan> <elliott> oerjan: props <-- wat
21:14:34 <elliott> oerjan: norwegian guy had the longest beard ever, five metres
21:15:46 <Vorpal> Labbekak, Feather is a language that allows you to retroactively modify the language itself.
21:16:31 <Labbekak> now i have to find out wat retroactive means
21:16:35 <ais523> Vorpal: you can start to get to Feather by following a sequence of perfectly logical steps, then start to realise the implications and stop thinking about it in a pre-emptive attempt to stop your head exploding
21:16:44 <ais523> Labbekak: making a change to something that happened in the past
21:16:58 <ais523> sort-of like time travel
21:16:59 <Labbekak> ah right
21:17:07 <Vorpal> ais523, ah, it is a bit like that 4D puzzle game I read about. But worse?
21:17:19 <elliott> comparing a four dimensional puzzle to feather?
21:17:21 <elliott> that's insulting
21:17:30 <Vorpal> ais523, anyway just use IOT to implement it.
21:17:30 -!- sllide has quit (Ping timeout: 245 seconds).
21:17:36 <ais523> elliott: not really, /all/ comparisons involving Feather are inaccurate
21:17:38 <ais523> I think, at least
21:17:40 <elliott> i don't think iot provides enough
21:17:45 <ais523> so it's no more insulting than any other comparison
21:17:47 <elliott> it just provides standard-issue time travel
21:17:48 <ais523> I think call/cc provides enough
21:17:55 <elliott> well, I mean
21:17:56 <ais523> the problem is proving it
21:17:57 <elliott> for easy implementation
21:18:02 <Vorpal> <elliott> that's insulting <-- true, but there are few other things to measure it against. Nothing as bad as Feather for a start.
21:18:54 -!- Sgeo has quit (Quit: Leaving).
21:19:03 <Vorpal> ais523, would it be possible to make a nerfed version of feather, then based on what you learnt from that make a better one and so on?
21:19:09 <Vorpal> learned*
21:19:22 -!- Sgeo has joined.
21:19:26 <ais523> Vorpal: that's how I'm going about it
21:19:40 <ais523> the thing is, as it's Feather, you can start with the first nerfed version and then retroactively change it into a full version
21:20:22 -!- monqy has joined.
21:20:24 <Vorpal> ais523, well yeah.... I was thinking about maybe a trial one that is more limited than that, to work out concepts and so on.
21:20:39 <oerjan> > map ord "DPEMOFKOXM"
21:20:40 <lambdabot> [68,80,69,77,79,70,75,79,88,77]
21:20:48 <Lymee> > ord "AB"
21:20:48 <lambdabot> Couldn't match expected type `GHC.Types.Char'
21:20:48 <lambdabot> against inferred type...
21:20:51 <Lymee> :<
21:20:57 <ais523> Vorpal: either it has the inherent concepts that make it Feather, or it doesn't
21:20:58 <Lymee> > ord "A"
21:20:58 <lambdabot> Couldn't match expected type `GHC.Types.Char'
21:20:59 <lambdabot> against inferred type...
21:21:04 <oerjan> > ord 'A'
21:21:04 <lambdabot> 65
21:21:17 <Labbekak> ord 'b'
21:21:20 <ais523> if it doesn't, then none of the problems involved in retroactive modification come up, so it won't help
21:21:25 <Lymee> > chr 65
21:21:25 <lambdabot> 'A'
21:21:29 <ais523> if it /does/, then it's a protoFeather
21:21:31 <Vorpal> ais523, ah hm
21:21:45 <Labbekak> > ord 'c'
21:21:46 <lambdabot> 99
21:21:47 <Vorpal> ais523, so there are no hard concepts that could be tested on their own as such?
21:21:47 <oerjan> i just thought it looked vaguely vaguely russian, so i wanted to check the characters :P
21:21:55 <Phantom_Hoover> ais523, I thought the tricky bit was stuff like infinite stacks of interpreters.
21:22:00 <Lymee> > map (chr . (+) 5 . ord) "Huggles for everybody! Even the elves!"
21:22:02 <lambdabot> "Mzllqjx%ktw%j{jw~gti~&%J{js%ymj%jq{jx&"
21:22:11 <Phantom_Hoover> lambdabot, DIE YO UBASATRD
21:22:28 <Labbekak> > "oke"
21:22:46 <Lymee> > map (chr . (-) 5 . ord) "Mzllqjx%ktw%j{jw~gti~&%J{js%ymj%jq{jx&"
21:22:47 <ais523> Phantom_Hoover: it's not really infinite, you just pick a finite number for the size of your stack, and if it's too small, you retroactively make it bigger
21:22:47 <lambdabot> "*Exception: Prelude.chr: bad argument: (-72)
21:23:01 <Lymee> > map (chr . (flip (-)) 5 . ord) "Mzllqjx%ktw%j{jw~gti~&%J{js%ymj%jq{jx&"
21:23:03 <lambdabot> "Huggles for everybody! Even the elves!"
21:23:04 <Phantom_Hoover> ais523, yes, I surmised as much.
21:23:15 <ais523> Lymee: just use (-5)
21:23:21 <ais523> rather than (flip (-)) 5
21:23:31 <Lymee> Okey
21:23:45 <Labbekak> thats Haskell right?
21:23:48 <oerjan> Labbekak: you had a space before the >
21:23:55 <oerjan> and yes
21:23:55 <Vorpal> :t (flip (-))
21:23:56 <lambdabot> forall a. (Num a) => a -> a -> a
21:23:59 <monqy> :t (-5)
21:23:59 <lambdabot> forall a. (Num a) => a
21:24:02 <monqy> hehehehehehe
21:24:10 <Vorpal> ah it is the binary -
21:24:12 <Vorpal> of course
21:24:12 <Gregor> Welp, I guess I need to make an esolang.
21:24:16 <monqy> :t subtract 5
21:24:16 <lambdabot> forall t. (Num t) => t -> t
21:24:22 <Gregor> It's been, what, five years since my last one? :P
21:24:23 <Vorpal> Gregor, sure you do
21:24:50 <monqy> Lymee: you want (subtract 5)
21:25:07 -!- kwertii has quit (Quit: kwertii).
21:25:14 <Labbekak> Gregor you made glass right?
21:25:19 <Gregor> Labbekak: Yeah
21:25:31 <Labbekak> cool :)
21:25:39 <Lymee> @pl \f -> map (chr . f . ord)
21:25:39 <lambdabot> map . (chr .) . (. ord)
21:25:48 <oerjan> <ais523> Phantom_Hoover: it's not really infinite, [...] <-- i had this small idea that you could maybe use something equivalent to haskell's repeat for the bottom level?
21:25:56 <Lymee> :t map . (chr .) . (. ord)
21:25:56 <lambdabot> (Int -> Int) -> [Char] -> [Char]
21:26:12 <Lymee> Yay obfuscation
21:26:35 <Lymee> @pl map.(chr.).(.ord)$+5$"Test"
21:26:35 <lambdabot> (line 1, column 18):
21:26:35 <lambdabot> unexpected "+" or "$"
21:26:35 <lambdabot> expecting variable, "(", ".", white space, operator or end of input
21:26:35 <lambdabot> ambiguous use of a left associative operator
21:26:36 <oerjan> ais523: - is the one operator you cannot section properly. but there is subtract.
21:26:38 <Lymee> :(
21:26:49 <Lymee> @pl map.(chr.).(.ord)(+5)"Test"
21:26:49 <lambdabot> map . (chr .) . (ord "Test" + 5)
21:26:53 <Lymee> Erm
21:26:56 <Lymee> > map.(chr.).(.ord)(+5)"Test"
21:26:57 <lambdabot> Couldn't match expected type `f (a -> GHC.Types.Int)'
21:26:57 <lambdabot> against infer...
21:26:58 <ais523> oerjan: the bottom level is just a function that retroactively adds more levels
21:26:59 <ais523> and oh, right
21:27:15 <ais523> fun fact about ICA: if you're applying a function f to -5, the syntax is, logically, f((-5))
21:27:23 <ais523> but I added an abbreviation which allows just the one set of parens
21:27:36 <ais523> (the unary minus operator is a circumfix (- ... ))
21:27:45 <elliott> <ais523> (the unary minus operator is a circumfix (- ... ))
21:27:46 <elliott> don't
21:27:53 <elliott> this has caused massive problems for haskell
21:28:10 <elliott> make it part of the number literal syntax for all that's good and holy, with a separate negate operator :P
21:28:17 <Sgeo> _?
21:28:19 <ais523> elliott: it's not -
21:28:24 <ais523> as in, -x
21:28:27 <ais523> it's (-x)
21:28:29 <ais523> with the parens
21:28:34 <elliott> or at least have it bind tighter than application
21:28:35 <ais523> this makes it very different from binary -
21:28:41 <elliott> ais523: well that's hardly better but okay.
21:28:45 <elliott> :P
21:28:46 <Sgeo> What's wrong with _ for negative?
21:28:50 <ais523> how it binds is irrelevant because there's only one way circumfix operators can bind
21:29:03 <ais523> Sgeo: it looks silly, and it's not commonly used enough to be worth wasting a single character on
21:30:26 <oerjan> unary - would be entirely sane if haskell didn't have sections.
21:30:37 <Phantom_Hoover> Sections?
21:30:40 <monqy> negate for negation, -5 for negative 5, x - 5 for x minus five
21:30:51 <Sgeo> Phantom_Hoover, (5*) etc
21:30:56 -!- FireFly has quit (Quit: FireFly).
21:30:57 <oerjan> > (+5) 2
21:30:57 <lambdabot> 7
21:31:03 <Phantom_Hoover> Oh, right.
21:31:11 <oerjan> > (-5) 2 -- >:)
21:31:11 <lambdabot> -5
21:31:31 <monqy> nice one
21:31:39 <Lymee> I don't get it.
21:31:45 <oerjan> that's because of lambdabot's special Num (a -> b) instance
21:31:53 <Lymee> @pl (-5) 2
21:31:53 <lambdabot> -5 2
21:31:55 <elliott> <oerjan> unary - would be entirely sane if haskell didn't have sections.
21:32:06 <elliott> f -9 should really do the obvious.
21:32:10 <oerjan> Lymee: don't trust @pl to get subtle syntax details right
21:32:15 <Lymee> =p
21:32:52 <oerjan> elliott: haskell does things inspired by math. f -9 is not common math notation. well admittedly neither is f 9.
21:33:02 <elliott> qed :P
21:33:10 <Phantom_Hoover> oerjan, does it?
21:33:17 <Phantom_Hoover> The syntax isn't very mathsy, really.
21:33:32 <monqy> math but better
21:33:39 <Phantom_Hoover> monqy, no
21:33:41 <Phantom_Hoover> you are bad
21:33:50 <oerjan> Phantom_Hoover: haskell's parsing of -x*y+z is exactly as math would do it
21:33:56 -!- Labbekak has quit (Quit: Page closed).
21:34:03 <oerjan> actually that's a bad example
21:34:11 <Phantom_Hoover> oerjan, sure, but that's just operator precedence any binding and all that.
21:34:14 <oerjan> -x^y+z is better
21:34:24 <monqy> y*-x+z
21:34:26 <Phantom_Hoover> :t (^)
21:34:26 <lambdabot> forall a b. (Num a, Integral b) => a -> b -> a
21:34:32 <Lymee> > (-(x^y+z))
21:34:36 <lambdabot> mueval-core: Time limit exceeded
21:34:51 <Lymee> :t \x y z -> (-(x^y+z))
21:34:52 <Phantom_Hoover> Um.
21:34:57 <lambdabot> forall a b. (Num a, Integral b) => a -> b -> a -> a
21:35:07 <Phantom_Hoover> Shouldn't that've just complained about unbound variables?
21:35:08 <oerjan> Lymee: that's another lambdabot feature, single letters are defined as that special Expr type
21:35:12 <monqy> doesn't math have like a ton of notations
21:35:13 <monqy> ......
21:35:14 <oerjan> Phantom_Hoover: ^
21:35:17 <Phantom_Hoover> Ah.
21:35:20 <Phantom_Hoover> :t x
21:35:21 <lambdabot> Expr
21:35:41 <Phantom_Hoover> > (-(xx^yy+zz))
21:35:41 <lambdabot> Not in scope: `xx'Not in scope: `yy'Not in scope: `zz'
21:35:53 <oerjan> and x^y loops because y isn't a number which is reduced to 0 by the usual recursive definition of ^
21:35:57 <oerjan> (i guess)
21:35:59 <monqy> e.g. f 9 seems a lot more like lambda calculus notation than math notation, anyway
21:36:34 <monqy> or would normal math notation not make a mess of parentheses when used in haskell
21:36:34 <Lymee> > map(reverse)([[1,2,3],[4,5,6]])
21:36:36 <lambdabot> [[3,2,1],[6,5,4]]
21:36:37 <Lymee> I can't believe it's not C!
21:36:44 <monqy> i can.......
21:36:48 * Lymee runs
21:36:57 <Lymee> Jokes. :V
21:37:03 <monqy> bad ones
21:37:12 <monqy> it doesn't look anything like c
21:37:17 <monqy> more like what python
21:37:31 -!- elliott has quit (Ping timeout: 245 seconds).
21:37:33 <Phantom_Hoover> What Python? August 2011.
21:37:37 <monqy> does javascript have that notation for lists it's been so long since I've used it
21:37:48 <Lymee> !python map(reverse,[[1,2,3],[4,5,6]])
21:37:49 <EgoBot> Traceback (most recent call last):
21:37:49 <Phantom_Hoover> Today: we compare the Burmese to the Boa.
21:39:09 <oerjan> monqy: ok haskell's notation isn't exactly the same as math, but basic arithmetic is the same wrt precedence, and that's not a feature that i think is frequently redefined in math subfields
21:39:28 <oerjan> (the _meaning_ of the operators is redefined, but not their syntax)
21:39:57 <oerjan> because rings and groups are used everywhere
21:40:04 <Phantom_Hoover> Indeed, the meaning is usually redefined to fit the syntax.
21:40:23 <Phantom_Hoover> Well, I guess it's more general semantics, but still.
21:46:22 -!- BeholdMyGlory has quit (Remote host closed the connection).
21:47:06 -!- kwertii has joined.
21:51:34 * Phantom_Hoover → sleep
21:51:35 -!- Phantom_Hoover has quit (Quit: Leaving).
22:01:53 <Sgeo> How much pain would I cause myself trying to implement something that's only partially continuation-passing style
22:03:20 -!- GreaseMonkey has joined.
22:05:09 <oerjan> i am thinking haskell could at least keep it sane if you use the ContT monad transformer to track the CPS-using parts
22:05:24 <oerjan> (just an idea)
22:05:54 <oerjan> or just Cont if the non-CPS-using parts are pure
22:22:52 <Sgeo> I didn't mean implementing in Haskell
22:23:08 <Sgeo> Although maybe if I studied the Cont monad, that would give me inspiration?
22:23:31 <Sgeo> But I am implementing this in LSL
22:23:40 <monqy> hehehe
22:25:11 <oerjan> no i'm meaning that if you used haskell, it might actually provide enough type security not to go mad while doing this >:P
22:29:18 <oerjan> trying to raise a continuation when there are intervening non-CPS parts would be disastrous, i think
22:29:36 <kmc> lots of programs use continuations without being in full CPS
22:29:46 <kmc> full CPS is pretty rare in human-written code
22:36:34 -!- ais523 has quit (Remote host closed the connection).
22:39:50 <Sgeo> Well, I'm planning on compiling to CPS or CPS-like
22:40:00 <Sgeo> But I want to avoid using continuations unless necessary
22:40:16 <Sgeo> For efficiency purposes. But it might complicate implementation
22:41:12 <Sgeo> On the other hand, full CPS would mean not needing to worry about ... what's the term for the stack of functions? call stack?
22:41:21 <oerjan> well afaiu you need to use CPS whenever you call something which might raise a continuation outside of it.
22:42:33 <kmc> yeah, you turn your call stack into a chain of closures in the heap, probably
22:42:47 <kmc> that's a known implementation technique, and it does simplify things
22:42:59 <kmc> but you pay for tracking that info one way or another :)
22:43:09 <kmc> it makes it easy to provide an actual call/cc primitive, for one
22:43:48 <Sgeo> I'm still a little uncertain how I'm going to handle memory
22:46:39 -!- CakeProphet has joined.
23:03:18 -!- cheater has quit (Ping timeout: 264 seconds).
23:07:03 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
23:26:48 -!- sllide has joined.
23:30:04 -!- cheater has joined.
23:46:34 -!- sllide has quit (Read error: Connection reset by peer).
23:56:21 -!- copumpkin has joined.
23:58:22 -!- CakeProphet has quit (Ping timeout: 240 seconds).
←2011-08-28 2011-08-29 2011-08-30→ ↑2011 ↑all