2024/05/14

2024-05-14 00:09:04 +0200sadome(~sadome@user/sadome)
2024-05-14 00:09:05 +0200sadome(~sadome@user/sadome) (Excess Flood)
2024-05-14 00:14:15 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Ping timeout: 255 seconds)
2024-05-14 00:15:32 +0200sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2024-05-14 00:16:04 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf)
2024-05-14 00:18:03 +0200michalz(~michalz@185.246.207.203) (Quit: ZNC 1.8.2 - https://znc.in)
2024-05-14 00:21:34 +0200Sgeo(~Sgeo@user/sgeo)
2024-05-14 00:33:23 +0200yin(~yin@user/zero)
2024-05-14 00:37:54 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com)
2024-05-14 00:39:09 +0200gmg(~user@user/gehmehgeh) (Quit: Leaving)
2024-05-14 00:43:19 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Quit: peterbecich)
2024-05-14 00:43:45 +0200acidjnk_new(~acidjnk@p200300d6e714dc37b9c7c34e6fbc03d6.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2024-05-14 00:44:16 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com)
2024-05-14 00:51:13 +0200Ryan54(~Ryan@2601:602:8b00:b0f0:598b:fb7d:e718:eb36) (Quit: Client closed)
2024-05-14 00:57:23 +0200son0p(~ff@152.203.77.121) (Quit: Leaving)
2024-05-14 01:08:05 +0200L29Ah(~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer)
2024-05-14 01:08:42 +0200L29Ah(~L29Ah@wikipedia/L29Ah)
2024-05-14 01:20:27 +0200causal(~eric@50.35.88.207) (Quit: WeeChat 4.1.1)
2024-05-14 01:24:28 +0200son0p(~ff@152.203.77.121)
2024-05-14 01:34:18 +0200jmdaemon(~jmdaemon@user/jmdaemon)
2024-05-14 01:37:24 +0200dsrt^(~cd@c-98-242-74-66.hsd1.ga.comcast.net)
2024-05-14 01:42:08 +0200Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
2024-05-14 01:43:54 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2024-05-14 01:48:02 +0200yin(~yin@user/zero) (Ping timeout: 252 seconds)
2024-05-14 01:50:00 +0200yin(~yin@user/zero)
2024-05-14 01:56:32 +0200yin(~yin@user/zero) (Ping timeout: 260 seconds)
2024-05-14 01:56:42 +0200mei(~mei@user/mei) (Remote host closed the connection)
2024-05-14 01:57:34 +0200ystael(~ystael@user/ystael) (Ping timeout: 264 seconds)
2024-05-14 01:58:18 +0200yin(~yin@user/zero)
2024-05-14 01:59:06 +0200mei(~mei@user/mei)
2024-05-14 02:02:55 +0200oo_miguel(~Thunderbi@78-11-181-16.static.ip.netia.com.pl) (Ping timeout: 272 seconds)
2024-05-14 02:08:31 +0200xdminsy(~xdminsy@117.147.70.240) (Ping timeout: 246 seconds)
2024-05-14 02:09:21 +0200xdminsy(~xdminsy@117.147.70.240)
2024-05-14 02:11:05 +0200yin(~yin@user/zero) (Quit: leaving)
2024-05-14 02:14:35 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net)
2024-05-14 02:14:38 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Ping timeout: 260 seconds)
2024-05-14 02:16:24 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2024-05-14 02:18:40 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 246 seconds)
2024-05-14 02:30:10 +0200jmdaemon(~jmdaemon@user/jmdaemon) (Ping timeout: 255 seconds)
2024-05-14 02:32:03 +0200califax(~califax@user/califx) (Remote host closed the connection)
2024-05-14 02:34:44 +0200califax(~califax@user/califx)
2024-05-14 03:03:52 +0200hgolden(~hgolden@2603:8000:9d00:3ed1:2678:8497:aa5c:7fa9) (Remote host closed the connection)
2024-05-14 03:08:52 +0200philopsos(~caecilius@user/philopsos) (Ping timeout: 255 seconds)
2024-05-14 03:11:15 +0200hgolden(~hgolden@2603:8000:9d00:3ed1:2678:8497:aa5c:7fa9)
2024-05-14 03:11:57 +0200otto_s(~user@p5de2fd19.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2024-05-14 03:12:09 +0200philopsos1(~caecilius@user/philopsos)
2024-05-14 03:13:32 +0200otto_s(~user@p5de2fc4f.dip0.t-ipconnect.de)
2024-05-14 03:16:41 +0200philopsos1(~caecilius@user/philopsos) (Ping timeout: 256 seconds)
2024-05-14 03:23:11 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 252 seconds)
2024-05-14 03:24:41 +0200jmdaemon(~jmdaemon@user/jmdaemon)
2024-05-14 03:29:36 +0200philopsos1(~caecilius@user/philopsos)
2024-05-14 03:32:26 +0200waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 268 seconds)
2024-05-14 03:34:30 +0200xff0x(~xff0x@2405:6580:b080:900:b7f1:8627:ae1f:1fb0) (Ping timeout: 255 seconds)
2024-05-14 03:55:23 +0200phma(phma@2001:5b0:210b:c738:d0e0:5870:ec8f:f731) (Read error: Connection reset by peer)
2024-05-14 03:55:47 +0200phma(~phma@host-67-44-208-11.hnremote.net)
2024-05-14 03:57:25 +0200Square2(~Square4@user/square)
2024-05-14 04:08:30 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com)
2024-05-14 04:13:47 +0200td_(~td@i53870933.versanet.de) (Ping timeout: 256 seconds)
2024-05-14 04:15:33 +0200td_(~td@i53870907.versanet.de)
2024-05-14 04:18:04 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 268 seconds)
2024-05-14 04:19:41 +0200xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
2024-05-14 04:23:59 +0200jmdaemon(~jmdaemon@user/jmdaemon) (Ping timeout: 264 seconds)
2024-05-14 04:25:48 +0200ddellacosta(~ddellacos@ool-44c73d29.dyn.optonline.net)
2024-05-14 04:36:23 +0200philopsos1(~caecilius@user/philopsos) (Ping timeout: 260 seconds)
2024-05-14 04:42:24 +0200emmanuelux(~emmanuelu@user/emmanuelux) (Quit: au revoir)
2024-05-14 05:19:24 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Remote host closed the connection)
2024-05-14 05:19:33 +0200danza(~francesco@151.57.214.17)
2024-05-14 05:19:44 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com)
2024-05-14 05:31:03 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 255 seconds)
2024-05-14 05:42:27 +0200paddymahoney(~paddymaho@pool-99-250-26-190.cpe.net.cable.rogers.com)
2024-05-14 05:54:05 +0200mei(~mei@user/mei) (Ping timeout: 240 seconds)
2024-05-14 05:55:20 +0200mei(~mei@user/mei)
2024-05-14 05:55:44 +0200yin(~yin@user/zero)
2024-05-14 05:55:47 +0200aforemny_(~aforemny@i59F516F1.versanet.de)
2024-05-14 05:56:22 +0200aforemny(~aforemny@i59F516F4.versanet.de) (Ping timeout: 246 seconds)
2024-05-14 06:00:56 +0200rekahsoft(~rekahsoft@184.148.6.204) (Ping timeout: 256 seconds)
2024-05-14 06:04:48 +0200yin(~yin@user/zero) (Ping timeout: 255 seconds)
2024-05-14 06:05:35 +0200ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2024-05-14 06:06:15 +0200ec(~ec@gateway/tor-sasl/ec)
2024-05-14 06:06:26 +0200yin(~yin@user/zero)
2024-05-14 06:08:46 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com)
2024-05-14 06:16:28 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Remote host closed the connection)
2024-05-14 06:21:18 +0200rosco(~rosco@yp-146-6.tm.net.my)
2024-05-14 06:22:51 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2024-05-14 06:23:41 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2024-05-14 06:37:46 +0200remmie(ianremsen@tilde.team) (Ping timeout: 256 seconds)
2024-05-14 06:39:49 +0200 <cheater> i feel like haskell would be better if arguments were non-positional, i.e. you could supply them in any order
2024-05-14 06:40:14 +0200 <cheater> rarely do functions have the same type multiple times, and when they do it's usually like a binary or ternary function and then you can explicitly order them with a tuple
2024-05-14 06:40:39 +0200 <danza> make a product type for that?
2024-05-14 06:41:56 +0200 <cheater> idk what you're saying
2024-05-14 06:42:23 +0200 <cheater> if you look at type sigs, f :: A -> B -> C is basically a tuple. the only reason it's not exactly the same thing as (A, B, C) is currying.
2024-05-14 06:44:17 +0200 <cheater> so what if we had a type constructor that's like (->) but binds less tightly than (->) and doesn't care about order. say (&). You could write f :: X & A -> B -> C & Y & Z -> Out, and then you could go like f a b c x y z, or f a x b y c z, or f x y z a b c
2024-05-14 06:44:29 +0200 <cheater> whatever's useful
2024-05-14 06:46:16 +0200 <danza> other languages that support out-of-order arguments end up with a syntax similar to { arg = val } like one would easily achieve with a product type
2024-05-14 07:00:59 +0200 <cheater> like what languages are you thinking of
2024-05-14 07:09:14 +0200 <glguy> cheater: that would only make sense in a vary narrow subset of Haskell
2024-05-14 07:09:31 +0200 <cheater> why
2024-05-14 07:09:34 +0200 <glguy> > id succ 10
2024-05-14 07:09:35 +0200 <lambdabot> 11
2024-05-14 07:09:37 +0200 <glguy> :t id
2024-05-14 07:09:38 +0200 <lambdabot> a -> a
2024-05-14 07:10:00 +0200 <glguy> You need to know the order of application to even attempt to type-check an expression
2024-05-14 07:10:08 +0200 <cheater> id only has one argument
2024-05-14 07:10:08 +0200 <glguy> function in haskell *only* have one argument
2024-05-14 07:10:18 +0200 <glguy> but that doesn't mean you can't apply the result as a function
2024-05-14 07:10:21 +0200 <cheater> ok ok
2024-05-14 07:10:29 +0200 <cheater> i see where you're coming from
2024-05-14 07:10:29 +0200 <glguy> all functions have one argument; no functions have two
2024-05-14 07:10:34 +0200 <cheater> but i don't think that's an issue
2024-05-14 07:10:38 +0200mei(~mei@user/mei) (Remote host closed the connection)
2024-05-14 07:11:31 +0200michalz(~michalz@185.246.207.193)
2024-05-14 07:11:59 +0200 <glguy> beyond it simply not working with the way types in Haskell work, it'd be a complete disaster for readability
2024-05-14 07:12:17 +0200 <glguy> now to know what: f x y means, you have to work out the types of f, x, and y before you can know which thing is which
2024-05-14 07:12:30 +0200 <cheater> idk that it would be, people say haskell's syntax is a complete disaster for readability too
2024-05-14 07:12:42 +0200 <cheater> yeah you know that one usually when reading code
2024-05-14 07:12:51 +0200 <cheater> if you lose track of that then your code is too messy anyways
2024-05-14 07:12:55 +0200 <glguy> no, that's not a common take on people who've actually used it
2024-05-14 07:13:03 +0200mei(~mei@user/mei)
2024-05-14 07:13:34 +0200remmie(ianremsen@tilde.team)
2024-05-14 07:13:53 +0200 <cheater> have you used the language i'm describing?
2024-05-14 07:15:20 +0200 <glguy> I would avoid using such a language, but I don't think it exists
2024-05-14 07:15:37 +0200 <cheater> so you're basically the "haskell is unreadable" person
2024-05-14 07:16:28 +0200 <glguy> oh, no
2024-05-14 07:20:40 +0200 <danza> "haskell's syntax is a complete disaster" haha nice joke
2024-05-14 07:21:18 +0200 <danza> "... for readability" that is also a good one
2024-05-14 07:22:03 +0200acidjnk_new(~acidjnk@p200300d6e714dc51e96b24be77fae744.dip0.t-ipconnect.de)
2024-05-14 07:22:07 +0200mei(~mei@user/mei) (Remote host closed the connection)
2024-05-14 07:23:55 +0200mei(~mei@user/mei)
2024-05-14 07:30:03 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2024-05-14 07:30:37 +0200danza(~francesco@151.57.214.17) (Read error: Connection reset by peer)
2024-05-14 07:30:53 +0200danza(~francesco@151.57.195.82)
2024-05-14 07:42:23 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2024-05-14 07:51:08 +0200michalz(~michalz@185.246.207.193) (Quit: ZNC 1.8.2 - https://znc.in)
2024-05-14 07:51:38 +0200euphores(~SASL_euph@user/euphores) (Quit: Leaving.)
2024-05-14 07:52:08 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
2024-05-14 07:52:41 +0200euleritian(~euleritia@dynamic-176-006-192-246.176.6.pool.telefonica.de)
2024-05-14 07:54:06 +0200michalz(~michalz@185.246.207.200)
2024-05-14 07:58:11 +0200danza(~francesco@151.57.195.82) (Ping timeout: 256 seconds)
2024-05-14 08:03:54 +0200 <cheater> yea i know right
2024-05-14 08:04:05 +0200 <cheater> but there are people who *will* say this
2024-05-14 08:04:18 +0200 <cheater> like honestly that's most people who haven't used haskell
2024-05-14 08:19:11 +0200Square2(~Square4@user/square) (Ping timeout: 268 seconds)
2024-05-14 08:26:27 +0200petrichor(~znc-user@user/petrichor)
2024-05-14 08:26:47 +0200Rodney_(~Rodney@176.254.244.83) (Ping timeout: 252 seconds)
2024-05-14 08:27:03 +0200oo_miguel(~Thunderbi@78-11-181-16.static.ip.netia.com.pl)
2024-05-14 08:32:26 +0200iteratee(~kyle@162.218.222.207) (Read error: Connection reset by peer)
2024-05-14 08:32:36 +0200iteratee_(~kyle@162.218.222.207)
2024-05-14 08:33:50 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2024-05-14 08:36:53 +0200kuribas(~user@2a02:1808:8a:fa84:e473:eba8:6b89:265e)
2024-05-14 08:38:55 +0200iteratee_(~kyle@162.218.222.207) (Read error: Connection reset by peer)
2024-05-14 08:39:10 +0200iteratee(~kyle@162.218.222.207)
2024-05-14 08:41:05 +0200philopsos1(~caecilius@user/philopsos)
2024-05-14 08:44:15 +0200rosco(~rosco@yp-146-6.tm.net.my) (Quit: Lost terminal)
2024-05-14 08:44:19 +0200Rodney_(~Rodney@176.254.244.83)
2024-05-14 08:44:52 +0200kuribas(~user@2a02:1808:8a:fa84:e473:eba8:6b89:265e) (Remote host closed the connection)
2024-05-14 08:45:05 +0200kuribas(~user@2a02:1808:8a:fa84:1e15:b436:3fe1:ba71)
2024-05-14 08:46:13 +0200danse-nr3(~danse-nr3@151.57.194.120)
2024-05-14 08:53:57 +0200kuribas(~user@2a02:1808:8a:fa84:1e15:b436:3fe1:ba71) (Ping timeout: 272 seconds)
2024-05-14 08:57:09 +0200euphores(~SASL_euph@user/euphores)
2024-05-14 09:03:41 +0200rvalue(~rvalue@user/rvalue) (Read error: Connection reset by peer)
2024-05-14 09:04:12 +0200rvalue(~rvalue@user/rvalue)
2024-05-14 09:09:12 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-05-14 09:11:12 +0200euleritian(~euleritia@dynamic-176-006-192-246.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
2024-05-14 09:13:21 +0200TheCoffeMaker(~TheCoffeM@user/thecoffemaker) (Ping timeout: 255 seconds)
2024-05-14 09:13:35 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-05-14 09:15:21 +0200TheCoffeMaker(~TheCoffeM@user/thecoffemaker)
2024-05-14 09:16:24 +0200TheCoffeMaker(~TheCoffeM@user/thecoffemaker) (Excess Flood)
2024-05-14 09:16:46 +0200TheCoffeMaker(~TheCoffeM@user/thecoffemaker)
2024-05-14 09:17:17 +0200sord937(~sord937@gateway/tor-sasl/sord937)
2024-05-14 09:18:25 +0200Square2(~Square4@user/square)
2024-05-14 09:21:01 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 255 seconds)
2024-05-14 09:21:14 +0200euleritian(~euleritia@dynamic-176-006-192-246.176.6.pool.telefonica.de)
2024-05-14 09:24:27 +0200ft(~ft@p508db8fc.dip0.t-ipconnect.de) (Quit: leaving)
2024-05-14 09:30:43 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-05-14 09:40:24 +0200gmg(~user@user/gehmehgeh)
2024-05-14 09:47:34 +0200rosco(~rosco@yp-146-6.tm.net.my)
2024-05-14 09:52:07 +0200tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
2024-05-14 09:53:30 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net)
2024-05-14 09:58:38 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-05-14 10:02:41 +0200xdminsy(~xdminsy@117.147.70.240) (Quit: Konversation terminated!)
2024-05-14 10:03:05 +0200xdminsy(~xdminsy@117.147.70.240)
2024-05-14 10:11:49 +0200cfricke(~cfricke@user/cfricke)
2024-05-14 10:12:47 +0200kadir(~kadir@85.103.183.96)
2024-05-14 10:23:23 +0200son0p(~ff@152.203.77.121) (Ping timeout: 252 seconds)
2024-05-14 10:24:01 +0200euleritian(~euleritia@dynamic-176-006-192-246.176.6.pool.telefonica.de) (Ping timeout: 255 seconds)
2024-05-14 10:27:08 +0200econo_(uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
2024-05-14 10:28:30 +0200euleritian(~euleritia@dynamic-176-004-196-081.176.4.pool.telefonica.de)
2024-05-14 10:34:54 +0200chele(~chele@user/chele)
2024-05-14 10:47:11 +0200danse-nr3(~danse-nr3@151.57.194.120) (Ping timeout: 268 seconds)
2024-05-14 10:50:48 +0200danza(~francesco@151.57.194.120)
2024-05-14 10:50:53 +0200xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 252 seconds)
2024-05-14 10:50:53 +0200sawilagar(~sawilagar@user/sawilagar)
2024-05-14 10:53:25 +0200euleritian(~euleritia@dynamic-176-004-196-081.176.4.pool.telefonica.de) (Ping timeout: 256 seconds)
2024-05-14 10:53:34 +0200euleritian(~euleritia@dynamic-176-006-177-053.176.6.pool.telefonica.de)
2024-05-14 10:54:12 +0200danse-nr3(~danse-nr3@151.57.194.120)
2024-05-14 10:57:03 +0200danza(~francesco@151.57.194.120) (Ping timeout: 268 seconds)
2024-05-14 11:00:37 +0200euleritian(~euleritia@dynamic-176-006-177-053.176.6.pool.telefonica.de) (Ping timeout: 272 seconds)
2024-05-14 11:01:16 +0200euleritian(~euleritia@dynamic-176-000-145-069.176.0.pool.telefonica.de)
2024-05-14 11:05:33 +0200rosco(~rosco@yp-146-6.tm.net.my) (Quit: Lost terminal)
2024-05-14 11:05:48 +0200rosco(~rosco@yp-146-6.tm.net.my)
2024-05-14 11:09:52 +0200hseg(~gesh@46.120.21.14)
2024-05-14 11:10:46 +0200 <hseg> Checking for the sake of reproducible builds, is there some way to avoid infecting the executable with the build directory?
2024-05-14 11:11:26 +0200 <hseg> (i'm building with stack)
2024-05-14 11:11:53 +0200 <hseg> (i.e. strings $executable shows references to /home/gesh/.local/share/stack/snapshots/x86_64-linux)
2024-05-14 11:13:23 +0200euleritian(~euleritia@dynamic-176-000-145-069.176.0.pool.telefonica.de) (Read error: Connection reset by peer)
2024-05-14 11:13:40 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-05-14 11:15:37 +0200 <[exa]> hseg: not sure with stack, but I checked a few executables from cabal here and there doesn't seem to be any reference to any local directories
2024-05-14 11:16:03 +0200 <[exa]> hseg: anyway for replroducible builds you might want to have a complete separate clean environment for them, like what debians do with sbuild or so
2024-05-14 11:16:18 +0200 <hseg> oh, definitely
2024-05-14 11:16:39 +0200 <[exa]> actually `sbuild` can build haskelly stacky stuff already so might be the case that reuse is easy there
2024-05-14 11:17:33 +0200 <hseg> wasn't expecting to get fully reproducible builds in one shot, more trying to get closer to reproducibility
2024-05-14 11:17:57 +0200 <hseg> sbuild?
2024-05-14 11:20:16 +0200 <hseg> btw, checking cabal-built ghcid shows such references to build dir
2024-05-14 11:21:06 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 268 seconds)
2024-05-14 11:21:45 +0200 <hseg> ah, I assume you mean https://sbuild.org
2024-05-14 11:22:01 +0200euleritian(~euleritia@dynamic-176-004-151-001.176.4.pool.telefonica.de)
2024-05-14 11:28:33 +0200euleritian(~euleritia@dynamic-176-004-151-001.176.4.pool.telefonica.de) (Read error: Connection reset by peer)
2024-05-14 11:28:50 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-05-14 11:31:50 +0200danse-nr3(~danse-nr3@151.57.194.120) (Read error: Connection reset by peer)
2024-05-14 11:32:55 +0200danse-nr3(~danse-nr3@151.43.144.199)
2024-05-14 11:36:04 +0200__monty__(~toonn@user/toonn)
2024-05-14 11:38:08 +0200deriamis(deriamis@ec2-54-187-167-69.us-west-2.compute.amazonaws.com) (Quit: ZNC - https://znc.in)
2024-05-14 11:38:23 +0200deriamis(deriamis@ec2-54-187-167-69.us-west-2.compute.amazonaws.com)
2024-05-14 11:40:46 +0200 <ski> cheater : <https://ocaml.org/manual/5.2/lablexamples.html>
2024-05-14 11:43:16 +0200 <cheater> yeah that's not really what i'm talking about
2024-05-14 11:43:41 +0200 <ski> it's labelled arguments, which you can provide out of order
2024-05-14 11:43:49 +0200 <cheater> yes. not what i'm talking about
2024-05-14 11:44:05 +0200 <ski> (can't reaally provide them, out of order, without labelling them)
2024-05-14 11:44:25 +0200 <ski> (at least not, if you want the language to be sane)
2024-05-14 11:44:48 +0200 <cheater> i'll disagree with that last one
2024-05-14 11:45:04 +0200 <cheater> i'm talking about the fact that most often with functions in haskell you either have arguments that all have different types, or just a small amount amount of arguments of equal types, which can be represented as a tuple (or, uncurried, with -> )
2024-05-14 11:45:23 +0200 <cheater> at that point it's easy to figure out which piece goes in which hole
2024-05-14 11:45:23 +0200 <ski> what if the types of `x',`y',`z' are the same as the types of `a',`b',`c' (respectively) ?
2024-05-14 11:45:35 +0200 <danse-nr3> still with this stuff? What is wrong with my suggestion to use a product type?
2024-05-14 11:45:42 +0200 <cheater> i specifically typed out their types ski
2024-05-14 11:45:53 +0200 <ski> not in the application, you did not
2024-05-14 11:46:10 +0200 <cheater> it was an example in the context of what i said before about the type signature
2024-05-14 11:46:27 +0200 <cheater> it was all part of the same example
2024-05-14 11:47:23 +0200 <ski> `x',`y',`z',`a',`b',`c' here are meta-variables, standing for arbitrary expressions. there's no a-priori associatiation of these, to the types `X',`Y',`Z',`A',`B',`C' .. if you mean just actual variable names `x',`y',`z',`a',`b',`c' .. then that's very limited, doesn't scale, isn't really composable
2024-05-14 11:47:39 +0200 <cheater> stop being confused on purpose
2024-05-14 11:47:56 +0200 <ski> Hanlon's razor
2024-05-14 11:48:02 +0200 <cheater> no
2024-05-14 11:48:24 +0200 <ski> i genuienly don't know how you are envisioning this to work
2024-05-14 11:48:39 +0200 <danse-nr3> huh i knew it as occam's razor... or is it different?
2024-05-14 11:48:46 +0200 <ski> no, it's not the same thing
2024-05-14 11:48:51 +0200 <danse-nr3> v
2024-05-14 11:49:14 +0200 <ski> "Don't attribute to malice, what can be adequately explained by ignorance/stupidity."
2024-05-14 11:49:59 +0200 <danse-nr3> i remember occam's as "the simplest explanation is also the most likely" ... but it is lost in the mists of time. Maybe that was misreferenced
2024-05-14 11:50:23 +0200 <ski> perhaps i'd understand it better, cheater, if you made a simple prototype type checker (and maybe parser, if you wish)
2024-05-14 11:50:45 +0200 <ski> danse-nr3 : yea, that's basically that one
2024-05-14 11:50:54 +0200 <lortabac> IIRC generic-lens does something similar to what cheater is proposing
2024-05-14 11:51:10 +0200 <lortabac> you can select a record field by type if there is no ambiguity
2024-05-14 11:51:21 +0200 <ski> danse-nr3 : <https://en.wikipedia.org/wiki/Hanlon's_razor>
2024-05-14 11:51:26 +0200 <danse-nr3> dunno, i just use product types and that gives me 99% of the functionality
2024-05-14 11:51:52 +0200 <danse-nr3> one can also have f (default'{ arg = type })
2024-05-14 11:52:01 +0200 <lortabac> I think it would be nice to have this feature as an IDE action, but not baked in the language
2024-05-14 11:52:40 +0200 <lortabac> if you swap two arguments by mistake and it's obvious enough, an IDE may suggest inverting them
2024-05-14 11:52:52 +0200 <ski> anyway, using records (or labelled multi-arity functions, if available) is one workable approach. what OCaml does, labelled curried arguments, also works
2024-05-14 11:53:16 +0200 <ski> yes
2024-05-14 11:55:09 +0200 <ncf> the unordered arguments thing sounds like it would also be garbage wrt type inference
2024-05-14 11:56:18 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.2.1)
2024-05-14 11:58:04 +0200random-jellyfish(~developer@user/random-jellyfish) (Ping timeout: 260 seconds)
2024-05-14 11:59:55 +0200 <ski> like, if you can elaborate this in a workable fashion, i'd be interested in taking a look .. i'm just saying i'm not seeing how it could work, in a way i'd consider reasonable
2024-05-14 12:00:21 +0200 <ski> but i don't want to discourage you from pondering it, if you want to
2024-05-14 12:05:30 +0200yin(~yin@user/zero) (Ping timeout: 268 seconds)
2024-05-14 12:06:07 +0200 <cheater> you're right, hold up, let me implement a parser and a type checker real quick
2024-05-14 12:06:56 +0200yin(~yin@user/zero)
2024-05-14 12:14:15 +0200titibandit(~titibandi@user/titibandit)
2024-05-14 12:15:08 +0200 <probie> I wouldn't mind such behaviour to allow elision of names in a system where all arguments are named arguments
2024-05-14 12:22:13 +0200bo_(~bo@198.red-83-56-252.dynamicip.rima-tde.net)
2024-05-14 12:24:40 +0200_bo(~bo@198.red-83-56-252.dynamicip.rima-tde.net) (Ping timeout: 260 seconds)
2024-05-14 12:26:56 +0200ubert(~Thunderbi@2a02:8109:ab8a:5a00:d77a:cc4d:acdd:ee1e)
2024-05-14 12:32:11 +0200son0p(~ff@186.121.14.247)
2024-05-14 12:38:30 +0200rdcdr(~rdcdr@user/rdcdr) (Quit: ZNC 1.8.2+deb3.1 - https://znc.in)
2024-05-14 12:38:57 +0200rdcdr(~rdcdr@user/rdcdr)
2024-05-14 12:56:16 +0200just_started_has(~just_star@2401:4900:1cc9:315f:ac5a:52e5:ce3f:eca3)
2024-05-14 12:56:21 +0200 <just_started_has> hello
2024-05-14 12:56:39 +0200 <just_started_has> i write test :: [Int] -> [Int]
2024-05-14 12:56:39 +0200 <just_started_has> in main.hs
2024-05-14 12:56:40 +0200 <just_started_has> then write test in the ghci of main.hs
2024-05-14 12:56:40 +0200 <just_started_has> it says Variable not in scope
2024-05-14 12:56:41 +0200 <just_started_has> why is that ,
2024-05-14 12:56:41 +0200 <just_started_has> i started haskell 4 hours ago , please forgive this noob question if it is
2024-05-14 12:57:14 +0200 <just_started_has> the doc says variable not in scope only happens when it is not declared but it is
2024-05-14 12:58:08 +0200 <int-e> You can't have just the type signature in a module; you have to have an accompanying definition.
2024-05-14 12:58:23 +0200 <cheater> show us a screenshot of your terminal
2024-05-14 12:59:39 +0200 <int-e> `ghci main.hs` doesn't execute main.hs as a script. It loads it as a Haskell module.
2024-05-14 12:59:48 +0200 <int-e> Or, well, tries to.
2024-05-14 13:01:19 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds)
2024-05-14 13:01:36 +0200 <just_started_has> one second
2024-05-14 13:02:15 +0200tcard(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Remote host closed the connection)
2024-05-14 13:02:35 +0200tcard(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
2024-05-14 13:03:43 +0200 <just_started_has> https://drive.google.com/file/d/1yTimzu4dD3rL4GZKVTsXlJEDbaU4tXvO/view?usp=drive_link
2024-05-14 13:03:47 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2024-05-14 13:05:07 +0200 <ncf> how are you starting ghci? if you run `ghci main.hs` you should get a nice helpful error about `test` lacking an accompanying binding
2024-05-14 13:05:52 +0200 <just_started_has> i just quit and startedd , yes it does give an error
2024-05-14 13:08:55 +0200 <just_started_has> thx
2024-05-14 13:09:08 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2024-05-14 13:09:20 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 268 seconds)
2024-05-14 13:10:00 +0200euleritian(~euleritia@dynamic-176-004-151-001.176.4.pool.telefonica.de)
2024-05-14 13:19:49 +0200danse-nr3(~danse-nr3@151.43.144.199) (Ping timeout: 268 seconds)
2024-05-14 13:20:55 +0200yin(~yin@user/zero) (Quit: leaving)
2024-05-14 13:30:20 +0200 <ski> just_started_has : you can use `:reload' (`:r' for short) to make the interactor reload the files that have changed
2024-05-14 13:31:04 +0200 <just_started_has> yes i just realized that , thanks !!
2024-05-14 13:31:21 +0200 <just_started_has> i thought that it reloadds automatically ? , can it ?
2024-05-14 13:36:09 +0200Maxdamantus(~Maxdamant@user/maxdamantus) (Ping timeout: 268 seconds)
2024-05-14 13:36:18 +0200 <ski> you can set up `:e' (`:edit') to launch (or connect to) your editor, in which case when that command terminates, it'll automatically do a `:r'
2024-05-14 13:36:37 +0200Maxdamantus(~Maxdamant@user/maxdamantus)
2024-05-14 13:36:37 +0200 <ski> otherwise, you have to do `:r' manually, after saving
2024-05-14 13:37:53 +0200 <ski> (or you could launch your interactor inside your editor, possibly)
2024-05-14 13:40:26 +0200 <just_started_has> i am using the vim
2024-05-14 13:40:32 +0200 <just_started_has> i think it can
2024-05-14 13:40:51 +0200philopsos1(~caecilius@user/philopsos) (Ping timeout: 272 seconds)
2024-05-14 13:41:49 +0200yin(~yin@user/zero)
2024-05-14 13:44:50 +0200 <just_started_has> ski    thanks  !! this works
2024-05-14 13:45:34 +0200 <ski> just_started_has : <https://downloads.haskell.org/ghc/latest/docs/users_guide/ghci.html#ghci-cmd-:edit>
2024-05-14 13:46:31 +0200yin(~yin@user/zero) (Client Quit)
2024-05-14 13:47:26 +0200ddellacosta(~ddellacos@ool-44c73d29.dyn.optonline.net) (Ping timeout: 252 seconds)
2024-05-14 13:48:11 +0200euphores(~SASL_euph@user/euphores) (Ping timeout: 268 seconds)
2024-05-14 13:48:18 +0200hseg(~gesh@46.120.21.14) (Read error: Connection reset by peer)
2024-05-14 13:54:44 +0200euphores(~SASL_euph@user/euphores)
2024-05-14 14:03:26 +0200danse-nr3(~danse-nr3@151.57.181.243)
2024-05-14 14:08:46 +0200ocra8(ocra8@user/ocra8) (Quit: WeeChat 4.2.2)
2024-05-14 14:14:25 +0200euleritian(~euleritia@dynamic-176-004-151-001.176.4.pool.telefonica.de) (Read error: Connection reset by peer)
2024-05-14 14:14:42 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-05-14 14:30:53 +0200bliminse(~bliminse@user/bliminse) (Quit: leaving)
2024-05-14 14:32:59 +0200TheCoffeMaker(~TheCoffeM@user/thecoffemaker) (Ping timeout: 264 seconds)
2024-05-14 14:35:38 +0200bliminse(~bliminse@user/bliminse)
2024-05-14 14:35:41 +0200TheCoffeMaker(~TheCoffeM@user/thecoffemaker)
2024-05-14 14:48:51 +0200xff0x(~xff0x@ai113088.d.east.v6connect.net)
2024-05-14 15:07:57 +0200jcarpenter2(~lol@2603:3016:1e01:b940:9e16:4716:cb0d:9d39) (Read error: Connection reset by peer)
2024-05-14 15:08:16 +0200jcarpenter2(~lol@2603:3016:1e01:b940:9e16:4716:cb0d:9d39)
2024-05-14 15:08:39 +0200cfricke(~cfricke@user/cfricke) (Ping timeout: 268 seconds)
2024-05-14 15:16:53 +0200ystael(~ystael@user/ystael)
2024-05-14 15:23:30 +0200lockna(~lockna@2a01:4f8:10b:14f1::2) (Quit: ZNC 1.8.2 - https://znc.in)
2024-05-14 15:23:44 +0200lockna(~lockna@static.139.16.130.94.clients.your-server.de)
2024-05-14 15:25:33 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2024-05-14 15:26:53 +0200img(~img@user/img)
2024-05-14 15:30:33 +0200esnos(~user@194.29.137.22)
2024-05-14 15:31:50 +0200just_started_has(~just_star@2401:4900:1cc9:315f:ac5a:52e5:ce3f:eca3) (Quit: Client closed)
2024-05-14 15:35:48 +0200thaliaa(uid486183@id-486183.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2024-05-14 15:42:13 +0200 <esnos> Hi, I want to use haskell-mode with corfu as completion backend, does anybody have working setup. I customized '(tab-always-indent 'complete) and tab completion works in other modes, for example in python, but in haskell mode it just intends and I need to use M-tab which is uncomfortable considering I use tab for everything else. I also saw that in other modes completion-at-point is set to C-M-i, which corfu uses I think, but in
2024-05-14 15:42:13 +0200 <esnos> haskell-mode it isn't set to anything, so maybe this is why there are problems.
2024-05-14 15:43:12 +0200 <esnos> Sorry for double message, I started using irc yesterday
2024-05-14 15:47:17 +0200 <danse-nr3> this question is quite emacs-specific esnos, i am afraid we might not be that knowledgeable about that. Anyways usually for developing people use Haskell Language Server as a backend... i am not sure about which emacs client to recommend, i think there are a couple of main ones
2024-05-14 15:50:30 +0200yin(~yin@user/zero)
2024-05-14 15:50:56 +0200 <esnos> I use eglot with hls, but to show possible completions you need company or eglot
2024-05-14 15:52:35 +0200 <danse-nr3> oh then i don't know what corfu is for
2024-05-14 15:56:45 +0200cfricke(~cfricke@user/cfricke)
2024-05-14 16:02:57 +0200 <stefan-__> esnos: I use company-mode and have the following binding in "haskell-mode-map": "("C-SPC" . 'company-complete)" -- additionally I disabled auto-showing the company completions: "(setq company-idle-delay nil)"
2024-05-14 16:10:30 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 255 seconds)
2024-05-14 16:11:11 +0200euleritian(~euleritia@dynamic-176-004-151-001.176.4.pool.telefonica.de)
2024-05-14 16:14:24 +0200petrichor(~znc-user@user/petrichor) (Quit: ZNC 1.8.2 - https://znc.in)
2024-05-14 16:15:34 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net)
2024-05-14 16:18:15 +0200hseg(~gesh@46.120.21.14)
2024-05-14 16:20:23 +0200petrichor(~znc-user@user/petrichor)
2024-05-14 16:24:37 +0200ocra8(ocra8@user/ocra8)
2024-05-14 16:35:49 +0200Benzi-Junior(~BenziJuni@232-148-209-31.dynamic.hringdu.is) (Quit: ZNC 1.8.2 - https://znc.in)
2024-05-14 16:36:06 +0200Benzi-Junior(~BenziJuni@232-148-209-31.dynamic.hringdu.is)
2024-05-14 16:43:04 +0200 <esnos> stefan-__, will try similar approach
2024-05-14 16:44:23 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.2.1)
2024-05-14 16:48:40 +0200dtman34(~dtman34@2601:447:d001:ed50:f596:52e1:73ca:629d) (Quit: ZNC 1.8.2+deb3.1 - https://znc.in)
2024-05-14 16:49:00 +0200dtman34(~dtman34@c-75-72-163-222.hsd1.mn.comcast.net)
2024-05-14 16:58:08 +0200cfricke(~cfricke@user/cfricke) (Ping timeout: 260 seconds)
2024-05-14 17:01:16 +0200chele(~chele@user/chele) (Remote host closed the connection)
2024-05-14 17:17:23 +0200random-jellyfish(~developer@ip4-89-238-215-238.euroweb.ro)
2024-05-14 17:17:24 +0200random-jellyfish(~developer@ip4-89-238-215-238.euroweb.ro) (Changing host)
2024-05-14 17:17:24 +0200random-jellyfish(~developer@user/random-jellyfish)
2024-05-14 17:19:19 +0200yin(~yin@user/zero) (Ping timeout: 256 seconds)
2024-05-14 17:21:16 +0200 <stefan-__> esnos: here is my config for eglot and lsp-mode (currently in use): https://gist.github.com/dozed/9b70668200876179b2a5381c53683ca7
2024-05-14 17:24:56 +0200danse-nr3(~danse-nr3@151.57.181.243) (Ping timeout: 268 seconds)
2024-05-14 17:36:16 +0200 <johnw> Part of the answer to my "show" lens question is `re _Show`, which understandably is only valid as a Getter or Fold. There is no valid traversal unless I place an unchecked constraint on the mutation of "no modification that aren't numbers".
2024-05-14 17:38:24 +0200euphores(~SASL_euph@user/euphores) (Quit: Leaving.)
2024-05-14 17:39:48 +0200ph88(~ph88@2a02:8109:9e26:c800:36fd:400b:5478:66f9)
2024-05-14 17:40:04 +0200Square2(~Square4@user/square) (Ping timeout: 255 seconds)
2024-05-14 17:40:23 +0200 <ph88> does someone know a map that can only be read and written to and not delete items?
2024-05-14 17:43:49 +0200 <ncf> (->) ?
2024-05-14 17:45:58 +0200 <ph88> ?
2024-05-14 17:46:25 +0200yin(~yin@user/zero)
2024-05-14 17:51:38 +0200tv(~tv@user/tv) (Quit: derp)
2024-05-14 17:51:55 +0200tv(~tv@user/tv)
2024-05-14 17:56:30 +0200Square(~Square@user/square)
2024-05-14 17:57:23 +0200 <ncf> or search hackage for "total map" if you want something efficient
2024-05-14 17:57:54 +0200 <ncf> but k -> v supports lookup and insertion and not deleting items
2024-05-14 18:01:51 +0200 <EvanR> peanut gallery here, but if you emulate a map that is not total with total map by having the default value be Nothing, then you can still "delete" by "inserting nothing"
2024-05-14 18:02:09 +0200 <EvanR> ph88's plans are ruined
2024-05-14 18:03:47 +0200 <ph88> empire collapsed
2024-05-14 18:08:00 +0200todi(~todi@p57803331.dip0.t-ipconnect.de)
2024-05-14 18:13:35 +0200Square(~Square@user/square) (Ping timeout: 256 seconds)
2024-05-14 18:18:35 +0200yin(~yin@user/zero) (Ping timeout: 252 seconds)
2024-05-14 18:22:02 +0200yin(~yin@user/zero)
2024-05-14 18:27:11 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 256 seconds)
2024-05-14 18:32:25 +0200rvalue(~rvalue@user/rvalue) (Read error: Connection reset by peer)
2024-05-14 18:32:29 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 240 seconds)
2024-05-14 18:32:54 +0200rvalue(~rvalue@user/rvalue)
2024-05-14 18:36:02 +0200tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net)
2024-05-14 18:36:38 +0200euleritian(~euleritia@dynamic-176-004-151-001.176.4.pool.telefonica.de) (Read error: Connection reset by peer)
2024-05-14 18:36:55 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-05-14 18:39:33 +0200demon-cat(~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net) (Ping timeout: 268 seconds)
2024-05-14 18:39:45 +0200demon-cat(~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net)
2024-05-14 18:40:49 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net)
2024-05-14 18:42:01 +0200ubert(~Thunderbi@2a02:8109:ab8a:5a00:d77a:cc4d:acdd:ee1e) (Remote host closed the connection)
2024-05-14 18:42:25 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com)
2024-05-14 18:49:34 +0200Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi)
2024-05-14 18:52:31 +0200qhong(~qhong@DN160vrd000d6kpg009l6c0000fj.stanford.edu) (Read error: Connection reset by peer)
2024-05-14 18:55:13 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 255 seconds)
2024-05-14 18:56:07 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 255 seconds)
2024-05-14 19:03:37 +0200infinity0(~infinity0@pwned.gg) (Remote host closed the connection)
2024-05-14 19:04:23 +0200ph88(~ph88@2a02:8109:9e26:c800:36fd:400b:5478:66f9) (Ping timeout: 260 seconds)
2024-05-14 19:04:29 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com)
2024-05-14 19:05:43 +0200infinity0(~infinity0@pwned.gg)
2024-05-14 19:09:37 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net)
2024-05-14 19:11:11 +0200rosco(~rosco@yp-146-6.tm.net.my) (Quit: Lost terminal)
2024-05-14 19:17:59 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds)
2024-05-14 19:21:51 +0200pavonia(~user@user/siracusa) (Quit: K-Lined)
2024-05-14 19:22:56 +0200sawilagar(~sawilagar@user/sawilagar) (Ping timeout: 252 seconds)
2024-05-14 19:27:44 +0200johnw(~johnw@69.62.242.138) (Read error: Connection reset by peer)
2024-05-14 19:28:32 +0200johnw(~johnw@69.62.242.138)
2024-05-14 19:31:45 +0200cfricke(~cfricke@user/cfricke)
2024-05-14 19:41:45 +0200wootehfoot(~wootehfoo@user/wootehfoot)
2024-05-14 19:44:38 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Ping timeout: 260 seconds)
2024-05-14 19:46:16 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2024-05-14 19:46:23 +0200euphores(~SASL_euph@user/euphores)
2024-05-14 19:55:47 +0200demon-cat(~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net) (Ping timeout: 272 seconds)
2024-05-14 19:57:35 +0200random-jellyfish(~developer@user/random-jellyfish) (Ping timeout: 252 seconds)
2024-05-14 19:57:40 +0200hseg(~gesh@46.120.21.14) (Quit: WeeChat 4.2.2)
2024-05-14 19:59:15 +0200ft(~ft@p508db8fc.dip0.t-ipconnect.de)
2024-05-14 20:00:00 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 255 seconds)
2024-05-14 20:04:22 +0200 <cheater> i wish cabal would allow me module prefixes
2024-05-14 20:05:04 +0200 <cheater> so like i wouldn't have to do vim test/MyCompany/MyProduct/MyProject/Test/Actual/Hierarchy/Here.hs
2024-05-14 20:05:19 +0200 <cheater> instead i'd do vim test/Actual/Hierarchy/Here.hs
2024-05-14 20:06:06 +0200gmg(~user@user/gehmehgeh) (Ping timeout: 260 seconds)
2024-05-14 20:06:26 +0200 <cheater> while the module in Here.hs is still declared as "module MyCompany.MyProduct.MyProject.Test.Actual.Hierarchy.Here where"
2024-05-14 20:07:45 +0200gmg(~user@user/gehmehgeh)
2024-05-14 20:09:16 +0200 <cheater> the part that goes MyCompany/MyProduct/MyProject/ actually doesn't mean anything because it in fact doesn't change in relevant monorepi
2024-05-14 20:09:34 +0200 <cheater> it's just annoying to type out
2024-05-14 20:11:15 +0200 <cheater> so i guess what i really want is for cabal to give me module *file path* prefixes
2024-05-14 20:17:26 +0200ocra8(ocra8@user/ocra8) (Quit: WeeChat 4.2.2)
2024-05-14 20:20:16 +0200 <yin> cheater: just use fzf?
2024-05-14 20:20:20 +0200 <yin> that's not a cabal problem
2024-05-14 20:20:39 +0200 <cheater> overly long paths are a problem
2024-05-14 20:20:40 +0200 <cheater> imo
2024-05-14 20:20:50 +0200 <cheater> and haskell code bases tend to adopt those
2024-05-14 20:21:00 +0200 <cheater> like the whole path to this file would be
2024-05-14 20:21:30 +0200 <yin> why exactly are long paths a problem?
2024-05-14 20:21:52 +0200 <cheater> it would be /home/user/work/my-company/my-company-monorepo/my-product-my-project-package-name/test/MyCompany/MyProduct/MyProject/Test/Actual/Hierarchy/Here.hs
2024-05-14 20:22:01 +0200 <cheater> they're a problem because repeating the same stuff all the time is annoying
2024-05-14 20:22:44 +0200 <cheater> look at how many times stuff repeats just in that path
2024-05-14 20:22:57 +0200demon-cat(~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net)
2024-05-14 20:23:20 +0200 <cheater> usually you start your work by cd'ing to my-company-monorepo
2024-05-14 20:23:31 +0200 <yin> cheater: i literally would type at the terminal `br<CR>Here<CR>' and open that file in vim
2024-05-14 20:23:32 +0200 <cheater> so you skip all of that
2024-05-14 20:23:38 +0200 <yin> it's 8 key presses
2024-05-14 20:23:44 +0200 <cheater> right but that doesn't work if you already have vim
2024-05-14 20:23:55 +0200 <cheater> idk what br is, what is it?
2024-05-14 20:24:12 +0200 <yin> broot
2024-05-14 20:24:20 +0200 <cheater> i am broot?
2024-05-14 20:24:24 +0200 <yin> you can use any fuzzy finder, like fzf
2024-05-14 20:24:36 +0200 <cheater> right
2024-05-14 20:24:44 +0200 <yin> vim works with fzf too
2024-05-14 20:24:57 +0200 <yin> or just use :find
2024-05-14 20:25:05 +0200 <cheater> yeah but then it's yet another level of complexity to think about
2024-05-14 20:25:13 +0200 <cheater> when doing a trivial thing like opening a file
2024-05-14 20:25:22 +0200 <cheater> like making every single thing more complex isn't the solution
2024-05-14 20:25:50 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net)
2024-05-14 20:26:00 +0200 <cheater> that's like having to perform a song every time you want a sip of water from your cup
2024-05-14 20:26:11 +0200cfricke(~cfricke@user/cfricke) (Ping timeout: 256 seconds)
2024-05-14 20:26:13 +0200 <mauke> symlinks, lol
2024-05-14 20:26:18 +0200 <yin> the directory paradigm isn't the problem here, it's how poorly you choose to navigate it
2024-05-14 20:26:27 +0200 <cheater> well it's not about poor navigation really
2024-05-14 20:26:44 +0200 <cheater> it's about the fact that as programmers we are eager to accept all those "you can just"s
2024-05-14 20:27:10 +0200 <cheater> and then 5 years down the line you're doing nothing but "you can just"s
2024-05-14 20:27:14 +0200 <yin> cheater: the fact that fuzzy finders exist prove that as programmers we didn't accept anything
2024-05-14 20:27:17 +0200demon-cat(~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net) (Ping timeout: 240 seconds)
2024-05-14 20:27:32 +0200 <yin> you're supposed to automate your tasks, that's why computers are programmable
2024-05-14 20:27:40 +0200 <cheater> in your paradigm fuzzy finders need to be invoked every single time you want to open a file
2024-05-14 20:27:53 +0200 <cheater> in my suggestion, they don't. you don't need to do anything every time you want to open a file
2024-05-14 20:28:07 +0200 <yin> nothing stops you from having a single root directory with no subfolders where all your files live
2024-05-14 20:28:44 +0200 <cheater> well, it does, because people still want to be able to discriminate code local to a company or to a project from code that is not such
2024-05-14 20:28:49 +0200 <yin> or a single .hs file
2024-05-14 20:29:11 +0200 <yin> cheater: so you want others to craft a solution to your measure?
2024-05-14 20:29:11 +0200 <cheater> yes. if we want to speak nonsense, nothing's stopping me from rewriting everything in cobol
2024-05-14 20:29:25 +0200 <cheater> yes. specifically you
2024-05-14 20:29:30 +0200 <cheater> i will be very unhappy if it's anyone else
2024-05-14 20:29:43 +0200 <cheater> lol
2024-05-14 20:29:44 +0200 <yin> i don't mean to be rude
2024-05-14 20:30:04 +0200ph88(~ph88@2a02:8109:9e26:c800:50c2:30a5:77d8:a72f)
2024-05-14 20:30:23 +0200 <yin> what would your solution to your problem be?
2024-05-14 20:30:38 +0200 <ph88> is there another way to write code for what i'm trying to do? https://play.haskell.org/saved/d94XX4WG
2024-05-14 20:30:55 +0200 <mauke> https://howfuckedismydatabase.com/nosql/
2024-05-14 20:31:04 +0200target_i(~target_i@user/target-i/x-6023099)
2024-05-14 20:31:49 +0200 <ncf> ph88: i can't guess what you're trying to do from just this
2024-05-14 20:31:52 +0200 <mauke> ph88: I can't tell what you're trying to do
2024-05-14 20:32:00 +0200 <mauke> I'm as confused as the compiler
2024-05-14 20:32:26 +0200 <cheater> yin: in the cabal file, under "test-suite test", have "hs-source-dir-prefix: MyCompany/MyProduct/MyProject/Test"
2024-05-14 20:32:46 +0200 <cheater> one line in the cabal file saves a million lines typed over the lifespan of a programmer
2024-05-14 20:33:42 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2024-05-14 20:34:32 +0200 <ph88> mauke, i'm trying to have a function that given a data which implements a typeclass can return another data that implements the same type class
2024-05-14 20:34:40 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2024-05-14 20:35:17 +0200 <mauke> what does that even mean
2024-05-14 20:35:29 +0200 <mauke> this feels like an XY problem
2024-05-14 20:35:39 +0200 <yin> cheater: i think that would introduce a lot of problems to other unsuspecting users
2024-05-14 20:35:41 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Ping timeout: 240 seconds)
2024-05-14 20:35:47 +0200 <yin> i'm sure you can see that
2024-05-14 20:36:22 +0200 <ph88> mauke, ncf rust has something similar https://doc.rust-lang.org/rust-by-example/trait/dyn.html how to explain ?? in OO languages you return a type that implements an interface
2024-05-14 20:36:24 +0200 <cheater> blinded by greed, i am unable to :)
2024-05-14 20:36:35 +0200 <ncf> sounds like existentials
2024-05-14 20:36:53 +0200 <cheater> ph88: you're talking about uh, factories
2024-05-14 20:37:03 +0200 <cheater> ph88: you don't want those here
2024-05-14 20:37:16 +0200 <ncf> what
2024-05-14 20:37:40 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf)
2024-05-14 20:37:42 +0200 <cheater> but what you're really trying to say is something like myfunction :: (MyClass a) => a -> SomeOtherType -> a
2024-05-14 20:37:58 +0200 <cheater> this type signature tells you that the return type, a, will implement MyClass
2024-05-14 20:38:14 +0200 <mauke> data Box = forall a. (Animal a) => MkBox a
2024-05-14 20:38:15 +0200 <yin> cheater: if you're using vim and think 'apt i fzf' is adding too much complexity to your life, the :find and :vim commands are your friends
2024-05-14 20:38:17 +0200 <ph88> cheater, `getSomething :: forall b. Something b => a -> Maybe b`
2024-05-14 20:38:25 +0200demon-cat(~demon-cat@dund-15-b2-v4wan-169642-cust1347.vm6.cable.virginm.net)
2024-05-14 20:38:39 +0200 <cheater> ph88: yes, that is something that is done
2024-05-14 20:38:46 +0200 <mauke> hmm, actually ...
2024-05-14 20:38:52 +0200 <cheater> ph88: the question is why you want that
2024-05-14 20:39:13 +0200 <mauke> data Box (c :: Constraint) = forall a. (c a) => MkBox a -- is that legal?
2024-05-14 20:39:32 +0200 <cheater> yin: what is 'apt i fzf'?
2024-05-14 20:39:37 +0200 <mauke> ah, no
2024-05-14 20:39:46 +0200 <mauke> it would have to be (c :: Type -> Constraint) or something
2024-05-14 20:39:52 +0200 <ph88> i have a typeclass for database entities, the functions are enough to save each entity separately. But i need a function to get the relations (dependencies) from one entity to another.
2024-05-14 20:40:15 +0200 <ph88> I don't want to hardcode my schema as haskell types, please don't suggest it
2024-05-14 20:40:32 +0200 <yin> cheater: apt is a popular package manager used on debian distros. that command installs fzf from the official repositories. you should of course use the appropriate command for your system
2024-05-14 20:40:58 +0200 <ph88> mauke, what's that, existential types?
2024-05-14 20:41:01 +0200 <mauke> yes
2024-05-14 20:41:24 +0200 <ph88> do i need GADT for existential types ?
2024-05-14 20:41:32 +0200 <mauke> I don't think so
2024-05-14 20:41:48 +0200 <ncf> no
2024-05-14 20:41:49 +0200 <cheater> yin: that is not the only line one has to type to use fzf for opening every single file.
2024-05-14 20:41:54 +0200 <yin> no, but GADTs imply existential types i'm pretty sure
2024-05-14 20:42:54 +0200 <ph88> data Box (c :: Type -> Constraint) = forall a. (c a) => MkBox a like this ?
2024-05-14 20:43:03 +0200 <cheater> yin: what i'm trying to do here is to contrast for you, on one side, typing one line into a cabal file and that's it, and on the other side, having to invoke an extra tool every single of the thousands of thousands of times you want to do something related to file paths
2024-05-14 20:43:34 +0200 <ncf> ph88: i still have no idea what you're trying to do
2024-05-14 20:44:41 +0200 <raehik> How can I get GHCi to pretty print my TypeErrors on :k! invocations ? It just prints `= (TypeError ...)` :(
2024-05-14 20:46:55 +0200 <ph88> ncf, similar to this https://stackoverflow.com/questions/5699427/what-does-it-mean-for-a-function-to-return-an-interface i don't know how to explain it better. It's an opaque piece of data other than you know what interface methods you can call on it. In haskell it's an opaque piece of data other than you know which typeclass methods you can call on it
2024-05-14 20:47:12 +0200 <yin> cheater: now see it from my side, the side of a person who is trying to help another person solve a problem: you can add a field to a cabal file that will cause inumerous headaches for everyone when normal paths don't work until you find that there's some obscure line hidden in the middle of a project's cabal OR type fzf instead of cd (i actually have it aliased to just 'z')
2024-05-14 20:47:33 +0200 <ncf> ph88: that describes an existential type, but i can't tell if it's what you actually need
2024-05-14 20:47:59 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Ping timeout: 264 seconds)
2024-05-14 20:48:14 +0200 <ph88> ncf, i think i need existential types. I only used them once before, still not entirely sure how they work
2024-05-14 20:49:19 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf)
2024-05-14 20:49:20 +0200 <yin> anyways, it's one of many possible solutions for your problem. i don't think an ecosystem's consistency should suffer by trying to solve problems beyond its scope
2024-05-14 20:49:44 +0200 <mauke> ph88: https://play.haskell.org/saved/9CUzFQLl
2024-05-14 20:50:02 +0200 <cheater> cabal files already have lots of such advanced flags. there's no reason to turn our language into the Fischer Price version of itself just because of some conceived notion of "this might be difficult to explain to a newbie"
2024-05-14 20:50:19 +0200 <yin> cheater: are you using vim or neovim?
2024-05-14 20:50:47 +0200 <cheater> vim
2024-05-14 20:50:50 +0200 <yin> cheater: i feel like you're being purposefuly obtuse. this might be a good place to end the conversation
2024-05-14 20:50:58 +0200 <cheater> not at all
2024-05-14 20:51:31 +0200 <yin> i don't think i can help you
2024-05-14 20:51:43 +0200 <cheater> yes, i agree on that
2024-05-14 20:53:55 +0200 <ph88> mauke, Thanks ! i will try this
2024-05-14 20:55:31 +0200 <mauke> if you want to go mad with power, there is also https://hackage.haskell.org/package/base-4.19.1.0/docs/Data-Dynamic.html
2024-05-14 21:00:46 +0200 <raehik> do type families trip up TypeError printing for `:k!`...?
2024-05-14 21:01:23 +0200 <raehik> > :k! TypeError (Text "test")
2024-05-14 21:01:24 +0200 <lambdabot> <hint>:1:1: error: parse error on input ‘:’
2024-05-14 21:01:34 +0200 <raehik> understandable
2024-05-14 21:06:34 +0200 <yin> mauke: 0.234 doesn't seem random at all
2024-05-14 21:07:32 +0200 <yin> have you considered 0.37 ?
2024-05-14 21:07:46 +0200 <mauke> blame the original rust code :-)
2024-05-14 21:16:53 +0200greenflower(~greenflow@103.191.25.63)
2024-05-14 21:17:02 +0200sord937(~sord937@gateway/tor-sasl/sord937) (Ping timeout: 260 seconds)
2024-05-14 21:18:24 +0200sord937(~sord937@gateway/tor-sasl/sord937)
2024-05-14 21:22:05 +0200 <ski> ph88 : "i'm trying to have a function that given a data which implements a typeclass can return another data that implements the same type class" -- sounds like you want `getSomething :: a -> Maybe (exists b. Something b *> b)', not `getSomething :: forall b. Something b => a -> Maybe b', then
2024-05-14 21:23:53 +0200 <ph88> ski, what does *> mean in a type ?
2024-05-14 21:24:13 +0200 <ski> "provide this constraint along with a value of this other type"
2024-05-14 21:24:42 +0200 <ski> ("provide", as opposed to "expect")
2024-05-14 21:24:47 +0200 <ph88> can't find it in the manual
2024-05-14 21:24:59 +0200 <ski> it's not in the manual, it's pseudo-Haskell
2024-05-14 21:25:00 +0200 <EvanR> it's skiskell
2024-05-14 21:25:16 +0200 <ski> it's (imho) a useful way to talk about these matters
2024-05-14 21:25:46 +0200 <ski> (before getting into the details of how to actually effect the desired semantics with current-day Haskell)
2024-05-14 21:26:04 +0200 <ph88> i'm interested in those details :p
2024-05-14 21:27:01 +0200 <ski> a value of type `Cxt => T' is a value such that, if the user/caller/consumer provides evidence of the constraint `Cxt' to it, it will give you back a value of type `T'
2024-05-14 21:28:07 +0200 <ski> a value of type `Cxt *> T' is a value that bundles evidence for a constraint `Cxt' together with a value `T', allowing the user/caller/consumer to both use the evidence, as well as the value
2024-05-14 21:28:56 +0200 <ski> in the dictionary-passing implementation of type classes, `Cxt => T' gets translated to `DictCxt -> T', a function that accepts a dictionary of method implementations, and computing a value of type `T'
2024-05-14 21:29:16 +0200 <ph88> is that dictionary visible in Core ?
2024-05-14 21:29:29 +0200 <ski> while, in a dictionary-passing implementation, `Cxt *> T' would get translated to `(DictCxt,T)', a *pair* of the dictionary and the value
2024-05-14 21:31:52 +0200gorignak(~gorignak@user/gorignak)
2024-05-14 21:32:02 +0200 <ski> (`forall a.' vs. `exists a.' is also conceptually similar. the first depends on the caller/user/consumer to specify the actual type to use in place of `a', while the second lets the callee/implementor/producer pick the type to use for `a'. so the former is kinda like a function that gets a type `a' at run-time, while the latter is kinda like a pair of a type `a' and a value. in a type-erasure implementation,
2024-05-14 21:32:08 +0200 <ski> types don't exist at run-time, but one can imagine implementations that passes around evidence for types at run-time, e.g. to allow arbitrary unboxing, or for GC purposes)
2024-05-14 21:34:05 +0200 <ski> in any case, it's useful to be aware that `(exists a. ..a..) -> ...' is logically equivalent to `forall a. (..a.. -> ...)', as well as `(Cxt *> T) => U' being equivalent to `Cxt => (T -> U)' (both of which are a kind of currying/uncurrying, kinda)
2024-05-14 21:34:23 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com)
2024-05-14 21:34:42 +0200 <ncf> (Cxt *> T) -> U
2024-05-14 21:34:49 +0200 <ski> .. this is what justifies using the keyword `forall' above, in that `Box' datatype, to encode *existentials*
2024-05-14 21:34:59 +0200 <ski> er, right, ty
2024-05-14 21:35:33 +0200 <ski> data Box c = forall a. (c a) => MkBox a
2024-05-14 21:35:37 +0200 <ski> means that we have
2024-05-14 21:35:52 +0200 <ski> MkBox :: forall a. c a => a -> Box c
2024-05-14 21:35:54 +0200 <ski> or
2024-05-14 21:36:04 +0200 <ski> MkBox :: forall a. (c a => (a -> Box c))
2024-05-14 21:36:13 +0200 <ski> to be explicit, which is equivalent to
2024-05-14 21:36:24 +0200 <ski> MkBox :: forall a. ((c a *> a) -> Box c)
2024-05-14 21:36:29 +0200 <ski> which is equivalent to
2024-05-14 21:36:35 +0200 <tomsmeding> % :k! TypeError (Text "test") -- raehik
2024-05-14 21:36:35 +0200 <yahb2> <interactive>:1:1: error: test
2024-05-14 21:36:48 +0200 <ski> MkBox :: (exists a. (c a *> a)) -> Box c
2024-05-14 21:37:13 +0200 <ski> meaning that a value of type `Box c' amounts to ("wraps") a value of type `exists a. c a *> a'
2024-05-14 21:37:41 +0200ent(entgod@kapsi.fi) (Ping timeout: 240 seconds)
2024-05-14 21:37:51 +0200ent(entgod@kapsi.fi)
2024-05-14 21:39:14 +0200 <raehik> tomsmeding: aha ty
2024-05-14 21:39:25 +0200 <raehik> % type family Id a where Id a = a
2024-05-14 21:39:25 +0200 <yahb2> <interactive>:79:1: error: ; • Illegal family declaration for ‘Id’ ; Enable TypeFamilies to allow indexed type families ; • In the type family declaration for ‘Id’
2024-05-14 21:39:44 +0200 <raehik> oh well I can't show you what I mean xd but if you now wrap the above :k! invocation in Id, it fails
2024-05-14 21:39:55 +0200ocra8(ocra8@user/ocra8)
2024-05-14 21:40:02 +0200 <raehik> (by fail I mean doesn't print the type error properly)
2024-05-14 21:40:19 +0200 <tomsmeding> % :set -XTypeFamilies
2024-05-14 21:40:19 +0200 <yahb2> <no output>
2024-05-14 21:40:26 +0200 <tomsmeding> % type family Id a where Id a = a
2024-05-14 21:40:26 +0200 <yahb2> <no output>
2024-05-14 21:40:35 +0200 <ski> (this is *one* way to express/encode an existential. there is also another common way, which is sometimes preferable, which is based on a logical equivalence between `T' and `forall o. (T -> o) -> o')
2024-05-14 21:40:35 +0200 <tomsmeding> % :k! Id (TypeError (Text "test"))
2024-05-14 21:40:35 +0200 <yahb2> <interactive>:1:1: error: test
2024-05-14 21:41:04 +0200 <raehik> thanks! interesting maybe it changed in GHC 9.8 (I know they constantly fiddle with :k and :k!)
2024-05-14 21:41:11 +0200 <[exa]> dmj`: for the evaluator I meant basically this https://gitea.blesmrt.net/exa/uskel/
2024-05-14 21:42:12 +0200 <raehik> hmm I simply don't get the same output on GHC 9.6 or 9.8
2024-05-14 21:42:27 +0200 <tomsmeding> if I'm not mistaken yahb2 is on 9.4.8
2024-05-14 21:42:34 +0200 <tomsmeding> maybe it regressed!
2024-05-14 21:42:41 +0200 <ph88> thank you ski :)
2024-05-14 21:43:03 +0200 <ski> ph88 : .. i could go on, but perhaps this is enough, for the time being
2024-05-14 21:43:12 +0200 <ph88> yes it's enough, i can study it
2024-05-14 21:43:29 +0200 <raehik> tomsmeding: my 9.4.8 still prints `= (TypeError ...)` :'(
2024-05-14 21:44:06 +0200 <tomsmeding> hm it does
2024-05-14 21:45:22 +0200 <tomsmeding> (why does ghci not have a :version command or something)
2024-05-14 21:45:55 +0200 <raehik> I can work around this by reifying, but it means I can't do super simple type-level evaluation failure examples :(
2024-05-14 21:46:38 +0200 <tomsmeding> % :k! Id (TypeError (Text "test"))
2024-05-14 21:46:38 +0200 <yahb2> Id (TypeError (Text "test")) :: k ; = (TypeError ...)
2024-05-14 21:46:41 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2024-05-14 21:46:44 +0200 <tomsmeding> I :q'd and did it again
2024-05-14 21:46:53 +0200euleritian(~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
2024-05-14 21:46:54 +0200 <tomsmeding> there was some state that made it work somehow
2024-05-14 21:47:01 +0200 <tomsmeding> but the state is gone now :D
2024-05-14 21:47:21 +0200 <raehik> XD
2024-05-14 21:51:07 +0200waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
2024-05-14 21:51:53 +0200 <tomsmeding> raehik: I re-ran all commands that could possibly be relevant in yahb2's history in a ghci shell and it still doesn't work
2024-05-14 21:53:05 +0200 <tomsmeding> raehik: works on ghc 9.0 and 9.2 xD
2024-05-14 21:53:06 +0200 <raehik> hahahahahaha good stuff
2024-05-14 21:53:11 +0200 <tomsmeding> fails from 9.4 on
2024-05-14 21:53:15 +0200 <raehik> ahhhh there it is
2024-05-14 21:53:44 +0200thaliaa(uid486183@id-486183.uxbridge.irccloud.com)
2024-05-14 21:54:03 +0200 <raehik> alas my 9.2 doesn't work either bu
2024-05-14 21:54:14 +0200 <raehik> *but I'm not too worried
2024-05-14 21:55:21 +0200 <tomsmeding> raehik: https://paste.tomsmeding.com/QzNahvGW
2024-05-14 21:55:23 +0200 <tomsmeding> ¯\_(ツ)_/¯
2024-05-14 21:56:07 +0200 <ncf> the ski existential lecture has taken place
2024-05-14 21:56:21 +0200 <ski> where ?
2024-05-14 21:56:27 +0200 <ncf> right here!
2024-05-14 21:56:37 +0200skilooks around, confusedly
2024-05-14 21:56:50 +0200 <ncf> you barely missed it
2024-05-14 21:57:11 +0200 <raehik> tomsmeding: oh yep that works on 9.2. but my non-contrived example (that goes thru lots of type families) doesn't xd
2024-05-14 21:57:16 +0200 <tomsmeding> ah :)
2024-05-14 21:57:25 +0200 <tomsmeding> yeah I've always found :k! to be a bit unstable
2024-05-14 21:57:28 +0200 <tomsmeding> unfortunatelt
2024-05-14 21:57:31 +0200 <tomsmeding> -y
2024-05-14 21:58:19 +0200jespada(~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) (Quit: Textual IRC Client: www.textualapp.com)
2024-05-14 21:58:56 +0200 <raehik> thx for the help my docs will benefit from knowing this!
2024-05-14 21:59:53 +0200 <tomsmeding> % :set -XTypeApplications
2024-05-14 21:59:53 +0200 <yahb2> <no output>
2024-05-14 22:00:01 +0200 <tomsmeding> % Proxy @(Id (TypeError (Text "test")))
2024-05-14 22:00:02 +0200 <yahb2> <interactive>:17:1: error: Data constructor not in scope: Proxy
2024-05-14 22:00:05 +0200 <tomsmeding> % import Data.Proxy
2024-05-14 22:00:05 +0200 <yahb2> <no output>
2024-05-14 22:00:07 +0200 <tomsmeding> % Proxy @(Id (TypeError (Text "test")))
2024-05-14 22:00:07 +0200 <yahb2> <interactive>:21:1: error: ; • test ; • When checking the inferred type ; it :: forall {k}. Proxy (TypeError ...)
2024-05-14 22:00:15 +0200 <tomsmeding> raehik: perhaps this works?
2024-05-14 22:01:36 +0200 <tomsmeding> using Proxy means that 1. the type can be whatever, and 2. it will always show if the type evaluates to something sensible
2024-05-14 22:01:46 +0200 <tomsmeding> but to get it to show it has to typecheck, hence you have to evaluate the type
2024-05-14 22:04:00 +0200jmdaemon(~jmdaemon@user/jmdaemon)
2024-05-14 22:06:13 +0200sp1ff(~user@c-24-21-45-157.hsd1.wa.comcast.net) (Remote host closed the connection)
2024-05-14 22:07:53 +0200 <raehik> tomsmeding: oh nice catch. I had managed to write a similar definition that somehow did not evaluate the type, so was thinking I needed something more in depth
2024-05-14 22:08:39 +0200 <tomsmeding> raehik: notable is that :t'ing that doesn't work, you actually have to try to show the Proxy
2024-05-14 22:22:10 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 268 seconds)
2024-05-14 22:22:42 +0200cayley5(~cayley5@user/phileasfogg) (Quit: Ping timeout (120 seconds))
2024-05-14 22:23:04 +0200cayley5(~cayley5@user/phileasfogg)
2024-05-14 22:29:13 +0200greenflower(~greenflow@103.191.25.63) (Quit: Client closed)
2024-05-14 22:34:09 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net)
2024-05-14 22:34:53 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 240 seconds)
2024-05-14 22:35:06 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2024-05-14 22:36:05 +0200jmdaemon(~jmdaemon@user/jmdaemon) (Ping timeout: 240 seconds)
2024-05-14 22:52:16 +0200sawilagar(~sawilagar@user/sawilagar)
2024-05-14 23:00:05 +0200yin(~yin@user/zero) (Ping timeout: 240 seconds)
2024-05-14 23:03:53 +0200Moyst(~moyst@user/moyst) (Ping timeout: 272 seconds)
2024-05-14 23:05:19 +0200Moyst(~moyst@user/moyst)
2024-05-14 23:06:07 +0200oo_miguel(~Thunderbi@78-11-181-16.static.ip.netia.com.pl) (Ping timeout: 260 seconds)
2024-05-14 23:07:04 +0200yin(~yin@user/zero)
2024-05-14 23:08:37 +0200euphores(~SASL_euph@user/euphores) (Quit: Leaving.)
2024-05-14 23:11:23 +0200ph88(~ph88@2a02:8109:9e26:c800:50c2:30a5:77d8:a72f) (Remote host closed the connection)
2024-05-14 23:11:28 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-05-14 23:14:42 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2024-05-14 23:17:12 +0200euphores(~SASL_euph@user/euphores)
2024-05-14 23:18:32 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2024-05-14 23:22:04 +0200machinedgod(~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 255 seconds)
2024-05-14 23:23:27 +0200causal(~eric@50.35.88.207)
2024-05-14 23:25:25 +0200esnos(~user@194.29.137.22) (Remote host closed the connection)
2024-05-14 23:26:01 +0200target_i(~target_i@user/target-i/x-6023099) (Quit: leaving)
2024-05-14 23:34:23 +0200jmdaemon(~jmdaemon@user/jmdaemon)
2024-05-14 23:35:41 +0200kadir(~kadir@85.103.183.96) (Quit: WeeChat 4.2.2)
2024-05-14 23:36:38 +0200barak(~barak@2a0d:6fc2:68c1:7200:3cf2:a87d:a02b:3e21)
2024-05-14 23:45:16 +0200Sgeo(~Sgeo@user/sgeo)