2021/09/17

2021-09-17 00:00:03 +0000 <ldlework> It's got the andromeda example code in Main.hs, .cabal depending on andromeda, shell.nix, etc
2021-09-17 00:00:49 +0000 <ldlework> after doing `nix-shell` you do `runhaskell Setup.hs configure`
2021-09-17 00:01:03 +0000 <ldlework> which would install cabal deps, then `runhaskell Setup.hs build` to build
2021-09-17 00:01:28 +0000 <ProofTechnique> I expect you'll run into some issues with your package and this other package having the same name
2021-09-17 00:02:00 +0000aegon(~mike@174.127.249.180) (Quit: leaving)
2021-09-17 00:03:29 +0000 <ProofTechnique> I think changing your `pkgs` in you shell.nix to something like https://pastebin.com/RkJ55SDe (filling in the rev and sha according to whatever `nix-prefetch-git` says) should work
2021-09-17 00:04:30 +0000 <ProofTechnique> Oh, and you may need to be more specific than `haskellPackages` if you're targeting 8.10.7, specifically
2021-09-17 00:04:30 +0000 <ldlework> ProofTechnique: OK I changed the name to androcells and pushed
2021-09-17 00:04:44 +0000geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2021-09-17 00:04:44 +0000allbery_b(~geekosaur@xmonad/geekosaur)
2021-09-17 00:04:47 +0000allbery_bgeekosaur
2021-09-17 00:05:03 +0000 <ProofTechnique> And then you'll just be able to refer to `pkgs.haskell.packages.ghc8107.andromeda` and all should be hunky-dory
2021-09-17 00:06:16 +0000 <ldlework> ProofTechnique: should I be extending `pkgs.haskell.packages.ghc8107` ?
2021-09-17 00:06:22 +0000 <ProofTechnique> https://pastebin.com/cFNLE6Rh
2021-09-17 00:06:36 +0000tdidrfyls^(~tdidrfyls@68.101.54.227) (Remote host closed the connection)
2021-09-17 00:06:46 +0000 <ldlework> i see
2021-09-17 00:06:55 +0000 <ProofTechnique> Yeah, if you do it like this, you can then use `pkgs.haskellPackages` and be guaranteed that all of your packages come from the extended set
2021-09-17 00:08:25 +0000 <ProofTechnique> Looks like `rev` should be `502dfa6703eca9717c7cde0c93959fa0a83e77ed` and `sha256` should be `0ymbfpxlh938zryvw2nab0jls9nmf8jjcnyxbbdl47vaq543chir`
2021-09-17 00:10:04 +0000 <ldlework> ProofTechnique: where am I going wrong here
2021-09-17 00:10:06 +0000 <ldlework> https://gist.github.com/dustinlacewell/8fb9f4c7dca9426fc635d6920152a54e
2021-09-17 00:10:15 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-17 00:10:35 +0000thyriaen(~thyriaen@dynamic-078-055-122-076.78.55.pool.telefonica.de) (Quit: Leaving)
2021-09-17 00:10:43 +0000 <ProofTechnique> https://pastebin.com/U2aP1z1B Edited config with all the stuff
2021-09-17 00:10:47 +0000 <ProofTechnique> Uh, not sure
2021-09-17 00:11:11 +0000 <ldlework> yours worked
2021-09-17 00:11:52 +0000 <ProofTechnique> Really? I'm honestly a little stunned :D
2021-09-17 00:13:29 +0000 <ldlework> ProofTechnique: http://logos.ldlework.com/caps/2021-09-17-00-13-26.png
2021-09-17 00:13:30 +0000sneedsfeed(~sneedsfee@rrcs-173-95-122-169.midsouth.biz.rr.com) (Quit: Client closed)
2021-09-17 00:13:34 +0000 <ldlework> \o/
2021-09-17 00:14:48 +0000 <ProofTechnique> Nice!
2021-09-17 00:17:07 +0000 <ldlework> I also just found http://lambdacube3d.com/
2021-09-17 00:25:41 +0000arkho(~ccc@dynamic-acs-24-112-153-241.zoominternet.net) (Remote host closed the connection)
2021-09-17 00:27:26 +0000favonia(~favonia@user/favonia)
2021-09-17 00:32:55 +0000proofofkeags_(~proofofke@205.209.28.54) (Ping timeout: 268 seconds)
2021-09-17 00:34:14 +0000favonia(~favonia@user/favonia) (Ping timeout: 260 seconds)
2021-09-17 00:39:16 +0000xff0x(~xff0x@2001:1a81:526d:1c00:6ed0:c2d3:55f8:e793) (Ping timeout: 252 seconds)
2021-09-17 00:39:42 +0000hyiltiz(~quassel@31.220.5.250)
2021-09-17 00:40:03 +0000xff0x(~xff0x@2001:1a81:526d:1c00:e52d:fb7a:8e70:ce09)
2021-09-17 00:44:51 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-09-17 00:47:20 +0000favonia(~favonia@user/favonia)
2021-09-17 00:56:23 +0000 <Cajun> Idlework: are you using that shader library to implement game of life?
2021-09-17 00:56:23 +0000justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2)
2021-09-17 01:00:05 +0000alx741(~alx741@181.196.68.9) (Quit: alx741)
2021-09-17 01:03:45 +0000 <Cajun> because its not entirely necessary for GoL if thats the case. heres some example code i found that runs pretty well on my system given its insane size. i cant tell what the framerate is, but its not 60. probably more around 30. https://prnt.sc/1shzok2
2021-09-17 01:09:02 +0000dragestil(~quassel@user/dragestil) (Ping timeout: 252 seconds)
2021-09-17 01:09:02 +0000dragestil_dragestil
2021-09-17 01:10:01 +0000dragestil_(~quassel@user/dragestil)
2021-09-17 01:10:08 +0000hyiltiz(~quassel@31.220.5.250) (Ping timeout: 268 seconds)
2021-09-17 01:10:24 +0000 <ldlework> Cajun: my problem is that with Gloss it is slow
2021-09-17 01:10:31 +0000 <Cajun> try GLUT
2021-09-17 01:11:45 +0000pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.2.1)
2021-09-17 01:12:58 +0000MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Ping timeout: 260 seconds)
2021-09-17 01:13:06 +0000 <hololeap> I have newtype N = N { getN :: TVar T } and I have the function `fmap N . traverse (fmap f . readTVar) . getN`
2021-09-17 01:13:34 +0000 <hololeap> I would like to use optics to reduce the clutter and hopefully remove the `fmap N` and `getN` from that function. how can I do this?
2021-09-17 01:13:50 +0000xff0x(~xff0x@2001:1a81:526d:1c00:e52d:fb7a:8e70:ce09) (Ping timeout: 268 seconds)
2021-09-17 01:14:43 +0000MQ-17J(~MQ-17J@8.21.10.6)
2021-09-17 01:15:14 +0000xff0x(~xff0x@2001:1a81:52ad:c900:2fb9:e85d:6382:ddb8)
2021-09-17 01:17:21 +0000lavaman(~lavaman@98.38.249.169)
2021-09-17 01:18:18 +0000 <c_wraith> that... type-checks?
2021-09-17 01:18:43 +0000 <c_wraith> I guess it type-checks if f returns TVar T
2021-09-17 01:19:07 +0000 <hololeap> oh, yeah I suppose it doesn't... bad attempt at a simplification
2021-09-17 01:20:09 +0000 <hololeap> newtype Children f a = Children { getChildren :: HashMap ChildName (f a) }
2021-09-17 01:20:31 +0000 <hololeap> fromTVarChildren :: Children TVar a -> STM (Children Identity a)
2021-09-17 01:20:39 +0000 <hololeap> fromTVarChildren = fmap Children . traverse (fmap Identity . readTVar) . getChildren
2021-09-17 01:20:45 +0000 <c_wraith> if you want to mutate TVars in place at locations described by optics, traverseOf_ would apply
2021-09-17 01:21:34 +0000lavaman(~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
2021-09-17 01:22:14 +0000hyiltiz(~quassel@31.220.5.250)
2021-09-17 01:22:57 +0000 <awpr> looks like `traverse10 readTVar` to me: https://hackage.haskell.org/package/ten-0.1.0.1/docs/Data-Ten-Traversable.html#v:traverse10
2021-09-17 01:23:29 +0000 <awpr> or `traverse10 (fmap Identity . readTVar)` I guess
2021-09-17 01:24:23 +0000 <awpr> the Generics stuff should be able to derive the instances for that type
2021-09-17 01:25:54 +0000 <hololeap> hm, ok
2021-09-17 01:25:59 +0000dsrt^(~dsrt@68.101.54.227)
2021-09-17 01:27:55 +0000juhp_(~juhp@bb220-255-204-220.singnet.com.sg)
2021-09-17 01:28:16 +0000 <awpr> granted the right application of 'coerce' would probably do the trick too in this case since it's just a newtype constructor
2021-09-17 01:28:28 +0000neurocyte0(~neurocyte@user/neurocyte)
2021-09-17 01:29:40 +0000juhp__(~juhp@bb220-255-204-220.singnet.com.sg)
2021-09-17 01:29:41 +0000juhp(~juhp@bb220-255-204-220.singnet.com.sg) (Read error: Connection reset by peer)
2021-09-17 01:30:08 +0000 <awpr> oh, it doesn't have the right kind for `ten`, my bad. `newtype Children a f` would, but I don't know if that's reasonable for your situation
2021-09-17 01:30:16 +0000 <hololeap> I just wanted to somehow shove the `traverse (fmap Identity . readTVar)` underneath the Children wrapper without the explicit unwrap and "fmapped wrap"
2021-09-17 01:30:22 +0000juhp__juhp
2021-09-17 01:30:32 +0000loonycyborg(~loonycybo@wesnoth/developer/loonycyborg) (Ping timeout: 250 seconds)
2021-09-17 01:31:01 +0000 <awpr> `coerce` can probably do that
2021-09-17 01:31:06 +0000neurocyte(~neurocyte@user/neurocyte) (Ping timeout: 268 seconds)
2021-09-17 01:31:06 +0000neurocyte0neurocyte
2021-09-17 01:31:38 +0000 <Axman6> coerce readTVar should work
2021-09-17 01:31:45 +0000 <Axman6> maybe with some type annotations
2021-09-17 01:31:56 +0000wrengrwrengr_away
2021-09-17 01:31:58 +0000Guest640(~chris@81.96.113.213) (Remote host closed the connection)
2021-09-17 01:32:02 +0000 <awpr> that's for the old oversimplified version of the type
2021-09-17 01:32:54 +0000 <hololeap> no way to do this with optics? my intention was to reduce verbosity, and adding a bunch of type annotations seems like it might increase it
2021-09-17 01:33:06 +0000 <hololeap> mapped :: Functor f => Setter (f a) (f b) a b
2021-09-17 01:33:25 +0000loonycyborg(~loonycybo@wesnoth/developer/loonycyborg)
2021-09-17 01:33:25 +0000 <awpr> `_Wrapped` maybe
2021-09-17 01:33:46 +0000 <awpr> might have to TH some instances into existence to make that work, though
2021-09-17 01:33:48 +0000 <Axman6> does coerce (traverse (fmap Identity . readTVar)) work?
2021-09-17 01:33:58 +0000 <hololeap> let me try
2021-09-17 01:33:58 +0000juhp_(~juhp@bb220-255-204-220.singnet.com.sg) (Ping timeout: 268 seconds)
2021-09-17 01:34:28 +0000sneedsfeed(~sneedsfee@rrcs-173-95-122-169.midsouth.biz.rr.com)
2021-09-17 01:34:32 +0000 <Axman6> might need some .... annotations for the type params. hmm, can't remember what those were called
2021-09-17 01:34:49 +0000 <awpr> TypeApplications, or just a signature
2021-09-17 01:34:56 +0000 <Axman6> type roles
2021-09-17 01:35:31 +0000funsafe(~funsafe@2601:1c1:4200:e53:2875:5507:42e4:4e14) (Read error: Connection reset by peer)
2021-09-17 01:35:37 +0000 <awpr> those should be inferred correctly in this case, and they have no power over coercions in the same module that defines the newtype
2021-09-17 01:35:38 +0000 <Axman6> https://downloads.haskell.org/ghc/9.2.1-alpha1/docs/html/users_guide/exts/roles.html
2021-09-17 01:35:52 +0000 <Axman6> hmm, ok
2021-09-17 01:36:36 +0000 <Axman6> % :t coerce (traverse (fmap Identity . readTVar))
2021-09-17 01:36:36 +0000 <yahb> Axman6: (Traversable t, Coercible b (t (TVar a) -> STM (t (Identity a)))) => b
2021-09-17 01:36:40 +0000 <hololeap> Axman6: http://sprunge.us/Ny5tua
2021-09-17 01:36:55 +0000juhp(~juhp@bb220-255-204-220.singnet.com.sg) (Ping timeout: 265 seconds)
2021-09-17 01:37:02 +0000funsafe(~funsafe@2601:1c1:4200:e53:2875:5507:42e4:4e14)
2021-09-17 01:37:13 +0000 <Axman6> % :t \x -> coerce (traverse (fmap Identity . readTVar)) x
2021-09-17 01:37:13 +0000 <yahb> Axman6: (Traversable t1, Coercible t2 (t1 (TVar a)), Coercible t3 (STM (t1 (Identity a)))) => t2 -> t3
2021-09-17 01:37:28 +0000 <awpr> yeah, coerce tends to result in a lot of confusion about what types you want on either side
2021-09-17 01:38:20 +0000 <awpr> you can probably also `makeLenses ''Children` and get an Iso to use like `_getChildren (traverse ...)`
2021-09-17 01:38:51 +0000 <Axman6> yeah, and that implementation should just be coerce anyway
2021-09-17 01:39:00 +0000 <Axman6> that's probably the way to go
2021-09-17 01:39:07 +0000MQ-17J(~MQ-17J@8.21.10.6) (Ping timeout: 268 seconds)
2021-09-17 01:39:31 +0000 <hololeap> I'm using Optics.Label and OverloadedLabels
2021-09-17 01:39:51 +0000 <Axman6> you'd have something like _Children . traversed . mapped (coerce readTVar)
2021-09-17 01:40:02 +0000Cajun(~Cajun@user/cajun) (Quit: Client closed)
2021-09-17 01:40:55 +0000 <Axman6> % :t _Wrapped . traversed . mapped (coerce readTVar :: TVar a -> STM (Identity a))
2021-09-17 01:40:55 +0000 <yahb> Axman6: ; <interactive>:1:24: error:; * Couldn't match type `STM' with `p0 a0'; Expected: f (TVar a) -> p0 a0 (f (Identity a)); Actual: f (TVar a) -> STM (f (Identity a)); * In the second argument of `(.)', namely `mapped (coerce readTVar :: TVar a -> STM (Identity a))'; In the second argument of `(.)', namely `traversed . mapped (coerce readTVar :: TVar a -> STM (Identity a))';
2021-09-17 01:40:56 +0000Cajun(~Cajun@user/cajun)
2021-09-17 01:41:30 +0000 <Axman6> % :t _Wrapped . traversed . mapped (fmap Identity readTVar)
2021-09-17 01:41:30 +0000 <yahb> Axman6: ; <interactive>:1:32: error:; * Couldn't match type `Identity' with `p0 a0'; Expected: TVar a -> p0 a0 (STM a); Actual: TVar a -> Identity (STM a); * In the first argument of `mapped', namely `(fmap Identity readTVar)'; In the second argument of `(.)', namely `mapped (fmap Identity readTVar)'; In the second argument of `(.)', namely `traversed . mapped (fmap Identity rea
2021-09-17 01:42:09 +0000 <Axman6> ok, I don't know hwat I'm doing
2021-09-17 01:42:55 +0000 <hololeap> you and me both :p
2021-09-17 01:43:06 +0000 <hololeap> anything past simple getters and setters is over my head
2021-09-17 01:43:23 +0000lavaman(~lavaman@98.38.249.169)
2021-09-17 01:44:34 +0000lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-09-17 01:46:10 +0000vysn(~vysn@user/vysn) (Ping timeout: 240 seconds)
2021-09-17 01:47:45 +0000dragestil_(~quassel@user/dragestil) (Ping timeout: 268 seconds)
2021-09-17 01:47:48 +0000chris(~chris@81.96.113.213)
2021-09-17 01:47:51 +0000chrisGuest1782
2021-09-17 01:50:42 +0000OscarH(~OscarH@90.201.86.195)
2021-09-17 01:52:41 +0000Guest1782(~chris@81.96.113.213) (Ping timeout: 268 seconds)
2021-09-17 01:52:50 +0000juhp(~juhp@111.65.68.133)
2021-09-17 01:52:52 +0000pbrisbin(~patrick@pool-173-49-147-250.phlapa.fios.verizon.net) (Ping timeout: 265 seconds)
2021-09-17 01:55:27 +0000 <Boarders> Does anyone know an open source repo that makes heavy use of intmap and has extensive benchmarks?
2021-09-17 01:56:28 +0000System123(~System123@net-37-179-171-3.cust.vodafonedsl.it)
2021-09-17 01:58:22 +0000lavaman(~lavaman@98.38.249.169)
2021-09-17 01:59:53 +0000dragestil_(~quassel@user/dragestil)
2021-09-17 02:01:19 +0000System123(~System123@net-37-179-171-3.cust.vodafonedsl.it) (Ping timeout: 268 seconds)
2021-09-17 02:02:41 +0000hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2021-09-17 02:03:42 +0000hololeap(~hololeap@user/hololeap)
2021-09-17 02:05:14 +0000 <hololeap> Boarders: https://github.com/haskell/containers/blob/master/containers-tests/benchmarks/IntMap.hs
2021-09-17 02:05:15 +0000 <hololeap> ?
2021-09-17 02:06:55 +0000 <Axman6> GHC? :)
2021-09-17 02:07:12 +0000 <Axman6> there was a great talk at this year's HIW about GHC's IntMap usage actually!
2021-09-17 02:08:06 +0000jokleinn(~jokleinn@user/jokleinn) (Ping timeout: 268 seconds)
2021-09-17 02:08:25 +0000 <hololeap> this has all the containers benchmarks: https://github.com/haskell/containers/blob/master/containers-tests/containers-tests.cabal
2021-09-17 02:09:06 +0000lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-09-17 02:18:13 +0000shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 252 seconds)
2021-09-17 02:20:38 +0000td_(~td@muedsl-82-207-238-006.citykom.de) (Ping timeout: 260 seconds)
2021-09-17 02:22:25 +0000td_(~td@94.134.91.4)
2021-09-17 02:26:51 +0000 <awpr> I don't know whether to be appreciative of QuickCheck or annoyed at it, for informing me I fail to round-trip "\SO\&H" to "\SOH"
2021-09-17 02:27:07 +0000 <awpr> text escaping is... fun
2021-09-17 02:31:22 +0000 <awpr> ooh, juicy tidbit, `instance Show String` uses `ShowS` as something more than just a `DList`, it actually peeks at what comes after it
2021-09-17 02:31:48 +0000 <awpr> > showsPrec "\SO" "H"
2021-09-17 02:31:49 +0000 <lambdabot> error:
2021-09-17 02:31:49 +0000 <lambdabot> • Couldn't match expected type ‘Int’ with actual type ‘[Char]’
2021-09-17 02:31:49 +0000 <lambdabot> • In the first argument of ‘showsPrec’, namely ‘"\SO"’
2021-09-17 02:31:53 +0000 <awpr> > show "\SO" "H"
2021-09-17 02:31:54 +0000seventhCrow(crow@gateway/vpn/protonvpn/seventhcrow) (Remote host closed the connection)
2021-09-17 02:31:54 +0000 <lambdabot> error:
2021-09-17 02:31:54 +0000 <lambdabot> • Couldn't match expected type ‘[Char] -> t’
2021-09-17 02:31:54 +0000 <lambdabot> with actual type ‘[Char]’
2021-09-17 02:32:45 +0000seventhCrow(crow@gateway/vpn/protonvpn/seventhcrow)
2021-09-17 02:33:22 +0000 <awpr> > (GHC.Show.showLitString "\SO" "H", GHC.Show.showLitString "\SO" "S")
2021-09-17 02:33:24 +0000 <lambdabot> error:
2021-09-17 02:33:24 +0000 <lambdabot> Not in scope: ‘GHC.Show.showLitString’
2021-09-17 02:33:24 +0000 <lambdabot> No module named ‘GHC.Show’ is imported.error:
2021-09-17 02:33:46 +0000 <awpr> huh. oh well
2021-09-17 02:38:48 +0000[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Quit: Leaving)
2021-09-17 02:39:37 +0000lavaman(~lavaman@98.38.249.169)
2021-09-17 02:39:45 +0000pooryorick(~pooryoric@87-119-174-173.tll.elisa.ee) (Ping timeout: 265 seconds)
2021-09-17 02:40:52 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-17 02:41:11 +0000pooryorick(~pooryoric@87-119-174-173.tll.elisa.ee)
2021-09-17 02:41:24 +0000favonia(~favonia@user/favonia) (Ping timeout: 268 seconds)
2021-09-17 02:42:10 +0000dragestil_(~quassel@user/dragestil) (Ping timeout: 265 seconds)
2021-09-17 02:43:15 +0000hyiltiz(~quassel@31.220.5.250) (Ping timeout: 268 seconds)
2021-09-17 02:43:30 +0000dragestil_(~quassel@user/dragestil)
2021-09-17 02:44:04 +0000lavaman(~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
2021-09-17 02:44:40 +0000xff0x(~xff0x@2001:1a81:52ad:c900:2fb9:e85d:6382:ddb8) (Ping timeout: 252 seconds)
2021-09-17 02:45:24 +0000xff0x(~xff0x@2001:1a81:52ad:c900:aed8:d538:dc44:ee0)
2021-09-17 02:47:12 +0000hyiltiz(~quassel@31.220.5.250)
2021-09-17 02:47:44 +0000hololeap(~hololeap@user/hololeap) (Quit: Bye)
2021-09-17 02:57:30 +0000FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 260 seconds)
2021-09-17 02:59:23 +0000FinnElija(~finn_elij@user/finn-elija/x-0085643)
2021-09-17 03:04:25 +0000hyiltiz(~quassel@31.220.5.250) (Ping timeout: 252 seconds)
2021-09-17 03:04:46 +0000hyiltiz(~quassel@31.220.5.250)
2021-09-17 03:11:58 +0000hyiltiz(~quassel@31.220.5.250) (Ping timeout: 260 seconds)
2021-09-17 03:15:02 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-09-17 03:19:20 +0000hyiltiz(~quassel@31.220.5.250)
2021-09-17 03:22:00 +0000hendursaga(~weechat@user/hendursaga) (Ping timeout: 276 seconds)
2021-09-17 03:22:05 +0000hendursa1(~weechat@user/hendursaga)
2021-09-17 03:23:49 +0000xsperry(~as@user/xsperry)
2021-09-17 03:26:25 +0000waleee(~waleee@h-98-128-228-119.na.cust.bahnhof.se) (Ping timeout: 252 seconds)
2021-09-17 03:39:33 +0000zebrag(~chris@user/zebrag) (Remote host closed the connection)
2021-09-17 03:46:34 +0000lavaman(~lavaman@98.38.249.169)
2021-09-17 03:51:10 +0000lavaman(~lavaman@98.38.249.169) (Ping timeout: 260 seconds)
2021-09-17 04:01:55 +0000hyiltiz(~quassel@31.220.5.250) (Ping timeout: 265 seconds)
2021-09-17 04:07:07 +0000juhp(~juhp@111.65.68.133) (Read error: Connection reset by peer)
2021-09-17 04:07:38 +0000brettgilio(~brettgili@x-node.gq) (Quit: Ping timeout (120 seconds))
2021-09-17 04:08:10 +0000brettgilio(~brettgili@x-node.gq)
2021-09-17 04:11:33 +0000falafel(~falafel@2603-8000-d800-688c-753f-04f5-7eeb-6eb7.res6.spectrum.com)
2021-09-17 04:17:21 +0000hyiltiz(~quassel@31.220.5.250)
2021-09-17 04:21:18 +0000falafel(~falafel@2603-8000-d800-688c-753f-04f5-7eeb-6eb7.res6.spectrum.com) (Ping timeout: 268 seconds)
2021-09-17 04:27:21 +0000falafel(~falafel@2603-8000-d800-688c-753f-04f5-7eeb-6eb7.res6.spectrum.com)
2021-09-17 04:34:44 +0000seventhCrow(crow@gateway/vpn/protonvpn/seventhcrow) (Quit: WeeChat 3.2.1)
2021-09-17 04:36:48 +0000ArctVaulMarsHMPJ(~pjetcetal@2.95.253.167)
2021-09-17 04:37:04 +0000ArctVaulMarsHMPJ(~pjetcetal@2.95.253.167) (Read error: Connection reset by peer)
2021-09-17 04:38:28 +0000vonfry(~user@116.236.75.238)
2021-09-17 04:41:05 +0000 <Axman6> @pl (\s -> (,s) <$> ux)
2021-09-17 04:41:05 +0000 <lambdabot> (line 1, column 10):
2021-09-17 04:41:05 +0000 <lambdabot> unexpected ','
2021-09-17 04:41:05 +0000 <lambdabot> expecting expression
2021-09-17 04:41:16 +0000 <Axman6> @pl (\s -> (\x -> (x,s)) <$> ux)
2021-09-17 04:41:16 +0000 <lambdabot> (<$> ux) . flip (,)
2021-09-17 04:41:22 +0000 <Axman6> gross
2021-09-17 04:41:38 +0000 <Axman6> @pl (\s -> fmap (\x -> (x,s)) ux)
2021-09-17 04:41:38 +0000 <lambdabot> flip fmap ux . flip (,)
2021-09-17 04:41:43 +0000 <Axman6> Also gross
2021-09-17 04:45:40 +0000falafel(~falafel@2603-8000-d800-688c-753f-04f5-7eeb-6eb7.res6.spectrum.com) (Ping timeout: 240 seconds)
2021-09-17 04:51:54 +0000neo1(~neo3@cpe-292712.ip.primehome.com)
2021-09-17 04:52:18 +0000hyiltiz(~quassel@31.220.5.250) (Ping timeout: 260 seconds)
2021-09-17 04:57:26 +0000mikoto-chan(~mikoto-ch@83.137.2.251)
2021-09-17 05:08:43 +0000mikoto-chan(~mikoto-ch@83.137.2.251) (Ping timeout: 252 seconds)
2021-09-17 05:11:39 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-17 05:15:59 +0000Cajun(~Cajun@user/cajun) (Ping timeout: 256 seconds)
2021-09-17 05:17:15 +0000falafel(~falafel@2603-8000-d800-688c-753f-04f5-7eeb-6eb7.res6.spectrum.com)
2021-09-17 05:19:30 +0000martin02(~silas@141.84.69.76) (Ping timeout: 260 seconds)
2021-09-17 05:21:10 +0000machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 240 seconds)
2021-09-17 05:21:31 +0000doyougnu(~user@c-73-25-202-122.hsd1.or.comcast.net) (Ping timeout: 268 seconds)
2021-09-17 05:22:08 +0000falafel(~falafel@2603-8000-d800-688c-753f-04f5-7eeb-6eb7.res6.spectrum.com) (Ping timeout: 268 seconds)
2021-09-17 05:25:34 +0000_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-09-17 05:27:57 +0000dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-09-17 05:28:26 +0000vysn(~vysn@user/vysn)
2021-09-17 05:37:06 +0000vysn(~vysn@user/vysn) (Ping timeout: 260 seconds)
2021-09-17 05:38:15 +0000 <vaibhavsagar[m]> Does anyone know why `fail "<errormsg>" o` is valid in GHC pre-8.8? https://nbviewer.jupyter.org/github/vaibhavsagar/notebooks/blob/a7d0a787c9757778505d8458b4e2318fc6…
2021-09-17 05:38:41 +0000vysn(~vysn@user/vysn)
2021-09-17 05:38:49 +0000 <vaibhavsagar[m]> my colleague thinks it's because `fail` was part of `Monad` then, which means there was a `fail` instance for `((->) r)`
2021-09-17 05:38:50 +0000 <awpr> probably `(->) a` Monad instance?
2021-09-17 05:39:00 +0000 <awpr> yeah, that
2021-09-17 05:39:05 +0000 <vaibhavsagar[m]> it's fixed in 8.8 onwards: https://nbviewer.jupyter.org/github/vaibhavsagar/notebooks/blob/ee7e1756137e6c7f0a5744b0144203b348…
2021-09-17 05:39:27 +0000 <vaibhavsagar[m]> okay, I lost a day or two to it at work since we're on an old GHC
2021-09-17 05:39:55 +0000 <vaibhavsagar[m]> but I've been nudging us to upgrade so more evidence that we should is good I guess
2021-09-17 05:41:31 +0000 <vaibhavsagar[m]> also I'm really proud of that notebook, I used a different version of Aeson than the one that was used to build IHaskell and it still worked because I made some changes to how IHaskell is packaged with Nix just a week ago
2021-09-17 05:42:52 +0000michalz(~michalz@185.246.204.37)
2021-09-17 05:43:38 +0000takuan(~takuan@178-116-218-225.access.telenet.be)
2021-09-17 05:45:50 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-09-17 05:46:54 +0000zmt00(~zmt00@user/zmt00) (Ping timeout: 260 seconds)
2021-09-17 05:50:01 +0000theang(~theang@fef109.internetdsl.tpnet.pl) (Ping timeout: 252 seconds)
2021-09-17 05:50:16 +0000theang(~theang@2a00:f41:5866:e08:671b:b01e:3ccd:22d3)
2021-09-17 05:52:50 +0000hyiltiz(~quassel@31.220.5.250)
2021-09-17 05:55:40 +0000tommd(~tommd@75-164-130-101.ptld.qwest.net) (Ping timeout: 240 seconds)
2021-09-17 06:01:21 +0000chele(~chele@user/chele)
2021-09-17 06:02:33 +0000Akronymus(~Akronymus@85.118.189.59)
2021-09-17 06:02:39 +0000Akronymus(~Akronymus@85.118.189.59) ()
2021-09-17 06:05:39 +0000dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 265 seconds)
2021-09-17 06:06:06 +0000tomjaguarpaw(~tom@li367-225.members.linode.com) (Quit: Lost terminal)
2021-09-17 06:09:01 +0000Gurkenglas(~Gurkengla@dslb-002-207-014-195.002.207.pools.vodafone-ip.de)
2021-09-17 06:12:54 +0000son0p(~ff@181.136.122.143) (Ping timeout: 265 seconds)
2021-09-17 06:13:22 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-17 06:15:19 +0000hyiltiz(~quassel@31.220.5.250) (Ping timeout: 265 seconds)
2021-09-17 06:19:16 +0000Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-09-17 06:19:29 +0000wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2021-09-17 06:20:13 +0000_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-09-17 06:22:37 +0000dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-09-17 06:23:39 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-17 06:28:22 +0000bontaq(~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 265 seconds)
2021-09-17 06:28:33 +0000martin02(~silas@141.84.69.76)
2021-09-17 06:29:41 +0000Kaiepi(~Kaiepi@156.34.44.192) (Ping timeout: 252 seconds)
2021-09-17 06:30:54 +0000ubert(~Thunderbi@178.115.60.138.wireless.dyn.drei.com)
2021-09-17 06:31:28 +0000ubert1(~Thunderbi@178.115.60.138.wireless.dyn.drei.com)
2021-09-17 06:33:36 +0000Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-09-17 06:33:40 +0000renzhi(~xp@2607:fa49:6500:b100::5845) (Ping timeout: 240 seconds)
2021-09-17 06:34:27 +0000vonfry(~user@116.236.75.238) (Quit: ERC (IRC client for Emacs 27.2))
2021-09-17 06:38:27 +0000hyiltiz(~quassel@31.220.5.250)
2021-09-17 06:40:25 +0000shriekingnoise(~shrieking@186.137.144.80) (Quit: Quit)
2021-09-17 06:43:53 +0000dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2021-09-17 06:45:40 +0000renzhi(~xp@2607:fa49:6500:b100::1d9d)
2021-09-17 06:47:24 +0000ephemient(uid407513@id-407513.lymington.irccloud.com)
2021-09-17 06:48:52 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-17 07:01:31 +0000mc47(~mc47@xmonad/TheMC47)
2021-09-17 07:02:34 +0000lavaman(~lavaman@98.38.249.169)
2021-09-17 07:05:00 +0000haykam2(~haykam@static.100.2.21.65.clients.your-server.de)
2021-09-17 07:05:04 +0000haykam1(~haykam@static.100.2.21.65.clients.your-server.de) (Read error: Connection reset by peer)
2021-09-17 07:05:11 +0000Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-09-17 07:05:20 +0000lbseale_(~lbseale@user/ep1ctetus)
2021-09-17 07:05:25 +0000Sgeo(~Sgeo@user/sgeo)
2021-09-17 07:06:58 +0000lavaman(~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
2021-09-17 07:08:29 +0000lbseale(~lbseale@user/ep1ctetus) (Ping timeout: 265 seconds)
2021-09-17 07:11:59 +0000jstolarek(~jstolarek@ers4.neoplus.adsl.tpnet.pl)
2021-09-17 07:13:16 +0000vaucouleur(~vaucouleu@176.124.42.130)
2021-09-17 07:14:05 +0000slowButPresent(~slowButPr@user/slowbutpresent) (Read error: Connection reset by peer)
2021-09-17 07:14:27 +0000kenran(~kenran@b2b-37-24-119-190.unitymedia.biz)
2021-09-17 07:16:59 +0000 <kenran> How do you usually decide between different forms of encoding errors, like Either MyError a vs MonadError MyError a vs MonadFail vs ...? My problem: I'm writing a function in a library that I will then be using in another project. The project uses polysemy, but I still don't want to just use Polysemy.Error in the library.
2021-09-17 07:17:20 +0000 <kenran> I often stumble over how to best glue together all these different mechanisms for failure in the final project
2021-09-17 07:17:52 +0000 <kenran> There's so much work happening in that regard that it's hard to trust blog posts and such from, like, 2016
2021-09-17 07:19:34 +0000 <kenran> One concrete question: Is there a tradeoff to using MonadError e over Either e? MonadError looks strictly more powerful + flexible to mee
2021-09-17 07:20:06 +0000Kaiepi(~Kaiepi@156.34.44.192)
2021-09-17 07:20:07 +0000xstill(~xstill@fimu/xstill) ()
2021-09-17 07:21:17 +0000[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-09-17 07:22:28 +0000 <dminuoso> MonadError generalizes IO exceptions.
2021-09-17 07:22:46 +0000 <dminuoso> It's not more flexible or powerful, it's orthogonal
2021-09-17 07:23:03 +0000 <dminuoso> Generally the state of "how to do errors" in Haskell is very mixed, there's no general canonical way
2021-09-17 07:23:46 +0000 <dminuoso> MonadFail otoh is the interface that gets invoked on pattern match failures in do-notation
2021-09-17 07:23:48 +0000 <dminuoso> Like:
2021-09-17 07:24:21 +0000 <dminuoso> `do F a <- expr; ...` calls fail if the bind fails to match the pattern `F a`
2021-09-17 07:24:55 +0000hyiltiz(~quassel@31.220.5.250) (Ping timeout: 265 seconds)
2021-09-17 07:25:18 +0000 <dminuoso> Sadly MonadFail gets reused for raising errors in monads, an interface that it's inappropriate, especially because the passed String might not even be representable.
2021-09-17 07:25:25 +0000 <dminuoso> For example in Maybe the passed String is simply.... ignored.
2021-09-17 07:25:41 +0000 <dminuoso> And in IO it picks some exception you probably would not want.
2021-09-17 07:27:09 +0000 <kenran> dminuoso: thanks, that explains the MonadFail usage I've seen but not understood. I knew about the pattern matching failures, but I've seen it used as an easy way to get compatible interfaces to lots of stuff
2021-09-17 07:27:18 +0000 <dminuoso> Or actually MonadError is not really a generalization of Exception, sorry that was wrong. Its an odd breed.
2021-09-17 07:27:21 +0000 <dminuoso> MonadThrow generalizes throwIO
2021-09-17 07:27:57 +0000 <dminuoso> kenran: My personal favourite for when there's IO in the mix, is hierarchial IO exceptions.
2021-09-17 07:28:13 +0000 <dminuoso> It's composable and gives fine control over callers in what kind of exceptions they want to capture.
2021-09-17 07:28:18 +0000 <kenran> Like, having a library function return `m Int`, with m having the MonadFail constraint, and then being able to call this in some fromJSON
2021-09-17 07:28:35 +0000 <kenran> dminuoso: that's where I want to to land, just not with IOExceptions but Polysemy.Error, if that makes sense
2021-09-17 07:28:50 +0000 <dminuoso> I dont know Polysemy realyl
2021-09-17 07:29:18 +0000Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-09-17 07:29:34 +0000xff0x(~xff0x@2001:1a81:52ad:c900:aed8:d538:dc44:ee0) (Ping timeout: 252 seconds)
2021-09-17 07:29:42 +0000 <kenran> Polysemy.Error is basically the equivalent of the MonadError in mtl, iiuc. You get throw and catch in the effect monad's context
2021-09-17 07:30:32 +0000xff0x(~xff0x@2001:1a81:52ad:c900:b704:3c1b:6bea:6e62)
2021-09-17 07:30:46 +0000 <kenran> dminuoso: so just that I get you right: you have some fine-tuned data types for exceptions that you throw in "their" context, and the callers can decide whether to just keep that constraint or "widen" it, or transform it?
2021-09-17 07:31:01 +0000 <kenran> Like, the e in MonadError e changes on the way "up"
2021-09-17 07:31:11 +0000 <dminuoso> kenran: do you know how Java or C++ style exceptions work wrt to class hierarchies?
2021-09-17 07:31:18 +0000 <dminuoso> And being able to "catch some class of exceptions"?
2021-09-17 07:31:26 +0000 <kenran> yeah
2021-09-17 07:31:31 +0000 <dminuoso> We can do exactly the same in Haskell
2021-09-17 07:31:34 +0000 <kenran> ahhh, I see what I missed
2021-09-17 07:31:38 +0000funsafe(~funsafe@2601:1c1:4200:e53:2875:5507:42e4:4e14) (Ping timeout: 268 seconds)
2021-09-17 07:32:11 +0000 <kenran> I was thinking of just one tree of exception types, but that misses the point with "I can catch this one error, but let this other one bubble up"
2021-09-17 07:32:14 +0000 <dminuoso> The reason I like it, is because it's such a simple and yet generic interface, doesn't require me to interface with libraries like mtl to even interact with your library, gives me good control over what I care about..
2021-09-17 07:32:23 +0000 <dminuoso> But it only does work when there's IO :)
2021-09-17 07:32:39 +0000 <dminuoso> Well, you can still do that with exceptions too
2021-09-17 07:32:41 +0000 <dminuoso> % :t cathces
2021-09-17 07:32:41 +0000 <yahb> dminuoso: ; <interactive>:1:1: error:; * Variable not in scope: cathces; * Perhaps you meant one of these: `catches' (imported from Control.Monad.Error.Lens), `catches' (imported from Control.Exception)
2021-09-17 07:32:43 +0000 <dminuoso> % :t catches
2021-09-17 07:32:43 +0000 <yahb> dminuoso: ; <interactive>:1:1: error:; Ambiguous occurrence `catches'; It could refer to; either `Control.Monad.Error.Lens.catches', imported from `Control.Monad.Error.Lens'; or `Control.Exception.catches', imported from `Control.Exception'
2021-09-17 07:32:50 +0000 <dminuoso> % :t Control.Exception.catches
2021-09-17 07:32:50 +0000 <yahb> dminuoso: IO a -> [Control.Exception.Handler a] -> IO a
2021-09-17 07:33:01 +0000 <dminuoso> Here you can specify a list of exceptions you care about, everything else bubbles through,.
2021-09-17 07:33:11 +0000 <kenran> dminuoso: yeah, that's the problem :D I wonder if it's possible with Polysemy to have multiple Error constraints that I can handle separately. Have to try that
2021-09-17 07:33:17 +0000 <dminuoso> And best of all, you can mix this with what I mentioned above. "Catch this class of exceptions, and that other tree of exceptions, let everything else go through"
2021-09-17 07:33:29 +0000 <dminuoso> The only problem is, unlike polysemy, there's no communication of either in the type system.
2021-09-17 07:33:43 +0000 <dminuoso> But there's no silver bullet in Haskell.
2021-09-17 07:33:54 +0000 <kenran> Right
2021-09-17 07:34:11 +0000 <kenran> The only reasonable goal for me seems to be to get consistent with how we do error handling
2021-09-17 07:34:19 +0000 <kenran> Right now it's a mess of different stuff
2021-09-17 07:34:38 +0000 <dminuoso> I've largely settled on IO exceptions, but then again much of our stuff is IO centric..
2021-09-17 07:34:58 +0000 <dminuoso> Also, since Im a big fan of MonadUnliftIO, I dont have many other choices...
2021-09-17 07:35:00 +0000 <dminuoso> :p
2021-09-17 07:35:01 +0000ubert(~Thunderbi@178.115.60.138.wireless.dyn.drei.com) (Ping timeout: 252 seconds)
2021-09-17 07:35:01 +0000ubert1ubert
2021-09-17 07:35:20 +0000 <kenran> I really like Polysemy so far, it's like mtl-style (which somehow resonates with me, probably from my OO background), but I'm not sure yet whether I really want it to be present in the "pure library code"
2021-09-17 07:35:37 +0000 <kenran> I know some package authors have separate packages for the different paradigms
2021-09-17 07:36:06 +0000 <kenran> For instance co-log, which has co-log-core, co-log (mtl-style), and co-log-polysemy
2021-09-17 07:36:52 +0000 <kenran> Thanks for all the input, really interesting stuff dminuoso
2021-09-17 07:37:26 +0000 <dminuoso> After a long while of Haskell, I've settled on simpler haskell without too many type level tricks - at least on the external interface.
2021-09-17 07:38:21 +0000 <dminuoso> kenran: So if I understand polysemy correctly, one thing that would immediately annoy me is that '[A, B] and '[B, A] would be incompatible
2021-09-17 07:38:49 +0000 <dminuoso> So code doesn't freely compose, as you might have to shuffle the composition order around to make polysemy happy
2021-09-17 07:39:53 +0000jtomas(~jtomas@95.red-88-11-64.dynamicip.rima-tde.net)
2021-09-17 07:42:00 +0000betelgeuse(~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-09-17 07:42:18 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-17 07:43:03 +0000betelgeuse(~betelgeus@94-225-47-8.access.telenet.be)
2021-09-17 07:44:55 +0000kuribas(~user@ptr-25vy0i7x8rtrl519tor.18120a2.ip6.access.telenet.be)
2021-09-17 07:47:32 +0000max22-(~maxime@2a01cb0883359800999b760ae95fc90b.ipv6.abo.wanadoo.fr)
2021-09-17 07:50:28 +0000fendor_(~fendor@78-2-181-45.adsl.net.t-com.hr)
2021-09-17 07:51:35 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:854d:ae90:d2a1:51ab) (Remote host closed the connection)
2021-09-17 07:52:29 +0000 <kenran> dminuoso: that's correct in principle, but the way you actually use it in your domain function it doesn't pose a problem.
2021-09-17 07:53:03 +0000 <kenran> dminuoso: You write your functions like this: Members '[Eff1, PersistFoo, ...] r => Int -> Sem r String
2021-09-17 07:53:48 +0000funsafe(~funsafe@2601:1c1:4200:e53:2875:5507:42e4:4e14)
2021-09-17 07:53:50 +0000 <kenran> And in the Members constraint the order is not important. Once you get to actually interpreting the effects, of course, that's where you have to pay attention to the actual order, so yes, that's the one point where it can be a bit more tricky
2021-09-17 07:53:58 +0000econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-09-17 07:54:47 +0000gehmehgeh(~user@user/gehmehgeh)
2021-09-17 07:54:51 +0000 <kenran> As with everything, one has to pay attention to not have like 7+ effects "active" all the time, which is where I sometimes struggle
2021-09-17 07:55:23 +0000notzmv(~zmv@user/notzmv) (Read error: Connection reset by peer)
2021-09-17 07:56:12 +0000 <kenran> In general I have that problem with mtl-style too, but I feel like where Polysemy exceeds over encoding your effects as type classes directly is at this point: actually removing/reinterpreting an effect at a certain point in your code without having to choose a concrete type, if that makes sense
2021-09-17 07:57:00 +0000 <kenran> I'm still not experienced enough with it and it's only a vague feeling until now, though. More or less a "let's use it and see where it leads us"
2021-09-17 07:57:23 +0000 <kenran> I love that we're actually encouraged to do soo at this job
2021-09-17 07:59:24 +0000vpan(~vilius@212.117.1.172)
2021-09-17 08:01:56 +0000ub(~Thunderbi@178.115.60.138.wireless.dyn.drei.com)
2021-09-17 08:03:29 +0000eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-09-17 08:04:08 +0000cfricke(~cfricke@user/cfricke)
2021-09-17 08:04:27 +0000eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2021-09-17 08:05:02 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:f81a:6736:1170:5e1c)
2021-09-17 08:05:55 +0000hendursaga(~weechat@user/hendursaga)
2021-09-17 08:08:43 +0000theang(~theang@2a00:f41:5866:e08:671b:b01e:3ccd:22d3) (Ping timeout: 252 seconds)
2021-09-17 08:09:09 +0000theang(~theang@fef109.internetdsl.tpnet.pl)
2021-09-17 08:09:16 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:f81a:6736:1170:5e1c) (Ping timeout: 252 seconds)
2021-09-17 08:09:18 +0000hendursa1(~weechat@user/hendursaga) (Ping timeout: 276 seconds)
2021-09-17 08:11:12 +0000lortabac(~lortabac@2a01:e0a:541:b8f0:a20c:3ab6:8175:e3ff)
2021-09-17 08:11:57 +0000 <kuribas> I guess that's why ReaderT r IO is so popular. No need to juggle effects around.
2021-09-17 08:12:01 +0000hyiltiz(~quassel@31.220.5.250)
2021-09-17 08:13:35 +0000 <dminuoso> Yes, and you can have MonadUnliftIO too.
2021-09-17 08:14:00 +0000 <kuribas> It's funny how we create all these fancy effect systems, and we end up having mutable state and exceptions again :)
2021-09-17 08:14:14 +0000 <dminuoso> Well I certainly understand why people want effect systems.
2021-09-17 08:14:22 +0000 <dminuoso> But in Haskell they feel bolted on more often than not.
2021-09-17 08:14:25 +0000 <kuribas> But being able to "see" the state is already a big advantage IMO.
2021-09-17 08:14:43 +0000 <dminuoso> No effect system in Haskell has really convinced me so far.
2021-09-17 08:14:44 +0000 <kuribas> dminuoso: the way I use the effect systems is encapsulated in functionality.
2021-09-17 08:15:01 +0000 <kuribas> as in, they are an implementation detail of whatever I want to do.
2021-09-17 08:15:12 +0000 <kuribas> Not a big architectural design feature.
2021-09-17 08:15:35 +0000oxide(~lambda@user/oxide)
2021-09-17 08:17:09 +0000 <kenran> I think I've let the easy testability of polysemy-based code convince me a bit too easily ("changing your interpreter for a test is just using another function", but I've yet to actually use it as much as I'd like :D
2021-09-17 08:17:44 +0000allbery_b(~geekosaur@xmonad/geekosaur)
2021-09-17 08:17:44 +0000geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2021-09-17 08:17:47 +0000allbery_bgeekosaur
2021-09-17 08:18:02 +0000benin036932301(~benin@183.82.205.89)
2021-09-17 08:18:48 +0000 <kuribas> Not having global state is the biggest advantage.
2021-09-17 08:19:03 +0000 <kuribas> or better, "invisible" global state.
2021-09-17 08:19:17 +0000 <dminuoso> It's all a trade off. Sometimes I think people spend way too much time and effort in restructuring with effect systems on the misbelief, that being able to "plug in different interpreters" will yield valuable net results.
2021-09-17 08:19:35 +0000 <kenran> dminuoso: yep, that's definitely true
2021-09-17 08:19:38 +0000 <dminuoso> It feels it comes at the price of readability and maintainability. When you need to become a polysemy expert just to interact and deal with the code, Im not sure much was won.
2021-09-17 08:21:05 +0000 <kenran> Honestly, the same goes for me trying to write mtl/tagless-final style code, too. My experience with polysemy in particular was that it improves upon that style, but if the code I transform is already wrongly based on the (dis)belief you mention, there's definitely nothing won, and time lost
2021-09-17 08:21:17 +0000 <dminuoso> It reminds me how some projects spent endless amount of time on pleasing some coverage tester, convincing themselves that having 100% coverage means there's less bugs.
2021-09-17 08:21:31 +0000juhp(~juhp@111.65.68.133)
2021-09-17 08:21:33 +0000 <dminuoso> I wonder whether this is just the Haskell-variant of that.
2021-09-17 08:21:42 +0000 <kenran> It might just be
2021-09-17 08:22:15 +0000 <kenran> Lots of the bugs that are not prevented by coverage alone are of the kind that is harder to produce in Haskell when leveraging the type system well
2021-09-17 08:22:55 +0000benin036932301(~benin@183.82.205.89) (Ping timeout: 265 seconds)
2021-09-17 08:23:53 +0000dtman34(~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
2021-09-17 08:34:54 +0000chele(~chele@user/chele) (Remote host closed the connection)
2021-09-17 08:35:54 +0000chele(~chele@user/chele)
2021-09-17 08:36:07 +0000hnOsmium0001(uid453710@id-453710.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-09-17 08:40:58 +0000vaucouleur(~vaucouleu@176.124.42.130) (Read error: Connection reset by peer)
2021-09-17 08:41:16 +0000vaucouleur(~vaucouleu@176.124.42.130)
2021-09-17 08:43:47 +0000jstolarek(~jstolarek@ers4.neoplus.adsl.tpnet.pl) (Quit: leaving)
2021-09-17 08:43:59 +0000jstolarek(~jstolarek@ers4.neoplus.adsl.tpnet.pl)
2021-09-17 08:44:34 +0000jstolarek(~jstolarek@ers4.neoplus.adsl.tpnet.pl) (Client Quit)
2021-09-17 08:44:46 +0000jstolarek(~jstolarek@ers4.neoplus.adsl.tpnet.pl)
2021-09-17 08:46:06 +0000jstolarek(~jstolarek@ers4.neoplus.adsl.tpnet.pl) (Client Quit)
2021-09-17 08:46:18 +0000jstolarek(~jstolarek@ers4.neoplus.adsl.tpnet.pl)
2021-09-17 08:49:53 +0000dtman34(~dtman34@c-73-62-246-247.hsd1.mn.comcast.net)
2021-09-17 08:52:06 +0000favonia(~favonia@user/favonia)
2021-09-17 08:52:53 +0000hyiltiz(~quassel@31.220.5.250) (Ping timeout: 265 seconds)
2021-09-17 08:55:13 +0000hyiltiz(~quassel@31.220.5.250)
2021-09-17 08:56:05 +0000jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection)
2021-09-17 08:56:23 +0000jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se)
2021-09-17 08:58:27 +0000jespada(~jespada@2803:9800:9842:7a62:95e0:d2b5:ae88:676) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-09-17 09:00:06 +0000fabfianda[m](~fabfianda@2001:470:69fc:105::6db) (Quit: You have been kicked for being idle)
2021-09-17 09:00:54 +0000 <maerwald> dminuoso: polysemy is also very slow
2021-09-17 09:01:09 +0000 <maerwald> and has questionable semantics
2021-09-17 09:01:39 +0000 <maerwald> because: effects systems are hard
2021-09-17 09:01:51 +0000 <dminuoso> The real solution is to have software without errors. Then you dont need error effects.
2021-09-17 09:01:58 +0000 <maerwald> and yeah, I think this is hype driven development in haskell
2021-09-17 09:02:00 +0000 <dminuoso> It's why bottom was invented.
2021-09-17 09:02:05 +0000 <dminuoso> Always error free. :-)
2021-09-17 09:02:18 +0000 <dminuoso> "hype driven development"
2021-09-17 09:02:22 +0000 <dminuoso> Interesting expression, had not heard about that
2021-09-17 09:02:25 +0000dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.2.1)
2021-09-17 09:02:34 +0000 <maerwald> there are several blog posts about it (I think bashing NoSQL)
2021-09-17 09:03:31 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-09-17 09:04:00 +0000 <dminuoso> NoSQL is an interesting proposition. I stand by my opinion that it's an emergent technology of folks thinking "Who cares about well-principled databases founded on research and academia, you only live once!" for most people. Who cares about transactional safety.
2021-09-17 09:04:25 +0000 <dminuoso> The fact that MongoDB, not until too long ago crashed and corrupted if the dataset exceeded 4GiB on 32bit systems is just telling..
2021-09-17 09:04:40 +0000 <maerwald> Afaiu NoSQL was an attempt to solve a very specific performance problem with relational databases. It wasn't intended as general purpose technology
2021-09-17 09:04:57 +0000 <maerwald> but then it got hyped and here we are
2021-09-17 09:05:11 +0000 <dminuoso> Sure, though "NoSQL" as a term that comes from that hype.
2021-09-17 09:05:20 +0000 <dminuoso> I mean memcached is also.. "nosql"
2021-09-17 09:05:38 +0000 <dminuoso> Though its not new and hipster enough
2021-09-17 09:06:03 +0000 <maerwald> there's also microservices in town, which is basically "you could have written a library, but that's too easy"
2021-09-17 09:06:39 +0000 <maerwald> "your library needs a database, a protocol and be part of a kubernetes cluster"
2021-09-17 09:06:40 +0000tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2021-09-17 09:06:41 +0000 <dminuoso> One of our hottest postgresql servers serves roughly 5kTX/s.. during the hottest phase of the day. And that's without even trying hard!
2021-09-17 09:06:50 +0000 <dminuoso> Writing.
2021-09-17 09:06:54 +0000 <dminuoso> Not reading. :-)
2021-09-17 09:07:22 +0000 <maerwald> That's the problem with CTOs looking at "what does facebook/google do"
2021-09-17 09:07:29 +0000 <maerwald> they're solving problems you don't have
2021-09-17 09:08:11 +0000 <dminuoso> Of course. I think there's some hope that if you employ the same technologies as google does, you get as large and rich as google.
2021-09-17 09:08:17 +0000 <maerwald> :D
2021-09-17 09:08:50 +0000sim590(~simon@modemcable090.207-203-24.mc.videotron.ca)
2021-09-17 09:11:04 +0000 <dminuoso> It's nothing but an example of cum hoc ergo propter hoc.
2021-09-17 09:11:32 +0000 <dminuoso> (Or maybe its a different fallacy?)
2021-09-17 09:12:30 +0000 <maerwald> I think it's just plain stupidity
2021-09-17 09:12:52 +0000 <maerwald> as plain as white rice (although the latter is more delicious)
2021-09-17 09:14:11 +0000 <dminuoso> White rice is indeed delicious.
2021-09-17 09:14:22 +0000 <dminuoso> Especially if cooked with tahdig.
2021-09-17 09:14:28 +0000 <dminuoso> The only true way to cook rice.
2021-09-17 09:15:26 +0000[exa]discovers tahdig
2021-09-17 09:15:57 +0000 <dminuoso> [exa]: Good luck on your endaveours, it took me over two years to make perfect tahdig.
2021-09-17 09:16:13 +0000 <dminuoso> And it's not even half as perfect as when my Farsi friends do it.
2021-09-17 09:16:16 +0000 <[exa]> time to rice
2021-09-17 09:16:31 +0000 <dminuoso> :)
2021-09-17 09:23:18 +0000waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-09-17 09:26:21 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:b0fa:b428:27dc:59de)
2021-09-17 09:27:15 +0000vaucouleur_(~vaucouleu@176.124.42.130)
2021-09-17 09:27:46 +0000vaucouleur__(~vaucouleu@176.124.42.130)
2021-09-17 09:30:25 +0000fef(~thedawn@user/thedawn)
2021-09-17 09:30:35 +0000vaucouleur(~vaucouleu@176.124.42.130) (Ping timeout: 265 seconds)
2021-09-17 09:30:54 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:b0fa:b428:27dc:59de) (Ping timeout: 260 seconds)
2021-09-17 09:31:46 +0000vaucouleur(~vaucouleu@176.124.42.130)
2021-09-17 09:32:06 +0000vaucouleur_(~vaucouleu@176.124.42.130) (Ping timeout: 268 seconds)
2021-09-17 09:33:00 +0000vaucouleur__(~vaucouleu@176.124.42.130) (Ping timeout: 265 seconds)
2021-09-17 09:34:41 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168)
2021-09-17 09:38:32 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-17 09:39:18 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) (Ping timeout: 260 seconds)
2021-09-17 09:40:09 +0000pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-09-17 09:42:39 +0000[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2021-09-17 09:42:57 +0000wonko(~wjc@62.115.229.50)
2021-09-17 09:52:02 +0000betelgeuse(~betelgeus@94-225-47-8.access.telenet.be) (Quit: Ping timeout (120 seconds))
2021-09-17 09:53:33 +0000neurocyte(~neurocyte@user/neurocyte) (Quit: The Lounge - https://thelounge.chat)
2021-09-17 09:54:04 +0000betelgeuse(~betelgeus@94-225-47-8.access.telenet.be)
2021-09-17 09:58:53 +0000neurocyte0(~neurocyte@185.238.253.211)
2021-09-17 09:58:53 +0000neurocyte0(~neurocyte@185.238.253.211) (Changing host)
2021-09-17 09:58:53 +0000neurocyte0(~neurocyte@user/neurocyte)
2021-09-17 09:59:27 +0000betelgeuse(~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
2021-09-17 10:00:48 +0000betelgeuse(~betelgeus@94-225-47-8.access.telenet.be)
2021-09-17 10:02:48 +0000arkanoid(~arkanoid@2-238-151-49.ip244.fastwebnet.it) (Quit: WeeChat 2.8)
2021-09-17 10:08:46 +0000fendor_(~fendor@78-2-181-45.adsl.net.t-com.hr) (Ping timeout: 265 seconds)
2021-09-17 10:11:36 +0000yauhsien(~yauhsien@118-167-49-246.dynamic-ip.hinet.net)
2021-09-17 10:13:12 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-09-17 10:16:53 +0000jespada(~jespada@host244.190-3-30.dynamic.telmex.net.ar)
2021-09-17 10:19:33 +0000yauhsien(~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-09-17 10:20:10 +0000yauhsien(~yauhsien@118-167-49-246.dynamic-ip.hinet.net)
2021-09-17 10:25:07 +0000yauhsien(~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Ping timeout: 252 seconds)
2021-09-17 10:25:30 +0000thornAvery(~thornAver@2401:c080:1800:4346:5400:3ff:fe2c:c8f8)
2021-09-17 10:26:03 +0000 <thornAvery> anyone got experience with `XMPP`, its failing to build (i think because haskell98 fails too) and im wondering whether its worth figuring out or if i should use something else
2021-09-17 10:27:57 +0000 <maerwald> xmpp?
2021-09-17 10:29:00 +0000__monty__(~toonn@user/toonn)
2021-09-17 10:29:56 +0000fendor_(~fendor@78-2-181-45.adsl.net.t-com.hr)
2021-09-17 10:30:01 +0000zaquest(~notzaques@5.128.210.178) (Quit: Leaving)
2021-09-17 10:30:39 +0000hannessteffenhag(~hannesste@ip4d14ffd8.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2021-09-17 10:31:12 +0000zaquest(~notzaques@5.128.210.178)
2021-09-17 10:32:12 +0000 <thornAvery> maerwald: https://hackage.haskell.org/package/XMPP
2021-09-17 10:34:21 +0000burnsidesLlama(~burnsides@client-8-81.eduroam.oxuni.org.uk)
2021-09-17 10:35:24 +0000jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2021-09-17 10:37:06 +0000burnside_(~burnsides@dhcp168-024.wadham.ox.ac.uk)
2021-09-17 10:38:40 +0000enicar(~enikar@user/enikar)
2021-09-17 10:39:07 +0000enicar(~enikar@user/enikar) (Client Quit)
2021-09-17 10:41:09 +0000burnsidesLlama(~burnsides@client-8-81.eduroam.oxuni.org.uk) (Ping timeout: 265 seconds)
2021-09-17 10:41:09 +0000ksu(~ksu@user/prtr) (Ping timeout: 265 seconds)
2021-09-17 10:50:00 +0000yauhsien(~yauhsien@118-167-49-246.dynamic-ip.hinet.net)
2021-09-17 10:55:21 +0000yauhsien(~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
2021-09-17 10:57:57 +0000juhp(~juhp@111.65.68.133) (Read error: Connection reset by peer)
2021-09-17 11:00:48 +0000betelgeuse(~betelgeus@94-225-47-8.access.telenet.be) (Quit: Ping timeout (120 seconds))
2021-09-17 11:00:57 +0000alx741(~alx741@181.196.68.9)
2021-09-17 11:02:11 +0000betelgeuse(~betelgeus@94-225-47-8.access.telenet.be)
2021-09-17 11:04:12 +0000lavaman(~lavaman@98.38.249.169)
2021-09-17 11:04:21 +0000rawles(~o@user/rawles)
2021-09-17 11:04:40 +0000fendor_(~fendor@78-2-181-45.adsl.net.t-com.hr) (Ping timeout: 240 seconds)
2021-09-17 11:08:17 +0000leah2(~leah@vuxu.org) (Ping timeout: 250 seconds)
2021-09-17 11:08:55 +0000lavaman(~lavaman@98.38.249.169) (Ping timeout: 260 seconds)
2021-09-17 11:10:31 +0000AlexNoo_(~AlexNoo@178.34.163.108)
2021-09-17 11:12:34 +0000Alex_test(~al_test@178.34.162.211) (Ping timeout: 265 seconds)
2021-09-17 11:13:01 +0000AlexZenon(~alzenon@178.34.162.211) (Ping timeout: 268 seconds)
2021-09-17 11:14:02 +0000AlexNoo(~AlexNoo@178.34.162.211) (Ping timeout: 260 seconds)
2021-09-17 11:18:04 +0000Alex_test(~al_test@178.34.163.108)
2021-09-17 11:18:30 +0000AlexZenon(~alzenon@178.34.163.108)
2021-09-17 11:22:07 +0000AlexNoo_AlexNoo
2021-09-17 11:27:57 +0000leah2(~leah@vuxu.org)
2021-09-17 11:27:59 +0000jakalx(~jakalx@base.jakalx.net)
2021-09-17 11:33:10 +0000sim590(~simon@modemcable090.207-203-24.mc.videotron.ca) (Ping timeout: 240 seconds)
2021-09-17 11:33:26 +0000Cajun(~Cajun@user/cajun)
2021-09-17 11:36:04 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168)
2021-09-17 11:37:07 +0000Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi)
2021-09-17 11:37:20 +0000sim590(~simon@modemcable090.207-203-24.mc.videotron.ca)
2021-09-17 11:40:59 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) (Ping timeout: 268 seconds)
2021-09-17 11:43:36 +0000tcard(~tcard@p2307053-ipngn17101hodogaya.kanagawa.ocn.ne.jp) (Quit: Leaving)
2021-09-17 11:44:47 +0000benin036932301(~benin@183.82.205.89)
2021-09-17 11:44:50 +0000sim590(~simon@modemcable090.207-203-24.mc.videotron.ca) (Ping timeout: 260 seconds)
2021-09-17 11:48:24 +0000tcard(~tcard@p2307053-ipngn17101hodogaya.kanagawa.ocn.ne.jp)
2021-09-17 11:49:01 +0000jinsun(~quassel@user/jinsun) (Read error: Connection reset by peer)
2021-09-17 11:49:49 +0000benin036932301(~benin@183.82.205.89) (Ping timeout: 252 seconds)
2021-09-17 11:50:31 +0000jinsun(~quassel@user/jinsun)
2021-09-17 11:53:13 +0000Phantastes(~Phantaste@c-67-173-229-120.hsd1.co.comcast.net)
2021-09-17 11:54:36 +0000vpan(~vilius@212.117.1.172) (Quit: Leaving.)
2021-09-17 11:59:52 +0000raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-09-17 12:00:35 +0000jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection)
2021-09-17 12:00:42 +0000__monty__(~toonn@user/toonn) (Ping timeout: 260 seconds)
2021-09-17 12:00:53 +0000jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se)
2021-09-17 12:02:58 +0000max22-(~maxime@2a01cb0883359800999b760ae95fc90b.ipv6.abo.wanadoo.fr) (Ping timeout: 268 seconds)
2021-09-17 12:09:16 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2021-09-17 12:09:55 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-17 12:12:51 +0000shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net)
2021-09-17 12:16:10 +0000vysn(~vysn@user/vysn) (Ping timeout: 240 seconds)
2021-09-17 12:19:22 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-17 12:21:41 +0000waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 268 seconds)
2021-09-17 12:22:48 +0000waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-09-17 12:27:51 +0000dsrt^(~dsrt@68.101.54.227) (Ping timeout: 268 seconds)
2021-09-17 12:29:05 +0000yaroot(~yaroot@6.3.30.125.dy.iij4u.or.jp) (Quit: The Lounge - https://thelounge.chat)
2021-09-17 12:29:58 +0000yaroot(~yaroot@6.3.30.125.dy.iij4u.or.jp)
2021-09-17 12:31:01 +0000dsrt^(~dsrt@68.101.54.227)
2021-09-17 12:31:15 +0000dsrt^(~dsrt@68.101.54.227) (Remote host closed the connection)
2021-09-17 12:37:25 +0000__monty__(~toonn@user/toonn)
2021-09-17 12:38:21 +0000 <ProofTechnique> maerwald: (on microservices) I'm working on exactly such a platform right now, and I've set it as a team principle that all our services are just libraries with a thin executable wrapper that depends on the library. I don't want our business logic to ever understand anything about the system, it just needs to transform data
2021-09-17 12:38:58 +0000 <maerwald> ProofTechnique: why do you have microservices in the first place?
2021-09-17 12:39:39 +0000 <ProofTechnique> Because an architect said so, and because we need to replace the tangled Groovy monolith we're currently using :D
2021-09-17 12:39:52 +0000 <maerwald> sounds like a poor choice then
2021-09-17 12:41:13 +0000 <ProofTechnique> The main nice thing is that it's a lot easier to onboard _other people's_ services. As long as they can read the auth headers we decorate requests with, they can ignore authn/authz logic in their own code
2021-09-17 12:42:01 +0000kimjetwav(~user@2607:fea8:235f:9730:162d:fa69:3f15:a6a5) (Remote host closed the connection)
2021-09-17 12:42:37 +0000 <ProofTechnique> As compared to "make someone unfamiliar with the monolith hack their new functionality into it and make the trashball worse"
2021-09-17 12:42:52 +0000yauhsien(~yauhsien@118-167-49-246.dynamic-ip.hinet.net)
2021-09-17 12:43:26 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-09-17 12:44:17 +0000 <ProofTechnique> And it has been significantly easier to get an active-active configuration working consistently across our environments without a bunch of bookkeeping
2021-09-17 12:47:07 +0000yauhsien(~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Ping timeout: 245 seconds)
2021-09-17 12:47:20 +0000 <ProofTechnique> In good news, if we ever need to collapse down some of the services into beefier ones, it's just shuffling library imports :)
2021-09-17 12:48:01 +0000 <dminuoso> Microservices is that other thing that people adopt for no good reason, and later dont even realize that they're regretting it..
2021-09-17 12:48:28 +0000 <dminuoso> While most of the hype has passed, it's still a very popular practice.
2021-09-17 12:49:19 +0000 <kuribas> people knowing what to regret would be an advancement for many teams :)
2021-09-17 12:49:33 +0000 <ProofTechnique> I'm being a little facetious, we do have good reasons (that are very boring), I just like to blame the architect because their initial recommendation was "just do it as a bunch of lambdas" :D
2021-09-17 12:49:58 +0000fendor_(~fendor@78-2-181-45.adsl.net.t-com.hr)
2021-09-17 12:50:33 +0000 <kuribas> ProofTechnique: if the services are just libraries, then why not pack it into a single executable?
2021-09-17 12:51:11 +0000 <ldlework> dminuoso: I have found that microservice regret is a function of a team's infrastructure/orchestration prowess.
2021-09-17 12:51:55 +0000 <dminuoso> ldlework: And what kind of function is that?
2021-09-17 12:52:57 +0000 <ldlework> It's just to say, that the more handedness (in knowledge or automation) in orchestration, the less associated pain with microservices there is.
2021-09-17 12:53:27 +0000 <ldlework> Developers seem fine making services and making them use each other's APIs. It's the operational complexity that usually degrades returns (in my experience).
2021-09-17 12:53:42 +0000max22-(~maxime@2a01cb0883359800445667b961f4f8f5.ipv6.abo.wanadoo.fr)
2021-09-17 12:53:45 +0000hyiltiz(~quassel@31.220.5.250) (Ping timeout: 268 seconds)
2021-09-17 12:53:56 +0000 <dminuoso> ldlework: that's a myth. some of the biggest issues of microservices dont relate to orchestration.
2021-09-17 12:54:29 +0000 <ldlework> OK, maybe you have some research paper, I only have a couple decades of experience to go off.
2021-09-17 12:54:34 +0000hyiltiz(~quassel@31.220.5.250)
2021-09-17 12:54:37 +0000 <ProofTechnique> Multiple languages across teams, multiple on-prem and cloud resources that need consistent access patterns, and we don't have any dedicated ops people since I shifted into product development :D
2021-09-17 12:54:58 +0000 <dminuoso> Not sure what that snarky comment was supposed to convey, but okay.
2021-09-17 12:55:18 +0000 <ldlework> dminuoso: not sure what an offhanded rejection of someone else's premise as "myth" was supposed to convey, but okay.
2021-09-17 12:55:28 +0000 <ProofTechnique> And there's just decades of legacy that needs to be enclosed so that we don't have to think so damn hard about it just to barf JSON at each other all over the place
2021-09-17 12:56:18 +0000 <ProofTechnique> At the end of the day, it's not my money, so I just write good software and automation and don't worry too much about how it actually gets run
2021-09-17 12:58:03 +0000 <kuribas> I think service architecture is good, but you want to maximise service size, not minimize it.
2021-09-17 12:58:38 +0000 <kuribas> Unless you have needs that *require* it.
2021-09-17 12:58:47 +0000hyiltiz(~quassel@31.220.5.250) (Ping timeout: 245 seconds)
2021-09-17 12:59:07 +0000 <maerwald> ProofTechnique: there are very few reasons for microservices, technically
2021-09-17 12:59:21 +0000 <maerwald> all of them have nothing to do with architecture
2021-09-17 12:59:59 +0000 <maerwald> I know of only 2 good ones: 1. you need to scale microservices differently (e.g. one needs more CPU, the other ram, the other better latency, ...)
2021-09-17 13:00:34 +0000pbrisbin(~patrick@pool-173-49-147-250.phlapa.fios.verizon.net)
2021-09-17 13:00:42 +0000 <maerwald> 2. someone wants to verify your microservice formally/semi-formally (happens in online casino business for the RNG... it has to be a microservice)
2021-09-17 13:01:28 +0000 <ProofTechnique> We do need to scale them differently, so box ticked :)
2021-09-17 13:02:12 +0000 <dminuoso> Microservices are usually not a technical solution to a problem, but an emergent cultural phenomenon in companies.
2021-09-17 13:02:29 +0000 <dminuoso> They tend to be modelled after the organization
2021-09-17 13:02:55 +0000hyiltiz(~quassel@31.220.5.250)
2021-09-17 13:03:59 +0000 <ldlework> There's different ways of looking at things depending on what you are aiming to optimize for. In the reductio of optimizing for scaling, you'd segregate your overall system specficially by utilization. But concerns abound you end up balancing what you're optimizing for. Microservices sounds like a paradigm in which you blindly optimize for concerns that demand microserivces, but really it is the
2021-09-17 13:04:01 +0000 <ldlework> study of small unit services so there is something known to say in cases in which small services are the answer to the optimizations you're looking for.
2021-09-17 13:04:09 +0000 <kuribas> we rejected some candidates because in the interview they asked us why we didn't grow with the time, and used cubernetes :)
2021-09-17 13:04:27 +0000 <maerwald> dminuoso: true, someone once said the architecture is merely a reflection of the communication
2021-09-17 13:04:36 +0000 <kuribas> We use decade old unix technology, and it still works fine :)
2021-09-17 13:04:56 +0000 <gehmehgeh> kuribas: I'm looking for job, can I apply? :D
2021-09-17 13:05:08 +0000 <dminuoso> maerwald: And there's a lot of merit in it with microservices. Each team can monitor its own services, responsible for their deployment, alerting, defined interfaces, etc.
2021-09-17 13:05:22 +0000 <dminuoso> But then again, this can as easily happen inside a given program
2021-09-17 13:05:26 +0000 <ProofTechnique> For my part, if we didn't do it this way then I wouldn't be able to write services in Haskell :D
2021-09-17 13:05:29 +0000 <maerwald> dminuoso: yeah... and deployment is SO MUCH FUN
2021-09-17 13:05:30 +0000 <dminuoso> Where you have some defined module structure how some other part will interface.
2021-09-17 13:05:38 +0000 <ldlework> ProofTechnique: heh
2021-09-17 13:05:40 +0000 <maerwald> because suddenly the entire armada of microservices need to be in sync
2021-09-17 13:05:41 +0000 <kuribas> gehmehgeh: well, currently we don't need backend developers, only a senior devops guy.
2021-09-17 13:05:43 +0000 <maerwald> BOOM
2021-09-17 13:05:54 +0000 <ldlework> > function of orchestration prowess
2021-09-17 13:05:56 +0000 <lambdabot> <hint>:1:10: error: parse error on input ‘of’
2021-09-17 13:05:57 +0000ldleworkshrugs
2021-09-17 13:05:59 +0000acidjnk(~acidjnk@p200300d0c703cb83089449f0c9186ff3.dip0.t-ipconnect.de)
2021-09-17 13:06:01 +0000cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.2.1)
2021-09-17 13:06:05 +0000 <maerwald> then you end up doing multi-stage deployments and all sorts of things
2021-09-17 13:06:10 +0000 <dminuoso> ldlework: At what benefit, though?
2021-09-17 13:06:17 +0000 <kuribas> gehmehgeh: and a junior one.
2021-09-17 13:06:22 +0000 <dminuoso> You drive up complexity, introduce additional angles in which the entirety of your service can fail..
2021-09-17 13:06:26 +0000 <ldlework> I feel like I just gave a generalized principle for understanding that
2021-09-17 13:06:49 +0000 <dminuoso> Optimizing for scaling is a problem most software applications dont have.
2021-09-17 13:06:55 +0000 <ldlework> Yes, if you have priorities, you will have to pay for them with costs elsewhere.
2021-09-17 13:07:34 +0000 <kuribas> well, scaling on a single system is good enough for most applications.
2021-09-17 13:08:07 +0000mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in)
2021-09-17 13:08:22 +0000 <ldlework> Again, treating microservices as a dogmatic paradigm where all you are allowed to do is make microservices, rather than a series of worked out ideas for working with unit services when you happen to need them is a mistake.
2021-09-17 13:09:22 +0000 <maerwald> and there go 80% of your Go programming opportunities :D
2021-09-17 13:09:31 +0000 <ProofTechnique> lol
2021-09-17 13:09:32 +0000mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
2021-09-17 13:09:33 +0000 <kuribas> I read about this haskell company that migrated the code from distributed scala running on a several nodes, to a single haskell node, and they saw an *improvement* in performance.
2021-09-17 13:09:54 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-17 13:09:55 +0000 <ldlework> maerwald: heh yeah, that's not to say some people arnt out there treating it like a paradigm
2021-09-17 13:10:08 +0000 <maerwald> like scrum
2021-09-17 13:10:13 +0000 <maerwald> imagine you do both
2021-09-17 13:10:18 +0000 <maerwald> microservices and scrum
2021-09-17 13:10:58 +0000 <ProofTechnique> .oO(I don't have to imagine)
2021-09-17 13:10:59 +0000 <dminuoso> We have one microservice oriented stack here, but that's done because this particular stack interfaces with at least three separate network regions, and we want high fault taulerance against network failures. So we split it up to have locally running service that could provide local services while the network was down.
2021-09-17 13:11:11 +0000 <dminuoso> Not done out of any religion or scaling, but just out of a strict technical requirement.
2021-09-17 13:11:31 +0000 <ldlework> kuribas: sure, horizontal scaling isn't some universal optimization
2021-09-17 13:13:24 +0000fresheyeball(~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net)
2021-09-17 13:14:59 +0000 <ldlework> JS is adding a pipeline operator to the language
2021-09-17 13:15:15 +0000 <sshine> besides ->? :-P
2021-09-17 13:15:24 +0000 <ldlework> |>
2021-09-17 13:15:32 +0000 <sshine> JS#
2021-09-17 13:15:37 +0000 <ldlework> actually
2021-09-17 13:15:42 +0000 <ldlework> instead of F# semantics
2021-09-17 13:15:48 +0000 <ldlework> where it just applies a value
2021-09-17 13:15:56 +0000 <ldlework> they are going with a whacky expression based one
2021-09-17 13:16:00 +0000 <ldlework> where the lhs is bound to ^
2021-09-17 13:16:03 +0000 <ProofTechnique> We have a couple of tiny glue services that didn't really "fit" anywhere else and basically just amount to slightly fancy proxies around garbage legacy systems that we want to quarantine, but the majority are mid-to-large size units that don't logically share any functionality beyond "reads our auth headers". I expect things will evolve over time and we'll coalesce things as we observe more of how everything actually interacts
2021-09-17 13:16:07 +0000 <ldlework> so you can do things with it
2021-09-17 13:16:38 +0000jtomas(~jtomas@95.red-88-11-64.dynamicip.rima-tde.net) (Remote host closed the connection)
2021-09-17 13:17:01 +0000jtomas(~jtomas@95.red-88-11-64.dynamicip.rima-tde.net)
2021-09-17 13:17:11 +0000 <ldlework> ProofTechnique: this conversation reminds me of some funny video about microservices where a developer is trying to explain to a product manager how some change is no small ask
2021-09-17 13:17:30 +0000 <ldlework> https://www.youtube.com/watch?v=y8OnoxKotPQ
2021-09-17 13:18:04 +0000 <ProofTechnique> I love that video :D
2021-09-17 13:18:19 +0000 <ldlework> cracks me up everytime
2021-09-17 13:20:06 +0000 <ldlework> "you think you know what it takes to tell the user their birthday... you know nothing!!"
2021-09-17 13:20:19 +0000 <ProofTechnique> When someone started drawing a diagram to explain a new service they wanted to onboard, I stopped them right there and said "okay, but why does this need to be five moving pieces instead of one?" and now they've rewritten it to just run in a container. A logical unit of work should not require a chain of 3 lambdas and an API gateway just to puke JSON
2021-09-17 13:20:39 +0000 <ProofTechnique> (And now they get multi-region deploys for free, just because I'm nice)
2021-09-17 13:22:37 +0000xsperry(~as@user/xsperry) (Ping timeout: 252 seconds)
2021-09-17 13:23:46 +0000 <ldlework> ProofTechnique: it's possible to get to the point where a collection of containers, at the level of analysis relevant to ops, is a single logical unit.
2021-09-17 13:24:41 +0000 <ldlework> (or a collection of AWS CF artifacts, or whatever else)
2021-09-17 13:26:22 +0000 <ProofTechnique> If you knew this team, you would not give the benefit of the doubt :D
2021-09-17 13:27:28 +0000 <ProofTechnique> (Also AWS API Gateways have _no_ good story for multi-region other than "just deploy a second one, lol", so that was a big operational no)
2021-09-17 13:28:09 +0000xsperry(~as@user/xsperry)
2021-09-17 13:29:26 +0000pavonia(~user@user/siracusa) (Quit: Bye!)
2021-09-17 13:31:20 +0000fresheyeball(~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.9)
2021-09-17 13:32:25 +0000yauhsien(~yauhsien@118-167-49-246.dynamic-ip.hinet.net)
2021-09-17 13:33:13 +0000favonia(~favonia@user/favonia) (Ping timeout: 265 seconds)
2021-09-17 13:35:16 +0000ubert(~Thunderbi@178.115.60.138.wireless.dyn.drei.com) (Ping timeout: 252 seconds)
2021-09-17 13:35:16 +0000ububert
2021-09-17 13:36:00 +0000ubert1(~Thunderbi@178.115.60.138.wireless.dyn.drei.com)
2021-09-17 13:37:30 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168)
2021-09-17 13:41:54 +0000byorgey(~byorgey@155.138.238.211) (Quit: leaving)
2021-09-17 13:41:58 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) (Ping timeout: 260 seconds)
2021-09-17 13:43:36 +0000machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-09-17 13:44:31 +0000Sgeo(~Sgeo@user/sgeo)
2021-09-17 13:48:28 +0000xsperry(~as@user/xsperry) (Ping timeout: 252 seconds)
2021-09-17 13:51:38 +0000[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-09-17 13:56:16 +0000yauhsien(~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-09-17 13:57:20 +0000kimjetwav(~user@2607:fea8:235f:9730:162d:fa69:3f15:a6a5)
2021-09-17 13:58:22 +0000lbseale_(~lbseale@user/ep1ctetus) (Ping timeout: 252 seconds)
2021-09-17 13:58:52 +0000burnside_(~burnsides@dhcp168-024.wadham.ox.ac.uk) (Remote host closed the connection)
2021-09-17 13:59:21 +0000burnsidesLlama(~burnsides@dhcp168-024.wadham.ox.ac.uk)
2021-09-17 14:02:10 +0000ub(~Thunderbi@178.115.57.167.wireless.dyn.drei.com)
2021-09-17 14:02:49 +0000xsperry(~as@user/xsperry)
2021-09-17 14:03:26 +0000ubert(~Thunderbi@178.115.60.138.wireless.dyn.drei.com) (Ping timeout: 260 seconds)
2021-09-17 14:03:26 +0000ububert
2021-09-17 14:03:52 +0000burnsidesLlama(~burnsides@dhcp168-024.wadham.ox.ac.uk) (Ping timeout: 252 seconds)
2021-09-17 14:03:54 +0000ubert1(~Thunderbi@178.115.60.138.wireless.dyn.drei.com) (Ping timeout: 260 seconds)
2021-09-17 14:03:56 +0000hiruji(~hiruji@user/hiruji)
2021-09-17 14:04:09 +0000wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-09-17 14:04:09 +0000wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-09-17 14:04:09 +0000wroathe(~wroathe@user/wroathe)
2021-09-17 14:04:32 +0000hiruji(~hiruji@user/hiruji) (Client Quit)
2021-09-17 14:04:43 +0000lbseale_(~lbseale@user/ep1ctetus)
2021-09-17 14:05:28 +0000shriekingnoise(~shrieking@186.137.144.80)
2021-09-17 14:05:40 +0000alx741(~alx741@181.196.68.9) (Ping timeout: 260 seconds)
2021-09-17 14:06:17 +0000slowButPresent(~slowButPr@user/slowbutpresent)
2021-09-17 14:10:25 +0000favonia(~favonia@user/favonia)
2021-09-17 14:11:39 +0000gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-09-17 14:13:05 +0000fef(~thedawn@user/thedawn) (Quit: Leaving)
2021-09-17 14:13:07 +0000Phantastes(~Phantaste@c-67-173-229-120.hsd1.co.comcast.net) (Quit: Client closed)
2021-09-17 14:14:08 +0000Phantastes(~Phantaste@c-67-173-229-120.hsd1.co.comcast.net)
2021-09-17 14:18:04 +0000fendor_(~fendor@78-2-181-45.adsl.net.t-com.hr) (Remote host closed the connection)
2021-09-17 14:18:24 +0000fendor_(~fendor@78-2-181-45.adsl.net.t-com.hr)
2021-09-17 14:18:24 +0000alx741(~alx741@186.178.108.187)
2021-09-17 14:24:40 +0000zebrag(~chris@user/zebrag)
2021-09-17 14:25:57 +0000cawfee(~root@2406:3003:2077:2758::babe) (Quit: WeeChat 3.2.1)
2021-09-17 14:27:34 +0000hiruji(~hiruji@user/hiruji)
2021-09-17 14:27:43 +0000 <ldlework> :O http://lambdacube3d.com/editor.html
2021-09-17 14:31:07 +0000kenran(~kenran@b2b-37-24-119-190.unitymedia.biz) (Quit: WeeChat info:version)
2021-09-17 14:31:29 +0000burnsidesLlama(~burnsides@dhcp168-024.wadham.ox.ac.uk)
2021-09-17 14:35:55 +0000burnsidesLlama(~burnsides@dhcp168-024.wadham.ox.ac.uk) (Ping timeout: 252 seconds)
2021-09-17 14:36:02 +0000bontaq(~user@ool-45779fe5.dyn.optonline.net)
2021-09-17 14:36:48 +0000doyougnu(~user@c-73-25-202-122.hsd1.or.comcast.net)
2021-09-17 14:37:08 +0000hiruji(~hiruji@user/hiruji) (Quit: ZNC 1.8.2 - https://znc.in)
2021-09-17 14:37:44 +0000yauhsien(~yauhsien@118-167-49-246.dynamic-ip.hinet.net)
2021-09-17 14:38:34 +0000fendor_(~fendor@78-2-181-45.adsl.net.t-com.hr) (Remote host closed the connection)
2021-09-17 14:38:41 +0000 <ldlework> ProofTechnique: https://hydra.nixos.org/job/nixpkgs/trunk/haskellPackages.lambdacube-engine.x86_64-linux/all
2021-09-17 14:38:53 +0000fendor_(~fendor@78-2-181-45.adsl.net.t-com.hr)
2021-09-17 14:39:49 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-17 14:42:22 +0000yauhsien(~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Ping timeout: 252 seconds)
2021-09-17 14:45:01 +0000jess(~jess@libera/staff/jess)
2021-09-17 14:46:41 +0000tdammers(~tdammers@77.109.72.177.res.static.edpnet.net) (Ping timeout: 265 seconds)
2021-09-17 14:50:00 +0000hnOsmium0001(uid453710@id-453710.hampstead.irccloud.com)
2021-09-17 14:51:22 +0000hiruji(~hiruji@user/hiruji)
2021-09-17 14:55:31 +0000mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2021-09-17 14:57:16 +0000jstolarek(~jstolarek@ers4.neoplus.adsl.tpnet.pl) (Ping timeout: 252 seconds)
2021-09-17 15:01:59 +0000celeste(~celeste@wsip-70-182-89-66.ok.ok.cox.net)
2021-09-17 15:02:08 +0000celeste__celeste
2021-09-17 15:03:33 +0000dyeplexer(~dyeplexer@user/dyeplexer)
2021-09-17 15:04:40 +0000tommd(~tommd@75-164-130-101.ptld.qwest.net)
2021-09-17 15:05:04 +0000p_____(~dyeplexer@user/dyeplexer)
2021-09-17 15:05:12 +0000p_____(~dyeplexer@user/dyeplexer) (Remote host closed the connection)
2021-09-17 15:05:58 +0000lavaman(~lavaman@98.38.249.169)
2021-09-17 15:07:34 +0000lortabac(~lortabac@2a01:e0a:541:b8f0:a20c:3ab6:8175:e3ff) (Quit: WeeChat 2.8)
2021-09-17 15:07:54 +0000albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-09-17 15:10:10 +0000lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2021-09-17 15:12:06 +0000benin036932301(~benin@183.82.205.89)
2021-09-17 15:12:29 +0000zmt00(~zmt00@user/zmt00)
2021-09-17 15:13:11 +0000vaucouleur(~vaucouleu@176.124.42.130) (Read error: Connection reset by peer)
2021-09-17 15:17:07 +0000benin036932301(~benin@183.82.205.89) (Ping timeout: 245 seconds)
2021-09-17 15:19:42 +0000yauhsien(~yauhsien@118-167-49-246.dynamic-ip.hinet.net)
2021-09-17 15:23:38 +0000cawfee(~root@2406:3003:2077:2758::babe)
2021-09-17 15:28:37 +0000yauhsien_(~yauhsien@118-167-49-246.dynamic-ip.hinet.net)
2021-09-17 15:28:37 +0000yauhsien(~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Read error: Connection reset by peer)
2021-09-17 15:30:25 +0000tdammers(~tdammers@77.109.72.177.res.static.edpnet.net)
2021-09-17 15:34:37 +0000yauhsien_(~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Ping timeout: 252 seconds)
2021-09-17 15:34:55 +0000xff0x(~xff0x@2001:1a81:52ad:c900:b704:3c1b:6bea:6e62) (Ping timeout: 260 seconds)
2021-09-17 15:35:34 +0000mortemeur(~mortemeur@pool-173-76-107-201.bstnma.fios.verizon.net)
2021-09-17 15:36:25 +0000 <monochrom> On haskell-cafe, I think I lost my respect for Michael Turner when he reported that he didn't understand "(TTree -> TTree -> Tree) -> TTree -> TTree -> [TTree]", he only understood it after using a type alias for the "(TTree -> TTree -> Tree)".
2021-09-17 15:37:51 +0000 <Hecate> I am resisting from posting on this thread
2021-09-17 15:37:54 +0000 <Hecate> this is a hell thread
2021-09-17 15:37:59 +0000slack1256(~slack1256@static-132-147-34-179.fl.cpe.atlanticbb.net)
2021-09-17 15:38:10 +0000 <monochrom> I can respect using a few type aliases or defining a few component types in a very much more complex scenerio, but this is not one of the complex scenerios at all.
2021-09-17 15:38:19 +0000 <geekosaur> AntC isn't exactly helping
2021-09-17 15:38:25 +0000vysn(~vysn@user/vysn)
2021-09-17 15:38:56 +0000__celeste(~celeste@wsip-70-182-89-66.ok.ok.cox.net) (Remote host closed the connection)
2021-09-17 15:39:04 +0000 <slack1256> On emacs + LSP, what is the M-x command name for searching a project for calls to a specific function? Currently I am using grep/ag but maybe LSP does that too?
2021-09-17 15:39:04 +0000 <monochrom> On top of that, can you guess the name Turner chose for (TTree -> TTree -> Tree)? It's "Order". I have no idea why "order" makes sense for that.
2021-09-17 15:39:13 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168)
2021-09-17 15:39:19 +0000__celeste(~celeste@wsip-70-182-89-66.ok.ok.cox.net)
2021-09-17 15:39:43 +0000 <Clint> fascinating
2021-09-17 15:40:13 +0000 <Hecate> again, this is a hell thread
2021-09-17 15:40:14 +0000 <Hecate> do not post
2021-09-17 15:40:18 +0000 <Hecate> do not read
2021-09-17 15:40:22 +0000__celeste(~celeste@wsip-70-182-89-66.ok.ok.cox.net) (Remote host closed the connection)
2021-09-17 15:40:45 +0000__celeste(~celeste@wsip-70-182-89-66.ok.ok.cox.net)
2021-09-17 15:40:49 +0000dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.2)
2021-09-17 15:41:20 +0000 <monochrom> Turner asks "am I translating Haskell to C/C++"? My heart say yes, you're translating to the C/C++ culture, in which people feel that every function parameter type "needs" a typedef.
2021-09-17 15:41:44 +0000xff0x(~xff0x@2001:1a81:52ad:c900:b704:3c1b:6bea:6e62)
2021-09-17 15:43:26 +0000 <monochrom> I would have lost less respect if he chose a more apt name, e.g., along the line of "TTreeCombiner". At least that's closer to the nature of TTree -> TTree -> Tree.
2021-09-17 15:43:46 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) (Ping timeout: 260 seconds)
2021-09-17 15:45:03 +0000 <janus> what is a hell thread? urban dictionary gives a definition that doesn't make sense
2021-09-17 15:45:21 +0000 <monochrom> "Order" is a very unhelpful name for that one, in fact very misleading, we say that "less than", "greater than or equal to" are "orders", not this.
2021-09-17 15:45:47 +0000 <monochrom> So much for someone who keep asking for more "plain English" and then goes on to show how broken it is.
2021-09-17 15:46:34 +0000 <monochrom> Oh, I think you have to take apart "hell" and "thread", understand each individually, and then just combine :)
2021-09-17 15:46:39 +0000chele(~chele@user/chele) (Remote host closed the connection)
2021-09-17 15:46:42 +0000 <monochrom> Maybe "thread from hell" helps.
2021-09-17 15:46:55 +0000 <monochrom> or fix the grammar, "hellish thread".
2021-09-17 15:47:02 +0000yauhsien(~yauhsien@118-167-49-246.dynamic-ip.hinet.net)
2021-09-17 15:47:14 +0000 <janus> ah all right, i was overthinking it
2021-09-17 15:47:35 +0000hyiltiz(~quassel@31.220.5.250) (Ping timeout: 265 seconds)
2021-09-17 15:47:55 +0000 <Hecate> janus: yeah, it's a bad place
2021-09-17 15:48:23 +0000 <monochrom> But yeah I'm not posting.
2021-09-17 15:48:44 +0000hyiltiz(~quassel@31.220.5.250)
2021-09-17 15:51:02 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168)
2021-09-17 15:51:47 +0000 <monochrom> My other angle is that Kmett started in a similar but worse initial condition too. Decades of C++ before trying Haskell. And he started way earlier, meaning even worse tutorials and books.
2021-09-17 15:52:39 +0000 <monochrom> And yet he went on to understand everything and surpass it. Look at how much category-theoretic libraries he churns out that it is our turn to not understand!
2021-09-17 15:52:59 +0000 <geekosaur> I think comparing most newcomers to Haskell can't very ewll be compared to Kmett, though
2021-09-17 15:53:36 +0000hyiltiz(~quassel@31.220.5.250) (Ping timeout: 268 seconds)
2021-09-17 15:54:07 +0000 <monochrom> You know, I'm very tempted to just plot a line between those two data points and conclude: You need worse tutorials to learn Haskell better.
2021-09-17 15:54:40 +0000 <monochrom> Either that, or conclude that the old, "worse" tutorials such as the Gentle Introduction is actually better.
2021-09-17 15:55:11 +0000 <monochrom> It may be that it is today's hand-holding tutorials that are worse.
2021-09-17 15:55:16 +0000 <ldlework> I really think HFFP is a great way to go for people who have coded for a long time in non-functional languages.
2021-09-17 15:55:21 +0000hyiltiz(~quassel@31.220.5.250)
2021-09-17 15:55:29 +0000 <ldlework> It felt very much like brick-laying, which is what I appreciate from pedagogy in other domains.
2021-09-17 15:55:46 +0000 <ldlework> It didn't assume I was a category theorist, just someone capable of understanding a new formal system.
2021-09-17 15:56:22 +0000 <monochrom> I think Turner was following and complaining about HFFP when he said "talking down to me". (But I think he will neither confirm nor deny.)
2021-09-17 15:57:05 +0000yauhsien(~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-09-17 15:57:14 +0000 <ldlework> huh, i wonder what passages made him feel that way
2021-09-17 15:57:17 +0000mortemeur(~mortemeur@pool-173-76-107-201.bstnma.fios.verizon.net) (Read error: Connection reset by peer)
2021-09-17 15:57:27 +0000 <monochrom> This is wher AntC may be right, as much as you say that he's unhelpful.
2021-09-17 15:57:39 +0000yauhsien(~yauhsien@118-167-49-246.dynamic-ip.hinet.net)
2021-09-17 15:57:59 +0000 <ldlework> Even if HFFP is not the best possible articulation of the approach, I think it's pedagogical structure is sound
2021-09-17 15:58:00 +0000 <geekosaur> AntC's main problem is not his understanding but his presentation
2021-09-17 15:58:09 +0000 <monochrom> No, I suspect not about any passage, but the whole plan of "start from square 1".
2021-09-17 15:58:29 +0000[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
2021-09-17 15:58:58 +0000 <ldlework> it seems contradictory to want an accessible pedagogy but interpret an assumption of nothing as condescension
2021-09-17 15:59:01 +0000nctcf^(~nctcf@68.101.54.227)
2021-09-17 15:59:24 +0000 <monochrom> Right? There are humble, modest people who recognize that they should start from square 1, so they are thankful when you do that to them.
2021-09-17 15:59:28 +0000 <ldlework> I feel for Turner, but am really glad it jived with me.
2021-09-17 15:59:32 +0000 <ldlework> yes!
2021-09-17 15:59:53 +0000 <monochrom> And then there are proud people who deny that they should start from square 1, so they will hate you for doing that to them.
2021-09-17 16:01:10 +0000 <monochrom> Turner did, for multiple times, remind us that he has so many decades of programming experience.
2021-09-17 16:01:18 +0000mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
2021-09-17 16:01:23 +0000 <monochrom> I think someone who speaks like that is the proud kind.
2021-09-17 16:01:57 +0000 <janus> someone who has a 12 line signature...
2021-09-17 16:02:03 +0000 <monochrom> And of course, I should remind you that he never actually said it was HFFP, he never said which works he tried.
2021-09-17 16:02:13 +0000 <ldlework> There is this nice video on youtube "Learn Haskell in One Video" and all it does is teach the core ML side of Haskell.
2021-09-17 16:02:49 +0000 <c_wraith> I had about 20 years of experience programming when I first picked up haskell. And it was *hard*, but I loved it. Because I love learning new things.
2021-09-17 16:02:54 +0000 <lbseale_> ldlework: that is a great video
2021-09-17 16:03:05 +0000 <lbseale_> it was my starting point
2021-09-17 16:03:22 +0000benin036932301(~benin@183.82.205.89)
2021-09-17 16:03:26 +0000 <c_wraith> But if you don't come at it as "time to learn something new", it can be really frustrating to be expected to learn something actually new
2021-09-17 16:03:39 +0000lbseale_lbseale
2021-09-17 16:04:18 +0000 <janus> why even try to cater to people with that much experience, they are a tiny part of the market and they are not disadvantaged
2021-09-17 16:04:45 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-17 16:04:54 +0000 <ldlework> i actually did try to give haskell a real go in the past a few times, but the jargon made me sleepy. HFFP's introduction with LC made me really get into the mood that I'm just learning a new formal system (pattern matching essentially) and that things like Functors and Monoids are just gonna be some algebraic laws (generic patterns).
2021-09-17 16:05:11 +0000 <monochrom> And here is the thing. Two of his complaints are: "materials that assume I already know much", and "materials that talk down to me". See the paradox there? Even hypocrisy?
2021-09-17 16:05:22 +0000 <ldlework> Then I got over the fact that they have opaque names, and just listened to what the author was telling me they are.
2021-09-17 16:05:37 +0000proofofkeags_(~proofofke@205.209.28.54)
2021-09-17 16:05:56 +0000yauhsien(~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
2021-09-17 16:06:50 +0000 <monochrom> IMO when someone harps "plain English" so much, this is why. They are expecting the unsolvable, and they just assume that jargon is the problem, "plain English" can solve it.
2021-09-17 16:07:04 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-09-17 16:07:30 +0000 <ldlework> I think that also, once HFFP got to Semigroups and was like "semigroups are like the generalization of addition" (or something to that effect) I was re-energized again with confidence that the opaque sounding typeclasses were just gonna be some general patterns, where the idea behind it is not all that complicated.
2021-09-17 16:08:10 +0000benin036932301(~benin@183.82.205.89) (Ping timeout: 252 seconds)
2021-09-17 16:08:42 +0000 <ldlework> I was actually excited to know what they were at that point.
2021-09-17 16:09:38 +0000 <janus> think i will write a mail telling Turner that he must read Software Foundations first, since it is the foundation ;)
2021-09-17 16:10:47 +0000 <monochrom> Ugh hahaha but please don't troll him!
2021-09-17 16:11:04 +0000vysn(~vysn@user/vysn) (Ping timeout: 252 seconds)
2021-09-17 16:12:22 +0000rond_(~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438)
2021-09-17 16:13:50 +0000 <janus> wow, Software Foundations has 6 volumes now! amazing
2021-09-17 16:14:05 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-17 16:14:05 +0000 <monochrom> Wait what? Oh noes.
2021-09-17 16:14:16 +0000 <monochrom> Is it competing with HFFP for length?!
2021-09-17 16:15:04 +0000 <monochrom> Maybe I should adopt volume 2 as my textbook and curriculum.
2021-09-17 16:15:47 +0000TPBP(~TPBP@2001:67c:2628:647:12::83)
2021-09-17 16:15:58 +0000 <monochrom> The course is named "principles of programming languages". My long-standing concern is "the class average is too high". I need something to make it harder. >:)
2021-09-17 16:16:12 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) (Remote host closed the connection)
2021-09-17 16:16:20 +0000 <monochrom> OK, the other long-standing concern is I teach too much Haskell.
2021-09-17 16:16:44 +0000 <monochrom> Well, this solution fixes both!
2021-09-17 16:17:28 +0000 <monochrom> And yeah I haven't harped Hoare triples as an approach to semantics for a long time. Maybe it's time to do it.
2021-09-17 16:17:52 +0000econo(uid147250@user/econo)
2021-09-17 16:18:34 +0000 <monochrom> (Hoare triples are widely harped as one way to prove your program correct, not one way to define what the language means. It can do both, and Hoare certainly proposed both.)
2021-09-17 16:19:38 +0000 <raehik> how do I package some data files (used in hspec tests) with a Stack+Cabal package?
2021-09-17 16:19:43 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-09-17 16:20:06 +0000 <janus> i certainly would have been happy if i had had a Coq-based course available in uni instead of working with custom tools
2021-09-17 16:20:07 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168)
2021-09-17 16:20:26 +0000 <raehik> I find recommendations for 'extra-source-files: folder/*' but, Stack appears to only allow files. No folders
2021-09-17 16:21:19 +0000chris(~chris@81.96.113.213)
2021-09-17 16:21:23 +0000chrisGuest6232
2021-09-17 16:21:39 +0000 <janus> raehik: ** (double star) wild cards were added in cabal 2.4, are you using a stack based on that?
2021-09-17 16:21:47 +0000 <sm> got a link ?
2021-09-17 16:21:56 +0000 <c_wraith> Hoare triples kind of make it clear how tough it is to program based on mutability.
2021-09-17 16:22:26 +0000 <janus> sm: https://cabal.readthedocs.io/en/3.4/cabal-package.html#pkg-field-data-files
2021-09-17 16:22:29 +0000 <raehik> janus: I'm on Stack 2.7 / Cabal 3.6. I tried double star too on Stack, but it complains still. Cabal might be OK with one or both
2021-09-17 16:22:44 +0000 <sm> that doc is for cabal files, janus
2021-09-17 16:23:06 +0000 <sm> stack files have their own doc
2021-09-17 16:23:15 +0000tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2021-09-17 16:23:37 +0000 <janus> sm: right, but doesn't stack use cabal for lots? i would assume that fields named similarily would have similar underpinnings
2021-09-17 16:24:03 +0000 <sm> ok, if it's actually in your .cabal file you're on the right track. In that case I'd guess your stack needs upgrading
2021-09-17 16:24:18 +0000 <raehik> I was especially confused because I'm using stack to generate my cabal file. And when I tried 'data/*', 'data/**', the generated Cabal file didn't include them
2021-09-17 16:24:43 +0000 <raehik> the Stack side says "nothing found for this entry" and scrubs it from the similarly named Cabal filed
2021-09-17 16:24:48 +0000 <raehik> s/filed/field
2021-09-17 16:26:11 +0000 <raehik> (oops, I've been talking about Stack -- I mean hpack, that uses package.yaml)
2021-09-17 16:26:19 +0000 <sm> hehe
2021-09-17 16:26:36 +0000 <sm> and I've been mixing up raehik and janus
2021-09-17 16:26:46 +0000 <sm> but we'll get there
2021-09-17 16:27:25 +0000 <raehik> sm: hahaha no worries I was following
2021-09-17 16:27:33 +0000 <sm> study the appropriate doc and all will make sense 🤞
2021-09-17 16:28:00 +0000 <c_wraith> yeah, hpack is a totally different thing. It generates cabal files, but that doesn't mean it supports all of cabal's ways of doing things
2021-09-17 16:30:45 +0000chisui(~chisui@200116b8686a18002a976267586344a5.dip.versatel-1u1.de)
2021-09-17 16:32:21 +0000 <raehik> mmmmm sm you were right. it feels silly but I have to do 'extra-source-files: data/**/*' ...
2021-09-17 16:33:06 +0000 <janus> raehik: it is the same in zsh, what did you expect? that ** would also match files?
2021-09-17 16:33:06 +0000 <raehik> but I admit, it's more powerful and only feels silly because my mind has been rotted by poorly defined globbing and regexes
2021-09-17 16:33:20 +0000 <raehik> janus: pretty much yes x)
2021-09-17 16:33:49 +0000 <janus> raehik: they are useful, i'd recommend enabling them in the shell
2021-09-17 16:34:22 +0000 <janus> saves you from using `find -type f -iname '*blabla*'` all over the place
2021-09-17 16:37:44 +0000 <janus> though cabal doesn't support that feature, so maybe it is dangerous of me to compare them...
2021-09-17 16:38:04 +0000 <janus> "** wildcards can only appear as the final path component before the file name (e.g., data/**/images/*.jpg is not allowed). If a ** wildcard is used, then the file name must include a * wildcard (e.g., data/**/README.rst is not allowed)."
2021-09-17 16:39:02 +0000_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-09-17 16:39:10 +0000MQ-17J(~MQ-17J@8.21.10.6)
2021-09-17 16:39:21 +0000 <raehik> meh, the hpack readme defines it well enough
2021-09-17 16:39:38 +0000 <raehik> it was surprising primarily because the same field name is treated differently in hpack & cabal
2021-09-17 16:43:22 +0000fendor_(~fendor@78-2-181-45.adsl.net.t-com.hr) (Ping timeout: 252 seconds)
2021-09-17 16:49:19 +0000acidjnk(~acidjnk@p200300d0c703cb83089449f0c9186ff3.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2021-09-17 16:49:56 +0000acidjnk(~acidjnk@p200300d0c703cb83089449f0c9186ff3.dip0.t-ipconnect.de)
2021-09-17 16:51:31 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-17 16:52:09 +0000fendor_(~fendor@78-2-181-45.adsl.net.t-com.hr)
2021-09-17 16:53:48 +0000cheater(~Username@user/cheater) (Ping timeout: 265 seconds)
2021-09-17 16:56:06 +0000Skyfire(~pyon@user/pyon) (Ping timeout: 260 seconds)
2021-09-17 16:57:18 +0000cheater(~Username@user/cheater)
2021-09-17 17:02:08 +0000parafactual(~celeste@wsip-70-182-89-66.ok.ok.cox.net)
2021-09-17 17:02:30 +0000__celeste(~celeste@wsip-70-182-89-66.ok.ok.cox.net) (Ping timeout: 265 seconds)
2021-09-17 17:02:44 +0000rond_(~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438) (Quit: Client closed)
2021-09-17 17:03:31 +0000fendor_(~fendor@78-2-181-45.adsl.net.t-com.hr) (Remote host closed the connection)
2021-09-17 17:03:55 +0000fendor_(~fendor@78-2-181-45.adsl.net.t-com.hr)
2021-09-17 17:07:26 +0000TPBP(~TPBP@2001:67c:2628:647:12::83) (Quit: Client closed)
2021-09-17 17:09:09 +0000Guest70(~Guest70@p200300f7770495091b8e7aac2bb6dd42.dip0.t-ipconnect.de)
2021-09-17 17:09:46 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-17 17:10:00 +0000Guest70(~Guest70@p200300f7770495091b8e7aac2bb6dd42.dip0.t-ipconnect.de) ()
2021-09-17 17:13:07 +0000chisui(~chisui@200116b8686a18002a976267586344a5.dip.versatel-1u1.de) (Quit: Client closed)
2021-09-17 17:15:15 +0000 <ldlework> Anyone know how to make blank-canvas accept remote traffic?
2021-09-17 17:15:16 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-09-17 17:16:16 +0000tfeb(~tfb@109.249.185.23)
2021-09-17 17:17:00 +0000Guest6232(~chris@81.96.113.213) (Remote host closed the connection)
2021-09-17 17:18:45 +0000tfebtfb
2021-09-17 17:18:46 +0000 <ldlework> figured it out
2021-09-17 17:22:06 +0000mousey(~sky@gateway/tor-sasl/mousey)
2021-09-17 17:22:40 +0000 <awpr> I would be highly amused if the cellular automata thing turned out to be way faster by sending everything over a socket and rendering with canvas, compared to a natural implementation with Gloss
2021-09-17 17:23:37 +0000 <ldlework> hehe
2021-09-17 17:24:38 +0000tfb(~tfb@109.249.185.23) (Quit: died)
2021-09-17 17:25:49 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-17 17:26:55 +0000fendor_(~fendor@78-2-181-45.adsl.net.t-com.hr) (Ping timeout: 260 seconds)
2021-09-17 17:27:03 +0000 <ldlework> i feel like i've been teased with haskell GLSL eDSLs lol
2021-09-17 17:28:59 +0000 <ldlework> lambdacube looks like the best one, but it uses a very old haskell and very old dependencies that don't work on Nix anymore
2021-09-17 17:32:34 +0000chris(~chris@81.96.113.213)
2021-09-17 17:32:35 +0000chrisGuest3188
2021-09-17 17:32:48 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) (Remote host closed the connection)
2021-09-17 17:37:19 +0000Guest3188(~chris@81.96.113.213) (Ping timeout: 252 seconds)
2021-09-17 17:37:21 +0000vicfred(~vicfred@user/vicfred)
2021-09-17 17:38:20 +0000 <cdsmith> How would you feel if a library you wanted to use required a GHC plugin? Asking because I'm thinking of making HMock depend on https://hackage.haskell.org/package/if-instance. It would let me offer both good error messages (if there's a Show instance) and a more general API (by not requiring Show).
2021-09-17 17:39:08 +0000 <dminuoso> Requiring a GHC plugin is an *very* high threshold.
2021-09-17 17:39:35 +0000 <dminuoso> Unless this was crucial to the core functionality of it, I'd stay clear of it.
2021-09-17 17:40:20 +0000 <cdsmith> Yeah. Maybe I can get away with a general API that requires Show and then an alternate package using the plugin
2021-09-17 17:40:52 +0000parafactual(~celeste@wsip-70-182-89-66.ok.ok.cox.net) (Ping timeout: 245 seconds)
2021-09-17 17:41:42 +0000 <cdsmith> This is for the explainable predicates. They are essentially (a -> Bool), except with the ability to explain why or why not. Right now, a lot of them require Show instances on a. I don't like that.
2021-09-17 17:44:19 +0000System123(~System123@net-37-179-171-3.cust.vodafonedsl.it)
2021-09-17 17:51:25 +0000max22-(~maxime@2a01cb0883359800445667b961f4f8f5.ipv6.abo.wanadoo.fr) (Ping timeout: 260 seconds)
2021-09-17 17:54:39 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168)
2021-09-17 18:01:54 +0000justsomeguy(~justsomeg@user/justsomeguy)
2021-09-17 18:02:36 +0000tlaxkit(~hexchat@170.253.35.150)
2021-09-17 18:03:12 +0000_xft0(~jaroslawj@185.234.208.208.r.toneticgroup.pl)
2021-09-17 18:04:55 +0000slack1256(~slack1256@static-132-147-34-179.fl.cpe.atlanticbb.net) (Ping timeout: 252 seconds)
2021-09-17 18:06:14 +0000chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2021-09-17 18:06:22 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) (Remote host closed the connection)
2021-09-17 18:06:29 +0000chexum(~quassel@gateway/tor-sasl/chexum)
2021-09-17 18:09:26 +0000sneedsfeed(~sneedsfee@rrcs-173-95-122-169.midsouth.biz.rr.com) (Quit: Client closed)
2021-09-17 18:10:50 +0000Phantastes(~Phantaste@c-67-173-229-120.hsd1.co.comcast.net) (Quit: Phantastes)
2021-09-17 18:15:56 +0000parafactual(~celeste@wsip-70-182-89-66.ok.ok.cox.net)
2021-09-17 18:18:58 +0000lavaman(~lavaman@98.38.249.169)
2021-09-17 18:20:56 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168)
2021-09-17 18:23:37 +0000lavaman(~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
2021-09-17 18:24:04 +0000wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2021-09-17 18:26:36 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-17 18:30:16 +0000OutreEE(~OutreEE@modemcable105.60-176-173.mc.videotron.ca)
2021-09-17 18:31:28 +0000Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Ping timeout: 268 seconds)
2021-09-17 18:31:28 +0000aji(~alex@prickle.ajitek.net) (Ping timeout: 268 seconds)
2021-09-17 18:31:46 +0000aji(~alex@prickle.ajitek.net)
2021-09-17 18:31:47 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-17 18:31:56 +0000Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-09-17 18:32:07 +0000wrengr_away(~wrengr@56.72.82.34.bc.googleusercontent.com) (Remote host closed the connection)
2021-09-17 18:32:50 +0000TranquilEcho(~grom@user/tranquilecho)
2021-09-17 18:34:42 +0000ralu(~ralu@static.211.245.203.116.clients.your-server.de) (Ping timeout: 245 seconds)
2021-09-17 18:34:56 +0000ralu(~ralu@static.211.245.203.116.clients.your-server.de)
2021-09-17 18:37:38 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds)
2021-09-17 18:37:38 +0000dyeplexer(~dyeplexer@user/dyeplexer) (Remote host closed the connection)
2021-09-17 18:38:29 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2021-09-17 18:39:07 +0000burnsidesLlama(~burnsides@dhcp168-024.wadham.ox.ac.uk)
2021-09-17 18:40:37 +0000theang(~theang@fef109.internetdsl.tpnet.pl) (Ping timeout: 265 seconds)
2021-09-17 18:40:48 +0000wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-09-17 18:40:48 +0000wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-09-17 18:40:48 +0000wroathe(~wroathe@user/wroathe)
2021-09-17 18:41:06 +0000theang(~theang@2a00:f41:5858:653e:e8e3:df9b:74cb:6565)
2021-09-17 18:41:14 +0000justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2)
2021-09-17 18:43:20 +0000tlaxkit(~hexchat@170.253.35.150) (Quit: Leaving)
2021-09-17 18:43:52 +0000burnsidesLlama(~burnsides@dhcp168-024.wadham.ox.ac.uk) (Ping timeout: 252 seconds)
2021-09-17 18:45:31 +0000wroathe(~wroathe@user/wroathe) (Ping timeout: 252 seconds)
2021-09-17 18:47:30 +0000Cajun(~Cajun@user/cajun) (Quit: Client closed)
2021-09-17 18:48:15 +0000yauhsien(~yauhsien@118-167-49-246.dynamic-ip.hinet.net)
2021-09-17 18:50:00 +0000wrengr(~wrengr@136.247.83.34.bc.googleusercontent.com)
2021-09-17 18:52:05 +0000hyiltiz(~quassel@31.220.5.250) (Ping timeout: 260 seconds)
2021-09-17 18:52:56 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-17 18:55:20 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-17 18:55:24 +0000hyiltiz(~quassel@31.220.5.250)
2021-09-17 19:00:42 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-09-17 19:02:34 +0000yauhsien(~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Ping timeout: 252 seconds)
2021-09-17 19:06:50 +0000MQ-17J(~MQ-17J@8.21.10.6) (Ping timeout: 268 seconds)
2021-09-17 19:09:21 +0000MQ-17J(~MQ-17J@8.21.10.6)
2021-09-17 19:12:02 +0000kenran(~kenran@200116b82ba3ca004cc511249199c36d.dip.versatel-1u1.de)
2021-09-17 19:12:43 +0000aegon(~mike@174.127.249.180)
2021-09-17 19:15:07 +0000tlaxkit(~hexchat@170.253.35.150)
2021-09-17 19:20:24 +0000theang(~theang@2a00:f41:5858:653e:e8e3:df9b:74cb:6565) (Ping timeout: 268 seconds)
2021-09-17 19:21:06 +0000theang(~theang@fef109.internetdsl.tpnet.pl)
2021-09-17 19:22:14 +0000tinhatcat(~manjaro-g@2620:103:a000:2201:8e4c:af6a:e11c:11a1)
2021-09-17 19:23:11 +0000oxide(~lambda@user/oxide) (Quit: oxide)
2021-09-17 19:25:07 +0000hyiltiz(~quassel@31.220.5.250) (Ping timeout: 268 seconds)
2021-09-17 19:25:27 +0000hyiltiz(~quassel@31.220.5.250)
2021-09-17 19:27:45 +0000parafactual(~celeste@wsip-70-182-89-66.ok.ok.cox.net) (Remote host closed the connection)
2021-09-17 19:28:30 +0000tinhatcat(~manjaro-g@2620:103:a000:2201:8e4c:af6a:e11c:11a1) (Quit: Leaving)
2021-09-17 19:28:42 +0000 <ProofTechnique> cdsmith: Would IfCxt work for your purposes, or have you been down that road and found it not a good fit (it may also be bit-rotted)?
2021-09-17 19:28:54 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-17 19:31:42 +0000wonko(~wjc@62.115.229.50) (Ping timeout: 245 seconds)
2021-09-17 19:34:01 +0000tinhatcat(~manjaro-g@2620:103:a000:2201:8e4c:af6a:e11c:11a1)
2021-09-17 19:36:36 +0000chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2021-09-17 19:37:31 +0000chexum(~quassel@gateway/tor-sasl/chexum)
2021-09-17 19:40:45 +0000 <drewolson> anyone have a good reference project that uses github actions to build a test a stack project, with a cache, and produce artifacts?
2021-09-17 19:49:26 +0000 <sm> there is a better reference project somewhere, but hledger is a battle-tested one
2021-09-17 19:52:16 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) (Remote host closed the connection)
2021-09-17 19:59:08 +0000 <dsal> drewolson: Do you mean you want downloadable binaries from your project? I do that for docs and stuff, but the binaries don't seem to stick around.
2021-09-17 19:59:17 +0000 <dsal> My github actions push binaries into cachix and I use them from there.
2021-09-17 19:59:28 +0000 <drewolson> yes, i want the most recent build to have a downloadable binary
2021-09-17 19:59:36 +0000 <drewolson> i was able to do this on gitlab with a very simple config
2021-09-17 19:59:43 +0000burnsidesLlama(~burnsides@dhcp168-024.wadham.ox.ac.uk)
2021-09-17 19:59:54 +0000 <maerwald> I use cabal
2021-09-17 20:00:01 +0000 <maerwald> but is pretty much the same
2021-09-17 20:00:04 +0000 <drewolson> https://gist.github.com/drewolson/d052e54c306b6147c5a7f0e0f58cff15
2021-09-17 20:00:42 +0000 <maerwald> https://github.com/hasufell/stack2cabal/blob/master/.github/workflows/release.yaml
2021-09-17 20:00:57 +0000 <dsal> drewolson: This does it: https://github.com/dustin/waitforsocket/blob/master/.github/workflows/haskell.yml
2021-09-17 20:01:03 +0000 <maerwald> this gives you fully static binaries on linux
2021-09-17 20:01:31 +0000 <maerwald> slightly outdated though
2021-09-17 20:01:48 +0000 <maerwald> ghcup is now pre-installed in all environments I think
2021-09-17 20:02:05 +0000 <drewolson> thanks
2021-09-17 20:02:41 +0000 <dsal> I don't actually use these bins, so maerwald's probably produces something more usable. Mine does much less. I primarily just want stuff in cachix and to know if my tests have broken.
2021-09-17 20:07:38 +0000_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-09-17 20:07:42 +0000takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-09-17 20:07:45 +0000_xft0(~jaroslawj@185.234.208.208.r.toneticgroup.pl) (Quit: Lost terminal)
2021-09-17 20:09:07 +0000waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 268 seconds)
2021-09-17 20:10:02 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-17 20:11:00 +0000waleee(~waleee@h-98-128-228-119.NA.cust.bahnhof.se)
2021-09-17 20:20:22 +0000chisui(~chisui@200116b8686a1800fa65b73f3e7c071d.dip.versatel-1u1.de)
2021-09-17 20:22:13 +0000hololeap(~hololeap@user/hololeap)
2021-09-17 20:24:04 +0000bradyt(~bradyt@user/bradyt)
2021-09-17 20:24:20 +0000eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-09-17 20:26:55 +0000michalz(~michalz@185.246.204.37) (Remote host closed the connection)
2021-09-17 20:27:09 +0000 <bradyt> i hate bash
2021-09-17 20:27:13 +0000 <bradyt> and zsh
2021-09-17 20:28:01 +0000 <bradyt> i want to append to a cli call like 0-4, 5-9, 10-14, 14-19, ...
2021-09-17 20:28:11 +0000 <bradyt> so call the command multiple times
2021-09-17 20:28:25 +0000 <bradyt> maybe passing in other arguments
2021-09-17 20:28:42 +0000wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-09-17 20:28:42 +0000wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-09-17 20:28:42 +0000wroathe(~wroathe@user/wroathe)
2021-09-17 20:29:01 +0000tinhatcat(~manjaro-g@2620:103:a000:2201:8e4c:af6a:e11c:11a1) (Quit: Leaving)
2021-09-17 20:29:06 +0000 <bradyt> seems easier to do with haskell. time to learn some haskell shell thing?
2021-09-17 20:29:22 +0000_xft0(~jaroslawj@185.234.208.208.r.toneticgroup.pl)
2021-09-17 20:29:49 +0000 <geekosaur> maybe. there's several
2021-09-17 20:30:46 +0000 <geekosaur> you have a few options: https://hackage.haskell.org/package/shh - https://hackage.haskell.org/package/shelly - https://hackage.haskell.org/package/turtle - https://hackage.haskell.org/package/shell-conduit
2021-09-17 20:31:04 +0000tlaxkit(~hexchat@170.253.35.150) (Ping timeout: 252 seconds)
2021-09-17 20:31:16 +0000 <bradyt> hmm, how to compare
2021-09-17 20:31:44 +0000 <geekosaur> were it me I'd just do it in shell, but then I've been doing shell since 1981
2021-09-17 20:32:42 +0000 <bradyt> maybe i'll just create a project and hard-code it as a Main.hs
2021-09-17 20:32:56 +0000 <bradyt> probably start with "just do it in haskell"
2021-09-17 20:32:57 +0000mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Ping timeout: 268 seconds)
2021-09-17 20:33:20 +0000 <bradyt> i keep wanting this 0-4, 5-9 thing pretty often
2021-09-17 20:33:37 +0000 <bradyt> and haskell seems like the most pleasant way to do
2021-09-17 20:34:07 +0000 <carbolymer> be prepared for some boilerplate tho
2021-09-17 20:34:17 +0000pavonia(~user@user/siracusa)
2021-09-17 20:34:39 +0000mikoto-chan(~mikoto-ch@83.137.2.246)
2021-09-17 20:37:24 +0000 <bradyt> `main = callCommand "echo hello"` seemed to work
2021-09-17 20:37:46 +0000 <bradyt> M-x compile RET ghc Main.hs && ./Main RET
2021-09-17 20:38:07 +0000 <bradyt> lol, now i have to remember how to write haskell
2021-09-17 20:38:29 +0000epolanski(uid312403@id-312403.helmsley.irccloud.com)
2021-09-17 20:38:33 +0000raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 265 seconds)
2021-09-17 20:38:41 +0000tlaxkit(~hexchat@170.253.35.150)
2021-09-17 20:38:46 +0000 <bradyt> main = do, ... do haust, ...
2021-09-17 20:38:55 +0000Ram-Z(~Ram-Z@li1814-254.members.linode.com) (Quit: ZNC - http://znc.in)
2021-09-17 20:39:35 +0000pbrisbin(~patrick@pool-173-49-147-250.phlapa.fios.verizon.net) (Quit: WeeChat 3.2)
2021-09-17 20:39:46 +0000 <geekosaur> "hast". unless it's "haßt"
2021-09-17 20:39:59 +0000 <geekosaur> they were deliberately ambiguous
2021-09-17 20:41:10 +0000wroathe(~wroathe@user/wroathe) (Ping timeout: 260 seconds)
2021-09-17 20:42:11 +0000Ram-Z(Ram-Z@2a01:7e01::f03c:91ff:fe57:d2df)
2021-09-17 20:44:16 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-09-17 20:44:58 +0000System12_(~System123@ec2-52-61-197-79.us-gov-west-1.compute.amazonaws.com)
2021-09-17 20:45:48 +0000justsomeguy(~justsomeg@user/justsomeguy)
2021-09-17 20:47:19 +0000tlaxkit(~hexchat@170.253.35.150) (Quit: Leaving)
2021-09-17 20:48:40 +0000System123(~System123@net-37-179-171-3.cust.vodafonedsl.it) (Ping timeout: 252 seconds)
2021-09-17 20:49:21 +0000eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-09-17 20:51:51 +0000Cajun(~Cajun@user/cajun)
2021-09-17 20:53:00 +0000 <dibblego> funny, I typically start with shell, then regret it, and go to .hs — and I am there right now
2021-09-17 20:53:56 +0000kuribas(~user@ptr-25vy0i7x8rtrl519tor.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
2021-09-17 20:55:42 +0000fendor_(~fendor@78-2-181-45.adsl.net.t-com.hr)
2021-09-17 20:56:21 +0000kenran(~kenran@200116b82ba3ca004cc511249199c36d.dip.versatel-1u1.de) (Quit: WeeChat info:version)
2021-09-17 20:57:34 +0000wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-09-17 20:57:35 +0000wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-09-17 20:57:35 +0000wroathe(~wroathe@user/wroathe)
2021-09-17 21:00:35 +0000lavaman(~lavaman@98.38.249.169)
2021-09-17 21:01:38 +0000 <sm> sadly I often start with hs, then regret it and go to bash
2021-09-17 21:02:14 +0000wroathe(~wroathe@user/wroathe) (Ping timeout: 265 seconds)
2021-09-17 21:02:18 +0000 <sm> of the haskell shell things, don't miss the one in Shake (cmd), it's excellent and you also have shake's dependency engine there if needed
2021-09-17 21:02:48 +0000 <sm> also, is oil shell usable yet ?
2021-09-17 21:02:55 +0000 <monochrom> OK so I finally broke my oath and posted to the hell thread.
2021-09-17 21:03:02 +0000vysn(~vysn@user/vysn)
2021-09-17 21:03:07 +0000 <geekosaur> I generally have a pretty good idea of which language fits best beforehand these days. of course it's taken me decades to develop that to the point where I don't find myself switching languages mid-project
2021-09-17 21:03:19 +0000 <monochrom> But it is only because to put the "some people are visual learners" myth to death. Cf https://www.youtube.com/watch?v=rhgwIhB58PA
2021-09-17 21:03:28 +0000awprfetches popcorn to read the hell thread
2021-09-17 21:03:36 +0000 <sm> also bradyt, python ? I found it best recently for something where neither bash nor hs was a fit
2021-09-17 21:04:00 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds)
2021-09-17 21:04:19 +0000 <monochrom> That's all. I am not a conservative who says "the status quo is just fine". :)
2021-09-17 21:04:32 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2021-09-17 21:04:48 +0000notzmv(~zmv@user/notzmv)
2021-09-17 21:05:05 +0000 <geekosaur> I'm also prone to use perl still but that's the price of being an Olde Phart :þ
2021-09-17 21:05:32 +0000 <geekosaur> (and I still don't like python much)
2021-09-17 21:06:59 +0000 <sm> I like the sound of the starlark variant. No good for system scripting though
2021-09-17 21:13:16 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-17 21:14:36 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168)
2021-09-17 21:14:49 +0000 <awpr> I released a library last night with automatic deriving of pretty Haskell-value-syntax printing of any Generics-compatible type, incl. configurable syntax highlighting, optional unicode escaping, and smart line wrapping of long strings -- see https://hackage.haskell.org/package/portray-prettyprinter and https://hackage.haskell.org/package/portray
2021-09-17 21:15:43 +0000geekosaurwonders suddenly where hackagebot ended up after we left freenode
2021-09-17 21:17:58 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-09-17 21:18:40 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) (Ping timeout: 240 seconds)
2021-09-17 21:20:24 +0000zfnmxt(~zfnmxtzfn@2001:470:69fc:105::2b32) (Changing host)
2021-09-17 21:20:24 +0000zfnmxt(~zfnmxtzfn@user/zfnmxt)
2021-09-17 21:23:14 +0000jtomas(~jtomas@95.red-88-11-64.dynamicip.rima-tde.net) (Remote host closed the connection)
2021-09-17 21:23:28 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Excess Flood)
2021-09-17 21:23:31 +0000jtomas(~jtomas@95.red-88-11-64.dynamicip.rima-tde.net)
2021-09-17 21:23:38 +0000 <awpr> oh right, and automatically-derived structural diffs for better comparisons in tests, in `portray-diff`
2021-09-17 21:23:46 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2021-09-17 21:24:17 +0000 <carbolymer> monochrom: which thread?
2021-09-17 21:24:36 +0000 <Boarders> could someone tell me how to rely on a particular version of a library from github with cabal? Thanks!
2021-09-17 21:24:51 +0000 <sclv> trying to understand the doctest ecosystem and i'm curious -- why do doctest runners prefer to use ghci instead of just emitting a proper executable to be run?
2021-09-17 21:24:54 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168)
2021-09-17 21:24:56 +0000 <sclv> is there any special reason?
2021-09-17 21:25:05 +0000 <carbolymer> dibblego: yeah, that what I usually do, then I look at the monster that came out from rewriting shell into haskell and I'm not sure that was the best way
2021-09-17 21:25:28 +0000 <monochrom> The one that started as "Haskell's "historical futurism" needs better writing, not better tools" but now the subject line has mutated to several different variants.
2021-09-17 21:25:32 +0000fiddlerwoaroof(~fiddlerwo@user/fiddlerwoaroof) (Ping timeout: 245 seconds)
2021-09-17 21:25:45 +0000 <sclv> context: i'm working on cabal's doctest support and it seems like a huge amount of the weird irritating complexity of doctest systems all stems from this choice to run doctests interactively
2021-09-17 21:25:53 +0000 <monochrom> Or more simply, look for Michael Turner (original poster) :)
2021-09-17 21:26:11 +0000 <sclv> michael turner is a ridiculous troll
2021-09-17 21:27:01 +0000 <sclv> also yeah i was watching that talk and thinking "ok, this interactive experience with the compiler you're describing... that's the repl. you're describing the repl"
2021-09-17 21:27:02 +0000fiddlerwoaroof(~fiddlerwo@user/fiddlerwoaroof)
2021-09-17 21:27:14 +0000 <carbolymer> monochrom: is this on discourse or where?
2021-09-17 21:27:19 +0000 <sclv> haskell cafe
2021-09-17 21:27:35 +0000 <carbolymer> right
2021-09-17 21:27:37 +0000fr33domlover(~fr33domlo@angeley.es) (Ping timeout: 245 seconds)
2021-09-17 21:27:44 +0000 <monochrom> That reminds me, I haven't checked discourse today! :)
2021-09-17 21:27:46 +0000 <Boarders> one thing I am amazed about is rust still doesn't have a repl
2021-09-17 21:27:54 +0000fr33domlover(~fr33domlo@angeley.es)
2021-09-17 21:28:17 +0000chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2021-09-17 21:28:27 +0000chexum(~quassel@gateway/tor-sasl/chexum)
2021-09-17 21:30:13 +0000 <sclv> again -- could really appreciate any reports from people familiar with haskell's doctest tools about why the ghci-based approach seems preferred?
2021-09-17 21:38:25 +0000 <Boarders> what's the best way to compare two benchmark runs with criterion?
2021-09-17 21:38:32 +0000System12_(~System123@ec2-52-61-197-79.us-gov-west-1.compute.amazonaws.com) (Ping timeout: 268 seconds)
2021-09-17 21:38:43 +0000 <bradyt> there
2021-09-17 21:38:45 +0000 <bradyt> http://ix.io/3zcq/hs
2021-09-17 21:38:53 +0000 <bradyt> so then i do `Main | less -R`
2021-09-17 21:39:26 +0000__monty__(~toonn@user/toonn) (Quit: leaving)
2021-09-17 21:40:09 +0000 <bradyt> oh that `print x` is not needed
2021-09-17 21:40:14 +0000System123(~System123@ec2-52-61-197-79.us-gov-west-1.compute.amazonaws.com)
2021-09-17 21:42:19 +0000System12_(~System123@net-37-179-171-3.cust.vodafonedsl.it)
2021-09-17 21:43:15 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-17 21:45:54 +0000System123(~System123@ec2-52-61-197-79.us-gov-west-1.compute.amazonaws.com) (Ping timeout: 260 seconds)
2021-09-17 21:46:03 +0000Boarders(sid425905@id-425905.lymington.irccloud.com) ()
2021-09-17 21:46:22 +0000Boarders(sid425905@id-425905.lymington.irccloud.com)
2021-09-17 21:46:24 +0000 <Melvar> With cabal, is there any tutorial on putting a non-fixed set of autogenerated modules into `exposed-modules` using a custom setup? Because it looks like `build-type: Configure` does not support this.
2021-09-17 21:46:54 +0000 <sclv> you'll need to use Custom
2021-09-17 21:46:58 +0000 <sclv> but _please_ don't do that! please!
2021-09-17 21:47:01 +0000 <Melvar> Or at least an intro to Cabal-the-library, or what the hooks system actually means.
2021-09-17 21:47:10 +0000 <sclv> its completely recommended against
2021-09-17 21:48:11 +0000lavaman(~lavaman@98.38.249.169) (Ping timeout: 268 seconds)
2021-09-17 21:48:22 +0000wroathe(~wroathe@96-88-30-181-static.hfc.comcastbusiness.net)
2021-09-17 21:48:23 +0000wroathe(~wroathe@96-88-30-181-static.hfc.comcastbusiness.net) (Changing host)
2021-09-17 21:48:23 +0000wroathe(~wroathe@user/wroathe)
2021-09-17 21:49:06 +0000gehmehgeh(~user@user/gehmehgeh)
2021-09-17 21:50:31 +0000 <sclv> if you want to see how to do it, here's a simple example https://github.com/kowainik/autopack -- but again, i'm going to urge you super strongly to never release a package that does this (i.e. only use this for proprietary packages at most). the exposed-modules is used directly for hackage, so doing this will make the hackage docs very useless, and generally make your package a Bad Citizen.
2021-09-17 21:50:32 +0000 <sclv> and depending on why you want this, there is almost certainly a better way.
2021-09-17 21:50:32 +0000 <Melvar> Okay then. The only alternative I see is to write a package.yaml and invoke hpack after generating the modules, because I do not want to write code to insert modules into the cabal file.
2021-09-17 21:50:47 +0000 <sclv> ok, then write the package.yaml and invoke hpack
2021-09-17 21:51:05 +0000 <sclv> or just write some code once and for all to generate the module names, then paste them into the cabal file
2021-09-17 21:51:05 +0000 <sm> Boarders, quick and dirty but I like quickbench !
2021-09-17 21:51:53 +0000 <sclv> cabal files are designed to be a full interface manifest, which is why they don't expose wildcarding or the like
2021-09-17 21:51:57 +0000 <sclv> for modules in particular
2021-09-17 21:52:27 +0000 <sm> sclv: doctests are ghci commands, how might compiling them work ?
2021-09-17 21:52:30 +0000 <Melvar> The actual problem: I have written a toy wayland library, and have now written a scanner for it which is obliged to generate one module per interface because there are otherwise name clashes.
2021-09-17 21:52:55 +0000 <sclv> sm: i mean they're just a snippet of code, that generates a result that is shown, and then they compare the result vs the expected result
2021-09-17 21:53:03 +0000 <sclv> so like... they'd turn into standard spec tests or the like?
2021-09-17 21:53:04 +0000vysn(~vysn@user/vysn) (Ping timeout: 252 seconds)
2021-09-17 21:53:47 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-17 21:54:23 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-17 21:54:26 +0000 <sclv> Melvar: if you control the generation, I'd suggest just using better name munging :-)
2021-09-17 21:54:27 +0000 <ProofTechnique> Boarders: I think Rust had a repl in the very early days
2021-09-17 21:54:44 +0000 <sclv> sm: unless its common to have doctests using `:t` or `:i` or the like?? is it?
2021-09-17 21:55:28 +0000 <ProofTechnique> It was called `rusti` or something like that
2021-09-17 21:55:39 +0000 <Melvar> sclv: I don’t *want* to have hungarian notation on every request and event constructor, that’s what namespacing and qualification are for.
2021-09-17 21:55:43 +0000 <sm> it sounds interesting. Some compilation delay but maybe a speedup overall ? that would be very welcome
2021-09-17 21:56:11 +0000 <sclv> my main motivation is it eliminates the hardest part of the doctest runners, which is trying to match options to ghci etc perfectly
2021-09-17 21:56:11 +0000 <bradyt> oops, more like x <- readProcess "task" ["status:pending", "count"] ""
2021-09-17 21:56:22 +0000 <sclv> but also i'd imagine that its overall equally efficient
2021-09-17 21:56:27 +0000 <sclv> if not moreso
2021-09-17 21:56:29 +0000 <sm> i'd guess few projects use ghci commands in their doctests
2021-09-17 21:56:41 +0000 <ProofTechnique> I guess there's also https://github.com/google/evcxr, now
2021-09-17 21:56:54 +0000 <sclv> i wonder if its just a holdover from the python mentality doctests evolved from
2021-09-17 21:57:54 +0000 <sm> currently doctests start too slowly too use, for me
2021-09-17 21:58:02 +0000 <Boarders> I am trying to depend on this fork of containers: https://github.com/Boarders/containers - but the cabal file is in the subdirectory containers, does anyone know where the url of cabal.project should point to pick it up?
2021-09-17 21:58:10 +0000gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-09-17 21:59:20 +0000 <ProofTechnique> https://cabal.readthedocs.io/en/3.4/cabal-project.html#specifying-packages-from-remote-version-con… Boarders
2021-09-17 21:59:21 +0000 <Boarders> sm: I haven't tried quickbench, I'll have to see
2021-09-17 21:59:37 +0000 <ProofTechnique> Same url, just specify subdir
2021-09-17 21:59:56 +0000 <Boarders> thank you ProofTechnique (I have such a hard time finding stuff in the cabal docs, idk why)
2021-09-17 22:00:12 +0000 <Melvar> sclv: Submodules / namespaces within modules would be exactly what I would like, but Haskell doesn’t have them.
2021-09-17 22:00:42 +0000 <Franciman> how can I use unboxed types?
2021-09-17 22:00:54 +0000 <Franciman> if I put Int# in my data type, it says `can't parse infix operator` bla bla
2021-09-17 22:01:18 +0000 <awpr> `-XMagicHash`
2021-09-17 22:01:22 +0000 <Franciman> takk
2021-09-17 22:01:23 +0000 <sclv> I think for bindings most of us resort to hungarian notation and then wrap them up in higher level things, its just how it is
2021-09-17 22:01:40 +0000 <sclv> like using the direct bindings are ugly enough already
2021-09-17 22:02:13 +0000 <Melvar> Practically, this lib was never going to be uploaded to hackage or the like anyway, precisely because part of it is a reproduction of whatever wayland protocols are present on the system.
2021-09-17 22:02:28 +0000_xft0(~jaroslawj@185.234.208.208.r.toneticgroup.pl) (Quit: Lost terminal)
2021-09-17 22:02:35 +0000 <awpr> I think I've seen other packages generate bindings ahead-of-time, and release the generated sources to Hackage
2021-09-17 22:02:39 +0000hyiltiz(~quassel@31.220.5.250) (Ping timeout: 265 seconds)
2021-09-17 22:02:42 +0000favonia(~favonia@user/favonia) (Ping timeout: 260 seconds)
2021-09-17 22:03:07 +0000Melvarshrugs.
2021-09-17 22:03:49 +0000hyiltiz(~quassel@31.220.5.250)
2021-09-17 22:03:49 +0000burnsidesLlama(~burnsides@dhcp168-024.wadham.ox.ac.uk) (Remote host closed the connection)
2021-09-17 22:03:52 +0000 <Melvar> Anyway, since this is my toy, the path of least resistance to actually building with the generated code seems to be to use hpack to write a cabal file that includes the generated modules.
2021-09-17 22:04:20 +0000burnsidesLlama(~burnsides@dhcp168-024.wadham.ox.ac.uk)
2021-09-17 22:04:51 +0000jess(~jess@libera/staff/jess) ()
2021-09-17 22:05:07 +0000 <sclv> :+1:
2021-09-17 22:06:29 +0000 <Melvar> I’m particularly proud of my handler type: newtype Handler i = Handler (forall newhandlers . Event i newhandlers -> IO newhandlers)
2021-09-17 22:06:57 +0000 <monochrom> sclv: Hey, I like the "full interface manifest" narrative!
2021-09-17 22:08:10 +0000 <Melvar> When an event is received that sets up a new object, the handler handling that event is forced by the type system to return a new handler for events on that object.
2021-09-17 22:08:32 +0000hyiltiz(~quassel@31.220.5.250) (Ping timeout: 268 seconds)
2021-09-17 22:09:09 +0000burnsidesLlama(~burnsides@dhcp168-024.wadham.ox.ac.uk) (Ping timeout: 268 seconds)
2021-09-17 22:09:35 +0000 <awpr> what's in `Event`? seems like unless it's a GADT there's not much freedom given to a handler w.r.t. what it returns as the new handlers
2021-09-17 22:10:04 +0000hyiltiz(~quassel@31.220.5.250)
2021-09-17 22:10:48 +0000mikoto-chan(~mikoto-ch@83.137.2.246) (Quit: mikoto-chan)
2021-09-17 22:11:29 +0000 <Melvar> `Event` is, in fact, an associated GADT family.
2021-09-17 22:11:44 +0000 <awpr> neat
2021-09-17 22:12:58 +0000Skyfire(~pyon@user/pyon)
2021-09-17 22:13:02 +0000 <Melvar> By which I mean, `Event` is an associated data family, and each individual generated `Event i` instance is a GADT.
2021-09-17 22:15:50 +0000 <Melvar> Most `Event` constructors instantiate the `newhandlers` index to `()`, since events that allocate objects are not too common.
2021-09-17 22:17:49 +0000dispater(~dispater@user/brprice) (Quit: ZNC 1.8.1 - https://znc.in)
2021-09-17 22:17:53 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) (Remote host closed the connection)
2021-09-17 22:18:07 +0000dispater(~dispater@user/brprice)
2021-09-17 22:18:53 +0000 <Melvar> Thanks for the opinions, sclv, though they were largely what I expected.
2021-09-17 22:19:28 +0000tdammers(~tdammers@77.109.72.177.res.static.edpnet.net) (Ping timeout: 252 seconds)
2021-09-17 22:19:39 +0000OscarZ(~oscarz@95.175.104.70)
2021-09-17 22:20:24 +0000geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-09-17 22:20:34 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-17 22:22:15 +0000geekosaur(~geekosaur@xmonad/geekosaur)
2021-09-17 22:28:16 +0000merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-09-17 22:29:27 +0000ubert(~Thunderbi@178.115.57.167.wireless.dyn.drei.com) (Remote host closed the connection)
2021-09-17 22:38:27 +0000System12_(~System123@net-37-179-171-3.cust.vodafonedsl.it) (Remote host closed the connection)
2021-09-17 22:38:30 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-17 22:39:19 +0000System123(~System123@net-37-179-171-3.cust.vodafonedsl.it)
2021-09-17 22:42:06 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-17 22:43:08 +0000vicfred(~vicfred@user/vicfred) (Quit: Leaving)
2021-09-17 22:43:40 +0000TranquilEcho(~grom@user/tranquilecho) (Quit: WeeChat 2.8)
2021-09-17 22:43:58 +0000bradyt(~bradyt@user/bradyt) ()
2021-09-17 22:44:13 +0000System123(~System123@net-37-179-171-3.cust.vodafonedsl.it) (Ping timeout: 265 seconds)
2021-09-17 22:48:03 +0000max22-(~maxime@2a01cb08833598007ac4a393d617d2bc.ipv6.abo.wanadoo.fr)
2021-09-17 22:48:04 +0000raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-09-17 22:51:28 +0000jtomas(~jtomas@95.red-88-11-64.dynamicip.rima-tde.net) (Ping timeout: 252 seconds)
2021-09-17 22:55:15 +0000hololeap(~hololeap@user/hololeap) (Ping timeout: 276 seconds)
2021-09-17 22:56:53 +0000hololeap(~hololeap@user/hololeap)
2021-09-17 22:58:25 +0000cuz(~user@2601:182:cc02:8b0:e50a:ab1e:19b4:1aaf)
2021-09-17 22:58:40 +0000bontaq(~user@ool-45779fe5.dyn.optonline.net) (Remote host closed the connection)
2021-09-17 23:00:40 +0000machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 240 seconds)
2021-09-17 23:01:18 +0000bontaq(~user@ool-45779fe5.dyn.optonline.net)
2021-09-17 23:01:41 +0000[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-09-17 23:01:41 +0000yauhsien(~yauhsien@118-167-49-246.dynamic-ip.hinet.net)
2021-09-17 23:02:36 +0000tdammers(~tdammers@77.109.72.177.res.static.edpnet.net)
2021-09-17 23:05:03 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168)
2021-09-17 23:06:27 +0000yauhsien(~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
2021-09-17 23:13:06 +0000perro(~user@072-191-245-069.res.spectrum.com) (Remote host closed the connection)
2021-09-17 23:22:23 +0000Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.)
2021-09-17 23:22:24 +0000wroathe(~wroathe@user/wroathe) (Ping timeout: 265 seconds)
2021-09-17 23:24:22 +0000tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-17 23:26:32 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) (Remote host closed the connection)
2021-09-17 23:27:51 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-09-17 23:29:02 +0000jinsun(~quassel@user/jinsun) (Ping timeout: 260 seconds)
2021-09-17 23:33:35 +0000acidjnk(~acidjnk@p200300d0c703cb83089449f0c9186ff3.dip0.t-ipconnect.de) (Remote host closed the connection)
2021-09-17 23:33:58 +0000acidjnk(~acidjnk@p200300d0c703cb83089449f0c9186ff3.dip0.t-ipconnect.de)
2021-09-17 23:35:53 +0000chisui(~chisui@200116b8686a1800fa65b73f3e7c071d.dip.versatel-1u1.de) (Ping timeout: 256 seconds)
2021-09-17 23:37:45 +0000eggplantade(~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168)
2021-09-17 23:38:09 +0000hololeap(~hololeap@user/hololeap) (Ping timeout: 276 seconds)
2021-09-17 23:38:47 +0000acidjnk(~acidjnk@p200300d0c703cb83089449f0c9186ff3.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2021-09-17 23:41:28 +0000favonia(~favonia@user/favonia)
2021-09-17 23:46:20 +0000hololeap(~hololeap@user/hololeap)
2021-09-17 23:48:57 +0000acidjnk(~acidjnk@p200300d0c703cb83089449f0c9186ff3.dip0.t-ipconnect.de)
2021-09-17 23:50:54 +0000hyiltiz(~quassel@31.220.5.250) (Ping timeout: 268 seconds)
2021-09-17 23:52:27 +0000hololeap(~hololeap@user/hololeap) (Ping timeout: 276 seconds)
2021-09-17 23:54:32 +0000hololeap(~hololeap@user/hololeap)
2021-09-17 23:55:14 +0000hexfive(~eric@50.35.83.177)
2021-09-17 23:55:52 +0000hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2021-09-17 23:57:30 +0000hexfive(~eric@50.35.83.177) (Client Quit)
2021-09-17 23:57:54 +0000hololeap(~hololeap@user/hololeap)
2021-09-17 23:58:40 +0000max22-(~maxime@2a01cb08833598007ac4a393d617d2bc.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
2021-09-17 23:59:19 +0000wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-09-17 23:59:20 +0000wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-09-17 23:59:20 +0000wroathe(~wroathe@user/wroathe)
2021-09-17 23:59:56 +0000hyiltiz(~quassel@31.220.5.250)