00:00:11 There's a flat space for function arguments, basically, not a nested one. 00:00:13 oh good god not more of this terrible notation 00:00:14 at least: maybe?? 00:00:25 elliott: hi 00:00:46 why not have [x] as a shorthand for [x ?] 00:01:22 -!- pikhq has joined. 00:01:44 -!- pikhq_ has quit (Ping timeout: 256 seconds). 00:02:00 evincar: how do you compose [g ?] with x? 00:02:02 I dunno, that doesn't seem like the best idea. Ideally x and [x] would be the same in all cases, to avoid confusion. 00:02:35 So x is a function? 00:02:43 sure 00:02:49 does that matter 00:03:19 Yeah. 00:03:30 If you're composing functions, you need to know the arity. 00:03:37 everything is unary 00:03:40 So that you can use the right number of placeholders. 00:03:41 Okay. 00:03:51 except addition. addition is binary. 00:04:09 So [g [x ?]] is the composition of g and x. 00:04:32 Whereas [g x] is the function g applied to the function x. 00:04:40 (Glad I finally got that straight...) 00:04:53 okay let's see 00:05:14 I'm just wondering whether something like this can be done simply in Haskell. 00:05:19 It can be done, no doubt. 00:05:25 It's the "simply" that could be problematic. 00:05:28 can it even be done in Even? 00:05:32 is Even....doable? 00:05:47 I never wrote it, but it's a language that can be written. :P 00:05:52 can it? 00:05:55 okay so it seems you haven't really integrated composition and application into one uniform syntax 00:05:57 Absolutely. 00:06:03 do you have proof of this 00:06:29 Why wouldn't it be possible to write it? 00:06:33 you just have lambdas where you can only use each argument once and in order afaiu 00:06:43 Even might be ill-defined or something 00:06:50 or there could be bad problems in it that make it awful 00:06:57 so in particular, can you implement s? 00:07:49 ah yes I remember one of the things, yes 00:07:54 It should be just S x y z = [x z [y z]]. 00:07:58 basically what oklopol's saying 00:08:34 well i think [[[S x] y] z] = [[x z] [y z]] is closer to the real thing 00:08:58 since when combinatoring, you don't want to have to supply all three args 00:09:08 That makes sense. 00:09:36 i was just wondering if you can just write S down using ?'s 00:10:16 Oh. You wouldn't need to. It doesn't involve composition exactly. 00:10:36 You could write [[x ?] [y ?] z z] if you were feeling fancy. 00:10:57 I guess. 00:11:50 shouldn't it be [[[x ?] [y ?]] z z]? and i'm still not sure how you know when a lambda starts and when a composition starts 00:12:39 oerjan: Help the GHC on here is 6.12.1 I can't cope. 00:12:49 this one time i made a language where you didn't use parens at all, the interpreter just used types to choose the correct parsing 00:13:19 oklopol: [[x ?] [y ?]] is equal to [x [y ?]], so those outer brackets shouldn't be there. 00:13:30 And maybe the syntax needs to be clearer. 00:13:42 But I'm really just asking how to do something like this in Haskell. 00:14:05 Without just implementing it the way I was going to for Even. 00:14:10 well that's a question for the people who care about haskell 00:14:24 this one time i made a language where you didn't use parens at all, the interpreter just used types to choose the correct parsing 00:14:26 types 00:14:38 sure 00:14:57 So you just chose the parse that was type-correct? 00:15:05 What if there were multiple type-correct parses? 00:15:26 i made a proof of concept partial interpreter and at least my quicksort and mergesort parsed correctly 00:15:36 Was precedence encoded in the type system somehow? 00:15:37 then again both were like 8 characters 00:15:50 Or was there no precedence? 00:16:01 ooh what language is this it sounds good 00:16:38 if there were multiple type-correct parses, then the first one found was chosen. i might have added optional parens if i'd worked more on it. 00:16:59 cise. one of my languages that only exist in my dreams 00:17:13 :( 00:17:29 evincar: so what do you want in haskell 00:18:06 merge sort: '/,)#< 00:18:06 quicksort: /2;A b:C,',JnB 00:18:06 bubblesort a:B,',\# iirc these parsed 00:19:02 i have absolutely no idea how any of those work 00:19:03 :D 00:19:12 ;I,;mc,[]{"[]"},=}!!b->"+"+mC1"-"-mC1">"+C1"<"-C1{;X}Wh=mC0=}X??b 00:19:16 brainfuck in cise 00:19:23 cise is beautiful 00:19:32 yes i want to know more 00:19:41 he's explained like three things about it in the past i think :P 00:19:44 for brainfuck, i'm sure the parsing would never have been found :D 00:20:20 and there are probably errors, parsing was not the only weird thing about cise 00:21:55 monqy: Say I want to pull out all the applications in (Vertex (x + d) (y + d) (z + d)). In Even I could write something like [apply3 [Vertex ? ? ?] [add ? d] x y z]. 00:22:22 basically evincar is unhappy because composition does not allow him to write any lambda-expression without points 00:22:28 Yes. 00:22:32 shockin 00:22:33 g 00:22:42 hint: you can do it, it's called stack-based languages 00:22:49 /2 = divide in two, A b:C = pattern match and only leave the upper cased letters in the register, ' = recurse, JnB = join with B as the separator 00:22:55 I like concatenative semantics, thank you very much. 00:23:01 that one is easy enough 00:23:20 evincar: that's what a stack gives you... 00:23:32 a base case is not needed 00:23:49 i dunno if that's the shortest quicksort though 00:23:55 Pointfree just feels nicer, but in applicative languages it's less readable. 00:23:59 in the world 00:24:26 i didn't want to use a stack and stacks seem to be the way to be short 00:24:37 Cise is indeed beautiful. 00:26:09 oerjan: Help the GHC on here is 6.12.1 I can't cope. <-- it was nice to know you 00:27:33 :'( 00:29:03 some cheating is certainly going on, for instance i think []{"[]"} is how you nest the program w.r.t. [ and ], but on the other hand {"[]"} is a lambda returning "[]" so i'm not completely sure what the semantics are. 00:31:14 -!- yorick has quit (Ping timeout: 276 seconds). 00:31:44 ;mc puts the memory tape and the pointer in the register (, just emptied it so ; is variable introduction and not pattern matching this time) 00:32:07 haha 00:32:15 so the beginning 00:33:06 -!- yorick has joined. 00:34:17 in ;I,;mc,[]{"[]"} first ;I puts the program in i and leaves it in the register, then , empties the register, so ;mc just introduces two variables whose type is unknown, then ,[]{"{}"} nests the contents of the register, but since it's empty (both m and c are lowercase so it's left empty), and we really need some content this time, it takes i as the contents, since i was the last thing left in the 00:34:41 ...register 00:35:06 the rest is a single statement so... yeah i have no idea 00:36:43 +mC1 should parse as take c'th element of m, then add one to the result. since nothing is done with the result, it's done in-place 00:38:59 we call the last statement recursively, and since m and c are not defined in the lambda that's called, we use the variables of the topmost level in all of them 00:40:21 anyway probably the sensible solution to the parsing problem would be the to do what clue does 00:42:28 oklopol: And what is it that Clue does? 00:42:51 evincar: in your example with Vertexy things, does that even work? I'm doubtful. 00:43:30 trying to find your thing about how ? gets resolved 00:44:00 [apply3 [Vertex ? ? ?] [add ? d] x y z] = [[Vertex ? ? ?] [add ? d] [add ? d] [add ? d] x y z] = [[Vertex [add ? d] [add ? d] [add ? d]] x y z] 00:44:02 evincar: that's one of the few languages of mine that exist outside my dreams so you can check out the abstruse explanation on the wiki, but anyhow just give an example io-pair for the function 00:44:13 = [Vertex [add x d] [add y d] [add z d]] 00:44:29 oklopol: "The precise details of the syntax are not known." :( 00:44:38 :D 00:44:41 -!- copumpkin has quit (Ping timeout: 244 seconds). 00:45:02 monqy: Basically an application always puts it argument in the leftmost ?. 00:45:02 that's pretty irrelevant 00:45:06 -!- copumpkin has joined. 00:45:14 argh 00:45:28 anyone know the length of the shortest qs in gs? 00:46:48 Except I broke that example... 00:47:01 ...because the second thing would be wrong. 00:47:03 Argh. 00:47:11 So it's ambiguous... 00:47:20 evincar discovers that variables exist for a reason 00:48:35 ...there's not really a clear way to say that [a ? ?] [b ?] [c ?] d e should mean [a [b d] [c e]] and not [a [b [c d]] e]. ( 00:48:38 even cise uses variables 00:48:39 * :( 00:48:42 i'm pretty sure i argued that it would be hideously ambiguous when it was discussed previously 00:48:43 clue doesn't, though 00:48:53 oerjan: didn't we all? 00:49:00 probably 00:49:02 yes 00:49:10 It's not hideously ambiguous...it just has one particularly hideous ambiguity. 00:49:20 i.e. hideously ambiguous 00:49:32 although i vaguely recall i thought it could possibly work with type resolution of some sort 00:49:47 the ambiguity is in something afaiu core to the language 00:49:47 oerjan: except in the face of polymorphism 00:50:02 both clue and cise are ambiguous, but i think we all agree there's enough empirical evidence that we can safely say that's not relevant in practice. 00:50:02 mhm 00:50:18 Hmm. If you can specify that some arguments are applied all at once, rather than sequentially, that solves it. 00:50:25 oklopol: you can probably add perl to that category iirc 00:50:34 What language is this? 00:50:36 I seem to recall that functions had to be able to take multiple operands for this to work. 00:50:43 And now I remember why. :P 00:50:48 oerjan: nah, just TC 00:50:56 -!- tiffany has quit (Quit: Leaving). 00:51:33 cise and clue are way ambiguouser than perl 00:51:57 -!- tiffany has joined. 00:52:03 elliott: i recall reading that perl has part of its parser implemented by majority voting among heuristics 00:52:13 wow :D 00:52:15 *+vaguely 00:52:18 :D 00:52:19 It's true. 00:52:56 clue doesn't really even *have* a parser though 00:53:10 well okay the things it parses it parses unambiguously 00:53:33 so i suppose technically i lose 00:53:44 dude oklopol 00:53:45 cise =/= clue 00:53:46 Right, you just have ambiguous semantics. 00:54:03 i didn't confuse them 00:54:26 clue has a pretty unambiguous syntax afaict 00:54:59 nah, only the script used for debugging is. 00:55:08 the actual program is the empty string 00:55:25 or the function bag 00:55:33 lol 00:55:48 -!- ive has joined. 00:56:13 *has 00:58:09 evincar: anyway, try actually implementing even and then implementing something nontrivial in it (and running it and making sure it works); maybe that will help get rid of problems??? 00:58:50 there should be a language where you write the program interactively by example, like to define quicksort you say you're making a function from lists to lists, then you're given an example list and you apply quicksort on it, repeatedly. then, suddenly, the program says "hey i think i got it!" and starts doing it on its own and you tell it if it makes a mistake. of course, we need someone with 00:58:55 down's to say the line 00:59:13 monqy: It probably would, so I probably will. 00:59:23 "hurr durr i think this goes in there" 00:59:41 It's more interesting than any other language I've got in mind that I also have the time to work on. 00:59:43 and there's a no you retard button 01:00:24 oklopol: i suggest the name u2b 01:00:31 or, for those who do not hate computers, a "oh that's all right, i'll take it from here if that's okay". 01:00:33 button 01:00:52 oklopol: You could remove the "interactively" bit with a genetic algorithm. 01:01:24 "Your program succeeds for all of the 1000 inputs I tested, for a confidence level of x percent." 01:01:27 the interactively bit is important, but how 01:01:42 but umm erm umm how do you know what's correct 01:01:43 Like, you write test cases and evolve an algorithm from those. 01:02:00 You can't know if it's correct for all inputs. 01:02:26 But you can have a known confidence level that it will work as expected. 01:02:29 that's been done to death, interaction is the new glue sniffing. 01:02:34 And at the end of the day, isn't that how most software works? 01:02:51 Except the probability of failure isn't even known for most software. 01:02:55 your computer should be someone you can have a beer with at the end of the day 01:02:57 So a genetic algorithm works better. :P 01:03:08 Agreed. 01:03:12 oerjan: idgi 01:03:22 u2b 01:03:24 i assumed he meant youtube but i still didn't get it 01:03:36 "Kennedy's Lemma establishes that if we can parse Perl 5, we can solve the Halting Problem. Therefore we cannot parse Perl 5." 01:03:40 From http://www.perlmonks.org/?node_id=663393 01:03:47 evincar: how do you evolve a genetic algoritm from test cases? 01:04:11 incidentally, epic yawn at what evincar linked 01:04:24 i almost lost my eyes in the process 01:04:45 oh seems it's rather nontrivial though 01:05:08 oh 01:05:10 no it's not 01:05:14 Yeah, no it's not. 01:06:53 "This means that, in order to statically parse Perl, it must be possible to determine from a string of Perl 5 code whether it establishes a nullary prototype for the whatever subroutine." why isn't there Q.E.D. after this sentence? 01:07:13 maybe i don't know perl well enough. very possible since i don't know it at all. 01:07:34 elliott: say it aloud 01:07:41 oerjan: you tubee? 01:07:46 oklopol: that's statically knowable in e.g. C... 01:08:30 you two be? 01:08:58 "You to be", your future self? 01:09:16 elliott: so there are static types in perl, you can't just ?: with something that has no args and something that has one on the right? 01:09:21 you too, Be 01:09:45 u-tubie is a little tub shaped like a u 01:09:45 oklopol: yeah i don't think you Get It 01:09:59 i thought it was a python :D 01:09:59 even if you do 01:10:03 if (false) { sub foo() { ... } } 01:10:08 that establishes a nullary prototype for foo I think 01:16:55 okay so that's not quite as trivial, it's just static parsing that's impossible, not actually interpreting the program correctly 01:18:53 Right. 01:19:00 So you can't "parse" Perl. 01:19:06 But you can evaluate it. 01:19:08 And hope it works. 01:19:28 less stupidly-stated: parsing perl is tc 01:20:00 well it could be that you cannot even prove which parsing is correct, and thus not ever execute anything! now that would be something 01:20:12 i wish there was a shorted way to say not ever 01:20:30 i wish there was a way to type shorted so that it's not a typo 01:20:54 That's what heuristics are for. 01:21:11 I guess Larry assumed that people are in the habit of rephrasing themselves when they're misunderstood. 01:21:18 If we're looking at Perl from a linguistic standpoint. 01:21:28 Which you should, because it's as hideous as any natural language I've known. 01:22:03 i don't rephrase, i redesign the language over my program 01:30:05 The luxury of a language designer. Or a Lisp or Forth user. 01:31:12 -!- GreaseMonkey has joined. 01:31:12 -!- GreaseMonkey has quit (Changing host). 01:31:12 -!- GreaseMonkey has joined. 01:31:50 or a really stubborn crazy person 01:33:59 -!- Jafet has quit (Quit: Leaving.). 01:35:55 Someone who submits a patch for every problem he encounters...or just forks the project and merges in all of the changes from the mainline. 01:36:07 Just so he can have the language he wants. 01:39:35 i like how people subtly don't know shit in the comments 01:40:18 or make the occasional brainfart, what's the difference really 01:43:22 "Kennedy's Lemma: If you can parse Perl, you can solve the Halting Problem. " 01:43:24 o.O 01:43:49 why do i keep yawning when i hear that 01:45:04 oklopol: maybe you were pavlov's dog in a previous life 01:46:39 oklopol: the first one was the best imo 01:46:43 is this good or bad ivory tower ivory tower 01:49:14 why do i complain when i yawn and complain when i ain't sleepyhead 01:55:17 oerjan: do you know what a rational prime is? 01:55:45 i couldn't find a definition anywhere, but i did find out that it doesn't seem to mean regular prime 01:56:14 i cannot say i recall 01:56:33 oklopol: it means "prime", all primes are rational, hth 01:57:36 from context i think it means a prime number that cannot even be split into the product of polynomials over formal variables. no idea if there are primes that can. 01:58:22 for regular primes i found a definition on wp but it looked scary 01:58:43 and apparently we don't know if there are infinitely many of those 01:59:19 (well of course it's clear that there are, even though i don't know the definition, but anyhow) 01:59:31 I wonder if anyone'll ever say "Looks like we ran out of primes" and there'll be this big hype like over the tachyonic neutrinos thing. 02:00:08 well Z doesn't exist so we're fucked anyway 02:15:36 -!- DCliche has joined. 02:35:12 Z? 02:35:26 the set of integers 02:36:02 sgeo doesn't know /that/? 02:37:52 you can't know everything simultaneously 02:38:50 What if I'm in a box with a cat? 02:38:52 does ℤ look more familiar sgeo 02:38:58 You don't know that I don't know everything simultaneously. 02:39:03 Until you observe me. 02:39:06 Dead in a box with a cat. 02:39:13 http://www.irregularwebcomic.net/1960.html 02:39:15 dead box / rip 02:39:21 oh i'll observe the pants off ya 02:39:38 Creepy~. 02:39:54 Is that, like, psychokinesis? 02:39:56 that's one of my many qualities 02:40:00 Because, if so, awesome. 02:40:25 I'm going to assume that message was in reply to my question about psychokinesis. 02:40:40 And therefore that your brain is worthy of dissection. 02:41:22 oh i'll dissect the pants of my brain 02:44:04 I just read 'dissect my penis' =_= 02:44:29 oh i'll dissect the penis out of that equal face 02:46:19 and you know what they say, left foot leads into the right beginning of the end 02:54:06 indeed 03:07:57 -!- tiffany has quit (Remote host closed the connection). 03:08:00 Okay, so the general insistence here is that I should write Even, for lack of anything better to write. 03:08:08 What should I write it in? Haskell? 03:09:39 > var$fix("haskell "++) 03:09:40 haskell haskell haskell haskell haskell haskell haskell haskell haskell has... 03:11:08 > cycle ["haskell"] 03:11:09 ["haskell","haskell","haskell","haskell","haskell","haskell","haskell","has... 03:11:13 Ahem. 03:11:15 > repeat "haskell" 03:11:17 ["haskell","haskell","haskell","haskell","haskell","haskell","haskell","has... 03:11:19 take your pick 03:11:36 (cycle ["haskell"]) !! 42 03:11:44 > (cycle ["haskell"]) !! 42 03:11:45 "haskell" 03:11:51 Welp, guess that settles it. 03:11:54 > var$cycle"haskell " 03:11:55 haskell haskell haskell haskell haskell haskell haskell haskell haskell has... 03:12:21 :t var 03:12:23 forall a. String -> Sym a 03:12:32 > var$"a = b" 03:12:33 a = b 03:26:12 -!- pikhq_ has joined. 03:26:24 -!- pikhq has quit (Ping timeout: 260 seconds). 03:37:39 -!- CakeProphet has joined. 03:37:39 -!- CakeProphet has quit (Changing host). 03:37:39 -!- CakeProphet has joined. 03:38:50 > map text $ repeat "Haskell" 03:38:51 [Haskell,Haskell,Haskell,Haskell,Haskell,Haskell,Haskell,Haskell,Haskell,Ha... 03:51:09 >map text $ permutations "abc" 03:51:13 > map text $ permutations "abc" 03:51:14 [abc,bac,cba,bca,cab,acb] 03:51:53 > map text $ ((replicateM [1..]) <=< (cycle "abc")) 03:51:54 Couldn't match expected type `GHC.Types.Int' 03:51:54 against inferred type ... 03:51:59 :t replicateM 03:52:00 forall (m :: * -> *) a. (Monad m) => Int -> m a -> m [a] 03:52:31 :t replicate 03:52:32 forall a. Int -> a -> [a] 03:54:38 > (`replicateM` "abc") =<< [1..] 03:54:39 ["a","b","c","aa","ab","ac","ba","bb","bc","ca","cb","cc","aaa","aab","aac"... 04:13:22 -!- MDude has changed nick to MSleep. 04:31:39 -!- pikhq has joined. 04:31:56 -!- pikhq_ has quit (Ping timeout: 260 seconds). 04:37:22 -!- oerjan has quit (Quit: Good night). 04:45:23 -!- Jafet has joined. 04:58:37 -!- clog has quit (Ping timeout: 240 seconds). 05:27:26 -!- derrik has joined. 05:28:51 -!- copumpkin has quit (Ping timeout: 244 seconds). 05:28:54 -!- Zuu has quit (Ping timeout: 260 seconds). 05:29:15 -!- copumpkin has joined. 05:47:02 -!- Patashu has quit (Ping timeout: 245 seconds). 05:48:35 -!- evincar has quit (Quit: ChatZilla 0.9.87 [Firefox 7.0.1/20110928134238]). 05:52:24 -!- DCliche has quit (Quit: You are now graced with my absence.). 06:11:45 -!- pikhq has quit (Ping timeout: 255 seconds). 06:11:48 -!- pikhq_ has joined. 06:19:49 -!- CakeProphet has quit (Ping timeout: 240 seconds). 06:34:37 -!- elliott has quit (Ping timeout: 258 seconds). 06:39:03 -!- CakeProphet has joined. 06:39:03 -!- CakeProphet has quit (Changing host). 06:39:03 -!- CakeProphet has joined. 06:48:58 sjsiejisjdfijwgioj 06:50:32 defgiiiijjjjjosssw. (Sorted that for you.) 06:51:02 :t sort 06:51:03 forall a. (Ord a) => [a] -> [a] 06:51:20 > sort "sjsiejisjdfijwgioj" 06:51:21 "defgiiiijjjjjosssw" 06:51:30 See, I did it right. 06:51:52 An abfoor is a sorted foobar. 06:52:08 > sort "fizzie" 06:52:09 "efiizz" 06:52:10 Bad! 06:52:19 Don't make me reverse sort you 06:52:35 > sort Madoka-Kaname 06:52:36 Not in scope: data constructor `Madoka'Not in scope: data constructor `Kana... 06:52:41 > sort "Madoka-Kaname" 06:52:41 "-KMaaaadekmno" 06:52:43 (I can't quite.) 06:52:57 Kmaaaaadekmno. It's like some sort of a bird sound. 06:53:10 s/quite/quote/ 06:53:19 I can't quite quote. 06:53:36 > sort "I can't quite quote." 06:53:37 " '.Iaceeinoqqtttuu" 06:53:38 * Madoka-Kaname silly idea 06:53:49 I should write a bot that enters a random channel and sorts every line that comes through. 06:54:02 ^scramble fizzie 06:54:02 fziezi 06:54:22 I'm all jumbled up. 06:54:32 > sort "fziezi" 06:54:34 "efiizz" 06:54:35 fify 06:55:31 ^scramble それは日本語で書かれた文 06:55:31 ^unscramble fziezi 06:55:31 fizzie 06:55:31 㝂㯗欪㧛㋂㟖恌へ恞蜥恌 06:55:37 -!- clog has joined. 06:55:39 It's... not very UTF8-aware. 06:55:46 ^unscramble 㝂㯗欪㧛㋂㟖‡æŒã¸æžèœ¥æŒã 06:55:47 Á£⒀Ś£ï€è¾æ¸⁀ºãŀ⦀ÚÀœ 06:55:51 You fail 06:55:51 :< 06:56:07 I don't think you passed in the same bytes it outputteded. 06:56:22 ^scramble バカ! 06:56:22 㐂 06:56:32 ^unscramble 㐂«ãƒ 06:56:32 Ò£⫀š¯ 06:56:35 ^scramble あ 06:56:36 め 06:56:41 ^unscramble め 06:56:41 あ 06:56:47 ^scramble ああああああああああああああああああああああ 06:56:47 めめめめめめめめめめめああああああああああ 06:56:53 ^unscramble めめめめめめめめめめめ‚ああああああああああだ06:56:54 Á⣀ڀÁ⣀ڀÁ⣀ڀÁ⣀ڀÁ⣀ڀÁ⣀ڀÁ⣀ڀÁ⣀ڀÁ⣀ڀÁ⣀ڀÁ⣀ڀ 06:56:55 Nope. 06:56:56 I didn't. 06:57:16 I'm guessing your client will latin1-fallback the bot's output, and then when you paste it back you're UTF-8ing them. 06:57:29 Makes sense 06:57:43 ^show 06:57:43 echo reverb rev rot13 rev2 fib wc ul cho choo pow2 source help hw srmlebac uenlsbcmra scramble unscramble asc ord prefixes tmp test celebrate wiki chr 06:57:48 ^srmlebac fizzie 06:57:48 fziezi 06:57:55 ^uenlsbcmra fziezi 06:57:55 fizzie 06:57:57 ^scramble fizzie 06:57:57 fziezi 06:58:08 ^unscramble srmlebac 06:58:08 scramble 06:58:10 ^show scramble 06:58:11 >>,[>,]<[<]>[.>>]<[>>]<2[.<2] 06:58:15 ^show unscramble 06:58:16 >,[>,]<[<]>[.[-]>[>]<[.[-]<[<]]>] 06:58:24 ^show echo 06:58:24 >,[.>,]<[<]+32[.>] 06:58:27 I didn't think it was exactly the same. 06:58:31 ^scramble 1234567 06:58:31 1357642 06:58:36 ^srmlebac 1234567 06:58:36 1357642 06:58:41 ^show scramble 06:58:42 >>,[>,]<[<]>[.>>]<[>>]<2[.<2] 06:58:43 But it does seem to be. Hmm. 06:58:45 ^show srmlebac 06:58:45 >>,[>,]<[<]>[.>>]<[>>]<2[.<2] 06:58:53 Well, those certainly look identical. 06:58:58 違うわけがない 06:58:59 They were added quite a while ago. 06:59:31 ^show source 06:59:31 (http://git.zem.fi/fungot/blob/HEAD:/fungot.b98)S 06:59:36 ^help 06:59:37 ^ ; ^def ; ^show [command]; lang=bf/ul, code=text/str:N; ^str 0-9 get/set/add [text]; ^style [style]; ^bool 06:59:56 awesome 07:00:38 Help is also just a (...)S thing. 07:00:47 Let's write a programming language that compiles to befunge 07:00:51 ^show def 07:00:59 ^def def ul (Nope)S 07:01:00 Defined. 07:01:02 ^def def ul (Nope)S 07:01:03 Defined. 07:01:05 =p 07:01:12 Sadly it can't show internal commands, and they take precededence. 07:01:24 -!- derrik has quit (Quit: gone). 07:01:28 I've compiled something to (ugly) befunge, but I've completely forgotten what it was. 07:01:35 I think it was some other esolang. 07:01:44 Brainfuck is reasonably easy to. 07:02:40 A simple C-like language? 07:03:18 # Trampoline: Skip next cell < stream crossing? 07:03:20 It would be nice to have something that compiles into "compact" blocks of befunge, instead of some horribly structured layout. 07:03:52 Yes, you can do ... #ab#cd#ef#gh# ... to execute bdfh when going right, geca when going left. 07:04:23 The classic print loop of ... >:#,_ ... sorta-uses that. 07:05:02 How do you do conditionals? 07:05:04 Self-modifying code? 07:05:18 fizzie, I think that'd be the same kind of problem as writing a (good) some-language -> redstone compiler 07:05:27 -!- Jafet has quit (Quit: Leaving.). 07:05:37 Except with one less dimension to work with.. 07:05:40 | and _ ; they branch up/down and left/right depending on whether the number popped from stack is non-zero or zero. 07:06:02 Well, and 'w' which turns left, goes straight, or turns right depending on <0, =0, >0, in Funge-98. 07:06:17 fizzie, so. 07:06:37 First, generate a tree or graph of some sort, diagramming what branches, etc, to output, and then you can just generate that, right? 07:06:57 Well, and m which branches high/low in trefunge. 07:07:42 fizzie, I'm thinking you can compile the thing to something like this: 07:07:46 [CodeSnippet] 07:08:09 CodeSnippet [Instruction] BranchType [Int] 07:08:23 Then generate that in some way. 07:08:31 A control flow graph is probably something you'd have, yes; but then it's non-trivial how to best pack all the blocks, esp. if you want to reuse instructions going different way. 07:08:38 Right. 07:08:41 Which is the big problem. 07:08:44 Not that human befunge programmers are that good in instruction reuse either, I suppose. 07:08:49 At least I'm not. 07:09:02 It makes for nicely tricky-to-modify code. 07:09:27 Basically, snippets of instructions that don't branch, followed with a single branch instruction. That shouldn't be too hard to generate, right? 07:09:39 Then you can merge branches that don't go all over the place into single clusters. 07:09:48 Then place those however. 07:09:49 That's exactly what a control flow graph is. 07:09:53 Ah. 07:09:57 "In a control flow graph each node in the graph represents a basic block, i.e. a straight-line piece of code without any jumps or jump targets; jump targets start a block, and jumps end a block." 07:10:04 I see. 07:10:53 I have a program that generates a control flow graph for a befunge program with (imperfect) static analysis; doesn't really work for self-modifying code, though. 07:11:01 I have fungot graphed somewhere, let's see. 07:11:01 fizzie: ' it's very hard,' she said to herself, " i think you might do something better with the time, the time goes with it.' 07:11:21 http://users.ics.tkk.fi/htkallas/fungotsmall.png 07:11:21 fizzie: taking " boys" as universe; x="fat"; and fnord interpret the lower half of the cupboard, where all the cakes in the world: once in the week. and that's the way to outland?" 07:11:48 fizzie, o.o 07:12:27 I also have a very dusty printout of that right here on my desk; was thinking of maybe taping it on the wall, but never did. It's not exactly readable at A4 size anyway, and I can't quite make myself pay the printing costs for a poster-sized version. 07:13:11 -!- Jafet has joined. 07:13:11 What's in the bubbles is just sequences of befunge instructions (with <>^v-style things stripped out) and the edge labels denote what sort of jump it is. 07:13:28 fizzie, is there ever reason to use p or g? 07:13:41 (You can drop the word "small" for a readable 7485x15016-sized copy.) 07:14:20 I suppose you could maintain a call stack with frames with that. 07:14:20 Er, well, for storage. There's only so much you can do with a stack. (Though I guess with the stack-stack you can probably do anything; still, it's awkward to use.) 07:14:52 Top row = entry 07:15:04 Second row = stack information (current y, etc) 07:15:20 Rest = actual stack 07:15:40 You should be able to cacluate the maximum stack frame size for every function, so, put the program after that many instructions. 07:16:07 It's not very befungey befunge you get if you do it like that. 07:16:20 Esp. arbitrary jumps are quite "bad". 07:16:41 Many people (okay, just me) even frown on using ;. 07:17:47 What does ; do? 07:17:58 It jumps to the next ; it encounters. 07:18:27 So you don't have to worry about writing yourself into a corner so much, since you can just jump across code. 07:19:02 The UFO-looking device in that bot-graph (near the bottom) is the babbling punctuation jump-table. 07:19:45 To right of it seems to be part of the brainfuck bytecode compiler. 07:20:09 And the brainfuck interpreter itself is right below that. 07:20:37 The $2aaaaa*****81p88+:*91paaa**:a1p is a dead giveaway. 07:22:29 Oh, and there's the two random-number generation blocks (one fixed for the [0, 15] range and a loopy one for a reasonably large random numbers). I like the graph. 07:22:32 Does fungot use p/g? 07:22:33 Madoka-Kaname: an enormous dead fnord was lying on the bank. 07:22:38 Yes, much. 07:22:48 fizzie, so. 07:22:58 It sort of has to, since most fingerprints write data in the fungespace. 07:23:08 Things like the IRC message splitting would be pretty hairy with just a stack. 07:23:29 With Funge-98's A-Z thing, the stack mainpulation functions, etc, should be simple to implement, right? 07:24:11 Er, well. If you make a custom fingerprint for compilation, it doesn't really count as "compiling to befunge" any more, I don't think. 07:24:20 Eh? 07:24:26 You can't define fingerprints in the program? 07:24:30 No. 07:24:47 Ah. 07:25:12 They're just "standard libraries" you can load. Though I think there are a couple of extensions that let you define some with Befunge code. 07:25:42 RC/Funge-98 and some others have that "mini-funge" thing. 07:26:24 So, Funge doesn't have arbitrary jumps? 07:26:45 'x' is pretty much an arbitrary jump, as long as you have a > or something at the destination to reset the delta. 07:26:55 And you need to give relative coordinates instead of absolute, but that's a minor matter. 07:27:38 The SUBR fingerprint gives you absolute jumps and an internal call-stack for 'return'. 07:28:08 Meh 07:28:13 Fungot's (owner-only) "^code" command uses SUBR to execute what was passed to it, but I don't use SUBR elsewhere. It, too, feels slightly cheaty. 07:28:16 'x' makes compiling messy. 07:28:54 I think I'll manually maintain a stack, and then put the entire program in a huge switch statement. 07:29:14 Where each value is an entry point of some sort into the program. 07:29:20 I don't see how it's any messier than, you know, regular assembly jumps that also are relative. 07:30:17 I guess 07:30:33 Deewiant has some sort of a constant-maker, incidentally. 07:30:48 You give it a number, and it tries to figure out a short way to represent that in Befunge code. 07:30:57 Whoops, lunchtime. -> 07:31:15 fizzie, and that's one of the problems. 07:31:22 Constants arn't, well, constant space. 07:34:52 -!- Ngevd has joined. 07:36:01 Hello! 07:38:30 Compiling like that'd be kinda messy 07:38:48 And you can only resolve that in the routing step too. 07:39:14 Most instructions that compile to multiple funge instructions can be unwound before routing. That can't. 07:39:33 Not unless you reserve max(programSize) space for each constant at any rate 07:39:55 maxConstantSize* 07:40:51 Madoka-Kaname: what's the topic? 07:41:19 Compiling to Funge 07:41:32 maybe you could create chunks of linear instructions 07:41:43 and then determine the 2D layout in a separate compilation step? 07:41:45 That's already the plan. 07:41:48 =p 07:41:48 for example, to determine the -- okay 07:41:57 I was thinking about how to do function calls. 07:42:11 Using 'x' involves generating constants which are only known during routing. 07:42:30 Making that a multi-byte instruction that has to be resolved during the route pass. 07:42:35 maybe you could create a tree/graph that relates to callers to callees? 07:42:59 so that you can determine the program layout based on the tree. 07:43:09 You can fetch the current position at runtime and the target should be static, no? 07:45:35 a believe a function would just duplicate its parameter values on the stack, and be spatially nearby its caller so that it can be executed sequentially and then return back to the calling code segment. 07:45:56 ...that's an idea, anyway. 07:46:07 managing the stack may be difficult. 07:46:44 or instead of using the stake you can get use put/get 07:46:46 *stack 07:46:51 weorjwoeirjoewjsoifj 07:46:54 s/get// 07:47:24 CakeProphet, yeah. 07:47:47 The plan I have right now is to maintain a stack. 07:47:56 put/get may be easier to maintain. 07:48:14 but I have no clue how to place chunks of code close to each other spatially so that function calls work. 07:48:35 if a function calls more than four functions you'll have to do some nasty routing stuff instead of simply using the 4 directions. 07:50:13 CakeProphet, giant switch statement 07:50:13 another important thing to note, if blocks of code are literally rectangles of code in befunge 07:50:23 function calls need to happen on the outside of those rectangles 07:50:28 or shapes 07:50:30 or whatever. 07:58:28 -!- Jafet has quit (Quit: Leaving.). 07:59:33 Madoka-Kaname: I think get/put would greatly simplify static memory demands. 07:59:45 maybe even dynamic? stack might be better for that. 08:00:07 -!- monqy has quit (Quit: hello). 08:00:30 CakeProphet, reentrancy. 08:02:12 so one of my friends who somewhat recently broke up with his fiance, wrote on Facebook: "Is returning the ring........that's all I have to say about that." 08:02:22 to which another person replied: "One does not simply walk into Mordor." 08:03:04 CakeProphet, actually. 08:03:18 If I had a C-like language, i can optimize it by making it not use the stack fully, and only a return address. 08:03:38 Madoka-Kaname: They're constant-space if you just set an upper bound and leave empty space here and there. 08:03:38 Which can be on the funge stack instead of a manual stack 08:04:01 fizzie, right, but it's still an additional pass on the generated Funge code. 08:04:40 efficiency: top priority for Befunge code. 08:05:20 fungot: isn't that right? 08:05:21 CakeProphet: " then it wasn't solid, like sylvie and you?" i asked eagerly, with a little basket, which he threw open, and sylvie more grave and quiet, but with a very different look from what uggug ever got from him. 08:06:23 fizzie: are there any digital form of Finnegans Wake? 08:06:27 +s 08:06:43 I think it would be a good fungot source. 08:06:44 CakeProphet: 2. some y are m," and " hoarse," you will say " fnord" marked on them, and yet bear parting? 08:07:51 also the blah story. 08:08:05 replace every occurence of "blah" with "fnord" 08:11:50 -!- Phantom_Hoover has joined. 08:15:37 Madoka-Kaname: If you don't want to use absolute jumps, the massive switch is always an option; fungot has one example of a subroutine (the code compilation used both by ^bf/^ul and ^def) where it pushes 0/1/2 on stack below the arguments, and then the return path has :2-| ... :1-| style diverters to go back where it started from. Still, fixed-size constants aren't that bad. 08:15:37 fizzie: then, silence. some fancied they heard in the air. " i could show it you in a minute or two, fnord. 08:15:49 fizzie, yeah. 08:16:15 And that can be built as a pass on an ADT of some sort instead of a pass on free-form code 08:32:59 Today's Freefall is pretty funny 08:34:10 -!- Jafet has joined. 08:39:39 fizzie, I was thinking about that. 08:41:59 -!- Ngevd has quit (Ping timeout: 252 seconds). 09:13:12 -!- sebbu has quit (Ping timeout: 240 seconds). 09:32:55 -!- Ngevd has joined. 09:39:13 -!- Jafet has quit (Quit: Leaving.). 10:00:35 -!- sebbu has joined. 10:00:35 -!- sebbu has quit (Changing host). 10:00:35 -!- sebbu has joined. 10:08:13 -!- pikhq_ has quit (Remote host closed the connection). 10:13:29 -!- pikhq has joined. 10:25:15 -!- copumpkin has quit (Ping timeout: 260 seconds). 10:26:22 -!- copumpkin has joined. 10:35:16 -!- GreaseMonkey has quit (Quit: The Other Game). 10:48:32 -!- ais523 has joined. 10:59:31 -!- ais523 has quit (Read error: Connection reset by peer). 11:00:44 -!- ais523 has joined. 11:17:36 -!- Ngevd has quit (Ping timeout: 244 seconds). 11:20:24 -!- ive has quit (Ping timeout: 258 seconds). 11:28:17 -!- Jafet has joined. 11:56:01 -!- ais523 has quit (Read error: Connection reset by peer). 12:49:42 -!- ais523 has joined. 12:54:43 -!- hagb4rd2 has joined. 12:56:55 -!- Ngevd has joined. 12:57:13 -!- hagb4rd has quit (Ping timeout: 240 seconds). 13:15:38 -!- sllide has joined. 14:06:29 can anyone here explain GADTs to me? if so, are they willing to? 14:06:46 GADTs? 14:10:29 * ais523 assumes that Ngevd can't 14:10:40 something starting with G Abstract Data Types 14:10:43 probably generic or generalized 14:24:09 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 14:50:11 -!- copumpkin has joined. 15:04:03 generalized, I believe 15:07:27 ais523: basically GADTs allow you to specify a so-called phantom type parameter. Each constructor can return a value with a different phantom type as a parameter. 15:07:39 Thus, the type system can now differentiate between different constructors of the same type. 15:08:04 a simple example is lists. You can have List Empty a and List NonEmpty a 15:08:06 CakeProphet: hmm, I'm not sure I understand; could you give an example? 15:08:28 now head and tail are typesafe. head :: List NonEmpty a -> a 15:08:38 tail :: List NonEmpty a -> List x a 15:08:44 so how does it track whether lists are nonempty or not? 15:09:01 GADTs allow you to specify the return type of each constructor 15:10:51 ht 15:10:54 *ah right 15:11:04 data Empty; Data NonEmpty; Data List x a where { Cons :: a -> List y a -> List NonEmpty a; Null :: List Empty a } 15:11:18 I was talking to someone about Anarchy and they thought it was like GADTs, but it isn't really 15:11:28 meanwhile, I've been working on this (I submitted it): http://golf.shinh.org/p.rb?sort+by+first+occurrence 15:11:29 no clue on that one. :P 15:11:46 I'm doing nowhere near the leaders 15:12:27 and there are several obvious algorithms; I don't know which is best 15:13:40 I think the most common example for GADTs is writing AST data types for interpreters. 15:13:45 that's what I commonly see it associated with 15:13:51 but it can be used for other things. 15:13:55 yep, that's what Anarchy's intended to do to 15:14:07 but it works by inferring a huge number of different ADTs 15:14:18 I suppose it isn't all that dissimilar after all, but the inference thing is different 15:14:52 ais523: do you know how short quicksort is in golfscript 15:15:22 oklopol: no, but I suspect it's pretty short, as it has most of the components of quicksort as primitives 15:16:06 it's 14 characters in cise, was just wondering if gs gives a significant improvement to that 15:16:12 i don't actually know gs 15:17:53 it actually has a sort primitive 15:17:59 who doesn't 15:18:05 is it always quicksort? 15:18:30 but I'll try to write a quicksort without it 15:18:32 mergesort is 6 characters in cise, so i assume that's not much shorter in gs 15:19:02 hmm, actually GolfScript has no concise method to do recursion 15:19:12 which means that a quicksort, specifically, is kind-of awkward 15:19:15 ... 15:19:23 how about bubblesort? 15:19:30 also 14 in cise 15:20:21 it seems primality checking is also 6 characters, but it uses a non-ascii character 15:20:52 (i thought that particular character was ascii back then because umlaut is on all finnish keyboards, surprisingly enough) 15:23:46 cise has a recursion primitive which recursively calls the current statement or the whole program depending on which one makes more sense 15:24:47 I think bubble sort is quite short in GolfScript, but am not good enough at it to write it concisely 15:25:14 -!- CakeProphet has quit (Quit: Lost terminal). 15:27:18 darn 15:27:42 http://rosettacode.org/wiki/Reports:Tasks_not_implemented_in_Golfscript :/ 15:32:43 boring, it only has two INTERCAL examples 15:32:45 xD J sucks ass: quicksort =: (($:@(<#[) , (=#[) , $:@(>#[)) ({~ ?@#)) ^: (1<#) 15:33:04 seriously, who has the time to write 43 characters 15:33:38 i should really make this language 15:36:34 Try golfscript 15:36:41 Oh, beaten to it 15:37:01 yeah it seems no one has bothered to write it 15:37:24 Just make a codegolf thread for it and it will be written 15:37:29 and apparently even ais doesn't know how to golf in gs 15:37:38 ais523: wanna make a thread for it? 15:37:41 I'm not very good at gs 15:37:54 or basically, golfscript works like mathematica, by having a good standard library for typical golfing tasks 15:38:05 so it's very good at sorting, but bad at implementing any given sort algorithm, for instance 15:39:24 :( 15:39:33 why would anyone want to write actual programs 15:39:41 when you can implement algorithms 15:40:21 heh 15:41:28 -!- MSleep has changed nick to MDude. 15:47:42 factorial is 10 characters 15:48:21 that's just \* in cise. i think. 15:49:47 a golfscript factorial shouldn't be that long, surely? 15:50:02 n to [1, ..., n] and to [0, ..., n] are list conversions, the first one is chosen since the second one gives a trivial result 15:50:12 are integer to list conversions 15:50:40 wait i guess the second one is to n-1 but anyhow 15:51:37 here's a GolfScript factorial program, that factorials every line of input (treating it as a number): http://golf.shinh.org/reveal.rb?Factorial/narb_1298033052&gs 15:51:43 or ~]{,1\{)*}/n}% 15:51:56 the bit that actually does the factorialling is ,1\{)*}/ I think 15:52:24 but it had to construct the 1..n list by hand 15:53:18 if you want to construct the list by hand in cise, you have to press the umlaut key. but that's not ascii, dunno what i should change it to. 15:54:18 that's crazy, it almost seems like you have to tell the program how you want it to manipulate the data and not just give it the relevant commands in a random sequence 15:54:31 indeed 15:54:36 -!- augur has quit (Remote host closed the connection). 15:55:01 -!- augur has joined. 15:56:01 one interpretation of *\ is that you go from 7 to [1*2, 3*4, 5*6, 7] 15:56:02 underlambda's going to have a command to construct a list 1..n, although it isn't documented anywhere so I've forgotten what the command actually is 15:56:27 cise could be made more concise by making the order relevant, I guess 15:56:41 well it is relevant 15:57:56 i decided today that in addition to heuristics (consisting mostly of example runs), a hash value is computed for your program which can be used to choose between ambiguous cases 15:57:57 let's see... an Underlambda factorial would be along the lines of U'*t 15:58:03 not sure about the capitalization there 15:58:05 Just got a new headset 15:58:17 construct a list from 1..n, then fold it with multiplication 15:58:27 unnecessary whitespace changed parsing dramatically 15:58:40 *changes 15:59:32 oklopol: haha, that's a truly brilliant way of disambiguating 15:59:53 it hashes the program, then determines between the possible programs with that meaning in an order depending on the hash, so you can use whitespace or minor changes to change its preference order? 16:00:16 -!- augur has quit (Ping timeout: 252 seconds). 16:00:29 -!- Darth_Cliche has joined. 16:00:55 actually i was thinking a more direct approach where the basic heuristics are used for programs without whitespace (of course, ways of affecting parsing probably arise automatically), and the hash is computed from the placing of unnecessary whitespace 16:01:22 of course, whitespace is also a command, it's just one that doubles as nop when used in certain contexts 16:02:02 yep, the way whitespace works in underlambda is that it's a NOP by default, but can be redefined in the preprocessor if you're really mad 16:02:17 (underlambda isn't really designed as a golfing language, but can nonetheless be quite short) 16:02:29 you can do nesting by hand by using lambdas, but { and }, the lambda commands, also dual as other stuff, so you can't just put a lambda where you wanna nest..... 16:02:37 -!- monqy has joined. 16:02:37 hah 16:03:04 i didn't recall you have a preprocessor planned 16:03:22 oklopol: it's not part of the language, technically 16:03:25 -!- ive has joined. 16:03:26 okay 16:03:38 but the idea is that the preprocessor is enough to compile the full language into a small subset 16:04:44 also something i'm planning: you can give the parse tree you want, and the interpreter checks if the program would have parsed into that 16:04:53 now I'm thinking about how to write a numeric sort in Underlambda 16:05:00 might make it easier to implement 16:05:38 cise is not a language you actually write a program in and use, it's a language where you write a very short algorithm implementation and prove it technically parses into the correct thing 16:06:47 numeric sort 16:06:49 ? 16:06:51 i'll ggl 16:06:54 sorting an array of numbers 16:06:58 not a sort algorithm in itself 16:06:58 o 16:07:00 oko 16:07:05 okoko 16:07:07 okokoko 16:07:09 okokokoko 16:07:13 okokokokoko 16:07:16 okokokokokoko 16:07:20 okokokokokokoko 16:07:23 okokokokokokokoko 16:07:27 okokokokokokokokok 16:07:30 bleh 16:07:36 indeed 16:08:03 let's see... a version based on indexing lists would be really messy 16:08:20 and a structurally recursive one would be a little long 16:08:25 so that leaves selection sort, I guess 16:08:48 I'm just trying to work out a good way to write the max function 16:09:21 btw query if you don't automatically see that 16:10:05 yep, I saw it 16:14:54 bleh, the problem's not just finding the largest element in a list, but getting rid of all the others 16:15:14 *getting rid of it and leaving the others 16:15:46 perhaps quicksort is actually simpler 16:22:03 -!- augur has joined. 16:36:40 -!- Ngevd has quit (Ping timeout: 258 seconds). 16:38:32 -!- ais523 has quit (Read error: Connection reset by peer). 16:40:12 -!- elliott has joined. 16:41:07 -!- ais523 has joined. 16:41:28 * elliott actually clicks the link in the topic 16:41:33 ooh, underload 16:44:16 -!- Ngevd has joined. 16:45:30 thankfully the first task is easy enough for even me 16:45:35 Hello! 16:46:44 atehwa: I'm not sure the third Underload question is as hard as it's meant to be... 16:46:54 at least, it's easier than the second :) 16:46:56 I did it in about thirty seconds 16:47:20 I did it in about three :p 16:47:23 elliott: you need to understand CS quite well to do that 16:47:29 I knew the answer before the question was posted, does that count? 16:47:35 I had never used Underload before 16:47:38 ais523: what, to make a pair in underload? 16:47:40 yep 16:47:48 And was tired 16:47:53 well, many students treat things like pairs as magic somehow 16:47:58 rather than things you can implement by hand 16:48:35 -!- ais523 has quit (Read error: Connection reset by peer). 16:48:36 if xchat made links out of links in topics, I'd click the link 16:48:43 olsner: it does 16:48:44 type /topic 16:48:51 * elliott would be surprised if anyone could answer the first two questions but not the third 16:48:56 -!- ais523 has joined. 16:49:00 * elliott would be surprised if anyone could answer the first two questions but not the third 16:49:29 elliott: are you sure that /topic command is safe? it won't immolate me or anything? 16:51:55 olsner: dead sure 16:52:39 ooh, it put some text on the screen with clickable links 16:53:07 yay, finished all the Underload questions; now let's see if I can be bothered to do the ones about a language I'm not quite thoroughly familiar with 16:55:53 isnt the pair thing just as simple as having a string like ()(), then the programs duplicate, execute, then pop off the unwanted half? 16:56:12 quintopia: spoilers ;) 16:56:14 s/;/:/ 16:56:24 i've never done underload and i have to agree with elliott 16:56:25 quintopia: a bit simpler than that, actually; you don't need the duplicate 16:56:30 and the answer's already been spoiled in-channel 16:56:40 it isn't really an Underload question, anyway, but an understanding-CS-concepts question 16:56:43 oh, it has? alright, then 16:56:56 * elliott was maybe a little overly in-depth with his answers 16:57:06 maybe atehwa really expects us to embed arbitrary substrings in p! 16:57:07 so people here, who are generally decent with CS concepts, are going to understand manufacturing a pair easily 16:57:08 ais523: i duplicated so i could still have the pair around later, since that's how i'd use it 16:57:19 quintopia: well, head and tail don't preserve their argument 16:57:31 so instead, it's typically the caller's duty to duplicate the pair before calling head or tail 16:57:31 quintopia: it's bad form to preserve the argument in concatenative languages 16:57:49 it adds noise to all definition sites and many call sites 16:58:01 ah good point. i was doing mentally the duplicating i would do if i used it. 17:01:03 uh oh 17:01:17 uh oh? 17:01:29 ais523: I have to deal with past me's emacs configuration 17:01:38 you can't just rename ~/.emacs? 17:01:59 ais523: I'd have to put something in its place 17:02:08 my current configuration is almost certainly lost forever 17:07:27 elliott: where'd tallybot go? 17:07:44 OK, OK, wrong channel, but you aren't in the right one 17:07:57 ais523: it crashed as soon as i pinged it on the new metadynasty 17:08:02 and I don't have my private key here 17:08:06 so there's nothing I can do 17:08:07 ah, OK 17:08:14 probably an admin made a mistake editing templates 17:08:17 where's "here", anyway? 17:08:32 on this inferior-but-for-not-being-broken computer 17:08:46 does it have numbers? 17:08:51 yes, actually 17:08:52 how am I meant to explain to prgmr that I lost my private key twice in quick succession? 17:09:07 you should keep backups of it 17:09:19 ais523: and have my backup media break too? 17:09:28 I don't think it works like that… 17:09:37 how broken is the computer with it on, anyway? 17:09:46 is it working enough to boot it up and ssh in, for instance? 17:09:54 ais523: it turned itself off and won't turn back on again 17:09:55 -!- myndzi\ has joined. 17:10:34 elliott: hmm, what if you remove the battery and run it powered from its charger? 17:11:02 you can't "remove the battery", that would cause ridiculous structural damage to the whole thing 17:11:14 but I've tried charging it overnight and nothing 17:11:26 ah, OK 17:11:35 I'm not used to laptops with nonreplaceable batteries 17:12:30 -!- myndzi has quit (Ping timeout: 256 seconds). 17:13:32 * elliott upgrades debian 17:14:01 -!- Jafet has quit (Quit: Leaving.). 17:14:19 if you have to cause structural damage, do it pulling the hard disk :D 17:14:35 quintopia: you mean the flash chips directly on the motherboard? 17:14:45 not only would that work perfectly, it would leave my warranty fully intact 17:15:03 surely there was separate storage media with the numbers you require? 17:15:27 which numbers 17:16:19 your private key for instance 17:16:34 I just generated it in the last week, so no 17:19:19 -!- Zuu has joined. 17:44:44 The story of the cursed SSH key. 17:45:45 -!- Phantom__Hoover has joined. 17:46:50 -!- Ngevd has quit (Ping timeout: 260 seconds). 17:48:49 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds). 17:49:03 RIP Phantom_Hoover. 17:49:52 RIP. 17:50:00 -!- ive has quit (Quit: leaving). 17:54:19 -!- Phantom__Hoover has changed nick to Phantom_Hoover. 18:00:14 Gregor: pikhq: Yo, Debianites, help me out. 18:06:15 I'm a Debianite! 18:06:53 Phantom_Hoover: Yeah, but you don't know things. 18:23:02 -!- Ngevd has joined. 18:25:19 he's a Debutante 18:25:32 -!- ais523 has quit (Remote host closed the connection). 18:30:18 pserver is no longer officially supported; the cvs package 18:30:18 does not install any service, inetd, or something similar. 18:30:18 If you want to set up a CVS server, use SSH, as shown in: 18:30:19 * http://www.stremler.net/Code/cvs_tricks/cvs-over-ssh.html 18:30:19 * http://www.stremler.net/Code/cvs_tricks/cvs-over-ssh-advanced.html 18:30:19 * http://www.stremler.net/Code/cvs_tricks/cvs-over-ssh-advanced2.html 18:30:20 huh 18:30:49 lol cvs 18:31:04 olsner: apt-get is reading me changelogs :p 18:31:59 on /boot: it got 300meg in that virtual machine that's tine tiny 18:32:04 here i was thinking that sounded big :p 18:33:05 yeah, 300MB just to fit a bootloader, a kernel and a handful of modules is huge 18:34:56 `quote GFDL 18:35:03 141) * Phantom_Hoover wonders where the size of the compiled Linux kernel comes from. To comply with the GFDL, there's a copy of Wikipedia in there. 18:35:31 ah, that must be it 18:37:57 olsner: oh lol ompaul thought they meant / 18:38:02 despite the context being perfectly obviously about /boo 18:38:03 t 18:43:36 What, wine is no longer in wheezy. 18:43:57 It's back into sid though. 18:44:03 debian removed wine? 18:44:13 # [2011-10-22] Accepted 1.0.1-3.4 in unstable (low) (Robert Millan) 18:44:13 # [2011-08-13] Accepted 1.0.1-3.3 in unstable (low) (Robert Millan) 18:44:13 # [2011-08-13] Accepted 1.0.1-3.2 in unstable (low) (Robert Millan) 18:44:13 # [2011-07-08] wine REMOVED from testing (Britney) 18:44:13 # [2010-11-27] wine 1.0.1-3.1 MIGRATED to testing (Britney) 18:44:22 it had been terminally unmaintained, apparently 18:44:23 for two years 18:45:10 hmm, pretty sure ubuntu has newer wine packages than that, why is that work not reusable in debian? 18:46:33 dunno 18:51:48 http://www.reddit.com/r/Minecraft/comments/lpkye/seriously_the_void_fog_needs_to_go/ 18:51:51 Oops. 18:56:47 -!- Boxer_ has joined. 18:57:00 Hy 18:57:10 Hello! 18:57:24 (are you new?) 18:57:41 You a Fam Male 18:57:49 Yes 18:57:58 `welcome 18:57:59 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: welcome: not found 18:58:03 `? welcome 18:58:06 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 18:58:12 I'm not very good at that :( 18:58:28 Also, I am a Fam Male? What? 18:58:49 Deutsch 18:59:03 Girl Boy ? 18:59:09 Boy 18:59:19 Oky 18:59:20 -!- ais523 has joined. 18:59:24 Tanks 18:59:36 Most of us here are, to be honest 18:59:57 hello Boxer_ tanks 19:00:01 -!- pumpkin has joined. 19:01:38 Ngevd, for the longest time, all of us were. 19:01:55 This lead to Phantom_Hoover's Laws of Statistical Absurdity. 19:02:10 -!- copumpkin has quit (Ping timeout: 255 seconds). 19:03:32 -!- pumpkin has changed nick to copumpkin. 19:04:40 Are some people not, then? 19:05:55 This reminds me of this humor radio show, parodying the "forest radio" show: (freely paraphrasing from the Finnish) "Hey there all men of the forest; and why not women too -- after all, half the men are women!" 19:08:16 fizzie: I'm pretty sure Madoka-Kaname and tiffany aren't. 19:09:51 -!- copumpkin has quit (Ping timeout: 244 seconds). 19:11:24 -!- Boxer_ has quit (Quit: Rooms • iPhone IRC Client • http://www.roomsapp.mobi). 19:13:06 -!- copumpkin has joined. 19:16:37 -!- sllide has quit (Read error: Connection reset by peer). 19:17:41 elliott, I maintain that Madoka-Kaname is actually a 40-year-old man, and we don't talk about tiffany in this house young man. 19:20:59 -!- Boxer_ has joined. 19:21:07 Boxer_! 19:21:20 Ja 19:21:53 -!- Boxer_ has left. 19:22:36 He's scared of Finns 19:22:50 Boxer_ is the best. 19:23:32 -!- tiffany has joined. 19:24:00 elliott, SEE WHAT YOU HAVE DONE 19:25:10 who is Boxer_, anyway? 19:25:20 and why did he part rather than quit? I get a feeling he/she doesn't like being here 19:25:22 The best. 19:25:31 New chap, apparently German 19:25:36 In the clearing stands a Boxer_, and a fighter by his trade? 19:25:42 Or at least German-speaking 19:25:48 Ngevd: You realise he will have no clue at all what this channel is about. 19:26:39 We must attempt to contact this primitive "ger man", and bring the light of civilisation to him and his people. 19:29:06 and who is tiffany? should i know tiffany? 19:29:17 I'm madoka-kaname's girlfriend 19:29:22 Knowing tiffany will bring only pain and sorrow. 19:29:27 ._. 19:29:35 * quintopia runs 19:30:07 (For background information, see: 19:30:11 `quote Galatea 19:30:13 ) 19:30:14 649) It's like Pygmalion and Galatea but more weeaboo. Also lesbian. 19:31:37 (tiffany is an emoticon bot under the delusion that she is intelligent.) 19:32:03 I'm not an emote bot :c 19:32:18 Poor thing is confused. 19:32:21 * tiffany kicks phantom_hoover in the shin 19:32:30 Someone paradoxed her at some point, obviously. 19:32:54 She doesn't even realise that a) I am a phantom, and hence cannot be kicked and b) I am I hoover, and hence do not have shins. 19:33:06 *I am a hoover 19:33:07 I am I hoover --Phantom Hoover 19:33:26 Add a full stop in the middle and it becomes philosophy. 19:35:11 -!- pikhq_ has joined. 19:35:17 -!- pikhq has quit (Ping timeout: 256 seconds). 19:35:21 `addquote Add a full stop in the middle and it becomes philosophy. 19:35:23 696) Add a full stop in the middle and it becomes philosophy. 19:41:41 -!- oerjan has joined. 19:49:18 hi oerjan 19:49:26 hi elliott 19:49:32 hi oerjan 19:49:35 hi elliott 19:49:38 hi oerjan 19:49:39 hi elliott 19:49:41 hi oerjan 19:49:41 hi elliott 19:49:43 hi oerjan 19:49:43 hi elliott 19:49:44 hi oerjan 19:49:44 hi elliott 19:49:45 hi oerjan 19:49:46 hi elliott 19:49:47 hi oerjan 19:49:48 hi elliott 19:49:49 hi oerjan 19:49:50 hi elliott 19:49:51 hi oerjan 19:49:53 hi elliott 19:49:53 hi 19:49:54 hi oerjan 19:50:10 curses, foiled by a monkey 19:50:16 that was so good 19:51:03 oh my, you're having FUN in here 19:52:05 Dammit, WP lured me to click one of its donation appeals with the prospect of learning what the hell is up with that programmer's face. 19:52:40 was it... brain damage after exposure to python? 19:53:08 Lesions of Rossum. 19:53:47 today's xkcd was somewhat confusing until i got it 19:53:57 and then realized i'd had similar thoughts 19:54:40 I guess they could have just caught a bomb in it? 19:54:48 It was the Blitz, after all. 19:55:07 it's a well known fact that python turns you into a universal robot 19:55:08 Catching a bomb with a wardrobe: easiest thing ever. 19:55:31 (if you get that pun without googling i'll be somewhat impressed) 19:56:04 Explain. 19:56:16 fizzie, yes, it could have been critical to the war effort. 19:56:25 They should have all been shot for treason. 19:56:26 Phantom_Hoover: if you put the bomb in the wardrobe it'll actually explode in narnia 19:56:34 elliott: we had an oko pyramid earlier today for the first time in years 19:56:40 it was me who messed it up :( 19:56:50 ais523: it's not a pyramid if oklopol isn't involved; was he 19:56:55 he was 19:57:05 anyway i kind of find ours unimpressive after observing the #vjn natives 19:57:05 Phantom_Hoover: hint: Karel Čapek 19:57:21 Oh, of course. 19:58:30 06:58:41: ^show scramble 19:58:31 06:58:42: >>,[>,]<[<]>[.>>]<[>>]<2[.<2] 19:58:31 06:58:43: But it does seem to be. Hmm. 19:58:31 06:58:45: ^show srmlebac 19:58:31 06:58:45: >>,[>,]<[<]>[.>>]<[>>]<2[.<2] 19:58:31 06:58:53: Well, those certainly look identical. 19:58:31 elliott: ' when i make a noise," said he, " yet truth is truth: you know you did." a little wink beneath the lid. 19:58:31 elliott: " it's not in nursery fnord? and as for food, our fnord" 19:58:35 fizzie: They're funney aliases. 19:58:54 ^style 19:58:54 Available: agora alice* c64 ct darwin discworld europarl ff7 fisher fungot homestuck ic irc jargon lovecraft nethack pa sms speeches ss wp youtube 19:58:58 thought so 19:58:58 elliott: Apparently so. I had forgotteded, and was under the impression they did something slightly different. 19:59:15 ^scramble scamble 19:59:15 sabelmc 19:59:18 oops 19:59:20 ^scramble scramble 19:59:20 srmlebac 19:59:35 -!- copumpkin has changed nick to controversipumpk. 19:59:44 -!- controversipumpk has changed nick to copumpkin. 20:01:38 Foiled by NICKLEN=16 again. 20:01:47 07:31:22: Constants arn't, well, constant space. 20:01:52 Madoka-Kaname: That's, um, true in general. 20:02:13 http://rur-ple.sourceforge.net/ 20:02:23 The constancy of constants is a constant worry of mine. 20:02:32 oerjan: wat 20:02:33 -!- DCliche has joined. 20:02:38 Uh oh, DCliche found us. 20:02:43 Everybody run. 20:02:48 -!- Vorpal has quit (Ping timeout: 248 seconds). 20:03:00 ^ the fastest runner. 20:03:08 15:07:27: ais523: basically GADTs allow you to specify a so-called phantom type parameter. Each constructor can return a value with a different phantom type as a parameter. 20:03:16 ais523: btw, cakeprophet is totally wrong about this and you should disregard his explanation 20:03:25 elliott: thanks 20:03:29 do you have a better one? 20:03:36 Yes; in reality you specify a so-called Phantom_Hoover. 20:03:38 elliott: just finding someone else who did the same pun 20:03:44 well, essentially 20:04:01 ais523: http://www.haskell.org/ghc/docs/latest/html/users_guide/data-type-extensions.html#gadt? 20:04:22 ais523: it's basically a new syntax for regular ADTs where "data Foo a = A Int String | B [a] a" turns into 20:04:23 data Foo where 20:04:26 A :: Int -> String -> Foo a 20:04:31 B :: [a] -> a -> Foo a 20:04:38 ais523: and then uses that to let you be more specific about the return type 20:04:40 http://hackage.haskell.org/trac/haskell-prime/wiki/GADTs also 20:04:40 e.g. 20:04:45 ais523: A :: Int -> Foo String 20:04:51 which isn't possible with ordinary ADTs 20:05:00 this allows you to, e.g. build up typed ASTs 20:05:07 Tuple :: Term a -> Term b -> Term (a,b) 20:05:40 Deewiant: That's not very helpful, but alright 20:05:46 -!- Vorpal has joined. 20:05:54 I think it's reasonably helpful 20:06:04 ais523: oh, and it subsumes existential quantification because you can do "Foo :: a -> Term b" 20:06:11 Foo :: (Show a) => a -> Term String 20:06:12 -- later 20:06:15 -!- Darth_Cliche has quit (Ping timeout: 260 seconds). 20:06:17 eval (Foo x) = show x 20:06:33 ah, OK 20:06:49 that's not exactly what I want in Anarchy either, but sounds like a useful feature to combine with it 20:06:59 ais523: it also solves the problem with ordinary ADTs that class contexts in data definitions don't do anything useful (and are in fact being removed) 20:07:47 `addquote that's crazy, it almost seems like you have to tell the program how you want it to manipulate the data and not just give it the relevant commands in a random sequence 20:07:49 697) that's crazy, it almost seems like you have to tell the program how you want it to manipulate the data and not just give it the relevant commands in a random sequence 20:08:55 let stringise_anything_with_integer_leaves = match 20:08:56 | Leaf x -> x = string_of_int x 20:08:58 | _ -> recurse 20:09:07 there's some Anarchy for you 20:09:14 ais523: looks like syb stuff 20:09:18 syb? 20:09:23 scrap your boilerplate 20:09:23 syb 20:09:29 i'm sure you can do that with Data.Data 20:09:35 elliott: well, Anarchy's a lot about getting rid of boilerplate 20:09:48 scrap your boilerplate is an actual thing 20:09:57 let's see... 20:09:58 for which language? 20:10:01 haskell 20:10:08 every functional programming language technique has been done in haskell 20:10:22 heh 20:10:35 hmm.. 20:10:36 not uniqueness types, i think 20:10:37 s/../.../ 20:10:40 oerjan: true :P 20:11:00 Anarchy also has some other fun features 20:11:05 Or linear typing, but that's pretty much the same AIUI 20:11:07 it's not implemented yet, but I have a vague spec 20:11:25 that contains all the new language features, but not any of the stuff that's generically available in languages that you actually need 20:11:27 ais523: wait, that function makes no sense 20:11:36 what, stringise_anything_with_integer_leaves? 20:11:38 ais523: or, wait, is it mutating the tree? 20:11:43 or dependent types, i think 20:11:43 what is stringise_anything_with_integer_leaves' type 20:11:45 elliott: it's copy-mutating it 20:12:14 and its type is polymorphic: ('a | Leaf Int) -> ('a | Leaf String) 20:12:25 where 'a can contain any bunch of type constructors 20:12:31 including recursive ones 20:12:37 and mutually recursive ones 20:12:45 eh 20:12:48 take a look at "everywhere" 20:12:57 http://hackage.haskell.org/packages/archive/syb/0.3.3/doc/html/Data-Generics-Schemes.html 20:13:00 that's not a very searchenginable term 20:13:23 ais523: f.e. everywhere (mkT show) 20:13:27 yeah that term is everywhere 20:13:37 hmm, I think syb might actually be useful for the planned purpose of Anarchy 20:13:37 data Foo a = Leaf a | Blah (Foo a) (Foo [a]) | Bluh (Foo a) (Foo a) 20:13:44 but I'll keep going with Anarchy anyway beacuse it's a fun language 20:13:46 everywhere (mkT show) :: (Show a) => Foo a -> Foo String 20:13:47 I think 20:13:54 and it'll transform on the leaves 20:13:57 including inside the lists 20:14:18 let frobnify_types = match 20:14:19 | x'type(y) -> frobnify y; recurse x 20:14:25 you can stick metadata on things 20:14:30 that's ignored except when you explicitly mention it 20:14:37 what's "x'type(y)" in less stupid syntax 20:14:50 how rude!! 20:15:03 * elliott mean 20:16:11 elliott: I'm not sure if the concept exists in many other languages, but it's basically a pattern that matches anything (x) that has a "type" metadata field with value y 20:16:40 so (x with Type y) or something 20:16:46 yep, if you like 20:17:19 ah, programs are starting to break when I open them; the Debian upgrade must be almost finished 20:17:52 so that makes a copy which recurses into x, and replaces the type metadata with a frobnified version 20:18:01 there's an implicit "| _ -> recurse" case at the end of that 20:18:11 wait, no there isn't 20:18:17 it sounds like anarchy would be nice for tree processing and little else :P 20:18:20 so you get a compile-time error if the tree doesn't have 'type everywhere 20:18:23 elliott: yes, that's its intended purpose 20:18:24 otoh, lots of things are tree processing 20:18:33 I'm just fine with it being useless for anything but tree processing 20:18:39 http://i.imgur.com/I5FMs.png 20:18:45 ^ debian upgrades 20:19:31 haha 20:19:51 elliott: hmm, the syb website gives me a 403 20:19:56 that's not particularly encouraging… 20:20:14 syb is maintained as part of the core haskell libraries 20:20:24 see http://hackage.haskell.org/package/syb, and http://hackage.haskell.org/package/base (the core is in Data.Data) 20:20:40 http://www.cs.uu.nl/wiki/GenericProgramming/SYB is the linked website there 20:21:00 (Data.Data has to be in base because of the compiler support for deriving instances) 20:36:25 -!- Nisstyre has quit (Ping timeout: 240 seconds). 20:42:21 -!- Nisstyre has joined. 20:46:59 -!- sllide has joined. 20:49:55 -!- derdon has joined. 21:11:54 -!- elliott has quit (Remote host closed the connection). 21:14:41 -!- elliott has joined. 21:18:04 hmm, I think this thing is probably due for a clean install 21:20:31 Man, this is a pretty nifty old script of mine. 21:32:58 Oh man, this is some cool old code. 21:33:54 does it do something useful? 21:34:42 Ostensibly! 21:34:47 I like how I've invented my own dependency system here. 21:36:21 /* previously a function, but a macro produces smaller executables 21:36:21 (bad inlining?) */ 21:37:40 ais523: I think like half of these programs are full o' goto. 21:37:58 elliott: you should see the code C-INTERCAL generates some time 21:38:00 especially with -e 21:38:05 /* FIXME: inexplicably broken */ 21:38:09 -!- augur has quit (Remote host closed the connection). 21:38:38 ais523: http://sprunge.us/XHdI 21:38:45 it's kind of elegant in its own twisted way 21:39:24 elliott: is that a safer rm? 21:39:30 Safer howso? 21:39:46 no idea 21:39:53 less chance of deleting stuff you actually want, or something 21:39:58 it's just an rm implementation altogether, right? 21:40:01 yep 21:40:17 so what possessed you to reimplement rm? 21:40:25 http://sprunge.us/cRDY I love how many of these programs start with comments to the effect of "just doesn't work" 21:40:39 I also like my sliding four-character buffer. 21:41:33 hmm, what OS to install on here for the few weeks of agony 21:41:45 I think I'm sufficiently annoyed at Xfce's taskbar to rule it out 21:41:46 Vista 21:41:48 elliott: gah, I saw the "strings" in the usage message before I figured out what it did 21:41:51 probably not ready to take the xmonad plunge yet 21:41:51 ais523: aww 21:42:16 so what made you reimplement the POSIX userland, anyway? so you could truthfully say "Linux" not "GNU/Linux"? 21:42:41 I think this was part of my tiny-executable fetishism. 21:42:51 you will still lose to busybox 21:42:52 They're certainly nicer than coreutils implementations, though. :p 21:42:55 ais523: err, no 21:43:03 these all came out much, much smaller than busybox 21:43:14 wow 21:43:14 busybox tools aren't really that small at all 21:43:20 a lot of them are based on coreutils ones, even 21:44:20 ah, I really like this thing's cal implementation 21:44:34 using pikhq's brilliant pseudo-coroutine thing to do the layout 21:45:08 did you implement ddate? 21:45:27 no :( shame on me 21:45:45 yeah, the static binary of all of these tools is 14.7 kilobytes in total 21:45:58 basename, cal, cat, date, dirname, echo, env, false, kill, link, mkdir, 21:46:03 mv, pwd, rm, signal, sleep, 21:46:10 strings, true, uname, vis, yes, 21:46:12 chroot 21:46:25 some of which don't work :P 21:46:49 ais523: oh, the best part is that the build system has special support for true/false 21:46:53 ais523: just so they can skip libc entirely 21:47:00 TRUEFALSECC := /opt/pcc-dietlibc/bin/pcc 21:47:00 TRUEFALSECFLAGS := \ 21:47:00 -Os -nostdlib -nostdinc -nostartfiles \ 21:47:00 -isystem /opt/pcc-dietlibc/include -D__dietlibc__ \ 21:47:00 -D__restrict__= /opt/pcc-dietlibc/lib-x86_64/libc.a \ 21:47:01 $(CFLAGS) 21:47:11 elliott: what language were true/false written in? 21:47:19 if you say anything higher-level than asm, I'll be disappointed 21:47:32 ideally, you should just pack all the code into the ELF headers 21:48:00 ais523: yes, I too have read breadbox's page on that 21:48:16 elliott: I know, that's why I referenced it rather than having to explain it to you 21:48:27 ais523: anyway, very non-portable C, but it comes out to the same thing as asm, since they look like this: 21:48:28 #include 21:48:28 void _start(void) 21:48:28 { 21:48:28 _exit(0); 21:48:28 } 21:48:48 boring, no "goto *(void*)0;"? 21:48:51 heh 21:49:06 that is probably going to be the least portable line of C I've ever written forever 21:49:34 is it even, strictly-speaking, C? 21:53:12 -!- Sgeo|web has quit (Ping timeout: 265 seconds). 21:53:43 gah 21:53:46 firefox is ignoring my dpi settings 21:53:48 elliott: sure, it's accepted by at least one strictly-conforming compiler 21:53:58 even if that compiler is gcc-bf 21:54:04 ais523: I don't believe such compilers exist 21:54:11 (I believe stock gcc will also be able to parse and compile the line, although it doesn't do anything useful) 21:55:11 right then, time to write some fucking C bindings 21:55:36 (ais523: this is for tallybot, by the way...) 21:56:27 I was going to write a bot 21:56:33 But I never figured out how 21:58:24 i was going to port my bot to my vps 21:58:28 but i never time 21:58:51 (you decide whether the verb is "had" or "made") 21:59:42 /* something went wrong but we just ignore it for now... */ 22:01:53 anyway, this is cool enough for me to try and preserve it: http://sprunge.us/WCXI?python 22:04:34 72 # I hate ais523 22:04:48 ais523: that was because I had to rewrite it to handle C-INTERCAL's tarball names 22:05:03 because they use final -s to do something other than separate name and version :) 22:05:05 I guessed it was INTERCAL-related 22:05:31 this is an automatic build script that just invokes things like configure, right? 22:05:46 ah, download/configure/build/install 22:05:59 ais523: $ inst http://path/to/tarball installs that package into /opt/pkgname 22:06:06 ais523: it works surprisingly well 22:06:55 heh, I have azip here 22:08:06 does it automatically unpack .az files? 22:08:15 I'm still pretty pleased at getting it to beat bz2 22:08:26 which just goes to show that most compression algo designers aren't trying hard enough 22:09:08 ais523: no, it doesn't :) 22:09:10 bz2 hardly involves much trying 22:09:35 elliott: it beats gz even with stupid encodings for numbers 22:09:36 It's pretty much BWT + the minimal stuff to compress it 22:09:44 i meant 22:09:47 re: does it automatically unpack .az files? 22:10:08 ah, OK 22:11:36 pikhq_: Thanks for pointing me at NetSurf ages back, btw 22:13:12 gah 22:13:18 I can't deal with it, I have to reinstall to get a newer ghc 22:13:27 monqy: Does Arch have a civilised GHC version yet 22:13:35 elliott: No 22:13:45 crys 22:13:59 SIGH. 22:14:07 What is a programmer meant to do??? 22:14:14 Impressively it doesn't even have the latest stable release 22:14:16 I thought you hated Arch anyway? 22:14:22 7.0.3 instead of .4 22:14:31 Phantom_Hoover: Yes, but there's no way Debian has a civilised GHC. 22:14:38 I remember my hatred of sshc being ruined when I looked at the logs and it turned out he was actually an idiot. 22:14:43 Deewiant: 7.2 is "stable", it's just a "preview release". 22:14:58 Deewiant: i.e. they released it as stable then decided to slap warnings on it when it turned out to be buggy. 22:15:34 Whatever, if it comes with warnings people won't treat it as stable 22:16:06 Yeah OK so is there an OS that has the latest GHC :-p 22:16:13 Windows 22:16:25 -!- Vorpal has quit (Ping timeout: 240 seconds). 22:16:34 Deewiant: Windows does not have the latest GHC. 22:16:39 Gentoo? 22:16:45 Well, depends on how you think about it 22:16:45 By that argument practically everything does because there's binary packages 22:16:45 (just a guess) 22:17:01 http://packages.gentoo.org/package/dev-lang/ghc 22:17:01 Nope. 22:17:02 The typical method of installing stuff on Windows has the latest GHC 22:18:01 http://packages.debian.org/source/experimental/ghc 22:18:05 PROBLEM SOLVED. 22:19:21 Soooooooooooooooooooooooo 22:19:54 Come to think of it, does Arch even still have GNOME 2 22:22:51 * Phantom_Hoover → sleep 22:22:53 -!- Phantom_Hoover has quit (Quit: Leaving). 22:23:09 -!- Mathnerd314 has joined. 22:23:14 -!- Mathnerd314 has left. 22:24:44 -!- Patashu has joined. 22:25:56 no more gnome, or? 22:26:03 oerjan: where is pun 22:26:21 oh neat, Arch are actually not shipping gnome 2 at all 22:26:29 that fits in with their characteristic march-forwards-at-all-costs attitude 22:26:49 elliott: as previously, read it aloud. although my pronunciation may be off, i'm just a lowly norwegian. 22:26:49 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 22:27:01 oerjan: idgi 22:27:26 it's more a rhyme than a pun 22:27:36 -!- GreaseMonkey has joined. 22:27:37 it sort of works 22:27:46 -!- Patashu has quit (Client Quit). 22:28:40 oh great, they have their own ~gnome 2 fork~ 22:30:22 Where "they" = "some guy who uploaded it to AUR"? 22:30:52 -!- Patashu has joined. 22:34:24 Deewiant: Yep 22:34:36 Ok 22:34:39 Also a wiki article :P 22:34:54 some guy who wiki articled it 22:35:01 So "some guy who wrote an article" as well 22:36:53 Deewiant: Some guy who made a Linux distribution 22:37:14 "Yes, it is huge. I'm alone. Thankyou so much." 22:37:16 deep gnome thoughts 22:37:17 Who is not, in any way, affiliated with this gnome 2 fork 22:37:28 Deewiant: Well, they're both some guys 22:38:14 Sure, but I read your "they" as referring to Arch 22:38:31 Honestly, I would just use a standalone WM if I wasn't so attached to panels 22:38:40 And I know of no decent panel implementation other than GNOME2's 22:38:56 Can't you use it with a different WM 22:39:17 Deewiant: You're missing the part where it's not in the repositories 22:39:23 Because OMG OMG OMG GNOME3 22:39:25 SO NEW 22:39:27 SO SHINY 22:39:45 It won't get updated anyway, no? 22:39:53 So just manually install it 22:40:10 Deewiant: Yeah, that sounds sustainable 22:40:21 Like said, it won't get updated... 22:40:32 Deewiant: Yeah, so I need to run something else. 22:41:01 The fork is presumably closest to your needs, then :-P 22:41:21 Yeah except I know it'll be totally fucked in some awful way, and also it's one big monolithic project so I can't pull out the panel 22:41:24 Who knows a good panel 22:41:47 What's so special about gnome2's panel 22:43:25 Deewiant: Nothing at all, it just isn't horribly broken 22:43:38 How are other panels horribly broken 22:43:38 Deewiant: e.g. In Xfce's, you can't even rearrange windows on the task bar 22:44:08 KDE's will probably pull in ~seventy billion KDE dependencies and look like crap and I know it want to be all transparent vector blah blah instead of just using widgets, so I'm disinclined to try it out 22:44:18 -!- ais523 has quit (Remote host closed the connection). 22:45:00 I use xfce4's, can't say I've felt the need for that feature :-P 22:47:04 I do it all the time to optimise access to a related set of windows, apparently the Xfce devs' opinion on this is that it takes more code so who cares 22:47:35 I only really use the panel to see what's open anyway 22:48:08 Ha ha, Deewiant is an Alt-Tab user 22:48:40 I use Unity because I am tasteless, weird, and don't actually know what you are talking about 22:48:45 I have a panel-like thing but really it's just a clock, the list of workspaces i'm using, and the title of the currently focused window 22:48:57 "all monqy needs" 22:49:01 -!- copumpkin has joined. 22:49:29 oh and it has the name of the tiling method i'm using i forgot about that 22:50:59 Deewiant: Really though Xfce mostly satisfies me, it's just that where it differs from GNOME 2 it's usually inferior 22:51:12 Deewiant: xfce-terminal is just close enough to gnome-terminal to annoy me about all the ways it differs 22:51:28 Whatever their archive manager is called is awful, and their media player is about a billion times worse than Totem 22:51:28 I only use xfce4-panel, I don't know anything about the rest of it (nor gnome) 22:51:44 Maybe I should just use the console exclusievly. 22:51:50 exclusively. 22:51:52 And I sleep now --> 22:52:26 'quote 22:52:41 I used the wrong punctuation, didn't I? 22:52:43 `quote 22:52:45 102) think of all the starving kids in china who don't have rotting sea life to eat 22:53:49 Alright, Arch it is I think 22:55:32 `help 22:55:33 Runs arbitrary code in GNU/Linux. Type "`", or "`run " for full shell commands. "`fetch " downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert " can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/ 22:55:54 oehi 22:55:55 oerjan: hi 22:55:59 hello 22:58:21 `log [r]otting sea life to eat 22:58:48 2010-03-21.txt:04:11:18: think of all the starving kids in china who don't have rotting sea life to eat 22:59:15 ah. looks genuine then. 22:59:25 oerjan: what 22:59:26 somehow that sounded to me like oklopol 22:59:29 heh 23:03:37 -!- sllide has quit (Ping timeout: 240 seconds). 23:03:50 -!- augur has joined. 23:06:21 -!- PatashuXantheres has joined. 23:07:11 So 23:07:25 Installing OSes without an optical drive sucks bigtime. 23:09:59 It's a week until my birthday 23:11:02 ahhh, installing oses without optical drive. that stuff's fun 23:11:24 Oddly, I generally use SD cards to install OSs 23:11:30 Because I am like that 23:12:17 -!- PatashuXantheres has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 , Skype: patashu0 .). 23:14:10 -!- pikhq has joined. 23:14:35 -!- pikhq_ has quit (Ping timeout: 256 seconds). 23:14:46 remember, remember, the third of november 23:15:40 http://sprunge.us/TfTY ;; someone tell me this isn't a lovely cal(1) 23:18:26 Goodnight 23:18:27 -!- Ngevd has quit (Quit: Leaving). 23:19:28 what are the functions write() and writes()? 23:20:27 Patashu: write() is standard syscall 23:20:33 writes(fd,s) is write(fd,s,sizeof(s)-1) 23:20:40 i.e. avoid specifying length for constant strings 23:20:53 ah ok 23:21:43 -!- augur has quit (Read error: Connection reset by peer). 23:22:04 Did someone highlight me? 23:22:20 I think I did :-P 23:22:56 -!- augur has joined. 23:30:30 -!- derdon has quit (Remote host closed the connection). 23:58:07 -!- evincar has joined. 23:58:31 I'm having a small bit of trouble parsing the lambda syntax in Even. 23:59:21 are you using haskell? >:P 23:59:39 > var$cycle"Parsec! " 23:59:40 Parsec! Parsec! Parsec! Parsec! Parsec! Parsec! Parsec! Parsec! Parsec! Par...