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