←2013-01-12 2013-01-13 2013-01-14→ ↑2013 ↑all
00:00:17 <ais523> you can make it a username-only ban rather than an IP ban, but sometimes people forget
00:00:18 <shachaf> Oh, I assumed you meant a username ban.
00:00:40 <shachaf> Well, presumably you won't be doing it more than once...
00:00:52 <elliott> I'm banning myself from ais523 for Lent.
00:00:59 <ais523> lent hasn't started yet
00:01:01 <zzo38> It isn't Lent yet.
00:01:09 <ion> It’s Lens.
00:01:27 <ion> pred Lent
00:01:28 <elliott> Um, it's Lent where I live.
00:01:39 -!- sebbu has quit (Ping timeout: 272 seconds).
00:01:39 <ais523> don't you live very near hexham?
00:01:41 <elliott> Lens lens lent lena lenb
00:01:46 <ais523> (hexham is very near hexham)
00:02:30 <ais523> `? hexham
00:02:39 <HackEgo> Hexham is a European town. There are nine people in Hexham, and at least two of them are in this channel. Taneb looks after the ham.
00:03:53 <ais523> just heard in an advert on TV: "The Daily Mail says it really works"
00:03:58 <ais523> is this a point in favour of the product, or against?
00:04:10 <oerjan> lens lentium
00:05:27 <kmc> ais523: haha
00:05:39 <oerjan> sorry, *lentum
00:05:52 <ion> ais523: :-D
00:06:09 -!- Bike has joined.
00:06:15 <elliott> ais523: is it a cancer cure
00:06:23 <ais523> no, it's a skin product
00:06:27 <elliott> um same thing?
00:06:35 <elliott> cures ugly cancer
00:06:53 <zzo38> ais523: It is a point against the Daily Mail, I guess.
00:07:20 <oerjan> oh Lent isn't from latin at all
00:07:27 <ais523> zzo38: there were enough of those already :)
00:07:36 <oerjan> "Shortened form of Lenten, from Old English lencten. Related to German Lenz (“springtime”), which is derived from a word related to long, because of the longer days."
00:11:04 -!- jdiez has joined.
00:16:21 -!- sebbu has joined.
00:16:21 -!- sebbu has quit (Changing host).
00:16:21 -!- sebbu has joined.
00:21:17 <shachaf> monqy: speaking of reddit have you seen http://www.reddit.com/r/EFLcomics/top/?sort=top&t=all
00:23:56 <ion> awesome
00:26:15 <monqy> i've seen stuff in that vein before but i don't do reddit so i havent seen that sub reddit
00:27:12 <shachaf> good reddit is pretty bad
00:31:29 <kmc> did Sgeo survive his coffee-trip?
00:36:07 <kmc> what kind of editor puts a BOM on a UTF-8 file??
00:39:30 <ion> :set bomb, :w
00:39:39 <kmc> oh, notebad
00:39:52 <kmc> i meant to type 'notepad' there but i'll let it stand
00:39:54 <oerjan> it's a bøm!
00:44:48 <elliott> according to /lastlog Sgeo he has not spoken since
00:44:49 <elliott> 21:49:36 <monqy> have you ever had caffeine before, sgeo
00:44:49 <elliott> 21:50:01 <Sgeo> Yes
00:44:51 <elliott> RIP
00:44:58 <Vorpal> oerjan, what is a bøm?
00:45:32 <Vorpal> oerjan, as opposed to a BOM
00:45:44 <Vorpal> is it just a Norwegian BOM?
00:49:35 <nortti> who can quess what this does before running it? http://ioccc.org/1987/korn.c
00:53:39 <ais523> nortti: purely from the year and filename, a hello world? (I haven't actually clicked the link, nor ever run the program)
00:55:48 <nortti> no
00:56:00 <nortti> main() { printf(&unix["\021%six\012\0"],(unix)["have"]+"fun"-0x60);}
00:56:06 <ais523> oh, that one
00:56:29 <ais523> I already know what it does, so I'll leave it to someone else
00:58:22 <oerjan> Vorpal: it's the kind of bøm which blows up things, i refer to the expertise of inspector clouseau on this matter
01:03:15 <nortti> once you realize what unix is and how it works it becomes pretty to understand
01:04:52 <oerjan> did you accidentally a word there or not
01:05:25 <ais523> it's a perfectly grammatical sentence as is
01:05:27 <ais523> and I rather like it
01:05:49 <ais523> (also, side effects of memes: "accidentally" has become a verb)
01:05:51 <oerjan> which is why i am unsure
01:06:15 <oerjan> verbing weirds language
01:06:26 <Vorpal> oerjan, oh okay
01:07:38 <Vorpal> <ais523> (also, side effects of memes: "accidentally" has become a verb) <-- Does OED recognize it as such though?
01:07:53 <ais523> who cares
01:08:00 <Vorpal> fair enough
01:08:59 -!- Bike has quit (Quit: leaving).
01:17:05 -!- c00kiemon5ter has quit (Quit: c00kiemon5ter).
01:17:21 -!- c00kiemon5ter has joined.
01:20:49 -!- Bike has joined.
01:30:19 <FireFly> nortti: heh, glorious, took me a while to get it
01:35:17 <zzo38> FireFly: I think I solved your Pokemon Card puzzle, but it seems to be win in three, not win in two.
01:36:36 -!- aloril has joined.
01:37:32 <zzo38> FireFly: Is it supposed to be like that?
01:38:22 <FireFly> Hm
01:38:33 <FireFly> No, but I might've missed something
01:38:38 <FireFly> What is your solution?
01:39:14 <zzo38> I didn't type it but I will and will send you the file.
01:39:34 <FireFly> All right
01:40:22 <coppro> where is the puzzle?
01:41:14 <zzo38> coppro: Same where the others are. http://zzo38computer.org/textfile/miscellaneous/pokemon_card/puzzle.4 Also look at puzzle.3 if you haven't done yet.
01:43:11 -!- WeThePeople has quit (Quit: Leaving).
01:43:41 <coppro> zzo38: what does 'rc' on the active pokemon mean?
01:44:10 <zzo38> coppro: It means recycle energy. FireFly failed to specify; in my puzzles I have made it more clear.
01:44:12 <FireFly> That's a recycle energy
01:44:18 <FireFly> Oh, oops.
01:44:52 * FireFly fixes it in his local copy
01:44:58 <coppro> what does it do, again?
01:45:15 <zzo38> coppro: It is described in the Card Data.
01:48:53 -!- mig22 has joined.
01:49:44 <coppro> FireFly: I concur with zzo38; the game cannot be won in two turns assuming optimal play by the opponent
01:49:56 <coppro> FireFly: because the Charmander has insufficient energy
01:50:20 <coppro> in fact, I do not know if it is winnable at all
01:51:02 -!- aloril has quit (Ping timeout: 276 seconds).
01:51:14 <coppro> actually, yeah
01:51:41 <coppro> I think it isn't solvable
01:52:03 <zzo38> Will this work? http://sprunge.us/OYeR
01:52:05 <FireFly> Note Charizard's Energy Burn, which allows you to turn the double colorless energy into providing 2x { M } (after it's been attached)
01:52:15 <coppro> FireFly: no, it provides only one
01:52:22 -!- c00kiemon5ter has quit (Quit: c00kiemon5ter).
01:52:23 <coppro> pretty sure
01:52:28 <coppro> although I'm not up on the Pokemon rules
01:52:38 -!- c00kiemon5ter has joined.
01:52:40 <zzo38> coppro: Does it? I thought it provided two, but even if it does I don't see how to win in two turns.
01:53:10 <zzo38> (It says "all energy" rather than "all energy cards", so I am assuming it is two.)
01:53:17 <coppro> ah
01:53:19 <coppro> hmm
01:53:26 -!- mig22 has quit (Ping timeout: 252 seconds).
01:53:37 <coppro> FireFly: I could do it in two if the Gust of Wind were the one that swaps *your* pokemon
01:53:48 <zzo38> Do you mean SWITCH?
01:54:01 <coppro> yeah
01:54:25 <FireFly> Oh, darn
01:54:26 <coppro> The problem is Sticky Goo
01:54:36 <coppro> You can't swap the Rattata out
01:55:08 <zzo38> Did you look at puzzle.3?
01:55:16 <coppro> not yet
01:55:34 <zzo38> coppro: Do you need to activate Rattata?
01:55:56 <coppro> zzo38: don't you need it to be active to use its power?
01:56:11 <FireFly> I think I screwed up when choosing pokemon for the opponent to have in play
01:56:12 <coppro> trickery
01:56:19 <FireFly> No, powers could be used from the bench
01:56:23 <coppro> oh ok
01:56:23 <zzo38> coppro: No. Unless it says it needs to be active, it does not have to be.
01:56:27 <coppro> ok
01:56:50 <coppro> there's still a reason, though. Rattata can survive an attack from the Dark Muk
01:57:10 <coppro> so Gust of Wind isn't required
01:57:13 <zzo38> That is true; and I have seen that.
01:57:14 <coppro> you still can't retreat though
01:57:34 <FireFly> Yeah, you're lacking one energy to be able to retreat, due to sticky goo
01:58:34 <zzo38> Does the solution I gave have any errors in it?
02:00:05 -!- DHeadshot has joined.
02:00:17 <FireFly> I can't spot any, at least
02:00:19 <FireFly> Hmm
02:00:43 -!- c00kiemon5ter has quit (Quit: c00kiemon5ter).
02:00:54 <FireFly> Maybe we should just relabel it to be win-in-three instead
02:00:55 -!- c00kiemon5ter has joined.
02:01:01 -!- mig22 has joined.
02:01:38 <zzo38> OK.
02:03:08 <zzo38> What I generally do in my puzzles is to limit the number of cards in your draw pile instead.
02:03:37 <FireFly> That's also an approach I guess
02:04:01 <FireFly> Btw, have you finished PTCG GB2?
02:04:57 <zzo38> FireFly: Yes, I have won the game, however I have not beaten the computer 100 times, yet.
02:19:44 -!- Vorpal has quit (Ping timeout: 246 seconds).
02:34:26 -!- nys has quit (Read error: Connection reset by peer).
02:34:46 -!- nys has joined.
02:36:53 <FreeFull> I was thinking, you can only encode balanced trees in terms of lists within lists, right? The type system wouldn't allow unbalanced ones
02:37:24 <shachaf> There are lots of ways of encoding balanced trees that don't involve lists.
02:37:34 <shachaf> Well, it depends on how broad your meaning of "list" is.
02:38:04 <oerjan> FreeFull: you can use an empty list at any level to stop there, that's what lambdabot's Tree does
02:38:09 <oerjan> :t Node
02:38:10 <lambdabot> a -> Forest a -> Tree a
02:38:10 <FreeFull> Actually, the list wouldn't store the values at the various nodes that have children
02:38:14 <FreeFull> Just at the leaves
02:38:27 <oerjan> ah ok
02:38:58 <FreeFull> You probably could store the values at nodes if you got tuples involved
02:39:33 <oerjan> FreeFull: note that even if all leaves have the same depth (as using a fixed nesting level of lists would do) that still says nothing about the _number_ of leaves in each branch
02:39:47 <oerjan> so it can still be grossly imbalanced in that way
02:40:03 <zzo38> If it only at the leaf then you have (Free []), I think
02:40:13 <oerjan> but there are many ways of encoding trees as a Haskell datatypes, some autobalancing, some not
02:40:21 <oerjan> *-a
02:40:22 <zzo38> Although that isn't balanced
02:40:28 <FreeFull> oerjan: Oh yeah
02:40:30 <FreeFull> I didn't think of that
02:40:57 <FreeFull> How would you encode an autobalancing one?
02:41:01 <shachaf> hi zzo38
02:41:15 <shachaf> zzo38: what's the best comic strip (other than calvin and hobbes)
02:41:26 <zzo38> shachaf: I don't know
02:41:30 <FreeFull> print [[3,4],[5]]
02:41:33 <FreeFull> > print [[3,4],[5]]
02:41:34 <lambdabot> No instance for (GHC.Show.Show (GHC.Types.IO ()))
02:41:35 <lambdabot> arising from a use of ...
02:41:35 <shachaf> zzo38: IN YOUR OPINION
02:41:43 <FreeFull> > [[3,4],[5]]
02:41:44 <lambdabot> [[3,4],[5]]
02:41:50 <zzo38> Even in my opinion, I don't know.
02:42:01 <FreeFull> halvin and cobbes
02:42:31 <shachaf> halvin' calvin
02:42:41 <shachaf> modern-day zeno?
02:43:38 <oerjan> FreeFull: well for example a full binary tree can be encoded as Tree a = Leaf a | Branch (Tree (a,a))
02:44:09 <shachaf> Non-uniform data types: THE DEVIL?
02:44:24 <shachaf> Polymorphic recursion: THE DEVIL?
02:44:26 <FreeFull> oerjan: Not necessarily balanced though
02:45:25 <kmc> yes it is
02:45:42 <kmc> it is a complete binary tree with exactly 2^n elements
02:45:54 <FreeFull> Can you give an example usage?
02:46:06 <FreeFull> How do you use the Branch constructor?
02:46:08 <kmc> it's either Leaf a or Branch (Leaf (a,a)) or Branch (Branch (Leaf ((a,a),(a,a)))) or etc.
02:46:28 <shachaf> It encodes the log of the number of elements as a peano natural.
02:46:34 <kmc> it's a bitmisleading to call it 'Branch' imo
02:46:50 <kmc> because there is only one value under that Branch constructor
02:46:52 <oerjan> OKAY
02:47:12 <oerjan> i got a bit confused during writing that, but it ended up in the right form
02:47:13 <shachaf> kmc: It's foreshadowing branches yet to come.
02:47:14 <kmc> FreeFull: it's an usual sort of type because it invokes itself recursively at a different type than it was 'called' with
02:47:33 <FreeFull> Is (a,a) a tuple here?
02:47:39 <shachaf> Yes.
02:47:40 <kmc> yes a pair
02:47:48 <oerjan> also, this is a full binary tree, but i believe you can modify the (,) parts to make it e.g. a red-black tree instead.
02:48:06 * shachaf thinks non-uniform data types are "pretty cool if i do say so myself" but also rather tricky to work with.
02:48:22 <kmc> you should check out edwardk's finger trees talk: http://comonad.com/reader/2010/finger-trees/
02:48:31 <shachaf> I saw those slides.
02:48:47 <oerjan> ah yes finger trees use such a trick as well
02:48:49 <shachaf> I went through the exercise. They were trickier than they seemed.
02:49:02 <kmc> it has a type for ensuring that a 2-3 tree has the right properties
02:49:16 <oerjan> i don't recall if they're autobalanced by type though
02:49:29 <shachaf> Inferring polymorphic recursion is undecidable, too, I'm told.
02:49:51 <shachaf> I should learn about type checking and things.
02:49:59 <FreeFull> All the ( and ) get confusing
02:50:36 <shachaf> FreeFull: A tree is of the form Leaf a or Leaf (a,a) or Leaf ((a,a),(a,a)) or so on.
02:50:52 <shachaf> Well, the bottom of the tree is.
02:50:56 <shachaf> The number of tuples is decided by the number of Branch constructors.
02:51:08 <shachaf> Have you seen FunList?
02:52:15 <oerjan> shachaf: well haskell doesn't even try inferring it
02:52:24 <shachaf> data Bazaar a b t = Buy t | Trade (Bazaar a b (b -> t)) a
02:52:35 <shachaf> oerjan: Sure.
02:53:16 <FreeFull> shachaf: What sort of types would make sense for a, b and t here?
02:54:05 <shachaf> a and b could be the same type in the simple case.
02:54:16 <shachaf> So Int, Int, [Int]?
02:54:21 <shachaf> Char, Char, Text
02:54:29 <oerjan> i have a hunch that polymorphic recursion is the main thing preventing you from implementing haskell typeclasses entirely at compile time like i think C++ templates do
02:54:49 <elliott> C++ templates just inline everything, yes
02:54:49 <shachaf> What does jhc do about polymorphic recursion?
02:56:43 * oerjan thinks he's seen this discussed about jhc before but doesn't remember how it went
02:56:53 <oerjan> i don't know much about jhc
02:57:16 <shachaf> i love polymorphic recursion
02:57:20 <shachaf> it is so easy
02:57:45 <FreeFull> Speaking of completely unrelated things
02:57:57 <FreeFull> I need to write a fromInteger for my balanced ternary
02:58:30 <oerjan> hm...
02:58:34 <FreeFull> Or was it fromIntegral
02:58:40 * FreeFull checks
02:58:41 <oerjan> :t readInt
02:58:42 <lambdabot> Num a => a -> (Char -> Bool) -> (Char -> Int) -> ReadS a
02:59:42 <oerjan> > readInt 3 (`elem` "-0+") (\c -> case c of '-' -> -1; '0' -> 0; '+' -> 1) "0-+0-"
02:59:43 <lambdabot> [(-19,"")]
02:59:50 <oerjan> FreeFull: :)
03:00:18 <FreeFull> fromInteger
03:00:25 <oerjan> oh right
03:00:38 <oerjan> hmph
03:00:45 <Bike> :t fromInteger
03:00:46 <lambdabot> Num a => Integer -> a
03:01:05 -!- TeruFSX has joined.
03:01:11 <FreeFull> (fromInteger (3 :: Integer)) :: Double
03:01:15 <FreeFull> > (fromInteger (3 :: Integer)) :: Double
03:01:16 <lambdabot> 3.0
03:01:22 <oerjan> that was the wrong way of course
03:02:07 <oerjan> and the function the other way cannot be told to produce -1,0,1 digits
03:02:19 <oerjan> (showIntAtBase btw)
03:02:34 <oerjan> HOWEVER
03:03:02 <shachaf> oerjan: Can you figure out a type which is isomorphic to lists *AND* composable with (.)?
03:03:46 <oerjan> shachaf: isn't that what difference lists are supposed to be?
03:03:59 <shachaf> No, the type [a] -> [a] is much bigger than the type [a]
03:04:01 <FreeFull> I was planning to do it with `mod` and case matching, although that would be clunky
03:04:18 <oerjan> FreeFull: not _that_ clunky, surely?
03:04:21 <shachaf> oerjan: Feel free to substitute some other thing for lists, like monads.
03:04:22 <FreeFull> `? isomorphic
03:04:25 <HackEgo> isomorphic? ¯\(°_o)/¯
03:04:29 * oerjan was about to start writing it himself
03:04:42 <oerjan> shachaf: no particular idea
03:04:47 <FreeFull> oerjan: Slightly clunkier for balanced ternary than unbalanced ternary I think
03:04:57 <oerjan> FreeFull: yeah but hm i have an idea
03:05:10 <Bike> everything is represented internally as a bunch of bits. ipsofacto, arbitrary functions are both isomorphic to lists and composable with dot.
03:07:31 <shachaf> Thike
03:08:40 <FreeFull> oerjan: I wrote a function for adding two balanced ternary digits, and I have no idea if it could be terser or not
03:08:44 <FreeFull> Let me dpaste it
03:10:00 <oerjan> > let toBT 0 = ""; toBT n = c : toBT d where (d,m) = divMod (n+1) 3; c = head (show (d-1)) in toBT (-19)
03:10:01 <lambdabot> "----"
03:10:11 <FreeFull> http://dpaste.org/8CpZt/
03:10:15 <oerjan> oops
03:10:27 <oerjan> > let toBT 0 = ""; toBT n = c : toBT d where (d,m) = divMod (n+1) 3; c = head (show (m-1)) in toBT (-19)
03:10:28 <lambdabot> "-01-"
03:10:35 <shachaf> helloerjan
03:10:40 <shachaf> welcome back to #esoteric
03:10:48 <FreeFull> The first digit in the tuple is the result, the second is the carry
03:10:50 <oerjan> hi shachaf
03:11:46 <oerjan> FreeFull: the above does most of your fromInteger i think, you probably need reformatting
03:12:20 <tswett> PrimFunc (PrimSi PrimSort) PrimSort
03:12:21 <oerjan> > let toBT 0 = ""; toBT n = c : toBT d where (d,m) = divMod (n+1) 3; c = head (show (m-1)) in toBT (-1)
03:12:23 <lambdabot> "-"
03:12:28 <tswett> I think I may be prefixing my identifiers with "Prim" a little too much.
03:12:36 <oerjan> > let toBT 0 = ""; toBT n = c : toBT d where (d,m) = divMod (n+1) 3; c = head (show (m-1)) in toBT (1)
03:12:38 <lambdabot> "1"
03:14:12 <FreeFull> Hmm, [] might be a saner representation of zero over [Zero]
03:15:36 <oerjan> well i thought it was easier to fix that with a reformatting step if you needed it
03:16:40 <FreeFull> Although
03:16:55 <FreeFull> With my show instance, [] would just end up as an empty string
03:17:28 <FreeFull> Because I basically made a show instance for BTDigit and then used concatMap
03:17:50 <FreeFull> Easy to fix though
03:18:08 -!- lightquake has left ("Textual IRC Client: www.textualapp.com").
03:19:22 <FreeFull> oerjan: Do you think my addBTDigit does something wrong?
03:22:24 <oerjan> i think it gives the correct result, as for style i think it depends on what you are going for - speed, readability, shortness?
03:22:53 <shachaf> oerjan: so what do you think about lenses
03:22:56 <oerjan> seems readable enough, anyway
03:23:39 <oerjan> shachaf: lenses are a must for any aspiring astronomer
03:24:05 <shachaf> Computer science is no more about lenses than astronomy is?
03:25:02 <zzo38> I have heard of someone who made their own telescope lenses at home, without any professional anything. Someone thought they bought them from elsewhere, even though they made it at home.
03:25:46 <shachaf> What if they bought them from elsewhere, and lied about it?
03:26:18 <zzo38> It is possible, but unlikely, because they showed how they made the lenses, and try it and it works.
03:26:55 <oerjan> FreeFull: btw if you use the hpaste.org pastebin it can give automatic haskell style hints
03:27:21 <FreeFull> oerjan: Readability is nice
03:27:31 <FreeFull> It's hard to go wrong on speed for something this simple, right?
03:27:38 <oerjan> (although you can also use hlint yourself)
03:29:14 <oerjan> FreeFull: depends whether you want adequate speed or bleeding speed. in the latter case i wouldn't be competent to advise, anyway :P
03:30:02 <FreeFull> oerjan: It's not like I'm doing recursion or anything
03:30:22 <FreeFull> The only place I see where there might be a speed reduction is the min/max
03:32:00 <oerjan> FreeFull: indeed i suspect it would be faster if you wrote it as a case branch directly on the function without the min / max
03:32:07 <oerjan> which would be longer of course
03:32:26 <FreeFull> Well, conciseness and readibility is why I got the idea to use min/max =P
03:32:41 <oerjan> yep
03:33:25 <FreeFull> I wonder if there is a function Ord a => (a,a) -> (a,a) which would always put the smaller a in the tuple first
03:33:32 -!- DHeadshot has quit (Read error: Connection reset by peer).
03:33:45 <FreeFull> I don't think it's a common thing to do
03:33:49 -!- DHeadshot has joined.
03:34:09 <oerjan> FreeFull: you can do [x,y] = sort [a,b]
03:34:24 <oerjan> might be slower though, or not
03:34:54 <FreeFull> oerjan: probably slower =P
03:35:27 <oerjan> also, if you use Control.Arrow you have min &&& max
03:35:36 <oerjan> :t min &&& max
03:35:36 <lambdabot> Ord b => b -> (b -> b, b -> b)
03:35:41 <oerjan> oops
03:36:01 <oerjan> needs more spice
03:36:18 <FreeFull> Hmm, I don't see sort in http://www.haskell.org/onlinereport/standard-prelude.html
03:36:19 <oerjan> :t curry min &&& curry max
03:36:20 <lambdabot> (Ord b, Ord b2, Ord b1) => b -> (b1 -> (b, b1) -> (b, b1), b2 -> (b, b2) -> (b, b2))
03:36:25 <oerjan> sorry, _less_
03:36:31 <oerjan> :t uncurry min &&& uncurry max
03:36:32 <lambdabot> Ord c' => (c', c') -> (c', c')
03:36:52 <oerjan> FreeFull: it's in Data.List
03:37:05 <oerjan> @hoogle sort
03:37:06 <lambdabot> Data.List sort :: Ord a => [a] -> [a]
03:37:06 <lambdabot> Data.List sortBy :: (a -> a -> Ordering) -> [a] -> [a]
03:37:06 <lambdabot> Data.ByteString sort :: ByteString -> ByteString
03:37:12 <Bike> > (uncurry min &&& uncurry max) (4,9)
03:37:13 <lambdabot> (4,9)
03:37:18 <Bike> > (uncurry min &&& uncurry max) (9,7)
03:37:20 <lambdabot> (7,9)
03:37:35 <FreeFull> Oh right
03:37:41 <FreeFull> It's not in prelude
03:37:52 -!- aloril has joined.
03:40:37 <FreeFull> sort = sortBy compare
03:40:51 <FreeFull> sortBy is pretty large
03:40:52 -!- ChanServ has set channel mode: +o oerjan.
03:41:05 <shachaf> +oerjan
03:41:06 -!- oerjan has set channel mode: -b *!*@unaffiliated/phantom-hoover/x-3377486.
03:41:19 <shachaf> Phantom_Hoover was banned?
03:41:20 -!- oerjan has set channel mode: -b *!*sploknee@unaffiliated/phantom-hoover/x-3377486.
03:41:32 <FreeFull> :t (&&&)
03:41:33 <lambdabot> Arrow a => a b c -> a b c' -> a b (c, c')
03:41:35 <oerjan> yep
03:41:39 -!- oerjan has set channel mode: -o oerjan.
03:41:49 <FreeFull> Oh, it's arrow stuff. No wonder I never saw it, haven't looked at arrows yet
03:42:02 <shachaf> @arrow
03:42:02 <lambdabot> Swab the deck!
03:42:38 <Bike> is an Arrow just a thing like ->
03:42:49 <shachaf> Yes(ish).
03:42:55 <Bike> best answer
03:43:03 <monqy> an arrow is something weird nobody likes
03:43:04 <shachaf> banswer
03:43:10 <oerjan> in particular, (->) is an Arrow instance
03:43:11 <shachaf> Bike: listen to monqy
03:43:23 <oerjan> and probably the most used one
03:43:24 <Bike> monqy, i am prepared to receive thine wisdom.
03:43:30 <shachaf> monqy: ok now Bike is listening
03:43:32 <shachaf> say somethign wise
03:43:35 <Bike> oerjan: what is another one
03:43:35 <monqy> an arrow is something weird nobody likes
03:43:42 <shachaf> monqy: something else
03:43:45 <monqy> hmmmmm
03:43:49 <Bike> something about music?
03:43:51 <Bike> i like music
03:44:42 <monqy> i need more wise things to say i cant think of anything
03:45:22 <Bike> oh, meta. that's deep
03:45:31 <shachaf> monqy: something about oerjan?
03:45:46 <FreeFull> (->) is a lot of instances
03:45:46 <shachaf> like "oerjan's name starts with o. therefore all all things that end with o lead to oerjan"
03:45:49 <monqy> oerjan is norwegian, or so they say
03:46:04 <Bike> mønjanqy... or somethinig
03:46:49 <FreeFull> :t (uncurry min &&& uncurry max)
03:46:50 <lambdabot> Ord c' => (c', c') -> (c', c')
03:46:54 <FreeFull> Oh yeah
03:47:01 <FreeFull> :t (uncurry &&& uncurry)
03:47:02 <lambdabot> (a -> b -> c) -> ((a, b) -> c, (a, b) -> c)
03:47:17 <shachaf> monqy: did you know i'm your "third biggest fan"
03:47:26 <shachaf> or maybe fourth
03:47:28 <shachaf> not sure
03:47:40 <FreeFull> :t (\x y -> uncurry x &&& uncurry y)
03:47:41 <lambdabot> (a -> b -> c) -> (a -> b -> c') -> (a, b) -> (c, c')
03:47:51 <oerjan> Bike: Monad m => Arrow (Kleisli m)
03:48:02 <Bike> cool
03:48:25 <oerjan> newtype Kleisli m a b = Kleisli (a -> m b) iirc
03:48:26 <FreeFull> So Arrow pretty much covers everything you could do?
03:48:43 <shachaf> oerjan: You know how (forall c. (b -> m c) -> a -> m c) is like Kleisli but composable with (.)?
03:48:51 <FreeFull> Comonads obviously would be Arrow instances too
03:48:54 <elliott> what
03:48:58 <shachaf> Er, wait.
03:49:08 <shachaf> Well, yes?
03:49:19 <shachaf> (Except the type is too big!!!!!!)
03:50:38 <FreeFull> http://www.haskell.org/arrows/ I see haskell.org has a big arrow tutorial thing
03:50:48 <shachaf> FreeFull: Ignore arrows.
03:50:57 <shachaf> There's no point.
03:51:16 <Bike> I hear they're something weird nobody likes.
03:51:29 <monqy> what about all those libraries that use arrows!!! god knows why
03:51:37 <Bike> "They serve much the same purpose as monads -- providing a common structure for libraries -- but are more general." hahaha
03:51:57 <oerjan> shachaf: er not really.
03:52:25 <monqy> the point of arrows is stupid lambdabot 1liners
03:52:43 <monqy> and maybe jokes???
03:52:44 <shachaf> oerjan: Not really what?
03:52:50 <shachaf> monqy: i like jokes, tell me a joke
03:53:01 <monqy> "arrows"
03:53:27 <Bike> yeah i noticed it said artwork by cale. is this the cale of the infamously fabulous caleskell
03:53:54 <shachaf> Surely.
03:54:18 <oerjan> shachaf: not really know how.
03:54:37 <shachaf> oerjan: The same way (x ++) is like x, but composable with (.)
03:54:53 <FreeFull> Could you make arbitrary C code into valid haskell by adding something at the top of the file? No adding anything at the bottom
03:54:55 <oerjan> O KAY
03:56:10 <oerjan> FreeFull: i don't think so, you need an end marker for both template quasiquotes and comments
03:56:31 <oerjan> FreeFull: or wait, _maybe_ you could have an extra preprocessing directive
03:57:03 <oerjan> i don't know if ghc supports doing that from top pragmas without parsing the rest, though
03:57:42 <oerjan> it would certainly not be _portable_ haskell, anyway.
03:58:06 <FreeFull> A C string could just happen to contain, say, -}
03:58:22 <FreeFull> So the comment solution wouldn't work for all C code
03:58:57 <oerjan> it wouldn't work for _any_ C code which doesn't end with -} followed by valid haskell :P
03:59:01 <Bike> do you actually need this for something?
03:59:41 <shachaf> How about {-# OPTIONS_GHC -x c #-}
03:59:42 <shachaf> Or something.
04:02:16 <kmc> x={-5}; int main() { printf("C!\n"); } /* -} 0; main = putStrLn "Haskell!" -- */
04:02:17 -!- aloril has quit (Remote host closed the connection).
04:04:40 <oerjan> kmc: i don't think you can put that in front of arbitrary C
04:05:13 <kmc> it wasn't directly an answer to FreeFull's question
04:05:30 <Bike> just wanted to show off dat polyglot
04:05:45 <Bike> I didn't know {-5} was legal there, though.
04:06:36 <coppro> it's not
04:06:42 <oerjan> shachaf: -x c is static, so cannot be used in OPTIONS_GHC
04:06:52 <Bike> oh, well then.
04:06:57 <shachaf> oerjan: Oh.
04:08:01 <coppro> this is remedied, though, by using "int x [] =" which is valid in both languages
04:08:13 <oerjan> only dynamic ones
04:09:41 <FreeFull> int x [] = {-5}; int main() { puts("Yeah, C!"); return 0; } /* x -- */
04:10:11 <FreeFull> Wait, no
04:10:15 <FreeFull> int x [] = {-5}; int main() { puts("Yeah, C!"); return 0; } /* -} x -- */
04:10:44 <Bike> int x [] = x, perfect
04:11:16 <FreeFull> > int 3 [] where int x [] = {-5}; int main() { puts("Yeah, C!"); return 0; } /* -} x -- */
04:11:18 <lambdabot> <hint>:1:10: parse error on input `where'
04:11:25 <FreeFull> Stupid lambdabot
04:11:33 <oerjan> shachaf: -F might work
04:11:45 <Bike> FreeFull: you know i don't think that's valid c precisely?
04:12:28 <FreeFull> Bike: Well, not what I fed to lambdabot
04:13:30 <Bike> anyway is there some way you can make the haskell parser hang on the first line? that would "work"
04:14:43 <oerjan> FreeFull: {-# OPTIONS_GHC -F -pgmF yourProcessingProgram #-} should work if you make yourPreprocessingProgram munge the file appropriately.
04:16:13 -!- aloril has joined.
04:17:10 -!- impomatic has quit (Quit: impomatic).
04:21:19 * oerjan files away http://hackage.haskell.org/packages/archive/acme-inator/0.1.0.0/doc/html/Acme-Inator.html for future use
04:21:54 <shachaf> oerjan: Have you seen acme-php?
04:22:00 <oerjan> nope
04:22:03 <shachaf> http://hackage.haskell.org/packages/archive/acme-php/0.0.1/doc/html/src/Prelude-PHP.html
04:26:12 <oerjan> shachaf: am i correct this could be done _much_ more concisely with lenses?
04:26:25 <shachaf> @quote shachaf lens
04:26:26 <lambdabot> shachaf says: I'm not sure what your question is, but maybe lens is the answer.
04:26:53 -!- DHeadshot has quit (Read error: Connection reset by peer).
04:27:01 -!- DH____ has joined.
04:30:36 <olsner> hmm, my nose is a flute
04:32:15 <oerjan> shachaf: i sense this library may have some unfortunate corner cases.
04:33:48 -!- nys has quit (Quit: quit).
04:35:34 <olsner> might be fun trying to use the php prelude
04:37:40 <kmc> oerjan: quite like its name sake
04:37:43 <oerjan> shachaf: i think the foldr and elem functions might be a bit off
04:38:29 <shachaf> Is elem wrong?
04:38:36 <shachaf> Oh, that's what you mean.
04:38:44 <shachaf> Yes, I remember wondering about that.
04:38:48 <shachaf> I guess it's just another gotcha.
04:39:35 -!- DH____ has quit (Read error: Connection reset by peer).
04:40:05 -!- DHeadshot has joined.
04:43:57 <zzo38> Can we make a probabilistic Pokemon card puzzle where your chance to win is not 100% but you have to maximize it?
04:47:01 <ais523> zzo38: perhaps if you knew the opponent's deck, but not the order of cards in it
04:47:14 <ais523> or if the opponent's deck didn't matter, and you knew your deck, but not the order of cards in it
04:47:34 <ais523> (if you have a good memory, you always know your deck, and if you haven't used cards that manipulate deck order, you don't know the order)
04:47:55 <zzo38> ais523: Yes, those are some, but then there are also coin tossing
04:49:06 <zzo38> Maybe on can be made somehow involving Imakuni?'s card.
04:51:00 <shachaf> `? finland
04:51:01 <HackEgo> Finland is a European country. There are two people in Finland, and at least nine of them are in this channel. Corun drives the bus.
04:51:11 <shachaf> `? america
04:51:13 <HackEgo> america? ¯\(°_o)/¯
04:51:21 <shachaf> oerjan: how come america doesn't have a wisdom entry
04:55:14 <oerjan> `echo "This wisdom entry had to be removed due to a DMCA takedown notice." >wisdom/america
04:55:15 <HackEgo> ​"This wisdom entry had to be removed due to a DMCA takedown notice." >wisdom/america
04:55:17 <oerjan> `run echo "This wisdom entry had to be removed due to a DMCA takedown notice." >wisdom/america
04:55:20 <HackEgo> No output.
04:55:25 <oerjan> BETTER NOW?
04:55:53 <shachaf> `? united states
04:55:54 <HackEgo> united states? ¯\(°_o)/¯
04:56:57 <oerjan> `run echo "See America." | tee wisdom/usa >wisdom/'united states'
04:57:01 <HackEgo> No output.
04:57:11 <olsner> `? the us
04:57:13 <HackEgo> the us? ¯\(°_o)/¯
04:57:44 <oerjan> `run echo "The US is the country opposed to the THEM." >wisdom/'the us'
04:57:47 <HackEgo> No output.
04:58:04 <olsner> `? the them
04:58:06 <HackEgo> the them? ¯\(°_o)/¯
04:59:08 <Bike> an endless chain of cia world factbook lite
04:59:09 -!- DHeadshot has quit (Read error: Connection reset by peer).
04:59:27 -!- DHeadshot has joined.
04:59:27 -!- aloril has quit (Ping timeout: 260 seconds).
04:59:38 <oerjan> `run echo "Information on the THEM has been removed for national security reasons." >wisdom/'the them'
04:59:41 <HackEgo> No output.
05:00:57 <shachaf> `? north america
05:00:58 <HackEgo> north america? ¯\(°_o)/¯
05:01:00 <ais523> huh, do we add wisdom via creating the files directly?
05:01:05 <ais523> I thought there was a command
05:01:12 <Bike> learn?
05:01:19 <shachaf> ais523: The command can only create entries of a certain form.
05:01:31 <ais523> ah right
05:01:41 <shachaf> Of course, we *could* just make another command.
05:01:45 <shachaf> But that would be too easy?
05:02:30 <ais523> it wouldn't be much easier than `run echo
05:05:38 <zzo38> I have thought once, I wanted to make up a Pokemon card puzzle involving the Imakuni?'s cards, but I don't know how.
05:05:38 -!- DHeadshot has quit (Read error: Connection reset by peer).
05:06:38 <shachaf> `run >'hello there' echo helloerjan
05:06:41 <HackEgo> No output.
05:06:47 <shachaf> `cat hello there
05:06:49 <HackEgo> helloerjan
05:06:57 <shachaf> `rm hello there
05:07:00 <HackEgo> No output.
05:07:10 <coppro> oh good grief
05:07:26 <shachaf> Oh
05:07:28 <shachaf> Er.
05:07:32 <shachaf> Oh Nø
05:07:45 <coppro> "What is the single mechanism or dual mechanisms that allows a conduncting filament to grow in the vertical direction immediately after breakdown and then at a later time and with the reapplication of a higher current to undergo radial growth to a lower resistance state?"
05:07:53 <coppro> identify the object, subject, and verb
05:09:13 <olsner> the verb is 'identify', the subject is (implied) us, the objects are the object, subject and verb
05:10:05 <coppro> what
05:10:10 <coppro> that's not even... what
05:10:32 <olsner> happy to help!
05:17:10 * oerjan gives olsner a gold star for being helpful *
05:18:39 <oerjan> coppro: the verb is "is", which means there wouldn't be an object, and "What" is probably the subject. hth.
05:18:41 <Bike> coppro: the single mechanism..., what, is
05:18:57 <coppro> oerjan is correct
05:19:17 <oerjan> i don't remember the name in english of what goes on the other side of "is".
05:19:21 <coppro> subject predicate
05:19:54 <oerjan> i thought predicate included the verb
05:22:42 <coppro> sorry, subject predicat*ive*
05:22:55 * coppro grumbles about the choice of language by linguists
05:23:40 <oerjan> you just be happy they didn't choose chinese!
05:24:02 <Bike> chinese physics terms rock, though
05:24:58 <shachaf> `? denmark
05:25:00 <HackEgo> denmark? ¯\(°_o)/¯
05:25:09 <shachaf> ............
05:25:27 <Bike> `? maldives
05:25:29 <HackEgo> maldives? ¯\(°_o)/¯
05:25:35 <oerjan> i shall leave that to the danish esotericians present.
05:25:48 <olsner> there are no danes
05:25:53 <olsner> (are there?)
05:26:03 <oerjan> well they lucked out, then
05:26:36 <Sgeo> Why did it surprise me that Yogi Berra is still alive?
05:27:12 <monqy> hi sgeo
05:27:17 <Sgeo> hi
05:27:21 <monqy> how was the caffeine
05:27:29 <Bike> frankly i'm surprised that you're alive, after that trip of yours
05:27:35 <Sgeo> I think in the future it would be a bad idea to drink that much coffee
05:27:57 <monqy> maybe you'll get used to it
05:28:32 <Sgeo> Maybe it's terrifying that, even many hours later, my heart went from a normal rhythm to rapid beats for a few seconds
05:28:54 <oerjan> no more than six cups a day for you, young man!
05:30:16 <kmc> maybe you have a heart condition such that you should not consume caffeine
05:30:58 <elliott> maybe he does't
05:31:00 <elliott> *doesn't
05:32:02 <coppro> does anyone have source for a markov chain bot handy?
05:32:08 <coppro> we really need to have one trained on this channel
05:32:24 <oerjan> ^source
05:32:24 <fungot> http://git.zem.fi/fungot/blob/HEAD:/fungot.b98
05:32:27 <oerjan> HTH
05:32:53 -!- ogrom has joined.
05:32:55 <elliott> `? burma
05:32:56 <HackEgo> burma? ¯\(°_o)/¯
05:33:04 <elliott> `run echo "ask Bike" >wisdom/burma
05:33:08 <HackEgo> No output.
05:33:27 -!- ogrom has quit (Client Quit).
05:33:48 <oerjan> Sgeo: http://www.sheldoncomics.com/archive/121224.html
05:34:37 <elliott> Bike: tell me all there is to know about burma
05:34:55 <monqy> Sgeo: https://www.youtube.com/watch?v=dZ2q9NmYf6g
05:35:30 <Bike> elliott: There are whole fucking shittons of people there, almost as many mountains, and also some dictatorships.
05:36:03 <elliott> Bike: have you ever been to burma
05:36:09 <oerjan> Sgeo: be sure to read to the end hth
05:36:37 <elliott> monqy: yes i love lasanga cat....
05:36:39 <Bike> No, but one time I was at a place where some other people had once been to burma, and then had been to that place.
05:36:43 <Bike> monqy: Good, good.
05:36:51 <monqy> i love lasagna cat too
05:37:01 <oerjan> also i hear they are good at shaving
05:38:14 <elliott> monqy: what about infinite solutions
05:38:35 <Sgeo> I should probably eat food
05:40:03 <monqy> ive never heard of infinite solutions before, but how about wonderfulstories aka thejunkwizards
05:40:32 <monqy> oh maybe ive seen this before
05:40:37 <elliott> infinite solutions is by the same people as lasanga cat
05:40:43 <shachaf> monqy: what do you know about "equirecursive types"
05:40:50 <monqy> shachaf: i know the stuff
05:40:54 <shachaf> oh boy
05:40:57 <shachaf> the stuff
05:40:59 <shachaf> that's the stuff
05:41:07 <shachaf> can you tell me a bit about them
05:41:15 <Sgeo> `list
05:41:16 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: /hackenv/bin/list: Permission denied \ /home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: /hackenv/bin/list: cannot execute: Permission denied
05:41:23 <Sgeo> `cat bin/list
05:41:24 <HackEgo> echo Taneb atriq Ngevd Fiora nortti elliot
05:41:44 <monqy> shachaf: whats to know about them
05:41:52 <monqy> elliott: this infinite solutions thing is good
05:42:04 <elliott> it is
05:42:16 <shachaf> monqy: well if i knew i wouldn't ask right
05:42:27 <elliott> it looks like they deleted some of the videos :(
05:42:38 <Bike> trickster mode + ikeda -> something pretty weird
05:43:23 <oerjan> `run ls -l bin/list
05:43:24 <HackEgo> ​-rw-r--r-- 1 5000 5000 43 Jan 12 20:33 bin/list
05:45:06 <monqy> shachaf: like their definition or something specific about them or
05:45:10 <Sgeo> Look at his shirt
05:45:18 <shachaf> monqy: well i think i know the definition "more or less"
05:45:26 <shachaf> but like what happens when you allow them
05:45:33 <shachaf> is it "bad because too many things type check?"
05:46:33 <zzo38> Is there a three-dimensional Fourier transform?
05:47:31 <olsner> there should be
05:47:51 <Bike> http://en.wikipedia.org/wiki/Fourier_transform#Fourier_transform_on_Euclidean_space that was easy.
05:47:52 <oerjan> zzo38: you can apply a fourier transform to functions on R^3, if that is what you mean. any locally compact group works.
05:48:14 <zzo38> Actually I mean a discrete Fourier transform.
05:48:19 <oerjan> Z (giving series) and R are just the most common examples.
05:48:27 <Sgeo> `cat bin/list
05:48:28 <HackEgo> echo Taneb atriq Ngevd Fiora nortti elliot
05:48:31 <Sgeo> (Sound added)
05:48:32 <oerjan> zzo38: well Z^3 would also work
05:48:44 <zzo38> oerjan: OK.
05:49:02 <Bike> is Z^3 compact?
05:49:11 <oerjan> no, it's discrete
05:49:19 <Bike> right
05:49:28 <oerjan> any discrete _or_ compact group is locally compact
05:49:33 <Bike> Oh.
05:49:49 <oerjan> T = unit circle is a compact example, whose dual group is Z
05:49:51 <elliott> Sgeo: are you really going to cat out that program instead of making it work
05:50:03 <Sgeo> `run chmod a+x bin/list
05:50:04 <monqy> shachaf: there's also the thing where typechecking/inference/error-reporting gets a bit dumb
05:50:06 <HackEgo> No output.
05:50:21 <oerjan> oh hum it's T which gives series, which are of course just functions on Z.
05:50:28 <zzo38> Fourier transform is sometimes used on sounds and on pictures, so I thought, would it work on videos (with two spatial dimensions and one temporal dimension)?
05:50:31 <oerjan> starting with functions on Z gives you functions on T instead.
05:51:10 <Bike> zzo38: do you know about jpeg compression?
05:51:18 <zzo38> Bike: I know a few things about it.
05:51:53 <Bike> well, maybe asking about video compression would be better. i bet they use a lot of the same fouriery techniques.
05:52:25 <oerjan> zzo38: computer tomography is essentially using fourier transforms in 3 _space_ dimensions, do convert rays captured through your body into a 3-dimensional model of the inside
05:53:13 <zzo38> OK
05:55:49 <oerjan> *to
06:29:56 <Sgeo> http://mspabooru.com/index.php?page=post&s=view&id=83857 (arguably homestuck spoilers)
06:30:28 <coppro> Sgeo: it's the sort of spoiler that if you didn't say it was a spoiler, no one would know
06:36:08 <monqy> hi
06:38:11 <shachaf> `addquote <monqy> hi
06:38:20 <olsner> `quote hi
06:38:23 <HackEgo> 6) <Quas_NaArt> His body should be given to science. <GKennethR> He's alive :P <GreenReaper> Even so. \ 9) <Madelon> Lil`Cube: you had cavity searches? <Lil`Cube> not yet <Lil`Cube> trying to thou, just so I can check it off on my list of things to expirence \ 14) <fizzie after embedding some of his department research into fungot> Finally I ha
06:38:30 <shachaf> `quote <monqy>.*\bhi\b
06:38:32 <HackEgo> 733) <monqy> Sgeo: I used to have strict requirements for when I said hi but then everyone started saying hi and it all got weird \ 757) <Sgeo> hack and back? <Patashu> works on anything much slower than you <monqy> at the cost of: guilt, hating yourself, me sending you the message "hi" <Patashu> am I also forbidden to cast mephitic cloud and cb
06:39:46 <shachaf> `quote \bhi\b
06:39:48 <HackEgo> 152) <oklopol> comex: what? <oklopol> *vorpal <oklopol> comex: hi, tab-complete completed c to comex instead of Vorpal, dunno why \ 209) [on Walter Bright] <nddrylliog> I went to chat with him after his talk at the ELC and he was like "hum, right - humans. How do they work again... oh, hi!" \ 733) <monqy> Sgeo: I used to have strict requirements
06:40:09 <shachaf> monqy = Walter Bright?????
06:40:50 <monqy> no
06:43:02 <fizzie> monqy = just bright in general???
06:43:26 <monqy> a mystery
07:19:20 -!- oerjan has quit (Quit: leaving).
07:21:15 -!- zzo38 has quit (Remote host closed the connection).
07:50:11 -!- Bike has quit (Quit: t hurts).
08:14:09 -!- ogrom has joined.
08:19:07 <fizzie> Oh it is so sparkly, https://dl.dropbox.com/u/113389132/Misc/20130112-icicles2.jpg
08:19:57 -!- epicmonkey has joined.
08:20:06 <fizzie> (Taken yesterday, it's decidedly less sparkly today.)
08:20:38 <ais523> `quote 757
08:20:45 <HackEgo> 757) <Sgeo> hack and back? <Patashu> works on anything much slower than you <monqy> at the cost of: guilt, hating yourself, me sending you the message "hi" <Patashu> am I also forbidden to cast mephitic cloud and cblink <monqy> i will also send you "hi" if you: kite excessively, use mephitic cloud, -yes
08:20:55 <fizzie> (Or arguably it's as sparkly but less sunny.)
08:21:31 <fizzie> I don't understand the 757.
08:21:41 <monqy> it's not a very good quote
08:21:49 <ais523> fizzie: it's a reference to Crawl, the computer game
08:22:12 <ais523> this also explains the meme of me getting annoyed when elliott says "hi" to me, because I'm intentionally misinterpreting it as a monqy-style hi
08:22:12 <fizzie> Oh, that explains why it didn't make sense.
08:22:21 <ais523> basically if he says hi to you unsolicited, he disapproves of what you're doing
08:22:30 <ion> I know mephitic cloud, but what’s kiting?
08:22:37 <ais523> either that or he's trying to start a conversation
08:22:51 <ais523> ion: general battle tactic (mostly used in computer games, but can also work in real life) where you both outrange and outrun someone
08:23:03 <ais523> it involves repeatedly firing at them and then running away
08:23:03 <ion> Ok, thanks
08:23:36 <fizzie> ais523: Have you tried it out in real life?
08:24:06 <ais523> fizzie: no; I'm not that fast a runner, and don't own effective ranged weapons, and tend not to get into fights, and am unwilling to kill people
08:24:17 <ais523> so opportunities have been limited
08:25:05 <fizzie> I suppose there's the conversational version where you shout insults and then run away.
08:25:06 <ais523> I guess the real life equivalent of pillar dancing would be that, but running round and round in circles around a gun store, and every time you reach the entrance you stop to buy more ammo
08:25:29 <ais523> fizzie: that's not quite the same because it relies on reaction time, rather than limited range, to avoid getting shot back at
08:26:09 <fizzie> It could be a range thing if you can shout (much) louder.
08:27:35 <fizzie> Though I suppose generally the insultee would not maybe start to chase you. (Perhaps depending on the insult.)
08:27:48 -!- Taneb has joined.
08:30:16 <quintopia> i approve of this conversation
08:32:22 <fizzie> Complaint of the day: this client does not support an encoding fallback, so on one channel where half the people use ISO-8859-1 and half UTF-8 it's either full of mojibake or Unicode replacement characters. (And the encoding setting is per-connection, not per-channel.)
08:32:36 <Sgeo> I feel like a wreck
08:32:50 <Sgeo> I think I'm going to lay off the caffeine for a while
08:33:04 -!- aloril has joined.
08:34:13 * Sgeo can't figure out how to upgrade this obsolete Linux distro
08:34:28 <Sgeo> And I really want to run modern LyX but because of this I can't
08:34:41 <monqy> woops!!
08:34:53 <fizzie> Which one is it?
08:35:44 <quintopia> i still use a two year old lyx
08:35:52 <quintopia> what's so much better about today's
08:36:03 <monqy> modern or something
08:36:33 <Sgeo> 10.10
08:36:39 <quintopia> ha
08:36:49 <Sgeo> So the next Ubuntu in my upgrade path is also End of Life
08:36:53 <fizzie> There was quite a large improvement in LyX between some versions a few years back.
08:37:03 <quintopia> i'm using 10.04 :P
08:37:56 <quintopia> wait how can they not upgrade you all the way?
08:38:38 <ion> sgeo: Just reinstall, it’ll be faster.
08:39:00 <Sgeo> Hmm, there's some sort of old releases thing
08:40:23 <fizzie> I'd probably also just reinstall. But I'm sure it can be done. Somehow.
08:40:53 <Sgeo> There's an old-releases thingy
08:41:17 <quintopia> reinstalling would be a bitch and a half for me, but i know i'll have to do it eventually ;_;
08:41:18 <ion> You can upgrade using an unsupported update path (i.e. skip over releases in the supported path) manually, but you get to keep the parts when it breaks. :-P
08:41:52 <fizzie> But can the upgrade manager use the old-releases thingy?
08:41:54 <Sgeo> deb http://old-releases.ubuntu.com/ubuntu/ CODENAME main restricted universe multiverse
08:42:13 -!- aloril has quit (Ping timeout: 245 seconds).
08:45:25 <fizzie> When Ubuntu on PowerPC went from Canonical-supported to community-supported, and consequently was left out of most mirrors, all updates got real slow.
08:45:54 -!- aloril has joined.
08:46:27 <Sgeo> Maybe at least I can get new LyX on here, even if the 11.04 idea isn't working out
08:52:36 <fizzie> You can always just compile one from the official sources.
08:53:22 <fizzie> I have a vague feeling I did that when our workstations at work were stuck with a really old Ubuntu.
08:57:27 -!- aloril has quit (Ping timeout: 260 seconds).
08:59:49 <Sgeo> LyX works
09:00:51 -!- aloril has joined.
09:18:53 -!- Nisstyre-laptop has quit (Quit: Leaving).
09:26:26 -!- AnotherTest has joined.
09:26:32 <AnotherTest> Hello
09:30:24 <fizzie> OH NO!
09:31:01 <fizzie> (No reason.)
09:40:17 -!- DHeadshot has joined.
09:48:03 <elliott> fizzie: RIP.
09:49:34 <fizzie> Rip and tear.
09:50:18 <fizzie> I can't stop typing stupid stuff just because I like this swipe action so much.
09:50:51 <fizzie> It draws this decaying track kind of thing when I do.
09:52:12 <fizzie> (My first time using a swipeable touchscreen keyboard. If you couldn't tell.)
09:55:30 -!- sebbu has quit (Read error: Connection reset by peer).
09:55:57 -!- sebbu has joined.
10:23:38 -!- Vorpal has joined.
10:24:15 <Vorpal> Is there a file system that works well on windows and linux that supports files larger than 4 GB?
10:24:37 <Vorpal> last I looked exFAT was a mess on linux, and I presume NTFS is not rock solid still?
10:32:51 -!- Fiora has joined.
10:57:13 <fizzie> I was under the impression that NTFS works reasonably these days.
10:57:54 <ais523> NTFS has a different featureset from, say, ext4
10:58:03 <fizzie> With ntfs3g. Or something. It's worked well enough for me, though I haven't used it much.
10:58:11 <ais523> but I haven't had problems reading from and writing to an NTFS partition just with this Ubuntu default install
10:58:27 <ais523> (and holding large files is the purpose I use that partition for, as well as holding an install of Windows just in case)
11:09:44 -!- sirdancealot has joined.
11:16:05 <fizzie> The NTFS partition where the Windows is installed on the laptop is what I use for transferring data too on the dual-boot laptop, also with a standard Ubuntu install. (Which I believe does use ntfs3g.)
11:16:31 <fizzie> Or ntfsprogs was combined with it. Or something.
11:17:02 <fizzie> I don't know, It Just Works.
11:19:49 <Vorpal> hm
11:20:43 <Vorpal> okay
11:20:54 <Vorpal> might be worth trying then
11:21:10 <fizzie> Just don't blame me when it eats your data.
11:21:23 <Vorpal> or not :P
11:21:43 <Vorpal> fizzie, I need something to use on an external HDD for backup that will be used from both windows and linux
11:22:16 <fizzie> Haven't heard of any data-loss bugs with it or anything, it was just a standard disclaimer.
11:22:23 <Vorpal> true
11:34:26 -!- monqy has quit (Quit: hello).
11:43:49 -!- sploknee has joined.
12:09:59 -!- epicmonkey has quit (Ping timeout: 272 seconds).
12:58:08 -!- carado has joined.
13:33:07 -!- sploknee has changed nick to Phantom_Hoover.
13:33:32 -!- Phantom_Hoover has quit (Changing host).
13:33:33 -!- Phantom_Hoover has joined.
14:19:55 <fizzie> A modest proposal: since "const int foo = 100;" doesn't make a constant integer expression in C, and macros are evil, let's start using "const char foo[100]; ...(sizeof foo)..." for compile-time constants from now on. (Insert here an argument against enums.)
14:23:37 <elliott> fizzie: nobody can argue a cause like you do
14:24:22 <Taneb> I don't understand C
14:24:51 <Taneb> Is it right that in 2013 we still need to tell computers exactly how to do something?
14:29:02 <fizzie> Doesn't Haskell solve that issue?
14:30:46 <fizzie> Or Prolog, where you just specify goals. That sounds nice!
14:31:16 <FreeFull> Computer, make me a sandwich
14:32:06 <elliott> fizzie: Unfortunately Prolog doesn't work for those who have yet to find meaning in life.
14:34:08 <fizzie> What I learned on the Prolog course is that it's a good language if you need a thing that can say "No" a lot.
14:34:53 <Phantom_Hoover> `addquote <fizzie> What I learned on the Prolog course is that it's a good language if you need a thing that can say "No" a lot.
14:35:01 <HackEgo> 913) <fizzie> What I learned on the Prolog course is that it's a good language if you need a thing that can say "No" a lot.
14:35:53 <Taneb> > repeat "no"
14:35:54 <lambdabot> ["no","no","no","no","no","no","no","no","no","no","no","no","no","no","no"...
14:36:09 <Taneb> @faq Can Haskell say "No" a lot?
14:36:10 <lambdabot> The answer is: Yes! Haskell can do that.
14:36:21 <Phantom_Hoover> but what if you occasionally want it to say yes
14:36:45 <Taneb> > cycle (replicate 30 "No" ++ ["Yes"])
14:36:47 <lambdabot> ["No","No","No","No","No","No","No","No","No","No","No","No","No","No","No"...
14:37:07 <Taneb> > take 10 $ filter (== "Yes") $ cycle (replicate 30 "No" ++ ["Yes"])
14:37:09 <lambdabot> ["Yes","Yes","Yes","Yes","Yes","Yes","Yes","Yes","Yes","Yes"]
14:38:28 <FreeFull> What are you trying to do
14:38:42 <Taneb> Who knows
14:38:59 <Taneb> Who "no"'s indeed
14:39:59 <Taneb> One of my friends is entering a competition where the prize is "you go to space. And probably come back"
14:40:34 <Taneb> Anyone feel like voting for him?
14:41:01 <fizzie> Can you get your money back if you don't come back?
14:41:09 <Taneb> Yes!
14:41:14 <Taneb> Also free deoderant!
14:41:29 <fizzie> I suppose he's not paying though. If it's a prize.
14:41:36 <Taneb> https://www.lynxapollo.com/en_GB/48041/jonnie-barnes
14:42:31 -!- ais523 has quit.
14:49:04 -!- ogrom has quit (Quit: Left).
15:02:28 -!- epicmonkey has joined.
15:07:46 <Sgeo> "We call on our local, state and federal governments to uphold our First Amendment right to free speech by vigorously enforcing all laws against obscenity."
15:10:56 -!- DHeadshot has quit (Read error: Connection reset by peer).
15:10:59 -!- augur has quit (Remote host closed the connection).
15:11:25 -!- DHeadshot has joined.
15:13:57 -!- DHeadshot has quit (Read error: Connection reset by peer).
15:14:25 -!- DHeadshot has joined.
15:35:20 * Sgeo wonders if he should try writing his resume in LaTeX rather than using LyX
15:35:40 <ion> You’re writing it in LaTeX when you’re using LyX.
15:36:17 <ion> Don’t forget about Markdown with some LaTeX additions, converted to LaTeX with pandoc.
15:38:10 <Sgeo> "In LaTeX, you have to set up each of the margins manually, which can seem tedious at first. "
15:38:13 <Sgeo> o.O
15:46:16 -!- DHeadshot has quit (Read error: Connection reset by peer).
16:16:27 <Sgeo> The sketch where they're debating how cheese is made made me realize I know nothing about cheese
16:20:12 <olsner> which sketch is that?
16:25:22 <Sgeo> It's in season 2 episode 3
16:25:30 <olsner> OK
16:37:12 <Taneb> Things that make translating C code into Haskell #3: global variables
16:38:05 <elliott> they sure do make it #3
17:19:29 <kmc> uh usually you use default margins or \usepackage{fullpage}
17:20:06 <Sgeo> kmc, ah, ok
17:20:49 <fizzie> ion: Have you seriously started to use proper ’s?
17:21:06 <ion> fizzie: A number of years ago, yes.
17:21:17 <fizzie> I have so not noticed that.
17:24:14 <kmc> <Taneb> Is it right that in 2013 we still need to tell computers exactly how to do something?
17:24:18 <kmc> no but fortunately it's not the case
17:24:35 <kmc> there are a lot of extremely popular high level languages
17:25:11 <kmc> you can find lots of people who are productively employed as programmers, and have no clue how things work below the layer of Ruby or even Drupal
17:25:21 <kmc> we may make fun of them, but this is basically a sign of progress
17:25:43 * Sgeo now worries that he might be one of those people
17:26:00 <Sgeo> I have some idea of ... how things operate on a C level I ... guess
17:26:05 <elliott> programming as lifestyle v. programming as tool
17:26:10 <Sgeo> Is C level even really a thing
17:26:10 <kmc> C is used a) for things that need that level of control, b) by people who don't know better, c) by people who think it proves they have the biggest hacker penis
17:26:12 <elliott> both problematic :(
17:26:25 <kmc> Sgeo: yes
17:26:50 <kmc> and C is not telling "exactly how to do something" either
17:27:11 <kmc> C compilers perform all kinds of transformations, and then the CPU performs more on the fly
17:27:12 <elliott> the main problem with C is that it impedes the progress that can be made even at the levels for which C is used
17:27:22 <elliott> should ban its use or something
17:27:25 <kmc> yeah
17:27:40 <kmc> it certainly should be possible to make a better systems programming language than C
17:28:01 <kmc> but it's hard to make one which is better by a large enough fraction to beat out the current lingua franca
17:28:12 <kmc> programming languages almost never succeed or fail on their technical merits
17:28:17 <Sgeo> There are several projects working on that, aren't there?
17:28:34 <elliott> it was a fairly depressing realisation for me that reading about Multics' design made me think it was a billion times better than Unix and that it was terrible that it was abandoned
17:28:51 <elliott> it means I really am doomed to vapourware Right Thing second-system syndrome
17:29:24 <ion> What are the highlights of its design?
17:29:49 <elliott> ion: well if you think of all the misfeatures unix has saddled us with then it basically just didn't do those
17:30:08 <elliott> single-level store rather than a separate limited filesystem for one
17:30:15 <Fiora> I remember reading a thing saying that one of the reasons why a lot of the C replacements haven't caught on is that many don't have easy linking with existing C code
17:30:36 <Fiora> ABI-wise and so on
17:30:43 <elliott> yeah
17:30:48 <elliott> I think Rust is explicitly trying to be compatible like that
17:31:18 <ion> I might have picked Rust for an embedded-ish project, but it doesn’t support Arm yet. :-(
17:31:19 <elliott> C++ has taken off at least! if you need a C replacement with all the mistakes carefully left intact and some new ones added on
17:31:41 <elliott> p.s. also not actually suitable for the exact same purposes as C
17:33:33 <ion> I tried to look for the current state of the art for thread IPC in C++ and gave up.
17:36:07 <FreeFull> Someone wrote an OS in haskell
17:36:10 <FreeFull> Not a very good OS
17:44:05 <copumpkin> what makes a good OS?
17:45:39 -!- Nisstyre-laptop has joined.
17:53:02 <ion> Steve
18:06:04 <fizzie> And how much Steve does an OS need?
18:21:03 <Vorpal> fizzie, one cubic meter of it
18:21:32 <AnotherTest> copumpkin: the only way to create a good OS is to let elliott make it
18:26:01 <fizzie> Sometimes I wonder what W|A profiling will say of me. (Context: just queried for "volume of human body".) ((It's only 0.066 cubic metres.))
18:26:45 <Fiora> apparently human bodies are very close to the density of water
18:26:48 <Fiora> which I guess makes sense
18:27:26 <shachaf> What codensity? I heard codensity was "cooler than density".
18:27:31 <fizzie> You need 15 bodies to make up a cubic metre of Steve, if people are what you're using.
18:27:43 <shachaf> I'm not sure why they have those names, though. Something from topology?
18:28:13 <Fiora> 1 cubic meter is apparently 22 fioras
18:28:54 <fizzie> Fiora: Did you do a quick water displacement experiment to figure out your volume?
18:29:19 <Fiora> http://www.aqua-calc.com/calculate/weight-to-volume I used this thing
18:29:48 <Fiora> ... water displacement experiment ...
18:29:55 <Taneb> Human body as 0.98 the density of water
18:29:58 <fizzie> The bath tub thing.
18:30:05 <Fiora> yeah, I know
18:30:07 <Fiora> I don't think my bath is big enough to fully submerge me
18:30:36 <Fiora> the emergency drain wouldn't let it get that deep I think
18:30:51 <Fiora> this is silly
18:31:12 <fizzie> You just need to liquify yourself first. Except then you could measure the volume much more easily.
18:31:24 <Fiora> but wouldn't that change the volume?
18:32:05 <fizzie> I suppose that depends on how you do it. I guess the empty spaces would at least get lost.
18:32:14 <Fiora> phase changes change volumes though, right?
18:32:40 <FreeFull> No, why would they do that?
18:32:48 <FreeFull> Oh wait
18:32:53 <Fiora> I mean, ice is less dense than water, right?
18:32:56 <FreeFull> You are talking about materials, not sound
18:32:59 <Fiora> as an example
18:33:10 <Fiora> pffff
18:33:23 <FreeFull> Yeah, in general phase changes change pressure/density/volume
18:33:27 <FreeFull> Especially liquid/gas
18:35:29 <fizzie> The W|A volume estimate was "as measured by water displacement; data based on sample of 521 people, age range 17-51 years".
18:36:03 -!- Bike has joined.
18:36:30 <fizzie> There's also the useful "corresponding quantities" box, which lets you know you can make a cube 40 cm across out of a person.
18:54:27 <Gregor> Ugh, watching Enterprise. Why.
18:54:34 <Gregor> "Your vessel is under quarantine. Prepare to be boarded."
18:54:44 <Gregor> Yeah, because that's what quarantine means. Fucking idiot.
18:55:06 <Bike> maybe the speaker wants to try out being quarantine! you know, just for shiggles
18:55:14 <Bike> being in*
19:02:40 <Sgeo> I should resume watching DS9
19:02:45 <Sgeo> And eat some food
19:02:51 <Sgeo> And keep doing LinkedIn stuff
19:03:24 <Sgeo> This one professor who I know would give me recommendations isn't on LinkedIn
19:04:26 <Bike> is linkedin the one that spams you constantly
19:06:09 <Sgeo> A lot of spammers pretend to be LinkedIn I think
19:06:51 <Sgeo> As far as LinkedIn itself being spammy... I never seem to bother unsubscribing from stuff, so I just ignore all the newsletters I'm subscribed to from various sources
19:06:55 <Sgeo> I have 5,696 unread emails
19:08:20 <Bike> so... the answer is yes?
19:09:27 -!- fungot has quit (*.net *.split).
19:09:28 -!- lambdabot has quit (*.net *.split).
19:17:25 <fizzie> I've heard SkillPages (which is kind of like LinkedIn except you're supposed to have some sort of a skill, presumably as opposed to having some sort of a profession) is spammy in the "asks you for address book permissions, spams invites to all your contacts" kind of way.
19:19:28 <Sgeo> Bike, I'm sure I could unsubscribe from the LinkedIn emails if I wanted
19:20:43 -!- impomatic has joined.
19:24:18 <Sgeo> Hmm
19:24:31 <Sgeo> I like how AdBlock Plus is trying to have an agreement with advertisers to allow "acceptable" adds
19:24:34 <Sgeo> *ads
19:25:10 <AnotherTest> trying to have an agreement = getting a lot of money?
19:25:36 <Sgeo> As in, "if the ads meet certain requirements, they will be let through"
19:26:32 <Bike> what requirements?
19:26:40 <Gregor> $$$
19:26:58 <Sgeo> https://adblockplus.org/en/acceptable-ads#criteria
19:27:38 <impomatic> I don't block ads
19:29:13 <Sgeo> I think it's a good idea to effectively encourage advertisers to use non-obtrusive ads
19:29:41 <Sgeo> If by default static, non-obtrusive ads are let through, if a majority of people are using this filter, those will be the only effective ads
19:29:51 <Sgeo> Contrast if all ads are blocked, then, there's a problem
19:32:45 <impomatic> I hate auto playing audio ads and pop-over ads, but apart from those I'm not too bothered.
19:33:34 <impomatic> I also hate ads disguised as content... e.g. paid blog posts.
19:45:49 -!- sebbu has quit (Ping timeout: 264 seconds).
19:52:46 -!- sebbu has joined.
19:52:46 -!- sebbu has quit (Changing host).
19:52:46 -!- sebbu has joined.
20:04:59 -!- sebbu has quit (Ping timeout: 272 seconds).
20:11:17 -!- zzo38 has joined.
20:12:22 -!- sebbu has joined.
20:12:22 -!- sebbu has quit (Changing host).
20:12:22 -!- sebbu has joined.
20:17:00 -!- sebbu has quit (Ping timeout: 272 seconds).
20:21:06 -!- copumpkin has quit (Ping timeout: 264 seconds).
20:21:25 -!- AnotherTest has quit (Quit: Leaving.).
20:21:37 -!- copumpkin has joined.
20:27:01 -!- copumpkin has quit (Ping timeout: 248 seconds).
20:27:38 -!- copumpkin has joined.
20:29:23 -!- sebbu has joined.
20:35:17 <Sgeo> O....k....
20:35:25 <Sgeo> I need to learn to bite my tongue sometimes
20:36:52 <FreeFull> impomatic: I can't say I've ever read a blog which had something like that
20:41:43 -!- epicmonkey has quit (Ping timeout: 272 seconds).
20:46:31 -!- azaq23 has joined.
20:46:40 -!- azaq23 has quit (Max SendQ exceeded).
20:59:41 -!- oerjan has joined.
21:01:26 -!- trout has quit (Quit: I found 1 in /dev/zero).
21:03:48 -!- sebbu has quit (Ping timeout: 264 seconds).
21:06:44 -!- TeruFSX has quit (Ping timeout: 246 seconds).
21:07:10 -!- asiekierka has quit (Excess Flood).
21:08:28 -!- sebbu has joined.
21:08:28 -!- sebbu has quit (Changing host).
21:08:28 -!- sebbu has joined.
21:09:30 -!- Vorpal has quit (Ping timeout: 276 seconds).
21:11:06 -!- asiekierka has joined.
21:11:50 <olsner> Sgeo: biting your tongue will only hurt you
21:30:09 <impomatic> FreeFull: I've come across a few... It's usually pretty obvious that it's a paid post.
21:30:22 <FreeFull> impomatic: What sort of blogs?
21:31:41 <c00kiemon5ter> like people pretending to be unrelated to some company but have a blog that all it talks about is how awesome that company's products are
21:31:43 <c00kiemon5ter> I guess
21:32:13 <oerjan> impomatic: While I'm sitting here drinking my delicious Coca-Cola zero®, I'd just like to point out I think the paid post problem is greatly overrated.
21:32:39 <impomatic> I've seen a few on photography blogs. Several posts about photography, then a random one about "dentists in cleveland" or something.
21:34:21 -!- lambdabot has joined.
21:34:39 <FreeFull> Lol
21:40:51 -!- sebbu2 has joined.
21:41:09 -!- sebbu2 has quit (Changing host).
21:41:09 -!- sebbu2 has joined.
21:41:23 -!- sebbu has quit (Ping timeout: 245 seconds).
21:41:35 -!- sebbu2 has changed nick to sebbu.
21:41:36 <c00kiemon5ter> well the best ad one could have is make his company a meme, these days
21:44:29 <Sgeo> Why am I looking at Smalltalk again
21:45:10 <FreeFull> Sgeo: Because it's the OO language?
21:45:42 <Sgeo> No I don't really care for OO, and especially not single-dispatch class-based OO
21:45:48 <Sgeo> I just really like the IDE I think
21:52:47 <olsner> http://www.reddit.com/r/haskell/comments/16iakr/what_happens_when_a_monad_violates_monadic_laws/ should have an answer in terms of burritos
21:52:55 <olsner> or not
21:56:27 -!- Taneb has quit (Ping timeout: 272 seconds).
21:58:26 -!- TeruFSX has joined.
21:59:33 -!- Arc_Koen has joined.
22:00:30 <Sgeo> `list
22:00:34 <HackEgo> Taneb atriq Ngevd Fiora nortti elliot
22:00:35 <Sgeo> ...
22:01:27 <Bike> ,,,
22:01:37 <impomatic> '''
22:02:20 <Sgeo> I AM NOT A LIAR
22:02:22 <Sgeo> http://www.mspaintadventures.com/trickster.php?s=6&p=007623
22:03:19 <zzo38> I liar is not believed even though he tell the truth.
22:13:29 <impomatic> It's just started snowing! :-)
22:14:46 <kmc> yay
22:15:02 <Arc_Koen> hmmmmmmm hello
22:18:08 -!- Arc_Koen has quit (Quit: Arc_Koen).
22:18:38 -!- monqy has joined.
22:19:11 <oerjan> <shachaf> What codensity? I heard codensity was "cooler than density". <-- on the flip side, density is oler.
22:19:20 <Sgeo> "How do I use the GNU Smalltalk REP-loop?"
22:19:30 <Sgeo> I think that is the first time I have ever seen the phrase "REP-loop"
22:19:38 <Bike> read-epl
22:19:50 <oerjan> r-eval-pl
22:19:56 <oerjan> re-print-l
22:21:00 <c00kiemon5ter> re-print-loop could be confusing
22:21:25 -!- Arc_Koen has joined.
22:21:53 <c00kiemon5ter> (as it tends to read as a 'loop' that 'print's 're'peatedly) .. or something
22:22:39 <oerjan> <Fiora> http://www.aqua-calc.com/calculate/weight-to-volume I used this thing <-- 1 dm^3 (liter) of water is about 1 kg. hth.
22:23:27 <oerjan> (in fact that was the original intended definition of kg)
22:23:39 <kmc> ...i just got a phone call from a number 1 digit off from my own number
22:23:43 <kmc> and they hung up immediately
22:25:09 <oerjan> ^ul (sp)S((o)S)(~:^~:^):^(ky!)S
22:25:18 <oerjan> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
22:25:28 <oerjan> fizzie: a ghost ate fungot!
22:25:28 -!- azaq23 has joined.
22:26:58 <fizzie> Oh no ho ho.
22:27:41 <fizzie> It is not a connecting.
22:28:57 <fizzie> I even tried to change servurs.
22:29:24 -!- fungot has joined.
22:30:03 <oerjan> ^ul (sp)S((o)S)(~:^~:^):^(ky!)S
22:30:04 <fungot> spoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo ...too much output!
22:30:27 <oerjan> somewhere out at infinity, a lonely ky! calls
22:31:17 <FreeFull> > x
22:31:19 <lambdabot> x
22:31:23 <FreeFull> > x * (y-y)
22:31:25 <lambdabot> x * (y - y)
22:31:44 <oerjan> FreeFull: it's a _very_ primitive symbolic type
22:31:59 <FreeFull> So no simplification
22:32:07 <FreeFull> > sin(x)
22:32:08 <lambdabot> sin x
22:32:38 <FreeFull> oerjan: What is it useful for?
22:32:57 <oerjan> demonstrating code
22:33:14 <oerjan> > foldr f a [x,y,z]
22:33:15 <lambdabot> f x (f y (f z a))
22:33:46 <FreeFull> > fmap f [1,2,3]
22:33:48 <lambdabot> Ambiguous type variable `b0' in the constraints:
22:33:48 <lambdabot> (GHC.Show.Show b0)
22:33:48 <lambdabot> ...
22:33:55 <FreeFull> > fmap f [x,y,z]
22:33:57 <lambdabot> Ambiguous type variable `b0' in the constraints:
22:33:57 <lambdabot> (GHC.Show.Show b0)
22:33:57 <lambdabot> ...
22:34:08 <oerjan> tends to require some explicit :: Expr here and there
22:34:17 <FreeFull> > fmap f [x,y,z] :: [Expr]
22:34:19 <lambdabot> [f x,f y,f z]
22:34:24 <oerjan> because f,g,h are so overloaded
22:38:57 <FreeFull> > let f x x = 2*x in f x x
22:38:58 <lambdabot> Conflicting definitions for `x'
22:38:59 <lambdabot> Bound at: <interactive>:1:7
22:38:59 <lambdabot> <in...
22:39:01 <FreeFull> > let f x x = 2*x in f y y
22:39:03 <lambdabot> Conflicting definitions for `x'
22:39:03 <lambdabot> Bound at: <interactive>:1:7
22:39:03 <lambdabot> <in...
22:39:11 <FreeFull> > let f x y = 2*x in f y y
22:39:12 <lambdabot> 2 * y
22:39:23 <FreeFull> Hrm
22:39:31 <FreeFull> How do you do Expr pattern matching
22:41:46 -!- nys has joined.
22:43:41 <oerjan> > let f v = case show v of "x" -> 1; _ -> v in map f [x,y,z]
22:43:43 <lambdabot> [1,y,z]
22:44:12 <oerjan> i'm not sure there's an intended way.
22:45:11 <oerjan> note that in let f x y = 2*x in f y y only the final two y's are actually Expr constants
22:45:35 <oerjan> the others are simply ordinary variables bound by the f declaration
22:47:13 <oerjan> > let f v | v == x = 1 | otherwise = v in map f [x,y,z]
22:47:14 <lambdabot> [1,y,z]
22:47:18 <oerjan> that works too
22:47:45 <oerjan> > (x+1) == (1+x)
22:47:47 <lambdabot> False
22:48:10 <oerjan> > (x+0) == x
22:48:11 <lambdabot> False
22:48:50 <shachaf> oerjan: Good point.
22:51:51 * oerjan finds the ntext
22:52:28 <shachaf> oerjan: Try this one:
22:53:00 <shachaf> Hmm, how did it go?
22:53:41 <oerjan> wat
22:54:53 -!- carado has quit (Ping timeout: 246 seconds).
22:55:17 <shachaf> I don't remember the really odd example.
22:55:19 <shachaf> But there's this.
22:55:24 <shachaf> > compare a (-a)
22:55:26 <lambdabot> LT
22:55:27 <shachaf> > compare x (-x)
22:55:28 <lambdabot> GT
22:55:48 <monqy> cute
22:55:49 <lambdabot> monqy: You have 3 new messages. '/msg lambdabot @messages' to read them.
22:56:23 <oerjan> "wat"
22:56:40 <shachaf> monqy: btw did you hear about the "latest advances in profunctor lenses"
22:56:51 <monqy> something about sharing
22:56:53 <oerjan> > compare a x
22:56:54 <lambdabot> LT
22:57:01 <oerjan> > compare (-a) (-x)
22:57:02 <lambdabot> LT
22:57:22 <shachaf> monqy: well that too
22:57:31 <shachaf> but also it's "pretty cool now??"
22:57:45 <shachaf> old profunctor lenses = worst thing ever
22:57:50 <oerjan> > sort [a,-a,x,-x]
22:57:52 <lambdabot> [a,negate a,negate x,x]
22:57:59 <shachaf> Aw.
22:58:02 <oerjan> ah of course
22:58:10 <monqy> what happened to profunctor lenses, what did you do, to them
22:58:14 <shachaf> There's a way of expressing it that doesn't involve explicitly negating.
22:58:25 <shachaf> monqy........thats classified..
22:58:41 <shachaf> "elliotts shame"
22:59:09 <shachaf> monqy: Remember when you were elliotts?
22:59:27 <monqy> vaguely
22:59:29 -!- asderca77 has joined.
23:00:16 <oerjan> monqy vaguely remembers all his past, future and simultaneous lives
23:00:31 <shachaf> And he remembers his dreams.
23:00:34 <shachaf> Not so vaguely.
23:00:37 <oerjan> ooh spooky
23:00:38 <shachaf> monqy: got any good dreams for us
23:00:48 <Bike> alt. some wise wisdom
23:00:59 <monqy> shachaf: only vaguely, this time
23:01:00 <shachaf> no..dreams only plz
23:01:03 <monqy> too vague for words!!
23:01:11 <shachaf> monqy: thats "pretty vague" imo
23:01:15 <shachaf> but can you get any vaguer
23:01:43 <monqy> maybe
23:01:52 <FreeFull> > compare a (-a)
23:01:53 <lambdabot> LT
23:02:09 <kmc> > compare a b
23:02:10 <FreeFull> Oh, shachaf already did that
23:02:10 <lambdabot> LT
23:02:13 <kmc> heh
23:02:16 <FreeFull> > compare compare compare
23:02:18 <lambdabot> No instance for (GHC.Classes.Ord (a0 -> a0 -> GHC.Types.Ordering))
23:02:18 <lambdabot> arisi...
23:03:26 <FreeFull> You know, one advantage of lisp over haskell, you can always treat functions as data, and can do things like displaying functions or reading functions in
23:03:54 <Bike> (< < <) is still wrong, sorry
23:04:05 <monqy> since when is that an advantage :-)
23:04:32 <shachaf> concision is equivalent to powerfulness monqy
23:05:28 <monqy> language with a primitive to solve sudoku. now that's power.
23:06:11 <zzo38> In Haskell though, you can also make up a data type, which can be used to make functions, although it does not have that normally.
23:06:52 <shachaf> Quick:
23:06:58 <zzo38> Treating functions as data to change parts of it can be useful though; but depending what you do, there might be other ways
23:06:58 <shachaf> What should p a b -> p (r,a) (r,b) be called?
23:07:06 <shachaf> edwardk wants to call it Strong.
23:07:11 <shachaf> I don't like that class??
23:07:27 <shachaf> class name
23:07:35 <Bike> Fucksterson
23:07:42 <monqy> "second" :-)
23:08:14 <shachaf> monqy: the class provides p a b -> (a,r) (b,r) too though.
23:08:34 <monqy> "(***)" :-)
23:08:36 <Bike> FirstOrSecond
23:08:39 <shachaf> Quick, edwardk will "ship" this as soon as he finishes cleaning up the haddocks!
23:08:48 <shachaf> Bike: More like FirstAndSecond!!
23:08:56 <Bike> :O
23:09:18 <zzo38> A category with *** making a monoid is called a tensor category, I think.
23:09:24 <Bike> how about just use some symbols
23:09:29 <Bike> "(*&*)"
23:09:38 <shachaf> zzo38: It doesn't have (***)
23:09:40 <shachaf> It's not a category.
23:09:54 <zzo38> I don't know why you don't like Strong, I think Strong is OK.
23:10:11 <FreeFull> :t (***)
23:10:12 <lambdabot> Arrow a => a b c -> a b' c' -> a (b, b') (c, c')
23:10:16 <shachaf> The same thing with Either is called Choice.
23:10:40 <monqy> "cochoice"
23:10:49 <FreeFull> > [1,2,3] *** [4,5,6]
23:10:49 <zzo38> Cochoice, perhaps?
23:10:51 <lambdabot> Couldn't match expected type `a0 b0' with actual type `[]'
23:11:07 <FreeFull> Wait
23:11:11 <FreeFull> Need something with two constructors
23:11:23 <FreeFull> No
23:11:26 <FreeFull> confused
23:11:30 <shachaf> zzo38: Well, it's been pushed to Hackage.
23:11:30 <zzo38> FreeFull: Such as, (->) is a tensor category too, can be use with ***
23:11:33 <shachaf> So Strong it is.
23:11:36 <zzo38> OK
23:12:23 <FreeFull> > ((\x y -> x*y) *** (\x y -> x+y))
23:12:24 <lambdabot> No instance for (GHC.Show.Show ((a0, a1) -> (a0 -> a0, a1 -> a1)))
23:12:25 <lambdabot> arisi...
23:12:37 <FreeFull> > ((\x y -> x*y) *** (\x y -> x+y)) (1,2)
23:12:39 <lambdabot> No instances for (GHC.Show.Show (a0 -> a0),
23:12:39 <lambdabot> GHC.Show.Sho...
23:12:49 <FreeFull> > ((\x y -> x*y) *** (\x y -> x+y)) ((1,3),(2,4))
23:12:50 <lambdabot> No instances for (GHC.Num.Num (t0, t1), GHC.Num.Num (t2, t3))
23:12:50 <lambdabot> arising fr...
23:12:59 <FreeFull> :t ((\x y -> x*y) *** (\x y -> x+y))
23:12:59 <Bike> > ((\x y -> x*y) *** (\x y -> x+y)) (1,2) 9
23:13:00 <lambdabot> (Num a1, Num a) => (a, a1) -> (a -> a, a1 -> a1)
23:13:00 <lambdabot> The function `(\ x y -> x GHC.Num.* y)
23:13:01 <lambdabot> Control.Arrow.*** (\ ...
23:13:06 <Bike> nice
23:13:42 <FreeFull> I'm confused about how you use ***
23:14:05 <shachaf> > ((+1) *** length) (4,"hello")
23:14:06 <lambdabot> (5,5)
23:14:34 <monqy> > const "hello" $ (***) *** (***)
23:14:35 <lambdabot> Ambiguous type variable `a0' in the constraint:
23:14:35 <lambdabot> (Control.Arrow.Arrow a0)...
23:14:38 <monqy> oh nooo
23:15:18 <FreeFull> shachaf: Why does the result take a tuple argument
23:15:24 <shachaf> @ty (***)
23:15:25 <lambdabot> Arrow a => a b c -> a b' c' -> a (b, b') (c, c')
23:15:37 <monqy> have fun explaining arrows
23:15:42 <monqy> "the true arrows joke"
23:16:04 <shachaf> monqy: well if you understand monads understanding arrows is just the next thing to do
23:16:08 <shachaf> "the next step in the progression"
23:16:10 <Bike> :k (->)
23:16:12 <lambdabot> * -> * -> *
23:16:15 <FreeFull> shachaf: Wouldn't comonads come first
23:16:26 <shachaf> FreeFull: The joke is that arrows are terrible
23:17:10 <zzo38> I also think Arrow is not so good, it should just have category, and then tensor category, and functor between categories, Arrow tries to put it together in the wrong way.
23:17:25 <shachaf> zzo38: We've figured out what the "true hierarchy" should look like.
23:17:49 <FreeFull> fmap (atob) somea
23:18:37 <FreeFull> What does $! do differently from $ ? Is it less lazy?
23:18:54 <zzo38> Haskell does not allow you do define class hierarchies in both ways; you cannot define a automatic superclass later on, or define splits and automatic subclass and combine and whatever like that!
23:19:08 <kmc> FreeFull: yes
23:19:09 <kmc> @src ($!)
23:19:09 <lambdabot> f $! x = x `seq` f x
23:20:29 <Bike> @src (->)
23:20:29 <lambdabot> Source not found. :(
23:20:31 <zzo38> Such as, (arr) is a functor from (->) to this other category, (***) defines a tensor category, etc, really they should be separate
23:21:07 <shachaf> zzo38: I agree completely.
23:21:45 <zzo38> And not all tensor categories have a functor from (->) and anyways you might want to define a functor from some other category.
23:22:13 <kmc> the arrow combinators are pretty useful if you specialize them to (->)
23:22:18 <kmc> but the Arrow generalization is crap
23:22:33 <shachaf> kmc: Our new generalization for lenses looks a whole lot like the Arrow methods.
23:22:39 <kmc> oh dear
23:22:39 <shachaf> Except split up differently.
23:22:43 <kmc> good
23:22:47 <zzo38> kmc: Yes, they are useful with (->) but still, they could be generalized but Arrow is the wrong way to do generalize.
23:23:10 <shachaf> We don't even want the Category superclass.
23:23:16 <shachaf> Lots of useful profunctors aren't categories.
23:23:30 <kmc> profunctor protip
23:23:44 <shachaf> Hah, our "id" method is called "tip"
23:23:50 <shachaf> We should call it "protip"
23:23:58 <FreeFull> :t fmap id
23:23:59 <lambdabot> Functor f => f b -> f b
23:24:59 <Sgeo> ..ok
23:25:02 <kmc> «id ≡ fmap id» is a functor law
23:25:05 <Sgeo> Programming from the debugger is weird
23:25:28 <Sgeo> How sane/insane is it to write a program in Smalltalk starting from the high level and just writing methods as the debugger keeps complaining?
23:26:54 <Bike> mm, pH of 10 or so, I'd say.
23:27:11 <shachaf> Sadly many functors don't satisfy that law.
23:27:13 <shachaf> Like (r ->)
23:27:18 <oerjan> Bike: pH of 10 isn't insane, just basic
23:27:25 <kmc> shachaf: due to strictness?
23:27:28 <shachaf> Yes.
23:27:28 <Bike> Exactly.
23:27:44 <kmc> haskellers tend to ignore that when talking about laws :)
23:27:52 <shachaf> True.
23:28:15 <shachaf> In lens we unsafeCoerce instead of using (foo . Newtype)
23:28:35 <monqy> :(
23:28:46 <shachaf> Even if you define strict composition, GHC doesn't manage to optimize (foo `dot` id) to foo.
23:28:55 <shachaf> I originally introduced the idea but now edwardk is a much bigger fan of it than I am.
23:28:57 <oerjan> fmap id = (.) id - how is that not id?
23:29:11 <shachaf> > ((.) id) undefined `seq` ()
23:29:13 <lambdabot> Ambiguous type variable `f0' in the constraint:
23:29:13 <lambdabot> (GHC.Base.Functor f0) ar...
23:29:26 <oerjan> hmph
23:29:27 <shachaf> > ((P..) id) undefined `seq` ()
23:29:28 <lambdabot> ()
23:29:30 <shachaf> thanks Cale
23:29:30 <Bike> "cool"
23:29:36 <monqy> caleskell is beauty
23:29:55 <shachaf> caleskell: more like annoyingskell??
23:31:45 <Bike> "hackskell" imo
23:32:03 -!- augur has joined.
23:32:15 <zzo38> Yes useful profunctors may be not categories, but, yet it is why I wanted to make Ibtlfmm to change a lot of things about the type classes to not have such problems as these.
23:32:38 <shachaf> monqy: btw edwardk shipped the new profunctors
23:32:40 <shachaf> with the name Strong
23:32:46 <zzo38> So one thing that would be needed for this, is kinds to also have constraints, as well as types.
23:33:09 <monqy> shachaf: yeah i need to install them if i want to install the new lenses because dependencies...
23:33:20 <shachaf> monqy: wait do you even install lenses
23:33:25 <shachaf> like lens HEAD??
23:33:28 <monqy> yes
23:33:30 <shachaf> wow
23:33:37 <shachaf> you're more "into lenses than i thought"
23:33:59 <shachaf> i guess it's monqy, lenxpert
23:34:53 <monqy> installed :0
23:35:01 * Sgeo freezes Pharo
23:35:29 <Sgeo> Turns out modifying stuff in order to let the declare inst var thingy redefine UndefinedObject is a bad idea
23:41:37 -!- impomatic has left.
23:48:48 -!- sirdancealot has quit (Remote host closed the connection).
←2013-01-12 2013-01-13 2013-01-14→ ↑2013 ↑all