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