2022/04/27

2022-04-27 00:03:39 +0200motherfsck(~motherfsc@user/motherfsck) (Ping timeout: 240 seconds)
2022-04-27 00:04:09 +0200malinoskj2906(~malinoskj@48.170-avail-pool-cc.sccoast.net)
2022-04-27 00:04:13 +0200malinoskj290(~malinoskj@48.170-avail-pool-cc.sccoast.net) (Read error: Connection reset by peer)
2022-04-27 00:05:26 +0200anomal(~anomal@87.227.196.109)
2022-04-27 00:07:11 +0200acidjnk(~acidjnk@p200300d0c73b45335982c41922b7b0a0.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2022-04-27 00:07:58 +0200kuribas(~user@ptr-17d51enjtkmzpg60wq1.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
2022-04-27 00:11:58 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-04-27 00:12:46 +0200mikoto-chan(~mikoto-ch@213.177.151.239) (Read error: Connection reset by peer)
2022-04-27 00:13:18 +0200mikoto-chan(~mikoto-ch@213.177.151.239)
2022-04-27 00:16:07 +0200xff0x_(~xff0x@om126167099166.29.openmobile.ne.jp)
2022-04-27 00:16:57 +0200dolio(~dolio@130.44.130.54) (Quit: ZNC 1.8.2 - https://znc.in)
2022-04-27 00:17:43 +0200dolio(~dolio@130.44.130.54)
2022-04-27 00:17:56 +0200mikoto-chan(~mikoto-ch@213.177.151.239) (Ping timeout: 246 seconds)
2022-04-27 00:19:06 +0200raym(~raym@user/raym) (Ping timeout: 272 seconds)
2022-04-27 00:19:36 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-04-27 00:21:47 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds)
2022-04-27 00:24:04 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-04-27 00:24:25 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2022-04-27 00:24:34 +0200raym(~raym@user/raym)
2022-04-27 00:25:57 +0200machinedgod(~machinedg@24.105.81.50) (Ping timeout: 276 seconds)
2022-04-27 00:29:24 +0200yauhsien(~yauhsien@61-231-19-191.dynamic-ip.hinet.net)
2022-04-27 00:34:24 +0200yauhsien(~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Ping timeout: 276 seconds)
2022-04-27 00:39:04 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-04-27 00:42:38 +0200jhagborg(~jhagborg@068-187-237-099.res.spectrum.com)
2022-04-27 00:45:35 +0200dhil(~dhil@cpc103052-sgyl39-2-0-cust260.18-2.cable.virginm.net) (Ping timeout: 246 seconds)
2022-04-27 00:46:48 +0200fendor_(~fendor@178.115.43.124.wireless.dyn.drei.com) (Remote host closed the connection)
2022-04-27 00:47:45 +0200bshelden(~bshelden@S010664777d493f93.vf.shawcable.net) ()
2022-04-27 00:50:28 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5)
2022-04-27 00:51:48 +0200bontaq(~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 240 seconds)
2022-04-27 00:56:17 +0200 <EvanR> "this field must be named 'stuff' because it really could be anything" sounds like my first day at my first PHP job
2022-04-27 00:56:37 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-04-27 00:56:37 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-04-27 00:56:37 +0200wroathe(~wroathe@user/wroathe)
2022-04-27 00:56:37 +0200gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2022-04-27 00:56:39 +0200 <EvanR> and it wasn't at google
2022-04-27 00:57:37 +0200jhagborg(~jhagborg@068-187-237-099.res.spectrum.com) (Remote host closed the connection)
2022-04-27 00:58:01 +0200jhagborg(~jhagborg@068-187-237-099.res.spectrum.com)
2022-04-27 00:58:43 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2022-04-27 01:02:25 +0200gentauro(~gentauro@user/gentauro)
2022-04-27 01:03:00 +0200Henson(~kvirc@107-179-133-201.cpe.teksavvy.com)
2022-04-27 01:04:14 +0200 <Henson> shlevy[m]: was it even possible to build Nix packages when the results from GHC were non-deterministic? I mean, they could build, but would their store hashes be different every time?
2022-04-27 01:06:54 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 276 seconds)
2022-04-27 01:07:39 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-04-27 01:07:49 +0200jhagborg(~jhagborg@068-187-237-099.res.spectrum.com) (Remote host closed the connection)
2022-04-27 01:08:14 +0200jhagborg(~jhagborg@068-187-237-099.res.spectrum.com)
2022-04-27 01:13:03 +0200Midjak(~Midjak@82.66.147.146) (Quit: This computer has gone to sleep)
2022-04-27 01:16:56 +0200 <shlevy[m]> <Henson> "shlevy: was it even possible..." <- No, because the store hashes are not* determined based on the hash of the result, they are determined based on the hash of the inputs + the build script
2022-04-27 01:16:56 +0200 <shlevy[m]> *: Slight oversimplification, some builds are determined based on the hash (e.g. fetching a tarball from the internet) and very recently there's a "content-addressed" store feature which is not essential to this point.
2022-04-27 01:24:04 +0200hololeap(~hololeap@user/hololeap) (Ping timeout: 240 seconds)
2022-04-27 01:24:55 +0200 <Henson> shlevy[m]: ok, so the store hashes could be the same, even though the hash out the outputs were different. I think at NixCon 2020 Eelco mentioned something about this, and how they were working on content-based hashing.
2022-04-27 01:27:00 +0200hololeap(~hololeap@user/hololeap)
2022-04-27 01:30:33 +0200 <meejah> iirc, the store hashes are a hash of the config / nix-expression?
2022-04-27 01:31:22 +0200machinedgod(~machinedg@24.105.81.50)
2022-04-27 01:33:12 +0200lisq(~quassel@lis.moe) (Quit: lisq)
2022-04-27 01:46:47 +0200 <Guest91> Looks like I have as many packages installed with cabal as I'm going to get.  Many thanks for all the help!
2022-04-27 01:47:46 +0200Henson(~kvirc@107-179-133-201.cpe.teksavvy.com) (Quit: KVIrc 5.0.0 Aria http://www.kvirc.net/)
2022-04-27 01:47:51 +0200 <geekosaur> the ones you can't reinstall you can copy and edit their package registration files, then "ghc-pkg recache --global"
2022-04-27 01:47:52 +0200vysn(~vysn@user/vysn)
2022-04-27 01:52:39 +0200abrantesasf(~abrantesa@189.115.192.139) (Remote host closed the connection)
2022-04-27 01:58:15 +0200jgeerds(~jgeerds@d53604b0.access.ecotel.net) (Ping timeout: 276 seconds)
2022-04-27 02:02:21 +0200 <Guest91> Hrm, I will try that if anyone squawks a lot.  But one is a package that the instructor wrote and which looks like it needs updating, so I think I can potentially use this as a prod.
2022-04-27 02:03:48 +0200 <geekosaur> mm, right, if it's a different ghc version that won't fly
2022-04-27 02:04:16 +0200 <geekosaur> thought you meant stuff like base or ghc-prim you can't rebuild, you can only copy
2022-04-27 02:05:50 +0200 <Guest91> Ah, no, none of those.  And at least two of them look like they might be abandoned dependencies for other things, not in direct use.
2022-04-27 02:07:21 +0200jhagborg(~jhagborg@068-187-237-099.res.spectrum.com) (Ping timeout: 276 seconds)
2022-04-27 02:08:10 +0200 <dons> morning all.
2022-04-27 02:08:16 +0200 <jackdk> morning dons.
2022-04-27 02:08:32 +0200 <sclv> mornin
2022-04-27 02:10:45 +0200Guest91(~Guest91@caliga.eecs.tufts.edu) (Quit: Client closed)
2022-04-27 02:18:03 +0200 <geekosaur> o/
2022-04-27 02:18:56 +0200lis(~quassel@lis.moe)
2022-04-27 02:19:10 +0200 <Axman6> o/
2022-04-27 02:20:14 +0200anomal(~anomal@87.227.196.109) (Remote host closed the connection)
2022-04-27 02:22:26 +0200stackdroid18(14094@user/stackdroid) (Quit: hasta la vista... tchau!)
2022-04-27 02:24:14 +0200xff0x_(~xff0x@om126167099166.29.openmobile.ne.jp) (Read error: Connection reset by peer)
2022-04-27 02:32:19 +0200troydm(~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 240 seconds)
2022-04-27 02:32:25 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-04-27 02:32:25 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-04-27 02:32:25 +0200wroathe(~wroathe@user/wroathe)
2022-04-27 02:32:43 +0200xkuru(~xkuru@user/xkuru)
2022-04-27 02:38:23 +0200jhagborg(~jhagborg@068-187-237-099.res.spectrum.com)
2022-04-27 02:39:25 +0200 <exarkun> does (=<<) have a common name
2022-04-27 02:39:53 +0200 <Bulby[m]> extend?
2022-04-27 02:40:19 +0200 <hpc> (>>=) is "bind", so i would probably say "flip bind"
2022-04-27 02:40:43 +0200 <geekosaur> Bulby[m], extend is something else
2022-04-27 02:40:46 +0200 <hpc> honestly, the way i say most haskell stuff out loud is "i need a whiteboard"
2022-04-27 02:40:56 +0200 <geekosaur> ^
2022-04-27 02:41:06 +0200 <Bulby[m]> always mix them up
2022-04-27 02:41:06 +0200 <Bulby[m]> oh that's monad, not the dual of monadd
2022-04-27 02:41:08 +0200 <exarkun> hpc: :)
2022-04-27 02:41:09 +0200off^(~off@50.227.69.228)
2022-04-27 02:41:22 +0200 <geekosaur> right, it's just flipped (>>=), not comonad
2022-04-27 02:42:48 +0200 <Bulby[m]> what are comands again
2022-04-27 02:43:35 +0200vicfred(~vicfred@user/vicfred) (Quit: Leaving)
2022-04-27 02:45:32 +0200 <Axman6> @hoogle Comonad
2022-04-27 02:45:33 +0200 <lambdabot> module Control.Comonad
2022-04-27 02:45:33 +0200 <lambdabot> Control.Comonad class Functor w => Comonad w
2022-04-27 02:45:33 +0200 <lambdabot> module Rebase.Control.Comonad
2022-04-27 02:46:07 +0200 <Bulby[m]> not helpful... please define it in english
2022-04-27 02:46:23 +0200 <Axman6> ok, just hold on a second there champ
2022-04-27 02:47:16 +0200 <Axman6> @hoogle (=>>)
2022-04-27 02:47:16 +0200 <lambdabot> Control.Comonad (=>>) :: Comonad w => w a -> (w a -> b) -> w b
2022-04-27 02:47:16 +0200 <lambdabot> Rebase.Prelude (=>>) :: Comonad w => w a -> (w a -> b) -> w b
2022-04-27 02:47:16 +0200 <lambdabot> Language.Fixpoint.Misc (=>>) :: Monad m => m b -> (b -> m a) -> m b
2022-04-27 02:48:00 +0200 <Axman6> https://hackage.haskell.org/package/comonad-5.0.8/docs/Control-Comonad.html
2022-04-27 02:48:38 +0200 <Bulby[m]> i mean that is extreme technically speak to me
2022-04-27 02:48:46 +0200 <EvanR> comonads are like space suits at a nightclub
2022-04-27 02:48:50 +0200 <Bulby[m]> s/technically/technical/
2022-04-27 02:48:53 +0200 <Bulby[m]> WHAT
2022-04-27 02:49:07 +0200 <EvanR> not to be confused with burritos
2022-04-27 02:49:16 +0200 <Axman6> yeah that's the most accurate answer, particularly if you're going to be so rude
2022-04-27 02:49:29 +0200gurkenglas(~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de) (Ping timeout: 246 seconds)
2022-04-27 02:49:31 +0200 <Bulby[m]> oops
2022-04-27 02:49:45 +0200vonfry(~user@139.227.167.170)
2022-04-27 02:49:50 +0200 <Bulby[m]> yeah saying "not helpful" is rude 😓
2022-04-27 02:49:55 +0200 <Axman6> it sure is
2022-04-27 02:49:59 +0200lis(~quassel@lis.moe) (Quit: lis)
2022-04-27 02:50:08 +0200lis(~quassel@lis.moe)
2022-04-27 02:50:23 +0200 <Bulby[m]> oh well. i'll see if i can find some blog post about it
2022-04-27 02:50:25 +0200 <Axman6> partricularly when you are perfectly capable of using Google or your search engione of choice instead of demending others explain topics to you
2022-04-27 02:50:36 +0200 <exarkun> Bulby[m]: An answer isn't intrinsically helpful or not. It might be helpful to you, or not. You might explain what you don't understand about it.
2022-04-27 02:50:59 +0200dostoevsky(~5c42c5384@user/dostoevsky)
2022-04-27 02:51:04 +0200 <Bulby[m]> ah
2022-04-27 02:51:26 +0200 <EvanR> this metadiscussion may indicate no one has a good explanation of comonads in a macro right now
2022-04-27 02:51:34 +0200 <Bulby[m]> those answers weren't insightful because they were just type signatures - I would like an explanation of a concept
2022-04-27 02:51:50 +0200lislisq
2022-04-27 02:51:59 +0200 <exarkun> Some might say that the type signatures fully encapsulate the concept.
2022-04-27 02:52:05 +0200 <Axman6> They weren't answers to your question, they were me looking to find where the code is that contains the answers
2022-04-27 02:52:11 +0200 <EvanR> they are similar to monads in that they at their heart an algebraic concept made of signatures and laws
2022-04-27 02:52:26 +0200 <Bulby[m]> well I am not fully trained in reading type signatures 😅
2022-04-27 02:52:32 +0200 <EvanR> and not something which works by analogy, as hilarious as the nightclub post was
2022-04-27 02:52:38 +0200 <Axman6> then you may not be ready to understand comonads
2022-04-27 02:53:11 +0200 <Bulby[m]> you're right I only half grasp a lot of concepts.... not really "grok" it
2022-04-27 02:53:17 +0200 <EvanR> one way to get closer to an abstract idea is to look at examples, of which there are not many for comonads (in haskell)
2022-04-27 02:54:13 +0200 <EvanR> example 1 is the Store comonad which is a data structure paid with a pointer into the structure
2022-04-27 02:54:34 +0200 <EvanR> example 2 is an infinite stream
2022-04-27 02:54:40 +0200 <Axman6> NonEmpty is probably the first interesting instance people run into
2022-04-27 02:55:03 +0200 <EvanR> s/paid/paired/
2022-04-27 02:55:08 +0200 <Bulby[m]> what about an empty list makes it not a comonad
2022-04-27 02:55:22 +0200 <Axman6> can you write extract :: [a] -> a?
2022-04-27 02:55:31 +0200 <Bulby[m]> oh
2022-04-27 02:55:37 +0200 <EvanR> the normal list type can't be a comonad
2022-04-27 02:55:37 +0200 <Bulby[m]> i see
2022-04-27 02:55:55 +0200 <Bulby[m]> NonEmpty is the thing constructed with :| right
2022-04-27 02:56:14 +0200 <EvanR> since empty is possible and stops you from implementing extract. Something other languages might cheat at and return null, breaking the abstraction
2022-04-27 02:56:22 +0200 <Axman6> how about you have a go at writing the Comonad instance for NonEmpty - extract :: NonEmpty a -> a shoiuld be easy
2022-04-27 02:56:28 +0200 <Bulby[m]> WE HATE NULL
2022-04-27 02:56:44 +0200 <geekosaur> we don't hate it, we just make it announce itself with Maybe
2022-04-27 02:56:49 +0200 <Axman6> duplicate :: NonEmpty a -> NonEmpty (NonEmpty a) is more interesting, there's many functions with that type
2022-04-27 02:56:56 +0200 <geekosaur> instead of just popping up out of nowhere
2022-04-27 02:57:04 +0200 <Bulby[m]> Axman6: obviously would be head (or the non empty equivilant)
2022-04-27 02:57:11 +0200 <Bulby[m]> geekosaur: maybe is amazing
2022-04-27 02:57:17 +0200 <Bulby[m]> which is why rust is also amazing
2022-04-27 02:57:20 +0200 <Bulby[m]> no null
2022-04-27 02:57:23 +0200 <Bulby[m]> but option
2022-04-27 02:57:24 +0200machinedgod(~machinedg@24.105.81.50) (Ping timeout: 276 seconds)
2022-04-27 02:57:42 +0200 <EvanR> i wish people would steal more stuff from haskell than just Maybe xD
2022-04-27 02:57:59 +0200 <Bulby[m]> \o/ yes
2022-04-27 02:58:16 +0200 <Axman6> like a decent type system
2022-04-27 02:58:36 +0200 <EvanR> is haskell the treasure cave in alladin, and Maybe is the magic lamp you should touch nothing but
2022-04-27 02:58:45 +0200 <monochrom> heh
2022-04-27 02:58:57 +0200 <Bulby[m]> Axman6: (NonEmpty a) = [a] : [] ?
2022-04-27 02:59:01 +0200 <Bulby[m]> oops
2022-04-27 02:59:08 +0200 <Bulby[m]> pretend that's a :|
2022-04-27 02:59:14 +0200 <Axman6> data But = But; lamp = Nothing :: Maybe But
2022-04-27 02:59:17 +0200 <monochrom> I don't even hate partial functions, really.
2022-04-27 02:59:54 +0200 <monochrom> But yeah null is more annoying than partial functions.
2022-04-27 02:59:55 +0200 <Axman6> duplicate (a :| xs) = ? :| ??
2022-04-27 03:00:15 +0200 <monochrom> OK, I feel that way, but I guess it's subjective.
2022-04-27 03:00:43 +0200 <jackdk> Lenses. They should definitely steal lenses (and the other optics).
2022-04-27 03:00:51 +0200 <EvanR> partial functions would be cool if they were guaranteed to crash not loop
2022-04-27 03:01:03 +0200 <Axman6> yeah oop dot syntax is so limited
2022-04-27 03:01:35 +0200 <jackdk> I remember writing ruby years ago, and wanting a function `hget :: k -> Map k v -> v`. When I discovered lens, it was like I'd finally found what I was looking for, implemented by people who thought about the problem thoroughly.
2022-04-27 03:01:37 +0200 <monochrom> Although, recently on discourse a beginner was wondering why head is not [a] -> [a]. They might be thinking straight actually. :)
2022-04-27 03:02:25 +0200 <EvanR> [a] is Maybe on ACID
2022-04-27 03:02:35 +0200Flonk(~Flonk@vps-zap441517-1.zap-srv.com)
2022-04-27 03:02:49 +0200 <Axman6> not sure how durable it is EvanR
2022-04-27 03:02:52 +0200 <EvanR> lol
2022-04-27 03:03:12 +0200 <EvanR> based
2022-04-27 03:03:27 +0200mmhat(~mmh@55d4c7b7.access.ecotel.net) (Quit: WeeChat 3.5)
2022-04-27 03:10:23 +0200alx741(~alx741@host-181-198-243-150.netlife.ec) (Ping timeout: 256 seconds)
2022-04-27 03:10:27 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-04-27 03:16:34 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-04-27 03:16:55 +0200nattiestnate(~nate@202.138.250.13)
2022-04-27 03:17:04 +0200jhagborg(~jhagborg@068-187-237-099.res.spectrum.com) (Read error: Connection reset by peer)
2022-04-27 03:17:24 +0200jhagborg(~jhagborg@068-187-237-099.res.spectrum.com)
2022-04-27 03:19:51 +0200frost(~frost@user/frost)
2022-04-27 03:21:05 +0200xff0x_(~xff0x@125x102x200x106.ap125.ftth.ucom.ne.jp)
2022-04-27 03:24:06 +0200 <jackdk> EvanR: [a] is Maybe (Cofree Maybe a) :)
2022-04-27 03:24:45 +0200off^(~off@50.227.69.228) (Remote host closed the connection)
2022-04-27 03:28:51 +0200slack1256(~slack1256@191.126.227.217)
2022-04-27 03:29:48 +0200vysn(~vysn@user/vysn) (Ping timeout: 240 seconds)
2022-04-27 03:30:18 +0200 <dibblego> [] can be semi-comonad though
2022-04-27 03:30:50 +0200 <jackdk> I think that's called Extend in semigroupoids
2022-04-27 03:35:11 +0200 <EvanR> semi-comonad as a thing changes the question from "what is a _" to "why should I care" because it sounds like you can make up a name for any damn thing xD
2022-04-27 03:41:02 +0200yauhsien(~yauhsien@61-231-19-191.dynamic-ip.hinet.net)
2022-04-27 03:43:40 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds)
2022-04-27 03:50:00 +0200jhagborg(~jhagborg@068-187-237-099.res.spectrum.com) (Ping timeout: 272 seconds)
2022-04-27 03:50:20 +0200Sgeo_(~Sgeo@user/sgeo)
2022-04-27 03:50:59 +0200jhagborg(~jhagborg@068-187-237-099.res.spectrum.com)
2022-04-27 03:52:53 +0200Sgeo(~Sgeo@user/sgeo) (Ping timeout: 256 seconds)
2022-04-27 03:53:33 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-04-27 03:53:38 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 250 seconds)
2022-04-27 03:54:56 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 250 seconds)
2022-04-27 03:56:33 +0200andrey__(~andrey@p200300dbcf089700a418461232068800.dip0.t-ipconnect.de)
2022-04-27 03:59:05 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-04-27 03:59:08 +0200andrey_(~andrey@p200300dbcf1dd700efb6dcb1d2488e69.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2022-04-27 04:01:09 +0200Sgeo(~Sgeo@user/sgeo)
2022-04-27 04:02:38 +0200Sgeo_(~Sgeo@user/sgeo) (Ping timeout: 246 seconds)
2022-04-27 04:11:56 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2022-04-27 04:13:51 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds)
2022-04-27 04:14:01 +0200Sgeo(~Sgeo@user/sgeo)
2022-04-27 04:14:17 +0200tremon(~tremon@83-84-18-241.cable.dynamic.v4.ziggo.nl) (Quit: getting boxed in)
2022-04-27 04:15:19 +0200vonfry(~user@139.227.167.170) (Ping timeout: 240 seconds)
2022-04-27 04:17:15 +0200koala_man(~vidar@157.146.251.23.bc.googleusercontent.com) (Read error: Connection reset by peer)
2022-04-27 04:18:59 +0200koala_man(~vidar@157.146.251.23.bc.googleusercontent.com)
2022-04-27 04:21:24 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2022-04-27 04:21:24 +0200finn_elija(~finn_elij@user/finn-elija/x-0085643)
2022-04-27 04:21:24 +0200finn_elijaFinnElija
2022-04-27 04:30:55 +0200lbseale(~ep1ctetus@user/ep1ctetus) (Read error: Connection reset by peer)
2022-04-27 04:35:32 +0200td_(~td@94.134.91.110) (Ping timeout: 246 seconds)
2022-04-27 04:37:40 +0200td_(~td@muedsl-82-207-238-136.citykom.de)
2022-04-27 04:38:39 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 240 seconds)
2022-04-27 04:39:24 +0200inversed_(~inversed@94.13.111.159) (Ping timeout: 272 seconds)
2022-04-27 04:40:03 +0200fraznel(~fuag1@174.127.249.180)
2022-04-27 04:40:55 +0200terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat)
2022-04-27 04:41:02 +0200 <fraznel> hey all, purely academic question. What if I have a structure that has multiple viable implementations of foldable such as a binary tree and i have resion that some would be preferred in some situations over others. Is there a language extension or other way of providing multiple instances of foldable nad selecting one explicitly at the call site?
2022-04-27 04:41:52 +0200terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1)
2022-04-27 04:43:55 +0200 <[Leary]> fraznel: That's pretty much what newtypes are for.
2022-04-27 04:43:56 +0200yauhsien(~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Ping timeout: 246 seconds)
2022-04-27 04:44:04 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
2022-04-27 04:44:59 +0200deadmarshal_(~deadmarsh@95.38.114.81)
2022-04-27 04:45:53 +0200 <abastro[m]> I guess one coukd have `LeftFold Tree` and `RightFold Tree`
2022-04-27 04:46:06 +0200 <monochrom> We solved "Integer is a monoid by + but also a monoid by *" by devising the newtype wrappers Sum and Product.
2022-04-27 04:46:16 +0200 <monochrom> Or maybe worked around, heh.
2022-04-27 04:46:40 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-04-27 04:47:36 +0200 <fraznel> so only through newtypes does an implementation of foldable exist?
2022-04-27 04:47:42 +0200 <abastro[m]> Hey but at least it is functional workaround :D
2022-04-27 04:47:56 +0200 <monochrom> No, only through newtype can you offer multiple choices.
2022-04-27 04:48:35 +0200 <monochrom> If there is no rivaling "standard", we would not newtype-wrap it. Consider Integer and Ord.
2022-04-27 04:49:34 +0200zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2022-04-27 04:49:49 +0200goepsilongo_(~goepsilon@2603-7000-ab00-62ed-2999-d4f9-6568-086f.res6.spectrum.com)
2022-04-27 04:49:51 +0200deadmarshal_(~deadmarsh@95.38.114.81) (Ping timeout: 276 seconds)
2022-04-27 04:50:16 +0200 <fraznel> can i look at source that uses this technique somewhere? hmm, i'm not understanding how newtype works maybe, wouldn't that mean that you would have to have Tree be infix foldable by default but LeftFold Tree havea left instance of foldable etc?
2022-04-27 04:50:39 +0200 <abastro[m]> Oh I should have rather said
2022-04-27 04:50:50 +0200goepsilongo(~goepsilon@2603-7000-ab00-62ed-8077-381b-a4b0-5dd2.res6.spectrum.com) (Ping timeout: 250 seconds)
2022-04-27 04:50:57 +0200 <abastro[m]> newtype LeftTree = LT Tree
2022-04-27 04:50:57 +0200 <abastro[m]> newtype RightTree = RT Tree
2022-04-27 04:51:12 +0200 <abastro[m]> And implement Foldable instances for LT Tree and RT Tree
2022-04-27 04:51:28 +0200 <abastro[m]> (Now I see why DeriveFoldable/DeriveTraversable is controversial)
2022-04-27 04:51:56 +0200 <fraznel> oh i see now, makes sense :)
2022-04-27 04:53:00 +0200 <abastro[m]> <del>DeriveFoldable is opinionated, we need remove ree</del>
2022-04-27 04:53:25 +0200 <abastro[m]> Btw, for Monoid, there are single instance possible for product types. Why do we not have DeriveMonoid?
2022-04-27 04:55:01 +0200 <abastro[m]> Also DeriveEnum
2022-04-27 04:55:09 +0200 <abastro[m]> (For sum type)
2022-04-27 04:55:56 +0200 <[Leary]> fraznel: BTW, you might find that existing newtypes already give you what you want; e.g. via something like dualFoldMap f = getDual . foldMap (Dual . f)
2022-04-27 04:56:59 +0200 <abastro[m]> Is Foldable instance of Dual sufficiently efficient?
2022-04-27 04:57:13 +0200 <abastro[m]> You know.. e.g. on list, it won't work well.
2022-04-27 04:58:43 +0200Unicorn_Princess(~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Quit: Leaving)
2022-04-27 04:58:47 +0200mbuf(~Shakthi@122.174.175.185)
2022-04-27 04:58:53 +0200 <[Leary]> We're only using the Monoid instance of Dual, with the a single Foldable instance for the Tree. The performance should be the same as regular foldMap.
2022-04-27 04:59:26 +0200 <abastro[m]> Oh
2022-04-27 04:59:32 +0200 <abastro[m]> I missed that part
2022-04-27 05:00:08 +0200 <abastro[m]> Wait, consider how foldr is implemented
2022-04-27 05:01:26 +0200 <abastro[m]> toList would be even more intrusive
2022-04-27 05:02:04 +0200 <fraznel> I'm not comfy with what the dual of something means, would be into reading any blog post or etc to get used to it. Whatever i read probably wont stick until i find a reason to use it. I thought dual was a category thing that you had to evaluate, can you auto get the dual instances of anything or does it need a "dual" like instance
2022-04-27 05:02:48 +0200 <[Leary]> If Tree is a simple binary tree, then dualFoldMap just sees the reversed tree. Dual a <> Dual b = b <> a. That's all you really need to know here.
2022-04-27 05:02:53 +0200 <abastro[m]> I think dual is just there being interpreted like "Reverse"
2022-04-27 05:03:16 +0200inversed(~inversed@94.13.111.159)
2022-04-27 05:03:31 +0200 <[Leary]> Err, = Dual (b <> a).
2022-04-27 05:03:48 +0200notzmv(~zmv@user/notzmv)
2022-04-27 05:04:05 +0200 <abastro[m]> Hm having only `dualFoldMap` avoids problem of foldr/toList
2022-04-27 05:05:26 +0200 <fraznel> in Dual a <> Dual b = Dual (b <> a) why is the Dual qualifier needed in the right hand side
2022-04-27 05:06:03 +0200 <fraznel> if Dual is reverse, oh, nvm
2022-04-27 05:07:25 +0200 <monochrom> both sides need the same wrapper for types to match up.
2022-04-27 05:07:54 +0200 <abastro[m]> Perhaps it has another categorical meaning but I only know about part where it means reverse. "Dual" is overloaded term in math, as well.
2022-04-27 05:08:41 +0200 <fraznel> i miss workin in haskell
2022-04-27 05:08:42 +0200 <abastro[m]> Group dual, category dual, point <-> line dual ...
2022-04-27 05:09:11 +0200 <monochrom> Yeah I think this one is named Dual because the author ran out of good names.
2022-04-27 05:09:13 +0200 <fraznel> the first time i saw Dual was reading about co-monads in a post by ekmett so i think I lumped it in with co-monad stuff in my mind
2022-04-27 05:09:37 +0200 <monochrom> DON'T TRUST MEANINGFUL NAMES
2022-04-27 05:10:14 +0200 <abastro[m]> Hahahahaha
2022-04-27 05:10:24 +0200 <abastro[m]> Naming gives meaning to both the object and the name
2022-04-27 05:12:38 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 246 seconds)
2022-04-27 05:13:48 +0200jhagborg(~jhagborg@068-187-237-099.res.spectrum.com) (Ping timeout: 250 seconds)
2022-04-27 05:14:28 +0200 <abastro[m]> "Dual" and "Co-" are two incredibly overloaded terms in matu
2022-04-27 05:14:32 +0200 <abastro[m]> Math*
2022-04-27 05:15:24 +0200[Leary](~Leary]@122-58-90-96-vdsl.sparkbb.co.nz) (Remote host closed the connection)
2022-04-27 05:15:28 +0200 <fraznel> good to know, next time i run into co or dual i'll go straight to the instance definitions to reason about em :P
2022-04-27 05:20:53 +0200kimjetwav(~user@2607:fea8:2362:b400:5885:9431:ca89:9663) (Quit: ERC 5.4.1 (IRC client for GNU Emacs 29.0.50))
2022-04-27 05:21:34 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-04-27 05:22:11 +0200 <fraznel> thanks for the help grokking that stuff :)
2022-04-27 05:23:07 +0200abrantesasf(~abrantesa@179.217.49.34)
2022-04-27 05:24:25 +0200abrantesasf(~abrantesa@179.217.49.34) (Remote host closed the connection)
2022-04-27 05:25:40 +0200hexfive(~eric@50.35.83.177)
2022-04-27 05:27:44 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-04-27 05:32:06 +0200abastro(~abab9579@192.249.26.179)
2022-04-27 05:33:39 +0200 <dmj`> "meaningful names considered harmful"
2022-04-27 05:34:42 +0200pooryorick(~pooryoric@87-119-174-173.tll.elisa.ee) (Ping timeout: 276 seconds)
2022-04-27 05:34:56 +0200pooryorick(~pooryoric@87-119-174-173.tll.elisa.ee)
2022-04-27 05:39:59 +0200abastro(~abab9579@192.249.26.179) (Ping timeout: 256 seconds)
2022-04-27 05:42:37 +0200vicfred(~vicfred@user/vicfred)
2022-04-27 05:47:33 +0200searemind(~searemind@122.161.49.249)
2022-04-27 05:48:02 +0200searemind(~searemind@122.161.49.249) (Client Quit)
2022-04-27 05:48:49 +0200abrantesasf(~abrantesa@179.217.49.34)
2022-04-27 05:49:33 +0200abrantesasf(~abrantesa@179.217.49.34) (Remote host closed the connection)
2022-04-27 05:52:44 +0200jhagborg(~jhagborg@068-187-237-099.res.spectrum.com)
2022-04-27 05:52:52 +0200 <EvanR> it seems tricky to come up with and use unmeaningful names, since they gain meaning through use
2022-04-27 05:53:19 +0200nattiestnate(~nate@202.138.250.13) (Quit: WeeChat 3.5)
2022-04-27 05:53:35 +0200nattiestnate(~nate@202.138.250.10)
2022-04-27 05:53:46 +0200goepsilongo_(~goepsilon@2603-7000-ab00-62ed-2999-d4f9-6568-086f.res6.spectrum.com) (Quit: Textual IRC Client: www.textualapp.com)
2022-04-27 05:56:59 +0200jhagborg(~jhagborg@068-187-237-099.res.spectrum.com) (Client Quit)
2022-04-27 05:57:19 +0200vonfry(~user@139.227.167.170)
2022-04-27 05:57:36 +0200vonfry(~user@139.227.167.170) (Remote host closed the connection)
2022-04-27 06:00:17 +0200chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2022-04-27 06:00:38 +0200chexum(~quassel@gateway/tor-sasl/chexum)
2022-04-27 06:01:11 +0200jargon(~jargon@174-22-223-120.phnx.qwest.net)
2022-04-27 06:03:50 +0200nattiestnate(~nate@202.138.250.10) (Quit: WeeChat 3.5)
2022-04-27 06:11:23 +0200irfan(~irfan@user/irfan)
2022-04-27 06:13:29 +0200 <Andrew> "IO Monad"
2022-04-27 06:13:56 +0200 <Andrew> https://blog.jle.im/entry/io-monad-considered-harmful.html
2022-04-27 06:14:12 +0200 <Andrew> I mean, it is technically a monad behind
2022-04-27 06:14:20 +0200 <Andrew> But there's very little monadic about it
2022-04-27 06:18:30 +0200 <monochrom> Yeah I just say IO.
2022-04-27 06:19:16 +0200 <monochrom> No one teaches school arithmetic by saying "the integer ring" all the time. It's just the integers.
2022-04-27 06:19:24 +0200cdman(~dcm@27.2.218.68)
2022-04-27 06:19:24 +0200cdman(~dcm@27.2.218.68) (Changing host)
2022-04-27 06:19:24 +0200cdman(~dcm@user/dmc/x-4369397)
2022-04-27 06:23:16 +0200 <monochrom> The R^3 differentiable Hausdorf manifold Lesbegue measurable Euclidean metric inner product vector space, defender of the faith, king of Narnia, emperor of the Lone Islands and other realms. >:)
2022-04-27 06:29:38 +0200mvk(~mvk@2607:fea8:5ce3:8500::aa1d) (Ping timeout: 250 seconds)
2022-04-27 06:34:17 +0200jargon(~jargon@174-22-223-120.phnx.qwest.net) (Remote host closed the connection)
2022-04-27 06:34:49 +0200jargon(~jargon@174-22-223-120.phnx.qwest.net)
2022-04-27 06:37:50 +0200deadmarshal_(~deadmarsh@95.38.114.81)
2022-04-27 06:47:54 +0200 <parsnip> i thought it was the integer module?
2022-04-27 06:50:12 +0200 <Inst[m]> does anyone know if there's a way to get Haskell to have automatic case fallthrough?
2022-04-27 06:50:13 +0200 <Inst[m]> i.e, if I have a partial function, and I have stacked case-ofs
2022-04-27 06:50:27 +0200 <Axman6> There's not a whole lot that you can do with IO that's useful without using the monad interface to it though
2022-04-27 06:50:41 +0200 <Inst[m]> right now, I'm using case k of {a -> y; _-> case k of {...
2022-04-27 06:51:16 +0200 <monochrom> Axman6: Same could be said of the integer ordered ring but meh.
2022-04-27 06:51:34 +0200 <monochrom> and defender of the faith.
2022-04-27 06:51:39 +0200 <monochrom> I mean >:)
2022-04-27 06:53:28 +0200 <monochrom> integer ordered module principle ideal unique factorization domain ring >:)
2022-04-27 06:53:39 +0200deadmarshal_(~deadmarsh@95.38.114.81) (Ping timeout: 240 seconds)
2022-04-27 06:54:41 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2022-04-27 06:55:43 +0200img(~img@user/img)
2022-04-27 06:56:11 +0200 <monochrom> Ugh, s/module/torsion-free module/ haha
2022-04-27 06:57:18 +0200img(~img@user/img) (Client Quit)
2022-04-27 06:57:37 +0200 <Axman6> geez man, so loose with your language! be more careful :P
2022-04-27 06:57:49 +0200 <Axman6> Someone might not know what you're talking about!
2022-04-27 06:58:44 +0200img(~img@user/img)
2022-04-27 07:04:14 +0200 <EvanR> The IO javascript callback chain
2022-04-27 07:04:40 +0200 <EvanR> (know your audience, I guess)
2022-04-27 07:07:35 +0200[Leary](~Leary]@122-58-90-96-vdsl.sparkbb.co.nz)
2022-04-27 07:10:11 +0200troydm(~troydm@host-176-37-124-197.b025.la.net.ua)
2022-04-27 07:14:26 +0200liz(~liz@host109-151-125-217.range109-151.btcentralplus.com) (Quit: Lost terminal)
2022-04-27 07:18:01 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2022-04-27 07:20:08 +0200yauhsien(~yauhsien@61-231-19-191.dynamic-ip.hinet.net)
2022-04-27 07:24:04 +0200raym(~raym@user/raym) (Ping timeout: 272 seconds)
2022-04-27 07:24:19 +0200yauhsien(~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2022-04-27 07:29:26 +0200raym(~raym@user/raym)
2022-04-27 07:34:26 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2022-04-27 07:34:35 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2022-04-27 07:35:51 +0200michalz(~michalz@185.246.204.125)
2022-04-27 07:35:58 +0200img(~img@user/img)
2022-04-27 07:45:34 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
2022-04-27 07:46:06 +0200jargon(~jargon@174-22-223-120.phnx.qwest.net) (Remote host closed the connection)
2022-04-27 07:46:11 +0200slack1256(~slack1256@191.126.227.217) (Remote host closed the connection)
2022-04-27 07:47:48 +0200Pickchea(~private@user/pickchea)
2022-04-27 07:48:27 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2022-04-27 07:49:51 +0200img(~img@user/img)
2022-04-27 07:52:35 +0200son0p(~ff@181.136.122.143) (Ping timeout: 256 seconds)
2022-04-27 07:58:16 +0200TheCoffeMaker(~TheCoffeM@user/thecoffemaker) (Ping timeout: 272 seconds)
2022-04-27 08:00:12 +0200TheCoffeMaker(~TheCoffeM@user/thecoffemaker)
2022-04-27 08:10:43 +0200[Leary](~Leary]@122-58-90-96-vdsl.sparkbb.co.nz) (Ping timeout: 256 seconds)
2022-04-27 08:15:23 +0200deadmarshal_(~deadmarsh@95.38.114.81)
2022-04-27 08:18:13 +0200briandaed(~briandaed@109.95.142.93.r.toneticgroup.pl)
2022-04-27 08:19:34 +0200 <jonathanx> Re:lenses. I've been looking into IndexedTraversals, but I'm considering bailing out. I'd like some help implementing the following= "deIndexed :: IndexedTraversal' Int (Vector a) a -> Lens.Traversal' (Vector a) (Int, a)"
2022-04-27 08:19:50 +0200 <jonathanx> Is there a Control.Lens function(s) to do that conversion?
2022-04-27 08:19:54 +0200[Leary](~Leary]@122-58-90-96-vdsl.sparkbb.co.nz)
2022-04-27 08:31:22 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:f733:1b0a:d908:7e84)
2022-04-27 08:33:30 +0200benin(~benin@183.82.204.110)
2022-04-27 08:36:24 +0200Midjak(~Midjak@82.66.147.146)
2022-04-27 08:38:42 +0200 <Axman6> you could do that as a Getter, but not a Traversal
2022-04-27 08:38:54 +0200 <Axman6> unless you really want to be able to change indixes of things
2022-04-27 08:39:00 +0200 <Axman6> indices*
2022-04-27 08:39:35 +0200mmhat(~mmh@55d4cafc.access.ecotel.net)
2022-04-27 08:41:26 +0200 <jonathanx> Nope, I dont. Hm.
2022-04-27 08:44:20 +0200 <jackdk> Axman6: or as a Fold?
2022-04-27 08:44:34 +0200 <Axman6> possibly
2022-04-27 08:44:53 +0200 <Axman6> Can't remember what the difference is
2022-04-27 08:44:55 +0200fraznel(~fuag1@174.127.249.180) (Quit: Leaving)
2022-04-27 08:48:44 +0200 <jackdk> Fold lets you compute any monoidal summary over the things you visit, getter locks you to getting the first
2022-04-27 08:48:47 +0200 <jackdk> AIUI
2022-04-27 08:48:59 +0200 <Axman6> Maybe I meant Getting?
2022-04-27 08:49:21 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-04-27 08:52:16 +0200jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-04-27 08:58:36 +0200jakalx(~jakalx@base.jakalx.net)
2022-04-27 08:59:19 +0200mikoto-chan(~mikoto-ch@84.199.144.235)
2022-04-27 09:00:17 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2022-04-27 09:00:19 +0200yauhsien(~yauhsien@61-231-19-191.dynamic-ip.hinet.net)
2022-04-27 09:06:15 +0200yauhsien(~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2022-04-27 09:06:17 +0200abastro(~abab9579@192.249.26.146)
2022-04-27 09:08:29 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2022-04-27 09:12:44 +0200alp_(~alp@user/alp)
2022-04-27 09:16:10 +0200TheCoffeMaker(~TheCoffeM@user/thecoffemaker) (Ping timeout: 272 seconds)
2022-04-27 09:17:59 +0200deadmarshal_(~deadmarsh@95.38.114.81) (Ping timeout: 240 seconds)
2022-04-27 09:20:49 +0200TheCoffeMaker(~TheCoffeM@user/thecoffemaker)
2022-04-27 09:24:58 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2022-04-27 09:25:34 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-04-27 09:27:16 +0200 <jackdk> % :i Fold
2022-04-27 09:27:34 +0200 <jackdk> where is yahb?
2022-04-27 09:28:41 +0200coot(~coot@213.134.190.95)
2022-04-27 09:30:36 +0200jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-04-27 09:31:03 +0200 <Axman6> jonathanx: There is a fairly fundamental difference between those two types - the former attached an Int to each a in the vector, and gives you the ability to change that a, but the index is immutable. The latter claimes to let you also change indices (which would be quite interesting if you didn't need to ensure that you had one index for every element of the input vector
2022-04-27 09:32:01 +0200chele(~chele@user/chele)
2022-04-27 09:32:20 +0200 <dminuoso> jonathanx: mind my asking, why exactly do you want this deIndexed in the first place?
2022-04-27 09:32:33 +0200 <dminuoso> I have a very vague idea of why you might think you need it, it's a smell
2022-04-27 09:33:22 +0200coot(~coot@213.134.190.95) (Client Quit)
2022-04-27 09:34:28 +0200 <dminuoso> I suspect what you're truly looking for is (<.) or (.>) instead.
2022-04-27 09:35:39 +0200bitmapper(uid464869@id-464869.lymington.irccloud.com)
2022-04-27 09:36:09 +0200jakalx(~jakalx@base.jakalx.net)
2022-04-27 09:36:49 +0200shriekingnoise(~shrieking@201.231.16.156) (Quit: Quit)
2022-04-27 09:41:03 +0200Pickchea(~private@user/pickchea) (Ping timeout: 276 seconds)
2022-04-27 09:46:01 +0200machinedgod(~machinedg@24.105.81.50)
2022-04-27 09:48:11 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2022-04-27 09:51:42 +0200acidjnk(~acidjnk@p200300d0c73b452571655f3915a3d16e.dip0.t-ipconnect.de)
2022-04-27 10:02:28 +0200son0p(~ff@181.136.122.143)
2022-04-27 10:05:28 +0200_ht(~quassel@231-169-21-31.ftth.glasoperator.nl)
2022-04-27 10:06:39 +0200haskl(~haskl@user/haskl) (Ping timeout: 240 seconds)
2022-04-27 10:08:48 +0200haskl(~haskl@user/haskl)
2022-04-27 10:09:40 +0200ccntrq(~Thunderbi@2a01:e34:eccb:b060:ae12:4cae:f662:1bed)
2022-04-27 10:11:54 +0200cosimone(~user@93-44-185-79.ip98.fastwebnet.it) (Ping timeout: 272 seconds)
2022-04-27 10:12:30 +0200CiaoSen(~Jura@p200300c95732ec002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-04-27 10:14:43 +0200cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2022-04-27 10:16:10 +0200dextaa4(~dextaa@user/dextaa)
2022-04-27 10:16:30 +0200gehmehgeh(~user@user/gehmehgeh)
2022-04-27 10:20:12 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 240 seconds)
2022-04-27 10:24:52 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-04-27 10:26:34 +0200chexum(~quassel@gateway/tor-sasl/chexum) (Ping timeout: 240 seconds)
2022-04-27 10:26:46 +0200chexum(~quassel@gateway/tor-sasl/chexum)
2022-04-27 10:31:28 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-04-27 10:32:13 +0200dextaa4(~dextaa@user/dextaa) (Remote host closed the connection)
2022-04-27 10:36:49 +0200deadmarshal_(~deadmarsh@95.38.114.81)
2022-04-27 10:41:40 +0200dextaa4(~dextaa@user/dextaa)
2022-04-27 10:42:29 +0200xaotuk(~sasha@net88-34-245-109.mbb.telenor.rs)
2022-04-27 10:53:03 +0200cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Remote host closed the connection)
2022-04-27 10:55:03 +0200mikoto-chan(~mikoto-ch@84.199.144.235) (Ping timeout: 256 seconds)
2022-04-27 10:57:58 +0200dextaa4(~dextaa@user/dextaa) (Remote host closed the connection)
2022-04-27 10:57:59 +0200jmdaemon(~jmdaemon@user/jmdaemon) (Ping timeout: 240 seconds)
2022-04-27 11:02:18 +0200krappix(~krappix@nat-eduroam-76-gw-01-lne.lille.inria.fr)
2022-04-27 11:03:37 +0200mikoto-chan(~mikoto-ch@37.230.126.249)
2022-04-27 11:04:28 +0200abastro(~abab9579@192.249.26.146) (Ping timeout: 272 seconds)
2022-04-27 11:05:59 +0200 <krappix> Hello, there is a way to debug a haskell app with stack or cabal ? For example, app installed by cabal, I want to run this app and put some breakpoint in Main.hs in order to figure out how this app work when I run it.
2022-04-27 11:07:35 +0200jgeerds(~jgeerds@d53604b0.access.ecotel.net)
2022-04-27 11:12:27 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2022-04-27 11:19:51 +0200yauhsien(~yauhsien@61-231-19-191.dynamic-ip.hinet.net)
2022-04-27 11:22:41 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-04-27 11:24:15 +0200kspalaiologos(~kspalaiol@user/kspalaiologos)
2022-04-27 11:25:03 +0200yauhsien(~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Ping timeout: 276 seconds)
2022-04-27 11:28:12 +0200chddr(~Thunderbi@91.226.35.182)
2022-04-27 11:29:39 +0200kuribas(~user@ip-188-118-57-242.reverse.destiny.be)
2022-04-27 11:31:33 +0200 <kuribas> hmm, in idris you could make liftA_N, where liftA_N 2 == liftA2, liftA_N 3 == liftA3, etc..
2022-04-27 11:31:51 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2022-04-27 11:32:08 +0200 <kuribas> or zipWithN, where zipWithN 1 == map, etc...
2022-04-27 11:32:08 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-04-27 11:32:15 +0200ubert1(~Thunderbi@2a02:8109:9880:303c:2c6d:3d80:b801:5482)
2022-04-27 11:34:31 +0200yauhsien(~yauhsien@61-231-19-191.dynamic-ip.hinet.net)
2022-04-27 11:36:07 +0200 <abastro[m]> kuribas: this is the main purpose of dependent types, isn't it?
2022-04-27 11:36:35 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds)
2022-04-27 11:37:20 +0200 <Maxdamantus> Not really, because that doesn't depend on runtime values.
2022-04-27 11:37:56 +0200 <Maxdamantus> You could do it in Haskell by making types that represent natural numbers.
2022-04-27 11:38:07 +0200mikoto-chan(~mikoto-ch@37.230.126.249) (Ping timeout: 256 seconds)
2022-04-27 11:38:08 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-04-27 11:39:37 +0200 <kuribas> you could do it with type families in haskell.
2022-04-27 11:40:08 +0200 <Maxdamantus> (technically, when you make the `zipWithN` that kuribas is talking about in Idris, it will use dependent types, but you might end up always calling `zipWithN` with static `Nat` values, so it's not a very good demonstration of dependent types)
2022-04-27 11:40:11 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 260 seconds)
2022-04-27 11:40:12 +0200 <kuribas> abastro[m]: it's one way to use them
2022-04-27 11:40:39 +0200mikoto-chan(~mikoto-ch@84.199.144.235)
2022-04-27 11:40:49 +0200 <kuribas> Maxdamantus: what's a "static" Nat value?
2022-04-27 11:41:42 +0200 <kuribas> the difference is that in haskell it would need a type level Nat, while in idris you pass a value level Nat.
2022-04-27 11:42:41 +0200 <Maxdamantus> Sure, so that's why it does technically use dependent types, but since you might always use static values it probably isn't a very good use of them.
2022-04-27 11:42:52 +0200 <Maxdamantus> same thing with `the`
2022-04-27 11:42:53 +0200 <kuribas> well, the concept of type level Nat doesn't exist in idris of course.
2022-04-27 11:43:05 +0200yauhsien(~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-04-27 11:43:48 +0200 <Maxdamantus> `the` in Idris uses dynamic typing, but most uses of it probably correspond with `::` in Haskell, which doesn't require dependent typing.
2022-04-27 11:43:49 +0200abastro(~abab9579@192.249.26.146)
2022-04-27 11:44:21 +0200 <Maxdamantus> the : (t: Type) -> t -> t
2022-04-27 11:44:39 +0200 <Maxdamantus> er, s/dynamic/dependent/
2022-04-27 11:45:10 +0200yauhsien(~yauhsien@61-231-19-191.dynamic-ip.hinet.net)
2022-04-27 11:45:41 +0200 <kuribas> part of what makes dependent types interesting is not what you cannot do without it, but also what becomes more ergonomic.
2022-04-27 11:45:48 +0200 <kuribas> Type level programming isn't very ergonomic in haskell.
2022-04-27 11:46:10 +0200 <kuribas> It's fine for simple problems, but can become hairy quickly.
2022-04-27 11:46:14 +0200cosimone(~user@93-44-185-79.ip98.fastwebnet.it)
2022-04-27 11:46:28 +0200 <kuribas> For example, extending servant.
2022-04-27 11:46:54 +0200epolanski(uid312403@id-312403.helmsley.irccloud.com)
2022-04-27 11:46:57 +0200 <kuribas> Using servant is fairly easy, but customizing it for your own needs is pretty complicated.
2022-04-27 11:48:45 +0200 <kuribas> A lot of dependently typed stuff can be hacked with haskell, but it usually isn't pretty.
2022-04-27 11:48:46 +0200xaotuk(~sasha@net88-34-245-109.mbb.telenor.rs) (Read error: Connection reset by peer)
2022-04-27 11:48:55 +0200 <kuribas> For example "singletons".
2022-04-27 11:49:11 +0200 <kuribas> The singleton problem especially arises because type and value level are distinct.
2022-04-27 11:50:18 +0200yauhsien(~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2022-04-27 11:50:44 +0200gurkenglas(~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de)
2022-04-27 11:57:02 +0200kuribas(~user@ip-188-118-57-242.reverse.destiny.be) (Ping timeout: 272 seconds)
2022-04-27 11:57:43 +0200yauhsien(~yauhsien@61-231-19-191.dynamic-ip.hinet.net)
2022-04-27 12:01:21 +0200mikoto-chan(~mikoto-ch@84.199.144.235) (Ping timeout: 256 seconds)
2022-04-27 12:01:57 +0200Flow(~none@gentoo/developer/flow) (Remote host closed the connection)
2022-04-27 12:02:07 +0200yauhsien(~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
2022-04-27 12:03:09 +0200 <abastro> Well I've been to arguments that one does not need singletons-y stuffs
2022-04-27 12:05:36 +0200krappix(~krappix@nat-eduroam-76-gw-01-lne.lille.inria.fr) (Ping timeout: 252 seconds)
2022-04-27 12:08:01 +0200Flow(~none@gentoo/developer/flow)
2022-04-27 12:09:27 +0200CiaoSen(~Jura@p200300c95732ec002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-04-27 12:13:01 +0200 <chddr> Hi! Does anyone have a good knowledge of System.Process and is willing to help a little? :)
2022-04-27 12:14:57 +0200rembo10(~rembo10@main.remulis.com) (Quit: ZNC 1.8.2 - https://znc.in)
2022-04-27 12:15:49 +0200rembo10(~rembo10@main.remulis.com)
2022-04-27 12:15:51 +0200 <chddr> I can't understand an issue, when I create a process with `std_out = CreatePipe`, then it seems that the output of my process is buffered and hGetLine on output handle blocks the execution of the rest of the program (hSetBuffering to NoBuffering doesn't help)
2022-04-27 12:15:52 +0200 <chddr> But if I specify std_out = Inherit, I can see as my program is executed that it prints in the same places where it buffered before
2022-04-27 12:17:24 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:f733:1b0a:d908:7e84) (Ping timeout: 240 seconds)
2022-04-27 12:17:26 +0200Brandon_1X(~brandon@178-79-138-117.ip.linodeusercontent.com)
2022-04-27 12:17:27 +0200 <chddr> But I want to access std_out of my process as a separate handle, i don't need it printed to std_out of the rest of a program. Any ideas what might be the problem here?
2022-04-27 12:17:37 +0200Brandon_1X(~brandon@178-79-138-117.ip.linodeusercontent.com) (Client Quit)
2022-04-27 12:22:11 +0200kuribas(~user@ip-188-118-57-242.reverse.destiny.be)
2022-04-27 12:24:38 +0200mikoto-chan(~mikoto-ch@213.177.151.239)
2022-04-27 12:26:13 +0200andrey(~andrey@p200300dbcf1ab3003d09e35965a7a51b.dip0.t-ipconnect.de)
2022-04-27 12:28:43 +0200andrey__(~andrey@p200300dbcf089700a418461232068800.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2022-04-27 12:29:58 +0200xff0x_(~xff0x@125x102x200x106.ap125.ftth.ucom.ne.jp) (Ping timeout: 272 seconds)
2022-04-27 12:31:08 +0200yauhsien(~yauhsien@61-231-19-191.dynamic-ip.hinet.net)
2022-04-27 12:31:25 +0200Everything(~Everythin@37.115.210.35)
2022-04-27 12:35:50 +0200yauhsien(~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-04-27 12:37:00 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:2363:e5e:a843:8cf3)
2022-04-27 12:38:27 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2022-04-27 12:39:51 +0200img(~img@user/img)
2022-04-27 12:40:19 +0200yauhsien(~yauhsien@61-231-19-191.dynamic-ip.hinet.net)
2022-04-27 12:41:00 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2022-04-27 12:41:45 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 276 seconds)
2022-04-27 12:42:14 +0200Lord_of_Life_Lord_of_Life
2022-04-27 12:45:00 +0200yauhsien(~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Ping timeout: 276 seconds)
2022-04-27 12:49:36 +0200CiaoSen(~Jura@p200300c95732ec002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-04-27 13:02:42 +0200abastro(~abab9579@192.249.26.146) (Ping timeout: 246 seconds)
2022-04-27 13:13:22 +0200xff0x_(~xff0x@om126167099166.29.openmobile.ne.jp)
2022-04-27 13:13:27 +0200abastro(~abab9579@192.249.26.146)
2022-04-27 13:14:19 +0200Pickchea(~private@user/pickchea)
2022-04-27 13:17:12 +0200acidjnk(~acidjnk@p200300d0c73b452571655f3915a3d16e.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
2022-04-27 13:18:07 +0200 <jackdk> I am not familiar with these libraries but I would try consuming the child's stdout in a thread
2022-04-27 13:18:49 +0200Brandon_IX(brandon@2a01:7e00::f03c:92ff:feab:6b7c)
2022-04-27 13:19:22 +0200stefan-_(~cri@42dots.de) (Ping timeout: 272 seconds)
2022-04-27 13:19:30 +0200 <tomsmeding> chddr: what child program are you running?
2022-04-27 13:19:53 +0200 <tomsmeding> The default behaviour of most programs is to switch their stdout to block-buffering mode when the output is not connected to a terminal
2022-04-27 13:21:03 +0200 <tomsmeding> compare e.g. `tr a-z A-Z` with `tr a-z A-Z | cat` in your terminal; for the second, copy-paste a longer piece of text a few times :p
2022-04-27 13:21:21 +0200 <tomsmeding> I expect this is the issue you're having, not anything related to System.Process
2022-04-27 13:21:48 +0200dhil(~dhil@cpc103052-sgyl39-2-0-cust260.18-2.cable.virginm.net)
2022-04-27 13:21:58 +0200 <tomsmeding> note: if you set std_out = Inherit, and your Haskell program has stdout connected to a terminal, then the child's stdout is also connected to a terminal so it stays in line-buffered output mode :p
2022-04-27 13:23:03 +0200stefan-_(~cri@42dots.de)
2022-04-27 13:23:22 +0200 <tomsmeding> some programs can be instructed to use line buffering anyway, e.g. GNU grep has `--line-buffered`
2022-04-27 13:24:10 +0200abrantesasf(~abrantesa@189.115.192.139)
2022-04-27 13:24:41 +0200abrantesasf(~abrantesa@189.115.192.139) (Remote host closed the connection)
2022-04-27 13:25:09 +0200 <tomsmeding> see also https://stackoverflow.com/a/11337109/1608468
2022-04-27 13:26:25 +0200 <tomsmeding> and the other answers in that thread, in case they are relevant
2022-04-27 13:30:19 +0200Pickchea(~private@user/pickchea) (Ping timeout: 240 seconds)
2022-04-27 13:30:53 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
2022-04-27 13:32:47 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-04-27 13:34:09 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-04-27 13:36:21 +0200benin(~benin@183.82.204.110) (Ping timeout: 276 seconds)
2022-04-27 13:38:23 +0200benin(~benin@183.82.204.110)
2022-04-27 13:38:24 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 246 seconds)
2022-04-27 13:44:22 +0200xaotuk(~sasha@2a06:5b00:15fe:9b00::2)
2022-04-27 13:46:44 +0200kspalaiologos(~kspalaiol@user/kspalaiologos) (Quit: Leaving)
2022-04-27 13:50:04 +0200notzmv(~zmv@user/notzmv)
2022-04-27 13:52:23 +0200krappix(~krappix@nat-eduroam-76-gw-01-lne.lille.inria.fr)
2022-04-27 13:55:39 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-04-27 13:59:13 +0200alp_(~alp@user/alp) (Ping timeout: 256 seconds)
2022-04-27 14:00:46 +0200searemind(~searemind@122.161.49.249)
2022-04-27 14:02:18 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-04-27 14:02:29 +0200zebrag(~chris@user/zebrag)
2022-04-27 14:04:16 +0200razetime(~quassel@117.254.34.238)
2022-04-27 14:05:16 +0200Guest4458(~Guest44@45.78.5.44.16clouds.com)
2022-04-27 14:05:34 +0200Guest4458(~Guest44@45.78.5.44.16clouds.com) (Client Quit)
2022-04-27 14:10:45 +0200searemind(~searemind@122.161.49.249) (Remote host closed the connection)
2022-04-27 14:12:17 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2022-04-27 14:13:26 +0200alp_(~alp@user/alp)
2022-04-27 14:21:51 +0200hololeap(~hololeap@user/hololeap) (Quit: Bye)
2022-04-27 14:25:45 +0200mikoto-chan(~mikoto-ch@213.177.151.239) (Ping timeout: 276 seconds)
2022-04-27 14:27:05 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2022-04-27 14:27:41 +0200 <exarkun> is something like (a -> IO b) -> (b -> IO c) -> a -> IO (b, c) well-known? (maybe not necessarily IO, maybe just a Functor?)
2022-04-27 14:28:04 +0200 <exarkun> (I asked hoogle already)
2022-04-27 14:28:04 +0200acidjnk(~acidjnk@p200300d0c73b452571655f3915a3d16e.dip0.t-ipconnect.de)
2022-04-27 14:29:49 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-04-27 14:30:47 +0200Vajb(~Vajb@2001:999:504:1dda:267d:6860:bdf7:f68b)
2022-04-27 14:31:13 +0200 <jackdk> exarkun: I am not aware of a name for this thing, but you could build it out of `(>=>)` and `relude`'s `traverseToSnd`
2022-04-27 14:33:07 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2022-04-27 14:33:38 +0200 <exarkun> cool, thanks
2022-04-27 14:35:41 +0200cosimone(~user@93-44-185-79.ip98.fastwebnet.it) (Remote host closed the connection)
2022-04-27 14:36:22 +0200cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2022-04-27 14:37:46 +0200oxide(~lambda@user/oxide)
2022-04-27 14:38:13 +0200yauhsien(~yauhsien@61-231-19-191.dynamic-ip.hinet.net)
2022-04-27 14:38:15 +0200raym(~raym@user/raym) (Ping timeout: 246 seconds)
2022-04-27 14:38:51 +0200 <dminuoso> exarkun: Yes.
2022-04-27 14:39:18 +0200abastro(~abab9579@192.249.26.146) (Ping timeout: 246 seconds)
2022-04-27 14:39:33 +0200 <dminuoso> Ah hold on, I didn't spot the (a -> ...) inputs.
2022-04-27 14:41:37 +0200 <dminuoso> It reminds me of `<+> :: Applicative f => f a -> f b -> f (a, b)` as a different way to think of Applicative
2022-04-27 14:43:11 +0200 <[exa]> underrated representation^
2022-04-27 14:43:28 +0200 <dminuoso> Well it's also not completely honest represetation.
2022-04-27 14:44:15 +0200 <geekosaur> I tried generalizing it to Profunctor and still didn't find anything
2022-04-27 14:45:15 +0200 <dminuoso> p a b -> p b c -> p a (b, c)
2022-04-27 14:45:18 +0200 <dminuoso> Certainly looks a bit more charming
2022-04-27 14:45:50 +0200 <dminuoso> I guess this looks a bit like Strong
2022-04-27 14:47:21 +0200abastro(~abab9579@192.249.26.146)
2022-04-27 14:49:12 +0200alx741(~alx741@host-181-198-243-150.netlife.ec)
2022-04-27 14:52:56 +0200 <dminuoso> uncurry' :: Strong p => p a (b -> c) -> p (a, b) c
2022-04-27 14:52:57 +0200 <dminuoso> Mmm
2022-04-27 14:54:16 +0200raym(~raym@user/raym)
2022-04-27 14:54:38 +0200 <exarkun> now I gotta learn about profunctors but before I can do that I gotta learn about hasks
2022-04-27 14:55:57 +0200 <dminuoso> Honestly you dont.
2022-04-27 14:57:03 +0200 <dminuoso> If Functor is a type that you can fmap over one type variable, and Contravariant is a type that contramap over one type variable, a Profunctor is both a Functor in one and Contravariant in the other.
2022-04-27 14:57:06 +0200 <dminuoso> That's it.
2022-04-27 14:57:07 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 260 seconds)
2022-04-27 14:57:41 +0200 <dminuoso> lmap :: (a -> b) -> p b c -> p a c
2022-04-27 14:57:43 +0200 <dminuoso> rmap :: (b -> c) -> p a b -> p a c
2022-04-27 14:57:45 +0200 <dminuoso> Nothing more.
2022-04-27 14:57:50 +0200 <[exa]> exarkun: I learned profunctors from prolens in a "type implementations for these types" game
2022-04-27 14:58:55 +0200 <dminuoso> You can start by the observation that you can covariantly map over (->) in the output type and contravariantly map over the input type. The Profunctor instance of (->) is nothing more than `lmap` (contravariantly mapping over the input) and `rmap` (covariantly mapping over the output).
2022-04-27 15:04:34 +0200mmhat(~mmh@55d4cafc.access.ecotel.net) (Quit: WeeChat 3.5)
2022-04-27 15:05:09 +0200Unicorn_Princess(~Unicorn_P@93-103-228-248.dynamic.t-2.net)
2022-04-27 15:14:39 +0200raym(~raym@user/raym) (Ping timeout: 240 seconds)
2022-04-27 15:20:42 +0200raym(~raym@user/raym)
2022-04-27 15:20:43 +0200Pickchea(~private@user/pickchea)
2022-04-27 15:23:56 +0200CiaoSen(~Jura@p200300c95732ec002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2022-04-27 15:24:59 +0200raym(~raym@user/raym) (Ping timeout: 240 seconds)
2022-04-27 15:26:39 +0200geranim0(~geranim0@modemcable242.171-178-173.mc.videotron.ca)
2022-04-27 15:31:00 +0200raym(~raym@user/raym)
2022-04-27 15:31:22 +0200__monty__(~toonn@user/toonn)
2022-04-27 15:36:04 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-04-27 15:38:59 +0200abastro(~abab9579@192.249.26.146) (Ping timeout: 240 seconds)
2022-04-27 15:40:39 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2022-04-27 15:41:43 +0200yauhsien(~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-04-27 15:42:16 +0200xsarnik(xsarnik@lounge.fi.muni.cz) (Ping timeout: 248 seconds)
2022-04-27 15:42:28 +0200yauhsien(~yauhsien@61-231-19-191.dynamic-ip.hinet.net)
2022-04-27 15:43:06 +0200xstill-(xstill@fimu/xstill) (Ping timeout: 276 seconds)
2022-04-27 15:44:34 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-04-27 15:47:39 +0200yauhsien(~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Ping timeout: 276 seconds)
2022-04-27 15:51:00 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-04-27 15:51:00 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-04-27 15:51:00 +0200wroathe(~wroathe@user/wroathe)
2022-04-27 15:51:12 +0200Guest81(~Guest81@103.159.43.230)
2022-04-27 15:51:12 +0200xsarnik(xsarnik@lounge.fi.muni.cz)
2022-04-27 15:51:18 +0200 <Guest81> Hi
2022-04-27 15:51:34 +0200 <[exa]> o/
2022-04-27 15:51:40 +0200 <Guest81> What up
2022-04-27 15:52:59 +0200Guest81(~Guest81@103.159.43.230) (Client Quit)
2022-04-27 15:53:14 +0200Guest81(~Guest81@103.159.43.230)
2022-04-27 15:54:09 +0200raym(~raym@user/raym) (Ping timeout: 276 seconds)
2022-04-27 15:54:43 +0200xstill-(xstill@fimu/xstill)
2022-04-27 15:54:57 +0200Guest81(~Guest81@103.159.43.230) (Client Quit)
2022-04-27 15:55:23 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-04-27 15:55:29 +0200yauhsien(~yauhsien@61-231-19-191.dynamic-ip.hinet.net)
2022-04-27 15:55:32 +0200raym(~raym@user/raym)
2022-04-27 15:58:24 +0200bontaq(~user@ool-45779fe5.dyn.optonline.net)
2022-04-27 15:58:41 +0200kaph_(~kaph@net-2-42-128-49.cust.vodafonedsl.it)
2022-04-27 15:58:50 +0200kaph(~kaph@net-2-42-128-49.cust.vodafonedsl.it) (Read error: Connection reset by peer)
2022-04-27 16:06:28 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-04-27 16:09:55 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 260 seconds)
2022-04-27 16:10:51 +0200 <shapr> good MORNING
2022-04-27 16:11:03 +0200Pickchea(~private@user/pickchea) (Ping timeout: 276 seconds)
2022-04-27 16:11:12 +0200 <geekosaur> ohai
2022-04-27 16:12:34 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-04-27 16:12:41 +0200 <tomsmeding> good afternoon :)
2022-04-27 16:12:41 +0200 <absence> what could be wrong when "TimeZone minutes summer name <- getCurrentTimeZone" returns the right name, but the offset (minutes) is 0?
2022-04-27 16:13:05 +0200 <absence> also summer is false
2022-04-27 16:13:07 +0200 <shapr> I did a 20 minute presentation on random testing yesterday, was fun https://github.com/shapr/randomtesting
2022-04-27 16:13:52 +0200shriekingnoise(~shrieking@201.231.16.156)
2022-04-27 16:14:56 +0200 <shapr> I also got a really cool idea from someone during a test run of the presentation, they said "Could QuickCheck memoize random inputs to make each unique?"
2022-04-27 16:15:18 +0200frost(~frost@user/frost) (Ping timeout: 252 seconds)
2022-04-27 16:15:22 +0200zer0bitz(~zer0bitz@2001:2003:f444:8f00:d98c:fe22:c3d0:13a8)
2022-04-27 16:15:26 +0200 <shapr> That sounds like an easy change with good benefit?
2022-04-27 16:15:56 +0200 <tomsmeding> each _what_ unique?
2022-04-27 16:16:54 +0200 <shapr> It's easy for QC to generate some number of duplicate inputs in a single run, would be nice if inputs were checked for uniqueness in a particular run.
2022-04-27 16:17:12 +0200 <shapr> like "already tried this input for this run, don't need to try it again" kind of thing
2022-04-27 16:17:27 +0200 <tomsmeding> that would add an Eq constraint to quickCheck I guess
2022-04-27 16:17:38 +0200 <tomsmeding> well, Ord to do it remotely efficiently
2022-04-27 16:17:38 +0200 <shapr> huh, good point
2022-04-27 16:17:51 +0200 <tomsmeding> (to not resort to O(n^2) checking)
2022-04-27 16:18:34 +0200 <shapr> while preparing for this presentation I found https://github.com/nick8325/quickcheck-with-counterexamples
2022-04-27 16:19:02 +0200 <shapr> I'd like to have that as part of a standard testing workflow.
2022-04-27 16:19:14 +0200 <tomsmeding> also the Arbitrary (a -> b) instance is trouble there
2022-04-27 16:19:20 +0200 <geekosaur> absence, can't reproduce that here
2022-04-27 16:19:23 +0200 <tomsmeding> though I guess one should use Fun instead then
2022-04-27 16:19:26 +0200 <geekosaur> Prelude Data.Time.LocalTime> getCurrentTimeZone >>= \(TimeZone {..}) -> return (timeZoneMinutes, timeZoneSummerOnly)
2022-04-27 16:19:26 +0200 <geekosaur> (-240,True)
2022-04-27 16:19:50 +0200 <shapr> Oh, I haven't thought about producing unique functions
2022-04-27 16:19:54 +0200Sgeo(~Sgeo@user/sgeo)
2022-04-27 16:20:10 +0200 <geekosaur> (sadly the Show instance for TimeZone is crap)
2022-04-27 16:20:14 +0200 <tomsmeding> well quickcheck has support for generating functions as some kind of decision tree; IIRC that's the 'Fun' type. Those could have Ord easily
2022-04-27 16:20:29 +0200 <tomsmeding> but you'd be forced to use the newtype
2022-04-27 16:21:04 +0200 <shapr> It sounds like a worthwhile blog post if nothing else.
2022-04-27 16:21:20 +0200 <shapr> describe the idea, try it out, see if it helps at all
2022-04-27 16:21:40 +0200 <tomsmeding> I would kind of doubt that duplicate inputs really occur that often with most generators
2022-04-27 16:22:02 +0200 <shapr> Happens often when I pay attention, but I don't have any actual recorded data
2022-04-27 16:22:41 +0200 <shapr> so could be selection bias, I was looking for it when it happened :-)
2022-04-27 16:23:09 +0200 <shapr> tomsmeding: any other prop testing low hanging fruit comes to mind?
2022-04-27 16:23:13 +0200 <absence> geekosaur: yeah, it's definitely not normal
2022-04-27 16:23:24 +0200raym(~raym@user/raym) (Ping timeout: 276 seconds)
2022-04-27 16:23:43 +0200 <shapr> I'd like to do a demo of *all* the cool tools for prop testing in Haskell
2022-04-27 16:23:45 +0200raym(~raym@user/raym)
2022-04-27 16:24:49 +0200 <geekosaur> anyway it sounds like it thinks you're in UTC. if I ran that in the context of my IRC client it would do that, but that's because I deliberately run my IRC client in UTC
2022-04-27 16:26:02 +0200 <absence> geekosaur: but then the "name" should've been UTC, and not my local time zone
2022-04-27 16:26:30 +0200 <geekosaur> hrm
2022-04-27 16:26:56 +0200 <absence> hm, actually it seems like "name" just contains the first part of whatever the TZ env variable is set to
2022-04-27 16:27:04 +0200 <absence> i can put garbage in there and it will tell me that's the time zone
2022-04-27 16:28:10 +0200 <tomsmeding> shapr: hmm, indeed small values seem to be generated lots of times
2022-04-27 16:28:34 +0200 <geekosaur> I looked at the implementation and it's doing the right thing via system libc functions, so unless that's somehow jacked up it should be correct
2022-04-27 16:28:58 +0200 <tomsmeding> I told it to test a (Int -> Bool) property 10000 times, and it got zero 323x, -1 242x, ..., 6 140x, ... 37 51x, ... 83 2x
2022-04-27 16:29:17 +0200 <tomsmeding> shapr: smallcheck feels relevant here
2022-04-27 16:29:39 +0200 <tomsmeding> there's also hedgehog but that's mostly a different interface for the same idea as quickcheck
2022-04-27 16:30:08 +0200 <janus> i think the fact that you can choose your distribution and name it is a pretty stark difference
2022-04-27 16:30:19 +0200 <tomsmeding> absence: what does `timedatectl status` return on the command line
2022-04-27 16:30:29 +0200 <abastro[m]> Choose distribution?
2022-04-27 16:30:33 +0200 <tomsmeding> janus: true, the interface is quite different :p
2022-04-27 16:31:08 +0200 <absence> tomsmeding: command not found :D i guess the docker image doesn't have that
2022-04-27 16:31:10 +0200 <tomsmeding> abastro[m]: quickcheck has Arbitrary instances, so there's one instance for one type; hedgehog instead lets you pass a generator function, so you don't need to define a new type if you want to use a different random generator
2022-04-27 16:31:19 +0200 <tomsmeding> docker complicates things
2022-04-27 16:31:35 +0200 <tomsmeding> absence: does `date` do the right thing :p
2022-04-27 16:32:10 +0200 <absence> tomsmeding: it too does the wrong thing
2022-04-27 16:32:13 +0200 <tomsmeding> absence: what does /etc/localtime point to, and what is in /etc/adjtime (not actually sure what the contents of the latter mean, but for comparison)
2022-04-27 16:32:27 +0200 <janus> abastro[m]: yes, for example 'constant' 'linear' and so on: https://www.youtube.com/watch?v=AIv_9T0xKEo&t=21m22s
2022-04-27 16:32:43 +0200 <absence> tomsmeding: they don't exist, there's only a TZ env variable
2022-04-27 16:32:56 +0200 <tomsmeding> absence: does /usr/share/zoneinfo exist
2022-04-27 16:33:05 +0200searemind(~searemind@122.161.49.249)
2022-04-27 16:33:18 +0200 <absence> tomsmeding: no, but /share/zoneinfo does... let me try to move it
2022-04-27 16:33:24 +0200 <tomsmeding> lol
2022-04-27 16:33:25 +0200 <janus> abastro[m]: if you turn those diagrams 90 deg, they look like distributions, no?
2022-04-27 16:33:28 +0200 <geekosaur> if the date command is misbehaving the same way, you probably aren't going to fix this readily
2022-04-27 16:33:50 +0200 <tomsmeding> absence: I would 'strace -o log.txt date' and find erroring syscalls, but not sure if you have strace :D
2022-04-27 16:33:57 +0200 <tomsmeding> also, not sure if ontopic anymore for #haskell
2022-04-27 16:34:04 +0200 <janus> e.g. for the 'linearFrom' diagram, the yellow line would be the expected value
2022-04-27 16:34:30 +0200 <janus> not sure if i am abusing the word 'distribution' but it seem related
2022-04-27 16:34:37 +0200 <absence> tomsmeding: now i have /usr/share/zoneinfo, and still same problem
2022-04-27 16:35:12 +0200 <absence> tomsmeding: yeah, it's kinda off topic, but not completely. if some syscall fails, why doesn't the haskell function fail?
2022-04-27 16:36:31 +0200 <geekosaur> you would have to study how the libc stuff works to understand that. short answer is, the "syscall" never fails, it just defaults to UTC like you are seeing
2022-04-27 16:36:40 +0200 <tomsmeding> absence: good question, `date` doesn't fail either apparently
2022-04-27 16:36:46 +0200 <geekosaur> this is for historical reasons
2022-04-27 16:36:52 +0200 <janus> absence: you should note that you can't represent tzdb offsets accurately using an integer amount of minutes
2022-04-27 16:36:58 +0200 <tomsmeding> geekosaur: why is "syscall" in scaarequotes
2022-04-27 16:36:59 +0200 <janus> absence: the tzdb will use seconds for LMT
2022-04-27 16:37:14 +0200 <geekosaur> because it's not really a system (kernel) call
2022-04-27 16:37:22 +0200 <geekosaur> the kernel always works in UTC
2022-04-27 16:37:38 +0200 <tomsmeding> I would look at the strace output to find file system accesses that fail
2022-04-27 16:37:40 +0200 <janus> absence: so even if you make it work for current dates, it is gonna break for dates before the adoption of time zones, where LMT is used
2022-04-27 16:37:41 +0200 <geekosaur> user presentation is in userspace
2022-04-27 16:37:49 +0200 <tomsmeding> like, looking up some time zone database file which fails :p
2022-04-27 16:37:53 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2022-04-27 16:37:56 +0200 <tomsmeding> _that_'s the syscalls I meant
2022-04-27 16:38:29 +0200 <geekosaur> also it's complicated by the fact that TZ isn't necessarily looking in the timezone database, there's a TZ syntax to define a timezone in place
2022-04-27 16:38:34 +0200searemind(~searemind@122.161.49.249) (Remote host closed the connection)
2022-04-27 16:38:46 +0200 <tomsmeding> like, my `date` opens /etc/localtime, and that already doesn't exist on absence's docker image, so I would be curious to see what `date` then tries
2022-04-27 16:38:52 +0200 <geekosaur> TZ=FOO1:30BAR0:45 is legal and defines a timezone
2022-04-27 16:39:25 +0200 <janus> absence: if you wanna get away from depending on so much runtime state, you can compile the tzdb into your application using the tz/tzdata packages that i have taken over
2022-04-27 16:39:28 +0200vicfred(~vicfred@user/vicfred) (Quit: Leaving)
2022-04-27 16:39:35 +0200 <janus> @package tz
2022-04-27 16:39:35 +0200 <lambdabot> https://hackage.haskell.org/package/tz
2022-04-27 16:41:16 +0200Sgeo(~Sgeo@user/sgeo)
2022-04-27 16:42:27 +0200 <absence> tomsmeding: i put strace in the docker image, and the problem turned out to be that it was looking for the zoneinfo in a completely unexpected place. setting TZDIR works around the issue. interesting that glibc just does the wrong thing in silence, but that's how it is i guess
2022-04-27 16:42:50 +0200 <tomsmeding> absence: glibc is interesting in general
2022-04-27 16:43:08 +0200 <tomsmeding> but nice that you found out :)
2022-04-27 16:43:19 +0200 <tomsmeding> (what was the 'completely unexpected place'?)
2022-04-27 16:43:55 +0200 <absence> janus: thanks, i'll keep that in mind for the future. unfortunately i'm currently just calling code that uses the "standard" time zone stuff
2022-04-27 16:43:55 +0200Sgeo_(~Sgeo@user/sgeo)
2022-04-27 16:44:07 +0200 <geekosaur> as I mentioned earlier, "does the wrong thing in silence" is for historical reasons
2022-04-27 16:44:43 +0200 <geekosaur> the timezone stuff is pretty well specified, even the parts that POSIX left out are specced by other standards becuase so much stuff relies on them
2022-04-27 16:44:50 +0200 <geekosaur> (such as _tzset())
2022-04-27 16:46:21 +0200f-a(f2a@f2a.jujube.ircnow.org)
2022-04-27 16:46:28 +0200 <absence> tomsmeding: inside the glibc nix package, but the files are in the tzdata package. there's an open issue on it
2022-04-27 16:46:58 +0200 <tomsmeding> heh
2022-04-27 16:46:59 +0200Sgeo(~Sgeo@user/sgeo) (Ping timeout: 240 seconds)
2022-04-27 16:47:19 +0200 <tomsmeding> absence: if you'd said "I'm using docker and nix" from the beginning, I would've tableflipped and had no idea
2022-04-27 16:47:29 +0200 <janus> hahah
2022-04-27 16:47:46 +0200 <absence> geekosaur: historical or not, i would've preferred to get an indication that something was wrong, and not just the wrong answer when the same system call apparently lies about the time zone name
2022-04-27 16:48:13 +0200januspatiently waits for maerwald to enter the discussion ( think he has opinions on nix? )
2022-04-27 16:48:20 +0200 <absence> tomsmeding: good to know, i won't mention that in the future ;D
2022-04-27 16:48:59 +0200 <tomsmeding> absence: presumably what's doing the thing here is not a system call; glibc (that `date` uses) reads TZ, looks up that timezone in what it thinks is the db, fails, shrugs, returns 0 with name from TZ, and `date` is none the wiser
2022-04-27 16:50:04 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)
2022-04-27 16:50:11 +0200 <absence> yes.. while indicating some kind of failure would be the best option, the next best would be to not use the name from TZ :)
2022-04-27 16:50:25 +0200 <tomsmeding> I guess :p
2022-04-27 16:51:32 +0200 <absence> anyway, i've learned yet another unix footgun the hard way, so that's fun. thanks for the help :)
2022-04-27 16:52:18 +0200 <f-a> I am battling some Template Haskell (and what I believe is splicing scope) http://paste.debian.net/plain/1239198
2022-04-27 16:52:28 +0200 <f-a> of course inverting the two lines makes the example work
2022-04-27 16:52:35 +0200 <f-a> is there any other way around it?
2022-04-27 16:52:56 +0200 <tomsmeding> don't think so
2022-04-27 16:53:23 +0200 <f-a> ah! I suspected as much. Disappointing but understandable
2022-04-27 16:53:39 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2022-04-27 16:56:40 +0200 <tomsmeding> f-a: you may try `mkName "hey2"` instead of `'hey2`, but that might fail as well
2022-04-27 17:00:58 +0200Guest|30(~Guest|30@p548a4fd5.dip0.t-ipconnect.de)
2022-04-27 17:01:00 +0200Guest|30(~Guest|30@p548a4fd5.dip0.t-ipconnect.de) (Client Quit)
2022-04-27 17:01:06 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-04-27 17:01:36 +0200 <f-a> mhh alas indeed it still complains • Variable not in scope: hey2 :: Card tomsmeding
2022-04-27 17:02:06 +0200 <geekosaur> tomsmeding is correct, there is no error return (nor any API for one) at the level of libc
2022-04-27 17:02:40 +0200 <geekosaur> f-a, I'm pretty sure that is the TH staging restriction and there's no way around it
2022-04-27 17:06:21 +0200zfnmxt(~zfnmxtzfn@2001:470:69fc:105::2b32) (Changing host)
2022-04-27 17:06:21 +0200zfnmxt(~zfnmxtzfn@user/zfnmxt)
2022-04-27 17:06:36 +0200 <abastro[m]> Ahh
2022-04-27 17:06:37 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:2363:e5e:a843:8cf3) (Quit: WeeChat 2.8)
2022-04-27 17:07:20 +0200 <f-a> I see, I see, thanks
2022-04-27 17:13:58 +0200krappix(~krappix@nat-eduroam-76-gw-01-lne.lille.inria.fr) (Ping timeout: 252 seconds)
2022-04-27 17:15:28 +0200cdman(~dcm@user/dmc/x-4369397) (Quit: Leaving)
2022-04-27 17:19:49 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-04-27 17:21:53 +0200yauhsien(~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-04-27 17:22:42 +0200yauhsien(~yauhsien@61-231-19-191.dynamic-ip.hinet.net)
2022-04-27 17:27:20 +0200yauhsien(~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Ping timeout: 248 seconds)
2022-04-27 17:31:17 +0200dsrt^(~dsrt@50.227.69.228)
2022-04-27 17:33:55 +0200jakalx(~jakalx@base.jakalx.net) ()
2022-04-27 17:36:29 +0200stiell_(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2022-04-27 17:36:43 +0200epolanski(uid312403@id-312403.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2022-04-27 17:36:51 +0200stiell_(~stiell@gateway/tor-sasl/stiell)
2022-04-27 17:37:33 +0200jakalx(~jakalx@base.jakalx.net)
2022-04-27 17:37:47 +0200yauhsien(~yauhsien@61-231-19-191.dynamic-ip.hinet.net)
2022-04-27 17:39:54 +0200xff0x_(~xff0x@om126167099166.29.openmobile.ne.jp) (Read error: Connection reset by peer)
2022-04-27 17:44:04 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)
2022-04-27 17:44:35 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2022-04-27 17:45:22 +0200jgeerds(~jgeerds@d53604b0.access.ecotel.net) (Ping timeout: 272 seconds)
2022-04-27 17:47:38 +0200gensyst(gensyst@user/gensyst)
2022-04-27 17:47:51 +0200 <gensyst> Is there something like Set, but without the Ord requirement?
2022-04-27 17:48:04 +0200 <gensyst> (I want a list of elements known to be unique)
2022-04-27 17:48:09 +0200 <janus> gensyst: HashSet?
2022-04-27 17:49:12 +0200 <geekosaur> you need *some* constraint to do that. You can choose Ord (Set) or Hashable (HashSet)
2022-04-27 17:49:21 +0200 <gensyst> ok thanks mates
2022-04-27 17:49:27 +0200 <geekosaur> probably one could be done with just Eq but it'd be pretty slow
2022-04-27 17:49:56 +0200 <gensyst> i just wanted a unique "list" of DayOfWeek. i guess i'll just do a newtype of DayOfWeek that implements Ord using fromEnum
2022-04-27 17:50:06 +0200 <gensyst> will do for this purpose i guess
2022-04-27 17:50:19 +0200 <gensyst> (assuming i don't assign any greater purpose to this ord)
2022-04-27 17:50:39 +0200ccntrq(~Thunderbi@2a01:e34:eccb:b060:ae12:4cae:f662:1bed) (Remote host closed the connection)
2022-04-27 17:52:23 +0200 <janus> maybe it is possible to put the newtype in its own module, not export it and then it would be less likely to be abused
2022-04-27 17:53:07 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-04-27 17:53:54 +0200 <f-a> another TH question: in a module I have got lots of (top level) `:: Int` declarations, is there a way to get a list of those names to generate/splice — say — a list of all of them?
2022-04-27 17:55:11 +0200 <gensyst> janus yeah just internal no worries :D
2022-04-27 17:55:32 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-04-27 18:00:14 +0200ksqsf[m](~ksqsfmatr@2001:470:69fc:105::1:d8fa) (Quit: You have been kicked for being idle)
2022-04-27 18:00:14 +0200AdamS[m](~adamvalko@2001:470:69fc:105::1:d5f0) (Quit: You have been kicked for being idle)
2022-04-27 18:00:41 +0200ubert1(~Thunderbi@2a02:8109:9880:303c:2c6d:3d80:b801:5482) (Remote host closed the connection)
2022-04-27 18:02:38 +0200 <c_wraith> f-a: huh. I would have thought there would be, but I can't actually find anything to do that. I've done similar stuff with instances before, but that's a different sort of problem
2022-04-27 18:03:33 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-04-27 18:04:28 +0200 <geekosaur> I think you can go through Q to get the compilation context, which gets you into functions in the ghc package, but that would be painful at best
2022-04-27 18:05:22 +0200lbseale(~ep1ctetus@user/ep1ctetus)
2022-04-27 18:05:30 +0200 <tomsmeding> f-a: fairly sure you can't, quickcheck uses this utter abomination to get all declarations with name "prop_*": https://hackage.haskell.org/package/QuickCheck-2.14.2/docs/src/Test.QuickCheck.All.html#allPropert…
2022-04-27 18:06:23 +0200 <f-a> spicy! thanks
2022-04-27 18:06:41 +0200 <tomsmeding> I mean, you could copy that code and do your own thing
2022-04-27 18:06:44 +0200 <tomsmeding> but, y'know
2022-04-27 18:08:06 +0200 <tomsmeding> gensyst: DayOfWeek implements Ord?
2022-04-27 18:09:02 +0200 <janus> sunday is the first day of the week, heathens! :O aarararrgh
2022-04-27 18:09:16 +0200 <geekosaur> @let import Data.Time.LocalTime
2022-04-27 18:09:18 +0200 <lambdabot> /sandbox/tmp/.L.hs:123:1: error:
2022-04-27 18:09:18 +0200 <lambdabot> Data.Time.LocalTime: Can't be safely imported!
2022-04-27 18:09:18 +0200 <lambdabot> The package (time-1.9.3) the module resides in isn't trusted.
2022-04-27 18:09:24 +0200 <geekosaur> bah
2022-04-27 18:09:33 +0200 <tomsmeding> % import Data.Time.LocalTime
2022-04-27 18:09:36 +0200 <geekosaur> % it
2022-04-27 18:09:39 +0200 <tomsmeding> oh yahb is still dead
2022-04-27 18:09:39 +0200 <geekosaur> still dead
2022-04-27 18:09:42 +0200 <tomsmeding> RIP
2022-04-27 18:11:46 +0200 <geekosaur> hm, ghci for me says no Ord nor Hashable instance
2022-04-27 18:11:48 +0200 <c_wraith> I'm surprised reifyModule is so limited.
2022-04-27 18:12:21 +0200 <geekosaur> (with the "time" that comes with 8.10.7 at least)
2022-04-27 18:12:49 +0200 <tomsmeding> new in time-1.11 apparently
2022-04-27 18:12:50 +0200 <geekosaur> as of 9.2.2 Ord was added
2022-04-27 18:13:28 +0200 <c_wraith> I understand why `reifyModule =<< thisModule' is limited - the module isn't complete yet. But if applied to a module that's already compiled, I'd hope for more info.
2022-04-27 18:13:35 +0200 <janus> i am puzzled why Monday is the first enumeration value, but "toEnum 0" is Sunday
2022-04-27 18:13:42 +0200 <janus> why did the time author choose one-indexing?
2022-04-27 18:13:49 +0200 <tomsmeding> geekosaur: 9.2.1 too ;)
2022-04-27 18:14:03 +0200 <geekosaur> I don't have that installed to check :)
2022-04-27 18:14:06 +0200dextaa4(~dextaa@user/dextaa)
2022-04-27 18:14:08 +0200 <tomsmeding> janus: that's dodgy
2022-04-27 18:14:45 +0200mbuf(~Shakthi@122.174.175.185) (Quit: Leaving)
2022-04-27 18:14:49 +0200 <tomsmeding> javascript months all over again, but now for day-of-week
2022-04-27 18:14:55 +0200 <geekosaur> trying to satisfy too many masters, probaly (US vs. Euro)
2022-04-27 18:15:10 +0200 <janus> tomsmeding: what is dodgy about it to you? i don't see Enum specifying any first value. and indeed it shouldn't , since that is for bounded, right?
2022-04-27 18:15:10 +0200 <geekosaur> *probably
2022-04-27 18:15:30 +0200 <tomsmeding> janus: the 1-basedness is dodgy IMO
2022-04-27 18:15:32 +0200 <gensyst> tomsmeding, no it doesn't but my newtype wrapper around it now does
2022-04-27 18:15:41 +0200 <tomsmeding> gensyst: lol yay
2022-04-27 18:15:48 +0200 <tomsmeding> gensyst: it does starting from ghc-9.2.1
2022-04-27 18:15:55 +0200 <gensyst> lol nice!
2022-04-27 18:16:00 +0200 <gensyst> thanks mates :)
2022-04-27 18:16:19 +0200 <gensyst> i'm scared to upgrade to ghc9.x because of my streamly use
2022-04-27 18:16:20 +0200 <tomsmeding> probably Ord was omitted before in order for the order of constructors not to matter
2022-04-27 18:16:27 +0200xaotuk(~sasha@2a06:5b00:15fe:9b00::2) (Ping timeout: 240 seconds)
2022-04-27 18:16:28 +0200 <gensyst> streamly could performance degrade suddenly not sure
2022-04-27 18:17:00 +0200 <janus> i guess the Enum class is just super weird and i shouldn't worry about it...
2022-04-27 18:17:14 +0200 <tomsmeding> janus: I think that statement holds in general
2022-04-27 18:17:19 +0200 <tomsmeding> or, it should hold
2022-04-27 18:18:00 +0200 <c_wraith> yeah, the Enum instances for Float and Double should probably never be used. :)
2022-04-27 18:18:41 +0200 <c_wraith> the way Enum is defined, it only really makes sense for Int-like things
2022-04-27 18:18:48 +0200 <janus> c_wraith: is there a way to enforce that with compiler warnings?
2022-04-27 18:19:01 +0200 <janus> or hlint or modulint
2022-04-27 18:20:38 +0200 <geekosaur> I don't think hlint knows enough about types, only about code patterns
2022-04-27 18:20:46 +0200 <tomsmeding> hlint doesn't typecheck
2022-04-27 18:20:47 +0200 <EvanR> does it even make sense for Int-like things...
2022-04-27 18:21:30 +0200 <EvanR> > prev minBound
2022-04-27 18:21:32 +0200 <lambdabot> error:
2022-04-27 18:21:32 +0200 <lambdabot> • Variable not in scope: prev :: t0 -> t
2022-04-27 18:21:32 +0200 <lambdabot> • Perhaps you meant one of these:
2022-04-27 18:21:37 +0200 <tomsmeding> > pred minBound
2022-04-27 18:21:37 +0200 <geekosaur> it should be possibe for it to make sense for anything isomorphic to Int (but ideally, Integer). that doesn't mean it does as implemented
2022-04-27 18:21:38 +0200 <lambdabot> *Exception: Prelude.Enum.().pred: bad argument
2022-04-27 18:21:42 +0200 <tomsmeding> > pred minBound :: Int
2022-04-27 18:21:44 +0200 <lambdabot> *Exception: Prelude.Enum.pred{Int}: tried to take `pred' of minBound
2022-04-27 18:23:02 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-04-27 18:23:04 +0200stiell_(~stiell@gateway/tor-sasl/stiell) (Ping timeout: 240 seconds)
2022-04-27 18:23:24 +0200 <janus> why not return maxBound for 'prev minBound'?
2022-04-27 18:23:35 +0200 <tomsmeding> > minBound - 1 :: Int
2022-04-27 18:23:38 +0200 <lambdabot> 9223372036854775807
2022-04-27 18:23:46 +0200 <tomsmeding> because the whole point of succ/pred is that they check bounds
2022-04-27 18:23:49 +0200 <EvanR> depends on what laws we're supposed to have
2022-04-27 18:24:08 +0200 <EvanR> yeah "bound" is the give away there xD
2022-04-27 18:24:24 +0200 <tomsmeding> succ is nice for incrementing counters of type Int, because if it ever overflows, at least it'll crash instead of wrap
2022-04-27 18:25:26 +0200kuribas(~user@ip-188-118-57-242.reverse.destiny.be) (Quit: ERC (IRC client for Emacs 26.3))
2022-04-27 18:25:51 +0200 <EvanR> sqlite's strategy for incrementing Int, if you try to increment maxBound, go back and roll a random Int until you find an Int not in use, or crash after enough tries xD
2022-04-27 18:26:21 +0200Everything(~Everythin@37.115.210.35) (Remote host closed the connection)
2022-04-27 18:29:46 +0200dsrt^(~dsrt@50.227.69.228) (Remote host closed the connection)
2022-04-27 18:29:55 +0200acidjnk(~acidjnk@p200300d0c73b452571655f3915a3d16e.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2022-04-27 18:30:36 +0200stiell_(~stiell@gateway/tor-sasl/stiell)
2022-04-27 18:31:11 +0200 <tomsmeding> Then you should first define "not in use" lol
2022-04-27 18:31:15 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-04-27 18:32:13 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-04-27 18:32:54 +0200justsomeguy(~justsomeg@user/justsomeguy)
2022-04-27 18:34:18 +0200 <EvanR> context would be a table with INTEGER PRIMARY KEY or such
2022-04-27 18:36:39 +0200 <tomsmeding> EvanR: (offtopic) the thing is, the algorithm you describe is linear in the size of the table worst case, but you can do log time if you have a tree index with sizes of each subtree; sqlite (and psql) do have the index, but not the tree sizes and that's dumb
2022-04-27 18:36:52 +0200vorpuni(~pvorp@2001:861:3881:c690:f0c0:48af:d6b4:5601)
2022-04-27 18:37:46 +0200 <tomsmeding> Not having tree sizes means that SELECT * FROM t OFFSET n; is also linear in n, which is equally dumb
2022-04-27 18:37:50 +0200 <tomsmeding> </rant>
2022-04-27 18:41:22 +0200 <EvanR> how dare you question the universal optimality of "just use a dumb array and loop through it"
2022-04-27 18:41:27 +0200 <EvanR> ism
2022-04-27 18:41:29 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-04-27 18:43:20 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-04-27 18:44:33 +0200vicfred(~vicfred@user/vicfred)
2022-04-27 18:45:43 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-04-27 18:46:29 +0200 <EvanR> (ok not applicable since there's no such thing as an array of size int64)
2022-04-27 18:46:34 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-04-27 18:49:05 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Client Quit)
2022-04-27 18:52:17 +0200mikoto-chan(~mikoto-ch@213.177.151.239)
2022-04-27 18:58:35 +0200 <monochrom> ooohhhh randomization but must not generate duplicates... Knuth's books have a section on that.
2022-04-27 18:58:48 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-04-27 18:59:21 +0200razetime(~quassel@117.254.34.238) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2022-04-27 19:01:58 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2022-04-27 19:03:33 +0200alx741(~alx741@host-181-198-243-150.netlife.ec) (Quit: alx741)
2022-04-27 19:04:22 +0200econo(uid147250@user/econo)
2022-04-27 19:09:39 +0200CiaoSen(~Jura@p200300c95732ec002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-04-27 19:13:58 +0200euandreh(~euandreh@2804:14c:33:9fe5:2165:73d6:1630:f174) (Quit: WeeChat 3.5)
2022-04-27 19:15:47 +0200CiaoSen(~Jura@p200300c95732ec002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-04-27 19:20:34 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-04-27 19:22:43 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-04-27 19:30:42 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2022-04-27 19:34:02 +0200werneta(~werneta@137.79.197.49)
2022-04-27 19:36:04 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-04-27 19:36:27 +0200deadmarshal_(~deadmarsh@95.38.114.81) (Ping timeout: 276 seconds)
2022-04-27 19:36:39 +0200justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 240 seconds)
2022-04-27 19:36:50 +0200irfan(~irfan@user/irfan) (Remote host closed the connection)
2022-04-27 19:39:14 +0200euandreh(~euandreh@2804:14c:33:9fe5:2165:73d6:1630:f174)
2022-04-27 19:43:38 +0200acarrico1(~acarrico@dhcp-68-142-48-19.greenmountainaccess.net) (Quit: Leaving.)
2022-04-27 19:47:08 +0200jgeerds(~jgeerds@d53604b0.access.ecotel.net)
2022-04-27 19:47:47 +0200 <Bulby[m]> When setting up local hoogle can I search hackage-only packages
2022-04-27 19:48:52 +0200 <f-a> Bulby[m]: does it search anything else?
2022-04-27 19:49:13 +0200 <Bulby[m]> it searches stackage only 🙁
2022-04-27 19:49:29 +0200 <Bulby[m]> and no hackage docs
2022-04-27 19:49:47 +0200 <f-a> oh
2022-04-27 19:50:21 +0200 <dminuoso> janus: That seems wrong.
2022-04-27 19:50:27 +0200 <geekosaur> the problem with searching hackage is the indexes get too big iirc
2022-04-27 19:50:28 +0200 <dminuoso> Oh gosh. I was scrolled up sorry.
2022-04-27 19:50:38 +0200 <dminuoso> That was re "pred minBound"
2022-04-27 19:50:39 +0200 <Bulby[m]> ...
2022-04-27 19:50:54 +0200 <geekosaur> which is why the default is to search stackage whoich is a reasonable subset
2022-04-27 19:51:00 +0200 <Bulby[m]> can I index only local packages?
2022-04-27 19:51:04 +0200 <geekosaur> yes
2022-04-27 19:51:09 +0200 <f-a> yes
2022-04-27 19:51:10 +0200 <f-a> -l
2022-04-27 19:51:15 +0200 <f-a> when generating
2022-04-27 19:51:26 +0200 <Bulby[m]> would stack throw a wrench in that at all
2022-04-27 19:51:28 +0200 <geekosaur> I forget the incantation but you can tell cabal to create a hoogle index for everything it installs
2022-04-27 19:51:39 +0200 <geekosaur> dunno about stack though, I don't use it
2022-04-27 19:51:50 +0200 <geekosaur> wouldn't surprise me if it had a similar incantation
2022-04-27 19:52:45 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-04-27 19:52:58 +0200 <Bulby[m]> `stack hoogle` why are you installing stuff 😭
2022-04-27 19:53:13 +0200 <geekosaur> installing a hoogle for stack?
2022-04-27 19:53:27 +0200 <geekosaur> stack has this thing about keeping everything it uses under its own tight control
2022-04-27 19:53:38 +0200 <Bulby[m]> yes. I hope I don't have to do this for each project
2022-04-27 19:53:39 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-04-27 19:53:51 +0200 <geekosaur> it should be able to share it
2022-04-27 19:54:01 +0200 <Bulby[m]> it better 🔪
2022-04-27 19:55:25 +0200 <dminuoso> Im in emacs, how can I stop all HLS processes running?
2022-04-27 19:56:09 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-04-27 20:02:04 +0200acidjnk(~acidjnk@p200300d0c73b452571655f3915a3d16e.dip0.t-ipconnect.de)
2022-04-27 20:02:51 +0200yauhsien(~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-04-27 20:10:35 +0200yauhsien(~yauhsien@61-231-19-191.dynamic-ip.hinet.net)
2022-04-27 20:11:43 +0200jinsun__(~jinsun@user/jinsun) ()
2022-04-27 20:12:03 +0200tcsavage(~tcsavage@195.213.144.166)
2022-04-27 20:16:06 +0200yauhsien(~yauhsien@61-231-19-191.dynamic-ip.hinet.net) (Ping timeout: 272 seconds)
2022-04-27 20:16:50 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-04-27 20:17:13 +0200 <tomsmeding> $ ps -eo pid,cmd | grep haskell-language-server | grep -v grep | awk '{print $1}' | xargs kill
2022-04-27 20:17:45 +0200 <tomsmeding> (not being serious0
2022-04-27 20:17:48 +0200 <tomsmeding> s/0/)/
2022-04-27 20:20:04 +0200 <Bulby[m]> grep -v grep?
2022-04-27 20:20:08 +0200 <Bulby[m]> lol
2022-04-27 20:20:12 +0200 <tomsmeding> grep will find itself
2022-04-27 20:20:38 +0200 <tomsmeding> I mean, if you actually wanted to make this have any kind of robustness, you'd use ps's built-in functionality for filtering processes
2022-04-27 20:20:43 +0200 <Bulby[m]> what does it do - will it break my system if I run it
2022-04-27 20:20:49 +0200 <tomsmeding> (which, incidentally, I've rarely been able to make work)
2022-04-27 20:21:07 +0200 <tomsmeding> Bulby[m]: it'll kill all HLS processes, including anything else that has 'haskell-language-server' in its command line
2022-04-27 20:21:10 +0200jgeerds(~jgeerds@d53604b0.access.ecotel.net) (Ping timeout: 272 seconds)
2022-04-27 20:21:36 +0200 <tomsmeding> it will likely not break your system, but nevertheless you probably shouldn't run it if you don't have to
2022-04-27 20:21:58 +0200 <Bulby[m]> lol
2022-04-27 20:23:39 +0200 <monochrom> Consider pgrep and pkill.
2022-04-27 20:24:06 +0200CiaoSen(~Jura@p200300c95732ec002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-04-27 20:24:13 +0200 <tomsmeding> monochrom: 'pgrep haskell-language-server' returns nothing for me, while there's _definitely_ an HLS running
2022-04-27 20:24:25 +0200 <tomsmeding> and before you ask, 'pgrep haskell-language-server-8.10.7' also returns nothing
2022-04-27 20:25:19 +0200 <tomsmeding> monochrom: https://tomsmeding.com/ss/get/tomsmeding/2nIUHt sorry for text-in-image
2022-04-27 20:25:32 +0200 <tomsmeding> 50% of the time when I try to use pgrep it just... doesn't work
2022-04-27 20:25:49 +0200 <Bulby[m]> yeah wtf
2022-04-27 20:27:27 +0200 <monochrom> That's strange, because if I do "pgrep key", I successfully get one that turns out to be /usr/bin/gnome-keyring-daemon --daemonize --login
2022-04-27 20:27:57 +0200 <tomsmeding> Bulby[m]: more details on "what does it do", for practice reading command lines: 'ps -e' lists all processes, but only the 'pid' and 'cmd' columns; filter on HLS, but not grep itself (which also matches while grep runs, of course); print the first field but ignore leading spaces (different from cut -d' ' -f1); kill all the stuff that comes out
2022-04-27 20:28:08 +0200 <tomsmeding> monochrom: interesting
2022-04-27 20:28:49 +0200 <tomsmeding> monochrom: 'pgrep key' turns up _two_ gnome-keyring-daemon processes for me, with similarly "complex" command lines
2022-04-27 20:29:03 +0200 <Bulby[m]> for me the columns seem to be cut off
2022-04-27 20:29:15 +0200 <tomsmeding> Bulby[m]: on mac?
2022-04-27 20:29:20 +0200 <Bulby[m]> `haskell-languag`
2022-04-27 20:29:23 +0200 <Bulby[m]> on linux
2022-04-27 20:29:28 +0200 <monochrom> It also picks up a "/usr/libexec/gsd-keyboard" and "/usr/libexec/gsd-media-keys" on my ubuntu-laiden laptop.
2022-04-27 20:29:31 +0200 <tomsmeding> Bulby[m]: you're running 'ps -e', not 'ps -eo pid,cmd'
2022-04-27 20:29:40 +0200 <Bulby[m]> oh
2022-04-27 20:30:06 +0200 <tomsmeding> Bulby[m]: default command column is 'comm', which is some crappy AIX legacy compatibility column with limited width; 'cmd' shows the full command
2022-04-27 20:30:42 +0200 <tomsmeding> monochrom: my arch machine doesn't have those, but that's kind of beside the point :p
2022-04-27 20:30:44 +0200hexfive(~eric@50.35.83.177) (Quit: WeeChat 3.5)
2022-04-27 20:30:57 +0200 <tomsmeding> point is I have no idea what pgrep does
2022-04-27 20:31:06 +0200 <Bulby[m]> haskell-language-server-wrapper is its name
2022-04-27 20:31:15 +0200 <geekosaur> that's just a script
2022-04-27 20:31:16 +0200 <Bulby[m]> odd
2022-04-27 20:31:23 +0200 <tomsmeding> Bulby[m]: that process has a child process with name like 'haskell-language-server-8.10.7'
2022-04-27 20:31:46 +0200 <tomsmeding> if not, then something is going wrong
2022-04-27 20:32:06 +0200 <tomsmeding> the wrapper just detects the project setup and starts the right HLS process, which has a version suffix
2022-04-27 20:34:47 +0200 <gensyst> Is streamly (and other streaming libraries) one of the killer features of Haskell?
2022-04-27 20:34:54 +0200 <gensyst> (What other langs can do this?)
2022-04-27 20:34:57 +0200 <gensyst> this blows my mind
2022-04-27 20:35:14 +0200 <gensyst> others: for loops with state all over the place
2022-04-27 20:35:41 +0200 <tomsmeding> don't Rust iterators try to do a similar thing
2022-04-27 20:37:23 +0200kraftwerk28(~kraftwerk@178.62.210.83) (Quit: bruh)
2022-04-27 20:38:29 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-04-27 20:40:28 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-04-27 20:41:40 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-04-27 20:42:13 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-04-27 20:43:31 +0200 <shapr> tomsmeding: I still think memoization of generated values is good low hanging fruit
2022-04-27 20:44:58 +0200 <tomsmeding> shapr: idea: extend `Arbitrary a` with `arbCompare :: a -> a -> Ordering ; default arbCompare :: Ord a => a -> a -> Ordering ; arbCompare = compare`
2022-04-27 20:45:06 +0200 <tomsmeding> (-XDefaultSignatures)
2022-04-27 20:45:16 +0200 <tomsmeding> then only the instances for non-Ord types need to do anything special
2022-04-27 20:45:18 +0200 <tomsmeding> minimal breakage
2022-04-27 20:45:53 +0200shapr(~user@pool-173-73-44-186.washdc.fios.verizon.net) (Remote host closed the connection)
2022-04-27 20:46:27 +0200 <tomsmeding> @tell shapr (alternatively: add an `Ord a` constraint to `quickCheck`, and have `quickCheckNoMemo` without the constraint; but then you can't memoise over arguments but not others)
2022-04-27 20:46:27 +0200 <lambdabot> Consider it noted.
2022-04-27 20:46:51 +0200oxide(~lambda@user/oxide) (Quit: oxide)
2022-04-27 20:56:37 +0200 <gensyst> tomsmeding, not sure..
2022-04-27 21:00:23 +0200 <Bulby[m]> killer features?
2022-04-27 21:00:33 +0200 <Bulby[m]> like "good" or "bad"?
2022-04-27 21:00:41 +0200 <monochrom> the good kind
2022-04-27 21:03:38 +0200 <monochrom> I have a cunning plan! Use a Bloom filter. :)
2022-04-27 21:04:02 +0200 <f-a> I am a bit unsure by `location` https://hackage.haskell.org/package/template-haskell-2.10.0.0/docs/Language-Haskell-TH.html#g:2
2022-04-27 21:04:07 +0200 <monochrom> You don't need guaranteed uniqueness, you just need probably unique.
2022-04-27 21:04:28 +0200 <f-a> does «where the computation is spliced» mean «where I ahve written the function» or «where I am putting $(fun)»?
2022-04-27 21:04:50 +0200 <geekosaur> the latter
2022-04-27 21:04:58 +0200 <f-a> makes sense, thanks
2022-04-27 21:05:42 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2022-04-27 21:06:04 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-04-27 21:06:55 +0200xaotuk(~sasha@net16-38-245-109.mbb.telenor.rs)
2022-04-27 21:07:46 +0200justsomeguy(~justsomeg@user/justsomeguy)
2022-04-27 21:11:26 +0200shapr(~user@pool-173-73-44-186.washdc.fios.verizon.net)
2022-04-27 21:12:39 +0200 <tomsmeding> monochrom: doesn't a bloom filter have the wrong approximation direction? Like, it will say "definitely not seen" or "maybe seen", whereas what you want is "definitely seen" vs "maybe not seen"
2022-04-27 21:13:06 +0200 <EvanR> I wonder if you formally decreased the database from "guaranteed to work" to "probably works" where probably is incredibly probable, across the board, what kind of improvements you could get. No, not talking about mongo
2022-04-27 21:13:08 +0200 <tomsmeding> if you use a bloom filter to exclude stuff, you're going to skip stuff that you've never _actually_ tried but that happen to match the filter
2022-04-27 21:13:13 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-04-27 21:13:25 +0200 <shapr> sounds like I missed some interesting backstory
2022-04-27 21:13:47 +0200 <Franciman> tomsmeding: can't you represent definitely seen as definitely not seen
2022-04-27 21:13:48 +0200anomal(~anomal@87.227.196.109)
2022-04-27 21:13:49 +0200shaprchecks the logs
2022-04-27 21:13:52 +0200 <Franciman> and maybe seen as maybe not seen?
2022-04-27 21:13:58 +0200 <tomsmeding> shapr: limited :p https://ircbrowse.tomsmeding.com/browse/lchaskell?id=530746#trid530746
2022-04-27 21:14:06 +0200 <EvanR> shapr, keyword sqlite
2022-04-27 21:14:10 +0200 <tomsmeding> Franciman: not in a boom filter
2022-04-27 21:14:15 +0200 <Franciman> cool
2022-04-27 21:14:17 +0200 <monochrom> tomsmeding: Yeah, there is that issue.
2022-04-27 21:14:20 +0200 <tomsmeding> *bloom
2022-04-27 21:14:23 +0200 <tomsmeding> O.o
2022-04-27 21:14:30 +0200 <tomsmeding> it's not explosive, it's not that bad
2022-04-27 21:14:40 +0200 <shapr> EvanR: eh? sqlite?
2022-04-27 21:15:13 +0200 <shapr> oh, you think QC/Hh could save the generated values into sqlite via https://github.com/nick8325/quickcheck-with-counterexamples ?
2022-04-27 21:15:15 +0200 <EvanR> I think they are talking about generating random unused integers
2022-04-27 21:15:16 +0200 <shapr> hmm
2022-04-27 21:15:34 +0200 <tomsmeding> yeah the talk is about memoisation for quickcheck ;)
2022-04-27 21:15:40 +0200 <EvanR> nevermind!
2022-04-27 21:15:45 +0200 <tomsmeding> currently specialised for integers
2022-04-27 21:15:49 +0200 <shapr> EvanR: sounds like you got it right
2022-04-27 21:16:25 +0200 <monochrom> Please don't be fixated on "it must be memoization".
2022-04-27 21:16:41 +0200 <tomsmeding> right, you only need to "memoise" a boolean
2022-04-27 21:16:44 +0200 <shapr> The goal is "each input is unseen"
2022-04-27 21:16:46 +0200 <tomsmeding> so approximating the set of seen values is fine
2022-04-27 21:16:58 +0200 <monochrom> The Y problem is memoization. The X problem is less chance of duplicates.
2022-04-27 21:17:08 +0200 <tomsmeding> shapr: indeed, but having an approximation that sometimes says "not seen" while it actually is, is fine
2022-04-27 21:17:13 +0200 <tomsmeding> as long as it's usually correct
2022-04-27 21:17:27 +0200 <tomsmeding> monochrom suggested bloom filters, but those have the approximation the other way round
2022-04-27 21:19:14 +0200 <dolio> Franciman: That's the problem with being trained to think in classical logic. Semi-decision problems give you intuitionistic logic. :þ
2022-04-27 21:19:24 +0200 <Franciman> ^^
2022-04-27 21:19:26 +0200 <Franciman> ahah
2022-04-27 21:19:38 +0200 <Franciman> tru
2022-04-27 21:19:56 +0200 <dolio> So you can't always solve ¬P by solving P and then doing the opposite.
2022-04-27 21:20:09 +0200 <dolio> Or, maybe the other way around.
2022-04-27 21:20:15 +0200 <dolio> Solve P by solving ¬P.
2022-04-27 21:20:46 +0200 <monochrom> :)
2022-04-27 21:22:04 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-04-27 21:24:54 +0200justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 250 seconds)
2022-04-27 21:25:00 +0200 <janus> dminuoso: if you see Int as a ring, surely prev of minBound should be maxBound. why does it seem wrong to you? You only want it to be a ring if it is unsigned? Just like integer overflow is defined behaviour in C for unsigned types?
2022-04-27 21:25:42 +0200 <dminuoso> The fact that you can see it as that particular ring doesnt mean it should impose the cyclic nature onto every user.
2022-04-27 21:26:09 +0200 <janus> ok, so it is analogous to the argument about monoid
2022-04-27 21:26:28 +0200 <janus> but having it throw an exception also seems to impose a world view upon the user
2022-04-27 21:26:35 +0200 <tomsmeding> especially because when people write Int, they usually intend an approximation of Integer instead of Z/18446744073709551616Z
2022-04-27 21:26:52 +0200 <dminuoso> janus: well that exception is akin to trying `1 <> 1`
2022-04-27 21:28:30 +0200 <tomsmeding> and even if you don't like that usage of Int, a programming language is, unfortunately, intended for humans, not computers :p
2022-04-27 21:28:32 +0200 <dminuoso> I would prefer an pure exception over silently picking *some* value.
2022-04-27 21:28:45 +0200 <tomsmeding> dminuoso++
2022-04-27 21:29:05 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.4.1)
2022-04-27 21:29:22 +0200 <monochrom> Whatever you do, you are imposing your world view upon everyone else.
2022-04-27 21:29:27 +0200jgeerds(~jgeerds@d53604b0.access.ecotel.net)
2022-04-27 21:29:33 +0200 <monochrom> It is always personal.
2022-04-27 21:29:45 +0200 <monochrom> The odd is never in your favour.
2022-04-27 21:29:47 +0200 <dminuoso> Perhaps the biggest problem is not the behavior, but your expectancy of Enum here.
2022-04-27 21:29:58 +0200Sgeo_(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2022-04-27 21:30:18 +0200 <dminuoso> Enum does not even demand Ord.
2022-04-27 21:30:46 +0200 <tomsmeding> is there an Enum instance where Ord does not correspond to the implied instance over the mapping to Int with fromEnum/toEnum
2022-04-27 21:30:49 +0200 <dolio> Being a ring where addition wraps doesn't imply anything about a linear ordering on the values of said ring.
2022-04-27 21:31:24 +0200 <monochrom> On even days I use Int for its Z/kZ ness. On odd days I use it as small Integer, somehow knowing the range is enough.
2022-04-27 21:31:33 +0200 <dminuoso> dolio: Was not trying to imply that. My point is rather that there's no clear semantics of what `pred minBound` in general would even mean.
2022-04-27 21:31:35 +0200gensyst(gensyst@user/gensyst) (Quit: Leaving)
2022-04-27 21:31:35 +0200cheater(~Username@user/cheater) (Read error: Connection reset by peer)
2022-04-27 21:32:05 +0200 <monochrom> All both days I use 8GB RAM as small Turing tape, somehow knowing the range is enough. So there.
2022-04-27 21:32:19 +0200 <dolio> What I'm saying is that it's perfectly consistent to think that arithmetic should wrap and succ should throw an exception on the maximum element.
2022-04-27 21:32:20 +0200cheater(~Username@user/cheater)
2022-04-27 21:32:40 +0200 <monochrom> Sometimes I go to 16GB RAM, I confess, but that's when it's AOE4.
2022-04-27 21:32:41 +0200 <janus> i sometimes use Word instead of Int, just to avoid the import i'd have to have if i used Word32 or whatever :P
2022-04-27 21:32:43 +0200Pickchea(~private@user/pickchea)
2022-04-27 21:33:06 +0200 <janus> everybody dirty in their own way :P
2022-04-27 21:33:10 +0200justsomeguy(~justsomeg@user/justsomeguy)
2022-04-27 21:33:22 +0200 <dolio> dminuoso: I don't think you were contradicting what I meant.
2022-04-27 21:33:23 +0200 <dminuoso> dolio: then I pull the "programming experience teaches" card that reads under/overflow is only defined for unsigned in C.
2022-04-27 21:34:14 +0200 <dolio> I don't pay any credence to what C does.
2022-04-27 21:34:34 +0200 <geekosaur> C does what is convenient for the compiler author
2022-04-27 21:34:45 +0200 <geekosaur> on that platform
2022-04-27 21:34:49 +0200 <dminuoso> The expectancy that arithmeitc should wrap only exists precisely because some languages have given these semantics toyou.
2022-04-27 21:35:12 +0200 <dminuoso> WEll not perhaps you personally, but I claim this will hold true for most users.
2022-04-27 21:35:24 +0200Sgeo(~Sgeo@user/sgeo)
2022-04-27 21:36:12 +0200 <janus> dminuoso: but people are doing performant elliptic curve cryptography using finite fields. so your assertion only makes sense if you include 'math' in 'some languages'
2022-04-27 21:36:59 +0200 <tomsmeding> if you're doing cryptography you better do whatever is necessary to get absolute guarantees on your working types
2022-04-27 21:37:17 +0200 <tomsmeding> "it would be convenient if the standard Int does what I need" doesn't count there
2022-04-27 21:37:18 +0200 <EvanR> janus, i think it's less about "what Int is really" and what behavior do we want from our types
2022-04-27 21:37:38 +0200 <EvanR> and how to get it
2022-04-27 21:37:58 +0200 <dminuoso> Besides, you might reasonably expect `pred x < x` to hold for Int.
2022-04-27 21:38:43 +0200 <janus> given the choice between pred x < x and 'no partial functions in base', i am still not convinced i wouldn't get further with the latter
2022-04-27 21:39:01 +0200 <EvanR> that's a problem with Enum not Int
2022-04-27 21:39:17 +0200 <EvanR> arguably (a problem)
2022-04-27 21:40:10 +0200 <tomsmeding> janus: all this is subjective, but I, for one, would prefer an exception on overflow than wrapping by default
2022-04-27 21:40:27 +0200 <tomsmeding> one should be able to _get_ wrapping, because it's useful sometimes, but usually it's not intended and then an exception would be nicer
2022-04-27 21:40:42 +0200 <Cale> I don't like succ and pred being in Enum at all, they're silly.
2022-04-27 21:40:53 +0200 <tomsmeding> of course trapping on all wrapping arithmetic is a performance issue so we don't do that, but I still prefer `pred minBound == _|_` over wrapping
2022-04-27 21:41:03 +0200 <tomsmeding> if you want the performant version, use `- 1`
2022-04-27 21:41:20 +0200 <dminuoso> I dont like Enum in the first place.
2022-04-27 21:41:28 +0200 <dminuoso> The whole class has weirdness.
2022-04-27 21:41:28 +0200 <dolio> How do you measure "usually it's not intended"?
2022-04-27 21:41:32 +0200 <Cale> There should be two classes: one for toEnum/fromEnum, and the other for the list .. syntax interpretations
2022-04-27 21:41:42 +0200 <EvanR> I would bet most use cases involve some unchecked proof sitting around that overflow or underflow won't happen so doesn't matter how to handle it. Or else the proof is wrong, fix your code
2022-04-27 21:41:51 +0200 <koz> @pl \(k, v) -> (,) <$> go k <*> go v
2022-04-27 21:41:51 +0200 <lambdabot> uncurry ((((,) <$>) .) . (. go) . (<*>) . go)
2022-04-27 21:41:57 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.5)
2022-04-27 21:41:57 +0200 <koz> LOL, yeah nope.
2022-04-27 21:42:02 +0200 <geekosaur> I should dig out my list thread on Enum/Bounded from years ago :)
2022-04-27 21:42:06 +0200 <tomsmeding> dolio: by personal experience, rarely have I written Int while actually expecting, using and accepting wrapping behaviour
2022-04-27 21:42:13 +0200 <EvanR> ^
2022-04-27 21:42:49 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-04-27 21:43:14 +0200 <dminuoso> tomsmeding: Of course now the argument could be made, that you might reasonably expect `pred = (-(1))` to hold
2022-04-27 21:43:17 +0200 <EvanR> because euclid didn't invent geometry on a square tile of size N feet
2022-04-27 21:44:06 +0200 <tomsmeding> :t \go -> uncurry (liftA2 (,)) . bimap go go
2022-04-27 21:44:09 +0200 <lambdabot> Applicative f => (a -> f b) -> (a, a) -> f (b, b)
2022-04-27 21:44:12 +0200 <tomsmeding> koz: ^ ?
2022-04-27 21:44:15 +0200 <Cale> koz: liftA2 (liftA2 (,)) (go . fst) (go . snd)
2022-04-27 21:44:16 +0200 <dminuoso> Cale: toEnum/fromEnum dont belong anywhere.
2022-04-27 21:44:17 +0200 <janus> EvanR: what did euclid believe about the size of the universe ?
2022-04-27 21:44:19 +0200 <dminuoso> Not even a separate class.
2022-04-27 21:44:37 +0200 <tomsmeding> now koz can choose!
2022-04-27 21:44:52 +0200 <geekosaur> euclid wasn't talking about the universe, he was talking about pure geometry
2022-04-27 21:44:55 +0200 <EvanR> janus, are we doing finitism now? xD
2022-04-27 21:45:08 +0200 <janus> yes, i am advancing to the next level
2022-04-27 21:45:08 +0200 <tomsmeding> dminuoso: I _guess_, but /shrug/ (about pred = (-(1)))
2022-04-27 21:45:11 +0200 <EvanR> I use smokescreen and escape
2022-04-27 21:45:30 +0200 <koz> Thanks, that's a bit nicer. Still prefer an explicit lambda.
2022-04-27 21:45:35 +0200 <tomsmeding> eys
2022-04-27 21:45:37 +0200 <tomsmeding> *yes
2022-04-27 21:45:43 +0200chexum_(~quassel@gateway/tor-sasl/chexum)
2022-04-27 21:45:43 +0200 <koz> (making your colleagues want to punch you is _not_ a good idea)
2022-04-27 21:45:48 +0200 <dminuoso> tomsmeding: I guess we can file this under "designing programming languages is hard, making choices is harder - but it's very easy to disagree with any design choice"
2022-04-27 21:45:53 +0200 <Cale> (honestly, I also wouldn't go that far with the points-free, though I might convert it to use a single liftA2)
2022-04-27 21:45:58 +0200 <geekosaur> (even in Euclid's time there was an estimate for the Earth's diameter, iirc)
2022-04-27 21:46:11 +0200 <koz> geekosaur: Yep, Aristarches figured that out.
2022-04-27 21:46:21 +0200 <koz> (possible sp of that name)
2022-04-27 21:46:22 +0200 <tomsmeding> koz: I had a nice one a while ago https://ircbrowse.tomsmeding.com/day/lchaskell/2022/04/25?id=527198#trid527198
2022-04-27 21:46:43 +0200 <tomsmeding> dminuoso: agreed :p, makes me think of https://wiki.haskell.org/Wadler's_Law
2022-04-27 21:47:56 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
2022-04-27 21:48:21 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2022-04-27 21:48:22 +0200tiferrei(~tiferrei@user/tiferrei)
2022-04-27 21:48:44 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2022-04-27 21:49:34 +0200chexum(~quassel@gateway/tor-sasl/chexum) (Ping timeout: 240 seconds)
2022-04-27 21:49:34 +0200 <tomsmeding> like, this is technically semantics, but it's so minor in the overall language that it qualifies for wadler's law IMO
2022-04-27 21:49:47 +0200 <janus> geekosaur: i'd like to read your mailing list post if you find it
2022-04-27 21:50:15 +0200 <geekosaur> haven't been looking, but it was more a point that this debate has been going on *at least* since 2006
2022-04-27 21:50:20 +0200 <geekosaur> and probvably before
2022-04-27 21:50:43 +0200 <geekosaur> we did work out a reasonable new set of classes, but it died there because no chance of it ever happening
2022-04-27 21:50:44 +0200 <janus> probvably = probably provably?
2022-04-27 21:50:50 +0200 <geekosaur> "probably"
2022-04-27 21:50:57 +0200 <geekosaur> my typing sucks :)
2022-04-27 21:50:59 +0200 <janus> :P
2022-04-27 21:51:17 +0200 <janus> geekosaur: did idris not take some of those ideas?
2022-04-27 21:51:33 +0200 <janus> or purescript?
2022-04-27 21:51:50 +0200 <geekosaur> no idea
2022-04-27 21:52:15 +0200 <geekosaur> tempted to hope they sidestepped the whole question
2022-04-27 21:52:25 +0200 <EvanR> the version of idris I was using just copied the Enum class as is
2022-04-27 21:52:39 +0200 <geekosaur> that they were reasonable didn't mean they were essential
2022-04-27 21:52:41 +0200 <geekosaur> ew
2022-04-27 21:52:46 +0200 <EvanR> except Int was changed to Nat
2022-04-27 21:52:59 +0200vorpuni(~pvorp@2001:861:3881:c690:f0c0:48af:d6b4:5601) (Ping timeout: 240 seconds)
2022-04-27 21:53:10 +0200 <janus> Welcome to Idris 2. Enjoy yourself!
2022-04-27 21:53:10 +0200 <janus> the Nat (-1)
2022-04-27 21:53:11 +0200 <janus> 0
2022-04-27 21:53:24 +0200 <janus> doesn't seem like it has negative numbers
2022-04-27 21:53:32 +0200 <EvanR> Nat indeed starts at zero
2022-04-27 21:53:43 +0200 <tomsmeding> (as it should)
2022-04-27 21:53:46 +0200 <EvanR> instead of -2 like homotopy type theory
2022-04-27 21:53:51 +0200 <koz> I believe there was an addendum to Wadler's law about records. :P
2022-04-27 21:54:20 +0200 <tomsmeding> syntax for records is contentious to this very day
2022-04-27 21:54:50 +0200 <dolio> Homotopy levels start at 0. Only category bozos try to move things back to -2.
2022-04-27 21:54:54 +0200 <monochrom> I don't like programmers saying "this is usually unexpected" to mean "this annoys me".
2022-04-27 21:55:08 +0200 <tomsmeding> simply add "... by me"
2022-04-27 21:55:28 +0200 <EvanR> principle of least surprised ... by me
2022-04-27 21:55:49 +0200 <Franciman> dolio: sometimes i've seen them start at -1, with \pi_{-1}(X) = {0} <- trivial group
2022-04-27 21:56:26 +0200 <monochrom> I'm all for voicing "IMO mutable variables are nice", but against bending that to "why would anyone not want mutable variables?"
2022-04-27 21:56:59 +0200 <monochrom> It is always personal.
2022-04-27 21:57:48 +0200 <Franciman> well one reason is that mutability with laziness can be a nightmare
2022-04-27 21:57:59 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-04-27 21:58:04 +0200 <Franciman> and completely remove referential transparency for the whole program
2022-04-27 21:58:15 +0200 <EvanR> yet we have MVars that by default accept a lazy value when mutated
2022-04-27 21:58:28 +0200 <dolio> Franciman: is there a point to doing that? Is it just defined the same for every space?
2022-04-27 21:59:36 +0200 <Franciman> EvanR: but the mutation happens strictly, no?
2022-04-27 21:59:39 +0200 <Franciman> it is not delayed
2022-04-27 21:59:49 +0200 <Franciman> you set the new value to a thunk
2022-04-27 22:00:00 +0200Brandon_IX(brandon@2a01:7e00::f03c:92ff:feab:6b7c) (Changing host)
2022-04-27 22:00:00 +0200Brandon_IX(brandon@user/Brandon-IX/x-0442192)
2022-04-27 22:00:04 +0200 <EvanR> the IO action stands for that, up to you when it is executed xD
2022-04-27 22:00:27 +0200 <Franciman> dolio: hm not sure, for homology groups it makes sense
2022-04-27 22:00:42 +0200 <Franciman> because of the sequence. Maybe in homotopy is just to copy ahah (joking, but i saw it sometimes)
2022-04-27 22:00:42 +0200 <dolio> Does it actually vary for those?
2022-04-27 22:00:55 +0200 <Franciman> no, it's defined as {0} invariably
2022-04-27 22:01:45 +0200 <Franciman> so you can define \delta (x) = 0
2022-04-27 22:02:00 +0200_ht(~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection)
2022-04-27 22:02:19 +0200 <Franciman> and ker \delta = C_0(X), and im \delta = {0}
2022-04-27 22:02:29 +0200 <Franciman> hence H_0(X) = C_0(X)
2022-04-27 22:02:45 +0200 <janus> seems like idris does have 'pred', but it is only for Nat and 'pred 0 = 0' holds
2022-04-27 22:03:04 +0200 <janus> and underflow on Int wraps
2022-04-27 22:03:09 +0200 <dolio> Oh, so it's a special case for simpler bootstrapping or something.
2022-04-27 22:03:12 +0200 <Franciman> dolio: basically in this way you avoid defining H_0(X) in an ad hoc way
2022-04-27 22:03:46 +0200 <Franciman> and going further you can also define C_{-2} = {0} lol, so you also have H_{-1}(X) = {0}
2022-04-27 22:03:59 +0200 <Franciman> but this seems to be of zero use
2022-04-27 22:04:05 +0200 <dolio> Cubical agda did have a bunch of different natural number types starting at different values at some point, but I think they dropped them and standardized on 0.
2022-04-27 22:05:26 +0200 <dolio> I think one of them started at -1, but I don't remember what used that.
2022-04-27 22:05:47 +0200Topsi(~Tobias@dyndsl-095-033-094-053.ewe-ip-backbone.de)
2022-04-27 22:05:53 +0200nucranium(~nucranium@2a02:8010:6173:0:8102:5ccd:28d9:3575)
2022-04-27 22:07:23 +0200 <EvanR> janus, careful because they have overlapping names. There may be pred for Nat in one module, pred in a class from another module
2022-04-27 22:08:05 +0200dextaa4(~dextaa@user/dextaa) (Remote host closed the connection)
2022-04-27 22:08:10 +0200 <EvanR> (possibly)
2022-04-27 22:08:32 +0200 <janus> oh. i imported Data.Bits and i get Data.Nat.pred
2022-04-27 22:08:55 +0200 <janus> and yeah, pred is not in the prelude
2022-04-27 22:09:42 +0200 <EvanR> maybe idris 2 dropped Enum xD\
2022-04-27 22:12:04 +0200justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.4)
2022-04-27 22:13:15 +0200jmdaemon(~jmdaemon@user/jmdaemon)
2022-04-27 22:16:39 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-04-27 22:21:22 +0200abrantesasf(~abrantesa@177.137.232.91)
2022-04-27 22:22:33 +0200nattiestnate(~nate@202.138.250.17)
2022-04-27 22:24:12 +0200benin(~benin@183.82.204.110) (Quit: The Lounge - https://thelounge.chat)
2022-04-27 22:29:44 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-04-27 22:30:12 +0200pavonia(~user@user/siracusa)
2022-04-27 22:32:13 +0200 <remexre> ugh, does LLVM-backend GHC not reap zombies?
2022-04-27 22:32:35 +0200 <remexre> just checked htop, >1/2 my total assigned PIDs are gcc zombies of HLS
2022-04-27 22:34:04 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-04-27 22:35:44 +0200 <geekosaur> g*c*c? LLVM backend doesn't use gcc, it uses opt and lld
2022-04-27 22:36:16 +0200 <geekosaur> gcc is used for CApiFFI and for foreign export stubs, among other things
2022-04-27 22:36:34 +0200 <remexre> would one of those include template haskell perhaps?
2022-04-27 22:36:42 +0200 <geekosaur> no
2022-04-27 22:37:26 +0200 <geekosaur> ghc stopped compiling via C years ago, HLS doesn't even support versions that do it
2022-04-27 22:37:34 +0200 <geekosaur> (7.x iirc)
2022-04-27 22:38:19 +0200 <remexre> idk how it's happening, but I have screenshots to prove it :P
2022-04-27 22:38:43 +0200 <geekosaur> so the only time gcc is used is when it needs to be compatible with C linkage during FFI
2022-04-27 22:39:06 +0200 <geekosaur> or c2hs/hsc2hs
2022-04-27 22:39:48 +0200tiferrei(~tiferrei@user/tiferrei) (Remote host closed the connection)
2022-04-27 22:40:00 +0200 <remexre> I don't _think_ I'm using any of those
2022-04-27 22:40:02 +0200 <remexre> definitely not directly
2022-04-27 22:40:13 +0200 <remexre> https://photos.app.goo.gl/hZpoE9LQgF9FVmcN8 anyway
2022-04-27 22:40:47 +0200geranim0(~geranim0@modemcable242.171-178-173.mc.videotron.ca) (Remote host closed the connection)
2022-04-27 22:41:01 +0200 <geekosaur> I would ask about that in #haskell-language-server
2022-04-27 22:41:14 +0200 <remexre> ok
2022-04-27 22:41:41 +0200tiferrei(~tiferrei@user/tiferrei)
2022-04-27 22:42:53 +0200Guest2725(~Guest27@2601:281:d47f:1590::bc8f)
2022-04-27 22:43:39 +0200tiferrei(~tiferrei@user/tiferrei) (Remote host closed the connection)
2022-04-27 22:44:14 +0200 <Guest2725> What's the best networking lib for a beginner? `network` recommends `network-simple`, `connection`, or `hookup`
2022-04-27 22:47:30 +0200 <exarkun> a beginner programmer, a beginner haskell programmer, or a beginner network programmer
2022-04-27 22:48:47 +0200 <Guest2725> First one. The goal is implementing toy clients/servers for various protocols
2022-04-27 22:49:52 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-04-27 22:55:38 +0200roconnor(~roconnor@coq/roconnor)
2022-04-27 22:57:09 +0200michalz(~michalz@185.246.204.125) (Remote host closed the connection)
2022-04-27 23:01:15 +0200Feuermagier(~Feuermagi@user/feuermagier)
2022-04-27 23:01:58 +0200alp_(~alp@user/alp) (Ping timeout: 250 seconds)
2022-04-27 23:08:04 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-04-27 23:13:27 +0200alx741(~alx741@host-181-198-243-150.netlife.ec)
2022-04-27 23:13:30 +0200 <EvanR> when I was a beginner I went with sockets.h and man pages
2022-04-27 23:14:04 +0200 <EvanR> and significant flailing
2022-04-27 23:16:25 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2022-04-27 23:16:46 +0200 <janus> Guest2725: i would work with websockets because then you can get an attractive client that motivates you with a good debugger (browser inspector)
2022-04-27 23:16:53 +0200 <janus> Guest2725: and you get framing for free
2022-04-27 23:17:21 +0200 <janus> but i guess it depends what kinda protocols you want to implement
2022-04-27 23:19:05 +0200alx741(~alx741@host-181-198-243-150.netlife.ec) (Ping timeout: 256 seconds)
2022-04-27 23:21:09 +0200alx741(~alx741@host-181-198-243-150.netlife.ec)
2022-04-27 23:23:16 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-04-27 23:24:50 +0200chddr(~Thunderbi@91.226.35.182) (Ping timeout: 272 seconds)
2022-04-27 23:24:55 +0200 <EvanR> websockets is cool but comes with its own gotchas
2022-04-27 23:26:48 +0200nucranium(~nucranium@2a02:8010:6173:0:8102:5ccd:28d9:3575) (Ping timeout: 248 seconds)
2022-04-27 23:28:30 +0200alx741(~alx741@host-181-198-243-150.netlife.ec) (Ping timeout: 246 seconds)
2022-04-27 23:30:15 +0200Pickchea(~private@user/pickchea) (Ping timeout: 246 seconds)
2022-04-27 23:30:32 +0200alx741(~alx741@host-181-198-243-150.netlife.ec)
2022-04-27 23:31:05 +0200 <EvanR> Guest2725, note that forkIO threads or the async library, along with GHCs runtime, makes some aspects of networking much nicer without buying into a full netlib suite
2022-04-27 23:31:58 +0200 <EvanR> which I'd think wouldn't work anyway since you're going for "various protocols"
2022-04-27 23:35:26 +0200bitmapper(uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2022-04-27 23:35:49 +0200chddr(~Thunderbi@91.226.35.182)
2022-04-27 23:38:06 +0200 <Guest2725> EvanR Just to make sure I understand, you're recommending plain sockets and Haskell's native async?
2022-04-27 23:38:07 +0200 <Guest2725> janus What does "framing" mean?
2022-04-27 23:38:46 +0200 <janus> Guest2725: many protocols are based on 'messages', but tcp is 'stream' based
2022-04-27 23:38:48 +0200 <EvanR> async is a library built on forkIO threads to make waiting for side tasks easier and deal with corner cases
2022-04-27 23:39:37 +0200 <janus> Guest2725: so something sent in one call to send(2) could be divided up and received over multiple calls to recv(2)
2022-04-27 23:39:42 +0200alx741(~alx741@host-181-198-243-150.netlife.ec) (Ping timeout: 246 seconds)
2022-04-27 23:39:44 +0200 <janus> or vice versa
2022-04-27 23:40:11 +0200 <Guest2725> Ohh okay, I gotchu
2022-04-27 23:40:44 +0200 <EvanR> websockets gives you messages, whereas tcp builds a stream interface on the underlying messages of IP xD
2022-04-27 23:40:57 +0200 <EvanR> websocket message -> tcp stream -> internet messages
2022-04-27 23:41:00 +0200 <EvanR> lol
2022-04-27 23:41:39 +0200 <EvanR> "make up your mind"
2022-04-27 23:42:09 +0200 <Guest2725> I desire MOAR ABSTRACTIONS
2022-04-27 23:42:31 +0200 <EvanR> and wait for it, a big use case for websockets is... STREAMING
2022-04-27 23:43:22 +0200 <Guest2725> Hmm yes, abstraction ouroboros
2022-04-27 23:44:51 +0200eggplantade(~Eggplanta@108.201.191.115)
2022-04-27 23:45:49 +0200stackdroid18(14094@user/stackdroid)
2022-04-27 23:45:53 +0200zeenk(~zeenk@2a02:2f0e:7603:9c01:4e89:6ef1:76e9:3685)
2022-04-27 23:47:50 +0200 <monochrom> Can't blame them. The main use case for internet messages is... streaming, too. See "tcp stream -> internet messages". :)
2022-04-27 23:48:34 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-04-27 23:48:49 +0200 <monochrom> Unpopular opinion: 99% of bandwidth is spent on reinventing message delimiters >:)
2022-04-27 23:48:59 +0200eggplantade(~Eggplanta@108.201.191.115) (Ping timeout: 240 seconds)
2022-04-27 23:49:24 +0200 <geekosaur> or re-uninventing
2022-04-27 23:49:54 +0200king_gs(~Thunderbi@187.201.77.157)
2022-04-27 23:50:58 +0200 <geekosaur> flip side this is why so many protocols are text based
2022-04-27 23:50:59 +0200chddr(~Thunderbi@91.226.35.182) (Remote host closed the connection)
2022-04-27 23:51:29 +0200 <Bulby[m]> nobody likes binary
2022-04-27 23:52:27 +0200tcsavage(~tcsavage@195.213.144.166) (Quit: tcsavage)
2022-04-27 23:53:01 +0200 <janus> everybody with tooling has no issue with binary, but most people don't have tooling :P
2022-04-27 23:54:50 +0200 <janus> i don't understand, what is the link between text-based and streaming?
2022-04-27 23:58:16 +0200zeenk(~zeenk@2a02:2f0e:7603:9c01:4e89:6ef1:76e9:3685) (Ping timeout: 248 seconds)
2022-04-27 23:58:24 +0200werneta(~werneta@137.79.197.49) (Ping timeout: 272 seconds)
2022-04-27 23:59:17 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-04-27 23:59:26 +0200alp_(~alp@user/alp)
2022-04-27 23:59:57 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Client Quit)