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