2024/07/01

2024-07-01 00:01:12 +0200wootehfoot(~wootehfoo@user/wootehfoot)
2024-07-01 00:12:08 +0200lain`(lain`@user/lain/x-9874679)
2024-07-01 00:12:40 +0200dcoutts_(~duncan@ip-185-104-136-57.ptr.icomera.net)
2024-07-01 00:14:03 +0200dcoutts__(~duncan@212.187.244.86)
2024-07-01 00:16:48 +0200alexherbo2(~alexherbo@2a02-8440-3215-598d-b470-a88f-97cf-942e.rev.sfr.net) (Remote host closed the connection)
2024-07-01 00:17:23 +0200dcoutts_(~duncan@ip-185-104-136-57.ptr.icomera.net) (Ping timeout: 264 seconds)
2024-07-01 00:18:00 +0200alexherbo2(~alexherbo@2a02-8440-3215-598d-4c2c-7398-d9af-2ab7.rev.sfr.net)
2024-07-01 00:20:18 +0200dcoutts_(~duncan@185.201.60.220)
2024-07-01 00:21:31 +0200alexherbo2(~alexherbo@2a02-8440-3215-598d-4c2c-7398-d9af-2ab7.rev.sfr.net) (Remote host closed the connection)
2024-07-01 00:23:01 +0200dcoutts__(~duncan@212.187.244.86) (Ping timeout: 256 seconds)
2024-07-01 00:23:40 +0200ss4(~wootehfoo@user/wootehfoot)
2024-07-01 00:27:15 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Ping timeout: 264 seconds)
2024-07-01 00:27:31 +0200misterfish(~misterfis@87.215.131.102) (Ping timeout: 260 seconds)
2024-07-01 00:28:25 +0200dcoutts_(~duncan@185.201.60.220) (Read error: Connection reset by peer)
2024-07-01 00:31:23 +0200Nixkernal(~Nixkernal@240.17.194.178.dynamic.cust.swisscom.net) (Ping timeout: 256 seconds)
2024-07-01 00:36:32 +0200nshepperd2(nshepperd@2600:3c03::f03c:92ff:fe28:92c9) (Quit: The Lounge - https://thelounge.chat)
2024-07-01 00:36:56 +0200mxs9(~mxs@user/mxs)
2024-07-01 00:37:22 +0200nshepperd2(nshepperd@2600:3c03::f03c:92ff:fe28:92c9)
2024-07-01 00:37:24 +0200lain`(lain`@user/lain/x-9874679) (Remote host closed the connection)
2024-07-01 00:37:52 +0200lain`(lain`@user/lain/x-9874679)
2024-07-01 00:37:57 +0200nshepperd2(nshepperd@2600:3c03::f03c:92ff:fe28:92c9) (Client Quit)
2024-07-01 00:38:27 +0200lain`(lain`@user/lain/x-9874679) (Remote host closed the connection)
2024-07-01 00:38:54 +0200lain`(lain`@user/lain/x-9874679)
2024-07-01 00:39:50 +0200lain`(lain`@user/lain/x-9874679) (Remote host closed the connection)
2024-07-01 00:40:17 +0200lain`(lain`@user/lain/x-9874679)
2024-07-01 00:40:21 +0200zzz(~yin@user/zero) (Ping timeout: 255 seconds)
2024-07-01 00:40:28 +0200nshepperd2(~nshepperd@2a01:4f9:3b:4cc9::2)
2024-07-01 00:41:22 +0200nshepperd2(~nshepperd@2a01:4f9:3b:4cc9::2) (Client Quit)
2024-07-01 00:42:52 +0200joeyadams(~joeyadams@2603:6010:5100:2ed:2bef:3f32:3ac3:d5e)
2024-07-01 00:43:39 +0200dcoutts(~duncan@94.119.32.12)
2024-07-01 00:46:12 +0200nshepperd2(~nshepperd@2a01:4f9:3b:4cc9::2)
2024-07-01 00:46:18 +0200 <monochrom> w00t new cabal-install!
2024-07-01 00:47:19 +0200zzz(~yin@user/zero)
2024-07-01 00:48:16 +0200dolio(~dolio@130.44.134.54) (Quit: ZNC 1.8.2 - https://znc.in)
2024-07-01 00:49:45 +0200dolio(~dolio@130.44.134.54)
2024-07-01 00:53:16 +0200dcoutts(~duncan@94.119.32.12) (Remote host closed the connection)
2024-07-01 00:53:18 +0200dolio(~dolio@130.44.134.54) (Client Quit)
2024-07-01 00:53:34 +0200dcoutts(~duncan@94.119.32.5)
2024-07-01 00:53:46 +0200nshepperd2(~nshepperd@2a01:4f9:3b:4cc9::2) (Quit: The Lounge - https://thelounge.chat)
2024-07-01 00:53:55 +0200nshepperd2(~nshepperd@2a01:4f9:3b:4cc9::2)
2024-07-01 00:55:18 +0200nshepperd2(~nshepperd@2a01:4f9:3b:4cc9::2) (Client Quit)
2024-07-01 00:55:26 +0200nshepperd2(~nshepperd@2a01:4f9:3b:4cc9::2)
2024-07-01 00:56:26 +0200dolio(~dolio@130.44.134.54)
2024-07-01 00:59:23 +0200dcoutts(~duncan@94.119.32.5) (Ping timeout: 264 seconds)
2024-07-01 01:00:27 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2024-07-01 01:03:34 +0200Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
2024-07-01 01:06:13 +0200misterfish(~misterfis@84.53.85.146)
2024-07-01 01:07:01 +0200emm(~emm@user/edmeme) (Ping timeout: 246 seconds)
2024-07-01 01:09:08 +0200tomboy64(~tomboy64@user/tomboy64) (Ping timeout: 252 seconds)
2024-07-01 01:14:11 +0200tomboy64(~tomboy64@user/tomboy64)
2024-07-01 01:20:04 +0200mxs9(~mxs@user/mxs) (Quit: The Lounge - https://thelounge.chat)
2024-07-01 01:30:01 +0200mxs9(~mxs@user/mxs)
2024-07-01 01:31:08 +0200ss4(~wootehfoo@user/wootehfoot) (Ping timeout: 252 seconds)
2024-07-01 01:42:50 +0200phma(~phma@2001:5b0:215a:ef08:a1:7264:bc90:3efa) (Read error: Connection reset by peer)
2024-07-01 01:45:46 +0200phma(phma@2001:5b0:2144:3258:22dc:c425:bf48:7057)
2024-07-01 01:48:09 +0200phma(phma@2001:5b0:2144:3258:22dc:c425:bf48:7057) (Read error: Connection reset by peer)
2024-07-01 01:54:16 +0200misterfish(~misterfis@84.53.85.146) (Ping timeout: 246 seconds)
2024-07-01 02:00:32 +0200califax(~califax@user/califx) (Remote host closed the connection)
2024-07-01 02:01:56 +0200califax(~califax@user/califx)
2024-07-01 02:05:53 +0200phma(~phma@host-67-44-208-142.hnremote.net)
2024-07-01 02:11:15 +0200Leary(~Leary@user/Leary/x-0910699) (Remote host closed the connection)
2024-07-01 02:14:06 +0200Leary(~Leary@user/Leary/x-0910699)
2024-07-01 02:21:16 +0200gmg(~user@user/gehmehgeh) (Quit: Leaving)
2024-07-01 02:29:37 +0200sawilagar(~sawilagar@user/sawilagar) (Ping timeout: 272 seconds)
2024-07-01 02:34:53 +0200xdminsy(~xdminsy@117.147.70.231) (Ping timeout: 240 seconds)
2024-07-01 02:35:48 +0200xdminsy(~xdminsy@117.147.70.231)
2024-07-01 02:37:06 +0200dcoutts(~duncan@cpc113460-oxfd27-2-0-cust409.4-3.cable.virginm.net)
2024-07-01 02:44:02 +0200ft(~ft@mue-88-130-107-007.dsl.tropolys.de) (Ping timeout: 268 seconds)
2024-07-01 02:45:18 +0200ft(~ft@mue-88-130-106-118.dsl.tropolys.de)
2024-07-01 02:59:29 +0200 <Axman6> :o
2024-07-01 03:16:47 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 264 seconds)
2024-07-01 03:32:26 +0200lol_jcarpenter2
2024-07-01 03:33:37 +0200 <mikko> is there any way to install packages such that they are available in the default ghci (outside any project) without introducing a ~/.ghc directory?
2024-07-01 03:33:53 +0200 <mikko> here's what i tried https://bpa.st/raw/XPGA
2024-07-01 03:34:28 +0200caryfitz(~caryfitz@2600:1700:e72:9000::47) (Ping timeout: 256 seconds)
2024-07-01 03:34:39 +0200 <mikko> i spent good 20 minutes chatting with chatgippity about package-db and whatever but none of its suggestions helped
2024-07-01 03:35:43 +0200 <mikko> i'm a bit confused where cabal is even installing the package and why removing .ghc affects anything when there's clearly no package there
2024-07-01 03:36:02 +0200 <mikko> and why it even generates .ghc when i already have ~/.config/ghc/ghci.conf
2024-07-01 03:36:41 +0200 <sclv> cabal doesn’t generate .ghc. unsurprisingly, ghc does
2024-07-01 03:37:27 +0200 <mikko> well it's definitely the cabal command that generates it
2024-07-01 03:37:44 +0200 <sclv> the thing cabal writes in there is the default env file. which is mentioned in your paste
2024-07-01 03:38:10 +0200 <sclv> thats where the package is picked up by ghci from, as a “pointer” to the actual location its installed
2024-07-01 03:38:50 +0200 <mikko> i tried moving that to ~/.config/ghc/ but it didn't seem to help
2024-07-01 03:38:56 +0200 <sclv> you can explicitly pass in a different env file location to ghci if you don’t want it to use the one in .ghc — and similarly you can direct cabal to write that enc file elsewhere
2024-07-01 03:39:50 +0200 <sclv> https://ghc.gitlab.haskell.org/ghc/doc/users_guide/packages.html#package-environments
2024-07-01 03:41:35 +0200 <mikko> hmm maybe it belong in $XDG_DATA_HOME not $XDG_CONFIG_HOME
2024-07-01 03:44:31 +0200 <jcarpenter2> I've been working on this program that does pattern matching against expression trees, and just noticed pattern matching is sort of like parsing
2024-07-01 03:45:26 +0200 <jcarpenter2> Instead of parsers that match parts of an input string, there are patterns that match parts of a structured expression tree
2024-07-01 03:47:27 +0200waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 256 seconds)
2024-07-01 03:48:53 +0200 <mikko> yup moving the environment thingamagic from ~/.ghc/ to ~/.local/share/ghc/ did the trick
2024-07-01 03:56:12 +0200 <sclv> nice
2024-07-01 04:09:47 +0200rosco(~rosco@175.136.155.137)
2024-07-01 04:11:24 +0200Typedfern(~Typedfern@82.red-83-37-24.dynamicip.rima-tde.net) (Ping timeout: 255 seconds)
2024-07-01 04:16:08 +0200chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2024-07-01 04:16:41 +0200chexum(~quassel@gateway/tor-sasl/chexum)
2024-07-01 04:26:08 +0200Typedfern(~Typedfern@182.red-83-37-43.dynamicip.rima-tde.net)
2024-07-01 04:41:02 +0200chiselfuse(~chiselfus@user/chiselfuse) (Remote host closed the connection)
2024-07-01 04:41:52 +0200chiselfuse(~chiselfus@user/chiselfuse)
2024-07-01 04:43:48 +0200td_(~td@i5387093F.versanet.de) (Ping timeout: 255 seconds)
2024-07-01 04:45:37 +0200td_(~td@i53870923.versanet.de)
2024-07-01 04:46:59 +0200[exa](~exa@user/exa/x-3587197) (Ping timeout: 260 seconds)
2024-07-01 04:48:36 +0200bairyn(~bairyn@50.250.232.19) (Ping timeout: 268 seconds)
2024-07-01 04:49:55 +0200bairyn(~bairyn@50.250.232.19)
2024-07-01 05:01:27 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Ping timeout: 260 seconds)
2024-07-01 05:20:15 +0200aforemny(~aforemny@2001:9e8:6cdc:700:7c5a:7635:6125:375c) (Ping timeout: 255 seconds)
2024-07-01 05:20:26 +0200aforemny_(~aforemny@i59F516CB.versanet.de)
2024-07-01 05:24:58 +0200rosco(~rosco@175.136.155.137) (Ping timeout: 246 seconds)
2024-07-01 05:34:46 +0200rosco(~rosco@175.136.155.137)
2024-07-01 05:47:31 +0200JimL(~quassel@89.162.16.26) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2024-07-01 05:50:32 +0200JimL(~quassel@89.162.16.26)
2024-07-01 06:01:11 +0200zzz(~yin@user/zero) (Ping timeout: 264 seconds)
2024-07-01 06:14:19 +0200TactfulCitrus(~al@2a02:8012:87a6:0:fbe0:6116:6e30:e047) (Ping timeout: 268 seconds)
2024-07-01 06:21:13 +0200CrunchyFlakes(~CrunchyFl@ip92348280.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-07-01 06:23:42 +0200CrunchyFlakes(~CrunchyFl@146.52.130.128)
2024-07-01 06:29:05 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-07-01 06:55:00 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-07-01 06:56:05 +0200euphores(~SASL_euph@user/euphores) (Quit: Leaving.)
2024-07-01 07:02:28 +0200euphores(~SASL_euph@user/euphores)
2024-07-01 07:13:40 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542)
2024-07-01 07:24:54 +0200michalz(~michalz@185.246.207.221)
2024-07-01 07:31:07 +0200simendsjo(~user@84.209.170.3)
2024-07-01 07:34:52 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2024-07-01 07:49:40 +0200misterfish(~misterfis@84.53.85.146)
2024-07-01 07:53:17 +0200joeyadams(~joeyadams@2603:6010:5100:2ed:2bef:3f32:3ac3:d5e) (Quit: Leaving)
2024-07-01 07:55:26 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2024-07-01 08:05:29 +0200sord937(~sord937@gateway/tor-sasl/sord937)
2024-07-01 08:08:06 +0200amjoseph(~amjoseph@static-198-44-128-146.cust.tzulo.com) (Ping timeout: 268 seconds)
2024-07-01 08:10:51 +0200amjoseph(~amjoseph@static-198-44-128-146.cust.tzulo.com)
2024-07-01 08:25:25 +0200TactfulCitrus(~al@2a02:8012:87a6:0:fbe0:6116:6e30:e047)
2024-07-01 08:40:04 +0200ft(~ft@mue-88-130-106-118.dsl.tropolys.de) (Remote host closed the connection)
2024-07-01 08:42:57 +0200simendsjo(~user@84.209.170.3) (Remote host closed the connection)
2024-07-01 08:51:08 +0200dcoutts(~duncan@cpc113460-oxfd27-2-0-cust409.4-3.cable.virginm.net) (Ping timeout: 252 seconds)
2024-07-01 09:00:17 +0200danza(~francesco@151.44.206.77)
2024-07-01 09:02:50 +0200nurupo(~nurupo.ga@user/nurupo) (Quit: nurupo.ga)
2024-07-01 09:03:39 +0200nurupo(~nurupo.ga@user/nurupo)
2024-07-01 09:05:33 +0200dcoutts(~duncan@cpc113460-oxfd27-2-0-cust409.4-3.cable.virginm.net)
2024-07-01 09:06:05 +0200misterfish(~misterfis@84.53.85.146) (Ping timeout: 272 seconds)
2024-07-01 09:07:14 +0200misterfish(~misterfis@84.53.85.146)
2024-07-01 09:15:33 +0200michalz(~michalz@185.246.207.221) (Ping timeout: 256 seconds)
2024-07-01 09:21:55 +0200misterfish(~misterfis@84.53.85.146) (Ping timeout: 256 seconds)
2024-07-01 09:21:56 +0200danza(~francesco@151.44.206.77) (Ping timeout: 252 seconds)
2024-07-01 09:22:43 +0200cfricke(~cfricke@user/cfricke)
2024-07-01 09:26:23 +0200lewisje(~lewisje@74.215.19.22)
2024-07-01 09:31:31 +0200simendsjo(~user@84.209.170.3)
2024-07-01 09:40:27 +0200mikess(~mikess@user/mikess) (Ping timeout: 264 seconds)
2024-07-01 09:41:33 +0200gmg(~user@user/gehmehgeh)
2024-07-01 09:42:26 +0200danse-nr3(~danse-nr3@151.44.206.77)
2024-07-01 10:00:41 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net)
2024-07-01 10:05:24 +0200michalz(~michalz@185.246.207.193)
2024-07-01 10:12:02 +0200__monty__(~toonn@user/toonn)
2024-07-01 10:13:49 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2024-07-01 10:15:38 +0200img(~img@user/img)
2024-07-01 10:30:40 +0200swistak(~swistak@185.21.216.141)
2024-07-01 10:31:45 +0200Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi)
2024-07-01 10:33:47 +0200emm(~emm@user/edmeme)
2024-07-01 10:36:30 +0200cheater_(~Username@user/cheater)
2024-07-01 10:36:39 +0200lxsameer(~lxsameer@Serene/lxsameer)
2024-07-01 10:37:01 +0200danse-nr3(~danse-nr3@151.44.206.77) (Ping timeout: 268 seconds)
2024-07-01 10:37:14 +0200p3n(~p3n@217.198.124.246) (Quit: ZNC 1.8.2 - https://znc.in)
2024-07-01 10:40:43 +0200cheater(~Username@user/cheater) (Ping timeout: 268 seconds)
2024-07-01 10:40:48 +0200cheater_cheater
2024-07-01 10:41:18 +0200greenflower(~greenflow@122.171.18.1)
2024-07-01 10:42:14 +0200lisbeths(uid135845@id-135845.lymington.irccloud.com)
2024-07-01 10:43:36 +0200chele(~chele@user/chele)
2024-07-01 10:46:36 +0200danse-nr3(~danse-nr3@151.44.206.77)
2024-07-01 10:48:03 +0200p3n(~p3n@217.198.124.246)
2024-07-01 10:52:50 +0200waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
2024-07-01 10:58:44 +0200[exa](~exa@user/exa/x-3587197)
2024-07-01 11:07:00 +0200killy(~killy@staticline-31-183-144-171.toya.net.pl)
2024-07-01 11:07:25 +0200oo_miguel(~Thunderbi@78.10.207.46)
2024-07-01 11:12:01 +0200alexherbo2(~alexherbo@2a02-8440-3404-2111-f9f6-780a-2169-fa49.rev.sfr.net)
2024-07-01 11:12:10 +0200emm(~emm@user/edmeme) (Ping timeout: 268 seconds)
2024-07-01 11:15:59 +0200fun-safe-math(~fun-safe-@24.21.106.247) ()
2024-07-01 11:16:16 +0200killy(~killy@staticline-31-183-144-171.toya.net.pl) (Quit: leaving)
2024-07-01 11:16:55 +0200alexherbo2(~alexherbo@2a02-8440-3404-2111-f9f6-780a-2169-fa49.rev.sfr.net) (Remote host closed the connection)
2024-07-01 11:19:04 +0200alexherbo2(~alexherbo@2a02-8440-3404-2111-844d-6b69-bf95-f1f7.rev.sfr.net)
2024-07-01 11:37:49 +0200simendsjo(~user@84.209.170.3) (Remote host closed the connection)
2024-07-01 11:40:02 +0200simendsjo(~user@84.209.170.3)
2024-07-01 11:44:47 +0200simendsjo(~user@84.209.170.3) (Remote host closed the connection)
2024-07-01 11:53:49 +0200tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
2024-07-01 12:00:25 +0200mreh(~matthew@host86-160-168-12.range86-160.btcentralplus.com)
2024-07-01 12:11:34 +0200rosco(~rosco@175.136.155.137) (Quit: Lost terminal)
2024-07-01 12:35:09 +0200dcoutts(~duncan@cpc113460-oxfd27-2-0-cust409.4-3.cable.virginm.net) (Ping timeout: 256 seconds)
2024-07-01 12:41:23 +0200danse-nr3(~danse-nr3@151.44.206.77) (Ping timeout: 264 seconds)
2024-07-01 12:41:50 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2024-07-01 12:42:29 +0200danse-nr3(~danse-nr3@151.44.206.77)
2024-07-01 12:43:09 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2024-07-01 12:51:34 +0200sawilagar(~sawilagar@user/sawilagar)
2024-07-01 12:52:55 +0200zzz(~yin@user/zero)
2024-07-01 13:03:55 +0200danse-nr3(~danse-nr3@151.44.206.77) (Ping timeout: 256 seconds)
2024-07-01 13:04:09 +0200danse-nr3(~danse-nr3@151.35.249.42)
2024-07-01 13:10:08 +0200tomsmeding(~tomsmedin@2a01:4f8:c0c:5e5e::2) (Quit: ZNC 1.9.0 - https://znc.in)
2024-07-01 13:11:38 +0200lisbeths(uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2024-07-01 13:17:41 +0200ircbrowse_tom(~ircbrowse@user/tomsmeding/bot/ircbrowse-tom)
2024-07-01 13:17:43 +0200Server+Cnt
2024-07-01 13:18:11 +0200yahb2(~yahb2@user/tomsmeding/bot/yahb2) (Remote host closed the connection)
2024-07-01 13:18:36 +0200yahb2(~yahb2@user/tomsmeding/bot/yahb2)
2024-07-01 13:18:36 +0200ChanServ+v yahb2
2024-07-01 13:19:14 +0200waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 256 seconds)
2024-07-01 13:19:48 +0200pavonia(~user@user/siracusa)
2024-07-01 13:20:25 +0200dcoutts(~duncan@185.201.60.211)
2024-07-01 13:27:35 +0200igemnace(~igemnace@user/igemnace) (Quit: ZNC 1.8.2+deb2build5 - https://znc.in)
2024-07-01 13:29:54 +0200Ekho(~Ekho@user/ekho) (Quit: CORE ERROR, SYSTEM HALTED.)
2024-07-01 13:30:14 +0200Catty(~catties@user/meow/catties) (Remote host closed the connection)
2024-07-01 13:30:50 +0200igemnace(~igemnace@user/igemnace)
2024-07-01 13:32:06 +0200danse-nr3(~danse-nr3@151.35.249.42) (Ping timeout: 255 seconds)
2024-07-01 13:34:29 +0200danse-nr3(~danse-nr3@151.35.249.42)
2024-07-01 13:35:21 +0200catties(~catties@user/meow/catties)
2024-07-01 13:41:19 +0200Ekho(~Ekho@user/ekho)
2024-07-01 13:41:35 +0200rosco(~rosco@175.136.155.137)
2024-07-01 13:42:27 +0200dcoutts(~duncan@185.201.60.211) (Remote host closed the connection)
2024-07-01 13:44:46 +0200Square(~Square@user/square)
2024-07-01 13:45:03 +0200dcoutts(~duncan@ip-185-104-136-21.ptr.icomera.net)
2024-07-01 13:57:26 +0200hgolden(~hgolden@2603:8000:9d00:3ed1:2678:8497:aa5c:7fa9) (Remote host closed the connection)
2024-07-01 13:59:33 +0200hgolden(~hgolden@2603:8000:9d00:3ed1:2678:8497:aa5c:7fa9)
2024-07-01 14:03:41 +0200dcoutts(~duncan@ip-185-104-136-21.ptr.icomera.net) (Ping timeout: 240 seconds)
2024-07-01 14:06:00 +0200Nixkernal(~Nixkernal@240.17.194.178.dynamic.cust.swisscom.net)
2024-07-01 14:15:56 +0200greenflower(~greenflow@122.171.18.1) (Ping timeout: 250 seconds)
2024-07-01 14:28:28 +0200chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2024-07-01 14:29:21 +0200chexum(~quassel@gateway/tor-sasl/chexum)
2024-07-01 14:34:37 +0200noumenon(~noumenon@113.51-175-156.customer.lyse.net)
2024-07-01 14:35:39 +0200cfricke(~cfricke@user/cfricke) (Ping timeout: 264 seconds)
2024-07-01 14:40:52 +0200danse-nr3(~danse-nr3@151.35.249.42) (Ping timeout: 256 seconds)
2024-07-01 14:43:43 +0200driib3(~driib@vmi931078.contaboserver.net) (Quit: The Lounge - https://thelounge.chat)
2024-07-01 14:44:42 +0200driib3(~driib@vmi931078.contaboserver.net)
2024-07-01 14:45:38 +0200driib3(~driib@vmi931078.contaboserver.net) (Client Quit)
2024-07-01 14:47:49 +0200driib3(~driib@vmi931078.contaboserver.net)
2024-07-01 14:49:35 +0200cfricke(~cfricke@user/cfricke)
2024-07-01 14:54:38 +0200bitdex_(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2024-07-01 15:04:00 +0200alexherbo2(~alexherbo@2a02-8440-3404-2111-844d-6b69-bf95-f1f7.rev.sfr.net) (Remote host closed the connection)
2024-07-01 15:04:46 +0200tired(~tired@user/tired) (Remote host closed the connection)
2024-07-01 15:05:57 +0200tired(~tired@user/tired)
2024-07-01 15:38:53 +0200mreh(~matthew@host86-160-168-12.range86-160.btcentralplus.com) (Ping timeout: 268 seconds)
2024-07-01 15:43:12 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2024-07-01 15:43:23 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2024-07-01 15:43:29 +0200danse-nr3(~danse-nr3@151.35.249.42)
2024-07-01 15:44:00 +0200mrmonday(~robert@what.i.hope.is.not.a.tabernaevagant.es) (Quit: .)
2024-07-01 15:45:22 +0200mrmonday(~robert@what.i.hope.is.not.a.tabernaevagant.es)
2024-07-01 15:59:36 +0200dcoutts(~duncan@185.201.60.13)
2024-07-01 16:08:36 +0200ystael(~ystael@user/ystael)
2024-07-01 16:09:16 +0200dcoutts(~duncan@185.201.60.13) (Ping timeout: 256 seconds)
2024-07-01 16:11:50 +0200cheater_(~Username@user/cheater)
2024-07-01 16:15:20 +0200dcoutts(~duncan@94.119.32.11)
2024-07-01 16:16:11 +0200cheater(~Username@user/cheater) (Ping timeout: 268 seconds)
2024-07-01 16:16:17 +0200cheater_cheater
2024-07-01 16:24:22 +0200driib3(~driib@vmi931078.contaboserver.net) (Quit: The Lounge - https://thelounge.chat)
2024-07-01 16:28:13 +0200driib3(~driib@vmi931078.contaboserver.net)
2024-07-01 16:32:03 +0200dcoutts(~duncan@94.119.32.11) (Ping timeout: 252 seconds)
2024-07-01 16:34:08 +0200maroloccio(~marolocci@151.73.250.151)
2024-07-01 16:39:46 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 246 seconds)
2024-07-01 16:44:29 +0200spenat(~spenat@c-1125235c.012-6-62726f1.bbcust.telenor.se) (Ping timeout: 256 seconds)
2024-07-01 16:46:20 +0200dcoutts(~duncan@ip-185-104-136-57.ptr.icomera.net)
2024-07-01 16:50:26 +0200ft(~ft@p4fc2ab80.dip0.t-ipconnect.de)
2024-07-01 16:58:40 +0200mreh(~matthew@host86-160-168-12.range86-160.btcentralplus.com)
2024-07-01 17:00:40 +0200danse-nr3(~danse-nr3@151.35.249.42) (Read error: Connection reset by peer)
2024-07-01 17:01:08 +0200danse-nr3(~danse-nr3@151.43.102.201)
2024-07-01 17:02:44 +0200dsrt^(~cd@c-98-242-74-66.hsd1.ga.comcast.net)
2024-07-01 17:09:17 +0200meritamen(~user@user/meritamen)
2024-07-01 17:11:15 +0200spenat(~spenat@c-1125235c.012-6-62726f1.bbcust.telenor.se)
2024-07-01 17:14:24 +0200dcoutts(~duncan@ip-185-104-136-57.ptr.icomera.net) (Ping timeout: 252 seconds)
2024-07-01 17:19:01 +0200rvalue(~rvalue@user/rvalue) (Read error: Connection reset by peer)
2024-07-01 17:19:33 +0200rvalue(~rvalue@user/rvalue)
2024-07-01 17:20:05 +0200mreh(~matthew@host86-160-168-12.range86-160.btcentralplus.com) (Ping timeout: 272 seconds)
2024-07-01 17:22:57 +0200rncwnd(~quassel@2a01:4f8:221:27c6::1) (Quit: Later)
2024-07-01 17:23:43 +0200rncwnd(~quassel@2a01:4f8:221:27c6::1)
2024-07-01 17:23:47 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-07-01 17:23:56 +0200euleritian(~euleritia@dynamic-176-007-148-253.176.7.pool.telefonica.de)
2024-07-01 17:24:16 +0200euleritian(~euleritia@dynamic-176-007-148-253.176.7.pool.telefonica.de) (Read error: Connection reset by peer)
2024-07-01 17:24:33 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-07-01 17:28:05 +0200meritamen(~user@user/meritamen) (Ping timeout: 240 seconds)
2024-07-01 17:30:48 +0200cfricke(~cfricke@user/cfricke) (Ping timeout: 268 seconds)
2024-07-01 17:31:43 +0200cfricke(~cfricke@user/cfricke)
2024-07-01 17:33:41 +0200dcoutts(~duncan@212.187.183.33)
2024-07-01 17:35:43 +0200cheater_(~Username@user/cheater)
2024-07-01 17:37:04 +0200cheater(~Username@user/cheater) (Ping timeout: 256 seconds)
2024-07-01 17:37:08 +0200cheater_cheater
2024-07-01 17:47:28 +0200AlexNoo_(~AlexNoo@94.233.240.124)
2024-07-01 17:47:42 +0200segfaultfizzbuzz(~segfaultf@23-93-79-84.fiber.dynamic.sonic.net)
2024-07-01 17:48:25 +0200mikess(~mikess@user/mikess)
2024-07-01 17:50:39 +0200AlexZenon(~alzenon@94.233.240.141) (Ping timeout: 264 seconds)
2024-07-01 17:51:28 +0200AlexNoo(~AlexNoo@94.233.240.141) (Ping timeout: 268 seconds)
2024-07-01 17:51:29 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Quit: ChaiTRex)
2024-07-01 17:54:03 +0200soverysour(~soverysou@81.196.150.219)
2024-07-01 17:54:03 +0200soverysour(~soverysou@81.196.150.219) (Changing host)
2024-07-01 17:54:03 +0200soverysour(~soverysou@user/soverysour)
2024-07-01 17:56:59 +0200AlexNoo_AlexNoo
2024-07-01 18:11:25 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2024-07-01 18:13:17 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 240 seconds)
2024-07-01 18:14:34 +0200chele(~chele@user/chele) (Remote host closed the connection)
2024-07-01 18:28:39 +0200soverysour(~soverysou@user/soverysour) (Ping timeout: 255 seconds)
2024-07-01 18:33:33 +0200danse-nr3(~danse-nr3@151.43.102.201) (Ping timeout: 272 seconds)
2024-07-01 18:34:26 +0200danza(~francesco@151.43.102.201)
2024-07-01 18:35:33 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-07-01 18:36:13 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-07-01 18:52:25 +0200danza(~francesco@151.43.102.201) (Ping timeout: 246 seconds)
2024-07-01 18:56:16 +0200dsrt^(~cd@c-98-242-74-66.hsd1.ga.comcast.net) (Ping timeout: 246 seconds)
2024-07-01 19:00:24 +0200dcoutts(~duncan@212.187.183.33) (Ping timeout: 256 seconds)
2024-07-01 19:02:49 +0200dsrt^(~cd@c-98-242-74-66.hsd1.ga.comcast.net)
2024-07-01 19:04:10 +0200AlexZenon(~alzenon@94.233.240.124)
2024-07-01 19:04:42 +0200danse-nr3(~danse-nr3@151.43.102.201)
2024-07-01 19:08:08 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-07-01 19:08:16 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-07-01 19:13:22 +0200AlexZenon(~alzenon@94.233.240.124) (Read error: Connection reset by peer)
2024-07-01 19:18:02 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 4.2.2)
2024-07-01 19:18:11 +0200AlexZenon(~alzenon@94.233.240.124)
2024-07-01 19:20:17 +0200maroloccio(~marolocci@151.73.250.151) (Quit: WeeChat 3.8)
2024-07-01 19:20:51 +0200mreh(~matthew@host86-160-168-12.range86-160.btcentralplus.com)
2024-07-01 19:24:05 +0200dcoutts(~duncan@212.187.183.33)
2024-07-01 19:29:47 +0200CrunchyFlakes(~CrunchyFl@146.52.130.128) (Read error: Connection reset by peer)
2024-07-01 19:32:12 +0200CrunchyFlakes(~CrunchyFl@146.52.130.128)
2024-07-01 19:38:16 +0200 <Athas> What are good introductory Haskell textbooks these days?
2024-07-01 19:38:52 +0200 <monochrom> I think Hutton's book.
2024-07-01 19:38:53 +0200 <haskellbridge> <sm> what kind of style, focus, and prequisites ?
2024-07-01 19:39:01 +0200 <haskellbridge> <sm> Hutton is always considered good
2024-07-01 19:39:06 +0200 <Athas> I know of Hutton's book, and I will recommend it. But what else?
2024-07-01 19:39:23 +0200 <Athas> The context is a master's level course with no required textbook, but merely recommended ones.
2024-07-01 19:39:30 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds)
2024-07-01 19:39:30 +0200 <haskellbridge> <sm> for a light intro I always liked
2024-07-01 19:39:30 +0200 <haskellbridge> @where htac
2024-07-01 19:39:31 +0200 <lambdabot> "Haskell Tutorial and Cookbook" by Mark Watson in 2017-09-04 at <https://leanpub.com/haskell-cookbook>
2024-07-01 19:39:45 +0200 <Athas> I'm taking over the course, which used to recommend Hutton and LYAH, but I think the latter is outdated (and I never liked it much myself).
2024-07-01 19:39:59 +0200euleritian(~euleritia@dynamic-176-007-148-253.176.7.pool.telefonica.de)
2024-07-01 19:40:44 +0200 <Athas> That Haskell Cookbook looks good; I will take a closer look.
2024-07-01 19:41:28 +0200 <monochrom> The other resources I am familiar with, I have described them in http://www.vex.net/~trebla/haskell/learn-sources.html
2024-07-01 19:41:37 +0200 <haskellbridge> <sm> more: https://www.extrema.is/articles/haskell-books -> beginner
2024-07-01 19:41:47 +0200 <monochrom> But the wikibook is always a good place to start for free.
2024-07-01 19:41:57 +0200 <haskellbridge> <sm> that too
2024-07-01 19:42:28 +0200Noinia(~Frank@77-162-168-71.fixed.kpn.net) (Ping timeout: 246 seconds)
2024-07-01 19:42:40 +0200 <haskellbridge> <sm> I heard good things about Effective Haskell IIRC
2024-07-01 19:43:37 +0200 <Athas> Woah, there's more books than I expected. This used to be simpler.
2024-07-01 19:44:04 +0200 <monochrom> Well yeah consider "which book do you recommend for Java?" >:)
2024-07-01 19:44:05 +0200 <Athas> In the old days, you read Hutton, and then you read RWH (while walking uphill).
2024-07-01 19:44:26 +0200 <Athas> And in the even older days, the Gentle Introduction.
2024-07-01 19:44:52 +0200 <monochrom> But ironically in the case of C I just need to know to recommend King's. (Unless you don't have that much money.)
2024-07-01 19:47:58 +0200 <dolio> Up to date with C99.
2024-07-01 19:48:36 +0200 <haskellbridge> <sm> Athas: let us know what you decide
2024-07-01 19:48:55 +0200 <Athas> How is LYAH perceived nowadays? Is it actually outdated?
2024-07-01 19:49:27 +0200 <haskellbridge> <sm> people usually say it's lacking hands-on exercises, I think ?
2024-07-01 19:49:29 +0200 <monochrom> About the money thing: I realize that I am completely out of touch these days. Young people simply find free (probably pirated) PDF on the internet. :)
2024-07-01 19:50:05 +0200 <monochrom> I change my mind about LYAH every 11 years. >:)
2024-07-01 19:50:24 +0200 <dolio> We could have a much cheaper book to recommend. Just one page. "Don't use C."
2024-07-01 19:50:26 +0200 <Athas> I'll be writing my own exercises anyway, so that's not an important aspect.
2024-07-01 19:50:29 +0200 <haskellbridge> <sm> unless there's a repo with recent commits, you can be pretty sure any haskell book is a bit outdated on tools and setup
2024-07-01 19:50:48 +0200dcoutts(~duncan@212.187.183.33) (Ping timeout: 256 seconds)
2024-07-01 19:50:56 +0200 <Athas> Yes, I don't expect tooling to be covered, but I prefer that the code in the book will at least work.
2024-07-01 19:51:15 +0200 <Athas> Actually, I don't remember if Hutton is pre or post things like the Functor=>Applicative=>Monad change.
2024-07-01 19:51:19 +0200 <haskellbridge> <sm> well that's a long shot also. Most books don't ensure that
2024-07-01 19:51:41 +0200 <monochrom> I wonder if LYAH is GI made longer and slower. :)
2024-07-01 19:52:10 +0200 <monochrom> To be sure, LYAH covers more topics, so not really fair.
2024-07-01 19:52:33 +0200 <monochrom> Hutton's has FAM.
2024-07-01 19:53:25 +0200 <Athas> That is good to know. I left my copy at the office.
2024-07-01 19:55:26 +0200 <monochrom> Hrm, Bird's is the one that's pre-FAM.
2024-07-01 19:55:42 +0200 <geekosaur> and he bitched about it iirc
2024-07-01 19:55:47 +0200 <dolio> What is the status of the evil bird book, though?
2024-07-01 19:55:56 +0200 <geekosaur> because his book had just gone off to press when FAM landed
2024-07-01 19:56:24 +0200 <haskellbridge> <sm> what is this "press" you speak of
2024-07-01 19:56:40 +0200 <monochrom> What is the evil bird book?
2024-07-01 19:57:31 +0200tomsmeding(~tomsmedin@static.21.109.88.23.clients.your-server.de)
2024-07-01 19:57:53 +0200 <dolio> https://0x0.st/XaBG.jpg
2024-07-01 19:58:43 +0200 <monochrom> Oh haha, now I see what "evil bird" means heh.
2024-07-01 19:59:56 +0200rosco(~rosco@175.136.155.137) (Quit: Lost terminal)
2024-07-01 20:01:30 +0200 <EvanR> they are so close to the title with so much whitespace below
2024-07-01 20:01:36 +0200 <EvanR> what is going ON with that layout
2024-07-01 20:01:39 +0200danse-nr3(~danse-nr3@151.43.102.201) (Ping timeout: 260 seconds)
2024-07-01 20:02:23 +0200 <dolio> Dunno. There's an OCaml one, too.
2024-07-01 20:02:45 +0200 <monochrom> Leave blank space to show the spacious atmosphere/vibe.
2024-07-01 20:02:48 +0200 <dolio> With an angry robin or something.
2024-07-01 20:02:52 +0200 <haskellbridge> <sm> they didn't stand where they were asked. They're _evil_.
2024-07-01 20:03:03 +0200 <monochrom> For example Chinese painting and the Dune Part 1 movie.
2024-07-01 20:04:21 +0200hueso(~root@user/hueso) (Quit: hueso)
2024-07-01 20:05:38 +0200 <monochrom> In most Chinese paintings, it's like 70%-90% blank space. In one scene in Dune where the Baron, his nephew, and the reverend mother were meeting, it's 10% those 3 persons and 90% the empty hall they're in.
2024-07-01 20:06:31 +0200 <monochrom> In my https://www.vex.net/~trebla/haskell/forwardconstraint/ForwardConstraint.hs , it's 90% docs/comments and 10% code. >:)
2024-07-01 20:07:59 +0200hueso(~root@user/hueso)
2024-07-01 20:08:33 +0200mulk(~mulk@p5b2dc1a2.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2024-07-01 20:08:46 +0200stiell(~stiell@gateway/tor-sasl/stiell) (Ping timeout: 260 seconds)
2024-07-01 20:12:13 +0200EvanR(~EvanR@user/evanr) (Quit: Leaving)
2024-07-01 20:12:37 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Read error: Connection reset by peer)
2024-07-01 20:13:34 +0200mulk(~mulk@p5b2dc1a2.dip0.t-ipconnect.de)
2024-07-01 20:16:23 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2024-07-01 20:21:21 +0200stiell(~stiell@gateway/tor-sasl/stiell)
2024-07-01 20:23:20 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-07-01 20:33:53 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-07-01 20:35:47 +0200euleritian(~euleritia@dynamic-176-007-148-253.176.7.pool.telefonica.de) (Read error: Connection reset by peer)
2024-07-01 20:36:11 +0200euleritian(~euleritia@2a02:810a:b00:1568:a497:6bd5:cbcc:abc0)
2024-07-01 20:40:20 +0200jrm(~jrm@user/jrm) (Quit: ciao)
2024-07-01 20:41:57 +0200jrm(~jrm@user/jrm)
2024-07-01 20:52:29 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2024-07-01 20:57:14 +0200qqq(~qqq@92.43.167.61) (Remote host closed the connection)
2024-07-01 21:00:58 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-07-01 21:01:27 +0200jrm(~jrm@user/jrm) (Quit: ciao)
2024-07-01 21:02:56 +0200jrm(~jrm@user/jrm)
2024-07-01 21:03:08 +0200lisbeths(uid135845@id-135845.lymington.irccloud.com)
2024-07-01 21:05:47 +0200Arsen(arsen@gentoo/developer/managarm.dev.Arsen) (Quit: Quit.)
2024-07-01 21:07:50 +0200target_i(~target_i@user/target-i/x-6023099)
2024-07-01 21:08:21 +0200Arsen(arsen@aarsen.me)
2024-07-01 21:08:45 +0200ArsenGuest702
2024-07-01 21:09:51 +0200euleritian(~euleritia@2a02:810a:b00:1568:a497:6bd5:cbcc:abc0) (Ping timeout: 264 seconds)
2024-07-01 21:10:48 +0200euleritian(~euleritia@95.90.211.232)
2024-07-01 21:10:56 +0200hseg(~gesh@46.120.21.14)
2024-07-01 21:11:26 +0200pavonia(~user@user/siracusa)
2024-07-01 21:11:38 +0200 <tomsmeding> monochrom: (disclaimer, read the books (1-3) but didn't see the movie) Herbert does like his grand halls. We get a grand hall (the previous emperor's metal contraption on Arrakis) at the end of book 1, and in books 2 and 3 we get Alia's temple, the palace in Arrakeen, and various other big places
2024-07-01 21:13:33 +0200 <hseg> Hi. IIRC, typeclass inference is confluent (in particular, the category of typeclasses is thin). How does GHC enforce this (eg what prevents me from writing an inconsistent pair of inferences Ord a => Eq [a])?
2024-07-01 21:13:52 +0200 <tomsmeding> have you tried it and looked at the error message?
2024-07-01 21:14:28 +0200 <hseg> not yet, should've done so first, sorry
2024-07-01 21:15:46 +0200 <hseg> guessing -- that's going to get me into overlapping instance trouble, isn't it?
2024-07-01 21:15:51 +0200 <tomsmeding> also try 'data T a = T a ; instance Eq (f a) ; instance Eq (T a)' and look at all the diagnostics
2024-07-01 21:16:05 +0200 <tomsmeding> well for your 'Eq [a]' GHC just plainly says "duplicate instances"
2024-07-01 21:16:32 +0200 <tomsmeding> but with my example you get "Overlapping instances" errors
2024-07-01 21:17:00 +0200 <hseg> hrm, https://0x0.st/XaMG.txt doesn't get me into trouble yet, odd
2024-07-01 21:17:56 +0200 <monochrom> Basically overlapping instances at some point. Plus the implicit fact that you gain more instances from importing and it's accumulative, and you perpetuate what you gain to those who import you, therefore two branches that overlap each other will be noticed eventually (e.g., in your main).
2024-07-01 21:18:41 +0200 <tomsmeding> monochrom: why do hseg's two Q instances not overlap
2024-07-01 21:18:41 +0200 <monochrom> Sometimes we even say "incoherent" which is more scaremongering than "overlap" :)
2024-07-01 21:18:42 +0200 <hseg> ah, ok
2024-07-01 21:19:28 +0200 <monochrom> Hrm... I don't know. Let me try...
2024-07-01 21:19:33 +0200 <tomsmeding> ah, ghc does throw an error when trying to instantiate an ambiguous situation
2024-07-01 21:19:53 +0200 <tomsmeding> hseg: https://play.haskell.org/saved/xlgZHO2X
2024-07-01 21:19:57 +0200 <monochrom> I should be creating a Unix-and-C midterm test instead of playing with Haskell...
2024-07-01 21:20:24 +0200 <tomsmeding> ask them to implement closures in C
2024-07-01 21:21:12 +0200 <hseg> Ah, OK so _now_ I get an UndecidableInstances warning
2024-07-01 21:21:22 +0200 <hseg> https://0x0.st/XaM7.txt
2024-07-01 21:21:26 +0200 <monochrom> Hrm interesting, you have to use methods before conflicts are noticed. This is truly lazy. :)
2024-07-01 21:21:41 +0200 <hseg> rofl
2024-07-01 21:21:45 +0200zzz(~yin@user/zero) (Ping timeout: 268 seconds)
2024-07-01 21:21:45 +0200 <tomsmeding> UndecidableInstances is irrelevant to preserving confluence though, I think
2024-07-01 21:21:53 +0200Guest702(arsen@aarsen.me) (Changing host)
2024-07-01 21:21:53 +0200Guest702(arsen@gentoo/developer/managarm.dev.Arsen)
2024-07-01 21:22:04 +0200 <tomsmeding> it's relevant for preserving, well, decidability
2024-07-01 21:22:16 +0200 <hseg> tomsmeding: I'm unsurprised by your case, though -- it's clearly overlapping
2024-07-01 21:22:22 +0200 <tomsmeding> it is
2024-07-01 21:22:43 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 256 seconds)
2024-07-01 21:23:14 +0200 <hseg> Ah, OK, with UI am getting the Overlapping instances warning
2024-07-01 21:23:48 +0200Guest702(arsen@gentoo/developer/managarm.dev.Arsen) (Quit: Quit.)
2024-07-01 21:23:58 +0200lxsameer(~lxsameer@Serene/lxsameer) (Ping timeout: 246 seconds)
2024-07-01 21:24:16 +0200 <hseg> though doesn't this mean that the promise of the thinness of typeclasses is a) only true in the absence of overlap and b) only reflects that absence's tiebreaking power?
2024-07-01 21:24:45 +0200 <tomsmeding> can you usefully define overlapping typeclasses though
2024-07-01 21:24:53 +0200 <tomsmeding> (without {-# OVERLAPPING #-} and friends)
2024-07-01 21:24:53 +0200 <hseg> think so?
2024-07-01 21:25:04 +0200 <tomsmeding> (because that's explicitly opting out of confluence)
2024-07-01 21:25:21 +0200 <tomsmeding> that is, can you define overlapping instances in such a way that you can use them
2024-07-01 21:25:47 +0200 <tomsmeding> any use of a method from overlapping classes will be ambiguous
2024-07-01 21:25:56 +0200 <tomsmeding> if both are in scope, that is
2024-07-01 21:25:57 +0200Arsen(arsen@gentoo/developer/managarm.dev.Arsen)
2024-07-01 21:27:26 +0200 <tomsmeding> perhaps not as satisfying as overlapping definitions being rejected at definition site, but at least it does preserve confluence
2024-07-01 21:27:47 +0200 <carbolymer> @pl \(k,v) -> (, v) <$> V2.readParamName @V2.ParamName k
2024-07-01 21:27:47 +0200 <lambdabot> (line 1, column 13):
2024-07-01 21:27:47 +0200 <lambdabot> unexpected ','
2024-07-01 21:27:47 +0200 <lambdabot> expecting expression
2024-07-01 21:27:56 +0200 <carbolymer> lambdabot does not understand tuplesections?
2024-07-01 21:28:06 +0200 <tomsmeding> well, @pl at least doesn't
2024-07-01 21:28:12 +0200 <geekosaur> @pl doesn't understand tuples
2024-07-01 21:28:23 +0200soverysour(~soverysou@user/soverysour)
2024-07-01 21:28:35 +0200 <tomsmeding> @pl \a b -> (a, b)
2024-07-01 21:28:35 +0200 <lambdabot> (,)
2024-07-01 21:28:37 +0200 <tomsmeding> that it does
2024-07-01 21:29:03 +0200 <geekosaur> more precisely, there's some simple mapping of some simple cases but the general case throws an error
2024-07-01 21:29:21 +0200 <tomsmeding> also it parses the type application as a use of infix (@)
2024-07-01 21:29:24 +0200 <tomsmeding> @pl \(k,v) -> (\x -> (x, v)) <$> f k
2024-07-01 21:29:24 +0200 <lambdabot> uncurry (flip ((<$>) . flip (,)) . f)
2024-07-01 21:29:48 +0200 <geekosaur> in particular, pattern matching can't be made pointfree unless it can render the whole expression without breaking apart the tuple, iircc
2024-07-01 21:29:58 +0200RiXSon(~rixson@178-164-206-66.pool.digikabel.hu) (Ping timeout: 264 seconds)
2024-07-01 21:30:22 +0200 <tomsmeding> @pl \(a, b) -> (b, a)
2024-07-01 21:30:22 +0200 <lambdabot> uncurry (flip (,))
2024-07-01 21:30:28 +0200 <tomsmeding> seems to have _some_ understanding
2024-07-01 21:30:34 +0200 <geekosaur> and it predates tuplesections, so won't handle it at all
2024-07-01 21:31:27 +0200 <geekosaur> yes, that one it knows it can use uncurry. I think it has trouble with more complex ones though]
2024-07-01 21:31:57 +0200 <tomsmeding> perhaps "it understands tuples but the transformation is not complete in their presence"
2024-07-01 21:32:39 +0200emm(~emm@user/edmeme)
2024-07-01 21:32:49 +0200 <monochrom> @pl isn't even a LLM so nevermind "understand" >:)
2024-07-01 21:33:22 +0200 <tomsmeding> you get what I meant :p
2024-07-01 21:33:47 +0200EvanR(~EvanR@user/evanr)
2024-07-01 21:37:12 +0200superbil(~superbil@1-34-176-171.hinet-ip.hinet.net) (Read error: Connection reset by peer)
2024-07-01 21:37:39 +0200superbil(~superbil@1-34-176-171.hinet-ip.hinet.net)
2024-07-01 21:37:46 +0200 <cheater> if i have a function f :: [Int] -> [Int], f = (++ [2]), where do i say the 2 "comes from" in something like f [1, 7] == [1, 7, 2]?
2024-07-01 21:41:29 +0200 <monochrom> I don't understand the question. But probably "2 comes from f"?
2024-07-01 21:42:53 +0200superbil(~superbil@1-34-176-171.hinet-ip.hinet.net) (Read error: Connection reset by peer)
2024-07-01 21:49:27 +0200hseg(~gesh@46.120.21.14) (Quit: WeeChat 4.3.3)
2024-07-01 21:51:15 +0200euleritian(~euleritia@95.90.211.232) (Ping timeout: 264 seconds)
2024-07-01 21:51:52 +0200 <EvanR> 2 goes anywhere Int is expected, it doesn't come from anywhere
2024-07-01 21:52:14 +0200 <EvanR> in the sense that ++ comes from the Num class
2024-07-01 21:52:16 +0200euleritian(~euleritia@dynamic-176-007-148-253.176.7.pool.telefonica.de)
2024-07-01 21:52:21 +0200 <EvanR> what
2024-07-01 21:52:26 +0200 <EvanR> the Data.List module
2024-07-01 21:52:40 +0200tomsmedinglooks at EvanR
2024-07-01 21:52:42 +0200 <EvanR> heat wave destroying my brain
2024-07-01 21:53:05 +0200 <tomsmeding> maybe ++ comes from Num twice
2024-07-01 21:53:20 +0200 <EvanR> beep once for yes twice for no
2024-07-01 21:53:28 +0200 <EvanR> yes yes
2024-07-01 21:53:47 +0200 <geekosaur> beeep - beeep - beeep - beeep - beeep …
2024-07-01 21:59:01 +0200remedan(~remedan@ip-62-245-108-153.bb.vodafone.cz) (Quit: Bye!)
2024-07-01 21:59:06 +0200superbil(~superbil@1-34-176-171.hinet-ip.hinet.net)
2024-07-01 22:01:30 +0200lain`(lain`@user/lain/x-9874679) (Ping timeout: 255 seconds)
2024-07-01 22:01:54 +0200lain`(lain`@user/lain/x-9874679)
2024-07-01 22:09:59 +0200 <mreh> what is this magic by which a case statement can help clarify an existential type in an eliminator?
2024-07-01 22:10:50 +0200 <mreh> withSomeSBool (toSBool bool) $ \(sb :: SBool b) ->
2024-07-01 22:10:50 +0200 <mreh> case dict @MonadLogging sb of
2024-07-01 22:10:53 +0200 <mreh> Dict -> runLogging @b program
2024-07-01 22:12:36 +0200 <tomsmeding> mreh: what's the type of 'dict'
2024-07-01 22:12:59 +0200 <mreh> it's a biggie
2024-07-01 22:13:02 +0200 <mreh> hang on
2024-07-01 22:13:47 +0200 <mreh> dict :: ( c 'True, c 'False ) => SBool b -> Dict (c b)
2024-07-01 22:13:48 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net)
2024-07-01 22:14:17 +0200 <tomsmeding> well then that 'dict' function produces 'MonadLogging b' evidence
2024-07-01 22:14:27 +0200 <tomsmeding> that wasn't there before
2024-07-01 22:14:50 +0200 <tomsmeding> there was MonadLogging 'True and MonadLogging 'False; 'dict' does the case analysis and produces MonadLogging b
2024-07-01 22:15:15 +0200 <tomsmeding> writing 'case sb of { STrue -> runLogging @b program ; SFalse -> runLogging @b program }' should also work
2024-07-01 22:15:17 +0200 <mreh> yeah, I get that bit, but like, what?
2024-07-01 22:15:44 +0200 <mreh> before GHC doesn't know what b is, and now it does
2024-07-01 22:15:48 +0200 <tomsmeding> no it doesn't
2024-07-01 22:15:50 +0200 <mreh> it's forall b.
2024-07-01 22:15:58 +0200 <tomsmeding> it just knows that whatever b is, there is apparently a MonadLogging instance for it
2024-07-01 22:15:58 +0200lain`(lain`@user/lain/x-9874679) (Remote host closed the connection)
2024-07-01 22:16:04 +0200 <tomsmeding> 'dict' proved that
2024-07-01 22:16:12 +0200 <mreh> oooo
2024-07-01 22:16:14 +0200 <tomsmeding> (by case analysis)
2024-07-01 22:16:48 +0200 <tomsmeding> Dict :: c => Dict c
2024-07-01 22:17:20 +0200lain`(lain`@user/lain/x-9874679)
2024-07-01 22:17:22 +0200 <tomsmeding> if we make the dictionaries explicit (and turn => into ->), it looks more like: case dict @MonadLogging sb of Dict d -> runLoggin @b d program
2024-07-01 22:17:39 +0200 <tomsmeding> and: dict SFalse = Dict dMonadLoggingFalse ; dict STrue = Dict dMonadLoggingTrue
2024-07-01 22:18:41 +0200 <mreh> okay
2024-07-01 22:18:57 +0200 <mreh> so it's to placate the type checker
2024-07-01 22:19:20 +0200 <tomsmeding> well, 'dict' is actually doing something here
2024-07-01 22:19:26 +0200 <tomsmeding> look at my expanded version of 'dict'
2024-07-01 22:19:39 +0200 <mreh> yes
2024-07-01 22:19:41 +0200 <tomsmeding> the Dict constructor _has a field_: it's invisible in normal haskell, but there is a field there
2024-07-01 22:19:48 +0200 <tomsmeding> the dictionary for MonadLogging
2024-07-01 22:20:06 +0200 <tomsmeding> 'dict' pattern matches on the singleton for 'b' and chooses the correct dictionary to put in Dict's field
2024-07-01 22:20:19 +0200 <tomsmeding> with your match on Dict, GHC has that dictionary available to pass to runLogging
2024-07-01 22:20:20 +0200 <mreh> is this the implicit variable GHC uses to find typeclasses?
2024-07-01 22:20:40 +0200 <tomsmeding> my use of the word "dictionary" here refers to how GHC implements type classes at runtime
2024-07-01 22:20:59 +0200lain`(lain`@user/lain/x-9874679) (Remote host closed the connection)
2024-07-01 22:21:05 +0200 <tomsmeding> if you have a type class, say 'class Eq a where { (==), (/=) :: a -> a -> a }', then at runtime, that is a _record with two fields_
2024-07-01 22:21:45 +0200mulk(~mulk@p5b2dc1a2.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
2024-07-01 22:21:45 +0200 <tomsmeding> and if you have a polymorphic function 'foo :: Eq a => a -> a -> Int', then at runtime that has type 'EqDict a -> a -> a -> Int'
2024-07-01 22:21:48 +0200lain`(lain`@user/lain/x-9874679)
2024-07-01 22:22:04 +0200 <tomsmeding> but these dictionaries (the records) are passed around automatically by GHC
2024-07-01 22:22:05 +0200 <mreh> riight
2024-07-01 22:22:20 +0200 <tomsmeding> if you show the Core of a piece of code, you can see them
2024-07-01 22:22:23 +0200 <mreh> so I've read
2024-07-01 22:22:30 +0200 <mreh> okay
2024-07-01 22:22:58 +0200 <tomsmeding> mreh: https://play.haskell.org/saved/aScvorhS press Core and look at the definition for 'foo' (the third in the output)
2024-07-01 22:22:58 +0200 <mreh> I guess this is a consequnce of type erasure?
2024-07-01 22:23:18 +0200 <tomsmeding> it takes 4 arguments: a type (the 'a' type variable), the Eq dictionary for 'a', and 'x' and 'y'
2024-07-01 22:23:58 +0200 <tomsmeding> and in foo's body in Core you can see that it takes the "==" field of that dictionary and applies it to x and y
2024-07-01 22:24:03 +0200mulk(~mulk@p5b2dc1a2.dip0.t-ipconnect.de)
2024-07-01 22:24:33 +0200 <mreh> `== @a_aII`?
2024-07-01 22:24:48 +0200 <tomsmeding> in normal haskell syntax that would be `(==) @a dEq x y`
2024-07-01 22:25:20 +0200 <tomsmeding> i.e. type-apply the `(==)` field name of the Eq dictionary to 'a', use it to get the field out of the record dEq, and apply the value (of type a -> a -> Bool) to x and y
2024-07-01 22:25:50 +0200 <mreh> cooool
2024-07-01 22:25:53 +0200 <mreh> I'm learning core
2024-07-01 22:26:07 +0200 <tomsmeding> I'm not sure I would connect it to type erasure, though I guess one could say that because types are erased at runtime, you can't look up instances from scratch so they have to be passed around explicitly?
2024-07-01 22:26:15 +0200 <tomsmeding> it's cool, isn't it? :)
2024-07-01 22:26:39 +0200 <tomsmeding> so now look back at my expanded versions after "if we make the dictionaries explicit"
2024-07-01 22:27:07 +0200 <tomsmeding> I explicitly wrote those dMonadLogging values there to show what's really going on
2024-07-01 22:27:12 +0200 <tomsmeding> GHC infers them, but they're there
2024-07-01 22:27:44 +0200 <tomsmeding> dMonadLoggingFalse and dMonadLoggingTrue would be top-level constants (if a class is a record type, an instance is a top-level value of that type)
2024-07-01 22:28:11 +0200remedan(~remedan@ip-62-245-108-153.bb.vodafone.cz)
2024-07-01 22:28:16 +0200byorgey(~byorgey@user/byorgey)
2024-07-01 22:28:22 +0200 <mreh> yup
2024-07-01 22:28:36 +0200noumenon(~noumenon@113.51-175-156.customer.lyse.net) (Quit: Leaving)
2024-07-01 22:28:46 +0200mulk(~mulk@p5b2dc1a2.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2024-07-01 22:31:45 +0200bionade24(~quassel@2a03:4000:33:45b::1) (Quit: Apocalypse Incoming!)
2024-07-01 22:32:30 +0200bionade24(~quassel@2a03:4000:33:45b::1)
2024-07-01 22:35:02 +0200 <mreh> it still seems a big magical that the dictionary implicitly finds its way over on the other side of that arrow
2024-07-01 22:35:17 +0200 <tomsmeding> the -> arrow of the case match?
2024-07-01 22:35:20 +0200 <mreh> yeah
2024-07-01 22:35:25 +0200 <tomsmeding> that's type class inference for you
2024-07-01 22:35:26 +0200soverysour(~soverysou@user/soverysour) (Ping timeout: 268 seconds)
2024-07-01 22:35:37 +0200 <tomsmeding> whenever a dictionary is required, ghc looks in the environment to see if there are any suitable ones around
2024-07-01 22:35:51 +0200 <tomsmeding> usually they come from the top level, or from some top-level function applied to some other value
2024-07-01 22:36:35 +0200 <tomsmeding> e.g. if you have 'instance Eq (T a) => Ord (T a) where', then that's a top-level _function_ dOrdT :: EqDict a -> OrdDict a
2024-07-01 22:36:50 +0200 <tomsmeding> but they can also come from the local scope, as you see in your example
2024-07-01 22:37:22 +0200 <tomsmeding> ghc always collects all instances in the environment that match, and if multiple match you get an overlapping instances error
2024-07-01 22:48:04 +0200mulk(~mulk@p5b2dc1a2.dip0.t-ipconnect.de)
2024-07-01 22:50:05 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-07-01 22:53:19 +0200dsrt^(~cd@c-98-242-74-66.hsd1.ga.comcast.net) (Remote host closed the connection)
2024-07-01 22:54:24 +0200waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
2024-07-01 22:56:33 +0200 <Leary> mreh: By the way, "magic by which pattern matching can refine a type" (paraphrasing) is exactly what GADTs provide. E.g. `forall p. p :~: P -> R p` is equivalent to `R P`, and you can witness this from inside it by pattern matching on the argument.
2024-07-01 22:57:25 +0200benkard(~mulk@p5b2dc1a2.dip0.t-ipconnect.de)
2024-07-01 22:57:51 +0200mulk(~mulk@p5b2dc1a2.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2024-07-01 22:57:51 +0200benkardmulk
2024-07-01 23:00:50 +0200euleritian(~euleritia@dynamic-176-007-148-253.176.7.pool.telefonica.de) (Read error: Connection reset by peer)
2024-07-01 23:01:06 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-07-01 23:02:05 +0200benkard(~mulk@p5b2dc1a2.dip0.t-ipconnect.de)
2024-07-01 23:02:39 +0200mulk(~mulk@p5b2dc1a2.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2024-07-01 23:05:38 +0200mulk(~mulk@p5b2dc1a2.dip0.t-ipconnect.de)
2024-07-01 23:06:51 +0200benkard(~mulk@p5b2dc1a2.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2024-07-01 23:10:27 +0200mulk(~mulk@p5b2dc1a2.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2024-07-01 23:12:25 +0200mulk(~mulk@p5b2dc1a2.dip0.t-ipconnect.de)
2024-07-01 23:16:09 +0200benkard(~mulk@p5b2dc1a2.dip0.t-ipconnect.de)
2024-07-01 23:17:22 +0200mulk(~mulk@p5b2dc1a2.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2024-07-01 23:17:23 +0200benkardmulk
2024-07-01 23:27:47 +0200sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2024-07-01 23:32:33 +0200lisbeths(uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2024-07-01 23:38:32 +0200michalz(~michalz@185.246.207.193) (Quit: ZNC 1.9.0 - https://znc.in)
2024-07-01 23:40:16 +0200EvanR(~EvanR@user/evanr) (Quit: Leaving)
2024-07-01 23:41:31 +0200EvanR(~EvanR@user/evanr)
2024-07-01 23:52:46 +0200mreh(~matthew@host86-160-168-12.range86-160.btcentralplus.com) (Ping timeout: 256 seconds)
2024-07-01 23:58:59 +0200Sgeo(~Sgeo@user/sgeo)
2024-07-01 23:59:03 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)