2022/12/21

2022-12-21 00:03:08 +0100paulpaul1076(~textual@95-29-5-111.broadband.corbina.ru) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-12-21 00:04:16 +0100 <dsal> can I make a function in .ghci?
2022-12-21 00:04:34 +0100grnman_(~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net)
2022-12-21 00:05:48 +0100 <geekosaur> looks like it, yes
2022-12-21 00:05:56 +0100 <monochrom> Yes, just add a line like "f x = x + 1"
2022-12-21 00:06:02 +0100 <geekosaur> I even used :{ :} for a multi-liner
2022-12-21 00:06:22 +0100 <dsal> Hmm... I was trying some of that stuff and failing. I've got a bunch of complication here, though.
2022-12-21 00:07:16 +0100 <monochrom> I think it has to because things like :set prompt-function accepts Haskell functions.
2022-12-21 00:07:34 +0100 <hpc> the perl hacker in me thinks that feature is excellent, and the software packager in me says just write/install your own ghci-utils package and pretend you never discovered that feature
2022-12-21 00:07:50 +0100 <monochrom> Err nevermind, you could write an in-situ lambda for that, heh.
2022-12-21 00:08:22 +0100mikoto-chan(~mikoto-ch@85-76-117-13-nat.elisa-mobile.fi) (Ping timeout: 265 seconds)
2022-12-21 00:08:24 +0100 <monochrom> I think it has to because the devs are too lazy to write a restrictive parser for .ghci :)
2022-12-21 00:09:19 +0100 <hpc> it's in the tradition of all other rc files
2022-12-21 00:09:47 +0100 <hpc> .vimrc is just a bunch of stuff that happens at the start of running it, exactly as if you typed it in command mode
2022-12-21 00:10:12 +0100 <monochrom> Conjecture: xmonad was written by a haskell hacker who's a perl/lisp hacker at heart. >:)
2022-12-21 00:10:29 +0100 <hpc> .bashrc is the same
2022-12-21 00:10:47 +0100 <geekosaur> nobody may ever know, since spencer has vanished…
2022-12-21 00:11:40 +0100 <monochrom> The tradition lives on in why json was made json. >:)
2022-12-21 00:12:16 +0100 <monochrom> javascript already has eval() so a "data" format just needs to be an rc format.
2022-12-21 00:12:18 +0100fizbin(~fizbin@user/fizbin) (Ping timeout: 252 seconds)
2022-12-21 00:13:53 +0100 <hpc> sort of
2022-12-21 00:14:08 +0100 <hpc> there are valid json values that eval will error on
2022-12-21 00:16:03 +0100 <hpc> hmm, maybe not anymore though? in any event wikipedia says it took until 2019 for that to happen
2022-12-21 00:17:10 +0100 <monochrom> I may have guessed without researching the actual history.
2022-12-21 00:17:27 +0100eikke(~NicolasT@user/NicolasT) (Ping timeout: 260 seconds)
2022-12-21 00:17:52 +0100 <hpc> you're probably right about the inspiration, apparently the only thing that ever failed was literal unicode characters
2022-12-21 00:18:04 +0100 <monochrom> Ah
2022-12-21 00:18:21 +0100 <hpc> other fun trivia from that page: yaml wasn't a json superset until version 1.2
2022-12-21 00:18:45 +0100 <c_wraith> naming a key in a json object "__proto__" causes eval to have issues. or at least did last I checked
2022-12-21 00:19:15 +0100 <monochrom> Greenspun's law but millenial: Every large program contains a lisp^H^H^H^H javscript implementation >:)
2022-12-21 00:20:09 +0100 <hpc> javascript was originally based on clojure, and then due to netscape management decisions gained a C-like syntax
2022-12-21 00:20:25 +0100morb(~morb@pool-72-80-94-112.nycmny.fios.verizon.net)
2022-12-21 00:20:38 +0100 <hpc> and so much stuff ships as electron apps that i think we can shorten greenspun's law to "every program is large"
2022-12-21 00:20:44 +0100Guest96(~Guest96@host-87-16-161-253.retail.telecomitalia.it)
2022-12-21 00:20:48 +0100 <monochrom> Oh BTW did you hear my Law of Gravity Lensing the other day? Every sufficiently massive program contains a lens implementation. >:)
2022-12-21 00:21:10 +0100 <monochrom> hahaha
2022-12-21 00:21:50 +0100Guest96(~Guest96@host-87-16-161-253.retail.telecomitalia.it) (Client Quit)
2022-12-21 00:27:24 +0100gmg(~user@user/gehmehgeh) (Quit: Leaving)
2022-12-21 00:28:31 +0100eikke(~NicolasT@user/NicolasT)
2022-12-21 00:30:42 +0100jmdaemon(~jmdaemon@user/jmdaemon) (Quit: ZNC 1.8.2 - https://znc.in)
2022-12-21 00:33:27 +0100jmdaemon(~jmdaemon@user/jmdaemon)
2022-12-21 00:41:35 +0100gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de)
2022-12-21 00:42:33 +0100morb(~morb@pool-72-80-94-112.nycmny.fios.verizon.net) (Remote host closed the connection)
2022-12-21 00:44:08 +0100Major_Biscuit(~MajorBisc@31-23-159.netrun.cytanet.com.cy)
2022-12-21 00:47:00 +0100jao(~jao@140.68.79.188.dynamic.jazztel.es) (Ping timeout: 268 seconds)
2022-12-21 00:50:05 +0100grnman_(~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net) (Ping timeout: 268 seconds)
2022-12-21 01:02:44 +0100danza(~francesco@151.37.70.15) (Read error: Connection reset by peer)
2022-12-21 01:05:27 +0100perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7.1)
2022-12-21 01:05:37 +0100grnman_(~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net)
2022-12-21 01:10:32 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Ping timeout: 272 seconds)
2022-12-21 01:10:44 +0100justsomeguy(~justsomeg@user/justsomeguy)
2022-12-21 01:12:34 +0100 <EvanR> hpc, what... clojure originated in 2005, long after javascript
2022-12-21 01:13:31 +0100 <EvanR> s/clojure/scheme/ might be less apocryphal
2022-12-21 01:14:19 +0100 <jean-paul[m]> What's this syntax called? https://github.com/reflex-frp/reflex-native/blob/develop/reflex-native/src/Reflex/Native.hs#L60-L74
2022-12-21 01:14:47 +0100 <jean-paul[m]> (so I can google it and learn what it means and how to benefit from the consequences)
2022-12-21 01:15:07 +0100morb(~morb@pool-72-80-94-112.nycmny.fios.verizon.net)
2022-12-21 01:16:14 +0100ix(~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Quit: WeeChat 3.7.1)
2022-12-21 01:17:36 +0100danza(~francesco@151.35.201.78)
2022-12-21 01:18:14 +0100ix(~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe)
2022-12-21 01:18:15 +0100 <EvanR> ConstraintKinds
2022-12-21 01:18:36 +0100 <mauke> jean-paul[m]: https://downloads.haskell.org/ghc/latest/docs/users_guide/exts/constraint_kind.html
2022-12-21 01:21:18 +0100morb(~morb@pool-72-80-94-112.nycmny.fios.verizon.net) (Remote host closed the connection)
2022-12-21 01:22:06 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-12-21 01:23:42 +0100danza(~francesco@151.35.201.78) (Read error: Connection reset by peer)
2022-12-21 01:24:00 +0100grnman_(~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net) (Ping timeout: 268 seconds)
2022-12-21 01:24:21 +0100 <hpc> omg, i did mean scheme
2022-12-21 01:24:36 +0100 <hpc> it's been a long day for me :P
2022-12-21 01:24:38 +0100gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.7.1)
2022-12-21 01:26:11 +0100grnman_(~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net)
2022-12-21 01:26:22 +0100quazimodo(~quazimodo@122-199-39-221.ip4.superloop.com) (Ping timeout: 272 seconds)
2022-12-21 01:31:26 +0100Xeroine(~Xeroine@user/xeroine) (Ping timeout: 272 seconds)
2022-12-21 01:32:04 +0100grnman_(~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net) (Ping timeout: 272 seconds)
2022-12-21 01:33:24 +0100 <Clinton[m]> hey I've been thinking about error handling, and basically I've got this problem.
2022-12-21 01:33:24 +0100 <Clinton[m]> Lets say I've got a bunch of functions, but in the end the top level function can throw say, four different errors. I want to "catch" one of them, and rethrow the remaining three. By "throw" here I mean in the pure sense, as in just return the left of an either or something (this will be happening in a monad which has IO but I don't want to throw IO exceptions directly).
2022-12-21 01:33:24 +0100 <Clinton[m]> Any articles I can read on how to achieve this?
2022-12-21 01:34:43 +0100 <Clinton[m]> Like I could return a big sum type, but then I've got two problems. 1. I have to have a common error type thoughout my program, without lots of boilerplate to convert smaller sum types to bigger ones, and 2 without lots of boilerplate there's no way to extract one element out of a sum type and make a smaller one.
2022-12-21 01:35:10 +0100ozkutuk53(~ozkutuk@176.240.173.153) (Ping timeout: 252 seconds)
2022-12-21 01:36:54 +0100Xeroine(~Xeroine@user/xeroine)
2022-12-21 01:38:00 +0100 <hpc> so when you say "smaller sum types", with the design you want you'd be able to write some sort of catchSomeError :: MightBeFourErrors a -> ??? -> MightBeThreeErrors a?
2022-12-21 01:39:02 +0100 <Clinton[m]> Roughly speaking yes.
2022-12-21 01:39:13 +0100 <hpc> hmm
2022-12-21 01:40:05 +0100 <hpc> is there any pattern to the errors you might be able to use to avoid writing the full powerset of types?
2022-12-21 01:40:25 +0100 <hpc> like are the errors in a logical sequence like "file doesn't exist" -> "can't open file" -> "can't read file"
2022-12-21 01:40:37 +0100danza(~francesco@151.35.201.78)
2022-12-21 01:40:47 +0100 <jean-paul[m]> mauke: thanks
2022-12-21 01:40:48 +0100 <Clinton[m]> hpc: Like I might just handle an error by throwing a 500 if my monad is a web handler for example
2022-12-21 01:40:48 +0100 <Clinton[m]> Or I might be able to try something else, say a different parse (which might throw a different error)
2022-12-21 01:41:22 +0100 <Clinton[m]> hpc: yeah, but then it forces a particular stack. One doesn't need to do this with say, checked exceptions in Java.
2022-12-21 01:42:10 +0100 <Clinton[m]> hpc: the compiler just keeps track of what's caught and what's thrown and adds/subtracts them from the list of exceptions
2022-12-21 01:42:58 +0100 <hpc> yeah, checked exceptions was the first thing i thought of from your problem
2022-12-21 01:43:18 +0100fizbin(~fizbin@user/fizbin)
2022-12-21 01:43:22 +0100 <hpc> if you don't mind using a bunch of language extensions, you can do something kind of like it
2022-12-21 01:43:48 +0100 <hpc> you'd make a CheckedExceptions type of some sort that takes a type-level list of things it needs to eventually check
2022-12-21 01:43:57 +0100 <hpc> and then when that list is [] you're also able to get the final value out of it
2022-12-21 01:44:16 +0100 <hpc> but i am too sleepy right now to write such code :P
2022-12-21 01:44:28 +0100grnman_(~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net)
2022-12-21 01:44:43 +0100 <Clinton[m]> hpc: yeah, I was worried that was the way I'd have to go... have things like `delete` out of a type level list by traversing it...
2022-12-21 01:46:00 +0100acidjnk(~acidjnk@p54ad5adb.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2022-12-21 01:46:31 +0100 <Clinton[m]> hpc: that's why I was trying to lean towards constraints, because they're unordered, whereas lists are well, ordered. And I believe anything at the type level is ordered, because type equality is based on their construction order, i.e. `((a, b), c)` is different to `(a, (b, c))` whereas `((C a, C b), C c)` is the same as `(C a, (C b, C c))`.
2022-12-21 01:47:39 +0100 <hpc> you still need something else on the right of the (=>) that's (Class1 a) but not (Class2 a) to differentiate
2022-12-21 01:48:18 +0100 <hpc> and you're back to writing your powerset, but at least they don't need data constructors
2022-12-21 01:48:43 +0100 <hpc> or maybe they do, or you need some goofy type family thing
2022-12-21 01:49:10 +0100 <Clinton[m]> hpc: I don't know what you mean by this
2022-12-21 01:49:14 +0100 <hpc> personally i would just leave everything in (MightBeFourErrors a) and live with it
2022-12-21 01:49:53 +0100 <hpc> Clinton[m]: so you'd have data A deriving ErrorA; data B deriving ErrorB; data AB deriving (ErrorA, ErrorB); ...
2022-12-21 01:50:14 +0100 <hpc> but then you need some way to know that when you write catchA, AB maps to B, ABC maps to BC, etc
2022-12-21 01:52:23 +0100 <hpc> this sort of thing happens a lot when you try to use type classes for something they're not really suited for :(
2022-12-21 01:52:35 +0100 <Clinton[m]> hpc: I have tried this:... (full message at <https://libera.ems.host/_matrix/media/v3/download/libera.chat/2045ffaecb06f806ed76e2e17db7e0b3b289…>)
2022-12-21 01:53:05 +0100 <Clinton[m]> s/appropriate/appropriates/
2022-12-21 01:53:24 +0100beteigeuze(~Thunderbi@bl14-81-220.dsl.telepac.pt)
2022-12-21 01:53:59 +0100Tuplanolla(~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) (Quit: Leaving.)
2022-12-21 01:56:34 +0100 <hpc> i think just have the one type and treat it like big Either
2022-12-21 01:57:10 +0100 <jackdk> Clinton[m]: You will probably rediscover most of Data Types a la Carte and/or one of several designs for implementing "open unions" aka "variants". I have never found a satisfactory answer to this question.
2022-12-21 01:57:37 +0100 <hpc> this feels like too much work at the type level for not much gain at the value level
2022-12-21 02:01:53 +0100elevenkb(~elevenkb@105.224.37.128) (Ping timeout: 260 seconds)
2022-12-21 02:02:28 +0100grnman_(~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net) (Ping timeout: 272 seconds)
2022-12-21 02:03:19 +0100talismanick(~talismani@76.133.152.122) (Remote host closed the connection)
2022-12-21 02:05:03 +0100Xeroine(~Xeroine@user/xeroine) (Excess Flood)
2022-12-21 02:10:04 +0100Major_Biscuit(~MajorBisc@31-23-159.netrun.cytanet.com.cy) (Ping timeout: 272 seconds)
2022-12-21 02:10:45 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-12-21 02:10:57 +0100talismanick(~talismani@76.133.152.122)
2022-12-21 02:11:56 +0100Xeroine(~Xeroine@user/xeroine)
2022-12-21 02:15:48 +0100grnman_(~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net)
2022-12-21 02:16:52 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-12-21 02:24:21 +0100wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2022-12-21 02:24:21 +0100wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2022-12-21 02:24:21 +0100wroathe(~wroathe@user/wroathe)
2022-12-21 02:30:58 +0100fizbin(~fizbin@user/fizbin) (Ping timeout: 272 seconds)
2022-12-21 02:32:27 +0100xff0x(~xff0x@ai071162.d.east.v6connect.net) (Ping timeout: 256 seconds)
2022-12-21 02:36:39 +0100eikke(~NicolasT@user/NicolasT) (Ping timeout: 260 seconds)
2022-12-21 02:39:20 +0100grnman_(~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net) (Ping timeout: 252 seconds)
2022-12-21 02:44:07 +0100grnman_(~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net)
2022-12-21 02:48:14 +0100unit73e(~emanuel@2001:818:e8dd:7c00:656:e5ff:fe72:9d36) (Ping timeout: 246 seconds)
2022-12-21 02:48:42 +0100gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2022-12-21 03:08:20 +0100grnman_(~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net) (Ping timeout: 272 seconds)
2022-12-21 03:13:32 +0100ddellacosta(~ddellacos@143.244.47.100)
2022-12-21 03:13:37 +0100grnman_(~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net)
2022-12-21 03:16:04 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d)
2022-12-21 03:18:20 +0100xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
2022-12-21 03:19:17 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-12-21 03:20:20 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Ping timeout: 255 seconds)
2022-12-21 03:20:46 +0100beteigeuze(~Thunderbi@bl14-81-220.dsl.telepac.pt) (Ping timeout: 252 seconds)
2022-12-21 03:28:52 +0100razetime(~quassel@49.207.230.181)
2022-12-21 03:37:17 +0100instantaphex(~jb@c-73-171-252-84.hsd1.fl.comcast.net)
2022-12-21 03:43:48 +0100grnman_(~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net) (Ping timeout: 272 seconds)
2022-12-21 03:47:14 +0100codaraxis(~codaraxis@user/codaraxis) (Ping timeout: 260 seconds)
2022-12-21 03:50:09 +0100Kaiepi(~Kaiepi@108.175.84.104) (Ping timeout: 268 seconds)
2022-12-21 03:50:48 +0100 <EvanR> Clinton[m], your problem is like the posterchild application for extensible variants, which are like dual to extensible records
2022-12-21 03:51:18 +0100 <EvanR> hashtag beyond haskell
2022-12-21 03:53:52 +0100grnman_(~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net)
2022-12-21 04:04:57 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2022-12-21 04:09:23 +0100haritz(~hrtz@user/haritz) (Ping timeout: 255 seconds)
2022-12-21 04:09:49 +0100fizbin(~fizbin@user/fizbin)
2022-12-21 04:13:22 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2022-12-21 04:16:22 +0100grnman_(~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net) (Ping timeout: 252 seconds)
2022-12-21 04:16:46 +0100haritz(~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220)
2022-12-21 04:16:46 +0100haritz(~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220) (Changing host)
2022-12-21 04:16:46 +0100haritz(~hrtz@user/haritz)
2022-12-21 04:17:43 +0100finn_elija(~finn_elij@user/finn-elija/x-0085643)
2022-12-21 04:17:43 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2022-12-21 04:17:43 +0100finn_elijaFinnElija
2022-12-21 04:18:31 +0100fizbin(~fizbin@user/fizbin) (Ping timeout: 268 seconds)
2022-12-21 04:20:21 +0100morb(~morb@pool-72-80-94-112.nycmny.fios.verizon.net)
2022-12-21 04:20:29 +0100segfaultfizzbuzz(~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Ping timeout: 260 seconds)
2022-12-21 04:21:54 +0100grnman_(~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net)
2022-12-21 04:24:24 +0100Topsi1(~Topsi@dialin-80-228-141-053.ewe-ip-backbone.de)
2022-12-21 04:25:31 +0100codaraxis(~codaraxis@user/codaraxis)
2022-12-21 04:26:14 +0100Topsi(~Topsi@dyndsl-091-096-146-006.ewe-ip-backbone.de) (Ping timeout: 272 seconds)
2022-12-21 04:26:14 +0100beefbambi(~beefbambi@183.82.207.16) (Read error: Connection reset by peer)
2022-12-21 04:26:24 +0100beefbambi(~beefbambi@183.82.207.16)
2022-12-21 04:26:36 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d)
2022-12-21 04:29:20 +0100thongpv88(~thongpv87@103.199.42.104)
2022-12-21 04:29:21 +0100bjourne(~bjorn@94.191.153.8) (Read error: Connection reset by peer)
2022-12-21 04:29:42 +0100td_(~td@83.135.9.60) (Ping timeout: 252 seconds)
2022-12-21 04:31:24 +0100td_(~td@83.135.9.45)
2022-12-21 04:33:14 +0100thongpv88(~thongpv87@103.199.42.104) (Quit: leaving)
2022-12-21 04:37:04 +0100thongpv(~thongpv87@2402:9d80:325:cf1c:9e52:6af:8ef5:f0d0)
2022-12-21 04:41:20 +0100ddellacosta(~ddellacos@143.244.47.100) (Ping timeout: 268 seconds)
2022-12-21 04:43:26 +0100motherfsck(~motherfsc@user/motherfsck)
2022-12-21 04:44:56 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2022-12-21 04:46:21 +0100Topsi1(~Topsi@dialin-80-228-141-053.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2022-12-21 04:47:18 +0100machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 252 seconds)
2022-12-21 04:47:43 +0100terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1) (Ping timeout: 252 seconds)
2022-12-21 04:50:50 +0100grnman_(~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net) (Quit: leaving)
2022-12-21 04:53:49 +0100Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) (Quit: Leaving)
2022-12-21 04:58:59 +0100terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1)
2022-12-21 05:02:20 +0100slack1256(~slack1256@186.11.31.124) (Ping timeout: 272 seconds)
2022-12-21 05:05:30 +0100danza(~francesco@151.35.201.78) (Ping timeout: 272 seconds)
2022-12-21 05:05:30 +0100beefbambi(~beefbambi@183.82.207.16) (Read error: Connection reset by peer)
2022-12-21 05:05:53 +0100beefbambi(~beefbambi@183.82.207.16)
2022-12-21 05:09:10 +0100morb(~morb@pool-72-80-94-112.nycmny.fios.verizon.net) (Remote host closed the connection)
2022-12-21 05:09:53 +0100ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Read error: Connection reset by peer)
2022-12-21 05:10:22 +0100ezzieyguywuf(~Unknown@user/ezzieyguywuf)
2022-12-21 05:17:53 +0100danza(~francesco@151.19.250.96)
2022-12-21 05:22:17 +0100shriekingnoise(~shrieking@186.137.167.202) (Quit: Quit)
2022-12-21 05:35:22 +0100Guest49(~Guest49@125.62.96.240)
2022-12-21 05:36:02 +0100fizbin(~fizbin@user/fizbin)
2022-12-21 05:36:48 +0100 <Guest49> Hi, I am having difficulty in understanding functors, monoids, monads, and other stuff. Can anyone suggest any good resources?
2022-12-21 05:37:28 +0100 <Guest49> Or any learning method which I should try?
2022-12-21 05:44:47 +0100 <Guest49> Hi
2022-12-21 05:44:52 +0100 <Guest49> Is anyone online?
2022-12-21 05:55:15 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-12-21 05:57:24 +0100 <EvanR> There's the typeclassopedia covering a lot of those topic at once
2022-12-21 05:59:41 +0100 <EvanR> a hot take on Functor is "types that are mappable" (as in the map function), monoids are types that are fusable, monads are functors that are "flattenable" (as in the concat function [[a]] -> [a])
2022-12-21 06:00:28 +0100mbuf(~Shakthi@49.204.134.183)
2022-12-21 06:06:12 +0100Me-me-(~me-me@2602:ff16:3:0:1:dc:beef:d00d) (Quit: Disconnecting on purpose.)
2022-12-21 06:06:20 +0100Wstfgl0(~me-me@2602:ff16:3:0:1:dc:beef:d00d)
2022-12-21 06:10:20 +0100Guest49(~Guest49@125.62.96.240) (Quit: Client closed)
2022-12-21 06:12:44 +0100razetime(~quassel@49.207.230.181) (Ping timeout: 252 seconds)
2022-12-21 06:15:18 +0100instantaphex(~jb@c-73-171-252-84.hsd1.fl.comcast.net) (Ping timeout: 252 seconds)
2022-12-21 06:15:47 +0100justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 264 seconds)
2022-12-21 06:19:07 +0100mvk(~mvk@2607:fea8:5ce3:8500::6126)
2022-12-21 06:20:03 +0100jrm(~jrm@user/jrm) (Quit: ciao)
2022-12-21 06:22:36 +0100sagax(~sagax_nb@user/sagax)
2022-12-21 06:26:48 +0100instantaphex(~jb@c-73-171-252-84.hsd1.fl.comcast.net)
2022-12-21 06:28:22 +0100 <iqubic> EvanR: How you flatten a Parser?
2022-12-21 06:28:52 +0100 <EvanR> yeah what does join do on a Parser (Parser X)
2022-12-21 06:30:08 +0100 <iqubic> I assume it runs the outer parser, uses bind to get access to the inner parser and then runs that afterwards, in sequence.
2022-12-21 06:30:59 +0100 <EvanR> thing is bind should be able to be implemented using join, so for any monad join can be defined standalone
2022-12-21 06:31:14 +0100 <EvanR> then bind is defined using join and fmap
2022-12-21 06:31:15 +0100jrm(~jrm@user/jrm)
2022-12-21 06:31:30 +0100 <iqubic> Yeah... I'm not sure how you do a standalone join.
2022-12-21 06:31:38 +0100instantaphex(~jb@c-73-171-252-84.hsd1.fl.comcast.net) (Ping timeout: 272 seconds)
2022-12-21 06:32:44 +0100codaraxis(~codaraxis@user/codaraxis) (Remote host closed the connection)
2022-12-21 06:33:09 +0100codaraxis(~codaraxis@user/codaraxis)
2022-12-21 06:35:07 +0100 <EvanR> the flattened Parser X runs the given parser to either fail or produce another parser, which is then used on the rest of the stream
2022-12-21 06:36:06 +0100 <EvanR> if there may be multiple results, then you might have to gather the results of continuing in multiple universes
2022-12-21 06:45:27 +0100jakalx(~jakalx@base.jakalx.net)
2022-12-21 06:45:27 +0100beefbambi(~beefbambi@183.82.207.16) (Read error: Connection reset by peer)
2022-12-21 06:46:30 +0100beefbambi(~beefbambi@183.82.207.16)
2022-12-21 06:46:58 +0100Guest49(~Guest49@125.62.96.240)
2022-12-21 06:47:05 +0100 <Guest49> Okay thanks
2022-12-21 06:49:23 +0100ix(~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Ping timeout: 246 seconds)
2022-12-21 06:50:54 +0100ix(~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe)
2022-12-21 06:50:59 +0100Guest49(~Guest49@125.62.96.240) (Client Quit)
2022-12-21 06:51:38 +0100trev(~trev@user/trev)
2022-12-21 06:53:10 +0100motherfsck(~motherfsc@user/motherfsck) (Ping timeout: 272 seconds)
2022-12-21 06:55:53 +0100johnw(~johnw@2600:1700:cf00:db0:c0c5:4436:64e9:c855) (Quit: ZNC - http://znc.in)
2022-12-21 07:00:54 +0100mvk(~mvk@2607:fea8:5ce3:8500::6126) (Quit: Going elsewhere)
2022-12-21 07:09:29 +0100jinsun(~jinsun@user/jinsun) (Read error: Connection reset by peer)
2022-12-21 07:10:23 +0100jinsun(~jinsun@user/jinsun)
2022-12-21 07:12:11 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
2022-12-21 07:26:20 +0100beefbambi(~beefbambi@183.82.207.16) (Ping timeout: 260 seconds)
2022-12-21 07:27:49 +0100beefbambi(~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377)
2022-12-21 07:33:46 +0100fizbin(~fizbin@user/fizbin) (Ping timeout: 252 seconds)
2022-12-21 07:39:38 +0100thegeekinside(~thegeekin@189.128.148.159) (Ping timeout: 252 seconds)
2022-12-21 07:43:42 +0100danza(~francesco@151.19.250.96) (Read error: Connection reset by peer)
2022-12-21 07:44:05 +0100danza(~francesco@151.19.250.96)
2022-12-21 07:45:39 +0100bgs(~bgs@212-85-160-171.dynamic.telemach.net)
2022-12-21 07:51:21 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2022-12-21 08:05:46 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2022-12-21 08:06:30 +0100ChaiTRex(~ChaiTRex@user/chaitrex)
2022-12-21 08:08:10 +0100king_gs(~Thunderbi@2806:103e:29:cdd2:b2dd:cddc:5884:d05c)
2022-12-21 08:08:55 +0100king_gs(~Thunderbi@2806:103e:29:cdd2:b2dd:cddc:5884:d05c) (Client Quit)
2022-12-21 08:13:36 +0100Xeroine(~Xeroine@user/xeroine) (Ping timeout: 272 seconds)
2022-12-21 08:16:30 +0100hamster(~ham@user/ham) (Ping timeout: 260 seconds)
2022-12-21 08:19:16 +0100Xeroine(~Xeroine@user/xeroine)
2022-12-21 08:24:44 +0100razetime(~quassel@49.207.230.181)
2022-12-21 08:32:25 +0100lortabac(~lortabac@88.125.6.227)
2022-12-21 08:34:02 +0100hamster(~ham@user/ham)
2022-12-21 08:36:08 +0100jakalx(~jakalx@base.jakalx.net) ()
2022-12-21 08:36:40 +0100jakalx(~jakalx@base.jakalx.net)
2022-12-21 08:38:57 +0100 <iqubic> Are there Haskell bindings to z3, or similar SMT solvers?
2022-12-21 08:40:29 +0100Major_Biscuit(~MajorBisc@c-001-017-022.client.tudelft.eduvpn.nl)
2022-12-21 08:42:07 +0100 <int-e> there's a z3 package at least
2022-12-21 08:43:50 +0100 <iqubic> Basically I have a program that generates a mathematical equation like x + 3x = 45 or something similar. I want to solve for x.
2022-12-21 08:44:35 +0100 <iqubic> But the actual equations are many orders of magnitudes more complex. But still basically linear in nature.
2022-12-21 08:45:16 +0100troydm(~troydm@host-176-37-124-197.b025.la.net.ua)
2022-12-21 08:45:21 +0100Lears(~Leary]@user/Leary/x-0910699)
2022-12-21 08:46:42 +0100 <davean> ou SURE you want Z3? not a linear algebra or linear programming library?
2022-12-21 08:46:59 +0100[Leary](~Leary]@user/Leary/x-0910699) (Ping timeout: 265 seconds)
2022-12-21 08:47:55 +0100 <int-e> Haha, https://hackage.haskell.org/package/sbv-9.0/docs/Documentation-SBV-Examples-Puzzles-AOC_2021_24.html
2022-12-21 08:48:27 +0100 <int-e> (sbv is probably the most elaborate effort in that direction. I don't know how hard it is to get it to work.)
2022-12-21 08:49:25 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2022-12-21 08:49:53 +0100 <mauke> nice
2022-12-21 08:50:20 +0100troydm(~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 260 seconds)
2022-12-21 08:51:13 +0100johnw(~johnw@2600:1700:cf00:db0:fc14:7b6c:a314:b669)
2022-12-21 08:53:31 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-12-21 08:54:20 +0100 <davean> I never got it to reflect functions I could also use as Haskell functions properly :( I should try again.
2022-12-21 08:54:36 +0100 <davean> if you aren't playing stupid games for stupider prizes its been quite nice
2022-12-21 08:55:31 +0100mncheck(~mncheck@193.224.205.254)
2022-12-21 09:00:42 +0100melonai(~mel@rnrd.eu) (Quit: ZNC 1.8.2 - https://znc.in)
2022-12-21 09:01:42 +0100Red_Swan(~jared@174-23-134-43.slkc.qwest.net)
2022-12-21 09:05:32 +0100danza(~francesco@151.19.250.96) (Ping timeout: 272 seconds)
2022-12-21 09:09:23 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-12-21 09:13:55 +0100Major_Biscuit(~MajorBisc@c-001-017-022.client.tudelft.eduvpn.nl) (Ping timeout: 252 seconds)
2022-12-21 09:17:40 +0100danza(~francesco@151.43.66.20)
2022-12-21 09:21:05 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Remote host closed the connection)
2022-12-21 09:31:08 +0100bjourne(~bjorn@94.191.153.8.mobile.tre.se)
2022-12-21 09:36:24 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Remote host closed the connection)
2022-12-21 09:36:26 +0100tdammers(~tdammers@77.109.72.175.res.static.edpnet.net)
2022-12-21 09:37:03 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-12-21 09:37:55 +0100jonathanx(~jonathan@h-178-174-176-109.a357.priv.bahnhof.se)
2022-12-21 09:39:03 +0100Xeroine(~Xeroine@user/xeroine) (Read error: Connection reset by peer)
2022-12-21 09:39:22 +0100Xeroine(~Xeroine@user/xeroine)
2022-12-21 09:41:20 +0100nschoe(~q@141.101.51.197)
2022-12-21 09:46:02 +0100eikke(~NicolasT@user/NicolasT)
2022-12-21 09:47:43 +0100Tuplanolla(~Tuplanoll@91-159-68-152.elisa-laajakaista.fi)
2022-12-21 09:56:03 +0100vpan(~0@212.117.1.172)
2022-12-21 09:58:13 +0100machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2022-12-21 10:01:04 +0100FragByte(~christian@user/fragbyte)
2022-12-21 10:02:58 +0100rendar(~Paxman@user/rendar) (Quit: Leaving)
2022-12-21 10:04:55 +0100Kaiepi(~Kaiepi@108.175.84.104)
2022-12-21 10:10:02 +0100paulpaul1076(~textual@95-29-5-111.broadband.corbina.ru)
2022-12-21 10:11:12 +0100acidjnk(~acidjnk@p200300d6e7137a3129deba78bd0b2d95.dip0.t-ipconnect.de)
2022-12-21 10:11:12 +0100fserucas(~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7)
2022-12-21 10:11:24 +0100FragByte(~christian@user/fragbyte) (Quit: Quit)
2022-12-21 10:11:40 +0100FragByte(~christian@user/fragbyte)
2022-12-21 10:12:33 +0100use-value(~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf)
2022-12-21 10:13:40 +0100whatsupdoc(uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2022-12-21 10:14:39 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2022-12-21 10:19:13 +0100FragByte(~christian@user/fragbyte) (Quit: Quit)
2022-12-21 10:19:28 +0100FragByte(~christian@user/fragbyte)
2022-12-21 10:19:44 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-12-21 10:19:48 +0100FragByte(~christian@user/fragbyte) (Remote host closed the connection)
2022-12-21 10:20:04 +0100FragByte(~christian@user/fragbyte)
2022-12-21 10:20:40 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-12-21 10:21:34 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:a510:a2e1:267:5f1f)
2022-12-21 10:22:12 +0100FragByte(~christian@user/fragbyte) (Client Quit)
2022-12-21 10:22:28 +0100FragByte(~christian@user/fragbyte)
2022-12-21 10:24:54 +0100whatsupdoc(uid509081@id-509081.hampstead.irccloud.com)
2022-12-21 10:25:11 +0100FragByte(~christian@user/fragbyte) (Client Quit)
2022-12-21 10:25:28 +0100FragByte(~christian@user/fragbyte)
2022-12-21 10:25:59 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:a510:a2e1:267:5f1f) (Ping timeout: 246 seconds)
2022-12-21 10:35:07 +0100FragByte(~christian@user/fragbyte) (Quit: Quit)
2022-12-21 10:36:03 +0100pagnol(~user@213-205-209-87.ftth.glasoperator.nl)
2022-12-21 10:36:10 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2022-12-21 10:36:21 +0100FragByte(~christian@user/fragbyte)
2022-12-21 10:41:01 +0100gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2022-12-21 10:42:47 +0100kuribas(~user@ip-188-118-57-242.reverse.destiny.be)
2022-12-21 10:44:20 +0100Xeroine(~Xeroine@user/xeroine) (Ping timeout: 272 seconds)
2022-12-21 10:45:07 +0100Xeroine(~Xeroine@user/xeroine)
2022-12-21 10:48:49 +0100troydm(~troydm@host-176-37-124-197.b025.la.net.ua)
2022-12-21 10:49:37 +0100zerozzz
2022-12-21 10:50:49 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2022-12-21 10:56:21 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-12-21 10:56:23 +0100 <thongpv> How can I define a Poset (partial ordered set) as an instance of Control.Category?
2022-12-21 10:57:44 +0100gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.7.1)
2022-12-21 10:58:45 +0100ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2022-12-21 11:00:31 +0100ec(~ec@gateway/tor-sasl/ec)
2022-12-21 11:01:01 +0100gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2022-12-21 11:06:08 +0100xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 268 seconds)
2022-12-21 11:06:17 +0100acidjnk(~acidjnk@p200300d6e7137a3129deba78bd0b2d95.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2022-12-21 11:06:59 +0100danza(~francesco@151.43.66.20) (Ping timeout: 256 seconds)
2022-12-21 11:08:38 +0100bjourne(~bjorn@94.191.153.8.mobile.tre.se) (Read error: Connection reset by peer)
2022-12-21 11:12:34 +0100talismanick(~talismani@76.133.152.122) (Remote host closed the connection)
2022-12-21 11:19:03 +0100bjourne(~bjorn@94.191.153.8)
2022-12-21 11:19:16 +0100eikke(~NicolasT@user/NicolasT) (Ping timeout: 252 seconds)
2022-12-21 11:24:54 +0100Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2022-12-21 11:25:11 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 246 seconds)
2022-12-21 11:25:12 +0100beteigeuze(~Thunderbi@bl14-81-220.dsl.telepac.pt)
2022-12-21 11:25:45 +0100econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2022-12-21 11:26:10 +0100Lord_of_Life_Lord_of_Life
2022-12-21 11:26:20 +0100ubert(~Thunderbi@2a02:8109:abc0:6434:64d2:8d4f:48b2:5f96)
2022-12-21 11:31:14 +0100bjourne(~bjorn@94.191.153.8) (Read error: Connection reset by peer)
2022-12-21 11:31:21 +0100troydm(~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 256 seconds)
2022-12-21 11:31:59 +0100mesaoptimizer(apotheosis@user/PapuaHardyNet) (Remote host closed the connection)
2022-12-21 11:36:58 +0100 <jackdk> What do you intend to do with that instance? That is, what are the elements of your poset?
2022-12-21 11:38:58 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-12-21 11:39:05 +0100Guest5969(~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2022-12-21 11:41:18 +0100bjourne(~bjorn@94.191.153.8)
2022-12-21 11:41:29 +0100biberu(~biberu@user/biberu) (Ping timeout: 260 seconds)
2022-12-21 11:42:09 +0100[Leary](~Leary]@user/Leary/x-0910699)
2022-12-21 11:44:30 +0100Lears(~Leary]@user/Leary/x-0910699) (Ping timeout: 272 seconds)
2022-12-21 11:47:11 +0100biberu(~biberu@user/biberu)
2022-12-21 11:49:25 +0100Red_Swan(~jared@174-23-134-43.slkc.qwest.net) (Quit: Konversation terminated!)
2022-12-21 12:01:40 +0100 <thongpv> I just try to implement that CT example in Haskell. It's special because arrow in that CT is not function but the less than relation. For ur 2nd question, I think obj in that category are pair of element a, b, c ∈ A. Morphirsm are pair of those object, like `newtype Poset a b = Poset a b`, so each `Poset` value represent a <= b. Composition is easy to define, (.) :: Poset b c -> Poset a b -> Poset a c. However, I can't thin
2022-12-21 12:01:41 +0100 <thongpv> k of an impl for `id`, since `id` would have type `id :: Poset a a`
2022-12-21 12:02:42 +0100eikke(~NicolasT@user/NicolasT)
2022-12-21 12:03:45 +0100v0id_ptr(~adrift@user/ptr-frac7al/x-0038398)
2022-12-21 12:06:00 +0100 <thongpv> The `Poset` type need to take two type parameter because Category kind is: Category :: (k -> k -> *) -> Constraint, so I think I need to add constraint on (.) :: (a ~ b) => ....
2022-12-21 12:07:16 +0100xff0x(~xff0x@ai071162.d.east.v6connect.net)
2022-12-21 12:08:59 +0100nschoe(~q@141.101.51.197) (Ping timeout: 248 seconds)
2022-12-21 12:10:59 +0100Me-me(~Me-me@user/me-me) (Quit: Going offline, see ya! (www.adiirc.com))
2022-12-21 12:18:44 +0100bjourne(~bjorn@94.191.153.8) (Ping timeout: 246 seconds)
2022-12-21 12:20:52 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 252 seconds)
2022-12-21 12:22:50 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2022-12-21 12:25:33 +0100fizbin(~fizbin@user/fizbin)
2022-12-21 12:26:02 +0100nicm[m](~nicmollel@2001:470:69fc:105::1:feeb) (Ping timeout: 246 seconds)
2022-12-21 12:26:05 +0100Matthew|m(~arathorn@2001:470:69fc:105::1f) (Ping timeout: 246 seconds)
2022-12-21 12:26:19 +0100ericjmorey[m](~ericjmore@2001:470:69fc:105::7afc) (Ping timeout: 256 seconds)
2022-12-21 12:26:22 +0100geekosaur[m](~geekosaur@xmonad/geekosaur) (Ping timeout: 252 seconds)
2022-12-21 12:26:23 +0100peddie(~peddie@2001:470:69fc:105::25d) (Ping timeout: 246 seconds)
2022-12-21 12:26:23 +0100kadoban(~kadoban@user/kadoban) (Ping timeout: 260 seconds)
2022-12-21 12:26:23 +0100Player205[m](~rootsandw@2001:470:69fc:105::2:ca2e) (Ping timeout: 260 seconds)
2022-12-21 12:26:27 +0100daveakre[m](~daveakrem@2001:470:69fc:105::1:88b7) (Ping timeout: 252 seconds)
2022-12-21 12:26:35 +0100TomWesterhout[m](~twesterho@2001:470:69fc:105::1:2918) (Ping timeout: 248 seconds)
2022-12-21 12:26:35 +0100dgpratt[m](~dgprattma@2001:470:69fc:105::1:dcdd) (Ping timeout: 264 seconds)
2022-12-21 12:26:44 +0100JonathanWatson[m(~jjwmatrix@2001:470:69fc:105::2:a544) (Ping timeout: 246 seconds)
2022-12-21 12:26:49 +0100mimi1vx[m](~osukupmat@2001:470:69fc:105::2:418d) (Ping timeout: 252 seconds)
2022-12-21 12:26:49 +0100JensPetersen[m](~juhp@2001:470:69fc:105::6e9) (Ping timeout: 252 seconds)
2022-12-21 12:27:05 +0100VarikValefor[m](~varikvale@2001:470:69fc:105::a5d) (Ping timeout: 246 seconds)
2022-12-21 12:27:07 +0100mrkun[m](~mrkunmatr@2001:470:69fc:105::2:2a39) (Ping timeout: 248 seconds)
2022-12-21 12:27:07 +0100unclechu(~unclechu@2001:470:69fc:105::354) (Ping timeout: 248 seconds)
2022-12-21 12:27:07 +0100ManofLetters[m](~manoflett@2001:470:69fc:105::3be) (Ping timeout: 248 seconds)
2022-12-21 12:27:07 +0100SeanKing[m](~seankingm@2001:470:69fc:105::cf9c) (Ping timeout: 248 seconds)
2022-12-21 12:27:11 +0100smichel17[m](~smichel17@2001:470:69fc:105::2d32) (Ping timeout: 252 seconds)
2022-12-21 12:27:19 +0100FurudeRika[m](~chitandae@2001:470:69fc:105::1:6039) (Ping timeout: 260 seconds)
2022-12-21 12:27:23 +0100czuberion[m](~czuberion@2001:470:69fc:105::2:bc47) (Ping timeout: 265 seconds)
2022-12-21 12:27:23 +0100fgaz(~fgaz@2001:470:69fc:105::842) (Ping timeout: 265 seconds)
2022-12-21 12:27:26 +0100elevenkb[m](~elevenkb@2001:470:69fc:105::2:cb89) (Ping timeout: 246 seconds)
2022-12-21 12:27:26 +0100Jadesheit[m](~jade1024m@2001:470:69fc:105::2:d68a) (Ping timeout: 246 seconds)
2022-12-21 12:27:29 +0100jneira[m](~jneiramat@2001:470:69fc:105::d729) (Ping timeout: 246 seconds)
2022-12-21 12:27:34 +0100Guest5969(~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 260 seconds)
2022-12-21 12:27:39 +0100vladan[m](~vladanmat@2001:470:69fc:105::2:24df) (Ping timeout: 248 seconds)
2022-12-21 12:27:47 +0100amano[m](~amanocute@2001:470:69fc:105::2:d3f4) (Ping timeout: 246 seconds)
2022-12-21 12:27:47 +0100elvishjerricco(~elvishjer@2001:470:69fc:105::6172) (Ping timeout: 246 seconds)
2022-12-21 12:27:47 +0100famubu[m](~famubumat@2001:470:69fc:105::1081) (Ping timeout: 260 seconds)
2022-12-21 12:27:48 +0100yl53[m](~yl53matri@2001:470:69fc:105::85b) (Ping timeout: 264 seconds)
2022-12-21 12:27:49 +0100AdamConner-Sax[m(~adamcsmat@2001:470:69fc:105::1:e2c8) (Ping timeout: 260 seconds)
2022-12-21 12:27:50 +0100fendor[m](~fendormat@2001:470:69fc:105::fcbd) (Ping timeout: 246 seconds)
2022-12-21 12:27:52 +0100jbggs[m]1(~jbggsmatr@2001:470:69fc:105::2:995f) (Ping timeout: 265 seconds)
2022-12-21 12:27:55 +0100jinsun_(~jinsun@user/jinsun) (Ping timeout: 252 seconds)
2022-12-21 12:28:01 +0100Deide(~deide@user/deide) (Ping timeout: 256 seconds)
2022-12-21 12:28:01 +0100maerwald[m](~maerwaldm@2001:470:69fc:105::1ee) (Ping timeout: 256 seconds)
2022-12-21 12:28:01 +0100schuelermine[m](~schuelerm@user/schuelermine) (Ping timeout: 256 seconds)
2022-12-21 12:28:01 +0100maralorn(~maralorn@2001:470:69fc:105::251) (Ping timeout: 256 seconds)
2022-12-21 12:28:11 +0100Player-205[m](~sashaserp@2001:470:69fc:105::2:30b8) (Ping timeout: 248 seconds)
2022-12-21 12:28:11 +0100Guillaum[m](~guiboumat@2001:470:69fc:105::1:72ac) (Ping timeout: 248 seconds)
2022-12-21 12:28:12 +0100MangoIV[m](~mangoivma@2001:470:69fc:105::2:8417) (Ping timeout: 252 seconds)
2022-12-21 12:28:17 +0100alexfmpe[m](~alexfmpem@2001:470:69fc:105::38ba) (Ping timeout: 252 seconds)
2022-12-21 12:28:17 +0100Artem[m](~artemtype@2001:470:69fc:105::75b) (Ping timeout: 252 seconds)
2022-12-21 12:28:24 +0100VOID[m](~void404ma@2001:470:69fc:105::2:c72c) (Ping timeout: 264 seconds)
2022-12-21 12:28:24 +0100oak-(~oak-@2001:470:69fc:105::fcd) (Ping timeout: 264 seconds)
2022-12-21 12:28:24 +0100kjlid[m](~kjlidmatr@2001:470:69fc:105::2:c193) (Ping timeout: 260 seconds)
2022-12-21 12:28:24 +0100ongy[m](~ongymatri@2001:470:69fc:105::5018) (Ping timeout: 260 seconds)
2022-12-21 12:28:32 +0100ei30metry[m](~ei30metry@2001:470:69fc:105::2:d5ee) (Ping timeout: 246 seconds)
2022-12-21 12:28:43 +0100kfiz[m](~louismatr@2001:470:69fc:105::2:aee0) (Ping timeout: 248 seconds)
2022-12-21 12:28:43 +0100megaTherion(~therion@unix.io) (Ping timeout: 260 seconds)
2022-12-21 12:28:43 +0100Dominik[m](~dschrempf@2001:470:69fc:105::2:bbb6) (Ping timeout: 260 seconds)
2022-12-21 12:28:43 +0100ElliotAlderson[m(~elliotal_@2001:470:69fc:105::bb21) (Ping timeout: 260 seconds)
2022-12-21 12:28:43 +0100tiziodcaio(~tiziodcai@2001:470:69fc:105::1:2bf8) (Ping timeout: 260 seconds)
2022-12-21 12:28:50 +0100Tisoxin(~ikosit@user/ikosit) (Ping timeout: 265 seconds)
2022-12-21 12:29:11 +0100ozkutuk[m](~ozkutuk@2001:470:69fc:105::2:9af8) (Ping timeout: 246 seconds)
2022-12-21 12:29:11 +0100nomagno(~nomagno@2001:470:69fc:105::c1f0) (Ping timeout: 246 seconds)
2022-12-21 12:29:11 +0100Christoph[m](~hpotsirhc@2001:470:69fc:105::2ff8) (Ping timeout: 246 seconds)
2022-12-21 12:29:15 +0100ormaaj(~ormaaj@user/ormaaj) (Ping timeout: 248 seconds)
2022-12-21 12:29:43 +0100psydroid(~psydroid@user/psydroid) (Ping timeout: 256 seconds)
2022-12-21 12:29:48 +0100jean-paul[m](~jean-paul@2001:470:69fc:105::d1ab) (Ping timeout: 265 seconds)
2022-12-21 12:29:48 +0100Las[m](~lasmatrix@2001:470:69fc:105::74e) (Ping timeout: 265 seconds)
2022-12-21 12:30:11 +0100romes[m](~romesmatr@2001:470:69fc:105::2:1660) (Ping timeout: 264 seconds)
2022-12-21 12:30:17 +0100bgamari[m](~bgamari@2001:470:69fc:105::c7b9) (Ping timeout: 256 seconds)
2022-12-21 12:30:43 +0100gqplox[m](~gqploxmat@2001:470:69fc:105::2:d10d) (Ping timeout: 260 seconds)
2022-12-21 12:30:43 +0100jecxjo[m](~jecxjomat@2001:470:69fc:105::2:bd7c) (Ping timeout: 260 seconds)
2022-12-21 12:30:44 +0100ericson2314(~ericson23@2001:470:69fc:105::70c) (Ping timeout: 260 seconds)
2022-12-21 12:30:46 +0100jmcantrell(~jmcantrel@user/jmcantrell) (Ping timeout: 265 seconds)
2022-12-21 12:30:47 +0100srid[m](~sridmatri@2001:470:69fc:105::1c2) (Ping timeout: 264 seconds)
2022-12-21 12:31:35 +0100Clinton[m](~clintonme@2001:470:69fc:105::2:31d4) (Ping timeout: 252 seconds)
2022-12-21 12:31:57 +0100sm(~sm@plaintextaccounting/sm) (Ping timeout: 252 seconds)
2022-12-21 12:32:13 +0100oo_miguel[m](~oomiguelm@2001:470:69fc:105::1:5ab0) (Ping timeout: 265 seconds)
2022-12-21 12:33:03 +0100zebrag[m](~inkbottle@2001:470:69fc:105::2ff5) (Ping timeout: 252 seconds)
2022-12-21 12:36:03 +0100megaTherion(~therion@unix.io)
2022-12-21 12:36:30 +0100dgpratt[m](~dgprattma@2001:470:69fc:105::1:dcdd)
2022-12-21 12:36:34 +0100chreekat(~chreekat@2001:470:69fc:105::16b5) (Ping timeout: 260 seconds)
2022-12-21 12:36:35 +0100JonathanWatson[m(~jjwmatrix@2001:470:69fc:105::2:a544)
2022-12-21 12:36:47 +0100daveakre[m](~daveakrem@2001:470:69fc:105::1:88b7)
2022-12-21 12:38:21 +0100kfiz[m](~louismatr@2001:470:69fc:105::2:aee0)
2022-12-21 12:39:07 +0100Player-205[m](~sashaserp@2001:470:69fc:105::2:30b8)
2022-12-21 12:39:19 +0100nomagno(~nomagno@2001:470:69fc:105::c1f0)
2022-12-21 12:39:37 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 252 seconds)
2022-12-21 12:41:24 +0100sm(~sm@plaintextaccounting/sm)
2022-12-21 12:42:19 +0100ormaaj(~ormaaj@user/ormaaj)
2022-12-21 12:42:47 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 264 seconds)
2022-12-21 12:43:00 +0100zebrag[m](~inkbottle@2001:470:69fc:105::2ff5)
2022-12-21 12:43:14 +0100ElliotAlderson[m(~elliotal_@2001:470:69fc:105::bb21)
2022-12-21 12:44:25 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2022-12-21 12:45:12 +0100jmcantrell(~jmcantrel@user/jmcantrell)
2022-12-21 12:45:21 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-12-21 12:46:23 +0100psydroid(~psydroid@user/psydroid)
2022-12-21 12:46:46 +0100chreekat(~chreekat@2001:470:69fc:105::16b5)
2022-12-21 12:47:35 +0100tiziodcaio(~tiziodcai@2001:470:69fc:105::1:2bf8)
2022-12-21 12:48:04 +0100jecxjo[m](~jecxjomat@2001:470:69fc:105::2:bd7c)
2022-12-21 12:48:52 +0100use-value1(~Thunderbi@2a00:23c6:8a03:2f01:9dfe:df53:2b6:85ce)
2022-12-21 12:49:21 +0100fgaz(~fgaz@2001:470:69fc:105::842)
2022-12-21 12:50:08 +0100AdamConner-Sax[m(~adamcsmat@2001:470:69fc:105::1:e2c8)
2022-12-21 12:50:11 +0100eikke(~NicolasT@user/NicolasT) (Ping timeout: 260 seconds)
2022-12-21 12:50:15 +0100geekosaur[m](~geekosaur@xmonad/geekosaur)
2022-12-21 12:50:47 +0100Player205[m](~rootsandw@2001:470:69fc:105::2:ca2e)
2022-12-21 12:51:00 +0100ericjmorey[m](~ericjmore@2001:470:69fc:105::7afc)
2022-12-21 12:51:06 +0100unclechu(~unclechu@2001:470:69fc:105::354)
2022-12-21 12:51:14 +0100use-value(~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Ping timeout: 246 seconds)
2022-12-21 12:51:14 +0100use-value1use-value
2022-12-21 12:54:19 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 248 seconds)
2022-12-21 12:54:49 +0100Matthew|m(~arathorn@2001:470:69fc:105::1f)
2022-12-21 12:55:01 +0100mrkun[m](~mrkunmatr@2001:470:69fc:105::2:2a39)
2022-12-21 12:55:06 +0100VarikValefor[m](~varikvale@2001:470:69fc:105::a5d)
2022-12-21 12:55:43 +0100TomWesterhout[m](~twesterho@2001:470:69fc:105::1:2918)
2022-12-21 12:55:59 +0100kadoban(~kadoban@user/kadoban)
2022-12-21 12:56:15 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2022-12-21 12:57:03 +0100nicm[m](~nicmollel@2001:470:69fc:105::1:feeb)
2022-12-21 12:57:56 +0100ongy[m](~ongymatri@2001:470:69fc:105::5018)
2022-12-21 12:58:18 +0100kjlid[m](~kjlidmatr@2001:470:69fc:105::2:c193)
2022-12-21 12:58:48 +0100schuelermine[m](~schuelerm@user/schuelermine)
2022-12-21 12:59:38 +0100famubu[m](~famubumat@2001:470:69fc:105::1081)
2022-12-21 12:59:48 +0100Deide(~deide@user/deide)
2022-12-21 13:00:51 +0100peddie(~peddie@2001:470:69fc:105::25d)
2022-12-21 13:01:07 +0100Dominik[m](~dschrempf@2001:470:69fc:105::2:bbb6)
2022-12-21 13:02:16 +0100oo_miguel[m](~oomiguelm@2001:470:69fc:105::1:5ab0)
2022-12-21 13:02:36 +0100mimi1vx[m](~osukupmat@2001:470:69fc:105::2:418d)
2022-12-21 13:03:05 +0100elvishjerricco(~elvishjer@2001:470:69fc:105::6172)
2022-12-21 13:03:05 +0100JensPetersen[m](~juhp@2001:470:69fc:105::6e9)
2022-12-21 13:04:25 +0100fendor[m](~fendormat@2001:470:69fc:105::fcbd)
2022-12-21 13:04:29 +0100jinsun_(~jinsun@user/jinsun)
2022-12-21 13:04:47 +0100Jadesheit[m](~jade1024m@2001:470:69fc:105::2:d68a)
2022-12-21 13:05:38 +0100zeenk(~zeenk@82.79.126.109)
2022-12-21 13:05:54 +0100dextaa3(~DV@user/dextaa)
2022-12-21 13:07:28 +0100MangoIV[m](~mangoivma@2001:470:69fc:105::2:8417)
2022-12-21 13:08:14 +0100dextaa(~DV@user/dextaa) (Ping timeout: 268 seconds)
2022-12-21 13:08:14 +0100dextaa3dextaa
2022-12-21 13:09:18 +0100yl53[m](~yl53matri@2001:470:69fc:105::85b)
2022-12-21 13:09:20 +0100smichel17[m](~smichel17@2001:470:69fc:105::2d32)
2022-12-21 13:10:20 +0100SeanKing[m](~seankingm@2001:470:69fc:105::cf9c)
2022-12-21 13:11:33 +0100maerwald[m](~maerwaldm@2001:470:69fc:105::1ee)
2022-12-21 13:14:18 +0100Artem[m](~artemtype@2001:470:69fc:105::75b)
2022-12-21 13:14:27 +0100ozkutuk[m](~ozkutuk@2001:470:69fc:105::2:9af8)
2022-12-21 13:14:57 +0100maralorn(~maralorn@2001:470:69fc:105::251)
2022-12-21 13:16:10 +0100Christoph[m](~hpotsirhc@2001:470:69fc:105::2ff8)
2022-12-21 13:16:41 +0100eikke(~NicolasT@user/NicolasT)
2022-12-21 13:17:47 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 252 seconds)
2022-12-21 13:19:05 +0100alexfmpe[m](~alexfmpem@2001:470:69fc:105::38ba)
2022-12-21 13:19:48 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2022-12-21 13:20:47 +0100Tisoxin(~ikosit@user/ikosit)
2022-12-21 13:21:30 +0100Guillaum[m](~guiboumat@2001:470:69fc:105::1:72ac)
2022-12-21 13:22:10 +0100ei30metry[m](~ei30metry@2001:470:69fc:105::2:d5ee)
2022-12-21 13:24:23 +0100VOID[m](~void404ma@2001:470:69fc:105::2:c72c)
2022-12-21 13:24:50 +0100vladan[m](~vladanmat@2001:470:69fc:105::2:24df)
2022-12-21 13:24:55 +0100FurudeRika[m](~chitandae@2001:470:69fc:105::1:6039)
2022-12-21 13:25:07 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 252 seconds)
2022-12-21 13:25:56 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2022-12-21 13:26:23 +0100oak-(~oak-@2001:470:69fc:105::fcd)
2022-12-21 13:26:53 +0100ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2022-12-21 13:27:20 +0100Las[m](~lasmatrix@2001:470:69fc:105::74e)
2022-12-21 13:29:09 +0100bgamari[m](~bgamari@2001:470:69fc:105::c7b9)
2022-12-21 13:30:10 +0100ericson2314(~ericson23@2001:470:69fc:105::70c)
2022-12-21 13:30:20 +0100ec(~ec@gateway/tor-sasl/ec)
2022-12-21 13:32:40 +0100jean-paul[m](~jean-paul@2001:470:69fc:105::d1ab)
2022-12-21 13:33:01 +0100amano[m](~amanocute@2001:470:69fc:105::2:d3f4)
2022-12-21 13:33:35 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 260 seconds)
2022-12-21 13:35:19 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2022-12-21 13:35:27 +0100gqplox[m](~gqploxmat@2001:470:69fc:105::2:d10d)
2022-12-21 13:35:32 +0100jbggs[m]1(~jbggsmatr@2001:470:69fc:105::2:995f)
2022-12-21 13:36:45 +0100jneira[m](~jneiramat@2001:470:69fc:105::d729)
2022-12-21 13:36:58 +0100srid[m](~sridmatri@2001:470:69fc:105::1c2)
2022-12-21 13:37:35 +0100elevenkb[m](~elevenkb@2001:470:69fc:105::2:cb89)
2022-12-21 13:39:39 +0100ManofLetters[m](~manoflett@2001:470:69fc:105::3be)
2022-12-21 13:43:24 +0100czuberion[m](~czuberion@2001:470:69fc:105::2:bc47)
2022-12-21 13:43:34 +0100beteigeuze(~Thunderbi@bl14-81-220.dsl.telepac.pt) (Ping timeout: 272 seconds)
2022-12-21 13:43:59 +0100jmdaemon(~jmdaemon@user/jmdaemon) (Ping timeout: 260 seconds)
2022-12-21 13:44:36 +0100Clinton[m](~clintonme@2001:470:69fc:105::2:31d4)
2022-12-21 13:45:01 +0100jao(~jao@140.68.79.188.dynamic.jazztel.es)
2022-12-21 13:47:31 +0100ThngPhmVn[m](~thongpv87@2001:470:69fc:105::2:e2e8)
2022-12-21 13:47:36 +0100romes[m](~romesmatr@2001:470:69fc:105::2:1660)
2022-12-21 14:00:59 +0100motherfsck(~motherfsc@user/motherfsck)
2022-12-21 14:01:23 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 264 seconds)
2022-12-21 14:02:59 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2022-12-21 14:06:40 +0100freeside(~mengwong@103.252.202.159)
2022-12-21 14:08:41 +0100gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de)
2022-12-21 14:09:41 +0100slack1256(~slack1256@191.125.99.210)
2022-12-21 14:11:53 +0100nyr(~nyr@91.196.39.241)
2022-12-21 14:13:26 +0100pagnol(~user@213-205-209-87.ftth.glasoperator.nl) (Ping timeout: 252 seconds)
2022-12-21 14:19:54 +0100nyr(~nyr@91.196.39.241) (Quit: WeeChat 3.7.1)
2022-12-21 14:23:39 +0100nyr(~nyr@91.196.39.241)
2022-12-21 14:23:53 +0100ec_(~ec@gateway/tor-sasl/ec)
2022-12-21 14:25:02 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:a510:a2e1:267:5f1f)
2022-12-21 14:25:32 +0100ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds)
2022-12-21 14:28:44 +0100dsrt^(~dsrt@76.145.185.103) (Remote host closed the connection)
2022-12-21 14:28:46 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-12-21 14:29:43 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:a510:a2e1:267:5f1f) (Ping timeout: 260 seconds)
2022-12-21 14:29:44 +0100__monty__(~toonn@user/toonn)
2022-12-21 14:30:03 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-12-21 14:30:13 +0100bjourne(~bjorn@94.191.153.229)
2022-12-21 14:31:04 +0100nyr(~nyr@91.196.39.241) (Quit: WeeChat 3.7.1)
2022-12-21 14:31:23 +0100eikke(~NicolasT@user/NicolasT) (Ping timeout: 246 seconds)
2022-12-21 14:31:57 +0100Topsi(~Topsi@dialin-80-228-141-053.ewe-ip-backbone.de)
2022-12-21 14:32:04 +0100razetime(~quassel@49.207.230.181) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2022-12-21 14:32:07 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-12-21 14:33:27 +0100razetime(~quassel@49.207.230.181)
2022-12-21 14:36:35 +0100nyr(~nyr@91.196.39.241)
2022-12-21 14:39:14 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2022-12-21 14:40:42 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-12-21 14:44:48 +0100nyr(~nyr@91.196.39.241) (Quit: WeeChat 3.7.1)
2022-12-21 14:45:08 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 265 seconds)
2022-12-21 14:46:56 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2022-12-21 14:47:52 +0100nyr(~nyr@91.196.39.241)
2022-12-21 14:50:27 +0100nyrNyr
2022-12-21 14:52:30 +0100Nyrnyro
2022-12-21 14:55:11 +0100nyronyr
2022-12-21 14:56:25 +0100Topsi(~Topsi@dialin-80-228-141-053.ewe-ip-backbone.de) (Ping timeout: 252 seconds)
2022-12-21 15:02:06 +0100`2jt(~jtomas@84.red-88-17-186.dynamicip.rima-tde.net)
2022-12-21 15:06:31 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-12-21 15:07:13 +0100pagnol(~user@77-173-85-148.fixed.kpn.net)
2022-12-21 15:07:14 +0100bjourne(~bjorn@94.191.153.229) (Read error: Connection reset by peer)
2022-12-21 15:07:52 +0100v0id_ptr(~adrift@user/ptr-frac7al/x-0038398) (Ping timeout: 268 seconds)
2022-12-21 15:08:10 +0100nschoe(~q@141.101.51.197)
2022-12-21 15:08:10 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2022-12-21 15:13:24 +0100eikke(~NicolasT@user/NicolasT)
2022-12-21 15:14:23 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 260 seconds)
2022-12-21 15:15:35 +0100pavonia(~user@user/siracusa)
2022-12-21 15:16:05 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2022-12-21 15:16:36 +0100thegeekinside(~thegeekin@189.128.148.159)
2022-12-21 15:19:03 +0100shriekingnoise(~shrieking@186.137.167.202)
2022-12-21 15:19:05 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-12-21 15:20:49 +0100bjourne(~bjorn@94.191.153.229)
2022-12-21 15:21:02 +0100gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2022-12-21 15:24:56 +0100nyr(~nyr@91.196.39.241) (Changing host)
2022-12-21 15:24:56 +0100nyr(~nyr@user/nyr)
2022-12-21 15:25:05 +0100Guest5969(~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2022-12-21 15:26:17 +0100ec_(~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds)
2022-12-21 15:26:51 +0100ec_(~ec@gateway/tor-sasl/ec)
2022-12-21 15:29:10 +0100nyr(~nyr@user/nyr) (Quit: WeeChat 3.7.1)
2022-12-21 15:29:30 +0100nyr(~nyr@user/nyr)
2022-12-21 15:32:34 +0100j4cc3b(~jeffreybe@pool-74-105-2-138.nwrknj.fios.verizon.net)
2022-12-21 15:42:18 +0100thongpv(~thongpv87@2402:9d80:325:cf1c:9e52:6af:8ef5:f0d0) (Read error: Connection reset by peer)
2022-12-21 15:44:21 +0100thongpv(~thongpv87@2402:9d80:325:cf1c:fe04:78bd:e74a:9092)
2022-12-21 15:46:46 +0100o-90(~o-90@gateway/tor-sasl/o-90)
2022-12-21 15:49:42 +0100`2jt(~jtomas@84.red-88-17-186.dynamicip.rima-tde.net) (Remote host closed the connection)
2022-12-21 15:59:27 +0100poljar1(~poljar@93-139-83-160.adsl.net.t-com.hr) (Remote host closed the connection)
2022-12-21 16:00:40 +0100poljar1(~poljar@93-139-83-160.adsl.net.t-com.hr)
2022-12-21 16:01:50 +0100o-90(~o-90@gateway/tor-sasl/o-90) (Ping timeout: 255 seconds)
2022-12-21 16:03:07 +0100Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542)
2022-12-21 16:05:37 +0100thongpv(~thongpv87@2402:9d80:325:cf1c:fe04:78bd:e74a:9092) (Remote host closed the connection)
2022-12-21 16:05:53 +0100ec_(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2022-12-21 16:06:48 +0100ec_(~ec@gateway/tor-sasl/ec)
2022-12-21 16:08:35 +0100thongpv87(~thongpv87@2402:9d80:325:cf1c:2a9d:9762:2117:9fda)
2022-12-21 16:10:24 +0100slac59843(~slack1256@186.11.25.60)
2022-12-21 16:12:59 +0100slack1256(~slack1256@191.125.99.210) (Ping timeout: 256 seconds)
2022-12-21 16:13:30 +0100thongpv(~thongpv87@2402:9d80:325:cf1c:2a9d:9762:2117:9fda)
2022-12-21 16:13:47 +0100danza(~francesco@151.35.35.238)
2022-12-21 16:14:18 +0100thongpv(~thongpv87@2402:9d80:325:cf1c:2a9d:9762:2117:9fda) (Client Quit)
2022-12-21 16:15:36 +0100thongpv(~thongpv87@2402:9d80:325:cf1c:2a9d:9762:2117:9fda)
2022-12-21 16:16:00 +0100beefbambi(~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer)
2022-12-21 16:16:18 +0100beefbambi(~beefbambi@183.82.207.16)
2022-12-21 16:16:22 +0100thongpv(~thongpv87@2402:9d80:325:cf1c:2a9d:9762:2117:9fda) (Client Quit)
2022-12-21 16:16:40 +0100thongpv87(~thongpv87@2402:9d80:325:cf1c:2a9d:9762:2117:9fda) (Quit: Leaving)
2022-12-21 16:16:59 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 248 seconds)
2022-12-21 16:17:14 +0100thongpv(~thongpv87@2402:9d80:325:cf1c:2a9d:9762:2117:9fda)
2022-12-21 16:18:33 +0100bjourne(~bjorn@94.191.153.229) (Read error: Connection reset by peer)
2022-12-21 16:19:32 +0100kuribas(~user@ip-188-118-57-242.reverse.destiny.be) (Ping timeout: 246 seconds)
2022-12-21 16:19:34 +0100Sgeo(~Sgeo@user/sgeo)
2022-12-21 16:27:43 +0100bjourne(~bjorn@94.191.153.229)
2022-12-21 16:27:47 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2022-12-21 16:28:07 +0100Xeroine(~Xeroine@user/xeroine) (Quit: ZNC 1.8.2+deb2+b1 - https://znc.in)
2022-12-21 16:28:55 +0100Xeroine(~Xeroine@user/xeroine)
2022-12-21 16:29:59 +0100slac59843slack1256
2022-12-21 16:32:06 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-12-21 16:34:16 +0100danza(~francesco@151.35.35.238) (Read error: Connection reset by peer)
2022-12-21 16:34:56 +0100gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de)
2022-12-21 16:37:01 +0100bjourne(~bjorn@94.191.153.229) (Read error: Connection reset by peer)
2022-12-21 16:37:23 +0100pagnol(~user@77-173-85-148.fixed.kpn.net) (Ping timeout: 264 seconds)
2022-12-21 16:38:38 +0100kuribas(~user@ip-188-118-57-242.reverse.destiny.be)
2022-12-21 16:41:29 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-12-21 16:44:04 +0100o-90(~o-90@gateway/tor-sasl/o-90)
2022-12-21 16:45:05 +0100morb(~morb@pool-72-80-94-112.nycmny.fios.verizon.net)
2022-12-21 16:45:11 +0100jao(~jao@140.68.79.188.dynamic.jazztel.es) (Ping timeout: 264 seconds)
2022-12-21 16:47:40 +0100mbuf(~Shakthi@49.204.134.183) (Quit: Leaving)
2022-12-21 16:51:14 +0100o-90(~o-90@gateway/tor-sasl/o-90) (Remote host closed the connection)
2022-12-21 16:51:32 +0100ec(~ec@gateway/tor-sasl/ec)
2022-12-21 16:52:43 +0100morb(~morb@pool-72-80-94-112.nycmny.fios.verizon.net) (Ping timeout: 248 seconds)
2022-12-21 16:54:17 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-12-21 16:55:23 +0100ec_(~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds)
2022-12-21 16:56:35 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-12-21 17:00:27 +0100eikke(~NicolasT@user/NicolasT) (Read error: Connection reset by peer)
2022-12-21 17:00:36 +0100nek0(~nek0@2a01:4f8:222:2b41::12) (Quit: The Lounge - https://thelounge.chat)
2022-12-21 17:05:22 +0100zns(~zns@user/zns) ()
2022-12-21 17:08:20 +0100cheater(~Username@user/cheater)
2022-12-21 17:08:26 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-12-21 17:08:26 +0100 <cheater> hello
2022-12-21 17:08:41 +0100 <cheater> is anyone hiring? (dm)
2022-12-21 17:13:26 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-12-21 17:13:39 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-12-21 17:14:11 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-12-21 17:17:05 +0100eikke(~NicolasT@user/NicolasT)
2022-12-21 17:17:39 +0100lortabac(~lortabac@88.125.6.227) (Quit: WeeChat 2.8)
2022-12-21 17:21:36 +0100igghibu(~igghibu@178.249.211.100)
2022-12-21 17:22:47 +0100thongpv87(~thongpv87@2402:9d80:320:a717:feaf:9f69:bb0b:e288)
2022-12-21 17:23:19 +0100thongpv(~thongpv87@2402:9d80:325:cf1c:2a9d:9762:2117:9fda) (Read error: Connection reset by peer)
2022-12-21 17:25:24 +0100beefbambi(~beefbambi@183.82.207.16) (Read error: Connection reset by peer)
2022-12-21 17:25:43 +0100emmanuelux(~emmanuelu@user/emmanuelux)
2022-12-21 17:26:01 +0100beefbambi(~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377)
2022-12-21 17:26:25 +0100beefbambi(~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer)
2022-12-21 17:26:43 +0100beefbambi(~beefbambi@183.82.207.16)
2022-12-21 17:27:52 +0100igghibu(~igghibu@178.249.211.100) (Quit: Textual IRC Client: www.textualapp.com)
2022-12-21 17:27:56 +0100troydm(~troydm@host-176-37-124-197.b025.la.net.ua)
2022-12-21 17:30:53 +0100eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
2022-12-21 17:33:33 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-12-21 17:35:35 +0100eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 264 seconds)
2022-12-21 17:38:04 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-12-21 17:38:59 +0100segfaultfizzbuzz(~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
2022-12-21 17:38:59 +0100gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2022-12-21 17:40:22 +0100Me-me(~me-me@v.working.name)
2022-12-21 17:42:40 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2022-12-21 17:46:25 +0100razetime(~quassel@49.207.230.181) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2022-12-21 17:47:00 +0100 <[exa]> cheater: wishful
2022-12-21 17:47:56 +0100 <cheater> [exa]: thanks. what's your relation to them?
2022-12-21 17:48:42 +0100 <[exa]> I meant "wishful thinking" not "Wishful company is hiring" sorry. :D
2022-12-21 17:48:51 +0100 <cheater> :/
2022-12-21 17:48:57 +0100 <[exa]> but yeah, :/
2022-12-21 17:49:31 +0100 <cheater> i'm just disappointed by the trolling, that's all
2022-12-21 17:50:04 +0100 <[exa]> I didn't try to troll :/
2022-12-21 17:52:07 +0100slack9578(~slack1256@191.125.99.210)
2022-12-21 17:52:54 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:1dcc:166b:1177:c3e0)
2022-12-21 17:54:11 +0100myShoggoth(~myShoggot@97-120-71-74.ptld.qwest.net)
2022-12-21 17:54:36 +0100slack1256(~slack1256@186.11.25.60) (Ping timeout: 265 seconds)
2022-12-21 17:58:40 +0100 <maerwald> how do you debug why a haskell binary gets killed on macOS
2022-12-21 17:59:00 +0100 <cheater> strace
2022-12-21 17:59:09 +0100 <dsal> maerwald: It'll leave a pretty detailed crash dump
2022-12-21 17:59:37 +0100 <dsal> Open Console.app and see if the crash report helps
2022-12-21 18:01:25 +0100 <maerwald> what is Console.app?
2022-12-21 18:01:35 +0100 <cheater> the terminal
2022-12-21 18:02:05 +0100 <maerwald> not sure this information is useful
2022-12-21 18:04:13 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:1dcc:166b:1177:c3e0) (Remote host closed the connection)
2022-12-21 18:05:01 +0100 <maerwald> apparently... if you curl a binary and cp it... mac will kill it
2022-12-21 18:05:01 +0100cheater(~Username@user/cheater) (Read error: Connection reset by peer)
2022-12-21 18:05:08 +0100 <maerwald> if you curl it and move it, it's fine
2022-12-21 18:05:50 +0100 <int-e> there's a lot of context here
2022-12-21 18:06:42 +0100nek0(~nek0@2a01:4f8:222:2b41::12)
2022-12-21 18:07:30 +0100 <maerwald> why does Apple hate developers?
2022-12-21 18:08:20 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-12-21 18:09:46 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-12-21 18:10:50 +0100 <chreekat> <maerwald> "apparently... if you curl a..." <- Ha
2022-12-21 18:10:56 +0100 <int-e> It's not hate, I think, it's indifference.
2022-12-21 18:12:18 +0100 <maerwald> A new great cabal-cache version was released
2022-12-21 18:12:39 +0100 <maerwald> we fixed some concurrency bugs
2022-12-21 18:13:30 +0100 <maerwald> (my hidden plan to deprecate nix...)
2022-12-21 18:15:53 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-12-21 18:17:20 +0100kuribas(~user@ip-188-118-57-242.reverse.destiny.be) (Quit: ERC (IRC client for Emacs 27.1))
2022-12-21 18:22:09 +0100mvk(~mvk@2607:fea8:5ce3:8500::6126)
2022-12-21 18:22:34 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2022-12-21 18:22:45 +0100mvk(~mvk@2607:fea8:5ce3:8500::6126) (Client Quit)
2022-12-21 18:29:21 +0100 <dsal> Console.app is an application on the mac that displays logs and crash reports.
2022-12-21 18:29:46 +0100econo(uid147250@user/econo)
2022-12-21 18:34:03 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:1dcc:166b:1177:c3e0)
2022-12-21 18:37:01 +0100 <maerwald[m]> dsal: a GUI app?
2022-12-21 18:37:42 +0100 <dsal> Yeah. Though it's just showing you files that appear in various places.
2022-12-21 18:38:01 +0100 <maerwald[m]> I'm not in GUI, I'm in a tmate session
2022-12-21 18:38:23 +0100 <maerwald[m]> But it's fixed by doing mv instead of cp
2022-12-21 18:38:33 +0100 <maerwald[m]> Some insanity wrt signature cache
2022-12-21 18:38:57 +0100 <dsal> ~/Library/Logs/DiagnosticReports
2022-12-21 18:40:35 +0100 <madnight> Is it possible to construct a contravariant Functor instance for all Functors instances by flipping the arrows, from (a -> b) -> f a -> f b to (a -> b) -> f b -> f a? If thats not possible why?
2022-12-21 18:40:48 +0100vpan(~0@212.117.1.172) (Quit: Leaving.)
2022-12-21 18:42:20 +0100 <monochrom> Is it possible for even (a -> b) -> Identity b -> Identity a ?
2022-12-21 18:42:27 +0100 <geekosaur> how could it be possible? you'd have to manufacture an a
2022-12-21 18:42:49 +0100 <geekosaur> but you only have something that can manufacture a b
2022-12-21 18:43:43 +0100freeside(~mengwong@103.252.202.159) (Ping timeout: 256 seconds)
2022-12-21 18:45:15 +0100 <monochrom> Meta comment: A useful thinking skill is whenever you have a generalized idea you first ask yourself about a trivial concrete example.
2022-12-21 18:45:49 +0100 <monochrom> Given that 99.99% of grand ideas are wrong, usually you will discover simple counterexamples such as mine in no time.
2022-12-21 18:46:59 +0100 <maerwald[m]> monochrom: I have an idea of a world without mac
2022-12-21 18:47:17 +0100 <monochrom> :)
2022-12-21 18:47:29 +0100 <maerwald[m]> Example: imagine there was no half assed toolchain
2022-12-21 18:47:53 +0100 <monochrom> But that is not a very grand generalized idea. The grand generalized version is: I have an idea of a world without OSes at all. >:)
2022-12-21 18:48:14 +0100 <maerwald[m]> It's called unix
2022-12-21 18:48:18 +0100 <monochrom> haha
2022-12-21 18:48:21 +0100 <maerwald[m]> But today people still don't get it
2022-12-21 18:49:16 +0100 <maerwald[m]> We live in the world of "integration" now
2022-12-21 18:49:48 +0100 <maerwald[m]> Because people gave up on designing grand ideas.
2022-12-21 18:50:16 +0100Midjak(~Midjak@82.66.147.146)
2022-12-21 18:50:22 +0100Midjak2(~Midjak@82.66.147.146)
2022-12-21 18:50:53 +0100Midjak2(~Midjak@82.66.147.146) (Remote host closed the connection)
2022-12-21 18:50:53 +0100Midjak(~Midjak@82.66.147.146) (Remote host closed the connection)
2022-12-21 18:51:29 +0100Midjak(~Midjak@82.66.147.146)
2022-12-21 18:54:11 +0100nschoe(~q@141.101.51.197) (Ping timeout: 268 seconds)
2022-12-21 18:54:41 +0100 <madnight> geekosaur: I thought I can put the a in a -> b into negative position instead of positive position like in a normal Functor.
2022-12-21 18:58:01 +0100freeside(~mengwong@103.252.202.159)
2022-12-21 19:00:07 +0100jonathanx(~jonathan@h-178-174-176-109.a357.priv.bahnhof.se) (Remote host closed the connection)
2022-12-21 19:01:40 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-12-21 19:03:28 +0100 <geekosaur> I'm not understanding what you're saying. can you show how you'd do that for monochrom's example?
2022-12-21 19:05:00 +0100 <phileasfogg> good evening, I'm still on implementing the bra-ket notation, trying to take the easy path (probably). Do you think this makes sense?
2022-12-21 19:05:03 +0100 <phileasfogg> https://paste.tomsmeding.com/DAqNbK7O
2022-12-21 19:05:53 +0100 <phileasfogg> I admit, I'm still a beginner
2022-12-21 19:06:54 +0100 <phileasfogg> the thing is, I'm still not sure to how distinguish the row/col vector, using the linear library.
2022-12-21 19:07:03 +0100 <phileasfogg> *how to
2022-12-21 19:07:04 +0100 <madnight> monochrom: for Idenity I would try the following:
2022-12-21 19:07:08 +0100 <madnight> instance Contravariant f => Contravariant (Identity f) where
2022-12-21 19:07:13 +0100 <madnight> contramap f = identity . contramap f . runIdentity
2022-12-21 19:09:11 +0100 <phileasfogg> ignore the last line, that supossed to be <psi|psi> type of thing.
2022-12-21 19:10:13 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-12-21 19:12:26 +0100L29Ah(~L29Ah@wikipedia/L29Ah) (Ping timeout: 246 seconds)
2022-12-21 19:15:39 +0100freeside(~mengwong@103.252.202.159) (Ping timeout: 252 seconds)
2022-12-21 19:16:54 +0100 <geekosaur> madnight, I suspect that's wrong. but all you've done is recursed on the contramap. What's your base case look like?
2022-12-21 19:17:43 +0100nyr(~nyr@user/nyr) (Ping timeout: 256 seconds)
2022-12-21 19:17:44 +0100eikke(~NicolasT@user/NicolasT) (Ping timeout: 265 seconds)
2022-12-21 19:20:16 +0100gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de)
2022-12-21 19:21:06 +0100 <madnight> geekosaur: Hmm, I adapted this code here https://hackage.haskell.org/package/contravariant-1.4/docs/src/Data.Functor.Contravariant.html#lin… maybe you could explain this one to me?
2022-12-21 19:22:51 +0100 <c_wraith> madnight: at some level, the root difference is the different kinds of Identity and MaybeT
2022-12-21 19:24:33 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-12-21 19:26:37 +0100bjourne(~bjorn@94.191.153.229)
2022-12-21 19:26:38 +0100beefbambi(~beefbambi@183.82.207.16) (Read error: Connection reset by peer)
2022-12-21 19:26:50 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 272 seconds)
2022-12-21 19:27:29 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-12-21 19:27:46 +0100beefbambi(~beefbambi@183.82.207.16)
2022-12-21 19:27:59 +0100 <madnight> c_wraith: sure, that's what the compiler is telling me, but it doesn't give me good intuiton for why there is no Contravariant Identity Functor with simply arrows reversed, so if someone could explain it to me in other terms than "kinds mismatch" I would be very thankful
2022-12-21 19:29:24 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-12-21 19:29:29 +0100slack9578(~slack1256@191.125.99.210) (Read error: Connection reset by peer)
2022-12-21 19:30:47 +0100slack1256(~slack1256@186.11.25.60)
2022-12-21 19:30:49 +0100gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.7.1)
2022-12-21 19:32:50 +0100pagnol(~user@213-205-209-87.ftth.glasoperator.nl)
2022-12-21 19:34:04 +0100 <EvanR> Contravariant is for the same sorts of types that Functor is for
2022-12-21 19:34:14 +0100 <EvanR> you can't make a Functor out of a Identity f either
2022-12-21 19:34:44 +0100 <EvanR> Identity is a Functor not Identity f
2022-12-21 19:34:53 +0100rburkholder(~blurb@96.45.2.121) (Ping timeout: 268 seconds)
2022-12-21 19:35:42 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 272 seconds)
2022-12-21 19:36:12 +0100beefbambi(~beefbambi@183.82.207.16) (Read error: Connection reset by peer)
2022-12-21 19:37:00 +0100beefbambi(~beefbambi@183.82.207.16)
2022-12-21 19:38:15 +0100ubert(~Thunderbi@2a02:8109:abc0:6434:64d2:8d4f:48b2:5f96) (Remote host closed the connection)
2022-12-21 19:38:54 +0100 <EvanR> the kinds kind of explains it in the same way that it's not surprising that numbers can't be used where functions are expected, or a matrix can't be used where numbers are expected
2022-12-21 19:39:56 +0100freeside(~mengwong@103.252.202.159)
2022-12-21 19:40:59 +0100geekosaurfinishes looking at the link and is now only confused…
2022-12-21 19:43:05 +0100 <EvanR> IdentityT f is another story
2022-12-21 19:44:16 +0100 <c_wraith> please tell me IdentityT isn't real
2022-12-21 19:44:32 +0100 <EvanR> lol
2022-12-21 19:44:43 +0100 <EvanR> Identity = IdentityT Identity
2022-12-21 19:44:45 +0100freeside(~mengwong@103.252.202.159) (Ping timeout: 268 seconds)
2022-12-21 19:46:51 +0100 <mauke> madnight: I'm on the other side of the wall. I don't understand why there would be a contravariant identity functor. can you explain why you think there should be?
2022-12-21 19:47:36 +0100wootehfoot(~wootehfoo@user/wootehfoot)
2022-12-21 19:47:56 +0100 <madnight> mauke: https://ncatlab.org/nlab/show/contravariant+functor A contravariant functor is like a functor but it reverses the directions of the morphisms. (Between groupoids, contravariant functors are essentially the same as functors.)
2022-12-21 19:48:34 +0100 <mauke> that sounds like category theory
2022-12-21 19:48:37 +0100 <mauke> I only know haskell
2022-12-21 19:48:46 +0100 <madnight> mauke: I'm following this idea for Haskell, by trying to reverse the directions of morphisms (reverse the arrows in Haskell)
2022-12-21 19:49:03 +0100 <EvanR> no, no, morphisms are functions and arrows are function types
2022-12-21 19:49:20 +0100 <c_wraith> Haskell classes don't capture the entirety of the category theory they're named after
2022-12-21 19:49:31 +0100 <EvanR> the arrow gets reversed at the type level
2022-12-21 19:50:28 +0100 <mauke> madnight: ok, I see it's talking about an opposite category C^op
2022-12-21 19:50:38 +0100 <mauke> madnight: does such a thing exist, particularly in haskell types?
2022-12-21 19:50:57 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-12-21 19:51:29 +0100 <EvanR> it's the same category but all the function types are backwards
2022-12-21 19:51:31 +0100 <madnight> mauke: Well it's not really well formulated but there is Hask the category of Haskell types and functions.
2022-12-21 19:51:41 +0100 <mauke> I mean, morphisms are basically functions in Hask, right?
2022-12-21 19:51:49 +0100 <madnight> mauke: yes
2022-12-21 19:51:54 +0100 <geekosaur> haskell functions can't be reversed, though
2022-12-21 19:52:00 +0100 <mauke> so to construct Hask^op you'd have to turn every function A -> B into a function of type B -> A
2022-12-21 19:52:05 +0100 <mauke> which is impossible
2022-12-21 19:52:06 +0100Lycurgus(~juan@user/Lycurgus)
2022-12-21 19:52:10 +0100 <geekosaur> (consider `const ()`
2022-12-21 19:52:11 +0100 <geekosaur> )
2022-12-21 19:52:21 +0100 <EvanR> the morphisms of the opposite category are the same morphisms as the original category
2022-12-21 19:52:52 +0100 <EvanR> e.g. chr :: Int -> Chr is in Hask op, but it goes the other way Chr -> Int
2022-12-21 19:54:15 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:1dcc:166b:1177:c3e0) (Remote host closed the connection)
2022-12-21 19:55:35 +0100 <madnight> and (Hask^op)^op = Hask
2022-12-21 19:55:46 +0100maukeconsiders absurd :: Void -> a
2022-12-21 19:56:05 +0100 <EvanR> to comprehend polymorphic functions, you could image a separate morphism for each a
2022-12-21 19:56:36 +0100 <mauke> yeah, but absurd^op would be able to construct values of type Void, no?
2022-12-21 19:56:52 +0100 <EvanR> no
2022-12-21 19:57:09 +0100freeside(~mengwong@103.252.202.159)
2022-12-21 19:57:35 +0100 <EvanR> it's the same function but the types are read backwards to make all the jargon shenanigans work out
2022-12-21 19:57:49 +0100 <EvanR> such as, a contravariant functor is just a functor in the opposite category what's the problem
2022-12-21 19:58:30 +0100 <mauke> if you're just playing with labels, you can't actually implement it within haskell, though
2022-12-21 19:58:55 +0100 <EvanR> the Contravariant class effectively gets you the same thing but swapping the types
2022-12-21 19:59:00 +0100 <EvanR> by*
2022-12-21 19:59:35 +0100 <EvanR> works great!
2022-12-21 20:00:06 +0100 <geekosaur> so (b -> a) in Hask^op is the same as (a -> b) in Hask, just written "backwards"?
2022-12-21 20:00:28 +0100 <geekosaur> I think you'd have trouble representing that in Haskell
2022-12-21 20:00:41 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-12-21 20:00:59 +0100 <madnight> geekosaur: wait, whats so hard about reversing arrows?
2022-12-21 20:01:02 +0100 <mauke> the Contravariant class doesn't do all the Hask^op stuff from what I can tell
2022-12-21 20:01:07 +0100 <EvanR> chr :: Int -> Char is the same as chr' :: Char -> Int in hask op, sometimes written Int <- Char lol
2022-12-21 20:01:12 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:1dcc:166b:1177:c3e0)
2022-12-21 20:01:22 +0100 <EvanR> "all the Hask^op" stuff?
2022-12-21 20:01:35 +0100 <mauke> yes, universally reversing arrows and stuff
2022-12-21 20:01:54 +0100 <EvanR> it's a reversal of the types
2022-12-21 20:02:13 +0100 <EvanR> there's no sense in which the morphisms whatever they are change
2022-12-21 20:02:28 +0100 <EvanR> C and C^op have "the same morphisms"
2022-12-21 20:02:40 +0100 <mauke> I don't think they do
2022-12-21 20:02:52 +0100 <EvanR> I didn't write the definition
2022-12-21 20:03:19 +0100 <mauke> there is a 1:1 mapping between their morphisms, but they're not the same
2022-12-21 20:04:45 +0100 <madnight> mauke: that's correct
2022-12-21 20:04:50 +0100 <EvanR> sounds like you think there's some kind of machinery that happens on each morphism to produce a different morphism that "does" something different, but it wouldn't make sense since speaking of arbitrary categories, the elements of a category don't necessarily have any actual form
2022-12-21 20:05:21 +0100 <EvanR> but opposite category is a thing for any category
2022-12-21 20:05:26 +0100 <mauke> "the same (isomorphic) collections of objects and morphisms"
2022-12-21 20:05:32 +0100 <mauke> that's a very CT point of view
2022-12-21 20:05:42 +0100 <mauke> there's an isomorphism, so it's basically the same :-)
2022-12-21 20:06:04 +0100 <mauke> EvanR: yes, but we're not in any category
2022-12-21 20:06:05 +0100 <EvanR> I don't think there's much a distinction to be made
2022-12-21 20:06:06 +0100kalj(~kalj@static-212-247-159-251.cust.tele2.se)
2022-12-21 20:06:06 +0100califax(~califax@user/califx) (Remote host closed the connection)
2022-12-21 20:06:11 +0100 <mauke> we're in Haskell
2022-12-21 20:06:34 +0100 <madnight> mauke: sure, but we can think of Hask
2022-12-21 20:06:46 +0100 <mauke> you can put on your CT glasses and look at all function types "backwards", but that's different from providing contramap within the language
2022-12-21 20:07:12 +0100califax(~califax@user/califx)
2022-12-21 20:07:21 +0100 <madnight> mauke: but why?
2022-12-21 20:07:28 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2022-12-21 20:07:48 +0100 <monochrom> "Identity f" is a kind error that reflects a deep conceptual error.
2022-12-21 20:07:58 +0100 <mauke> that's like asking why blue things aren't red
2022-12-21 20:08:08 +0100geekosaurkinda wants to hear kmett's take on this, but suspects he wouldn't understand it 🙂
2022-12-21 20:08:20 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-12-21 20:08:34 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-12-21 20:09:00 +0100mauketries to think better
2022-12-21 20:09:06 +0100 <kalj> What is the best way to do take a single element from a Set and also get the remaining Set? Something like (x:xs) = myList for lists.
2022-12-21 20:09:09 +0100 <madnight> mauke: but if thats the answer to my question, then you inital phrase would have been like "red is not blue" which is like saying abslouty nothing
2022-12-21 20:09:09 +0100 <monochrom> My personal attitude is that until I see working code there is nothing to discuss.
2022-12-21 20:09:51 +0100 <EvanR> kalj, there's minView and maxView that does that
2022-12-21 20:09:53 +0100 <madnight> mauke: so then my question would be why are you saying nothing, instead of providing insightful answers?
2022-12-21 20:10:01 +0100 <monochrom> The perks of thinking like a scientist and engineer, not like an armchair philosopher (different from real philosophers, mind you).
2022-12-21 20:10:34 +0100 <mauke> EvanR: I think I see why you're right. now I have to figure out why you're wrong
2022-12-21 20:11:23 +0100 <kalj> EvanR: ah, thanks
2022-12-21 20:11:34 +0100 <EvanR> consider a simpler category and play with it's opposite, like A B C and six non trivial morphisms
2022-12-21 20:11:44 +0100 <EvanR> kalj, oh and Data.Set.split
2022-12-21 20:12:16 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-12-21 20:13:35 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 252 seconds)
2022-12-21 20:14:10 +0100 <EvanR> madnight, are you asking about the difference between Contravariant instance for IdentityT f (ok) vs Identity f (nonsense)
2022-12-21 20:14:34 +0100 <monochrom> I wonder if splitRoot would help with the question the other day about peeking an arbitrary element but in O(1) time.
2022-12-21 20:14:40 +0100 <kalj> I guess if I want to take the elements added in the order they were inserted (FIFO), then I have to use another data structure? A queue but with only unique elements. What would be suitable for that?
2022-12-21 20:15:05 +0100 <EvanR> maybe you want a Data.Map ?
2022-12-21 20:15:19 +0100 <EvanR> or wait
2022-12-21 20:15:31 +0100 <EvanR> what happens if you insert a duplicate? It doesn't get inserted at all?
2022-12-21 20:15:39 +0100 <monochrom> Priority search queue :)
2022-12-21 20:16:02 +0100 <EvanR> or does the original unique value suddenly disappear from wherever it is
2022-12-21 20:16:25 +0100 <kalj> EvanR the original value remains, and the new one is not added anywhere
2022-12-21 20:16:42 +0100 <EvanR> *thinks*
2022-12-21 20:16:49 +0100 <kalj> :)
2022-12-21 20:16:54 +0100 <c_wraith> this isn't a common data structure
2022-12-21 20:16:59 +0100 <geekosaur> there's a Map that retains an insertion order, which is not the same as a pq
2022-12-21 20:18:03 +0100 <geekosaur> https://hackage.haskell.org/package/ordered-containers
2022-12-21 20:18:26 +0100 <kalj> It seems hard to both be fast with the dequeing and the uniqueEnque thingy
2022-12-21 20:18:59 +0100 <EvanR> OMap...
2022-12-21 20:19:01 +0100 <kalj> I think I will more often do the uniqueEnque than the deque
2022-12-21 20:21:55 +0100 <EvanR> oh, I missed the FIFO part
2022-12-21 20:22:14 +0100 <mauke> EvanR: why is there no instance Contravariant Identity? (that is, what is your answer?)
2022-12-21 20:22:30 +0100Lycurgus(~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz)
2022-12-21 20:22:59 +0100 <kalj> geekosaur: this -- OrderedSet -- looks suitable https://hackage.haskell.org/package/ordered-containers-0.2.3/docs/Data-Set-Ordered.html#t:OSet
2022-12-21 20:23:34 +0100 <madnight> EvanR: yeah, simply explain to me in simple terms why Indntity f is nonsense and I would be happy :)
2022-12-21 20:23:47 +0100mikoto-chan(~mikoto-ch@2001:999:488:d7ee:b232:de3f:f786:6eb)
2022-12-21 20:24:18 +0100nschoe(~q@2a01:e0a:8e:a190:b0d3:974:1a5:fe11)
2022-12-21 20:24:45 +0100 <EvanR> mauke, you mean, why can't you implement contramap for f = Identity?
2022-12-21 20:24:59 +0100 <mauke> if that's part of your answer
2022-12-21 20:25:18 +0100 <EvanR> :t contramap
2022-12-21 20:25:19 +0100 <lambdabot> Contravariant f => (a -> b) -> f b -> f a
2022-12-21 20:25:36 +0100 <EvanR> you'd have to produce an `a' right and wrap it in Identity
2022-12-21 20:25:56 +0100 <EvanR> similar to how you can't write an a -> b
2022-12-21 20:26:04 +0100 <kalj> OSet doesn't have a view though...
2022-12-21 20:26:08 +0100 <mauke> I'll just use the normal Functor instance and reverse all the arrows
2022-12-21 20:26:28 +0100 <EvanR> then the types don't match
2022-12-21 20:26:43 +0100 <mauke> to which madnight would probably say "why not?"
2022-12-21 20:26:59 +0100 <EvanR> in the normal functor instance you "have an a"
2022-12-21 20:27:13 +0100 <EvanR> you get it from the b -> a and the b
2022-12-21 20:27:36 +0100 <c_wraith> ah, the "if Haskell were Prolog" argument.
2022-12-21 20:27:39 +0100 <mauke> my intuition says that contramap is trying to represent the (abstract, theoretical) Hask^op morphisms using ordinary Haskell functions (with source/target types flipped)
2022-12-21 20:28:10 +0100 <mauke> and that doesn't work universally
2022-12-21 20:28:54 +0100 <EvanR> you still seem to think the elements of Hask^op are some bizarre other thing
2022-12-21 20:29:21 +0100 <mauke> by which I mean that in contramap :: (b -> a) -> f a -> f b, the (b -> a) part is not just a "backwards view" of the Hask category, but is an actual function which has to be implementable somehow
2022-12-21 20:29:44 +0100 <mauke> er, a backwards view of an (a -> b) arrow in Hask
2022-12-21 20:29:48 +0100 <EvanR> when contramap actually works, yeah you are provided some actual b -> a
2022-12-21 20:30:12 +0100 <EvanR> which corresponds to the type a <- b in Hask^op
2022-12-21 20:30:19 +0100 <EvanR> but is just some function
2022-12-21 20:31:31 +0100 <mauke> ooh, maybe that's what I've been missing
2022-12-21 20:32:07 +0100 <mauke> the arrows in (b -> a) -> (f a -> f b) are (conceptually) different things
2022-12-21 20:32:27 +0100danza(~francesco@151.35.217.251)
2022-12-21 20:32:47 +0100 <mauke> the middle arrow is part of the functor mapping. the outer arrows are morphisms in some category
2022-12-21 20:33:21 +0100 <mauke> and we're trying to do it all in the same environment: Haskell
2022-12-21 20:33:22 +0100 <EvanR> yeah the middle arrow is the meta mapping
2022-12-21 20:33:50 +0100 <c_wraith> madnight: the big conceptual thing to realize is that category theory is far more abstract than Haskell. Haskell is constrained by requirements to be computable and by details of how the type system works.
2022-12-21 20:34:17 +0100nschoe(~q@2a01:e0a:8e:a190:b0d3:974:1a5:fe11) (Quit: Switching off)
2022-12-21 20:34:36 +0100 <madnight> Wait so, can someone explain me how this works: contramap f = IdentityT . contramap f . runIdentityT this actually types checks and works in Hask (Haskell)
2022-12-21 20:34:45 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-12-21 20:34:48 +0100 <EvanR> :k IdentityT
2022-12-21 20:34:49 +0100 <lambdabot> (k -> *) -> k -> *
2022-12-21 20:34:54 +0100 <EvanR> :k Identity
2022-12-21 20:34:55 +0100 <lambdabot> * -> *
2022-12-21 20:35:05 +0100 <EvanR> :k IdentityT Maybe
2022-12-21 20:35:06 +0100 <lambdabot> * -> *
2022-12-21 20:35:14 +0100 <mauke> IdentityT is ... a type of identity
2022-12-21 20:35:39 +0100 <EvanR> :k Char
2022-12-21 20:35:40 +0100 <lambdabot> *
2022-12-21 20:35:41 +0100 <mauke> madnight: that line basically says: if you have a contrafunctor f, then "identity f" is still a contrafunctor
2022-12-21 20:36:08 +0100 <mauke> well, that's misleading
2022-12-21 20:36:25 +0100 <mauke> there's both a type constructor "f" and a function parameter "f" here, at least in my head
2022-12-21 20:36:36 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-12-21 20:37:15 +0100 <EvanR> :t runIdentityT
2022-12-21 20:37:16 +0100 <lambdabot> forall k (f :: k -> *) (a :: k). IdentityT f a -> f a
2022-12-21 20:37:21 +0100 <mauke> instance Contravariant f => Contravariant (IdentityT f) where { contramap g = IdentityT . contramap g . runIdentityT }
2022-12-21 20:37:47 +0100 <EvanR> runIdentityT "unwraps" a trivial wrapper to get an f a which is a contravariant value that you can contramap
2022-12-21 20:37:55 +0100 <EvanR> then the result is rewrapped
2022-12-21 20:38:01 +0100 <mauke> so ... the "instance Contravariant f => Contravariant (IdentityT f)" part says that if you have a contravariant functor f, then "identity f" is also a contravariant functor
2022-12-21 20:38:24 +0100foul_owl(~kerry@157.97.134.157) (Ping timeout: 272 seconds)
2022-12-21 20:38:40 +0100 <mauke> the contramap implementation is essentially a proof (?) of that claim
2022-12-21 20:39:17 +0100 <EvanR> there's many levels of triviality on top of each other leading to potential non-obvious vacuousness, are we sure we're not doing category theory? xD
2022-12-21 20:39:25 +0100thegeekinside(~thegeekin@189.128.148.159) (Remote host closed the connection)
2022-12-21 20:39:42 +0100thegeekinside(~thegeekin@189.128.148.159)
2022-12-21 20:39:49 +0100 <mauke> there's not much meat here; the essential part here is that "contramap g" is calling the contramap method from f's instance of Contravariant
2022-12-21 20:40:17 +0100 <mauke> hmm
2022-12-21 20:40:26 +0100danza(~francesco@151.35.217.251) (Read error: Connection reset by peer)
2022-12-21 20:40:33 +0100 <mauke> I guess IdentityT would be a mapping between functors, in CT terms
2022-12-21 20:40:43 +0100Guest8974(~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2022-12-21 20:40:46 +0100 <mauke> whereas Identity is just a functor
2022-12-21 20:40:49 +0100 <EvanR> the identity natural transformation
2022-12-21 20:41:29 +0100 <zzz> anyone knows why lambdabot gives this message: [ERROR] Plugin.djinn: Djinn command failed: djinn: readCreateProcess: posix_spawnp: does not exist (No such file or directory) ?
2022-12-21 20:41:30 +0100 <madnight> mauke: a mapping between functors in the sense of natural transformation?
2022-12-21 20:41:48 +0100 <mauke> madnight: I haven't gotten that far in my CT tutorial yet :-)
2022-12-21 20:42:03 +0100 <mauke> but probably
2022-12-21 20:42:16 +0100 <geekosaur> zzza, you need to install https://hackage.haskell.org/package/djinn
2022-12-21 20:42:42 +0100 <geekosaur> it runs an external program which you need to install separately
2022-12-21 20:42:59 +0100 <geekosaur> zzz ^
2022-12-21 20:43:07 +0100 <zzz> since when is this the case? never had that problem before
2022-12-21 20:43:23 +0100 <madnight> Hmm, the more I talk to you, the more I come to the conclusion that it might be better to learn Haskell first and then CT, instead of the other way around.
2022-12-21 20:43:27 +0100 <geekosaur> since always
2022-12-21 20:43:53 +0100 <EvanR> haskell is a pretty weird 1 example to have when learning category theory
2022-12-21 20:44:03 +0100 <EvanR> there's a lot more to it
2022-12-21 20:44:10 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-12-21 20:44:23 +0100 <EvanR> and having people telling you haskell isn't even a category doesn't help
2022-12-21 20:44:43 +0100 <geekosaur> it is possible that, if you used to use cabal-v1 style installs, it installs it for you in such a way that it can be found — but using v2-install you would need to cabal run lambdabot for it to be found
2022-12-21 20:46:44 +0100 <zzz> https://paste.jrvieira.com/1671651995584 -.-
2022-12-21 20:47:49 +0100unit73e(~emanuel@2001:818:e8dd:7c00:656:e5ff:fe72:9d36)
2022-12-21 20:47:50 +0100 <EvanR> <> has been reappropriated a few times in history
2022-12-21 20:48:14 +0100 <EvanR> at least once, I mean. So you'll need to import Prelude hiding ((<>)) perhaps
2022-12-21 20:48:15 +0100 <madnight> mauke: "there's not much meat here; the essential part here is that "contramap g" is calling the contramap method from f's instance of Contravariant" How is f's instance of Contravarian defined?
2022-12-21 20:48:40 +0100 <zzz> EvanR: this is the djinn library giving me the error
2022-12-21 20:48:46 +0100 <geekosaur> yeh, `import Prelude hiding ((<>))` is the workaround
2022-12-21 20:48:59 +0100 <EvanR> that code works for all contravariants f, it's polymorphic. So you don't / can't know how it's defined.
2022-12-21 20:49:07 +0100 <mauke> madnight: how long is a string?
2022-12-21 20:49:16 +0100 <geekosaur> zzz, you have to patch it locally, there's no release version
2022-12-21 20:49:17 +0100 <madnight> EvanR: ah sure makes sense
2022-12-21 20:49:21 +0100 <mauke> madnight: f is a variable here. we don't know which functor it is
2022-12-21 20:49:22 +0100 <Jadesheit[m]> what's the issue with `<>`?
2022-12-21 20:49:36 +0100 <geekosaur> I think someone is trying to take over all the packages that need to be updated for stuff to work
2022-12-21 20:49:45 +0100 <mauke> zzz: https://github.com/augustss/djinn/issues/12 :-(
2022-12-21 20:49:58 +0100 <madnight> mauke: so maybe you can provide an example for f?
2022-12-21 20:50:01 +0100 <mauke> Jadesheit[m]: it didn't used to be in Prelude, but now it is
2022-12-21 20:50:10 +0100 <geekosaur> Jadesheit[m], djinn uses its meaning as a way to combine two Docs (prettyprinting library)
2022-12-21 20:50:16 +0100 <Jadesheit[m]> ah yes
2022-12-21 20:50:28 +0100 <mauke> madnight: well, any contravariant functor. let me check your link
2022-12-21 20:50:39 +0100 <EvanR> the modern way would be to make Doc a Semigroup so it can just use <>
2022-12-21 20:50:49 +0100 <zzz> welp...
2022-12-21 20:51:07 +0100nyr(~nyr@user/nyr)
2022-12-21 20:51:08 +0100 <geekosaur> cabal get djinn, patch it locally, cabal install
2022-12-21 20:51:31 +0100 <geekosaur> that's what I did (I used to run a lambdabot instance)
2022-12-21 20:52:02 +0100 <mauke> madnight: https://hackage.haskell.org/package/base-4.17.0.0/docs/Control-Applicative.html#t:Const is probably the dumbest one
2022-12-21 20:52:26 +0100foul_owl(~kerry@71.212.143.88)
2022-12-21 20:53:17 +0100kalj(~kalj@static-212-247-159-251.cust.tele2.se) (Quit: Client closed)
2022-12-21 20:53:29 +0100 <madnight> mauke: ah okay so Const is an example for a Contravariant Functor
2022-12-21 20:53:47 +0100 <mauke> madnight: newtype Predicate a = Predicate { getPredicate :: a -> Bool }; instance Contravariant Predicate where { contramap g (Predicate p) = Predicate (p . g) }
2022-12-21 20:53:58 +0100 <mauke> yeah
2022-12-21 20:54:16 +0100 <mauke> Const is a bit special in that it functs both ways
2022-12-21 20:54:39 +0100 <zzz> i was going to remove lambdabot and `apt install lambdabot` but i just remembered cabal doesn't do remove
2022-12-21 20:54:52 +0100 <madnight> mauke: so its a Functor and a Contravariant Functor? (has famp and contramap)?
2022-12-21 20:55:05 +0100 <mauke> madnight: yes
2022-12-21 20:55:26 +0100 <geekosaur> remove the executable. if you really care the libs can be gc-d
2022-12-21 20:55:31 +0100 <geekosaur> @where cabalgc
2022-12-21 20:55:31 +0100 <lambdabot> https://github.com/treblacy/cabalgc
2022-12-21 20:55:43 +0100 <zzz> is this safe?
2022-12-21 20:55:51 +0100 <madnight> mauke: nice, then that one serves as a perfect example for understanding I guess
2022-12-21 20:55:55 +0100 <zzz> no linkage problems?
2022-12-21 20:56:18 +0100 <madnight> mauke: so for Const we are able to flip the arrows
2022-12-21 20:56:23 +0100 <mauke> madnight: see also https://hackage.haskell.org/package/base-4.17.0.0/docs/Data-Functor-Contravariant.html#v:phantom
2022-12-21 20:56:36 +0100 <geekosaur> zzz, at worst cabal might reinstall a few things next time it's used
2022-12-21 20:56:39 +0100 <madnight> mauke: why can we do so for Const? (i hope that is not a red / blue question)
2022-12-21 20:56:44 +0100 <geekosaur> it will not leave you with a broken store
2022-12-21 20:56:58 +0100 <zzz> geekosaur: nice, thanks
2022-12-21 20:57:01 +0100 <EvanR> :k Const
2022-12-21 20:57:02 +0100 <lambdabot> * -> k -> *
2022-12-21 20:57:13 +0100 <mauke> madnight: because 'Const a b' does not actually contain (or consume) a value of type 'b'
2022-12-21 20:57:35 +0100 <EvanR> actually Const t is the contravariant functor not Const
2022-12-21 20:57:40 +0100 <mauke> oops
2022-12-21 20:58:07 +0100 <mauke> yeah, kinds again. for any type t, 'Const t' is both a Functor and Contravariant
2022-12-21 20:58:14 +0100 <EvanR> but that's a separate question from why you can define contramap for Const t
2022-12-21 20:58:22 +0100fserucas(~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Quit: Leaving)
2022-12-21 20:58:32 +0100 <EvanR> just because the kinds work doesn't guarantee it
2022-12-21 20:58:39 +0100 <EvanR> as we saw for Identity
2022-12-21 20:59:53 +0100 <mauke> EvanR: where you the one who asked me about backtracking in a weird parser type?
2022-12-21 21:00:14 +0100 <EvanR> were you the one I asked about backtracking in a weird parser type?
2022-12-21 21:00:19 +0100 <mauke> yes :-)
2022-12-21 21:00:19 +0100 <EvanR> we might both be mixed up
2022-12-21 21:00:28 +0100danza(~francesco@151.35.217.251)
2022-12-21 21:00:35 +0100 <mauke> I was talking about a paper I half remembered
2022-12-21 21:01:01 +0100 <mauke> I was unable to find it again, but it turns out ReadP is almost exactly that type (with some continuation-y bits on top?)
2022-12-21 21:01:28 +0100 <zzz> geekosaur: just patched it `impoer Prelude hiding ( (<>) )` :P
2022-12-21 21:01:39 +0100 <zzz> *import
2022-12-21 21:02:15 +0100 <mauke> Text.ParserCombinators.ReadP has data P a = ... | Result a (P a) | ...
2022-12-21 21:02:29 +0100 <mauke> so it can "yield" and still continue parsing
2022-12-21 21:02:31 +0100trev(~trev@user/trev) (Remote host closed the connection)
2022-12-21 21:03:18 +0100 <EvanR> I played around with the type you originally posted and couldn't figure it entirely out
2022-12-21 21:03:41 +0100 <mauke> yeah, I didn't quite get it right
2022-12-21 21:03:54 +0100 <EvanR> I couldn't get <|> to work
2022-12-21 21:05:53 +0100 <EvanR> ok, it contains a lookahead constructor
2022-12-21 21:06:16 +0100 <EvanR> arbitrary lookahead
2022-12-21 21:06:51 +0100 <madnight> instance Contravariant (Const a) where
2022-12-21 21:06:56 +0100 <madnight> contramap _ (Const a) = Const a
2022-12-21 21:07:19 +0100 <madnight> hmm it throws away the f
2022-12-21 21:07:35 +0100 <EvanR> nothing to use it on anyway xD
2022-12-21 21:07:48 +0100 <EvanR> that a is kind of misleading
2022-12-21 21:08:15 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:1dcc:166b:1177:c3e0) (Remote host closed the connection)
2022-12-21 21:08:26 +0100 <EvanR> the second a doesn't have type a
2022-12-21 21:08:45 +0100 <mauke> yeah, like the description of 'phantom' says: if a type constructor is both Functor and Contravariant, it can't actually use the function passed to fmap/contramap
2022-12-21 21:10:20 +0100 <EvanR> instance Contravariant (Const b) where
2022-12-21 21:10:26 +0100Guest52(~Guest52@45.148.198.64)
2022-12-21 21:10:53 +0100 <madnight> okay so map and contramap are mutual exclusive in the sense that they cannot be both implemented other than to throw away its function passed
2022-12-21 21:11:46 +0100Guest52(~Guest52@45.148.198.64) (Client Quit)
2022-12-21 21:12:00 +0100 <EvanR> contramap :: forall a b c . (b -> a) -> Const c a -> Const c b
2022-12-21 21:12:20 +0100 <EvanR> contramap _ (Const x) = Const x
2022-12-21 21:13:04 +0100 <EvanR> I retroactively change my instance to say Const c
2022-12-21 21:13:41 +0100 <EvanR> roll saving throw vs IRC petrification
2022-12-21 21:14:42 +0100 <mauke> I don't know how general this actually is, but intuitively I think of 'F a' as "F produces values of type a" if Functor F, and "F consumes values of type a" if Contravariant F
2022-12-21 21:15:35 +0100 <mauke> maybe that should be negated: Functor F => F a cannot consume a's; Contravariant F => F a cannot produce a's
2022-12-21 21:15:35 +0100 <EvanR> unless it's both? xD
2022-12-21 21:15:52 +0100 <mauke> so if it's both, it can neither produce nor consume
2022-12-21 21:16:36 +0100 <EvanR> yeah you can't make a functor if the variable appears in negative position
2022-12-21 21:16:40 +0100 <mauke> so if I had something like newtype Endo a = Endo (a -> a), I shouldn't be able to define an instance of Functor or Contravariant for it
2022-12-21 21:16:43 +0100 <madnight> mauke: how about a Functor (a -> a) that produces and consumes a
2022-12-21 21:16:53 +0100 <mauke> :-)
2022-12-21 21:18:03 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 260 seconds)
2022-12-21 21:18:09 +0100gmg(~user@user/gehmehgeh)
2022-12-21 21:18:31 +0100 <EvanR> if you "postprocess" (functor) a -> a, you end up with a -> b, which violates the contract of Endo (not the same type anymore)
2022-12-21 21:18:40 +0100 <EvanR> same if you "preprocess" (contrafunctor)
2022-12-21 21:19:02 +0100 <EvanR> you would have to do both, which is Iso ?
2022-12-21 21:20:12 +0100 <mauke> uh oh, I'm getting profunctored. more to read ...
2022-12-21 21:20:48 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:1dcc:166b:1177:c3e0)
2022-12-21 21:20:57 +0100Me-me(~me-me@v.working.name) (Killed (NickServ (GHOST command used by Wstfgl0!~me-me@2602:ff16:3:0:1:dc:beef:d00d)))
2022-12-21 21:21:03 +0100Wstfgl0Me-me
2022-12-21 21:21:08 +0100Me-me(~me-me@2602:ff16:3:0:1:dc:beef:d00d) (Changing host)
2022-12-21 21:21:08 +0100Me-me(~me-me@user/me-me)
2022-12-21 21:21:51 +0100Wstfgl0(~me-me@v.working.name)
2022-12-21 21:21:57 +0100 <madnight> "Formally, the class Profunctor represents a profunctor from Hask -> Hask. Intuitively it is a bifunctor where the first argument is contravariant and the second argument is covariant." https://hackage.haskell.org/package/profunctors-5.6.2/docs/Data-Profunctor.html
2022-12-21 21:22:05 +0100 <madnight> That sounds good to me.
2022-12-21 21:23:18 +0100 <jean-paul[m]> Can I use ForeignFunctionInterface if I have to dlopen the library exporting the functions I want to import (instead of linking against it)?
2022-12-21 21:23:49 +0100 <jean-paul[m]> If not, how do I get a Haskell function I can call (I don't see how to turn what dlsym returns into something callable)?
2022-12-21 21:24:02 +0100 <mauke> EvanR: https://www.cambridge.org/core/journals/journal-of-functional-programming/article/functional-pearl…
2022-12-21 21:24:09 +0100 <mauke> ! I think this is the article I remember
2022-12-21 21:24:11 +0100danza(~francesco@151.35.217.251) (Read error: Connection reset by peer)
2022-12-21 21:24:24 +0100Topsi(~Topsi@dialin-80-228-141-053.ewe-ip-backbone.de)
2022-12-21 21:25:27 +0100 <geekosaur> jean-paul[m], there used to be https://hackage.haskell.org/package/plugins but I don't know if it works with ghc9
2022-12-21 21:25:44 +0100 <geekosaur> ForeignFunctionInterface is not sufficient
2022-12-21 21:25:51 +0100 <jean-paul[m]> Stuck on 8.6.5 anyway so ... yay? :)
2022-12-21 21:25:53 +0100jean-paul[m]looks
2022-12-21 21:26:28 +0100 <EvanR> the gl package dynamically loads opengl so it must be possible
2022-12-21 21:26:49 +0100 <madnight> mauke: so a Profunctor is an example for a Functor and Contravariant Functor that actually makes use of its function argument?
2022-12-21 21:28:05 +0100 <mauke> jean-paul[m]: call dlsym, castPtrToFunPtr, pass to a "dynamic" import stub?
2022-12-21 21:28:07 +0100 <EvanR> Profunctors have 2 parameters, one is covaraint and the other is contravariant. So they can both exist
2022-12-21 21:28:14 +0100gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2022-12-21 21:28:25 +0100 <mauke> madnight: dude, I know nothing about lenses
2022-12-21 21:29:05 +0100 <madnight> mauke: hmm, well I don't want to talk about profunctor optics, just profunctors
2022-12-21 21:29:16 +0100 <mauke> yeah, I have no clue about those :-)
2022-12-21 21:29:26 +0100 <mauke> jean-paul[m]: https://www.haskell.org/onlinereport/haskell2010/haskellch8.html#x15-1620008.5.1
2022-12-21 21:29:35 +0100 <EvanR> (->) is an example of a Profunctor, have fun xD
2022-12-21 21:30:09 +0100 <jean-paul[m]> mauke: oof
2022-12-21 21:32:03 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds)
2022-12-21 21:35:13 +0100 <EvanR> the previous observation about consuming or producing `a' doesn't apply to Profunctors because it has two parameters that can vary separately
2022-12-21 21:35:48 +0100 <EvanR> while Endo can only consume and produce matching types
2022-12-21 21:37:24 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-12-21 21:39:07 +0100motherfsck(~motherfsc@user/motherfsck) (Ping timeout: 248 seconds)
2022-12-21 21:39:14 +0100danza(~francesco@na-19-72-143.service.infuturo.it)
2022-12-21 21:39:40 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-12-21 21:41:29 +0100 <jean-paul[m]> mauke: Yea that seems to work. Thanks.
2022-12-21 21:42:01 +0100L29Ah(~L29Ah@wikipedia/L29Ah)
2022-12-21 21:42:14 +0100 <jean-paul[m]> Unfortunately I have the same mysterious cabal failure on Android as ever, so maybe the problem doesn't have to do with FFI or linkage...
2022-12-21 21:43:38 +0100 <madnight> EvanR: I see, but may question is still: Is a Profunctor an example of an Functor and Contravariant Functor like Const, but without throwing away its function argument? I think yes.
2022-12-21 21:43:43 +0100nyr(~nyr@user/nyr) (Ping timeout: 260 seconds)
2022-12-21 21:44:05 +0100 <EvanR> Profunctor is a class, you'd have to come up with specific examples to see it not throwing something away
2022-12-21 21:44:14 +0100 <EvanR> :t lmap
2022-12-21 21:44:15 +0100 <lambdabot> Profunctor p => (a -> b) -> p b c -> p a c
2022-12-21 21:44:17 +0100 <EvanR> :t rmap
2022-12-21 21:44:18 +0100 <lambdabot> Profunctor p => (b -> c) -> p a b -> p a c
2022-12-21 21:44:39 +0100 <mauke> the critical part is that a profunctor takes two type arguments, not just one
2022-12-21 21:44:40 +0100 <EvanR> there are profunctors which do throw away the function
2022-12-21 21:44:59 +0100irrgit_(~irrgit@146.70.27.250) (Remote host closed the connection)
2022-12-21 21:45:15 +0100 <mauke> one of them maps forwards, the other backwards
2022-12-21 21:45:29 +0100irrgit_(~irrgit@176.113.74.130)
2022-12-21 21:45:55 +0100 <EvanR> :t dimap
2022-12-21 21:45:57 +0100 <lambdabot> Profunctor p => (a -> b) -> (c -> d) -> p b c -> p a d
2022-12-21 21:46:23 +0100 <madnight> EvanR: can you provide and example of an Profunctor that doesn't throw away the function?
2022-12-21 21:46:36 +0100 <EvanR> instance Profunctor (->) where
2022-12-21 21:46:56 +0100 <EvanR> (exercise for madnight)
2022-12-21 21:47:14 +0100 <madnight> dimap f g = lmap f . rmap g
2022-12-21 21:47:38 +0100 <mauke> that's the default implementation. it assumes you've defined lmap and rmap
2022-12-21 21:48:02 +0100 <jackdk> or put any contravariant functor next to any covariant functor - `(Contravariant f, Functor g) => Product (Clown f) (Joker g)` should have a profunctor instance
2022-12-21 21:48:39 +0100 <EvanR> :k Product
2022-12-21 21:48:40 +0100 <lambdabot> * -> *
2022-12-21 21:48:50 +0100 <mauke> heh
2022-12-21 21:48:55 +0100 <mauke> @src Product
2022-12-21 21:48:55 +0100 <lambdabot> newtype Product a = Product { getProduct :: a }
2022-12-21 21:49:11 +0100 <mauke> that's a monoid thing, isn't it
2022-12-21 21:49:19 +0100 <geekosaur> yes
2022-12-21 21:49:22 +0100 <EvanR> it's a monoid thing
2022-12-21 21:49:34 +0100 <monochrom> lambdabot's Product is the one that gets "instance Num a => Semigroup (Product a) where <> means multiplication" to work.
2022-12-21 21:50:03 +0100 <monochrom> which is also base's Product.
2022-12-21 21:50:05 +0100beefbambi(~beefbambi@183.82.207.16) (Read error: Connection reset by peer)
2022-12-21 21:50:10 +0100jmdaemon(~jmdaemon@user/jmdaemon)
2022-12-21 21:50:12 +0100 <monochrom> I think base has :*: for the product bifunctor.
2022-12-21 21:50:36 +0100 <monochrom> onoes it's also called Product.
2022-12-21 21:51:00 +0100beefbambi(~beefbambi@183.82.207.16)
2022-12-21 21:51:03 +0100 <monochrom> This is very poorly done product branding!
2022-12-21 21:51:09 +0100 <EvanR> one day computers will be smart enough to call everything the same name like us
2022-12-21 21:51:32 +0100 <monochrom> Like Pikachu's language? :)
2022-12-21 21:51:38 +0100 <madnight> maybe Yoneda is a good example
2022-12-21 21:51:40 +0100 <madnight> newtype Yoneda p a b = Yoneda { runYoneda :: forall x y. (x -> a) -> (b -> y) -> p x y }
2022-12-21 21:51:49 +0100 <mauke> ok, so I know Functor/Profunctor, and I know Product. But what is a Duct?
2022-12-21 21:51:49 +0100 <madnight> instance Profunctor (Yoneda p) where
2022-12-21 21:51:56 +0100 <madnight> dimap l r p = Yoneda $ \l' r' -> runYoneda p (l . l') (r' . r)
2022-12-21 21:51:56 +0100beefbambi(~beefbambi@183.82.207.16) (Read error: Connection reset by peer)
2022-12-21 21:52:05 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-12-21 21:52:08 +0100beefbambi(~beefbambi@183.82.207.16)
2022-12-21 21:53:14 +0100mastarija(~mastarija@188.252.197.9)
2022-12-21 21:53:34 +0100 <EvanR> dang is that what Yoneda is? So simple now xD
2022-12-21 21:53:55 +0100 <EvanR> types are worth 1000 pictures
2022-12-21 21:53:59 +0100 <mastarija> when in ghci, is it possible to specify stdin as a file, when I want to run a function that reads from standard input?
2022-12-21 21:54:07 +0100 <monochrom> I think the complexity and richness is in how many surprising things you can do with it, as usual.
2022-12-21 21:55:05 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds)
2022-12-21 21:55:17 +0100 <monochrom> System.IO already has "stdin :: Handle".
2022-12-21 21:55:58 +0100 <mauke> yeah, but local redirect
2022-12-21 21:56:04 +0100 <monochrom> For example getChar is alias for hGetChar stdin
2022-12-21 21:56:24 +0100 <EvanR> I think you can close and reopen stdin?
2022-12-21 21:56:24 +0100 <monochrom> I wonder if :main lets you do that.
2022-12-21 21:56:37 +0100 <geekosaur> doesn't look like it, sadly
2022-12-21 21:57:00 +0100 <monochrom> You can close but since you don't have "stdin :: IORef Handle" there is no "re-open".
2022-12-21 21:57:17 +0100 <mauke> wait, Yoneda looks like a constructor a for a universal "pair of functions" thing
2022-12-21 21:57:32 +0100 <mastarija> I'd like to do something similar to :set args
2022-12-21 21:57:49 +0100 <mastarija> But I'd like to open a file and make it the new `stdin`
2022-12-21 21:58:11 +0100 <mastarija> so that I can test my functions that read from stdin
2022-12-21 21:58:11 +0100 <EvanR> writing your program to use a handle that you pass in would be more flexible and robust
2022-12-21 21:58:30 +0100 <mastarija> It's for demonstration purposes.
2022-12-21 21:58:33 +0100 <monochrom> Consider runghc :)
2022-12-21 21:58:35 +0100Kaiepi(~Kaiepi@108.175.84.104) (Ping timeout: 255 seconds)
2022-12-21 21:58:36 +0100 <EvanR> instead of needing dependency injection of a global handle
2022-12-21 21:58:37 +0100 <jean-paul[m]> You could dup stdin, dup something else over it, then dup stdin back to the right place at the end.
2022-12-21 21:58:52 +0100 <jean-paul[m]> But making the function accept an argument is certainly nicer.
2022-12-21 21:59:08 +0100 <monochrom> Wait, I think "writing your program to use a handle that you pass in" is dependency injection!
2022-12-21 21:59:13 +0100 <mastarija> I'm teaching a haskell course and we have to go over a few examples of functions that read stdin.
2022-12-21 21:59:40 +0100 <monochrom> This is why I don't teach IO at all >:)
2022-12-21 21:59:42 +0100 <jean-paul[m]> Why not teach your students about passing arguments where they're needed at the same time? :)
2022-12-21 22:00:04 +0100 <mauke> https://hackage.haskell.org/package/base-4.17.0.0/docs/GHC-IO-Device.html#v:dup2
2022-12-21 22:00:10 +0100 <mastarija> I've inherited the lecture material
2022-12-21 22:00:10 +0100 <monochrom> I teach redirection when the course is C and Unix though :)
2022-12-21 22:00:26 +0100 <jean-paul[m]> If you show students the thing I said then overall you are probably doing most of them a disservice.
2022-12-21 22:00:53 +0100 <mastarija> I won't show them. I'll probably just use it as a wrapper around my function :)
2022-12-21 22:00:59 +0100 <EvanR> if you manage to break in and redefine what stdin is somehow, wouldn't that make ghci stop working?
2022-12-21 22:01:08 +0100 <monochrom> Don't redirect stdin. Use one of those test-your-GUI tools to simulate keybarod input...
2022-12-21 22:01:36 +0100 <mauke> EvanR: I hope ghci reads from the terminal, not stdin
2022-12-21 22:01:42 +0100 <monochrom> Hell, use one of those click-mouse-button-a-million-times-for-game-grinding tools too... XD
2022-12-21 22:01:53 +0100motherfsck(~motherfsc@user/motherfsck)
2022-12-21 22:02:03 +0100 <mauke> ... nope, it doesn't
2022-12-21 22:02:03 +0100 <geekosaur> EvanR, yes. which is one reason :main doesn't allow redirection, I think: threads continue to run in the background but filehandles are process-global
2022-12-21 22:02:44 +0100 <mastarija> Hm.. yes, I like none of the options.
2022-12-21 22:03:08 +0100 <mastarija> I can't find if it's possible to specify which function to run with runhaskell command
2022-12-21 22:03:14 +0100 <geekosaur> also I'd be annoyed if `echo :q | cabal repl` didn't work
2022-12-21 22:03:26 +0100 <monochrom> Then consider ghc -e
2022-12-21 22:03:38 +0100 <madnight> newtype Yoneda p a b = Yoneda { runYoneda :: forall x y. (x -> a) -> (b -> y) -> p x y } deriving Functor actually works
2022-12-21 22:03:52 +0100 <mastarija> maybe something like `runhaskell MyFile.hs myfun`
2022-12-21 22:04:37 +0100 <monochrom> "ghc C.hs -e 'f 10'" works when C.hs has "f x = x + 1".
2022-12-21 22:05:18 +0100 <EvanR> yeah deriving Functor works if and only if Functor instance is possible
2022-12-21 22:05:20 +0100 <EvanR> crazy
2022-12-21 22:05:24 +0100 <mastarija> that looks nice
2022-12-21 22:05:50 +0100 <EvanR> still waiting for derive WildlyProfitableMMORPG
2022-12-21 22:05:54 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-12-21 22:06:01 +0100 <monochrom> I haven't tested "ghc C.hs -e blahblah < inputfile" but that's pretty much the last possibility.
2022-12-21 22:06:24 +0100 <geekosaur> runghc -main-is --ghc-arg=foo bar baz <mumbles
2022-12-21 22:06:25 +0100 <mastarija> I'll play with it and see what works
2022-12-21 22:07:25 +0100 <madnight> EvanR: can I somehow hask ghci to show me its derived instance definition for functor of a particular type?
2022-12-21 22:07:57 +0100 <EvanR> ghc can dump derived instances I think
2022-12-21 22:08:35 +0100 <geekosaur> but only during compilation
2022-12-21 22:08:37 +0100 <monochrom> But really no Haskell/FP course should be using redirection in the teaching material. (In test harnesses for assignments, sure.)
2022-12-21 22:08:39 +0100 <geekosaur> not after the fact
2022-12-21 22:09:48 +0100 <madnight> hmm, how could fmap for Yoneda look like, i mean it should be to hard to write it down
2022-12-21 22:10:01 +0100 <madnight> shouldn't
2022-12-21 22:10:51 +0100 <EvanR> you already saw dimap which is a combination of lmap and fmap
2022-12-21 22:10:52 +0100freeside(~mengwong@103.252.202.159) (Ping timeout: 272 seconds)
2022-12-21 22:10:57 +0100 <monochrom> EvanR: The crazy part is I thought "newtype C r a = C ((a -> r) -> r)" was too hard but DeriveFunctor knows how to do it too.
2022-12-21 22:11:48 +0100 <geekosaur> madnight, https://paste.tomsmeding.com/5yEvdLFg
2022-12-21 22:11:58 +0100 <EvanR> I guess I have to first write down a type for DeriveWildlyProfitableMMORPG to work on first...
2022-12-21 22:12:11 +0100Guest5969(~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 248 seconds)
2022-12-21 22:12:12 +0100morb(~morb@pool-72-80-94-112.nycmny.fios.verizon.net)
2022-12-21 22:12:14 +0100 <monochrom> On the flip side, this speaks for how simplistic, even boring, lawful Functors are.
2022-12-21 22:12:46 +0100 <EvanR> that's a good argument for CT though, if everything it does is boring, good that is precisely what we don't want to be doing manually
2022-12-21 22:13:16 +0100 <madnight> fmap f p = Yoneda $ \l r -> runYoneda p l (r . f)
2022-12-21 22:13:42 +0100 <monochrom> Well, the positive way to say "simple and boring" is "has structure" :)
2022-12-21 22:14:24 +0100Guest8974(~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 260 seconds)
2022-12-21 22:16:01 +0100 <mauke> wait, is this like a double negative? p is consuming a function that consumes a 'b', so we can fmap over it
2022-12-21 22:16:39 +0100 <EvanR> a is in double negative position
2022-12-21 22:17:01 +0100 <monochrom> Yeah, like (a -> r) -> r
2022-12-21 22:17:30 +0100 <madnight> instance Functor (Yoneda p a) where fmap f p = Yoneda $ \l r -> runYoneda p l (r . f) ghci tells me I'm doing fine
2022-12-21 22:17:44 +0100 <EvanR> if it type checks, ship it
2022-12-21 22:18:04 +0100 <mauke> EvanR: unfortunately that doesn't work with Cont :-(
2022-12-21 22:18:12 +0100ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2022-12-21 22:18:27 +0100 <EvanR> what doesn't
2022-12-21 22:18:28 +0100 <monochrom> But it does, like I said, and I tested it a few days ago when it came up.
2022-12-21 22:18:40 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-12-21 22:18:43 +0100 <monochrom> newtype C r a = C ((a -> r) -> r) deriving Functor
2022-12-21 22:19:02 +0100 <geekosaur> I think mauke meant "type checks" vs. "can be derived"
2022-12-21 22:19:28 +0100 <EvanR> I was not serious
2022-12-21 22:19:48 +0100 <EvanR> haskell's logic is full of holes
2022-12-21 22:20:01 +0100 <monochrom> I think in the case of Cont if you manually write an fmap that typechecks it also works fine.
2022-12-21 22:20:14 +0100 <mauke> could be
2022-12-21 22:20:23 +0100 <mauke> I think I had issues with >>=/join and callCC
2022-12-21 22:20:28 +0100 <geekosaur> actually, I'm thinking should be
2022-12-21 22:20:43 +0100morb(~morb@pool-72-80-94-112.nycmny.fios.verizon.net) (Ping timeout: 248 seconds)
2022-12-21 22:20:54 +0100 <geekosaur> the laws follow from parametricity and the free theorem, don't they?
2022-12-21 22:20:58 +0100 <mauke> "TambaraSum is cofreely adjoins strength with respect to Either." what
2022-12-21 22:21:08 +0100 <geekosaur> so typechecking should in fact indicate it's correct
2022-12-21 22:21:19 +0100 <EvanR> that doesn't grammar check
2022-12-21 22:21:36 +0100 <mauke> even electronic brain pancake crystal elderly
2022-12-21 22:21:42 +0100 <monochrom> In the case of Cont you really have very few choices, even for Monad and callCC.
2022-12-21 22:22:08 +0100 <monochrom> I mean, in the case of [] you have more freedom to go wrong.
2022-12-21 22:22:12 +0100 <geekosaur> (this is not true of >>=, only of fmap)
2022-12-21 22:22:50 +0100freeside(~mengwong@103.252.202.159)
2022-12-21 22:26:44 +0100eikke(~NicolasT@user/NicolasT)
2022-12-21 22:27:39 +0100 <mauke> @djinn ((a -> r) -> r) -> (a -> (b -> r) -> r) -> (b -> r) -> r
2022-12-21 22:27:39 +0100 <lambdabot> f a b c = a (\ d -> b d c)
2022-12-21 22:28:03 +0100 <EvanR> you got a free monad
2022-12-21 22:28:12 +0100 <monochrom> And that one is the correct >>=
2022-12-21 22:28:27 +0100 <monochrom> modulo newtype wrapping and unwrapping, but meh.
2022-12-21 22:29:00 +0100 <monochrom> but yes the fingerprint of double negation all over it
2022-12-21 22:29:17 +0100 <mauke> why bother with fiddly wrapping/unwrapping when you can just coerce the whole thing? :-)
2022-12-21 22:29:40 +0100 <EvanR> so a consumer of consumers of a is effectively a producer of a, got it
2022-12-21 22:31:17 +0100 <mauke> @djinn ((a -> (b -> r) -> r) -> (a -> r) -> r) -> (a -> r) -> r
2022-12-21 22:31:17 +0100 <lambdabot> f a b = a (\ c _ -> b c) b
2022-12-21 22:31:34 +0100 <monochrom> haha
2022-12-21 22:32:14 +0100pagnol(~user@213-205-209-87.ftth.glasoperator.nl) (Ping timeout: 246 seconds)
2022-12-21 22:32:55 +0100 <mauke> makes sense to me
2022-12-21 22:33:01 +0100 <madnight> okay so can someone help me out
2022-12-21 22:33:04 +0100 <madnight> instance Contravariant (Yoneda p a) where contramap f p = Yoneda $ \l r -> runYoneda p (f . l) r
2022-12-21 22:33:10 +0100 <madnight> does not work, why?
2022-12-21 22:33:17 +0100 <EvanR> what is the error
2022-12-21 22:33:33 +0100 <madnight> Couldn't match type ‘a1’ with ‘a’
2022-12-21 22:33:35 +0100 <madnight> Expected: x -> a
2022-12-21 22:33:37 +0100 <madnight> Actual: x -> a1
2022-12-21 22:33:56 +0100 <EvanR> at what part
2022-12-21 22:33:57 +0100 <mauke> Contravariant (Flip (Yoneda p) b)
2022-12-21 22:34:03 +0100 <mauke> but Flip does not exist
2022-12-21 22:34:31 +0100 <monochrom> Yeah djinn has got callCC right too.
2022-12-21 22:34:52 +0100 <monochrom> That success is a bit more surprising for me but meh.
2022-12-21 22:34:58 +0100 <EvanR> basically you applied f to the wrong component, but you can't because it's in the wrong place for Contravariant to apply
2022-12-21 22:35:16 +0100 <EvanR> (can't apply it to the right component)
2022-12-21 22:36:22 +0100 <EvanR> there is a newtype wrapper to extract the contravariant from a profunctor if you want
2022-12-21 22:37:00 +0100 <madnight> EvanR: well I applied f to the left component (f . l) r and for fmap I did l (r . f), I suppose this is correct
2022-12-21 22:38:25 +0100 <EvanR> but you probably listed the type as Yoneda p f in the instance head in both cases
2022-12-21 22:39:15 +0100 <EvanR> as opposed to Yoneda p f in one and Yoneda p _ g, probably because the second one isn't real syntax
2022-12-21 22:39:16 +0100beefbambi(~beefbambi@183.82.207.16) (Read error: Connection reset by peer)
2022-12-21 22:39:30 +0100beefbambi(~beefbambi@183.82.207.16)
2022-12-21 22:39:48 +0100 <EvanR> bah bad letter choices but yeah
2022-12-21 22:40:01 +0100danza(~francesco@na-19-72-143.service.infuturo.it) (Read error: Connection reset by peer)
2022-12-21 22:41:21 +0100 <mauke> Functor f wants to fmap over f a
2022-12-21 22:41:22 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2022-12-21 22:41:43 +0100 <EvanR> Flip does exist it seems
2022-12-21 22:41:46 +0100 <madnight> ah okay how can I write instance Contravariant (Yoneda p _ g) ?
2022-12-21 22:41:49 +0100 <EvanR> https://hackage.haskell.org/package/bifunctors-5.5.12/docs/Data-Bifunctor-Flip.html
2022-12-21 22:42:01 +0100 <mauke> damn :-)
2022-12-21 22:42:25 +0100wootehfoot(~wootehfoo@user/wootehfoot) (Quit: Leaving)
2022-12-21 22:42:29 +0100 <mauke> but it's boilerplatey; you can't just say type Flip f a b = f b a
2022-12-21 22:42:36 +0100 <EvanR> :t Joker
2022-12-21 22:42:37 +0100 <lambdabot> error: Data constructor not in scope: Joker
2022-12-21 22:42:40 +0100 <EvanR> :k Joker
2022-12-21 22:42:41 +0100 <lambdabot> error:
2022-12-21 22:42:41 +0100 <lambdabot> Not in scope: type constructor or class ‘Joker’
2022-12-21 22:43:34 +0100donk(~donk@189.217.90.172)
2022-12-21 22:44:03 +0100 <donk> @pl \x -> f (g x)
2022-12-21 22:44:03 +0100 <lambdabot> f . g
2022-12-21 22:44:12 +0100eikke(~NicolasT@user/NicolasT) (Ping timeout: 268 seconds)
2022-12-21 22:44:28 +0100 <mauke> @pl \f g x -> f (g x)
2022-12-21 22:44:28 +0100 <lambdabot> (.)
2022-12-21 22:44:30 +0100Guest8974(~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2022-12-21 22:44:40 +0100 <EvanR> madnight, you can't directly, also how would you even use contramap on a Yoneda p _ g
2022-12-21 22:45:04 +0100 <EvanR> better, to use a newtype to get the contrafunctor from any profunctor
2022-12-21 22:46:09 +0100codaraxis__(~codaraxis@user/codaraxis)
2022-12-21 22:46:24 +0100Sanchez(~Sanchez@cpe-173-174-198-19.satx.res.rr.com)
2022-12-21 22:46:50 +0100zeenk(~zeenk@82.79.126.109) (Quit: Konversation terminated!)
2022-12-21 22:48:06 +0100 <Sanchez> @pl \x -> f (g x)
2022-12-21 22:48:07 +0100 <lambdabot> f . g
2022-12-21 22:48:48 +0100 <mauke> again?
2022-12-21 22:49:20 +0100 <donk> Sanchez: you can PM the bot too. if you click it and push "Send a message"
2022-12-21 22:49:56 +0100 <Sanchez> ah cool thanks
2022-12-21 22:50:08 +0100codaraxis(~codaraxis@user/codaraxis) (Ping timeout: 272 seconds)
2022-12-21 22:53:40 +0100donk(~donk@189.217.90.172) (Quit: Excess CPU time consumed, shutting down AWS cluster)
2022-12-21 22:53:49 +0100mikoto-chan(~mikoto-ch@2001:999:488:d7ee:b232:de3f:f786:6eb) (Quit: WeeChat 3.6)
2022-12-21 22:55:50 +0100stiell(~stiell@gateway/tor-sasl/stiell) (Ping timeout: 255 seconds)
2022-12-21 22:56:34 +0100 <madnight> newtype Yoneda p b a = Yoneda { runYoneda :: forall x y. (x -> a) -> (b -> y) -> p x y }
2022-12-21 22:56:44 +0100 <madnight> newtype Yoneda p b a = Yoneda { runYoneda :: forall x y. (x -> a) -> (b -> y) -> p x y }
2022-12-21 22:56:46 +0100stiell(~stiell@gateway/tor-sasl/stiell)
2022-12-21 22:56:58 +0100 <madnight> instance Contravariant (Yoneda p a) where contramap f p = Yoneda $ \l r -> runYoneda p (f . l) r
2022-12-21 22:57:04 +0100 <madnight> that type checks
2022-12-21 22:57:17 +0100 <madnight> but how do I define functor for the fliped Yoneda?
2022-12-21 22:58:09 +0100 <mauke> you don't :-)
2022-12-21 22:58:34 +0100 <mauke> as I was saying: Functor f wants to fmap over f a
2022-12-21 22:58:52 +0100 <mauke> we can set f = Yoneda p a' and get f a = Yoneda p a' a
2022-12-21 22:59:19 +0100motherfsck(~motherfsc@user/motherfsck) (Ping timeout: 260 seconds)
2022-12-21 23:00:02 +0100 <mauke> Contravariant wants to work the same way, but there is no "prefix" of Yoneda p a b that we could bind to 'f' to make 'f a' work contravariantly
2022-12-21 23:00:28 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2022-12-21 23:00:30 +0100 <mauke> by which I mean that 'Yoneda p a b' is contravariant in 'a', which is not the last parameter
2022-12-21 23:00:47 +0100slack1256(~slack1256@186.11.25.60) (Ping timeout: 264 seconds)
2022-12-21 23:00:57 +0100 <mauke> you can sidestep that by flipping 'a' and 'b' in the definition of 'Yoneda', but then you can't define a Functor instance
2022-12-21 23:02:19 +0100Sanchez(~Sanchez@cpe-173-174-198-19.satx.res.rr.com) (Quit: Connection closed)
2022-12-21 23:02:40 +0100 <madnight> ah okay so my inital assumption still holds, it's impossible do give instances of Functor and Contramap for a Type without throwing away its function argument
2022-12-21 23:02:48 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2022-12-21 23:03:42 +0100zeenk(~zeenk@82.79.126.109)
2022-12-21 23:03:54 +0100 <mauke> yes, because Functor and Contravariant both "attach" to the last type parameter
2022-12-21 23:05:20 +0100Guest8974(~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 272 seconds)
2022-12-21 23:06:25 +0100pa_ath(~pa_ath@p57979e0e.dip0.t-ipconnect.de)
2022-12-21 23:07:52 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 272 seconds)
2022-12-21 23:16:30 +0100Guest8974(~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2022-12-21 23:17:59 +0100fizbin(~fizbin@user/fizbin) (Ping timeout: 256 seconds)
2022-12-21 23:23:02 +0100troydm(~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 246 seconds)
2022-12-21 23:23:09 +0100Kaiepi(~Kaiepi@108.175.84.104)
2022-12-21 23:26:14 +0100masterbuilder(~master@user/masterbuilder) (Ping timeout: 272 seconds)
2022-12-21 23:27:16 +0100eikke(~NicolasT@user/NicolasT)
2022-12-21 23:27:28 +0100bor0(~bor0@user/bor0)
2022-12-21 23:27:52 +0100 <bor0> Hi. I am curious to which logic does SKI calculus correspond? Wikipedia says (for Combinatory_logic) that "the expressive power of combinatory logic typically exceeds that of first-order logic". But in the SKI_combinator_calculus article it says "The combinators K and S correspond to two well-known axioms of sentential logic". Given that SKI is a combinatory logic itself, wouldn't it correspond to FOL instead?
2022-12-21 23:28:27 +0100wootehfoot(~wootehfoo@user/wootehfoot)
2022-12-21 23:30:59 +0100perrierjouet(~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
2022-12-21 23:37:49 +0100j4cc3b(~jeffreybe@pool-74-105-2-138.nwrknj.fios.verizon.net) (Ping timeout: 256 seconds)
2022-12-21 23:44:40 +0100ec(~ec@gateway/tor-sasl/ec)
2022-12-21 23:47:47 +0100 <monochrom> Unpopular opinion: If Yoneda p a b = forall x y. (x -> a) -> (b -> y) -> p x y, then Yoda p b a = forall forall x y. (x -> a) -> (b -> y) -> p x y :)
2022-12-21 23:53:29 +0100__monty__(~toonn@user/toonn) (Quit: leaving)
2022-12-21 23:57:16 +0100Guest8974(~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 272 seconds)
2022-12-21 23:57:36 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:1dcc:166b:1177:c3e0) (Remote host closed the connection)
2022-12-21 23:58:35 +0100eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
2022-12-21 23:58:48 +0100bgs(~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)