←2012-08-17 2012-08-18 2012-08-19→ ↑2012 ↑all
00:04:09 -!- aloril has joined.
00:07:31 -!- nooga has quit (Ping timeout: 245 seconds).
00:12:04 -!- DHeadshot has quit (Read error: Connection reset by peer).
00:54:29 <Sgeo> Oh hey, zzo38 posts on TheDailyWTF
01:02:00 -!- pikhq_ has joined.
01:02:03 -!- pikhq has quit (Ping timeout: 256 seconds).
01:13:25 <olsner> Sgeo: nice
01:14:42 <shachaf> s/posts on/is/
01:14:58 <olsner> o.O
01:16:05 <olsner> I think "the daily #esoteric wtf" is a separate category, fwiw
01:17:46 <Phantom_Hoover> TD#EWTF would only last until we ran out of BF derivatives, thoughl
01:18:00 <pikhq_> It would last forever.
01:18:15 <olsner> BF derivatives are too boring to make it to td#ewtf
01:18:44 <Phantom_Hoover> pikhq_, not on a daily schedule.
01:18:54 <Phantom_Hoover> They're not made that often, thankfully.
01:19:08 <pikhq_> Phantom_Hoover: They are created at a rate of one BF derivative per unit of time.
01:19:09 <olsner> it is true that zzo might not speak here every day
01:19:19 <pikhq_> Where units are arbitrary.
01:19:27 <olsner> one BF derivative per BF derivative
01:20:51 <olsner> it should be trivial to produce a BF meta-derivative that produces a new BF derivative for each unit of time
01:22:13 <olsner> THEY GAVE ME NO STRAW
01:22:48 <olsner> drinking is beneath me, yet I must for I have no straw
01:26:11 -!- derdon_ has joined.
01:26:36 <olsner> thinking, of course, of https://en.wikipedia.org/wiki/I_Have_No_Mouth,_and_I_Must_Scream
01:26:37 -!- derdon has quit (Read error: Operation timed out).
01:29:53 <olsner> incidentally, today I relearned where the Children of Bodom got their name from
01:29:54 <olsner> ... turns out the real story is less interesting than the one I made up and remembered earlier
01:33:04 -!- augur has joined.
01:35:07 -!- derdon_ has quit (Remote host closed the connection).
01:43:07 <kmc> "Boston man guilty of trying to rob the same Cambridge bank twice"
01:43:32 <olsner> since when is it a crime to rob a bank twice!?
01:44:15 <Phantom_Hoover> "Guilty! Of bank robbery, and double bank robbery!"
01:44:59 <kmc> but the constitution protects against double jeopardy!
01:45:37 <Phantom_Hoover> Ah, but he's being charged *three* times.
01:45:58 <Phantom_Hoover> Once for the first robbery, then twice for the double bank robbery.
01:51:26 <kmc> and he was caught by this guy: http://chainsawsuit.com/tag/two-cops/
01:52:15 -!- pikhq_ has quit (Ping timeout: 246 seconds).
01:52:20 -!- pikhq has joined.
01:58:30 <kmc> http://www.quickmeme.com/meme/3qizy6/
02:16:05 <Sgeo> http://paste.lisp.org/display/131085
02:16:57 <Sgeo> (defadt shape (square side) (circle radius))
02:17:07 <Sgeo> Expands into a shape class, with subclasses square and circle
02:17:25 <Sgeo> square has a slot side with reader square-side, and circle has a reader radius with circle-radius
02:17:42 <Sgeo> I should really make shape abstract somehow
02:18:13 <kmc> i never metaprogram i didn't like
02:24:05 <shachaf> Welcomeegan back to Boston!
02:24:57 <Sgeo> kmc, does that code prove I'm a Haskell addict?
02:25:54 <shachaf> Why do you care whether people think you're a Haskell addict?
02:26:00 <monqy> @ask elliott <Sgeo> kmc, does that code prove I'm a Haskell addict?
02:26:01 <lambdabot> Consider it noted.
02:27:18 <shachaf> @ask monqy welcome back to non-boston. noston
02:27:19 <lambdabot> Consider it noted.
02:27:32 <shachaf> I watched a movie today where a bunch of people had the last name "Parker".
02:27:46 <shachaf> Jack, Katie, Thomas, and Bruno.
02:27:49 <shachaf> No William.
02:28:09 <kmc> thankschaf
02:28:21 <FreeFull> No Peter?
02:28:52 <shachaf> Anytimeegan.
02:32:06 -!- oklopol has joined.
02:32:14 <oklopol> soup
02:32:32 -!- pikhq_ has joined.
02:33:09 -!- pikhq has quit (Ping timeout: 268 seconds).
02:34:07 <Sgeo> kmc, actually, I think Tcl is interesting even compared to Kernel, because even in things that in Kernel would be a operative, you can still dynamically construct arguments that the equivalent in Tcl wll end up seeing the result
02:34:26 <kmc> whee, internet at home became 3x as fast while i was away
02:34:53 <kmc> Sgeo: i don't understand
02:34:57 <psyk> kmc: What a shame..
02:36:07 <Sgeo> kmc, here's some code, first a normal use of if, and then dynamically constructing arguments to the if. I think I'm making it sound fancier than it really is
02:36:19 <Sgeo> if {1 < 2} {puts "Hello"}
02:37:00 <Sgeo> set somefunc {puts}; if {1 < 2} [list $somefunc "Hello"]
02:37:22 <Sgeo> That list command will be executed no matter what the if thinks. Yet, the earlier puts is not
02:42:32 <oklopol> so i discussed politics with this russian guy yesterday and he told me i have been brainwashed 100% liberal by the tv
02:42:55 <oklopol> so now i feel like i should learn what liberals think
02:43:05 <oklopol> and get a tv
02:43:44 <oklopol> at some point in the discussion he responded to something with "that's liberal propaganda based on the idea that the earth is the whole universe"
02:44:55 <oklopol> later, he said, rephrasing slightly, "the reason ethnic groups are the natural division between which wars and territory stuff happens is that they are the second largest concentric circle around you" (with the obvious interpretation)
02:45:42 <oklopol> so given that he himself introduced martians and just said this, i figured it made sense to ask if he thought nations would then become meaningless if life very similar to ours were discovered on the planets of our solar system
02:46:00 <oklopol> his response was that this question was isaac asimov's liberal propaganda
02:46:32 -!- TeruFSX has joined.
02:46:39 <oklopol> when i told him i have no idea who he is and kept asking him why he can't answer a natural question for 20 minutes, he finally said, very vaguely, that perhaps nations would become somewhat less meaningful
02:46:41 <oklopol> and then
02:47:00 <oklopol> he told me he has just said enough to get a 2 year prison sentence in russia.
02:47:56 <kmc> Sgeo: I don't know Tcl...
02:48:08 <kmc> i can't really just read some Tcl code and know what you're talking about
02:48:57 <Sgeo> if {1 < 2} {puts "Hello"}
02:49:04 <Sgeo> if takes two strings. {} is a string delimiter
02:49:10 <oklopol> funny thing being that he told me i've been brainwashed by the liberals behind tv programs, and can't think on my own. and he actually admits he is not allowed to think on his own, but that he still is still right and liberals writing the tv programs should be killed.
02:49:24 <oklopol> maybe i take crackpots a bit too seriously :D
02:50:42 <Sgeo> There are no special forms, and yet I can still dynamically make a string to be passed to the second argument to if
02:56:02 <kmc> so what do brackets mean
02:56:09 <Sgeo> {this is a string}
02:56:23 <kmc> [list $somefunc "Hello"]
02:56:25 <kmc> whatsat
02:56:56 <Sgeo> That executes the code in the brackets and sort of pastes in the result
02:57:05 <Sgeo> Except it's safer than merely pasting it in
02:57:16 <kmc> safer how?
02:57:21 <kmc> it does seem a bit like kernel, yeah
02:57:34 <Sgeo> It will still be one argument when passed in to the command, even if the result contains spaces
02:57:34 <kmc> i don't see the distinction you're drawing, though
02:58:03 <kmc> maybe i'm too tired or something
02:58:31 <Sgeo> Suppose you have an operative. How do you deal with the situation where you want to dynamically construct code to pass the operative?
02:58:38 <Sgeo> (In Kernel)
02:59:00 <kmc> you use eval
02:59:21 <oklopol> i think Sgeo means it's not just pasted in in that you can't get out of the if block?
02:59:28 <kmc> and it's hygenic because you eval a list like (<some-value-representing-an-operative> stuff)
02:59:32 <kmc> not (name-of-an-operative stuff)
02:59:52 <kmc> evaling a symbol does a name lookup, but an operative just evaluates to itself
02:59:56 <oklopol> oh maybe something deeper than that
03:00:10 <Sgeo> Or maybe I'm just thinking it's a bit easier in Tcl than Kernel
03:00:11 <kmc> ok maybe the hygeine point is not too relevant
03:01:14 <kmc> maybe so
03:01:44 <kmc> Sgeo: did you implement a kernel-like language and play with it yet?
03:01:56 <Sgeo> No >.>
03:02:06 <kmc> it's fun!
03:02:26 <kmc> the interpreter is super super small
03:02:31 <Sgeo> But I do think it makes more sense to do it Tcl's way than Kernel's way
03:02:36 <Sgeo> Even if the rest of Tcl is iffy
03:02:55 <Sgeo> Oooh, good comparison: Imagine a Lisp where, for things like if, you typically passed in quoted lists
03:03:23 <Sgeo> e.g. (if '(< 1 2) '(format t "Hello") '(format t "Goodbye"))
03:03:47 <Sgeo> That's basically the Tcl approach
03:03:55 -!- david_werecat has quit (Ping timeout: 246 seconds).
03:03:57 <Sgeo> In this scenario, if would be a function
03:03:59 <kmc> that's also basically the Kernel approach >_<
03:04:28 <oklopol> kernel uses strings too?
03:04:40 <kmc> no, but neither does that lisp example
03:04:43 <Sgeo> kmc, with quoting marking the call site? I thought the distinction was made at the function's level
03:04:56 <kmc> the quoting is implicit in every application
03:05:01 <oklopol> well that's my point, i assumed kernel did it the smart way
03:05:03 <oklopol> unlike tcl
03:05:14 <kmc> <Sgeo> Even if the rest of Tcl is iffy
03:05:49 <kmc> an operative gets unevaluated syntax trees of its arguments
03:05:56 <kmc> as if it were a lisp function and the arguments had been quoted
03:06:13 <kmc> but it also gets an argument for the environment at the call site
03:06:15 <Sgeo> But maybe I want to evaluate some of my arguments, use quasiquoting with others, and others unevaluated
03:06:18 <kmc> so that it can safely use 'eval' on those syntax trees
03:06:25 <Sgeo> That should be the choice of the caller, not the operative/applicative
03:06:28 <kmc> Sgeo: then you call 'eval' on some of those arguments and not on the others
03:06:42 <kmc> why should it?
03:06:56 <Sgeo> Seems more flexible
03:07:13 <Sgeo> Well, maybe not "more" flexible, but I think it would make a lot of sense like that
03:07:33 <kmc> i'm wondering now whether you can extend Kernel within the language to support the splice idea, like Tcl's [] or Template Haskell's $()
03:08:30 <kmc> it's basically just (eval env (quasiquote (... (unquote ...) ...)))
03:08:48 <kmc> but it would be good to have nicer syntax for this
03:08:49 <Sgeo> I should note that Tcl doesn't have quasiquoting, and that makes me a sad panda
03:09:14 <kmc> Tcl also uses strings :(
03:09:26 <kmc> because the idea that programs are structured data isn't really mainstream yet?
03:09:44 <Sgeo> Strings aren't a big deal if there's a nice way to take them apart and put them together
03:09:54 <Sgeo> Which in Tcl there is for a single command call but not for multiple :(
03:10:01 <kmc> yes, any structured data can be serialized >_<
03:10:12 <kmc> strings aren't a big deal so long as you have a parser and a printer
03:16:24 <FreeFull> In my IRC client I split the input from the server into lines and then into words
03:18:09 <Sgeo> kmc, pretty sure [] is different from Haskell's $()
03:18:18 <Sgeo> $() doesn't actually run the code immediately, does it?
03:19:22 <FreeFull> Tell me when Haskell does run code immediately
03:25:06 <kmc> Sgeo: it runs the code at compile time and splices in the result
03:25:36 <Sgeo> Ah
03:27:45 <kmc> at least this is GHC's implementation
03:27:59 <kmc> Template Haskell isn't in the language standard, anyway
03:28:18 <kmc> i would love to see Haskell without the compile/run-time distinction
03:28:29 <kmc> which would basically be a fusion of Template Haskell and GHC API into something much nicer
03:29:03 <kmc> at any point you could construct a Haskell AST, compile it, and get the resulting function as a value
03:29:16 <kmc> and hopefully this would be implemented with a clever JIT compiler
03:29:28 <kmc> which indeed could produce much better code than an ahead-of-time compiler like GHC
03:29:41 <FreeFull> I'm trying to write a prime sieve in Haskell and failing
03:29:49 <kmc> FreeFull: you and 10,000 other people
03:30:06 <kmc> i used to think JITs are a hack for languages which don't support efficient static compilation
03:30:14 <kmc> but actually a JIT can do crazy cool things a static compiler can't
03:30:27 <FreeFull> Like finding hot paths and optimising those?
03:30:54 <kmc> and optimizing with respect to assumptions which don't hold in general
03:31:11 <kmc> you just check the assumption and bail out to the interpreter if it's violated
03:32:00 <kmc> "this variable is usually true, let's assume it's true and then let's inline 10 functions together and constant-propogate them"
03:32:30 <kmc> with Haskell you have the possibility of eliminating a lot of "is this a thunk or an evaluated thing" checks
03:33:22 <shachaf> kmc: Did you see that someone was working on a Haskell tracing JIT?
03:33:22 <kmc> edwardk has thought this through more than i have
03:33:29 <kmc> i've just listened to him long enough to know that it would be awesome
03:33:34 <kmc> shachaf: was it edwardk?
03:33:37 <shachaf> No.
03:33:38 <kmc> oh
03:33:39 <kmc> link?
03:33:40 <shachaf> nominolo, I think.
03:33:42 <kmc> ok
03:34:21 <shachaf> http://www.haskell.org/haskellwiki/HaskellImplementorsWorkshop/2012/Schilling
03:34:50 <kmc> ah yeah, fusion and typeclass dictionaries
03:34:55 -!- heroux_ has joined.
03:35:04 <kmc> a JIT would help massively with those
03:35:24 <kmc> anyway that's cool
03:35:26 -!- heroux has quit (Ping timeout: 246 seconds).
03:35:32 <kmc> is this thing usable?
03:35:34 <shachaf> Well, it would also help with all the indirect jumps that GHC generates everywhere.
03:35:44 <shachaf> I don't know. I just heard about it recently.
03:35:50 <shachaf> I think it's still prototype-stage.
03:36:08 <shachaf> https://github.com/nominolo/lambdachine
03:37:15 <kmc> seems like every attempt to do something really cool GHC doesn't ends up bitrotting at the prototype / academic-quality stage
03:37:19 <kmc> i hope that doesn't happen here
03:37:23 <kmc> but it probably will :(
03:37:36 <kmc> the only hope is to get it merged with GHC
03:37:45 <kmc> which is how GHC is becoming an even bigger ball of mud
03:38:14 <kmc> there aren't that many people who care about Haskell and there are good reasons why the vast vast majority of them only care about GHC
03:38:18 <FreeFull> kmc: You can tell GCC which branch of an if will be taken more often and it will optimise with that in mind, but it's not automatic
03:38:47 -!- oklopol has quit.
03:38:49 <kmc> FreeFull: you can tell it to make records of which branch is taken more often, and then compile again using that data
03:39:22 <kmc> -fprofile-generate and -fprofile-use
03:39:23 <FreeFull> Which is still not the same as having it happen on the go
03:39:28 <kmc> right
03:40:19 <kmc> by attaching your research project to GHC you get a team of people who are obliged to care somewhat when your research project stops working on certain versions of Mac OS X for reasons which are uninteresting to your research
03:41:04 <shachaf> Man, I have a lot of projects I'd like to attach to GHC.
03:41:10 <shachaf> Most of them have nothing to do with Haskell, though.
03:41:52 <FreeFull> shachaf: Don't like macs? =P
03:42:11 <kmc> shachaf: Did you say Stripe is doing a new CTF soon?
03:42:18 <shachaf> kmc: Yes, they announced it.
03:42:20 <shachaf> Next Wednesday.
03:42:22 <kmc> cool
03:42:27 <shachaf> @google stripe web ctf
03:42:29 <lambdabot> http://news.ycombinator.com/item?id=4389229
03:42:29 <lambdabot> Title: '; CREATE TABLE `Capture the Flag`; -- Stripe CTF Web Edition coming next week' ...
03:43:07 <kmc> hmm, i bet i will learn more from this one
03:43:44 <shachaf> There's a large class of web vulnerabilities that don't fit into the normal CTF format very well, I think.
03:44:00 <shachaf> Anything that involves a logged-in user's browser, or something along those lines.
03:45:24 <kmc> yeah i am curious to see how it works
03:45:46 <kmc> will there be a level on how to cheat at Yahoo Poker circa 2002
03:45:53 <kmc> cause i would win
03:46:05 <shachaf> How do you cheat at Yahoo Poker circa 2002?
03:47:00 <kmc> rather than the server sending individual cards to the clients, it just sends the RNG seed used to generate the deck
03:47:24 <shachaf> Oh.
03:47:35 <kmc> so you can figure out what all the hidden cards are
03:47:42 <FreeFull> Lol
03:47:54 <kmc> if you can reverse engineer enough of the client
03:48:07 <kmc> which was not too hard, because it was a java applet and the bytecode was not sufficiently obfuscated
03:48:42 <kmc> sadly yahoo poker is fake money only
03:48:49 <FreeFull> There is no such thing as sufficient obfuscation
03:48:58 <shachaf> fake money = real internet points
03:48:59 <kmc> FreeFull: how do you figure?
03:49:30 <FreeFull> Ok, there is sufficient obfuscation as in obfuscated enough for nobody to ever bother
03:49:44 <kmc> "sufficient" is meaningless without a threat model in mind
03:50:16 <kmc> anything in obfuscation (and in security in general) is about making an attack expensive enough to mitigate the modeled threat
03:50:23 <kmc> there are very few absolutes
03:50:34 <shachaf> In this case sending the cards instead of the seed would be much simpler, of course.
03:51:02 <kmc> i was thinking about this today w.r.t. the shenanigans used to hide firmware within programmed chips
03:51:27 <kmc> even if it takes your competitor only one month of one skilled engineer's time to get around this
03:51:30 <kmc> it's pretty valuable
03:51:31 <FreeFull> The best way to hide firmware is for there to be no firmware
03:51:42 <kmc> FreeFull: the best way to survive is to die
03:52:09 <FreeFull> kmc: No, the best way to survive is to never be born
03:52:22 <kmc> if the product cycle is short enough then you don't need to hold off reverse engnieers for very long at all
03:52:57 <kmc> anyway you can reverse chips with no firmware, of course
03:53:30 <Sgeo> You know, all of Tcl's problems are a matter of what commands are available default
03:53:43 <shachaf> The goal with a lot of DRM, I understand, is to stop people from copying media just for the first N weeks when the majority of sales happen.
03:53:50 <Sgeo> By making a new standard library, I should be able to make a beautiful language
03:53:54 <kmc> http://visual6502.org/JSSim/index.html
03:54:09 <kmc> Sgeo: what about the fact that it uses strings for everything
03:54:12 <kmc> shachaf: interesting
03:54:15 <Sgeo> kmc, not a problem
03:54:46 <Sgeo> Just provide the means to make lists of lists from strings and the other way around
03:55:48 <kmc> shachaf: but i think that doesn't work either
03:55:57 <shachaf> kmc: Why not?
03:56:02 <kmc> i think it's more like "the first N weeks of the availability of a particular DRM mechanism"
03:56:19 <Phantom_Hoover> shachaf, I think it's also used to keep the resale market down.
03:56:34 <shachaf> kmc: With computer games, that might be the same thing.
03:56:41 <kmc> once you've broken CSS then you have all DVDs as soon as they come out
03:56:48 <Phantom_Hoover> Although that's a little odd for PC games because they don't have much of a market in physical sales.
03:56:59 <kmc> shachaf: maybe, i don't think they dream up a totally novel DRM scheme from scratch for every game
03:57:05 <kmc> yeah, resale is a thing
03:57:12 <kmc> man, the douche tricks people use to prevent resale
03:57:14 <pikhq_> shachaf: The people producing it hallucinate that they can stop it forever.
03:57:30 <kmc> textbooks which come with an "online learning" site that can only be used once
03:57:37 <kmc> and which the prof will make you use for some reason
03:57:46 <Phantom_Hoover> shachaf, SecuRom e.g. has been consistently used for quite a long time, although I don't know how quickly it adapts.
03:57:50 <kmc> pikhq_: do they?
03:58:03 <pikhq_> kmc: They seem to.
03:58:04 <kmc> or are we just caricaturing our opponents as stupid?
03:58:16 <FreeFull> DRM can go die
03:58:21 <pikhq_> kmc: Why caricature; our opponents came up with CSS.
03:58:25 <pikhq_> They clearly are stupid.
03:58:37 <kmc> i mean, the marketing people for the companies who make DRM are not exactly going to give an accurate assessment of its value
03:58:55 <kmc> CSS is super old
03:59:00 <kmc> and yeah it's dumb
03:59:11 <Phantom_Hoover> They're certainly not the calculating, cold schemers many make them out to be.
03:59:11 <Sgeo> Tcl needs quasiquoting, more acceptance of things merely being value (i.e. ternary if)
03:59:16 <Sgeo> Anonymous procedures
03:59:30 <kmc> or you could use a good language :(
03:59:41 <kmc> sorry just trollin' here
03:59:52 <Sgeo> kmc, these things are for the most part standard library level, not syntax level
04:00:12 <Sgeo> Biggest syntax level thing is that an arbitrary string can be a command only if made into one via interp alias
04:01:00 <pikhq_> Sgeo: You could very easily do your own Tcl-like...
04:01:17 <pikhq_> Doing a passable Tcl is like 500 lines of C.
04:01:35 <pikhq_> s/of C/of reasonably natural C/
04:02:06 <Sgeo> If I'm making my own language, a Lisp-like might make more sense
04:02:34 <pikhq_> But then you need a garbage collector.
04:02:56 <FreeFull> You can always make your C programs the include lines and then one huge one-line main function
04:03:38 <kmc> that much is well-known
04:04:23 <shachaf> There's a light switch here labeled "A20".
04:04:23 <kmc> there must be lisp-like languages with manual memory management
04:05:35 <shachaf> https://en.wikipedia.org/wiki/Game_Oriented_Assembly_Lisp ?
04:05:38 <shachaf> Oh, apparently not.
04:06:02 <Sgeo> Where everything is a function and you do control structures by passing them in lists
04:06:52 <FreeFull> In lambda calculus, everything really is a function
04:07:16 -!- monqy has left.
04:07:24 <kmc> yep...
04:10:12 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
04:14:03 <Sgeo> Why isn't Lisp done that way, exactly?
04:14:33 <kmc> which way?
04:14:43 -!- graue has quit (Quit: Leaving).
04:15:06 <kmc> with special forms as functions which take quoted arguments?
04:15:40 <FreeFull> Having numbers be functions is a bit silly
04:16:40 <itidus21> :DD
04:18:53 <Sgeo> kmc, yes
04:19:46 <kmc> well, Kernel is a Lisp done that way :)
04:20:03 <kmc> and operatives are like fexprs, which date back to some of the earliest Lisps
04:20:04 * Sgeo tends to disagree with that statement
04:20:37 <kmc> you need to be careful if you want lexical scoping
04:20:49 <kmc> many special forms are going to evaluate their arguments eventually
04:20:55 <kmc> they need to do so in the caller's environment
04:21:10 <kmc> that's why vau binds an extra variable to the caller's environment
04:21:13 <kmc> which can be passed to 'eval'
04:22:39 <Sgeo> Hmm. Have every function take the environment as an argument, maybe?
04:22:43 <FreeFull> Church numerals are pretty cool, but I don't think it's what you'd want to use most of the time
04:22:49 <kmc> that's how it works in kernel >_<
04:23:02 <kmc> for s/function/operative/
04:23:21 <Sgeo> But then which is evaluated when is the combiner's decision, not the caller's
04:23:31 <Sgeo> And it should be the caller making the choices
04:23:34 <kmc> but you can write a combiner which evaluates everything an extra time
04:23:38 <kmc> and then the caller can use quote
04:23:42 <kmc> and it's like lisp
04:24:00 <kmc> i don't understand why it's the caller's choice
04:24:14 <kmc> whether and when the various bits of a combination get evaluated is a critical part of the meaning of the combiner
04:24:20 <Sgeo> Because then the caller can choose to construct something to pass an operative as an argument
04:24:27 -!- pikhq has joined.
04:24:32 <kmc> yeah, you can do that fine with eval in kernel
04:27:51 -!- pikhq_ has quit (Ping timeout: 268 seconds).
04:28:24 <kmc> i think this is not a fundamental thing
04:28:43 <kmc> for any operative f you can make an operative g such that (f x y z) is always the same as (g 'x 'y 'z)
04:29:18 <kmc> that's what 'wrap' does, isn't it?
04:29:46 <kmc> so you can make a library for Kernel where 'if' and such work this way
04:30:31 <Sgeo> You can make a library in Common Lisp where if works that way too
04:31:01 <kmc> can you?
04:31:08 <kmc> what about getting the right environment for eval?
04:36:46 <kmc> one interesting consequence of Kernel's design is that environments are first-class objects
04:36:47 <Sgeo> kmc, possibly. Thinking about it
04:37:16 <kmc> if you provide the appropriate accessors and mutators for those objects, you can define things like 'define' and 'let' within the language
04:37:34 <Sgeo> Common Lisp has first-class environments, but I think they're opaque
04:37:49 <kmc> cool
04:37:53 <kmc> what are they used for?
04:38:40 <Sgeo> Um. I think macros get an environment parameter if they want, and not sure where they can be used
04:41:11 <Sgeo> They do see the lexical environment
04:41:16 <Sgeo> Not sure about dynamic environment
04:41:35 <Sgeo> http://paste.lisp.org/display/131088
04:42:14 <Sgeo> Presumably, to make the sort of if in CL that I want, would need a different way to define functions
04:42:32 <Sgeo> (Or just a get-env function, come to think of it)
04:43:01 <kmc> cool
04:46:34 <Sgeo> Apparently eval can't take an argument function)
04:46:44 <Sgeo> erm, an environment object
04:46:52 * Sgeo wtfs at "argument function"
04:47:20 -!- ogrom has joined.
04:47:59 <Sgeo> There should be an esolang based on the concept of "argument function"
04:49:54 <kmc> wouldn't that just be an argument that's a function?
04:50:42 <Sgeo> Hmm
04:50:58 <shachaf> kmc: Have you seen edwardk's Control.Lens?
04:51:08 <Sgeo> I was thinking more a function that specifies the arguments somehow
04:52:19 <Sgeo> <Sgeo> So, what _can_ I do with environment objects?
04:52:20 <Sgeo> <Bike> use them with macroexpand, basically.
04:53:10 <Sgeo> <Bike> if you really feel like doing bizarre things, try looking up cltl2. e.g., sbcl has some nonstandard functions that let you mess with environments more.
04:56:45 <kmc> shachaf: probably
04:57:25 <kmc> how do you use them with macroexpand?
04:58:16 <Sgeo> kmc, pass them in, I think
04:58:32 <shachaf> macroëxpand
04:58:42 <shachaf> macrøxpand
04:59:19 <Sgeo> I can imagine a macro without explicit use of environments that expands differently depending on lexical environment
04:59:43 <Sgeo> Or... even not that
04:59:54 <Sgeo> if presumably would... I think
05:00:16 <kmc> macrőexpand
05:01:16 <kmc> ah, ő is the accented version of ö
05:01:18 <kmc> makes sense
05:02:18 <shachaf> kmc: Hmm, ö + U+301 COMBINING ACUTE ACCENT doesn't produce ő :-(
05:03:25 <Sgeo> Ok, so that experiment did not work out
05:03:25 <kmc> heh
05:03:31 <kmc> well that's specific to hungarian
05:03:58 <shachaf> Combining character should take locale into account when they're rendered, obviously.
05:04:07 <kmc> :(
05:04:12 <kmc>
05:04:15 * shachaf should propose it to the Unicodemittee.
05:04:37 <shachaf> You already depend on locale for other things.
05:04:42 <shachaf> Like capitalization.
05:05:38 * Sgeo is trying to figure out when environments would make a difference to macroexpansion
05:06:19 <FreeFull> macroexpǻnsion
05:07:01 <Sgeo> Oh
05:07:02 <kmc> sleep, 'night all
05:07:18 <Sgeo> Well, macrolet and symbol-macrolet are also part of the lexical environment
05:14:55 -!- copumpkin has joined.
05:20:52 <shachaf> Oh, yay, g++ fixed a bug.
05:23:41 <pikhq> It also introduced a regression!
05:24:25 <shachaf> ?
05:24:38 <shachaf> pikhq: Remember the references-vs-pointers thing I was talking about here a few months ago?
05:24:42 <shachaf> I think it was with you, maybe.
05:24:54 <shachaf> Some inlining thing worked with pointers but not with references.
05:31:41 <Sgeo> Am I becoming a CL fan again? :/
05:35:47 <Sgeo> CL still does not have native continuations or coroutines, and I don't trust cl-cont
05:39:21 <atehwa> j
05:42:07 -!- mig21a has joined.
05:48:01 <atehwa> I think olsner's idea about a meta-brainfuck that produces new brainfuck derivatives is a good idea
05:48:24 <atehwa> should it produce new ones on the implementation or the specification level?
05:48:50 <atehwa> and if on the specification, what should be the specification language?
05:49:49 <atehwa> how to take as many different kinds of modifications into account as possible?
05:50:32 <atehwa> should bf be rephrased in some constraint-based language and then the constraints randomly modified? Cellular automaton, perhaps?
05:50:51 <atehwa> or string rewriting language?
05:51:48 <atehwa> or should there be some bf-specific specification language that makes the "typical" modifications, such as adding new state variables or commands, especially easy?
05:52:00 <atehwa> psyk: what do you think?
05:52:02 <psyk> atehwa: not much
05:52:05 <FreeFull> Oh, that reminds me
05:52:23 -!- pikhq_ has joined.
05:52:35 <FreeFull> I was thinking, is there a language which would basically be RLEfuck, which is brainfuck but RLE-compressed?
05:52:42 -!- pikhq has quit (Ping timeout: 252 seconds).
05:52:47 <FreeFull> So instead of writing +++++++, you'd just have 7+
05:52:54 <atehwa> bfjoust
05:54:21 <atehwa> I wonder if such a preprocessor could be easily specified in sed
05:54:21 -!- mig21a has quit (Read error: Connection reset by peer).
05:54:33 -!- mig21a has joined.
05:56:18 <FreeFull> Does sed allow repetitions?
05:56:39 <FreeFull> How would you use sed to turn 7+ into +++++++
05:59:16 <atehwa> s/7\(.\)/\1\1\1\1\1\1\1/g
06:00:16 <atehwa> I'm thinking about the rules that will turn 23+ into 2(++++++++++)3+
06:00:39 <FreeFull> Why would you want that?
06:01:27 <atehwa> it's not too much work to write separate rules for 1,2,3,4,5,... but if I have separate rules for all numbers, my program will be infinitely long
06:01:51 <FreeFull> Or you could not use sed for this
06:02:12 <atehwa> but being able to is reason enough to try :)
06:03:04 <FreeFull> What if you encounter something like 123+
06:03:29 <FreeFull> Back to infinite length
06:04:02 -!- mig21a has quit (Quit: Colloquy for iPhone - http://colloquy.mobi).
06:12:19 -!- pikhq has joined.
06:12:41 -!- pikhq_ has quit (Ping timeout: 268 seconds).
06:14:13 -!- copumpkin has quit (Ping timeout: 252 seconds).
06:14:54 -!- copumpkin has joined.
06:17:07 <Sgeo> "CLISP fully supports Unicode 3.2"
06:17:10 <Sgeo> How "impressive"
06:17:40 <FreeFull> Lol clisp
06:17:46 <FreeFull> The only good thing about clisp is libraries
06:21:20 <Sgeo> clisp has a lot of libraries? I though sbcl was generally the more popular implementation?
06:21:34 <Sgeo> Unless you thought that by "clisp" I meant "Common Lisp"
06:22:45 <FreeFull> Well, clisp is the GNU common lisp compiler/interpreter
06:29:41 <atehwa> FreeFull: yes, can be arranged
06:30:21 <Sgeo> FreeFull, apparently, CLisp can save images without dying?
06:30:24 <Sgeo> That's a good thing IMO
06:30:29 <atehwa> 123+ rewrites to 12(++++++++++)3+ which rewrites to 1({put 100 + here})2(++++++++++)3+
06:30:33 <Sgeo> Useful for a hypothetical LispNomic
06:30:43 <FreeFull> clisp doesn't even have tail recursion
06:30:54 <FreeFull> If it doesn't have tail recursion it's not a lisp in my book
06:31:03 <itidus21> hmmm
06:31:17 <Sgeo> FreeFull, so, Common Lisp is not a lisp. Good to know.
06:32:10 <itidus21> for a brainfuck tape with 256 possible values per cell, you only really need 256 substitutions
06:34:25 <Sgeo> Why am I looking at Let over Lambda
06:35:45 <itidus21> unless its one of those situations where 5+ is not the same as 261+
06:36:35 <FreeFull> itidus21: I'm thinking about brainfuck with bignum cells
06:47:16 -!- pikhq has quit (Ping timeout: 246 seconds).
06:47:24 -!- pikhq has joined.
07:01:38 <atehwa> psyk: I guess it figures
07:01:48 <psyk> atehwa: tiedoksesi: en ole britney-fani
07:06:23 <atehwa> itidus21: well, I don't know if it's a safe assumption to take :) A generic preprocessor will work whatever the use of the produced program will be.
07:08:29 <FreeFull> You might want 257. for some reason
07:08:53 -!- Vorpal has joined.
07:10:23 -!- oerjan has joined.
07:21:06 <itidus21> ok, well, the real reason i said that is i don't know sed
07:22:38 <itidus21> and that i couldn't do it
07:32:51 <Sgeo> FreeFull, atehwa check out BF-RLE
07:33:01 <Vorpal> Gah, switching between laptops where the fn and ctrl keys are swapped is so annoying
07:33:08 -!- mig22 has joined.
07:33:14 <Sgeo> Especially because I made it.
07:33:20 <Vorpal> I can get used to either, but it takes a couple of days each time I switch
07:35:39 <Sgeo> Note that I'm not the one who made the BF-to-BF-RLE script, which means people other than me liked it
07:35:42 -!- mig22 has quit (Remote host closed the connection).
07:35:48 <Sgeo> This has in fact gone to my head.
07:35:56 <FreeFull> Sgeo: Wow, base 62
07:36:03 <FreeFull> That's what I was thinking about
07:36:03 -!- mig22 has joined.
07:36:39 <FreeFull> "Replace each run of characters greater than 2 with the character then the number of times it appears minus 3 (e.g. +++ turns into +0). " Interesting rule
07:36:53 -!- mig22 has left.
07:37:14 -!- mig22 has joined.
07:38:17 <Sgeo> I hope you can see how that can occasionally save a character.
07:39:09 -!- epicmonkey has joined.
07:39:11 <FreeFull> With brainfuck? Yeah =P
07:39:12 <Sgeo> By making the lowest useful number 0, the run before it roles over to the next digit is larger
07:39:28 <FreeFull> That's not what I meant by interesting
07:39:37 <FreeFull> What's interesting is that ++ doesn't get RLEd
07:39:48 <FreeFull> I can see why though
07:43:01 <itidus21> thats a pretty good rule
07:43:28 <FreeFull> Except harder to code =P
07:43:32 <FreeFull> Only slightly though
07:43:50 <itidus21> what i'm seeing with this is that replacement is efficient
07:46:28 <itidus21> like it takes care of the fact that some characters won't need to be run length encoded, but it will rle them if they happen to bunch up
07:46:51 <Sgeo> Just thought of another possibility, except I haven't thought the implications through
07:47:11 <Sgeo> If the leading digit of a 2 or more digit number is implicitly increased by 1
07:47:22 <Sgeo> That is, 00 is 62
07:47:29 <itidus21> another good rule is realize tidus has never touched the esolang wiki... which says a lot about him
07:47:35 -!- pikhq has quit (Read error: Operation timed out).
07:47:44 <itidus21> he is best not paid much heed
07:47:55 -!- pikhq has joined.
07:47:56 <Sgeo> (And then of course add 3 to get number of times to place character down)
07:48:00 <FreeFull> Sgeo: That is pretty good
07:48:21 <Sgeo> Haven't thought implications through though
07:48:52 <Sgeo> At least sum numbers would have multiple representations
07:48:57 <Sgeo> That is probably inefficient
07:49:00 <Sgeo> *some
07:49:42 <itidus21> in biology, evolution is not elegant
07:49:58 <itidus21> everything is a kludge
07:50:05 -!- nooga has joined.
07:50:24 <Sgeo> Well, I would hope humans are better planners than evolution.
07:50:26 <itidus21> disclaimer: i know even less about biology than i do about esolangs
07:50:56 <itidus21> im just making this up. :(
07:51:26 <Sgeo> I'm not qualified to say what is and isn't a kludge, but humans can plan ahead, and evolution, to the best of my understanding, does not.
07:51:26 <FreeFull> Sgeo: Which numbers would have multiple representations?
07:51:58 <itidus21> Sgeo: well humans try to plan ahead :P
07:53:00 <FreeFull> Evolution does all sorts of dirty tricks
07:53:29 <itidus21> moore's law takes a heck of a lot of work to hold it up... a lot of late hours in many offices.. corporate mergers
07:53:43 <pikhq> FreeFull: No, evolution does precisely one trick. It's a very straight-forward hill climbing algorithm.
07:54:23 <itidus21> consumers too^
07:54:31 <Sgeo> zz = 64 * 63 + 63; 000 = 1 * 64^3
07:54:38 <pikhq> Its trick is just letting beneficial changes stick around.
07:54:45 <Sgeo> Uh, I have to be wrong
07:54:57 <pikhq> Everything else is just a thing that was a beneficial change.
07:55:34 <Sgeo> Wait, no
07:55:37 <Sgeo> That proves my point
07:56:06 <Sgeo> Since 000 is smaller than zz, 000 is representable as a two-digit number
07:56:57 <Sgeo> ...wait, 000 is larger than zz, hence my stating that I must be wrong
07:57:14 <Sgeo> Wait, I'm mis...multiplying zz
07:57:42 <Sgeo> Wait, I was close enough
07:58:09 * Sgeo is a bit confused at the moment
07:58:32 <Sgeo> Oh, I think I misdid zz
08:00:39 <itidus21> if we are evolving, and if we are studying evolution, then surely something will happen
08:01:13 <Sgeo> zz = (63+1) * 64^1 + 63 * 64^0; 000 = (0+1) * 64^2 + 0 * 64^1 + 0 * 64^0
08:02:05 <Sgeo> zz = 4159; 000 = 4096
08:03:42 <Sgeo> 000 is smaller than zz, therefore, there are some numbers, those numbers between [4096, 4159], that have two representations.
08:04:07 <FreeFull> You're calculating 000 wrong
08:04:20 <FreeFull> 000 should be zz + 1
08:04:29 <FreeFull> Whatever zz ends up being
08:04:54 <Sgeo> That would require a different definition for my system
08:04:57 <Sgeo> Hmm
08:05:03 <Sgeo> But yes, that's ideal
08:06:38 * shachaf has never touched the esolang wiki.
08:06:42 <shachaf> What does that say about me?
08:07:40 <Sgeo> BRB. When I get back I'll think about it more but I have an idea
08:14:08 <itidus21> it says nothing!
08:16:17 -!- mig22 has quit (Quit: mig22).
08:19:23 -!- AnotherTest has joined.
08:25:16 <Sgeo> Let's think in binary.
08:25:30 <Sgeo> 0 = 0. 1 = 1. 00 = 2.
08:25:47 <Sgeo> In fact, it's more elegant if all digits obeyed the rules, whatever they are
08:26:17 <itidus21> well, one may ask what is a thought
08:27:08 <Sgeo> = 0. 0 = 1. 1 = 2. 00 = 3. 01 = 4. 10 = 5. 11 = 6. 000 = 7.
08:27:25 <Sgeo> hmm
08:28:33 <itidus21> and.. its probably better if people like me don't ask questions like that
08:30:04 <oerjan> itidus21: i'd be worried more about your second thoughts than your questions if i were you
08:30:59 <oerjan> well if i was a perfect version of me who was also you
08:31:02 <itidus21> i am delusional. i can't trust my own conclusions
08:31:21 <oerjan> itidus21: but you realize _that_ is _also_ a delusion?
08:32:02 <oerjan> and one that upholds your incompetence, in a self fulfilling prophecy.
08:32:21 <oerjan> he said, hypocritically.
08:33:06 <itidus21> anyone who has showered in the last few months has some authority on the topic
08:33:43 <oerjan> WHAT DO YOU KNOW ABOUT MY SHOWERING
08:33:57 <psyk> oerjan: I know that now both of us has made an error in grammar. or fwe.
08:34:06 <FreeFull> Sgeo: It seems to be a power of 2 - 1
08:34:16 <oerjan> psyk: NONESNES
08:34:19 <psyk> oerjan: mit siit?
08:34:38 <itidus21> suddenly i noticed that video card on my desk says highly commended by pc authority magazine
08:34:42 <itidus21> ^box of
08:34:45 <oerjan> i'm not finnish
08:34:49 <FreeFull> 111 = 14 0000 = 15
08:34:50 <psyk> oerjan: I want to kill somebody.
08:35:08 <Sgeo> Is psyk from Mezzacotta?
08:35:24 <oerjan> Sgeo: well the evidence seems inconclusive so far
08:35:41 <FreeFull> Sgeo: A sequence of 1s is always worth twice the same-length sequence of 0s
08:36:56 <itidus21> oerjan: at some point i abandoned common sense
08:37:13 <Sgeo> This channel is now officially mezzacotta.
08:37:33 <oerjan> itidus21: hey me too!
08:37:55 <itidus21> oerjan: but ... common sense seems to be relative to a given level of perspective
08:38:10 <oerjan> yes. a relatively common one...
08:38:20 <oerjan> which is nevertheless almost certainly wrong.
08:38:41 <oerjan> but may be better than some of the alternatives
08:39:20 <itidus21> like.. the sorts of things conspiracy theorists worry about probably do occur in matters of security
08:39:51 <oerjan> some of them. maybe.
08:41:26 <itidus21> like, for example, false flag operations are a known warfare or political tactic, and are based on creating false perceptions..
08:41:59 <Sgeo> So what's the best way to describe what each digit does?
08:42:10 <itidus21> so, at some point, people are being fed systematic lies
08:42:31 <itidus21> and someone is funding it
08:42:41 * oerjan is starting to regret this conversation, as expected.
08:43:38 <itidus21> with all those kinds of tactics at play, it's not really possible that things are what they seem
08:43:56 <oerjan> more importantly, my intuition keeps telling me not to argue.
08:44:33 <itidus21> apparently i have anxiety
08:44:46 <oerjan> while my common sense is screaming to say "you cannot conclude much from mere _existence_ without considering _prevalence_
08:44:49 <itidus21> that seems to be the angle my psychologist is taking
08:44:50 <oerjan> "
08:45:36 <itidus21> not actually paranoia or delusion, but anxiety
08:45:53 <Sgeo> oerjan, if X exists, you can conclude that it is not true that X does not exist.
08:46:00 <oerjan> Sgeo: *GASP*
08:46:17 <fizzie> Sgeo: I haven't been following, but if you had value(s) = 2^len(s) - 1 + bin(s) like I thought I saw, where s is the string and bin(s) is the binary value, it doesn't sound all that reasonable to ask what each digit alone is doing. It's not exactly a positional system, after all.
08:46:24 <itidus21> which is why i suppose i cant just sit in here, and chill
08:47:50 <oerjan> anxiety is evil :(
08:47:52 * Sgeo isn't even entirely sure if what fizzie just describes describes it accurately
08:48:24 <itidus21> oerjan: he didn't say it directly, but when i used words like paranoia, he was saying how paranoia is a specific thinking process
08:48:57 <itidus21> btw its all free in australia.. that is.. i bulkbill nearly all my medical care.. maybe because people like me
08:49:04 <itidus21> :D
08:49:26 <oerjan> well most is free in norway too
08:49:29 <fizzie> Sgeo: If "0"^n is always 2^n - 1, and you go in the usual order from that, I'd say the value kind of has to be what I mentioned.
08:49:30 <itidus21> yay
08:50:03 <fizzie> Sgeo: Alternatively speaking, it's just like having an implicit "1" in front and then doing a -1 to bias "" (i.e. 1) to 0.
08:50:39 <Sgeo> hm
08:51:07 <fizzie> "000" -> 0b1000-1 -> 8-1 -> 7; "111" -> 0b1111-1 -> 15-1 -> 14 and so on and so forth.
08:51:46 <oerjan> <Sgeo> = 0. 0 = 1. 1 = 2. 00 = 3. 01 = 4. 10 = 5. 11 = 6. 000 = 7. <-- was this the system?
08:52:17 <Sgeo> Yes
08:52:40 <Sgeo> (not the system when discussing zz before)
08:53:20 <itidus21> so about evolution, what i was thinking was, there are patterns in nature. and in response to these non-chaotic patterns, it's possible to have optimized solutions
08:53:30 <oerjan> hm right, that's 2^len(s) - 1 + bin(s) indeed i think. where 2^len(s) is just adding an initial 1.
08:54:25 <oerjan> oh fizzie already said both parts
08:54:28 -!- mig21a has joined.
08:55:16 <itidus21> but a temporary solution which is built depending on circumstances isn't much use if the circumstances change
08:56:04 <oerjan> itidus21: which is why _very_ strongly adapted species tend to die out in environmental upheave, while more flexible ones then take over
08:56:08 <oerjan> afaiu
08:57:06 <itidus21> so.. that is the spirit of the words i had in mind when i said everything in evolution is a kludge
08:57:08 <oerjan> perhaps this explains the gradual development of intelligence - it's a form of extreme flexibility
08:57:48 <oerjan> after many mass extinction, the survivors tended to be more intelligent. or maybe that's just my impression.
08:57:52 <oerjan> *s
08:58:01 <Sgeo> There's no point in using the Y combinator in Common Lisp, is there?
08:58:08 <itidus21> one thing though which i ponder is why life needed to become more complex
08:58:44 <itidus21> i don't see why it wasn't sufficient for microorganisms to remain microorganisms
08:59:17 <itidus21> but.. having said that i don't know the longer story of life on earth
09:00:51 <Sgeo> (defmacro lambda-let (name arglist &body body) `(labels ((,name ,arglist ,@body)) #',name))
09:00:51 <fizzie> oerjan: It (if I assume the obvious extension) seems a bit more complicated for bases other than 2, though; for base 4, "" -> 0, "0" -> 1, ..., "3" -> 4, "00" -> 5, ..., "33" -> 20, "000" -> 21, ..., "0000" -> 85 and so on. (Or "0"^n -> sum_{i=0..n-1} 4^i in general, since there's a gap of 4^i between "0"^i and "0"^(i+1).)
09:00:55 <Sgeo> ^^completely untested
09:01:00 <oerjan> itidus21: well it took almost 4 billion years of life before the macroorganisms started really developing. so presumably the conditions had to be just right to make that advantageous.
09:02:11 * itidus21 clutches at the air as if to express dramatic frustration. but theres always that question of why
09:02:11 <oerjan> itidus21: perhaps it's another case of the anthropic principle: macroorganisms _don't_ usually develop, but the planets without them don't have intelligent species to discuss why they didn't.
09:02:46 <oerjan> because evidence is that life itself arrived on earth _fast_, but macroorganisms didn't.
09:02:50 <itidus21> hmm.. ok ill say it tis way
09:02:56 <itidus21> ^this way
09:03:45 <itidus21> since unevolved life is just as alive as evolved life, then hte purpose of evolution is counter intuitive
09:03:53 <oerjan> itidus21: there was probably btw this period just before called "snowball earth", a global ice age. perhaps the organisms had to cluster to survive it.
09:04:22 <oerjan> (well, it's theorized that it may have been global)
09:04:53 <itidus21> ah
09:05:44 <oerjan> fizzie: hm
09:07:07 <oerjan> itidus21: btw some _define_ life as anything that is capable of undergoing darwinian evolution
09:07:32 <Sgeo> Norns are alive!
09:07:49 <itidus21> so the relevance to esolangs is, that code is like and problems ... programmers write code to survive problems their bosses give them
09:07:59 <fizzie> Sgeo: The Norns are alive with the sound of music.
09:08:27 <itidus21> so a programmer's state is his codebase
09:09:20 <itidus21> but bosses survive by being more demanding in response to the programmers increasing codebase
09:10:49 <itidus21> ... im gonna just leave it there
09:49:13 -!- TeruFSX has quit (Ping timeout: 244 seconds).
09:54:13 -!- Phantom__Hoover has joined.
10:09:06 -!- oonbotti has quit (Quit: oonbotti).
10:09:56 -!- oonbotti has joined.
10:22:51 -!- oerjan has quit (Quit: leaving).
10:23:09 -!- nooga has quit (Ping timeout: 265 seconds).
10:36:07 -!- derdon has joined.
10:44:06 -!- mig21a has quit (Quit: Colloquy for iPhone - http://colloquy.mobi).
10:46:17 -!- MoALTz has joined.
10:50:04 -!- MoALTz_ has joined.
10:51:31 -!- MoALTz has quit (Ping timeout: 246 seconds).
10:54:05 -!- MoALTz has joined.
10:56:18 -!- MoALTz_ has quit (Ping timeout: 252 seconds).
11:00:26 <AnotherTest> toBinary 0 = []
11:00:26 <AnotherTest> toBinary n
11:00:26 <AnotherTest> | n `mod` 2 == 0 = ( toBinary (n `div` 2) ) ++ "0"
11:00:26 <AnotherTest> | otherwise = ( toBinary ((n - 1) `div` 2) ) ++ "1"
11:00:35 <AnotherTest> is that bad or good Haskell code
11:02:04 <AnotherTest> or should I use rem
11:02:19 <AnotherTest> mh. probably
11:02:50 <AnotherTest> oh wait does something like even exist?
11:03:04 <AnotherTest> oh yes
11:06:10 -!- mig21a has joined.
11:27:01 <FreeFull> AnotherTest: I'm trying to figure out how to write a prime sieve :)
11:28:15 <ion> anothertest: Numeric.showIntAtBase
11:28:27 <ion> (Although that has a strange arbitrary base limit that is below 36.)
11:34:08 <FreeFull> I'm wondering why primesieve ya@[y:ys] = y : primesieve (filter (\a -> (a `mod` y) == 0) ya) doesn't work
11:36:22 <FreeFull> Actually, get rid of the ya@ and replace the second ya with ys
11:36:26 <FreeFull> But still doesn't work
11:43:52 <AnotherTest> ion: I just wanted to implement this to try something in Haskell, but when I need this I will definitely use that; also 36 doesn't seem strange (it's the amount of alphanumeric symbols)
11:46:47 <FreeFull> Oops, meant /= rather than ==
11:47:20 <FreeFull> Still fails with same error
12:11:48 -!- epicmonkey has quit (Ping timeout: 240 seconds).
12:17:58 -!- mig21a has quit (Quit: Colloquy for iPhone - http://colloquy.mobi).
12:18:09 -!- mig21a has joined.
12:18:33 -!- nooga has joined.
12:28:18 -!- MoALTz has quit (Quit: brb).
12:29:18 <ion> anothertest: You may have missed the word “below” in my sentenct.
12:29:19 <ion> e
12:30:41 <ion> anothertest: You might want to use divMod.
12:30:46 <ion> != 41 `divMod` 2
12:30:51 <AnotherTest> ion: oh yes I did miss that
12:30:53 <ion> > 41 `divMod` 2
12:30:54 <lambdabot> (20,1)
12:30:58 <AnotherTest> ion: very strange indeed
12:34:08 <ion> > reverse . unfoldr (\n -> swap (n `divMod` 2) <$ guard (n /= 0)) $ 15
12:34:10 <lambdabot> Not in scope: `swap'
12:34:25 <ion> > let swap = snd &&& fst in reverse . unfoldr (\n -> swap (n `divMod` 2) <$ guard (n /= 0)) $ 15
12:34:27 <lambdabot> [1,1,1,1]
12:34:33 <ion> > let swap = snd &&& fst in reverse . unfoldr (\n -> swap (n `divMod` 2) <$ guard (n /= 0)) $ 17
12:34:35 <lambdabot> [1,0,0,0,1]
12:35:55 -!- elliott has joined.
12:35:56 <elliott> oOo CODE, is a yet another programming language based on brainfuck. Its creation was inspired by the way how teenager trolls tend to use upper and lower case to draw attention to themselves.
12:36:12 <elliott> someone give me a reason to go on
12:36:48 <Phantom__Hoover> http://blog.trecio.cba.pl/index.php/2010/04/ooo-code/lang-pref/en/
12:36:50 <Phantom__Hoover> oh god
12:36:59 <Phantom__Hoover> they even spell it "Brainf**k"
12:38:50 <ion> Someone should make a language called Brainf**k that’s nothing like Brainfuck.
12:39:07 <nortti> :P
12:39:23 <ion> So anyone who wants to refer to Brainfuck is forced to be explicit.
12:39:25 <nortti> it'll be functional and object oriented
12:39:46 <FreeFull> let fibb a n = fibb (a,a,a) (n - 1)
12:39:52 <FreeFull> Why can't it work?
12:41:04 <Phantom__Hoover> What's the type of that function?
12:44:32 <elliott> FreeFull: occurs check
12:45:08 <FreeFull> elliott: yep
12:45:30 <FreeFull> Phantom__Hoover: Good point
12:46:02 <FreeFull> let fibb a n = (fibb a n, fibb a n, fibb a n) doesn't work either, same error
12:47:11 <elliott> occurs check, again
12:47:21 <elliott> try to figure out the type of the function and you'll see
12:47:22 <FreeFull> I'm hoping for a -> b -> (a,a,a)
12:47:35 <elliott> FreeFull: so if fibb a n :: (a,a,a)
12:47:37 <FreeFull> Actually, not (a,a,a)
12:47:44 <elliott> then (fibb a n, fibb a n, fibb a n) :: ((a,a,a),(a,a,a),(a,a,a))
12:47:52 <elliott> but that's the result of fibb a n
12:47:58 <elliott> which is a contradiction
12:48:01 <psyk> elliott: No it isn't!
12:48:01 <FreeFull> Yeah, I meant (n - 1)
12:48:10 <elliott> in fact, the return type of fibb a n would have to be a = (a,a,a), which is the whole problem
12:48:17 <elliott> psyk: ?
12:48:22 <psyk> elliott: What are you doing?
12:48:26 <FreeFull> Wait, why did I call it fibb
12:48:29 <FreeFull> I meant to call it sierp
12:48:30 <elliott> psyk: answering FreeFull's haskell question
12:48:34 <psyk> elliott: Vielleich, oder so.
12:48:39 <elliott> psyk: what
12:48:48 <psyk> elliott: Shit of your gastrointestinal tract.
12:48:57 <elliott> fizzie: ^
12:49:01 <ion> psyk: hotik?
12:49:04 <psyk> ion: kerro lis.
12:49:09 <elliott> psyk: are you a bpt
12:49:11 <elliott> *bot
12:49:12 <psyk> elliott: No, i'm not
12:49:18 <elliott> ok, so just an idiot then
12:49:28 <elliott> what the heck is up with this place lately
12:50:21 <FreeFull> Maybe if I write an a -> (a,a,a) function and then apply it recursively
12:51:05 <ion> Are you looking for something like data Foo a = Foo a (Foo a) (Foo a) (Foo a)?
12:52:14 <FreeFull> I'm looking for something that produces the code equivalent of a sierpinski triangle
12:52:19 <FreeFull> I haven't looked at data yet
12:52:45 <elliott> apparently psyk is, in fact, a bot http://sange.fi/~atehwa/psyk/psykbot.ss
12:52:53 <elliott> which is a contradiction
12:52:55 <elliott> psyk: ?
12:52:57 <elliott> hmm
12:53:01 <psyk> elliott: Without contradiction there's no life.
12:53:04 <psyk> elliott: eik euroopan unioni olekin perseest?
12:53:21 <elliott> atehwa: is there a way to get this thing to not respond to me
12:53:33 <FreeFull> /ingore
12:53:47 <FreeFull> Oops
12:53:51 <FreeFull> /algore
12:53:53 <elliott> ignore is cheating :p
13:04:10 <FreeFull> Now I managed delay the occurs check to the function call =P
13:08:47 <Phantom__Hoover> FreeFull, /ignore still makes everyone else see it.
13:08:58 <Phantom__Hoover> elliott, wait, what's the difference between this and fungot.
13:08:59 <fungot> Phantom__Hoover: written by fnord teenage atheists who cant except that a religious man could be such a sticking point if so many of similar ones? in many of it's earlier releases, the minneapolis scene, and kristen's role in fnord sound. i'll set up a separate page from the
13:09:21 <FreeFull> Phantom__Hoover: They can /ignore too
13:09:21 <Phantom__Hoover> Beyond the fact that fungot is better.
13:09:22 <fungot> Phantom__Hoover: nope, he only serves his country, democratic or fnord.
13:13:22 <Phantom__Hoover> ^style ct
13:13:22 <fungot> Selected style: ct (Chrono Trigger game script)
13:13:26 <Phantom__Hoover> fungot!
13:13:26 <fungot> Phantom__Hoover: your majesty! and queen. he and a friend left on a journey 10. all functions are down... got the terra arm and the crisis arm! found a dreamstone?! then i'll repair the masamune!
13:16:39 <elliott> Phantom__Hoover: you have to ping fungot.
13:16:40 <fungot> elliott: to the northwest of this cape. he took back the medal from the frog king. and i'd like to see that mystical sword for myself!
13:17:48 -!- MoALTz has joined.
13:23:13 -!- MoALTz has quit (Ping timeout: 272 seconds).
13:31:48 <Phantom__Hoover> elliott, wait, what triggers psyk?
13:34:28 -!- david_werecat has joined.
13:35:25 <elliott> at least this:
13:35:26 <elliott> which is a contradiction
13:35:31 <elliott> which is a contradiction
13:35:31 <elliott> which is a contradiction
13:35:37 <elliott> pah
13:42:36 <kmc> all of which are american dreams
13:43:22 <elliott> Phantom__Hoover: anyway it bugged me when i didn't say anything to it above
13:46:26 <Phantom__Hoover> kmc, ???
13:47:10 <kmc> disregard me
13:53:22 <AnotherTest> uh I dislike writing unit tests
13:53:44 <AnotherTest> unless they all pass :D
13:53:53 <AnotherTest> which I doubt
13:53:58 <Phantom__Hoover> It's my hobby!
14:12:49 <itidus21> wow i thought psyk was a real person
14:15:32 -!- ogrom has quit (Ping timeout: 268 seconds).
14:33:41 -!- TeruFSX has joined.
14:34:25 -!- kinoSi has quit (Read error: Connection reset by peer).
14:34:51 -!- kinoSi has joined.
14:36:41 -!- MoALTz has joined.
15:01:19 -!- aloril has quit (Ping timeout: 244 seconds).
15:06:29 -!- ogrom has joined.
15:15:04 -!- aloril has joined.
15:54:42 -!- ogrom has quit (Read error: Connection reset by peer).
15:55:08 -!- ogrom has joined.
15:55:56 -!- mig21a has quit (Quit: Colloquy for iPhone - http://colloquy.mobi).
15:57:30 <kmc> itidus21: as opposed to?
15:58:40 <kmc> "Police arrested two Cambridge men on charges of assault and battery and an unarmed robbery after victims told police they tried to steal their pizza, shoved them to the ground and ripped their pants."
15:58:48 <elliott> <kmc> itidus21: as opposed to?
15:58:49 <elliott> psyk is a bot
15:58:57 <psyk> elliott: I know, and that was an answer.
15:59:18 -!- epicmonkey has joined.
16:01:44 <Gregor> #esoteric : Where even the bots are real people.
16:01:45 <oonbotti> Nothing here
16:04:19 <nortti> oonbotti: are you real human?
16:04:20 <oonbotti> nortti: Perhaps you believe I am real human.
16:06:59 -!- atriq has joined.
16:07:49 <kmc> oonbotti: Has anyone really been far even as decided to use even go want to do look more like?
16:07:49 <oonbotti> kmc: Please consider whether you can answer your own question.
16:09:34 * kmc slaps oonbotti around a bit with a colorless green idea
16:10:44 <nortti> why?
16:11:35 <olsner> colorless and green, but how does it fnarf?
16:13:33 <kmc> poorly
16:13:48 <Gregor> You can't judge.
16:13:50 <Gregor> Only I can fnarf.
16:15:07 -!- aloril has quit (Ping timeout: 240 seconds).
16:15:33 <shachaf> "A suspicious object that caused a nearly six-hour-long bomb scare in a Palo Alto neighborhood Friday afternoon turned out to be a piece of illegal drug-making equipment, according to a police agent."
16:15:56 <shachaf> I wonder whether that's equipment that's used to make illegal drugs, or illegal equipment used to make drugs.
16:17:17 <kmc> probably both
16:17:34 <shachaf> Illegal equipment used to make illegal drugs?
16:17:35 <kmc> also hichaf
16:17:36 <kmc> yes
16:17:40 <shachaf> That's doubly illegal.
16:17:50 <shachaf> helloeegan
16:17:53 <kmc> once you use equipment to make or consume illegal drugs, it usually becomes illegal
16:18:06 <kmc> "drug paraphernalia"
16:18:32 <shachaf> helloeegan sounds like a holiday where everyone puts on costumes and consumes LSD.
16:18:56 <kmc> i bet that head shops would buy and sell used bongs if not for this rule
16:19:00 <shachaf> Why is drug equipment illegal?
16:19:02 <kmc> there would be a big market for it
16:19:04 <kmc> shachaf: why not
16:19:11 <shachaf> That's not how illegal works. :-(
16:19:18 <kmc> it is when drugs are involved
16:20:13 <pikhq> shachaf: Some think "illegal" is a fundamental property of things and actions that they can attach.
16:20:24 <pikhq> shachaf: These people tend to support drug legislation.
16:20:44 <shachaf> "paraphernalia" is a nice-sounding word.
16:22:02 <olsner> yes, it is nice
16:22:34 <shachaf> In fact, I have a file with a list of nice-sounding words, and "paraphernalia" is in it.
16:22:40 <shachaf> I wonder whether the word is illegal to use too.
16:23:04 <olsner> I wonder if words can be paraphernalia
16:24:21 -!- ion has quit (Ping timeout: 246 seconds).
16:24:25 <kmc> what is government if words have no meaning
16:25:04 <kmc> shachaf: did i tell you that Caltech won a $100,000 prize from the Bill and Melinda Gates foundation for inventing the toilet of the future?
16:25:55 <kmc> http://features.caltech.edu/features/423
16:25:59 <shachaf> Nope.
16:26:23 <shachaf> "Reinventing the Toilet Challenge"
16:26:28 <shachaf> The toilet challenge of the future.
16:26:34 <kmc> yes
16:26:41 <kmc> is your code good enough to reinvent the toilet
16:27:45 -!- aloril has joined.
16:29:19 <shachaf> I woke up at 09:something today.
16:29:30 <shachaf> This is sort of a result of having my sleep schedule wrap around.
16:29:44 <shachaf> I wonder whether I can stop it from moving further now.
16:30:18 <atriq> Yay!
16:31:44 <atriq> Have an early/late night (delete as appropriate)
16:35:34 <kmc> <shachaf> helloeegan sounds like a holiday where everyone puts on costumes and consumes LSD.
16:35:38 <kmc> there are a lot of holidays like that
16:35:48 <atriq> kmc, no, that's just you.
16:37:12 <kmc> like Burning Man
16:37:22 <kmc> also Bay to Breakers (or does everyone just get really drunk for that?)
16:37:50 <shachaf> Someone told me I should go to Bay to Breakers a couple of weeks before it happened.
16:37:53 <shachaf> But then I forgot.
16:38:26 <shachaf> "exciting happenings from shachaf's recent past"
16:43:18 <shachaf> I wonder whether taxicabs in Manhattan aren't allowed to go on Broadway.
16:46:13 <kmc> why wouldn't they be?
16:46:30 <kmc> i think there are plenty of cabs on broadway
16:46:31 <shachaf> To keep taxicab distance reasonable.
16:46:55 <kmc> -_-
16:47:04 <kmc> it's a one-way street south of columbus circle
16:47:24 <kmc> that means the distances aren't even symmetric!
16:47:31 <shachaf> Good ol' Columbus Circle.
16:47:56 * shachaf has taken the subway to Columbus Circle station many times.
16:48:06 <kmc> oh yeah?
16:48:14 <shachaf> My uncle lives nearby.
16:48:35 <kmc> which subway do you take
16:48:44 <shachaf> Depends on where I'm coming from.
16:48:55 <atriq> The one in New York'd be my guess
16:49:06 <atriq> The one in Moscow wouldn't be much use
16:49:12 <shachaf> At least A and C and 1.
16:49:28 <shachaf> And E from JFK, connecting to A.
16:54:02 <kmc> shachaf: did you see http://www.stonebrowndesign.com/uploads/9/7/6/9/9769402/t-time.jpg
16:54:59 <shachaf> Nope.
16:55:34 <shachaf> Isn't there a silver line too?
16:55:57 <kmc> it's not rail though
16:58:38 <kmc> the silver line SL1/SL2 is a bus which runs partly in a dedicated tunnel with subway-like stations and platforms
16:58:43 <kmc> and partly on the street
16:59:25 <kmc> so arguably it deserves to be shown if the green line does, because the green line also runs partly in a dedicated tunnel and partly in the street
16:59:45 <kmc> also the SL1/SL2 fare is the same as the subway fare, not the bus fare
17:00:54 <kmc> (except that it's now free to board the SL1 at the airport, and then you can even transfer to other subway lines for free)
17:01:37 <fizzie> Did you see the Helsinki-mocking subway image? http://users.ics.aalto.fi/htkallas/subway_maps.jpg
17:01:57 <kmc> the SL4/SL5 are basically just limited-stop buses
17:02:00 <fizzie> (So twue.)
17:02:35 <kmc> it is true
17:03:07 <kmc> helsinki has a lot of trams though
17:03:17 <kmc> but they run mostly in the street and so aren't much better than buses
17:03:49 <fizzie> Yeah, and there's not *that* many routes there either. Though admittedly at least a plural.
17:04:11 <atriq> The Tyne and Wear Metro has two lines, and Monument station has 3
17:04:16 <atriq> *is on 3
17:04:54 <kmc> heh, because the line goes through twice?
17:04:58 <atriq> Yeah
17:05:26 <atriq> They're the most imaginatively named lines ever
17:05:29 <atriq> Green line
17:05:30 <atriq> And...
17:05:33 <atriq> Yellow line
17:06:05 <kmc> Edgware Road in London is a bit like that
17:06:08 <kmc> on the circle line
17:06:41 <kmc> which is no longer a circle :/
17:07:00 <fizzie> There is a plan for a subway branch from Kamppi (essentially city centre) to the Helsinki-Vantaa airport, but I'm not especially hopeful I'll be alive any more when they get that done. It took a terrible amount of wrangling for them to even manage to start building the current extension eastwards. (And they're already building the regular rail line to go under Helsinki-Vantaa and connect to ...
17:07:06 <fizzie> ... the two local rail tracks, so they're probably not that interested in the subway.)
17:09:38 <kmc> helsinki also has far fewer people than the other 3 metro areas in that picture
17:09:50 <fizzie> Sure, but that doesn't lessen our national shame.
17:10:05 <fizzie> (Most people probably aren't feeling that.)
17:10:19 <atriq> Your capital's subway network is WORSE THAN NEWCASTLE/SUNDERLAND's
17:10:27 <fizzie> atriq: :'''(
17:11:43 <fizzie> They're going to paint the "Joker line" (slightly-limited-stops frequent-service bus line -- in the future, lines) buses orange in 2014 or so because they're "subway-like" and that will help in something or other.
17:12:10 <fizzie> (Our subway trains are orange.)
17:13:19 <atriq> (Our (I say "our", but the Metro doesn't come this far west) trains are yellow and purple, I think?)
17:13:27 <fizzie> atriq: On the other hand, our capital's subway network makes the "List of northernmost items" of Wikipedia: http://en.wikipedia.org/wiki/List_of_northernmost_items (see "Transportation").
17:14:46 <fizzie> Thanks to Svalbard, Norway gets quite a few of those.
17:15:31 <kmc> shachaf: it seems like the Silver Line is mainly used to get from/to the airport and the rest of the fancy subway-like part of it is pretty underused
17:15:53 <kmc> they could have got better value for money if they'd construted a people mover from the existing Airport station on the Blue Line to the airport
17:16:00 * shachaf has never been to BOS.
17:16:01 <kmc> (using airport tax money, no less)
17:16:40 <fizzie> According to the aforementioned article, the northernmost vineyard in the world is the Olkiluoto Nuclear Power Plant in Finland. That sounds... somewhat dubious.
17:16:54 <fizzie> Apparently it is true, though.
17:17:10 <kmc> that would be less convenient for me, though, because there's no direct transfer from the red line to the blue line
17:17:16 <fizzie> "-- the warm outlet water is circulated through a garden where water melons and Lithuanian grapes are grown and from which Olkiluoto wine is produced."
17:17:31 <fizzie> Just offhand it sounds slightly suspicious to make wine at a nuclear power plant, though.
17:17:41 -!- AnotherTest has quit (Ping timeout: 244 seconds).
17:20:59 <kmc> yay svalbard
17:21:27 <kmc> BOS is a pretty crappy airport but it's unusually conveniently located
17:21:51 <shachaf> Not if you move to SF!
17:21:55 <shachaf> (Which I heard might happen.)
17:22:25 -!- ogrom has quit (Read error: Connection reset by peer).
17:22:46 <kmc> -_-
17:22:50 -!- ogrom has joined.
17:22:52 <kmc> nelhage is moving to SF
17:22:55 -!- ogrom has quit (Read error: Connection reset by peer).
17:23:00 <kmc> to work for stripe
17:23:12 <shachaf> Is he one of the ones who left Kspl*?
17:23:41 <shachaf> For Stripe? Hmm.
17:26:33 <kmc> yes
17:27:17 <shachaf> When?
17:30:21 <shachaf> unsafeCreate l f = unsafeDupablePerformIO (create l f)
17:30:42 <shachaf> Isn't that exactly the thing you're supposed not to use unsafeDupablePerformIO for?
17:35:00 <kmc> probably
17:38:21 <atriq> Wow, I think the way I use unsafeCoerce in my ridiculous factorial program
17:38:23 <atriq> IS ACTUALLY SAFE
17:38:49 <kmc> with respect to what set of assumptions?
17:38:51 <shachaf> <ddarius> Also probably some code for some (rather practical but still cool) physics simulations.
17:39:04 <atriq> kmc, the assumptions in GHC.Prim.unsafeCoerce#
17:39:09 <kmc> ok
17:39:29 <shachaf> kmc: Did you see the post about how you can make unsafeCoerce from GeneralizedNewtypeDeriving?
17:39:46 <atriq> No, wait, it isn;t
17:39:49 <psyk> atriq: hyv yt
17:39:55 <shachaf> With either type families or GADTs, and possibly with neither.
17:40:03 <kmc> shachaf: i thought that was old news
17:40:12 <kmc> and that they fixed it
17:40:16 <atriq> psyk, goodnight to you to?
17:40:21 <atriq> *+o
17:40:23 <psyk> atriq: robottielimikin kiinnostaa
17:40:28 <kmc> atriq: how do you use it?
17:40:41 <shachaf> kmc: http://joyoftypes.blogspot.com/2012/08/generalizednewtypederiving-is.html
17:41:03 <atriq> kmc, (t -> a) -> t; t -> (t -> a)
17:41:13 <atriq> So a function can have itself as an input
17:41:22 <atriq> fix is a more sensible alternative
17:42:07 <shachaf> "itself" in the sense of M = \x -> x x?
17:42:13 <atriq> Yes
17:46:24 <kmc> shachaf: fun
17:46:25 <kmc> maybe it's time to switch to a safer implementation of GeneralizedNewtypeDeriving which just writes the boilerplate instance for you
17:46:25 <shachaf> Sounds reasonable to me.
17:46:25 <kmc> that might be less efficient, though
17:47:58 -!- atriq has changed nick to Taneb|Away.
17:48:31 <shachaf> Maybe it's sufficient to write the boilerplate and type-check it, even if a less safe implementation is actually used?
17:49:36 <elliott> i am against GeneralizedNewtypeDeriving being faster than writing the boilerplate by hand
17:49:36 <elliott> i would rather the optimisation worked on the boilerplate
17:49:37 <kmc> shachaf: interesting idea
17:49:37 <kmc> elliott: yeah
17:49:38 <kmc> this toilet of the future produces hydrogen gas
17:49:42 <kmc> which could be useful but...
17:50:31 <shachaf> elliott: But that's hard.
17:51:01 <elliott> then let it be slow :p
17:51:17 <kmc> why is it hard exactly
17:51:36 <elliott> kmc: recursion
17:51:39 <elliott> (i don't think it is actually very hard)
17:54:53 -!- MoALTz has quit (Ping timeout: 244 seconds).
17:57:01 <kmc> we gotta run run run to the toilets of the future
18:00:29 <shachaf> elliott: It sounds kind of hard to me.
18:00:44 <shachaf> But I'm no GHCfier.
18:17:09 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
18:17:57 -!- Taneb|Away has changed nick to atriq.
18:31:13 <kmc> atriq|njnl
18:32:09 <nortti> main(x,y,e)char**e;{char a[256];char*b;char*c[256];char**d;int p;while(1){write(1,"$ ",2);for(b=a;*(b-1)!='\n';b++){read(0,b,1);}*b=0;d=c;*d++=a;for(b=a;b<a+256&&*b!=0;b++){if(*b==' '||*b=='\n'){*b=0;*d=b+1;d++;}}*(d-1)=0;if(!(p=fork()))execve(a,c,e);else wait(p);}}
18:32:29 <atriq> Is that...
18:32:31 <atriq> Is that C?
18:32:34 <nortti> yes
18:32:40 <kmc> cool code bro
18:32:41 <nortti> k&r c
18:32:42 <kmc> should i run it?
18:32:45 <nortti> yes
18:32:50 <kmc> what will happen
18:32:53 <nortti> it is very basic unix shell
18:32:56 <kmc> nice
18:33:11 <nortti> no PATH support at the moment :/
18:33:26 <kmc> ah, it's not really obfuscated
18:33:30 <kmc> just compacted
18:33:34 <nortti> yes
18:33:46 <nortti> that is the code I'm developing
18:33:56 <nortti> I want to be able to understand it
18:34:18 <pikhq> nortti: Feh. I've done sillier. :P
18:34:20 <nortti> obfuscating that would be easy but then understanding it would be harder
18:34:32 <pikhq> http://sprunge.us/cMbN
18:34:34 <kmc> can you use execv instead of execve
18:34:54 <nortti> kmc: does it pass the evironment unchanged?
18:35:08 <pikhq> (warning: x86 GNU C only)
18:35:18 <nortti> then no
18:35:21 <kmc> 'The other functions take the environment for the new process image from the external variable environ in the calling process.'
18:35:33 <kmc> oh what do you have to do to the environment?
18:36:11 <kmc> i don't see anything using that variable other than execve
18:36:13 <nortti> just pass it to the process unchanged
18:36:23 <kmc> right, i think that's what execv does
18:36:31 <kmc> also you could use execvp to get path searching
18:36:31 <nortti> but I want it to be portable
18:36:48 <nortti> is execvp standard?
18:37:17 <kmc> yes it's a standard part of POSIX
18:37:25 <nortti> cool
18:37:26 <pikhq> It seems to be POSIX and traditional UNIX.
18:37:42 <nortti> and it passes environment?
18:37:48 -!- aloril has quit (Ping timeout: 244 seconds).
18:38:00 <kmc> what do you mean by that?
18:38:14 <nortti> +unchanged
18:38:25 <kmc> <kmc> 'The other functions take the environment for the new process image from the external variable environ in the calling process.'
18:38:33 <nortti> oh
18:41:43 <nortti> main(){char a[256];char*b;char*c[256];char**d;int p;while(1){write(1,"$ ",2);for(b=a;*(b-1)!='\n';b++){read(0,b,1);}*b=0;d=c;*d++=a;for(b=a;b<a+256&&*b!=0;b++){if(*b==' '||*b=='\n'){*b=0;*d=b+1;d++;}}*(d-1)=0;if(!(p=fork()))execvp(a,c);else wait(p);}}
18:42:48 <Gregor> Poor man's shell, eh.
18:43:35 <nortti> yes
18:45:51 <kmc> hmm i need some pointless programming project
18:49:57 <pikhq> Gregor: Mine's better. :)
18:50:48 <jlaire> nortti: that could be shortened in many places
18:50:57 <nortti> jlaire: I know
18:51:08 <kmc> maybe i should do some of http://www.itasoftware.com/careers/puzzle_archive.html
18:51:37 <kmc> i would go for a bike ride but i broke my bike
18:51:39 <nortti> jlaire: that is just how I code and you have to jist deal with it
18:51:41 <kmc> and i hate all other forms of exercise
18:51:45 <jlaire> nortti: lol
18:51:53 <nortti> *just
18:52:26 <kmc> correction, i hate all forms of exercise other than bike riding and sex
18:53:11 -!- aloril has joined.
18:57:05 -!- MoALTz has joined.
19:01:38 <Gregor> kmc: Remove the bicycle seat and you'll never need to do anything else.
19:01:52 <kmc> -_-
19:01:56 * Gregor takes a bow.
19:02:58 <coppro> kmc: sex is better with multiple people
19:04:14 <kmc> do you mean multiple people other than myself?
19:04:20 <coppro> no
19:04:23 <kmc> oh
19:04:26 <kmc> well i agree in either case
19:04:35 <coppro> haha
19:04:37 <kmc> i didn't mean to include masturbation, which isn't very good exercise imo
19:04:48 <kmc> unless you go for unusual technique
19:04:52 <coppro> I was trying to make a subtle dig at your ability to attract partners...
19:04:59 <coppro> ok, not so subtle
19:05:04 <kmc> but i mean i don't like jogging so i wouldn't like jogging while jerking off either
19:05:09 <kmc> coppro: nice
19:05:19 <coppro> `addquote < kmc> but i mean i don't like jogging so i wouldn't like jogging while jerking off either
19:05:29 <HackEgo> 857) < kmc> but i mean i don't like jogging so i wouldn't like jogging while jerking off either
19:05:41 <coppro> my victory is now complete
19:07:09 <coppro> my problem with IRC bots:
19:07:14 <coppro> I can't just write an IRC bot
19:07:19 <coppro> I need to write an IRC library every time first
19:07:24 <coppro> and by the time I'm done the library I'm bored with it
19:08:20 <Gregor> Jogging while masturbating sounds both complicated and unpleasant.
19:10:05 <kmc> f you're not using equipment, yes
19:15:37 -!- ogrom has joined.
19:16:12 -!- ion has joined.
19:16:27 <shachaf> http://www.kickstarter.com/projects/659943965/planetary-annihilation-a-next-generation-rts has a picture of a Penguin now.
19:16:52 <shachaf> I should Back That Project since I keep complaining about RTSes.
19:22:56 -!- aloril has quit (Ping timeout: 250 seconds).
19:25:00 <Sgeo> I should read the CLtL2 docs for environment stuff, see if there's an eval that accepts an environment object in there
19:27:20 <kmc> "Write a program to find the largest possible rectangle of letters such that every row forms a word (reading left to right) and every column forms a word (reading top to bottom)."
19:27:24 <kmc> sounds fun
19:27:37 <Phantom__Hoover> shachaf, why do you keep complaining about RTSes>#
19:27:46 <Sgeo> :( nope eval does not take an environment in CLtL2
19:27:48 <shachaf> Phantom__Hoover: Because they're bad. :-(
19:27:59 <Phantom__Hoover> They're inaccurately named, at least.
19:28:12 <shachaf> kmc: You could add ACIO to GHC!
19:28:18 <shachaf> Remember when you were talking about doing that?
19:28:32 <shachaf> That's totally a pointless programming project.
19:30:19 <Sgeo> Why doesn't the quasiquoting syntax sugar have a more.. canonical form?
19:30:21 <Sgeo> In CL?
19:30:48 <Sgeo> As in, '(foo bar baz) is (quote (foo bar baz)), so what's `(foo bar ,baz)?
19:31:26 <nortti> Sgeo: (quasiquote foo bar ,baz) at least in scheme
19:31:31 <Phantom__Hoover> A horrendous mess of macros.
19:31:52 <kmc> ,baz is (unquote baz)
19:32:02 <kmc> in sceme
19:32:04 <kmc> scheme too
19:32:36 * Sgeo grumbles about Scheme being a better language but still wanting to stick with CL
19:32:46 -!- monqy has joined.
19:32:53 <ion> It’s the same in CL, too, AFAIU.
19:36:42 <ion> clisp> (setq baz 42) `(foo bar ,baz)
19:36:44 <ion> (FOO BAR 42)
19:39:46 <Sgeo> Not answering the question for the win!
19:39:59 <Sgeo> Also, setq? In this day and age?
19:40:04 -!- aloril has joined.
19:53:12 <fizzie> It's not exactly (quasiquote foo bar (unquote baz)), it's missing one level of parens.
19:53:15 <fizzie> #;1> '`(foo bar ,baz)
19:53:17 <fizzie> (quasiquote (foo bar (unquote baz)))
19:54:02 <kmc> http://hackage.haskell.org/packages/archive/tree-monad/0.3/doc/html/Control-Monad-SearchTree.html how am i supposed to get the first result out of a SearchTree
19:54:29 <kmc> shouldn't it be Foldable perhaps
19:55:06 <Sgeo> fizzie, which language>
19:58:34 <fizzie> Scheme.
19:58:42 <fizzie> I would think it's the same in CL.
19:58:58 <fizzie> But that's just a thought.
19:59:13 <fizzie> Didn't have any CL systems on this computer anyway, just Schemes.
20:01:32 -!- ais523 has joined.
20:01:38 <Sgeo> Aha.
20:01:51 <ais523> and hi lambdabot
20:01:57 <Sgeo> cltl2 has an enclose function
20:02:27 <Sgeo> Takes a lambda and optional environment, and gives a lambda as if that lambda were made in that environment
20:03:18 <Sgeo> kmc, is using CLtL2 to make my if that takes lists count, or is that cheating?
20:03:33 -!- nooga has quit (Ping timeout: 248 seconds).
20:04:03 <Sgeo> n/m
20:04:19 <Sgeo> " lambda-expression is permitted to reference only the parts of the environment argument env that are relevant only to syntactic processing, specifically declarations and the definitions of macros and symbol macros."
20:04:45 <nortti> Sgeo: what is cltl2?
20:04:58 <Sgeo> nortti, a pre-ANSI version of Common Lisp
20:05:03 <nortti> oh
20:05:14 <nortti> so kinda like k&r c
20:05:22 <Sgeo> SBCL has a package that has functions that are in CLtL2
20:17:37 -!- pikhq has quit (Ping timeout: 240 seconds).
20:17:48 -!- pikhq has joined.
20:27:04 <Phantom__Hoover> Hmm, I can't get speeds higher than 10kB/s on any torrents, it seems.
20:27:19 * Phantom__Hoover paranoias
20:43:01 -!- epicmonkey has quit (Ping timeout: 246 seconds).
20:44:09 <kmc> hacked by chinese
20:44:48 <Sgeo> I'm still sadding about being unable to manipulate environment objects in cool ways
20:50:19 <Sgeo> Scheme's eval accepts an environment, doesn't it?
20:50:44 <atriq> Phantom__Hoover, doesn't it help if you port-forward a magic port?
20:55:04 <Phantom__Hoover> Hmm, interesting.
20:56:54 <Phantom__Hoover> I can't see it giving the several-hundredfold increase I need to make torrenting practical, though.
21:01:18 <Sgeo> Is eset's online scanner a good recommendation?
21:01:23 <Sgeo> I know people love NOD32
21:09:52 -!- Phantom___Hoover has joined.
21:11:02 -!- Phantom___Hoover has quit (Read error: Connection reset by peer).
21:12:33 -!- Phantom_Hoover has joined.
21:13:14 -!- Phantom__Hoover has quit (Ping timeout: 260 seconds).
21:35:43 -!- ogrom has quit (Quit: Left).
21:59:07 -!- NihilistDandy has joined.
22:08:21 -!- MoALTz has quit (Ping timeout: 246 seconds).
22:13:57 -!- Vorpal has quit (Ping timeout: 272 seconds).
22:53:52 -!- NihilistDandy has quit (Excess Flood).
22:54:24 -!- NihilistDandy has joined.
23:25:44 <kmc> i wonder what's the best algorithm for the word rectangle puzzle
23:25:46 -!- atriq has quit (Ping timeout: 252 seconds).
23:25:52 <kmc> "Write a program to find the largest possible rectangle of letters such that every row forms a word (reading left to right) and every column forms a word (reading top to bottom)."
23:26:14 <shachaf> That sounds like a fun puzzle that requires actual thinking to solve well.
23:26:32 <kmc> yeah
23:26:34 -!- TeruFSX has quit (Read error: Connection reset by peer).
23:26:38 <shachaf> kmc: What are some nifty isomorphic types in Haskell?
23:26:48 <kmc> dunno
23:27:20 <shachaf> I'm collecting them now.
23:27:56 <shachaf> Things like data Foo t = forall a. Foo a (a -> a) (a -> t), Foo ~ (Nat ->)
23:34:50 <Sgeo> I objected to newLisp yesterday, but I forgot why, so I'm looking at it again.
23:35:23 <kmc> shachaf: do you have any actual thinking on this puzzle?
23:35:31 <kmc> my algorithm is not entirely un-clever, but probably not good enough
23:36:55 <shachaf> kmc: Nope.
23:37:12 <shachaf> I haven't thought about it.
23:37:15 <shachaf> Did you find an optimal solution already?
23:37:21 <kmc> no
23:37:26 <kmc> i found a probably not good enough solution
23:37:45 <shachaf> I mean generating an optimal rectangle, not generating it optimally.
23:37:45 <kmc> by which i mean it runs too slowly to find the biggest rectangle in a reasonable amount of time
23:37:48 <shachaf> Ah.
23:38:03 <kmc> i mean, i *might* have already found the biggest one, but probably not
23:40:15 <shachaf> How big did you find?
23:40:26 <kmc> 6 × 6
23:42:39 <Sgeo> Contexts in newLisp make sense, I _think_. Default functions, not so much
23:42:50 <kmc> nü-lisp
23:44:18 <Sgeo> I don't know anything about FOOP, but that might be good?
23:44:20 * Sgeo suddenly realizes something
23:44:22 <shachaf> νlisp
23:45:05 <Sgeo> NewLisp's dynamic scoping might not be a good idea in a Lisp-1 because functions are presumably "free varaiables" as I saw something describe it
23:45:12 -!- elliott has quit (Quit: Leaving).
23:45:24 <Sgeo> So might be too easy to accidentally overwrite a function that something deeper down uses
23:45:28 -!- elliott has joined.
23:45:47 <kmc> "dynamic scoping might not be a good idea"
23:45:51 <kmc> understatement of the week
23:45:59 <Phantom_Hoover> λιθπ
23:46:05 <Sgeo> The thing I was reading made it sound survivable
23:46:11 <shachaf> ₪lisp
23:46:12 <kmc> sure, it's survivable
23:46:16 <kmc> so is polio
23:46:23 * Phantom_Hoover wonders if that pi should be a phi.
23:46:31 <kmc> "shouldn't that a be an α?"
23:48:04 <Sgeo> "Because strings can contain null characters in newLISP, they can be used to process binary data with most string manipulating functions.
23:48:04 <Sgeo> "
23:48:45 <Phantom_Hoover> Yes, it should be if it's ancient Greek.
23:48:53 <Phantom_Hoover> Which is of course the only legitimate kind.
23:51:33 <Sgeo> lambda-macro
23:51:34 <Sgeo> Hmm
23:53:17 <Sgeo> At least (fn (x) x) turns into (lambda (x) x) rather than being a separate thing
23:53:21 <ais523> huh, TIL that MySql is named after a person, whose name is My
23:55:05 -!- Nisstyre has quit (Read error: Connection reset by peer).
23:55:25 <Sgeo> Ok, is consing lambda lists supposed to make any sense?
23:55:51 <Sgeo> http://pastie.org/private/3flp4pvzpmiyst3o20bag
23:57:00 <kmc> what?
23:58:19 -!- Nisstyre has joined.
23:58:30 <Sgeo> Quoting the manual
23:59:00 <shachaf> kmc: Due to a funny situation with throttling, my laptop gets significantly slower when I plug it in.
23:59:08 <kmc> heh
23:59:11 <kmc> that is odd
23:59:19 <Sgeo> I may be able to force myself to like newLisp
←2012-08-17 2012-08-18 2012-08-19→ ↑2012 ↑all