2023/04/27

2023-04-27 00:07:39 +0200thegeekinside(~thegeekin@189.180.38.222) (Ping timeout: 256 seconds)
2023-04-27 00:11:32 +0200zeenk(~zeenk@2a02:2f04:a20f:5200::fba) (Quit: Konversation terminated!)
2023-04-27 00:15:20 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2023-04-27 00:16:42 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2023-04-27 00:16:50 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2023-04-27 00:16:56 +0200nick4(~nick@2600:8807:9103:b700:c41a:f850:bfc2:4f27)
2023-04-27 00:21:14 +0200nick4(~nick@2600:8807:9103:b700:c41a:f850:bfc2:4f27) (Ping timeout: 246 seconds)
2023-04-27 00:25:09 +0200thegeekinside(~thegeekin@189.180.38.222)
2023-04-27 00:29:29 +0200npmania(~Thunderbi@121.128.226.31)
2023-04-27 00:33:35 +0200Cale(~cale@cpe80d04ade0a03-cm80d04ade0a01.cpe.net.cable.rogers.com) (Remote host closed the connection)
2023-04-27 00:35:52 +0200chiselfuse(~chiselfus@user/chiselfuse) (Remote host closed the connection)
2023-04-27 00:36:21 +0200chiselfuse(~chiselfus@user/chiselfuse)
2023-04-27 00:36:22 +0200Cale(~cale@cpe80d04ade0a03-cm80d04ade0a01.cpe.net.cable.rogers.com)
2023-04-27 00:40:50 +0200Tuplanolla(~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Quit: Leaving.)
2023-04-27 00:42:45 +0200gurkenglas(~gurkengla@dynamic-046-114-002-228.46.114.pool.telefonica.de) (Ping timeout: 240 seconds)
2023-04-27 00:44:26 +0200merijn(~merijn@145.90.225.7)
2023-04-27 00:45:14 +0200gurkenglas(~gurkengla@46.114.179.150)
2023-04-27 01:00:39 +0200oljenkins(~philipp@p5dec4bb3.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
2023-04-27 01:08:10 +0200codaraxis___(~codaraxis@user/codaraxis)
2023-04-27 01:09:08 +0200acidjnk(~acidjnk@p200300d6e715c4336965881302acf76a.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2023-04-27 01:11:25 +0200codaraxis__(~codaraxis@user/codaraxis) (Ping timeout: 240 seconds)
2023-04-27 01:13:02 +0200codaraxis___(~codaraxis@user/codaraxis) (Ping timeout: 246 seconds)
2023-04-27 01:17:48 +0200merijn(~merijn@145.90.225.7) (Ping timeout: 265 seconds)
2023-04-27 01:26:23 +0200TheCoffeMaker(~TheCoffeM@user/thecoffemaker) (Remote host closed the connection)
2023-04-27 01:26:45 +0200TheCoffeMaker(~TheCoffeM@user/thecoffemaker)
2023-04-27 01:26:56 +0200chiselfuse(~chiselfus@user/chiselfuse) (Ping timeout: 240 seconds)
2023-04-27 01:27:11 +0200chiselfu1e(~chiselfus@user/chiselfuse)
2023-04-27 01:27:25 +0200jwiegleyjohnw`
2023-04-27 01:28:07 +0200johnw`johnw
2023-04-27 01:28:41 +0200eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2023-04-27 01:29:02 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:c7a:f7d7:990c:5acb)
2023-04-27 01:30:01 +0200Guest75(~Guest75@node-1w7jr9qnoiav0z7eosky02l6y.ipv6.telus.net)
2023-04-27 01:37:05 +0200finsternis(~X@23.226.237.192)
2023-04-27 01:39:30 +0200Guest75(~Guest75@node-1w7jr9qnoiav0z7eosky02l6y.ipv6.telus.net) (Quit: Client closed)
2023-04-27 01:42:49 +0200mauke_(~mauke@user/mauke)
2023-04-27 01:44:20 +0200mauke(~mauke@user/mauke) (Ping timeout: 252 seconds)
2023-04-27 01:44:20 +0200mauke_mauke
2023-04-27 01:46:41 +0200heartburn(~gass@2a00:d880:3:1::b1e4:b241) (Ping timeout: 246 seconds)
2023-04-27 01:48:22 +0200 <Clinton[m]> Is there a MonadState style typeclass that abstracts over a Key/Value store? Yes, I know I could use StateT and a Map, but I'd like to eventually replace an in memory implementation with some other implementation, like a database based one. I don't want to have to load the whole table each time I want to get one row to conform to the interface.
2023-04-27 01:52:05 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-04-27 01:52:05 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-04-27 01:52:05 +0200wroathe(~wroathe@user/wroathe)
2023-04-27 01:54:02 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2023-04-27 01:54:42 +0200heartburn(~gass@2a00:d880:3:1::b1e4:b241)
2023-04-27 02:00:09 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2023-04-27 02:01:18 +0200gurkenglas(~gurkengla@46.114.179.150) (Ping timeout: 265 seconds)
2023-04-27 02:02:02 +0200Inst(~Inst@2601:6c4:4081:54f0:e436:a84f:8a3c:7b5)
2023-04-27 02:09:52 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 252 seconds)
2023-04-27 02:10:07 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 276 seconds)
2023-04-27 02:10:26 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2023-04-27 02:11:10 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2023-04-27 02:11:45 +0200mei(~mei@user/mei) (Ping timeout: 240 seconds)
2023-04-27 02:14:29 +0200mei(~mei@user/mei)
2023-04-27 02:17:23 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2023-04-27 02:17:57 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2023-04-27 02:26:25 +0200mncheck(~mncheck@193.224.205.254) (Ping timeout: 240 seconds)
2023-04-27 02:32:03 +0200oljenkins(~philipp@p5dec4bb3.dip0.t-ipconnect.de)
2023-04-27 02:32:51 +0200Me-me(~Me-me@user/me-me)
2023-04-27 02:36:10 +0200ryanbooker(uid4340@id-4340.hampstead.irccloud.com)
2023-04-27 02:45:21 +0200mei(~mei@user/mei) (Remote host closed the connection)
2023-04-27 02:50:16 +0200johnw(~jwiegley@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Quit: ZNC - http://znc.in)
2023-04-27 02:52:24 +0200nate1(~nate@98.45.169.16)
2023-04-27 02:53:10 +0200mei(~mei@user/mei)
2023-04-27 02:57:35 +0200nate1(~nate@98.45.169.16) (Ping timeout: 260 seconds)
2023-04-27 03:04:12 +0200gmg(~user@user/gehmehgeh)
2023-04-27 03:07:20 +0200gehmehgeh(~user@user/gehmehgeh) (Ping timeout: 240 seconds)
2023-04-27 03:08:59 +0200 <dmj`> Clinton[m]: Instead of a class, you could define your own data type as a mock that has functions for various map operations. data Context k v m = Context { insert :: k -> v -> m (); lookup :: k -> m (Maybe v); delete :: k -> m (Maybe v) }, then initialize it in either State s or IO, or StateT s IO, etc. swap it out, poor man's IOC.
2023-04-27 03:11:02 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2023-04-27 03:12:00 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 248 seconds)
2023-04-27 03:14:22 +0200merijn(~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl)
2023-04-27 03:14:59 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2023-04-27 03:15:05 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 240 seconds)
2023-04-27 03:17:10 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2023-04-27 03:39:17 +0200 <Clinton[m]> [dmj](https://matrix.to/#/@dmj:libera.chat): that's not a bad idea actually!
2023-04-27 03:48:25 +0200merijn(~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
2023-04-27 03:48:27 +0200nick4(~nick@2600:8807:9103:b700:c41a:f850:bfc2:4f27)
2023-04-27 04:00:09 +0200drlkf(~drlkf@192.184.163.34.bc.googleusercontent.com)
2023-04-27 04:08:10 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 260 seconds)
2023-04-27 04:12:17 +0200 <Clinton[m]> [dmj](https://matrix.to/#/@dmj:libera.chat): yeah that is a good idea. I was thinking of making my own monad transformer but that won't compose with other transformers as well.
2023-04-27 04:22:45 +0200codaraxis(~codaraxis@user/codaraxis)
2023-04-27 04:23:40 +0200codaraxis(~codaraxis@user/codaraxis) (Max SendQ exceeded)
2023-04-27 04:27:02 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2023-04-27 04:28:07 +0200xff0x(~xff0x@ai098135.d.east.v6connect.net) (Ping timeout: 255 seconds)
2023-04-27 04:42:52 +0200Square(~Square4@user/square) (Ping timeout: 276 seconds)
2023-04-27 04:44:27 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 248 seconds)
2023-04-27 04:45:20 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2023-04-27 04:46:42 +0200slac11015(~slack1256@191.125.227.218)
2023-04-27 04:48:36 +0200jespada(~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) (Read error: Connection reset by peer)
2023-04-27 04:49:04 +0200slack1256(~slack1256@181.43.95.185) (Ping timeout: 248 seconds)
2023-04-27 04:49:46 +0200talismanick(~user@2601:204:ef80:6c80::a8e2)
2023-04-27 04:51:10 +0200jespada_(~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net)
2023-04-27 04:55:37 +0200td_(~td@i5387093B.versanet.de) (Ping timeout: 250 seconds)
2023-04-27 04:56:32 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 240 seconds)
2023-04-27 04:57:27 +0200td_(~td@i53870923.versanet.de)
2023-04-27 04:58:59 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2023-04-27 04:59:00 +0200slac11015(~slack1256@191.125.227.218) (Read error: Connection reset by peer)
2023-04-27 05:03:31 +0200jero98772(~jero98772@2800:484:1d84:9000::2) (Remote host closed the connection)
2023-04-27 05:03:47 +0200 <talismanick> I'd like to have a `Time` slot in a record, which will be filled out via optparse-generic's `getRecord` - what will parse that read-in datestring for me?
2023-04-27 05:04:03 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2023-04-27 05:04:23 +0200 <talismanick> something like "10-4-23" for "October 4th, 2023"
2023-04-27 05:05:46 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2023-04-27 05:17:15 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2023-04-27 05:18:49 +0200 <talismanick> maybe something that takes a compile-time parameter like `time :: Time "%m-%d-%y"`?
2023-04-27 05:19:31 +0200xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
2023-04-27 05:32:44 +0200gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2023-04-27 05:33:29 +0200gmg(~user@user/gehmehgeh)
2023-04-27 05:36:48 +0200rf(~rf@2605:59c8:1604:2210:4a2b:fc:eab3:8901) (Ping timeout: 250 seconds)
2023-04-27 05:38:39 +0200 <talismanick> hello?
2023-04-27 05:38:41 +0200czy(~user@host-140-25.ilcub310.champaign.il.us.clients.pavlovmedia.net)
2023-04-27 05:44:25 +0200rekahsoft(~rekahsoft@bras-base-orllon1122w-grc-04-174-88-193-177.dsl.bell.ca) (Ping timeout: 240 seconds)
2023-04-27 05:45:00 +0200merijn(~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl)
2023-04-27 05:46:39 +0200phma(phma@2001:5b0:210b:db18:b6ee:b0c:4d1a:fd0f) (Read error: Connection reset by peer)
2023-04-27 05:47:34 +0200phma(~phma@67.44.208.163)
2023-04-27 05:49:33 +0200merijn(~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 255 seconds)
2023-04-27 05:50:30 +0200czy(~user@host-140-25.ilcub310.champaign.il.us.clients.pavlovmedia.net) (Remote host closed the connection)
2023-04-27 05:57:19 +0200czy(~user@host-140-25.ilcub310.champaign.il.us.clients.pavlovmedia.net)
2023-04-27 06:04:20 +0200 <dmj`> Clinton[m]: cool
2023-04-27 06:05:41 +0200jwiegley(~jwiegley@76-234-69-149.lightspeed.frokca.sbcglobal.net)
2023-04-27 06:08:29 +0200 <jackdk> talismanick: it is not clear to me whether you're asking "how do I parse times and what time library to use?" or "how do I wire `Time` into `optparse-generic`?" For the latter, I would just shove a `Time` field into a record inside a newtype (to avoid orphan instances) and then implement any missing instances that GHC complains about"
2023-04-27 06:08:39 +0200 <jackdk> talismanick: I have a call coming up so can't help further, sorry
2023-04-27 06:14:22 +0200jargon(~jargon@184.101.73.92) (Remote host closed the connection)
2023-04-27 06:15:18 +0200 <Clinton[m]> talismanick: you can do some funky stuff with `generics-sop`. Its tricky though
2023-04-27 06:23:50 +0200 <probie> Is there a preferred dependency when one needs to carry values at the type level, or do projects that do that just tend to roll their own? (e.g. something like `class Carrying a b | a -> b where get :: proxy a -> b`)
2023-04-27 06:29:42 +0200vglfr(~vglfr@46.96.174.241)
2023-04-27 06:30:28 +0200polyphem(~polyphem@ip-109-43-50-17.web.vodafone.de)
2023-04-27 06:31:09 +0200 <dmj`> probie: Data.Proxy is standard
2023-04-27 06:35:16 +0200 <probie> dmj`: Sorry, I wasn't clear. Assuming my `Carrying` class above, what I want to do is something like `foo :: Foo -> Bar -> Baz; foo = some def here; data FooFun; instance Carrying FooFun (Foo -> Bar -> Baz) where get _ = foo`
2023-04-27 06:38:27 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-04-27 06:38:27 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-04-27 06:38:27 +0200wroathe(~wroathe@user/wroathe)
2023-04-27 06:42:00 +0200 <jwiegley> hello, dmj`!
2023-04-27 06:42:24 +0200jwiegleyjohnw
2023-04-27 06:45:57 +0200johnw(~jwiegley@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Quit: ZNC - http://znc.in)
2023-04-27 06:46:40 +0200johnw(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net)
2023-04-27 06:53:55 +0200nate1(~nate@98.45.169.16)
2023-04-27 06:55:45 +0200ryanbooker(uid4340@id-4340.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2023-04-27 06:58:51 +0200nate1(~nate@98.45.169.16) (Ping timeout: 255 seconds)
2023-04-27 07:03:12 +0200nick___(~nick@2600:8807:9103:b700:c41a:f850:bfc2:4f27)
2023-04-27 07:05:37 +0200nick4(~nick@2600:8807:9103:b700:c41a:f850:bfc2:4f27) (Ping timeout: 250 seconds)
2023-04-27 07:07:21 +0200jonathan_(~jonathan@h-176-10-144-60.NA.cust.bahnhof.se)
2023-04-27 07:12:07 +0200 <jackdk> probie: https://hackage.haskell.org/package/reflection ? (what are you doing?)
2023-04-27 07:13:01 +0200thegeekinside(~thegeekin@189.180.38.222) (Ping timeout: 276 seconds)
2023-04-27 07:16:11 +0200npmania1(~Thunderbi@121.128.226.31)
2023-04-27 07:16:36 +0200use-value(~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Quit: use-value)
2023-04-27 07:16:50 +0200npmania(~Thunderbi@121.128.226.31) (Remote host closed the connection)
2023-04-27 07:16:50 +0200npmania1npmania
2023-04-27 07:17:12 +0200 <probie> jackdk: That works. I really just wanted the `Reifies` type class, but since I don't need `reify`, I'd ignored it
2023-04-27 07:17:41 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2023-04-27 07:18:39 +0200 <probie> I'm just abusing `deriving via` in weird ways to save a few key strokes and blow out compile time, but sometimes I need to actually supply a function to this machinery
2023-04-27 07:18:54 +0200dimator(~dimator@035-132-113-218.inf.spectrum.com)
2023-04-27 07:22:35 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2023-04-27 07:23:19 +0200trev(~trev@user/trev)
2023-04-27 07:31:42 +0200vglfr(~vglfr@46.96.174.241) (Ping timeout: 255 seconds)
2023-04-27 07:33:43 +0200vglfr(~vglfr@145.224.101.39)
2023-04-27 07:36:03 +0200dimator(~dimator@035-132-113-218.inf.spectrum.com) (Quit: dimator)
2023-04-27 07:36:25 +0200Teacup(~teacup@user/teacup) (Ping timeout: 240 seconds)
2023-04-27 07:36:27 +0200vglfr(~vglfr@145.224.101.39) (Read error: Connection reset by peer)
2023-04-27 07:36:49 +0200thegeekinside(~thegeekin@189.180.38.222)
2023-04-27 07:36:59 +0200vglfr(~vglfr@145.224.101.39)
2023-04-27 07:37:57 +0200Teacup(~teacup@user/teacup)
2023-04-27 07:43:25 +0200vglfr(~vglfr@145.224.101.39) (Ping timeout: 255 seconds)
2023-04-27 07:44:28 +0200vglfr(~vglfr@2a0d:3344:1aaa:7010:183:3e8f:75eb:1bfc)
2023-04-27 07:45:24 +0200merijn(~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl)
2023-04-27 07:46:16 +0200euandreh1(~Thunderbi@189.6.18.7)
2023-04-27 07:46:52 +0200kritzefitz_(~kritzefit@debian/kritzefitz)
2023-04-27 07:47:04 +0200biberu\(~biberu@user/biberu)
2023-04-27 07:47:29 +0200remedan_(~remedan@ip-94-112-0-18.bb.vodafone.cz)
2023-04-27 07:47:50 +0200elkcl_(~elkcl@broadband-37-110-27-252.ip.moscow.rt.ru)
2023-04-27 07:47:55 +0200son0p(~ff@181.136.122.143) (Killed (NickServ (GHOST command used by son0p-)))
2023-04-27 07:48:04 +0200 <dminuoso> Clinton[m]: "I don't want to have to load the whole table" sounds rather strange.
2023-04-27 07:48:23 +0200kritzefitz(~kritzefit@debian/kritzefitz) (Ping timeout: 255 seconds)
2023-04-27 07:48:23 +0200Goodbye_Vincent(cyvahl@freakshells.net) (Quit: Ping timeout (120 seconds))
2023-04-27 07:48:23 +0200dumptruckman(~dumptruck@143-42-239-71.ip.linodeusercontent.com) (Quit: ZNC - https://znc.in)
2023-04-27 07:48:23 +0200melonai(~mel@rnrd.eu) (Quit: ZNC 1.8.2 - https://znc.in)
2023-04-27 07:48:29 +0200 <dminuoso> It suggests a belief, that perhaps merely having a reference to a map implies copying its entire memory.
2023-04-27 07:48:42 +0200melonai(~mel@rnrd.eu)
2023-04-27 07:48:50 +0200Ristovsk-(~Ristovski@hellomouse/perf/ristovski)
2023-04-27 07:48:56 +0200[Ristovski](~Ristovski@hellomouse/perf/ristovski) (Write error: Broken pipe)
2023-04-27 07:48:56 +0200polyphem(~polyphem@ip-109-43-50-17.web.vodafone.de) (Ping timeout: 257 seconds)
2023-04-27 07:48:56 +0200remedan(~remedan@ip-94-112-0-18.bb.vodafone.cz) (Ping timeout: 257 seconds)
2023-04-27 07:48:56 +0200elkcl(~elkcl@broadband-37-110-27-252.ip.moscow.rt.ru) (Ping timeout: 257 seconds)
2023-04-27 07:48:56 +0200euandreh(~Thunderbi@189.6.18.7) (Ping timeout: 257 seconds)
2023-04-27 07:48:56 +0200elkcl_elkcl
2023-04-27 07:48:56 +0200euandreh1euandreh
2023-04-27 07:49:11 +0200biberu(~biberu@user/biberu) (Quit: ZNC - https://znc.in)
2023-04-27 07:49:11 +0200thegeekinside(~thegeekin@189.180.38.222) (Remote host closed the connection)
2023-04-27 07:49:18 +0200biberu\biberu
2023-04-27 07:49:23 +0200 <dminuoso> A perhaps better technique, is to not expose your StateT directly, and hide the access into the state and contained map behind an interface.
2023-04-27 07:49:36 +0200Maxdaman1us(~Maxdamant@user/maxdamantus)
2023-04-27 07:49:44 +0200harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
2023-04-27 07:50:00 +0200 <dminuoso> Say `newtype AppM a = AppM { StateT (Map K V) ... }` with some `lookup :: K -> AppM (Maybe V)`
2023-04-27 07:50:09 +0200dumptruckman(~dumptruck@143-42-239-71.ip.linodeusercontent.com)
2023-04-27 07:51:01 +0200thegeekinside(~thegeekin@189.180.38.222)
2023-04-27 07:51:04 +0200 <dminuoso> It goes further than what dmj` suggested, by hiding even the way state is implemented (say by using Control.Monad.State.Class). This has an added benefit that you can easily replace the StateT with say an IORef.
2023-04-27 07:51:43 +0200kritzefitz_kritzefitz
2023-04-27 07:51:50 +0200Maxdamantus(~Maxdamant@user/maxdamantus) (Ping timeout: 256 seconds)
2023-04-27 07:57:11 +0200talismanick(~user@2601:204:ef80:6c80::a8e2) (Ping timeout: 250 seconds)
2023-04-27 08:00:02 +0200michalz(~michalz@185.246.207.197)
2023-04-27 08:00:22 +0200mmhat(~mmh@p200300f1c701f14fee086bfffe095315.dip0.t-ipconnect.de)
2023-04-27 08:01:14 +0200gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-04-27 08:11:44 +0200npmania(~Thunderbi@121.128.226.31) (Ping timeout: 248 seconds)
2023-04-27 08:12:03 +0200npmania(~Thunderbi@138.199.21.242)
2023-04-27 08:13:59 +0200milia(~milia@user/milia) ()
2023-04-27 08:15:28 +0200Maxdaman1usMaxdamantus
2023-04-27 08:18:23 +0200echoreply(~echoreply@45.32.163.16) (Quit: WeeChat 2.8)
2023-04-27 08:18:26 +0200npmania(~Thunderbi@138.199.21.242) (Ping timeout: 250 seconds)
2023-04-27 08:19:42 +0200echoreply(~echoreply@45.32.163.16)
2023-04-27 08:20:10 +0200merijn(~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
2023-04-27 08:20:13 +0200srk_(~sorki@user/srk)
2023-04-27 08:22:24 +0200srk(~sorki@user/srk) (Ping timeout: 248 seconds)
2023-04-27 08:22:54 +0200srk_srk
2023-04-27 08:24:03 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 250 seconds)
2023-04-27 08:24:39 +0200chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2023-04-27 08:24:59 +0200chexum(~quassel@gateway/tor-sasl/chexum)
2023-04-27 08:33:04 +0200mncheck(~mncheck@193.224.205.254)
2023-04-27 08:38:03 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2023-04-27 08:39:16 +0200vglfr(~vglfr@2a0d:3344:1aaa:7010:183:3e8f:75eb:1bfc) (Ping timeout: 252 seconds)
2023-04-27 08:39:33 +0200vglfr(~vglfr@2a0d:3344:1aaa:7010:bc50:996f:da58:7890)
2023-04-27 08:43:00 +0200img(~img@user/img)
2023-04-27 08:50:49 +0200nick___(~nick@2600:8807:9103:b700:c41a:f850:bfc2:4f27) (Ping timeout: 252 seconds)
2023-04-27 08:50:55 +0200bgs(~bgs@212-85-160-171.dynamic.telemach.net)
2023-04-27 08:55:40 +0200kalj(~kalj@h-158-174-207-174.NA.cust.bahnhof.se)
2023-04-27 09:05:04 +0200vglfr(~vglfr@2a0d:3344:1aaa:7010:bc50:996f:da58:7890) (Ping timeout: 248 seconds)
2023-04-27 09:07:08 +0200lortabac(~lortabac@88.125.6.227)
2023-04-27 09:08:20 +0200oo_miguel(~Thunderbi@77-252-46-249.static.ip.netia.com.pl)
2023-04-27 09:10:01 +0200gurkenglas(~gurkengla@dynamic-046-114-179-150.46.114.pool.telefonica.de)
2023-04-27 09:13:08 +0200vglfr(~vglfr@88.155.54.209)
2023-04-27 09:14:58 +0200shriekingnoise(~shrieking@186.137.175.87) (Ping timeout: 252 seconds)
2023-04-27 09:15:46 +0200kenran(~user@user/kenran)
2023-04-27 09:16:12 +0200kenran(~user@user/kenran) (Remote host closed the connection)
2023-04-27 09:18:21 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 255 seconds)
2023-04-27 09:20:08 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2023-04-27 09:21:21 +0200acidjnk(~acidjnk@p200300d6e715c433193c078f58513b55.dip0.t-ipconnect.de)
2023-04-27 09:24:58 +0200jinsl-(~jinsl@123.117.251.25)
2023-04-27 09:25:05 +0200bgs(~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
2023-04-27 09:25:36 +0200jinsl(~jinsl@2408:8207:2552:dc20:211:32ff:fec8:6aea) (Ping timeout: 250 seconds)
2023-04-27 09:32:25 +0200mc47(~mc47@xmonad/TheMC47)
2023-04-27 09:34:55 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:c7a:f7d7:990c:5acb) (Remote host closed the connection)
2023-04-27 09:39:05 +0200merijn(~merijn@145.90.225.7)
2023-04-27 09:40:25 +0200vglfr(~vglfr@88.155.54.209) (Ping timeout: 240 seconds)
2023-04-27 09:40:52 +0200vglfr(~vglfr@2a0d:3344:1aaa:7010:64df:5e0:8934:df87)
2023-04-27 09:49:27 +0200hsw(~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net)
2023-04-27 09:53:57 +0200zer0bitz_(~zer0bitz@2001:2003:f443:d600:878:5e67:f0ac:a07d)
2023-04-27 09:55:27 +0200zer0bitz(~zer0bitz@2001:2003:f443:d600:d2a:4f3:eccf:87eb) (Ping timeout: 265 seconds)
2023-04-27 09:56:00 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2023-04-27 10:00:00 +0200zeenk(~zeenk@2a02:2f04:a20f:5200::fba)
2023-04-27 10:00:38 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2023-04-27 10:05:12 +0200_ht(~Thunderbi@82.174.52.28)
2023-04-27 10:11:34 +0200cfricke(~cfricke@user/cfricke)
2023-04-27 10:14:24 +0200kalj(~kalj@h-158-174-207-174.NA.cust.bahnhof.se) (Quit: Client closed)
2023-04-27 10:14:30 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2023-04-27 10:15:21 +0200chanceyan(~chanceyan@user/chanceyan)
2023-04-27 10:15:37 +0200mbuf(~Shakthi@49.207.178.186)
2023-04-27 10:16:32 +0200chanceyan(~chanceyan@user/chanceyan) (Client Quit)
2023-04-27 10:17:36 +0200vglfr(~vglfr@2a0d:3344:1aaa:7010:64df:5e0:8934:df87) (Ping timeout: 248 seconds)
2023-04-27 10:20:18 +0200vglfr(~vglfr@2a0d:3344:1aaa:7010:f119:b6e:3fb7:8f5e)
2023-04-27 10:22:32 +0200acidjnk(~acidjnk@p200300d6e715c433193c078f58513b55.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2023-04-27 10:24:02 +0200mmhat(~mmh@p200300f1c701f14fee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.8)
2023-04-27 10:27:09 +0200enoq(~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7)
2023-04-27 10:27:13 +0200oo_miguel(~Thunderbi@77-252-46-249.static.ip.netia.com.pl) (Quit: oo_miguel)
2023-04-27 10:34:29 +0200vglfr(~vglfr@2a0d:3344:1aaa:7010:f119:b6e:3fb7:8f5e) (Ping timeout: 246 seconds)
2023-04-27 10:34:42 +0200vglfr(~vglfr@88.155.54.209)
2023-04-27 10:35:14 +0200gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
2023-04-27 10:35:48 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9c1f:523e:3299:c913)
2023-04-27 10:36:51 +0200ubert(~Thunderbi@2a02:8109:abc0:6434:61ed:6a1e:f689:25d3)
2023-04-27 10:38:41 +0200harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving)
2023-04-27 10:39:43 +0200thegeekinside(~thegeekin@189.180.38.222) (Ping timeout: 276 seconds)
2023-04-27 10:40:10 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:9c1f:523e:3299:c913) (Ping timeout: 260 seconds)
2023-04-27 10:40:20 +0200chiselfu1echiselfuse
2023-04-27 10:42:20 +0200merijn(~merijn@145.90.225.7) (Ping timeout: 265 seconds)
2023-04-27 10:45:00 +0200ft(~ft@p4fc2a88b.dip0.t-ipconnect.de) (Quit: leaving)
2023-04-27 10:47:32 +0200mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2023-04-27 10:47:56 +0200gensyst(~gensyst@user/gensyst)
2023-04-27 10:48:35 +0200 <gensyst> Does mkWeakIORef execute the finalizing IO action on the same thread? https://hackage.haskell.org/package/base-4.18.0.0/docs/Data-IORef.html#v:mkWeakIORef
2023-04-27 10:48:49 +0200 <gensyst> (Otherwise, this will be kinda useless for C things that have to be closed on the same thread)
2023-04-27 10:49:14 +0200chele(~chele@user/chele)
2023-04-27 10:49:32 +0200 <[exa]> I wouldn't bet on that
2023-04-27 10:50:38 +0200 <[exa]> but well, why'd you need that?
2023-04-27 10:51:48 +0200 <geekosaur> bound threads exist in part for C code that uses TLS
2023-04-27 10:52:13 +0200 <geekosaur> but I don't know if weak refs obey that, as opposed to ForeignPtrs
2023-04-27 10:52:38 +0200 <[exa]> like, the commentary below about the IORef operation reordering doesn't leave much hope tbh
2023-04-27 10:52:48 +0200drdo(~drdo@bl14-14-164.dsl.telepac.pt) (Quit: Ping timeout (120 seconds))
2023-04-27 10:53:10 +0200drdo(~drdo@bl14-14-164.dsl.telepac.pt)
2023-04-27 10:55:25 +0200nate1(~nate@98.45.169.16)
2023-04-27 10:58:08 +0200 <gensyst> geekosaur, foreign pointers finalizer do execute on the same thread?
2023-04-27 10:58:25 +0200 <geekosaur> they should
2023-04-27 10:58:56 +0200 <geekosaur> if they don't I'd report it as a bug
2023-04-27 10:59:44 +0200 <gensyst> geekosaur, The whole issue is that I've encountered a C "close" function that doesn't return void. It returns an Int, so to handle it correctly (check nonzero) I went with resourcet - type stuff like mkWeakIORef.
2023-04-27 10:59:58 +0200 <gensyst> but now it turns out that won't work, for the different thread reason.
2023-04-27 11:00:15 +0200nate1(~nate@98.45.169.16) (Ping timeout: 265 seconds)
2023-04-27 11:00:26 +0200 <gensyst> The "safest" alternative, create "with" API isn't ideal because I want to open it for a stream and let GC handle closing
2023-04-27 11:00:48 +0200 <geekosaur> I wouldn't want to rely on GC to close in general, tbh
2023-04-27 11:00:58 +0200 <gensyst> Another way is to just ignore that int and create a void wrapper C function, but that's baaaad
2023-04-27 11:01:15 +0200 <geekosaur> you have no guarantees that GC swill run in a timely manner, so resources can stick around for a lot longer than you expect them to
2023-04-27 11:02:32 +0200 <gensyst> by what magic can they make foreignptr run on same thread, but mkWeakIORef not?
2023-04-27 11:03:07 +0200 <geekosaur> uh? weak refs are a lot different than strong ones, and are handled completely differently
2023-04-27 11:04:46 +0200 <geekosaur> this said it is entirely possible that they expect you to do cleanup yourself on the appropriate thread, for the reason I just said. relying on GC for external resource cleanup is pretty bad in general
2023-04-27 11:05:08 +0200 <geekosaur> in fact resourcet exists in large part to avoid that
2023-04-27 11:10:28 +0200 <jonathan_> Building with --pedantic allows me to find imports that aren't needed. Is there a way to remove these automatically? Going through things manually is a bit of a drag. I'm on vscode, using HLS.
2023-04-27 11:11:29 +0200jonathan_(~jonathan@h-176-10-144-60.NA.cust.bahnhof.se) (Quit: Leaving)
2023-04-27 11:14:02 +0200merijn(~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl)
2023-04-27 11:17:09 +0200jonathan_(~jonathan@h-176-10-144-60.NA.cust.bahnhof.se)
2023-04-27 11:20:07 +0200 <geekosaur> doesn't HLS have a code action for that?
2023-04-27 11:22:47 +0200vpan(~0@mail.elitnet.lt)
2023-04-27 11:30:39 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2023-04-27 11:31:00 +0200tremon(~tremon@83.80.159.219)
2023-04-27 11:36:02 +0200zeenk(~zeenk@2a02:2f04:a20f:5200::fba) (Remote host closed the connection)
2023-04-27 11:36:24 +0200zeenk(~zeenk@2a02:2f04:a20f:5200::7fe)
2023-04-27 11:36:59 +0200kalj(~kalj@h-158-174-207-174.NA.cust.bahnhof.se)
2023-04-27 11:41:54 +0200__monty__(~toonn@user/toonn)
2023-04-27 11:42:44 +0200czy(~user@host-140-25.ilcub310.champaign.il.us.clients.pavlovmedia.net) (Remote host closed the connection)
2023-04-27 11:48:20 +0200merijn(~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 246 seconds)
2023-04-27 12:02:53 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Ping timeout: 250 seconds)
2023-04-27 12:06:17 +0200 <gensyst> geekosaur, thanks for discussion
2023-04-27 12:06:38 +0200 <gensyst> What's the best Haskell matrix channel? Is it more active than this IRC chan?
2023-04-27 12:07:02 +0200 <geekosaur> this channel is by far the most active. but #haskell:matrix.org exists
2023-04-27 12:07:45 +0200 <geekosaur> there's also #haskell-space:matrix.org but that's a space / collection of channels
2023-04-27 12:08:25 +0200 <gensyst> interesting how you've stayed on irc
2023-04-27 12:08:30 +0200 <gensyst> what's the idea?
2023-04-27 12:09:14 +0200 <geekosaur> I'm actually on both. but I'm an op and IRC ops from matrix are really painful
2023-04-27 12:10:01 +0200 <geekosaur> so I'm on IRC for most things but there are a few IRC channels which are mostly populated by matrix denizens (and where I'm not an op) so I use matrix for those
2023-04-27 12:10:04 +0200xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 276 seconds)
2023-04-27 12:12:01 +0200merijn(~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl)
2023-04-27 12:14:52 +0200 <geekosaur> also I use matrix to monitor from my phone because IRC clients for Android are generally sucky and far too prone to disconnect on you
2023-04-27 12:15:10 +0200acidjnk(~acidjnk@p200300d6e715c433608801d841343278.dip0.t-ipconnect.de)
2023-04-27 12:16:01 +0200geekosaur[m]says hello from Element for Android
2023-04-27 12:16:25 +0200merijn(~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
2023-04-27 12:17:00 +0200vglfr(~vglfr@88.155.54.209) (Ping timeout: 260 seconds)
2023-04-27 12:19:05 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 240 seconds)
2023-04-27 12:20:31 +0200gensyst(~gensyst@user/gensyst) (Ping timeout: 240 seconds)
2023-04-27 12:21:46 +0200 <gry> geekosaur: there is quasseldroid, which runs a core elsewhere (you need to host it). I have found it amazingly friendly, including for an op.
2023-04-27 12:22:21 +0200 <geekosaur> I know about quassel, but I have no elsewhere to run the core/host
2023-04-27 12:22:30 +0200 <geekosaur> at least, not yet
2023-04-27 12:22:30 +0200 <gry> geekosaur: (it is free and open source, though unfortunately not written in haskell (it is in cpp and qt)).
2023-04-27 12:23:23 +0200 <geekosaur> and a big reason I still use IRC is I want greppable logs, which would be on the host with quassel 🙂
2023-04-27 12:23:51 +0200 <gry> geekosaur: i run it on a tiny vps with "networkpresence"; previously prgmr, scaleway, linode, and a home laptop with static ip and ports forwarded. to be fair, i like the latter option and when my hardware stops being a glorious mess, i most likely will go back to it.
2023-04-27 12:23:55 +0200nschoe(~q@2a01:e0a:8e:a190:68:b720:5bc4:5867)
2023-04-27 12:31:22 +0200 <gry> geekosaur: there is a web ui for log search of quassel
2023-04-27 12:31:44 +0200 <gry> geekosaur: or you can ssh and export to .txt files, then grep
2023-04-27 12:32:09 +0200 <gry> geekosaur: android's termux includes an awesome ssh client
2023-04-27 12:33:01 +0200drdo(~drdo@bl14-14-164.dsl.telepac.pt) (Ping timeout: 240 seconds)
2023-04-27 12:34:03 +0200drdo(~drdo@bl14-14-164.dsl.telepac.pt)
2023-04-27 12:39:04 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2023-04-27 12:41:18 +0200gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-04-27 12:45:10 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2023-04-27 12:45:16 +0200gemmaro(~user@240f:74:d1f0:1:ba1:e787:c9e:b1dc)
2023-04-27 12:53:24 +0200barcisz(~barcisz@79.191.75.215.ipv4.supernova.orange.pl)
2023-04-27 13:02:50 +0200vglfr(~vglfr@145.224.101.39)
2023-04-27 13:05:39 +0200kalj(~kalj@h-158-174-207-174.NA.cust.bahnhof.se) (Quit: Client closed)
2023-04-27 13:07:02 +0200vglfr(~vglfr@145.224.101.39) (Ping timeout: 246 seconds)
2023-04-27 13:09:50 +0200xff0x(~xff0x@ai098135.d.east.v6connect.net)
2023-04-27 13:24:03 +0200vglfr(~vglfr@145.224.101.39)
2023-04-27 13:31:18 +0200akegalj(~akegalj@89-164-123-55.dsl.iskon.hr)
2023-04-27 13:33:45 +0200pyook(~puke@user/puke) (Ping timeout: 240 seconds)
2023-04-27 13:41:50 +0200monoidal(~monoidal@2001:861:3f42:1b60:ceb5:92cc:e114:9355)
2023-04-27 13:43:44 +0200vglfr(~vglfr@145.224.101.39) (Ping timeout: 252 seconds)
2023-04-27 13:47:00 +0200oljenkins(~philipp@p5dec4bb3.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
2023-04-27 13:48:43 +0200Square(~Square4@user/square)
2023-04-27 13:50:53 +0200oljenkins(~philipp@p5dec4bb3.dip0.t-ipconnect.de)
2023-04-27 13:54:36 +0200nschoe(~q@2a01:e0a:8e:a190:68:b720:5bc4:5867) (Quit: Switching off)
2023-04-27 13:56:45 +0200akegalj(~akegalj@89-164-123-55.dsl.iskon.hr) (Ping timeout: 240 seconds)
2023-04-27 14:02:41 +0200vglfr(~vglfr@37.73.76.54)
2023-04-27 14:03:13 +0200terrorjack(~terrorjac@2a01:4f8:c17:87f8::) (Quit: The Lounge - https://thelounge.chat)
2023-04-27 14:05:06 +0200terrorjack(~terrorjac@2a01:4f8:c17:87f8::)
2023-04-27 14:10:48 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.8)
2023-04-27 14:14:12 +0200elain4(~textual@2601:5c0:8200:990:e188:657f:cc6c:2c3)
2023-04-27 14:15:45 +0200xff0x(~xff0x@ai098135.d.east.v6connect.net) (Ping timeout: 240 seconds)
2023-04-27 14:16:08 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
2023-04-27 14:18:21 +0200xff0x(~xff0x@178.255.149.135)
2023-04-27 14:23:52 +0200kalj(~kalj@h-158-174-207-174.NA.cust.bahnhof.se)
2023-04-27 14:30:56 +0200acidjnk(~acidjnk@p200300d6e715c433608801d841343278.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
2023-04-27 14:32:00 +0200vpan(~0@mail.elitnet.lt) (Ping timeout: 255 seconds)
2023-04-27 14:32:12 +0200kuribas(~user@ip-188-118-57-242.reverse.destiny.be)
2023-04-27 14:33:25 +0200 <eldritchcookie[m> can't believe i can't have a 9223372036854775808 long bytestring
2023-04-27 14:34:09 +0200Mohsen(~mohsen@196.221.18.142)
2023-04-27 14:34:28 +0200 <[exa]> eldritchcookie[m: where'd you put it?
2023-04-27 14:38:49 +0200vpan(~0@mail.elitnet.lt)
2023-04-27 14:39:13 +0200vpanGuest8211
2023-04-27 14:40:47 +0200titibandit(~titibandi@user/titibandit)
2023-04-27 14:40:51 +0200 <eldritchcookie[m> currently ? nowhere but the Bekenstein bound is really far away
2023-04-27 14:41:00 +0200vglfr(~vglfr@37.73.76.54) (Ping timeout: 255 seconds)
2023-04-27 14:41:19 +0200vglfr(~vglfr@37.73.76.54)
2023-04-27 14:42:35 +0200Guest8211vpan
2023-04-27 14:43:16 +0200 <[exa]> at that time we'll have new haskell with longer bytestrings
2023-04-27 14:43:50 +0200 <[exa]> (and new computers that might actually support arrays that long)
2023-04-27 14:47:15 +0200 <eldritchcookie[m> anyone here used effectful or a effect system with dynamic effects? how do you structure effects?
2023-04-27 14:47:41 +0200jmdaemon(~jmdaemon@user/jmdaemon) (Ping timeout: 256 seconds)
2023-04-27 14:47:53 +0200akegalj(~akegalj@89-164-123-55.dsl.iskon.hr)
2023-04-27 14:49:53 +0200Mohsen(~mohsen@196.221.18.142) (Quit: Leaving)
2023-04-27 14:50:35 +0200xff0x(~xff0x@178.255.149.135) (Ping timeout: 250 seconds)
2023-04-27 14:52:41 +0200xff0x(~xff0x@2405:6580:b080:900:cafc:e64d:9b94:1b2b)
2023-04-27 14:55:42 +0200 <eldritchcookie[m> also [exa] Int is only guaranteed to be able to represent up to 500 million so it could be possible to get a situation where you have a 500GB bytestring
2023-04-27 14:56:21 +0200 <eldritchcookie[m> and wow i don't want to be the person that will debug that
2023-04-27 14:56:56 +0200nate1(~nate@98.45.169.16)
2023-04-27 15:01:42 +0200nate1(~nate@98.45.169.16) (Ping timeout: 255 seconds)
2023-04-27 15:05:51 +0200Me-me(~Me-me@user/me-me) (Quit: Something has gone terribly, terribly wrong, that being that I'm not here any more.)
2023-04-27 15:09:33 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2023-04-27 15:10:49 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2023-04-27 15:18:05 +0200jle`(~jle`@cpe-23-240-75-236.socal.res.rr.com) (Ping timeout: 240 seconds)
2023-04-27 15:19:44 +0200 <eldritchcookie[m> does the unit type exist at runtime?
2023-04-27 15:20:10 +0200califax(~califax@user/califx) (Remote host closed the connection)
2023-04-27 15:20:12 +0200 <geekosaur> no types exist at runtime
2023-04-27 15:20:19 +0200jle`(~jle`@cpe-23-240-75-236.socal.res.rr.com)
2023-04-27 15:20:54 +0200 <eldritchcookie[m> sorry wrong question
2023-04-27 15:21:12 +0200 <eldritchcookie[m> is the unit value represented by anything at runtime?
2023-04-27 15:21:33 +0200 <eldritchcookie[m> or is it optmized away?
2023-04-27 15:22:24 +0200 <geekosaur> it can be optimized away if it can be proven to be strict, otherwise it's a pointer which may be to bottom/exception
2023-04-27 15:23:06 +0200 <eldritchcookie[m> what about sum types?
2023-04-27 15:23:25 +0200 <eldritchcookie[m> like data Ex = Cons1 | Cons2
2023-04-27 15:24:12 +0200 <geekosaur> same, they will be represented by pointers. in that case they can't be optimized away since you have to be able to distinguish constructors
2023-04-27 15:24:41 +0200 <geekosaur> if there's only one constructor it may be optimized away of proven strict at compile time
2023-04-27 15:24:44 +0200 <geekosaur> *if
2023-04-27 15:24:45 +0200 <jade[m]> https://youtu.be/I4lnCG18TaY
2023-04-27 15:25:08 +0200 <jade[m]> this gives an overview about how haskell on the surface translates into pointers/the heap layout
2023-04-27 15:26:03 +0200califax(~califax@user/califx)
2023-04-27 15:26:35 +0200pyook(~puke@user/puke)
2023-04-27 15:26:41 +0200 <eldritchcookie[m> say if i receive an Either String a but am expecting for it to be really rare to get the String should i throw an exception?
2023-04-27 15:26:49 +0200 <geekosaur> in general bottom complicates this kind of optimization
2023-04-27 15:27:46 +0200 <geekosaur> in general I would say avoid exceptions in pure code
2023-04-27 15:28:20 +0200 <eldritchcookie[m> it is in a monad
2023-04-27 15:28:43 +0200 <geekosaur> is it in IO, though?
2023-04-27 15:29:21 +0200 <eldritchcookie[m> yes
2023-04-27 15:29:31 +0200 <geekosaur> (even something like StateT s IO is not a great idea because you will lose the s on exception)
2023-04-27 15:30:44 +0200 <eldritchcookie[m> i am using effectful so i won't lose the state on exception
2023-04-27 15:31:25 +0200 <geekosaur> you're better off asking them, then
2023-04-27 15:32:06 +0200 <eldritchcookie[m> ok, could you explain why we should avoid exceptions in pure code?
2023-04-27 15:32:44 +0200 <jade[m]> because exceptions bad
2023-04-27 15:33:07 +0200 <geekosaur> because they can only be caught in IO and you will lose anything that was being done in the pure code, plus you have no control over when/where it happens
2023-04-27 15:33:11 +0200 <jade[m]> it's always better if functions are total
2023-04-27 15:33:12 +0200 <jade[m]> that's one of the main reasons we write functional code; safety
2023-04-27 15:33:27 +0200 <jade[m]> * we write purely functional code;
2023-04-27 15:33:28 +0200 <geekosaur> in particular throwIO is safer than throw
2023-04-27 15:33:39 +0200 <geekosaur> also because exceptions in pure code can leak out
2023-04-27 15:33:44 +0200 <geekosaur> as bottoms
2023-04-27 15:34:02 +0200califax(~califax@user/califx) (Remote host closed the connection)
2023-04-27 15:34:41 +0200 <geekosaur> so even if you try to catch them, if you don't fully force evaluation the exception may happen outside your exception handler
2023-04-27 15:35:14 +0200 <geekosaur> but fully forcing evaluation may mean doing more work than necessary
2023-04-27 15:35:16 +0200acidjnk(~acidjnk@p200300d6e715c4337c794ccf8cdd483c.dip0.t-ipconnect.de)
2023-04-27 15:37:00 +0200rf(~rf@2605:59c8:1604:2210:be1c:913:3607:51c7)
2023-04-27 15:38:48 +0200 <geekosaur> basically, you don't want to have to reason about bottoms outside of IO if you can help it, but if you use undefined/error/throw you're pretty much forcing yourself to have to reason about it
2023-04-27 15:39:33 +0200 <eldritchcookie[m> ok i am convinced, however assuming normal IO monad is it better for return an Either or to throw an exception with throwIO if there isn't a clear winner what are the pros and cons of each?
2023-04-27 15:39:35 +0200 <geekosaur> also I don't think effectful will save you here. ResourceT + MonadBaseControl would
2023-04-27 15:40:02 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-04-27 15:40:03 +0200wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-04-27 15:40:03 +0200wroathe(~wroathe@user/wroathe)
2023-04-27 15:40:17 +0200 <jade[m]> eldritchcookie[m: Avoid exceptions as much as possible and only use them at the highest level of composition (imo)
2023-04-27 15:40:39 +0200 <jade[m]> pure/total code is always preferable
2023-04-27 15:40:44 +0200 <geekosaur> I would say reserve exceptions for things you can't recover from, as much as possible
2023-04-27 15:40:47 +0200 <jade[m]> * always preferable and easier to maintain
2023-04-27 15:40:51 +0200 <jade[m]> mhm
2023-04-27 15:41:10 +0200 <geekosaur> if there is a way to recover, use Either or some other in-band failure signal
2023-04-27 15:42:12 +0200 <jade[m]> for this reason I really don't like `head` and usually use something along the lines of `fst <$> uncons`
2023-04-27 15:42:27 +0200 <jade[m]> or destructure directly
2023-04-27 15:42:28 +0200gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
2023-04-27 15:44:21 +0200 <eldritchcookie[m> basically i am using decode for the size of the message so i probably would need to exit my current level and reconnect isn't this the exact situation where i should use exceptions?
2023-04-27 15:45:16 +0200 <jade[m]> I'm not sure I understand the context but it sounds like a `Maybe`
2023-04-27 15:45:22 +0200 <geekosaur> ^
2023-04-27 15:46:23 +0200 <jade[m]> Specifically in combination with the Alternative instance if I understand right what you are trying to do
2023-04-27 15:47:45 +0200 <eldritchcookie[m> i have 2 programs communicating, in the function of send i first send a Int and then the message, in the receive i first read 8 bytes and try converting to a Int using decode, if this fails i don't think the situation is recoverable
2023-04-27 15:47:45 +0200vglfr(~vglfr@37.73.76.54) (Read error: Connection reset by peer)
2023-04-27 15:47:48 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 250 seconds)
2023-04-27 15:48:03 +0200califax(~califax@user/califx)
2023-04-27 15:48:07 +0200 <geekosaur> then you have a candidate for an exception
2023-04-27 15:49:37 +0200mc47(~mc47@xmonad/TheMC47)
2023-04-27 15:49:55 +0200cheater(~Username@user/cheater) (Ping timeout: 252 seconds)
2023-04-27 15:51:26 +0200Digitteknohippie(~user@user/digit)
2023-04-27 15:52:26 +0200Digit(~user@user/digit) (Ping timeout: 252 seconds)
2023-04-27 15:54:12 +0200califax(~califax@user/califx) (Remote host closed the connection)
2023-04-27 15:54:28 +0200califax(~califax@user/califx)
2023-04-27 15:58:23 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net)
2023-04-27 15:58:52 +0200gurkenglas(~gurkengla@dynamic-046-114-179-150.46.114.pool.telefonica.de) (Ping timeout: 276 seconds)
2023-04-27 15:59:06 +0200cheater(~Username@user/cheater)
2023-04-27 16:00:48 +0200thegeekinside(~thegeekin@189.180.38.222)
2023-04-27 16:00:59 +0200cheater_(~Username@user/cheater)
2023-04-27 16:03:23 +0200cheater(~Username@user/cheater) (Ping timeout: 248 seconds)
2023-04-27 16:03:26 +0200cheater_cheater
2023-04-27 16:03:44 +0200jinsun_(~jinsun@user/jinsun)
2023-04-27 16:03:44 +0200jinsunGuest9038
2023-04-27 16:03:44 +0200Guest9038(~jinsun@user/jinsun) (Killed (sodium.libera.chat (Nickname regained by services)))
2023-04-27 16:03:44 +0200jinsun_jinsun
2023-04-27 16:05:25 +0200mc47(~mc47@xmonad/TheMC47) (Ping timeout: 240 seconds)
2023-04-27 16:06:34 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2023-04-27 16:07:49 +0200shriekingnoise(~shrieking@186.137.175.87)
2023-04-27 16:12:58 +0200 <dminuoso> 15:33:36 geekosaur | [13:33:07] because they can only be caught in IO and you will lose anything that was being done in the pure code, plus you have no control over when/where it happens
2023-04-27 16:13:03 +0200 <dminuoso> I think there's something even worse than that.
2023-04-27 16:13:11 +0200 <dminuoso> pure exceptions are imprecise.
2023-04-27 16:13:51 +0200 <eldritchcookie[m> what do you mean by imprecise?
2023-04-27 16:14:27 +0200 <dminuoso> See https://www.microsoft.com/en-us/research/wp-content/uploads/1999/05/except.pdf
2023-04-27 16:15:03 +0200 <dminuoso> Consider something like `error "foo" + error "bar"`
2023-04-27 16:15:11 +0200 <dminuoso> Which error should you get?
2023-04-27 16:15:59 +0200 <dminuoso> Being able to catch only in IO is at best an inconvenience, but the imprecise semantics of them makes it hard to recover knowledge from the fact that you caught one.
2023-04-27 16:17:16 +0200 <dminuoso> Or have any behavior or recovery.
2023-04-27 16:18:04 +0200 <dmj`> johnw: A belated hello o/ :)
2023-04-27 16:19:03 +0200mc47(~mc47@xmonad/TheMC47)
2023-04-27 16:19:35 +0200 <dminuoso> While it's probably fine if you just take note of the error but propagate it outwards, any recovery will be imprecise and its behavior can change with something mundane as a different optimization level in GHC.
2023-04-27 16:20:43 +0200 <geekosaur> that's a large part of why I said you should only throw an exception if it's a situation you can't recover from
2023-04-27 16:22:25 +0200 <jade[m]> not to mention that it makes recovery more difficult and also less explicit
2023-04-27 16:22:47 +0200 <dminuoso> Well recovery in IO exceptions is just fine.
2023-04-27 16:23:02 +0200 <dminuoso> IO exceptions is a feature that is widely underused in my opinion.
2023-04-27 16:23:25 +0200mc47(~mc47@xmonad/TheMC47) (Ping timeout: 240 seconds)
2023-04-27 16:23:40 +0200 <dminuoso> I guess the desire to experiment with functional ideas made things like ExceptT/MonadError far more interesting
2023-04-27 16:25:31 +0200Sgeo(~Sgeo@user/sgeo)
2023-04-27 16:25:55 +0200 <dminuoso> That said
2023-04-27 16:26:02 +0200 <dminuoso> :t upon
2023-04-27 16:26:03 +0200 <lambdabot> (Indexable [Int] p, Data s, Data a, Applicative f) => (s -> a) -> p a (f a) -> s -> f s
2023-04-27 16:26:44 +0200 <dminuoso> This thing makes evil use of `error` to recover structural information from arbitrary data structures.
2023-04-27 16:26:46 +0200lortabac(~lortabac@88.125.6.227) (Quit: WeeChat 2.8)
2023-04-27 16:26:49 +0200 <dminuoso> > (2,4) & upon fst *~ 5
2023-04-27 16:26:51 +0200 <lambdabot> (10,4)
2023-04-27 16:28:59 +0200 <dminuoso> But for this particular use case its actually benign and safe.
2023-04-27 16:29:13 +0200 <dminuoso> Well. Sort of anyway.
2023-04-27 16:32:25 +0200merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 240 seconds)
2023-04-27 16:32:26 +0200mc47(~mc47@xmonad/TheMC47)
2023-04-27 16:34:59 +0200tcard(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Remote host closed the connection)
2023-04-27 16:35:12 +0200tcard(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
2023-04-27 16:35:38 +0200kalj(~kalj@h-158-174-207-174.NA.cust.bahnhof.se) (Ping timeout: 245 seconds)
2023-04-27 16:35:47 +0200Square2(~Square4@user/square)
2023-04-27 16:36:11 +0200mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2023-04-27 16:36:35 +0200mc47(~mc47@xmonad/TheMC47)
2023-04-27 16:37:46 +0200Square(~Square4@user/square) (Ping timeout: 252 seconds)
2023-04-27 16:40:11 +0200vglfr(~vglfr@145.224.101.39)
2023-04-27 16:40:28 +0200vglfr(~vglfr@145.224.101.39) (Read error: Connection reset by peer)
2023-04-27 16:40:43 +0200vglfr(~vglfr@37.73.72.183)
2023-04-27 16:44:53 +0200szkl(uid110435@id-110435.uxbridge.irccloud.com)
2023-04-27 16:52:20 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2023-04-27 16:53:56 +0200mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2023-04-27 17:07:43 +0200erisco(~erisco@d24-141-66-165.home.cgocable.net) (Ping timeout: 260 seconds)
2023-04-27 17:07:49 +0200ubert(~Thunderbi@2a02:8109:abc0:6434:61ed:6a1e:f689:25d3) (Remote host closed the connection)
2023-04-27 17:08:00 +0200erisco(~erisco@d24-141-66-165.home.cgocable.net)
2023-04-27 17:12:47 +0200jero98772(~jero98772@2800:484:1d84:9000::2)
2023-04-27 17:16:09 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:6cda:c72d:6503:1251)
2023-04-27 17:18:06 +0200nick___(~nick@50.86.118.19)
2023-04-27 17:23:59 +0200jonathan_(~jonathan@h-176-10-144-60.NA.cust.bahnhof.se) (Ping timeout: 246 seconds)
2023-04-27 17:26:02 +0200polyphem(~polyphem@ip-109-43-50-210.web.vodafone.de)
2023-04-27 17:27:26 +0200pharonix71(~pharonix7@user/pharonix71)
2023-04-27 17:33:08 +0200kuribas(~user@ip-188-118-57-242.reverse.destiny.be) (Quit: ERC (IRC client for Emacs 27.1))
2023-04-27 17:34:14 +0200Tuplanolla(~Tuplanoll@91-159-68-236.elisa-laajakaista.fi)
2023-04-27 17:44:09 +0200titibandit(~titibandi@user/titibandit) (Remote host closed the connection)
2023-04-27 17:44:11 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2023-04-27 17:48:26 +0200gensyst(~gensyst@user/gensyst)
2023-04-27 17:49:18 +0200mmhat(~mmh@p200300f1c701f14fee086bfffe095315.dip0.t-ipconnect.de)
2023-04-27 17:49:25 +0200 <gensyst> When attoparsec returns back unprocessed result (ByteString), was that ByteString provided efficiently with "unsafe" operations under the hood, or was it done inefficiently with O(n) copy operations?
2023-04-27 17:49:32 +0200xff0x(~xff0x@2405:6580:b080:900:cafc:e64d:9b94:1b2b) (Ping timeout: 246 seconds)
2023-04-27 17:49:55 +0200xff0x(~xff0x@ai098135.d.east.v6connect.net)
2023-04-27 17:52:52 +0200 <c_wraith> gensyst: probably neither?
2023-04-27 17:53:46 +0200Square2Square
2023-04-27 17:54:12 +0200 <c_wraith> gensyst: I'd expect it to use a call like drop on its latest input
2023-04-27 17:56:24 +0200 <c_wraith> gensyst: ByteString is intended for O(1) substring-like calls. The danger is accidentally holding on to a large buffer, not accidentally copying.
2023-04-27 17:58:35 +0200rburkholder(~blurb@96.45.2.121)
2023-04-27 17:59:02 +0200Square(~Square4@user/square) (Remote host closed the connection)
2023-04-27 18:06:01 +0200harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
2023-04-27 18:07:00 +0200vpan(~0@mail.elitnet.lt) (Quit: Leaving.)
2023-04-27 18:10:10 +0200 <gensyst> c_wraith, makes sense, thanks!
2023-04-27 18:14:29 +0200DigitteknohippieDigit
2023-04-27 18:20:41 +0200werneta(~werneta@2600:1700:4819:103f:d664:ab08:b618:a81)
2023-04-27 18:22:25 +0200vglfr(~vglfr@37.73.72.183) (Ping timeout: 255 seconds)
2023-04-27 18:22:49 +0200vglfr(~vglfr@2a0d:3344:1aaa:7010:b88c:e5df:9589:2051)
2023-04-27 18:27:25 +0200nick___(~nick@50.86.118.19) (Ping timeout: 240 seconds)
2023-04-27 18:28:59 +0200chele(~chele@user/chele) (Remote host closed the connection)
2023-04-27 18:29:02 +0200mbuf(~Shakthi@49.207.178.186) (Quit: Leaving)
2023-04-27 18:29:23 +0200merijn(~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl)
2023-04-27 18:30:50 +0200werneta(~werneta@2600:1700:4819:103f:d664:ab08:b618:a81) (Remote host closed the connection)
2023-04-27 18:32:02 +0200zeenk(~zeenk@2a02:2f04:a20f:5200::7fe) (Quit: Konversation terminated!)
2023-04-27 18:33:39 +0200polyphem(~polyphem@ip-109-43-50-210.web.vodafone.de) (Ping timeout: 255 seconds)
2023-04-27 18:34:23 +0200vglfr(~vglfr@2a0d:3344:1aaa:7010:b88c:e5df:9589:2051) (Ping timeout: 264 seconds)
2023-04-27 18:35:27 +0200merijn(~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 255 seconds)
2023-04-27 18:39:17 +0200hayden_(~hayden@158.123.160.43)
2023-04-27 18:39:35 +0200gemmaro(~user@240f:74:d1f0:1:ba1:e787:c9e:b1dc) (Remote host closed the connection)
2023-04-27 18:41:23 +0200vglfr(~vglfr@145.224.101.39)
2023-04-27 18:47:09 +0200hayden_(~hayden@158.123.160.43) (Remote host closed the connection)
2023-04-27 18:47:28 +0200hayden_(~hayden@158.123.160.43)
2023-04-27 18:48:04 +0200mmhat(~mmh@p200300f1c701f14fee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.8)
2023-04-27 18:49:42 +0200jonathan_(~jonathan@h-176-10-144-60.NA.cust.bahnhof.se)
2023-04-27 18:57:04 +0200szkl(uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2023-04-27 18:58:33 +0200nate1(~nate@98.45.169.16)
2023-04-27 19:01:09 +0200hayden_(~hayden@158.123.160.43) (Ping timeout: 255 seconds)
2023-04-27 19:03:21 +0200nate1(~nate@98.45.169.16) (Ping timeout: 255 seconds)
2023-04-27 19:04:26 +0200akegalj(~akegalj@89-164-123-55.dsl.iskon.hr) (Ping timeout: 246 seconds)
2023-04-27 19:07:45 +0200gensyst(~gensyst@user/gensyst) (Quit: Leaving)
2023-04-27 19:08:54 +0200hayden_(~hayden@158.123.160.43)
2023-04-27 19:10:43 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2023-04-27 19:11:35 +0200econo(uid147250@user/econo)
2023-04-27 19:12:00 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2023-04-27 19:15:25 +0200hayden_(~hayden@158.123.160.43) (Ping timeout: 240 seconds)
2023-04-27 19:17:45 +0200LMonty(~Thunderbi@ip178-67.outside.westmont.edu)
2023-04-27 19:18:15 +0200L29Ah(~L29Ah@wikipedia/L29Ah) ()
2023-04-27 19:27:10 +0200hayden_(~hayden@158.123.160.43)
2023-04-27 19:30:01 +0200justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 240 seconds)
2023-04-27 19:31:50 +0200hayden_(~hayden@158.123.160.43) (Ping timeout: 250 seconds)
2023-04-27 19:35:50 +0200wootehfoot(~wootehfoo@user/wootehfoot)
2023-04-27 19:37:36 +0200vglfr(~vglfr@145.224.101.39) (Read error: Connection reset by peer)
2023-04-27 19:39:59 +0200segfaultfizzbuzz(~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
2023-04-27 19:40:22 +0200 <segfaultfizzbuzz> "haskell requires gc" and "you can write hardware in haskell (e.g. output verilog/program an fpga" -- how are these compatible
2023-04-27 19:46:25 +0200 <yushyin> what's the problem?
2023-04-27 19:48:05 +0200 <segfaultfizzbuzz> it seems like it would be hard to have a "heap" for logic
2023-04-27 19:48:14 +0200vglfr(~vglfr@145.224.101.39)
2023-04-27 19:48:50 +0200remedan_(~remedan@ip-94-112-0-18.bb.vodafone.cz) (Read error: Connection reset by peer)
2023-04-27 19:50:25 +0200 <ddellacosta> I'm not much of an expert on this area of Haskell, but I think most of the time wrt the latter the Haskell program is outputting code to be fed into some other system, like with copilot https://copilot-language.github.io/
2023-04-27 19:50:55 +0200ph88(~ph88@213.23.78.154)
2023-04-27 19:51:01 +0200 <segfaultfizzbuzz> well okay, but it seems like if you are outputting logic then there would be rather strict limits on "allocation" and the like,...
2023-04-27 19:52:14 +0200 <yushyin> do you have a specific project in mind? i can think of clash, which is a high level description language (an eDSL in haskell) to generate verilog/vhdl
2023-04-27 19:52:25 +0200 <segfaultfizzbuzz> more that i am just curious to understand
2023-04-27 19:56:19 +0200justsomeguy(~justsomeg@user/justsomeguy)
2023-04-27 20:01:12 +0200 <monochrom> jhc proves that Haskell doesn't require GC. >:)
2023-04-27 20:02:27 +0200 <Hecate> segfaultfizzbuzz: Hardware description language is not C code for micro-controllers, it just describes Hardware. It's not for running Haskell code on it
2023-04-27 20:02:41 +0200 <monochrom> But generally, ignore Internet hearsay.
2023-04-27 20:03:16 +0200vglfr(~vglfr@145.224.101.39) (Ping timeout: 276 seconds)
2023-04-27 20:04:19 +0200 <monochrom> But yeah you can make an EDSL to be a hardware description language.
2023-04-27 20:04:47 +0200 <monochrom> At which point the EDSL can live in pretty much any half-decent language.
2023-04-27 20:04:48 +0200segfaultfizzbuzz(~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 248 seconds)
2023-04-27 20:05:16 +0200 <monochrom> And if it's DSL without E, it can be coded up in pretty much any language, half-decent or not.
2023-04-27 20:05:49 +0200 <monochrom> Definition: A "half-decent" language is one that is good enough to admit EDSLs. >:)
2023-04-27 20:06:07 +0200vglfr(~vglfr@145.224.101.39)
2023-04-27 20:06:11 +0200monoidal(~monoidal@2001:861:3f42:1b60:ceb5:92cc:e114:9355) (Quit: Client closed)
2023-04-27 20:06:15 +0200 <monochrom> (Counterexample: That rules out C. >:) )
2023-04-27 20:06:59 +0200 <monochrom> (OK OK, I forgot that CPP could help. I saw a C macro library that let you write Pascal...)
2023-04-27 20:08:31 +0200harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving)
2023-04-27 20:09:45 +0200gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-04-27 20:10:37 +0200hayden_(~hayden@158.123.160.43)
2023-04-27 20:14:56 +0200vglfr(~vglfr@145.224.101.39) (Ping timeout: 254 seconds)
2023-04-27 20:17:37 +0200hayden_(~hayden@158.123.160.43) (Ping timeout: 255 seconds)
2023-04-27 20:18:28 +0200markasoftware(~quassel@107.161.26.124) (Quit: No Ping reply in 180 seconds.)
2023-04-27 20:18:31 +0200barcisz(~barcisz@79.191.75.215.ipv4.supernova.orange.pl) (Quit: Connection closed)
2023-04-27 20:18:50 +0200barcisz(~barcisz@79.191.75.215.ipv4.supernova.orange.pl)
2023-04-27 20:19:44 +0200markasoftware(~quassel@107.161.26.124)
2023-04-27 20:19:56 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2023-04-27 20:25:37 +0200mauke(~mauke@user/mauke) (Quit: off)
2023-04-27 20:30:20 +0200bilegeek(~bilegeek@2600:1008:b019:587b:c252:9330:8577:b9b1)
2023-04-27 20:32:00 +0200ph88(~ph88@213.23.78.154) (Quit: Leaving)
2023-04-27 20:32:23 +0200merijn(~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl)
2023-04-27 20:32:32 +0200LMonty(~Thunderbi@ip178-67.outside.westmont.edu) (Quit: LMonty)
2023-04-27 20:32:55 +0200jinsl-(~jinsl@123.117.251.25) (Ping timeout: 255 seconds)
2023-04-27 20:33:01 +0200mauke(~mauke@user/mauke)
2023-04-27 20:33:38 +0200jinsl(~jinsl@123.117.251.25)
2023-04-27 20:35:32 +0200alexherbo2(~alexherbo@2a02-842a-8180-4601-196c-66e3-323f-365c.rev.sfr.net)
2023-04-27 20:37:37 +0200ft(~ft@p4fc2a88b.dip0.t-ipconnect.de)
2023-04-27 20:49:53 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2023-04-27 20:51:09 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2023-04-27 20:53:36 +0200Joao003(~Joao003@2804:840:8309:0:bd3a:fbd2:7590:2609)
2023-04-27 20:54:06 +0200 <Joao003> Any equivalents to APL's fork construct?
2023-04-27 21:00:21 +0200vglfr(~vglfr@2a0d:3344:1aaa:7010:b88c:e5df:9589:2051)
2023-04-27 21:00:30 +0200 <eldritchcookie[m> what does it do?
2023-04-27 21:01:22 +0200Inst_(~Inst@2601:6c4:4081:54f0:e436:a84f:8a3c:7b5)
2023-04-27 21:02:18 +0200eggplant_(~Eggplanta@2600:1700:38c5:d800:6cda:c72d:6503:1251)
2023-04-27 21:02:25 +0200 <mauke> liftA2
2023-04-27 21:04:43 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:6cda:c72d:6503:1251) (Ping timeout: 248 seconds)
2023-04-27 21:04:43 +0200Inst(~Inst@2601:6c4:4081:54f0:e436:a84f:8a3c:7b5) (Ping timeout: 248 seconds)
2023-04-27 21:05:16 +0200u0_a202(~u0_a202@47.60.32.137)
2023-04-27 21:05:45 +0200merijn(~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 255 seconds)
2023-04-27 21:05:50 +0200Benzi-Junior(~BenziJuni@dsl-149-66-52.hive.is) (Ping timeout: 265 seconds)
2023-04-27 21:06:01 +0200B-J(~BenziJuni@dsl-149-64-86.hive.is)
2023-04-27 21:06:23 +0200hueso(~root@user/hueso) (Quit: No Ping reply in 210 seconds.)
2023-04-27 21:07:43 +0200hueso(~root@user/hueso)
2023-04-27 21:09:25 +0200vglfr(~vglfr@2a0d:3344:1aaa:7010:b88c:e5df:9589:2051) (Read error: Connection reset by peer)
2023-04-27 21:10:05 +0200vglfr(~vglfr@145.224.101.39)
2023-04-27 21:13:38 +0200nick___(~nick@98.186.193.170)
2023-04-27 21:13:58 +0200u0_a202dom0
2023-04-27 21:15:45 +0200segfaultfizzbuzz(~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
2023-04-27 21:16:39 +0200Digitteknohippie(~user@user/digit)
2023-04-27 21:16:59 +0200justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 256 seconds)
2023-04-27 21:17:51 +0200Digit(~user@user/digit) (Ping timeout: 241 seconds)
2023-04-27 21:18:12 +0200 <fr33domlover> o/ If I use an acid-state "database" from a single thread, so never concurrent queries/updates, does it still make sense to use acid-state? Or is there some less powerful but more efficient-for-my-use-case option?
2023-04-27 21:20:21 +0200 <fr33domlover> (More precisely, queries might be concurrent but updates only from a single thread)
2023-04-27 21:20:22 +0200dom0(~u0_a202@47.60.32.137) (Remote host closed the connection)
2023-04-27 21:21:42 +0200Joao003(~Joao003@2804:840:8309:0:bd3a:fbd2:7590:2609) (Quit: Leaving)
2023-04-27 21:21:43 +0200vglfr(~vglfr@145.224.101.39) (Read error: Connection reset by peer)
2023-04-27 21:23:22 +0200vglfr(~vglfr@145.224.101.39)
2023-04-27 21:23:25 +0200DigitteknohippieDigit
2023-04-27 21:26:23 +0200 <c_wraith> I wouldn't use acid-state under any circumstances
2023-04-27 21:27:17 +0200vglfr(~vglfr@145.224.101.39) (Read error: Connection reset by peer)
2023-04-27 21:29:31 +0200remedan(~remedan@ip-94-112-0-18.bb.vodafone.cz)
2023-04-27 21:30:18 +0200pavonia(~user@user/siracusa)
2023-04-27 21:31:04 +0200mei(~mei@user/mei) (Remote host closed the connection)
2023-04-27 21:31:45 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2023-04-27 21:34:12 +0200eggplant_(~Eggplanta@2600:1700:38c5:d800:6cda:c72d:6503:1251) (Remote host closed the connection)
2023-04-27 21:34:35 +0200accord(uid568320@id-568320.hampstead.irccloud.com)
2023-04-27 21:39:08 +0200mei(~mei@user/mei)
2023-04-27 21:47:44 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)
2023-04-27 21:49:56 +0200hugo-(znc@verdigris.lysator.liu.se) (Ping timeout: 246 seconds)
2023-04-27 21:51:12 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2023-04-27 21:51:50 +0200 <somerandomnick> f​r33domlover: from my experience in GHC 8, `readMVar` is already very efficient, although atomic
2023-04-27 21:53:28 +0200 <somerandomnick> @index readMVar
2023-04-27 21:53:28 +0200 <lambdabot> Control.Concurrent.MVar, Control.Concurrent
2023-04-27 21:56:32 +0200pharonix71(~pharonix7@user/pharonix71) (Remote host closed the connection)
2023-04-27 21:57:12 +0200pharonix71(~pharonix7@user/pharonix71)
2023-04-27 21:57:24 +0200justsomeguy(~justsomeg@user/justsomeguy)
2023-04-27 21:58:20 +0200bratwurst(~dfadsva@2604:3d09:207f:f650::9c24)
2023-04-27 21:58:55 +0200juri_(~juri@84-19-175-179.pool.ovpn.com) (Ping timeout: 260 seconds)
2023-04-27 21:59:28 +0200segfaultfizzbuzz(~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 248 seconds)
2023-04-27 21:59:42 +0200juri_(~juri@79.140.114.190)
2023-04-27 21:59:46 +0200zeenk(~zeenk@2a02:2f04:a20f:5200::7fe)
2023-04-27 22:05:28 +0200nick3(~nick@98.186.193.170)
2023-04-27 22:07:52 +0200hugo-(znc@verdigris.lysator.liu.se)
2023-04-27 22:08:00 +0200nick___(~nick@98.186.193.170) (Ping timeout: 248 seconds)
2023-04-27 22:16:55 +0200hochata(~user@user/hochata)
2023-04-27 22:17:46 +0200jonathan_(~jonathan@h-176-10-144-60.NA.cust.bahnhof.se) (Ping timeout: 255 seconds)
2023-04-27 22:18:45 +0200juri_(~juri@79.140.114.190) (Read error: Connection reset by peer)
2023-04-27 22:23:56 +0200 <jade[m]> is haskell.org down?
2023-04-27 22:24:21 +0200 <mauke> https://www.haskell.org/ loads for me
2023-04-27 22:24:34 +0200juri_(~juri@79.140.114.190)
2023-04-27 22:26:15 +0200Square2(~Square4@user/square)
2023-04-27 22:27:20 +0200 <jade[m]> oddly enough it seems to be an ISP problem
2023-04-27 22:27:29 +0200 <jade[m]> with mobile data everything loads fine, whereas with wifi ~50% of domains seem not to resolve properly
2023-04-27 22:30:39 +0200jmdaemon(~jmdaemon@user/jmdaemon)
2023-04-27 22:32:59 +0200cheater_(~Username@user/cheater)
2023-04-27 22:34:41 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:6cda:c72d:6503:1251)
2023-04-27 22:35:01 +0200cheater(~Username@user/cheater) (Ping timeout: 240 seconds)
2023-04-27 22:35:06 +0200cheater_cheater
2023-04-27 22:36:56 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 240 seconds)
2023-04-27 22:38:19 +0200Cale(~cale@cpe80d04ade0a03-cm80d04ade0a01.cpe.net.cable.rogers.com) (Remote host closed the connection)
2023-04-27 22:39:07 +0200eggplantade(~Eggplanta@2600:1700:38c5:d800:6cda:c72d:6503:1251) (Ping timeout: 248 seconds)
2023-04-27 22:39:13 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2023-04-27 22:41:56 +0200slack1256(~slack1256@186.11.11.208)
2023-04-27 22:43:03 +0200 <slack1256> I have been playing with monomer. I think this is it, this is the UI library I had been waiting for.
2023-04-27 22:43:17 +0200 <slack1256> Does anyone has experience running it on windows? Is it even possible?
2023-04-27 22:45:21 +0200 <jade[m]> it says it's cross platform
2023-04-27 22:46:31 +0200 <slack1256> Yeah, but with UIs I would like more recent reports. The build uses GLEW and SDL on linux. Those must be a pain to look for on windows.
2023-04-27 22:47:28 +0200Square2Square
2023-04-27 22:50:15 +0200cheater_(~Username@user/cheater)
2023-04-27 22:52:25 +0200cheater(~Username@user/cheater) (Ping timeout: 240 seconds)
2023-04-27 22:52:32 +0200cheater_cheater
2023-04-27 22:57:43 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2023-04-27 22:59:20 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2023-04-27 22:59:29 +0200rf(~rf@2605:59c8:1604:2210:be1c:913:3607:51c7) (Remote host closed the connection)
2023-04-27 23:00:03 +0200nate1(~nate@98.45.169.16)
2023-04-27 23:00:28 +0200juri_(~juri@79.140.114.190) (Read error: Connection reset by peer)
2023-04-27 23:01:02 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2023-04-27 23:01:30 +0200juri_(~juri@79.140.114.190)
2023-04-27 23:02:46 +0200merijn(~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl)
2023-04-27 23:04:31 +0200nate1(~nate@98.45.169.16) (Ping timeout: 240 seconds)
2023-04-27 23:07:01 +0200nick4(~nick@98.186.193.170)
2023-04-27 23:07:12 +0200juri_(~juri@79.140.114.190) (Ping timeout: 250 seconds)
2023-04-27 23:07:33 +0200_ht(~Thunderbi@82.174.52.28) (Quit: _ht)
2023-04-27 23:08:30 +0200merijn(~merijn@c-001-001-006.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds)
2023-04-27 23:08:36 +0200nick3(~nick@98.186.193.170) (Ping timeout: 255 seconds)
2023-04-27 23:11:25 +0200dumarrr^(~dumarrr@c-76-105-96-13.hsd1.ga.comcast.net)
2023-04-27 23:15:13 +0200zeenk(~zeenk@2a02:2f04:a20f:5200::7fe) (Quit: Konversation terminated!)
2023-04-27 23:15:28 +0200 <jackdk> Everything is a pain on Windows though.
2023-04-27 23:16:45 +0200mncheck(~mncheck@193.224.205.254) (Ping timeout: 240 seconds)
2023-04-27 23:19:24 +0200gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
2023-04-27 23:22:12 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2023-04-27 23:26:54 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2023-04-27 23:27:35 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Ping timeout: 260 seconds)
2023-04-27 23:28:09 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2023-04-27 23:28:32 +0200machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 248 seconds)
2023-04-27 23:28:47 +0200Joao003(~Joao003@2804:840:8309:0:bd3a:fbd2:7590:2609)
2023-04-27 23:29:16 +0200 <Joao003> Is there an equivalent for the S combinator, and in what library is it?
2023-04-27 23:30:37 +0200 <jackdk> S is (<*>) for the ((->) r) applicative, isn't it? (Don't quote me here)
2023-04-27 23:30:53 +0200 <Rembane> There should be one among the birds
2023-04-27 23:30:55 +0200 <jade[m]> can't you just s f g x = f x (g x)?
2023-04-27 23:31:20 +0200 <hpc> > (f <*> g) x
2023-04-27 23:31:22 +0200 <lambdabot> error:
2023-04-27 23:31:22 +0200 <lambdabot> • Could not deduce (Show a0) arising from a use of ‘f’
2023-04-27 23:31:22 +0200 <lambdabot> from the context: FromExpr t
2023-04-27 23:31:24 +0200 <jade[m]> also wait isn't that `>>=` on `(->) r`
2023-04-27 23:31:45 +0200 <jade[m]> > (f >>= g) x
2023-04-27 23:31:46 +0200 <lambdabot> error:
2023-04-27 23:31:46 +0200 <lambdabot> • Could not deduce (FromExpr a0) arising from a use of ‘f’
2023-04-27 23:31:46 +0200 <lambdabot> from the context: FromExpr t
2023-04-27 23:31:55 +0200 <somerandomnick> @pl \ f g x -> f x (g x)
2023-04-27 23:31:55 +0200 <lambdabot> ap
2023-04-27 23:31:58 +0200 <jackdk> % :t (<*>) @ ((->) _)
2023-04-27 23:31:58 +0200 <yahb2> <interactive>:1:11: error: parse error on input ‘->’
2023-04-27 23:32:12 +0200 <somerandomnick> @type ap
2023-04-27 23:32:13 +0200 <lambdabot> Monad m => m (a -> b) -> m a -> m b
2023-04-27 23:32:28 +0200 <somerandomnick> @type (>>=)
2023-04-27 23:32:29 +0200 <lambdabot> Monad m => m a -> (a -> m b) -> m b
2023-04-27 23:32:39 +0200 <jackdk> Ah, so it is what I said: `(<*>)` on the `((->) r)` applicative
2023-04-27 23:32:45 +0200 <somerandomnick> 🙏
2023-04-27 23:32:48 +0200slack1256(~slack1256@186.11.11.208) (Remote host closed the connection)
2023-04-27 23:32:52 +0200 <jade[m]> mh
2023-04-27 23:33:07 +0200 <somerandomnick> @type (<*>)
2023-04-27 23:33:07 +0200 <ncf> >>= is the same but with the arguments to f flipped
2023-04-27 23:33:08 +0200 <lambdabot> Applicative f => f (a -> b) -> f a -> f b
2023-04-27 23:33:24 +0200 <jade[m]> ncf: ah yeah, was thinking of that
2023-04-27 23:33:36 +0200Kuttenbrunzer(~Kuttenbru@2a02:8108:8b80:1d48::28da)
2023-04-27 23:34:00 +0200 <jade[m]> I remember because I did some shenaningans with `(>>= (==))` as a fixed point thingy before
2023-04-27 23:35:11 +0200ddellacosta(~ddellacos@static-198-44-136-216.cust.tzulo.com) (Quit: WeeChat 3.8)
2023-04-27 23:37:30 +0200trev(~trev@user/trev) (Quit: trev)
2023-04-27 23:37:43 +0200bilegeek_(~bilegeek@225.sub-174-208-233.myvzw.com)
2023-04-27 23:38:27 +0200zeenk(~zeenk@2a02:2f04:a20f:5200::7fe)
2023-04-27 23:38:52 +0200ddellacosta(~ddellacos@static-198-44-136-216.cust.tzulo.com)
2023-04-27 23:40:08 +0200bilegeek(~bilegeek@2600:1008:b019:587b:c252:9330:8577:b9b1) (Ping timeout: 250 seconds)
2023-04-27 23:41:49 +0200Wauchope(~Wauchope@cpc86639-seve26-2-0-cust168.13-3.cable.virginm.net)
2023-04-27 23:42:05 +0200shriekingnoise(~shrieking@186.137.175.87) (Quit: Quit)
2023-04-27 23:42:12 +0200Joao003(~Joao003@2804:840:8309:0:bd3a:fbd2:7590:2609) (Quit: Leaving)
2023-04-27 23:42:26 +0200 <Wauchope> Hi, forgive the probably simple question: I've a list of objects containing various elements
2023-04-27 23:42:42 +0200 <Wauchope> I'm trying to sort the list by the first element, a string
2023-04-27 23:42:43 +0200 <monochrom> "f (a->b) -> f a -> f b" and "(a -> f b) -> f a -> f b" are subtly very different. :)
2023-04-27 23:42:54 +0200barcisz(~barcisz@79.191.75.215.ipv4.supernova.orange.pl) (Quit: Connection closed)
2023-04-27 23:43:11 +0200barcisz(~barcisz@79.191.75.215.ipv4.supernova.orange.pl)
2023-04-27 23:43:21 +0200 <monochrom> Is there an example? I don't know what "sort by the first element" means.
2023-04-27 23:43:33 +0200 <Wauchope> sortBy (<here i need somethign to sort by the name attribute of each city>) unorderedObjects is where i'm at
2023-04-27 23:43:58 +0200 <Wauchope> So say, data someObjectHere { name = String .... }, I'm trying to sort a list of someObjectHere by name
2023-04-27 23:44:27 +0200 <jade[m]> sortBy (comparing `on` name) cities?
2023-04-27 23:44:54 +0200 <ncf> sortOn name
2023-04-27 23:45:14 +0200 <jade[m]> wait, where does sortOn come from?
2023-04-27 23:45:18 +0200 <Wauchope> aha, that was much simpler than i thought wasn't aware of sortOn
2023-04-27 23:46:03 +0200 <Wauchope> thank you!
2023-04-27 23:46:53 +0200 <jade[m]> * ``sortBy (compare `on` name) cities``?
2023-04-27 23:47:27 +0200 <monochrom> Data.List has sortOn
2023-04-27 23:48:22 +0200 <jade[m]> neat, I've always been using sortBy (compare `on` f) or sortBy (comparing f) which are equivalent afaik
2023-04-27 23:48:28 +0200 <monochrom> sortBy (comparing `on` name) cities is also right
2023-04-27 23:48:42 +0200 <monochrom> Err wait, no.
2023-04-27 23:49:18 +0200 <monochrom> Haha OK, comparing name, compare `on` name
2023-04-27 23:49:45 +0200 <monochrom> "This is getting out of hand. Now there are two of them!"
2023-04-27 23:50:14 +0200 <geekosaur> comparing came first, then was generalized to on
2023-04-27 23:50:15 +0200 <jade[m]> haha
2023-04-27 23:51:29 +0200 <jade[m]> isn't `on` also some "formal" combinator?
2023-04-27 23:51:46 +0200segfaultfizzbuzz(~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
2023-04-27 23:53:42 +0200 <Rembane> It's a bird!
2023-04-27 23:54:19 +0200Guest75(~Guest75@95.91.231.168)
2023-04-27 23:54:35 +0200Guest42(~Guest42@95.91.231.168)
2023-04-27 23:54:47 +0200 <monochrom> @type on
2023-04-27 23:54:48 +0200 <lambdabot> (b -> b -> c) -> (a -> b) -> a -> a -> c
2023-04-27 23:55:36 +0200 <monochrom> (b -> b -> c) -> (c -> n, b -> c) -> c -> n -> n
2023-04-27 23:55:47 +0200 <monochrom> err wait no, doesn't work that way haha
2023-04-27 23:55:48 +0200enoq(~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq)
2023-04-27 23:55:48 +0200 <Rembane> Psi combinator according to this page: https://hackage.haskell.org/package/data-aviary-0.4.0/docs/Data-Aviary-Birds.html
2023-04-27 23:55:48 +0200 <somerandomnick> @type \ f g x -> f x (g x)
2023-04-27 23:55:49 +0200 <lambdabot> (t1 -> t2 -> t3) -> (t1 -> t2) -> t1 -> t3
2023-04-27 23:56:06 +0200 <monochrom> (Trying poorly to make a pun on BBC and CNN)
2023-04-27 23:56:38 +0200 <monochrom> "psi bird" sounds very sus.
2023-04-27 23:56:58 +0200jade[m]uploaded an image: (24KiB) < https://libera.ems.host/_matrix/media/v3/download/matrix.org/vkGEOJJFTePopxCcIKSlqgbM/SmartSelect_… >
2023-04-27 23:56:59 +0200 <jade[m]> Seems to be a specific case of this more general bird?
2023-04-27 23:57:22 +0200 <somerandomnick> @compose djinn type on
2023-04-27 23:57:23 +0200 <lambdabot> f a b c _ = a (b c) (b c)
2023-04-27 23:57:32 +0200 <somerandomnick> nvm
2023-04-27 23:58:45 +0200michalz(~michalz@185.246.207.197) (Remote host closed the connection)
2023-04-27 23:59:34 +0200 <Rembane> This is a very particular rabbithole: https://raw.githubusercontent.com/codereport/Content/main/Publications/Combinatory_Logic_and_Combi…
2023-04-27 23:59:57 +0200 <ncf> it's `flip contramap` for an appropriate contravariant functor