←2013-03-07 2013-03-08 2013-03-09→ ↑2013 ↑all
00:00:06 <elliott> no difference between that and matching on lists really
00:00:35 <shachaf> elliott: Except lists have a magic syntax.
00:00:39 <Bike> And you can do that recursively, like case x of {Bar 0 xs -> ...; Bar n xs -> ...} works. Right?
00:00:47 -!- nooga has quit (Ping timeout: 255 seconds).
00:00:48 <shachaf> [x] meaning (x:[]), and so on.
00:01:04 <elliott> Bike: that's not really recursively, but yes
00:01:10 <elliott> oh you mean the 0 inside the n
00:01:13 <shachaf> elliott: Well, the definition of pattern matching is recursive.
00:01:15 <elliott> Bike: well you know how expressions are made out of more expressions
00:01:19 <Bike> yeah, i'm just thinking of the definition
00:01:25 <elliott> like if you write Bar 123 "abc" that's because in (Bar x y) x and y are expressions
00:01:26 <shachaf> data Foo = Bar Int String
00:01:33 <elliott> patterns are just like expressions in that manner
00:01:34 <Bike> "pattern = literal | constructor patterns" or some shit
00:01:36 <shachaf> When you match on (Bar x y), x and y are also patterns.
00:01:50 <elliott> pat = variable | literal | constructor_name pat ...
00:01:52 <shachaf> Bike: Or variables, or a bunch of other things.
00:02:03 <elliott> exp = variable | literal | constructor_name exp ... | exp exp (function application)
00:02:06 <elliott> and so on
00:02:17 <oerjan> ais523: i sense your correspondent is overly optimistic :P http://www.reddit.com/r/programming/comments/19kjr5/fizzbuzz_revisited_using_rust/c8qx721?context=3
00:02:34 <ais523> oerjan: I downloaded a copy just in case :)
00:04:22 <Bike> shachaf: What is there besides variables
00:04:24 <Bike> *?
00:04:30 <oerjan> `addquote <elliott> also did you learn Haskell yet <Bike> i think i've got most of it now what are these "type" things
00:04:33 <HackEgo> 980) <elliott> also did you learn Haskell yet <Bike> i think i've got most of it now what are these "type" things
00:04:51 <shachaf> Bike: @ patterns
00:04:54 <shachaf> Uh, other things.
00:05:06 <Bike> i'm only actually as far as comprehensions in lyah by the way, i just got bored about learning how to deal with linked lists for the seventh time
00:05:17 <shachaf> http://www.haskell.org/onlinereport/haskell2010/haskellch3.html#x8-580003.17
00:06:01 <nooodl_> > [3 | 3 <- [3,1,2,3,1]]
00:06:04 <lambdabot> [3,3]
00:06:15 <Bike> irrefutable patterns were those things y'all were mucking about with a few days ago, eh
00:06:29 <nooodl_> ^ i recently realized how this is a valid list comprehension because of how pattern matching works. it was enlightening
00:08:41 <Bike> I'm going to have a hard time thinking of "linear" as linear logic and not linear operators, and also what nooodl_ did there which i'm sure is extremely important
00:08:57 <elliott> it's not extremely important
00:09:03 <nooodl_> maybe this is a better example of how pattern matching in list comprehensions works:
00:09:05 <Bike> What!
00:09:07 <nooodl_> > [x | (0,x) <- [(0,1),(1,2),(0,3),(1,4)]]
00:09:07 <elliott> it matches every element of the list against 3, if it fails the pattern doesn't match
00:09:08 <lambdabot> [1,3]
00:09:10 <elliott> the end
00:09:14 <elliott> (and it "skips it")
00:09:19 <Bike> Oh. That's kind of weird.
00:09:36 <oerjan> > let [x1,x2,x3]@(_:test) = [1,2,3] in (x1,x2,x3,test)
00:09:38 <lambdabot> <hint>:1:15: parse error on input `@'
00:09:38 <shachaf> hooray, fail!
00:09:41 <elliott> > ["hello" ++ x | Just x <- [Nothing, Nothing, Just "hi", Just "bye", Nothnig]]
00:09:43 <lambdabot> Not in scope: data constructor `Nothnig'
00:09:43 <lambdabot> Perhaps you meant `Nothing' (impo...
00:09:46 <elliott> > ["hello" ++ x | Just x <- [Nothing, Nothing, Just "hi", Just "bye", Nothing]]
00:09:48 <oerjan> bah @ takes only a variable to the left
00:09:49 <lambdabot> ["hellohi","hellobye"]
00:09:50 <shachaf> fail "the best function"
00:09:54 <shachaf> oerjan: Ridiculous, eh?
00:10:17 <oerjan> shachaf: it is once you think about it, but i guess it doesn't come up much.
00:10:20 <elliott> oerjan: I think ski thinks it should take an expression to the left
00:10:27 <Bike> Should I ask how exception handlin works now or put it off hmmmmmmmmmm put it off
00:10:30 <elliott> or something
00:10:37 <elliott> Bike: there's no exceptions here
00:10:42 <elliott> at all
00:10:50 <Bike> er?
00:11:25 <elliott> ?
00:11:32 <Bike> no exceptions where
00:11:47 <shachaf> An expression?
00:12:07 <shachaf> elliott: fail is totally "throw an exception", man.
00:12:13 <shachaf> FSVO "exception"
00:12:20 <shachaf> "exception" can mean pretty much anything in Haskell.
00:12:39 <shachaf> foo :: Maybe Int -- foo either computes an Int or throws an exception
00:12:39 <Bike> lyah is going to tell me that this is not at all like your c++ man!! isn't it
00:12:57 <oerjan> elliott: an expression, how would that work?
00:13:00 <Bike> right monads
00:13:11 <nooodl_> "In the first versions of Haskell, the comprehension syntax was available for all monads."
00:13:14 <nooodl_> that sounds neat
00:13:34 <shachaf> nooodl_: It's back in GHC!
00:13:34 <nooodl_> (it's on the wiki page for "List comprehension")
00:13:35 <oerjan> > let x1:test@[x2,x3] = [1,2,3] in (x1,x2,x3,test) -- it can be rewritten anyhow
00:13:36 <lambdabot> (1,2,3,[2,3])
00:13:37 <elliott> oerjan: I forget, maybe I was wrong
00:13:38 <shachaf> -XMonadComprehensions
00:14:12 <nooodl_> shachaf: are they useful, though
00:14:24 <Fiora> Bike: what is it with nerds and language wars
00:14:48 <oerjan> > [x | x <- Just "test"]
00:14:50 <lambdabot> Couldn't match expected type `[t0]'
00:14:50 <lambdabot> with actual type `Data.May...
00:15:00 <Bike> I don't know. It's kind of boring. But also probably why I'm nominally learning Haskell.
00:15:01 <oerjan> not turned on in lambdabot :(
00:15:02 <shachaf> imo English is the worst
00:15:24 <shachaf> wanna wrestle on the floor about it
00:15:26 -!- quintopia has quit (Ping timeout: 245 seconds).
00:15:41 <Bike> haha.
00:15:44 <Fiora> how many millions of programmer-hours have been wasted debating C vs C++ <.<
00:15:46 <Bike> What are irrefutable patterns for?
00:15:58 <shachaf> Laziness.
00:16:17 <shachaf> Well, there are two "different" cases here.
00:16:25 <shachaf> The case where you have a sum type and the case where you don't.
00:17:19 <kmc> i choose the middle ground: C+
00:17:49 <Bike> microtones? i like microtones.
00:17:51 <Fiora> kmc, you need to study harder! you won't get into a good college with grades like those!
00:18:19 <Sgeo> kmc, I'm tempted to ask you how you think I did on my technical pre-screening thing
00:18:20 * Bike looks for half-sharp in unicode
00:18:45 <Fiora> "somewhat sharp"?
00:19:12 <Bike> It's halfway between natural and sharp. It comes up in tuning systems that aren't 12-TET.
00:19:27 <kmc> Sgeo: how would I know?
00:19:29 <Bike> http://en.wikipedia.org/wiki/File:Arabic_music_notation_half_sharp.svg You're failing me, Unicode.
00:19:31 <shachaf> They should make "S Sharp" and spell it ß.
00:19:41 <Sgeo> kmc, because I can link you to the questions and my responses
00:19:54 <oerjan> shaßaf
00:19:55 <shachaf> Bike: 1D12A MUSICAL SYMBOL DOUBLE SHARP [𝄪]
00:20:00 <shachaf> Close enough?
00:20:09 <shachaf> The sharp envelope paradox.
00:20:09 <Bike> 1/𝄪
00:20:15 <kmc> probably won't have time right now
00:20:18 <Bike> also: you know about how H is used in German muzik right
00:20:27 <kmc> F# A# ∞
00:20:41 <Bike> good album (except you used the wrong characters!!!!!)
00:20:44 <kmc> i know :(
00:20:48 <Sgeo> Oh, ok
00:20:52 <kmc> F♯ A♯ ∞ ?
00:21:00 <Bike> maybe
00:21:16 <shachaf> F≠
00:21:23 <shachaf> C≠, rather
00:22:11 <elliott> life tip talk about other gybe albums to avoid having to type the fucking thing otu
00:22:23 <elliott> this life tip comes at the low low cost of free
00:23:09 <Bike> I don't think I can remember any of the other album titles. I just kind of string together some words involving explosions or fire or death or just sort of making a low droning sound with my mouth, and figure that's close enough.
00:30:39 -!- HackEgo has quit (*.net *.split).
00:30:39 -!- Mathnerd314 has quit (*.net *.split).
00:30:39 -!- Fiora has quit (*.net *.split).
00:30:39 <kmc> elliott: that may be a life tip but would you call it a 'life hack'
00:30:40 -!- pikhq_ has quit (Read error: Connection reset by peer).
00:30:40 -!- pikhq has joined.
00:30:40 -!- lifthrasiir has quit (Ping timeout: 248 seconds).
00:30:42 -!- elliott has quit (Quit: Reconnecting).
00:30:45 -!- quintopia has joined.
00:30:45 -!- quintopia has quit (Changing host).
00:30:46 -!- quintopia has joined.
00:30:53 -!- elliott_ has joined.
00:30:53 <elliott_> kmc: life hack: call all your life hacks life tips
00:30:53 -!- elliott_ has changed nick to elliott.
00:31:06 -!- lifthrasiir has joined.
00:31:23 -!- elliott has changed nick to Guest79759.
00:31:30 <Bike> That haskell.org page has the example of "(\ ~[x] -> x) [] ⇒ ⊥". Is it defined what that divergence means? Could an implementation just loop forever instead of coming back to tell me I'm an idiot?
00:31:37 -!- Guest79759 has quit (Client Quit).
00:31:47 -!- elliott_ has joined.
00:32:01 <shachaf> Bike: Yes.
00:32:09 <Bike> Ok.
00:32:14 <shachaf> To the second question, that is.
00:32:20 <Bike> right.
00:32:36 <shachaf> It's defined in such a way that looping forever and coming backt to tell you you're an idiot are considered equivalent.
00:32:49 <shachaf> Note that in GHC this isn't true, since it lets you "catch" these things.
00:33:11 -!- elliott_ has changed nick to elliott.
00:33:13 <Bike> Oh, I see... if x is an expression with undefined behavior and y is non-strict than y x can have a defined result.
00:33:20 -!- nooodl_ has quit (Ping timeout: 272 seconds).
00:33:21 <Bike> then? eh
00:33:38 <shachaf> By "undefined behavior" do you mean the C sense or the "behaves like undefined" sense.
00:33:45 <Bike> the former
00:33:52 <shachaf> s/B/b/ s/.$//
00:34:02 <Bike> The former.
00:34:28 <shachaf> I don't think a failed pattern match is undefined behavior in that sense?
00:34:40 <shachaf> But I might be wrong. I don't really know anything.
00:34:49 <Bike> It's defined to diverge and that's it, apparently?
00:39:03 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
00:39:14 -!- Fiora has joined.
00:39:14 -!- HackEgo has joined.
00:39:14 -!- Mathnerd314 has joined.
00:41:11 <oerjan> Bike: a _refutable_ pattern match doesn't diverge if it fails, mind you, as long as there are further alternative patterns to try
00:41:26 <Bike> Yes.
00:41:35 <Bike> Wouldn't be very good pattern matching if it only tried once..
00:42:33 <oerjan> but otherwise, divergence is essentially just another synonym for what we haskellers call "undefined" and "bottom". the haskell language report doesn't bother to distinguish different "program crashing" failure modes.
00:43:14 -!- Phantom_Hoover has joined.
00:43:31 <oerjan> although ghc's exception mechanism is based on someone writing a paper making just such extra distinctions.
00:43:43 -!- WeThePeople has joined.
00:44:30 <oerjan> (although one that sometimes gives a nondeterministic result)
00:44:41 <oerjan> *ones
00:44:48 <oerjan> *give
00:49:07 <kmc> yeah... denotationally, an expression's meaning is either a value or a /set/ of possible exceptions
00:49:36 <kmc> and the 'catch' operator picks one of those nondeterministically
00:49:48 <kmc> but that's fine because you only get it as the result of an IO action, and those are allowed to be nondeterministic
00:50:28 <Bike> This catch thing isn't standard Haskell?
00:50:50 <oerjan> @hoogle catch
00:50:50 <lambdabot> Prelude catch :: IO a -> (IOError -> IO a) -> IO a
00:50:50 <lambdabot> System.IO.Error catch :: IO a -> (IOError -> IO a) -> IO a
00:50:50 <lambdabot> Control.OldException catch :: IO a -> (Exception -> IO a) -> IO a
00:50:54 <kmc> iirc standard Haskell has only a really primitive exception mechanism for IOErrors
00:51:06 <kmc> no way to catch an exception thrown by pure evaluation, e.g. error / undefined
00:51:10 <oerjan> @hoogle+
00:51:10 <lambdabot> Control.Exception.Base catch :: Exception e => IO a -> (e -> IO a) -> IO a
00:51:11 <lambdabot> Control.Exception catch :: Exception e => IO a -> (e -> IO a) -> IO a
00:51:11 <lambdabot> Control.OldException catchDyn :: Typeable exception => IO a -> (exception -> IO a) -> IO a
00:51:13 <kmc> nor divide by zero, etc
00:51:24 <Bike> good thing ghc is so huge then i guess
00:51:29 <kmc> i know, right
00:51:57 <Bike> I seem to remember standard ML having some decent exceptions stuff but I forgot.
00:52:03 <kmc> GHC also does asynchronous exceptions -- one thread can cause another thread to throw an exception wherever it's currently executing
00:52:12 <kmc> which causes additional problems
00:52:38 <Bike> oh man, awesome.
00:52:54 <Bike> Oh on that note, are threads standard?
00:52:56 <kmc> to avoid race conditions when setting up exn handlers, GHC lets you temporarly suspend / unsuspend processing of async exns
00:52:59 <kmc> no
00:53:14 <kmc> async exns also include things like stack / heap overflow
00:53:19 <shachaf> Concurrent Haskell is standard-ish, but it's not part of the report.
00:54:07 <Bike> I had the vague idea that concurrent haskell involved concurrency mechanisms less wacked out then threads
00:54:26 <shachaf> Why are threads wacked out?
00:54:43 <Bike> everyone complains about 'em
00:55:13 <kmc> that's because they suck in other languages
00:55:30 <kmc> GHC has put a /lot/ of effort into making threads that don't suck
00:55:30 -!- copumpkin has quit (Ping timeout: 272 seconds).
00:55:34 <kmc> and history will pass it by for it
00:55:40 <kmc> because Everyone Knows that threads suck
00:55:40 <Bike> u bitter
00:55:45 <kmc> Bike: just a little
00:56:00 <kmc> shared memory multiprocessing is sort of a lie though
00:56:01 -!- copumpkin has joined.
00:56:09 <kmc> unclear this abstraction remains useful
00:56:37 <kmc> when your "shared memory" is actually a cache coherence protocol implemented between multiple processors and NUMA domains
00:56:44 <kmc> our machines are really distributed systems
00:57:16 <kmc> so maybe it's best to use a one-process-per-core model, and then it's easier to scale up past 1 machine as well
00:57:56 <Bike> I should probably make a bit clearer (like it's not) than I know jack all about concurrency, I just heard that threads aren't the best model.
00:58:50 <kmc> sometimes you just want parallel evaluation, not concurrent semantics, and GHC has something else for that
00:58:53 <kmc> but it's finicky
00:58:54 <Sgeo> What is a "thread"?
00:59:07 <Bike> a thread of execution?
00:59:17 <shachaf> A thread of execution of execution?
00:59:22 <Sgeo> Is it an OS level thread, which has a lot of baggage associated with it? Is it a conceptual separate execution?
00:59:24 <Bike> yes exactly
00:59:29 <Bike> i just mean generally
00:59:37 <Bike> as opposed to i don't know, mapreducey primitives
00:59:42 <Bike> connection machine hilarity
00:59:54 <Sgeo> Are the people saying that threads suck speaking in general or with a view of OS threads?
01:00:06 <kmc> both
01:00:10 <Bike> in general probably, as a conceptual thing
01:00:12 <kmc> everyone all the time is saying wrong things
01:00:12 <shachaf> Isn't map-reduce more about parallelism?
01:00:13 <kmc> everywhere
01:00:15 <kmc> including me
01:00:32 <kmc>
01:00:41 <Bike> see, i don't even remember what parallelism versus concurrency means (everybody saying wrong things more like me saying wrong things)
01:00:58 <kmc> people argue about those words too
01:01:05 <kmc> but according to GHC devs at least
01:01:08 <kmc> concurrency is semantics
01:01:21 <kmc> parallelism is implementation detail
01:01:34 <kmc> you can have parallel evaluation of expressions without any change in semantics
01:01:43 <Bike> mapreduce seems pretty semantic to me...
01:01:52 <kmc> and you can have concurrent semantics without truly executing stuff at the same time
01:01:57 <Sgeo> And you can have semantic concurrency on a single-core machine
01:02:00 <kmc> yes
01:02:06 <elliott> Bike: there is parallel haskell stuff thingy
01:02:09 <elliott> which is higher-level
01:02:13 <kmc> bbl tho
01:02:14 <elliott> but for "different stuff"
01:02:17 <Bike> oh boy levels
01:03:28 <shachaf> Bike: If you have a mapreducey thing you can execute it all sequentially or in parallel for speed.
01:03:32 <elliott> i'm blown away by how fucking tired i am
01:03:34 <shachaf> You get the same results either way.
01:04:25 <Bike> hm...
01:04:32 <Bike> elliott: uh i told you to sleep? way to drop the ball.
01:04:43 <elliott> that was yesterday Bike
01:04:47 <elliott> i'm a new man
01:04:55 <shachaf> elliott: go to sleep
01:05:09 <Sgeo> @localtime elliott
01:05:11 <lambdabot> Local time for elliott is Fri Mar 8 01:05:10 2013
01:05:57 <Sgeo> @localtime HackEgo
01:06:03 <Bike> Didn't we already have a talk about privacy?
01:06:11 <Bike> And by we I mean you and elliott, I wasn't paying attention
01:09:41 <Sgeo> I love how Lojban has multiple words for 'we'
01:09:47 <Sgeo> One that includes 'you' and one that doesn't
01:09:47 <Sgeo> iirc
01:10:03 <Bike> i don't think lojban is the only language that makes that distinction?
01:10:11 <shachaf> You enter the sauna. After several hours, you come out a changed man.[Your score just went up by 25 points, for a total of 250.] You have with you a changed plant.
01:10:50 <Sgeo> Bike, I'm not a linguist :/
01:12:21 <Bike> http://en.wikipedia.org/wiki/Inclusive_and_exclusive_we there we go.
01:12:28 <Bike> Clusivity. Awesome.
01:16:10 -!- monqy has joined.
01:21:27 <Sgeo> It bothers me a little that with Applicatives, there are a lot of functions with same or similar types that do different things
01:22:58 <Sgeo> elliott, didn't you tell me that <**> isn't just flip (<*>)?
01:23:05 <Sgeo> Docs say "A variant of '<*>' with the arguments reversed."
01:24:02 <Sgeo> > [1, 2, 3] <|> [4,5,6]
01:24:04 <lambdabot> [1,2,3,4,5,6]
01:24:11 <Sgeo> > some [1,2]
01:24:15 <lambdabot> mueval-core: Time limit exceeded
01:24:19 <Sgeo> > many [1,2]
01:24:23 <lambdabot> mueval-core: Time limit exceeded
01:24:36 <Bike> :t (<|>)
01:24:37 <Sgeo> > optional [1,2]
01:24:37 <lambdabot> Alternative f => f a -> f a -> f a
01:24:39 <lambdabot> [Just 1,Just 2,Nothing]
01:24:55 <Bike> @src Alternative
01:24:55 <lambdabot> class Applicative f => Alternative f where
01:24:55 <lambdabot> empty :: f a
01:24:55 <lambdabot> (<|>) :: f a -> f a -> f a
01:26:01 <elliott> Sgeo: ordering
01:26:09 <elliott> p <**> q runs p then q
01:26:20 <elliott> q <*> p runs q then p
01:26:36 <Sgeo> Docs should be fixed
01:26:43 <Sgeo> To make that clear
01:27:25 <elliott> send a patch
01:29:55 <Sgeo> Should I read Write Yourself a Scheme in 48 Hours?
01:31:11 <Bike> don't you already know haskell and scheme
01:33:47 <monqy> it's entirely possible
01:44:52 <elliott> Bike: are you spj yet
01:45:17 <Bike> I had a waking nightmare last night where the darkness of my room only resolved as slowly shrinking hexagons.
01:47:57 <shachaf> is that about Super Hexagon
01:48:07 <shachaf> i tried it and it seemed pointless?
01:48:52 -!- WeThePeople has quit (Quit: Leaving).
01:49:59 <shachaf> Bike
01:50:26 <Bike> what
01:52:29 <Sgeo> I think <* is sexy and imperative programmers might like it
01:52:49 <Sgeo> Although I guess Lispers tend to already have something like it
01:53:05 -!- Mathnerd314 has quit (Read error: Operation timed out).
01:53:08 <Bike> Do you mean <*> or is there also an operator called <* for some godforsaken reason
01:53:14 <shachaf> the latter
01:53:29 <shachaf> it has the same type as flip (*>) but behaves differently
01:53:37 <Bike> :t (<*)
01:53:38 <lambdabot> Applicative f => f a -> f b -> f a
01:53:42 <Bike> are you jokin
01:53:47 <shachaf> Wait, I'm wrong.
01:53:53 <Bike> :t (*>)
01:53:55 <lambdabot> Applicative f => f a -> f b -> f b
01:54:09 <shachaf> No, I'm right.
01:54:12 <Sgeo> shachaf, yeah, you were wrong. About being WRONG
01:54:33 <shachaf> IT'S A DIFFERENT TYPE IF YOU DON'T COUNT ALPHA-RENAMING
01:55:05 <Bike> @src Applicative
01:55:05 <lambdabot> class Functor f => Applicative f where
01:55:05 <lambdabot> pure :: a -> f a
01:55:05 <lambdabot> (<*>) :: f (a -> b) -> f a -> f b
01:56:00 <shachaf> Bike: other operators that exist: <$> <$ >> <> >>> <<< <**>
01:56:09 <Bike> help
01:56:18 <Bike> :t ($>)
01:56:19 <lambdabot> Not in scope: `$>'
01:56:19 <lambdabot> Perhaps you meant one of these:
01:56:19 <lambdabot> `$' (imported from Data.Function), `$!' (imported from Prelude),
01:56:22 <Bike> bullshit
01:56:25 <shachaf> << does not exist, partly because no one agrees on whether it should behave like (*>) or like flip (<*)
01:56:41 <shachaf> Er, switch those.
01:56:43 <shachaf> (<$) exists in Control.Comonad but not in base
01:56:46 <Bike> can't it just be shift WHAT ABOUT THE GOOD OLD DAYS MAN
01:58:36 <Sgeo> <* is kind of like prog1
01:59:33 <Bike> > 4 <* 5 -- somehow i doubt this is going to work
01:59:34 <lambdabot> Could not deduce (GHC.Num.Num (f b0))
01:59:34 <lambdabot> arising from the ambiguity check f...
01:59:39 <Bike> rite
01:59:46 <elliott> you could give an instance that made that work
01:59:46 <shachaf> > "Bike" <* "hi"
01:59:48 <lambdabot> "BBiikkee"
01:59:50 <oerjan> :t (<$)
01:59:51 <lambdabot> Functor f => a -> f b -> f a
02:00:04 <oerjan> > (0$0<$)
02:00:05 <lambdabot> The operator `GHC.Base.<$' [infixl 4] of a section
02:00:06 <lambdabot> must have lower pre...
02:00:07 <Bike> sgeo i must say that is like no prog1 i've heard of
02:00:22 <oerjan> shachaf: yes it does.
02:00:32 <monqy> what's a proge1
02:00:35 <Bike> prog1 hardly seems very haskelly anyway
02:00:50 <shachaf> oerjan: ?
02:00:52 <Bike> monqy: execute first expression, execute rest of expressions, return first result, the end
02:01:01 <shachaf> Bike: It's like prog1 if it only took two arguments.
02:01:14 <shachaf> And if you extend the idea of "execution" a lot.
02:01:23 <shachaf> (And of "return".)
02:01:24 <Bike> > "Bike" <* "hello"
02:01:25 <lambdabot> "BBBBBiiiiikkkkkeeeee"
02:01:29 <monqy> Bike: the thing where it's funny with list is because of this "extension" of the idea of "Execution"
02:01:30 <Bike> This is an exciting extension!
02:01:35 <monqy> yes.
02:01:40 <shachaf> Bike: It's nondeterminism.
02:01:46 <Sgeo> Bike, http://ideone.com/XiY5Sj
02:01:53 <shachaf> Think of it as forking a thread for each letter of "hello"!
02:02:10 <shachaf> Except it's deterministic nondeterminism, so it all comes out nicely interleaved in the end.
02:02:13 <elliott> monqy: "Execution"
02:02:24 <monqy> > (,) <$> [1,2,3] <*> [4,5,6]
02:02:25 <lambdabot> [(1,4),(1,5),(1,6),(2,4),(2,5),(2,6),(3,4),(3,5),(3,6)]
02:02:27 <monqy> Bike: do you know what this means
02:02:43 <Bike> Probably not.
02:02:52 <Sgeo> :info <*
02:02:53 <monqy> > [1,2,3] >>= \ x -> [4,5,6] >>= \ y -> return (x,y)
02:02:53 <elliott> hint: descartes
02:02:54 <lambdabot> [(1,4),(1,5),(1,6),(2,4),(2,5),(2,6),(3,4),(3,5),(3,6)]
02:02:55 <monqy> how about this
02:02:56 <elliott> - my hint
02:03:04 <elliott> monqy: btw hes only onto the list comprehensions chapter of lyah
02:03:05 <Bike> I forget, is all this <> weirdness in lens or haskell
02:03:08 <Sgeo> :info (<*)
02:03:10 <elliott> imo we stop talking about applicatives and monads and shit
02:03:13 <shachaf> > [(x,y) | x <- [1,2,3], y <- [4,5,6]]
02:03:15 <lambdabot> [(1,4),(1,5),(1,6),(2,4),(2,5),(2,6),(3,4),(3,5),(3,6)]
02:03:17 <shachaf> how about that one
02:03:20 <elliott> yes that's acceptable
02:03:20 <Bike> because this is kind of ridiculous?
02:03:20 <oerjan> shachaf: <$ is in base.
02:03:21 <monqy> elliott: i was just about to do the thing shachaf did
02:03:25 <monqy> elliott: but im slow at the Typing
02:03:29 <elliott> im not
02:03:30 <shachaf> oerjan: Oh.
02:03:36 <shachaf> Then the other one is in Control.Comonad.
02:03:37 <elliott> Bike: what's ridiculous is listening to #esoteric about anything
02:03:41 <Bike> yes.
02:03:44 <elliott> stpo looking and look at lyah instead
02:03:44 <Bike> that is the lesson here.
02:03:47 <shachaf> monqy: i had a head start at the Typing
02:03:52 <monqy> Ah.
02:04:41 <Bike> uh oh i see "category"!!
02:04:42 <shachaf> imo my nondeterminism hint was helpful "in a maybe nonhelpful kind of way"
02:05:02 <monqy> it's helpful if you know that sense of what nondeterminism means
02:05:08 <shachaf> right
02:05:17 <shachaf> but maybe it's not so helpful to illustrate it
02:05:43 <Sgeo> Not helpful: Overloading Bike with operators
02:05:46 <Bike> "When writing our own functions, we can choose to give them an explicit type declaration. This is generally considered to be good practice except when writing very short functions." this seems like kind of a weird thing to say after bringing up type inference
02:05:53 <shachaf> there should be an implementation of [] that uses "real nondeterminism"
02:05:55 <elliott> Bike: not really
02:05:58 <elliott> type signatures work as documentation
02:06:03 <shachaf> @quote rwbarton infer
02:06:04 <lambdabot> No quotes match. :(
02:06:07 <shachaf> !!!!!!
02:06:08 <Bike> yeah but just
02:06:12 <elliott> shachaf: lambdabot quotes remember
02:06:16 <elliott> Bike: you can figure out a lot about what a definition does from the type etc.
02:06:18 <Bike> "unlike java you don't have to write out types. so anyway, we're going to write out types"
02:06:19 <elliott> `lastlog rwbarton.*infer
02:06:20 <shachaf> elliott: i know
02:06:21 <elliott> er
02:06:22 <HackEgo> lastlog: unexpected argument: rwbarton.*infer \ Usage: lastlog [options] \ \ Options: \ -b, --before DAYS print only lastlog records older than DAYS \ -h, --help display this help message and exit \ -t, --time DAYS print only lastlog records more recent than DAYS \ -u, --user LOGIN
02:06:23 <elliott> `pastlog rwbarton.*infer
02:06:31 <elliott> i hope that works
02:06:55 <shachaf> haskell/12.10.04:21:19:15 <rwbarton> type inference is supposed to be the compiler's job, not the reader's job
02:06:57 <HackEgo> No output.
02:07:12 <monqy> good quote thanks rwbarton
02:07:17 <shachaf> TOO LATE HACKEGO
02:07:23 <Sgeo> Bike, you don't really write out types with everything
02:07:34 <monqy> um maybe you don't
02:07:42 <Bike> god i know
02:07:43 <Sgeo> In lets you typically don't
02:07:52 <Sgeo> I think
02:07:55 <shachaf> Sgeo: but what about MonoLocalBinds................
02:07:55 <monqy> do i
02:08:01 <monqy> :-)
02:08:08 <shachaf> http://research.microsoft.com/en-us/um/people/simonpj/papers/constraints/let-gen.pdf
02:08:14 <Bike> i was just commenting on a weird quirk i'm well aware of documentation value and how it's different from java and bla? bla? bla? bla? bla?
02:08:16 <Sgeo> shachaf, haven't heard of it
02:08:28 <elliott> q q q qqq q qqq q q q q q q q q q
02:08:31 <monqy> q
02:08:32 <elliott> `welcome Bike
02:08:32 <elliott> `welcome Bike
02:08:32 <Bike> q.
02:08:32 <elliott> `welcome Bike
02:08:37 <elliott> thats my response
02:08:37 <Bike> thx
02:08:39 <HackEgo> Bike: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page. (For the other kind of esoterica, try #esoteric on irc.dal.net.)
02:08:39 <HackEgo> Bike: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page. (For the other kind of esoterica, try #esoteric on irc.dal.net.)
02:08:39 <HackEgo> Bike: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page. (For the other kind of esoterica, try #esoteric on irc.dal.net.)
02:08:43 <elliott> choir of welcomes
02:08:44 <monqy> response to who
02:08:45 <shachaf> oerjan: imo ask elliott to stop spamming
02:08:50 <elliott> monqy: bike
02:08:53 <monqy> ah
02:09:44 <Bike> the author sure likes comparing haskell to java
02:09:48 <shachaf> An invisible choir sings, and you are bathed in `welcomes...
02:10:30 <shachaf> The voice of Eliot booms out: "Congratulations, mortal!"
02:11:10 <Bike> Is there something like @src I can use in inferior-haskell?
02:11:17 <Sgeo> Bike, yeah. I prefer when better languages are compared with better languages
02:11:35 <shachaf> Bike: Not really. :-(
02:11:40 <Bike> Oh well.
02:11:50 <shachaf> inferior-haskell? Is that what you get when you compare Haskell with @?
02:11:55 <Sgeo> "Why should I use this instead of Java?" is pretty much a joke, "Why should I use this instead of Haskell or Lisp or Smalltalk?" or something is far more interesting
02:12:09 <shachaf> Sgeo: No, it's still pretty much a joke.
02:12:12 <Bike> Don't make me defend Java dude. I'll do it. I'll jump.
02:12:24 <Bike> @src Ord -- anyway
02:12:24 <lambdabot> Source not found.
02:12:25 <shachaf> the joke is people come into #haskell and ask that question and then there's a long pointless discussion
02:12:28 <Bike> @src Ord
02:12:28 <lambdabot> class (Eq a) => Ord a where
02:12:28 <lambdabot> compare :: a -> a -> Ordering
02:12:28 <lambdabot> (<), (<=), (>), (>=) :: a -> a -> Bool
02:12:28 <lambdabot> max, min :: a -> a -> a
02:12:42 <Bike> shachaf: so, like every other channel on freenode then
02:13:00 <Bike> I'm guessing < and pals have a default definition in terms of compare?
02:13:06 <shachaf> Yep.
02:13:18 <shachaf> And compare has a default definition in terms of all of them simultaneously
02:13:22 <shachaf> Actually, just in terms of (<=)
02:13:24 <Bike> whoa
02:13:26 <Bike> oh.
02:13:47 <shachaf> btw (a -> a -> Ordering) is a monoid
02:13:57 <monqy> lots of things are monoids
02:14:03 <Sgeo> The fun part though is that there's no static checking whether you've satisfied the minimum needed :(
02:14:10 <Bike> How does only partially defining an instance work? Like how will it no that defining an instance of well, oh, thanks Sgeo.
02:14:13 <shachaf> Sgeo: The fun part is that there's a feature request for that!
02:14:18 <shachaf> Which SPJ approves of!
02:14:28 <shachaf> Just needs someone (ie you) to implement it
02:14:36 <monqy> shachaf: is that just pointwise multiplication on pointwise multiplication on Ordering?
02:14:53 <monqy> or something special
02:14:56 <shachaf> monqy: Yes.
02:15:02 <elliott> proof irrelevance, monqy
02:15:07 <elliott> all he said is it's a monoid
02:15:10 <elliott> you don't get to find out which one
02:15:21 <Sgeo> Bike, pretty much just writing out the default definitions in terms of each other, and if there is no real implementation, it infinite loops
02:15:27 <shachaf> > sortBy (comparing length ++ compare) $ words "here are some words for monqy to show off how nice that 'unspecial' monoid instance is"
02:15:30 <lambdabot> ["is","to","are","for","how","off","here","nice","show","some","that","monq...
02:15:45 <Bike> Well that sucks.
02:15:52 <shachaf> agreed
02:15:54 <monqy> well i know all about Ordering's instance and how nice pointwise stuff is
02:16:00 <shachaf> ok then
02:16:15 <elliott> pointwise instances suck imo
02:16:37 <Sgeo> pointwise?
02:16:40 <Bike> read "True" isn't constrained enough. What source or whatever do I look at to figure out why?
02:16:42 <monqy> i never said pointwise instances are nice!!!! just that pointwise ~stuff~ is nice....im undecided on pointwise instances
02:16:51 <elliott> Bike: read :: Read a => String -> a
02:16:56 <elliott> read "True" :: Bool
02:16:59 <Sgeo> Bike, you need to tell it the type to give back to you
02:17:04 <Bike> No I know.
02:17:09 <Bike> I want to know what the ambiguity is between.
02:17:10 <elliott> well what d oyou mean by: figure out why
02:17:14 <elliott> it's not "between"
02:17:19 <elliott> as in even if you only had one Read instance it'd still give you that
02:17:22 <elliott> (open world assumption)
02:17:39 <Bike> so read anything without constraints is ambiguous?
02:17:45 <shachaf> imo the clopen world assumption is better
02:17:49 <Sgeo> Bike, yes
02:17:52 <Bike> kay.
02:17:55 <Sgeo> > read "12345"
02:17:57 <lambdabot> *Exception: Prelude.read: no parse
02:17:59 <shachaf> Well, it's polymorphic.
02:18:00 <Sgeo> um.
02:18:09 <shachaf> Ambiguous if you don't use it in a polymorphic context.
02:18:12 <monqy> something something default something something
02:18:17 <monqy> probably it tried to read a unit
02:18:24 <Sgeo> > read "()"
02:18:25 <monqy> > read "()"
02:18:26 <lambdabot> ()
02:18:27 <lambdabot> ()
02:18:27 <shachaf> how do you catch a unit
02:18:41 <shachaf> Answer: unit up on it
02:19:43 <Sgeo> I think it's far safer than having the type become known only at runtime
02:19:52 <Sgeo> *cough* recent RoR vulnerabilities *cough*
02:20:22 <elliott> ??
02:20:32 <Bike> ruby on rails
02:20:32 <monqy> also Sgeo: defining something "pointwise" means "something like"(im not going to bothere explaing it in full generality or formal gosh) (f + g)(x) := f(x) + g(x)
02:20:38 <monqy> hopefully you "get the idea"
02:20:54 <monqy> then you have addition on functions "point wise"
02:20:56 <Bike> there was some thing about yaml doing weird things because weirdness
02:21:22 <shachaf> ?? ??
02:21:23 <monqy> you'll also see it on tuples a lot!!! (x, y) + (a, b) := (x + a, y + b)
02:21:26 <shachaf> ?? ?? ?where quonochrom
02:21:27 <lambdabot> monochrom says: Ask Coq. Don't rely on head.
02:21:30 <shachaf> ?? ?? ?where quonochrom
02:21:31 <lambdabot> monochrom says: There are truths, damn truths, and Kripke structures.
02:21:40 <Bike> hilarity
02:21:53 <shachaf> ?? ?? ?where quonochrom
02:21:54 <lambdabot> monochrom says: If you read a haskell book or an FP book, by chapter 5 it's already doing data structures. It's chapter 10 in imperative books.
02:21:55 <elliott> monqy: um tuples are just functions
02:22:00 <shachaf> enough
02:22:02 <elliott> from finite sets!!
02:22:05 <elliott> sorry i mean
02:22:06 <elliott> finite types
02:22:14 <Bike> don't you mean morphisms something something
02:22:33 <monqy> elliott: yes but does sgeo know that
02:22:38 <shachaf> imo tuples are just limits of diagrams with no morphisms
02:22:44 <monqy> shachaf: :-)
02:22:45 <Bike> There you go.
02:22:57 <elliott> monqy: imo yes
02:23:10 <monqy> but he didnt even know what "pointwise" means
02:23:11 <shachaf> oh no is monqy disapproving again
02:23:11 <Bike> [x,y..z] = enumFromThenTo x y z, right?
02:23:20 <shachaf> Bike: Yes.
02:23:38 <shachaf> I,I enumFromThenToElseTo
02:24:07 * Sgeo googles
02:24:17 <Sgeo> Wait, is pointwise just the antonym of pointfree?
02:24:23 <monqy> um
02:24:31 <Bike> Can I get a list of instances of a typeclass?
02:24:36 <shachaf> wait should i have specified finite diagrams
02:24:38 <elliott> Bike: :info Class
02:24:38 <shachaf> Bike: :i in ghci
02:24:41 <Bike> rad
02:24:50 <shachaf> i,i :i,i
02:24:54 <Bike> gosh that's a lot of instances
02:25:01 * shachaf vanishes
02:25:02 <Sgeo> um I kind of tuned out of your attempted explanation
02:25:05 <Bike> damn look at all these tuples
02:25:11 <Sgeo> "-- point-wise, and point-free member"
02:25:14 <Sgeo> http://www.haskell.org/haskellwiki/Pointfree
02:25:15 <monqy> Sgeo: just read https://en.wikipedia.org/wiki/Pointwise uuuuuurgh
02:25:25 <monqy> i havent even looked at its contents
02:25:26 <monqy> just read it
02:25:37 <monqy> its better than groping around or whatever the hell youre doingg now
02:25:37 <Sgeo> ok
02:25:52 <quintopia> ok
02:25:55 <Bike> if i do :i some class am I going to get a shitload of tuples every time
02:26:05 <shachaf> only for the "common classes"
02:26:09 * shachaf really vanishes
02:26:17 <Sgeo> So pointwise addition is just addition lifted into the Reader monad?
02:26:28 <monqy> :☺)
02:27:05 <Sgeo> I shall take that as a yes
02:27:17 <Bike> aight why is (4,5,6,7) < (9,6,3,0)
02:27:37 <Sgeo> Because 4 < 9
02:27:43 -!- Phantom_Hoover has quit (Remote host closed the connection).
02:28:14 -!- Mathnerd314 has joined.
02:28:33 <elliott> Bike: because seven ate nine
02:28:40 <Sgeo> Although, I guess it's somewhat meaningless semantically.... if Ord a => Complex a doesn't get an Ord instance even though one can be defined, why should tuples?
02:28:42 <Bike> oh
02:28:56 <Bike> What, why would you define an ordering on complex
02:29:04 <Sgeo> Bike, so you can put them in Maps
02:29:10 <Sgeo> (as keys)
02:29:25 <elliott> indexing a map by a value with floating point sounds like the superest idea
02:29:38 <Sgeo> Complex Int is not floating point
02:29:56 <Bike> i love gaussian integers
02:30:52 <Bike> Why does Num have Show but not Read?
02:31:18 <elliott> it doesn't have Show or Eq now
02:31:19 <oerjan> <Sgeo> Wait, is pointwise just the antonym of pointfree? <-- i learned about "pointwise" in math long before learning haskell.
02:31:20 <elliott> they got removed rip
02:31:50 <Bike> noooo i'm so out of date
02:32:43 <oerjan> Sgeo: Complex Int is not Num either, alas
02:33:09 <oerjan> all because of pesky abs
02:33:11 <oerjan> :t abs
02:33:12 <lambdabot> Num a => a -> a
02:33:22 <monqy> Num is gross and ugly
02:33:31 <elliott> i cant stop reading pesky abs as meaning the other kind of abs
02:33:33 <elliott> help
02:33:50 <oerjan> elliott: just do some workout and get some pesky abs yourself
02:33:58 * oerjan has none, anyway
02:34:50 <monqy> who needs abs, bodies are for losers
02:36:54 <elliott> monqy: r u uploaded into the information super highway cyberspace
02:37:00 <elliott> integated into the system
02:37:04 <elliott> integated, good word
02:37:19 <kmc> abs or fabs
02:42:50 <Bike> I'm not sure how a better Num would work really. Maybe you could define something "nicer" if you're really pedantic and make it subsets of complexes but then there go floats.
02:43:08 <monqy> something something abstract algebra
02:43:18 <elliott> abstract algebra is kind of awful with typeclasses
02:43:21 <monqy> learning something from those dang mathematicians
02:43:29 <monqy> elliott: maybe typeclasses could learn a thing or 2
02:43:37 <monqy> something something monoids "not so easy after all"
02:43:39 <elliott> i dont think num is all that bad for haskells constraints
02:43:45 <elliott> though it should get split up a lil
02:45:07 <Bike> monqy: But then you'd have like Field except integers don't form a field except mod something they do and stuff
02:45:23 <monqy> well who said you'd start with fields
02:46:40 <Sgeo> There may be a case to be made that the current typeclass system is just broken
02:46:53 <elliott> how would you make that case exactly
02:47:17 <Bike> plus you'd have like... class Ring etc etc i don't know haskell inverse :: a => Maybe a?
02:47:20 <monqy> demonstrate that they make monoids not easy
02:47:32 <monqy> why would you need inverse in the ring class
02:47:32 <Sgeo> Noting how often it is sometimes useful to implement only some of a functions in a class, and how difficult it is to split off such classes in a backwards compatible manner
02:47:49 <Bike> You don't need it, but I'm sure somebody would want it.
02:48:08 <monqy> make a new class for it then? like Ring a => Field a
02:48:17 <monqy> or divisionring
02:48:18 <monqy> or
02:48:25 <monqy> "skewfield" that's a cute name for the same thing
02:48:27 <Bike> I mean, inverses on rings where not everything has an inverse
02:48:38 <monqy> RingWhereSometimesThingsHaveInverses
02:48:52 <Bike> brilliant
02:49:34 <Jafet1> Onion rings
02:49:44 <monqy> Bike: clearly tho youd just put a Group constraint on the underlying multiplicative monoid
02:49:59 <monqy> for Field
02:50:08 <monqy> for when sometimes you have inverses uhh
02:50:13 <monqy> i guess idk what youd do
02:50:16 <monqy> make anew class
02:50:19 <elliott> i think maybe with constraintkinds and stuff we have enough machinery to do abstract algebra classes properly
02:50:23 <elliott> but i sure wouldnt replace num with it
02:50:52 <monqy> num is kind of heck but i typically ignore it
02:51:00 <Bike> obviously the type system is inadequate if i can't express the type of analytic functions. fix this thanks
02:53:17 <Bike> "I think that's there for historical reasons or something, although in my opinion, it's pretty stupid" btw elliott i've decided my earlier stated dislike of lyah was wrong
02:53:59 <monqy> whats that sentence aboout
02:54:10 <elliott> monqy: That's useful when you want integral and floating point types to work together nicely. For instance, the length function has a type declaration of length :: [a] -> Int instead of having a more general type of (Num b) => length :: [a] -> b. I think that's there for historical reasons or something, although in my opinion, it's pretty stupid.
02:54:15 <elliott> kind of wrong tho
02:54:21 <elliott> but not wrong enough for me to bother complaining about it
02:54:40 <Bike> Oh, what's wrong about it?
02:55:16 <monqy> something about Integral right
02:55:22 <monqy> :t generalizedLength
02:55:23 <lambdabot> Not in scope: `generalizedLength'
02:55:26 <monqy> whatever it is
02:55:37 <monqy> :t genericLength
02:55:39 <lambdabot> Num i => [b] -> i
02:55:42 <monqy> oh that's Num?
02:55:43 <monqy> huh
02:55:45 <Bike> weid
02:56:01 <monqy> oh that's length not Take or anything
02:56:03 <monqy> :t genericTake
02:56:03 -!- Frooxius_ has quit (Ping timeout: 276 seconds).
02:56:04 <lambdabot> Integral i => i -> [a] -> [a]
02:56:09 <monqy> yeah that's integral
02:56:18 <monqy> ok im at peace
02:56:35 <Bike> > genericLength ["lol","ol","ol"] :: Float
02:56:37 <lambdabot> 3.0
02:56:41 <Bike> cool
02:57:04 <elliott> @src genericTake
02:57:04 <lambdabot> Source not found. You speak an infinite deal of nothing
02:57:08 <Sgeo> huh, so I don't need a million parens whenever I use :: ?
02:57:09 <elliott> why does it need integral i wonder
02:57:26 <Sgeo> elliott, I hope that's sarcasm?
02:57:31 <monqy> elliott: well maybe it doesnt "need" integral but would it make sense without it
02:57:42 <elliott> Sgeo: why would it be
02:57:48 <Jafet1> take (sqrt (-1))
02:57:50 <Sgeo> elliott, how do you take 1.5 of something?
02:58:03 <Bike> interpolation!
02:58:05 <elliott> i dont think you understand what im saying
02:58:13 <elliott> monqy: looks like it doesn't use any Integral methods at all :/
02:58:19 <elliott> don't really like the gratuitous constraint
02:58:22 <monqy> elliott: thats what i mean by "need"
02:58:44 <elliott> sure
02:58:47 <elliott> just confirming & complaining
02:58:51 <elliott> con{firm,plain}ing
02:59:10 <Sgeo> Oh, it would effectively round down
02:59:10 <Bike> > length (take (toInteger (maxBound :: Int) + 1) (repeat "cut"))
02:59:12 <lambdabot> Couldn't match expected type `GHC.Types.Int'
02:59:12 <lambdabot> with actual type ...
02:59:17 <Bike> :'(
02:59:27 <elliott> bike take doesnt take an integer
02:59:28 <elliott> :t take
02:59:30 <lambdabot> Int -> [a] -> [a]
02:59:33 <elliott> drop doesnt drop an integer too 8-)
02:59:40 <Bike> ;_;
02:59:47 <Sgeo> I laffed
02:59:58 <monqy> ???
03:00:19 <Bike> so how do i get the first [pointlessly large number] of elements from a list!
03:00:31 <monqy> genericTake
03:00:50 <Bike> not in scope this is impossible f u haskell
03:00:57 <monqy> Data.List, Bike
03:00:59 <Sgeo> @hoogle genericTake
03:01:00 <lambdabot> Data.List genericTake :: Integral i => i -> [a] -> [a]
03:01:04 <Sgeo> import Data.List
03:02:01 <Bike> wait what the hell is import
03:02:15 <monqy> type at yr repl
03:02:20 <monqy> :m + Data.List
03:02:23 <monqy> and think no more about it
03:02:27 <Jafet1> Dude, haskell sucks
03:02:29 <Bike> no i must think
03:02:35 <Bike> it is my curse
03:02:47 <Sgeo> Bike, it imports a module. And :m + Data.List is how to bring in a module at GHCi
03:02:47 <Jafet1> Think that it sucks
03:02:52 <Sgeo> Rather than source code
03:03:08 <Bike> oh import's one of those statement dealies isn't it
03:03:11 <elliott> import works in ghci tho
03:03:23 <monqy> import is more letters
03:03:36 <Jafet1> import is a top level statement
03:03:42 <Jafet1> You need to be a top level programmer to use it
03:05:02 <kmc> you need at least 3 PhDs
03:05:24 <Bike> What are the PhDs in
03:05:26 <Jafet1> No, not that bad
03:05:34 <monqy> just 2 phds
03:05:35 <Jafet1> But you do need qualifications to use qualified imports
03:09:34 -!- DH____ has quit (Read error: Connection reset by peer).
03:09:39 -!- DHeadshot has joined.
03:11:32 -!- monqy has quit (Quit: hello).
03:14:41 -!- DH____ has joined.
03:14:50 -!- DHeadshot has quit (Ping timeout: 272 seconds).
03:25:43 <Bike> aw, you need some kind of extension for explicit forall?
03:26:31 <elliott> well you need an extension for everything
03:26:33 <elliott> but sure
03:26:39 <elliott> explicit forall ain't that useful if you're not doing scopedtypevariables stuff
03:26:42 <elliott> by ain't that useful
03:26:44 <elliott> i mean ain't useful at all
03:26:46 <elliott> assuming you mean, not rank-2
03:26:50 <elliott> which is a whole other can of worms
03:26:53 <Bike> yeah i just mean the boring ones
03:27:11 <Bike> i just.... i'd feel better with them there man.........
03:28:09 <elliott> the bonus is you can use forall as a variable
03:28:14 <elliott> both type & value
03:28:16 <elliott> Technically Legal
03:28:22 <elliott> id :: forall -> forall
03:28:23 <Bike> That's Cool
03:29:48 <elliott> You're Cool
03:29:49 <elliott> 8-)
03:30:15 <Bike> uh i thought i sucked way to flip-flop
03:30:45 <elliott> how do you know i wasnt using sarcasm either/both times
03:31:10 <Bike> sarcasm is a rank k type hth
03:31:57 <Bike> ooh backquoted quotes in strings print with the backquotes! haskell really is a lisp!!!
03:32:24 <elliott> wait what do you mean
03:33:02 <Bike> capital "Porqueepsie" => "The first letter of \"Porqueepsie\" is 'P'."
03:33:21 <Bike> or is that actually just a literal backquote
03:33:24 <Bike> back...thing
03:33:26 <Bike> slash
03:33:42 <elliott> im confused
03:33:44 <elliott> python does that too?
03:33:48 <Bike> does it
03:34:00 <Bike> not here
03:34:10 <elliott> >>> foo = "'hello" + '"'
03:34:10 <elliott> >>> foo
03:34:10 <elliott> '\'hello"'
03:34:11 <elliott> well close enough
03:35:39 <oerjan> python only does it if you mix _both_ ' and " in a string. otherwise it chooses the outer one as whichever isn't used.
03:36:08 <oerjan> haskell cannot do that since ' and " have different meanings.
03:40:13 <Sgeo> Isn't there a Haskell program that's valid both with and without rankntypes but does different things with and without:/
03:43:09 <oerjan> i recall zzo38 did some nice option-testing combinations
03:45:36 <oerjan> i think those were based on syntax though, so probably tested whether forall was a keyword
03:46:04 <oerjan> hm i'm not sure whether that worked
03:46:18 <oerjan> `pastequotes zzo38>.*forall
03:46:26 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.16517
03:46:28 <oerjan> `pastelogs zzo38>.*forall
03:47:08 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.31071
03:48:29 -!- monqy has joined.
03:48:44 <Bike> what's Not?
03:48:45 <Sgeo> is elliott asleep
03:49:04 <monqy> hi
03:49:54 <elliott> hello
03:50:00 <Sgeo> @hoogle Not
03:50:00 <lambdabot> Prelude not :: Bool -> Bool
03:50:00 <lambdabot> Data.Bool not :: Bool -> Bool
03:50:00 <lambdabot> Prelude notElem :: Eq a => a -> [a] -> Bool
03:50:07 <monqy> Bike: what's Not
03:50:51 <Bike> 2011-11-28.txt:06:52:27: <zzo38> explosion :: (p, Not p) -> q; explosion (x, y) = contradiction $ y x; where contradiction :: forall t. Zero -> t;
03:51:01 <monqy> ah, zzo
03:51:01 <oerjan> `pastelogs zzo38>.*rank.types
03:51:15 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.22827
03:51:22 <monqy> Bike: Not a = a -> Void
03:51:31 <monqy> Void aka Zero aka False
03:51:32 <oerjan> monqy: he's been experimenting with logic in haskell types
03:51:39 <monqy> who, zzo or bike?
03:51:47 <Bike> not me that's for sure
03:52:00 <oerjan> `pastelogs zzo38>.*haskell.*extension
03:52:02 <monqy> curry howard is a bit poor in haskell what with everything being inhabited
03:52:14 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.30522
03:52:14 <Bike> also Confession Part Two I thought fmap took a functor as an argument "sorry"
03:52:20 <elliott> bike..........
03:52:24 <monqy> bike..................
03:52:28 <Bike> :(
03:52:39 <elliott> wait im going to do the thing where you use the full version of someones name to disapprove at them
03:52:42 <elliott> bicycle..............................
03:52:47 <Bike> uh excuse me
03:52:49 -!- Bike has changed nick to Bicyclidine.
03:52:53 <elliott> no
03:52:54 <elliott> fuck you
03:53:00 <elliott> thats like
03:53:01 <Bicyclidine> imo fuck you
03:53:19 <elliott> dave -> david -> davidiens
03:53:21 <monqy> im going to do to the thing where i munge someones name(i dont actually do this but some people do): bicyclyde
03:53:23 <elliott> do you really want to be davidiens bike
03:53:35 <Bicyclidine> Can I be a Circumcellion?
03:53:35 <elliott> monqy: ooh we could call bike clyde
03:53:44 <elliott> that,d be a good nickname
03:53:45 <monqy> biquaaaaaaaaaaaaaaaaay
03:53:50 <oerjan> Sgeo: http://codu.org/logs/_esoteric/2011-09-02.txt is where it was previously discussed
03:54:19 <Bicyclidine> monqy: does Void not exist in haskell because everything's inhabited or
03:54:34 <elliott> clyyyyyyyyyde
03:54:40 <shachaf> are tiy oeioke stukk takjubg abiyt types
03:54:44 <shachaf> help
03:54:45 <Bicyclidine> help
03:54:51 <shachaf> did my keyboard switch to finnish mode
03:55:10 <Sgeo> Bicyclidine,
03:55:12 <Sgeo> data Void
03:55:19 <monqy> Bicyclidine: theres a thing people call void but it's not as meaningful as in stuff like agda or coq or
03:55:20 <Sgeo> _|_ can be made to be of type Void
03:55:32 <monqy> sgeo are you sure you can explain this
03:55:54 <Bicyclidine> Says I need an extension to allow a lack of constructors.
03:56:10 <elliott> how old is your ghc
03:56:10 <Sgeo> Let's pretend that Void is a->b. a->b should be uninhabited, just like Void, right?
03:56:17 <Sgeo> :t undefined :: a -> b
03:56:19 <lambdabot> a -> b
03:56:22 <monqy> sgeo
03:56:24 <monqy> please dont
03:56:32 <shachaf> Bicyclidine: did you think that fmap took a functor as an argument………………………………………………………………………………………
03:56:44 <Bicyclidine> what the fuck are those ellipses
03:56:47 <shachaf> sounds like i missed out "on a lot of fun"
03:56:56 <oerjan> Sgeo: alas zzo's sprunge paste has expired
03:57:02 <Bicyclidine> they all got... blurry
03:57:10 <monqy> Bicyclidine: the way it's defined in the "void" package is
03:57:16 <Bicyclidine> anyway it's just something from when I didn't know what typeclass syntax was and i was grasping at straws
03:57:16 <monqy> -- | A logically uninhabited data type.
03:57:16 <monqy> #if __GLASGOW_HASKELL__ < 700
03:57:16 <monqy> data Void = Void !Void
03:57:16 <monqy> #else
03:57:16 <monqy> newtype Void = Void Void
03:57:18 <monqy> #endif
03:57:25 <Bicyclidine> elliott: my ghc is from debian, so presumably it's older than me
03:57:52 <monqy> Bicyclidine: so you need a void to construct a void. the ! means it's strict in its argument so it's a bit harder to fit a bottom in there
03:58:09 <Bicyclidine> I see I see.
03:58:13 <elliott> Bicyclidine: ghc --version
03:58:18 <elliott> please do that so i know if i have to take drastic measures
03:58:29 <shachaf> Bicyclidine: after doing it please paste the result in the channel
03:58:31 <Bicyclidine> 6.12.3
03:58:35 <elliott> fuck
03:58:37 <shachaf> "uh oh"
03:58:38 <elliott> please upgrade that
03:58:43 <elliott> seriously you have no idea
03:58:53 <Bicyclidine> can i get specifics
03:58:55 <elliott> like
03:58:57 <elliott> just install 7.4
03:59:01 <elliott> you'll probably thank me later
03:59:01 <Bicyclidine> is ghc 6 like a CUPS server
03:59:08 <elliott> it's like ghc 6
03:59:09 <shachaf> Bicyclidine you might as well be using a rusty spoon to compile your haskell code
03:59:13 <elliott> yes that
03:59:17 <shachaf> it would be more type safe at least
03:59:21 <shachaf> and faster
03:59:26 <shachaf> and more elegant
03:59:28 <Bicyclidine> Oh, bad compiled output huh? Neat.
03:59:30 <Sgeo> Bicyclidine, if you want to be able to define data types at GHCi, you'll upgrade
04:00:01 <elliott> thats not really what we meant Bicyclidine
04:00:01 <shachaf> if you want elliott not to "take drastic measures" you'll upgrade
04:00:07 <shachaf> and believe me you don't want elliott to do that
04:00:14 <shachaf> he's never done it before but it sounds bad
04:00:24 <Bicyclidine> Ok, what did you mean.
04:00:31 <Sgeo> Bicyclidine, I'm on Ubuntu 10.10 and I've managed to upgrade GHC
04:00:52 <shachaf> ghc 6.12 is so old it doesn't support lens.........……..………….....….…….….…..…...
04:01:02 <Bicyclidine> i dunno sgeo .configure && make && make install is hard
04:01:26 <elliott> wellyou should
04:01:26 <shachaf> do it Bike
04:01:28 <elliott> just use a binary package
04:01:31 <elliott> you dont want to compile ghc
04:01:33 <elliott> (really)
04:01:42 <elliott> probably just use the haskell platform binary package??
04:01:43 <monqy> using debian packages sounds like heck
04:01:43 <shachaf> elliott: The binary package still has configure/make/make install
04:01:51 <elliott> it doesnt have the make part iirc
04:01:55 <shachaf> true
04:01:57 <Bicyclidine> are you sure because whenever i mention having a compiler that's slightly behind bleeding edge i get jumped on
04:02:01 <shachaf> or at least it doesn't do anything
04:02:14 <monqy> Bicyclidine: HP isn't bleeding edge
04:02:15 <Bicyclidine> gotta keep up with all the new developments
04:02:18 <shachaf> elliott: TWIST: there is no binary package :,(
04:02:23 <Sgeo> 7.6 is bleeding edge
04:02:36 <Sgeo> 7.4 is part of the Haskell Package, the go-to for newbies
04:02:37 <shachaf> remember when people used to say cutting edge
04:02:45 <shachaf> and then that wasn't "cutting edge enough"
04:02:52 <Bicyclidine> well sudo apt-get install haskell-platform is what i did
04:02:57 <Bicyclidine> i'm a simple man with simple lack of savvy
04:02:58 <shachaf> now "bleeding edge" is an idiom instead of a joke :'(
04:03:03 <elliott> Bicyclidine: your compiler is from june 2010
04:03:06 <elliott> its three years old
04:03:09 <Bicyclidine> good month
04:03:29 <elliott> the stable version it's of is from 2009
04:05:24 <oerjan> next up: amputated edge
04:05:57 <shachaf> imo the bleeding edge should be "spj's keylogger"
04:06:02 <shachaf> the cutting edge can be HEAD
04:06:11 <shachaf> the dull edge can be 7.6
04:06:15 <elliott> what about the wounded edge
04:06:21 <elliott> the internal organs edge
04:06:46 <shachaf> internal organ?
04:06:51 <shachaf> is that "internal to a church"
04:07:02 <monqy> im more interested in this rusty spoon edge
04:07:09 <monqy> if i cut someone with it will they die
04:07:29 <shachaf> yes and Bicyclidinidine would be to blame
04:07:39 <Bicyclidine> bitchin'
04:15:22 -!- augur has quit (Remote host closed the connection).
04:19:55 -!- Sgeo has quit (Ping timeout: 260 seconds).
04:26:08 <shachaf> Bicyclidine: did you get it yet
04:36:04 -!- TeruFSX has quit (Ping timeout: 256 seconds).
04:41:54 <elliott> Bicyclidine i need your public service again
04:41:56 <elliott> tell me to go to bed
04:42:06 <shachaf> elliott go to bed
04:42:09 -!- Bicyclidine has changed nick to Bike.
04:42:16 <elliott> or to sleep. that one might be better because it works even if it's monqy you're servicing
04:42:21 <Bike> fucking hell elliott isn't it like twelve in the morning where you live
04:42:31 <elliott> 04:42
04:42:44 <Bike> uh dude isn't that private
04:42:48 <elliott> yes
04:42:51 <elliott> im letting you into my world :-)
04:42:56 <Bike> awwwww
04:43:16 <shachaf> It's 12 in the morning where *I* live.
04:43:23 <shachaf> By 12 in the morning I mean 23:43.
04:43:31 <shachaf> By live I mean "am alive at right now".
04:43:49 <monqy> it's too early where i live
04:44:07 <monqy> i want to go to sleep
04:44:12 <elliott> @localtime monqy
04:44:14 <lambdabot> Local time for monqy is Thu Mar 7 20:44:13 2013
04:44:40 <shachaf> monqy: you know about type systems right
04:44:43 <monqy> sure
04:44:48 <shachaf> what does it mean to say rank-2 type inference is possible
04:45:06 <shachaf> everyone says it "even elliott"
04:45:14 <shachaf> but what are the limitations
04:45:37 <elliott> ->
04:46:22 <monqy> idk off the top of my head what it means "precisely"??
04:46:50 <shachaf> well you can give (\x -> x x) a rank-2 type
04:46:56 <shachaf> is that inferrable
04:47:04 <shachaf> does it even make sense to say that
04:49:05 <monqy> well asking if some type of a specific term is "inferrable" loses a bit of sense
04:49:26 <monqy> since the general case can still be undecidible but special cases heuristics yada yada
04:50:42 -!- carado has quit (Ping timeout: 256 seconds).
04:51:12 <shachaf> well sure but the general case here is supposed to be decidable
04:51:27 <shachaf> so im wondering what that means for specific cases
04:54:55 <monqy> if being decidable means that it's possible to infer a type for every term with a rank 2 type then
04:55:01 <monqy> yes that term would get a type inferred for it??
04:55:15 <shachaf> ok
04:55:29 <shachaf> does it mean it's possible to infer "a most general type"
04:55:41 <shachaf> or just any ol type that fits?? or what
04:56:19 <monqy> the way i stated it it'd just be any ol type that fits....the actual theorem might be for most general types. what i said was just an example of what a theorem statement might look like. you'd have to check for yrself.
04:56:26 <monqy> since i cannot recall
04:56:52 <shachaf> well where would i find the theorem
04:57:03 <shachaf> should i read the paper edwardk linked or something else
04:57:04 <shachaf> help
04:57:11 <shachaf> i dont know type systems :('
04:57:45 <shachaf> i guess i should just read that paper
04:58:55 <monqy> probably edwardk knows what he's talking about?
05:02:16 <shachaf> sigh
05:02:37 <shachaf> monqy: is it true they took summon green rat out of summon small mammals in crawl
05:02:53 <monqy> that was ages ago
05:02:56 <monqy> ornage rats too
05:05:08 <shachaf> orange, that's the one i meant
05:05:14 <shachaf> or was it green?
05:05:16 <shachaf> i think orange
05:05:22 <shachaf> those rats were so good
05:05:23 <monqy> both
05:05:52 <shachaf> no i just meant one of them
05:05:57 <monqy> ok then it was orange
05:06:17 <monqy> anyway ye summon small mammals stopped being major ridiculous ages ago
05:08:57 <shachaf> but i liked it when it was major ridiculous
05:09:21 <monqy> woops
05:09:40 <coppro> is it just me
05:09:44 <coppro> or did Sgeo miss an update
05:09:57 <shachaf> coppro: no olist isn't going to be updated until next week
05:10:03 <shachaf> and smlist isn't updated :'(
05:10:15 <coppro> smlist?
05:10:23 <shachaf> super mega comics
05:10:25 <Bike> `cat bin/list
05:10:27 <HackEgo> ​#!/bin/sh \ oldpwd=`pwd`; cd /var/irclogs/_esoteric; name=$(cat $(ls ????-??-??.txt | tail -1) | tail -1 | sed "s/[^<]*<//; s/>.*//; s/.*\* //; s/ .*//"); cd $oldpwd; fgrep -q "$name" bin/list || echo -n "$name " >> bin/list; echo cuttlefish boily elliott Taneb HackEgo Sgeo monqy pikhq Sgeo_ tswett Phantom_Hoover nortti oklopol Ngevd
05:10:35 <Bike> eh he's there
05:10:55 <coppro> shachaf: neither of those
05:11:01 <monqy> smlist
05:11:07 <coppro> `ls bin
05:11:09 <HackEgo> ​? \ @ \ WELCOME \ addquote \ allquotes \ anonlog \ aseen \ botsnack \ bseen \ calc \ CaT \ colorize \ define \ delquote \ elist \ emmental \ emoclew \ emptylist \ etymology \ forget \ fortune \ frink \ fueue \ gaseen \ google \ h \ ?h \ h! \ hatesgeo \ ?hh \ hyfinate \ hyphenate.fi \ interp \ joustreport \ jousturl \ js \ json \ ka
05:11:11 <shachaf> `run ls bin/*list*
05:11:13 <HackEgo> bin/elist \ bin/emptylist \ bin/list \ bin/lists \ bin/makelist \ bin/mlist \ bin/olist \ bin/pbflist \ bin/slist \ bin/smlist \ bin/testlist
05:11:20 <shachaf> `cat bin/elist
05:11:22 <HackEgo> echo elliott
05:11:28 <shachaf> elliott: sorry
05:11:37 <shachaf> `run cat bin/mlist
05:11:38 <Bike> Oh, did elliott update?
05:11:39 <HackEgo> echo Seeing a philosopher
05:11:45 <coppro> lol
05:11:57 <shachaf> oh and pbf didn't update either
05:12:00 <coppro> anyway, I will do you all the favor of mentioning that there is a homestuck update before I talk about it
05:12:07 <shachaf> none of the other lists are relevant
05:12:25 <monqy> `emptylist
05:12:28 <HackEgo> emptylist:
05:12:30 <coppro> shachaf: I think you're wrong ;)
05:12:53 <monqy> shachaf: coppro's right; emptylist is pretty dang relevant
05:13:09 <monqy> `cat bin/makelist
05:13:11 <HackEgo> echo 'tail -n +2 $0 | xargs echo; exit 0' >$1;chmod +x $1
05:13:17 <monqy> a good list
05:13:18 <shachaf> monqy: true
05:13:25 <shachaf> makelist is bad
05:13:28 <coppro> so is it a universal property of cherubs that they love worldbuilding?
05:13:32 <shachaf> its not even accurate anymore?
05:13:35 <shachaf> `run cat bin/emptylist
05:13:38 <HackEgo> echo -n "$(basename "$0"): "; tail -n+2 "$0" | xargs; exit
05:14:13 <shachaf> `run echo 'cp bin/emptylist bin/"$1"' > bin/makelist
05:14:18 <HackEgo> No output.
05:14:20 <shachaf> `makelist deletedlist
05:14:24 <HackEgo> No output.
05:14:27 <shachaf> `deletedlist
05:14:30 <HackEgo> deletedlist:
05:14:34 <shachaf> `run echo shachaf >> bin/deletedlist
05:14:39 <HackEgo> No output.
05:14:40 <shachaf> `deletedlist
05:14:42 <HackEgo> deletedlist: shachaf
05:14:44 <shachaf> `run rm bin/deletedlist
05:14:49 <HackEgo> No output.
05:15:00 <coppro> can we stop playing with the robot
05:15:03 <coppro> and build more worlds
05:15:12 <Bike> which worlds
05:15:33 <shachaf> holmestuck sounds pretty horrible
05:15:38 <coppro> Bike: http://www.mspaintadventures.com/storyfiles/hs2/05958_2.gif
05:15:48 <Bike> that did not answer the question
05:15:49 <shachaf> imo a better thing with the word "stuck" in it is slaughterhouse five
05:16:03 <coppro> Bike: you'll have to read it to find out
05:16:04 <Bike> billy pilgrim has become poo-tee-weet in time
05:16:25 <shachaf> i'm just saying that because i was reading it today
05:16:29 <shachaf> good book imo
05:16:46 <shachaf> monqy: from now on instead of saying rip you should say so it goes
05:16:54 <monqy> good idea
05:17:00 <coppro> rip?
05:17:06 <monqy> so it goes
05:17:20 <coppro> As in. "Oh dear. It appears I have so it went my pants"
05:17:51 <monqy> ????
05:18:06 <coppro> if instead of saying "rip" you say "so it goes" then instead of saying "ripped" you say "so it went"
05:18:09 <coppro> duh
05:18:29 <monqy> ok
05:21:37 <shachaf> anyway "sleep time"
05:22:27 <monqy> have fun
05:24:29 -!- Taneb has joined.
05:26:55 <Taneb> ^list
05:26:55 <fungot> Taneb atriq Ngevd Fiora nortti Sgeo ThatOtherPerson alot
05:27:45 <monqy> sorry sgeo, coppro beat you to it
05:28:09 <Taneb> It's almost half 5 in the morning
05:28:12 <Taneb> What am I doing up
05:28:57 <monqy> a twin channeling of the spirits of sgeo and elliott
05:29:00 <monqy> very dangerous
05:34:06 -!- dessos has left.
05:36:18 -!- oerjan has quit (Quit: leaving).
05:38:27 <Taneb> @karma C
05:38:27 <lambdabot> C has a karma of 1
05:40:34 <phiscribe> ok so like esoteric, sounds like a cool channel, so i idle in here a few days. i still don't know wtf is the point of the channel. somebody explain. i used sit in a channel #sgeo (a chan about sacred geometry). some dude named sgeo poke his head in and is like, wtf is this. so whats the low down here? also for your entertainment here is this:::::
05:40:36 <phiscribe> Field theories of limericks by individual consciousness exists, as could conceivably be considered to the merging of the Gaia mind. Modern field theory of the method of empirical science, in which are not exclusive to think. Thomas (always more clearly described in glowing terms about one wavelength of the claim
05:40:58 <phiscribe> (markov chain generated from the logs of the past few days in here)
05:41:45 <phiscribe> oops wrong chain here:
05:42:30 <phiscribe> how do abstract algebra classes in the method of programmer-hours have a -> return first versions of compare? 02:13:06: By 12 in and deployment! For more elegant 03:59:28: bitchin' 04:15:22: -!- Fiora nortti oklopol Ngevd 05:10:35: weid 02:56:01: something 02:18:17: `emptylist 05:12:28:
05:42:57 <Taneb> #esoteric is supposed to be about esoteric programming languages, but is really a couple of dozen people being weird
05:42:57 <oonbotti> Nothing here
05:43:05 <Bike> thanks oonbotti.
05:43:12 <Bike> Oh sweet it got my "bitchin'" in there.
05:43:15 <Bike> I am immortal.
05:43:24 <phiscribe> LOL
05:44:18 <phiscribe> ok is COBOL ok for esoteric programming languages, i did that back in the day
05:45:14 <Taneb> I'd look at INTERCAL
05:45:34 -!- DH____ has quit (Ping timeout: 272 seconds).
05:45:35 <Taneb> http://www.muppetlabs.com/~breadbox/intercal-man/
05:46:30 <phiscribe> RPG (report program generator)
05:46:35 <phiscribe> did that too
05:46:48 <phiscribe> fortran
05:47:16 <phiscribe> yes there was a punch card mashine
05:47:19 <phiscribe> machine
05:48:22 <monqy> i've only heard stories about those
05:48:48 <phiscribe> pascal, but that seems too have keep up with the times
05:49:28 <phiscribe> never encountered entercal
05:49:32 <phiscribe> intercal
05:52:41 <quintopia> `rwelcome phiscribe
05:52:45 <HackEgo> phiscribe: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page. (For the other kind of esoterica, try #esoteric on irc.dal.net.)
05:52:49 <quintopia> everyone needs more welcoming
05:53:05 <coppro> there's another kind of esoterica?
05:53:11 <phiscribe> my eyes, THEY BURN
05:55:43 <quintopia> `words
05:55:50 <HackEgo> enterniige
05:59:27 <phiscribe> http://i1220.photobucket.com/albums/dd454/vectorbomb/Ninja-Code-Black-T-Shirt-Front.jpg
06:10:08 -!- Taneb has quit (Quit: Leaving).
06:15:09 -!- aloril has quit (Ping timeout: 256 seconds).
06:27:19 -!- aloril has joined.
06:29:04 -!- augur has joined.
07:00:34 <fizzie> `run words # with friends
07:00:44 <HackEgo> schuttack
07:00:51 <Bike> wassat
07:01:03 <fizzie> HackEgo: You're such a schuttack.
07:01:10 <Fiora> words with friends?
07:01:22 <fizzie> I understand it is a game.
07:01:26 <Fiora> it is
07:01:29 <Bike> Fiora: your ##asm antics are pretty great, i hope you know
07:01:37 <Fiora> antics??
07:01:47 <Bike> GOD only 23
07:01:50 <Bike> i hate u
07:01:58 <Fiora> ?
07:20:16 -!- FreeFull has quit.
07:30:42 -!- Taneb has joined.
07:40:18 -!- Taneb has quit (Quit: Leaving).
07:57:39 -!- impomatic has quit (Ping timeout: 276 seconds).
08:09:55 -!- nooga has joined.
08:15:19 -!- wareya has quit (Read error: Connection reset by peer).
08:16:05 -!- wareya has joined.
08:18:20 -!- hagb4rd has quit (Quit: hagb4rd).
08:21:12 <Deewiant> fizzie: Your gravatar image at github is over 3x the size it needs to be. (It could be gravatar's fault, I suppose, if they use poor resizing algorithms or something.)
08:23:37 -!- hagb4rd has joined.
08:34:37 -!- epicmonkey has joined.
08:37:40 -!- nooga has quit (Ping timeout: 252 seconds).
08:44:51 -!- impomatic has joined.
08:48:48 -!- sebbu has quit (Ping timeout: 264 seconds).
09:09:02 -!- nooga has joined.
09:09:32 -!- Bike has quit (Quit: leaving).
09:22:48 -!- nooga has quit (Ping timeout: 276 seconds).
09:43:04 -!- epicmonkey has quit (Ping timeout: 272 seconds).
10:01:23 -!- monqy has quit (Quit: hello).
10:04:51 <fizzie> Deewiant: I'm pretty sure I didn't make it a 400x400.
10:05:31 <fizzie> What I uploaded is whatever gives single pixels in the dither pattern.
10:07:34 -!- nooga has joined.
10:11:26 -!- sirdancealo2 has quit (Ping timeout: 255 seconds).
10:57:49 -!- Zuu has joined.
10:59:59 -!- Zuu has left.
11:03:53 -!- Snowyowl has joined.
11:04:02 -!- Phantom_Hoover has joined.
11:04:52 <Deewiant> fizzie: I just meant that the file size is huge, mostly due to not using a grayscale palette.
11:07:07 <fizzie> I think it was a two-color PNG back when I sent it.
11:09:41 <fizzie> Possibly bad things have happened to it automatically.
11:11:06 <Deewiant> Fair enough.
11:12:55 <fizzie> Although it's possible bad things have happened to it manually, too. I think I extracted it out of the file I had made for a door placard kind of thing.
11:13:05 <fizzie> The photo is terribly old in any case. I should perhaps produce a new self-picture some day.
11:18:17 -!- monqy has joined.
11:28:48 -!- sebbu has joined.
11:31:34 -!- lahwran has quit (Quit: ZNC - http://znc.sourceforge.net).
11:41:04 -!- lahwran has joined.
12:14:50 -!- ais523_ has joined.
12:14:51 -!- ais523 has quit (Disconnected by services).
12:14:53 -!- ais523_ has changed nick to ais523.
12:36:39 -!- copumpkin has quit (Ping timeout: 240 seconds).
12:37:11 -!- copumpkin has joined.
12:44:46 -!- Frooxius has joined.
12:57:47 <impomatic> The Museum of Modern Art wants to add Core War to it's video game display http://www.bbc.co.uk/news/magazine-21661690
12:58:15 <myname> great
12:58:40 <myname> i heard about core war as a child and it sounded awesome
12:58:50 <myname> too bad i didn't know how to do stuff
12:59:03 <myname> today i'd prefer something less assambly
12:59:14 <Jafet1> Was core wars really a thing
12:59:21 * ais523 considers mentioning BF Joust
12:59:24 <Jafet1> It sounds less popular than bfjoust
12:59:27 <ais523> Jafet1: impomatic is pretty good at it
12:59:32 <ais523> it's definitely more popular than BF Joust
12:59:37 <ais523> except among members of this channel
12:59:37 <myname> never heard of bf joust
12:59:40 -!- Jafet1 has changed nick to Jafet.
12:59:47 <ais523> because this channel is the correct channel for discussing BF Joust
12:59:51 <Snowyowl> Is it still a thing, more to the point? It sounds fun, but I can't find anyone seriously talking about it more recently than 2009.
12:59:53 <ais523> myname: http://esolangs.org/wiki/BF_Joust
12:59:56 <Snowyowl> corewars, that is
13:00:34 <Jafet> @wn museum
13:00:36 <lambdabot> *** "museum" wn "WordNet (r) 3.0 (2006)"
13:00:36 <lambdabot> museum
13:00:37 <lambdabot> n 1: a depository for collecting and displaying objects having
13:00:37 <lambdabot> scientific or historical or artistic value
13:00:49 <myname> i'd love something like this for befunge or the like
13:01:43 <Snowyowl> something like what?
13:01:51 <myname> bf joust
13:02:30 <myname> it'd be especially interesting because of the p command
13:03:44 <myname> okay, more like core war
13:03:45 <Snowyowl> it could be interesting hunting for the other program in a 2D space
13:04:34 <Snowyowl> maybe the other guy wrote a really tall, but really narrow program :P
13:05:27 <impomatic> Core War is quite active. There's been 178 successful submissions to the main hill so far this year. Even more that didn't enter the hill.
13:06:24 <impomatic> Snowyowl: CoreLife - hunting for the other program in 2D :-) http://corewar.co.uk/corelife
13:09:10 -!- cookienugget has quit.
13:12:44 -!- cookienugget has joined.
13:13:20 <Snowyowl> impomatic: do you run corelife?
13:13:48 -!- monqy has quit (Quit: hello).
13:15:37 <Snowyowl> it seems like a program with no processes would be invincible, because its strength-per-process becomes infinite
13:15:59 <Snowyowl> so if you own 51% of the board, you should kill yourself immediately :P
13:16:06 <Snowyowl> I'm guessing this is completely wrong.
13:16:44 -!- sirdancealo2 has joined.
13:18:16 <ais523> corelife is shareware?
13:18:31 <ais523> it doesn't seem to have a large enough niche to work as shareware
13:18:47 <impomatic> Snowyowl: corewar.co.uk is my site. corelife is nothing to do with me though, other than I have a page about it.
13:18:53 <ais523> especially given that shareware basically doesn't exist nowadays (although it's making something of a revival on mobile platforms)
13:19:49 <impomatic> corelife is playable without registering. If you register I think it adds an option to encrypt your code, but not much else.
13:20:31 <ais523> it adds an option to put authorship information on the coe
13:20:32 <ais523> *code
13:20:42 <ais523> but shareware = some features unlocked by paying for the product
13:22:13 <Snowyowl> free-to-play is kind of like shareware these days.
13:25:15 -!- augur has quit (Remote host closed the connection).
13:25:42 -!- augur has joined.
13:27:55 <ais523> yes
13:29:36 <ais523> myname: BF Joust turned out to be pretty interesting to play, you get people playing it occasionally still
13:29:42 <ais523> when they have an idea for a new strategy
13:30:01 -!- augur has quit (Ping timeout: 245 seconds).
13:30:06 <myname> ais523: never doubt that
13:30:26 <ais523> we suspect it's inherently broken by something, but nobody's figured out what breaks it yet
13:30:49 <myname> huh?
13:33:48 <ais523> as in, there's a strategy that beats all other viable strategies
13:36:38 <myname> you suspect there is a best strategy?
13:37:01 <ais523> yes, or a best strategy blend
13:37:37 <Snowyowl> I doubt there's one single strategy that always wins. Any plan has weaknesses.
13:38:08 <Snowyowl> There's almost certainly a best strategy blend, though. Nash equilibriums and all that.
13:40:00 <ais523> yes
13:40:06 <ais523> except that in BF Joust, there's some cost to actually blending
13:40:51 -!- Sgeo has joined.
13:45:01 <myname> it sounds pretty interesting
13:50:12 <shachaf> @localtime elliott
13:50:14 <lambdabot> Local time for elliott is Fri Mar 8 13:50:12 2013
13:50:16 <shachaf> Hm.
13:51:06 -!- boily has joined.
13:53:12 -!- augur has joined.
13:55:08 <mroman_> How do C#/Java propagate/check/implement exceptions?
13:55:31 <mroman_> Putting something in a try clause has severe performance implications.
14:00:41 -!- epicmonkey has joined.
14:00:59 <mroman_> usually you would expect that a try block does not have an impact if no exception is thrown
14:01:16 <mroman_> which is what most people on the internet say
14:01:50 <mroman_> however there are measurements where just putting a throw block around some heavy calculation (no throw) stuff already decreases performance
14:02:01 <mroman_> (and if an exception is thrown it get's horribly slow anyways)
14:04:46 -!- carado has joined.
14:05:13 <Sgeo> ^list if no one already did it
14:05:13 <fungot> Taneb atriq Ngevd Fiora nortti Sgeo ThatOtherPerson alot
14:05:49 <Snowyowl> ^ping
14:05:55 <Snowyowl> !ping
14:06:03 <EgoBot> Pong!
14:06:43 -!- cookienugget has quit (Ping timeout: 245 seconds).
14:08:15 <mroman_> !blsq_uptime
14:08:15 <blsqbot> 12d 17h 51m 50s
14:14:36 -!- metasepia has joined.
14:14:40 <boily> ~ping
14:14:40 <metasepia> Pong!
14:15:48 <shachaf> @ping
14:15:49 <lambdabot> pong
14:16:30 <boily> lambdabot's pong feels a little bit lackluster...
14:18:29 <blsqbot> Pong!
14:19:24 <myname> i do think bf joust would open a whole new branch of strategies if there'd be any kind of equality test that doesn't need to change or at least clear the cell
14:21:12 -!- Taneb has joined.
14:25:42 -!- Phantom_Hoover has quit (Ping timeout: 276 seconds).
14:26:03 <myname> "Poke can be combined with the wiggle clear to produce a deep poke. This strategy was first used in Gregor_furry_furry_strapon_pegging_girls, see its behavior against Deewiant_pendolino for a good example: Trace and animation
14:26:07 <myname> "
14:26:09 <myname> srsly?
14:27:52 <Snowyowl> yarly
14:30:23 <boily> ~duck yarly
14:30:23 <metasepia> Yarly is a village in the Jalilabad Rayon of Azerbaijan.
14:30:59 -!- Snowyowl has quit (Quit: Page closed).
14:31:32 <Taneb> ~duck Hexham
14:31:32 <metasepia> --- No relevant information
14:31:40 <Taneb> ...
14:31:52 <Taneb> Duck Duck Go has its priorities really warped
14:32:36 -!- Arc_Koen has joined.
14:33:51 <boily> ~duck taneb
14:33:51 <metasepia> --- No relevant information
14:33:55 <boily> indeed.
14:37:07 -!- azaq23 has joined.
14:37:21 -!- Snowyowl has joined.
14:37:36 <Snowyowl> i'm back biptches
14:46:51 <Taneb> > let foo ~True = 3 in foo False
14:46:53 <lambdabot> 3
14:46:57 <Taneb> > let foo ~True = 3 in foo undefined
14:46:58 <lambdabot> 3
14:47:18 <Taneb> Conclusion: "~True" is useful only for obfuscation
14:47:31 <Taneb> ...and actually could be quite useful for obfuscation
14:47:53 <Taneb> > let foo ~True = 3; foo ~False = sum [1..] in foo True
14:47:55 <lambdabot> mueval-core: UnknownError "GHC returned a result but said: [GhcError {errMs...
14:48:05 <Taneb> > let foo ~True = 3; foo ~False = sum [1..]; in foo False
14:48:07 <lambdabot> mueval-core: UnknownError "GHC returned a result but said: [GhcError {errMs...
14:48:15 <Taneb> > let {foo ~True = 3; foo ~False = sum [1..]} in foo False
14:48:17 <lambdabot> mueval-core: UnknownError "GHC returned a result but said: [GhcError {errMs...
14:48:45 <boily> ~eval foo ~True = 3; foo ~False = sum [1..] in foo True
14:48:45 <metasepia> Error (1): <hint>:1:12: parse error on input `='
14:48:54 <boily> ~eval let foo ~True = 3; foo ~False = sum [1..] in foo True
14:48:54 <metasepia> Error (1): Ambiguous occurrence `sum'
14:48:55 <metasepia> It could refer to either `Data.List.sum',
14:48:55 <metasepia> imported from `Data.List' at Imports.hs:16:1-16
14:48:55 <metasepia> or `Data.Foldable.sum',
14:48:55 <metasepia> imported from `Data.Foldable' at Imports.hs:13:1-20
14:49:08 <boily> ~eval let foo ~True = 3; foo ~False = Data.List.sum [1..] in foo True
14:49:09 <metasepia> Error (1):
14:49:21 <boily> as useful as ever...
14:50:24 <Taneb> Hey, Serenity's on TV tonight
14:51:12 <shachaf> hi Taneb
14:51:19 <shachaf> `welcome Taneb
14:51:24 <HackEgo> Taneb: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page. (For the other kind of esoterica, try #esoteric on irc.dal.net.)
14:51:43 <shachaf> It's snowing! Crazy, huh?
14:52:04 <boily> ~metar CYUL
14:52:04 <metasepia> CYUL 081400Z 02011KT 15SM FEW025 SCT180 BKN240 M01/M06 A3032 RMK SC1AC2CS4 SLP270
14:52:09 <boily> no it's not.
14:53:59 <Snowyowl> I don't know how you read that. It looks like line noise to me.
14:55:00 -!- Sanky has quit (Ping timeout: 245 seconds).
15:02:40 <Sgeo> http://www.theonion.com/articles/half-of-26yearolds-memories-nintendorelated,2361/
15:12:06 <shachaf> @ask elliott Can you /nick Guest79759 and back to elliott, to unmessup my /query window?
15:12:07 <lambdabot> Consider it noted.
15:12:14 <shachaf> Alternatively, someone in here tell me how to do that in irssi.
15:12:22 -!- sebbu2 has joined.
15:12:22 -!- sebbu2 has quit (Changing host).
15:12:22 -!- sebbu2 has joined.
15:12:36 <ion> What’s wrong with the window?
15:12:55 <shachaf> Well, my /query elliott window says it's to Guest79759
15:13:06 <ion> Close it and create a new one.
15:13:15 <shachaf> But then the scrollback will disappear.
15:13:29 <shachaf> (Note: I don't keep logs. I rely on the scrollback.)
15:13:55 <ion> There’s a script for irssi that restores it from the logs, i think. IIRC think weechat does that natively. So, simply start logging and get something with that functionality.
15:14:09 <shachaf> No, I refuse to start logging.
15:14:49 <ion> I heard your brain has been logging IRC.
15:15:14 <shachaf> Yes, but imprecisely.
15:15:53 -!- sebbu has quit (Ping timeout: 276 seconds).
15:17:04 -!- Sanky has joined.
15:17:06 -!- Sanky has quit (Excess Flood).
15:17:34 -!- Sanky has joined.
15:19:14 -!- nooga has quit (Ping timeout: 255 seconds).
15:25:55 -!- sebbu2 has changed nick to sebbu.
15:34:32 -!- sirdancealo2 has quit (Ping timeout: 255 seconds).
15:36:13 -!- cookienugget has joined.
15:45:22 -!- AnotherTest has joined.
15:47:44 -!- nooodl has joined.
15:50:28 <AnotherTest> Hello
15:50:54 <boily> hi
15:52:38 <Snowyowl> howdy
16:05:29 <mroman_> ulloh
16:12:10 -!- Phantom_Hoover has joined.
16:13:03 -!- copumpkin has quit (Ping timeout: 260 seconds).
16:13:36 -!- copumpkin has joined.
16:21:36 <quintopia> hi
16:22:10 <quintopia> who is Snowyowl
16:22:24 <Snowyowl> that's a very deep question
16:22:33 <Snowyowl> who are any of us, really?
16:22:45 <cookienugget> you know when it snows and somebody shouts "snow! y'all!"
16:22:48 <cookienugget> that's him
16:22:50 <quintopia> well you seemed to think we should know when you proclaimed "i'm back biptches[sic]"
16:24:30 <Snowyowl> Not really. I'd dropped offline for 5 or so minutes and the conversation was a little slow.
16:24:44 <Snowyowl> It was just something to say.
16:31:41 <boily> the conversation, you musn't meddle with it. especially on fridays, where it may explode in ludicrous gibs.
16:32:25 <Snowyowl> i will meddle with whatever I see fit
16:32:46 <Snowyowl> conversations, computer systems, the fabric of reality, my dinner, etc.
16:33:42 * boily taps a plain and enchants the conversation with a flickering ward.
16:34:55 <Snowyowl> damn, no counterspells left
16:36:02 * Snowyowl plays a Storm Crow
16:46:04 -!- kallisti has quit (Ping timeout: 252 seconds).
16:49:58 -!- kallisti has joined.
16:49:58 -!- kallisti has quit (Changing host).
16:49:58 -!- kallisti has joined.
16:55:18 -!- Bike has joined.
17:05:51 -!- DHeadshot has joined.
17:06:21 <Taneb> The Illusionist is a good film
17:09:27 <ion> Yeah
17:09:41 <AnotherTest> Yeah it is
17:12:09 <Taneb> I am glad we are in agreement
17:12:38 <Taneb> Unless you're talking about the 2010 animated film, which I lack an opinion on due to not having seen it
17:13:14 <AnotherTest> I'm not. I'm talking about the one where the main character eventually starts with spirit illusions.
17:13:39 <AnotherTest> And where the whole story turns out to be an illusion, to trick the bad guys
17:13:51 <AnotherTest> well, bad guys, that depends on the point of view of course
17:14:53 <Taneb> Yes
17:14:57 <Taneb> That is what I am talking about
17:15:06 <AnotherTest> Yeah, great movie
17:18:59 -!- hagb4rd has quit (Quit: do-be-do-doo).
17:22:30 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
17:28:12 -!- Phantom_Hoover has joined.
17:28:39 <coppro> why is vim syntax highlighting nondeterministic
17:35:13 <ais523> emacs syntax highlighting is also nondeterministic because it tries to do it lazily
17:37:12 <Sgeo> http://www.news.com.au/technology/patient-has-75-per-cent-of-his-skull-replaced-by-3dd-printed-implant/story-e6frfro0-1226593075470
17:40:06 <Bike> 3dd?
17:40:16 <Gregor> Cool cats have 100% of their skull replaced.
17:45:15 -!- FreeFull has joined.
17:50:48 <FreeFull> http://www.cs.ox.ac.uk/people/jeremy.gibbons/publications/rationals.pdf I like this
17:51:23 <Bike> what is it
17:51:28 <elliott> its a pdf
17:51:29 <lambdabot> elliott: You have 1 new message. '/msg lambdabot @messages' to read it.
17:51:39 <Bike> thx
17:52:52 -!- Phantom_Hoover has quit (Remote host closed the connection).
17:53:14 <FreeFull> It's about generating an infinite list of all the rationals, with no repeat values
17:53:50 <Bike> that doesn't seem very hard?
17:54:07 <elliott> it's a functional pearl, they're not about hard things
17:54:11 <elliott> except when they are
17:54:14 <elliott> but they usually aren't
17:54:17 <Bike> o
17:54:22 <elliott> it's about the journey, not the destination
17:56:27 <AnotherTest> If we take that out of it's context... is it then a great truth?
17:56:31 <AnotherTest> *its
17:57:27 -!- Phantom_Hoover has joined.
18:05:17 -!- audioPhil has joined.
18:06:21 -!- ais523 has quit.
18:08:12 <audioPhil> hey folks
18:08:13 <audioPhil> anybody here that knows how to read and write "Maze"?
18:09:46 <elliott> probably not
18:09:50 -!- KingOfKarlsruhe has joined.
18:10:36 -!- AnotherTest has quit (Ping timeout: 276 seconds).
18:10:44 <elliott> @hoogle interleave
18:10:44 <lambdabot> package interleave
18:10:44 <lambdabot> Graphics.Rendering.OpenGL.GL.VertexArrays data InterleavedArrays
18:10:44 <lambdabot> Graphics.Rendering.OpenGL.GL.VertexArrays interleavedArrays :: InterleavedArrays -> Stride -> Ptr a -> IO ()
18:10:52 -!- daniela_12aleja1 has joined.
18:11:21 -!- daniela_12aleja1 has quit (Read error: Connection reset by peer).
18:13:30 -!- zzo38 has joined.
18:14:45 -!- AnotherTest has joined.
18:23:12 <zzo38> In some other IRC I connected, I found a "Logon session Fortune Cookie" which appears as a second MOTD. Would having two MOTD at once ever cause problem in any cases?
18:23:48 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
18:26:44 -!- Phantom_Hoover has joined.
18:27:31 <shachaf> welliott
18:27:40 <shachaf> No renicking, huh?
18:44:02 -!- daniela_12alejan has joined.
18:44:03 <tswett> `run sed -i 's/tswett //' bin/list
18:44:08 <HackEgo> No output.
18:44:17 -!- daniela_12alejan has left.
18:44:30 <tswett> `run grep tswett bin/list | wc
18:44:33 <HackEgo> ​ 0 0 0
18:45:32 <tswett> `run grep HackEgo bin/list | wc
18:45:37 <HackEgo> ​ 1 47 318
18:46:58 <boily> `list
18:47:07 <HackEgo> cuttlefish boily elliott Taneb HackEgo Sgeo monqy pikhq Sgeo_ Phantom_Hoover nortti oklopol Ngevd
18:47:17 <boily> ~echo `list
18:47:17 <metasepia> `list
18:47:25 <HackEgo> cuttlefish boily elliott Taneb HackEgo Sgeo monqy pikhq Sgeo_ Phantom_Hoover nortti oklopol Ngevd
18:47:29 <boily> `list
18:47:33 <HackEgo> cuttlefish boily elliott Taneb HackEgo Sgeo monqy pikhq Sgeo_ Phantom_Hoover nortti oklopol Ngevd metasepia
18:47:46 <boily> `rung sed -i 's/cuttlefish //' bin/list
18:47:48 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: rung: not found
18:47:52 <boily> `run sed -i 's/cuttlefish //' bin/list
18:47:57 <HackEgo> No output.
18:48:26 <elliott> are you going to deprive cuttlefish of updates to the list?
18:49:00 <boily> I could recuttle the list, even if the bot is no more.
18:49:18 <fizzie> Rung it up.
18:49:28 <boily> `run sed -i 's/^/cuttlefish /' bin/list
18:49:29 <oklopol> could you PLEASE stop highlighting me, i hear it's really annoying!!
18:49:32 <HackEgo> No output.
18:50:19 <tswett> `run sed -i 's/ok..pol //' bin/list
18:50:23 <HackEgo> No output.
18:50:27 <boily> hmm... we could morse core øklopol by hiliting him with multiple bots.
18:50:34 <boily> s/core/code/
18:50:45 <tswett> `run grep -e 'ok..pol' bin/list | wc
18:50:48 <HackEgo> ​ 0 0 0
18:50:57 <elliott> boily: wrong sedding
18:51:11 <elliott> `revert 2396
18:51:13 <elliott> easiest just to restore it
18:51:20 <HackEgo> Done.
18:51:20 <elliott> since there's a lot of sh gunk before the names
18:51:37 <boily> ah, yeah. silly me.
18:51:56 <tswett> `run sed -i 's/ok..pol //' bin/list
18:52:00 <HackEgo> No output.
18:52:42 -!- audioPhil has left.
18:53:09 <elliott> `run echo echo >bin/list # optimisation
18:53:12 <HackEgo> No output.
18:53:53 <boily> `list isn't list anymore!
18:53:54 <HackEgo> No output.
18:54:27 <elliott> my point indeed
18:54:49 <tswett> I do not disapprove.
18:54:55 <boily> you vile unlister!
18:56:47 <elliott> misdirected, I feel
18:57:52 -!- Taneb has quit (Ping timeout: 272 seconds).
19:00:49 -!- sirdancealo2 has joined.
19:02:39 <elliott> hm, could instead do it in a stateless way, like:
19:03:03 <elliott> `fetch http://sprunge.us/hjCT
19:03:07 <HackEgo> 2013-03-08 19:03:05 URL:http://sprunge.us/hjCT [142] -> "hjCT" [1]
19:03:09 <elliott> `run mv hjCT bin/list; chmod +x bin/list
19:03:14 <HackEgo> No output.
19:03:15 <elliott> though that will break in 2020.
19:03:31 <elliott> maybe less elegant since it doesn't quite do the same as ais523's version.
19:03:54 <boily> in 2020, the world will have ended.
19:04:03 <elliott> very true
19:08:46 -!- DHeadshot has quit (Quit: Bye).
19:08:55 <Sgeo> `list
19:08:57 <HackEgo> ais523 Bike boily cuttlefish elliott fgrep Fiora fungot metasepia monqy Ngevd nortti oklopol Phantom_Hoover pikhq quintopia Sgeo Taneb
19:09:07 -!- DHeadshot has joined.
19:09:13 <boily> fgrep?
19:09:21 -!- Taneb has joined.
19:09:28 <Sgeo> It occurs to me that there will be false positives: Anyone who used `list back when it was Homestuck related
19:09:40 <Bike> ?? when did i get on the list
19:09:41 <lambdabot> when did i get on the list
19:09:49 <Bike> this is bullshit and thank you for concurring
19:09:52 <Sgeo> Bike, it's a new list
19:10:02 <tswett> `rm bin/list
19:10:02 <Bike> So why am I on it!
19:10:06 <Sgeo> Everyone who has ever said `list
19:10:07 <HackEgo> No output.
19:10:12 <Bike> But I haven't...
19:10:14 <Phantom_Hoover> `revert
19:10:14 <lambdabot> Phantom_Hoover: You have 2 new messages. '/msg lambdabot @messages' to read them.
19:10:17 <HackEgo> Done.
19:10:19 <Phantom_Hoover> `paste bin/list
19:10:23 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/list
19:10:51 <Sgeo> I think I can make impersonations
19:11:07 <tswett> Is that so.
19:11:25 <Sgeo> foobarbaz> `list
19:11:26 <Sgeo> `list
19:11:28 <HackEgo> ais523 Bike boily cuttlefish elliott fgrep Fiora fungot metasepia monqy Ngevd nortti oklopol Phantom_Hoover pikhq quintopia Sgeo Taneb
19:11:43 <Sgeo> hm
19:11:50 <boily> ) `list
19:11:50 <jconn> boily: `list
19:12:00 <Sgeo> Isn't * usually greedy?
19:12:14 <Bike> in regexes? yeah
19:12:18 <boily> no, he has reformed his ways.
19:12:32 <Sgeo> So why didn't my thing wo.. oh
19:12:34 <Fiora> everyone keeps pinging me :<
19:12:36 <Sgeo> derp
19:12:46 <Bike> now you see the true horror of the list, fiora
19:12:47 <Taneb> Hi, Fiora!
19:13:33 <Fiora> nyaa
19:13:46 -!- SUPREME_BUTT_SUI has joined.
19:13:46 <boily> the list is not horrorful, it is wonderful, awesome, causes rejuvenescence and will slice your pineapples! (oh, and the obligatory Fiora-ping)
19:13:52 <SUPREME_BUTT_SUI> `list
19:13:53 <Bike> the true terror
19:13:54 <HackEgo> ais523 Bike boily cuttlefish elliott fgrep Fiora fungot metasepia monqy Ngevd nortti oklopol Phantom_Hoover pikhq quintopia Sgeo SUPREME_BUTT_SUI Taneb
19:14:03 <Bike> Sgeo: nice choice
19:14:05 -!- SUPREME_BUTT_SUI has quit (Client Quit).
19:14:25 <Bike> though i must admonish you for destroying the purity of the list
19:14:54 <boily> what's a sui?
19:14:57 <Bike> ...oh, the new list is kind of a thing, huh.
19:15:08 <Bike> What's the command to search the logs with a regex again?
19:15:13 <tswett> Short for "sui generis"?
19:15:22 <tswett> So, like, "supreme butt of its own kind"?
19:16:05 <Sgeo> Bike, hm?
19:16:08 <Sgeo> choice?
19:16:18 <Bike> of name.
19:16:44 <Sgeo> foobarbaz is not really a creative name
19:16:49 <Bike> I meant SUPREME BUTT SUI.
19:17:12 <Sgeo> I did not choose that name. I do not know who SUPREME BUTT SUI is
19:17:18 <Sgeo> But it isn't me.
19:17:48 <Bike> whoa.
19:18:36 <zzo38> With Curry-Howard, when the logic is classical logic, it is with continuations; but what is it when the logic has numbers in it?
19:19:13 <Bike> can't you just embed numbers in classical logic
19:19:50 -!- monqy has joined.
19:20:42 <tswett> zzo38: can you give an example of logic that has numbers in it?
19:20:53 <Sgeo> Hi monqy. There's a new list.
19:20:57 <monqy> hi sgeo
19:21:27 <zzo38> tswett: Something like Typographical Number Theory, I guess
19:21:35 <monqy> `run ls bin/*list
19:21:38 <HackEgo> bin/elist \ bin/emptylist \ bin/list \ bin/makelist \ bin/mlist \ bin/olist \ bin/pbflist \ bin/slist \ bin/smlist \ bin/testlist
19:21:56 <tswett> bin/listofpeoplewhowishtobenotifiedwheneverhomestuckupdates
19:22:23 * tswett ponders TNT under the CHI.
19:22:28 <Gregor> tswett: Yes, that matches the glob *list
19:22:36 <Phantom_Hoover> `eslis
19:22:39 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: eslis: not found
19:22:39 <Phantom_Hoover> `elist
19:22:41 <HackEgo> elliott
19:22:47 <tswett> bin/updateshomestuckwhenevernotifiedbetowishwhopeopleoflist
19:22:48 <Gregor> `cat bin/elist
19:22:51 <HackEgo> echo elliott
19:22:51 <Phantom_Hoover> `smlist
19:22:54 <HackEgo> smlist: shachaf monqy elliott
19:22:54 <Bike> elliott's updating faster these days
19:23:05 <tswett> We need a FORTH bot.
19:23:12 <Gregor> `gforth --version
19:23:14 <HackEgo> gforth 0.7.0
19:23:17 <Gregor> DONE
19:23:32 -!- sebbu has quit (Ping timeout: 276 seconds).
19:24:16 <tswett> `gforth WORDS
19:24:19 <HackEgo> ​ \ *OS command line*:-1: No such file or directory \ >>>WORDS<<< \ Backtrace: \ $40E25F40 throw \ $40E23030 required \ $40E2A750 execute \ $40032BD0 \ $40037A00 \ $4002E000 \ $40028FE0 \ $40E2A720 \ $40E217C8 catch \ $40E22FD0 execute-parsing-wrapper \ $40E23090 os-execute-parsing \ $40E23668 args-required
19:24:31 <tswett> `run echo WORDS | gforth -
19:24:34 <HackEgo> Unknown option: - \ Gforth 0.7.0, Copyright (C) 1995-2008 Free Software Foundation, Inc. \ Gforth comes with ABSOLUTELY NO WARRANTY; for details type `license' \ Type `bye' to exit \ WORDS \ mov-regv-Iv mov-reg8-Ib xchg-ax jcc-short conditions pop-reg push-reg \ set-add-likes set-add-like set-noarg rAX,Iz AL,Ib Gv,Ev Gb,Eb Ev,Gv \ Eb,Gb Iv Jz Iz
19:24:46 <boily> `run echo DUP | gforth
19:24:49 <HackEgo> Gforth 0.7.0, Copyright (C) 1995-2008 Free Software Foundation, Inc. \ Gforth comes with ABSOLUTELY NO WARRANTY; for details type `license' \ Type `bye' to exit \ \ :1: Stack underflow \ >>>DUP<<< \ Backtrace:DUP
19:24:59 <tswett> `run echo WORDS | gforth
19:25:03 <HackEgo> Gforth 0.7.0, Copyright (C) 1995-2008 Free Software Foundation, Inc. \ Gforth comes with ABSOLUTELY NO WARRANTY; for details type `license' \ Type `bye' to exit \ WORDS \ mov-regv-Iv mov-reg8-Ib xchg-ax jcc-short conditions pop-reg push-reg \ set-add-likes set-add-like set-noarg rAX,Iz AL,Ib Gv,Ev Gb,Eb Ev,Gv \ Eb,Gb Iv Jz Iz immz Jb Ib Ev Ed Eb
19:25:14 <tswett> What the fuck kind of words are those?
19:25:19 <Bike> good words
19:26:04 <Gregor> Words that aren't so mean and nasty as the eff word.
19:26:16 -!- DHeadshot has quit (Ping timeout: 245 seconds).
19:26:17 <boily> pineapply words.
19:26:18 <tswett> What the mov-regv-lv kindn of words are those?
19:26:30 <tswett> What the rAX,lz kind of words are those?
19:26:34 <tswett> I dunno, I think I disagree.
19:26:36 <Gregor> `run echo WORDS | gforth | paste
19:26:47 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.27233
19:26:47 <tswett> The word "fuck" is all cute and dainty.
19:26:49 -!- Taneb has changed nick to atriq.
19:26:52 <atriq> `list
19:26:55 <HackEgo> ais523 atriq Bike boily cuttlefish elliott fgrep Fiora fungot metasepia monqy Ngevd nortti oklopol Phantom_Hoover pikhq quintopia Sgeo SUPREME_BUTT_SUI Taneb
19:26:56 <tswett> "rAX,lz" is clearly a harsh evil alien word.
19:27:01 <Gregor> That's a lot o' words.
19:27:04 -!- atriq has changed nick to Taneb.
19:27:14 <tswett> I think it has too many words.
19:27:24 <Phantom_Hoover> so wait, shachaf never ran `list?
19:27:38 <Gregor> tswett: It's GNU, whaddya expect?
19:27:45 <boily> ~echo shachaf `list
19:27:46 <metasepia> shachaf `list
19:27:57 <Sgeo> Phantom_Hoover, that is correct
19:27:59 <boily> there, two shachafy list-hits.
19:28:03 <Gregor> ~echo `list
19:28:04 <metasepia> `list
19:28:07 <HackEgo> ais523 atriq Bike boily cuttlefish elliott fgrep Fiora fungot metasepia monqy Ngevd nortti oklopol Phantom_Hoover pikhq quintopia Sgeo SUPREME_BUTT_SUI Taneb
19:28:10 <Gregor> Classy.
19:28:12 <tswett> `run echo FORGET (listlfind) WORDS | gforth | paste
19:28:12 <boily> darn.
19:28:14 <HackEgo> bash: -c: line 0: syntax error near unexpected token `(' \ bash: -c: line 0: `echo FORGET (listlfind) WORDS | gforth | paste'
19:28:18 -!- sebbu has joined.
19:28:39 <Sgeo> Can the log be fooled with a literal new... probably not
19:28:45 <tswett> `run echo 'FORGET (listlfind) WORDS' | gforth | paste
19:28:54 <Sgeo> Used to be possible to fool people in Active Worlds by using a newline
19:28:56 <HackEgo> ​ \ :1: Undefined word \ >>>FORGET<<< (listlfind) WORDS \ Backtrace: \ $40E1AA68 throw \ $40E30CE0 no.extensions \ $40E1AD28 interpreter-notfound1 http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.12928
19:29:00 <tswett> I don't think literal newlines are allowed in IRC.
19:29:06 * tswett GASSPSPSPSS
19:29:39 <Taneb> @tell elliott Avoid Riding Mill Methodist Church next Friday evening.
19:29:40 <lambdabot> Consider it noted.
19:30:34 <boily> tswett: Gly-Ala-Ser-Ser-Pro-Ser-Pro-Ser-Pro-Ser-Ser?
19:30:37 <elliott> Taneb: wow you know riding mill exists?
19:30:38 <lambdabot> elliott: You have 1 new message. '/msg lambdabot @messages' to read it.
19:30:49 <tswett> boily: yeah, definitely.
19:30:58 <Taneb> elliott, some of my best friends live in Riding Mill!
19:31:00 <Taneb> Well...
19:31:14 <Taneb> One person I know was planning on moving there but her family changed their mind
19:31:26 <tswett> Gregor: this isn't a *real* FORTH!
19:31:38 <Taneb> But yeah, I'm going to be attending a play in Riding Mill in ALMOST PRECISELY ONE WEEK'S TIME
19:32:23 <Gregor> tswett: Your mom isn't a real Forth, but we still let her... yeah, Idonno how to finish that.
19:33:34 <Taneb> And I don't want the universe to explode
19:33:47 <Bike> Maybe some kind of pun on being stacked
19:34:13 <boily> ~duck idonno
19:34:14 <metasepia> --- No relevant information
19:35:24 <elliott> ~duck friends
19:35:24 <metasepia> friends definition: one attached to another by affection or esteem.
19:35:27 <elliott> yes
19:35:43 <Taneb> elliott, now you know
19:35:56 <Taneb> Perhaps I count as a friend to you
19:36:03 <tswett> ~duck nephew
19:36:03 <metasepia> nephew definition: a son of one's brother or sister or of one's brother-in-law or sister-in-law.
19:36:11 <Taneb> ~duck aardwolf
19:36:12 <metasepia> aardwolf definition: a maned striped nocturnal mammal ('''Proteles cristatus''') of southern and eastern Africa that resembles the related hyenas and feeds chiefly on insects and especially termites.
19:36:20 <tswett> So, speaking of nephews.
19:36:37 <Taneb> tswett, I'm not elliott's uncle.
19:36:41 <tswett> I am.
19:36:45 <Taneb> :O
19:36:49 <tswett> elliott is now capable of saying a few words.
19:37:04 <tswett> The other day, he suddenly started excitedly saying, "No! No! No!"
19:37:14 * boily is completely subjugated, fulgurated, shocked, and surprised.
19:37:15 <tswett> It took me a while to realize he was referring to the snow outside.
19:37:21 <tswett> ~duck fulgurate
19:37:21 <metasepia> fulgurate definition: the act or process of flashing like lightning.
19:37:30 <Bike> ~duck amphichiral
19:37:30 <metasepia> Of or relating to the structural characteristic of a molecule that makes it impossible to superimpose it on its mirror image.
19:37:35 <Taneb> tswett, is this... the same elliott?
19:37:41 <tswett> Of course it is.
19:37:48 <tswett> elliott is two and a half years old now.
19:37:57 <Taneb> Because our elliott lives in Hexham and there hasn't been any snow here for a couple of weeks
19:38:14 <tswett> We pulled up YouTube on an iPad and let him use it himself.
19:38:29 <tswett> It's pretty cool how he was capable of selecting his own videos and telling them to play.
19:38:33 <Bike> no! no! no! brainfuck derivatives!
19:38:36 <Bike> obviously the same elliott
19:38:40 <tswett> But he only watched each video for about ten seconds before moving on to the next one.
19:38:49 <boily> ~metar EGNT
19:38:50 <metasepia> EGNT 081920Z 08009KT 3500 -RA BR BKN003 03/03 Q1005
19:39:00 <Bike> numbers station bot??
19:39:10 <boily> it's raining in newcastle, therefore the elliotts are distinct.
19:39:24 <boily> Bike: no, only weather info. https://en.wikipedia.org/wiki/METAR
19:39:29 <tswett> boily's Newcastle Theorem.
19:40:08 <Taneb> `addquote <boily> it's raining in newcastle, therefore the elliotts are distinct. <tswett> boily's Newcastle Theorem.
19:40:09 <boily> it's be nifty for my bot to numbers station :D
19:40:16 <HackEgo> 981) <boily> it's raining in newcastle, therefore the elliotts are distinct. <tswett> boily's Newcastle Theorem.
19:40:22 <tswett> ~metar KGRR
19:40:22 <metasepia> KGRR 081853Z 22005KT 10SM CLR 03/M07 A3044 RMK AO2 SLP319 T00331067
19:40:40 <tswett> Ooh, KGRR's is longer.
19:40:51 <elliott> thats at least seventy more spaces than necessary Taneb
19:41:02 <Taneb> And?
19:41:18 <Taneb> boily, can you add a utility to convert IATA to ICAO?
19:41:30 <boily> I can.
19:42:35 <tswett> So, let's see. That's the 8th of the month at 18:53 Zulu time, or 1:53 PM local time.
19:44:03 <tswett> The temperature is 3 degrees Celsius and the frost point is -7 degrees Celsius.
19:44:22 <tswett> Or, in the common tongue, 37 F and 19 F.
19:44:38 <Taneb> Ugh... Fahrenheit...
19:45:26 * boily merrily swats tswett with a minimalist design, german engineered flexible and shiny SI thermometer
19:46:20 <Taneb> Ugh... Kelvin...
19:46:32 <Bike> imo reamur
19:47:09 <tswett> Wind at 5 knots from 220 degrees.
19:47:25 -!- sirdancealo2 has quit (Ping timeout: 260 seconds).
19:51:13 <boily> neat, KGRR has detailed temperature infos. it is 3.3 °C, with dew point at -6.7 °C.
19:51:24 -!- Sgeo_ has joined.
19:51:28 <tswett> Visibility is 10 miles. The altimeter setting is 30.44 inches mercury. There's an automated precipitation sensor. The pressure at sea level is... 1031.9 hectopascals?
19:51:42 -!- Sgeo has quit (Ping timeout: 272 seconds).
19:51:53 <boily> yep. once again weird pressure units!
19:52:08 <Taneb> 15 psi
19:52:13 <tswett> boily: presumably calculated from values rounded to the nearest degree Fahrenheit.
19:54:25 -!- AnotherTest has left.
19:55:48 <boily> tswett: probably. occult and subversive unitary heresy.
19:58:58 <tswett> I wonder what the purpose of METAR is, anyway.
19:59:49 <boily> pilots, mainly. otherwise for geeking out at a precise and frequent source of numeric data.
20:02:02 -!- oerjan has joined.
20:03:12 -!- oerjan has set topic: <Taneb> #esoteric is supposed to be about esoteric programming languages, but is really a couple of dozen people being weird | Newsflash: every single letter is 'U' | Logs: http://codu.org/logs/_esoteric/.
20:03:38 <oerjan> no one can complain about misleading topic now. Uu uuuu?
20:04:41 <boily> I thought this channel was about esoteric language spotting. ggg ggg G!
20:05:07 <tswett> U uuuuu U uuuuuuuu uuuu uuu uuuuu.
20:05:31 <tswett> Uuuuu uuuuuuuuuu uuuuu uuuuuuu uuuu uuu uuu U. Uuu uuuuuuu, "u".
20:05:55 <tswett> Uuuuuu, uuuuuuu'u uuuuuuuu? U uuuu uuuuu uuu uuuu uuuu.
20:06:05 <boily> ǚ.
20:06:07 <oerjan> tswett: U uuuuuuuu.
20:06:13 <tswett> Uuuuuu uuuu Uuuuuuuu, uu uuuuuuu Uuuu'u uuuuuu.
20:06:38 <tswett> oerjan: U uuu'u uuuuuu uuuuuuuuuu uuuu uuu'uu uuuuuu.
20:06:57 <tswett> Uuuuuuu uu uuuuuu uuuu uuuuuuuuu uuu uuuuuuu uuuu "u".
20:07:02 <oerjan> U UUU
20:07:22 <oerjan> (btw that wasn't the part i changed)
20:12:23 -!- nooga has joined.
20:14:21 <nooodl> `run welcome | uuu
20:14:23 <HackEgo> Uuuuuuu uu uuu uuuuuuuuuuuuu uuu uuu uuuuuuuu uuuuuuuuuuu uuuuuuuu uuuuuu uuu uuuuuuuuuu! Uuu uuuu uuuuuuuuuuu, uuuuu uuu uuu uuuu: uuuu://uuuuuuuu.uuu/uuuu/Uuuu_Uuuu. (Uuu uuu uuuuu uuuu uu uuuuuuuuu, uuu #uuuuuuuu uu uuu.uuu.uuu.)
20:15:50 <oerjan> <Snowyowl> ^ping
20:15:56 <oerjan> i am sure i added that.
20:16:03 <oerjan> ^ping
20:16:12 <oerjan> i guess fizzie didn't save though
20:16:30 <oerjan> ^def ping ul (pong)S
20:16:30 <fungot> Defined.
20:16:59 <oerjan> or maybe someone else added it
20:17:38 -!- nooga has quit (Ping timeout: 252 seconds).
20:17:52 <oerjan> ^def ping ul (That Pong alone can't stop!)S
20:17:52 <fungot> Defined.
20:18:11 <oerjan> `? fungot
20:18:12 <fungot> oerjan: the essence of scheme's interactivity. in case you really want speed, develop in whatever and then added " so that someone can clean?
20:18:15 <HackEgo> fungot cannot be stopped by that sword alone.
20:18:20 -!- phiscribe has left ("Ex-Chat").
20:18:23 <oerjan> ^def ping ul (That Pong alone cannot stop!)S
20:18:24 <fungot> Defined.
20:19:07 <oerjan> fizzie: _now_ you can save hth
20:23:46 -!- hagb4rd has joined.
20:29:12 <shachaf> Phantom_Hoover..............................................
20:29:20 <shachaf> Don't false-alarm-update `smlist
20:31:16 <boily> random late Friday afternoon question: has anyone here dabbled with bitcoins?
20:31:30 <tswett> I dabbled with bitcoins once.
20:32:21 <tswett> `echo waffle waffle waffle
20:32:23 <HackEgo> waffle waffle waffle
20:32:47 <impomatic> I ran the program for about 15 minutes then got bored :-)
20:33:03 <boily> I was wondering: is it possible for bitcoins to disappear and volatilize themselves? like, there's a bug in a transaction, and the amount doesn't exist anymore?
20:33:25 <tswett> Sure enough, if I'm connected to a server through a VPN, and I turn off the VPN, the connection stops working.
20:33:53 -!- atriq has joined.
20:34:04 -!- Taneb has quit (Disconnected by services).
20:34:08 -!- atriq has changed nick to Taneb.
20:34:23 <impomatic> boily: have you tried #bitcoin?
20:34:25 <Taneb> Good advice: if you write a forkbomb, don't test it on your primary computer
20:38:16 <boily> impomatic: I'm going to.
20:38:32 <Gregor> Test it on HackEgo!
20:38:34 <boily> Taneb: not testing bombs on your main machine is for wimps.
20:39:43 <Taneb> fix(forever.forkIO)
20:40:44 <boily> is elliott still there?
20:41:14 <oerjan> `quote 981
20:41:16 <HackEgo> 981) <boily> it's raining in newcastle, therefore the elliotts are distinct. <tswett> boily's Newcastle Theorem.
20:41:36 <oerjan> `run sed -i '981s/ / /' quotes
20:41:39 <HackEgo> No output.
20:41:43 <oerjan> `quote 981
20:41:46 <HackEgo> 981) <boily> it's raining in newcastle, therefore the elliotts are distinct. <tswett> boily's Newcastle Theorem.
20:42:26 <Taneb> Trivia: I typed them out manually rather than copy-pasting
20:42:37 <myname> why did you write a fork bomb in the first place?
20:42:48 <Taneb> myname, to see how hard it'd be in Haskell
20:43:11 <Taneb> > length "fix$forever.forkIO
20:43:13 <lambdabot> <hint>:1:27:
20:43:13 <lambdabot> lexical error in string/character literal at end of input
20:43:14 <myname> m(
20:43:15 <Taneb> > length "fix$forever.forkIO"
20:43:17 <lambdabot> 18
20:43:46 <Taneb> The actual program is 18 characters, however inputs et al. bring it up a tad
20:44:17 <Taneb> > length "import Control.Concurrent;import Control.Monad;import Data.Function;main=fix$forever.forkIO"
20:44:18 <lambdabot> 91
20:44:54 <Gregor> Haskell: Not good for Twitter-sized programs.
20:44:58 <Bike> What's the trivalent logic operator such that foo True = True; foo _ = Unknown?
20:45:35 <Taneb> Gregor, if I wanted Twitter-sized programs, I'd seriously rethink my life
20:45:55 <Gregor> Heh
20:46:00 <elliott> Bike: i think it's foo
20:46:12 <Bike> Shit.
20:48:51 * impomatic wonders if it's possible to write a bf interpreter in a tweet
20:49:27 <Bike> relative to what machine??
20:49:41 <elliott> impomatic: http://j.mearie.org/post/1181041789/brainfuck-interpreter-in-2-lines-of-c
20:50:17 <Bike> the golf it burns
20:52:15 <ion> nice
20:53:00 <myname> i don't even
20:53:23 <myname> a bit explaination would be nice
20:53:29 <zzo38> I want to make programs that fit in a QR-code
20:53:37 -!- Nisstyre has quit (Quit: Leaving).
20:53:53 <myname> zzo38: android virusses?
20:54:44 <zzo38> No.
20:54:59 <Bike> myname: did you scroll down
20:55:19 <myname> oh
20:55:37 <nooodl> wow. that syscall...
20:55:44 <Bike> good syscall
20:56:10 <zzo38> I think someone might have made a QR-code encoding the PNG file of itself
20:56:11 <boily> zzo38: https://chart.googleapis.com/chart?cht=qr&chs=350x350&chld=L&choe=UTF-8&chl=%23include+%3Cstdio.h%3E%0Aint+main(void)%7Bprintf(%22Hello%2C+world!%5Cn%22)%3Breturn+0%3B%7D%0A
20:56:34 <ion> zzo38: That would be cool.
20:56:41 <boily> but, usually in those cases, the code is Scheme or a variant thereof.
20:56:49 <Taneb> I saw someone who made a zip file that contained itself
20:56:56 <boily> (I need to find that project with flashy flowers and an arduino derivative...)
20:57:08 -!- Phantom_Hoover has quit (Remote host closed the connection).
20:57:31 <zzo38> I know that BASIC programs for the Nintendo 3DS are stored in QR-codes, although you normally need several.
20:57:32 <boily> Taneb: http://research.swtch.com/zip
20:57:35 <Bike> zip file of length N that expands to a zip file of length N+1 that expands to a zip file of...
21:00:27 <zzo38> I really think "select-encode" and "select-decode" instruction of a CPU really would be useful in many cases, so I want to learn how to program it into a Verilog code of an existing CPU core.
21:01:51 <nooodl> now i'm wondering. what's the shortest bf interpreter out there, regardless of language
21:02:04 <zzo38> I also think they would be useful in C to make ~< and ~> operators, really, I do things that I want such operators, a lot
21:02:15 <monqy> nooodl: i made a language where every program is a bf interpreter
21:02:20 <monqy> nooodl: checkmate???
21:02:25 <nooodl> no...
21:02:36 <myname> nooodl: waiting for HQ9+BF?
21:02:56 <Bike> nooodl: "regardless of language" means you can just define a language etc etc monqy
21:03:03 <nooodl> that's like the most tired esoteric programming language """"joke""""" ever
21:03:28 <nooodl> the answer is: yes, you could do this, but i'm going to punch you in the face
21:03:45 <myname> challenge considered
21:03:46 <Bike> turing relativity isn't a joke it's the basis of life!
21:04:01 <Bike> or kolmogorov relativity would be a better name i guess, w/e
21:04:55 <monqy> thingy thingy something about the question being wack
21:05:06 <Bike> straight up wack
21:05:28 <boily> ~duck quack
21:05:28 <metasepia> quack definition: to make the characteristic cry of a duck.
21:06:47 <monqy> there are languages that take as input a thing and its output goes through a brainfuck implementation. cat is a brainfuck interpreter. thank you tehz.
21:09:46 <boily> tswett: the official FAQ about bitcoins confirm my fear: a spurrious electronic mishap can destroy forever bitcoins.
21:09:47 <nooodl> who's tehz why're we thanking them
21:10:10 <myname> boily: losing your wallet can, too
21:10:21 <monqy> nooodl: http://esolangs.org/wiki/User:TehZ
21:11:28 <nooodl> http://esolangs.org/wiki/Brainbrain oh
21:11:34 <monqy> nooodl: http://esolangs.org/wiki/Special:Contributions/TehZ
21:11:40 <Sgeo_> "Unparseable is a language designed to be hard (maybe impossible?) to parse. It is context-sensitive, it REQUIRES you to mix the parser and the interpreter, and it allows you to redefine commands while the program is running."
21:11:43 <Sgeo_> Like Perl!
21:11:52 <monqy> just look at enough of what tehz's done and you'll understand why thanking him is a funny joke :-)
21:11:54 <Bike> ℒ feels weirdly dual to this.
21:12:44 <nooodl> http://esolangs.org/wiki/Postfix_notation thanks tehz
21:13:10 <quintopia> ~duck boily
21:13:10 <metasepia> --- No relevant information
21:13:15 <Bike> surround notation is pretty :-)
21:13:15 <Sgeo_> http://esolangs.org/wiki/Unparseable suddenly I have no desire to make an interpreted Trustfuck
21:13:16 <monqy> nooodl: http://esolangs.org/wiki/Surround_notation
21:13:43 <nooodl> the wikipedia link to the linguistics page :')
21:13:50 <boily> surround. notation. wtf.
21:13:55 <Sgeo_> Unless... you write an interpreter, and it becomes a compiler by magic
21:14:00 <boily> quintopia: I am unduckable.
21:14:10 <quintopia> ~duck unduckable
21:14:10 <metasepia> --- No relevant information
21:14:16 <monqy> nooodl: tehz is also 'infamous' for http://esolangs.org/wiki/Meta_Turing-complete
21:14:41 <nooodl> ?????
21:14:44 <Bike> !
21:17:50 -!- epicmonkey has quit (Ping timeout: 272 seconds).
21:21:55 <tswett> This "Unparseable" language looks vaguely defined.
21:22:40 <tswett> It says that the & command modifies the program. It implies that the & command does this before being executed.
21:22:42 <Bike> to be fair, so is perl
21:23:01 <tswett> Which implies that Unparseable has separate compile-time and run-time semantics.
21:23:55 <tswett> It also implies that the = command works at compile-time, not at run-time.
21:24:10 <hagb4rd> woa.. check this out http://thecarpandtheseagull.thecreatorsproject.com/
21:24:17 <hagb4rd> beautiful
21:25:04 <tswett> It's not currently clear whether / works at compile-time or run-time.
21:25:36 <tswett> In any case, both / and = only apply to the commands following them.
21:26:11 <Sgeo_> tswett, what do you think of Trustfuck?
21:26:45 <tswett> Hm. In addition to implying that = works at compile-time, it strongly implies that it works at run-time.
21:27:12 <tswett> So yeah, the Unparseable spec is just self-contradictory.
21:27:15 <tswett> Sgeo_: I'm not familiar with it.
21:27:32 <Sgeo_> http://esolangs.org/wiki/Trustfuck
21:28:36 <quintopia> my browser doesn't support opengl, dawg
21:30:22 <tswett> Sgeo_: mm, dunno.
21:30:23 <nooodl> perhaps the most confusing thing about trustfuck is... why would you make EOF -1
21:30:58 <Sgeo_> nooodl, specifying EOF makes it easier to write compilers that read _all_ input, not just input cut off by NUL
21:31:13 <tswett> Hm. I need to come up with an interesting esolang.
21:31:19 <tswett> I'll think about it over the next however long.
21:31:27 <Sgeo_> The interesting thing is what a compiled in ! does
21:31:40 <Sgeo_> Suppose you make a compiler for a similar language except all the commands are shifted
21:31:53 <Sgeo_> Then, the shifted ! will accept the shifted commands as the primitives
21:32:01 <boily> this sounds strangely malbolgey.
21:33:11 <nooodl> i don't really get trustfuck at all
21:33:28 <nooodl> "It is intended to be compiled, and the compiler, written in Trustfuck,"
21:33:38 <nooodl> the compiler *must* be written in trustfuck?
21:34:19 <Sgeo_> Hm.
21:35:02 <Sgeo_> There's a Haskell implementation, but conceptually it is the compiled form of the Trustfuck code
21:35:36 <Sgeo_> It actually literally includes ",+[-:,+]!"
21:37:13 <oerjan> nooodl: there's an implicit "which is" before "written"
21:37:27 <nooodl> hmm let me try to make an implementation in python
21:38:05 <nooodl> i don't have brains so i can't read the haskell code
21:38:17 <Sgeo_> I can describe how the Haskell works if that helps
21:38:18 <nooodl> but i don't really get why you need the whole primSource string
21:38:36 <nooodl> oh, to compile the code into haskell i guess
21:39:03 <Sgeo_> It's effectively an almost-quine
21:40:17 <Sgeo_> Much of the body of the code acts as an interpreter for primitives.
21:40:31 <myname> could someone explain why underload puts stuff with parentheses on the stack?
21:41:20 <oerjan> myname: because that's the main way of getting a constant program onto the stack
21:41:39 <Sgeo_> With one constant holding the compiled-into-primitives code that represents the program that is currently running.
21:41:53 <oerjan> also the only command which can work if the stack is empty to start with
21:42:14 <Sgeo_> That is, when I compile X into primitives, I emit what is effectively interpreter+prims to interpret
21:42:24 <myname> i do understand why he uses (...) to put stuff on the stack
21:42:25 <oerjan> myname: or do you mean something else?
21:42:37 <Sgeo_> When I compile, I also push myself onto the compilerStack that will be emitted
21:42:43 -!- nooga has joined.
21:42:49 <myname> what i don't get is why it doesn't just put the stuff without the parantheses on the stack
21:43:13 <Sgeo_> That is, after having run the code block through the compiler stack. The compiler stack also consists of, effectively, lists of primitives
21:43:26 <Taneb> myname, that's just how the specific implementation you're looking at workds
21:43:32 <Sgeo_> So, I run the code block as input to the most recent, then that through second-most-recent, etc.
21:43:53 <Sgeo_> Well, wait, that's not accurate.
21:44:07 <oerjan> myname: oh. that's just the notation for stacks which i invented... doing it that way means you can just put the stack in front of the program without separating them. that is very useful for when you think of underload as a concatenative language, but ais523 (the language inventor) found it weird too
21:44:18 <Sgeo_> I run the code block as input to the top of the compiler stack, and while that is running, the compiler stack is conceptually popped
21:44:34 <oerjan> he used to have the stack without parentheses
21:44:35 <Sgeo_> So when the top compiler calls compile, the next program on the compiler stack starts running
21:45:16 <oerjan> myname: i wish people could just trust me that it works much better thinking about the language that way :(
21:45:18 <Sgeo_> When compile is called while compiler stack is empty, that's when the Haskell program + new compilerStack and program is emitted
21:45:29 <Sgeo_> nooodl, is this making any sense?
21:45:33 <nooodl> yeah
21:45:42 <nooodl> it soudns like it's a lot easier to do in an imperative language
21:46:02 <Sgeo_> Meh, not really.
21:46:09 <oerjan> myname: and without it we'd need some other notation to separate stack elements
21:46:10 <nooodl> well, it's the same really
21:46:35 <Sgeo_> I can't _really_ change the compiler stack. What if a program wants to do something weird like call compile twice?
21:46:41 <nooodl> just, more work has already been done for you? because you can translate brainfuck code into simple statements like "while t[p]:" instead of having to write a whole interpreter yourself
21:47:19 <Sgeo_> Hmm.
21:48:16 <Sgeo_> Remember, you have a stack of compilers that you have to run. So you'd have to call portions of that generated imperative code.
21:48:30 <Sgeo_> Maybe c0 c1 c2 etc? And functions ... hm
21:48:46 <Sgeo_> functions s0 s1 s2 and s2 may end up running s1 which runs s0?
21:49:05 <nooodl> i don't get the compiler stack thin
21:49:15 <nooodl> i think i'm about to find out the hard way
21:49:17 <nooodl> why i need it
21:49:18 <oerjan> ->
21:49:32 <Sgeo_> Suppose I write, in Trustfuck, a compiler for a language Trustfuck+
21:49:36 <Sgeo_> Trustfuck ++
21:49:39 <Sgeo_> blah
21:50:11 <Sgeo_> Anyway, the Trustfuck++ compiler (written in Trustfuck) translates Trustfuck++ code to Trustfuck code before calling !, right?
21:50:13 <nooodl> (does trustfuck have 8-bit cells?)
21:50:24 <Sgeo_> Unspecified, but must be allowed to be negatvie
21:50:27 <Sgeo_> negative
21:50:31 <nooodl> oh
21:50:34 <nooodl> i'll write it non-wrapping
21:50:58 <Sgeo_> Now, what happens when Trustfuck++ uses !?
21:51:13 <Sgeo_> ! in Trustfuck++ will take Trustfuck++ code
21:51:25 <Sgeo_> So the Trustfuck++ compiler will need to be run
21:51:44 <nooodl> which is written in trustfuck?
21:51:52 <nooodl> so you need the trustfuck compiler, etc?
21:52:06 <Sgeo_> Well, at the bottom level it's primitive compilation
21:53:10 <Sgeo_> (Incidentally, ! in Trustfuck++ taking Trustfuck++ is automatic, it's the meaning of Trustfuck's !)
21:53:40 <Sgeo_> I guess that's a bit of an easy mode
21:55:09 <Sgeo_> Although the Haskell implementation does include the Trustfuck written in Trustfuck compiler
21:55:11 -!- boily has quit (Quit: Poulet!).
21:55:13 -!- metasepia has quit (Remote host closed the connection).
21:55:41 <Sgeo_> Which seemed easier than writing the code to actually, for each character do this, compile, etc.
21:55:44 <Sgeo_> Reuse of machinery
21:56:08 <Sgeo_> Although if you're compiling into while's, etc., that wouldn't be so helpful for you
21:59:29 <Sgeo_> I think I'd really like to see people making better languages with the core Trustfuck concept, rather than more implementations
21:59:32 <Sgeo_> But whatever
21:59:43 -!- monqy has quit (Quit: hello).
22:07:57 <myname> to be honest, i don't get the core trustfuck concept
22:08:10 <nooodl> http://codepad.org/MbjAElkz this might work idk
22:08:22 <nooodl> i'm going to give actual ! code a shot
22:10:00 <nooodl> oops theres some obvious things wrong with this
22:10:41 -!- azaq23 has quit (Quit: Leaving.).
22:10:51 <Sgeo_> Python is not the best language for emitting.
22:12:01 <Sgeo_> myname, the core idea is that the details of the target of compilers is hidden, you write compilers that target Haskell or Python or whatever without writing a drop of Haskell or Python
22:13:28 <Sgeo_> And when you write a compiler for another language in Trustfuck, that language's compile instruction also does not need to do Trustfuck, you're always compiling to the language you're writing the compiler in.
22:16:46 <nooodl> Sgeo_: http://codepad.org/ttu0lN3B
22:16:52 <nooodl> does this mean i did things right?
22:18:09 <Sgeo_> nooodl, that's one test
22:19:07 <Sgeo_> What happens with the following code? ,+[:,+]!
22:20:02 <Sgeo_> That should compile into Python. Then the equivalent shifted up should compile, and be equivalent
22:20:44 <nooodl> it outputs python code that doesn't seem to be doing anything
22:21:08 <nooodl> it contains the compile() definition and the header, but the "body" i pass it seems to be ignored
22:21:13 <Sgeo_> Erm, wait
22:21:22 <Sgeo_> I'm wrong
22:21:24 <nooodl> which makes sense actually
22:21:40 <Sgeo_> ",+[:,+]!" -TF-> newlang
22:22:13 <Sgeo_> > map succ ",+[-:,+]!"
22:22:15 <lambdabot> "-,\\.;-,^\""
22:22:35 <Sgeo_> "-,\\.;-,^\"" -newlang-> newlang
22:22:45 <Sgeo_> I... think
22:22:47 <nooodl> hmmm hold on
22:22:52 <nooodl> > map succ "+."
22:22:54 <lambdabot> ",/"
22:23:25 <nooodl> > map pred "+."
22:23:26 <lambdabot> "*-"
22:23:40 <nooodl> i'm going crazy
22:23:52 <nooodl> or, no
22:23:53 <Sgeo_> Let me find my testing directory
22:24:38 <Sgeo_> Oh, I'm wrong about the direct
22:24:47 <Sgeo_> I made a compiler for a language called pred consisting of ,+[:,+]!
22:24:51 <fizzie> ^save
22:24:51 <fungot> OK.
22:25:08 <nooodl> echo *********************************- | python tf2.py | python
22:25:20 <Sgeo_> It's pred, because the lack of - means that you go one LOWER than the TF to get the corresponding TF
22:25:21 <nooodl> ^ this now prints '!', then a python program
22:25:38 <Sgeo_> So I compiled that with the compiler
22:26:32 <nooodl> ohh
22:26:40 <nooodl> it was a stray " " from my echo command
22:26:43 <nooodl> getting shifted into "!"
22:26:54 <nooodl> then executed, outputting a python program
22:27:00 <nooodl> that does nothing
22:27:19 <nooodl> now it works fine
22:27:29 <Sgeo_> > map pred ",+[-:,+]!"
22:27:30 <lambdabot> "+*Z,9+*\\ "
22:27:38 <Sgeo_> Now, compile that with the pred compiler.
22:27:45 <Sgeo_> And see if the result is also a pred compiler.
22:27:54 <Sgeo_> It should be.
22:28:10 <Sgeo_> > var $ map pred ",+[-:,+]!"
22:28:11 <lambdabot> +*Z,9+*\
22:28:21 <Sgeo_> Oh, that doesn't show the space
22:28:38 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.90 [Firefox 19.0.2/20130307023931]).
22:29:32 -!- Phantom_Hoover has joined.
22:29:35 <nooodl> don't you mean
22:29:38 <nooodl> > map pred ",+[:,+]!"
22:29:40 <lambdabot> "+*Z9+*\\ "
22:30:04 <nooodl> i seem to be getting just a TF compiler, not a pred one
22:30:57 <nooodl> for +*Z9+*\ i get the right thing
22:31:31 <Sgeo_> If you're getting the right thing for that, then your implementation is wrong
22:31:49 <Sgeo_> ! is supposed to take primitives in the language that is currently running, not necessarily TF
22:32:44 -!- kallisti has quit (Quit: leaving).
22:32:49 <nooodl> wait...
22:33:02 -!- kallisti has joined.
22:33:03 -!- kallisti has quit (Changing host).
22:33:03 -!- kallisti has joined.
22:33:08 <nooodl> i don't know if i'm doing that
22:33:32 <Sgeo_> And thus nooodl learns the reasoning behind the compiler stack the hard way, just as he predicted
22:33:46 <nooodl> yeah i'm definitely not
22:33:47 <nooodl> hmm
22:34:11 <Sgeo_> Possible alternative to this: Make it easy enough to write a quine such that people could make ! behave that way if they want but don't have to
22:34:26 <nooodl> i don't see how to make a new compiler for the currently running language
22:34:43 <Sgeo_> Have all the old compilers on hand.
22:37:01 <nooodl> so what you were saying is, this should be able to print out a compiler for pred, written in python, right?
22:37:27 <nooodl> (which is fails to do because of it not having the compiler stack thing)
22:38:31 <Sgeo_> Yes
22:38:52 <Sgeo_> Because in pred, space takes PRED commands in the code block, not TF commands
22:42:04 <Sgeo_> AFK
22:42:24 <nooodl> theoretically you could apply the same "f(TF) = PRED" process to translate TF into any other language L... and then f(",+[-:,+]!") would be an L program that spits out a python L compiler
22:42:51 <nooodl> i think? trustfuck is kinda crazy
22:43:26 <Sgeo_> nooodl, if I understand you correctly, that is completely correct.
22:43:45 <nooodl> yeah, i'm kinda bad at explaining it
22:44:21 <nooodl> but it's pretty nifty
22:44:27 <Sgeo_> :D
22:46:41 <Sgeo_> Actually, wait
22:47:04 <Sgeo_> You'd need to be able to reverse it. It's easy to make a language L that does not contain equivalents of ! or +
22:48:29 <Sgeo_> So, if you have a transform f(L) = TF, then f^-1(",+[-:,+]!"), if it exists, = compiler for L
22:48:37 <Sgeo_> written in L
22:48:49 -!- Taneb has quit (Quit: Leaving).
23:09:35 <Sgeo_> back
23:11:05 -!- augur has quit (Remote host closed the connection).
23:12:19 <Sgeo_> o.O wait what http://byorgey.wordpress.com/2012/01/05/parsing-context-sensitive-languages-with-applicative/
23:13:37 <Bike> cool
23:14:19 <Sgeo_> :t (&&&)
23:14:21 <lambdabot> Arrow a => a b c -> a b c' -> a b (c, c')
23:14:46 <Sgeo_> > (pred &&& id &&& succ) 5
23:14:47 <lambdabot> (4,(5,6))
23:15:02 <Sgeo_> Would be so nice for (4,5,6) to be syntax sugar for that
23:15:11 <Sgeo_> Although elliott still disagrees
23:15:17 <Sgeo_> Oh, wait
23:15:21 <Sgeo_> Oh, n/m the wait
23:15:43 <Bike> don't you mean (4,(5,(6,())))
23:16:04 -!- Frooxius has quit (Ping timeout: 248 seconds).
23:16:07 <Sgeo_> well, (5,6) is presumably syntax sugar for (5,(6,()))
23:17:25 <elliott> so your (&&&) example would not work
23:18:01 <Bike> ilu sugar
23:18:40 -!- monqy has joined.
23:19:21 <oerjan> > each.traverse.(pred, id, succ)$5
23:19:23 <lambdabot> Couldn't match expected type `t0 -> t1'
23:19:23 <lambdabot> with actual type `(a0 ...
23:19:33 <oerjan> :t each.traverse
23:19:35 <lambdabot> (Applicative f, Traversable t1, Each f s t (t1 a) (t1 b)) => (a -> f b) -> s -> f t
23:19:39 <oerjan> oh hm
23:21:28 <oerjan> :t each
23:21:29 <lambdabot> (Indexable (Index t) p, Each f s t a b) => p a (f b) -> s -> f t
23:21:37 * elliott isn't sure what oerjan's example is meant to do
23:21:47 <elliott> (f,g,h) isn't quite a function :P
23:22:23 <oerjan> :t sequence
23:22:25 <lambdabot> Monad m => [m a] -> m [a]
23:22:27 <oerjan> :t sequenceA
23:22:29 <lambdabot> Not in scope: `sequenceA'
23:22:29 <lambdabot> Perhaps you meant one of these:
23:22:29 <lambdabot> `Data.Traversable.sequenceA' (imported from Data.Traversable),
23:22:40 <oerjan> damn you lambdabot
23:22:44 <elliott> damnbdabot
23:22:50 <oerjan> :t Data.Traversable.sequenceA
23:22:52 <lambdabot> (Applicative f, Traversable t) => t (f a) -> f (t a)
23:22:57 <oerjan> oh hm
23:23:46 <Sgeo_> :t WrapMonad
23:23:47 <lambdabot> m a -> WrappedMonad m a
23:24:07 <Sgeo_> Can WrapMonad actually break stuff somehow?
23:24:39 <Sgeo_> Hmm, I guess if the monad is an instance of something that WrappedMonad didn't include
23:25:36 <oerjan> > each id (pred, id, succ) 5
23:25:39 <lambdabot> (4,5,6)
23:25:46 <Sgeo_> :t each
23:25:48 <lambdabot> (Indexable (Index t) p, Each f s t a b) => p a (f b) -> s -> f t
23:25:49 <elliott> :t sequenceAOf
23:25:51 <lambdabot> LensLike f s t (f b) b -> s -> f t
23:25:55 <elliott> > sequenceAOf each (pred,id,succ) 5
23:25:57 <lambdabot> (4,5,6)
23:26:06 <oerjan> ah that's the one i was looking for
23:26:11 <oerjan> bit verbose though :P
23:26:23 <elliott> well, in this case
23:26:25 <elliott> :t sequenceOf
23:26:28 <lambdabot> LensLike (WrappedMonad m) s t (m b) b -> s -> m t
23:26:28 <elliott> would work too
23:26:28 * Sgeo_ is scared of lenses
23:26:37 <elliott> saves a whole character
23:26:46 <monqy> what's to be afraid of
23:26:58 <Bike> Sgeo_: but your personal hero, Baruch Spinoza, was a glassmaker!
23:28:19 <Sgeo_> o.O at both assuming that I knew who Spinoza was, and that according to Wikipedia, glassmaking may have killed him
23:28:32 <Sgeo_> The latter is a good enough reason for me to be afraid of lenses, I think
23:28:59 <Bike> wait did you actually not know who spinoza was
23:29:15 <Sgeo_> I knew that he existed and was a philosopher
23:29:17 <Bike> he's all famous and shit
23:29:19 <Bike> yeah that's good enough.
23:31:10 <monqy> oh are you talking about lenses like what you put on your eyes to see good
23:31:22 <monqy> yeah those are kind of freaky
23:32:08 <monqy> i have some 'lenses' that make everything dark so my eyes dont hurt in the sunlight? spooks me out every time. theyre staring at me right now. i should move them.
23:32:55 <elliott> are you explaining sunglasses to #esoteric
23:32:59 <elliott> thats probably actually the safe move i guess
23:33:15 <Bike> help what's a sunglass
23:34:05 <monqy> it's like a normal glass but it has a little sun in it, which cancels out with the sun you know and love
23:34:10 <oerjan> it's a glass that contains a sun, import for fusion technology
23:34:15 <oerjan> *important
23:34:28 <monqy> it's not as strong as 'the' sun though so you can still see a bit through it
23:35:08 <Bike> oh cool
23:35:10 <Bike> i love science.
23:35:28 <elliott> what if i don't love the sun
23:35:42 <oerjan> then you're probably a vampire
23:36:02 <elliott> me too
23:36:05 <oerjan> you should avoid touching sunglasses
23:36:39 <oerjan> that was to <elliott> what if i don't love the sun , hth
23:36:55 <elliott> me too
23:37:03 <nooodl> there should be some kind of sunglasses joke in Lens
23:37:22 <Bike> But sunglasses don't actually have lenses in them. Just glass.
23:37:22 <elliott> ok
23:37:43 <Bike> christ now i'm imagining someone who uses libraries based on jokes in their source code
23:38:07 <monqy> imagining someone who uses lens
23:38:20 <Bike> D:
23:38:45 <cookienugget> was that thing you wear on your arm and handle interfaces wirelessly posted here ?
23:39:08 -!- copumpkin has quit (Ping timeout: 240 seconds).
23:39:38 -!- copumpkin has joined.
23:40:28 <tswett> Sgeo_: so why's it called Trustfuck?
23:41:09 <Sgeo_> It was inspired by Reflections on Trusting Trust (although I don't think I actually read the paper)
23:41:17 <tswett> Sunglasses have lenses, but they're lenses that don't do very much refracting.
23:41:27 <tswett> Rather, the refraction doesn't have much net effect.
23:41:30 <Sgeo_> The information about the target language that the compiler needs is 'hidden away' in a trusting trust like manner
23:42:06 <nooodl> https://github.com/noelmarkham/learn-you-a-haskell-exercises hey, this is cool
23:42:59 <nooodl> Bike aren't you reading through LYAH at the moment, this might be useful!
23:43:38 <elliott> and admit he doesn't understand the material first time around?
23:43:43 <elliott> you have no ken of the politics at play here
23:43:49 <elliott> also what are you doing helping a lisper
23:44:09 <Sgeo_> I should try to look at Shen again
23:44:26 -!- nooga has quit (Ping timeout: 256 seconds).
23:46:09 <Bike> i think i'll look at it to see when this gets past "you have only ever used java and don't know what a function is" mode
23:46:26 <elliott> you're a lisper
23:46:29 <elliott> you don't know what a function is
23:46:32 <nooodl> lisper is a weird word to me because there's a street close to where i live that's called Lisperstraat
23:46:35 <elliott> you think they have side effects and stuff
23:46:45 <nooodl> it's called that because a nearby plain is called Het Lisp i think!
23:46:53 <nooodl> also it's not exactly "close", sorry, no stalking me
23:47:12 <elliott> gay lisp, het lisp,
23:47:14 <Bike> come on man, i know the difference between a procedure and a pure function.
23:47:38 <elliott> come on that was at least slightly funny
23:47:46 <Sgeo_> And can you name a Haskell function that takes 0 arguments, a Haskell function that takes 1 argument, and a Haskell argument that takes 2 arguments?
23:47:49 <Sgeo_> (This is a trick question)
23:47:56 <elliott> what
23:48:10 <monqy> um
23:48:11 <monqy> sgeo???
23:48:29 <nooodl> i legitimately don't know the answer to that
23:48:32 <nooodl> is it my fault
23:48:39 <monqy> it's sgeo's fault
23:48:42 <Bike> as a lisper i have also never heard of currying (nor have i been party to really boring arguments about whether "curry" in a library is technically a correct name (it's not))
23:48:42 <nooodl> ok good
23:49:16 <Sgeo_> Currying by default has some interesting effects
23:49:19 <shachaf> monqy hi
23:49:21 <elliott> :t curry
23:49:22 <Sgeo_> ($) is just type restricted id
23:49:23 <lambdabot> ((a, b) -> c) -> a -> b -> c
23:49:31 <Bike> haha what is that even for
23:49:31 <elliott> what now Bike
23:49:35 <elliott> it curries a function
23:49:36 <elliott> :t uncurry
23:49:38 <lambdabot> (a -> b -> c) -> (a, b) -> c
23:49:43 <elliott> > map (uncurry (+)) [(1,2),(3,4)]
23:49:45 <lambdabot> [3,7]
23:49:53 <elliott> curry is... harder to find uses for
23:49:56 <elliott> :t curry fst
23:49:57 <elliott> :t curry snd
23:49:58 <lambdabot> c -> b -> c
23:49:59 <lambdabot> a -> c -> c
23:50:05 <Bike> good functions
23:50:15 <elliott> (const and flip const, respectively)
23:50:17 <elliott> (or const and const id)
23:50:37 <monqy> shachaf: hi??
23:50:38 <Bike> can i give up on haskell and program exclusively with ski combinators
23:50:45 <elliott> Bike: lazy k
23:50:48 <Bike> genius
23:50:53 <nooodl> maybe if you have some function on pairs (a,b)
23:50:58 <elliott> yes but why would you
23:51:01 <Bike> that.
23:51:45 <shachaf> whats going on ehre
23:51:49 <nooodl> because the pairs are points, or something! like distance :: (Int,Int) -> (Int,Int) -> Int
23:51:54 <shachaf> is Bike learning about 0 argument functions
23:51:57 <monqy> something about arrows (why would you)
23:52:03 <elliott> nooodl: and would curry be useful there???????
23:52:06 <nooodl> well they wouldn't be Ints but you get the idea
23:52:08 <nooodl> i'm goign places
23:52:22 <Sgeo_> Bike, also there are no 0 argument functions
23:52:22 <elliott> bye nooodl
23:52:24 <monqy> shachaf: sgeo said something silly
23:52:26 <nooodl> bye
23:52:28 <monqy> bye
23:52:30 <oerjan> there can be no 0 argument functions. there always arguing over functions.
23:52:35 <elliott> Sgeo_: not true. "0-argument function" is a perfectly well-defined concept
23:52:37 <oerjan> *there is
23:52:44 <elliott> (they are the same thing as depth-0 nested lists, or such)
23:52:54 <Bike> it's official, i've picked the worst place to learn haskell near.
23:52:57 <tswett> We need to turn the calculus of constructions into a combinator system.
23:53:00 <elliott> the error is in taking this to mean "everything is a function", or promoting functions as somehow special because of that
23:53:21 <tswett> And then program in that.
23:53:23 <monqy> THEORY: everything is a thing
23:53:28 <nooodl> let's say you have a list of x values and a list of y values and you want all of their distances to (0,0),
23:53:35 <tswett> It would be just like programming in the SKI calculus, except worse.
23:53:42 <oerjan> elliott: that generalizes to arbitrary Functors, no?
23:53:44 <nooodl> and instead of writing "map (distance (0,0)) $ zip xs ys"
23:53:59 <elliott> oerjan: generalises to more or less arbitrary anything :P
23:53:59 <monqy> Bike: btw so long as you just ignore the silly things people say (like that thing sgeo said, and that other thing sgeo said what was it yesterday) you'll probably be fine hopefully
23:54:02 <nooodl> you can write like, "zipWith (curry $ distance (0,0)) xs ys"
23:54:06 <nooodl> ain't that great!
23:54:08 <tswett> Anyway, I now know what my language is going to be like.
23:54:08 <Bike> monqy: i'm waaaaay ahead of you
23:54:29 <elliott> monqy: you mean as long as Bike ignores #esoteric he'll be ok
23:54:30 <tswett> It's going to be called Tweelee. A program is just going to be a finite state machine operating on a pointed directed unknot diagram.
23:54:33 <elliott> i think he's learned that
23:54:54 <elliott> nooodl: so why do you have [Int] and [Int] rather than [(Int,Int)]???
23:54:55 <Sgeo_> monqy, it was a trick question. I was going to note all Haskell functions as having 1 argument
23:54:55 <Bike> i mean, it's not like i don't like this. it's neat having quicksort as a oneliner even if it's not the best implementation, that sort of thing
23:55:04 <elliott> nooodl: btw
23:55:06 <monqy> Sgeo_: well it was silly
23:55:07 <Bike> and "filter" is a way better name than "remove-if-not" i tell you what
23:55:07 <nooodl> it was an accident elliott
23:55:14 <elliott> nooodl: <nooodl> you can write like, "zipWith (curry $ distance (0,0)) xs ys"
23:55:17 <elliott> you actually want uncurry there
23:55:23 <elliott> uh wait
23:55:25 <elliott> no you don't ignore me
23:55:30 <monqy> Bike: is that what clisp calls it
23:55:36 <monqy> Bike: woooow
23:55:36 <nooodl> yeah uncurry would've actually been easy to find uses for :(
23:55:39 <tswett> The commands let you move forwards and backwards, and perform Reidemeister moves on your vicinity.
23:55:40 <oerjan> <tswett> We need to turn the calculus of constructions into a combinator system. <-- what would a combinator system with explicit types be like...
23:55:42 <Bike> monqy: "cool huh"
23:55:48 <elliott> Bike: well the quicksort one-liner doesnt even have quicksorts asymptomtotmotmotmotmics :-( thankfully merge sort is nice on lazy linked lists!
23:56:04 <Bike> elliott: that's what i meant by not the best implementation.
23:56:04 <tswett> oerjan: well, the type of a CoC term can always be computed from the term.
23:56:12 <elliott> monqy: did you know: clisp also calls map: mapcar???
23:56:17 <elliott> there's not even any automobiles involved
23:56:18 <monqy> vroom vroom
23:56:21 <nooodl> ugh remember when in common lisp,
23:56:27 <Sgeo_> clisp is a specific Common Lisp impelementation
23:56:29 <nooodl> functions and other things are in different namespaces or some crap
23:56:32 -!- sebbu has quit (Ping timeout: 276 seconds).
23:56:37 <nooodl> and you have to write (mapcar #'function things)
23:56:40 <tswett> So it'd be a lot like our plain old regular boring combinator systems.
23:56:48 <elliott> remember when in common lisp: it's a terrible language?
23:56:51 <elliott> yes i remember that vividly.
23:56:57 <elliott> sorry *clisp
23:56:57 <Bike> i am wounded
23:57:54 <Sgeo_> I do support the existence of good macros.
23:58:03 <tswett> I lied. This knotty language will be called Tweeling.
23:58:10 <nooodl> i just don't even understand that, the whole function symbol namespace difference thing, isn't the nice thing about lisp not having to do that,,,,,
23:58:26 <Sgeo_> The nice thing about Lisp is macros.
23:58:27 <elliott> theres nothing nice about lisp nooodl
23:58:28 <elliott> even Bike knows that
23:58:39 <Bike> it's nice having parameters named "list" but still being able to call the list function. it's not exactly major
23:58:50 <nooodl> wow i tried to parse "tweeling" as an english word and i'm a native dutch speaker
23:59:01 <Bike> tweedleedlee
23:59:14 <Sgeo_> The big issue is having to deal with labels and flet in additition to the regular let stuff
23:59:18 <Sgeo_> Well, I guess that's not big
23:59:23 <Sgeo_> But that's an annoyance
23:59:26 <Sgeo_> Also a false sense of security
23:59:32 <oerjan> tswett: i mean that in CoC the terms contain types (and vice versa), no?
23:59:34 <nooodl> Bike: please don't tell me that's "the" argument for having #'functions
23:59:35 <Phantom_Hoover> since when was Bike a lisper
23:59:37 <monqy> lisp macros....aren't those those unhygeinic things
23:59:42 <Phantom_Hoover> wtf is even going on here
23:59:43 <tswett> oerjan: well, every type is also a term.
23:59:47 <elliott> just imagine a dependently typed lisp. where in you have an INFINITE NUMBER OF NAMESPACES
23:59:51 <elliott> because types kinds sorts .
23:59:54 <nooodl> welcome to het lisp
23:59:59 <monqy> welcome to Heck Lisp
←2013-03-07 2013-03-08 2013-03-09→ ↑2013 ↑all