2021/12/05

2021-12-05 00:00:32 +0100 <juri_> grr. infinite type error. oh, fun.
2021-12-05 00:02:21 +0100fabfianda(~fabfianda@net-109-115-246-237.cust.vodafonedsl.it) (Read error: Connection reset by peer)
2021-12-05 00:03:39 +0100fabfianda(~fabfianda@net-109-115-246-237.cust.vodafonedsl.it)
2021-12-05 00:04:16 +0100debdut(~debdut@115.187.40.134)
2021-12-05 00:04:52 +0100 <juri_> oh. remove the definitions, and it's all happy.
2021-12-05 00:04:55 +0100 <juri_> crud.
2021-12-05 00:06:16 +0100lavaman(~lavaman@98.38.249.169)
2021-12-05 00:07:24 +0100debdut(~debdut@115.187.40.134) (Client Quit)
2021-12-05 00:08:12 +0100debdut(~debdut@115.187.40.134)
2021-12-05 00:08:34 +0100mc47(~mc47@xmonad/TheMC47) (Quit: Leaving)
2021-12-05 00:11:05 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2021-12-05 00:12:32 +0100 <EvanR> an infinite error you say
2021-12-05 00:12:36 +0100 <EvanR> > fix error
2021-12-05 00:12:37 +0100 <lambdabot> "*Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *Ex...
2021-12-05 00:12:57 +0100debdut(~debdut@115.187.40.134) (Client Quit)
2021-12-05 00:14:05 +0100yauhsien(~yauhsien@61-231-32-247.dynamic-ip.hinet.net)
2021-12-05 00:14:15 +0100CiaoSen(~Jura@p200300c9570204002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2021-12-05 00:14:25 +0100pavonia(~user@user/siracusa)
2021-12-05 00:16:12 +0100debdut(~debdut@115.187.40.134)
2021-12-05 00:16:17 +0100rusty(~rustyboy@2a02:2f0e:5610:ab00:b16b:f583:26df:4061) (Remote host closed the connection)
2021-12-05 00:16:32 +0100 <hololeap> there's a potential semigroup on (Bool, a) where it stops at (True, a) and ignores any farther arguments. is there a name for this?
2021-12-05 00:17:24 +0100curiousgay(~curiousga@77-120-141-90.kha.volia.net)
2021-12-05 00:18:27 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
2021-12-05 00:18:39 +0100yauhsien(~yauhsien@61-231-32-247.dynamic-ip.hinet.net) (Ping timeout: 252 seconds)
2021-12-05 00:19:23 +0100xff0x(~xff0x@2001:1a81:53e7:c700:da53:be98:ac38:235d) (Ping timeout: 252 seconds)
2021-12-05 00:20:01 +0100xff0x(~xff0x@2001:1a81:53e7:c700:4988:289c:a66b:6fe)
2021-12-05 00:20:33 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-12-05 00:22:07 +0100 <hololeap> kind of a hybrid between First and Any
2021-12-05 00:23:04 +0100 <EvanR> by just mapping to First you don't need to answer this xD
2021-12-05 00:26:04 +0100 <EvanR> is there a way to "stick an a" on any semigroup like that and have it make sense... I guess not
2021-12-05 00:26:36 +0100 <EvanR> there's Tagged but that's a phantom
2021-12-05 00:28:03 +0100 <hololeap> that's true, I could foldMap (f :: a -> First a)
2021-12-05 00:29:45 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 00:30:04 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 00:30:24 +0100 <EvanR> was thinking (Bool,a) -> First a
2021-12-05 00:30:38 +0100 <EvanR> oh, tuple foldable
2021-12-05 00:30:49 +0100 <maerwald> "lol" </> "/bar" -> "/bar" -- another bug on windows :p
2021-12-05 00:31:37 +0100 <EvanR> no laughing on windows 👔
2021-12-05 00:32:06 +0100 <maerwald> "/bar" on windows is equivalent to "bar", so the result should be "lol\\bar"
2021-12-05 00:32:43 +0100zebrag(~chris@user/zebrag) (Remote host closed the connection)
2021-12-05 00:36:19 +0100zebrag(~chris@user/zebrag)
2021-12-05 00:36:48 +0100debdut(~debdut@115.187.40.134) (Quit: debdut)
2021-12-05 00:38:28 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 00:38:46 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 00:39:08 +0100 <juri_> windows. nevermore.
2021-12-05 00:40:20 +0100 <sm> listening to a recent SPJ podcast interview, I was reminded that in a sense, it's Windows users that have paid for Haskell
2021-12-05 00:41:42 +0100 <juri_> good. getting something good from evil does not mean you owe fealty to evil. you should congratulate those who held the line against evil, and move on.
2021-12-05 00:41:45 +0100 <maerwald> they never paid me any money
2021-12-05 00:42:12 +0100 <sm> microsoft paid SPJ (at least) to do whatever he wanted (GHC maintenance) for years
2021-12-05 00:42:20 +0100 <EvanR> surprised to see accursedUnutterablePerformIO in latest bytestring code xD
2021-12-05 00:42:29 +0100ss4(~wootehfoo@user/wootehfoot) (Quit: Leaving)
2021-12-05 00:42:31 +0100 <EvanR> thought that was censored a while back
2021-12-05 00:42:38 +0100johnw(~johnw@2607:f6f0:3004:1:c8b4:50ff:fef8:6bf0) (Quit: ZNC - http://znc.in)
2021-12-05 00:42:45 +0100 <sm> microsoft's money came from Windows users. Therefore, we should kind of thank windows users once in a while
2021-12-05 00:43:06 +0100 <EvanR> anyway, is there a sane way to fold over 2 bytes at a time
2021-12-05 00:43:46 +0100vgtw(~vgtw@c-2359205c.07-348-756d651.bbcust.telenor.se) (Quit: ZNC - https://znc.in)
2021-12-05 00:45:37 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 00:45:54 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 00:46:38 +0100 <juri_> sm: windows users don't donate to microsoft. they pay, or they can't use their computers. thanking someone for being a victim is not healthy.
2021-12-05 00:47:32 +0100cowgirl(~coderobe@archlinux/trusteduser/coderobe)
2021-12-05 00:47:36 +0100cowgirl(~coderobe@archlinux/trusteduser/coderobe) (Killed (K-Lined))
2021-12-05 00:48:32 +0100 <EvanR> I'm a windows user and I didn't pay
2021-12-05 00:48:46 +0100 <EvanR> only occasionally I can't read whatever is behind the watermark
2021-12-05 00:49:13 +0100 <EvanR> ghcup on windows works great thanks for that
2021-12-05 00:49:36 +0100vgtw(~vgtw@c-2359205c.07-348-756d651.bbcust.telenor.se)
2021-12-05 00:49:41 +0100alx741(~alx741@186.178.108.253) (Ping timeout: 256 seconds)
2021-12-05 00:49:45 +0100axeman(~quassel@2a02:8109:a3c0:b10:7b24:ebdc:13ed:79b5)
2021-12-05 00:50:02 +0100 <maerwald[m]> EvanR: I accept bitcoin
2021-12-05 00:50:51 +0100 <maerwald[m]> ADA is too low right now :p
2021-12-05 00:52:40 +0100 <geekosaur> microsoft's money didn't come from windows users. it came from *office* users
2021-12-05 00:53:08 +0100vicfred(~vicfred@user/vicfred) (Quit: Leaving)
2021-12-05 00:54:53 +0100namkeleser(~namkelese@101.175.128.51)
2021-12-05 00:54:59 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-05 00:56:39 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 00:56:56 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 00:57:05 +0100ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Read error: No route to host)
2021-12-05 00:57:35 +0100ezzieyguywuf(~Unknown@user/ezzieyguywuf)
2021-12-05 01:00:17 +0100pfurla(~pfurla@201.17.118.230) (Quit: gone to sleep. ZZZzzz…)
2021-12-05 01:01:11 +0100Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.)
2021-12-05 01:03:11 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 01:03:30 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 01:05:20 +0100wootehfoot(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2021-12-05 01:07:09 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 01:07:28 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 01:07:38 +0100maroloccio(~marolocci@151.53.155.184)
2021-12-05 01:09:18 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 01:09:36 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 01:09:45 +0100pfurla(~pfurla@2804:14d:5c81:4104:9dad:b7eb:58e3:98e6)
2021-12-05 01:11:25 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 01:11:42 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 01:11:43 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 01:12:01 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 01:14:56 +0100jgeerds(~jgeerds@55d4ac73.access.ecotel.net) (Ping timeout: 245 seconds)
2021-12-05 01:16:15 +0100curiousgay(~curiousga@77-120-141-90.kha.volia.net) (Ping timeout: 256 seconds)
2021-12-05 01:16:15 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Ping timeout: 256 seconds)
2021-12-05 01:22:49 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 252 seconds)
2021-12-05 01:23:38 +0100alx741(~alx741@186.178.108.253)
2021-12-05 01:26:29 +0100xff0x(~xff0x@2001:1a81:53e7:c700:4988:289c:a66b:6fe) (Ping timeout: 252 seconds)
2021-12-05 01:26:47 +0100pfurla(~pfurla@2804:14d:5c81:4104:9dad:b7eb:58e3:98e6) (Quit: gone to sleep. ZZZzzz…)
2021-12-05 01:27:14 +0100xff0x(~xff0x@2001:1a81:53e7:c700:1510:f8b4:a5f5:28f)
2021-12-05 01:29:14 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-12-05 01:29:14 +0100pfurla(~pfurla@201.17.118.230)
2021-12-05 01:34:15 +0100acidjnk_new(~acidjnk@p200300d0c7271e5135c37e9089e8a354.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2021-12-05 01:35:23 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2021-12-05 01:36:10 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-12-05 01:36:41 +0100chenqisu1(~chenqisu1@183.217.200.156)
2021-12-05 01:40:36 +0100bollu(uid233390@id-233390.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2021-12-05 01:45:43 +0100madjestic(~madjestic@88-159-247-120.fixed.kpn.net) (Ping timeout: 256 seconds)
2021-12-05 01:47:07 +0100 <arahael> ^^ that.
2021-12-05 01:48:03 +0100mvk(~mvk@2607:fea8:5cdd:f000::9788)
2021-12-05 01:59:06 +0100 <yin> why is GeneralizedNewtypeDeriving not allowed in Safe Haskell?
2021-12-05 02:01:46 +0100burnsidesLlama(~burnsides@dhcp168-020.wadham.ox.ac.uk) (Remote host closed the connection)
2021-12-05 02:03:45 +0100 <geekosaur> https://stackoverflow.com/questions/17137111/why-isnt-generalizednewtypederiving-a-safe-haskell
2021-12-05 02:04:15 +0100 <geekosaur> includes not only an explanation but also a link to a ghc ticket with examples of why it's unsafe
2021-12-05 02:08:14 +0100retro_(~retro@97e2ba2e.skybroadband.com)
2021-12-05 02:09:58 +0100 <geekosaur> from what I just read, the original concerns were mostly addressed with the roles system but it also brought in new questions
2021-12-05 02:10:59 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-12-05 02:11:00 +0100 <int-e> Well with GND using `coerce` nowadays it /should/ be safe.
2021-12-05 02:11:31 +0100 <geekosaur> https://mail.haskell.org/pipermail/haskell-cafe/2015-April/118970.html ff
2021-12-05 02:11:52 +0100retroid_(~retro@97e2ba2e.skybroadband.com) (Ping timeout: 268 seconds)
2021-12-05 02:11:55 +0100 <geekosaur> apparently there's still some thorny questions
2021-12-05 02:12:29 +0100hololeap(~hololeap@user/hololeap) (Excess Flood)
2021-12-05 02:12:35 +0100retroid_(~retro@97e2ba2e.skybroadband.com)
2021-12-05 02:13:06 +0100retro_(~retro@97e2ba2e.skybroadband.com) (Ping timeout: 268 seconds)
2021-12-05 02:13:27 +0100 <int-e> and the exactl meaning of "safe"
2021-12-05 02:13:38 +0100 <int-e> is still unclear
2021-12-05 02:14:01 +0100hololeap(~hololeap@user/hololeap)
2021-12-05 02:14:40 +0100 <int-e> But thanks, I guess "coerce breaks abstraction via newtype" is also the reason why Data.Coerce is marked unsafe.
2021-12-05 02:16:49 +0100vgtw(~vgtw@c-2359205c.07-348-756d651.bbcust.telenor.se) (Quit: ZNC - https://znc.in)
2021-12-05 02:16:54 +0100maroloccio(~marolocci@151.53.155.184) (Quit: WeeChat 3.0)
2021-12-05 02:17:06 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-12-05 02:17:27 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2021-12-05 02:19:36 +0100maroloccio(~marolocci@151.53.155.184)
2021-12-05 02:19:46 +0100maroloccio(~marolocci@151.53.155.184) (Client Quit)
2021-12-05 02:20:08 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-12-05 02:20:15 +0100maroloccio(~marolocci@151.53.155.184)
2021-12-05 02:22:50 +0100vgtw(~vgtw@c-2359205c.07-348-756d651.bbcust.telenor.se)
2021-12-05 02:29:56 +0100vgtw(~vgtw@c-2359205c.07-348-756d651.bbcust.telenor.se) (Quit: ZNC - https://znc.in)
2021-12-05 02:33:16 +0100vgtw(~vgtw@c-2359205c.07-348-756d651.bbcust.telenor.se)
2021-12-05 02:44:10 +0100 <yin> geekosaur: thanks
2021-12-05 02:46:42 +0100 <yin> i wish i could have Safe and add an exception. like {-# UnsafeException trace #-}
2021-12-05 02:46:47 +0100axeman(~quassel@2a02:8109:a3c0:b10:7b24:ebdc:13ed:79b5) (Ping timeout: 252 seconds)
2021-12-05 02:46:50 +0100abrantesasf(~abrantesa@187.36.170.211)
2021-12-05 02:47:53 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds)
2021-12-05 02:48:37 +0100 <geekosaur> reexport trace from a module marked Trusted?
2021-12-05 02:51:42 +0100 <geekosaur> …hm, how does that even work with modern stack/cabal? trust is marked in the package database, which is synthetic
2021-12-05 02:52:10 +0100 <yin> i'm getting "incompatible Safe Haskell flags! (Safe, Trustworthy)
2021-12-05 02:52:21 +0100 <yin> i'm doing something wrong i think
2021-12-05 02:52:30 +0100 <geekosaur> right, that module cannot be marked Safe
2021-12-05 02:52:48 +0100 <geekosaur> if it were then it wouldn't be allowed to import trace
2021-12-05 02:53:13 +0100 <yin> hmm
2021-12-05 02:53:24 +0100jmorris(uid433911@id-433911.hampstead.irccloud.com)
2021-12-05 02:53:34 +0100 <geekosaur> alternatively I suppose you could mark Debug.Trace itself as Trustworthy
2021-12-05 02:53:46 +0100 <geekosaur> but that might be going farther than you want
2021-12-05 02:54:10 +0100 <yin> if i add Safe to default-extensions in my .cabal file, does that mean that all submodules are marked as safe?
2021-12-05 02:55:39 +0100 <yin> is it a stupid thing to add Safe in default-extensions even?
2021-12-05 02:55:42 +0100 <geekosaur> yes, if I understand "submodule" correctly. (hierarchical modules aren't, really, they're just an organizational aid for people)
2021-12-05 02:55:57 +0100 <geekosaur> I think most people would avoid that, yes
2021-12-05 02:56:11 +0100 <yin> ok that makes sense
2021-12-05 02:56:17 +0100 <geekosaur> in part because of what int-e said earlier: "safe" is not well defined at present
2021-12-05 02:57:26 +0100 <geekosaur> as best I can tell, it is intended to mean "cannot be used to define unsafeCoerce" — but that's already true of Debug.Trace, so it should be at least Trustworthy
2021-12-05 02:57:59 +0100 <geekosaur> which is why "Safe Haskell" is confusing and largely avoided; it's inconsistent
2021-12-05 03:01:19 +0100 <yin> i think i remember a nice enough system from rust (?) where you marked individual functions as "trust me, i'm being responsible with {unsafe method}"
2021-12-05 03:04:59 +0100 <EvanR> a nice sentiment
2021-12-05 03:06:59 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-05 03:06:59 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-05 03:06:59 +0100wroathe(~wroathe@user/wroathe)
2021-12-05 03:07:18 +0100 <yin> :P
2021-12-05 03:10:59 +0100retro_(~retro@97e2ba2e.skybroadband.com)
2021-12-05 03:13:23 +0100Midjak(~Midjak@may53-1-78-226-116-92.fbx.proxad.net) (Quit: This computer has gone to sleep)
2021-12-05 03:14:46 +0100retroid_(~retro@97e2ba2e.skybroadband.com) (Ping timeout: 268 seconds)
2021-12-05 03:15:16 +0100 <geekosaur> well, actually there are other problems. like iirc the reason for Debug.Trace not being Trustworthy is it's left to the developer to decide what is Trustworthy or not
2021-12-05 03:15:29 +0100retroid_(~retro@97e2ba2e.skybroadband.com)
2021-12-05 03:15:35 +0100 <geekosaur> but then with base any module you mark Trustworthy becomes Trustworthy everywhere
2021-12-05 03:15:48 +0100 <geekosaur> when you might want it for only one stack/cabal project
2021-12-05 03:16:00 +0100retro_(~retro@97e2ba2e.skybroadband.com) (Ping timeout: 268 seconds)
2021-12-05 03:16:07 +0100 <geekosaur> which is a downside of storing Trustworthy in the package db
2021-12-05 03:17:03 +0100 <geekosaur> also, hm. the other Debug.Trace functions don't expose IO in any way so they are fine, but I haven't vetted traceIO
2021-12-05 03:17:37 +0100 <geekosaur> it may be fine if the only use of IO is sequencing, but it may not
2021-12-05 03:17:51 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:f5ec:bb0e:161e:528b)
2021-12-05 03:19:00 +0100hololeap(~hololeap@user/hololeap) (Read error: Connection reset by peer)
2021-12-05 03:19:05 +0100xff0x(~xff0x@2001:1a81:53e7:c700:1510:f8b4:a5f5:28f) (Ping timeout: 268 seconds)
2021-12-05 03:19:28 +0100xff0x(~xff0x@2001:1a81:53e7:c700:5d29:4d4d:a0f8:12e7)
2021-12-05 03:19:44 +0100hololeap(~hololeap@user/hololeap)
2021-12-05 03:19:55 +0100 <geekosaur> also: if the package db for a stack/cabal project is created once for the project and retained, such that you could mark modules Trustworthy and have it stick, you now have additional metadata that's not part of the project definition (cabal files, stack.yaml/cabal.project, etc.)
2021-12-05 03:20:45 +0100 <geekosaur> so if you duplicate that project or transport it somewhere else or nuke and regenerate the package db, you have to remember to mark modules as Trustworthy again
2021-12-05 03:22:47 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:f5ec:bb0e:161e:528b) (Ping timeout: 268 seconds)
2021-12-05 03:24:04 +0100 <geekosaur> I'd be interested in hearing from sm or sclv about that one
2021-12-05 03:25:37 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-05 03:25:39 +0100neurocyte0132889(~neurocyte@user/neurocyte) (Ping timeout: 252 seconds)
2021-12-05 03:26:32 +0100 <sm> no real insight from me I'm afraid, except maximising the immutable and reproducible parts is always good
2021-12-05 03:29:18 +0100zincy_(~zincy@host86-151-99-97.range86-151.btcentralplus.com)
2021-12-05 03:29:38 +0100tom_(~tom@2a00:23c8:970c:4801:8164:4807:4ccb:62f3)
2021-12-05 03:29:41 +0100xff0x(~xff0x@2001:1a81:53e7:c700:5d29:4d4d:a0f8:12e7) (Ping timeout: 252 seconds)
2021-12-05 03:30:09 +0100zincy_(~zincy@host86-151-99-97.range86-151.btcentralplus.com) (Read error: Connection reset by peer)
2021-12-05 03:30:26 +0100smfeels reproducible builds is higher priority than marking things safe
2021-12-05 03:31:35 +0100zincy(~tom@2a00:23c8:970c:4801:5b6a:e81b:79dc:f684) (Ping timeout: 250 seconds)
2021-12-05 03:31:38 +0100 <geekosaur> yin ^ this is more or less what you're fighting
2021-12-05 03:31:40 +0100xff0x(~xff0x@2001:1a81:5227:8600:681d:a189:70c5:145e)
2021-12-05 03:31:41 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
2021-12-05 03:31:41 +0100abrantesasf(~abrantesa@187.36.170.211) (Remote host closed the connection)
2021-12-05 03:31:42 +0100zincy(~tom@2a00:23c8:970c:4801:8164:4807:4ccb:62f3)
2021-12-05 03:32:02 +0100tom__(~tom@2a00:23c8:970c:4801:5b6a:e81b:79dc:f684) (Ping timeout: 268 seconds)
2021-12-05 03:33:56 +0100 <yin> i get it
2021-12-05 03:37:18 +0100 <zwro[m]> what's an easy way to build a n-bit type where i can use Data.Bits where n is arbitrary?
2021-12-05 03:37:21 +0100alx741(~alx741@186.178.108.253) (Ping timeout: 256 seconds)
2021-12-05 03:39:21 +0100 <zwro[m]> where i can do `complement 0b0011001` for instance and get 0b1100110
2021-12-05 03:40:03 +0100 <zwro[m]> (this would be a Word7)
2021-12-05 03:40:51 +0100 <yin> list of Bool with a Bits instance?
2021-12-05 03:40:52 +0100 <awpr> newtype around Integer (or Int if you're sure you won't need more than 64 / the platform native bit width) is a reasonably easy way to implement it
2021-12-05 03:41:24 +0100 <awpr> with a phantom Nat type parameter: `newtype Bit (n :: Nat) = Bit Integer`
2021-12-05 03:42:12 +0100 <yin> oh that might be better
2021-12-05 03:42:45 +0100 <awpr> then with KnownNat constraints on the typeclass instances and the appropriate masking / bounds checking / whatever you prefer, it can be made to behave like an n-bit integer
2021-12-05 03:46:26 +0100 <zwro[m]> that's KindSignatures, right?
2021-12-05 03:47:25 +0100 <zwro[m]> and which Nat is that?
2021-12-05 03:48:07 +0100 <awpr> yeah, it's a kind signature, and as far as I know there's only one Nat type, exported from Data.TypeNats and a few other places
2021-12-05 03:48:41 +0100 <zwro[m]> it's not GHC.TypeLits ?
2021-12-05 03:49:11 +0100 <awpr> oh, it's GHC.TypeNats and not Data, but yeah, that's one of the other places it's exported from
2021-12-05 03:50:00 +0100 <zwro[m]> ok, i've got some reading to do
2021-12-05 03:50:08 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:f5ec:bb0e:161e:528b)
2021-12-05 03:50:11 +0100 <zwro[m]> ty
2021-12-05 03:51:56 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.3)
2021-12-05 03:52:02 +0100 <yin> i have no idea how to estimate performance of type level stuff
2021-12-05 03:52:22 +0100zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2021-12-05 03:54:19 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.3)
2021-12-05 03:56:03 +0100namkeleser(~namkelese@101.175.128.51) (Ping timeout: 256 seconds)
2021-12-05 03:58:13 +0100shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net) (Remote host closed the connection)
2021-12-05 03:58:37 +0100shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net)
2021-12-05 04:00:05 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-12-05 04:05:02 +0100namkeleser(~namkelese@101.175.128.51)
2021-12-05 04:11:02 +0100alx741(~alx741@186.178.108.253)
2021-12-05 04:12:16 +0100 <EvanR> yin, static types are only checked at compile time
2021-12-05 04:12:37 +0100 <EvanR> so runtime performance is great
2021-12-05 04:14:30 +0100zebrag(~chris@user/zebrag)
2021-12-05 04:14:33 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 04:15:18 +0100maroloccio(~marolocci@151.53.155.184) (Quit: WeeChat 3.0)
2021-12-05 04:19:17 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Ping timeout: 256 seconds)
2021-12-05 04:20:01 +0100 <yin> what about space?
2021-12-05 04:20:40 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:f5ec:bb0e:161e:528b) (Remote host closed the connection)
2021-12-05 04:21:15 +0100 <EvanR> types don't exist at runtime so they take zero space!
2021-12-05 04:22:47 +0100 <yin> how would the type literal solution above compare to something like type Bin = [Bool] with a Bits instance?
2021-12-05 04:23:55 +0100 <EvanR> the Nat suggestion was so you can work with multiple size bit vectors safely?
2021-12-05 04:24:12 +0100 <EvanR> not involved in the runtime bit banging
2021-12-05 04:25:41 +0100renzhi(~xp@2607:fa49:6500:b100::5cef) (Ping timeout: 268 seconds)
2021-12-05 04:26:10 +0100 <yin> oh i must have misundertood what was being asked then
2021-12-05 04:27:13 +0100 <EvanR> :t 1234 .|. 4321
2021-12-05 04:27:14 +0100 <lambdabot> (Bits a, Num a) => a
2021-12-05 04:27:22 +0100 <yin> i thought you were talking about dynamically sized words
2021-12-05 04:27:22 +0100 <EvanR> (1234::Integer) .|. 4321
2021-12-05 04:27:36 +0100 <EvanR> > (1234::Integer) .|. 4321
2021-12-05 04:27:38 +0100 <lambdabot> 5363
2021-12-05 04:27:48 +0100 <EvanR> more like fixed size n that you choose
2021-12-05 04:28:06 +0100 <yin> yup i get it now
2021-12-05 04:28:30 +0100 <unclechu> Hey, when I turn on GHC2021 extension my type family fails to compile. It’s poly-kinded.
2021-12-05 04:28:30 +0100 <unclechu> `type family ToSigned (x ∷ k) ∷ Signed a where ToSigned (x ∷ Nat) = P x`
2021-12-05 04:28:30 +0100 <unclechu> GHC complains that “Expected kind ‘k’, but ‘x :: Nat’ has kind ‘Nat’”
2021-12-05 04:28:55 +0100 <unclechu> Any ideas why does this happen? A bug or maybe some included extension?
2021-12-05 04:28:59 +0100 <yin> what would be a good approach for dynamic?
2021-12-05 04:29:54 +0100 <EvanR> what does dynamic mean here
2021-12-05 04:30:37 +0100 <yin> n depending on some input for instance
2021-12-05 04:30:48 +0100 <EvanR> oof
2021-12-05 04:31:44 +0100 <yin> is this dependent type territory?
2021-12-05 04:31:50 +0100 <EvanR> if your code works for all n, then it's a matter of convincing the type system that your parser produces the correct type of value corresponding to that unknown input value
2021-12-05 04:32:52 +0100 <EvanR> you can also bundle the unknown value in a... dependent pair...
2021-12-05 04:33:19 +0100 <EvanR> but the parser is tricky
2021-12-05 04:34:16 +0100 <yin> or just go with [[Bool]] :)
2021-12-05 04:34:42 +0100 <EvanR> if you don't care about the types, Integer would probably be faster
2021-12-05 04:35:35 +0100 <yin> sure but then this conversation is no fun
2021-12-05 04:35:41 +0100td_(~td@muedsl-82-207-238-245.citykom.de) (Ping timeout: 252 seconds)
2021-12-05 04:37:13 +0100td_(~td@muedsl-82-207-238-182.citykom.de)
2021-12-05 04:37:40 +0100 <yin> is GHC smart enough to optimize a list or n-tuple of bools in memory?
2021-12-05 04:38:03 +0100 <yin> as in more efficiently allocate it?
2021-12-05 04:39:07 +0100 <EvanR> no
2021-12-05 04:39:19 +0100 <yin> :(
2021-12-05 04:40:31 +0100 <EvanR> a list is either made of list nodes or is made of nothing after it's optimized out
2021-12-05 04:40:42 +0100 <yin> i wonder how feasable that would be
2021-12-05 04:41:45 +0100 <yin> wait wdym by that last part?
2021-12-05 04:41:48 +0100 <EvanR> a normal n tuple of bools can't be packed together since tuples hold lazy values
2021-12-05 04:42:29 +0100 <EvanR> there's unpacked tuples though
2021-12-05 04:42:32 +0100 <EvanR> er, unboxed
2021-12-05 04:42:43 +0100 <yin> what about unboxed?
2021-12-05 04:42:59 +0100 <yin> yes i was just about to ask :)
2021-12-05 04:43:57 +0100 <yin> -O2 should take care of that anyways, right?
2021-12-05 04:43:59 +0100 <EvanR> an unboxed bool is still a whole word I think
2021-12-05 04:44:40 +0100 <yin> iirc something changed in 9.2
2021-12-05 04:44:41 +0100 <EvanR> instead of a pointer to a bool box, it's just the bool data
2021-12-05 04:45:43 +0100 <yin> it's now 8 bits instead of Word (?) smething like that
2021-12-05 04:47:10 +0100 <yin> this inner works of GHC is beyond my level of understanding
2021-12-05 04:47:22 +0100 <EvanR> I do not know
2021-12-05 04:52:19 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2021-12-05 04:52:19 +0100finn_elija(~finn_elij@user/finn-elija/x-0085643)
2021-12-05 04:52:19 +0100finn_elijaFinnElija
2021-12-05 04:53:17 +0100chenqisu1(~chenqisu1@183.217.200.156) (Ping timeout: 256 seconds)
2021-12-05 04:54:49 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2021-12-05 04:56:48 +0100img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2021-12-05 04:57:20 +0100img(~img@user/img)
2021-12-05 05:01:52 +0100arjun(~user@user/arjun)
2021-12-05 05:09:14 +0100xff0x(~xff0x@2001:1a81:5227:8600:681d:a189:70c5:145e) (Ping timeout: 252 seconds)
2021-12-05 05:09:54 +0100xff0x(~xff0x@2001:1a81:5227:8600:4d3a:2f6a:351b:d244)
2021-12-05 05:16:09 +0100hololeap_(~hololeap@user/hololeap)
2021-12-05 05:17:20 +0100yauhsien(~yauhsien@61-231-32-247.dynamic-ip.hinet.net)
2021-12-05 05:18:53 +0100sunmountain(~sunmounta@206.217.205.57)
2021-12-05 05:19:41 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 252 seconds)
2021-12-05 05:20:05 +0100 <EvanR> at some point there were proposals to do something with FilePath, such as change it to ByteString. Did anything ever happen
2021-12-05 05:21:17 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-12-05 05:21:53 +0100mvk(~mvk@2607:fea8:5cdd:f000::9788) (Ping timeout: 252 seconds)
2021-12-05 05:22:15 +0100yauhsien(~yauhsien@61-231-32-247.dynamic-ip.hinet.net) (Ping timeout: 252 seconds)
2021-12-05 05:23:48 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-12-05 05:26:31 +0100hololeap(~hololeap@user/hololeap) (Read error: Connection reset by peer)
2021-12-05 05:26:43 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2021-12-05 05:27:44 +0100 <c_wraith> the real problem is that there is no right answer.
2021-12-05 05:32:18 +0100yauhsien(~yauhsien@61-231-32-247.dynamic-ip.hinet.net)
2021-12-05 05:32:59 +0100jmorris(uid433911@id-433911.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-12-05 05:33:03 +0100lavaman(~lavaman@98.38.249.169)
2021-12-05 05:37:17 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
2021-12-05 05:39:41 +0100xff0x(~xff0x@2001:1a81:5227:8600:4d3a:2f6a:351b:d244) (Ping timeout: 268 seconds)
2021-12-05 05:40:05 +0100xff0x(~xff0x@2001:1a81:5227:8600:2d6c:ad13:e9b9:6c25)
2021-12-05 05:45:22 +0100 <dmj`> @package filepath-bytestring
2021-12-05 05:45:22 +0100 <lambdabot> https://hackage.haskell.org/package/filepath-bytestring
2021-12-05 05:45:37 +0100Lycurgus(~juan@98.4.112.204)
2021-12-05 05:46:44 +0100 <EvanR> looks promising
2021-12-05 05:53:35 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2021-12-05 05:54:20 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 252 seconds)
2021-12-05 05:56:31 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-05 06:03:04 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 06:05:26 +0100deadmarshal(~deadmarsh@95.38.231.28)
2021-12-05 06:07:06 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 06:09:59 +0100zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2021-12-05 06:16:24 +0100kupi(uid212005@id-212005.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-12-05 06:18:24 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2021-12-05 06:20:38 +0100namkeleser(~namkelese@101.175.128.51) (Quit: Client closed)
2021-12-05 06:21:22 +0100pfurla(~pfurla@201.17.118.230) (Quit: gone to sleep. ZZZzzz…)
2021-12-05 06:27:00 +0100nfd(~nfd@user/nfd)
2021-12-05 06:28:31 +0100 <nfd> alright, i could use an AoC day 4 rubberduck for a moment, because i seem too sleepy to get something pretty simple here:
2021-12-05 06:30:16 +0100 <nfd> i'm writing a megaparsec parser for reading cards in day 4, and it keeps dying after the first line of the first card on the example data, because it's not expecting the leading space
2021-12-05 06:30:29 +0100 <nfd> ``parseCard = hspace *> sepBy (many ((,False) <$> lexeme number)) eol``
2021-12-05 06:30:42 +0100 <nfd> ...but i thought that leading hspace call should've done it.
2021-12-05 06:30:45 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-12-05 06:31:02 +0100 <nfd> (i'll pastebin the whole thing if anyone wants ofc)
2021-12-05 06:33:35 +0100yauhsien(~yauhsien@61-231-32-247.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-12-05 06:37:43 +0100mbuf(~Shakthi@122.174.197.155)
2021-12-05 06:38:15 +0100 <nfd> (my previous attempts were way too zealous about eating whitespace, and just read the rest of the file as one massive one-lined card)
2021-12-05 06:41:35 +0100deadmarshal(~deadmarsh@95.38.231.28) (Ping timeout: 256 seconds)
2021-12-05 06:44:21 +0100 <dsal> nfd: what is lexeme?
2021-12-05 06:47:46 +0100chenqisu1(~chenqisu1@183.217.200.156)
2021-12-05 06:51:31 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:f5ec:bb0e:161e:528b)
2021-12-05 06:51:31 +0100fabfianda(~fabfianda@net-109-115-246-237.cust.vodafonedsl.it) (Read error: Connection reset by peer)
2021-12-05 06:51:45 +0100fabfianda(~fabfianda@net-109-115-246-237.cust.vodafonedsl.it)
2021-12-05 06:52:09 +0100harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving)
2021-12-05 06:53:38 +0100slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-12-05 07:05:35 +0100namkeleser(~namkelese@101.175.128.51)
2021-12-05 07:06:29 +0100 <nfd> (got it; obviously put it in the wrong spot)
2021-12-05 07:08:22 +0100 <nfd> still a bit to iron out, but :)
2021-12-05 07:10:20 +0100deadmarshal(~deadmarsh@95.38.231.28)
2021-12-05 07:13:13 +0100dignissimus(~dignissim@88-104-68-62.dynamic.dsl.as9105.com)
2021-12-05 07:14:04 +0100 <nfd> alright, now i'm cooking with gas. to allow this to be a lesson for everyone:
2021-12-05 07:14:13 +0100 <nfd> `parseCard = sepEndBy (hspace *> some ((,False) <$> lexeme number)) eol`
2021-12-05 07:15:25 +0100Lycurgus(~juan@98.4.112.204) (Quit: Exeunt)
2021-12-05 07:16:32 +0100 <dignissimus> I'm reading integers so I wanted to use Int, but I want to divide these numbers and the reuslt is probably not an integer, how should I approach this while making sure the code doesn't become too ugly (Adevent of Code) https://paste.tomsmeding.com/KrceTN3w
2021-12-05 07:20:25 +0100 <EvanR> well
2021-12-05 07:21:11 +0100 <EvanR> if you literally want to use division to get points on a line with algebraic certitude, you can use Rational
2021-12-05 07:21:57 +0100 <EvanR> but it's not necessary for that problem because the lines are only horizontal vertical or diagonal
2021-12-05 07:22:25 +0100 <dignissimus> Oh, even in part 2??
2021-12-05 07:22:39 +0100 <EvanR> yeah read the text more carefully
2021-12-05 07:23:25 +0100arjun(~user@user/arjun) (Remote host closed the connection)
2021-12-05 07:23:40 +0100 <EvanR> (in general if you wanted to use / with integers you can from fromInteger first to get a Double, and all that that entails. Or Rational)
2021-12-05 07:23:53 +0100 <EvanR> use* fromInteger
2021-12-05 07:23:57 +0100 <EvanR> fromIntegral!
2021-12-05 07:24:46 +0100 <dignissimus> My only concern is that if I replace all the variables with (fromIntegral x) the code might look really messy
2021-12-05 07:25:03 +0100 <dignissimus> Do I need to use a helper function?
2021-12-05 07:25:43 +0100 <EvanR> sometimes I define fi = fromIntegral, but it needs a type signature if you intend to use it at more than one type
2021-12-05 07:26:10 +0100 <EvanR> (and if I do... I put a type sig anyway and pick a better name!)
2021-12-05 07:26:24 +0100 <EvanR> (if I intend to use it at 1 type)
2021-12-05 07:26:54 +0100 <EvanR> you're right it'll look messy
2021-12-05 07:27:18 +0100 <EvanR> and won't even work if go with Double lol
2021-12-05 07:34:37 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 252 seconds)
2021-12-05 07:42:17 +0100int-e(~noone@int-e.eu) (Quit: Reconnecting)
2021-12-05 07:42:26 +0100int-e(~noone@int-e.eu)
2021-12-05 07:47:24 +0100curiousgay(~curiousga@77-120-141-90.kha.volia.net)
2021-12-05 07:48:24 +0100shailangsa(~shailangs@host86-162-150-209.range86-162.btcentralplus.com) (Ping timeout: 265 seconds)
2021-12-05 07:49:16 +0100yauhsien(~yauhsien@61-231-32-247.dynamic-ip.hinet.net)
2021-12-05 07:50:39 +0100Techcable(~Techcable@168.235.93.147) (Ping timeout: 256 seconds)
2021-12-05 07:53:41 +0100yauhsien(~yauhsien@61-231-32-247.dynamic-ip.hinet.net) (Ping timeout: 252 seconds)
2021-12-05 07:55:14 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 07:59:13 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 08:11:51 +0100 <EvanR> that's cool vector algorithms sort is much faster than Data.List sort
2021-12-05 08:12:44 +0100 <int-e> Well it should be :)
2021-12-05 08:13:39 +0100 <int-e> (As optimized as it is, the Data.List sort still dereferences a ton of random pointers, something you don't do when sorting an array in place)
2021-12-05 08:22:32 +0100 <EvanR> yeah it seems any time a list becomes materialized and stays around, bad things happen
2021-12-05 08:26:20 +0100zaquest(~notzaques@5.130.79.72) (Remote host closed the connection)
2021-12-05 08:26:54 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-05 08:27:25 +0100zaquest(~notzaques@5.130.79.72)
2021-12-05 08:27:49 +0100shailangsa(~shailangs@host86-186-142-82.range86-186.btcentralplus.com)
2021-12-05 08:28:40 +0100yauhsien(~yauhsien@2402:7500:4e5:d897:ecaa:ad5f:48c0:a8a4)
2021-12-05 08:29:31 +0100 <dmj`> lists are great as control structures (for loop replacement), but not so good for representing data
2021-12-05 08:35:50 +0100max22-(~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr)
2021-12-05 08:37:03 +0100gabiruh_(~gabiruh@vps19177.publiccloud.com.br) (Quit: ZNC 1.7.5 - https://znc.in)
2021-12-05 08:37:17 +0100gabiruh(~gabiruh@vps19177.publiccloud.com.br)
2021-12-05 08:40:20 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 08:41:09 +0100whatsupdoc(uid509081@id-509081.hampstead.irccloud.com)
2021-12-05 08:46:52 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 08:47:09 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 08:48:49 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 08:49:07 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 08:51:10 +0100thevishy(~Nishant@2405:201:f005:c007:fd4c:a570:99e4:8844)
2021-12-05 08:53:06 +0100burnsidesLlama(~burnsides@dhcp168-020.wadham.ox.ac.uk)
2021-12-05 08:54:02 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 08:54:11 +0100emf_(~emf@2620:10d:c090:400::5:d28b) (Ping timeout: 252 seconds)
2021-12-05 08:54:19 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 08:55:59 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 09:00:55 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-12-05 09:02:38 +0100hgolden(~hgolden2@cpe-172-114-81-123.socal.res.rr.com)
2021-12-05 09:05:00 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-12-05 09:11:07 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-12-05 09:13:54 +0100axeman(~quassel@ip5f5aeb08.dynamic.kabel-deutschland.de)
2021-12-05 09:15:27 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-05 09:24:15 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-12-05 09:25:08 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 09:26:48 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 09:27:06 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 09:30:58 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2021-12-05 09:33:11 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 09:33:29 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 09:34:52 +0100lavaman(~lavaman@98.38.249.169)
2021-12-05 09:38:47 +0100chenqisu12(~chenqisu1@183.217.201.63)
2021-12-05 09:39:27 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2021-12-05 09:39:55 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 09:40:13 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 09:41:09 +0100chenqisu1(~chenqisu1@183.217.200.156) (Ping timeout: 256 seconds)
2021-12-05 09:48:49 +0100yauhsien(~yauhsien@2402:7500:4e5:d897:ecaa:ad5f:48c0:a8a4) (Ping timeout: 252 seconds)
2021-12-05 09:53:01 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 09:53:18 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 09:54:58 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 09:55:16 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 09:55:26 +0100yauhsien(~yauhsien@61-231-32-247.dynamic-ip.hinet.net)
2021-12-05 09:55:47 +0100acidjnk_new(~acidjnk@p200300d0c7271e5135c37e9089e8a354.dip0.t-ipconnect.de)
2021-12-05 09:58:56 +0100Techcable(~Techcable@168.235.93.147)
2021-12-05 10:00:13 +0100sky_lounge[m](~skylounge@2001:470:69fc:105::efa6) (Quit: You have been kicked for being idle)
2021-12-05 10:00:29 +0100yauhsien(~yauhsien@61-231-32-247.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-12-05 10:03:47 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 10:04:05 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 10:05:32 +0100Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi)
2021-12-05 10:07:46 +0100Jonno_FTW(~come@user/jonno-ftw/x-0835346) (Ping timeout: 265 seconds)
2021-12-05 10:08:21 +0100Jonno_FTW(~come@api.carswap.me)
2021-12-05 10:10:01 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 10:10:19 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 10:10:41 +0100deadmarshal(~deadmarsh@95.38.231.28) (Ping timeout: 256 seconds)
2021-12-05 10:13:59 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 10:14:17 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 10:16:29 +0100bollu(uid233390@id-233390.helmsley.irccloud.com)
2021-12-05 10:17:36 +0100allbery_b(~geekosaur@xmonad/geekosaur)
2021-12-05 10:17:36 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2021-12-05 10:17:39 +0100allbery_bgeekosaur
2021-12-05 10:18:18 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 10:18:35 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 10:22:41 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 10:25:36 +0100deadmarshal(~deadmarsh@95.38.231.28)
2021-12-05 10:27:13 +0100burnsidesLlama(~burnsides@dhcp168-020.wadham.ox.ac.uk) (Remote host closed the connection)
2021-12-05 10:30:10 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-05 10:31:39 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-12-05 10:33:36 +0100flukiluke(~m-7humut@2603:c023:c000:6c7e:8945:ad24:9113:a962) (Remote host closed the connection)
2021-12-05 10:34:32 +0100flukiluke(~m-7humut@2603:c023:c000:6c7e:8945:ad24:9113:a962)
2021-12-05 10:46:53 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-05 10:49:14 +0100econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-12-05 10:49:17 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2021-12-05 10:49:37 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 10:49:58 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:f5ec:bb0e:161e:528b) (Remote host closed the connection)
2021-12-05 10:50:19 +0100Pickchea(~private@user/pickchea)
2021-12-05 10:51:59 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 10:52:17 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 10:53:57 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 10:54:05 +0100yauhsien(~yauhsien@61-231-32-247.dynamic-ip.hinet.net)
2021-12-05 10:54:15 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 10:54:16 +0100mc47(~mc47@xmonad/TheMC47)
2021-12-05 10:55:55 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 10:56:14 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 11:00:18 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 11:00:35 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 11:02:15 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 11:02:33 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 11:03:06 +0100whatsupdoc(uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-12-05 11:05:01 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 11:05:18 +0100burnsidesLlama(~burnsides@dhcp168-020.wadham.ox.ac.uk)
2021-12-05 11:05:19 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 11:06:03 +0100_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-12-05 11:07:21 +0100Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2021-12-05 11:08:23 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds)
2021-12-05 11:10:07 +0100burnsidesLlama(~burnsides@dhcp168-020.wadham.ox.ac.uk) (Ping timeout: 256 seconds)
2021-12-05 11:10:10 +0100Lord_of_Life_Lord_of_Life
2021-12-05 11:12:34 +0100burnsidesLlama(~burnsides@dhcp168-020.wadham.ox.ac.uk)
2021-12-05 11:14:45 +0100 <Square> is there a way to make a partial function "complete" by just catching non handled cases?
2021-12-05 11:17:22 +0100 <tomsmeding> Square: you need to return _something_ in all cases -- that's the point of being a total function
2021-12-05 11:17:33 +0100 <tomsmeding> what are you going to return in non-handled cases?
2021-12-05 11:18:09 +0100 <Square> I was thinking "Left SomeErrorType"
2021-12-05 11:19:26 +0100 <tomsmeding> right, if you function return type is 'Either SomeErrorType Value', and you can generate some kind of standard error type, then you can do that
2021-12-05 11:20:25 +0100Guest|22(~Guest|22@188.163.27.147)
2021-12-05 11:20:53 +0100Guest|22(~Guest|22@188.163.27.147) (Client Quit)
2021-12-05 11:22:33 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 11:22:50 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 11:24:44 +0100 <Square> tomsmeding, what im after is avoiding to implement the error handling case whenever i do this. Hopefully like "dealWithNonHandled $ (\(MySumTypeCaseC x) -> Right x) value"
2021-12-05 11:26:22 +0100 <tomsmeding> ah, in that specific shape you can't make this
2021-12-05 11:26:53 +0100 <tomsmeding> what you can do, is (\case MySumTypeCaseC x -> Right x ; _ -> somedefaultstuff) value
2021-12-05 11:26:56 +0100 <tomsmeding> if you turn on LambdaCase
2021-12-05 11:27:12 +0100 <tomsmeding> if you don't like LambdaCase, of course (\v -> case v of MySu...
2021-12-05 11:28:52 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 11:29:10 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 11:30:18 +0100max22-(~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) (Remote host closed the connection)
2021-12-05 11:31:02 +0100max22-(~maxime@2a01cb0883359800e6d6eb63f9f5fddc.ipv6.abo.wanadoo.fr)
2021-12-05 11:31:05 +0100 <tomsmeding> Square: a way to see that what you want is impossible, is: what would the type of dealWithNonHandled be?
2021-12-05 11:31:09 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-12-05 11:31:15 +0100 <tomsmeding> and what would its argument be
2021-12-05 11:32:00 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-12-05 11:32:21 +0100 <Square> tomsmeding, i see how its impossible. Just hoped there was a trick around it =D
2021-12-05 11:32:32 +0100 <Square> ill go with LambdaCase. Good enough
2021-12-05 11:33:55 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Ping timeout: 256 seconds)
2021-12-05 11:37:27 +0100simendsjo(~user@84.211.91.241)
2021-12-05 11:38:07 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-12-05 11:42:00 +0100shriekingnoise(~shrieking@186.137.144.80) (Quit: Quit)
2021-12-05 11:44:34 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-05 11:46:46 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 11:47:01 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-12-05 11:47:21 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-12-05 11:49:01 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 11:49:18 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 11:50:24 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:e52b:eca6:e736:3c6b)
2021-12-05 11:53:08 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-12-05 11:54:35 +0100fabfianda(~fabfianda@net-109-115-246-237.cust.vodafonedsl.it) (Ping timeout: 252 seconds)
2021-12-05 11:54:57 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:e52b:eca6:e736:3c6b) (Ping timeout: 252 seconds)
2021-12-05 11:55:14 +0100fabfianda(~fabfianda@mob-5-90-255-224.net.vodafone.it)
2021-12-05 11:55:28 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-12-05 11:56:23 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2021-12-05 11:57:28 +0100Midjak(~Midjak@may53-1-78-226-116-92.fbx.proxad.net)
2021-12-05 11:57:31 +0100lstor(~lstor@user/lstor) (Remote host closed the connection)
2021-12-05 11:58:11 +0100MoC(~moc@user/moc)
2021-12-05 11:58:37 +0100jakalx(~jakalx@base.jakalx.net) ()
2021-12-05 12:00:19 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 12:00:37 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 12:01:07 +0100Guest|85(~Guest|85@35.85-84-235.dynamic.clientes.euskaltel.es)
2021-12-05 12:01:11 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 252 seconds)
2021-12-05 12:04:29 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 12:04:47 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 12:05:35 +0100fabfianda(~fabfianda@mob-5-90-255-224.net.vodafone.it) (Ping timeout: 252 seconds)
2021-12-05 12:07:19 +0100AndreasK(sid320732@id-320732.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2021-12-05 12:07:56 +0100aegon(~mike@174.127.249.180)
2021-12-05 12:08:33 +0100 <aegon> what are the keyboard shortcuts to search within a package on hackage? where can i find them if i forget next time. :P
2021-12-05 12:09:56 +0100Guest|85(~Guest|85@35.85-84-235.dynamic.clientes.euskaltel.es) (Quit: Connection closed)
2021-12-05 12:10:58 +0100 <maerwald> s
2021-12-05 12:15:15 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 12:15:33 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 12:19:11 +0100 <aegon> thanks :)
2021-12-05 12:21:29 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 12:21:47 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 12:25:27 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 12:25:45 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 12:27:33 +0100zer0bitz(~zer0bitz@dsl-hkibng32-54fbfb-173.dhcp.inet.fi)
2021-12-05 12:27:47 +0100shriekingnoise(~shrieking@186.137.144.80)
2021-12-05 12:28:26 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-05 12:30:01 +0100Pickchea(~private@user/pickchea) (Ping timeout: 256 seconds)
2021-12-05 12:30:25 +0100gehmehgeh(~user@user/gehmehgeh)
2021-12-05 12:32:02 +0100eyJhb(~eyJhb@user/eyjhb) (Quit: Clever message)
2021-12-05 12:32:33 +0100narendraj9(~user@2a02:8109:b63f:ff7c::57b2)
2021-12-05 12:32:55 +0100eyJhb(~eyJhb@user/eyjhb)
2021-12-05 12:33:31 +0100pfurla(~pfurla@2804:14d:5c81:4104:9dad:b7eb:58e3:98e6)
2021-12-05 12:33:38 +0100 <pragma-> aegon: it's easy to remember the key is 's' because "s" stands for "sedimentologically"
2021-12-05 12:34:12 +0100InternetCitizen4(~fuzzypixe@tchebychev.ensimag.fr)
2021-12-05 12:34:39 +0100 <InternetCitizen4> screw arch linux for enforcing dynamic linking 'ghc -dynamic' my ass
2021-12-05 12:34:54 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 12:35:05 +0100waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-12-05 12:35:11 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 12:39:03 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 12:39:21 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 12:41:01 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 12:41:19 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 12:42:15 +0100 <maerwald> pick a better distro
2021-12-05 12:43:31 +0100cosimone(~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3)
2021-12-05 12:45:17 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 12:45:23 +0100 <InternetCitizen4> like ?
2021-12-05 12:45:35 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 12:47:33 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 12:47:43 +0100 <maerwald> or better yet, switch to windows
2021-12-05 12:47:50 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 12:48:07 +0100bbear100(~bbear@2a01:e34:ec2b:d430:e0dd:e718:df68:1877)
2021-12-05 12:48:07 +0100 <bbear100> Hi
2021-12-05 12:48:34 +0100 <bbear100> just wanted to know if there is a better API than the [a..b] one for generating sequences of numbers
2021-12-05 12:49:09 +0100 <bbear100> my use case: I want to generate contiguous integer but I don't know if a > b or b > a, but I want the sequence to be in reverse order in the former case.
2021-12-05 12:50:23 +0100 <aegon> bbear100: guards will get you there
2021-12-05 12:50:33 +0100max22-(~maxime@2a01cb0883359800e6d6eb63f9f5fddc.ipv6.abo.wanadoo.fr) (Quit: Leaving)
2021-12-05 12:50:57 +0100max22-(~maxime@2a01cb0883359800e6d6eb63f9f5fddc.ipv6.abo.wanadoo.fr)
2021-12-05 12:51:13 +0100 <maerwald> InternetCitizen4: I don't know... openSUSE?
2021-12-05 12:51:45 +0100 <aegon> maerwald: i can't tell if your trollin :P
2021-12-05 12:51:52 +0100 <maerwald> aegon: I'm not
2021-12-05 12:52:00 +0100 <maerwald> they have competent packagers
2021-12-05 12:52:08 +0100 <maerwald> something that's missing in most distros
2021-12-05 12:52:52 +0100 <aegon> gentoo! just package yourself :P
2021-12-05 12:53:02 +0100jakalx(~jakalx@base.jakalx.net)
2021-12-05 12:53:11 +0100 <maerwald> I did gentoo deving for 4 years and will never go back to that madness
2021-12-05 12:53:16 +0100 <bbear100> archlinux if you like reading doc and running pre-compiled vanilla linux with decent community support
2021-12-05 12:53:42 +0100 <maerwald> bbear100: they asked about an alternative to arch, because arch is broken sh*t :p
2021-12-05 12:53:54 +0100 <bbear100> it's not *that* broken
2021-12-05 12:54:00 +0100 <maerwald> for Haskell, it is
2021-12-05 12:54:17 +0100 <fendor[m]> it is fine, as long as you use ghcup ;D
2021-12-05 12:54:48 +0100 <bbear100> I'm using stack. Lesson in life: never use your distro package libraries for development workflow
2021-12-05 12:55:01 +0100 <maerwald> I'm on fedora... but not because I believe in it. The main issue is that you can't easily switch gcc versions, which you sometimes need for Haskell deving
2021-12-05 12:55:21 +0100max22-(~maxime@2a01cb0883359800e6d6eb63f9f5fddc.ipv6.abo.wanadoo.fr) (Ping timeout: 245 seconds)
2021-12-05 12:56:26 +0100 <aegon> bbear100: you mean you always want a descending sequence?
2021-12-05 12:56:37 +0100 <bbear100> not always, can be up or down
2021-12-05 12:56:40 +0100 <bbear100> I have another question:
2021-12-05 12:57:00 +0100 <bbear100> how can you define (+) for a datastructure like `data Point = Point Int Int` ?
2021-12-05 12:57:17 +0100 <bbear100> Do you really need to make it an instance of `Num` ?
2021-12-05 12:58:01 +0100 <bbear100> can I just define it?
2021-12-05 12:58:19 +0100 <aegon> yeah, instance num but if your really doing points, you can just derive it with the stock one
2021-12-05 12:58:26 +0100pfurla(~pfurla@2804:14d:5c81:4104:9dad:b7eb:58e3:98e6) (Quit: gone to sleep. ZZZzzz…)
2021-12-05 12:58:29 +0100 <aegon> it'll do the right thing
2021-12-05 12:58:40 +0100 <bbear100> deriving Num will work ?
2021-12-05 12:59:18 +0100 <aegon> and Eq, not sure if Ord will be sane
2021-12-05 12:59:37 +0100 <aegon> i doubt Ord would be sane
2021-12-05 13:00:27 +0100xkuru(~xkuru@user/xkuru)
2021-12-05 13:01:37 +0100 <bbear100>     • Can't make a derived instance of ‘Num Point’:
2021-12-05 13:01:38 +0100 <bbear100>         ‘Num’ is not a stock derivable class (Eq, Show, etc.)
2021-12-05 13:02:17 +0100 <bbear100> too bad
2021-12-05 13:02:25 +0100xff0x(~xff0x@2001:1a81:5227:8600:2d6c:ad13:e9b9:6c25) (Ping timeout: 252 seconds)
2021-12-05 13:02:45 +0100 <maerwald> aegon: I don't think you can derive that
2021-12-05 13:02:53 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-12-05 13:03:17 +0100xff0x(~xff0x@2001:1a81:5227:8600:e134:3a0d:618c:1205)
2021-12-05 13:05:45 +0100 <aegon> yeah, i was trying to get it to work and realizing it's not gonna work, just came back from that
2021-12-05 13:08:09 +0100 <bbear100> you can't redifine (+) for any type right, but you actually have to make it an instance of the correct typeclass, right '
2021-12-05 13:09:52 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 13:10:10 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 13:10:48 +0100 <aegon> bbear100: yeah, your gonna need to figure out what each thing in Num means for your Point, you could make a non (+) function and use that instead
2021-12-05 13:11:05 +0100 <aegon> i don't think i'm understanding your needs on the contigous but this is a quick paste https://paste.tomsmeding.com/EjB6Yung
2021-12-05 13:14:17 +0100 <tomsmeding> bbear100: in fact:
2021-12-05 13:14:22 +0100 <tomsmeding> % :t (+)
2021-12-05 13:14:23 +0100 <yahb> tomsmeding: Num a => a -> a -> a
2021-12-05 13:14:34 +0100 <tomsmeding> (+) is defined for _precisely_ those types that implement Num
2021-12-05 13:14:46 +0100 <tomsmeding> because it is a method of the Num class
2021-12-05 13:15:34 +0100 <aegon> bbear100: the hackage docs have good info on what the minimum required definitions are and what rules they need to satisfy
2021-12-05 13:15:48 +0100 <bbear100> ha allright
2021-12-05 13:16:15 +0100 <aegon> https://hackage.haskell.org/package/base-4.16.0.0/docs/Prelude.html#g:7
2021-12-05 13:16:36 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-12-05 13:16:39 +0100 <maerwald> void linux actually looks nice, but I'm not sure
2021-12-05 13:16:42 +0100desantra(~skykanin@user/skykanin)
2021-12-05 13:18:40 +0100 <aegon> bbear100: if you treat (*) as distributive you could make a num instance but i think your looking for something besides Num with Points, Maybe a Vector class or something similar would fit more naturally
2021-12-05 13:18:51 +0100pfurla(~pfurla@2804:14d:5c81:4104:9dad:b7eb:58e3:98e6)
2021-12-05 13:18:57 +0100 <bbear100> yes nevermind I don't really need a function
2021-12-05 13:19:14 +0100 <bbear100> Just want to try things.
2021-12-05 13:19:23 +0100 <bbear100> BTW, is there a counterSet available in the prelude ?
2021-12-05 13:19:43 +0100 <bbear100> like you can tell how many times an element is in the set ?
2021-12-05 13:19:54 +0100pfurla(~pfurla@2804:14d:5c81:4104:9dad:b7eb:58e3:98e6) (Client Quit)
2021-12-05 13:20:13 +0100narendraj9(~user@2a02:8109:b63f:ff7c::57b2) (Remote host closed the connection)
2021-12-05 13:21:42 +0100Pickchea(~private@user/pickchea)
2021-12-05 13:22:02 +0100Megant(megant@user/megant) (Ping timeout: 252 seconds)
2021-12-05 13:23:10 +0100 <aegon> i think thats a Bag
2021-12-05 13:23:11 +0100jgeerds(~jgeerds@55d4ac73.access.ecotel.net)
2021-12-05 13:23:25 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 13:23:42 +0100Megant(megant@user/megant)
2021-12-05 13:23:42 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 13:24:30 +0100 <aegon> bbear100: https://hackage.haskell.org/package/multiset-0.3.4.3/docs/Data-MultiSet.html
2021-12-05 13:24:38 +0100 <aegon> or i'm old and now its being called a multi-set
2021-12-05 13:27:28 +0100machinedgod(~machinedg@24.105.81.50)
2021-12-05 13:28:23 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Ping timeout: 256 seconds)
2021-12-05 13:29:19 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2021-12-05 13:31:56 +0100xff0x(~xff0x@2001:1a81:5227:8600:e134:3a0d:618c:1205) (Ping timeout: 252 seconds)
2021-12-05 13:32:55 +0100namkeleser(~namkelese@101.175.128.51) (Ping timeout: 256 seconds)
2021-12-05 13:33:29 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 256 seconds)
2021-12-05 13:33:31 +0100burnsidesLlama(~burnsides@dhcp168-020.wadham.ox.ac.uk) (Remote host closed the connection)
2021-12-05 13:34:06 +0100burnsidesLlama(~burnsides@dhcp168-020.wadham.ox.ac.uk)
2021-12-05 13:35:33 +0100pfurla(~pfurla@2804:14d:5c81:4104:9dad:b7eb:58e3:98e6)
2021-12-05 13:36:28 +0100pfurla(~pfurla@2804:14d:5c81:4104:9dad:b7eb:58e3:98e6) (Client Quit)
2021-12-05 13:38:39 +0100burnsidesLlama(~burnsides@dhcp168-020.wadham.ox.ac.uk) (Ping timeout: 256 seconds)
2021-12-05 13:39:38 +0100jgeerds(~jgeerds@55d4ac73.access.ecotel.net) (Ping timeout: 252 seconds)
2021-12-05 13:41:36 +0100 <InternetCitizen4> is Parsec in base? :/
2021-12-05 13:41:57 +0100 <geekosaur> no
2021-12-05 13:42:27 +0100 <geekosaur> base is kept small, because it can only be upgraded with ghc
2021-12-05 13:42:48 +0100 <geekosaur> there is a parser in base, but it's a pretty slow and bad one (ReadP)
2021-12-05 13:42:57 +0100 <geekosaur> used by Read instances
2021-12-05 13:43:31 +0100 <geekosaur> parsec does ship with ghc but it's still upgradeable, unlike base
2021-12-05 13:46:40 +0100yauhsien(~yauhsien@61-231-32-247.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-12-05 13:46:40 +0100Farzad(~FarzadBek@37.98.106.33)
2021-12-05 13:48:24 +0100yauhsien(~yauhsien@61-231-32-247.dynamic-ip.hinet.net)
2021-12-05 13:49:46 +0100 <Farzad> guys anyone using postgresql-simple here?
2021-12-05 13:50:53 +0100polezaivsani(~polezaivs@orangeshoelaces.net)
2021-12-05 13:53:19 +0100yauhsien(~yauhsien@61-231-32-247.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-12-05 13:53:59 +0100xff0x(~xff0x@2001:1a81:5227:8600:e134:3a0d:618c:1205)
2021-12-05 13:54:00 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 13:56:05 +0100hololeap_hololeap
2021-12-05 13:56:39 +0100 <aegon> Farzad: yep
2021-12-05 13:57:15 +0100 <Farzad> can you direct me to an example usage of RowParser? I cant find any on google
2021-12-05 13:58:25 +0100deadmarshal(~deadmarsh@95.38.231.28) (Ping timeout: 256 seconds)
2021-12-05 13:59:46 +0100 <InternetCitizen4> geekosaur: oh so it does ship with ghc that's good
2021-12-05 14:01:27 +0100 <aegon> i've never used them :| but it looks like you pass it a conversion that runs in io and you get that
2021-12-05 14:01:33 +0100 <aegon> sorry, not much help there
2021-12-05 14:03:00 +0100 <Farzad> aegon: np, thanks anyway
2021-12-05 14:03:19 +0100CiaoSen(~Jura@p200300c9570204002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2021-12-05 14:04:59 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 14:05:16 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 14:06:56 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 14:07:14 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 14:09:51 +0100burnsidesLlama(~burnsides@dhcp168-020.wadham.ox.ac.uk)
2021-12-05 14:10:03 +0100 <dignissimus> My day 5 solution, I think my haskell is improving: https://paste.tomsmeding.com/ykQKkds8
2021-12-05 14:10:26 +0100Pickchea(~private@user/pickchea) (Ping timeout: 252 seconds)
2021-12-05 14:10:34 +0100 <dignissimus> Any feedback on the code? This time I made use of helper functions becuse last time it was difficult to read
2021-12-05 14:12:11 +0100aegon(~mike@174.127.249.180) (Remote host closed the connection)
2021-12-05 14:13:59 +0100yauhsien(~yauhsien@61-231-32-247.dynamic-ip.hinet.net)
2021-12-05 14:14:17 +0100burnsidesLlama(~burnsides@dhcp168-020.wadham.ox.ac.uk) (Ping timeout: 252 seconds)
2021-12-05 14:15:57 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 14:16:15 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 14:16:43 +0100xkuru(~xkuru@user/xkuru) (Read error: Connection reset by peer)
2021-12-05 14:16:49 +0100burnsidesLlama(~burnsides@dhcp168-020.wadham.ox.ac.uk)
2021-12-05 14:19:36 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-12-05 14:20:12 +0100kuribas(~user@ptr-25vy0i87ls363spjkfx.18120a2.ip6.access.telenet.be)
2021-12-05 14:20:19 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-12-05 14:20:50 +0100 <kuribas> What's this BS: https://blog.klipse.tech/databook/2020/10/02/generic-data-structures.html
2021-12-05 14:20:53 +0100 <kuribas> "FP Languages that are statically typed (e.g. Haskell and Ocaml) are not compliant with this principle."
2021-12-05 14:20:57 +0100 <kuribas> I can represent generic data structures in haskell just fine thank you.
2021-12-05 14:21:16 +0100 <kuribas> I probably don't want to, but I can...
2021-12-05 14:21:32 +0100imdoor(~imdoor@balticom-142-78-50.balticom.lv)
2021-12-05 14:23:30 +0100 <Franciman> what does generic mean?
2021-12-05 14:25:03 +0100 <kuribas> unityped I suppose.
2021-12-05 14:25:30 +0100 <kuribas> One big sumtype to rule them all :)
2021-12-05 14:26:38 +0100 <Franciman> honestly what the heck
2021-12-05 14:26:45 +0100 <Franciman> I can't wait to finish my garbage collector, btw
2021-12-05 14:26:52 +0100kennyd(~bc8165b6@cerf.good1.com)
2021-12-05 14:27:01 +0100 <Franciman> then I'll be able to start experimenting more freely with the evaluator
2021-12-05 14:27:06 +0100 <Franciman> and make it FFAST
2021-12-05 14:27:23 +0100 <Franciman> i'll be finally able to draw coherent conclusions re. haskell's evaluation behaviour
2021-12-05 14:28:23 +0100 <kuribas> BTW, to me this "data-oriented programming" looks just like an interpreter design.
2021-12-05 14:28:48 +0100 <kuribas> You write your logic as static data, then write an interpreter to apply it.
2021-12-05 14:29:15 +0100 <kuribas> That definitely doesn't require "generic" only data.
2021-12-05 14:29:37 +0100 <Franciman> to me data-oriented programming is basically
2021-12-05 14:29:40 +0100 <Franciman> try to make things fit in the cache
2021-12-05 14:30:00 +0100 <Franciman> otherwise I don't need anybody to tell me I should first think about data and how it flows
2021-12-05 14:30:08 +0100 <Franciman> because that's on of the core pillars of fp
2021-12-05 14:30:15 +0100burnsidesLlama(~burnsides@dhcp168-020.wadham.ox.ac.uk) (Remote host closed the connection)
2021-12-05 14:30:18 +0100 <Franciman> we already design our data and write functions on it
2021-12-05 14:30:28 +0100 <kuribas> Franciman: yeah, that was before the clojure crowd took over the term...
2021-12-05 14:30:46 +0100burnsidesLlama(~burnsides@dhcp168-020.wadham.ox.ac.uk)
2021-12-05 14:30:51 +0100 <Franciman> what I miss in haskell, but let me say this clear, it's my fault
2021-12-05 14:30:56 +0100 <Franciman> is being able to predict what goes where
2021-12-05 14:30:59 +0100 <Franciman> in the cache
2021-12-05 14:31:05 +0100deadmarshal(~deadmarsh@95.38.231.28)
2021-12-05 14:31:10 +0100 <Franciman> and allowing super fast cache refs
2021-12-05 14:31:25 +0100 <kuribas> Then use unboxed vectors.
2021-12-05 14:31:51 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Ping timeout: 256 seconds)
2021-12-05 14:31:52 +0100max22-(~maxime@2a01cb0883359800155b4e4e6792e366.ipv6.abo.wanadoo.fr)
2021-12-05 14:32:58 +0100 <kuribas> And write strict loops.
2021-12-05 14:34:33 +0100 <kuribas> But in haskell data is code, in the sense that data is lambdas and infinite structures.
2021-12-05 14:34:40 +0100 <kuribas> So it's inherently not inspectable.
2021-12-05 14:35:11 +0100simendsjo(~user@84.211.91.241) (Remote host closed the connection)
2021-12-05 14:35:11 +0100burnsidesLlama(~burnsides@dhcp168-020.wadham.ox.ac.uk) (Ping timeout: 252 seconds)
2021-12-05 14:35:25 +0100 <kuribas> For most problems that works fine, you just write your code so that you don't *need* to inspect the logic.
2021-12-05 14:36:43 +0100son0p(~ff@181.136.122.143)
2021-12-05 14:39:35 +0100max22-(~maxime@2a01cb0883359800155b4e4e6792e366.ipv6.abo.wanadoo.fr) (Ping timeout: 252 seconds)
2021-12-05 14:39:48 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2021-12-05 14:40:55 +0100 <juri_> kuribas: unboxed vectors don't work with Data.Parallel.
2021-12-05 14:41:27 +0100 <kuribas> juri_: you don't want parallism at that granularity...
2021-12-05 14:41:43 +0100 <kuribas> juri_: except for SIMD.
2021-12-05 14:43:27 +0100lavaman(~lavaman@98.38.249.169)
2021-12-05 14:48:17 +0100chenqisu12(~chenqisu1@183.217.201.63) (Ping timeout: 256 seconds)
2021-12-05 14:48:22 +0100azimut_(~azimut@gateway/tor-sasl/azimut)
2021-12-05 14:49:20 +0100jakalx(~jakalx@base.jakalx.net)
2021-12-05 14:50:57 +0100deadmarshal(~deadmarsh@95.38.231.28) (Ping timeout: 252 seconds)
2021-12-05 14:52:15 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 276 seconds)
2021-12-05 14:54:14 +0100darchitect(~darchitec@2a00:23c6:3584:df00:7dec:bf13:8fa:748c)
2021-12-05 14:54:26 +0100alx741(~alx741@186.178.108.253) (Ping timeout: 252 seconds)
2021-12-05 14:54:32 +0100 <darchitect> hi guys
2021-12-05 14:55:29 +0100 <darchitect> first time using irc so sorry for stupid questions, but I'm just a beginner on my "Haskell journey" and was wondering if this is the right place to ask code-related questions ?
2021-12-05 14:56:05 +0100sunmountain(~sunmounta@206.217.205.57) (Ping timeout: 252 seconds)
2021-12-05 14:56:41 +0100darchite`(~user@2a00:23c6:3584:df00:7dec:bf13:8fa:748c)
2021-12-05 14:57:40 +0100 <darchite`> test
2021-12-05 14:57:48 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Quit: WeeChat 3.3)
2021-12-05 14:58:03 +0100 <darchitect> test
2021-12-05 14:58:05 +0100 <darchitect> ?
2021-12-05 14:58:37 +0100 <dignissimus> darchitect: It is
2021-12-05 14:58:41 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-12-05 14:58:54 +0100jgeerds(~jgeerds@55d4ac73.access.ecotel.net)
2021-12-05 14:58:55 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-05 14:59:23 +0100max22-(~maxime@2a01cb0883359800ca908bdf23b4cd25.ipv6.abo.wanadoo.fr)
2021-12-05 14:59:45 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 15:00:34 +0100Guest76(~Guest76@wireless-student-pt10-183-60.lut.ac.uk)
2021-12-05 15:01:59 +0100dignissimus(~dignissim@88-104-68-62.dynamic.dsl.as9105.com) (Quit: Bye!)
2021-12-05 15:02:08 +0100acidjnk_new(~acidjnk@p200300d0c7271e5135c37e9089e8a354.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2021-12-05 15:02:32 +0100burnsidesLlama(~burnsides@dhcp168-020.wadham.ox.ac.uk)
2021-12-05 15:02:35 +0100 <kuribas> darchitect: if it is haskell code, yes.
2021-12-05 15:03:00 +0100 <kuribas> darchitect: if it is not haskell code, but relevant to haskell, then also yes.
2021-12-05 15:05:49 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 15:07:03 +0100burnsidesLlama(~burnsides@dhcp168-020.wadham.ox.ac.uk) (Ping timeout: 256 seconds)
2021-12-05 15:07:28 +0100alx741(~alx741@186.178.109.217)
2021-12-05 15:08:15 +0100desantra(~skykanin@user/skykanin) (Quit: WeeChat 3.3)
2021-12-05 15:08:19 +0100 <darchitect> thanks a lot, will keep it mind !
2021-12-05 15:11:26 +0100desantra(~skykanin@user/skykanin)
2021-12-05 15:12:39 +0100InternetCitizen4(~fuzzypixe@tchebychev.ensimag.fr) (Ping timeout: 256 seconds)
2021-12-05 15:12:45 +0100InternetCitizen(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2021-12-05 15:17:26 +0100jgeerds(~jgeerds@55d4ac73.access.ecotel.net) (Ping timeout: 245 seconds)
2021-12-05 15:17:56 +0100 <Guest76> hi all, im a new haskell user and am stuck on a problem, can i ask questions here?
2021-12-05 15:18:05 +0100axeman(~quassel@ip5f5aeb08.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
2021-12-05 15:18:50 +0100 <geekosaur> yes
2021-12-05 15:19:42 +0100 <kuribas> don't ask to ask
2021-12-05 15:21:40 +0100 <Guest76> im trying to create a function where the function takes list and a character it searches through the list for and partitions each part of the list where it occurs for example countsplit "hello world" 'o' would be [4,2,3], here is my code https://paste.tomsmeding.com/dP0Nji7h
2021-12-05 15:23:55 +0100 <kuribas> Guest76: that's not valid haskell syntax.
2021-12-05 15:24:13 +0100 <kuribas> Guest76: I am not even sure what it's supposed to do...
2021-12-05 15:25:15 +0100 <kuribas> length(head(xs)) head(xs) is of type `a`, so it doesn't have a length (in general).
2021-12-05 15:25:16 +0100 <Guest76> it's meant to search the list for each instance of a character / number and find how many characters are before it and hence the list of numbers as the result
2021-12-05 15:25:36 +0100 <Guest76> qutie new to functional paradigm so sorry if it looks bad
2021-12-05 15:25:54 +0100 <kuribas> And xs could be the empty list, so `head xs` will crash.
2021-12-05 15:26:08 +0100notzmv(~zmv@user/notzmv) (Ping timeout: 268 seconds)
2021-12-05 15:26:45 +0100 <Guest76> ok
2021-12-05 15:27:06 +0100 <kuribas> Guest76: you are recursing on the list, so you don't know what is before it, unless you pass that to the recursive case.
2021-12-05 15:27:38 +0100 <kuribas> Guest76: also, [4, 3, 2] is not of type [[Int]]
2021-12-05 15:28:18 +0100 <Guest76> yes thats what im trying to do, trying to recurse through the list for each instance of a character and find the length of how many characters are before that letter so in my example you saw 4,3,2 since before the first o there was 4 characters etc...
2021-12-05 15:29:04 +0100genieliu(~genieliu@111.193.167.10)
2021-12-05 15:30:33 +0100 <kuribas> Guest76: that's not what head does...
2021-12-05 15:30:37 +0100 <kuribas> > head [1, 2, 3]
2021-12-05 15:30:39 +0100 <lambdabot> 1
2021-12-05 15:30:42 +0100 <kuribas> > head []
2021-12-05 15:30:43 +0100 <Guest76> ok so does head only take the first element
2021-12-05 15:30:43 +0100 <lambdabot> *Exception: Prelude.head: empty list
2021-12-05 15:31:11 +0100 <kuribas> Guest76: you're asking about previous elements, but they are not passed to the function...
2021-12-05 15:31:17 +0100cheater(~Username@user/cheater) (Ping timeout: 252 seconds)
2021-12-05 15:31:18 +0100 <Guest76> ok
2021-12-05 15:31:37 +0100 <kuribas> Guest76: function programming is easy, you cannot access anything that you don't pass to the function.
2021-12-05 15:31:39 +0100zebrag(~chris@user/zebrag)
2021-12-05 15:31:48 +0100 <kuribas> Unlike OO.
2021-12-05 15:32:18 +0100 <Guest76> Yes, I only have OO experience so the new ideas are slightly confusing
2021-12-05 15:32:38 +0100 <Guest76> So would it be a better idea to do it through a list comprehension or can i do it through pattern matching?
2021-12-05 15:33:03 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-12-05 15:34:25 +0100 <kuribas> Guest76: If you want to "remember" the amount of previous characters, you need to pass it.
2021-12-05 15:34:42 +0100 <kuribas> Guest76: You can make an auxiliary function.
2021-12-05 15:34:58 +0100 <kuribas> Also fix the type of countsplit.
2021-12-05 15:35:19 +0100InternetCitizen(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Ping timeout: 252 seconds)
2021-12-05 15:35:49 +0100 <Guest76> Okay, so countsplit, at the end [[Int]] isn't the type of the list I want, so it is just [Int]?
2021-12-05 15:36:06 +0100 <kuribas> :t [[1, 2], [3, 4, 5]]
2021-12-05 15:36:07 +0100 <lambdabot> Num a => [[a]]
2021-12-05 15:36:13 +0100 <kuribas> :t [1, 2, 3]
2021-12-05 15:36:14 +0100 <lambdabot> Num a => [a]
2021-12-05 15:36:16 +0100 <Guest76> got it
2021-12-05 15:36:19 +0100 <Guest76> Okay
2021-12-05 15:36:35 +0100gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-12-05 15:36:47 +0100 <kuribas> Guest76: it also depends on your course. You are probably expected to use functions that you have already seens before.
2021-12-05 15:37:42 +0100 <Guest76> I think we have to create them just for this function since this is on its own with nothing else attached to it
2021-12-05 15:38:15 +0100burnsidesLlama(~burnsides@dhcp168-020.wadham.ox.ac.uk)
2021-12-05 15:38:23 +0100 <Guest76> So for an auxillary function, can you explain to me what one is please since I don't think I've came across the term before
2021-12-05 15:38:43 +0100 <geekosaur> helper function
2021-12-05 15:39:42 +0100 <Guest76> so a function where you use where underneath
2021-12-05 15:40:00 +0100 <Guest76> I have used those before but they were never told as auxillary functions
2021-12-05 15:40:37 +0100 <geekosaur> no, "where" isn't related. just a function that uses another function to do part of the work
2021-12-05 15:40:55 +0100 <geekosaur> either as part of recursion or to avoid duplicating code
2021-12-05 15:41:02 +0100 <kuribas> Guest76: How to write this function should be in the course material.
2021-12-05 15:41:54 +0100 <Guest76> So in the case of my problem, I can use an auxillary function to split the list into indexes where the character occurs then find the lengths of each of those indexes
2021-12-05 15:42:01 +0100 <Guest76> That is what I am getting at
2021-12-05 15:42:30 +0100 <kuribas> no, countsplitaux :: Eq a => Int -> [a] -> a -> [Int]
2021-12-05 15:42:43 +0100 <kuribas> you pass the current index to the function.
2021-12-05 15:43:25 +0100 <Guest76> Why would I need the Int at the start of the function definition?
2021-12-05 15:45:35 +0100 <kuribas> it's the current index
2021-12-05 15:46:40 +0100 <Guest76> On the question it says it can only have 2 arguments [a] and a so would I have to do that in a separate function and use that within countsplit
2021-12-05 15:46:41 +0100kennyd(~bc8165b6@cerf.good1.com) (Quit: CGI:IRC)
2021-12-05 15:47:03 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds)
2021-12-05 15:47:06 +0100xsperry(~xs@user/xsperry) ()
2021-12-05 15:47:15 +0100kennyd(~bc8165b6@cerf.good1.com)
2021-12-05 15:48:09 +0100 <kuribas> yes
2021-12-05 15:48:50 +0100 <kennyd> Guest76, countsplit xs y = go 0 xs y where go {- your main definition goes in here -}. the point of this is to avoid passing index, which would always be 0, to the countsplit as the user of that function
2021-12-05 15:49:06 +0100 <kuribas> > let countsplit l x = fold $ zipWith ($) (map (\y i -> if x == y then [i] else []) l) [0..] in countsplit "hello world" 'o'
2021-12-05 15:49:08 +0100 <lambdabot> [4,7]
2021-12-05 15:49:34 +0100 <Guest76> Ok, I shall give that a go. So I am going to try and create a function which would make 'hello world' 'o' into ['hell', ' w', 'rld'] then find the length of those
2021-12-05 15:49:40 +0100 <Guest76> thank you very much kuribas
2021-12-05 15:49:47 +0100 <Guest76> thank you kennyd
2021-12-05 15:49:48 +0100 <kuribas> Guest76: don't use that
2021-12-05 15:50:00 +0100 <Guest76> dont use what sorry?
2021-12-05 15:50:10 +0100 <kuribas> my example
2021-12-05 15:50:33 +0100 <Guest76> yeah i am not going to or else i wont learn (y)
2021-12-05 15:50:54 +0100 <kennyd> Guest76, if that is your end goal I'd create sublists directly instead of generating indices first
2021-12-05 15:50:55 +0100 <Guest76> I appreciate your help and being patient with me
2021-12-05 15:51:26 +0100desantra(~skykanin@user/skykanin) (Quit: WeeChat 3.3)
2021-12-05 15:51:26 +0100 <Guest76> kennyd thats what im going to do i think
2021-12-05 15:51:41 +0100deadmarshal(~deadmarsh@95.38.231.28)
2021-12-05 15:51:53 +0100 <Guest76> i had a look on google turns out there are modules i can use but unfortunately we are not allowed to use anu
2021-12-05 15:51:56 +0100 <Guest76> any
2021-12-05 15:52:06 +0100 <kennyd> yeah
2021-12-05 15:52:11 +0100jkaye(~jkaye@2601:281:8300:7530:5a4f:5910:1ea1:e61f)
2021-12-05 15:52:22 +0100 <bbear100> How can you use do notation in ghci ?
2021-12-05 15:52:57 +0100 <kennyd> > splitOn "o" "hello world"
2021-12-05 15:52:59 +0100 <lambdabot> ["hell"," w","rld"]
2021-12-05 15:53:18 +0100 <kennyd> bbear100, you can use semicolons
2021-12-05 15:53:20 +0100 <Guest76> yeah thats what i want but isnt that in a module
2021-12-05 15:53:22 +0100 <tomsmeding> > do { x <- [1,2,3] ; y <- [4,5,6] ; return (x + y) }
2021-12-05 15:53:24 +0100 <lambdabot> [5,6,7,6,7,8,7,8,9]
2021-12-05 15:53:29 +0100 <geekosaur> bbear100, probably with braces. ghci has a multiline mode (two, actually) but it's painful
2021-12-05 15:53:46 +0100 <kennyd> Guest76, it is
2021-12-05 15:53:47 +0100 <bbear100> ok :+1:
2021-12-05 15:53:59 +0100 <geekosaur> and just naïvely hitting return won't do what you want
2021-12-05 15:54:08 +0100 <kennyd> Guest76, nevermind that, was just testing if it worked in lambdabot
2021-12-05 15:54:14 +0100 <Guest76> going to have to create a function to do that then
2021-12-05 15:54:15 +0100CiaoSen(~Jura@p200300c9570204002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Quit: CiaoSen)
2021-12-05 15:55:58 +0100 <kennyd> Guest76, your type would be countsplit :: Eq a => [a] -> a -> [[a]]
2021-12-05 15:56:21 +0100deadmarshal(~deadmarsh@95.38.231.28) (Ping timeout: 256 seconds)
2021-12-05 15:56:25 +0100 <Guest76> why not [[Int]]?
2021-12-05 15:57:13 +0100 <kennyd> ["hell"," w","rld"] is not [[Int]]
2021-12-05 15:57:43 +0100 <Guest76> I want to make that into [4,2,3] as that will be how many characters are in each element
2021-12-05 15:58:45 +0100 <kennyd> you don't need that step if the goal is to take "hello world" and 'o', and return ["hell"," w","rld"]
2021-12-05 15:59:22 +0100 <bbear100> do you have the feeling that you do serious mental gymnastic when coding in haskell ?
2021-12-05 15:59:53 +0100 <bbear100> I'd like to be a bit more comfortable with automatisms
2021-12-05 16:00:06 +0100 <Guest76> I want [4,2,3] returned, ["hell"," w","rld"] is what the indexes of [4,2,3] will be from due to that being the length of each element of ["hell"," w","rld"]
2021-12-05 16:00:50 +0100 <kennyd> Guest76, ok, then Eq a => [a] -> a -> [Int]
2021-12-05 16:01:12 +0100xsperry(~xs@user/xsperry)
2021-12-05 16:01:31 +0100 <bbear100> map length ["hell"," w","rld"] ?
2021-12-05 16:02:14 +0100 <Guest76> kennyd I had that before so thats good that i had the right idea
2021-12-05 16:03:06 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 16:03:08 +0100 <Guest76> bbear100 Yeah I do sometimes lol, especially as im a beginner and that is what im trying to acheive yeah, just need to get that list from ["hello world"] 'o' now
2021-12-05 16:03:23 +0100unyu(~pyon@user/pyon) (Quit: WeeChat 3.3)
2021-12-05 16:04:35 +0100unyu(~pyon@user/pyon)
2021-12-05 16:06:11 +0100xkuru(~xkuru@user/xkuru)
2021-12-05 16:06:19 +0100axeman(~quassel@2a02:8109:a3c0:b10:91ce:4409:54:e379)
2021-12-05 16:11:05 +0100 <xsperry> @hoogle Eq a => a -> [a] -> [Int]
2021-12-05 16:11:06 +0100 <lambdabot> Data.List elemIndices :: Eq a => a -> [a] -> [Int]
2021-12-05 16:11:06 +0100 <lambdabot> GHC.OldList elemIndices :: Eq a => a -> [a] -> [Int]
2021-12-05 16:11:06 +0100 <lambdabot> BasePrelude elemIndices :: Eq a => a -> [a] -> [Int]
2021-12-05 16:11:30 +0100 <xsperry> Data.List.elemIndices is in base, so you may be able to use it, if this is part of larger excercise
2021-12-05 16:11:45 +0100kuribas(~user@ptr-25vy0i87ls363spjkfx.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2021-12-05 16:11:55 +0100 <xsperry> > elemIndices 'o' "hello world"
2021-12-05 16:11:56 +0100 <lambdabot> [4,7]
2021-12-05 16:13:11 +0100 <Guest76> xsperry unfortunately it isn't, they specifically said that no modules are to be used at any point
2021-12-05 16:13:21 +0100 <bbear100> why don't you write your own function?
2021-12-05 16:13:27 +0100 <Guest76> thats what i am doing now haha
2021-12-05 16:17:29 +0100genieliu(~genieliu@111.193.167.10) (Ping timeout: 252 seconds)
2021-12-05 16:17:44 +0100 <bbear100> using takeWhile and an accumulator for the length should work
2021-12-05 16:19:05 +0100 <kennyd> > [ i | (i,x) <- zip [0..] "hello world", x=='o']
2021-12-05 16:19:07 +0100 <lambdabot> [4,7]
2021-12-05 16:20:45 +0100 <Guest76> thanks for the help and explanations everyone going to give this a good go now (y)
2021-12-05 16:21:08 +0100 <kennyd> neat solution that I, admittedly, stole from lambdabot :)
2021-12-05 16:21:20 +0100 <kennyd> > zip [0..] "hello world"
2021-12-05 16:21:21 +0100 <lambdabot> [(0,'h'),(1,'e'),(2,'l'),(3,'l'),(4,'o'),(5,' '),(6,'w'),(7,'o'),(8,'r'),(9,...
2021-12-05 16:21:59 +0100 <kennyd> @src elemIndices
2021-12-05 16:22:00 +0100 <lambdabot> elemIndices x = findIndices (x==)
2021-12-05 16:22:03 +0100 <kennyd> @src findIndices
2021-12-05 16:22:04 +0100 <lambdabot> findIndices p xs = [ i | (x,i) <- zip xs [0..], p x]
2021-12-05 16:22:25 +0100Farzad(~FarzadBek@37.98.106.33) (Ping timeout: 256 seconds)
2021-12-05 16:23:21 +0100polezaivsani(~polezaivs@orangeshoelaces.net) (Ping timeout: 252 seconds)
2021-12-05 16:25:09 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 16:25:29 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 16:27:20 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 16:27:38 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 16:27:56 +0100hook54321(sid149355@user/hook54321) (Ping timeout: 252 seconds)
2021-12-05 16:28:02 +0100taktoa[c](sid282096@id-282096.tinside.irccloud.com) (Ping timeout: 240 seconds)
2021-12-05 16:29:28 +0100__monty__(~toonn@user/toonn)
2021-12-05 16:29:37 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-12-05 16:30:38 +0100hook54321(sid149355@user/hook54321)
2021-12-05 16:31:13 +0100taktoa[c](sid282096@id-282096.tinside.irccloud.com)
2021-12-05 16:31:18 +0100gzj(~GZJ0X@216.24.178.99.16clouds.com)
2021-12-05 16:36:31 +0100son0p(~ff@181.136.122.143) (Remote host closed the connection)
2021-12-05 16:37:42 +0100gzj(~GZJ0X@216.24.178.99.16clouds.com) (Remote host closed the connection)
2021-12-05 16:41:47 +0100yauhsien(~yauhsien@61-231-32-247.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-12-05 16:42:59 +0100desantra(~skykanin@user/skykanin)
2021-12-05 16:44:06 +0100yauhsien(~yauhsien@61-231-32-247.dynamic-ip.hinet.net)
2021-12-05 16:44:34 +0100 <xsperry> > [ i | (i,'o') <- zip [0..] "hello world"]
2021-12-05 16:44:36 +0100 <lambdabot> [4,7]
2021-12-05 16:47:15 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 16:47:17 +0100johnjay(~pi@192.142.100.50) (Ping timeout: 256 seconds)
2021-12-05 16:47:33 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 16:48:50 +0100johnjay(~pi@154.6.152.74)
2021-12-05 16:49:03 +0100yauhsien(~yauhsien@61-231-32-247.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-12-05 16:51:13 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 16:51:31 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 16:53:11 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 16:53:29 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 16:54:08 +0100cheater(~Username@user/cheater)
2021-12-05 16:54:16 +0100CiaoSen(~Jura@p200300c9570204002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2021-12-05 16:55:17 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:e52b:eca6:e736:3c6b)
2021-12-05 16:55:59 +0100lavaman(~lavaman@98.38.249.169)
2021-12-05 16:57:05 +0100 <bbear100> > guestFoo :: String -> Char -> [Int]
2021-12-05 16:57:05 +0100 <bbear100> guestFoo inputStr token = guestFoo' 0 inputStr token
2021-12-05 16:57:06 +0100 <bbear100>   where guestFoo' n (x:xs) token
2021-12-05 16:57:06 +0100 <bbear100>           | x == token = (n:(guestFoo' (n+1) xs token))
2021-12-05 16:57:07 +0100 <lambdabot> error:
2021-12-05 16:57:07 +0100 <lambdabot> Variable not in scope: guestFoo :: String -> Char -> [Int]
2021-12-05 16:57:07 +0100 <bbear100>           | otherwise = guestFoo' (n+1) xs token
2021-12-05 16:57:07 +0100 <bbear100>         guestFoo' _ null = null
2021-12-05 16:57:30 +0100 <bbear100> > guestFoo :: String -> Char -> [Int]
2021-12-05 16:57:30 +0100 <bbear100> > guestFoo inputStr token = guestFoo' 0 inputStr token
2021-12-05 16:57:31 +0100 <bbear100> >   where guestFoo' n (x:xs) token
2021-12-05 16:57:31 +0100 <bbear100> >         | x == token = (n:(guestFoo' (n+1) xs token))
2021-12-05 16:57:31 +0100 <lambdabot> error:
2021-12-05 16:57:31 +0100 <lambdabot> Variable not in scope: guestFoo :: String -> Char -> [Int]
2021-12-05 16:57:32 +0100 <bbear100> >         | otherwise = guestFoo' (n+1) xs token
2021-12-05 16:57:32 +0100 <lambdabot> <hint>:1:25: error: parse error on input ‘=’
2021-12-05 16:57:32 +0100 <bbear100> >       guestFoo' _ null = null
2021-12-05 16:57:32 +0100 <lambdabot> <hint>:1:3: error: parse error on input ‘where’
2021-12-05 16:57:33 +0100burnsidesLlama(~burnsides@dhcp168-020.wadham.ox.ac.uk) (Remote host closed the connection)
2021-12-05 16:57:42 +0100lbseale(~ep1ctetus@user/ep1ctetus)
2021-12-05 16:58:03 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Ping timeout: 256 seconds)
2021-12-05 16:58:09 +0100burnsidesLlama(~burnsides@dhcp168-020.wadham.ox.ac.uk)
2021-12-05 16:59:39 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:e52b:eca6:e736:3c6b) (Ping timeout: 252 seconds)
2021-12-05 17:02:39 +0100burnsidesLlama(~burnsides@dhcp168-020.wadham.ox.ac.uk) (Ping timeout: 256 seconds)
2021-12-05 17:04:21 +0100justsomeguy(~justsomeg@user/justsomeguy)
2021-12-05 17:05:25 +0100 <bbear100> Guest76 https://0bin.net/paste/1qYvulRI#Xu76HUnNZ88TgrVcjrmxhNwUL91uOvOIDqxA3ztb97J
2021-12-05 17:05:47 +0100yauhsien(~yauhsien@61-231-32-247.dynamic-ip.hinet.net)
2021-12-05 17:05:50 +0100bbear100(~bbear@2a01:e34:ec2b:d430:e0dd:e718:df68:1877) (Quit: Client closed)
2021-12-05 17:07:36 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-12-05 17:07:52 +0100 <gentauro> `While building package network-3.1.1.1 (scroll up to its section to see the error)` :S
2021-12-05 17:07:57 +0100Farzad(~FarzadBek@185.212.51.70)
2021-12-05 17:07:58 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-12-05 17:08:13 +0100 <gentauro> no `lsp-haskell` on the `apple m1` :(
2021-12-05 17:09:01 +0100 <gentauro> I noticed that `stack` doesn't really care about `m1` unless you make an alias like: `stack='stack --arch=aarch64'`
2021-12-05 17:10:08 +0100gentauroeven though I have added the `arch: aarch64` to `.stack/global-project/stack.yaml`
2021-12-05 17:11:41 +0100 <gentauro> perhaps I should aim for building it for the `rosetta x64` and execute it with emulation
2021-12-05 17:11:47 +0100 <gentauro> but, that would suck
2021-12-05 17:11:54 +0100 <gentauro> all network "emulated" :-\
2021-12-05 17:14:31 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Ping timeout: 245 seconds)
2021-12-05 17:18:50 +0100Vajb(~Vajb@nalkaylds2h97nzof-2.v6.elisa-mobile.fi)
2021-12-05 17:20:16 +0100slowButPresent(~slowButPr@user/slowbutpresent)
2021-12-05 17:23:58 +0100 <maerwald> gentauro: network package was fixed
2021-12-05 17:25:30 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-05 17:26:14 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 17:26:55 +0100 <maerwald> https://hackage.haskell.org/package/network-3.1.2.5/changelog
2021-12-05 17:28:22 +0100 <EvanR> Guest76, here's a helpful predefined list function
2021-12-05 17:28:27 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-12-05 17:28:38 +0100 <EvanR> > span (=='o') "hello world"
2021-12-05 17:28:39 +0100 <lambdabot> ("","hello world")
2021-12-05 17:28:45 +0100 <EvanR> thonk
2021-12-05 17:28:52 +0100 <EvanR> > span (/='o') "hello world"
2021-12-05 17:28:54 +0100 <lambdabot> ("hell","o world")
2021-12-05 17:28:59 +0100 <EvanR> > break (=='o') "hello world"
2021-12-05 17:29:01 +0100 <lambdabot> ("hell","o world")
2021-12-05 17:29:33 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-05 17:32:35 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 17:32:52 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 17:33:20 +0100connrs(~connrs@user/connrs) (Read error: Connection reset by peer)
2021-12-05 17:33:48 +0100lbseale(~ep1ctetus@user/ep1ctetus) (Read error: Connection reset by peer)
2021-12-05 17:34:46 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:e52b:eca6:e736:3c6b)
2021-12-05 17:35:53 +0100connrs(~connrs@user/connrs)
2021-12-05 17:36:17 +0100burnsidesLlama(~burnsides@dhcp168-020.wadham.ox.ac.uk)
2021-12-05 17:38:49 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 17:39:07 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 17:40:47 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 17:40:50 +0100hololeap_(~hololeap@user/hololeap)
2021-12-05 17:41:05 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 17:41:15 +0100hololeap(~hololeap@user/hololeap) (Ping timeout: 276 seconds)
2021-12-05 17:41:38 +0100burnsidesLlama(~burnsides@dhcp168-020.wadham.ox.ac.uk) (Ping timeout: 252 seconds)
2021-12-05 17:42:53 +0100euandreh(~euandreh@2804:14c:33:9fe5:f767:b15a:e5b1:96f0)
2021-12-05 17:43:44 +0100pgib(~textual@173.38.117.87)
2021-12-05 17:45:24 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 17:45:42 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 17:46:21 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-05 17:46:39 +0100neurocyte0132889(~neurocyte@94.46.79.27)
2021-12-05 17:46:39 +0100neurocyte0132889(~neurocyte@94.46.79.27) (Changing host)
2021-12-05 17:46:39 +0100neurocyte0132889(~neurocyte@user/neurocyte)
2021-12-05 17:47:52 +0100Hanicef(~gustaf@81-229-9-108-no92.tbcn.telia.com)
2021-12-05 17:51:29 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-12-05 17:52:42 +0100notzmv(~zmv@user/notzmv)
2021-12-05 17:54:18 +0100desantra(~skykanin@user/skykanin) (Read error: Connection reset by peer)
2021-12-05 17:57:28 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-12-05 17:58:05 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-12-05 17:59:56 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-12-05 18:00:00 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-05 18:00:00 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-05 18:00:00 +0100wroathe(~wroathe@user/wroathe)
2021-12-05 18:00:18 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-12-05 18:01:40 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-05 18:02:36 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-05 18:03:49 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-12-05 18:04:11 +0100mikoto-chan(~mikoto-ch@esm-84-240-99-143.netplaza.fi) (Ping timeout: 252 seconds)
2021-12-05 18:05:00 +0100mikoto-chan(~mikoto-ch@esm-84-240-99-143.netplaza.fi)
2021-12-05 18:05:04 +0100deadmarshal(~deadmarsh@95.38.231.28)
2021-12-05 18:05:25 +0100sebeko(uid530526@id-530526.helmsley.irccloud.com)
2021-12-05 18:06:03 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Ping timeout: 256 seconds)
2021-12-05 18:15:09 +0100tito(tito@tilde.team) (Quit: WeeChat 3.2.1)
2021-12-05 18:15:14 +0100renzhi(~xp@2607:fa49:6500:b100::5cef)
2021-12-05 18:16:27 +0100tito(tito@tilde.team)
2021-12-05 18:19:58 +0100 <dsal> Hey, someone fixed the compiler on my mac. Thanks, someone.
2021-12-05 18:20:24 +0100 <Franciman> \o/
2021-12-05 18:20:26 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.3)
2021-12-05 18:20:39 +0100CiaoSen(~Jura@p200300c9570204002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2021-12-05 18:21:09 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2021-12-05 18:23:14 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2021-12-05 18:28:06 +0100justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.3)
2021-12-05 18:28:46 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2021-12-05 18:32:26 +0100 <EvanR> is your compiler running?
2021-12-05 18:32:31 +0100 <EvanR> better catch it
2021-12-05 18:32:47 +0100 <juri_> my compiler is too lazy to run.
2021-12-05 18:33:43 +0100jakalx(~jakalx@base.jakalx.net)
2021-12-05 18:33:53 +0100deadmarshal(~deadmarsh@95.38.231.28) (Ping timeout: 256 seconds)
2021-12-05 18:36:52 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 18:37:37 +0100econo(uid147250@user/econo)
2021-12-05 18:38:00 +0100InternetCitizen(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2021-12-05 18:38:17 +0100axeman(~quassel@2a02:8109:a3c0:b10:91ce:4409:54:e379) (Ping timeout: 252 seconds)
2021-12-05 18:39:41 +0100 <dsal> I have no idea what my compiler is doing. Benchmarks are varying so wildly that it could be doing anything.
2021-12-05 18:39:55 +0100 <Franciman> dsal: writing a compiler for your language?
2021-12-05 18:40:47 +0100 <dsal> No, just doing AoC stuff. But when I try to speed something up, it just sort of goes random.
2021-12-05 18:41:06 +0100 <dsal> Benchmarks I was running last night in 500ms are now taking 14s -- in code I didn't change.
2021-12-05 18:41:19 +0100 <dsal> This didn't seem to change when I moved away from rosetta.
2021-12-05 18:41:37 +0100 <Franciman> dsal: did you learn about STG machine?
2021-12-05 18:41:39 +0100 <Franciman> et similia
2021-12-05 18:41:58 +0100 <Franciman> this seems to help understanding what goes on
2021-12-05 18:43:38 +0100 <sebeko> Was there a separate channel for haskell AoC?
2021-12-05 18:44:46 +0100 <dsal> Franciman: Not sure what that is.
2021-12-05 18:45:08 +0100 <dsal> It's getting voodoo for me, though. All I've done since last night was plugged my computer in and moved it to a different room.
2021-12-05 18:45:21 +0100 <Franciman> if you speak italian, we are discussing them in #haskell-it-offtopic
2021-12-05 18:45:37 +0100 <Franciman> same, dear dsal. same T.T
2021-12-05 18:45:38 +0100 <dsal> I've since also shifted to a native compiler, but that doesn't seem to be an issue.
2021-12-05 18:45:50 +0100 <Franciman> optimisation is _hard_
2021-12-05 18:46:53 +0100abccgr(abccgr@117.194.180.165)
2021-12-05 18:46:55 +0100 <dsal> I'd be fine if it were at least *consistent*. :)
2021-12-05 18:46:59 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2021-12-05 18:46:59 +0100finn_elija(~finn_elij@user/finn-elija/x-0085643)
2021-12-05 18:46:59 +0100finn_elijaFinnElija
2021-12-05 18:47:15 +0100 <Franciman> are you optimizing haskell, dsal ?
2021-12-05 18:47:18 +0100 <sebeko> dsal: you can always try running on linux (say online) and see if it is at all caused by your machine
2021-12-05 18:48:04 +0100 <dsal> I've got a thinkpad next to me. It seems way happier.
2021-12-05 18:48:24 +0100 <dsal> Franciman: I was trying to, but doing it with inconsistent benchmarks is a really dumb idea.
2021-12-05 18:49:04 +0100 <dsal> A few years ago, I was doing this and my (intel) mac was consistently faster than my Linux machine.
2021-12-05 18:49:58 +0100 <Franciman> do you use criterion for getting some statistcal info
2021-12-05 18:50:01 +0100 <Franciman> ?
2021-12-05 18:50:39 +0100 <dsal> Yeah
2021-12-05 18:50:48 +0100 <Franciman> i see
2021-12-05 18:50:52 +0100 <sebeko> You could also bench functions separately to bisect the problem I think 🤔
2021-12-05 18:50:55 +0100 <dsal> But it's not subtle at all.
2021-12-05 18:51:07 +0100 <dsal> Literally zero changes, went from 500ms to 13s
2021-12-05 18:51:11 +0100 <dsal> ~14s
2021-12-05 18:51:41 +0100 <dsal> The only thing that actually changed was plugging in my laptop.
2021-12-05 18:51:56 +0100 <dsal> Switching compilers off of rosetta didn't help, but it didn't hurt, so... OK?
2021-12-05 18:52:03 +0100 <dsal> But I'm going to stop thinking about this. :)
2021-12-05 18:52:23 +0100 <Franciman> lol
2021-12-05 18:52:26 +0100 <Franciman> awesum
2021-12-05 18:52:27 +0100curiousgay(~curiousga@77-120-141-90.kha.volia.net) (Quit: Leaving)
2021-12-05 18:52:29 +0100 <Franciman> this may be a bug
2021-12-05 18:52:41 +0100 <sebeko> When I was going crazy from something like this, the problem was I saved the file :D
2021-12-05 18:52:50 +0100 <Franciman> lol
2021-12-05 18:53:44 +0100 <gentauro> 17:26 < maerwald> https://hackage.haskell.org/package/network-3.1.2.5/changelog
2021-12-05 18:54:05 +0100 <gentauro> maerwald: I have to jump on the GHC-901 wagon :o https://www.stackage.org/lts-18.18/package/network-3.1.1.1
2021-12-05 18:55:00 +0100 <gentauro> maerwald: might be the right thing to do as LTS is not really working properly on the M1 anyway xD
2021-12-05 18:56:08 +0100 <InternetCitizen> if I want to use something like Megaparsec or attoparsec, do I have to use cabal/stack?
2021-12-05 18:56:43 +0100 <Franciman> not necessarily, but it would be much easier yes
2021-12-05 18:57:00 +0100 <InternetCitizen> I'm not too sure how Haskell dependency management works, I know I can just use stack but this is a simple AOC problem and I'd really like to simply compile my code with plain old GHC and a makefile
2021-12-05 18:57:11 +0100 <sebeko> Have to? No I think there is ghc-pkg or something
2021-12-05 18:57:36 +0100 <sebeko> Cabal has yaml files and is very easy to setup for aoc
2021-12-05 18:57:59 +0100 <sebeko> there are even templates on reddit ;)
2021-12-05 18:59:00 +0100 <InternetCitizen> I see, maybe I will just use Parsec
2021-12-05 18:59:31 +0100 <Franciman> InternetCitizen: if you have cabal installed
2021-12-05 18:59:50 +0100 <Franciman> cabal has a much lighter way than stack at getting you started in this case
2021-12-05 19:00:07 +0100 <Franciman> the chief problem of not using cabal is that attoparsec and megaparsec have their dependencies
2021-12-05 19:00:12 +0100 <Franciman> so you have to also compile them
2021-12-05 19:00:45 +0100 <Franciman> of not using cabal/stack*
2021-12-05 19:00:52 +0100 <Franciman> yeah parsec is a good tradeoff
2021-12-05 19:04:26 +0100hololeap(~hololeap@user/hololeap)
2021-12-05 19:04:57 +0100Vajb(~Vajb@nalkaylds2h97nzof-2.v6.elisa-mobile.fi) (Read error: Connection reset by peer)
2021-12-05 19:05:06 +0100hololeap_(~hololeap@user/hololeap) (Ping timeout: 276 seconds)
2021-12-05 19:05:08 +0100 <EvanR> dsal, first, performance something that runs very quickly can be very sensitive to OS conditions. Like memory cache, i/o cache, other processes
2021-12-05 19:05:55 +0100 <EvanR> second, to get a feel for what's happening you might want to accumulate a lot of samples and check mean and std deviation
2021-12-05 19:05:57 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-12-05 19:06:11 +0100yauhsien(~yauhsien@61-231-32-247.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-12-05 19:06:38 +0100 <EvanR> I don't know how deterministic the GC is either
2021-12-05 19:09:35 +0100burnsidesLlama(~burnsides@dhcp168-020.wadham.ox.ac.uk)
2021-12-05 19:10:21 +0100hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2021-12-05 19:11:38 +0100hololeap(~hololeap@user/hololeap)
2021-12-05 19:12:06 +0100 <dsal> gentauro: I've mostly been having good luck with LTS on m1. This new machine has had a few oddities.
2021-12-05 19:13:51 +0100axeman(~quassel@2a02:8109:a3c0:b10:9fd2:9b38:d0eb:7d85)
2021-12-05 19:14:09 +0100 <dsal> My problem seems to be some kind of linker madness.
2021-12-05 19:14:57 +0100dhruvasagar(~dhruvasag@49.207.222.205)
2021-12-05 19:15:42 +0100 <dsal> If I roll back to an older version of my code before I added a new benchmark, I get ~400ms on this benchmark.
2021-12-05 19:15:52 +0100 <dsal> Ha, then I rolled it forward and now it's ~600ms.
2021-12-05 19:25:01 +0100deadmarshal(~deadmarsh@95.38.231.28)
2021-12-05 19:27:05 +0100ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Ping timeout: 256 seconds)
2021-12-05 19:27:53 +0100 <janus> InternetCitizen: if you use cabal/scripts or files, you can have each AoC day be self-contained. no need for separate configuration files
2021-12-05 19:28:35 +0100 <janus> you just stick a header on each day speciying its dependencies, then cabal/stack can run it
2021-12-05 19:29:06 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:e52b:eca6:e736:3c6b) (Remote host closed the connection)
2021-12-05 19:30:46 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 19:30:46 +0100notzmv(~zmv@user/notzmv) (Ping timeout: 245 seconds)
2021-12-05 19:31:03 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 19:31:38 +0100deadmarshal(~deadmarsh@95.38.231.28) (Ping timeout: 252 seconds)
2021-12-05 19:32:10 +0100Lycurgus(~juan@98.4.112.204)
2021-12-05 19:33:02 +0100Erutuon(~Erutuon@user/erutuon)
2021-12-05 19:36:13 +0100notzmv(~zmv@user/notzmv)
2021-12-05 19:37:04 +0100yauhsien(~yauhsien@61-231-32-247.dynamic-ip.hinet.net)
2021-12-05 19:39:07 +0100 <EvanR> "don't attempt to mutate vector after unsafeThaw unless you know how to prevent GHC from aliasing buffers accidentally. We don't" xD
2021-12-05 19:39:58 +0100johnw(~johnw@2607:f6f0:3004:1:c8b4:50ff:fef8:6bf0)
2021-12-05 19:40:35 +0100 <InternetCitizen> janus: I'm not very familar with the header technique ...
2021-12-05 19:40:42 +0100 <InternetCitizen> what does it onsist of?
2021-12-05 19:41:19 +0100 <janus> InternetCitizen: look at https://cabal.readthedocs.io/en/latest/cabal-commands.html#cabal-v2-run and scroll down to "v2-run also supports running script files"
2021-12-05 19:41:39 +0100 <InternetCitizen> thank you very much
2021-12-05 19:42:05 +0100yauhsien(~yauhsien@61-231-32-247.dynamic-ip.hinet.net) (Ping timeout: 252 seconds)
2021-12-05 19:43:48 +0100 <EvanR> it's pretty convenient, except for the initial delay to run the file
2021-12-05 19:44:36 +0100 <EvanR> though when iterating AoC attempts you have to recompile and relink anyway
2021-12-05 19:46:29 +0100jkaye(~jkaye@2601:281:8300:7530:5a4f:5910:1ea1:e61f) (Ping timeout: 252 seconds)
2021-12-05 19:47:01 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-12-05 19:47:57 +0100Lycurgus(~juan@98.4.112.204) (Quit: Exeunt)
2021-12-05 19:49:20 +0100mbuf(~Shakthi@122.174.197.155) (Quit: Leaving)
2021-12-05 19:49:47 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds)
2021-12-05 19:51:27 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 19:51:45 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 19:52:08 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.3)
2021-12-05 19:52:23 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-12-05 19:53:09 +0100 <raehik> Which of Nat and Natural should I use for easy type-level naturals? on Hackage it sounds like they've been merged recently, maybe? but there are Integer <-> Natural funcs but none for Nat
2021-12-05 19:55:59 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 19:56:11 +0100bradparker(sid262931@uxbridge.irccloud.com) (Read error: Connection reset by peer)
2021-12-05 19:56:16 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 19:56:20 +0100bradparker(sid262931@id-262931.uxbridge.irccloud.com)
2021-12-05 19:59:55 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 20:00:13 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 20:00:21 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-05 20:01:03 +0100 <awpr> before the merge, `Natural` was not possible to use at type level. if you care about compatibility with GHC < 9.2, `Nat` is the only choice
2021-12-05 20:01:30 +0100 <awpr> if you're writing an application that only needs to build with GHC 9.2+, there's no difference between the two (it's literally `type Nat = Natural`
2021-12-05 20:02:18 +0100 <awpr> ah, it's been a few minutes, since that message, so I'll ping: raehik
2021-12-05 20:02:46 +0100Cajun(~Cajun@user/cajun)
2021-12-05 20:02:59 +0100 <raehik> awpr: ahhhh. I see, it's because I hadn't actually being using Natural at the type level until now, just with datakinds
2021-12-05 20:03:28 +0100 <raehik> ahhhh and it's because I'm on Stack GHC which isn't 9.2 yet >:(
2021-12-05 20:04:01 +0100 <awpr> hmm, DataKinds is exactly about promoting term-level data to type level, so I don't understand the last message
2021-12-05 20:04:57 +0100wootehfoot(~wootehfoo@user/wootehfoot)
2021-12-05 20:05:39 +0100 <awpr> hmm... GHC 8.6.5 actually accepts using `Natural` as a kind. but maybe it's impossible to construct a type-level thing of that kind?
2021-12-05 20:05:48 +0100 <raehik> ah sry I mean typefamilies then. I wasn't putting Naturals in the type level but they got returned by a type family, and I had slightly confused myself
2021-12-05 20:06:20 +0100 <raehik> and just now yeah, I used it as a kind. but as you say, hadn't tried constructed a type level one
2021-12-05 20:06:48 +0100 <awpr> ah right, indeed that wouldn't have required the unified Nat/Natural yet
2021-12-05 20:07:23 +0100max22-(~maxime@2a01cb0883359800ca908bdf23b4cd25.ipv6.abo.wanadoo.fr) (Ping timeout: 252 seconds)
2021-12-05 20:08:35 +0100 <raehik> so I'll use Natural everywhere I can, and Nat for while I can't upgrade to GHC 9.2. until Stackage moves their nightlies
2021-12-05 20:08:38 +0100 <raehik> thx awpr !
2021-12-05 20:09:46 +0100axeman(~quassel@2a02:8109:a3c0:b10:9fd2:9b38:d0eb:7d85) (Quit: No Ping reply in 180 seconds.)
2021-12-05 20:10:18 +0100 <awpr> yeah, the only thing I know of that this unification _really_ changes is the ability to use the same definition for term and type level: `data Thing = Thing Natural` pre-unification can't be promoted usefully, it'd have to be `data Thing a = Thing a` and `type TermThing = Thing Natural` and `type TypeThing = Thing Nat` to treat them differently
2021-12-05 20:10:31 +0100ss4(~wootehfoo@user/wootehfoot)
2021-12-05 20:11:00 +0100 <awpr> so if you don't need to do that very specific thing, I think it shouldn't affect you and you should be fine just using `Nat` for type-level and `Natural` for term-level
2021-12-05 20:11:01 +0100axeman(~quassel@2a02:8109:a3c0:b10:c575:40eb:1f86:4317)
2021-12-05 20:11:05 +0100AlexNoo_(~AlexNoo@178.34.151.83)
2021-12-05 20:11:07 +0100mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2021-12-05 20:11:26 +0100mc47(~mc47@xmonad/TheMC47)
2021-12-05 20:11:28 +0100FarzadBekran_(~FarzadBek@185.212.51.70)
2021-12-05 20:11:44 +0100 <raehik> what do you mean by promotion - is that something GHC can do? (I only know that from singletons)
2021-12-05 20:12:25 +0100 <awpr> promotion is the term for what DataKinds enables: if `data Thing = MkThing`, then `x :: Proxy MkThing` uses the promoted data constructor `MkThing`
2021-12-05 20:12:43 +0100Techcable(~Techcable@168.235.93.147) (Quit: ZNC - https://znc.in)
2021-12-05 20:12:56 +0100Techcable_(~Techcable@168.235.93.147)
2021-12-05 20:13:03 +0100 <janus> i think you can use stack with newer compilers, you just have to put extra-deps for every single dep that is broken in the snapshot you use
2021-12-05 20:13:33 +0100wootehfoot(~wootehfoo@user/wootehfoot) (Ping timeout: 256 seconds)
2021-12-05 20:14:04 +0100 <awpr> (there isn't any built-in promotion of normal functions, only data constructors)
2021-12-05 20:14:26 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Ping timeout: 256 seconds)
2021-12-05 20:14:40 +0100AlexNoo(~AlexNoo@178.34.151.83) (Ping timeout: 256 seconds)
2021-12-05 20:14:41 +0100 <awpr> re janus yes, I've built all the packages I maintain under Stack with 9.2, with a moderate amount of effort in manually fiddling with dependencies
2021-12-05 20:15:00 +0100 <awpr> so it's definitely possible if you really must have new features for any reason
2021-12-05 20:15:07 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-12-05 20:15:49 +0100Farzad(~FarzadBek@185.212.51.70) (Ping timeout: 256 seconds)
2021-12-05 20:19:29 +0100pgib(~textual@173.38.117.87) (Ping timeout: 252 seconds)
2021-12-05 20:21:09 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2021-12-05 20:26:33 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 20:26:51 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 20:28:31 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 20:28:48 +0100abccgr(abccgr@117.194.180.165) (Remote host closed the connection)
2021-12-05 20:28:49 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 20:29:30 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:e52b:eca6:e736:3c6b)
2021-12-05 20:31:55 +0100zincy_(~zincy@2a00:23c8:970c:4801:4508:9275:13c9:2a0)
2021-12-05 20:32:03 +0100thevishy(~Nishant@2405:201:f005:c007:fd4c:a570:99e4:8844) (Quit: Leaving)
2021-12-05 20:32:29 +0100max22-(~maxime@2a01cb08833598006b46964008321399.ipv6.abo.wanadoo.fr)
2021-12-05 20:33:32 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:e52b:eca6:e736:3c6b) (Ping timeout: 240 seconds)
2021-12-05 20:34:31 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-12-05 20:37:09 +0100 <janus> how do i find out which package a symbol is exported from?
2021-12-05 20:37:46 +0100 <janus> when i do ":t (.:)" it says aeson, but i believe that the symbol is reexported from another library, because i didn't do ":m +Data.Aeson"
2021-12-05 20:39:39 +0100 <boxscape> janus: maybe try misspelling it, ghc might suggest the correct spelling along with where it's imported from
2021-12-05 20:40:26 +0100 <boxscape> % joiin -- example
2021-12-05 20:40:26 +0100 <yahb> boxscape: ; <interactive>:14:1: error:; * Variable not in scope: joiin; * Perhaps you meant `join' (imported from Control.Monad)
2021-12-05 20:41:24 +0100 <dmj`> janus: you can use PackageImports to be explicit about it, import "base" Control.Monad (forM_)
2021-12-05 20:42:26 +0100 <boxscape> (also if ghc finds that something is a valid holefit it will also say from where it's imported)
2021-12-05 20:48:29 +0100jkaye(~jkaye@2601:281:8300:7530:3bdb:266b:f9cc:b3bc)
2021-12-05 20:49:43 +0100mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Read error: Connection reset by peer)
2021-12-05 20:50:21 +0100mjs2600(~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
2021-12-05 20:50:39 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds)
2021-12-05 20:52:58 +0100 <__monty__> Is there a function like enumFromTo/([x..y]) but that does descending ranges too without resorting to enumFromThenTo?
2021-12-05 20:53:32 +0100 <__monty__> I mean, without explicitly doing so, if the function internally uses enumFromThenTo, that's fine.
2021-12-05 20:54:50 +0100 <pragma-> the full monty
2021-12-05 20:54:52 +0100 <tomsmeding> enumImplicitFromTo x y = if y < x then enumFromThenTo x (x - 1) y else enumFromTo x y
2021-12-05 20:55:03 +0100jle`(~jle`@cpe-23-240-75-236.socal.res.rr.com) (Ping timeout: 252 seconds)
2021-12-05 20:55:26 +0100gentauro`You are using snapshot: nightly-2021-12-04`
2021-12-05 20:55:29 +0100gentauro`stack ghci`
2021-12-05 20:55:46 +0100gentauro`ghci> /private/tmp/nix-shell-96787-0/rc: line 3: 96791 Segmentation fault: 11 '/usr/local/bin/stack' $STACK_IN_NIX_EXTRA_ARGS '--internal-re-exec-version=2.7.3' '--arch=aarch64' 'ghci'`
2021-12-05 20:55:50 +0100 <gentauro> LEL
2021-12-05 20:55:57 +0100 <gentauro> I guess it's a no HaskLEL on the M1 ..
2021-12-05 20:56:44 +0100 <gentauro> why can't Levondo deliver laptops like in a timely manner? (end of Q1 2022 / start Q2 2022) #firstworldproblems
2021-12-05 20:57:02 +0100jle`(~jle`@cpe-23-240-75-236.socal.res.rr.com)
2021-12-05 20:57:16 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-12-05 20:57:17 +0100 <__monty__> tomsmeding: I know the implementation is very simple, just seems like a silly thing to need to implement. I'd probably do reverse [y..x] though, doesn't rely on them being Num per se : )
2021-12-05 20:57:48 +0100Hanicef(~gustaf@81-229-9-108-no92.tbcn.telia.com) (Quit: leaving)
2021-12-05 20:58:12 +0100 <monochrom> It also relies on Ord. "y<x"
2021-12-05 20:58:36 +0100 <tomsmeding> __monty__: right, 'pred x' is better than 'x - 1'
2021-12-05 20:58:51 +0100 <monochrom> After a while, you realize that it relies on so many externalities, you begin to appreciate how, at least, it doesn't belong in Enum.
2021-12-05 20:58:52 +0100 <tomsmeding> reduces constraints from Num+Ord+Enum to Ord+Enum
2021-12-05 20:58:57 +0100 <EvanR> reverse destroys your laziness
2021-12-05 21:01:19 +0100 <EvanR> > [0 % 1 .. 5 % 1]
2021-12-05 21:01:21 +0100 <lambdabot> [0 % 1,1 % 1,2 % 1,3 % 1,4 % 1,5 % 1]
2021-12-05 21:01:26 +0100 <EvanR> > [0 % 2 .. 5 % 2]
2021-12-05 21:01:28 +0100 <lambdabot> [0 % 1,1 % 1,2 % 1,3 % 1]
2021-12-05 21:01:45 +0100 <EvanR> what is 'Enum' supposed to be anyway xD
2021-12-05 21:01:58 +0100 <tomsmeding> isn't that like the prime complaint about the class
2021-12-05 21:02:01 +0100 <tomsmeding> that the semantics are unclear
2021-12-05 21:02:15 +0100 <tomsmeding> > [1.2 .. 4.5]
2021-12-05 21:02:16 +0100 <lambdabot> [1.2,2.2,3.2,4.2]
2021-12-05 21:02:33 +0100 <tomsmeding> at least Ratio's implementation is consistent with Double's
2021-12-05 21:03:15 +0100 <EvanR> > [0/2 .. 5/2]
2021-12-05 21:03:17 +0100 <lambdabot> [0.0,1.0,2.0,3.0]
2021-12-05 21:03:22 +0100 <tomsmeding> wait wat
2021-12-05 21:03:22 +0100 <EvanR> overshoot
2021-12-05 21:03:29 +0100 <tomsmeding> ok the overshoot is consistent
2021-12-05 21:03:31 +0100 <tomsmeding> but wat
2021-12-05 21:03:47 +0100zincy_(~zincy@2a00:23c8:970c:4801:4508:9275:13c9:2a0) (Remote host closed the connection)
2021-12-05 21:04:09 +0100 <EvanR> "I'm going to add 1 and you can't stop me!!!"
2021-12-05 21:04:59 +0100 <tomsmeding> > ([1.0 .. 3.4], [1.0 .. 3.6])
2021-12-05 21:05:01 +0100 <lambdabot> ([1.0,2.0,3.0],[1.0,2.0,3.0,4.0])
2021-12-05 21:05:05 +0100 <tomsmeding> why does it round
2021-12-05 21:05:08 +0100 <tomsmeding> that makes no sense at all
2021-12-05 21:05:11 +0100juhp(~juhp@128.106.188.82) (Ping timeout: 256 seconds)
2021-12-05 21:05:26 +0100 <EvanR> oof
2021-12-05 21:06:05 +0100 <tomsmeding> I'm still not quite convinced the Enum class is useless as a whole, but that Double instance is just plain madness
2021-12-05 21:06:32 +0100 <c_wraith> I still believe the only correct instance for Float and Double counts the number of ulps you increment by
2021-12-05 21:06:40 +0100 <__monty__> tomsmeding: Right, that's even better.
2021-12-05 21:06:47 +0100juhp(~juhp@128.106.188.82)
2021-12-05 21:06:59 +0100sprout_(~quassel@2a02:a467:ccd6:1:bde9:c3fb:c9c:3dee)
2021-12-05 21:06:59 +0100 <c_wraith> No one would ever use it then, because it would be obviously wrong for their case, instead of non-obviously wrong
2021-12-05 21:07:27 +0100 <__monty__> monochrom: Didn't say it belongs in Enum. Just the kind of relatively common thing I'd expect in a common (probably base) library.
2021-12-05 21:07:34 +0100 <EvanR> something about a functor from category of reals to category of integers wrt ordering
2021-12-05 21:08:11 +0100 <EvanR> nvm lol
2021-12-05 21:08:33 +0100 <tomsmeding> what are the objects and morphisms in a category of integers :p
2021-12-05 21:09:01 +0100 <EvanR> (objects are integers, x < y would be a morphism if it were true
2021-12-05 21:10:10 +0100pfurla(~pfurla@2804:14d:5c81:4104:9dad:b7eb:58e3:98e6)
2021-12-05 21:10:15 +0100 <EvanR> if someone said give me an mapping from Int to Double, that might leaves some questions.
2021-12-05 21:10:31 +0100 <tomsmeding> EvanR: https://ncatlab.org/nlab/show/partial+order#AsACategoryWithExtraProperties
2021-12-05 21:10:32 +0100 <EvanR> (an injective mapping)
2021-12-05 21:10:38 +0100sprout(~quassel@2a02:a467:ccd6:1:ed9e:6da6:fee6:2db6) (Ping timeout: 252 seconds)
2021-12-05 21:12:18 +0100 <EvanR> > toEnum 50 :: Float
2021-12-05 21:12:19 +0100 <lambdabot> 50.0
2021-12-05 21:12:31 +0100 <EvanR> > toEnum 500000000 :: Float
2021-12-05 21:12:32 +0100 <lambdabot> 5.0e8
2021-12-05 21:12:37 +0100 <EvanR> come on..
2021-12-05 21:13:13 +0100 <EvanR> > toEnum (maxBound `div` 2) :: Float
2021-12-05 21:13:14 +0100 <lambdabot> 4.611686e18
2021-12-05 21:13:23 +0100 <EvanR> > maxBound `div` 2
2021-12-05 21:13:24 +0100 <lambdabot> error:
2021-12-05 21:13:24 +0100 <lambdabot> • Ambiguous type variable ‘a0’ arising from a use of ‘show_M806950334028...
2021-12-05 21:13:24 +0100 <lambdabot> prevents the constraint ‘(Show a0)’ from being solved.
2021-12-05 21:13:25 +0100Sgeo(~Sgeo@user/sgeo)
2021-12-05 21:13:29 +0100 <EvanR> > maxBound `div` 2 :: Int
2021-12-05 21:13:30 +0100 <lambdabot> 4611686018427387903
2021-12-05 21:13:40 +0100 <EvanR> look look it's wrong!
2021-12-05 21:15:18 +0100 <EvanR> I guess you can think of it as a fuzzy or noisy association between Int and floats
2021-12-05 21:16:06 +0100 <EvanR> the farther you go the worse it gets like a hyperbolic plane
2021-12-05 21:18:15 +0100pfurla(~pfurla@2804:14d:5c81:4104:9dad:b7eb:58e3:98e6) (Quit: gone to sleep. ZZZzzz…)
2021-12-05 21:18:39 +0100 <tomsmeding> > fromEnum (toEnum 10000000000000000 :: Float) -- EvanR possibly clearer example
2021-12-05 21:18:40 +0100 <lambdabot> 10000000272564224
2021-12-05 21:19:19 +0100sm[i]_sm[i]
2021-12-05 21:19:20 +0100sm[i](~user@li229-222.members.linode.com) (Changing host)
2021-12-05 21:19:20 +0100sm[i](~user@plaintextaccounting/sm)
2021-12-05 21:19:56 +0100 <tomsmeding> injective mapping from Int64 to either Float or Double would be impossible by the pigeonhole principle, and the fact that 0.0 == -0.0 :p
2021-12-05 21:21:05 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:e52b:eca6:e736:3c6b)
2021-12-05 21:21:14 +0100 <EvanR> > show (100 * (10000000272564224 - 10000000000000000) % 10000000000000000) ++ "%"
2021-12-05 21:21:16 +0100 <lambdabot> "16636 % 6103515625%"
2021-12-05 21:21:20 +0100 <EvanR> close enough xD
2021-12-05 21:22:13 +0100 <EvanR> > showFFloat (Just 9) (16636/6103515625) ""
2021-12-05 21:22:15 +0100 <lambdabot> "0.000002726"
2021-12-05 21:22:34 +0100 <tomsmeding> you can kind of see that from the numbers already :p
2021-12-05 21:22:43 +0100 <EvanR> lol
2021-12-05 21:22:44 +0100 <tomsmeding> point of it being a power of 10
2021-12-05 21:23:16 +0100 <EvanR> morally injective
2021-12-05 21:24:12 +0100 <Profpatsch> How do we know any of the streaming/Bundle stuff in the implementation of Vector actually does anything?
2021-12-05 21:24:14 +0100 <tomsmeding> > fromEnum (toEnum 8000000000000000001 :: Double)
2021-12-05 21:24:16 +0100 <lambdabot> 8000000000000000000
2021-12-05 21:24:19 +0100 <EvanR> pigeonhole though? there are 2^64 Int64s, but less than that Doubles
2021-12-05 21:24:27 +0100 <EvanR> oh I see
2021-12-05 21:24:34 +0100 <Profpatsch> There’s a lot of undocumented magic that seems to be hoping that fusion happens
2021-12-05 21:24:35 +0100 <tomsmeding> EvanR: Double is a 64 bit value :p
2021-12-05 21:24:50 +0100 <EvanR> a lot of values are reserved and don't represent numbers
2021-12-05 21:25:08 +0100 <EvanR> to be exploited for fun and profit
2021-12-05 21:25:10 +0100 <Profpatsch> How would I verify it actually does something as pertaining to speed?
2021-12-05 21:25:14 +0100 <tomsmeding> Profpatsch: you might want to try the -ddump-rule-firings option to GHC
2021-12-05 21:25:45 +0100 <Profpatsch> But e.g. aeson returns a Vector from its Array type
2021-12-05 21:25:57 +0100 <tomsmeding> and perhaps -fno-enable-rewrite-rules to compare
2021-12-05 21:26:12 +0100 <Profpatsch> Now, looking at its code
2021-12-05 21:26:14 +0100bollu(uid233390@id-233390.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2021-12-05 21:26:26 +0100 <tomsmeding> https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/exts/rewrite_rules.html?highlight=…
2021-12-05 21:26:46 +0100 <Profpatsch> https://hackage.haskell.org/package/aeson-2.0.2.0/docs/src/Data.Aeson.Parser.Internal.html#arrayVa…
2021-12-05 21:27:15 +0100 <Profpatsch> It *still* constructs a list, then converts it to a Vector (O(n)), then reverses the vector (O(n) again)
2021-12-05 21:27:38 +0100 <Profpatsch> And then the question remains whether the underlying data is actually garbage collected in the end
2021-12-05 21:28:06 +0100 <Profpatsch> It does pass the length to the list to the vector library
2021-12-05 21:28:17 +0100 <tomsmeding> Profpatsch: I would bet that reverse . fromListN is getting fused -- that's kind of the point of the rules. But try -ddump-rule-rewrites.
2021-12-05 21:28:19 +0100 <Profpatsch> But god knows what the performance improvementes of that are
2021-12-05 21:28:20 +0100 <EvanR> yeah, does aeson's parser depend on the input bytestring later, or is everything copies out
2021-12-05 21:28:30 +0100 <EvanR> copied
2021-12-05 21:28:33 +0100 <Profpatsch> vector certainly doesn’t document it
2021-12-05 21:28:39 +0100 <tomsmeding> and see the docs page I linked
2021-12-05 21:29:40 +0100zincy_(~zincy@2a00:23c8:970c:4801:4508:9275:13c9:2a0)
2021-12-05 21:29:44 +0100 <EvanR> I guess it can't really use the input string directly because of string escapes
2021-12-05 21:29:44 +0100 <Profpatsch> tomsmeding: thing is, I know how rewrite rules work roundabout. But I don’t trust whether Vector actually works as advertised
2021-12-05 21:29:51 +0100 <tomsmeding> then check :p
2021-12-05 21:29:53 +0100 <Profpatsch> And even then it doesn’t document anything
2021-12-05 21:30:08 +0100 <EvanR> even if it did document stuff having a way to verify is good lol
2021-12-05 21:30:45 +0100 <Profpatsch> like, as far as I can see vector has like 10 benchmarks
2021-12-05 21:31:02 +0100 <Profpatsch> So what does that tell me
2021-12-05 21:31:09 +0100 <Profpatsch> lol https://github.com/haskell/vector/issues/229
2021-12-05 21:31:12 +0100 <tomsmeding> and if you checked and you found something interesting, that may be a good opportunity for a PR to vector :)
2021-12-05 21:32:13 +0100 <Profpatsch> I just can’t build any trust in such a fundamental library
2021-12-05 21:32:39 +0100 <Profpatsch> So I won’t use it because stuff is advertised but there’s no way to use it without falling down a rabbit hole
2021-12-05 21:33:00 +0100 <EvanR> I'm using vector right now for audio and no rabbit hole
2021-12-05 21:33:13 +0100 <EvanR> (because not having any performance problems yet)
2021-12-05 21:33:36 +0100 <Profpatsch> e.g. with Vec in rust I can be sure that it’s optimized to death
2021-12-05 21:33:51 +0100 <Profpatsch> And the performance will be pretty obvious and is documented liberally
2021-12-05 21:34:30 +0100 <EvanR> in general using haskell and caring about the compiled code at the same time is a step up in effort
2021-12-05 21:34:46 +0100 <tomsmeding> Profpatsch: is the purpose of you talking about this here, trying to get someone to do something about it? Or something else?
2021-12-05 21:37:23 +0100 <tomsmeding> also, something else: you note the reverse . fromListN pattern in aeson. Did you notice that this is a (potential) problem in a benchmark? Or is this premature optimisation? ;)
2021-12-05 21:37:42 +0100 <tomsmeding> though I'm all for premature optimisation if it's fun
2021-12-05 21:37:50 +0100 <Profpatsch> tomsmeding: No, just trying to figure out whether I should use Vector for a parser I’m writing
2021-12-05 21:38:00 +0100 <tomsmeding> instead of?
2021-12-05 21:38:42 +0100 <Profpatsch> Just returning a []. And going down the rabbit hole of checking how aeson does it, and figuring out that everything is kinda undocumented and it’s not easy to see why things are done
2021-12-05 21:39:09 +0100 <tomsmeding> as in, you're parsing a list value?
2021-12-05 21:39:44 +0100zincy_(~zincy@2a00:23c8:970c:4801:4508:9275:13c9:2a0) (Remote host closed the connection)
2021-12-05 21:39:48 +0100 <Profpatsch> For example https://github.com/haskell/aeson/commit/2f24e555d86a36fdda6d4cad79976004b382ab3b
2021-12-05 21:39:55 +0100 <Profpatsch> This is a commit touching the aeson parser liberally
2021-12-05 21:40:12 +0100 <tomsmeding> I think that depends a lot on how you're parsing that value and how you're going to use the value. If you know in advance how long the list is going to be, and it's going to be kept around / accessed randomly, go for vector for sure, regardless of whether the fusion rules actually do anything or not
2021-12-05 21:40:13 +0100 <Profpatsch> with no commit description
2021-12-05 21:40:16 +0100zincy_(~zincy@2a00:23c8:970c:4801:4508:9275:13c9:2a0)
2021-12-05 21:40:18 +0100VoidNoir0(~VoidNoir0@72.80.203.52)
2021-12-05 21:40:35 +0100 <Profpatsch> which introduces the change to how Vector is used
2021-12-05 21:40:51 +0100 <tomsmeding> if you don't know the length in advance, you can't do much better than returning a list, perhaps postfixed with a fromList -- but that doesn't need to be done by your parser
2021-12-05 21:40:58 +0100 <Profpatsch> I guess I’m just complaining how shitty the code quality of even very basic libraries is
2021-12-05 21:41:04 +0100 <tomsmeding> but that all assumes your parser is building the list trivially by consing
2021-12-05 21:41:25 +0100gehmehgeh(~user@user/gehmehgeh)
2021-12-05 21:41:55 +0100 <tomsmeding> Profpatsch: "shitty" is kind of unkind to the people that do the hard work. :) I do agree that more documentation about performance, and investigation into performance, would be quite beneficial.
2021-12-05 21:42:08 +0100 <Profpatsch> So what I gather is that if I have a sequence of a known list, I should use Vector
2021-12-05 21:42:14 +0100 <tomsmeding> But I'm 100% sure this is because of a lack of manpower
2021-12-05 21:42:16 +0100zincy_(~zincy@2a00:23c8:970c:4801:4508:9275:13c9:2a0) (Remote host closed the connection)
2021-12-05 21:42:24 +0100 <Profpatsch> tomsmeding: No, sorry, if you do a major change to a base library, you better document what you are doing.
2021-12-05 21:42:27 +0100zincy_(~zincy@2a00:23c8:970c:4801:4508:9275:13c9:2a0)
2021-12-05 21:42:29 +0100 <Profpatsch> Otherwise it’s just shitty code.
2021-12-05 21:42:38 +0100 <EvanR> oh man, X Y problems
2021-12-05 21:43:03 +0100 <EvanR> you can't figure out how to write a parser so the library vector sucks xD
2021-12-05 21:43:05 +0100 <tomsmeding> Profpatsch: if you have a sequence of known length, and you're going to do more to it than just traverse it once
2021-12-05 21:43:20 +0100 <tomsmeding> and it's long
2021-12-05 21:43:25 +0100 <tomsmeding> if it's short then it doesn't matter anyway
2021-12-05 21:43:38 +0100 <c_wraith> Profpatsch: ? that change is pretty obvious. take advantage of known lengths, move the bytestring unescaping to C
2021-12-05 21:44:05 +0100 <c_wraith> Profpatsch: it's just a performance tweak.
2021-12-05 21:44:15 +0100 <c_wraith> Profpatsch: and that's what the patch description says
2021-12-05 21:45:10 +0100 <tomsmeding> Profpatsch: and note that these considerations that I gave are still independent on whether vector's fusion rules actually do anything :)
2021-12-05 21:45:30 +0100 <Profpatsch> I’m not going to argue about this lol, I just think we should do better.
2021-12-05 21:45:53 +0100 <tomsmeding> "we" should indeed. And someone's gotta pay for that -- either with money or with time
2021-12-05 21:45:55 +0100 <Profpatsch> Take that as you will
2021-12-05 21:46:14 +0100 <tomsmeding> and people are hard at work at fixing that, not least at the Haskell Foundation :)
2021-12-05 21:46:49 +0100 <c_wraith> I mean, I don't see anything bad here. Maybe it's not utopian, but it's better than average.
2021-12-05 21:47:06 +0100 <c_wraith> And I don't mean average for Haskell. I mean average for software development.
2021-12-05 21:47:21 +0100 <dsal> aeson does seem to be quite near the most popular library on hackage, but it would be nice if they used the tools a bit better.
2021-12-05 21:49:10 +0100pfurla(~pfurla@201.17.118.230)
2021-12-05 21:52:07 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 21:52:25 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 21:56:04 +0100burnsidesLlama(~burnsides@dhcp168-020.wadham.ox.ac.uk) (Remote host closed the connection)
2021-12-05 21:56:15 +0100azimut_(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2021-12-05 21:56:36 +0100burnsidesLlama(~burnsides@dhcp168-020.wadham.ox.ac.uk)
2021-12-05 21:56:41 +0100Codaraxis(~Codaraxis@user/codaraxis) (Ping timeout: 256 seconds)
2021-12-05 21:56:59 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2021-12-05 21:56:59 +0100zincy_(~zincy@2a00:23c8:970c:4801:4508:9275:13c9:2a0) (Remote host closed the connection)
2021-12-05 21:58:39 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 21:58:57 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 21:58:58 +0100acidjnk_new(~acidjnk@p200300d0c7271e180970d7f4a6232670.dip0.t-ipconnect.de)
2021-12-05 22:01:17 +0100burnsidesLlama(~burnsides@dhcp168-020.wadham.ox.ac.uk) (Ping timeout: 256 seconds)
2021-12-05 22:05:34 +0100zincy_(~zincy@host86-151-99-97.range86-151.btcentralplus.com)
2021-12-05 22:06:11 +0100_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-12-05 22:07:51 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 22:08:08 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 22:09:04 +0100jgeerds(~jgeerds@55d4ac73.access.ecotel.net)
2021-12-05 22:10:25 +0100jgeerds(~jgeerds@55d4ac73.access.ecotel.net) (Remote host closed the connection)
2021-12-05 22:10:41 +0100imdoor(~imdoor@balticom-142-78-50.balticom.lv) (Remote host closed the connection)
2021-12-05 22:11:49 +0100jgeerds(~jgeerds@55d4ac73.access.ecotel.net)
2021-12-05 22:13:31 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 252 seconds)
2021-12-05 22:13:52 +0100axeman(~quassel@2a02:8109:a3c0:b10:c575:40eb:1f86:4317) (Remote host closed the connection)
2021-12-05 22:14:31 +0100sayola(~vekto@dslb-092-072-095-186.092.072.pools.vodafone-ip.de) (Ping timeout: 245 seconds)
2021-12-05 22:14:34 +0100zer0bitz(~zer0bitz@dsl-hkibng32-54fbfb-173.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-12-05 22:14:55 +0100 <boxscape> How do I include newlines in a CPP pragma?
2021-12-05 22:15:37 +0100zincy_(~zincy@host86-151-99-97.range86-151.btcentralplus.com) (Remote host closed the connection)
2021-12-05 22:15:38 +0100 <boxscape> s/pragma/macro
2021-12-05 22:15:51 +0100zincy_(~zincy@2a00:23c8:970c:4801:4508:9275:13c9:2a0)
2021-12-05 22:16:26 +0100 <boxscape> Wait I think I remember now
2021-12-05 22:16:32 +0100 <boxscape> it's not possible and you have to work around it with {;}
2021-12-05 22:16:57 +0100sayola(~vekto@dslb-092-072-095-186.092.072.pools.vodafone-ip.de)
2021-12-05 22:17:44 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-12-05 22:18:44 +0100 <tomsmeding> yeah impossible, that's also a thing in C
2021-12-05 22:19:11 +0100 <boxscape> okay, thanks for confirming
2021-12-05 22:19:26 +0100 <tomsmeding> though in C there's IIRC nothing that needs actual hard newlines, except CPP macros, which you can't generate from CPP macros anyway :)
2021-12-05 22:19:35 +0100 <boxscape> right, good point
2021-12-05 22:19:54 +0100zincy_(~zincy@2a00:23c8:970c:4801:4508:9275:13c9:2a0) (Remote host closed the connection)
2021-12-05 22:19:55 +0100FarzadBekran_(~FarzadBek@185.212.51.70) (Remote host closed the connection)
2021-12-05 22:20:41 +0100 <boxscape> :/ I can't use a macro here anyway because recursion is not allowed
2021-12-05 22:20:59 +0100cjb(~cjb@user/cjb)
2021-12-05 22:21:04 +0100 <tomsmeding> just iterate the preprocessor over your file!
2021-12-05 22:21:13 +0100 <tomsmeding> then it becomes turing complete :)
2021-12-05 22:21:17 +0100 <tomsmeding> also: templatehaskell
2021-12-05 22:21:42 +0100 <boxscape> TH seems like too much effort
2021-12-05 22:21:49 +0100 <tomsmeding> can relate
2021-12-05 22:22:10 +0100 <boxscape> realistically there should be a way to just use a regular Haskell function to remove the code duplication here, but I can't figure it out https://paste.tomsmeding.com/ei7jlZip
2021-12-05 22:22:38 +0100 <c_wraith> the duplication in the instances?
2021-12-05 22:22:48 +0100 <boxscape> no, in genericEscape and genericUnescape
2021-12-05 22:22:55 +0100 <boxscape> I'm trying to combine them into one function
2021-12-05 22:23:02 +0100 <boxscape> main problem is I need (Typeable (Parsed a)) or (Typeable a) in the local function, and I can't get that if I don't know which one of them I need
2021-12-05 22:23:13 +0100 <c_wraith> because the instances have some unnecessary code duplication in them. :P
2021-12-05 22:23:36 +0100 <boxscape> yeah, that's because they are simplified here :)
2021-12-05 22:23:42 +0100 <boxscape> they don't have any duplication in the actual code
2021-12-05 22:24:55 +0100bollu(uid233390@id-233390.helmsley.irccloud.com)
2021-12-05 22:25:06 +0100 <boxscape> though I've only tried combining the two on the actual code, I should probably try it on the simplified code
2021-12-05 22:25:14 +0100cosimone(~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) (Quit: ERC (IRC client for Emacs 27.1))
2021-12-05 22:25:40 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2021-12-05 22:25:46 +0100 <c_wraith> the simplified code seems like you could probably RankNTypes your way through it
2021-12-05 22:26:35 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2021-12-05 22:30:01 +0100 <hololeap> @unmtl [StateT s m a]
2021-12-05 22:30:01 +0100 <lambdabot> [StateT s m a]
2021-12-05 22:30:27 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-05 22:30:27 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-05 22:30:27 +0100wroathe(~wroathe@user/wroathe)
2021-12-05 22:30:32 +0100 <hololeap> @unmtl StateT s (Writer w) a
2021-12-05 22:30:33 +0100 <lambdabot> s -> (a, s, w)
2021-12-05 22:30:54 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-05 22:34:56 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 245 seconds)
2021-12-05 22:36:53 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 22:37:11 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 22:37:27 +0100zincy_(~zincy@2a00:23c8:970c:4801:4508:9275:13c9:2a0)
2021-12-05 22:37:51 +0100mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2021-12-05 22:38:04 +0100 <boxscape> this is about how far I get :/ https://paste.tomsmeding.com/mGzaUClb
2021-12-05 22:38:15 +0100 <boxscape> just no idea how I could fulfill that constraint
2021-12-05 22:41:02 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 22:41:20 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 22:43:29 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 22:43:47 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 22:44:41 +0100Guest76(~Guest76@wireless-student-pt10-183-60.lut.ac.uk) (Quit: Client closed)
2021-12-05 22:48:39 +0100 <hololeap> @hoogle (Monad m, Monoid a) => [StateT s m a] -> StateT [s] m a
2021-12-05 22:48:40 +0100 <lambdabot> No results found
2021-12-05 22:51:03 +0100 <hololeap> :t StateT . (\l ss -> sequenceA <$> sequenceA (l <*> ss)) . fmap runStateT :: (Monad m, Monoid a) => [StateT s m a] -> StateT [s] m a
2021-12-05 22:51:04 +0100 <lambdabot> (Monad m, Monoid a) => [StateT s m a] -> StateT [s] m a
2021-12-05 22:51:31 +0100 <hololeap> i'm a bit surprised this doesn't exist on hoogle
2021-12-05 22:51:39 +0100InternetCitizen(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Ping timeout: 256 seconds)
2021-12-05 22:53:10 +0100InternetCitizen(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2021-12-05 22:53:22 +0100 <hololeap> maybe this would be easier with the zoom optic
2021-12-05 22:55:04 +0100kennyd(~bc8165b6@cerf.good1.com) (Quit: CGI:IRC)
2021-12-05 22:56:14 +0100Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Ping timeout: 252 seconds)
2021-12-05 22:56:14 +0100justSleigh(~justache@user/justache) (Quit: The Lounge - https://thelounge.chat)
2021-12-05 22:56:47 +0100xsperry(~xs@user/xsperry) ()
2021-12-05 22:57:24 +0100 <boxscape> tomsmeding: turns out I *can* use a CPP macro, I just have to supply the name of the function as well so I can call that name recursively instead of the macro itself
2021-12-05 22:57:59 +0100justSleigh(~justache@user/justache)
2021-12-05 22:58:26 +0100zincy_(~zincy@2a00:23c8:970c:4801:4508:9275:13c9:2a0) (Remote host closed the connection)
2021-12-05 22:59:26 +0100emf(~emf@2620:10d:c090:400::5:3b6)
2021-12-05 22:59:35 +0100 <boxscape> I'll just keep a comment saying "Fun challenge: Try to do this using a polymorphic function instead of a macro" in the code to nerdsnipe innocent passers-by
2021-12-05 23:00:08 +0100 <Rembane> "How to lower the efficiency of your team in one simple step."
2021-12-05 23:00:09 +0100xsperry(~xs@user/xsperry)
2021-12-05 23:01:59 +0100 <boxscape> :) luckily I'm doing this in a one-man team and I've already nerdsniped myself so now I'm immune
2021-12-05 23:02:27 +0100zincy_(~zincy@2a00:23c8:970c:4801:4508:9275:13c9:2a0)
2021-12-05 23:04:15 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-12-05 23:04:51 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-12-05 23:05:27 +0100 <Rembane> Sweet! :)
2021-12-05 23:05:56 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2021-12-05 23:08:03 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 23:08:21 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 23:10:01 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 23:10:19 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 23:10:26 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2021-12-05 23:12:06 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 23:12:23 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 23:14:04 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 23:14:22 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 23:15:29 +0100jakalx(~jakalx@base.jakalx.net)
2021-12-05 23:18:15 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 23:18:33 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 23:20:13 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 23:20:31 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 23:24:29 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 23:24:47 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 23:26:05 +0100Lycurgus(~juan@98.4.112.204)
2021-12-05 23:27:39 +0100Lycurgus(~juan@98.4.112.204) ()
2021-12-05 23:28:41 +0100notzmv(~zmv@user/notzmv) (Ping timeout: 245 seconds)
2021-12-05 23:30:43 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 23:31:01 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 23:31:28 +0100jakzale(6291399afa@2604:bf00:561:2000::1e4) (Changing host)
2021-12-05 23:31:28 +0100jakzale(6291399afa@user/jakzale)
2021-12-05 23:33:51 +0100ss4(~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
2021-12-05 23:34:50 +0100MoC(~moc@user/moc) (Quit: Konversation terminated!)
2021-12-05 23:36:57 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 23:37:15 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 23:37:20 +0100Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi)
2021-12-05 23:37:32 +0100max22-(~maxime@2a01cb08833598006b46964008321399.ipv6.abo.wanadoo.fr) (Quit: Leaving)
2021-12-05 23:38:47 +0100ezzieyguywuf(~Unknown@user/ezzieyguywuf)
2021-12-05 23:40:48 +0100notzmv(~zmv@user/notzmv)
2021-12-05 23:41:20 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 252 seconds)
2021-12-05 23:41:21 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 276 seconds)
2021-12-05 23:41:50 +0100kennyd(~bc8165b6@83.167.180.121)
2021-12-05 23:41:59 +0100pavonia(~user@user/siracusa)
2021-12-05 23:43:20 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-12-05 23:45:27 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 23:45:45 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 23:46:39 +0100emf(~emf@2620:10d:c090:400::5:3b6) (Ping timeout: 252 seconds)
2021-12-05 23:47:35 +0100zincy_(~zincy@2a00:23c8:970c:4801:4508:9275:13c9:2a0) (Remote host closed the connection)
2021-12-05 23:48:14 +0100xkuru(~xkuru@user/xkuru) (Read error: Connection reset by peer)
2021-12-05 23:48:34 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Remote host closed the connection)
2021-12-05 23:48:51 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com)
2021-12-05 23:50:02 +0100emf(~emf@2620:10d:c090:400::5:3b6)
2021-12-05 23:52:35 +0100vgtw_(~vgtw@c-2359205c.07-348-756d651.bbcust.telenor.se)
2021-12-05 23:53:25 +0100hskpractice(~hskpracti@94-255-217-215.cust.bredband2.com) (Ping timeout: 256 seconds)
2021-12-05 23:53:59 +0100vgtw(~vgtw@c-2359205c.07-348-756d651.bbcust.telenor.se) (Ping timeout: 256 seconds)
2021-12-05 23:54:58 +0100gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-12-05 23:58:44 +0100madjestic(~madjestic@88-159-247-120.fixed.kpn.net)
2021-12-05 23:59:49 +0100aweinstock(~aweinstoc@cpe-67-248-65-250.nycap.res.rr.com)