←2014-04-25 2014-04-26 2014-04-27→ ↑2014 ↑all
00:01:23 -!- drdanmaku has quit (Quit: Connection closed for inactivity).
00:02:42 <Sgeo> 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 <kmc> lasers
00:03:20 <Sgeo> Instead of f a, could just give a function that's effectively flip fmap
00:03:28 <Sgeo> I think
00:03:49 <Sgeo> There's not much else you can do with an unknown Functor
00:03:59 <kmc> tomb of the unknown functor
00:07:02 -!- Phantom_Hoover has quit (Ping timeout: 252 seconds).
00:10:57 <Taneb> One of my friends is playing a 1080p movie via sshfs to a server in France
00:12:02 <ion> I have pretty much moved from streaming with sshfs to transfering with git-annex.
00:13:10 <Sgeo> Traversals need traversable, which needs foldable and functor... I don't think I can represent opaque traversables as literally one function
00:15:43 <Sgeo> 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 <oerjan> Sgeo: um lens traversals are analogous to traversables, not based on them...
00:18:33 <oerjan> you get them by switching Functor with Applicative in the lens version
00:18:44 <Sgeo> Ah
00:18:52 <Sgeo> ...Applicative may be a bit problematic
00:19:43 <Sgeo> Or... ok, not thinking about this fully at the moment
00:21:13 <oerjan> 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 <oerjan> 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 <oerjan> and Functor corresponds to getters and ...um, something?
00:23:27 <oerjan> :t (^.)
00:23:28 <lambdabot> s -> Getting a s a -> a
00:23:49 <oerjan> um sorry, *setters
00:24:01 <Taneb> oerjan, Getter needs (Functor f, Contravariant f)
00:24:32 <oerjan> oh
00:25:41 <oerjan> Getter might correspond to Pointed as a class, maybe
00:28:57 <Taneb> Surely Copointed?
00:29:25 <oerjan> 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 <oerjan> wait what is Copointed
00:32:20 <oerjan> Foldable corresponds to folds and something
00:32:49 <elliott> Foldable is Functor + Monoid a => f a -> a
00:33:57 <oerjan> that's not the part i'm interested in
00:35:09 <oerjan> hm Contravariant and Applicative
00:35:20 * oerjan thinks his brain is running out of steam again
00:35:42 <oerjan> also i didn't finish the logs
00:37:28 <Taneb> oerjan, Copointed is f a -> a
00:38:02 <oerjan> <augur_> kmc: it involves categorical logic <-- have you reinvented cartesian closed categories
00:38:22 <oerjan> Taneb: hm right
00:38:36 <Taneb> I think it's Traversable : Traversal :: Copointed : Getter
00:39:03 <Taneb> Every Copointed is trivially Foldable
00:39:07 <oerjan> yeah sounds reasonable
00:40:52 <shachaf> Functor+Contravariant means phantom
00:41:08 <oerjan> shachaf: aka Const
00:41:08 <shachaf> You could make class Phantom f where coerce :: f a -> f b (we used to have that)
00:41:31 <shachaf> Const r or something isomorphic to it, sure.
00:41:54 <oerjan> ok Setter uses a complicated brew of contexts that enforce the functor being Identity.
00:41:57 <shachaf> Anyway, we just use Functor+Contravariant to express that using non-lens classes.
00:42:01 <shachaf> Right.
00:48:52 <oerjan> 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 <oerjan> <coppro> 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 <shachaf> taintedDot is still a thing?
00:56:23 <shachaf> whoa
00:56:49 <shachaf> i'm sorry :'(
00:57:25 <oerjan> i'm wondering why they're bothering with all that machinery for something that's supposed to be Identity
00:58:10 <shachaf> the trouble is that newtype Id a = Id { runId :: a }, (Id x) is operationally the same as x
00:58:30 <shachaf> and Id is operationally the same as, uh, id
00:58:49 <shachaf> but (Id . f) is operationally the same as (\x -> Id (f x)) = (\x -> id (f x)) = (\x -> f x)
00:58:58 <shachaf> which isn't the same as f (when f is _|_)
01:00:13 <oerjan> ok that explains the seqs i guess but not why they bother to list all the superclasses
01:00:59 <oerjan> and even to _use_ them in the implementation
01:01:31 <shachaf> ahem
01:01:39 <shachaf> have a look at a thing called Conjoined
01:02:28 <shachaf> are you talking about the default implementations?
01:02:54 <shachaf> 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 <oerjan> oh wait it's actually just Applicative which is used
01:06:16 -!- edwardk has joined.
01:08:37 <Sgeo> 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 <Sgeo> (And currently guessing as to whether that several arguments thing would work, but it makes a kind of intuitive sense)
01:10:25 <Sgeo> Harder to have one that you add to later though
01:12:20 <oerjan> augur_: oh wait ski not lambda calculus
01:13:26 <oerjan> Sgeo: maybe you can make that Traversal1 thing i found just earlier
01:13:59 <Sgeo> 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 <oerjan> > "aha"
02:00:09 <lambdabot> can't find file: L.hs
02:00:16 <oerjan> *cough*
02:00:18 <oerjan> > "aha"
02:00:19 <lambdabot> "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 <oerjan> <Bike> "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 <Sgeo> We got idris-ircslave to stop using > ?
02:13:49 <oerjan> amazing, isn't it
02:15:09 -!- rodgort has joined.
02:15:13 -!- zzo38 has joined.
02:15:34 <zzo38> 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 <Sgeo> Where's that thing explaining how to make a lens from scratch?
02:23:34 <edwardk> which one?
02:23:46 <edwardk> http://ftp.newartisans.com/pub/Lenses.mp4 is simon's talk
02:23:55 <Sgeo> Was hoping for a page
02:24:00 <edwardk> mth.io/talks/lens-from-the-ground-up/ is mark hibberd's talk
02:24:29 <edwardk> https://github.com/ekmett/lens/wiki/Derivation is my original page in the wiki starting from motivation to theory
02:24:48 <Sgeo> Thanks
02:25:55 <edwardk> zzo38: that sounds terrible. go for it ;)
02:26:16 -!- rodgort has joined.
02:26:18 <Sgeo> Instead of
02:26:31 <Sgeo> Functor f => (b -> f b) -> a -> f a
02:26:40 <Sgeo> I'm thinking that I could have something like
02:27:40 <Sgeo> ...
02:27:54 <Sgeo> :t flip fmap
02:27:55 <lambdabot> Functor f => f a -> (a -> b) -> f b
02:29:15 <coppro> oerjan: yeah, I realized in retrospect it was a dumb question
02:29:58 <coppro> 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 <coppro> "
02:30:29 <oerjan> i'd expect that to be true
02:31:13 <Sgeo> 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 <zzo38> edwardk: Are you sure it is terrible?
02:31:34 <edwardk> sgeo: the problem with that form is it doesn't compose as well
02:31:47 <coppro> oerjan: but we can enumerate all of the possible sets of forbidden minors
02:32:33 <oerjan> coppro: yes, but we cannot check whether any particular of those sets gives the original set of graphs, i think
02:32:33 <Sgeo> Are there likely to be significant limitations if I keep not going the van Laarhoven route in a dynamically typed language?
02:32:46 <Sgeo> My code is so verbose :/
02:33:02 <Sgeo> Also, it would be fun to show it could be done
02:33:21 <Bike> > map (zip [1, 2, 3]) $ [4, 5, 6]
02:33:23 <lambdabot> No instance for (GHC.Show.Show b0)
02:33:23 <lambdabot> arising from a use of ‘M245150698743640559410341.show_M2451506987436405594...
02:33:23 <lambdabot> The type variable ‘b0’ is ambiguous
02:33:23 <lambdabot> Note: there are several potential instances:
02:33:23 <lambdabot> instance [safe] GHC.Show.Show
02:33:31 <Bike> why
02:33:56 <Taneb> > map (zip [1,2,3]) $ [[4,5,6]]
02:33:57 <lambdabot> [[(1,4),(2,5),(3,6)]]
02:34:06 <elliott> Bike: zip [1, 2, 3] 4 doesn't make much sense
02:34:07 <Sgeo> > map (zip [1, 2, 3 :: Int]) $ [4,5,6]
02:34:08 <lambdabot> No instance for (GHC.Show.Show b0)
02:34:08 <lambdabot> arising from a use of ‘M814034439476907821810375.show_M8140344394769078218...
02:34:08 <lambdabot> The type variable ‘b0’ is ambiguous
02:34:08 <lambdabot> Note: there are several potential instances:
02:34:08 <lambdabot> instance [safe] GHC.Show.Show
02:34:18 <oerjan> coppro: although this is really about _descriptions_ of sets of graphs, not sets of graphs themselves
02:34:22 <elliott> > map (zip [1,2,3]) [4::Int,5,6]
02:34:24 <lambdabot> Couldn't match expected type ‘[b]’ with actual type ‘GHC.Types.Int’
02:34:44 <coppro> oerjan: true
02:35:01 <Sgeo> ... were you able to determine beforehand without GHCi or similar that that would be a clearer error message somehow?
02:35:10 <oerjan> coppro: oh wait am i thinking about this wrongly
02:35:45 <Bike> :t zip
02:35:46 <lambdabot> [a] -> [b] -> [(a, b)]
02:35:47 <coppro> oerjan: I don't think so. We can describe any minor-closed set of graphs by its forbidden minors
02:35:51 <Bike> oh right.
02:35:52 <oerjan> hm no
02:36:03 <oerjan> (that wasn't a response)
02:36:21 <coppro> 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 <oerjan> seems like you just need to encode a gödel sentence or something
02:40:46 <oerjan> oh well
02:43:20 <coppro> 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 <coppro> oh wait, I guess you could, nevermind
02:43:56 <coppro> hmm... better. membership in the class needs to be decideable
02:44:33 <oerjan> 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 <Sgeo> All I can think is maybe it's an infinitely big type trying to write it out like that
03:09:13 <coppro> http://twanvl.nl/blog/haskell/overloading-functional-references ?
03:09:35 <coppro> you were asking about lenses, these are twan's original posts
03:10:46 <Sgeo> Is it possible to write a function that gives infinitely many arguments in Haskell?
03:10:48 <Sgeo> *takes
03:10:52 <shachaf> id
03:11:55 <Sgeo> Hmm, even if the type involved is opaque to my lenses, it can't be opaque to the driver
03:13:39 <Sgeo> But it doesn't need to be just a function, it itself shouldn't be getting composed, right?
03:13:50 <Bike> wouldn't const id or however you spell it take infinitely many arguments
03:13:52 <Sgeo> Only the lenses that treat it as opaque get composed
03:14:10 <Sgeo> > const id 3 4
03:14:11 <lambdabot> 4
03:14:17 <Sgeo> > const id 3 4 5
03:14:18 <lambdabot> Could not deduce (GHC.Num.Num (a0 -> t))
03:14:18 <lambdabot> arising from the ambiguity check for ‘e_1345’
03:14:18 <lambdabot> from the context (GHC.Num.Num (a -> t), GHC.Num.Num a)
03:14:18 <lambdabot> bound by the inferred type for ‘e_1345’:
03:14:18 <lambdabot> (GHC.Num.Num (a -> t), GHC.Num.Num a) => t
03:14:23 <Sgeo> ...dangit numbers
03:14:26 <Bike> uh?
03:14:29 <Sgeo> > const id '3' '4' '5'
03:14:31 <lambdabot> Couldn't match expected type ‘GHC.Types.Char -> t’
03:14:31 <lambdabot> with actual type ‘GHC.Types.Char’
03:14:33 <Sgeo> :t const id
03:14:34 <lambdabot> b -> a -> a
03:14:47 <Bike> no, wait, i'm thinking wrong, yeah.
03:15:14 <Bike> i just want a function that ignores its argument and returns itself.
03:15:29 <Sgeo> Hey, I've finally learned the difference between expected and actual
03:15:31 <Taneb> :t let f x = f
03:15:32 <lambdabot> <no location info>: not an expression: ‘let f x = f’
03:15:38 <Taneb> :t let f x = f in f
03:15:39 <lambdabot> Occurs check: cannot construct the infinite type: t3 ~ t2 -> t3
03:15:39 <lambdabot> Relevant bindings include
03:15:39 <lambdabot> x :: t2 (bound at <interactive>:1:7)
03:15:46 <Bike> boring!
03:16:13 <Bike> > fix id
03:16:17 <Sgeo> Conceptually, an infinite type can be well-typed even if Haskell doesn't understand it, right?
03:16:17 <lambdabot> mueval-core: Time limit exceeded
03:16:28 <Bike> > undefined 3 4 5 6 7
03:16:30 <lambdabot> *Exception: Prelude.undefined
03:16:33 <Sgeo> fix kills an argument
03:16:35 <Bike> owned!!!
03:21:12 -!- huh has joined.
03:21:27 <shachaf> @let import Data.NumInstances
03:21:28 <lambdabot> Defined.
03:21:33 <shachaf> > 1 2 3 4 5
03:21:34 <lambdabot> 1
03:23:43 <oerjan> note that if a value has the type a = b -> a then you can never get any information out of it
03:24:44 <oerjan> @src Mu
03:24:44 <lambdabot> newtype Mu f = In { out :: f (Mu f) }
03:25:17 <shachaf> that should be called Fix :'(
03:25:50 <oerjan> :t let f x = out f in f
03:25:51 <lambdabot> Couldn't match expected type ‘Mu f1’
03:25:51 <lambdabot> with actual type ‘t1 -> f1 (Mu f1)’
03:25:51 <lambdabot> Relevant bindings include
03:25:56 <oerjan> :t let f x = In f in f
03:25:57 <lambdabot> t -> Mu ((->) t)
03:26:15 <zzo38> 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 <shachaf> @let newtype Fix f = Fix { runFix :: f (Fix f) }
03:26:33 <lambdabot> Defined.
03:28:05 <oerjan> :t coerce
03:28:06 <lambdabot> (Contravariant f, Functor f) => f a -> f b
03:28:23 <oerjan> NOT THE ONE I WAS LOOKING FOR
03:28:53 <shachaf> coerjan
03:29:40 <ion> cœrce
03:30:46 <int-e> "t GHC.Prim.coerce
03:30:49 <int-e> :t GHC.Prim.coerce
03:30:49 <lambdabot> GHC.Types.Coercible a b => a -> b
03:30:57 <oerjan> aha
03:31:08 <int-e> (exported via GHC.Exts)
03:32:59 <oerjan> @let f x = GHC.Prim.coerce (In f)
03:32:59 <lambdabot> .L.hs:147:7: Not in scope: ‘GHC.Prim.coerce’
03:33:00 <lambdabot>
03:33:00 <lambdabot> .L.hs:147:27:
03:33:00 <lambdabot> Ambiguous occurrence ‘f’
03:33:00 <lambdabot> It could refer to either ‘L.f’, defined at .L.hs:147:1
03:33:08 <oerjan> darn
03:33:23 <ion> @let a = GHC.Exts.coerce 42
03:33:24 <lambdabot> .L.hs:144:5: Not in scope: ‘GHC.Exts.coerce’
03:33:42 <int-e> GHC.Exts is not very safe :P
03:33:54 <oerjan> coerce is meant to be safe :(
03:35:25 <oerjan> which i guess means that's the wrong module to export that from...
03:35:25 <Sgeo> oerjan: I can if the language allows functions to be more than merely functions
03:35:44 <oerjan> Sgeo: oh right you're not working in haskell
03:36:23 <coppro> Sgeo: you can't make a truly infinite function type in Haskell. You can, of course, fake it.
03:36:39 <int-e> @run let a = (); a # b = 0 in let a# b = 1 in a# ()
03:36:40 <lambdabot> 1
03:36:58 <int-e> hmm. no.
03:37:04 <int-e> @run let a = (); a# b = 0 in let a # b = 1 in a# ()
03:37:06 <lambdabot> 0
03:37:29 <int-e> That's a proper test for MagicHash.
03:37:58 <int-e> @run 0#
03:38:00 <lambdabot> Kind incompatibility when matching types:
03:38:00 <lambdabot> a0 :: *
03:38:00 <lambdabot> GHC.Prim.Int# :: #
03:38:16 <ion> @run I# 0#
03:38:17 <lambdabot> Not in scope: data constructor ‘I#’
03:38:17 <lambdabot> Perhaps you meant ‘In’ (imported from Lambdabot.Plugin.Haskell.Eval.Trusted)
03:39:27 <int-e> And I guess that's harmless since you can't operate on such unboxed values anyway.
03:39:45 <int-e> (with the modules that lambdabot imports)
03:39:47 <Sgeo> So prety
03:39:51 <Sgeo> (let f () f)
03:42:00 <oerjan> @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 <lambdabot> Defined.
03:42:31 <oerjan> > countArgs 0 "hi" False [Nothing] :: Int
03:42:32 <lambdabot> 3
03:43:07 <oerjan> imagine working on the first try
03:56:04 -!- tromp has quit (Remote host closed the connection).
03:56:36 <Sgeo> 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 <Sgeo> That... seems almost related to what the functor allows for anyway
03:59:46 <kmc> `coins
03:59:47 <HackEgo> 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 <zzo38> 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 <elliott> (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 <Sgeo> yes
04:00:11 <Sgeo> thanks
04:00:52 <Sgeo> Which is iso to an infinitely large type, I guess
04:01:00 <zzo38> elliott: Isn't that the right Yoneda lemma though?
04:01:01 <elliott> ?
04:01:02 -!- tromp has quit (Ping timeout: 255 seconds).
04:01:02 -!- Sorella has quit (Quit: It is tiem!).
04:01:15 <elliott> it's iso to the intersection of ((a -> B) -> f B) for all concrete B, sure.
04:01:29 <elliott> but that doesn't seem like a terribly useful thing here.
04:02:15 <zzo38> There is also a left Yoneda lemma (is that useful here at all?)
04:13:06 <Bike> 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 <oerjan> looks like a kind of BASIC to me
04:19:22 <zzo38> Yes, something like BASIC
04:20:20 <zzo38> But unusual; it is using ! for comments
04:20:37 <oerjan> yeah i noticed that
04:21:00 <oerjan> but "PRINT USING" is very basic
04:21:38 <zzo38> Yes, I know, I can write programs in BASIC.
04:22:16 <Sgeo> I can write a program in BASIC. Specifically, the empty program.
04:23:12 <zzo38> Yes, that will work and is valid
04:23:50 <Bike> basic has that #-y print string thing?
04:24:24 <zzo38> If you put #1 or whatever after PRINT it mean, to send it to the file, instead of to the screen.
04:24:43 <zzo38> In a PRINT USING, the # is a placeholder for a digit.
04:25:02 <zzo38> Type suffix in some version of BASIC can be # for double precision floating points.
04:25:04 <Bike> ah, i see.
04:25:29 <Bike> "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 <Sgeo> I think Haskell is about to teach me MVC
04:34:21 -!- Patashu_ has changed nick to Patashu.
04:47:44 <zzo38> What is the specification of the qsort function in C about the exact pointing of the arguments to the comparison function?
04:48:07 <Bike> what
04:48:44 <zzo38> 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 <int-e> zzo38: it doesn't say. you can't rely on the pointer values at all, just on the contents.
04:52:51 <pikhq> int-e: Though there's no sane way that qsort can do *any* dynamic allocation at all.
04:53:02 <pikhq> (qsort cannot fail)
04:55:06 <pikhq> I suppose that doesn't mean that, say, the arguments to the comparator can't point into buffers on the stack.
04:55:18 <pikhq> Just that there's only so crazy you can go.
04:55:27 <Sgeo> 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 <int-e> Huh. Actually, 7.20.5 (C99) says that the pointers being passed are supposed to lie inside the array being sorted.
04:55:58 <pikhq> int-e: Ah, huh.
04:56:07 <Sgeo> Not everything that uses malloc has to have a non-0 chance of failing, I think
04:56:10 <pikhq> Sgeo: I guess that's *valid*, if utterly moronic.
04:56:30 <huh> int-e: pikhq ???
04:57:17 <Sgeo> Awesom, I can tab-complete huh now. Although I ended up trying to tab-complete ttab-coomplet.e
04:57:36 <pikhq> Particularly with qsort. In-place sorting isn't exactly hard.
05:00:58 -!- huh has quit (Quit: Segmentation fault).
05:02:31 <int-e> pikhq: hmm. but quicksort is the only viable option that remains.
05:03:51 <pikhq> No. Smoothsort, heapsort, in-place merge sort.
05:04:27 <zzo38> 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 <pikhq> zzo38: That's UB. :)
05:05:05 <int-e> heapsort is terrible for caches.
05:05:58 <pikhq> And quicksort has pathological behavior on certain inputs.
05:06:27 <int-e> 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 <pikhq> That's... not what glibc does.
05:06:59 <Sgeo> pikhq: it needs O(log n) stack space according to Wikipedia
05:07:14 <pikhq> Sgeo: Yes. Or about two ints.
05:07:34 <pikhq> Sgeo: Remember, log_2 2^64 is is 64.
05:07:52 <Sgeo> Actually... huh. How does that work, exactly, If it's not known until runtime how much stack space.... oh, hmm....
05:08:04 <pikhq> ... The maximum is well-known.
05:08:30 <Sgeo> Maximum on modern computers
05:08:31 <int-e> pikhq: what do you mean, "that's not what glibc does"?
05:08:53 <pikhq> int-e: I mean that that's not the algorithm used in stdlib/qsort.c.
05:09:15 <int-e> 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 <Sgeo> glibc, the new openssl?
05:10:25 <pikhq> That is... utterly, positively moronic, BTW.
05:10:52 <pikhq> So, on out-of-memory it goes pathological.
05:11:17 <pikhq> Rather than, y'know, just using smoothsort.
05:11:26 <Sgeo> There's no Identity Applicative, is there?
05:11:33 <Sgeo> What would pure... oh. I'm dumb.
05:11:44 <pikhq> Sgeo: Pretty much. glibc is positively insane.
05:11:54 <Sgeo> I managed to forget that pure takes an argument.
05:12:01 <Bike> wouldn't it be the old ssl
05:12:16 <Bike> i don't know if return to libc counts as a heartbleed
05:18:02 <oerjan> libc broke his heart
05:18:03 <kmc> employees must wash hands before returning to libc
05:33:02 <coppro> oerjan: turns out the answer is you can't
05:33:36 <oerjan> can't which way?
05:34:13 <coppro> actually, wait, hmm... not sure the reasoning holds
05:34:52 <coppro> 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 <oerjan> well sure
05:36:23 <oerjan> in fact you only needed to test the members of the candidate sets
05:37:13 <oerjan> the problem is when you cannot prove there is a much larger forbidden graph than the ones you have tested
05:37:18 <coppro> yeah
05:38:00 <oerjan> *there isn't
05:38:40 <coppro> ah here we are
05:38:43 <ski> 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 <Sgeo> (lambda (f) (lambda (o) ((f (car o)) (lambda (mc) (cons mc (cdr o))))))
05:39:28 <Sgeo> ^^not tested
05:39:33 <coppro> 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 <oerjan> i used ocaml rectypes for my unlambda implementation
05:39:44 <coppro> so it relies again on the GMt
05:39:47 <Bike> well you can obviously do it in scheme
05:40:46 * Sgeo wonders if that's a bit verbose
05:40:55 <oerjan> 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 <Sgeo> Compared to just using a modifier on the targetted car
05:41:05 <HackEgo> [wiki] [[User:Quincunx]] http://esolangs.org/w/index.php?diff=39405&oldid=39086 * Quincunx * (+144) /* Circuit Diagram 10 */
05:43:02 <oerjan> coppro: um your line is too ambiguous for me to interpret
05:43:28 <Sgeo> 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 <Sgeo> s/too/to/
05:43:56 <oerjan> in fact i have no idea if "set of sets" is a typo
05:44:15 <Sgeo> Somehow this is making the idea behind van Laarhoven lenses a bit more intuitive to me
05:44:19 <Sgeo> Is that weird?
05:44:42 <Sgeo> For getting, (f (car o)) is a function that just ignores its argument
05:44:52 <coppro> 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 <coppro> -forbidden
05:46:05 <coppro> 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 <oerjan> should "in members of F" be "in members of S"
05:46:53 <coppro> no.
05:46:57 <coppro> oh wait, yes
05:47:21 <int-e> 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 <Sgeo> Should I be sad that this is almost certainly not going to be R5RS Scheme?
05:47:45 <coppro> the tl;dr is that the Graph Minors Theorem is trolling us even more
05:47:57 <coppro> because it tells us that not only is the set of minors finite, there exists a proof of this fact.
05:48:12 <coppro> err
05:48:16 <coppro> there exists a proof of *which* set it is
05:48:39 <oerjan> i am not convinced
05:48:43 <Bike> Sgeo: what the hell are you trying to do even
05:48:44 <oerjan> but i am also tired
05:49:02 <Sgeo> Port something close to van Laarhoven lenses and miscelleny to Racket
05:49:13 <Bike> well nevermind me then
05:49:38 -!- oerjan has quit (Quit: Too tired, in fact).
05:50:09 <ski> int-e : indeed .. but that's kinda obvious
05:50:10 <Sgeo> It almost makes sense what f being an applicative maker instead of just a functor maker would do
05:50:20 <ski> (and not quite what the OP asked for)
05:50:42 <ski> perhaps you can do some classy trick as well
05:50:56 <Sgeo> And what pure looks like
05:51:04 <Sgeo> Ok, besides Functor and Applicative, what else do I want?
05:51:09 <Sgeo> What are prisms actually?
05:51:40 <Bike> When you save the macro it becomes a file on the computer hard disk.
05:52:08 <Sgeo> Bike: so few people have HDs though, aren't they more likely to be saving to floppy?
05:52:16 <Bike> good point
05:52:37 <Sgeo> (I had a book on DOS when I was a kid)
05:52:47 <Sgeo> And a laptop that ran DOS
05:53:10 <Sgeo> I think the battery died
05:53:59 <int-e> 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 <Sgeo> I believe this is what both looks like
06:02:28 <Sgeo> (lambda (f) (lambda (o) ((f (car o) (cdr o)) cons)))
06:02:42 <ski> Bike : save macro where ?
06:02:53 <Bike> onto the computer hard disk
06:03:06 <ski> i mean, in which system ?
06:06:02 <Bike> oh some chromotagraphy system
06:10:03 <ski> what kind of macro ?
06:10:11 <ski> an ui macro ?
06:11:16 <Bike> more like a shell script.
06:12:07 <Bike> 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 <ski> in an OS ?
06:12:19 <Bike> for this chromatography machine.
06:16:14 <ski> in an OS made for that chromatography machine ?
06:17:44 <Bike> 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 <kmc> fungus
06:36:24 <kmc> fungots fall on fungot falls
06:36:24 <fungot> 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 <kmc> fungot: tmi
06:36:46 <fungot> kmc:, so i'd make stuff up to. why, this is for you guys are a lot
06:37:27 <kmc> ^style
06:37:28 <fungot> 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 <kmc> fungot: stop making sense
06:37:36 <fungot> kmc: use the ' ' ' delete a value of type " airbus is a big fan of avril....but this song " there
06:38:30 <kmc> ^style qwantz
06:38:30 <fungot> Selected style: qwantz (Dinosaur Comics transcriptions 2003-2011)
06:38:32 <kmc> fungot: oi
06:38:33 <fungot> 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 <Sgeo> I made an... odd mistake
06:44:08 <Bike> are you dead
06:52:58 <Sgeo> I can use pure functions.
06:53:06 <Sgeo> At least for running lenses
06:53:16 <Sgeo> > (\f (o:os) -> f o (\mc -> mc : os)) const [1,2,3,4,5]
06:53:17 <lambdabot> 1
06:53:22 <Sgeo> > (\f (o:os) -> f o (\mc -> mc : os)) (\o recon -> recon (o + 1)) [1,2,3,4,5]
06:53:23 <lambdabot> [2,2,3,4,5]
06:57:41 <Sgeo> I do wish that modifier didn't have to be baked into the runner
06:57:51 <Sgeo> :t (\f (o:os) -> f o (\mc -> mc : os))
06:57:51 <lambdabot> (a -> (a -> [a]) -> t) -> [a] -> t
06:58:28 <Sgeo> 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 <Sgeo> > (\f (o:os) -> f o (\mc -> mc : os)) (\o recon mod -> recon (mod o)) [1,2,3,4,5] (+1)
07:00:47 <lambdabot> [2,2,3,4,5]
07:01:09 <Sgeo> @pl (\o recon mod -> recon (mod o)
07:01:09 <lambdabot> (line 1, column 31):
07:01:09 <lambdabot> unexpected end of input
07:01:09 <lambdabot> expecting variable, "(", operator or ")"
07:01:15 <Sgeo> @pl (\o recon mod -> recon (mod o))
07:01:15 <lambdabot> flip (.) . flip id
07:01:25 * Sgeo runs far, far away
07:01:39 <Bike> bye
07:13:22 <mroman> @pf (.).(.)
07:13:22 <lambdabot> Maybe you meant: pl bf
07:13:28 <mroman> No, certainly not.
07:13:39 <mroman> @pl bf
07:13:39 <lambdabot> bf
07:13:40 <Sgeo> > let lensHead = (\f (o:os) -> f o (\mc -> mc : os)) in (lensHead.lensHead) const [1,2,3,4,5]
07:13:42 <lambdabot> Occurs check: cannot construct the infinite type:
07:13:42 <lambdabot> a0 ~ ([a0] -> [[a0]]) -> t
07:13:42 <lambdabot> Expected type: a0 -> (a0 -> [a0]) -> ([a0] -> [[a0]]) -> t
07:13:42 <lambdabot> Actual type: a0 -> (a0 -> [a0]) -> a0
07:13:50 <Sgeo> darn
07:13:56 <Sgeo> And I thought I was onto something
07:14:18 <Sgeo> ....like being an idiot... of course that wouldn't typecheck
07:15:18 <mroman> It's only natural.
07:15:28 <Sgeo> > let lensFst = (\f (a,b) -> f a (,b)) in (lensFst.lensFst) const ((1,2),3)
07:15:29 <lambdabot> 1
07:15:49 <mroman> infinite type error is the error I encounter most often too ;)
07:16:06 <Sgeo> I wasn't expecting any of these to typecheck at all
07:16:14 <Sgeo> I was expecting they'd only work in Racket or something
07:17:08 <Sgeo> There's still the whole lack of varargs thing
07:17:21 <mroman> 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 <Sgeo> 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 <Sgeo> (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 <kmc> ferns have swimming sperm? wtf
08:00:48 -!- shikhin has quit (Ping timeout: 240 seconds).
08:02:22 <Vorpal> <mroman> 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 <Vorpal> Or did you mean 2% for the last one
08:02:57 <Vorpal> (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 <Sgeo> Hmm. Are my lenses any distinct from the store model?
08:20:40 <Sgeo> I guess I don't actually understand the store model
08:22:26 <Sgeo> 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 <HackEgo> [wiki] [[Hollang]] http://esolangs.org/w/index.php?diff=39406&oldid=39367 * Zerk * (+888)
11:05:04 <ais523> ooh, HackEgo reports changes to the wiki now
11:05:14 <ais523> weird that it's that bot doing it, it doesn't fit in that well with HackEgo's normal behviour
11:07:16 <Jafet> We should create a new bot to announce them, then
11:18:05 <Jafet> http://www.asrock.com/microsite/mining/index.en.html
11:20:47 <fizzie> ais523: It was the path of least resistance.
11:20:54 <ais523> fair enough
11:21:34 <fizzie> (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 <HackEgo> [wiki] [[Poop]] http://esolangs.org/w/index.php?diff=39407&oldid=39403 * Creeparoo * (+36)
13:40:24 <HackEgo> [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 <HackEgo> [wiki] [[Poop]] M http://esolangs.org/w/index.php?diff=39409&oldid=39408 * Creeparoo * (-47)
13:44:44 <HackEgo> [wiki] [[Poop]] http://esolangs.org/w/index.php?diff=39410&oldid=39409 * Creeparoo * (+25)
13:45:59 <HackEgo> [wiki] [[Poop]] http://esolangs.org/w/index.php?diff=39411&oldid=39410 * Creeparoo * (+26)
13:46:52 <HackEgo> [wiki] [[Poop]] http://esolangs.org/w/index.php?diff=39412&oldid=39411 * Creeparoo * (-25)
13:47:58 <HackEgo> [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 <fizzie> 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 <HackEgo> [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 <HackEgo> [wiki] [[Language list]] M http://esolangs.org/w/index.php?diff=39415&oldid=39340 * Creeparoo * (+11)
14:31:19 <HackEgo> [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 <nortti> I like how the "Poop" text shows up brown in fbcon
14:34:04 <olsner> it's brown here too, but all page titles have the same brown so
14:34:59 <nortti> yeah, just amusing coincidence
14:36:38 <ais523> you're IRCing in fbcon?
14:36:56 <ais523> how many fbcons do you have open right now (as in, running programs other than login/getty)?
14:37:06 <nortti> 5
14:37:19 <nortti> why?
14:38:29 <ais523> most people use multitasking window managers
14:38:42 <ais523> so I was curious what life was like for someone who didn't
14:39:01 <nortti> 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 <nortti> it is actally not that bad unless you like to watch a lot of videos or play games
14:39:48 <nortti> or use heavy webapps
14:39:49 <ais523> aalib can solve the first problem
14:40:12 <nortti> oh, I'm using fbdev2 driver for mplayer when I watch stuff
14:40:14 <ais523> and some games can run in framebuffer mode (thus on an fbcon console, although fbcon itself isn't doing the graphics)
14:40:24 <nortti> more refering to my 600MHz CPU
14:40:29 <ais523> ah right
14:41:03 <nortti> funny going from 2.2GHz core 2 duo to 600MHz p3 without much trouble
14:41:12 <ais523> I've played Battle for Wesnoth in framebuffer mode, although it has graphical glitches with transparency
14:41:39 <nortti> also, I can get sdl to display to fb
14:41:52 <nortti> so anything that uses sdl backend should run"
14:41:56 <nortti> -"
14:42:06 <fizzie> I used to use a framebuffer console for just about everything, too, though that was perhaps a decade ago.
14:42:14 <fizzie> "mplayer -vo mga" and so on.
14:42:25 <nortti> mga?
14:42:33 <fizzie> Matrox-specific video driver.
14:42:40 -!- augur has quit (Remote host closed the connection).
14:42:44 <fizzie> I had a Matrox Mystique 220 card, I think.
14:42:45 <ais523> I should try NetHack 4 tiles on framebuffer some time
14:42:52 <nortti> ic séo
14:43:07 -!- augur has joined.
14:43:13 <fizzie> Oh, and later I had a v. fancy AGP card, I think it was the G400.
14:43:48 <fizzie> The "-vo mga" worked fine in conjunction with matroxfb, used a hardware video overlay.
14:46:10 <fizzie> 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 <fizzie> 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 <HackEgo> [wiki] [[Poop]] http://esolangs.org/w/index.php?diff=39417&oldid=39416 * Creeparoo * (+13)
16:31:26 -!- kronion has joined.
16:31:58 <HackEgo> [wiki] [[Poop]] http://esolangs.org/w/index.php?diff=39418&oldid=39417 * Creeparoo * (+20)
16:34:35 <HackEgo> [wiki] [[Poop]] http://esolangs.org/w/index.php?diff=39419&oldid=39418 * Creeparoo * (+165)
16:36:39 <HackEgo> [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 <pikhq> int-e: Your benchmark sounds bad. :P
17:03:52 <pikhq> int-e: Is is somewhat complicated though, yes.
17:04:12 <pikhq> 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 <Phantom_Hoover> http://www.reddit.com/r/Bitcoin/comments/23zmoz/lost_life_savings_60_btc_while_transferring_to/
17:33:21 <Phantom_Hoover> i love bitcoin, it's so easy
17:34:43 -!- nisstyre has joined.
17:36:03 <Phantom_Hoover> 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 <Phantom_Hoover> and you might not even have all your money stolen!
17:37:28 <Phantom_Hoover> oh and you have to send them one at a time
17:49:14 <int-e> so you're saying I should spend $500 on a laptop to manage $0 worth of bitcoins.
18:06:13 <edwardk> Sgeo: your lenses are store lenses sans newtype
18:06:48 -!- MindlessDrone has quit (Quit: MindlessDrone).
18:12:06 <int-e> /lastlog Sgeo 3
18:14:39 -!- ais523 has quit.
18:31:27 -!- nisstyre has quit (Quit: bai).
18:38:56 <Sgeo> edwardk: ah
18:39:06 <Sgeo> What were the limitations of store lenses?
18:40:06 <Sgeo> (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 <edwardk> 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 <edwardk> type Lens s t a b = forall f. Functor f => s -> (a -> f b) -> f t
18:40:55 <edwardk> type Lens s t a b = forall f. Applicative f => s -> (a -> f b) -> f t as a
18:40:59 <edwardk> er
18:41:07 <edwardk> type Traversal s t a b = forall f. Applicative f => s -> (a -> f b) -> f t
18:41:10 <Sgeo> Point one seems to be moot without the newtype
18:41:28 <edwardk> well, i use these in lens secretly
18:41:59 <Sgeo> I... don't have those subtypes, at least in the Haskell version
18:42:07 <edwardk> sure
18:42:13 <Sgeo> Which makes me sad
18:42:14 <edwardk> just showing you can generalize this pattern
18:42:28 <Taneb> lens, the only Haskell library whose implementation and use are on topic in this channel :)
18:42:35 <edwardk> =)
18:43:20 <Sgeo> 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 <Sgeo> (lambda (f) (lambda (o) ((f (somefunc o)) (lambda (useless) (error "Cannot use as a setter")))))
18:44:22 <Sgeo> Wait, no somefunc
18:44:38 <Sgeo> Actually, yes somefunc
18:45:11 <Sgeo> I should try to transliterate actual Haskell Getters/Setters
18:45:27 <mroman> What language is that?
18:45:33 <mroman> It looks lispy
18:45:39 <Sgeo> Scheme + error
18:46:19 <Sgeo> Is there a document of each kind of thing lens has + what they are
18:46:30 <Sgeo> e.g. type Getter blah = blah
18:46:33 <Sgeo> Or am I going source diving?
18:49:45 <edwardk> https://github.com/ekmett/lens/wiki/Synonyms-by-Constraints but you can also just look in Control.Lens.Type
18:50:31 <Sgeo> Thank you
18:50:37 <edwardk> also i thought shachaf wrote a page summarizing
18:50:54 <edwardk> https://github.com/ekmett/lens/wiki/Types
18:52:18 <shachaf> That's so outdated.
19:11:28 <HackEgo> [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 <Sgeo> Ugh, I have some reason to believe my traversals may be wrong
19:47:32 <coppro> I also have reason to believe that
19:49:36 <Sgeo> 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 <edwardk> Sgeo: what do your traversals look like?
19:57:39 <Sgeo> They were looking like
19:58:03 <Sgeo> (lambda (f) (lambda (o) ((f (car o) (cdr o)) cons)))
19:58:36 <Sgeo> But that, when given an f, results in a function that can only take one argument
19:58:48 <Sgeo> :t (.)
19:58:49 <lambdabot> (b -> c) -> (a -> b) -> a -> c
19:59:55 -!- nooodl_ has joined.
20:01:56 <Sgeo> 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 <Sgeo> Wait, hold on
20:11:33 <Sgeo> 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 <Sgeo> 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 <nortti> recommend me a lightweight linux distro that still does graphical mode and other modern stuff
21:08:55 <nortti> (must run on i586)
21:09:34 <zzo38> What "other modern stuff" do you mean? IPv6?
21:11:32 <Sgeo> We've moved on, the modern thing is IPv8
21:12:17 <nortti> I mean stuff like linux 3.x series kernel and library versons from this decade
21:12:59 <zzo38> OK
21:13:08 <zzo38> I don't know much about Linux distro
21:14:18 -!- Phantom_Hoover has joined.
21:14:47 <Bike> arch?
21:15:05 <Bike> lxdm is "lightweight" i guess
21:15:15 <nortti> arch runs nicely with 128MB of ram on a i586?
21:15:20 <Bike> lxde rather
21:15:26 <Bike> hell if i know, i live in 2014
21:16:09 <Bike> 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 <nortti> I know many distros set a baseline of i686 nowadays
21:17:01 <Bike> https://wiki.archlinux.org/index.php/Install_Arch_i586 well it looks nontrivial i guess
21:17:37 <Bike> http://distrowatch.com/search.php?architecture=i586 openSUSE! oh boy!
21:18:12 <fizzie> How is it with Slackware these days?
21:18:20 <fizzie> I'd've sort of assumed.
21:21:29 <fizzie> Lots of "i486" in the file names in slackware-current/, at least.
21:22:14 <fizzie> 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 <Bike> haha.
21:23:40 <fizzie> Don't know about modern, but 14.1 has a 3.10.17 kernel and all.
21:24:35 <fizzie> [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 <fizzie> ... 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 <fizzie> ... 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 <zzo38> I have a slide rule marked "PICKETT ALL METAL SLIDE RULES".
21:42:38 <zzo38> Do you have any slide rules?
21:44:02 <Bike> No.
21:46:50 <Sgeo> What about slide guidelines?
21:47:37 <fizzie> 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 <nortti> I have 3, 2 pocket-sized ones and one full-sized
21:50:08 <nortti> make a pretty good substitute for the required calculator, at school
22:00:10 -!- nooodl_ has changed nick to nooodl.
22:13:44 <FreeFull> I want a slide rule
22:14:59 <Taneb> I want a slide
22:15:35 -!- kallisti has joined.
22:15:40 <Taneb> Hi, kallisti
22:15:59 <kallisti> jswhiuhsduyhweerh
22:16:01 <kallisti> 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 <HackEgo> [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 <Sgeo> 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 <oerjan> 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 <oerjan> because there will also be a graph in S that is larger than any the algorithm has tested.
22:50:57 <oerjan> *always be
22:51:32 <oerjan> *algorithm using that oracle
22:52:05 <coppro> oerjan: you don't need to test graphs directly though. you can test proofs
22:52:40 <oerjan> well i'm just saying you cannot do it for something given by an oracle.
22:54:41 <oerjan> 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 <Sgeo> @hoogle (Applicative f) => (a -> f b) -> (c -> f c)
22:55:01 <lambdabot> Data.Foldable traverse_ :: (Foldable t, Applicative f) => (a -> f b) -> t a -> f ()
22:55:01 <lambdabot> Data.Foldable for_ :: (Foldable t, Applicative f) => t a -> (a -> f b) -> f ()
22:55:01 <lambdabot> 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 <oerjan> Sgeo: why two c's?
22:55:37 <Sgeo> I'm trying to get pure from that (a -> f b)
22:56:33 <Sgeo> 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 <oerjan> Sgeo: \_ c -> pure c hth
22:57:04 <oerjan> :t \_ c -> pure c
22:57:05 <lambdabot> Applicative f => t -> a -> f a
22:57:16 -!- nooodl_ has joined.
22:57:34 <Sgeo> @pl \_ c -> pure c
22:57:34 <lambdabot> const pure
22:57:53 <Sgeo> In Racket, I wouldn't be ignoring the argument
22:58:02 <Sgeo> This is becoming too much like simulating typeclasses
22:58:15 <oerjan> Sgeo: i don't think you can do that. what if the function in was \x -> [x,x] ?
22:59:20 <oerjan> you need it to have the same structure as a pure result to work, i.e. just one list element for []
22:59:32 <oerjan> for that matter, const []
23:00:42 <oerjan> 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 <oerjan> :t azero
23:00:56 <lambdabot> Not in scope: ‘azero’
23:00:56 <lambdabot> Perhaps you meant ‘mzero’ (imported from Control.Monad.Writer)
23:00:59 <oerjan> oops
23:01:05 <oerjan> @src Alternative
23:01:05 <lambdabot> class Applicative f => Alternative f where
23:01:05 <lambdabot> empty :: f a
23:01:05 <lambdabot> (<|>) :: f a -> f a -> f a
23:01:12 <oerjan> oh it's called empty
23:01:31 <oerjan> :t empty
23:01:32 <lambdabot> Alternative f => f a
23:01:46 <oerjan> sounds like something that will frequently clash
23:01:50 <Sgeo> I'm confused. You can't get more than one `pure` from (a -> f b)
23:01:51 <oerjan> :t M.empty
23:01:52 <lambdabot> M.Map k a
23:02:20 <oerjan> Sgeo: um what do you mean by (a -> f b)
23:02:29 <Sgeo> Applicative f => (a -> f b)
23:03:07 <zzo38> Is an indexed writer monad the "most obvious" indexed monad?
23:03:38 <oerjan> Sgeo: um that's the opposite of clarifying
23:03:45 <zzo38> (In terms of other monads to make a indexed monad of)
23:03:46 <copumpkin> zzo38: "moving around" in a category?
23:03:57 <oerjan> i mean, where do you expect to get such a function _from_?
23:04:19 <Sgeo> oerjan: passed in to a traversal
23:04:26 <zzo38> copumpkin: What do you mean by that?
23:04:28 <oerjan> hm oh right
23:04:53 <copumpkin> 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 <oerjan> Sgeo: well how do you know it's not passed something like const [] ?
23:05:39 <Sgeo> What's the problem with const []?
23:06:05 <oerjan> Sgeo: that there is _no_ way to construct pure from it without using pure hth
23:06:16 <zzo38> 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 <zzo38> 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 <oerjan> (in an applicative-generic way)
23:06:55 <Sgeo> I'm thinking at this point, in Racket, I would need to store something other than the function
23:07:05 <Sgeo> As in, back to not just pure functions
23:07:06 <Sgeo> :(
23:07:34 <Sgeo> ...that doesn't work, does it
23:08:31 <zzo38> copumpkin: And why do you consider indexed state higher up there?
23:09:38 <copumpkin> 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 <oerjan> Sgeo: another problem is that you might not have any a to pass into the function.
23:10:31 <oerjan> which means you cannot even apply it just to check the type of the result.
23:11:08 <oerjan> for that matter, it might not terminate on any input :P
23:11:34 <oerjan> all kinds of things can go wrong when you don't have inferred result types...
23:11:56 <zzo38> 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 <Sgeo> +
23:19:32 <zzo38> 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 <zzo38> (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 <oerjan> > let x = in x
23:21:57 <lambdabot> <hint>:1:9: parse error on input ‘in’
23:22:20 <oerjan> > let x = 3 of x
23:22:21 <lambdabot> <hint>:1:11: parse error on input ‘of’
23:24:15 <Sgeo> Are there any C compilers that have the program die at runtime on any undefined behavior?
23:24:59 <oerjan> i suspect there is undefined behavior that is undecidable to detect
23:25:38 <FreeFull> Compilers tend to exploit undefined behaviour internally during optimisation
23:26:02 <zzo38> 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 <Bike> oerjan: undecideable at runtime, though?
23:26:25 <oerjan> Bike: why not
23:26:41 <Bike> anyway there's linty things like http://blog.regehr.org/archives/905 and valgrind i guess
23:28:44 <oerjan> come to think of it, that "infinite loops are undefined behavior" thing sounds like a good bet
23:29:19 <fizzie> That was in C++, though.
23:29:24 <oerjan> ah.
23:30:53 <Sgeo> Why would an infinite loop be undefined behavior?
23:31:05 <coppro> because the optimizer is allowed to assume that the code terminates
23:31:19 <Jafet> So that compiler writers get to optimize it away
23:31:44 <zzo38> An infinite loop should not be considered undefined behavior if it contains any impure code.
23:32:02 <fizzie> The C++ rule has a couple of qualifiers too.
23:32:05 <Bike> 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 <Sgeo> fhttp://stackoverflow.com/questions/3592557/optimizing-away-a-while1-in-c0x
23:32:52 <Bike> "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 <zzo38> Bike: I suppose, that is similar to what I said.
23:34:00 -!- tswett has joined.
23:35:34 <fizzie> "/dev/sdc: Unknown USB bridge [0x2537:0x1068 (0x100)]" aw, now smartctl no longer works.
23:40:00 <fizzie> Huh, it works with "-d sat". I guess I should tell that to someone.
23:43:00 -!- tswett29 has joined.
23:43:10 <tswett29> Topology!
23:43:29 <tswett29> Yeah!
23:45:00 <int-e> Sgeo: I guess if you need to do anything semidecidable then C and C++ just aren't the languages for you.
23:45:43 <tswett29> I'm thinking of an element of the Sierpinski space. Can anyone guess what it is?
23:46:20 <int-e> (Spoken as a theoretical computer scientist; the example of a daemon that runs indefinitely just isn't interesting then.)
23:47:13 <oerjan> tswett29: is it the open one twh
23:47:46 -!- Phantom_Hoover has quit (Quit: Leaving).
23:48:09 <Bike> i'm guessing 0
23:48:09 <shachaf> oerjan: itt tswett29 never answers
23:48:10 * oerjan hands out coffee cups and donuts to everyone
23:49:53 <oerjan> shachaf: 's ok i can just ban him
23:50:06 <shachaf> that would be an unjust ban hth
23:50:36 <oerjan> how dare you, maybe i should ban you too
23:51:32 <shachaf> oerjan is described in http://www.literature.org/authors/carroll-lewis/the-hunting-of-the-snark/chapter-06.html
23:52:35 <shachaf> 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 <shachaf> good agony
23:53:27 <int-e> true story
←2014-04-25 2014-04-26 2014-04-27→ ↑2014 ↑all