Home liberachat/#haskell: Logs Calendar

Logs on 2024-01-23 (liberachat/#haskell)

00:01:40 <ph88> is there a way to search for functions which calls another function ?
00:01:40 <jackdk> EvanR: DSum certainly, but DMap's going to need its flavour of Ord (GCompare) to put things into the map
00:02:17 <jackdk> I'm not aware of any call-graph tools, but grep is a crude hammer
00:02:27 <EvanR> er,
00:02:30 <d34df00d> ph88: haskell-language-server has support for finding references, so if your editor has LSP support, you're golden.
00:02:45 <d34df00d> (works great in my (neo)vim)
00:03:10 <EvanR> Ord for the keys makes sense
00:03:18 <EvanR> I don't see why GCompare is involved
00:03:23 peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com)
00:04:24 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Remote host closed the connection)
00:05:34 × _________ quits (~nobody@user/noodly) (Ping timeout: 268 seconds)
00:05:37 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
00:07:10 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 260 seconds)
00:07:14 _________ joins (~nobody@user/noodly)
00:10:47 × oo_miguel quits (~Thunderbi@78-11-179-96.static.ip.netia.com.pl) (Ping timeout: 264 seconds)
00:10:58 × xff0x quits (~xff0x@178.255.149.135) (Ping timeout: 276 seconds)
00:12:09 xff0x joins (~xff0x@ai085147.d.east.v6connect.net)
00:18:55 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
00:30:07 × johnw quits (~johnw@69.62.242.138) (Quit: ZNC - http://znc.in)
00:30:22 azimut joins (~azimut@gateway/tor-sasl/azimut)
00:30:30 <dmj`> mauke: is there any way partial evaluation could be used to bound the number of specialized functions created during monomorphization. For example, error if the max tuple size is reached
00:30:33 × peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 260 seconds)
00:33:23 <dmj`> mauke: to allow polymorphic recursion to be monomorphized, for a subset of polymorphic recursive functions
00:35:28 × rvalue quits (~rvalue@user/rvalue) (Quit: ZNC - https://znc.in)
00:35:44 rvalue joins (~rvalue@user/rvalue)
00:37:49 × turlando quits (~turlando@user/turlando) (Ping timeout: 255 seconds)
00:50:35 turlando joins (~turlando@user/turlando)
00:51:22 <ph88> how can i step into functions defined in other modules ?
00:51:30 <ph88> with a debugger
00:51:33 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 260 seconds)
00:52:15 × Tuplanolla quits (~Tuplanoll@91-159-68-95.elisa-laajakaista.fi) (Quit: Leaving.)
00:56:28 <geekosaur> you have to load them as source, which will be difficult if they're in other libraries/packages
00:57:54 <geekosaur> in general you can :add a module prefixed with a * to load it as source
01:04:43 bdg joins (~bdg@2001:8a0:f533:f100:975:c789:646b:a0ee)
01:10:13 <dmj`> mauke: "test.rs:27:0: 34:1 error: overly deep expansion of inlined function" what rust does
01:12:06 × bdg quits (~bdg@2001:8a0:f533:f100:975:c789:646b:a0ee) (Quit: WeeChat 4.2.0)
01:14:18 son0p joins (~ff@181.32.158.171)
01:16:28 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds)
01:17:10 euleritian joins (~euleritia@dynamic-176-006-188-169.176.6.pool.telefonica.de)
01:18:58 _xor joins (~xor@ip-208-102-243-175.dynamic.fuse.net)
01:19:27 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
01:24:25 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 276 seconds)
01:27:33 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
01:27:53 × turlando quits (~turlando@user/turlando) (Ping timeout: 256 seconds)
01:28:00 azimut joins (~azimut@gateway/tor-sasl/azimut)
01:29:27 johnw joins (~johnw@69.62.242.138)
01:30:46 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
01:31:13 stiell joins (~stiell@gateway/tor-sasl/stiell)
01:32:35 turlando joins (~turlando@user/turlando)
01:33:21 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
01:33:45 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds)
01:34:44 Lord_of_Life_ is now known as Lord_of_Life
01:36:52 × igemnace quits (~ian@user/igemnace) (Quit: WeeChat 4.1.3)
01:41:21 × ystael quits (~ystael@user/ystael) (Ping timeout: 256 seconds)
01:46:46 × EvanR quits (~EvanR@user/evanr) (Remote host closed the connection)
01:47:05 EvanR joins (~EvanR@user/evanr)
01:51:42 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
01:54:21 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
01:58:22 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
01:58:57 stiell joins (~stiell@gateway/tor-sasl/stiell)
02:13:26 × xff0x quits (~xff0x@ai085147.d.east.v6connect.net) (Ping timeout: 252 seconds)
02:30:47 × ph88 quits (~ph88@ip5b403f30.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds)
02:30:58 × mima quits (~mmh@aftr-62-216-211-136.dynamic.mnet-online.de) (Ping timeout: 246 seconds)
02:50:41 × tzh quits (~tzh@c-71-193-181-0.hsd1.or.comcast.net) (Read error: Connection reset by peer)
02:51:00 tzh joins (~tzh@c-71-193-181-0.hsd1.or.comcast.net)
03:01:19 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 268 seconds)
03:03:02 × califax quits (~califax@user/califx) (Remote host closed the connection)
03:03:02 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
03:03:08 motherfsck joins (~motherfsc@user/motherfsck)
03:03:32 califax joins (~califax@user/califx)
03:03:40 × califax quits (~califax@user/califx) (Remote host closed the connection)
03:03:45 ChaiTRex joins (~ChaiTRex@user/chaitrex)
03:03:52 × Typedfern quits (~Typedfern@220.red-83-37-25.dynamicip.rima-tde.net) (Ping timeout: 246 seconds)
03:04:00 califax joins (~califax@user/califx)
03:04:45 xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
03:05:19 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
03:10:06 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 260 seconds)
03:14:47 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
03:16:12 × myxos quits (~myxos@065-028-251-121.inf.spectrum.com) (Quit: myxos)
03:16:30 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Remote host closed the connection)
03:17:08 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
03:22:04 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Ping timeout: 276 seconds)
03:22:10 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
03:27:31 <dmj`> c_wraith: no existentials is fine with me :)
03:27:49 peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com)
03:29:44 <dmj`> c_wraith: wouldn't that also mean disabling recursive calls within typeclass instances though
03:30:02 <c_wraith> No
03:30:34 <c_wraith> polymorphic recursion is something else.
03:31:16 <c_wraith> polymorphic recursion is when the thing you're writing *isn't* part of the class
03:31:32 <c_wraith> So it's the same value even after the renaming pass
03:32:38 Typedfern joins (~Typedfern@82.red-83-37-31.dynamicip.rima-tde.net)
03:33:52 <c_wraith> err. the renamer doesn't rename class values. Eh. Whatever. It's when it's the same value, not a different one that happens to share the same name.
03:34:02 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
03:43:45 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:f06f:8f74:1e14:400c) (Remote host closed the connection)
03:44:00 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:f06f:8f74:1e14:400c)
03:46:43 × jargon quits (~jargon@211.sub-174-205-225.myvzw.com) (Remote host closed the connection)
03:48:04 × thegeekinside quits (~thegeekin@189.180.85.240) (Ping timeout: 276 seconds)
03:49:19 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 240 seconds)
03:49:22 × peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 276 seconds)
03:51:41 ChaiTRex joins (~ChaiTRex@user/chaitrex)
03:54:40 × td_ quits (~td@i53870929.versanet.de) (Ping timeout: 268 seconds)
03:55:58 td_ joins (~td@i53870938.versanet.de)
03:56:41 × euleritian quits (~euleritia@dynamic-176-006-188-169.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
03:56:58 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
03:58:22 <c_wraith> dmj`: relevantly, polymorphic recursion is the main way (in Haskell) to get types that depend on runtime values. And that means if that type has a class constraint, the exact code to run simply isn't known at compile time. There's no way to monomorphize it
04:00:04 <c_wraith> > let f :: Show a => a -> Int -> String ; f x 0 = show x ; f x n = f (x, x) (n - 1) in f "hi" 3
04:00:06 <lambdabot> "(((\"hi\",\"hi\"),(\"hi\",\"hi\")),((\"hi\",\"hi\"),(\"hi\",\"hi\")))"
04:00:26 <c_wraith> you don't know at compile time what specific instance of Show `f` will be using there.
04:00:37 <c_wraith> And while that's a very contrived example, it's enough to show the problem
04:10:29 pavonia joins (~user@user/siracusa)
04:11:07 × Axman6 quits (~Axman6@user/axman6) (Ping timeout: 258 seconds)
04:18:09 aforemny_ joins (~aforemny@i59F516CD.versanet.de)
04:18:40 <dmj`> c_wraith: okay great, yea the goal would be to remove all dynamic determination of what code should get executed. If that means no existential, higher rank types or polymorphic recursion, that’s okay. It does exclude things like ST and requires different way to handle exceptions (Haskell 98), way.
04:18:58 <c_wraith> ST isn't excluded
04:19:17 <c_wraith> It only excludes those things when they quantify over a constrained type variable
04:19:55 × aforemny quits (~aforemny@i59F516D1.versanet.de) (Ping timeout: 276 seconds)
04:20:05 <c_wraith> the universally quantified type variable in runST is even phantom
04:21:31 <dmj`> c_wraith: for polymorphic recursion yes, but monomorphization is also prohibited by higher rank types according to Oleg K
04:24:01 <c_wraith> in a technical sense, yes. But if you keep types lifted, you'll never see the difference.
04:24:17 <dmj`> c_wraith: you’re saying full monomorphization can be had with rank n types ?
04:24:31 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 240 seconds)
04:24:45 <c_wraith> No, but I'm saying you can generate the same code in some cases if you aren't also eliminating laziness.
04:27:01 <c_wraith> like, my example from earlier... I have a data type like this in it: data Pack m = forall a. Pack (m a) (TMVar (Either SomeException a))
04:27:33 <c_wraith> Ok, the SomeException part would break without classes. But if you ignore the error reporting, and focus on the other part
04:27:43 ChaiTRex joins (~ChaiTRex@user/chaitrex)
04:28:12 <dmj`> c_wraith: if ST can be implemented without rank n types safely I’m all for it. Doing mutability in IO might be good enough. ST is just a self imposed restriction over IO anyway. The types will stay lifted, and lazy by default. The optimizer would try to lower the types therefore removing unnecessary laziness by inlining / simplifying / unpacking. But monomorphization should open the door to SIMD easily.
04:28:16 <c_wraith> The code that uses that doesn't need to monomorphize to generate optimal code. It just copies a pointer from one spot to another
04:28:51 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
04:30:00 <c_wraith> You only run into problems with that when you remove the uniform lifted representation of data types
04:30:13 <c_wraith> which is usually what people *actually* want when they say they want to monomorphize
04:35:19 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds)
04:36:02 <dmj`> c_wraith: regarding the existential types, keeping type inference decidable would be nice. Existentials and rank n types can lead to some tough type errors for beginners.
04:37:10 euleritian joins (~euleritia@77.22.252.56)
04:37:21 <c_wraith> beginners get near those topics?
04:38:27 <dmj`> c_wraith: via libraries, yea I think so
04:39:40 <dmj`> c_wraith: the uniform representation should still be there. I’d like to lambda lift, closure convert and defunctionalize into a first order language where closures turn into data constructors, then optimizations can try to lower everything
04:40:18 <c_wraith> I'm very wary of doing anything "for beginners". My experience is that beginners stop being beginners and start asking how to do things, and it's much better to say "oh, learn this new thing" than "we removed it because beginners were sad"
04:40:52 Axman6 joins (~Axman6@user/axman6)
04:43:39 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
04:44:39 <dmj`> c_wraith: type checking / inference should be a lot faster too with a simplified system, not just for beginners. It could be cool to experiment with a staging or macro system to produce types / constructors as an alternative to GADTs, type families, TH and generics
04:46:07 <dmj`> c_wraith: my experience with beginners is they want to try everything (which is normal for learning) and experienced people already have tried everything and know when *not* to use something… beginners don’t necessarily ime
04:49:27 <dmj`> c_wraith: both ST and exceptions will expose people to the existentials and rank n . Maybe rank 2 could be used if things stay decidable
04:49:47 <c_wraith> only SomeException exposes people to existentials
04:50:18 <c_wraith> (though without it, exceptions really have to have a fixed set of constructors in a Haskell-like language)
04:50:34 tri parts (~tri@ool-18bc2e74.dyn.optonline.net) (Leaving...)
04:51:02 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
04:54:22 <tri> hi, im having trouble understanding this piece of code that reads line from CSV.and prints them out
04:54:28 <tri> https://paste.tomsmeding.com/P2kywWyv
04:55:12 <tri> so the code is in the do notation, and i know the last expression of the IO () do notation has to be an IO ()
04:55:43 <tri> in the case of Left, i understand because putStrLn is an IO ()
04:55:56 <c_wraith> The outermost function in the Right case is V.forM_
04:56:09 <tri> yea so here's what im stuck at
04:56:38 <tri> forM_ is running the lambda against all the item in the vector
04:56:52 <tri> so coming from C#, it's like a ForEach on a List
04:57:04 <tri> and the result of this code is like a vector of IO ()
04:57:19 <c_wraith> ah. it's V.forM_ , not V.forM
04:57:27 <c_wraith> that _ is part of the name
04:57:43 <tri> yea and it sayd something like discarding the result
04:57:49 <tri> but anyway
04:57:52 <c_wraith> and it's an idiom that means "don't create a new data structure, just run this for the effects"
04:59:23 <dmj`> c_wraith: maybe we could be better at keeping pure code from throwing exceptions, totality checks. Haskell98 didn’t have SomeException, just IOError afaik
04:59:46 <c_wraith> Yeah, SomeException was part of making the exception mechanism support user-defined exception types
04:59:52 <tri> so after reading the type signature of forM_ again, it's kinda make sense
05:00:16 <c_wraith> tri: and especially contrast with forM
05:00:29 <tri> so, is it safe to say 95% of using forM_ is to run IO for each item in a vector?
05:00:54 <tri> or run IO for an item wrapped in a monad, if I use Control.Monad.forM_ ?
05:01:21 <c_wraith> Well forM_ is a name that's used with a lot more things than Vector. Vector needs its own special version because it can't be an instance of Foldable.
05:01:26 <tri> in other word, if i were to use forM_, 95% of the time is to do some sideeffect?
05:01:45 <c_wraith> But yes, it's just about running side effects with the contents of a collection
05:02:54 <c_wraith> (ok, Data.Vector.Vector is an instance of Foldable, but none of the others are.)
05:03:26 <tri> ok
05:03:30 <tri> so about forM
05:04:20 <tri> Monad m => Vector a -> (a -> m b) -> m (Vector b)
05:04:30 <dmj`> c_wraith: wonder if that could have been done with type classes
05:04:43 <tri> im interpreting it as...
05:05:08 <tri> sorry forget what i said
05:05:20 <tri> that forM looks like a traversable
05:05:25 <c_wraith> dmj`: it's part of the Data.Vector.Generic.Vector class
05:05:54 <Axman6> tri: yes, it is basically the traverse instance for Vector
05:05:59 <c_wraith> tri: mapM and traverse are the same function. forM = flip mapP
05:06:08 <Axman6> M*
05:06:09 <tri> oh ok so that's from the traversable
05:06:14 <tri> i didn't read to that chapter
05:06:15 <c_wraith> err. yes. mapM
05:06:29 <Axman6> a slightly more "friendly" name (and a bit shorter)
05:06:30 <tri> but from my experience with F# that looks like a traversable so i took a guess
05:06:49 <Axman6> :t map
05:06:50 <lambdabot> (a -> b) -> [a] -> [b]
05:06:51 <Axman6> :t mapM
05:06:52 <lambdabot> (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b)
05:06:55 <Axman6> :t forM
05:06:56 <lambdabot> (Traversable t, Monad m) => t a -> (a -> m b) -> m (t b)
05:06:57 <Axman6> :t forM_
05:06:58 <lambdabot> (Foldable t, Monad m) => t a -> (a -> m b) -> m ()
05:07:08 <Axman6> :t traverse
05:07:10 <lambdabot> (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b)
05:07:12 <dmj`> c_wraith: meant for me? :)
05:07:49 <c_wraith> nope! typing is not working well!
05:07:59 <Axman6> tri: looks like you have the right intuition there - I feel like your next question might be "why do we have so many names for the same thing"
05:08:18 michalz joins (~michalz@185.246.207.200)
05:09:01 <tri> well idk yet. That's question is going to be for a more experienced me
05:09:35 × tt1231 quits (~tt123@2603-6010-8700-4a81-219f-50d3-618a-a6ee.res6.spectrum.com) (Ping timeout: 268 seconds)
05:09:35 <tri> anyway, is the forM_ related to traversable?
05:09:37 <Axman6> the answer is half historical, and half convenience. sometimes mapM is more convenient to write than forM: mapM somethingSimple [a,b,c,d,e,f,g,h] is often more clean than forM [a,b,c,d,e,f,g,h] somethingSimple, but forM someList $ \x -> do\n ... looks more for loop-y and often nests much more nicely
05:09:51 <Axman6> :t forM_
05:09:52 <lambdabot> (Foldable t, Monad m) => t a -> (a -> m b) -> m ()
05:10:06 <tri> it's a foldable so im not sure
05:10:12 <tri> and i haven't read the Foldable chapter yet
05:10:15 <Axman6> forM_ is Foldable, because we don't care about building a new structure, we just want the values inside
05:10:24 <Axman6> :t foldMap
05:10:25 <lambdabot> (Foldable t, Monoid m) => (a -> m) -> t a -> m
05:10:56 <Axman6> give me all the a's, let me turn them into some Monoid (things which can be easily combined together) and combine them all together.
05:12:21 <tri> well that went over my head but thank you for your help
05:12:59 × earthy quits (~arthurvl@2a02-a469-f5e2-1-83d2-ca43-57a2-dc81.fixed6.kpn.net) (Ping timeout: 268 seconds)
05:13:44 <tri> Axman6: is there anything equivalent to forM_, just like forM and mapM?
05:17:21 thegeekinside joins (~thegeekin@189.180.85.240)
05:19:43 <xacktm> equivalent? like, since `forM = flip mapM`, then `forM_ = flip mapM_` ?
05:20:09 <tri> :t MapM_
05:20:10 <lambdabot> error:
05:20:10 <lambdabot> • Data constructor not in scope: MapM_
05:20:10 <lambdabot> • Perhaps you meant variable ‘mapM_’ (imported from Data.Foldable)
05:20:15 <tri> :t mapM_
05:20:16 <lambdabot> (Foldable t, Monad m) => (a -> m b) -> t a -> m ()
05:20:23 <tri> :t forM_
05:20:24 <lambdabot> (Foldable t, Monad m) => t a -> (a -> m b) -> m ()
05:20:49 <tri> xacktm: as tested above, yes you are right. Thank you
05:21:02 × mhatta quits (~mhatta@www21123ui.sakura.ne.jp) (Remote host closed the connection)
05:22:11 <xacktm> np the word you were looking for is analogue btw
05:22:14 <xacktm> :t flip
05:22:15 <lambdabot> (a -> b -> c) -> b -> a -> c
05:23:54 <tri> thank you
05:26:46 peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com)
05:26:58 mhatta joins (~mhatta@www21123ui.sakura.ne.jp)
05:28:16 <Axman6> tri: if you understnad traversable, you can definitely understand Foldable (it's a simpler class that does a similar things, but is just about extracting values, rather than mapping them, like Traversable)
05:28:20 <Axman6> :t toList
05:28:21 <lambdabot> Foldable t => t a -> [a]
05:28:47 <tri> i mean i kind of understand from the name
05:28:47 <Axman6> that's the canonical Fldable function IMO, if you have a foldable which contains a's, you can get all the a's.
05:28:57 <tri> because i know how to use fold function
05:29:14 <tri> but i still need to read the chapter to have a full understanding
05:29:38 <Axman6> > fold (\x -> [a,a]) [a,b,c] :: [Expr]
05:29:39 <lambdabot> error:
05:29:39 <lambdabot> • Couldn't match type ‘[Expr]’ with ‘[Expr] -> [Expr]’
05:29:39 <lambdabot> Expected type: p0 -> [Expr] -> [Expr]
05:29:49 <Axman6> > fold (\x -> [x,x]) [a,b,c] :: [Expr]
05:29:51 <lambdabot> error:
05:29:51 <lambdabot> • Couldn't match type ‘[a0]’ with ‘[Expr] -> [Expr]’
05:29:51 <lambdabot> Expected type: a0 -> [Expr] -> [Expr]
05:30:00 <Axman6> ok I'm bad at this
05:30:09 <Axman6> > foldMap (\x -> [x,x]) [a,b,c] :: [Expr]
05:30:10 <lambdabot> [a,a,b,b,c,c]
05:30:15 <tri> also in F#, there's a thing called sequencing which iirc is related to traversable.
05:30:27 igemnace joins (~ian@user/igemnace)
05:30:43 <haskellbridge> 05<i​rregularsphere> does an existential `exists a` basically mean "some `a` satisfy this, some don't" or "only applies for some `a`"
05:33:32 × michalz quits (~michalz@185.246.207.200) (Quit: ZNC 1.8.2 - https://znc.in)
05:36:22 michalz joins (~michalz@185.246.207.203)
05:46:54 trev joins (~trev@user/trev)
05:55:01 <tri> Hi im having trouble parsing csv. im using this https://hackage.haskell.org/package/cassava-0.5.3.0/docs/Data-Csv.html#g:4
05:56:00 <tri> this is my code so far https://paste.tomsmeding.com/c8xitufW
05:56:11 <tri> im having trouble on the very last line
05:57:03 <tri> basically, i know that i have to use decodeByName to decode the string read from csv file to my Haskell record
05:57:23 <tri> :t decodeByName
05:57:24 <lambdabot> error: Variable not in scope: decodeByName
06:00:05 <tri> this is the type of decodeByName https://paste.tomsmeding.com/Yj5vLbJH
06:00:49 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
06:00:50 <tri> in my case of expression, in the Right case, i would have a Vector of ANY
06:01:10 <tri> so how do i turn that vector of any to a vector of my data record Position?
06:14:53 × telser quits (~quassel@user/telser) (Ping timeout: 252 seconds)
06:17:20 <tri> actually i got it
06:17:21 <tri> nvm
06:17:27 × euleritian quits (~euleritia@77.22.252.56) (Ping timeout: 256 seconds)
06:17:51 euleritian joins (~euleritia@dynamic-176-002-133-146.176.2.pool.telefonica.de)
06:22:41 acidjnk joins (~acidjnk@p200300d6e737e7577de83db70375434d.dip0.t-ipconnect.de)
06:23:11 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:28:37 × Square quits (~Square4@user/square) (Ping timeout: 276 seconds)
06:30:50 Square joins (~Square4@user/square)
06:35:10 earthy joins (~arthurvl@2a02-a469-f5e2-1-83d2-ca43-57a2-dc81.fixed6.kpn.net)
06:35:54 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Remote host closed the connection)
06:44:16 tri joins (~tri@ool-18bc2e74.dyn.optonline.net)
06:46:41 × tri quits (~tri@ool-18bc2e74.dyn.optonline.net) (Remote host closed the connection)
06:48:50 harveypwca joins (~harveypwc@2601:246:c280:7940:585a:99af:3e4c:209b)
06:50:13 × Square quits (~Square4@user/square) (Ping timeout: 264 seconds)
06:53:55 × thegeekinside quits (~thegeekin@189.180.85.240) (Remote host closed the connection)
06:55:55 CrunchyFlakes joins (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de)
07:04:37 Erutuon joins (~Erutuon@user/erutuon)
07:05:01 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
07:05:32 × CrunchyFlakes quits (~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds)
07:06:11 justsomeguy joins (~justsomeg@user/justsomeguy)
07:07:04 CrunchyFlakes joins (~CrunchyFl@146.52.130.128)
07:07:46 × shriekingnoise quits (~shrieking@186.137.175.87) (Ping timeout: 264 seconds)
07:09:32 sord937 joins (~sord937@gateway/tor-sasl/sord937)
07:13:14 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 260 seconds)
07:20:05 × tzh quits (~tzh@c-71-193-181-0.hsd1.or.comcast.net) (Quit: zzz)
07:22:31 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 240 seconds)
07:26:34 rosco joins (~rosco@175.136.156.77)
07:30:27 × average quits (uid473595@user/average) (Quit: Connection closed for inactivity)
07:30:37 × cross quits (~cross@spitfire.i.gajendra.net) (Quit: Lost terminal)
07:31:58 CiaoSen joins (~Jura@2a05:5800:2ba:a600:ca4b:d6ff:fec1:99da)
07:33:33 chele joins (~chele@user/chele)
07:35:35 × euleritian quits (~euleritia@dynamic-176-002-133-146.176.2.pool.telefonica.de) (Read error: Connection reset by peer)
07:35:54 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
07:36:06 stiell joins (~stiell@gateway/tor-sasl/stiell)
07:38:11 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
07:38:13 × earthy quits (~arthurvl@2a02-a469-f5e2-1-83d2-ca43-57a2-dc81.fixed6.kpn.net) (Ping timeout: 264 seconds)
07:41:43 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
07:42:31 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
07:43:12 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
07:45:28 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Quit: Leaving)
07:49:41 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 260 seconds)
07:49:42 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
07:50:45 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
07:56:34 coot joins (~coot@89-69-206-216.dynamic.chello.pl)
07:57:05 mima joins (~mmh@aftr-62-216-211-79.dynamic.mnet-online.de)
08:00:17 oo_miguel joins (~Thunderbi@78-11-179-96.static.ip.netia.com.pl)
08:02:01 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
08:03:16 stiell joins (~stiell@gateway/tor-sasl/stiell)
08:04:48 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:f06f:8f74:1e14:400c) (Remote host closed the connection)
08:05:24 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
08:06:39 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
08:06:56 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:f06f:8f74:1e14:400c)
08:10:02 fendor joins (~fendor@2a02:8388:1605:d100:267b:1353:13d7:4f0c)
08:12:41 danse-nr3 joins (~danse@151.47.88.94)
08:13:24 gmg joins (~user@user/gehmehgeh)
08:14:37 × danse-nr3 quits (~danse@151.47.88.94) (Remote host closed the connection)
08:15:00 danse-nr3 joins (~danse@151.47.88.94)
08:25:47 × peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 264 seconds)
08:26:14 × m1dnight quits (~christoph@78-22-2-15.access.telenet.be) (Quit: WeeChat 4.1.1)
08:26:20 × harveypwca quits (~harveypwc@2601:246:c280:7940:585a:99af:3e4c:209b) (Quit: Leaving)
08:27:22 × fendor quits (~fendor@2a02:8388:1605:d100:267b:1353:13d7:4f0c) (Remote host closed the connection)
08:27:35 m1dnight joins (~christoph@78-22-2-15.access.telenet.be)
08:29:25 fendor joins (~fendor@2a02:8388:1605:d100:267b:1353:13d7:4f0c)
08:32:08 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:f06f:8f74:1e14:400c) (Remote host closed the connection)
08:36:24 × econo_ quits (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
08:50:46 × justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 260 seconds)
09:00:05 <Hecate> If anyone has got any question regarding object linking with GHC, would you mind seeing if it's answered here: https://gitlab.haskell.org/ghc/ghc/-/wikis/Linking ?
09:00:17 <Hecate> and if it's not, can I get a link to the answer so that I may reference it?
09:00:38 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
09:04:52 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:f06f:8f74:1e14:400c)
09:05:46 × Flow quits (~none@gentoo/developer/flow) (Ping timeout: 245 seconds)
09:07:12 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
09:07:43 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Ping timeout: 240 seconds)
09:09:52 sord937 joins (~sord937@gateway/tor-sasl/sord937)
09:12:40 Flow joins (~none@gentoo/developer/flow)
09:16:26 × Luj quits (~Luj@2a01:e0a:5f9:9681:9efa:99eb:317c:5cbb) (Quit: Ping timeout (120 seconds))
09:16:46 Luj joins (~Luj@2a01:e0a:5f9:9681:d777:c1f:db87:45b8)
09:43:36 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
09:46:16 × statusbot3 quits (~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) (Remote host closed the connection)
09:46:25 statusbot joins (~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com)
09:52:08 × danse-nr3 quits (~danse@151.47.88.94) (Ping timeout: 256 seconds)
09:53:53 × ft quits (~ft@p508dbda4.dip0.t-ipconnect.de) (Quit: leaving)
09:56:54 mmhat joins (~mmh@p200300f1c724f91bee086bfffe095315.dip0.t-ipconnect.de)
09:57:37 × L29Ah quits (~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer)
09:58:46 cfricke joins (~cfricke@user/cfricke)
09:58:47 danse-nr3 joins (~danse@151.47.88.94)
10:00:10 notzmv joins (~zmv@user/notzmv)
10:02:23 × cyphase quits (~cyphase@user/cyphase) (Ping timeout: 264 seconds)
10:05:31 ph88 joins (~ph88@ip5b403f30.dynamic.kabel-deutschland.de)
10:06:15 × xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 260 seconds)
10:19:09 L29Ah joins (~L29Ah@wikipedia/L29Ah)
10:22:59 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
10:23:41 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 260 seconds)
10:24:50 __monty__ joins (~toonn@user/toonn)
10:48:55 earthy joins (~arthurvl@77-174-49-144.fixed.kpn.net)
10:54:24 × ph88 quits (~ph88@ip5b403f30.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
10:59:11 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
11:10:32 × danse-nr3 quits (~danse@151.47.88.94) (Read error: Connection reset by peer)
11:10:50 danse-nr3 joins (~danse@rm-19-13-46.service.infuturo.it)
11:11:49 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 264 seconds)
11:14:01 xff0x joins (~xff0x@ai085147.d.east.v6connect.net)
11:17:47 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 256 seconds)
11:19:01 × rosco quits (~rosco@175.136.156.77) (Read error: Connection reset by peer)
11:28:30 × __monty__ quits (~toonn@user/toonn) (Ping timeout: 260 seconds)
11:29:46 × CiaoSen quits (~Jura@2a05:5800:2ba:a600:ca4b:d6ff:fec1:99da) (Ping timeout: 268 seconds)
11:30:55 × califax quits (~califax@user/califx) (Ping timeout: 240 seconds)
11:31:36 califax joins (~califax@user/califx)
11:37:01 × glguy quits (g@libera/staff/glguy) (Read error: Connection reset by peer)
11:37:16 glguy joins (g@libera/staff/glguy)
11:37:18 cyphase joins (~cyphase@user/cyphase)
11:37:58 × g quits (g@libera/staff/glguy) (Read error: Connection reset by peer)
11:45:42 g joins (glguy@libera/staff/glguy)
11:49:01 × waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 264 seconds)
11:49:37 __monty__ joins (~toonn@user/toonn)
11:52:55 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Ping timeout: 240 seconds)
11:55:06 sord937 joins (~sord937@gateway/tor-sasl/sord937)
11:59:13 rosco joins (~rosco@175.136.156.77)
12:02:03 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
12:05:47 myxos joins (~myxos@065-028-251-121.inf.spectrum.com)
12:07:31 × danse-nr3 quits (~danse@rm-19-13-46.service.infuturo.it) (Ping timeout: 256 seconds)
12:08:50 phma_ joins (~phma@host-67-44-208-39.hnremote.net)
12:09:57 × phma quits (phma@2001:5b0:211f:a328:df89:a9c1:b8f3:9c33) (Read error: Connection reset by peer)
12:30:14 × califax quits (~califax@user/califx) (Remote host closed the connection)
12:31:37 califax joins (~califax@user/califx)
12:39:25 danse-nr3 joins (~danse@rm-19-51-222.service.infuturo.it)
12:40:22 × cyphase quits (~cyphase@user/cyphase) (Ping timeout: 260 seconds)
12:45:09 cyphase joins (~cyphase@user/cyphase)
12:57:11 × son0p quits (~ff@181.32.158.171) (Quit: Bye)
13:10:27 billchenchina joins (~billchenc@2a0d:2580:ff0c:1:e3c9:c52b:a429:5bfe)
13:16:13 paltech joins (~paltech@2001:6b0:1:1041:d0f3:cc40:ae9:da17)
13:16:26 × paltech quits (~paltech@2001:6b0:1:1041:d0f3:cc40:ae9:da17) (Client Quit)
13:16:47 paltech joins (~paltech@2001:6b0:1:1041:d0f3:cc40:ae9:da17)
13:17:07 × califax quits (~califax@user/califx) (Remote host closed the connection)
13:17:25 califax joins (~califax@user/califx)
13:30:23 <ski> i​rregularsphere : skip the "some don't" part
13:54:12 shriekingnoise joins (~shrieking@186.137.175.87)
13:55:41 × billchenchina quits (~billchenc@2a0d:2580:ff0c:1:e3c9:c52b:a429:5bfe) (Remote host closed the connection)
14:01:48 × paltech quits (~paltech@2001:6b0:1:1041:d0f3:cc40:ae9:da17) (Ping timeout: 250 seconds)
14:07:50 × causal quits (~eric@50.35.85.7) (Quit: WeeChat 4.1.1)
14:12:49 cheater_ joins (~Username@user/cheater)
14:16:33 × cheater quits (~Username@user/cheater) (Ping timeout: 260 seconds)
14:16:34 cheater_ is now known as cheater
14:21:49 × kmein quits (~weechat@user/kmein) (Ping timeout: 256 seconds)
14:23:10 kmein joins (~weechat@user/kmein)
14:23:13 <haskellbridge> 05<i​rregularsphere> ah right
14:25:01 thegeekinside joins (~thegeekin@189.180.85.240)
14:25:52 <haskellbridge> 05<i​rregularsphere> though does an existential allow for no types to be valid
14:26:27 <haskellbridge> 05<i​rregularsphere> I'm not sure how to construct an example but I'm expecting GHC/others to let it slide
14:29:17 <tomsmeding> irregularsphere: an existential variable can be any type, that's the point of an existential
14:30:09 <haskellbridge> 05<i​rregularsphere> what I mean is that no types ever satisfy the conditional/predicate after an existential
14:30:40 <tomsmeding> the type class constraints inside the quantifier, you mean?
14:30:47 <tomsmeding> the existential can still be any type
14:31:04 <tomsmeding> whether the thing under the quantifier has any inhabitants is a separate point :p
14:31:12 <tomsmeding> 'undefined' has a lot of types
14:33:28 × trev quits (~trev@user/trev) (Quit: trev)
14:33:41 <tomsmeding> it becomes a bit more fuzzy if you have 'exists a. (a ~ Int) => ...'
14:33:44 × mima quits (~mmh@aftr-62-216-211-79.dynamic.mnet-online.de) (Ping timeout: 252 seconds)
14:33:54 trev joins (~trev@user/trev)
14:34:08 <tomsmeding> ghc is being annoying in letting me construct such a thing, even with undefined
14:35:20 <tomsmeding> in any case, it seems to me the most productive way to think about that is still that 'a' can be anything, including e.g. Bool; it's just that the term that has this type _must_ be bottom, because it will include evidence that e.g. Bool ~ Int, which does not exist
14:35:52 <tomsmeding> I'm assuming here that you encode the existential with something like 'data Exists c where Exists :: c a => a -> Exists c'
14:38:31 ystael joins (~ystael@user/ystael)
14:40:59 × igemnace quits (~ian@user/igemnace) (Read error: Connection reset by peer)
14:44:00 <EvanR> there's a valid type for exists n such that (n ~ Int, IsEven n, IsOdd n), but no way to build it
14:44:14 <EvanR> nooo I messed that up
14:44:25 <EvanR> no dependent types
14:44:56 tri joins (~tri@ool-18bbef1a.static.optonline.net)
14:45:40 average joins (uid473595@user/average)
14:46:45 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds)
14:47:42 euleritian joins (~euleritia@dynamic-176-006-197-230.176.6.pool.telefonica.de)
14:48:53 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 240 seconds)
14:54:32 <tomsmeding> heh
14:55:21 <__monty__> It's identical to the empty type no?
14:55:34 <__monty__> Void or such.
14:55:35 <tomsmeding> __monty__: it said `n ~ Int`, not `n : Int`
14:56:15 <tomsmeding> if it was (::) then it was dependent; if it said `n :: Nat` then it was type-level
14:56:21 × mmhat quits (~mmh@p200300f1c724f91bee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
14:56:21 <tomsmeding> and we were talking about value-level Ints :)
14:56:44 mmhat joins (~mmh@p200300f1c724f9e1ee086bfffe095315.dip0.t-ipconnect.de)
14:56:51 <ncf> yes, the type of even and odd integers is empty
14:57:42 <tomsmeding> in Agda the type Sigma Int (\n -> even n && odd n) is empty
14:57:50 <tomsmeding> good luck expressing that in Haskell
14:58:30 igemnace joins (~ian@user/igemnace)
15:00:42 <__monty__> Oh, because of bottom?
15:01:09 <tomsmeding> hm?
15:01:11 <tomsmeding> even ignoring bottom
15:01:17 <tomsmeding> there ain't enough dependence
15:01:22 <tomsmeding> unless you want to introduce singletons
15:01:42 <tomsmeding> (n ~ Int, IsEven n, IsOdd n) doesn't kind-check
15:02:47 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.1.1)
15:03:21 ncf . o O ( a type is even if it is finite and has even cardinality... )
15:03:46 <tomsmeding> :p I guess
15:08:30 <haskellbridge> 05<i​rregularsphere> ...so `exists` with `~` is basically a weaker form of dependency
15:08:46 <tomsmeding> haven't I just been trying to argue it's _not_ dependency? :p
15:09:00 <haskellbridge> 05<i​rregularsphere> emphasis on "weaker"
15:09:42 <ncf> exists is dependent
15:10:08 <ncf> it's just restricted to types
15:10:47 <ncf> or... things that have a kind, i guess
15:11:00 tomsmeding has always interpreted "dependent" as meaning "a type depending on a term"
15:11:20 <tomsmeding> types depending on types is just... polymorphism, right?
15:11:29 <tomsmeding> though this is a terminology discussion at this point
15:12:05 <ncf> you're right; i hate those
15:12:22 <tomsmeding> then let's not get into the weeds :p
15:12:45 <ncf> but e.g. https://en.wikipedia.org/wiki/Lambda_cube does use the weaker meaning of "dependency"
15:13:12 <tomsmeding> ah I see
15:15:22 × m1dnight quits (~christoph@78-22-2-15.access.telenet.be) (Quit: WeeChat 4.1.1)
15:15:49 m1dnight joins (~christoph@78-22-2-15.access.telenet.be)
15:18:03 × ddellacosta quits (~ddellacos@ool-44c73d16.dyn.optonline.net) (Ping timeout: 256 seconds)
15:19:11 × euleritian quits (~euleritia@dynamic-176-006-197-230.176.6.pool.telefonica.de) (Ping timeout: 256 seconds)
15:19:19 <kuribas> tomsmeding: but in a dependent language a type is a term.
15:19:26 <tomsmeding> which haskell is not!
15:19:50 <__monty__> Does Type-in-Type affect this?
15:19:59 <kuribas> right, so haskell doesn't have a dependent type, just things which look similar.
15:20:10 <tomsmeding> kuribas: that's what I'd say
15:20:23 <ncf> __monty__: not really
15:21:01 <danse-nr3> terminology discussions are annoying but they do help
15:21:07 <tomsmeding> % type T = forall n. (n ~ Int, Eq n, Ord n) => n
15:21:07 <yahb2> <interactive>:99:1: error: ; • Illegal equational constraint n ~ Int ; (Use GADTs or TypeFamilies to permit this) ; • In the type synonym declaration for ‘T’
15:21:11 <tomsmeding> % :set -XGADTs
15:21:11 <yahb2> <no output>
15:21:13 <kuribas> tomsmeding: not yet at least :)
15:21:13 <tomsmeding> % type T = forall n. (n ~ Int, Eq n, Ord n) => n
15:21:13 <yahb2> <no output>
15:21:25 <tomsmeding> ghc accepts this and only because of TypeInType I suspect :p
15:21:57 <ncf> seems to work without TypeInType
15:22:00 <tomsmeding> whether it has any useful meaning, however...
15:22:09 <tomsmeding> ncf: how are you turning off TypeInType?
15:22:13 <kuribas> tomsmeding: maybe never, but every once in a while I hear some progress has been made...
15:22:15 <ncf> :set -XNoTypeInType
15:22:22 <tomsmeding> ncf: https://downloads.haskell.org/ghc/latest/docs/users_guide/exts/poly_kinds.html#extension-TypeInType
15:22:26 <tomsmeding> the thing cannot be turned off
15:22:30 × m1dnight quits (~christoph@78-22-2-15.access.telenet.be) (Quit: WeeChat 4.1.1)
15:22:32 <ncf> ugh
15:22:40 <tomsmeding> that bridge has been burned a while ago
15:22:46 m1dnight joins (~christoph@78-22-2-15.access.telenet.be)
15:23:05 euleritian joins (~euleritia@dynamic-176-006-200-141.176.6.pool.telefonica.de)
15:23:11 <tomsmeding> kuribas: all hope is not lost but things are slow :p
15:25:07 <haskellbridge> 05<i​rregularsphere> reading this discussion felt like zoning out
15:26:46 tri joins (~tri@ool-18bbef1a.static.optonline.net)
15:26:47 son0p joins (~ff@181.32.158.171)
15:26:54 <haskellbridge> 05<i​rregularsphere> _...burned?_
15:27:18 <tomsmeding> it's not the right english idiom but I couldn't think of the right one
15:27:43 <danse-nr3> i thought /burning bridges/ was an idiom
15:28:08 <danse-nr3> oh i see
15:28:11 <tomsmeding> it is, but iirc it's more for leaving people leaving behind bad relations
15:28:25 <tomsmeding> this is more like "the choice has been made, no turning back now"
15:28:33 <danse-nr3> feels suited to all irreversible actions
15:28:33 <ncf> the ship has sailed
15:28:39 <tomsmeding> ncf: thank you
15:29:04 <tomsmeding> that's the one :)
15:29:05 <danse-nr3> i think cortez did burn some ships as well, by the way (=
15:29:22 akegalj joins (~akegalj@cpe-188-129-77-238.dynamic.amis.hr)
15:29:34 <danse-nr3> they were the crews' bridges to the old world
15:31:22 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 276 seconds)
15:40:12 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
15:42:17 × danse-nr3 quits (~danse@rm-19-51-222.service.infuturo.it) (Ping timeout: 268 seconds)
15:42:45 <EvanR> that ship has sailed
15:43:03 <EvanR> that can of woopass was opened
15:44:22 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
15:48:02 mima joins (~mmh@dhcp-138-246-3-41.dynamic.eduroam.mwn.de)
15:52:44 azimut joins (~azimut@gateway/tor-sasl/azimut)
15:55:22 <mauke> that rubicon has been crossed
15:56:08 danse-nr3 joins (~danse@rm-19-9-134.service.infuturo.it)
15:59:32 tri joins (~tri@ool-18bbef1a.static.optonline.net)
16:00:57 statusbot4 joins (~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com)
16:01:12 Pixi` joins (~Pixi@user/pixi)
16:01:16 × akegalj quits (~akegalj@cpe-188-129-77-238.dynamic.amis.hr) (Quit: leaving)
16:01:20 phma joins (phma@2001:5b0:212a:ca28:8adb:c496:397:1cd2)
16:01:51 Feuermagier_ joins (~Feuermagi@user/feuermagier)
16:01:51 × Feuermagier quits (~Feuermagi@user/feuermagier) (Killed (platinum.libera.chat (Nickname regained by services)))
16:01:51 Feuermagier_ is now known as Feuermagier
16:01:56 hamster joins (~ham@user/ham)
16:02:11 × euleritian quits (~euleritia@dynamic-176-006-200-141.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
16:02:29 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
16:02:40 Katarushisu12 joins (~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net)
16:02:45 kimiamania4648 joins (~65804703@user/kimiamania)
16:02:53 qhong_ joins (~qhong@DN160vrd000d6kpg009l6c0000fj.stanford.edu)
16:03:01 pounce_ joins (~pounce@user/cute/pounce)
16:03:11 siers69 joins (~ij@user/ij)
16:03:21 mniip_ joins (mniip@libera/staff/mniip)
16:03:33 p3n_ joins (~p3n@2a00:19a0:3:7c:0:d9c6:7cf6:1)
16:03:35 stefan-_- joins (~cri@42dots.de)
16:03:37 cptaffe` joins (~cptaffe@user/cptaffe)
16:03:38 nitrix_ joins (~nitrix@user/nitrix)
16:03:40 CiaoSen joins (~Jura@2a05:5800:2ba:a600:ca4b:d6ff:fec1:99da)
16:03:42 swistak- joins (~swistak@185.21.216.141)
16:03:50 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 260 seconds)
16:03:57 krei-se joins (~krei-se@p508747fd.dip0.t-ipconnect.de)
16:03:57 mhatta_ joins (~mhatta@www21123ui.sakura.ne.jp)
16:04:38 YoungFrawg joins (~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be)
16:04:49 × phma quits (phma@2001:5b0:212a:ca28:8adb:c496:397:1cd2) (Read error: Connection reset by peer)
16:05:42 phma joins (phma@2001:5b0:210b:d438:d098:3d2c:a016:35e3)
16:05:53 takuan_dozo joins (~takuan@178-116-218-225.access.telenet.be)
16:06:11 ski_ joins (~ski@remote11.chalmers.se)
16:06:29 RemiYuko joins (~licht@user/akechishiro)
16:06:33 qqq_ joins (~qqq@92.43.167.61)
16:07:46 × earthy quits (~arthurvl@77-174-49-144.fixed.kpn.net) (Ping timeout: 264 seconds)
16:08:35 × mhatta quits (~mhatta@www21123ui.sakura.ne.jp) (Ping timeout: 264 seconds)
16:08:35 × stefan-_ quits (~cri@42dots.de) (Ping timeout: 264 seconds)
16:08:35 × p3n quits (~p3n@217.198.124.246) (Ping timeout: 264 seconds)
16:08:35 × swistak quits (~swistak@185.21.216.141) (Ping timeout: 264 seconds)
16:08:35 × qhong quits (~qhong@rescomp-21-400677.stanford.edu) (Ping timeout: 264 seconds)
16:08:35 × cptaffe quits (~cptaffe@user/cptaffe) (Ping timeout: 264 seconds)
16:08:35 × vulpine quits (xfnw@tilde.team) (Ping timeout: 264 seconds)
16:08:35 × pounce quits (~pounce@user/cute/pounce) (Ping timeout: 264 seconds)
16:08:35 × phma_ quits (~phma@host-67-44-208-39.hnremote.net) (Ping timeout: 264 seconds)
16:08:36 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 264 seconds)
16:08:36 × qqq quits (~qqq@92.43.167.61) (Ping timeout: 264 seconds)
16:08:36 × AkechiShiro quits (~licht@user/akechishiro) (Ping timeout: 264 seconds)
16:08:36 × ham quits (~ham@user/ham) (Ping timeout: 264 seconds)
16:08:36 × kimiamania464 quits (~65804703@user/kimiamania) (Ping timeout: 264 seconds)
16:08:36 × Vajb quits (~Vajb@n7kymlrhl8zspe1o45k-1.v6.elisa-mobile.fi) (Ping timeout: 264 seconds)
16:08:36 × krei-se- quits (~krei-se@p508747fd.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
16:08:36 × YoungFrog quits (~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be) (Ping timeout: 264 seconds)
16:08:37 × siers quits (~ij@user/ij) (Ping timeout: 264 seconds)
16:08:37 × nitrix quits (~nitrix@user/nitrix) (Ping timeout: 264 seconds)
16:08:37 × Pixi quits (~Pixi@user/pixi) (Ping timeout: 264 seconds)
16:08:37 × ski quits (~ski@remote11.chalmers.se) (Ping timeout: 264 seconds)
16:08:37 × mmhat quits (~mmh@p200300f1c724f9e1ee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
16:08:37 × statusbot quits (~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) (Ping timeout: 264 seconds)
16:08:37 × Katarushisu1 quits (~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net) (Ping timeout: 264 seconds)
16:08:38 cptaffe` is now known as cptaffe
16:08:38 Katarushisu12 is now known as Katarushisu1
16:08:39 nitrix_ is now known as nitrix
16:08:40 kimiamania4648 is now known as kimiamania464
16:08:41 pounce_ is now known as pounce
16:08:41 YoungFrawg is now known as YoungFrog
16:08:53 × mniip quits (mniip@libera/staff/mniip) (Read error: Connection reset by peer)
16:13:01 × synapse quits (~synapse@176.254.244.83) (Ping timeout: 256 seconds)
16:14:50 Square joins (~Square@user/square)
16:16:55 synapse joins (~synapse@176.254.244.83)
16:17:55 vulpine joins (xfnw@tilde.team)
16:18:15 mmhat joins (~mmh@p200300f1c724f9e1ee086bfffe095315.dip0.t-ipconnect.de)
16:20:27 mniip_ is now known as mniip
16:26:22 ski_ is now known as ski
16:37:18 × chele quits (~chele@user/chele) (Remote host closed the connection)
16:47:02 × kmein quits (~weechat@user/kmein) (Quit: ciao kakao)
16:47:05 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:f06f:8f74:1e14:400c) (Remote host closed the connection)
16:47:23 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:558a:c642:c5e9:5691)
16:51:07 econo_ joins (uid147250@id-147250.tinside.irccloud.com)
16:52:53 × CiaoSen quits (~Jura@2a05:5800:2ba:a600:ca4b:d6ff:fec1:99da) (Ping timeout: 240 seconds)
16:55:09 kmein joins (~weechat@user/kmein)
16:57:16 tri joins (~tri@ool-18bbef1a.static.optonline.net)
16:59:41 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 268 seconds)
17:00:36 euleritian joins (~euleritia@dynamic-046-114-163-142.46.114.pool.telefonica.de)
17:01:47 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 264 seconds)
17:02:38 × danse-nr3 quits (~danse@rm-19-9-134.service.infuturo.it) (Ping timeout: 260 seconds)
17:03:27 × potato44 quits (uid421314@id-421314.lymington.irccloud.com) (Quit: Connection closed for inactivity)
17:03:30 × euleritian quits (~euleritia@dynamic-046-114-163-142.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
17:03:49 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
17:11:32 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 4.1.2)
17:11:59 × mmhat quits (~mmh@p200300f1c724f9e1ee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 4.2.0)
17:17:09 × fendor quits (~fendor@2a02:8388:1605:d100:267b:1353:13d7:4f0c) (Ping timeout: 260 seconds)
17:18:40 tzh joins (~tzh@c-71-193-181-0.hsd1.or.comcast.net)
17:24:28 jmdaemon joins (~jmdaemon@user/jmdaemon)
17:26:58 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Quit: ERC (IRC client for Emacs 27.1))
17:31:38 Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542)
17:36:40 × troydm quits (~troydm@user/troydm) (Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset)
17:36:56 lottaquestions joins (~nick@2607:fa49:503d:b200:7e84:60b6:2c6a:f57e)
17:37:00 troydm joins (~troydm@user/troydm)
17:40:12 × mulk quits (~mulk@p5b2dc93f.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
17:40:57 × steew quits (~steew@user/steew) (Remote host closed the connection)
17:43:24 × rosco quits (~rosco@175.136.156.77) (Remote host closed the connection)
17:45:12 mulk joins (~mulk@p5b2dc93f.dip0.t-ipconnect.de)
17:47:42 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Quit: ChaiTRex)
17:48:15 ChaiTRex joins (~ChaiTRex@user/chaitrex)
18:06:55 __monty_1 joins (~toonn@user/toonn)
18:08:35 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
18:08:37 × __monty__ quits (~toonn@user/toonn) (Ping timeout: 246 seconds)
18:08:45 __monty_1 is now known as __monty__
18:08:50 mc47 joins (~mc47@xmonad/TheMC47)
18:16:07 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 240 seconds)
18:18:08 × Natch quits (~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se) (Ping timeout: 252 seconds)
18:18:22 ChaiTRex joins (~ChaiTRex@user/chaitrex)
18:20:06 Natch joins (~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se)
18:22:38 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Read error: Connection reset by peer)
18:23:05 ChaiTRex joins (~ChaiTRex@user/chaitrex)
18:25:12 × hololeap quits (~quassel@user/hololeap) (Quit: Bye)
18:26:17 hololeap joins (~quassel@user/hololeap)
18:30:38 Erutuon joins (~Erutuon@user/erutuon)
18:32:49 × Square quits (~Square@user/square) (Ping timeout: 264 seconds)
18:42:31 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 240 seconds)
18:44:52 ChaiTRex joins (~ChaiTRex@user/chaitrex)
18:47:25 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
18:47:53 ChaiTRex joins (~ChaiTRex@user/chaitrex)
18:52:37 sroso joins (~sroso@user/SrOso)
18:54:28 × Lycurgus quits (~georg@user/Lycurgus) (Quit: leaving)
18:57:15 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
18:57:43 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
18:58:27 × trev quits (~trev@user/trev) (Quit: trev)
19:00:57 potato44 joins (uid421314@id-421314.lymington.irccloud.com)
19:10:46 peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com)
19:13:22 tri joins (~tri@ool-18bbef1a.static.optonline.net)
19:14:12 <haskellbridge> 15<J​ade> why does the source of `Control.Category` a `RULE` `(p . q) . r = p . (q . r)`?
19:14:25 <haskellbridge> 15<J​ade> How does this help optimization specifically?
19:15:49 Square joins (~Square@user/square)
19:17:51 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 260 seconds)
19:25:01 × mc47 quits (~mc47@xmonad/TheMC47) (Ping timeout: 264 seconds)
19:26:43 × peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 260 seconds)
19:28:23 × mima quits (~mmh@dhcp-138-246-3-41.dynamic.eduroam.mwn.de) (Ping timeout: 256 seconds)
19:30:06 tri joins (~tri@ool-18bbef1a.static.optonline.net)
19:32:29 fendor joins (~fendor@2a02:8388:1605:d100:267b:1353:13d7:4f0c)
19:34:16 <monochrom> Under lazy evaluation, `((f . g) . h) x` incurs one more step than `(f . (g . h)) x`
19:34:31 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 255 seconds)
19:38:54 × szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
19:48:39 mikess joins (~mikess@user/mikess)
19:51:40 jargon joins (~jargon@211.sub-174-205-225.myvzw.com)
19:55:30 × pastly quits (~pastly@gateway/tor-sasl/pastly) (Remote host closed the connection)
19:56:03 pastly joins (~pastly@gateway/tor-sasl/pastly)
20:00:02 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
20:00:12 tri joins (~tri@ool-18bbef1a.static.optonline.net)
20:01:31 Zmzi joins (rscastilho@user/Zmzi)
20:03:15 × Zmzi quits (rscastilho@user/Zmzi) (Remote host closed the connection)
20:05:01 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 276 seconds)
20:14:26 jinsun joins (~jinsun@user/jinsun)
20:17:13 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
20:24:26 × jinsun quits (~jinsun@user/jinsun) ()
20:29:17 tri joins (~tri@ool-18bbef1a.static.optonline.net)
20:30:47 mima joins (~mmh@aftr-62-216-211-120.dynamic.mnet-online.de)
20:34:10 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 264 seconds)
20:39:50 × phma quits (phma@2001:5b0:210b:d438:d098:3d2c:a016:35e3) (Read error: Connection reset by peer)
20:40:07 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
20:41:16 phma joins (phma@2001:5b0:211f:c9b8:8d72:9b4c:9f04:5951)
20:43:22 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
20:48:10 waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
20:49:50 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
20:59:19 peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com)
21:00:21 tri joins (~tri@ool-18bbef1a.static.optonline.net)
21:03:57 dsrt^ joins (~cd@c-98-242-74-66.hsd1.ga.comcast.net)
21:05:28 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 276 seconds)
21:09:20 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Remote host closed the connection)
21:12:14 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:558a:c642:c5e9:5691) (Remote host closed the connection)
21:14:03 × igemnace quits (~ian@user/igemnace) (Ping timeout: 268 seconds)
21:17:49 × peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 264 seconds)
21:20:43 × potato44 quits (uid421314@id-421314.lymington.irccloud.com) (Quit: Connection closed for inactivity)
21:26:28 × fendor quits (~fendor@2a02:8388:1605:d100:267b:1353:13d7:4f0c) (Remote host closed the connection)
21:26:58 <haskellbridge> 15<J​ade> ohh okay, thank you
21:30:28 tri joins (~tri@ool-18bbef1a.static.optonline.net)
21:31:02 irrgit joins (~irrgit@86.106.90.226)
21:35:01 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 268 seconds)
21:42:14 × yeahitsme quits (~bob@user/yeahitsme) (Read error: Connection reset by peer)
21:42:37 yeahitsme joins (~bob@2a01:799:15e2:1800:8bf3:5e36:1335:cc51)
21:45:00 earthy joins (~arthurvl@2a02-a469-f5e2-1-83d2-ca43-57a2-dc81.fixed6.kpn.net)
21:49:01 × __monty__ quits (~toonn@user/toonn) (Ping timeout: 264 seconds)
21:49:03 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 256 seconds)
21:49:35 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:558a:c642:c5e9:5691)
21:56:21 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:03:54 __monty__ joins (~toonn@user/toonn)
22:06:19 × lottaquestions quits (~nick@2607:fa49:503d:b200:7e84:60b6:2c6a:f57e) (Ping timeout: 260 seconds)
22:17:31 yotta joins (~cha0s@14.191.144.106)
22:22:35 <yotta> Does anybody know the proper way to recover the file descriptor from FD? There is a mkFD function but there is not a reverse function to recover the low level file descriptor.
22:26:52 <mauke> which FD?
22:29:21 <tomsmeding> yotta: System.Posix.Internals.FD is just CInt, and GHC.IO.FD.FD has an fdFD field
22:29:45 tri joins (~tri@ool-18bbef1a.static.optonline.net)
22:32:35 <yotta> I'm talking about GHC.IO.FD.FD. I'm aware of fdFD but FD also have the fdIsNonBlocking constructor. The later wraps around an Int not CInt
22:32:54 <tomsmeding> yotta: that's how haddock renders a record ;)
22:33:06 <tomsmeding> those are two fields of the record; there is just one constructor, called FD
22:33:21 <yotta> oh, my mistake
22:34:30 <mauke> how is that not a boolean
22:34:31 × tri quits (~tri@ool-18bbef1a.static.optonline.net) (Ping timeout: 276 seconds)
22:34:55 <Axman6> True, False, NullPointerException
22:35:09 <mauke> isNonBlocking fd = fdIsNonBlocking fd /= 0
22:35:15 <mauke> ö_ö
22:35:15 <Axman6> wait, that's Java's bool
22:37:09 <Rembane> NullPointerException is a very long name for _|_
22:40:54 × jargon quits (~jargon@211.sub-174-205-225.myvzw.com) (Remote host closed the connection)
22:44:20 × thegeekinside quits (~thegeekin@189.180.85.240) (Ping timeout: 252 seconds)
22:47:05 thegeekinside joins (~thegeekin@189.180.85.240)
22:50:41 × michalz quits (~michalz@185.246.207.203) (Quit: ZNC 1.8.2 - https://znc.in)
22:52:04 × waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 276 seconds)
23:14:18 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
23:14:52 stiell joins (~stiell@gateway/tor-sasl/stiell)
23:16:23 wlhn joins (~wenzel@dl5nxl8j-r4kxslv6t5kt-3.rev.dnainternet.fi)
23:16:44 × takuan_dozo quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
23:21:09 × acidjnk quits (~acidjnk@p200300d6e737e7577de83db70375434d.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
23:26:23 kayvan joins (~user@52-119-115-185.PUBLIC.monkeybrains.net)
23:33:35 × kaskal quits (~kaskal@2001:4bb8:2dc:65bd:8282:e361:c97e:4971) (Ping timeout: 260 seconds)
23:34:18 kaskal joins (~kaskal@2001:4bb8:2c3:39c1:ff3f:d58:4fd9:e10c)
23:42:37 ft joins (~ft@p508dbda4.dip0.t-ipconnect.de)
23:47:11 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
23:48:35 Sgeo joins (~Sgeo@user/sgeo)
23:49:40 <EvanR> except and unless some jackass is unironically catching NullPointerExceptions
23:59:28 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)

All times are in UTC on 2024-01-23.