00:01:23 -!- drdanmaku has quit (Quit: Connection closed for inactivity). 00:02:42 I think I can implement van Laarhoven lenses in a dynamically typed language without difficultly faking typeclasses, but not sure about other van Laarhoven optics 00:03:15 lasers 00:03:20 Instead of f a, could just give a function that's effectively flip fmap 00:03:28 I think 00:03:49 There's not much else you can do with an unknown Functor 00:03:59 tomb of the unknown functor 00:07:02 -!- Phantom_Hoover has quit (Ping timeout: 252 seconds). 00:10:57 One of my friends is playing a 1080p movie via sshfs to a server in France 00:12:02 I have pretty much moved from streaming with sshfs to transfering with git-annex. 00:13:10 Traversals need traversable, which needs foldable and functor... I don't think I can represent opaque traversables as literally one function 00:15:43 Hold on, there are default definitions for the Functor and Foldable part... but would I ever need to pass in a functor or foldable that's not a traversable 00:18:04 Sgeo: um lens traversals are analogous to traversables, not based on them... 00:18:33 you get them by switching Functor with Applicative in the lens version 00:18:44 Ah 00:18:52 ...Applicative may be a bit problematic 00:19:43 Or... ok, not thinking about this fully at the moment 00:21:13 although perhaps you _can_ do it with traversables, in some "dual" representation 00:22:05 * oerjan wonders what a Lensable would look like 00:22:43 the thing that would be a typeclass corresponding to lenses and Functor in the same way Traversable corresponds to traversals and Applicative 00:23:07 and Functor corresponds to getters and ...um, something? 00:23:27 :t (^.) 00:23:28 s -> Getting a s a -> a 00:23:49 um sorry, *setters 00:24:01 oerjan, Getter needs (Functor f, Contravariant f) 00:24:32 oh 00:25:41 Getter might correspond to Pointed as a class, maybe 00:28:57 Surely Copointed? 00:29:25 oh right because Const r is the "only" thing that is both. 00:29:26 -!- boily has quit (Read error: Connection reset by peer). 00:30:08 -!- boily has joined. 00:30:30 wait what is Copointed 00:32:20 Foldable corresponds to folds and something 00:32:49 Foldable is Functor + Monoid a => f a -> a 00:33:57 that's not the part i'm interested in 00:35:09 hm Contravariant and Applicative 00:35:20 * oerjan thinks his brain is running out of steam again 00:35:42 also i didn't finish the logs 00:37:28 oerjan, Copointed is f a -> a 00:38:02 kmc: it involves categorical logic <-- have you reinvented cartesian closed categories 00:38:22 Taneb: hm right 00:38:36 I think it's Traversable : Traversal :: Copointed : Getter 00:39:03 Every Copointed is trivially Foldable 00:39:07 yeah sounds reasonable 00:40:52 Functor+Contravariant means phantom 00:41:08 shachaf: aka Const 00:41:08 You could make class Phantom f where coerce :: f a -> f b (we used to have that) 00:41:31 Const r or something isomorphic to it, sure. 00:41:54 ok Setter uses a complicated brew of contexts that enforce the functor being Identity. 00:41:57 Anyway, we just use Functor+Contravariant to express that using non-lens classes. 00:42:01 Right. 00:48:52 i think taintedDot is named for what it does to people who come by it unwarily. 00:51:26 -!- nisstyre has quit (Quit: WeeChat 0.4.3). 00:54:37 oh, here was a fun one I thought of today: can we get a minor-closed class of graphs, membership in which is undecideable? <-- no. https://en.wikipedia.org/wiki/Robertson%E2%80%93Seymour_theorem 00:56:22 taintedDot is still a thing? 00:56:23 whoa 00:56:49 i'm sorry :'( 00:57:25 i'm wondering why they're bothering with all that machinery for something that's supposed to be Identity 00:58:10 the trouble is that newtype Id a = Id { runId :: a }, (Id x) is operationally the same as x 00:58:30 and Id is operationally the same as, uh, id 00:58:49 but (Id . f) is operationally the same as (\x -> Id (f x)) = (\x -> id (f x)) = (\x -> f x) 00:58:58 which isn't the same as f (when f is _|_) 01:00:13 ok that explains the seqs i guess but not why they bother to list all the superclasses 01:00:59 and even to _use_ them in the implementation 01:01:31 ahem 01:01:39 have a look at a thing called Conjoined 01:02:28 are you talking about the default implementations? 01:02:54 those can't use unsafeCoerce because maybe the user will give a type that isn't Id and then you can derive a real unsafeCoerce from the default instance 01:06:05 oh wait it's actually just Applicative which is used 01:06:16 -!- edwardk has joined. 01:08:37 If a Functor is a function that takes one argument, an Applicative could be a function that takes several arguments. Except I lose pure 01:09:08 (And currently guessing as to whether that several arguments thing would work, but it makes a kind of intuitive sense) 01:10:25 Harder to have one that you add to later though 01:12:20 augur_: oh wait ski not lambda calculus 01:13:26 Sgeo: maybe you can make that Traversal1 thing i found just earlier 01:13:59 AFK, I'll look when I get back 01:34:37 -!- Slereah_ has joined. 01:38:43 -!- Slereah has quit (Ping timeout: 252 seconds). 01:49:01 -!- adu has joined. 01:53:35 -!- nooodl has quit (Quit: Ik ga weg). 02:00:07 > "aha" 02:00:09 can't find file: L.hs 02:00:16 *cough* 02:00:18 > "aha" 02:00:19 "aha" 02:02:54 -!- oerjan has set topic: The channel with the > bot | PSA: fizzie is running the wiki now, contact him for any problems | https://dl.dropboxusercontent.com/u/2023808/wisdom.pdf http://codu.org/logs/_esoteric/ http://tunes.org/~nef/logs/esoteric/. 02:05:52 -!- boily has quit (Quit: WeeChat 0.4.2). 02:09:17 "So. It’s World Penguin Day & DNA Day… AND World Malaria Day & Ed Balls Day." kmc you know what to do <-- ok kmc how is your penguin/mosquito chimæra going? 02:10:38 -!- rodgort has quit (Quit: ERC Version 5.3 (IRC client for Emacs)). 02:13:16 We got idris-ircslave to stop using > ? 02:13:49 amazing, isn't it 02:15:09 -!- rodgort has joined. 02:15:13 -!- zzo38 has joined. 02:15:34 Has anyone written a roguelike game in SQL before? 02:15:58 -!- rodgort has quit (Remote host closed the connection). 02:19:08 -!- rodgort has joined. 02:19:21 -!- adu has quit (Quit: adu). 02:20:44 -!- rodgort has quit (Remote host closed the connection). 02:23:13 Where's that thing explaining how to make a lens from scratch? 02:23:34 which one? 02:23:46 http://ftp.newartisans.com/pub/Lenses.mp4 is simon's talk 02:23:55 Was hoping for a page 02:24:00 mth.io/talks/lens-from-the-ground-up/ is mark hibberd's talk 02:24:29 https://github.com/ekmett/lens/wiki/Derivation is my original page in the wiki starting from motivation to theory 02:24:48 Thanks 02:25:55 zzo38: that sounds terrible. go for it ;) 02:26:16 -!- rodgort has joined. 02:26:18 Instead of 02:26:31 Functor f => (b -> f b) -> a -> f a 02:26:40 I'm thinking that I could have something like 02:27:40 ... 02:27:54 :t flip fmap 02:27:55 Functor f => f a -> (a -> b) -> f b 02:29:15 oerjan: yeah, I realized in retrospect it was a dumb question 02:29:58 I meant to ask the slightly more interesting question "is it possible that there's a minor-closed graphs for which we are unable (in the sense of independence) to find the forbidden minors? 02:30:02 " 02:30:29 i'd expect that to be true 02:31:13 The only way to construct that f a that the lens must output is to use fmap with the result of (b -> f b), right? 02:31:14 edwardk: Are you sure it is terrible? 02:31:34 sgeo: the problem with that form is it doesn't compose as well 02:31:47 oerjan: but we can enumerate all of the possible sets of forbidden minors 02:32:33 coppro: yes, but we cannot check whether any particular of those sets gives the original set of graphs, i think 02:32:33 Are there likely to be significant limitations if I keep not going the van Laarhoven route in a dynamically typed language? 02:32:46 My code is so verbose :/ 02:33:02 Also, it would be fun to show it could be done 02:33:21 > map (zip [1, 2, 3]) $ [4, 5, 6] 02:33:23 No instance for (GHC.Show.Show b0) 02:33:23 arising from a use of ‘M245150698743640559410341.show_M2451506987436405594... 02:33:23 The type variable ‘b0’ is ambiguous 02:33:23 Note: there are several potential instances: 02:33:23 instance [safe] GHC.Show.Show 02:33:31 why 02:33:56 > map (zip [1,2,3]) $ [[4,5,6]] 02:33:57 [[(1,4),(2,5),(3,6)]] 02:34:06 Bike: zip [1, 2, 3] 4 doesn't make much sense 02:34:07 > map (zip [1, 2, 3 :: Int]) $ [4,5,6] 02:34:08 No instance for (GHC.Show.Show b0) 02:34:08 arising from a use of ‘M814034439476907821810375.show_M8140344394769078218... 02:34:08 The type variable ‘b0’ is ambiguous 02:34:08 Note: there are several potential instances: 02:34:08 instance [safe] GHC.Show.Show 02:34:18 coppro: although this is really about _descriptions_ of sets of graphs, not sets of graphs themselves 02:34:22 > map (zip [1,2,3]) [4::Int,5,6] 02:34:24 Couldn't match expected type ‘[b]’ with actual type ‘GHC.Types.Int’ 02:34:44 oerjan: true 02:35:01 ... were you able to determine beforehand without GHCi or similar that that would be a clearer error message somehow? 02:35:10 coppro: oh wait am i thinking about this wrongly 02:35:45 :t zip 02:35:46 [a] -> [b] -> [(a, b)] 02:35:47 oerjan: I don't think so. We can describe any minor-closed set of graphs by its forbidden minors 02:35:51 oh right. 02:35:52 hm no 02:36:03 (that wasn't a response) 02:36:21 So the question is "is there some way to describe a minor-closed set of graphs in such a way that we are unable to associate them with a description of that set by its forbidden minors." 02:40:12 seems like you just need to encode a gödel sentence or something 02:40:46 oh well 02:43:20 oerjan: yeah, you need to encode something like that. but I'm not quite sure how you would do so in a useful way that still leaves you minor-closed 02:43:33 oh wait, I guess you could, nevermind 02:43:56 hmm... better. membership in the class needs to be decideable 02:44:33 that would seem more interesting 02:46:03 -!- FreeFull_ has joined. 02:48:00 -!- FreeFull has quit (Ping timeout: 265 seconds). 03:08:16 * Sgeo is still trying to figure out the functor thing 03:08:34 All I can think is maybe it's an infinitely big type trying to write it out like that 03:09:13 http://twanvl.nl/blog/haskell/overloading-functional-references ? 03:09:35 you were asking about lenses, these are twan's original posts 03:10:46 Is it possible to write a function that gives infinitely many arguments in Haskell? 03:10:48 *takes 03:10:52 id 03:11:55 Hmm, even if the type involved is opaque to my lenses, it can't be opaque to the driver 03:13:39 But it doesn't need to be just a function, it itself shouldn't be getting composed, right? 03:13:50 wouldn't const id or however you spell it take infinitely many arguments 03:13:52 Only the lenses that treat it as opaque get composed 03:14:10 > const id 3 4 03:14:11 4 03:14:17 > const id 3 4 5 03:14:18 Could not deduce (GHC.Num.Num (a0 -> t)) 03:14:18 arising from the ambiguity check for ‘e_1345’ 03:14:18 from the context (GHC.Num.Num (a -> t), GHC.Num.Num a) 03:14:18 bound by the inferred type for ‘e_1345’: 03:14:18 (GHC.Num.Num (a -> t), GHC.Num.Num a) => t 03:14:23 ...dangit numbers 03:14:26 uh? 03:14:29 > const id '3' '4' '5' 03:14:31 Couldn't match expected type ‘GHC.Types.Char -> t’ 03:14:31 with actual type ‘GHC.Types.Char’ 03:14:33 :t const id 03:14:34 b -> a -> a 03:14:47 no, wait, i'm thinking wrong, yeah. 03:15:14 i just want a function that ignores its argument and returns itself. 03:15:29 Hey, I've finally learned the difference between expected and actual 03:15:31 :t let f x = f 03:15:32 : not an expression: ‘let f x = f’ 03:15:38 :t let f x = f in f 03:15:39 Occurs check: cannot construct the infinite type: t3 ~ t2 -> t3 03:15:39 Relevant bindings include 03:15:39 x :: t2 (bound at :1:7) 03:15:46 boring! 03:16:13 > fix id 03:16:17 Conceptually, an infinite type can be well-typed even if Haskell doesn't understand it, right? 03:16:17 mueval-core: Time limit exceeded 03:16:28 > undefined 3 4 5 6 7 03:16:30 *Exception: Prelude.undefined 03:16:33 fix kills an argument 03:16:35 owned!!! 03:21:12 -!- huh has joined. 03:21:27 @let import Data.NumInstances 03:21:28 Defined. 03:21:33 > 1 2 3 4 5 03:21:34 1 03:23:43 note that if a value has the type a = b -> a then you can never get any information out of it 03:24:44 @src Mu 03:24:44 newtype Mu f = In { out :: f (Mu f) } 03:25:17 that should be called Fix :'( 03:25:50 :t let f x = out f in f 03:25:51 Couldn't match expected type ‘Mu f1’ 03:25:51 with actual type ‘t1 -> f1 (Mu f1)’ 03:25:51 Relevant bindings include 03:25:56 :t let f x = In f in f 03:25:57 t -> Mu ((->) t) 03:26:15 To write a roguelike game in SQL does not sound too terrible to me; you will not have to deal with encoding data in a save file, since SQL will do that automatically (you don't even need to tell it to save; that is automatic too), 03:26:32 @let newtype Fix f = Fix { runFix :: f (Fix f) } 03:26:33 Defined. 03:28:05 :t coerce 03:28:06 (Contravariant f, Functor f) => f a -> f b 03:28:23 NOT THE ONE I WAS LOOKING FOR 03:28:53 coerjan 03:29:40 cœrce 03:30:46 "t GHC.Prim.coerce 03:30:49 :t GHC.Prim.coerce 03:30:49 GHC.Types.Coercible a b => a -> b 03:30:57 aha 03:31:08 (exported via GHC.Exts) 03:32:59 @let f x = GHC.Prim.coerce (In f) 03:32:59 .L.hs:147:7: Not in scope: ‘GHC.Prim.coerce’ 03:33:00 03:33:00 .L.hs:147:27: 03:33:00 Ambiguous occurrence ‘f’ 03:33:00 It could refer to either ‘L.f’, defined at .L.hs:147:1 03:33:08 darn 03:33:23 @let a = GHC.Exts.coerce 42 03:33:24 .L.hs:144:5: Not in scope: ‘GHC.Exts.coerce’ 03:33:42 GHC.Exts is not very safe :P 03:33:54 coerce is meant to be safe :( 03:35:25 which i guess means that's the wrong module to export that from... 03:35:25 oerjan: I can if the language allows functions to be more than merely functions 03:35:44 Sgeo: oh right you're not working in haskell 03:36:23 Sgeo: you can't make a truly infinite function type in Haskell. You can, of course, fake it. 03:36:39 @run let a = (); a # b = 0 in let a# b = 1 in a# () 03:36:40 1 03:36:58 hmm. no. 03:37:04 @run let a = (); a# b = 0 in let a # b = 1 in a# () 03:37:06 0 03:37:29 That's a proper test for MagicHash. 03:37:58 @run 0# 03:38:00 Kind incompatibility when matching types: 03:38:00 a0 :: * 03:38:00 GHC.Prim.Int# :: # 03:38:16 @run I# 0# 03:38:17 Not in scope: data constructor ‘I#’ 03:38:17 Perhaps you meant ‘In’ (imported from Lambdabot.Plugin.Haskell.Eval.Trusted) 03:39:27 And I guess that's harmless since you can't operate on such unboxed values anyway. 03:39:45 (with the modules that lambdabot imports) 03:39:47 So prety 03:39:51 (let f () f) 03:42:00 @let class CountArgs a where {countArgs :: Int -> a}; instance CountArgs Int where {countArgs = id}; instance CountArgs a => CountArgs (b -> a) where {countArgs n _ = countArgs $! n + 1} 03:42:01 Defined. 03:42:31 > countArgs 0 "hi" False [Nothing] :: Int 03:42:32 3 03:43:07 imagine working on the first try 03:56:04 -!- tromp has quit (Remote host closed the connection). 03:56:36 Half wondering if it would just make more sense to abuse impurity to turn a modifier into something able to get 03:56:37 -!- tromp has joined. 03:56:51 That... seems almost related to what the functor allows for anyway 03:59:46 `coins 03:59:47 solvescoin pingcoin mazancoin reatcoin barcoin godsmacoin cntalcoin mutlastacoin odtizediuspietcoin giumcoin lo'scoin pcordfuckercoin vowcoin dilaxatcoin goto+coin grancoin eucacoin qalcoin con-textendecoin graphicoin 03:59:49 In some book I have, it describes a virtual machine called "Ada/CS Object Machine". It is a similar to IBM mainframe instruction sets. 03:59:53 (f a) where f is an unknown Functor is iso to (forall b. (a -> b) -> f b), if that's what you've been asking. 04:00:09 yes 04:00:11 thanks 04:00:52 Which is iso to an infinitely large type, I guess 04:01:00 elliott: Isn't that the right Yoneda lemma though? 04:01:01 ? 04:01:02 -!- tromp has quit (Ping timeout: 255 seconds). 04:01:02 -!- Sorella has quit (Quit: It is tiem!). 04:01:15 it's iso to the intersection of ((a -> B) -> f B) for all concrete B, sure. 04:01:29 but that doesn't seem like a terribly useful thing here. 04:02:15 There is also a left Yoneda lemma (is that useful here at all?) 04:13:06 http://ww2.chemistry.gatech.edu/~bostwick/stms/raw.txt Anyone recognize where the language on the bottom could be from, phylogenically? It's probably a DSL 04:18:03 looks like a kind of BASIC to me 04:19:22 Yes, something like BASIC 04:20:20 But unusual; it is using ! for comments 04:20:37 yeah i noticed that 04:21:00 but "PRINT USING" is very basic 04:21:38 Yes, I know, I can write programs in BASIC. 04:22:16 I can write a program in BASIC. Specifically, the empty program. 04:23:12 Yes, that will work and is valid 04:23:50 basic has that #-y print string thing? 04:24:24 If you put #1 or whatever after PRINT it mean, to send it to the file, instead of to the screen. 04:24:43 In a PRINT USING, the # is a placeholder for a digit. 04:25:02 Type suffix in some version of BASIC can be # for double precision floating points. 04:25:04 ah, i see. 04:25:29 "You can use any text editor to write a macro. In the following examples, it is assumed that Microsoft(R) Windows Notepad is used." 04:28:10 -!- Sprocklem has joined. 04:32:23 I think Haskell is about to teach me MVC 04:34:21 -!- Patashu_ has changed nick to Patashu. 04:47:44 What is the specification of the qsort function in C about the exact pointing of the arguments to the comparison function? 04:48:07 what 04:48:44 Does it point to existing objects, create a copy, point to their original location, etc, such as, what will their pointer difference be? 04:51:27 zzo38: it doesn't say. you can't rely on the pointer values at all, just on the contents. 04:52:51 int-e: Though there's no sane way that qsort can do *any* dynamic allocation at all. 04:53:02 (qsort cannot fail) 04:55:06 I suppose that doesn't mean that, say, the arguments to the comparator can't point into buffers on the stack. 04:55:18 Just that there's only so crazy you can go. 04:55:27 pikhq: what of trying to allocate, the allocation failing, and it falling back to something worse than if it was able to allocate? 04:55:41 Huh. Actually, 7.20.5 (C99) says that the pointers being passed are supposed to lie inside the array being sorted. 04:55:58 int-e: Ah, huh. 04:56:07 Not everything that uses malloc has to have a non-0 chance of failing, I think 04:56:10 Sgeo: I guess that's *valid*, if utterly moronic. 04:56:30 int-e: pikhq ??? 04:57:17 Awesom, I can tab-complete huh now. Although I ended up trying to tab-complete ttab-coomplet.e 04:57:36 Particularly with qsort. In-place sorting isn't exactly hard. 05:00:58 -!- huh has quit (Quit: Segmentation fault). 05:02:31 pikhq: hmm. but quicksort is the only viable option that remains. 05:03:51 No. Smoothsort, heapsort, in-place merge sort. 05:04:27 Are you sure qsort cannot fail, even if the comparison function is not implemented correctly? (For example, if it returns a random number regardless of its inputs) 05:04:41 zzo38: That's UB. :) 05:05:05 heapsort is terrible for caches. 05:05:58 And quicksort has pathological behavior on certain inputs. 05:06:27 glibc defaults to a merge sort with n/2 elements worth of temporary space, and falls back to quicksort if allocation fails 05:06:42 That's... not what glibc does. 05:06:59 pikhq: it needs O(log n) stack space according to Wikipedia 05:07:14 Sgeo: Yes. Or about two ints. 05:07:34 Sgeo: Remember, log_2 2^64 is is 64. 05:07:52 Actually... huh. How does that work, exactly, If it's not known until runtime how much stack space.... oh, hmm.... 05:08:04 ... The maximum is well-known. 05:08:30 Maximum on modern computers 05:08:31 pikhq: what do you mean, "that's not what glibc does"? 05:08:53 int-e: I mean that that's not the algorithm used in stdlib/qsort.c. 05:09:15 pikhq: indeed. and that's not qsort. look at msort.c in the same directory. 05:09:38 * pikhq takes a moment to flip off glibc 05:09:58 glibc, the new openssl? 05:10:25 That is... utterly, positively moronic, BTW. 05:10:52 So, on out-of-memory it goes pathological. 05:11:17 Rather than, y'know, just using smoothsort. 05:11:26 There's no Identity Applicative, is there? 05:11:33 What would pure... oh. I'm dumb. 05:11:44 Sgeo: Pretty much. glibc is positively insane. 05:11:54 I managed to forget that pure takes an argument. 05:12:01 wouldn't it be the old ssl 05:12:16 i don't know if return to libc counts as a heartbleed 05:18:02 libc broke his heart 05:18:03 employees must wash hands before returning to libc 05:33:02 oerjan: turns out the answer is you can't 05:33:36 can't which way? 05:34:13 actually, wait, hmm... not sure the reasoning holds 05:34:52 but if you had only finitely many candidate sets of forbidden minors, you could just enumerate the class of graphs and check each of the sets 05:36:04 well sure 05:36:23 in fact you only needed to test the members of the candidate sets 05:37:13 the problem is when you cannot prove there is a much larger forbidden graph than the ones you have tested 05:37:18 yeah 05:38:00 *there isn't 05:38:40 ah here we are 05:38:43 Sgeo,Bike : "Is it possible to write a function that gives infinitely many arguments in Haskell?","i just want a function that ignores its argument and returns itself.","Conceptually, an infinite type can be well-typed even if Haskell doesn't understand it, right?" -- can be done with `ocaml -rectypes', e.g.. this is "equi-recursive" types, as opposed to "iso-recursive" ones 05:39:21 (lambda (f) (lambda (o) ((f (car o)) (lambda (mc) (cons mc (cdr o)))))) 05:39:28 ^^not tested 05:39:33 suppose S were a minimal set of sets of forbidden minors that you couldn't prove were/weren't the set for your class. Then at least one set contains a minor of a graph in another class. You can test those two graphs and eliminate one set from consideration, which contradicts the selection of S. 05:39:44 i used ocaml rectypes for my unlambda implementation 05:39:44 so it relies again on the GMt 05:39:47 well you can obviously do it in scheme 05:40:46 * Sgeo wonders if that's a bit verbose 05:40:55 you can also do it in unlambda. although i never tested out my theoretical "stop at the first argument that is d" idea 05:41:01 Compared to just using a modifier on the targetted car 05:41:05 [wiki] [[User:Quincunx]] http://esolangs.org/w/index.php?diff=39405&oldid=39086 * Quincunx * (+144) /* Circuit Diagram 10 */ 05:43:02 coppro: um your line is too ambiguous for me to interpret 05:43:28 So... twisty, almost. You apply the f too get a functor, which is then wrapped in a modifer that produces a functor, which is then applied to get a functor, etc. etc. 05:43:35 s/too/to/ 05:43:56 in fact i have no idea if "set of sets" is a typo 05:44:15 Somehow this is making the idea behind van Laarhoven lenses a bit more intuitive to me 05:44:19 Is that weird? 05:44:42 For getting, (f (car o)) is a function that just ignores its argument 05:44:52 oerjan: ok, let's say I have a minor-closed class \mathcal G. Let S be the set of sets F such that the statement "F is the set of forbidden minors of \mathcal G" is independent of ZFC. Then by the GMT, there exist, G, H in members of F, one which is a forbidden minor of the other 05:45:03 -!- Vorpal has joined. 05:45:03 -!- Vorpal has quit (Changing host). 05:45:03 -!- Vorpal has joined. 05:45:04 -forbidden 05:46:05 then you can just test G and H for membership in \mathcal G. If either is in \mathcal G, then that isn't a forbidden minor, eliminating one set from consideration. If neither is, then assuming G is a minor of H, then H is not a forbidden minor. either way, our choice of S was wrong, because we proved that some F was not the set of forbidden minors. 05:46:42 should "in members of F" be "in members of S" 05:46:53 no. 05:46:57 oh wait, yes 05:47:21 ski: in Haskell you can play the usual newtype trick. newtype W a = W { apply :: a -> W a }; w = W (\x -> w) 05:47:29 Should I be sad that this is almost certainly not going to be R5RS Scheme? 05:47:45 the tl;dr is that the Graph Minors Theorem is trolling us even more 05:47:57 because it tells us that not only is the set of minors finite, there exists a proof of this fact. 05:48:12 err 05:48:16 there exists a proof of *which* set it is 05:48:39 i am not convinced 05:48:43 Sgeo: what the hell are you trying to do even 05:48:44 but i am also tired 05:49:02 Port something close to van Laarhoven lenses and miscelleny to Racket 05:49:13 well nevermind me then 05:49:38 -!- oerjan has quit (Quit: Too tired, in fact). 05:50:09 int-e : indeed .. but that's kinda obvious 05:50:10 It almost makes sense what f being an applicative maker instead of just a functor maker would do 05:50:20 (and not quite what the OP asked for) 05:50:42 perhaps you can do some classy trick as well 05:50:56 And what pure looks like 05:51:04 Ok, besides Functor and Applicative, what else do I want? 05:51:09 What are prisms actually? 05:51:40 When you save the macro it becomes a file on the computer hard disk. 05:52:08 Bike: so few people have HDs though, aren't they more likely to be saving to floppy? 05:52:16 good point 05:52:37 (I had a book on DOS when I was a kid) 05:52:47 And a laptop that ran DOS 05:53:10 I think the battery died 05:53:59 pikhq: So smoothsort looks complicated (not just the theory, but also the implementation) and bad in the benchmark that I found. I'll look at it some more, but only as an intellectual exercise. 06:01:26 I believe this is what both looks like 06:02:28 (lambda (f) (lambda (o) ((f (car o) (cdr o)) cons))) 06:02:42 Bike : save macro where ? 06:02:53 onto the computer hard disk 06:03:06 i mean, in which system ? 06:06:02 oh some chromotagraphy system 06:10:03 what kind of macro ? 06:10:11 an ui macro ? 06:11:16 more like a shell script. 06:12:07 kmc: https://www.sciencenews.org/article/name-fungus article about fungus sex. you probably know most of it but it's still neat 06:12:08 in an OS ? 06:12:19 for this chromatography machine. 06:16:14 in an OS made for that chromatography machine ? 06:17:44 http://www.chem.agilent.com/Library/usermanuals/Public/MACROS.PDF go crazy 06:29:38 -!- shikhin has joined. 06:29:38 -!- shikhin has quit (Changing host). 06:29:38 -!- shikhin has joined. 06:36:19 fungus 06:36:24 fungots fall on fungot falls 06:36:24 kmc: that is just a value of type is created containing the syntax for mark if he was really gonna get worse and worse each week, i fnord kara to hold me until i fell over to 5 videos and then i jizzed. in other places... problem, about the copyrights: i have put this in the near future, that are just the ordinary ( for call/ cc))) hangs 06:36:46 fungot: tmi 06:36:46 kmc:, so i'd make stuff up to. why, this is for you guys are a lot 06:37:27 ^style 06:37:28 Available: agora alice c64 ct darwin discworld enron europarl ff7 fisher fungot* homestuck ic irc iwcs jargon lovecraft nethack oots pa qwantz sms speeches ss wp youtube 06:37:36 fungot: stop making sense 06:37:36 kmc: use the ' ' ' delete a value of type " airbus is a big fan of avril....but this song " there 06:38:30 ^style qwantz 06:38:30 Selected style: qwantz (Dinosaur Comics transcriptions 2003-2011) 06:38:32 fungot: oi 06:38:33 kmc: it's a very tricky to sound natural, then you can't sleep at all, then you go demented and then you die, we're giving dinosaur comics to the marmaduke guy. sincerely, the man, you must really have 06:41:56 I made an... odd mistake 06:44:08 are you dead 06:52:58 I can use pure functions. 06:53:06 At least for running lenses 06:53:16 > (\f (o:os) -> f o (\mc -> mc : os)) const [1,2,3,4,5] 06:53:17 1 06:53:22 > (\f (o:os) -> f o (\mc -> mc : os)) (\o recon -> recon (o + 1)) [1,2,3,4,5] 06:53:23 [2,2,3,4,5] 06:57:41 I do wish that modifier didn't have to be baked into the runner 06:57:51 :t (\f (o:os) -> f o (\mc -> mc : os)) 06:57:51 (a -> (a -> [a]) -> t) -> [a] -> t 06:58:28 Oh jeez it probably doesn't, I just need to give the modifier after the target 07:00:22 -!- shikhin has quit (Ping timeout: 276 seconds). 07:00:45 > (\f (o:os) -> f o (\mc -> mc : os)) (\o recon mod -> recon (mod o)) [1,2,3,4,5] (+1) 07:00:47 [2,2,3,4,5] 07:01:09 @pl (\o recon mod -> recon (mod o) 07:01:09 (line 1, column 31): 07:01:09 unexpected end of input 07:01:09 expecting variable, "(", operator or ")" 07:01:15 @pl (\o recon mod -> recon (mod o)) 07:01:15 flip (.) . flip id 07:01:25 * Sgeo runs far, far away 07:01:39 bye 07:13:22 @pf (.).(.) 07:13:22 Maybe you meant: pl bf 07:13:28 No, certainly not. 07:13:39 @pl bf 07:13:39 bf 07:13:40 > let lensHead = (\f (o:os) -> f o (\mc -> mc : os)) in (lensHead.lensHead) const [1,2,3,4,5] 07:13:42 Occurs check: cannot construct the infinite type: 07:13:42 a0 ~ ([a0] -> [[a0]]) -> t 07:13:42 Expected type: a0 -> (a0 -> [a0]) -> ([a0] -> [[a0]]) -> t 07:13:42 Actual type: a0 -> (a0 -> [a0]) -> a0 07:13:50 darn 07:13:56 And I thought I was onto something 07:14:18 ....like being an idiot... of course that wouldn't typecheck 07:15:18 It's only natural. 07:15:28 > let lensFst = (\f (a,b) -> f a (,b)) in (lensFst.lensFst) const ((1,2),3) 07:15:29 1 07:15:49 infinite type error is the error I encounter most often too ;) 07:16:06 I wasn't expecting any of these to typecheck at all 07:16:14 I was expecting they'd only work in Racket or something 07:17:08 There's still the whole lack of varargs thing 07:17:21 there's a 49% chance it's either "infinite type", 49% chance it's "indentation" and 1% some crazy other thing :( 07:17:37 -!- nisstyre has joined. 07:17:46 But in languages with first class functions and varargs, all we need for van Laarhoven lenses and traversals are first class functions and varargs 07:18:11 (Still have yet to really prove the traversals thing) 07:21:45 -!- shikhin has joined. 07:21:45 -!- shikhin has quit (Changing host). 07:21:45 -!- shikhin has joined. 07:26:53 -!- mhi^ has joined. 07:58:06 ferns have swimming sperm? wtf 08:00:48 -!- shikhin has quit (Ping timeout: 240 seconds). 08:02:22 there's a 49% chance it's either "infinite type", 49% chance it's "indentation" and 1% some crazy other thing :( <-- so what about the remaining 1% 08:02:34 Or did you mean 2% for the last one 08:02:57 (Or 49.5 for the first two) 08:17:41 -!- shikhin has joined. 08:19:35 -!- conehead has quit (Quit: Computer has gone to sleep). 08:20:29 Hmm. Are my lenses any distinct from the store model? 08:20:40 I guess I don't actually understand the store model 08:22:26 I keep thinking it's all connected, that model, my model (just converting the typeclasses into something more concrete), CPS... that type that these have look all CPSy 08:27:52 -!- Slereah_ has changed nick to Slereah. 08:30:20 -!- MoALTz has joined. 08:35:01 -!- AnotherTest has joined. 08:54:45 -!- nisstyre has quit (Quit: WeeChat 0.4.3). 09:04:17 -!- augur_ has quit (Quit: Leaving...). 09:26:01 -!- shikhin has quit (Remote host closed the connection). 10:12:00 -!- yorick has joined. 10:15:57 -!- MoALTz has quit (Quit: Leaving). 10:16:37 -!- nooodl has joined. 10:21:36 -!- ais523 has joined. 10:31:40 -!- AnotherTest has quit (Ping timeout: 252 seconds). 10:33:47 -!- kronion has joined. 10:36:25 -!- FreeFull_ has changed nick to FreeFull. 10:47:11 -!- MoALTz has joined. 11:02:50 [wiki] [[Hollang]] http://esolangs.org/w/index.php?diff=39406&oldid=39367 * Zerk * (+888) 11:05:04 ooh, HackEgo reports changes to the wiki now 11:05:14 weird that it's that bot doing it, it doesn't fit in that well with HackEgo's normal behviour 11:07:16 We should create a new bot to announce them, then 11:18:05 http://www.asrock.com/microsite/mining/index.en.html 11:20:47 ais523: It was the path of least resistance. 11:20:54 fair enough 11:21:34 (It's already running on the same server as the wiki, it's already on the right IRC channel, and there was already an easy way to hook up extra inputs.) 11:29:19 -!- MindlessDrone has joined. 11:38:15 -!- nucular has joined. 11:38:16 -!- nucular has quit (Changing host). 11:38:16 -!- nucular has joined. 12:12:52 -!- callforjudgement has joined. 12:13:23 -!- ais523 has quit (Read error: Connection reset by peer). 12:13:50 -!- callforjudgement has changed nick to ais523. 12:32:07 -!- callforjudgement has joined. 12:32:37 -!- ais523 has quit (Read error: Connection reset by peer). 12:32:40 -!- callforjudgement has changed nick to ais523. 12:36:26 -!- ais523 has quit (Read error: Connection reset by peer). 12:36:37 -!- ais523 has joined. 12:40:52 -!- ais523 has quit (Read error: Connection reset by peer). 12:41:00 -!- ais523 has joined. 13:22:05 -!- Sorella has joined. 13:38:37 -!- yorick has quit (Remote host closed the connection). 13:39:45 [wiki] [[Poop]] http://esolangs.org/w/index.php?diff=39407&oldid=39403 * Creeparoo * (+36) 13:40:24 [wiki] [[Poop]] http://esolangs.org/w/index.php?diff=39408&oldid=39407 * Creeparoo * (-35) Undo revision 39407 by [[Special:Contributions/Creeparoo|Creeparoo]] ([[User talk:Creeparoo|talk]]) 13:40:45 [wiki] [[Poop]] M http://esolangs.org/w/index.php?diff=39409&oldid=39408 * Creeparoo * (-47) 13:44:44 [wiki] [[Poop]] http://esolangs.org/w/index.php?diff=39410&oldid=39409 * Creeparoo * (+25) 13:45:59 [wiki] [[Poop]] http://esolangs.org/w/index.php?diff=39411&oldid=39410 * Creeparoo * (+26) 13:46:52 [wiki] [[Poop]] http://esolangs.org/w/index.php?diff=39412&oldid=39411 * Creeparoo * (-25) 13:47:58 [wiki] [[Poop]] http://esolangs.org/w/index.php?diff=39413&oldid=39412 * Creeparoo * (+50) Undo revision 39412 by [[Special:Contributions/Creeparoo|Creeparoo]] ([[User talk:Creeparoo|talk]]) 13:49:38 -!- ais523 has quit (Ping timeout: 255 seconds). 13:49:39 -!- augur has joined. 13:50:23 -!- ais523 has joined. 14:02:02 -!- callforjudgement has joined. 14:05:16 -!- scarf has joined. 14:06:32 Uh. 14:06:44 -!- Patashu has quit (Ping timeout: 255 seconds). 14:06:46 -!- ais523 has quit (Ping timeout: 276 seconds). 14:06:59 -!- scarf has changed nick to ais523. 14:09:12 -!- callforjudgement has quit (Ping timeout: 240 seconds). 14:17:16 -!- ais523 has quit (Read error: Connection reset by peer). 14:17:23 -!- callforjudgement has joined. 14:17:33 -!- callforjudgement has changed nick to ais523. 14:20:08 -!- impomatic has quit (Ping timeout: 265 seconds). 14:24:13 [wiki] [[Poop]] http://esolangs.org/w/index.php?diff=39414&oldid=39413 * Creeparoo * (+252) 14:27:23 -!- callforjudgement has joined. 14:27:27 -!- ais523 has quit. 14:30:03 [wiki] [[Language list]] M http://esolangs.org/w/index.php?diff=39415&oldid=39340 * Creeparoo * (+11) 14:31:19 [wiki] [[Poop]] http://esolangs.org/w/index.php?diff=39416&oldid=39414 * Creeparoo * (+1) 14:31:27 -!- callforjudgement has changed nick to ais523. 14:33:18 I like how the "Poop" text shows up brown in fbcon 14:34:04 it's brown here too, but all page titles have the same brown so 14:34:59 yeah, just amusing coincidence 14:36:38 you're IRCing in fbcon? 14:36:56 how many fbcons do you have open right now (as in, running programs other than login/getty)? 14:37:06 5 14:37:19 why? 14:38:29 most people use multitasking window managers 14:38:42 so I was curious what life was like for someone who didn't 14:39:01 well, my t61p now refuses to start up so I'm back to my t20 I've been using for past 2 years 14:39:32 it is actally not that bad unless you like to watch a lot of videos or play games 14:39:48 or use heavy webapps 14:39:49 aalib can solve the first problem 14:40:12 oh, I'm using fbdev2 driver for mplayer when I watch stuff 14:40:14 and some games can run in framebuffer mode (thus on an fbcon console, although fbcon itself isn't doing the graphics) 14:40:24 more refering to my 600MHz CPU 14:40:29 ah right 14:41:03 funny going from 2.2GHz core 2 duo to 600MHz p3 without much trouble 14:41:12 I've played Battle for Wesnoth in framebuffer mode, although it has graphical glitches with transparency 14:41:39 also, I can get sdl to display to fb 14:41:52 so anything that uses sdl backend should run" 14:41:56 -" 14:42:06 I used to use a framebuffer console for just about everything, too, though that was perhaps a decade ago. 14:42:14 "mplayer -vo mga" and so on. 14:42:25 mga? 14:42:33 Matrox-specific video driver. 14:42:40 -!- augur has quit (Remote host closed the connection). 14:42:44 I had a Matrox Mystique 220 card, I think. 14:42:45 I should try NetHack 4 tiles on framebuffer some time 14:42:52 ic séo 14:43:07 -!- augur has joined. 14:43:13 Oh, and later I had a v. fancy AGP card, I think it was the G400. 14:43:48 The "-vo mga" worked fine in conjunction with matroxfb, used a hardware video overlay. 14:46:10 Also my "rdiff-backup"-based backup thing is running out of memory. :/ 14:47:43 -!- augur has quit (Ping timeout: 276 seconds). 14:50:34 -!- kronion_ has joined. 14:54:01 -!- kronion has quit (Ping timeout: 252 seconds). 14:57:13 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=574379 open since 2010, I see. 15:01:58 -!- ais523 has quit. 15:02:06 -!- callforjudgement has joined. 15:02:46 -!- callforjudgement has changed nick to ais523. 15:39:24 -!- ais523 has quit. 15:39:33 -!- ais523 has joined. 15:50:28 -!- Phantom_Hoover has joined. 15:53:37 -!- augur has joined. 16:02:34 -!- callforjudgement has joined. 16:02:36 -!- ais523 has quit (Read error: Connection reset by peer). 16:02:51 -!- callforjudgement has changed nick to ais523. 16:08:16 -!- MoALTz has quit (Quit: Leaving). 16:30:53 -!- kronion_ has quit (Remote host closed the connection). 16:31:22 [wiki] [[Poop]] http://esolangs.org/w/index.php?diff=39417&oldid=39416 * Creeparoo * (+13) 16:31:26 -!- kronion has joined. 16:31:58 [wiki] [[Poop]] http://esolangs.org/w/index.php?diff=39418&oldid=39417 * Creeparoo * (+20) 16:34:35 [wiki] [[Poop]] http://esolangs.org/w/index.php?diff=39419&oldid=39418 * Creeparoo * (+165) 16:36:39 [wiki] [[Joke language list]] http://esolangs.org/w/index.php?diff=39420&oldid=39368 * Creeparoo * (+11) 16:46:10 -!- boily has joined. 17:03:43 int-e: Your benchmark sounds bad. :P 17:03:52 int-e: Is is somewhat complicated though, yes. 17:04:12 int-e: In exchange you get execution time that's a function of the sortedness of your input. 17:26:25 -!- boily has quit (Quit: WeeChat 0.4.2). 17:29:20 -!- boily has joined. 17:33:17 http://www.reddit.com/r/Bitcoin/comments/23zmoz/lost_life_savings_60_btc_while_transferring_to/ 17:33:21 i love bitcoin, it's so easy 17:34:43 -!- nisstyre has joined. 17:36:03 all you have to do is buy a new laptop, install linux and a browser on it and never use it for anything but bitcoin 17:36:16 and you might not even have all your money stolen! 17:37:28 oh and you have to send them one at a time 17:49:14 so you're saying I should spend $500 on a laptop to manage $0 worth of bitcoins. 18:06:13 Sgeo: your lenses are store lenses sans newtype 18:06:48 -!- MindlessDrone has quit (Quit: MindlessDrone). 18:12:06 /lastlog Sgeo 3 18:14:39 -!- ais523 has quit. 18:31:27 -!- nisstyre has quit (Quit: bai). 18:38:56 edwardk: ah 18:39:06 What were the limitations of store lenses? 18:40:06 (Beyond at least my lenses being unable to do traversals.... if translated into a language with varargs, I think that problem goes away) 18:40:07 its just composition needing a custom category, not coercing up/down to subtypes automatically, that the args in your form aren't in the right order for what tends to get substituted/for point free writing, etc. 18:40:48 type Lens s t a b = forall f. Functor f => s -> (a -> f b) -> f t 18:40:55 type Lens s t a b = forall f. Applicative f => s -> (a -> f b) -> f t as a 18:40:59 er 18:41:07 type Traversal s t a b = forall f. Applicative f => s -> (a -> f b) -> f t 18:41:10 Point one seems to be moot without the newtype 18:41:28 well, i use these in lens secretly 18:41:59 I... don't have those subtypes, at least in the Haskell version 18:42:07 sure 18:42:13 Which makes me sad 18:42:14 just showing you can generalize this pattern 18:42:28 lens, the only Haskell library whose implementation and use are on topic in this channel :) 18:42:35 =) 18:43:20 I can figure out how to make a Getter in the Racket version, but it's kind of ugly. Not sure about Setter 18:44:01 (lambda (f) (lambda (o) ((f (somefunc o)) (lambda (useless) (error "Cannot use as a setter"))))) 18:44:22 Wait, no somefunc 18:44:38 Actually, yes somefunc 18:45:11 I should try to transliterate actual Haskell Getters/Setters 18:45:27 What language is that? 18:45:33 It looks lispy 18:45:39 Scheme + error 18:46:19 Is there a document of each kind of thing lens has + what they are 18:46:30 e.g. type Getter blah = blah 18:46:33 Or am I going source diving? 18:49:45 https://github.com/ekmett/lens/wiki/Synonyms-by-Constraints but you can also just look in Control.Lens.Type 18:50:31 Thank you 18:50:37 also i thought shachaf wrote a page summarizing 18:50:54 https://github.com/ekmett/lens/wiki/Types 18:52:18 That's so outdated. 19:11:28 [wiki] [[Language list]] http://esolangs.org/w/index.php?diff=39421&oldid=39415 * Fizzie * (-11) /* P */ If it's on the Joke language list, I guess it's not on the Language list 19:46:54 Ugh, I have some reason to believe my traversals may be wrong 19:47:32 I also have reason to believe that 19:49:36 Specifically, I'm assuming that the traversal is given an f that can take 0 or more arguments, but am returning something that is only capable of taking one argument 19:57:29 Sgeo: what do your traversals look like? 19:57:39 They were looking like 19:58:03 (lambda (f) (lambda (o) ((f (car o) (cdr o)) cons))) 19:58:36 But that, when given an f, results in a function that can only take one argument 19:58:48 :t (.) 19:58:49 (b -> c) -> (a -> b) -> a -> c 19:59:55 -!- nooodl_ has joined. 20:01:56 I can make that iinner lambda take an arbitrary amount of arguments, but I think to get them to compose with lenses, I need to make lenses do that too. It would start to get verbose 20:03:53 -!- nooodl has quit (Ping timeout: 264 seconds). 20:04:42 -!- nooodl_ has changed nick to nooodl. 20:09:13 Wait, hold on 20:11:33 Ugh, not sure if it's f's responsibility to return something that can be used like f, or the optical's (is that the right term) responsibility 20:13:23 I should know this stuff 20:15:38 -!- kronion has quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…). 20:22:25 -!- nucular has quit (Quit: Switching to phone). 20:38:47 -!- conehead has joined. 20:59:25 -!- boily has quit (Quit: ISO 7816 CHICKEN). 21:00:48 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds). 21:08:18 recommend me a lightweight linux distro that still does graphical mode and other modern stuff 21:08:55 (must run on i586) 21:09:34 What "other modern stuff" do you mean? IPv6? 21:11:32 We've moved on, the modern thing is IPv8 21:12:17 I mean stuff like linux 3.x series kernel and library versons from this decade 21:12:59 OK 21:13:08 I don't know much about Linux distro 21:14:18 -!- Phantom_Hoover has joined. 21:14:47 arch? 21:15:05 lxdm is "lightweight" i guess 21:15:15 arch runs nicely with 128MB of ram on a i586? 21:15:20 lxde rather 21:15:26 hell if i know, i live in 2014 21:16:09 i don't know why it wouldn't, though. you'd be installing most everything on your own. maybe you don't want sudo 21:16:36 I know many distros set a baseline of i686 nowadays 21:17:01 https://wiki.archlinux.org/index.php/Install_Arch_i586 well it looks nontrivial i guess 21:17:37 http://distrowatch.com/search.php?architecture=i586 openSUSE! oh boy! 21:18:12 How is it with Slackware these days? 21:18:20 I'd've sort of assumed. 21:21:29 Lots of "i486" in the file names in slackware-current/, at least. 21:22:14 http://www.slackware.com/install/sysreq.php "486 processor" "64MB RAM (1GB+ suggested)" "About 5GB+ of hard disk space for a full install" 21:22:58 haha. 21:23:40 Don't know about modern, but 14.1 has a 3.10.17 kernel and all. 21:24:35 [14.0 release notes:] "Since our last stable release, a lot has changed in the Linux and FOSS world. The kernel has moved on to major version 3 (we're using the long term supported 3.2.29 kernel for this release), X.org has released X11R7.7, and Firefox has had a whopping *11* major releases to arrive at version 15.0.1! We've brought together the best of these and other modern components and ... 21:24:41 ... worked our magic on them. You'll find new compilers (including the LLVM/clang compiler that's becoming a popular alternative to gcc), development tools, libraries, and applications throughout, all prepared with our careful and rigourous testing. If you've used Slackware before, you'll find the system feels like home. But we've also added new features such as NetworkManager for easy setup ... 21:24:47 ... and management of wired and wireless networking (or, you can still use the traditional network setup if you prefer)." 21:30:28 -!- nooodl_ has joined. 21:33:51 -!- nooodl has quit (Ping timeout: 252 seconds). 21:39:51 -!- augur has quit (Remote host closed the connection). 21:42:29 I have a slide rule marked "PICKETT ALL METAL SLIDE RULES". 21:42:38 Do you have any slide rules? 21:44:02 No. 21:46:50 What about slide guidelines? 21:47:37 No, but there was a collection of slide rules at the National Museum of Computing at Bletchley Park: https://dl.dropboxusercontent.com/u/113389132/Misc/20140426-slide.jpg 21:49:30 I have 3, 2 pocket-sized ones and one full-sized 21:50:08 make a pretty good substitute for the required calculator, at school 22:00:10 -!- nooodl_ has changed nick to nooodl. 22:13:44 I want a slide rule 22:14:59 I want a slide 22:15:35 -!- kallisti has joined. 22:15:40 Hi, kallisti 22:15:59 jswhiuhsduyhweerh 22:16:01 hi 22:21:09 -!- Slereah has quit (Ping timeout: 252 seconds). 22:22:35 -!- augur has joined. 22:22:59 -!- Slereah_ has joined. 22:25:27 -!- Patashu has joined. 22:33:13 [wiki] [[Manufactoria]] http://esolangs.org/w/index.php?diff=39422&oldid=38754 * Quincunx * (+1666) Corrected an error in the branching section, added input, some minor edits 22:39:29 I think my lenses are correct and I need to just rethink my traversals 22:40:19 -!- Patashu_ has joined. 22:40:19 -!- Patashu has quit (Disconnected by services). 22:47:25 -!- Slereah_ has quit (Ping timeout: 276 seconds). 22:47:53 -!- oerjan has joined. 22:50:27 coppro: ok thinking about this in another way: if you have a set S with infinitely many graphs, given by an oracle which will test any particular graphs you want, then there is no way for an algorithm to halt with a minimal set of forbidden graphs that is guaranteed to be correct. 22:50:53 because there will also be a graph in S that is larger than any the algorithm has tested. 22:50:57 *always be 22:51:32 *algorithm using that oracle 22:52:05 oerjan: you don't need to test graphs directly though. you can test proofs 22:52:40 well i'm just saying you cannot do it for something given by an oracle. 22:54:41 now if the oracle were an always halting algorithm and you had a proof that it always halted and that it was closed under graph minors, i'm not sure 22:55:00 @hoogle (Applicative f) => (a -> f b) -> (c -> f c) 22:55:01 Data.Foldable traverse_ :: (Foldable t, Applicative f) => (a -> f b) -> t a -> f () 22:55:01 Data.Foldable for_ :: (Foldable t, Applicative f) => t a -> (a -> f b) -> f () 22:55:01 Data.Data gfoldl :: Data a => (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> a -> c a 22:55:25 Sgeo: why two c's? 22:55:37 I'm trying to get pure from that (a -> f b) 22:56:33 Would it be terrible if I had a Racket function called pure that wasn't the actual pure, but got pure from the (a -> f b)? 22:56:44 Sgeo: \_ c -> pure c hth 22:57:04 :t \_ c -> pure c 22:57:05 Applicative f => t -> a -> f a 22:57:16 -!- nooodl_ has joined. 22:57:34 @pl \_ c -> pure c 22:57:34 const pure 22:57:53 In Racket, I wouldn't be ignoring the argument 22:58:02 This is becoming too much like simulating typeclasses 22:58:15 Sgeo: i don't think you can do that. what if the function in was \x -> [x,x] ? 22:59:20 you need it to have the same structure as a pure result to work, i.e. just one list element for [] 22:59:32 for that matter, const [] 23:00:42 in fact i am pretty sure you _cannot_ construct pure from (const azero) using only <*> for a nontrivial Alternative 23:00:53 -!- nooodl has quit (Ping timeout: 264 seconds). 23:00:55 :t azero 23:00:56 Not in scope: ‘azero’ 23:00:56 Perhaps you meant ‘mzero’ (imported from Control.Monad.Writer) 23:00:59 oops 23:01:05 @src Alternative 23:01:05 class Applicative f => Alternative f where 23:01:05 empty :: f a 23:01:05 (<|>) :: f a -> f a -> f a 23:01:12 oh it's called empty 23:01:31 :t empty 23:01:32 Alternative f => f a 23:01:46 sounds like something that will frequently clash 23:01:50 I'm confused. You can't get more than one `pure` from (a -> f b) 23:01:51 :t M.empty 23:01:52 M.Map k a 23:02:20 Sgeo: um what do you mean by (a -> f b) 23:02:29 Applicative f => (a -> f b) 23:03:07 Is an indexed writer monad the "most obvious" indexed monad? 23:03:38 Sgeo: um that's the opposite of clarifying 23:03:45 (In terms of other monads to make a indexed monad of) 23:03:46 zzo38: "moving around" in a category? 23:03:57 i mean, where do you expect to get such a function _from_? 23:04:19 oerjan: passed in to a traversal 23:04:26 copumpkin: What do you mean by that? 23:04:28 hm oh right 23:04:53 zzo38: just trying to understand why you consider it the most obvious. I'd probably put indexed state higher up there, but it seems fairly subjective 23:05:10 Sgeo: well how do you know it's not passed something like const [] ? 23:05:39 What's the problem with const []? 23:06:05 Sgeo: that there is _no_ way to construct pure from it without using pure hth 23:06:16 copumpkin: Yes it probably is subjective; I just wanted to know, opinion. The reason I considered it "most obvious" is that, writer monad is holding a value of a monoid, and join (or <*>) will compose it as a monoid. Indexed monad seems to follow like a category does, so using a category instead of a monoid; that is why. 23:06:43 I found indexed state less obvious and did not even think of it until someone told me, actually. (Now, of course, it is clear, but at the time, it wasn't) 23:06:52 (in an applicative-generic way) 23:06:55 I'm thinking at this point, in Racket, I would need to store something other than the function 23:07:05 As in, back to not just pure functions 23:07:06 :( 23:07:34 ...that doesn't work, does it 23:08:31 copumpkin: And why do you consider indexed state higher up there? 23:09:38 I dunno, just seems fairly intuitive to think of "the state type changes as you go along", and the type matches that exactly 23:09:42 Sgeo: another problem is that you might not have any a to pass into the function. 23:10:31 which means you cannot even apply it just to check the type of the result. 23:11:08 for that matter, it might not terminate on any input :P 23:11:34 all kinds of things can go wrong when you don't have inferred result types... 23:11:56 copumpkin: Yes it does, once it is mentioned; I was just saying that it doesn't seem so obvious to me before it is mentioned; indexed writer seems more obvious when you don't know much about indexed monads yet and just try to figure out, at least to me. 23:16:26 + 23:19:32 I am making more of taillib (the C version), and am considering some of your suggestions; I am adding stuff such as taillib_make_instruction and taillib_make_object and so on. Do you have further suggestions? Do you have suggestions for the Haskell interface? 23:20:13 (Unfortunately, none of this has been tested yet, although it does compile. I have, however, already found a few mistakes and corrected them.) 23:21:55 > let x = in x 23:21:57 :1:9: parse error on input ‘in’ 23:22:20 > let x = 3 of x 23:22:21 :1:11: parse error on input ‘of’ 23:24:15 Are there any C compilers that have the program die at runtime on any undefined behavior? 23:24:59 i suspect there is undefined behavior that is undecidable to detect 23:25:38 Compilers tend to exploit undefined behaviour internally during optimisation 23:26:02 C compilers that target the AS/400 "Future Systems" instruction set will cause the program to raise an exception at runtime on any undefined behavior. 23:26:13 oerjan: undecideable at runtime, though? 23:26:25 Bike: why not 23:26:41 anyway there's linty things like http://blog.regehr.org/archives/905 and valgrind i guess 23:28:44 come to think of it, that "infinite loops are undefined behavior" thing sounds like a good bet 23:29:19 That was in C++, though. 23:29:24 ah. 23:30:53 Why would an infinite loop be undefined behavior? 23:31:05 because the optimizer is allowed to assume that the code terminates 23:31:19 So that compiler writers get to optimize it away 23:31:44 An infinite loop should not be considered undefined behavior if it contains any impure code. 23:32:02 The C++ rule has a couple of qualifiers too. 23:32:05 yes, the rule was that if it didn't access I/O or memory and whatever other crap it could be assumed to terminate 23:32:15 fhttp://stackoverflow.com/questions/3592557/optimizing-away-a-while1-in-c0x 23:32:52 "makes no calls to library I/O functions, and does not access or modify volatile objects, and performs no synchronization operations (1.10) or atomic operations (Clause 29)" 23:33:43 Bike: I suppose, that is similar to what I said. 23:34:00 -!- tswett has joined. 23:35:34 "/dev/sdc: Unknown USB bridge [0x2537:0x1068 (0x100)]" aw, now smartctl no longer works. 23:40:00 Huh, it works with "-d sat". I guess I should tell that to someone. 23:43:00 -!- tswett29 has joined. 23:43:10 Topology! 23:43:29 Yeah! 23:45:00 Sgeo: I guess if you need to do anything semidecidable then C and C++ just aren't the languages for you. 23:45:43 I'm thinking of an element of the Sierpinski space. Can anyone guess what it is? 23:46:20 (Spoken as a theoretical computer scientist; the example of a daemon that runs indefinitely just isn't interesting then.) 23:47:13 tswett29: is it the open one twh 23:47:46 -!- Phantom_Hoover has quit (Quit: Leaving). 23:48:09 i'm guessing 0 23:48:09 oerjan: itt tswett29 never answers 23:48:10 * oerjan hands out coffee cups and donuts to everyone 23:49:53 shachaf: 's ok i can just ban him 23:50:06 that would be an unjust ban hth 23:50:36 how dare you, maybe i should ban you too 23:51:32 oerjan is described in http://www.literature.org/authors/carroll-lewis/the-hunting-of-the-snark/chapter-06.html 23:52:35 But the Judge said he never had summed up before; / So the Snark undertook it instead, / And summed it so well that it came to far more / Than the Witnesses ever had said! 23:52:43 good agony 23:53:27 true story