2023-03-14 00:03:47 +0100 | bitdex_ | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds) |
2023-03-14 00:06:23 +0100 | bitdex_ | (~bitdex@gateway/tor-sasl/bitdex) |
2023-03-14 00:06:34 +0100 | <AWizzArd> | Can I convince ghci to use `Type` instead of `*` as output in :kind signatures? |
2023-03-14 00:09:44 +0100 | <geekosaur> | https://paste.tomsmeding.com/Oeo68DcU |
2023-03-14 00:10:08 +0100 | whatsupdoc | (uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
2023-03-14 00:10:27 +0100 | NiceBird | (~NiceBird@185.133.111.196) (Ping timeout: 250 seconds) |
2023-03-14 00:12:34 +0100 | <AWizzArd> | geekosaur: works! Are there some major disadvantages when putting this into my ghci config? |
2023-03-14 00:12:41 +0100 | <geekosaur> | no |
2023-03-14 00:12:59 +0100 | <geekosaur> | in fact it's preferred these days and at some point will become the default |
2023-03-14 00:13:15 +0100 | <geekosaur> | * is backward compatibility |
2023-03-14 00:13:49 +0100 | Umeaboy | (~Umeaboy@m90-129-221-19.cust.tele2.se) |
2023-03-14 00:14:23 +0100 | <AWizzArd> | thx |
2023-03-14 00:15:38 +0100 | <Umeaboy> | Hi! Can one use copr to build GHC using a chroot from a different dist? Lets say I need GHC itself to build GHC and my dist doesn't offer any such package, can I then use a similar dist chroot and build a package? |
2023-03-14 00:16:54 +0100 | <Umeaboy> | I was planning to setup a repo with the dependencies that I built already. |
2023-03-14 00:17:12 +0100 | <geekosaur> | I think that's how ghc is currently built for alpine |
2023-03-14 00:17:23 +0100 | <Umeaboy> | Okey. |
2023-03-14 00:18:12 +0100 | <Umeaboy> | https://copr.fedorainfracloud.org/coprs/umeaman/ contains some of my packages to actually build GHC. |
2023-03-14 00:18:14 +0100 | <geekosaur> | hm, not a chroot |
2023-03-14 00:19:02 +0100 | <geekosaur> | docker container. a chroot isn't enough of a container generally, since a glibc has to match a running kernel |
2023-03-14 00:19:32 +0100 | <hpc> | looks like it's a vm pool |
2023-03-14 00:19:44 +0100 | <hpc> | if you do a bit of a clickaroo and find build logs |
2023-03-14 00:20:35 +0100 | <hpc> | btw, usually afterwards you use the ghc you just built to rebuild itself again to finish the bootstrap |
2023-03-14 00:21:15 +0100 | ph88 | (~ph88@ip5b426553.dynamic.kabel-deutschland.de) |
2023-03-14 00:21:47 +0100 | <Umeaboy> | I have a problem with unused .so-files as you can see in the build log. |
2023-03-14 00:22:06 +0100 | <Umeaboy> | Do I invoke LDCONFIG to solve this? |
2023-03-14 00:23:55 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 276 seconds) |
2023-03-14 00:24:03 +0100 | <hpc> | No matching package to install: 'libncurses5' (and libnuma-devel) |
2023-03-14 00:24:08 +0100 | <hpc> | i think that's your error |
2023-03-14 00:24:44 +0100 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) |
2023-03-14 00:24:45 +0100 | wroathe | (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
2023-03-14 00:24:45 +0100 | wroathe | (~wroathe@user/wroathe) |
2023-03-14 00:25:23 +0100 | chomwitt | (~chomwitt@2a02:587:7a18:6d00:1ac0:4dff:fedb:a3f1) (Ping timeout: 264 seconds) |
2023-03-14 00:27:23 +0100 | <Umeaboy> | Yes, I don't think those packages have been built for aarch64 in Mageia yet. |
2023-03-14 00:27:32 +0100 | <Umeaboy> | Let me check. |
2023-03-14 00:27:37 +0100 | mastarija | (~mastarija@188.252.199.82) (Quit: WeeChat 3.7.1) |
2023-03-14 00:27:38 +0100 | telser | (~quassel@user/telser) |
2023-03-14 00:28:22 +0100 | <hpc> | does it matter that it's ncurses 5? looks like ncurses 6 is packaged |
2023-03-14 00:29:17 +0100 | okiltb^ | (~okiltb@c-24-30-76-89.hsd1.ga.comcast.net) |
2023-03-14 00:29:36 +0100 | <geekosaur> | the old ghc it's trying to use to bootstrap may require it |
2023-03-14 00:29:42 +0100 | <Umeaboy> | hpc: Not for Mageia as far as I can see: |
2023-03-14 00:29:45 +0100 | <Umeaboy> | https://pkgs.org/download/libncurses6 |
2023-03-14 00:29:52 +0100 | <geekosaur> | and ncurses 6 is not backward compatible |
2023-03-14 00:30:05 +0100 | <hpc> | i found it in https://www.mirrorservice.org/sites/mageia.org/pub/mageia/distrib/8/x86_64/media/core/release/ |
2023-03-14 00:30:41 +0100 | <Umeaboy> | And my build log mentions that libncurses5 is missing for aarch64. |
2023-03-14 00:30:48 +0100 | <Umeaboy> | Which it IS. |
2023-03-14 00:38:45 +0100 | enoq | (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq) |
2023-03-14 00:39:22 +0100 | Umeaboy | (~Umeaboy@m90-129-221-19.cust.tele2.se) (Quit: Connection closed) |
2023-03-14 00:42:33 +0100 | Umeaboy | (~Umeaboy@m90-129-221-19.cust.tele2.se) |
2023-03-14 00:42:59 +0100 | <Umeaboy> | My phone got disconnected..... |
2023-03-14 00:42:59 +0100 | <geekosaur> | sadly I think the ghc devs found it easier to stick with ncurses 5 than to deal with (a) ncurses 6 is always the wide version (b) libterminfo has been dropped (it's all in libncurses6 now) |
2023-03-14 00:43:03 +0100 | <EvanR> | though this will take getting used to, before Char could be said (aloud) to be "of kind star". Now "char is of kind type" which is confusing for the uninitiated |
2023-03-14 00:43:13 +0100 | <EvanR> | better to not pronounce anything I guess |
2023-03-14 00:43:15 +0100 | <Umeaboy> | My apologies. |
2023-03-14 00:43:34 +0100 | <geekosaur> | EvanR, worse is ghc encourages that confusion. consider `expected a type` |
2023-03-14 00:44:14 +0100 | <geekosaur> | which really means it expected something of kind `Type`; this is really confusing if you give it a type of a kind other than `Type` |
2023-03-14 00:44:36 +0100 | <EvanR> | what if it expected a * -> *? |
2023-03-14 00:44:41 +0100 | mrcsno | (~mrcsno@user/mrcsno) (Quit: WeeChat 3.5) |
2023-03-14 00:44:49 +0100 | <geekosaur> | it reports the kind in that case |
2023-03-14 00:45:16 +0100 | <geekosaur> | whjich is what it should always do IMO, not "simplify" kind `Type` to something confusing |
2023-03-14 00:45:48 +0100 | Umeaboy | (~Umeaboy@m90-129-221-19.cust.tele2.se) (Client Quit) |
2023-03-14 00:46:42 +0100 | <EvanR> | you got your Type types, your Non-Types types, your Type non-types, ok maybe not this last one |
2023-03-14 00:46:57 +0100 | <geekosaur> | not that last one |
2023-03-14 00:47:05 +0100 | Ram-Z | (Ram-Z@2a01:7e01::f03c:91ff:fe57:d2df) (Ping timeout: 260 seconds) |
2023-03-14 00:47:19 +0100 | <geekosaur> | but `'True` is a type that isn't a `Type` |
2023-03-14 00:47:43 +0100 | <geekosaur> | except ghc will sometimes tell you `expected a type` about it |
2023-03-14 00:47:46 +0100 | <c_wraith> | Heck, `Maybe` is a type that isn't a `Type` |
2023-03-14 00:47:58 +0100 | mcglk | (~mcglk@131.191.19.145) (Ping timeout: 276 seconds) |
2023-03-14 00:47:59 +0100 | <hpc> | i write all my python code on paper because it's an untyped language :P |
2023-03-14 00:48:17 +0100 | Ram-Z | (~Ram-Z@li1814-254.members.linode.com) |
2023-03-14 00:48:25 +0100 | <c_wraith> | hpc: that seems extreme. you could use punch cards. |
2023-03-14 00:49:02 +0100 | geekosaur | thinks he would stick with paper |
2023-03-14 00:49:05 +0100 | <EvanR> | meanwhile PHP and ruby are accurately categorized as punched languages, i.e. what I do to the computer if I have to use them |
2023-03-14 00:49:14 +0100 | <monochrom> | Typed lambda calculus is when you type it up. Untyped lambda calculus is when you use handwriting. |
2023-03-14 00:49:25 +0100 | <geekosaur> | that fortran course was no fun |
2023-03-14 00:49:43 +0100 | <monochrom> | This also explains why untyped lambda calculus comes with recursion. Your handwriting is cursive. >:) |
2023-03-14 00:49:50 +0100 | <geekosaur> | I really wished I could get away with using `f77` |
2023-03-14 00:50:29 +0100 | <c_wraith> | monochrom: well, my handwriting causes cursing, at least |
2023-03-14 00:51:17 +0100 | <hpc> | oh, i just noticed "expected a type" was a kind error and not somehow a level error |
2023-03-14 00:51:29 +0100 | <hpc> | i kept thinking "why doesn't it say 'expected a type, got a value'" |
2023-03-14 00:51:39 +0100 | <hpc> | yeah, definitely confusing |
2023-03-14 00:52:05 +0100 | <EvanR> | in the next update it will be clarified, "expected a type, got a type" |
2023-03-14 00:52:15 +0100 | <monochrom> | haha |
2023-03-14 00:52:32 +0100 | <hpc> | "expected one type of type, got another type of type" |
2023-03-14 00:52:46 +0100 | <hpc> | "try typing a different type of type" |
2023-03-14 00:53:08 +0100 | <EvanR> | Kind Mismatch |
2023-03-14 00:53:42 +0100 | mcglk | (~mcglk@131.191.19.145) |
2023-03-14 00:55:55 +0100 | <geekosaur> | in the next release they'll call that "a kind of error" |
2023-03-14 00:56:41 +0100 | <hpc> | i hear in ghc 15 type errors will be catchable exceptions |
2023-03-14 00:57:16 +0100 | <geekosaur> | too late, `-fdefer-type-errors` is already a thing |
2023-03-14 00:57:37 +0100 | <hpc> | catchable type-level exceptions, of course |
2023-03-14 00:57:44 +0100 | <hpc> | what kind of loon would let such a thing occur at runtime :P |
2023-03-14 00:58:34 +0100 | <EvanR> | type level openGL which shows type level graphics to a type level user |
2023-03-14 00:59:06 +0100 | <geekosaur> | shh, don't give ekmett ideas 🙂 |
2023-03-14 01:04:13 +0100 | xff0x | (~xff0x@ai098135.d.east.v6connect.net) (Ping timeout: 276 seconds) |
2023-03-14 01:07:08 +0100 | Umeaboy | (~Umeaboy@94-255-145-133.cust.bredband2.com) |
2023-03-14 01:07:24 +0100 | <Umeaboy> | Hi again! I'm home now so the connection is more stable. |
2023-03-14 01:08:17 +0100 | <Umeaboy> | As a matter of fact there is a libncurses5 built for aarch64, but it's lib64. I understand why, but how do I solve that in the spec file? |
2023-03-14 01:08:41 +0100 | <Umeaboy> | ifarch aarch64 |
2023-03-14 01:09:12 +0100 | <hpc> | probably that, yeah |
2023-03-14 01:09:21 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) (Quit: Leaving.) |
2023-03-14 01:09:23 +0100 | <Umeaboy> | BuildRequires: lib64ncurses5-6.3 ? |
2023-03-14 01:09:30 +0100 | forell | (~forell@user/forell) (Ping timeout: 255 seconds) |
2023-03-14 01:09:32 +0100 | <hpc> | maybe it's %ifarch? i haven't ever had to use it |
2023-03-14 01:09:44 +0100 | <Umeaboy> | Yeah....... |
2023-03-14 01:09:46 +0100 | <Umeaboy> | I know· |
2023-03-14 01:09:52 +0100 | <Umeaboy> | I'll test it. |
2023-03-14 01:11:12 +0100 | <Umeaboy> | Do I use Requires or BuildRequires in this case? |
2023-03-14 01:11:19 +0100 | <hpc> | BuildRequires |
2023-03-14 01:11:22 +0100 | <Umeaboy> | OK. |
2023-03-14 01:11:43 +0100 | <hpc> | and then... i think it static links so you should be good? |
2023-03-14 01:11:58 +0100 | <hpc> | oh, and that needs to be the dev package |
2023-03-14 01:12:06 +0100 | <hpc> | i think |
2023-03-14 01:12:38 +0100 | <hpc> | maybe not, hmm |
2023-03-14 01:13:59 +0100 | <hpc> | ugh, it 500s when i try to look at the source |
2023-03-14 01:14:04 +0100 | <Umeaboy> | I don't mean to seem stupid, but aren't there to many occurances of libncurses in the spec fi,le? |
2023-03-14 01:14:07 +0100 | <Umeaboy> | file' |
2023-03-14 01:14:38 +0100 | <Umeaboy> | Say whut? |
2023-03-14 01:15:09 +0100 | <hpc> | trying to see how it's all linked |
2023-03-14 01:15:26 +0100 | <Umeaboy> | I can open it just fine. |
2023-03-14 01:15:30 +0100 | <geekosaur> | actually I misspoke earlier, it's not ghc it's haskeline — which is unmaintained |
2023-03-14 01:15:33 +0100 | <hpc> | i am used to packaging dynamic linked stuff, where you buildrequire headers and require the .so |
2023-03-14 01:15:54 +0100 | <Umeaboy> | If you're by source refer to https://download.copr.fedorainfracloud.org/results/umeaman/ghc-bootstrap/mageia-8-i586/05633414-gh… |
2023-03-14 01:16:11 +0100 | <geekosaur> | at some point I suppose I'll have to put in a takeover req for it because nobody else will, even though I can't make many promises about keeping up (but I can do better than a decade of not keeping up…) |
2023-03-14 01:17:08 +0100 | <hpc> | oh, that's a better idea - i was clicking the git repo link |
2023-03-14 01:20:00 +0100 | <Umeaboy> | And why does it have both binutils on BuildRequires and Requires? That doesn't feel right, but then again..... I'm no expert. |
2023-03-14 01:20:25 +0100 | <hpc> | probably something like this: https://paste.tomsmeding.com/Bnp4dW6P |
2023-03-14 01:20:31 +0100 | <geekosaur> | required both for building and for running, since it's a compiler |
2023-03-14 01:20:36 +0100 | <hpc> | ^ |
2023-03-14 01:21:33 +0100 | <Umeaboy> | Ok. |
2023-03-14 01:21:37 +0100 | <Umeaboy> | Good to know. |
2023-03-14 01:21:40 +0100 | forell | (~forell@user/forell) |
2023-03-14 01:22:11 +0100 | <hpc> | so like, imagine you had a bash script |
2023-03-14 01:22:24 +0100 | <hpc> | perhaps you would buildrequire shellcheck and require bash |
2023-03-14 01:22:42 +0100 | <hpc> | bash at runtime to run it, shellcheck at build time to make sure it's correct |
2023-03-14 01:22:56 +0100 | <Umeaboy> | Can I safely delete/remove the %{arm} from the ifarch aarch64 line as arm is no longer supported by that version? |
2023-03-14 01:22:59 +0100 | <hpc> | in python you'd both require and buildrequire python |
2023-03-14 01:23:50 +0100 | <hpc> | for binutils, it's needed at build time in order to copy files around |
2023-03-14 01:23:54 +0100 | <Umeaboy> | shellcheck isn't officially packaged for Mageia to my knowledge. |
2023-03-14 01:24:00 +0100 | <hpc> | and at runtime... probably for similar reasons? |
2023-03-14 01:24:14 +0100 | <geekosaur> | because it does linking via binutils |
2023-03-14 01:24:31 +0100 | <hpc> | doh, i was thinking coreutils |
2023-03-14 01:24:39 +0100 | <geekosaur> | and a build time it does linking of the new ghc using the old ghc |
2023-03-14 01:24:46 +0100 | <geekosaur> | *at |
2023-03-14 01:25:18 +0100 | <hpc> | Umeaboy: (that was just an example) |
2023-03-14 01:25:47 +0100 | <geekosaur> | so it needs binutils in both cases to get a linker |
2023-03-14 01:26:39 +0100 | <Umeaboy> | Right. |
2023-03-14 01:26:58 +0100 | mncheck | (~mncheck@193.224.205.254) (Ping timeout: 276 seconds) |
2023-03-14 01:35:23 +0100 | acidjnk_new | (~acidjnk@p200300d6e715c44645c006c030d63e3c.dip0.t-ipconnect.de) (Ping timeout: 248 seconds) |
2023-03-14 01:35:42 +0100 | mei | (~mei@user/mei) (Remote host closed the connection) |
2023-03-14 01:38:08 +0100 | mei | (~mei@user/mei) |
2023-03-14 01:38:48 +0100 | zeenk | (~zeenk@2a02:2f04:a307:2300::7fe) (Quit: Konversation terminated!) |
2023-03-14 01:54:20 +0100 | <lyxia> | Does this Windows error in CI using GH actions look familiar to somebody? https://github.com/Lysxia/generic-random/actions/runs/4410749511/jobs/7728952259 |
2023-03-14 01:56:47 +0100 | mauke_ | (~mauke@user/mauke) |
2023-03-14 01:58:59 +0100 | mauke | (~mauke@user/mauke) (Ping timeout: 264 seconds) |
2023-03-14 01:59:00 +0100 | mauke_ | mauke |
2023-03-14 02:01:43 +0100 | califax | (~califax@user/califx) (Remote host closed the connection) |
2023-03-14 02:03:11 +0100 | califax | (~califax@user/califx) |
2023-03-14 02:03:45 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 256 seconds) |
2023-03-14 02:03:51 +0100 | zaquest | (~notzaques@5.130.79.72) (Remote host closed the connection) |
2023-03-14 02:05:17 +0100 | <Umeaboy> | lyxia: Check line 19. |
2023-03-14 02:06:33 +0100 | thegeekinside | (~thegeekin@189.217.80.156) (Read error: Connection reset by peer) |
2023-03-14 02:07:56 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2023-03-14 02:07:57 +0100 | <lyxia> | Umeaboy: that's a warning. The error is line 31 |
2023-03-14 02:08:29 +0100 | okiltb^ | (~okiltb@c-24-30-76-89.hsd1.ga.comcast.net) (Remote host closed the connection) |
2023-03-14 02:08:45 +0100 | <Umeaboy> | Check manually if it does exist. |
2023-03-14 02:09:42 +0100 | xff0x | (~xff0x@om126167107057.29.openmobile.ne.jp) |
2023-03-14 02:10:15 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2023-03-14 02:10:16 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:19aa:397c:29a:40e4) |
2023-03-14 02:14:25 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:19aa:397c:29a:40e4) (Ping timeout: 246 seconds) |
2023-03-14 02:15:27 +0100 | <Umeaboy> | hpc and geekosaur: Does this edited spec file look correct? |
2023-03-14 02:15:28 +0100 | <Umeaboy> | https://ghostbin.me/640fca90c83c5 |
2023-03-14 02:15:44 +0100 | <lyxia> | Umeaboy: It's an error on a remote machine I do not own so I cannot "check manually" |
2023-03-14 02:16:20 +0100 | telser_ | (~quassel@user/telser) |
2023-03-14 02:16:22 +0100 | telser | (~quassel@user/telser) (Ping timeout: 276 seconds) |
2023-03-14 02:16:23 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2023-03-14 02:18:40 +0100 | thegeekinside | (~thegeekin@189.217.80.156) |
2023-03-14 02:19:22 +0100 | <Umeaboy> | Fix it, nevermind! |
2023-03-14 02:19:24 +0100 | <Umeaboy> | Fixed |
2023-03-14 02:19:40 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2023-03-14 02:24:12 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 255 seconds) |
2023-03-14 02:26:05 +0100 | cods | (~fred@82-65-232-44.subs.proxad.net) (Ping timeout: 250 seconds) |
2023-03-14 02:28:45 +0100 | dsrt^ | (~dsrt@c-24-30-76-89.hsd1.ga.comcast.net) |
2023-03-14 02:33:25 +0100 | mei | (~mei@user/mei) (Remote host closed the connection) |
2023-03-14 02:35:51 +0100 | mei | (~mei@user/mei) |
2023-03-14 02:39:04 +0100 | <Umeaboy> | There is one small problem left. |
2023-03-14 02:40:12 +0100 | <Umeaboy> | The %build macro says to do tar Jxf ghc-%{version}-%{longarch}-%{sysname}-linux.tar.xz which is OK for the vaste majority of the sources, but there is one source tarball that's named differently. |
2023-03-14 02:41:11 +0100 | <Umeaboy> | Source #3 is named ghc-8.8.1-x86_64-apple-darwin.tar.xz, but that leads to tar not being able to unpack it. |
2023-03-14 02:41:29 +0100 | <Umeaboy> | Can I use %if else for this section to? |
2023-03-14 02:42:20 +0100 | <Umeaboy> | I'll test it and see how it goes. |
2023-03-14 02:52:07 +0100 | forell | (~forell@user/forell) (Ping timeout: 276 seconds) |
2023-03-14 02:53:43 +0100 | cods | (~fred@82-65-232-44.subs.proxad.net) |
2023-03-14 02:59:52 +0100 | byorgey_ | byorgey |
2023-03-14 03:04:43 +0100 | forell | (~forell@user/forell) |
2023-03-14 03:11:02 +0100 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) |
2023-03-14 03:19:10 +0100 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) (Remote host closed the connection) |
2023-03-14 03:19:30 +0100 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) |
2023-03-14 03:19:31 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer) |
2023-03-14 03:23:46 +0100 | xff0x | (~xff0x@om126167107057.29.openmobile.ne.jp) (Read error: Connection reset by peer) |
2023-03-14 03:25:01 +0100 | opticblast | (~Thunderbi@172.58.82.223) (Ping timeout: 250 seconds) |
2023-03-14 03:27:37 +0100 | Lord_of_Life_ | (~Lord@user/lord-of-life/x-2819915) |
2023-03-14 03:27:52 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 276 seconds) |
2023-03-14 03:28:31 +0100 | forell | (~forell@user/forell) (Ping timeout: 276 seconds) |
2023-03-14 03:28:56 +0100 | Lord_of_Life_ | Lord_of_Life |
2023-03-14 03:36:37 +0100 | slack1256 | (~slack1256@186.11.43.166) |
2023-03-14 03:39:41 +0100 | xff0x | (~xff0x@om126167107057.29.openmobile.ne.jp) |
2023-03-14 03:40:29 +0100 | roboguy_ | (~roboguy_@cpe-69-76-235-109.kc.res.rr.com) |
2023-03-14 03:41:50 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
2023-03-14 03:48:41 +0100 | xff0x | (~xff0x@om126167107057.29.openmobile.ne.jp) (Read error: Connection reset by peer) |
2023-03-14 03:53:59 +0100 | gehmehgeh | (~user@user/gehmehgeh) |
2023-03-14 03:54:33 +0100 | razetime | (~Thunderbi@43.254.111.18) |
2023-03-14 03:56:34 +0100 | eggplantade | (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) |
2023-03-14 03:56:53 +0100 | gmg | (~user@user/gehmehgeh) (Ping timeout: 255 seconds) |
2023-03-14 03:59:46 +0100 | jero98772 | (~jero98772@2800:484:1d80:d8ce:efcc:cbb3:7f2a:6dff) (Remote host closed the connection) |
2023-03-14 04:02:50 +0100 | Goodbye_Vincent6 | (cyvahl@freakshells.net) |
2023-03-14 04:03:29 +0100 | dfg | (~dfg@user/dfg) (Remote host closed the connection) |
2023-03-14 04:03:45 +0100 | dfg | (~dfg@dfg.rocks) |
2023-03-14 04:03:46 +0100 | dfg | (~dfg@dfg.rocks) (Changing host) |
2023-03-14 04:03:46 +0100 | dfg | (~dfg@user/dfg) |
2023-03-14 04:04:32 +0100 | forell | (~forell@user/forell) |
2023-03-14 04:04:55 +0100 | Goodbye_Vincent | (cyvahl@freakshells.net) (Ping timeout: 276 seconds) |
2023-03-14 04:04:55 +0100 | Goodbye_Vincent6 | Goodbye_Vincent |
2023-03-14 04:11:18 +0100 | jespada | (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) (Ping timeout: 255 seconds) |
2023-03-14 04:11:41 +0100 | gastus | (~gastus@185.6.123.231) |
2023-03-14 04:13:25 +0100 | jespada | (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) |
2023-03-14 04:15:19 +0100 | gastus_ | (~gastus@185.6.123.215) (Ping timeout: 276 seconds) |
2023-03-14 04:18:30 +0100 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 255 seconds) |
2023-03-14 04:20:12 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2023-03-14 04:22:28 +0100 | forell | (~forell@user/forell) (Ping timeout: 276 seconds) |
2023-03-14 04:23:07 +0100 | vglfr | (~vglfr@91.102.183.234) (Ping timeout: 276 seconds) |
2023-03-14 04:23:08 +0100 | td_ | (~td@i53870912.versanet.de) (Ping timeout: 246 seconds) |
2023-03-14 04:23:34 +0100 | Inst | (~Inst@2601:6c4:4081:54f0:a477:258d:a836:e1e4) |
2023-03-14 04:24:36 +0100 | vglfr | (~vglfr@91.102.183.234) |
2023-03-14 04:24:57 +0100 | td_ | (~td@i53870906.versanet.de) |
2023-03-14 04:25:20 +0100 | sagax | (~sagax_nb@213.138.71.146) |
2023-03-14 04:25:20 +0100 | sagax | (~sagax_nb@213.138.71.146) (Changing host) |
2023-03-14 04:25:20 +0100 | sagax | (~sagax_nb@user/sagax) |
2023-03-14 04:33:48 +0100 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 264 seconds) |
2023-03-14 04:36:53 +0100 | slack1256 | (~slack1256@186.11.43.166) (Ping timeout: 268 seconds) |
2023-03-14 04:41:37 +0100 | ub | (~Thunderbi@p548c84ba.dip0.t-ipconnect.de) |
2023-03-14 04:41:58 +0100 | ubert | (~Thunderbi@p548c84ba.dip0.t-ipconnect.de) (Ping timeout: 276 seconds) |
2023-03-14 04:41:58 +0100 | ub | ubert |
2023-03-14 04:42:58 +0100 | terrorjack | (~terrorjac@2a01:4f8:1c1e:4e8c::) (Quit: The Lounge - https://thelounge.chat) |
2023-03-14 04:43:36 +0100 | dsrt^ | (~dsrt@c-24-30-76-89.hsd1.ga.comcast.net) (Remote host closed the connection) |
2023-03-14 04:44:22 +0100 | terrorjack | (~terrorjac@2a01:4f8:1c1e:4e8c::) |
2023-03-14 04:51:48 +0100 | rekahsoft | (~rekahsoft@bras-base-orllon1122w-grc-07-174-95-68-142.dsl.bell.ca) (Ping timeout: 255 seconds) |
2023-03-14 04:54:17 +0100 | roboguy_ | (~roboguy_@cpe-69-76-235-109.kc.res.rr.com) (Quit: Leaving...) |
2023-03-14 04:54:46 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds) |
2023-03-14 04:58:00 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
2023-03-14 04:58:00 +0100 | finn_elija | (~finn_elij@user/finn-elija/x-0085643) |
2023-03-14 04:58:00 +0100 | finn_elija | FinnElija |
2023-03-14 04:59:16 +0100 | wroathe | (~wroathe@user/wroathe) (Quit: leaving) |
2023-03-14 04:59:29 +0100 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
2023-03-14 05:22:16 +0100 | tessier | (~treed@ec2-184-72-149-67.compute-1.amazonaws.com) (Ping timeout: 276 seconds) |
2023-03-14 05:23:51 +0100 | tessier | (~treed@ip72-197-145-89.sd.sd.cox.net) |
2023-03-14 05:26:27 +0100 | freeside_ | (~mengwong@103.252.202.85) (Ping timeout: 255 seconds) |
2023-03-14 05:27:11 +0100 | tusko | (~yeurt@user/tusko) (Remote host closed the connection) |
2023-03-14 05:27:38 +0100 | tusko | (~yeurt@user/tusko) |
2023-03-14 05:33:11 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
2023-03-14 05:34:08 +0100 | xff0x | (~xff0x@2405:6580:b080:900:c2ab:3233:9b06:70ff) |
2023-03-14 05:35:50 +0100 | tusko | (~yeurt@user/tusko) (Remote host closed the connection) |
2023-03-14 05:35:50 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2023-03-14 05:35:50 +0100 | chexum_ | (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
2023-03-14 05:36:02 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2023-03-14 05:36:21 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2023-03-14 05:36:23 +0100 | tusko | (~yeurt@user/tusko) |
2023-03-14 05:39:24 +0100 | whatsupdoc | (uid509081@id-509081.hampstead.irccloud.com) |
2023-03-14 05:43:23 +0100 | harveypwca | (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) |
2023-03-14 05:46:32 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2023-03-14 05:47:11 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2023-03-14 05:51:55 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 250 seconds) |
2023-03-14 05:52:43 +0100 | markasoftware | (~quassel@107.161.26.124) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.) |
2023-03-14 05:53:21 +0100 | markasoftware | (~quassel@107.161.26.124) |
2023-03-14 05:59:48 +0100 | rettahcay | (~kaushikv@223.178.85.99) |
2023-03-14 06:03:13 +0100 | trev | (~trev@user/trev) |
2023-03-14 06:09:15 +0100 | <rettahcay> | hello folks, I'm trying to learn Zippers. So far, I've been using the section in "Learn you a haskell". Could you please recommend alternate sources for learning zippers, with some examples? Thanks |
2023-03-14 06:13:01 +0100 | vglfr | (~vglfr@91.102.183.234) (Remote host closed the connection) |
2023-03-14 06:14:16 +0100 | vglfr | (~vglfr@91.102.183.234) |
2023-03-14 06:22:34 +0100 | smallville7123 | (~Android@2001:8004:4441:8fd2:47d8:ec3c:8ede:6ae5) |
2023-03-14 06:22:58 +0100 | mbuf | (~Shakthi@49.207.178.186) |
2023-03-14 06:33:05 +0100 | tessier | (~treed@ip72-197-145-89.sd.sd.cox.net) (Ping timeout: 250 seconds) |
2023-03-14 06:33:49 +0100 | vglfr | (~vglfr@91.102.183.234) (Remote host closed the connection) |
2023-03-14 06:34:47 +0100 | vglfr | (~vglfr@91.102.183.234) |
2023-03-14 06:34:53 +0100 | tessier | (~treed@ec2-184-72-149-67.compute-1.amazonaws.com) |
2023-03-14 06:35:59 +0100 | <davean> | rettahcay: the wiki |
2023-03-14 06:35:59 +0100 | vglfr | (~vglfr@91.102.183.234) (Read error: Connection reset by peer) |
2023-03-14 06:36:52 +0100 | vglfr | (~vglfr@91.102.183.234) |
2023-03-14 06:38:51 +0100 | vglfr | (~vglfr@91.102.183.234) (Remote host closed the connection) |
2023-03-14 06:39:06 +0100 | vglfr | (~vglfr@91.102.183.234) |
2023-03-14 06:44:23 +0100 | vglfr | (~vglfr@91.102.183.234) (Read error: Connection reset by peer) |
2023-03-14 06:45:17 +0100 | vglfr | (~vglfr@91.102.183.234) |
2023-03-14 06:51:11 +0100 | xff0x | (~xff0x@2405:6580:b080:900:c2ab:3233:9b06:70ff) (Ping timeout: 246 seconds) |
2023-03-14 06:51:34 +0100 | xff0x | (~xff0x@178.255.149.135) |
2023-03-14 06:52:24 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
2023-03-14 06:56:30 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2023-03-14 06:57:57 +0100 | codaraxis__ | (~codaraxis@user/codaraxis) |
2023-03-14 06:58:28 +0100 | xff0x | (~xff0x@178.255.149.135) (Ping timeout: 276 seconds) |
2023-03-14 06:58:39 +0100 | <Umeaboy> | rettahcay: https://www.tutorialspoint.com/haskell/haskell_zippers.htm |
2023-03-14 06:58:40 +0100 | <Umeaboy> | ? |
2023-03-14 06:59:47 +0100 | xff0x | (~xff0x@2405:6580:b080:900:c2ab:3233:9b06:70ff) |
2023-03-14 07:00:49 +0100 | codaraxis | (~codaraxis@user/codaraxis) (Ping timeout: 250 seconds) |
2023-03-14 07:06:28 +0100 | Maeda | (~Maeda@91-161-10-149.subs.proxad.net) |
2023-03-14 07:08:59 +0100 | monoidal | (~monoidal@2a01cb0801ce4b00d527b7fc1dd66747.ipv6.abo.wanadoo.fr) |
2023-03-14 07:12:55 +0100 | cheater_ | (~Username@user/cheater) |
2023-03-14 07:13:06 +0100 | michalz | (~michalz@185.246.207.215) |
2023-03-14 07:14:59 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 246 seconds) |
2023-03-14 07:15:00 +0100 | cheater_ | cheater |
2023-03-14 07:15:22 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2023-03-14 07:18:14 +0100 | chomwitt | (~chomwitt@2a02:587:7a18:6d00:1ac0:4dff:fedb:a3f1) |
2023-03-14 07:26:02 +0100 | mncheck | (~mncheck@193.224.205.254) |
2023-03-14 07:30:43 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 256 seconds) |
2023-03-14 07:32:55 +0100 | shriekingnoise | (~shrieking@186.137.175.87) (Ping timeout: 276 seconds) |
2023-03-14 07:33:45 +0100 | rettahcay | (~kaushikv@223.178.85.99) () |
2023-03-14 07:39:39 +0100 | razetime | (~Thunderbi@43.254.111.18) (Ping timeout: 255 seconds) |
2023-03-14 07:43:26 +0100 | robobub | (uid248673@id-248673.uxbridge.irccloud.com) |
2023-03-14 07:48:13 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2023-03-14 08:02:40 +0100 | bgs | (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection) |
2023-03-14 08:05:20 +0100 | forell | (~forell@user/forell) |
2023-03-14 08:12:23 +0100 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2023-03-14 08:14:03 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2023-03-14 08:21:01 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 276 seconds) |
2023-03-14 08:21:36 +0100 | forell | (~forell@user/forell) (Quit: ZNC - https://znc.in) |
2023-03-14 08:24:24 +0100 | <opqdonut> | I'd like to pattern match on a constructor that has different numbers of arguments in different GHCs |
2023-03-14 08:24:38 +0100 | <opqdonut> | unfortunately the constructor isn't declared using record syntax |
2023-03-14 08:24:52 +0100 | <jackdk> | is it TH-related? |
2023-03-14 08:24:54 +0100 | <opqdonut> | yes |
2023-03-14 08:25:00 +0100 | <opqdonut> | I'd like to avoid using CPP |
2023-03-14 08:25:01 +0100 | forell | (~forell@user/forell) |
2023-03-14 08:25:27 +0100 | <opqdonut> | bndrName (KindedTV n _ _) = nameBase n -- this is what I want to do |
2023-03-14 08:25:33 +0100 | <jackdk> | Does `th-abstraction` or `th-compat` help you? |
2023-03-14 08:27:02 +0100 | <davean> | ailing that, view patterns? |
2023-03-14 08:27:08 +0100 | <opqdonut> | oh, th-compat looks like exactly the thing I want |
2023-03-14 08:29:12 +0100 | <jackdk> | or put your function-that-needs-cpp somewhere else, so your main modules don't have the cpp in the bulk of your code |
2023-03-14 08:29:35 +0100 | <jackdk> | write the function you wish you had, and then use CPP to fill out its body, then program against that |
2023-03-14 08:30:27 +0100 | <opqdonut> | yeah well if I'm going to need CPP I'll just put it in this file |
2023-03-14 08:30:38 +0100 | <opqdonut> | but I think th-compat might save me, I'll try it out |
2023-03-14 08:30:54 +0100 | <jackdk> | it may also be the sort of function worth PRing into one of these libraries |
2023-03-14 08:31:02 +0100 | <opqdonut> | this is a good reminder to use record syntax in public APIs even if it feels a bit unnecessary |
2023-03-14 08:31:02 +0100 | <jackdk> | anyway, good luck |
2023-03-14 08:33:44 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2023-03-14 08:34:41 +0100 | mastarija | (~mastarija@188.252.199.82) |
2023-03-14 08:37:00 +0100 | gurkenglas | (~gurkengla@dynamic-046-114-179-023.46.114.pool.telefonica.de) |
2023-03-14 08:37:03 +0100 | gurkengl1s | (~gurkengla@dynamic-046-114-179-023.46.114.pool.telefonica.de) |
2023-03-14 08:37:21 +0100 | minol | (~minol@58.247.98.202) |
2023-03-14 08:37:39 +0100 | <opqdonut> | tvName from th-abstraction is the thing I wanted |
2023-03-14 08:39:35 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2023-03-14 08:50:05 +0100 | lottaquestions | (~nick@2607:fa49:503e:7100:df4b:8386:5d62:a084) (Ping timeout: 260 seconds) |
2023-03-14 08:53:23 +0100 | lottaquestions_ | (~nick@2607:fa49:503e:7100:f10c:7d33:a2c4:22f3) |
2023-03-14 08:53:25 +0100 | jinsl | (~jinsl@2408:8207:2557:5df0:211:32ff:fec8:6aea) (Quit: ZNC - https://znc.in) |
2023-03-14 08:54:15 +0100 | jinsl | (~jinsl@2408:8207:2557:5df0:211:32ff:fec8:6aea) |
2023-03-14 08:56:43 +0100 | _ht | (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) |
2023-03-14 09:00:37 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
2023-03-14 09:02:27 +0100 | <mastarija> | Can't find anything on rank-N lenses, is there any research on that front? |
2023-03-14 09:05:05 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:f353:905c:faa4:880f) |
2023-03-14 09:08:32 +0100 | razetime | (~Thunderbi@117.254.34.249) |
2023-03-14 09:13:19 +0100 | acidjnk_new | (~acidjnk@p200300d6e715c44624b074cb2aeeb01b.dip0.t-ipconnect.de) |
2023-03-14 09:17:22 +0100 | cheater | (~Username@user/cheater) |
2023-03-14 09:18:47 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
2023-03-14 09:18:59 +0100 | nschoe | (~q@141.101.51.197) |
2023-03-14 09:21:20 +0100 | hugo- | (znc@verdigris.lysator.liu.se) (Ping timeout: 252 seconds) |
2023-03-14 09:22:11 +0100 | MajorBiscuit | (~MajorBisc@c-001-030-022.client.tudelft.eduvpn.nl) |
2023-03-14 09:25:06 +0100 | AmyMalik | (ellenor@callbox.trd.is) (Quit: Bye Open Projects!) |
2023-03-14 09:27:42 +0100 | gurkenglas | (~gurkengla@dynamic-046-114-179-023.46.114.pool.telefonica.de) (Ping timeout: 265 seconds) |
2023-03-14 09:27:56 +0100 | jmdaemon | (~jmdaemon@user/jmdaemon) |
2023-03-14 09:27:58 +0100 | gurkengl1s | (~gurkengla@dynamic-046-114-179-023.46.114.pool.telefonica.de) (Ping timeout: 276 seconds) |
2023-03-14 09:34:50 +0100 | harveypwca | (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving) |
2023-03-14 09:37:13 +0100 | hugo- | (znc@verdigris.lysator.liu.se) |
2023-03-14 09:38:09 +0100 | shryke | (~shryke@2a00:4b00:13c:cc:b27b:25ff:fe18:efd) (Read error: Connection reset by peer) |
2023-03-14 09:41:14 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2023-03-14 09:41:18 +0100 | zeenk | (~zeenk@2a02:2f04:a307:2300::7fe) |
2023-03-14 09:43:36 +0100 | opticblast | (~Thunderbi@172.58.84.141) |
2023-03-14 09:46:55 +0100 | <[Leary]> | mastarija: I don't know, and this is only an off-hand thought, but if you used `type HOLens s t a b = forall f. Functor f => (forall x. a x -> f (b x)) -> (forall x. s x -> f (t x))` and similar `HOTraversal`, etc, then most of lens could probably be written on top of that with the ~same implementations (and some eta expansion). You could then write `type Lens s t a b = HOLens (Const a) (Const b) (Const s) (Const t)` or similar and support less polym |
2023-03-14 09:46:55 +0100 | <[Leary]> | orphic lenses. |
2023-03-14 09:48:00 +0100 | Ellenor | (ellenor@callbox.trd.is) |
2023-03-14 09:48:01 +0100 | <mastarija> | [Leary]: But this won't work with existing utilities, right? |
2023-03-14 09:50:28 +0100 | <mastarija> | Aha, it's not `a -> f b` but `a x -> f (b x)`... |
2023-03-14 09:50:43 +0100 | opticblast | (~Thunderbi@172.58.84.141) (Ping timeout: 276 seconds) |
2023-03-14 09:50:47 +0100 | <mastarija> | Hm... looks interesting. |
2023-03-14 09:51:50 +0100 | fnurglewitz | (uid263868@id-263868.lymington.irccloud.com) |
2023-03-14 09:53:41 +0100 | gurkenglas | (~gurkengla@dynamic-046-114-179-023.46.114.pool.telefonica.de) |
2023-03-14 09:54:17 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 265 seconds) |
2023-03-14 09:57:11 +0100 | xff0x | (~xff0x@2405:6580:b080:900:c2ab:3233:9b06:70ff) (Ping timeout: 250 seconds) |
2023-03-14 09:57:35 +0100 | xff0x | (~xff0x@ai098135.d.east.v6connect.net) |
2023-03-14 09:58:42 +0100 | gurkengl1s | (~gurkengla@dynamic-046-114-179-023.46.114.pool.telefonica.de) |
2023-03-14 09:59:31 +0100 | aliosablack | (~chomwitt@ppp-94-69-24-160.home.otenet.gr) |
2023-03-14 10:00:08 +0100 | KabeloMsobomvuMo | (~elevenkb@2001:470:69fc:105::2:cb89) (Quit: You have been kicked for being idle) |
2023-03-14 10:00:10 +0100 | steve[m] | (~stevetrou@2001:470:69fc:105::e0b) (Quit: You have been kicked for being idle) |
2023-03-14 10:01:08 +0100 | <mastarija> | Any recommended polymorphic list library? |
2023-03-14 10:01:25 +0100 | KabeloMsobomvuMo | (~elevenkb@2001:470:69fc:105::2:cb89) |
2023-03-14 10:01:27 +0100 | KabeloMsobomvuMo | (~elevenkb@2001:470:69fc:105::2:cb89) () |
2023-03-14 10:01:32 +0100 | MajorBiscuit | (~MajorBisc@c-001-030-022.client.tudelft.eduvpn.nl) (Ping timeout: 265 seconds) |
2023-03-14 10:01:40 +0100 | steve[m] | (~stevetrou@2001:470:69fc:105::e0b) |
2023-03-14 10:02:01 +0100 | chomwitt | (~chomwitt@2a02:587:7a18:6d00:1ac0:4dff:fedb:a3f1) (Ping timeout: 265 seconds) |
2023-03-14 10:04:30 +0100 | MajorBiscuit | (~MajorBisc@2001:1c00:2408:a400:67e:5371:52a7:9b9a) |
2023-03-14 10:06:44 +0100 | eggplantade | (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2023-03-14 10:08:18 +0100 | jmdaemon | (~jmdaemon@user/jmdaemon) (Quit: ZNC 1.8.2 - https://znc.in) |
2023-03-14 10:09:19 +0100 | <lyxia> | base |
2023-03-14 10:09:35 +0100 | jmdaemon | (~jmdaemon@user/jmdaemon) |
2023-03-14 10:10:22 +0100 | razetime | (~Thunderbi@117.254.34.249) (Quit: See You Space Cowboy) |
2023-03-14 10:17:51 +0100 | <tomsmeding> | data HList l where HNil :: HList '[] ; HCons :: a -> HList l -> HList (a ': l) |
2023-03-14 10:18:35 +0100 | <tomsmeding> | potentially s/HNil/End/; s/HCons/(:>)/ |
2023-03-14 10:20:15 +0100 | aliosablack | (~chomwitt@ppp-94-69-24-160.home.otenet.gr) (Quit: Leaving) |
2023-03-14 10:20:23 +0100 | Umeaboy | (~Umeaboy@94-255-145-133.cust.bredband2.com) (Quit: Leaving) |
2023-03-14 10:22:12 +0100 | gurkengl1s | (~gurkengla@dynamic-046-114-179-023.46.114.pool.telefonica.de) (Ping timeout: 252 seconds) |
2023-03-14 10:22:19 +0100 | gurkenglas | (~gurkengla@dynamic-046-114-179-023.46.114.pool.telefonica.de) (Ping timeout: 246 seconds) |
2023-03-14 10:26:51 +0100 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) |
2023-03-14 10:27:06 +0100 | freeside | (~mengwong@122.11.248.245) |
2023-03-14 10:27:41 +0100 | econo | (uid147250@user/econo) (Quit: Connection closed for inactivity) |
2023-03-14 10:29:37 +0100 | jmdaemon | (~jmdaemon@user/jmdaemon) (Quit: ZNC 1.8.2 - https://znc.in) |
2023-03-14 10:30:46 +0100 | jmdaemon | (~jmdaemon@user/jmdaemon) |
2023-03-14 10:32:21 +0100 | cheater | (~Username@user/cheater) |
2023-03-14 10:37:41 +0100 | jmdaemon | (~jmdaemon@user/jmdaemon) (Quit: ZNC 1.8.2 - https://znc.in) |
2023-03-14 10:38:50 +0100 | jmdaemon | (~jmdaemon@user/jmdaemon) |
2023-03-14 10:39:01 +0100 | jmdaemon | (~jmdaemon@user/jmdaemon) (Remote host closed the connection) |
2023-03-14 10:40:10 +0100 | jmdaemon | (~jmdaemon@user/jmdaemon) |
2023-03-14 10:44:17 +0100 | gurkenglas | (~gurkengla@dynamic-046-114-179-023.46.114.pool.telefonica.de) |
2023-03-14 10:45:31 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2023-03-14 10:47:04 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2023-03-14 10:48:53 +0100 | NiceBird | (~NiceBird@185.133.111.196) |
2023-03-14 10:49:18 +0100 | gurkengl1s | (~gurkengla@dynamic-046-114-179-023.46.114.pool.telefonica.de) |
2023-03-14 10:51:00 +0100 | jonathanx | (~jonathan@h-176-10-144-60.NA.cust.bahnhof.se) |
2023-03-14 10:51:41 +0100 | Raito_Bezarius | (~Raito@wireguard/tunneler/raito-bezarius) (Read error: Connection reset by peer) |
2023-03-14 10:52:10 +0100 | Raito_Bezarius | (~Raito@wireguard/tunneler/raito-bezarius) |
2023-03-14 10:52:46 +0100 | whatsupdoc | (uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
2023-03-14 10:53:31 +0100 | <jonathanx> | I've run into an issue with the arbitrary instance for UUID (from quickcheck-instances). I have a rose tree with records, where one of the fields is a UUID. I do a business logic check that none of them are identical (untrusted input). This is messing up my tests, since the arbitrary-generated Tree contains duplicate UUIDs |
2023-03-14 10:54:22 +0100 | <jonathanx> | The Arbitrary instance for UUID gets four Word32 and combines them into a UUID, which should avoid collisions in theory |
2023-03-14 10:55:05 +0100 | <jonathanx> | The problem might be quickcheck being clever and trying out some edge-cases such as 0 |
2023-03-14 10:55:08 +0100 | ft | (~ft@p3e9bc443.dip0.t-ipconnect.de) (Quit: leaving) |
2023-03-14 10:55:47 +0100 | <jonathanx> | Is that a plausible source of the issue, and how do I make quickcheck stupider if that is the case? |
2023-03-14 10:56:25 +0100 | <opqdonut> | yeah that sounds plausible |
2023-03-14 10:56:35 +0100 | acidjnk_new | (~acidjnk@p200300d6e715c44624b074cb2aeeb01b.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
2023-03-14 10:56:38 +0100 | <opqdonut> | quickCheck uses a slowly-increasing "size" parameter for generating the cases |
2023-03-14 10:57:02 +0100 | <opqdonut> | also, it can shrink the values on an error |
2023-03-14 10:57:12 +0100 | <opqdonut> | either of those might cause duplicates |
2023-03-14 10:59:11 +0100 | cheater_ | (~Username@user/cheater) |
2023-03-14 10:59:18 +0100 | <opqdonut> | you can use `resize` and `noShrinking` to override those |
2023-03-14 11:00:07 +0100 | <opqdonut> | looks like the Arbitrary UUID has a shrink implementation, which might be causing the problem |
2023-03-14 11:00:07 +0100 | <jonathanx> | resizing solved it :) |
2023-03-14 11:00:11 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 264 seconds) |
2023-03-14 11:00:15 +0100 | cheater_ | cheater |
2023-03-14 11:01:03 +0100 | minol | (~minol@58.247.98.202) (Quit: Ping timeout (120 seconds)) |
2023-03-14 11:01:40 +0100 | <jonathanx> | Many thanks |
2023-03-14 11:06:20 +0100 | <dminuoso> | jonathanx: You might want a more elaborate Arbitrary instance on the outer types that has some `suchThat` guaranteesing they be different. |
2023-03-14 11:06:31 +0100 | <dminuoso> | Otherwise you introduce such spurious errors |
2023-03-14 11:07:12 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:19aa:397c:29a:40e4) |
2023-03-14 11:09:59 +0100 | gurkenglas | (~gurkengla@dynamic-046-114-179-023.46.114.pool.telefonica.de) (Ping timeout: 250 seconds) |
2023-03-14 11:10:40 +0100 | gurkengl1s | (~gurkengla@dynamic-046-114-179-023.46.114.pool.telefonica.de) (Ping timeout: 276 seconds) |
2023-03-14 11:11:52 +0100 | gurkenglas | (~gurkengla@dynamic-046-114-179-023.46.114.pool.telefonica.de) |
2023-03-14 11:12:00 +0100 | gurkengl1s | (~gurkengla@dynamic-046-114-179-023.46.114.pool.telefonica.de) |
2023-03-14 11:12:35 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:19aa:397c:29a:40e4) (Ping timeout: 250 seconds) |
2023-03-14 11:15:52 +0100 | hugo- | (znc@verdigris.lysator.liu.se) (Ping timeout: 268 seconds) |
2023-03-14 11:16:37 +0100 | ubert1 | (~Thunderbi@2a02:8109:abc0:6434:e47:2f53:4085:22b0) |
2023-03-14 11:17:14 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
2023-03-14 11:18:56 +0100 | jespada | (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2023-03-14 11:19:07 +0100 | hugo- | (znc@verdigris.lysator.liu.se) |
2023-03-14 11:19:37 +0100 | phma | (~phma@host-67-44-208-67.hnremote.net) (Read error: Connection reset by peer) |
2023-03-14 11:20:02 +0100 | phma | (phma@2001:5b0:2172:d248:f993:5086:a103:30f8) |
2023-03-14 11:20:44 +0100 | acidjnk | (~acidjnk@p200300d6e715c4465904287e9255905d.dip0.t-ipconnect.de) |
2023-03-14 11:21:55 +0100 | freeside | (~mengwong@122.11.248.245) (Ping timeout: 256 seconds) |
2023-03-14 11:25:03 +0100 | Major_Biscuit | (~MajorBisc@c-001-030-022.client.tudelft.eduvpn.nl) |
2023-03-14 11:26:38 +0100 | crazazy | (~user@130.89.171.62) |
2023-03-14 11:28:28 +0100 | gurkengl1s | (~gurkengla@dynamic-046-114-179-023.46.114.pool.telefonica.de) (Ping timeout: 246 seconds) |
2023-03-14 11:28:37 +0100 | gurkenglas | (~gurkengla@dynamic-046-114-179-023.46.114.pool.telefonica.de) (Ping timeout: 250 seconds) |
2023-03-14 11:28:44 +0100 | MajorBiscuit | (~MajorBisc@2001:1c00:2408:a400:67e:5371:52a7:9b9a) (Ping timeout: 246 seconds) |
2023-03-14 11:30:21 +0100 | gurkenglas | (~gurkengla@dynamic-046-114-179-023.46.114.pool.telefonica.de) |
2023-03-14 11:30:34 +0100 | cheater_ | (~Username@user/cheater) |
2023-03-14 11:30:41 +0100 | gurkengl1s | (~gurkengla@dynamic-046-114-179-023.46.114.pool.telefonica.de) |
2023-03-14 11:30:58 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) |
2023-03-14 11:32:00 +0100 | cheater__ | (~Username@user/cheater) |
2023-03-14 11:33:25 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 276 seconds) |
2023-03-14 11:34:11 +0100 | freeside | (~mengwong@122.11.248.245) |
2023-03-14 11:35:10 +0100 | cheater___ | (~Username@user/cheater) |
2023-03-14 11:35:10 +0100 | cheater___ | cheater |
2023-03-14 11:35:36 +0100 | cheater_ | (~Username@user/cheater) (Ping timeout: 268 seconds) |
2023-03-14 11:36:05 +0100 | cheater__ | (~Username@user/cheater) (Ping timeout: 246 seconds) |
2023-03-14 11:36:34 +0100 | cheater_ | (~Username@user/cheater) |
2023-03-14 11:39:16 +0100 | freeside | (~mengwong@122.11.248.245) (Ping timeout: 276 seconds) |
2023-03-14 11:39:38 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 246 seconds) |
2023-03-14 11:39:48 +0100 | cheater_ | cheater |
2023-03-14 11:40:54 +0100 | bhall | (~brunohall@195.147.207.136) |
2023-03-14 11:41:38 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer) |
2023-03-14 11:44:48 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) |
2023-03-14 11:48:04 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer) |
2023-03-14 11:51:37 +0100 | Ellenor | AmyMalik |
2023-03-14 11:56:23 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 246 seconds) |
2023-03-14 11:58:23 +0100 | gurkenglas | Guest3950 |
2023-03-14 11:58:23 +0100 | Guest3950 | (~gurkengla@dynamic-046-114-179-023.46.114.pool.telefonica.de) (Killed (sodium.libera.chat (Nickname regained by services))) |
2023-03-14 11:58:23 +0100 | gurkengl1s | gurkenglas |
2023-03-14 11:58:42 +0100 | gurkengl1s | (~gurkengla@dynamic-046-114-179-023.46.114.pool.telefonica.de) |
2023-03-14 11:59:50 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
2023-03-14 12:02:26 +0100 | ec | (~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds) |
2023-03-14 12:03:00 +0100 | slack1256 | (~slack1256@186.11.43.166) |
2023-03-14 12:03:12 +0100 | ec | (~ec@gateway/tor-sasl/ec) |
2023-03-14 12:03:18 +0100 | jmdaemon | (~jmdaemon@user/jmdaemon) (Quit: ZNC 1.8.2 - https://znc.in) |
2023-03-14 12:04:00 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) |
2023-03-14 12:04:25 +0100 | jmdaemon | (~jmdaemon@user/jmdaemon) |
2023-03-14 12:05:10 +0100 | cheater | (~Username@user/cheater) |
2023-03-14 12:05:40 +0100 | freeside | (~mengwong@122.11.248.245) |
2023-03-14 12:09:08 +0100 | slack1256 | (~slack1256@186.11.43.166) (Ping timeout: 265 seconds) |
2023-03-14 12:09:48 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 264 seconds) |
2023-03-14 12:10:06 +0100 | freeside | (~mengwong@122.11.248.245) (Ping timeout: 265 seconds) |
2023-03-14 12:16:42 +0100 | cheater | (~Username@user/cheater) |
2023-03-14 12:18:28 +0100 | cheater_ | (~Username@user/cheater) |
2023-03-14 12:21:44 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 252 seconds) |
2023-03-14 12:21:54 +0100 | cheater_ | cheater |
2023-03-14 12:31:07 +0100 | cheater_ | (~Username@user/cheater) |
2023-03-14 12:33:34 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 268 seconds) |
2023-03-14 12:33:42 +0100 | cheater_ | cheater |
2023-03-14 12:41:12 +0100 | ph88^ | (~ph88@ip5b426553.dynamic.kabel-deutschland.de) |
2023-03-14 12:47:54 +0100 | gurkengl1s | (~gurkengla@dynamic-046-114-179-023.46.114.pool.telefonica.de) (Ping timeout: 255 seconds) |
2023-03-14 12:48:00 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2023-03-14 12:48:10 +0100 | gurkenglas | (~gurkengla@dynamic-046-114-179-023.46.114.pool.telefonica.de) (Ping timeout: 276 seconds) |
2023-03-14 12:49:24 +0100 | jmdaemon | (~jmdaemon@user/jmdaemon) (Ping timeout: 264 seconds) |
2023-03-14 12:49:29 +0100 | gurkenglas | (~gurkengla@dynamic-089-204-153-207.89.204.153.pool.telefonica.de) |
2023-03-14 12:49:33 +0100 | <mastarija> | Is there a way to get around conflicting family instance declarations when using type classes? |
2023-03-14 12:49:45 +0100 | gurkengl1s | (~gurkengla@dynamic-089-204-153-207.89.204.153.pool.telefonica.de) |
2023-03-14 12:49:52 +0100 | <mastarija> | I'd like to "overlapp" two type calss instances, problem is, they define a type family |
2023-03-14 12:50:07 +0100 | <mastarija> | So there's a conflict with type families in case of overlapp |
2023-03-14 12:50:28 +0100 | <L29Ah> | -XFlexibleInstances -XIncoherentInstances? |
2023-03-14 12:50:52 +0100 | <tomsmeding> | mastarija: are you sure you need open type families? |
2023-03-14 12:51:03 +0100 | <mastarija> | I don't know :) |
2023-03-14 12:51:06 +0100 | <tomsmeding> | closed type families make this much easier, if they suffice for your purpose |
2023-03-14 12:51:10 +0100 | <tomsmeding> | type family F a where ... |
2023-03-14 12:51:18 +0100 | <lyxia> | generally overlap and type families don't mix well |
2023-03-14 12:51:29 +0100 | <tomsmeding> | there the clauses need to all be in that one block, but they will be tried in-order from top to bottom |
2023-03-14 12:51:49 +0100 | <tomsmeding> | so you don't have a coherence requirement |
2023-03-14 12:52:44 +0100 | <mastarija> | I have a class e.g. `class X s where type family T s; doSomething :: T s -> s;` |
2023-03-14 12:52:55 +0100 | <tomsmeding> | (presumably without the "family" there) |
2023-03-14 12:52:56 +0100 | <mastarija> | Can't really modify it though. |
2023-03-14 12:53:00 +0100 | <tomsmeding> | ah |
2023-03-14 12:53:02 +0100 | <lyxia> | you often end up with stuck types when defining the corresponding instance though, so you end up having to repeat the relevant equation as a constraint |
2023-03-14 12:53:40 +0100 | <tomsmeding> | if you can't modify the class then disregard my suggestion :) |
2023-03-14 12:53:52 +0100 | <mastarija> | So I'm stuck with this, right? |
2023-03-14 12:53:55 +0100 | crazazy | (~user@130.89.171.62) (Ping timeout: 268 seconds) |
2023-03-14 12:54:18 +0100 | <lyxia> | what are the overlapping instances you want to write |
2023-03-14 12:54:18 +0100 | <mastarija> | I can only define a newtype wrapper or something. Or is there another way? |
2023-03-14 12:54:18 +0100 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
2023-03-14 12:55:16 +0100 | <mastarija> | I have one general instance for variants that makes the `T (x:xs) = x` |
2023-03-14 12:55:34 +0100 | <mastarija> | So basically T is the type at the top level of a type level list. |
2023-03-14 12:55:36 +0100 | <geekosaur> | if your desired setup requires a type family that returns different types for the same parameter type then you can't do it except by making one of them a newtype |
2023-03-14 12:55:54 +0100 | <mastarija> | But I want to have one instance for a specific type level list. |
2023-03-14 12:56:42 +0100 | <mastarija> | e.g. existing instance would convert `[Int, Bool, Char]` to Int |
2023-03-14 12:57:17 +0100 | <mastarija> | But I want to have a specific instance for e.g. `[Char, Bool, Int]` that results in a `Maybe Float` |
2023-03-14 12:58:48 +0100 | <geekosaur> | I think that's doable but you can't do it with an associated type? you would have to split it out into a standalone type family |
2023-03-14 12:59:44 +0100 | <mastarija> | And put my case at the top, right? |
2023-03-14 12:59:50 +0100 | <geekosaur> | yes |
2023-03-14 13:02:01 +0100 | <mastarija> | geekosaur: But that would be a closed type family? I think I need open type family after all... |
2023-03-14 13:02:28 +0100 | <geekosaur> | no, it should be doable as an open type family, I think |
2023-03-14 13:03:03 +0100 | <geekosaur> | it just can't be done as an associated type family because too much of the type family machinery is "hidden" by the typeclass machinery |
2023-03-14 13:03:47 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
2023-03-14 13:03:52 +0100 | <geekosaur> | although if it's a type level list I'm not sure it needs to be open; you're missing only one case as described ('[]) |
2023-03-14 13:04:23 +0100 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) (Remote host closed the connection) |
2023-03-14 13:04:38 +0100 | <mastarija> | Ok. Maybe I've misunderstood what open and closed means. Closed means : all instances defined at the same place, Open means : I can define instance elsewhere in other modules? |
2023-03-14 13:04:55 +0100 | <geekosaur> | yes |
2023-03-14 13:05:27 +0100 | <geekosaur> | but it also depends on what you are defining. if it's type level lists then it only needs to be open if you have multiple such special cases defined in different places |
2023-03-14 13:05:43 +0100 | jespada | (~jespada@148.252.132.45) |
2023-03-14 13:05:49 +0100 | <geekosaur> | and you will be sad in that case |
2023-03-14 13:05:59 +0100 | <mastarija> | Ok. I'm sad then. |
2023-03-14 13:06:03 +0100 | <mastarija> | :) |
2023-03-14 13:06:25 +0100 | <mastarija> | For now, i only have one special case. But I might have a few more as I go. |
2023-03-14 13:06:43 +0100 | <geekosaur> | (because they all need to be defined before the general case and you can't do that if they're spread over multiple modules) |
2023-03-14 13:07:08 +0100 | <mastarija> | yeah. |
2023-03-14 13:07:23 +0100 | <mastarija> | Welp, time to rethink everything. |
2023-03-14 13:08:07 +0100 | <geekosaur> | also they all need to be visible before the general case or the general case will be used when you don't want it |
2023-03-14 13:10:17 +0100 | <geekosaur> | (I think there's still an incoherence bug open about that in ghc because you could have a definition with a different type somewhere that can't be checked) |
2023-03-14 13:10:31 +0100 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) |
2023-03-14 13:12:35 +0100 | notzmv | (~zmv@user/notzmv) |
2023-03-14 13:19:07 +0100 | kuribas | (~user@ip-188-118-57-242.reverse.destiny.be) |
2023-03-14 13:29:02 +0100 | bitdex_ | (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
2023-03-14 13:31:53 +0100 | <dminuoso> | Is there a sleek way to get a timeout on resource acquisition with resource-pool? |
2023-03-14 13:34:31 +0100 | <dminuoso> | The resource-pool is filled with mvars and uninterruptible masks, that its really not obvious whether there is a safe interface for this. |
2023-03-14 13:40:11 +0100 | cheater_ | (~Username@user/cheater) |
2023-03-14 13:41:49 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 246 seconds) |
2023-03-14 13:41:56 +0100 | cheater_ | cheater |
2023-03-14 13:44:31 +0100 | <merijn> | dminuoso: recent version has a "try" based API, maybe that lets you distinguish what you want? |
2023-03-14 13:45:31 +0100 | <dminuoso> | merijn: Not quite, I would like a kind of tryWithResourceTimeout :: Pool a -> Int -> (a -> IO r) -> IO (Maybe r) |
2023-03-14 13:45:43 +0100 | Cale | (~cale@cpe80d04ade0a03-cm80d04ade0a01.cpe.net.cable.rogers.com) (Ping timeout: 268 seconds) |
2023-03-14 13:45:59 +0100 | <dminuoso> | I mean I could do a kind of spinning tryWithResource, but that feels like a waste |
2023-03-14 13:46:42 +0100 | <dminuoso> | An alternative I've pondered about was starting a canceallable timer that is aborted on the callback |
2023-03-14 13:53:05 +0100 | jespada | (~jespada@148.252.132.45) (Read error: Connection reset by peer) |
2023-03-14 13:53:32 +0100 | jespada | (~jespada@148.252.132.45) |
2023-03-14 13:59:51 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2023-03-14 14:03:36 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 268 seconds) |
2023-03-14 14:03:46 +0100 | cheater | (~Username@user/cheater) |
2023-03-14 14:08:19 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer) |
2023-03-14 14:09:21 +0100 | freeside | (~mengwong@103.252.202.85) |
2023-03-14 14:10:21 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:19aa:397c:29a:40e4) |
2023-03-14 14:14:51 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:19aa:397c:29a:40e4) (Ping timeout: 248 seconds) |
2023-03-14 14:15:11 +0100 | gurkenglas | (~gurkengla@dynamic-089-204-153-207.89.204.153.pool.telefonica.de) (Ping timeout: 264 seconds) |
2023-03-14 14:15:46 +0100 | coot | (~coot@213.134.171.3) |
2023-03-14 14:15:53 +0100 | bhall | (~brunohall@195.147.207.136) (Ping timeout: 250 seconds) |
2023-03-14 14:15:55 +0100 | gurkengl1s | (~gurkengla@dynamic-089-204-153-207.89.204.153.pool.telefonica.de) (Ping timeout: 276 seconds) |
2023-03-14 14:16:33 +0100 | bhall | (~brunohall@195.147.207.136) |
2023-03-14 14:19:57 +0100 | cheater_ | (~Username@user/cheater) |
2023-03-14 14:20:51 +0100 | thyriaen | (~thyriaen@2a01:aea0:dd4:5328:6245:cbff:fe9f:48b1) |
2023-03-14 14:21:22 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 246 seconds) |
2023-03-14 14:21:22 +0100 | cheater_ | cheater |
2023-03-14 14:22:30 +0100 | thegeekinside | (~thegeekin@189.217.80.156) (Read error: Connection reset by peer) |
2023-03-14 14:28:40 +0100 | bgs | (~bgs@212-85-160-171.dynamic.telemach.net) |
2023-03-14 14:31:46 +0100 | cheater_ | (~Username@user/cheater) |
2023-03-14 14:35:35 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 264 seconds) |
2023-03-14 14:35:45 +0100 | cheater_ | cheater |
2023-03-14 14:38:08 +0100 | notzmv | (~zmv@user/notzmv) (Ping timeout: 246 seconds) |
2023-03-14 14:38:25 +0100 | jespada | (~jespada@148.252.132.45) (Ping timeout: 250 seconds) |
2023-03-14 14:41:45 +0100 | lomilomi | (~Thunderbi@155.133.70.5) |
2023-03-14 14:42:29 +0100 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8) |
2023-03-14 14:43:46 +0100 | smallville7123 | (~Android@2001:8004:4441:8fd2:47d8:ec3c:8ede:6ae5) (Read error: Connection reset by peer) |
2023-03-14 14:45:29 +0100 | jespada | (~jespada@148.252.132.45) |
2023-03-14 14:46:16 +0100 | jero98772 | (~jero98772@2800:484:1d80:d8ce:efcc:cbb3:7f2a:6dff) |
2023-03-14 14:49:46 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) |
2023-03-14 14:49:59 +0100 | monoidal | (~monoidal@2a01cb0801ce4b00d527b7fc1dd66747.ipv6.abo.wanadoo.fr) (Quit: Client closed) |
2023-03-14 14:50:34 +0100 | monoidal | (~monoidal@2a01cb0801ce4b00d527b7fc1dd66747.ipv6.abo.wanadoo.fr) |
2023-03-14 14:51:00 +0100 | cheater_ | (~Username@user/cheater) |
2023-03-14 14:51:19 +0100 | <merijn> | So...is there a Verse paper yet anywhere? I couldn't quickly find anything using google and SPJ's Haskell Exchange was a bit light on details |
2023-03-14 14:51:47 +0100 | ph88^ | (~ph88@ip5b426553.dynamic.kabel-deutschland.de) (Quit: Leaving) |
2023-03-14 14:52:40 +0100 | <monoidal> | https://simon.peytonjones.org/verse-calculus/ |
2023-03-14 14:52:55 +0100 | <monoidal> | I'm only aware of this draft |
2023-03-14 14:54:27 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 250 seconds) |
2023-03-14 14:54:30 +0100 | smallville7123 | (~Android@2001:8004:4440:2268:bfb9:bd3c:9c29:da7d) |
2023-03-14 14:54:35 +0100 | cheater_ | cheater |
2023-03-14 14:55:10 +0100 | <monoidal> | It's dated March23 so probably that's the newest thing there is |
2023-03-14 14:57:05 +0100 | cheater_ | (~Username@user/cheater) |
2023-03-14 14:57:59 +0100 | ddellacosta | (~ddellacos@146.70.165.157) (Quit: WeeChat 3.8) |
2023-03-14 14:58:59 +0100 | ddellacosta | (~ddellacos@146.70.165.157) |
2023-03-14 14:59:33 +0100 | monoidal | (~monoidal@2a01cb0801ce4b00d527b7fc1dd66747.ipv6.abo.wanadoo.fr) (Quit: Client closed) |
2023-03-14 15:00:23 +0100 | <merijn> | That is...some list of authors |
2023-03-14 15:00:39 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 256 seconds) |
2023-03-14 15:00:40 +0100 | cheater_ | cheater |
2023-03-14 15:01:40 +0100 | <merijn> | Well, let's see if I can fry my brain with this during the coming week :p |
2023-03-14 15:01:53 +0100 | monoidal | (~monoidal@2a01cb0801ce4b0038ab7da82b18adcb.ipv6.abo.wanadoo.fr) |
2023-03-14 15:06:41 +0100 | cheater_ | (~Username@user/cheater) |
2023-03-14 15:07:04 +0100 | sidy | (~sidy@user/sidy) |
2023-03-14 15:08:34 +0100 | smallville7123 | (~Android@2001:8004:4440:2268:bfb9:bd3c:9c29:da7d) (Read error: Connection reset by peer) |
2023-03-14 15:08:58 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 268 seconds) |
2023-03-14 15:09:06 +0100 | cheater_ | cheater |
2023-03-14 15:10:41 +0100 | acidjnk | (~acidjnk@p200300d6e715c4465904287e9255905d.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
2023-03-14 15:17:57 +0100 | thegeekinside | (~thegeekin@189.217.80.156) |
2023-03-14 15:20:20 +0100 | vglfr | (~vglfr@91.102.183.234) (Remote host closed the connection) |
2023-03-14 15:20:58 +0100 | vglfr | (~vglfr@91.102.183.234) |
2023-03-14 15:21:40 +0100 | MacSlow | (~MacSlow@p57bb2fc5.dip0.t-ipconnect.de) |
2023-03-14 15:21:47 +0100 | <MacSlow> | Greetings everybody! |
2023-03-14 15:22:42 +0100 | <MacSlow> | ups :) |
2023-03-14 15:24:14 +0100 | use-value1 | (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) |
2023-03-14 15:24:55 +0100 | vglfr | (~vglfr@91.102.183.234) (Remote host closed the connection) |
2023-03-14 15:25:23 +0100 | use-value | (~Thunderbi@2a00:23c6:8a03:2f01:e8b8:bba:4009:f9b7) (Ping timeout: 264 seconds) |
2023-03-14 15:25:24 +0100 | use-value1 | use-value |
2023-03-14 15:25:40 +0100 | vglfr | (~vglfr@91.102.183.234) |
2023-03-14 15:25:47 +0100 | Sgeo | (~Sgeo@user/sgeo) |
2023-03-14 15:26:11 +0100 | jespada | (~jespada@148.252.132.45) (Read error: Connection reset by peer) |
2023-03-14 15:33:05 +0100 | <tomsmeding> | merijn: not only some list of authors, also some number of pages, phew |
2023-03-14 15:33:34 +0100 | <merijn> | tomsmeding: This is gonna be like that time I (tried to) read pigworker's thesis all over again... |
2023-03-14 15:33:36 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer) |
2023-03-14 15:34:07 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) |
2023-03-14 15:36:24 +0100 | cheater_ | (~Username@user/cheater) |
2023-03-14 15:36:35 +0100 | <merijn> | tomsmeding: tbf the paper ends at page 25 |
2023-03-14 15:36:39 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 260 seconds) |
2023-03-14 15:36:40 +0100 | cheater_ | cheater |
2023-03-14 15:36:41 +0100 | <tomsmeding> | true |
2023-03-14 15:37:34 +0100 | <merijn> | But I'm intrigued. I understand what the ambitious goal is, I just don't understand quite yet how verse contributes to that goal :p |
2023-03-14 15:43:00 +0100 | phma | (phma@2001:5b0:2172:d248:f993:5086:a103:30f8) (Read error: Connection reset by peer) |
2023-03-14 15:43:48 +0100 | phma | (~phma@host-67-44-208-67.hnremote.net) |
2023-03-14 15:51:36 +0100 | cheater_ | (~Username@user/cheater) |
2023-03-14 15:53:08 +0100 | kimjetwav | (~user@2607:fea8:235e:b600:86cc:d332:aa2a:c88a) (Remote host closed the connection) |
2023-03-14 15:53:23 +0100 | kimjetwav | (~user@2607:fea8:235e:b600:904e:e9db:46f6:ca3a) |
2023-03-14 15:53:49 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 250 seconds) |
2023-03-14 15:53:51 +0100 | cheater_ | cheater |
2023-03-14 15:58:15 +0100 | <kuribas> | to me verse looks like a very interesting project on it's own, but not very fitting for the target audience, which is game developers. |
2023-03-14 15:59:24 +0100 | gurkenglas | (~gurkengla@dynamic-089-204-153-207.89.204.153.pool.telefonica.de) |
2023-03-14 16:01:17 +0100 | shriekingnoise | (~shrieking@186.137.175.87) |
2023-03-14 16:01:54 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer) |
2023-03-14 16:04:25 +0100 | gurkengl1s | (~gurkengla@dynamic-089-204-153-207.89.204.153.pool.telefonica.de) |
2023-03-14 16:10:30 +0100 | <merijn> | kuribas: they're not targetting *current* game developers |
2023-03-14 16:11:29 +0100 | <EvanR> | unfortunately no one can be told what the Verse is. It must be experienced for yourself |
2023-03-14 16:11:33 +0100 | <merijn> | If you listen to their vision it's very clear what the goal is and games development in their current form is largely unrelated |
2023-03-14 16:12:04 +0100 | <merijn> | kuribas: So, I very distinctly recall being very into MUDs 20 years ago and playing with a bunch of them that allowed users to "create" their own objects/spells/whatever |
2023-03-14 16:12:24 +0100 | <EvanR> | lambdaMOO |
2023-03-14 16:12:30 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:f353:905c:faa4:880f) (Quit: WeeChat 2.8) |
2023-03-14 16:12:44 +0100 | <merijn> | The problem is that generally you're limited to a handful of builtin operations (think DSL) OR "essentially evaling completely unsafe code in an unknown environment" |
2023-03-14 16:13:30 +0100 | <merijn> | kuribas: to me it is very clear that the "open metaverse" Sweeney imagines is very much "let any 3rd party extend and add their own kinda logic/things to a persistent world" |
2023-03-14 16:13:39 +0100 | <merijn> | kuribas: Which gives rise to several fundamental problems |
2023-03-14 16:14:06 +0100 | <merijn> | 1) how do you update/fix code in some persistent world where it might already be running somewhere outside your control? |
2023-03-14 16:14:53 +0100 | <mauke> | that's a solved problem! just look at how smart contracts work |
2023-03-14 16:14:58 +0100 | <mauke> | *crashes and burns* |
2023-03-14 16:15:01 +0100 | <EvanR> | you're limited to a "handful" of built-in operations when you use the normal OS. LambdaMOO's OS was just limited to what was relevant in a MUD context. With safeguards and security measures you'd expect |
2023-03-14 16:15:02 +0100 | <[exa]> | lol |
2023-03-14 16:15:05 +0100 | <merijn> | 2) how do you write code/logic to operate things on a world that may contain in any arbitrary object that you can't/don't know ahead of time and get sensible semantics beyond simply crashing (i.e. an open world assumption ala Haskell's typeclasses, but for everything) |
2023-03-14 16:15:21 +0100 | <[exa]> | merijn: you can run a small z80 in that world |
2023-03-14 16:15:27 +0100 | <[exa]> | I already saw it somewhere |
2023-03-14 16:15:28 +0100 | <merijn> | Now, I don't quite understand how Verse addresses these things |
2023-03-14 16:15:48 +0100 | <merijn> | but I understand the goal and the problems, so I'm intrigued how they think Verse will address these |
2023-03-14 16:16:34 +0100 | <EvanR> | the issue wouldn't be with needing security and safety measures and ownership regimes, but making that distributed instead of centralized |
2023-03-14 16:18:00 +0100 | <kuribas> | merijn: I don't see how pervasive logic variables come into that. |
2023-03-14 16:18:04 +0100 | <EvanR> | simply crashing got us this far, i.e. HTTP's 404 |
2023-03-14 16:18:49 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) |
2023-03-14 16:19:08 +0100 | <merijn> | EvanR: I mean, there's a million other problems with the whole vision of an open "metaverse", sure |
2023-03-14 16:19:30 +0100 | <merijn> | EvanR: But we can (hopefully?) agree that classical languages/game design are definitely *not suited* |
2023-03-14 16:19:41 +0100 | <kuribas> | merijn: like pervasive lazyness, it's nice conceptually, but a big headach for something practice. |
2023-03-14 16:19:56 +0100 | <merijn> | I don't have any strong opinions on whether Verse *is* suited, I'm just excited that someone is thinking about this *seriously* |
2023-03-14 16:20:05 +0100 | <kuribas> | merijn: and I don't see how logic variables give you these garantees. |
2023-03-14 16:20:35 +0100 | <merijn> | Like, look at that author list, that's some serious thinking about "how and what" Epic is paying for |
2023-03-14 16:21:01 +0100 | <EvanR> | if you consider classical game programming is be a highly flexible and barely scientific endeavour, it's hard to see how anything could be ill suited if it worked xD |
2023-03-14 16:21:10 +0100 | <merijn> | kuribas: I don't either, because I haven't read that paper yet. But I'm just assuming that the authors *do* see something in them that helps :p |
2023-03-14 16:21:29 +0100 | <[exa]> | hey guys do you know how many lines of scripting code is behind some past titles, say that Horizon thing |
2023-03-14 16:22:05 +0100 | <[exa]> | I mean the _scripting_ code, which is created and copypasted around by content developers (not necessarily programmers) |
2023-03-14 16:22:07 +0100 | <merijn> | I mean, something like Second Life, roblox, or Gary's Mod is probably a more relevant example |
2023-03-14 16:23:02 +0100 | <EvanR> | minecraft redstone circuitry is clearly a good compromise to base the future on imo |
2023-03-14 16:23:40 +0100 | <merijn> | actually something like "minecraft, but extensible in game with extensions by authors who don't know each other" seems like a good starting viewpoint |
2023-03-14 16:24:05 +0100 | <EvanR> | the MOO model did that |
2023-03-14 16:24:15 +0100 | <EvanR> | thanks xerox |
2023-03-14 16:24:23 +0100 | <merijn> | EvanR: Most MOOs were fairly limited still |
2023-03-14 16:24:31 +0100 | <kuribas> | skyrim is one of the most buggy environments, still everyone is modding it. |
2023-03-14 16:24:57 +0100 | <merijn> | kuribas: That does not seem directly relevant? |
2023-03-14 16:25:10 +0100 | <xerox> | EvanR: you're welcome |
2023-03-14 16:25:25 +0100 | <jean-paul[m]> | amateurs have an extremely high tolerance for bad technology |
2023-03-14 16:25:26 +0100 | <jean-paul[m]> | (is the relevance, maybe) |
2023-03-14 16:25:41 +0100 | <EvanR> | merijn, specifically lambdaMOO which is still running. What specifically is limited here? |
2023-03-14 16:25:42 +0100 | <[exa]> | kuribas: did you play cyberpunk? :D |
2023-03-14 16:26:37 +0100 | <EvanR> | someone built an entire MUD within it for some reason |
2023-03-14 16:26:52 +0100 | <EvanR> | seemed a bit out of place but why not |
2023-03-14 16:29:17 +0100 | <merijn> | EvanR: You're limited by the MOO language. At least, when I first looked into MOOs a lot them were rather limited |
2023-03-14 16:29:29 +0100 | <EvanR> | the lambdaMOO languages was basically C |
2023-03-14 16:29:32 +0100 | <EvanR> | language |
2023-03-14 16:30:02 +0100 | <EvanR> | not a functional language by any means, but through objects you could get the same benefits ish |
2023-03-14 16:30:11 +0100 | <kuribas> | [exa]: no, but I played the witcher. |
2023-03-14 16:30:29 +0100 | <witcher> | :) |
2023-03-14 16:30:42 +0100 | <EvanR> | it's turing complete, so I'm still not clear on the limitation you are getting at |
2023-03-14 16:31:06 +0100 | <EvanR> | inconvenient to use like a turing tarpit? |
2023-03-14 16:31:14 +0100 | <EvanR> | (it wasn't really) |
2023-03-14 16:32:18 +0100 | <EvanR> | I guess it would be possible implement a compiler within the system if you wanted to use a different language |
2023-03-14 16:32:39 +0100 | MacSlow | (~MacSlow@p57bb2fc5.dip0.t-ipconnect.de) (Quit: leaving) |
2023-03-14 16:33:01 +0100 | <kuribas> | merijn: I just wonder how much more stable skyrim would be with a static functional scripting language. |
2023-03-14 16:33:20 +0100 | <kuribas> | merijn: But then it could be the 3D engine which is buggy as well. |
2023-03-14 16:33:21 +0100 | <merijn> | EvanR: I don't remember which MOO I looked at and also this was years ago, so :p |
2023-03-14 16:33:45 +0100 | <merijn> | kuribas: I mean, given that bethesda appears to just be kinda bad at software probably not much :p |
2023-03-14 16:34:12 +0100 | <EvanR> | then you should check out the lambdaMOO system so we can all better judge modern attempts to recreate it xD |
2023-03-14 16:34:21 +0100 | Major_Biscuit | (~MajorBisc@c-001-030-022.client.tudelft.eduvpn.nl) (Ping timeout: 246 seconds) |
2023-03-14 16:34:38 +0100 | <EvanR> | it's possible for random people from the internet to log in right now and start programming stuff |
2023-03-14 16:34:39 +0100 | <dminuoso> | Is there something like TQueue that have something like `takeTSomething :: TSomething a -> Int -> STM [a]`? |
2023-03-14 16:35:55 +0100 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
2023-03-14 16:36:10 +0100 | <dminuoso> | Or should I just maintain two TQueues, with a worker that continuously flushTQueues one, and pushes chunks onto a second TQueue? |
2023-03-14 16:36:12 +0100 | <EvanR> | isn't that just replicateM take from queue |
2023-03-14 16:37:08 +0100 | <dminuoso> | What do you mean by `queue`? |
2023-03-14 16:37:11 +0100 | <dminuoso> | And `take`? |
2023-03-14 16:38:51 +0100 | Major_Biscuit | (~MajorBisc@c-001-030-022.client.tudelft.eduvpn.nl) |
2023-03-14 16:39:01 +0100 | <mauke> | :t \n -> replicateM n . readTQueue |
2023-03-14 16:39:02 +0100 | <lambdabot> | error: |
2023-03-14 16:39:02 +0100 | <lambdabot> | Variable not in scope: readTQueue :: a -> m a1 |
2023-03-14 16:39:07 +0100 | <[exa]> | kuribas: witchr is relatively bugfree. :] |
2023-03-14 16:41:24 +0100 | <EvanR> | SPJ works at epic games? wtf |
2023-03-14 16:41:36 +0100 | <merijn> | EvanR: Yes, since 2021 |
2023-03-14 16:41:40 +0100 | <merijn> | Lennart too |
2023-03-14 16:41:42 +0100 | <[exa]> | anyway yeah the problem now is that the in-game scripty codebase is millions of lines, and whoever is able to ship out more bugfree contents wins |
2023-03-14 16:42:09 +0100 | anpad | (~pandeyan@user/anpad) (Read error: Connection reset by peer) |
2023-03-14 16:42:29 +0100 | <merijn> | EvanR: Right, so if I make a wand that access a property/function of an object that doesn't have that implemented, what happens? If I release a version 2.0 of my wand with new/updated code, how is that dealt with? |
2023-03-14 16:42:47 +0100 | <kuribas> | [exa]: I heared it was bug ridden when first released. |
2023-03-14 16:43:01 +0100 | <EvanR> | the wand accesses a property on another object? |
2023-03-14 16:43:15 +0100 | <EvanR> | a property that doesn't exist yet? |
2023-03-14 16:43:16 +0100 | <merijn> | EvanR: Well, I want it to interact with the world, yes? |
2023-03-14 16:43:39 +0100 | <merijn> | but not the entire world might conform to what I expect |
2023-03-14 16:43:40 +0100 | <EvanR> | one convenient is to not access the property directly but use a verb on the target object |
2023-03-14 16:43:46 +0100 | <EvanR> | convention |
2023-03-14 16:43:51 +0100 | <kuribas> | I read about ECS (Entity Component System), which is used for performance, I wonder if you could make a nice safe combinator library on top of it. |
2023-03-14 16:43:56 +0100 | <merijn> | EvanR: And what happens if the verb doesn't work/exist? |
2023-03-14 16:44:10 +0100 | <merijn> | kuribas: There's already at least 1 ECS system in haskell |
2023-03-14 16:44:18 +0100 | <merijn> | with some amount of type safety |
2023-03-14 16:44:29 +0100 | <kuribas> | merijn: is it performant? |
2023-03-14 16:44:34 +0100 | <merijn> | dunno |
2023-03-14 16:44:43 +0100 | <kuribas> | and does it avoid type level hackery? |
2023-03-14 16:44:49 +0100 | <merijn> | kuribas: https://hackage.haskell.org/package/apecs |
2023-03-14 16:44:52 +0100 | <EvanR> | if you own that object or object's progenitor you could add it. If you don't you could talk to the person about it, if they say no you could create your own version of that object |
2023-03-14 16:45:02 +0100 | <EvanR> | which is compatible with the wand |
2023-03-14 16:45:44 +0100 | <EvanR> | like a "subclass" (they don't actually have classes as such in lambdaMOO though) |
2023-03-14 16:45:55 +0100 | <EvanR> | more like prototypal inheritance |
2023-03-14 16:45:57 +0100 | <merijn> | EvanR: well, that brings us back to the "how do you evolve code overtime when old versions may exist in a persistent system" issue |
2023-03-14 16:46:26 +0100 | <c_wraith> | merijn: aka, the reason smalltalk terrifies me |
2023-03-14 16:46:34 +0100 | <EvanR> | if the maintainer disappears you have no choice but to go the embrace extend and extinguish route |
2023-03-14 16:46:44 +0100 | <EvanR> | just like IRL |
2023-03-14 16:46:59 +0100 | <merijn> | EvanR: So the goal of Verse is to design a system with sensible semantics for versioning in a persistent setting and sensible "failure" (i.e. not crash) when interacting with components not conforming to your expectations |
2023-03-14 16:47:33 +0100 | <EvanR> | if it solves this specific problem that would revolutionize everything not just skyrim xD |
2023-03-14 16:47:54 +0100 | <merijn> | EvanR: And the fact that they're willing to pay, like, SPJ, Lennart, and a bunch of other people to think about it hard is itself intriguing |
2023-03-14 16:48:33 +0100 | <EvanR> | but I'm not surprised about the supposed context because skyrim probably gets a lot more funding than a lot of academic stuff xD |
2023-03-14 16:49:28 +0100 | <merijn> | EvanR: Well yes, clearly Sweeney has read a bunch cyberpunk novels where all kinds of 3rd party code interacts with eachother magically producing sane semantics in a single persistent metaverse-y thing. And I find willingness to invest how such an open thing could/would work infinitely more interesting than facebook's walled garden metaversa >.> |
2023-03-14 16:49:58 +0100 | acidjnk | (~acidjnk@p200300d6e715c49529b622cef8024c18.dip0.t-ipconnect.de) |
2023-03-14 16:50:48 +0100 | <EvanR> | to be clear replacing objects with one maintained by a new group would also be practical given lambdaMOOs model. After your new object is ready you can go through and clean up the instances of the old objects, since it's likely anyone can "move" them |
2023-03-14 16:51:00 +0100 | <EvanR> | if not, they was just bad design |
2023-03-14 16:51:03 +0100 | <EvanR> | that* |
2023-03-14 16:51:53 +0100 | NiceBird | (~NiceBird@185.133.111.196) (Ping timeout: 250 seconds) |
2023-03-14 16:51:57 +0100 | <EvanR> | if it's less like a physical object and more like a library that exists in the ether, and everything depends on it, that's another story and I'm curious how you would fix THAT |
2023-03-14 16:52:16 +0100 | <merijn> | I'm skeptical whether they will pull it off with any amount of success. And I don't quite understand yet how exactly Verse is supposed to solve them. But at least it's more interesting than that 37th JS sugar language :p |
2023-03-14 16:52:59 +0100 | <EvanR> | *but my new concrete syntax for `function(){' in js can't be denied* |
2023-03-14 16:55:01 +0100 | <EvanR> | does all this play into a larger narrative about how programming languages (haskell notwithstancing) are mainly designed by 1 person for use by 1 person at a time, but in reality large programs are really written by a huge team who can't really coordinate |
2023-03-14 16:55:48 +0100 | <merijn> | EvanR: I mean, Scheme was also a committee effort :p |
2023-03-14 16:56:51 +0100 | <EvanR> | scheme is also pretty cool. Three cheers for committees!!!? |
2023-03-14 16:58:22 +0100 | <merijn> | The conclusion is "sitting down and thinking hard before doing something can pay off" :p |
2023-03-14 16:58:36 +0100 | cheater_ | (~Username@user/cheater) |
2023-03-14 16:58:59 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 264 seconds) |
2023-03-14 16:59:00 +0100 | cheater_ | cheater |
2023-03-14 16:59:20 +0100 | jespada | (~jespada@148.252.132.45) |
2023-03-14 17:00:01 +0100 | <EvanR> | "ECS is used for performance" (i.e. ECS stands for "just use arrays for everything") is kind of like saying linear types are for performance |
2023-03-14 17:01:07 +0100 | <kuribas> | EvanR: I was thinking more about data oriented design. |
2023-03-14 17:01:19 +0100 | <kuribas> | Which isn't the same as ECS, but works well with it. |
2023-03-14 17:01:23 +0100 | <EvanR> | ECS the organization principle regardless of implementation would have benefits for a huge team who can't really coordinate |
2023-03-14 17:02:34 +0100 | <kuribas> | But yeah, the relational model for ECS can be used outside game programming. |
2023-03-14 17:03:01 +0100 | y04nn | (~username@2a03:1b20:5:f011::aaae) |
2023-03-14 17:03:03 +0100 | lomilomi | (~Thunderbi@155.133.70.5) (Quit: lomilomi) |
2023-03-14 17:03:07 +0100 | <kuribas> | Instead of having all attirbutes for an object in one place, to have a relational model, makes a lot of sense. |
2023-03-14 17:03:30 +0100 | cheater_ | (~Username@user/cheater) |
2023-03-14 17:04:34 +0100 | <kuribas> | And I am convinced such relational modelling leads to more flexible programs. |
2023-03-14 17:04:52 +0100 | <EvanR> | I'm convinced such relational modelling could benefit from an actual type system |
2023-03-14 17:04:59 +0100 | <kuribas> | While OO leads to rigid, hard to maintain programming. |
2023-03-14 17:05:13 +0100 | <kuribas> | EvanR: certainly |
2023-03-14 17:05:24 +0100 | <EvanR> | the default is "anything can have any attribute, or be missing that attribute, good luck" |
2023-03-14 17:05:39 +0100 | <kuribas> | yeah, that is error prone. |
2023-03-14 17:05:47 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 260 seconds) |
2023-03-14 17:06:36 +0100 | cheater__ | (~Username@user/cheater) |
2023-03-14 17:06:36 +0100 | cheater__ | cheater |
2023-03-14 17:06:38 +0100 | jmdaemon | (~jmdaemon@user/jmdaemon) |
2023-03-14 17:08:54 +0100 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 255 seconds) |
2023-03-14 17:09:22 +0100 | cheater_ | (~Username@user/cheater) (Ping timeout: 246 seconds) |
2023-03-14 17:09:42 +0100 | cheater__ | (~Username@user/cheater) |
2023-03-14 17:11:02 +0100 | cheater_ | (~Username@user/cheater) |
2023-03-14 17:11:23 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 248 seconds) |
2023-03-14 17:11:26 +0100 | cheater_ | cheater |
2023-03-14 17:12:42 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
2023-03-14 17:12:52 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) |
2023-03-14 17:14:20 +0100 | cheater__ | (~Username@user/cheater) (Ping timeout: 252 seconds) |
2023-03-14 17:17:34 +0100 | jespada | (~jespada@148.252.132.45) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2023-03-14 17:20:07 +0100 | coot | (~coot@213.134.171.3) (Quit: coot) |
2023-03-14 17:22:20 +0100 | cheater_ | (~Username@user/cheater) |
2023-03-14 17:22:51 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 255 seconds) |
2023-03-14 17:23:22 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 246 seconds) |
2023-03-14 17:24:31 +0100 | cheater__ | (~Username@user/cheater) |
2023-03-14 17:24:32 +0100 | cheater__ | cheater |
2023-03-14 17:26:14 +0100 | cheater__ | (~Username@user/cheater) |
2023-03-14 17:27:13 +0100 | jmdaemon | (~jmdaemon@user/jmdaemon) (Ping timeout: 246 seconds) |
2023-03-14 17:27:47 +0100 | cheater_ | (~Username@user/cheater) (Ping timeout: 264 seconds) |
2023-03-14 17:28:59 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 264 seconds) |
2023-03-14 17:29:00 +0100 | cheater__ | cheater |
2023-03-14 17:29:33 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:19aa:397c:29a:40e4) |
2023-03-14 17:32:55 +0100 | econo | (uid147250@user/econo) |
2023-03-14 17:33:28 +0100 | stackdroid18 | (14094@de1.hashbang.sh) |
2023-03-14 17:44:04 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2023-03-14 17:46:07 +0100 | <dminuoso> | I have a Haskell binary that consumes 100% cpu time. Trying to debug with gdb right now yields not much information: https://gist.github.com/dminuoso/8f72ce7c27b6585cb9488fb7ccc603bc |
2023-03-14 17:46:13 +0100 | <dminuoso> | Why am I not seeing any useful stack traces here? |
2023-03-14 17:46:59 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 265 seconds) |
2023-03-14 17:47:18 +0100 | <dminuoso> | Or here is the output in a better form: https://gist.github.com/dminuoso/9785a1799216d8d376cf6f4d7d56795e |
2023-03-14 17:47:19 +0100 | cheater | (~Username@user/cheater) |
2023-03-14 17:48:06 +0100 | <mauke> | because that's the C stack |
2023-03-14 17:48:16 +0100 | <mauke> | which apparently only contains bits of the runtime system |
2023-03-14 17:48:36 +0100 | <sm> | you need a dwarf but have not uttered the right incantation ? |
2023-03-14 17:48:43 +0100 | <dminuoso> | I guess so |
2023-03-14 17:49:04 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2023-03-14 17:49:43 +0100 | <dminuoso> | Im passing -g3 to the executable |
2023-03-14 17:49:46 +0100 | <mauke> | I'm not sure how to instrument haskell code so it can provide usable traces of what it's doing |
2023-03-14 17:49:47 +0100 | <dminuoso> | I thought this would be enough |
2023-03-14 17:51:50 +0100 | <mauke> | it might be a better idea to build the code with profiling support |
2023-03-14 17:52:05 +0100 | <mauke> | the part that consumes 99% of the runtime is the one with the busy loop |
2023-03-14 17:52:34 +0100 | <dminuoso> | Mmm I guess that works too |
2023-03-14 17:52:42 +0100 | <dminuoso> | Though I would really like to be able to gdb this thing. |
2023-03-14 17:54:24 +0100 | <sm> | are you seeing similar results to what's shown in https://downloads.haskell.org/ghc/latest/docs/users_guide/debug-info.html ? |
2023-03-14 17:54:36 +0100 | <dminuoso> | Not at all |
2023-03-14 17:54:39 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2023-03-14 17:55:00 +0100 | coot | (~coot@213.134.171.3) |
2023-03-14 18:00:30 +0100 | enoq | (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) |
2023-03-14 18:01:39 +0100 | coot | (~coot@213.134.171.3) (Quit: coot) |
2023-03-14 18:03:00 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
2023-03-14 18:06:42 +0100 | jmdaemon | (~jmdaemon@user/jmdaemon) |
2023-03-14 18:07:17 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 250 seconds) |
2023-03-14 18:07:41 +0100 | <kuribas> | EvanR: does the haskell ECR system use a typed approach? |
2023-03-14 18:07:56 +0100 | <kuribas> | EvanR: for attributes I mean? |
2023-03-14 18:08:21 +0100 | <EvanR> | ECS? |
2023-03-14 18:08:36 +0100 | <kuribas> | yeah |
2023-03-14 18:09:45 +0100 | <EvanR> | I've never looked into those |
2023-03-14 18:11:01 +0100 | <EvanR> | https://github.com/jonascarpay/apecs/blob/master/examples/Shmup.md |
2023-03-14 18:11:51 +0100 | cheater_ | (~Username@user/cheater) |
2023-03-14 18:13:16 +0100 | <mastarija> | So, let's say I have a list like this one: [(a, b)] |
2023-03-14 18:13:27 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 260 seconds) |
2023-03-14 18:13:34 +0100 | <mastarija> | And a function `f :: a -> s (f b)` |
2023-03-14 18:13:36 +0100 | cheater_ | cheater |
2023-03-14 18:13:48 +0100 | <mastarija> | Where s and f are a monad / applicative |
2023-03-14 18:14:17 +0100 | <mastarija> | is there an elegant way to get `s (f [(a, b)]`? |
2023-03-14 18:14:46 +0100 | <mastarija> | I can do `S [( f a, b)]` with `mapMOf` |
2023-03-14 18:14:56 +0100 | <mastarija> | From the lens package. |
2023-03-14 18:15:02 +0100 | <mauke> | pure . pure |
2023-03-14 18:15:15 +0100 | <mastarija> | But I'm not sure how to sequence `f` out of the first element of a list. |
2023-03-14 18:16:07 +0100 | <kuribas> | mastarija: what happens to the 'b' in the first list? |
2023-03-14 18:16:14 +0100 | <mastarija> | something like `mapMOf (traverse . _1) f myList` and then sequence again? |
2023-03-14 18:16:33 +0100 | <mastarija> | kuribas: it's left untouched. |
2023-03-14 18:16:50 +0100 | <mauke> | :t pure . pure :: (Monad s, Monad f) => [(a, b)] -> s (f [(a, b)]) |
2023-03-14 18:16:51 +0100 | <lambdabot> | (Monad s, Monad f) => [(a, b)] -> s (f [(a, b)]) |
2023-03-14 18:16:59 +0100 | <kuribas> | mastarija: then why do you generate a new 'b'? |
2023-03-14 18:17:22 +0100 | <mastarija> | I don't. |
2023-03-14 18:17:36 +0100 | <EvanR> | good one mauke |
2023-03-14 18:17:43 +0100 | <mauke> | ? |
2023-03-14 18:18:02 +0100 | <mastarija> | I just want to wrapp it in the `f` after I apply `f :: a -> `s (f a)`` |
2023-03-14 18:18:08 +0100 | slack1256 | (~slack1256@186.11.43.166) |
2023-03-14 18:18:17 +0100 | <mauke> | where did you get that other f function? |
2023-03-14 18:18:26 +0100 | <mastarija> | I've defined it. |
2023-03-14 18:18:36 +0100 | <mauke> | you can't define two functions that are both called f |
2023-03-14 18:18:46 +0100 | <kuribas> | mastarija: you had "a -> s (f b)" |
2023-03-14 18:18:47 +0100 | <mastarija> | They are the same function. |
2023-03-14 18:18:57 +0100 | <mauke> | they have different types; they can't be the same function |
2023-03-14 18:19:07 +0100 | <mastarija> | yeah, wrong signature |
2023-03-14 18:19:09 +0100 | <mastarija> | my bad |
2023-03-14 18:19:09 +0100 | <kuribas> | :t first |
2023-03-14 18:19:10 +0100 | <lambdabot> | Arrow a => a b c -> a (b, d) (c, d) |
2023-03-14 18:19:13 +0100 | <mastarija> | it's `a` |
2023-03-14 18:20:19 +0100 | <mastarija> | Maybe something like this? `theList & mapMOf (traverse . _1) f & fmap (sequenceAOf (traverse . _1))` |
2023-03-14 18:21:05 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2023-03-14 18:21:36 +0100 | <mauke> | :t mapM (\(ma, b) -> flip (,) b <$> ma) |
2023-03-14 18:21:37 +0100 | <lambdabot> | (Traversable t, Monad m) => t (m a, b) -> m (t (a, b)) |
2023-03-14 18:22:01 +0100 | <mauke> | :t traverse (\(ma, b) -> flip (,) b <$> ma) |
2023-03-14 18:22:02 +0100 | <lambdabot> | (Traversable t, Applicative f) => t (f a, b) -> f (t (a, b)) |
2023-03-14 18:22:20 +0100 | <kuribas> | :t \f -> getCompose . ((traverse . _1) (Compose . f)) |
2023-03-14 18:22:21 +0100 | <lambdabot> | error: |
2023-03-14 18:22:21 +0100 | <lambdabot> | Variable not in scope: getCompose :: f0 (t b0) -> c |
2023-03-14 18:22:22 +0100 | <lambdabot> | error: |
2023-03-14 18:22:29 +0100 | <kuribas> | :t \f -> runCompose . ((traverse . _1) (Compose . f)) |
2023-03-14 18:22:30 +0100 | <lambdabot> | error: |
2023-03-14 18:22:30 +0100 | <lambdabot> | Variable not in scope: runCompose :: f0 (t b0) -> c |
2023-03-14 18:22:55 +0100 | <mastarija> | Can we import stuff from hackage with lambdabot? :) |
2023-03-14 18:23:55 +0100 | gurkenglas | (~gurkengla@dynamic-089-204-153-207.89.204.153.pool.telefonica.de) (Ping timeout: 246 seconds) |
2023-03-14 18:24:27 +0100 | gurkengl1s | (~gurkengla@dynamic-089-204-153-207.89.204.153.pool.telefonica.de) (Ping timeout: 268 seconds) |
2023-03-14 18:25:13 +0100 | mbuf | (~Shakthi@49.207.178.186) (Quit: Leaving) |
2023-03-14 18:25:35 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 246 seconds) |
2023-03-14 18:26:39 +0100 | <kuribas> | f -> getCompose . ((traverse . _1) (Compose . f)) :: forall {k1} {t :: * -> *} {f :: k1 -> *} {g :: * -> k1} {a1} {b1} {a2} {b2}. (Traversable t, Applicative (Compose f g), Field1 a1 b1 a2 b2) => (a2 -> f (g b2)) -> t a1 -> f (g (t b1)) |
2023-03-14 18:27:13 +0100 | <kuribas> | that should work :) |
2023-03-14 18:27:16 +0100 | gurkenglas | (~gurkengla@dynamic-089-204-153-207.89.204.153.pool.telefonica.de) |
2023-03-14 18:27:17 +0100 | gurkengl1s | (~gurkengla@dynamic-089-204-153-207.89.204.153.pool.telefonica.de) |
2023-03-14 18:28:07 +0100 | <dminuoso> | mastarija: the type of f confuses me. |
2023-03-14 18:28:18 +0100 | <mastarija> | It's some applicative. |
2023-03-14 18:28:24 +0100 | <mastarija> | And `s` also. |
2023-03-14 18:28:28 +0100 | <dminuoso> | Sure, lets pick upper letters for concrete types, perh aps. |
2023-03-14 18:29:03 +0100 | <dminuoso> | So say `f :: forall a b. a -> S (F b)` with `instance Monad S` and `instance Monad F` right? |
2023-03-14 18:29:07 +0100 | <mastarija> | ok, f :: a -> (State Int (Const a)) |
2023-03-14 18:29:16 +0100 | <mastarija> | or what you've said :) |
2023-03-14 18:29:25 +0100 | <dminuoso> | Well, Im a bit curious about quantification here. |
2023-03-14 18:29:32 +0100 | codaraxis__ | (~codaraxis@user/codaraxis) (Quit: Leaving) |
2023-03-14 18:29:37 +0100 | <mastarija> | There's only 'a' |
2023-03-14 18:29:44 +0100 | <mastarija> | It was a mistake in my first example |
2023-03-14 18:30:01 +0100 | <mastarija> | `b` is just in the second element in the list. |
2023-03-14 18:30:03 +0100 | <dminuoso> | Okay, that resolves the mystery then. |
2023-03-14 18:30:11 +0100 | <dminuoso> | So `f :: forall a. a -> S (F a)`? |
2023-03-14 18:30:12 +0100 | nschoe | (~q@141.101.51.197) (Ping timeout: 264 seconds) |
2023-03-14 18:30:17 +0100 | <mastarija> | I yes |
2023-03-14 18:30:38 +0100 | monoidal | (~monoidal@2a01cb0801ce4b0038ab7da82b18adcb.ipv6.abo.wanadoo.fr) (Quit: Client closed) |
2023-03-14 18:30:58 +0100 | <mastarija> | Sorry for the confusion :) |
2023-03-14 18:31:05 +0100 | <dminuoso> | kuribas last answer is indeed spot on then. |
2023-03-14 18:31:53 +0100 | <mastarija> | hm... |
2023-03-14 18:32:21 +0100 | <dminuoso> | The relevant observation here is that unlike Monads, the composition of two applicatives gives another applicative. |
2023-03-14 18:32:27 +0100 | <mastarija> | That's a bit too advanced for me xD |
2023-03-14 18:32:40 +0100 | <dminuoso> | mastarija: Okay lets make it a bit simpler |
2023-03-14 18:33:19 +0100 | kuribas | (~user@ip-188-118-57-242.reverse.destiny.be) (Ping timeout: 276 seconds) |
2023-03-14 18:33:41 +0100 | <dminuoso> | instance (Alternative f, Applicative g) => Alternative (f :.: g) |
2023-03-14 18:33:55 +0100 | <dminuoso> | This says: the composition of two applicatives gives rise to another applicative. |
2023-03-14 18:34:00 +0100 | <mastarija> | Aha, so `Compose` composes two nested Applicatives into 1? |
2023-03-14 18:34:04 +0100 | <dminuoso> | Yes |
2023-03-14 18:34:10 +0100 | <dminuoso> | its just a newtype wrapper |
2023-03-14 18:34:21 +0100 | <dminuoso> | that gives you access to instances for the "type level composition" of two things. |
2023-03-14 18:34:33 +0100 | <dminuoso> | 18:33:40 dminuoso | instance (Alternative f, Applicative g) => Alternative (f :.: g) |
2023-03-14 18:34:41 +0100 | <dminuoso> | Think of Compose as just a synonym for :.: |
2023-03-14 18:34:59 +0100 | <dminuoso> | I think the version from GHC.Generics reads *much* nicer and is more obvious, but in practice you only see Compose around. |
2023-03-14 18:35:19 +0100 | <mastarija> | Would my previous solution work? |
2023-03-14 18:35:29 +0100 | <mastarija> | `theList & mapMOf (traverse . _1) f & fmap (sequenceAOf (traverse . _1))` |
2023-03-14 18:35:42 +0100 | <mastarija> | I'm assuming it would traverse twice |
2023-03-14 18:36:05 +0100 | <dminuoso> | Ohh sorry I miscopied above |
2023-03-14 18:36:09 +0100 | <dminuoso> | (Applicative f, Applicative g) => Applicative (f :.: g)\ |
2023-03-14 18:36:10 +0100 | <mastarija> | while kuribas's solution only traverses once. |
2023-03-14 18:36:19 +0100 | <dminuoso> | Well, not really |
2023-03-14 18:36:51 +0100 | <dminuoso> | It just hides this behind the instance (Applicative f, Applicative g) => Applicative (Compose f g) |
2023-03-14 18:37:10 +0100 | <mastarija> | But it still traverses twice? |
2023-03-14 18:37:13 +0100 | <dminuoso> | Compose f <*> Compose x = Compose (liftA2 (<*>) f x) |
2023-03-14 18:37:16 +0100 | <dminuoso> | Well sort of |
2023-03-14 18:38:09 +0100 | <dminuoso> | mastarija: Oh let me change my answer. Yes, kuribas solution traverses only once. |
2023-03-14 18:38:44 +0100 | <dminuoso> | The real trick in kuribas answer likes in how lens really works underneath |
2023-03-14 18:38:54 +0100 | <dminuoso> | Compose is only the simpler part of it. |
2023-03-14 18:39:00 +0100 | <dminuoso> | % :t _1 |
2023-03-14 18:39:01 +0100 | <yahb2> | <interactive>:1:1: error: ; Found hole: _1 :: p ; Where: ‘p’ is a rigid type variable bound by ; the inferred type of it :: p ; at <interactive>:1:1 ; Or perha... |
2023-03-14 18:39:09 +0100 | <dminuoso> | :t _1 |
2023-03-14 18:39:10 +0100 | <lambdabot> | (Field1 s t a b, Functor f) => (a -> f b) -> s -> f t |
2023-03-14 18:40:04 +0100 | <dminuoso> | This makes direct knowledge of how van Laarhoven lenses work internally (in one view you could think of them as "partial traversal" perhaps) |
2023-03-14 18:40:27 +0100 | <dminuoso> | So you have a kind of nested traversal, but not a complete one |
2023-03-14 18:40:31 +0100 | <dminuoso> | c.f.: |
2023-03-14 18:41:10 +0100 | <dminuoso> | % import Data.Foldable |
2023-03-14 18:41:10 +0100 | <yahb2> | <no output> |
2023-03-14 18:41:14 +0100 | <dminuoso> | % (traverse_ . traverse_) putChar ["foo", "bar"] |
2023-03-14 18:41:15 +0100 | <yahb2> | foobar |
2023-03-14 18:41:24 +0100 | <dminuoso> | mastarija: See how you can do a kind of nested traverse this way? |
2023-03-14 18:41:25 +0100 | <mastarija> | Aha, so `_1` already has some trickery for handling traversals over only that element |
2023-03-14 18:41:56 +0100 | <dminuoso> | mastarija: as a very rough intuition think of `_1` as really something like `traverse` except it only goes over *some* part of the structure, while rebuilding the other part with the original values |
2023-03-14 18:42:14 +0100 | <mastarija> | Yeah. I get it. I think :) |
2023-03-14 18:42:14 +0100 | <dminuoso> | if the this thing targets only one element its called a lens |
2023-03-14 18:42:21 +0100 | <dminuoso> | if it targets multiple things lens calls it a traversal |
2023-03-14 18:43:07 +0100 | <dminuoso> | mastarija: Since we're at this point, you might find this interesting now: |
2023-03-14 18:44:07 +0100 | <dminuoso> | view :: Lens' s a -> s -> a view l s = getConst (l Const s) |
2023-03-14 18:44:35 +0100 | cheater_ | (~Username@user/cheater) |
2023-03-14 18:45:01 +0100 | <dminuoso> | mastarija: Note how `view` sort of "traverses (which ends up touching just one element) over s (the data) with the function `Const`" |
2023-03-14 18:45:22 +0100 | <mastarija> | Yes. |
2023-03-14 18:45:25 +0100 | <mastarija> | Noted :) |
2023-03-14 18:45:38 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 252 seconds) |
2023-03-14 18:45:45 +0100 | <dminuoso> | Thats how view extracts the thing, because if you then execute that effect, you get that single element that is stuffed into Const back. |
2023-03-14 18:46:02 +0100 | <dminuoso> | Similarly |
2023-03-14 18:46:17 +0100 | <dminuoso> | set l a s = runIdentity (l (const (Identity a)) s) |
2023-03-14 18:46:17 +0100 | <mastarija> | Yeah. I've gone through that already, so I kind of get it. |
2023-03-14 18:46:36 +0100 | <dminuoso> | Anyway, little fun excursion |
2023-03-14 18:47:00 +0100 | <dminuoso> | mastarija: and thats why composing optics works with . just like that. |
2023-03-14 18:47:05 +0100 | <mastarija> | Yeah. I was also surprised when I've noticed that `traverse` has lenslike signature |
2023-03-14 18:47:10 +0100 | <dminuoso> | `traverse . traverse` traverses over a nested container |
2023-03-14 18:47:32 +0100 | <dminuoso> | mastarija: thats why we dont have some general `traverseEach`, because thats `traverse` already precisely. |
2023-03-14 18:47:43 +0100 | <dminuoso> | % (traverse_ . traverse_) putChar ["foo", "bar"] |
2023-03-14 18:47:44 +0100 | <yahb2> | foobar |
2023-03-14 18:47:54 +0100 | <dminuoso> | Similarly |
2023-03-14 18:48:09 +0100 | <dminuoso> | > toListOf (traverse . traverse) ["foo", "bar"] |
2023-03-14 18:48:11 +0100 | <lambdabot> | "foobar" |
2023-03-14 18:48:30 +0100 | <dminuoso> | Hence: |
2023-03-14 18:49:03 +0100 | <dminuoso> | (traverse . _1) gives you a "traversal like thing" that will map values to effects over each element, then inside each first field. |
2023-03-14 18:49:10 +0100 | <dminuoso> | you can just readily execute that |
2023-03-14 18:49:17 +0100 | <dminuoso> | next observation is: |
2023-03-14 18:49:20 +0100 | cheater_ | (~Username@user/cheater) (Ping timeout: 265 seconds) |
2023-03-14 18:50:10 +0100 | <dminuoso> | % :t traverse |
2023-03-14 18:50:10 +0100 | <yahb2> | traverse ; :: (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b) |
2023-03-14 18:50:15 +0100 | <dminuoso> | :t Lens |
2023-03-14 18:50:16 +0100 | <lambdabot> | Lens s t a b -> ReifiedLens s t a b |
2023-03-14 18:50:22 +0100 | <dminuoso> | type Lens s t a b = forall f . Functor f => (a -> f b) -> s -> f t |
2023-03-14 18:50:36 +0100 | <dminuoso> | mastarija: ^- note the only difference here is that a Lens is "just Functor", while a traverse has an applicative |
2023-03-14 18:50:47 +0100 | <dminuoso> | :t traverse . _1 |
2023-03-14 18:50:48 +0100 | <lambdabot> | (Traversable t, Applicative f, Field1 a1 b1 a2 b2) => (a2 -> f b2) -> t a1 -> f (t b1) |
2023-03-14 18:50:52 +0100 | <mastarija> | Wait, how do I use this again?: `getCompose . ((traverse . _1) (Compose . f))`, I don't have to pass this to `mapMOf` or something? It's something I apply to the raw value, right? |
2023-03-14 18:51:00 +0100 | cheater_ | (~Username@user/cheater) |
2023-03-14 18:51:01 +0100 | cheater_ | cheater |
2023-03-14 18:51:05 +0100 | <dminuoso> | getting to that in a second |
2023-03-14 18:51:09 +0100 | <mastarija> | What's a `ReifiedLens`? |
2023-03-14 18:51:14 +0100 | <dminuoso> | Ignore that type |
2023-03-14 18:51:16 +0100 | <mastarija> | k |
2023-03-14 18:51:17 +0100 | <dminuoso> | type Lens s t a b = forall f . Functor f => (a -> f b) -> s -> f t |
2023-03-14 18:51:22 +0100 | <dminuoso> | thats the one I want you to think about |
2023-03-14 18:51:44 +0100 | <dminuoso> | the only difference between `Lens` and `Traversal` is that a Traversal has an Applicative instead of Functor constraint |
2023-03-14 18:52:14 +0100 | <dminuoso> | So if you compose a lens with a traversal, the common join point in the hierarchy here is still applicative, so the composition of `traverse . _1` is a traversable |
2023-03-14 18:52:28 +0100 | <dminuoso> | which is able to map and collect applicative effects |
2023-03-14 18:52:30 +0100 | <dminuoso> | Just like: |
2023-03-14 18:52:33 +0100 | <dminuoso> | % (traverse_ . traverse_) putChar ["foo", "bar"] |
2023-03-14 18:52:34 +0100 | <yahb2> | foobar |
2023-03-14 18:52:36 +0100 | <dminuoso> | or |
2023-03-14 18:52:38 +0100 | <dminuoso> | > toListOf (traverse . traverse) ["foo", "bar"] |
2023-03-14 18:52:40 +0100 | <lambdabot> | "foobar" |
2023-03-14 18:52:50 +0100 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2023-03-14 18:52:56 +0100 | <dminuoso> | % (traverse_ . _1) putChar [('a', 1), ('b', 2)] |
2023-03-14 18:52:56 +0100 | <yahb2> | <interactive>:16:14: error: ; • Found hole: _1 :: (Char -> IO ()) -> (Char, Integer) -> f b0 ; Where: ‘b0’ is an ambiguous type variable ; ‘f’ is a rigid type variable bound ... |
2023-03-14 18:53:03 +0100 | <dminuoso> | > (traverse_ . _1) putChar [('a', 1), ('b', 2)] |
2023-03-14 18:53:05 +0100 | <lambdabot> | <IO ()> |
2023-03-14 18:53:13 +0100 | <dminuoso> | Oh well that should print `ab` |
2023-03-14 18:53:21 +0100 | <dminuoso> | > toListOf traverse_ . _1) [('a', 1), ('b', 2)] |
2023-03-14 18:53:23 +0100 | <lambdabot> | <hint>:1:24: error: parse error on input ‘)’ |
2023-03-14 18:53:27 +0100 | <dminuoso> | > toListOf (traverse_ . _1) [('a', 1), ('b', 2)] |
2023-03-14 18:53:29 +0100 | <dminuoso> | mastarija: so far so good? |
2023-03-14 18:53:30 +0100 | <lambdabot> | error: |
2023-03-14 18:53:30 +0100 | <lambdabot> | • Couldn't match type ‘()’ with ‘t0 a0’ |
2023-03-14 18:53:30 +0100 | <lambdabot> | Expected type: Getting (Endo [b]) () b |
2023-03-14 18:53:35 +0100 | <dminuoso> | > toListOf (traverse . _1) [('a', 1), ('b', 2)] |
2023-03-14 18:53:37 +0100 | <lambdabot> | "ab" |
2023-03-14 18:53:49 +0100 | <mastarija> | Well, I'm reading. Not sure if I understand everyhing :) |
2023-03-14 18:53:49 +0100 | <dminuoso> | mastarija: So here comes everything together |
2023-03-14 18:54:03 +0100 | <dminuoso> | `(traverse . _1)` gives you something |
2023-03-14 18:54:16 +0100 | <dminuoso> | like "traverse" that will map applicative effects to every first field of every element of some structure |
2023-03-14 18:54:21 +0100 | <dminuoso> | you have a function |
2023-03-14 18:54:38 +0100 | <dminuoso> | `f :: a -> S (F b)` for which both S and F have applicat ive |
2023-03-14 18:55:26 +0100 | <dminuoso> | We have `instance (Applicative f, Applicative g) => Applicative (Compose f g)` which says if you have something like Q (R a) for which both Q and R have an applicative instance, then `Compose Q R` will give you an applicative instance too |
2023-03-14 18:55:39 +0100 | <dminuoso> | So using the above "traverse" like thing we can do |
2023-03-14 18:55:49 +0100 | <dminuoso> | (traverse . _1) (Compose . f) |
2023-03-14 18:56:19 +0100 | <dminuoso> | The `Compose` will just select the "applicative instance of the composition of S and T" |
2023-03-14 18:56:49 +0100 | <dminuoso> | And then at the end you must toss that "useless" compose wrapper away (whose only purpose was the instance selection) |
2023-03-14 18:57:00 +0100 | <dminuoso> | getCompose . ((traverse . _1) (Compose . f)) |
2023-03-14 18:58:35 +0100 | y04nn | (~username@2a03:1b20:5:f011::aaae) (Ping timeout: 248 seconds) |
2023-03-14 18:58:36 +0100 | ubert1 | (~Thunderbi@2a02:8109:abc0:6434:e47:2f53:4085:22b0) (Remote host closed the connection) |
2023-03-14 18:59:19 +0100 | <mastarija> | Well, that was interesting. Now I'll try to apply it :) |
2023-03-14 19:02:03 +0100 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 256 seconds) |
2023-03-14 19:04:27 +0100 | Major_Biscuit | (~MajorBisc@c-001-030-022.client.tudelft.eduvpn.nl) (Quit: WeeChat 3.6) |
2023-03-14 19:08:05 +0100 | zmt01 | (~zmt00@user/zmt00) |
2023-03-14 19:11:19 +0100 | levinlevinlevin | (~levin@ip5f584d02.dynamic.kabel-deutschland.de) |
2023-03-14 19:11:19 +0100 | zmt00 | (~zmt00@user/zmt00) (Ping timeout: 260 seconds) |
2023-03-14 19:14:42 +0100 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
2023-03-14 19:14:46 +0100 | cheater_ | (~Username@user/cheater) |
2023-03-14 19:14:58 +0100 | bhall | (~brunohall@195.147.207.136) (Ping timeout: 252 seconds) |
2023-03-14 19:17:23 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 260 seconds) |
2023-03-14 19:18:53 +0100 | cheater | (~Username@user/cheater) |
2023-03-14 19:19:13 +0100 | cheater_ | (~Username@user/cheater) (Ping timeout: 250 seconds) |
2023-03-14 19:21:42 +0100 | cheater_ | (~Username@user/cheater) |
2023-03-14 19:23:44 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 246 seconds) |
2023-03-14 19:24:01 +0100 | shriekingnoise | (~shrieking@186.137.175.87) (Ping timeout: 276 seconds) |
2023-03-14 19:26:01 +0100 | shriekingnoise | (~shrieking@186.137.175.87) |
2023-03-14 19:27:12 +0100 | cheater_ | (~Username@user/cheater) (Ping timeout: 264 seconds) |
2023-03-14 19:29:37 +0100 | zmt01 | (~zmt00@user/zmt00) (Ping timeout: 250 seconds) |
2023-03-14 19:41:10 +0100 | cheater_ | (~Username@user/cheater) |
2023-03-14 19:41:11 +0100 | cheater_ | cheater |
2023-03-14 19:42:27 +0100 | TheMatten[m] | (~thematten@2001:470:69fc:105::1:5ba1) |
2023-03-14 19:53:52 +0100 | bhall | (~brunohall@195.147.207.136) |
2023-03-14 19:55:04 +0100 | szkl | (uid110435@id-110435.uxbridge.irccloud.com) |
2023-03-14 19:57:01 +0100 | MironZ | (~MironZ@nat-infra.ehlab.uk) (Ping timeout: 256 seconds) |
2023-03-14 20:00:37 +0100 | cheater_ | (~Username@user/cheater) |
2023-03-14 20:01:41 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 250 seconds) |
2023-03-14 20:01:51 +0100 | cheater_ | cheater |
2023-03-14 20:02:23 +0100 | wootehfoot | (~wootehfoo@user/wootehfoot) |
2023-03-14 20:03:40 +0100 | vglfr | (~vglfr@91.102.183.234) (Ping timeout: 276 seconds) |
2023-03-14 20:06:43 +0100 | <sm> | is there any stackage resolver or huge list of extra-deps to let stack users try building with ghc 9.6 ? |
2023-03-14 20:06:48 +0100 | crazazy | (~user@130.89.171.62) |
2023-03-14 20:08:06 +0100 | caryhartline | (~caryhartl@2603-8080-6a0e-8d88-cde1-108a-3c91-10d3.res6.spectrum.com) |
2023-03-14 20:08:45 +0100 | <tomsmeding> | most packages on hackage aren't even up to date yet |
2023-03-14 20:09:05 +0100 | <tomsmeding> | s/up to date/having a loose enough upper bound on base/ |
2023-03-14 20:09:23 +0100 | <sm> | I'm allowing it to ignore bounds |
2023-03-14 20:09:39 +0100 | sm | thought things might be a bit further along this time what with all the prereleases |
2023-03-14 20:10:06 +0100 | <tomsmeding> | stuff like https://hackage.haskell.org/package/these having base<4.18 blocks a _lot_ of stuff |
2023-03-14 20:10:36 +0100 | <sm> | I'm ignoring bounds.. if I could even get to a compilation error that would be pretty good |
2023-03-14 20:11:30 +0100 | <sm> | currently troubleshooting these "PKG dependency cycle" errors with my big extra-deps list |
2023-03-14 20:11:59 +0100 | tomsmeding | . o O ( cabal build --allow-newer=base ) |
2023-03-14 20:12:39 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
2023-03-14 20:13:45 +0100 | <sm> | ah yes cabal would make this easier of course. Still, this is a useful exercise for me |
2023-03-14 20:17:19 +0100 | talismanick | (~talismani@c-73-66-168-202.hsd1.ca.comcast.net) |
2023-03-14 20:18:12 +0100 | cheater_ | (~Username@user/cheater) |
2023-03-14 20:19:08 +0100 | thyriaen_ | (~thyriaen@144.208.201.160) |
2023-03-14 20:19:44 +0100 | cheater__ | (~Username@user/cheater) |
2023-03-14 20:21:10 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 246 seconds) |
2023-03-14 20:21:12 +0100 | thyriaen | (~thyriaen@2a01:aea0:dd4:5328:6245:cbff:fe9f:48b1) (Ping timeout: 264 seconds) |
2023-03-14 20:21:19 +0100 | cheater__ | cheater |
2023-03-14 20:21:37 +0100 | <sm> | ok, done. cabal time :) |
2023-03-14 20:23:15 +0100 | cheater_ | (~Username@user/cheater) (Ping timeout: 246 seconds) |
2023-03-14 20:25:57 +0100 | <sm> | nice! cabal build -w ghc-9.6.1 --allow-newer gets as far as building my package |
2023-03-14 20:29:01 +0100 | ph88 | (~ph88@ip5b426553.dynamic.kabel-deutschland.de) (Ping timeout: 276 seconds) |
2023-03-14 20:29:28 +0100 | levinlevinlevin | (~levin@ip5f584d02.dynamic.kabel-deutschland.de) (Quit: leaving) |
2023-03-14 20:32:57 +0100 | ft | (~ft@p3e9bc443.dip0.t-ipconnect.de) |
2023-03-14 20:34:19 +0100 | <mastarija> | 9.6 has the JavaScript backend, right? |
2023-03-14 20:34:31 +0100 | <geekosaur> | yes |
2023-03-14 20:35:16 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 252 seconds) |
2023-03-14 20:37:16 +0100 | hugo- | (znc@verdigris.lysator.liu.se) (Ping timeout: 246 seconds) |
2023-03-14 20:38:29 +0100 | <sm> | if you make a custom build of it |
2023-03-14 20:40:45 +0100 | cheater | (~Username@user/cheater) |
2023-03-14 20:42:03 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2023-03-14 20:45:45 +0100 | MironZ | (~MironZ@nat-infra.ehlab.uk) |
2023-03-14 20:47:34 +0100 | hugo- | (znc@verdigris.lysator.liu.se) |
2023-03-14 20:47:48 +0100 | cheater_ | (~Username@user/cheater) |
2023-03-14 20:49:45 +0100 | MironZ9 | (~MironZ@nat-infra.ehlab.uk) |
2023-03-14 20:50:10 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 265 seconds) |
2023-03-14 20:50:11 +0100 | cheater__ | (~Username@user/cheater) |
2023-03-14 20:50:18 +0100 | cheater__ | cheater |
2023-03-14 20:51:22 +0100 | cheater__ | (~Username@user/cheater) |
2023-03-14 20:51:37 +0100 | MironZ | (~MironZ@nat-infra.ehlab.uk) (Ping timeout: 265 seconds) |
2023-03-14 20:51:38 +0100 | MironZ9 | MironZ |
2023-03-14 20:53:33 +0100 | cheater_ | (~Username@user/cheater) (Ping timeout: 265 seconds) |
2023-03-14 20:54:55 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 260 seconds) |
2023-03-14 20:54:58 +0100 | cheater__ | cheater |
2023-03-14 20:57:23 +0100 | jmdaemon | (~jmdaemon@user/jmdaemon) (Ping timeout: 268 seconds) |
2023-03-14 21:02:59 +0100 | <sm> | is there a way in ghci to see which module has reexported another module's symbol ? |
2023-03-14 21:05:24 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:19aa:397c:29a:40e4) (Remote host closed the connection) |
2023-03-14 21:06:31 +0100 | <sm> | in a module I have void in scope, from Data.Functor, and I can't see how Data.Functor is in scope |
2023-03-14 21:07:35 +0100 | <int-e> | this is silly... what does :t vpid say? |
2023-03-14 21:10:12 +0100 | cheater_ | (~Username@user/cheater) |
2023-03-14 21:10:19 +0100 | <sm> | (after entering the module like so:) |
2023-03-14 21:10:20 +0100 | <sm> | ghci> :m +*Hledger.Data.Balancing |
2023-03-14 21:10:20 +0100 | <sm> | ghci> :t void |
2023-03-14 21:10:20 +0100 | <sm> | void :: Functor f => f a -> f () |
2023-03-14 21:10:26 +0100 | <int-e> | sm: http://paste.debian.net/1274030/ |
2023-03-14 21:10:31 +0100 | <int-e> | (no, you have to make a typo) |
2023-03-14 21:12:39 +0100 | <sm> | int-e: oh, clever! "Perhaps use ‘void’ (imported from Control.Monad.Reader)" |
2023-03-14 21:12:39 +0100 | <sm> | That import fooled me because it's "as R".. but not qualified |
2023-03-14 21:12:40 +0100 | <sm> | thanks! |
2023-03-14 21:13:23 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 264 seconds) |
2023-03-14 21:13:27 +0100 | cheater_ | cheater |
2023-03-14 21:14:39 +0100 | kimjetwav | (~user@2607:fea8:235e:b600:904e:e9db:46f6:ca3a) (ERC 5.4.1 (IRC client for GNU Emacs 29.0.60)) |
2023-03-14 21:16:59 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 264 seconds) |
2023-03-14 21:20:01 +0100 | dsrt^ | (~dsrt@c-24-30-76-89.hsd1.ga.comcast.net) |
2023-03-14 21:20:01 +0100 | opticblast | (~Thunderbi@172.58.84.141) |
2023-03-14 21:22:19 +0100 | nschoe | (~q@2a01:e0a:8e:a190:c215:d296:d03:1e62) |
2023-03-14 21:22:22 +0100 | nschoe | (~q@2a01:e0a:8e:a190:c215:d296:d03:1e62) (Client Quit) |
2023-03-14 21:24:56 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds) |
2023-03-14 21:30:04 +0100 | bhall | (~brunohall@195.147.207.136) (Ping timeout: 268 seconds) |
2023-03-14 21:31:38 +0100 | a_coll | (~acoll@45.92.120.189) |
2023-03-14 21:32:41 +0100 | kenran | (~user@user/kenran) |
2023-03-14 21:33:29 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
2023-03-14 21:34:31 +0100 | pavonia | (~user@user/siracusa) |
2023-03-14 21:36:40 +0100 | coot_ | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
2023-03-14 21:39:57 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Ping timeout: 265 seconds) |
2023-03-14 21:39:57 +0100 | coot_ | coot |
2023-03-14 21:51:28 +0100 | opticblast | (~Thunderbi@172.58.84.141) (Ping timeout: 246 seconds) |
2023-03-14 21:52:02 +0100 | opticblast | (~Thunderbi@172.58.84.141) |
2023-03-14 21:53:12 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.6) |
2023-03-14 21:55:04 +0100 | <mastarija> | Is there perhaps an extension that allows us to define type synonym in the `where` block? |
2023-03-14 21:55:27 +0100 | <geekosaur> | nope |
2023-03-14 21:55:35 +0100 | <mastarija> | I ges we can get by with (x ~ Something), but that's annoying. |
2023-03-14 21:55:38 +0100 | <Jade[m]1> | why would you want that? |
2023-03-14 21:55:39 +0100 | <mastarija> | *guess |
2023-03-14 21:55:42 +0100 | use-value | (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Remote host closed the connection) |
2023-03-14 21:56:00 +0100 | <mastarija> | Jade[m]1: sometimes I have to write some long types in the where block definitions |
2023-03-14 21:56:00 +0100 | use-value | (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) |
2023-03-14 21:56:21 +0100 | <mastarija> | And I'd like to not write them multiple times |
2023-03-14 21:57:22 +0100 | <Jade[m]1> | mh |
2023-03-14 21:59:20 +0100 | <EvanR> | local type definitions would be cool |
2023-03-14 21:59:50 +0100 | <EvanR> | though poor man can get by just using another module |
2023-03-14 22:00:35 +0100 | <Jade[m]1> | Would there be a use-case for local ADTs? |
2023-03-14 22:00:56 +0100 | jmdaemon | (~jmdaemon@user/jmdaemon) |
2023-03-14 22:00:56 +0100 | <EvanR> | totally |
2023-03-14 22:01:04 +0100 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer) |
2023-03-14 22:01:07 +0100 | <ddellacosta> | I just end up defining type aliases above functions when I want a kind of localized type alias, an even more poor approach lol |
2023-03-14 22:01:41 +0100 | <EvanR> | local "data" type would be even cooler |
2023-03-14 22:02:01 +0100 | <Jade[m]1> | that's what I meant with a local ADT |
2023-03-14 22:02:06 +0100 | <EvanR> | yeah |
2023-03-14 22:02:15 +0100 | <Jade[m]1> | I never know what to call "data" haha |
2023-03-14 22:02:19 +0100 | <ddellacosta> | I guess it'd have to be consumed completely inside of the local scope, which is interesting |
2023-03-14 22:02:32 +0100 | <EvanR> | when your algorithm wants to use data for its own purposes without having to tell everyone about it and they don't care |
2023-03-14 22:02:41 +0100 | wootehfoot | (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
2023-03-14 22:03:00 +0100 | <EvanR> | of course, you can use another module and not export it. But it still kind of feels like you have to worry about not stepping on anyone's feet |
2023-03-14 22:03:16 +0100 | <EvanR> | and if this is 1 function, that's a whole module for 1 function |
2023-03-14 22:03:27 +0100 | <EvanR> | which is probably typical in haskell generally |
2023-03-14 22:03:37 +0100 | _ht | (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht) |
2023-03-14 22:03:55 +0100 | <Jade[m]1> | EvanR: do you have an example in mind? |
2023-03-14 22:05:54 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:19aa:397c:29a:40e4) |
2023-03-14 22:06:22 +0100 | <mastarija> | Agda has local type definitions |
2023-03-14 22:06:29 +0100 | <mastarija> | IIRC |
2023-03-14 22:08:46 +0100 | stackdroid18 | (14094@de1.hashbang.sh) (Quit: hasta la vista... tchau!) |
2023-03-14 22:09:19 +0100 | mncheck | (~mncheck@193.224.205.254) (Ping timeout: 246 seconds) |
2023-03-14 22:10:14 +0100 | eggplantade | (~Eggplanta@2600:1700:38c5:d800:19aa:397c:29a:40e4) (Ping timeout: 252 seconds) |
2023-03-14 22:10:15 +0100 | kimjetwav | (~user@2607:fea8:235e:b600:4cf2:6784:6712:f6ef) |
2023-03-14 22:13:43 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2023-03-14 22:16:44 +0100 | <EvanR> | Jade[m]1, if you've ever tried to write an algorithm and said damn I need to define a sum type to keep these steps straight (at the expense of possibly using more time and memory) |
2023-03-14 22:18:26 +0100 | <EvanR> | (the reverse of scott encoding or church encoding a data type as higher order functions) |
2023-03-14 22:18:50 +0100 | caryhartline | (~caryhartl@2603-8080-6a0e-8d88-cde1-108a-3c91-10d3.res6.spectrum.com) (Quit: caryhartline) |
2023-03-14 22:20:11 +0100 | gnalzo | (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8) |
2023-03-14 22:29:11 +0100 | crazazy | (~user@130.89.171.62) (Ping timeout: 246 seconds) |
2023-03-14 22:30:02 +0100 | <Nosrep> | any idea why basicunsafeindexm from vector is eating 10% of my programs runtime and allocations? |
2023-03-14 22:30:22 +0100 | <Nosrep> | for context im allocating a couple big vectors (200k elements) and indexing them a lot but not actually modifying the vector |
2023-03-14 22:34:59 +0100 | machinedgod | (~machinedg@d198-53-218-113.abhsia.telus.net) |
2023-03-14 22:36:14 +0100 | talismanick | (~talismani@c-73-66-168-202.hsd1.ca.comcast.net) (Ping timeout: 246 seconds) |
2023-03-14 22:41:04 +0100 | trev | (~trev@user/trev) (Remote host closed the connection) |
2023-03-14 22:41:56 +0100 | zmt00 | (~zmt00@user/zmt00) |
2023-03-14 22:44:09 +0100 | michalz | (~michalz@185.246.207.215) (Remote host closed the connection) |
2023-03-14 22:46:10 +0100 | jonathanx | (~jonathan@h-176-10-144-60.NA.cust.bahnhof.se) (Remote host closed the connection) |
2023-03-14 22:56:46 +0100 | ph88 | (~ph88@91.66.101.83) |
2023-03-14 22:57:37 +0100 | vglfr | (~vglfr@37.73.89.236) |
2023-03-14 22:59:06 +0100 | biberu | (~biberu@user/biberu) (Read error: Connection reset by peer) |
2023-03-14 23:00:27 +0100 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
2023-03-14 23:00:28 +0100 | bgs | (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection) |
2023-03-14 23:01:28 +0100 | kenran | (~user@user/kenran) (Remote host closed the connection) |
2023-03-14 23:10:07 +0100 | biberu | (~biberu@user/biberu) |
2023-03-14 23:13:05 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) |
2023-03-14 23:16:23 +0100 | vglfr | (~vglfr@37.73.89.236) (Remote host closed the connection) |
2023-03-14 23:17:08 +0100 | vglfr | (~vglfr@37.73.89.236) |
2023-03-14 23:19:32 +0100 | emmanuelux | (~emmanuelu@user/emmanuelux) |
2023-03-14 23:21:39 +0100 | Unicorn_Princess | (~Unicorn_P@user/Unicorn-Princess/x-3540542) |
2023-03-14 23:24:46 +0100 | enoq | (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq) |
2023-03-14 23:28:52 +0100 | <hammond> | I'm confused about functors and category theory when it comes to random functions, can you map a function to a number that was randomly created? and back again? |
2023-03-14 23:30:22 +0100 | <Jade[m]1> | A functor is simply a structure that allows a mapping `(a -> b) -> f a -> f b` |
2023-03-14 23:30:33 +0100 | <Jade[m]1> | not sure what you mean with your question |
2023-03-14 23:30:35 +0100 | <int-e> | Nosrep: Note that naively, basicUnsafeIndexM *does* allocate (namely, a box for its result)... though I'd hope that this disappears through inlining, but maybe that's not working in your case? That, or profiling misattributes allocations. |
2023-03-14 23:33:33 +0100 | ph88 | (~ph88@91.66.101.83) (Quit: Leaving) |
2023-03-14 23:34:09 +0100 | <mauke> | hammond: are you asking about RNGs? what does it mean to map a function to a number? |
2023-03-14 23:34:42 +0100 | Kuttenbrunzer | (~Kuttenbru@2a02:8108:8b80:1d48::f907) |
2023-03-14 23:35:55 +0100 | <geekosaur> | hammond, note that category theory operates at the level of Haskell types, not of values. So no, you are not expected to be able to apply it to a number, because that's a value |
2023-03-14 23:36:14 +0100 | <Jade[m]1> | mhm |
2023-03-14 23:36:15 +0100 | <hammond> | ok |
2023-03-14 23:36:23 +0100 | <int-e> | Arbitrary/Coarbitrary comes to mind but is unlikely to be the right picture. |
2023-03-14 23:36:41 +0100 | mei | (~mei@user/mei) (Remote host closed the connection) |
2023-03-14 23:37:37 +0100 | <int-e> | There's also some work on probability monads. |
2023-03-14 23:39:08 +0100 | mei | (~mei@user/mei) |
2023-03-14 23:39:51 +0100 | <int-e> | Where the functor takes a random variable X with values in A, and a function f: A -> B, and produces f(X) which is another random variable with values in B. |
2023-03-14 23:45:33 +0100 | emmanuelux_ | (~emmanuelu@user/emmanuelux) |
2023-03-14 23:47:54 +0100 | motherfsck | (~motherfsc@user/motherfsck) (Remote host closed the connection) |
2023-03-14 23:48:02 +0100 | merijn | (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 265 seconds) |
2023-03-14 23:49:13 +0100 | emmanuelux | (~emmanuelu@user/emmanuelux) (Ping timeout: 276 seconds) |
2023-03-14 23:51:04 +0100 | caryhartline | (~caryhartl@107.128.194.73) |
2023-03-14 23:58:19 +0100 | caryhartline | (~caryhartl@107.128.194.73) (Ping timeout: 276 seconds) |