2021/12/20

2021-12-20 00:00:00 +0100 <dibblego> it isn't?
2021-12-20 00:00:04 +0100 <dibblego> @type join . map
2021-12-20 00:00:06 +0100 <lambdabot> error:
2021-12-20 00:00:06 +0100 <lambdabot> • Couldn't match type ‘(->) [a]’ with ‘[]’
2021-12-20 00:00:06 +0100 <lambdabot> Expected type: (a -> a1) -> [[a1]]
2021-12-20 00:00:12 +0100 <dibblego> @type (join .) . fmap
2021-12-20 00:00:14 +0100 <lambdabot> Monad m => (a1 -> m a2) -> m a1 -> m a2
2021-12-20 00:00:37 +0100lavaman(~lavaman@98.38.249.169)
2021-12-20 00:00:44 +0100sprout(~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3)
2021-12-20 00:02:08 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-20 00:02:43 +0100khumba(~khumba@user/khumba)
2021-12-20 00:03:24 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-20 00:04:57 +0100sprout(~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) (Ping timeout: 240 seconds)
2021-12-20 00:04:57 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2021-12-20 00:05:34 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:7cf1:85e9:3000:4f4d)
2021-12-20 00:06:50 +0100 <Inst> i'm sort of going nuts
2021-12-20 00:07:00 +0100 <Inst> basically, pure etc isn't behaving the way it should
2021-12-20 00:07:07 +0100 <Inst> @type pure Just 3
2021-12-20 00:07:08 +0100 <lambdabot> a -> Maybe a
2021-12-20 00:07:16 +0100 <geekosaur> you need parentheses
2021-12-20 00:07:20 +0100 <Inst> @type pure (Just 3)
2021-12-20 00:07:21 +0100 <lambdabot> (Applicative f, Num a) => f (Maybe a)
2021-12-20 00:07:40 +0100 <Inst> @pure (Just 3)
2021-12-20 00:07:40 +0100 <lambdabot> Maybe you meant: url part more
2021-12-20 00:08:21 +0100 <geekosaur> what exactly are you trying to do?
2021-12-20 00:08:31 +0100 <superstar64> Inst, functions are monads too. Where `pure = const`
2021-12-20 00:08:59 +0100 <Inst> basically, the way I understand it is that pure is the inverse of join
2021-12-20 00:09:03 +0100 <Inst> but it's behaving weirdly
2021-12-20 00:09:13 +0100 <geekosaur> mm, I wouldn't say that
2021-12-20 00:09:37 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:7cf1:85e9:3000:4f4d) (Ping timeout: 240 seconds)
2021-12-20 00:09:56 +0100 <Inst> maybe i don't get it
2021-12-20 00:09:57 +0100 <EvanR> :t let (.:) = (.) . (.) in join .: fmap
2021-12-20 00:09:58 +0100 <lambdabot> Monad m => (a1 -> m a2) -> m a1 -> m a2
2021-12-20 00:10:01 +0100 <Inst> pure [] = []
2021-12-20 00:10:22 +0100 <superstar64> It's not being weird. It's just when you do `(pure a) x`. It puts `a` in the function monad, which makes it then ignore `x`.
2021-12-20 00:10:30 +0100 <dibblego> pure is identity for join
2021-12-20 00:10:31 +0100 <superstar64> It's an issue of haskell being to generic.
2021-12-20 00:10:34 +0100qrpnxz(~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-20 00:10:34 +0100qrpnxz(~qrpnxz@user/qrpnxz)
2021-12-20 00:10:53 +0100 <geekosaur> :t pure []
2021-12-20 00:10:54 +0100 <lambdabot> Applicative f => f [a]
2021-12-20 00:11:06 +0100 <Inst> so how do I get pure [] to yield [[]]?
2021-12-20 00:11:25 +0100 <geekosaur> do it in the [] monad/applicative
2021-12-20 00:11:38 +0100 <geekosaur> % :t pure [] @[]
2021-12-20 00:11:39 +0100 <yahb> geekosaur: ; <interactive>:1:1: error:; * Cannot apply expression of type `f0 [a0]'; to a visible type argument `[]'; * In the expression: pure [] @[]
2021-12-20 00:11:46 +0100 <superstar64> Inst, `pure [] :: [[Int]]`
2021-12-20 00:11:50 +0100 <zero> > pure [] :: [[]]
2021-12-20 00:11:51 +0100 <lambdabot> error:
2021-12-20 00:11:51 +0100 <lambdabot> • Expecting one more argument to ‘[]’
2021-12-20 00:11:51 +0100 <lambdabot> Expected a type, but ‘[]’ has kind ‘* -> *’
2021-12-20 00:11:55 +0100 <geekosaur> :t (pure @[]) []
2021-12-20 00:11:56 +0100 <lambdabot> error:
2021-12-20 00:11:56 +0100 <lambdabot> Pattern syntax in expression context: pure@[]
2021-12-20 00:11:56 +0100 <lambdabot> Did you mean to enable TypeApplications?
2021-12-20 00:12:01 +0100 <Inst> !!! >:(
2021-12-20 00:12:04 +0100 <zero> > pure [] :: [[Int]]
2021-12-20 00:12:04 +0100 <geekosaur> wrong bot. not my night
2021-12-20 00:12:05 +0100 <lambdabot> [[]]
2021-12-20 00:12:12 +0100 <EvanR> you can force it with artificial signatures and type applications but realistically it will just work, because of the context
2021-12-20 00:12:13 +0100 <geekosaur> % :t (pure @[]) []
2021-12-20 00:12:13 +0100 <yahb> geekosaur: [[a]]
2021-12-20 00:12:42 +0100 <Inst> i already have control monad imported
2021-12-20 00:13:04 +0100 <EvanR> write top level type signatures for your code that uses pure
2021-12-20 00:13:39 +0100 <EvanR> if you don't, your code may end up working for any Applicative not just []
2021-12-20 00:13:43 +0100 <zero> :msg lambdabot > pure ()
2021-12-20 00:13:47 +0100 <EvanR> horrible I know!
2021-12-20 00:14:57 +0100qrpnxz(~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-20 00:14:58 +0100qrpnxz(~qrpnxz@user/qrpnxz)
2021-12-20 00:16:09 +0100 <Inst> i'm going to sleep, thanks for trying
2021-12-20 00:17:08 +0100 <EvanR> type inference picks the most general type that would work, even if that may confuse you
2021-12-20 00:17:19 +0100qrpnxz(~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-20 00:17:20 +0100qrpnxz(~qrpnxz@user/qrpnxz)
2021-12-20 00:17:29 +0100coot(~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot)
2021-12-20 00:17:32 +0100kranius_(~kranius@222.186.245.213.rev.sfr.net) (Ping timeout: 240 seconds)
2021-12-20 00:18:27 +0100qrpnxz(~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-20 00:18:28 +0100qrpnxz(~qrpnxz@user/qrpnxz)
2021-12-20 00:19:45 +0100qrpnxz(~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-20 00:19:46 +0100qrpnxz(~qrpnxz@user/qrpnxz)
2021-12-20 00:20:08 +0100qrpnxz(~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-20 00:20:10 +0100qrpnxz(~qrpnxz@user/qrpnxz)
2021-12-20 00:21:06 +0100shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net) (Remote host closed the connection)
2021-12-20 00:21:23 +0100qrpnxz(~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-20 00:21:24 +0100qrpnxz(~qrpnxz@user/qrpnxz)
2021-12-20 00:22:37 +0100dsp(~dsp@cpc152107-haye27-2-0-cust227.17-4.cable.virginm.net) (Ping timeout: 240 seconds)
2021-12-20 00:24:17 +0100Tuplanolla(~Tuplanoll@91-159-68-169.elisa-laajakaista.fi) (Quit: Leaving.)
2021-12-20 00:25:25 +0100qrpnxz(~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-20 00:25:26 +0100qrpnxz(~qrpnxz@user/qrpnxz)
2021-12-20 00:26:00 +0100qrpnxz(~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-20 00:26:02 +0100qrpnxz(~qrpnxz@user/qrpnxz)
2021-12-20 00:26:06 +0100TonyStone(~TonyStone@cpe-74-76-51-197.nycap.res.rr.com) (Remote host closed the connection)
2021-12-20 00:26:26 +0100deech(~user@024-217-244-075.res.spectrum.com)
2021-12-20 00:27:00 +0100qrpnxz(~qrpnxz@user/qrpnxz) (Disconnected: closed)
2021-12-20 00:27:07 +0100qrpnxz(~qrpnxz@user/qrpnxz)
2021-12-20 00:28:57 +0100TonyStone(~TonyStone@cpe-74-76-51-197.nycap.res.rr.com)
2021-12-20 00:30:37 +0100qrpnxz(~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-20 00:30:38 +0100qrpnxz(~qrpnxz@user/qrpnxz)
2021-12-20 00:31:02 +0100 <d34df00d> Why can't I write something like `(Applicative f, forall a. (WrapperType f a ~ f a)) => ...`, where WrapperType is a closed type family?
2021-12-20 00:31:14 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
2021-12-20 00:31:45 +0100 <d34df00d> I'm getting `Illegal type synonym family application ‘WrapperType f’ in instance: WrapperType f a ~ f a`
2021-12-20 00:32:26 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-20 00:33:29 +0100qrpnxz(~qrpnxz@user/qrpnxz) (Disconnected: closed)
2021-12-20 00:33:39 +0100qrpnxz(~qrpnxz@user/qrpnxz)
2021-12-20 00:36:32 +0100sprout(~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3)
2021-12-20 00:37:35 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-12-20 00:38:07 +0100DNH(~DNH@2a02:8108:1100:16d8:d8a9:a97b:f226:606f)
2021-12-20 00:38:10 +0100DNH(~DNH@2a02:8108:1100:16d8:d8a9:a97b:f226:606f) (Client Quit)
2021-12-20 00:39:14 +0100DNH(~DNH@2a02:8108:1100:16d8:d8a9:a97b:f226:606f)
2021-12-20 00:41:15 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-12-20 00:41:32 +0100sprout(~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) (Ping timeout: 252 seconds)
2021-12-20 00:42:48 +0100qrpnxz(~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-20 00:42:49 +0100qrpnxz(~qrpnxz@user/qrpnxz)
2021-12-20 00:42:55 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2021-12-20 00:43:17 +0100qrpnxz(~qrpnxz@user/qrpnxz) (Disconnected: closed)
2021-12-20 00:43:34 +0100qrpnxz(~qrpnxz@user/qrpnxz)
2021-12-20 00:43:42 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-12-20 00:47:02 +0100Jing_(~hedgehog@2604:a840:3::103b) (Remote host closed the connection)
2021-12-20 00:47:41 +0100Jing(~hedgehog@2604:a840:3::103b)
2021-12-20 00:47:49 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-20 00:51:38 +0100justsomeguy(~justsomeg@user/justsomeguy)
2021-12-20 00:54:41 +0100sprout(~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3)
2021-12-20 00:55:36 +0100acidjnk(~acidjnk@pd9e0bdc0.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
2021-12-20 00:59:02 +0100pavonia(~user@user/siracusa)
2021-12-20 00:59:06 +0100sprout(~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) (Ping timeout: 268 seconds)
2021-12-20 00:59:12 +0100Henson(~kvirc@107-179-133-201.cpe.teksavvy.com)
2021-12-20 01:00:49 +0100epolanski(uid312403@id-312403.helmsley.irccloud.com)
2021-12-20 01:05:14 +0100 <monochrom> d34df00d: If GHC 9.2, QuantifiedConstraints may help, but I haven't checked.
2021-12-20 01:05:39 +0100 <d34df00d> monochrom: I'm doing this with ghc 8.10 and -XQuantifiedConstraints on. I'll try with 9.2, thanks!
2021-12-20 01:07:33 +0100 <d34df00d> Hmm, looks like the same error.
2021-12-20 01:08:03 +0100 <monochrom> Then it is something else I don't know of.
2021-12-20 01:10:37 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:7cf1:85e9:3000:4f4d)
2021-12-20 01:10:55 +0100superstar64(~superstar@2600:1700:ed80:50a0:d250:99ff:fe2c:53c4) (Quit: Leaving)
2021-12-20 01:18:06 +0100SummerSonw(~The_viole@203.77.49.232)
2021-12-20 01:20:47 +0100jackson99(~bc8147f2@cerf.good1.com) (Quit: CGI:IRC (Ping timeout))
2021-12-20 01:21:37 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-12-20 01:21:49 +0100waleee(~waleee@h-98-128-229-110.NA.cust.bahnhof.se) (Ping timeout: 240 seconds)
2021-12-20 01:21:54 +0100xsperry(~xs@user/xsperry) (Ping timeout: 268 seconds)
2021-12-20 01:24:21 +0100Techcable_Techcable
2021-12-20 01:25:35 +0100machinedgod(~machinedg@24.105.81.50)
2021-12-20 01:25:39 +0100justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.3)
2021-12-20 01:27:02 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 240 seconds)
2021-12-20 01:28:34 +0100sprout(~quassel@2a02:a467:ccd6:1:21ba:a382:6b6:54c4)
2021-12-20 01:33:32 +0100sprout(~quassel@2a02:a467:ccd6:1:21ba:a382:6b6:54c4) (Ping timeout: 240 seconds)
2021-12-20 01:33:57 +0100DNH_(~DNH@ip5f5abb04.dynamic.kabel-deutschland.de)
2021-12-20 01:34:14 +0100mcgroin(~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 268 seconds)
2021-12-20 01:34:16 +0100DNH_(~DNH@ip5f5abb04.dynamic.kabel-deutschland.de) (Client Quit)
2021-12-20 01:35:59 +0100DNH(~DNH@2a02:8108:1100:16d8:d8a9:a97b:f226:606f) (Ping timeout: 252 seconds)
2021-12-20 01:42:09 +0100xsperry(~xs@user/xsperry)
2021-12-20 01:49:44 +0100notzmv(~zmv@user/notzmv) (Ping timeout: 252 seconds)
2021-12-20 01:59:57 +0100jkaye(~jkaye@2601:281:8300:7530:76ff:6d0a:27ec:c880) (Ping timeout: 240 seconds)
2021-12-20 02:00:39 +0100__monty__(~toonn@user/toonn) (Quit: leaving)
2021-12-20 02:04:12 +0100sprout(~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3)
2021-12-20 02:05:32 +0100Feuermagier(~Feuermagi@user/feuermagier) (Remote host closed the connection)
2021-12-20 02:05:47 +0100Everything(~Everythin@128-124-10-123.mobile.vf-ua.net)
2021-12-20 02:06:38 +0100doyougnu(~doyougnu@c-73-25-202-122.hsd1.or.comcast.net) (Remote host closed the connection)
2021-12-20 02:08:37 +0100sprout(~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) (Ping timeout: 240 seconds)
2021-12-20 02:11:07 +0100ubert(~Thunderbi@p200300ecdf0a5d10d9ff0243dc33f2a7.dip0.t-ipconnect.de) (Remote host closed the connection)
2021-12-20 02:11:25 +0100ubert(~Thunderbi@p200300ecdf0a5d10d9ff0243dc33f2a7.dip0.t-ipconnect.de)
2021-12-20 02:11:36 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-12-20 02:17:43 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-12-20 02:19:42 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 276 seconds)
2021-12-20 02:24:57 +0100taterbase(~user@2603-7081-6902-9100-0000-0000-0000-0006.res6.spectrum.com) (Ping timeout: 240 seconds)
2021-12-20 02:26:10 +0100Jing(~hedgehog@2604:a840:3::103b) (Remote host closed the connection)
2021-12-20 02:26:40 +0100Jonno_FTW(~come@api.carswap.me) (Changing host)
2021-12-20 02:26:40 +0100Jonno_FTW(~come@user/jonno-ftw/x-0835346)
2021-12-20 02:27:00 +0100Jing(~hedgehog@2604:a840:3::103b)
2021-12-20 02:37:46 +0100sprout(~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3)
2021-12-20 02:43:05 +0100sprout(~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) (Ping timeout: 252 seconds)
2021-12-20 02:50:04 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-12-20 02:53:57 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 240 seconds)
2021-12-20 02:59:35 +0100Sobhan(~Sobhan@modemcable039.128-131-66.mc.videotron.ca) (Ping timeout: 256 seconds)
2021-12-20 02:59:50 +0100lavaman(~lavaman@98.38.249.169)
2021-12-20 03:01:22 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-12-20 03:01:56 +0100 <jackdk> `(Applicative f, (forall a. WrapperType f a ~ f a)) => ...`, perhaps?
2021-12-20 03:02:15 +0100 <[itchyjunk]> Anyone saw this this?
2021-12-20 03:02:17 +0100 <[itchyjunk]> https://www.cs.yale.edu/homes/hudak/Papers/HSoM.pdf
2021-12-20 03:03:57 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2021-12-20 03:07:56 +0100 <EvanR> that's an old one
2021-12-20 03:08:10 +0100 <EvanR> has anyone seen the software though
2021-12-20 03:08:33 +0100 <[itchyjunk]> its from 2012 apparently
2021-12-20 03:11:29 +0100 <EvanR> maybe I was thinking of haskell school of expression
2021-12-20 03:12:00 +0100 <[itchyjunk]> The topics in the book looks fairly advanced.
2021-12-20 03:12:12 +0100 <[itchyjunk]> I wonder what kind of person can handle a book like that
2021-12-20 03:12:35 +0100sprout(~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3)
2021-12-20 03:14:42 +0100bollu(uid233390@id-233390.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2021-12-20 03:14:49 +0100Feuermagier(~Feuermagi@user/feuermagier)
2021-12-20 03:17:38 +0100sprout(~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) (Ping timeout: 260 seconds)
2021-12-20 03:18:31 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-20 03:23:19 +0100 <EvanR> evolution of a haskell programmer
2021-12-20 03:27:39 +0100ub(~Thunderbi@p200300ecdf0a5d0bd9ff0243dc33f2a7.dip0.t-ipconnect.de)
2021-12-20 03:27:42 +0100ubert(~Thunderbi@p200300ecdf0a5d10d9ff0243dc33f2a7.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2021-12-20 03:27:42 +0100ububert
2021-12-20 03:28:36 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 276 seconds)
2021-12-20 03:31:18 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-20 03:31:18 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-20 03:31:18 +0100wroathe(~wroathe@user/wroathe)
2021-12-20 03:31:52 +0100 <d34df00d> jackdk: nope, that doesn't help, sadly, I get the same error.
2021-12-20 03:37:43 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4)
2021-12-20 03:39:34 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-12-20 03:39:37 +0100neurocyte0132889(~neurocyte@user/neurocyte) (Ping timeout: 240 seconds)
2021-12-20 03:39:50 +0100 <jackdk> d34df00d: can you pastebin an example for me to play with?
2021-12-20 03:42:03 +0100mbuf(~Shakthi@223.178.83.73)
2021-12-20 03:45:08 +0100kaph(~kaph@net-2-47-236-216.cust.vodafonedsl.it)
2021-12-20 03:46:47 +0100sprout(~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3)
2021-12-20 03:47:33 +0100Guest1(~Guest1@2601:18c:4300:36d0:7c5f:5bfd:da1:79ca)
2021-12-20 03:50:19 +0100dsrt^(~dsrt@64.253.22.77)
2021-12-20 03:51:03 +0100Feuermagier(~Feuermagi@user/feuermagier) (Remote host closed the connection)
2021-12-20 03:52:26 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
2021-12-20 03:52:43 +0100Feuermagier(~Feuermagi@user/feuermagier)
2021-12-20 03:53:15 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-12-20 03:54:13 +0100sprout(~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) (Ping timeout: 240 seconds)
2021-12-20 03:55:46 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2021-12-20 03:55:53 +0100sprout(~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3)
2021-12-20 03:57:20 +0100xff0x(~xff0x@2001:1a81:53d2:9000:941d:3a25:9fc5:6e77) (Ping timeout: 252 seconds)
2021-12-20 03:57:49 +0100mikoto-chan(~mikoto-ch@esm-84-240-99-143.netplaza.fi)
2021-12-20 03:59:21 +0100xff0x(~xff0x@2001:1a81:5214:2e00:5b16:4ef1:d67d:4f66)
2021-12-20 04:00:31 +0100epolanski(uid312403@id-312403.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2021-12-20 04:01:01 +0100sprout(~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) (Ping timeout: 268 seconds)
2021-12-20 04:01:02 +0100notzmv(~zmv@user/notzmv)
2021-12-20 04:03:22 +0100mikoto-chan(~mikoto-ch@esm-84-240-99-143.netplaza.fi) (Ping timeout: 260 seconds)
2021-12-20 04:03:58 +0100mikoto-chan(~mikoto-ch@esm-84-240-99-143.netplaza.fi)
2021-12-20 04:04:43 +0100lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Quit: ZNC 1.8.2 - https://znc.in)
2021-12-20 04:04:54 +0100lavaman(~lavaman@98.38.249.169)
2021-12-20 04:06:06 +0100Guest1(~Guest1@2601:18c:4300:36d0:7c5f:5bfd:da1:79ca) (Quit: Client closed)
2021-12-20 04:10:02 +0100danso(~danso@2001:1970:52e7:d000:96b8:6dff:feb3:c009)
2021-12-20 04:11:37 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net)
2021-12-20 04:16:11 +0100lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net)
2021-12-20 04:20:07 +0100td_(~td@muedsl-82-207-238-128.citykom.de) (Ping timeout: 268 seconds)
2021-12-20 04:21:23 +0100td_(~td@94.134.91.10)
2021-12-20 04:23:57 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-12-20 04:24:31 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net)
2021-12-20 04:24:57 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
2021-12-20 04:27:03 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-12-20 04:28:57 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2021-12-20 04:29:22 +0100sprout(~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3)
2021-12-20 04:34:44 +0100sprout(~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) (Ping timeout: 252 seconds)
2021-12-20 04:36:13 +0100TranquilEcho(~grom@user/tranquilecho) (Quit: WeeChat 2.8)
2021-12-20 04:37:54 +0100qrpnxz(~qrpnxz@user/qrpnxz) (Disconnected: Replaced by new connection)
2021-12-20 04:37:55 +0100qrpnxz(~qrpnxz@user/qrpnxz)
2021-12-20 04:38:22 +0100qrpnxz(~qrpnxz@user/qrpnxz) (Disconnected: closed)
2021-12-20 04:38:34 +0100qrpnxz(~qrpnxz@user/qrpnxz)
2021-12-20 04:39:27 +0100Nahra(~user@static.161.95.99.88.clients.your-server.de) (Remote host closed the connection)
2021-12-20 04:42:46 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-12-20 04:42:57 +0100terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat)
2021-12-20 04:44:09 +0100terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1)
2021-12-20 04:47:48 +0100Morrow(~quassel@bzq-110-168-31-106.red.bezeqint.net) (Remote host closed the connection)
2021-12-20 04:48:19 +0100Feuermagier(~Feuermagi@user/feuermagier) (Remote host closed the connection)
2021-12-20 04:49:06 +0100slowButPresent(~slowButPr@user/slowbutpresent)
2021-12-20 04:49:07 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 268 seconds)
2021-12-20 04:54:02 +0100pgib(~textual@173.38.117.69) (Ping timeout: 268 seconds)
2021-12-20 04:58:22 +0100notzmv(~zmv@user/notzmv) (Ping timeout: 268 seconds)
2021-12-20 04:59:56 +0100Everything(~Everythin@128-124-10-123.mobile.vf-ua.net) (Quit: leaving)
2021-12-20 05:00:43 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net)
2021-12-20 05:03:48 +0100sprout(~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3)
2021-12-20 05:05:30 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-12-20 05:05:34 +0100lavaman(~lavaman@98.38.249.169)
2021-12-20 05:06:22 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net)
2021-12-20 05:08:17 +0100sprout(~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) (Ping timeout: 240 seconds)
2021-12-20 05:10:37 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2021-12-20 05:14:22 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Read error: Connection reset by peer)
2021-12-20 05:16:42 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net)
2021-12-20 05:17:00 +0100Akiva(~Akiva@user/Akiva)
2021-12-20 05:22:23 +0100hornetcluster(~textual@2601:5c0:c280:7e20:5502:4cf:f65e:fd6b)
2021-12-20 05:24:36 +0100cjb(~cjb@user/cjb) (Quit: rcirc on GNU Emacs 29.0.50)
2021-12-20 05:29:52 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-12-20 05:30:00 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
2021-12-20 05:30:23 +0100 <hornetcluster> Need help: https://paste.tomsmeding.com/nQLUyCHJ
2021-12-20 05:32:15 +0100deadmarshal(~deadmarsh@95.38.230.107)
2021-12-20 05:34:54 +0100 <Axman6> > fmap (*2) <$> [Just 1, Nothing, Just 2, Just 3]
2021-12-20 05:34:56 +0100 <lambdabot> [Just 2,Nothing,Just 4,Just 6]
2021-12-20 05:35:26 +0100 <Axman6> > getCompose $ (*2) <$> Compose [Just 1, Nothing, Just 2, Just 3]
2021-12-20 05:35:28 +0100 <lambdabot> error:
2021-12-20 05:35:28 +0100 <lambdabot> Variable not in scope: getCompose :: f0 b0 -> terror:
2021-12-20 05:35:28 +0100 <lambdabot> • Data constructor not in scope: Compose :: [Maybe a0] -> f0 b0
2021-12-20 05:35:36 +0100 <Axman6> % getCompose $ (*2) <$> Compose [Just 1, Nothing, Just 2, Just 3]
2021-12-20 05:35:36 +0100 <yahb> Axman6: ; <interactive>:199:1: error: Variable not in scope: getCompose :: f0 b0 -> t; <interactive>:199:23: error:; * Data constructor not in scope: Compose :: [Maybe a0] -> f0 b0; * Perhaps you meant one of these: variable `M.compose' (imported from Data.Map), variable `IM.compose' (imported from Data.IntMap), variable `icompose' (imported from Control.Lens)
2021-12-20 05:36:34 +0100 <Axman6> % Data.Functor.Compose.getCompose $ (*2) <$> Compose [Just 1, Nothing, Just 2, Just 3]
2021-12-20 05:36:34 +0100 <yahb> Axman6: ; <interactive>:200:44: error:; * Data constructor not in scope: Compose :: [Maybe a0] -> Data.Functor.Compose.Compose f g a; * Perhaps you meant one of these: variable `M.compose' (imported from Data.Map), variable `IM.compose' (imported from Data.IntMap), variable `icompose' (imported from Control.Lens)
2021-12-20 05:36:44 +0100 <Axman6> % Data.Functor.Compose.getCompose $ (*2) <$> Data.Functor.Compose.Compose [Just 1, Nothing, Just 2, Just 3]
2021-12-20 05:36:44 +0100 <yahb> Axman6: [Just 2,Nothing,Just 4,Just 6]
2021-12-20 05:37:02 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
2021-12-20 05:37:25 +0100sprout(~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3)
2021-12-20 05:38:25 +0100lavaman(~lavaman@98.38.249.169)
2021-12-20 05:38:44 +0100hornetclusterContinuation from above paste, I have one more question: https://paste.tomsmeding.com/tMQse5GX
2021-12-20 05:41:46 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 256 seconds)
2021-12-20 05:42:02 +0100sprout(~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) (Ping timeout: 240 seconds)
2021-12-20 05:42:18 +0100 <Axman6> You can ask these questions in the channel by the way
2021-12-20 05:43:05 +0100 <Axman6> what behaviour do you want? What should be the result of foldl (+) 0 [Just 1, Nothing, Just 2, Just 3] (ish) to be? Nothing? 6?
2021-12-20 05:43:38 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2021-12-20 05:43:53 +0100 <hornetcluster> Just 6 is fine. 6 Ideally. I am learning Haskell, obviously.
2021-12-20 05:44:57 +0100 <Axman6> @hoogle catMaybes
2021-12-20 05:44:58 +0100 <lambdabot> Data.Maybe catMaybes :: [Maybe a] -> [a]
2021-12-20 05:44:58 +0100 <lambdabot> System.Directory.Internal.Prelude catMaybes :: () => [Maybe a] -> [a]
2021-12-20 05:44:58 +0100 <lambdabot> Data.Conduit.List catMaybes :: Monad m => ConduitT (Maybe a) a m ()
2021-12-20 05:45:11 +0100 <Axman6> :t sum . catMaybes
2021-12-20 05:45:12 +0100 <lambdabot> Num c => [Maybe c] -> c
2021-12-20 05:45:25 +0100 <Axman6> > sum . catMaybes $ [Just 1, Nothing, Just 2, Just 3]
2021-12-20 05:45:26 +0100 <lambdabot> 6
2021-12-20 05:49:03 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-20 05:51:14 +0100justsomeguy(~justsomeg@user/justsomeguy)
2021-12-20 05:53:58 +0100notzmv(~zmv@user/notzmv)
2021-12-20 05:54:46 +0100hornetclusterThanks. However, I am looking for something that works for general monadic type -- not just Maybe types. Here's my main problem: https://paste.tomsmeding.com/IWSWK4I7
2021-12-20 05:58:11 +0100slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-12-20 05:58:37 +0100yaroot(~yaroot@175.0.30.125.dy.iij4u.or.jp) (Ping timeout: 240 seconds)
2021-12-20 05:58:45 +0100earendel(uid498179@user/earendel) (Quit: Connection closed for inactivity)
2021-12-20 05:59:29 +0100yaroot(~yaroot@60.149.13.160.dy.iij4u.or.jp)
2021-12-20 06:00:29 +0100 <Axman6> Can you specify what general behaviour you want?
2021-12-20 06:03:29 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2021-12-20 06:05:40 +0100jakalx(~jakalx@base.jakalx.net)
2021-12-20 06:05:42 +0100 <hornetcluster> Sorry for not being clear. This is the post I made on reddit. https://www.reddit.com/r/haskell/comments/rhxrl6/dynamic_programming_minimum_number_of_coins_to/
2021-12-20 06:06:17 +0100 <hornetcluster> This post makes it clear on what I want to do.
2021-12-20 06:06:44 +0100 <hornetcluster> I'm trying to use a mutable array to count minimum number of coins required to make up an amount.
2021-12-20 06:08:00 +0100bontaq(~user@ool-45779fe5.dyn.optonline.net) (Remote host closed the connection)
2021-12-20 06:08:30 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-12-20 06:09:22 +0100Flonk(~Flonk@vps-zap441517-1.zap-srv.com) (Quit: Ping timeout (120 seconds))
2021-12-20 06:09:45 +0100Flonk(~Flonk@vps-zap441517-1.zap-srv.com)
2021-12-20 06:11:25 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net)
2021-12-20 06:12:22 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2021-12-20 06:12:24 +0100sprout(~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3)
2021-12-20 06:12:37 +0100 <Axman6> what does that have to do with the questions you've been asking about for lists of maybes?
2021-12-20 06:12:56 +0100deadmarshal(~deadmarsh@95.38.230.107) (Ping timeout: 256 seconds)
2021-12-20 06:16:16 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
2021-12-20 06:18:48 +0100hornetclusterMutable array is a monadic type. So, I have to deal with [m Int] lists instead of [Int] lists while computing the minimum using `minimum . map ((+1).(readArray arr).(`mod` max).(a -)) . filter (<=a) $ cs` because `readArray arr` returns `m Int` type.
2021-12-20 06:23:05 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-12-20 06:23:47 +0100hornetclusterso it doesn't work the way I have written. hence my questions on how to deal with monadic types within a list
2021-12-20 06:27:00 +0100ksqsf(~user@134.209.106.31)
2021-12-20 06:29:18 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-20 06:29:18 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-20 06:29:18 +0100wroathe(~wroathe@user/wroathe)
2021-12-20 06:34:33 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2021-12-20 06:47:51 +0100jespada(~jespada@87.74.33.157) (Ping timeout: 245 seconds)
2021-12-20 06:50:37 +0100jespada(~jespada@87.74.33.157)
2021-12-20 06:53:21 +0100pfurla(~pfurla@2804:d41:4331:4800:11e0:2623:c59:6cb7) (Quit: gone to sleep. ZZZzzz…)
2021-12-20 06:55:43 +0100 <mniip> hornetcluster, you can use sequence to sequence the actions
2021-12-20 06:56:30 +0100 <mniip> which makes sense because the result of readArray may have different values depending on when it's executed
2021-12-20 07:01:13 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-12-20 07:01:17 +0100deadmarshal(~deadmarsh@95.38.230.107)
2021-12-20 07:11:39 +0100jonathanx(~jonathan@c-5eea3642-74736162.cust.telenor.se)
2021-12-20 07:13:52 +0100 <EvanR> sequence :: Monad m => [m a] -> m [a]
2021-12-20 07:14:27 +0100 <EvanR> (e.g.)
2021-12-20 07:15:05 +0100KnifeFire(~Knifefire@120.242.179.19)
2021-12-20 07:17:27 +0100 <int-e> . o O ( exercise: what does `sequence` do in the list monad? )
2021-12-20 07:17:41 +0100 <EvanR> sure go ahead and bump me down the glguy leaderboard... I know I was at 11th xD
2021-12-20 07:17:51 +0100 <EvanR> (being bumped down is annoying)
2021-12-20 07:19:02 +0100 <int-e> EvanR: want a commemorative screenshot? https://int-e.eu/~bf3/tmp/ER.png ;-)
2021-12-20 07:19:26 +0100 <EvanR> through the magic of "stats", by completing the puzzle later than me, you end up doing better xD
2021-12-20 07:19:46 +0100 <int-e> oh no, I've leaked my secret identity
2021-12-20 07:20:02 +0100 <EvanR> sok I didn't click
2021-12-20 07:21:24 +0100KnifeFire(~Knifefire@120.242.179.19) (Quit: WeeChat 3.0.1)
2021-12-20 07:24:49 +0100 <int-e> (it's easy enough to guess anyway :P)
2021-12-20 07:25:01 +0100 <g> Are you glguy?
2021-12-20 07:25:51 +0100 <int-e> no, glguy is glguy.
2021-12-20 07:26:06 +0100 <g> That's probably what he wants you to think!
2021-12-20 07:26:14 +0100mikoto-chan(~mikoto-ch@esm-84-240-99-143.netplaza.fi) (Quit: mikoto-chan)
2021-12-20 07:27:02 +0100hornetcluster(~textual@2601:5c0:c280:7e20:5502:4cf:f65e:fd6b) (Quit: Textual IRC Client: www.textualapp.com)
2021-12-20 07:27:05 +0100 <g> int-e: do you post solutions online?
2021-12-20 07:27:12 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-12-20 07:27:40 +0100 <int-e> you don't get 20 questions :P
2021-12-20 07:27:56 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit)
2021-12-20 07:27:59 +0100 <g> How many do I get?
2021-12-20 07:30:19 +0100xeroxcommemorates his temporary 9 in there too
2021-12-20 07:31:04 +0100python476(~user@88.160.31.174)
2021-12-20 07:31:43 +0100lavaman(~lavaman@98.38.249.169)
2021-12-20 07:33:21 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2021-12-20 07:36:11 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 245 seconds)
2021-12-20 07:37:36 +0100 <EvanR> I posted all my code so far but it's steadily degrades in quality with time
2021-12-20 07:38:33 +0100 <EvanR> I went from having it print the answer and having code all tidy to being a hodgepodge of functions that I used half used in the repl with help from a randomly behaving main
2021-12-20 07:39:10 +0100 <EvanR> I'm not above mouse copy pasting show output into my code xD
2021-12-20 07:39:57 +0100 <EvanR> I still don't know how the 7-segment display code works
2021-12-20 07:41:27 +0100 <xerox> I think that was my favorite problem this year so far
2021-12-20 07:41:30 +0100 <nshepperd2> most days i have two functions part1 input = ...; part2 input = ... which i call from the repl
2021-12-20 07:42:00 +0100 <nshepperd2> needed to compile day 19 for speed though
2021-12-20 07:42:52 +0100 <EvanR> I sat there for like 20 minutes waiting for day 19 answers in the repl because I forgot to compile
2021-12-20 07:43:10 +0100 <opqdonut> my 19 was 13 secs in ghci
2021-12-20 07:43:16 +0100 <opqdonut> 15 was the one I needed to compile
2021-12-20 07:43:29 +0100 <opqdonut> probably because I couldn't bother to go full A*
2021-12-20 07:43:41 +0100 <EvanR> oh yeah, no idea how that works either
2021-12-20 07:44:00 +0100 <EvanR> A* seems pretty mystical
2021-12-20 07:44:02 +0100 <opqdonut> (my 19 https://github.com/opqdonut/adventofcode21/blob/master/Day19.hs)
2021-12-20 07:45:36 +0100 <EvanR> regularized vector distance, what is this magick
2021-12-20 07:45:56 +0100 <opqdonut> it's something I made up on the spot I guess
2021-12-20 07:46:22 +0100 <EvanR> I was wondering if there was some kinda correlation junk I never learned that would help
2021-12-20 07:46:36 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2021-12-20 07:46:38 +0100 <opqdonut> it's rotation-invariant, and has a bit more "resolution" than just manhattan distance (meaning I get fewer false positives)
2021-12-20 07:47:30 +0100_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-12-20 07:47:35 +0100 <opqdonut> squared euclidean distance might've worked just as well
2021-12-20 07:48:42 +0100deadmarshal(~deadmarsh@95.38.230.107) (Ping timeout: 256 seconds)
2021-12-20 07:50:17 +0100 <nshepperd2> oh interesting. i used Linear.Matrix for the rotations
2021-12-20 07:50:49 +0100 <nshepperd2> they are all integer matrices with determinant 1
2021-12-20 07:51:29 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-12-20 07:51:35 +0100 <opqdonut> I felt matrices are overkill for simple flips and permutations ... but I ended up writing it using dot products anyway
2021-12-20 07:51:40 +0100 <EvanR> i used . to build the 24 rotations xD
2021-12-20 07:51:50 +0100 <EvanR> rubicks cube style
2021-12-20 07:51:52 +0100 <opqdonut> yeah that's pretty good
2021-12-20 07:52:15 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net)
2021-12-20 07:52:58 +0100 <EvanR> (Int,Int,Int) probably slowed me down
2021-12-20 07:53:29 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 268 seconds)
2021-12-20 07:53:36 +0100 <int-e> I was quite happy with this for rotations: https://paste.debian.net/1224107/
2021-12-20 07:53:56 +0100 <EvanR> ah
2021-12-20 07:53:57 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 240 seconds)
2021-12-20 07:54:25 +0100 <EvanR> I appreciate their clue spoiling how to enumerate the rotations
2021-12-20 07:54:40 +0100 <EvanR> that would have taken me a minute
2021-12-20 07:55:48 +0100lavaman(~lavaman@98.38.249.169)
2021-12-20 07:57:10 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
2021-12-20 07:57:24 +0100 <int-e> clue, oh they spelled out why there are 24. right.
2021-12-20 07:57:42 +0100 <EvanR> and how to get them all
2021-12-20 07:57:44 +0100 <int-e> but I knew that :)
2021-12-20 07:58:07 +0100 <EvanR> I lost some time opening the octahedral symmetry group wikipedia
2021-12-20 07:58:21 +0100 <int-e> heh
2021-12-20 07:59:13 +0100toastloop(toastloop@user/toastloop)
2021-12-20 08:01:18 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-12-20 08:05:16 +0100deadmarshal(~deadmarsh@95.38.230.107)
2021-12-20 08:06:18 +0100 <int-e> I have a separate terminal at all times that I can use to compile-and-run in parallel with the bytecode version.
2021-12-20 08:06:57 +0100 <int-e> because otherwise I'd have the dilemma of deciding whether the bytecode version is just about to finish
2021-12-20 08:07:17 +0100thevishy(~Nishant@2405:201:f005:c007:48b2:97f1:a252:93a6)
2021-12-20 08:07:43 +0100 <EvanR> yeah I just did that
2021-12-20 08:08:07 +0100 <EvanR> repl was not instant, began going for the compilable version
2021-12-20 08:08:16 +0100khumba(~khumba@user/khumba) ()
2021-12-20 08:08:26 +0100 <EvanR> right before that was ready repl spat out the answer xD
2021-12-20 08:10:05 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net)
2021-12-20 08:12:11 +0100mikoto-chan(~mikoto-ch@nat1.panoulu.net)
2021-12-20 08:14:17 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2021-12-20 08:19:40 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-20 08:22:32 +0100ksqsf(~user@134.209.106.31)
2021-12-20 08:23:17 +0100deadmarshal(~deadmarsh@95.38.230.107) (Ping timeout: 240 seconds)
2021-12-20 08:23:55 +0100deadmarshal(~deadmarsh@95.38.230.107)
2021-12-20 08:33:08 +0100 <int-e> rotations, less scrutable: https://paste.debian.net/1224141/
2021-12-20 08:36:58 +0100 <EvanR> computers, making the obvious incomprehensible since leibniz xD
2021-12-20 08:40:46 +0100 <int-e> I think people did group presentations (this is closely related) before computers.
2021-12-20 08:41:31 +0100 <EvanR> yeah
2021-12-20 08:41:32 +0100 <int-e> though computers made those much more meaningful (because they become practically applicable to larger groups)
2021-12-20 08:42:11 +0100ksqsf(~user@134.209.106.31) (Remote host closed the connection)
2021-12-20 08:45:37 +0100python476(~user@88.160.31.174) (Ping timeout: 240 seconds)
2021-12-20 08:45:44 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2021-12-20 08:46:24 +0100jakalx(~jakalx@base.jakalx.net)
2021-12-20 08:48:13 +0100danso(~danso@2001:1970:52e7:d000:96b8:6dff:feb3:c009) (Ping timeout: 240 seconds)
2021-12-20 08:51:43 +0100coot(~coot@89-64-85-93.dynamic.chello.pl)
2021-12-20 08:53:52 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-12-20 08:57:02 +0100kaph(~kaph@net-2-47-236-216.cust.vodafonedsl.it) (Ping timeout: 240 seconds)
2021-12-20 08:58:10 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:5002:c5c3:7481:de0c)
2021-12-20 09:00:26 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:7cf1:85e9:3000:4f4d) (Remote host closed the connection)
2021-12-20 09:03:57 +0100danso(~danso@d67-193-121-2.home3.cgocable.net)
2021-12-20 09:04:28 +0100Erutuon(~Erutuon@user/erutuon)
2021-12-20 09:06:04 +0100 <mjrosenb> Interesting, I saw that there were 24, and didn't actually look beyond that.
2021-12-20 09:06:09 +0100Midjak(~Midjak@may53-1-78-226-116-92.fbx.proxad.net) (Quit: This computer has gone to sleep)
2021-12-20 09:06:49 +0100dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2021-12-20 09:07:21 +0100neurocyte0132889(~neurocyte@IP-045136168122.dynamic.medianet-world.de)
2021-12-20 09:07:21 +0100neurocyte0132889(~neurocyte@IP-045136168122.dynamic.medianet-world.de) (Changing host)
2021-12-20 09:07:21 +0100neurocyte0132889(~neurocyte@user/neurocyte)
2021-12-20 09:07:27 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-20 09:07:46 +0100 <mjrosenb> also, that was yesterday's right? I don't remember seeing any 3d stuff for today's.
2021-12-20 09:08:37 +0100 <EvanR> today was 2d
2021-12-20 09:08:50 +0100 <EvanR> tomorrow is 5d
2021-12-20 09:10:08 +0100chexum_(~quassel@gateway/tor-sasl/chexum)
2021-12-20 09:10:18 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net)
2021-12-20 09:10:19 +0100chexum(~quassel@gateway/tor-sasl/chexum) (Quit: No Ping reply in 180 seconds.)
2021-12-20 09:11:57 +0100mvk(~mvk@2607:fea8:5cdd:f000::917a) (Ping timeout: 240 seconds)
2021-12-20 09:13:39 +0100jonathanx(~jonathan@c-5eea3642-74736162.cust.telenor.se) (Ping timeout: 268 seconds)
2021-12-20 09:15:50 +0100 <nshepperd2> in exchange for the sleigh keys, the grim reaper challenges you to a game of five dimensional chess...
2021-12-20 09:16:28 +0100iqubic(~user@2601:602:9502:c70:c28f:848:f184:6c67)
2021-12-20 09:16:34 +0100 <int-e> as long as there's no time travel
2021-12-20 09:17:17 +0100deadmarshal(~deadmarsh@95.38.230.107) (Ping timeout: 240 seconds)
2021-12-20 09:17:18 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-12-20 09:21:57 +0100 <EvanR> (wait, a version of chess featuring time travel (other than the mundane "undo" feature))
2021-12-20 09:23:23 +0100xkuru(~xkuru@user/xkuru) (Read error: Connection reset by peer)
2021-12-20 09:24:08 +0100 <int-e> EvanR: did you miss https://en.wikipedia.org/wiki/5D_Chess_with_Multiverse_Time_Travel (didn't play, saw a few videos, didn't really like what I saw)
2021-12-20 09:24:58 +0100 <EvanR> I saw the ad but didn't realize there was timetravel
2021-12-20 09:24:59 +0100bollu(uid233390@id-233390.helmsley.irccloud.com)
2021-12-20 09:25:06 +0100 <int-e> the "time travel" is going back in the game tree and spawning an alternative timeline
2021-12-20 09:25:09 +0100 <EvanR> multiverse time travel sounds kind of lame though
2021-12-20 09:25:10 +0100dminuosounpacks his TardisT
2021-12-20 09:25:38 +0100 <int-e> but the "timelines" interact and its all weird.
2021-12-20 09:25:46 +0100 <EvanR> at least have the board contain a closed timelike loop
2021-12-20 09:26:12 +0100 <dminuoso> EvanR: I wonder, is that even computable for a chess board?
2021-12-20 09:26:33 +0100 <dminuoso> Presumably you'd have to limit backwards time travel to some degree.
2021-12-20 09:27:50 +0100 <EvanR> a sequence of moves triggers time travel... and what happens next must eventually be fulfilled like bill and ted
2021-12-20 09:28:27 +0100 <EvanR> or maybe at some point all the piece rules are backward
2021-12-20 09:28:56 +0100 <EvanR> maybe I should look at 5D chess
2021-12-20 09:29:28 +0100 <int-e> EvanR: just don't blame me if it sucks :P
2021-12-20 09:29:39 +0100 <int-e> it's still a viable meme though
2021-12-20 09:33:21 +0100 <mjrosenb> IIRC, you only need to get checkmate in one timeline, and if you've checked in *a* timeline, then you can't delay getting out of check in that timeline.
2021-12-20 09:34:10 +0100 <mjrosenb> anyhow, there's a function in lens that turns a traversal accessing one element into a lens, does anyone remember what it is?
2021-12-20 09:34:21 +0100 <int-e> things get wild when pieces cross between timelines
2021-12-20 09:34:50 +0100 <int-e> it's just weird though, not interesting, because the complexity arises from comlpex rules
2021-12-20 09:34:53 +0100 <dminuoso> mjrosenb: unsafeSingular
2021-12-20 09:35:09 +0100 <int-e> (in my opinion, ymmv)
2021-12-20 09:37:33 +0100 <mjrosenb> dminuoso: danke (turns out I lied, and I just want to turn a traversal into a getter, and can use singular)
2021-12-20 09:40:45 +0100burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk) (Remote host closed the connection)
2021-12-20 09:42:29 +0100cfricke(~cfricke@user/cfricke)
2021-12-20 09:43:24 +0100 <EvanR> if a bishop is able to change colors I'm out
2021-12-20 09:44:17 +0100 <mjrosenb> I think it can, since the board keeps its parity over time, but the time is part of a bishop's parity?
2021-12-20 09:44:34 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.3)
2021-12-20 09:44:37 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-12-20 09:45:02 +0100 <iqubic> EvanR: Yeah. Bishops can easily change color
2021-12-20 09:47:39 +0100ksqsf(~user@134.209.106.31)
2021-12-20 09:49:52 +0100acidjnk(~acidjnk@p200300d0c7271e24a8fe310273dd6d48.dip0.t-ipconnect.de)
2021-12-20 09:51:57 +0100 <dibblego> @src find
2021-12-20 09:51:57 +0100deadmarshal(~deadmarsh@95.38.230.107)
2021-12-20 09:51:57 +0100 <lambdabot> find p = listToMaybe . filter p
2021-12-20 09:54:59 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-12-20 10:00:37 +0100darchitect(~darchitec@2a00:23c6:3584:df00:7dec:bf13:8fa:748c)
2021-12-20 10:00:40 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net)
2021-12-20 10:00:48 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:7cf1:85e9:3000:4f4d)
2021-12-20 10:01:01 +0100shriekingnoise(~shrieking@186.137.144.80) (Quit: Quit)
2021-12-20 10:03:17 +0100max22-(~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr)
2021-12-20 10:04:57 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:7cf1:85e9:3000:4f4d) (Ping timeout: 240 seconds)
2021-12-20 10:08:45 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-12-20 10:09:32 +0100cfricke(~cfricke@user/cfricke) (Ping timeout: 240 seconds)
2021-12-20 10:10:38 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2021-12-20 10:10:52 +0100ProfSimm(~ProfSimm@87.227.196.109)
2021-12-20 10:11:35 +0100cfricke(~cfricke@user/cfricke)
2021-12-20 10:11:37 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
2021-12-20 10:11:46 +0100Jing(~hedgehog@2604:a840:3::103b) (Remote host closed the connection)
2021-12-20 10:12:29 +0100Jing(~hedgehog@2604:a840:3::103b)
2021-12-20 10:12:51 +0100dsrt^(~dsrt@64.253.22.77) (Ping timeout: 268 seconds)
2021-12-20 10:13:37 +0100gehmehgeh(~user@user/gehmehgeh)
2021-12-20 10:16:17 +0100 <nshepperd2> "shall a bishop change its stripes?"
2021-12-20 10:17:25 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-12-20 10:17:35 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2021-12-20 10:19:52 +0100mcgroin(~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2021-12-20 10:20:51 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2021-12-20 10:21:59 +0100jakalx(~jakalx@base.jakalx.net)
2021-12-20 10:23:24 +0100jle`(~jle`@cpe-23-240-75-236.socal.res.rr.com) (Ping timeout: 256 seconds)
2021-12-20 10:25:28 +0100jle`(~jle`@cpe-23-240-75-236.socal.res.rr.com)
2021-12-20 10:25:55 +0100 <int-e> nshepperd2: 🨃 or maybe 🩂🨭🨘?
2021-12-20 10:27:06 +0100 <dminuoso> Is there some tool that would help me identify unused extensions?
2021-12-20 10:28:03 +0100 <dminuoso> For me the assumption that, if the program compiles without that extension in a module, it's unused is enough - knowing this could harbor some exotic exceptions where removing an extension could alter the program
2021-12-20 10:29:25 +0100dsrt^(~dsrt@64.253.22.77)
2021-12-20 10:30:14 +0100dsrt^(~dsrt@64.253.22.77) (Remote host closed the connection)
2021-12-20 10:35:59 +0100mcgroin(~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Quit: WeeChat 2.8)
2021-12-20 10:38:27 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-12-20 10:41:56 +0100lavaman(~lavaman@98.38.249.169)
2021-12-20 10:43:02 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-12-20 10:43:28 +0100lavaman(~lavaman@98.38.249.169)
2021-12-20 10:44:19 +0100 <int-e> It's always a bit of a surprise that ghc needs a C++ compiler to built on Linux (because of libffi)
2021-12-20 10:45:47 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net)
2021-12-20 10:49:51 +0100Akiva(~Akiva@user/Akiva) (Ping timeout: 268 seconds)
2021-12-20 10:50:27 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-20 10:51:06 +0100Akiva(~Akiva@user/Akiva)
2021-12-20 10:51:10 +0100deadmarshal(~deadmarsh@95.38.230.107) (Ping timeout: 256 seconds)
2021-12-20 10:52:56 +0100econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-12-20 10:54:07 +0100joo-_(~joo-_@fsf/member/joo--) (Quit: leaving)
2021-12-20 10:54:22 +0100joo-_(~joo-_@87-49-45-77-mobile.dk.customer.tdc.net)
2021-12-20 10:54:22 +0100joo-_(~joo-_@87-49-45-77-mobile.dk.customer.tdc.net) (Changing host)
2021-12-20 10:54:22 +0100joo-_(~joo-_@fsf/member/joo--)
2021-12-20 10:54:27 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-12-20 10:54:42 +0100lavaman(~lavaman@98.38.249.169)
2021-12-20 10:54:49 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-12-20 10:56:54 +0100kupi(uid212005@id-212005.hampstead.irccloud.com)
2021-12-20 10:58:15 +0100joo-_(~joo-_@fsf/member/joo--) (Client Quit)
2021-12-20 10:59:02 +0100Tuplanolla(~Tuplanoll@91-159-68-169.elisa-laajakaista.fi)
2021-12-20 11:01:21 +0100deadmarshal(~deadmarsh@95.38.230.107)
2021-12-20 11:06:57 +0100 <Unhammer> bah this ghcid thing also needs constant restarting
2021-12-20 11:07:34 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 260 seconds)
2021-12-20 11:08:12 +0100Unhammergoes back to while sleep 1; do timeout 30 stack repl; done
2021-12-20 11:08:24 +0100 <Hecate> Unhammer: why does it need restarting?
2021-12-20 11:08:31 +0100 <Hecate> or rather, what change does it not pick up?
2021-12-20 11:09:57 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2021-12-20 11:11:40 +0100 <Unhammer> when I save a file, nothing happens
2021-12-20 11:11:58 +0100 <Unhammer> maybe it's that text show pretty error because I have that in my ghci but not installed …
2021-12-20 11:12:42 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:7cf1:85e9:3000:4f4d)
2021-12-20 11:12:58 +0100chexum_(~quassel@gateway/tor-sasl/chexum) (Quit: No Ping reply in 180 seconds.)
2021-12-20 11:14:19 +0100chexum(~quassel@gateway/tor-sasl/chexum)
2021-12-20 11:16:18 +0100jakalx(~jakalx@base.jakalx.net)
2021-12-20 11:16:57 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:7cf1:85e9:3000:4f4d) (Ping timeout: 240 seconds)
2021-12-20 11:17:16 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-12-20 11:18:02 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net)
2021-12-20 11:18:22 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds)
2021-12-20 11:19:50 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2021-12-20 11:20:37 +0100Inst(~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 240 seconds)
2021-12-20 11:22:58 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
2021-12-20 11:24:17 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-12-20 11:25:17 +0100danso(~danso@d67-193-121-2.home3.cgocable.net) (Ping timeout: 240 seconds)
2021-12-20 11:25:20 +0100lavaman(~lavaman@98.38.249.169)
2021-12-20 11:26:00 +0100__monty__(~toonn@user/toonn)
2021-12-20 11:26:03 +0100zer0bitz(~zer0bitz@2001:2003:f444:a000:81c1:fdbc:2b2:4c4a)
2021-12-20 11:29:42 +0100pfurla(~pfurla@2804:d41:4331:4800:11e0:2623:c59:6cb7)
2021-12-20 11:29:42 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2021-12-20 11:31:01 +0100xbreu(~xbreu@2001:470:69fc:105::1:5061)
2021-12-20 11:35:59 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net)
2021-12-20 11:37:33 +0100 <mjrosenb> I know that ghcid is really suboptimal for me, since I get about 3 pages worth or warnings every time I save
2021-12-20 11:39:04 +0100danso(~danso@2001:1970:52e7:d000:96b8:6dff:feb3:c009)
2021-12-20 11:43:13 +0100dsp(~dsp@cpc152107-haye27-2-0-cust227.17-4.cable.virginm.net)
2021-12-20 11:43:57 +0100dsp(~dsp@cpc152107-haye27-2-0-cust227.17-4.cable.virginm.net) (Remote host closed the connection)
2021-12-20 11:44:17 +0100Akiva(~Akiva@user/Akiva) (Ping timeout: 240 seconds)
2021-12-20 11:45:57 +0100mikoto-chan(~mikoto-ch@nat1.panoulu.net) (Quit: mikoto-chan)
2021-12-20 11:46:21 +0100wroathe(~wroathe@user/wroathe)
2021-12-20 11:51:31 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2021-12-20 11:54:23 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:7cf1:85e9:3000:4f4d)
2021-12-20 11:54:39 +0100img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2021-12-20 11:57:25 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2021-12-20 11:58:37 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:7cf1:85e9:3000:4f4d) (Ping timeout: 240 seconds)
2021-12-20 12:01:12 +0100ksqsf(~user@134.209.106.31) (Remote host closed the connection)
2021-12-20 12:03:34 +0100img(~img@user/img)
2021-12-20 12:07:24 +0100ubert(~Thunderbi@p200300ecdf0a5d0bd9ff0243dc33f2a7.dip0.t-ipconnect.de) (Quit: ubert)
2021-12-20 12:09:19 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-12-20 12:09:42 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-12-20 12:13:50 +0100xff0x(~xff0x@2001:1a81:5214:2e00:5b16:4ef1:d67d:4f66) (Ping timeout: 260 seconds)
2021-12-20 12:14:42 +0100xff0x(~xff0x@2001:1a81:5214:2e00:39f0:aaaf:c001:5cae)
2021-12-20 12:14:52 +0100toastloop(toastloop@user/toastloop) (Quit: Leaving)
2021-12-20 12:15:17 +0100ft(~ft@shell.chaostreff-dortmund.de) (Quit: leaving)
2021-12-20 12:15:28 +0100ft(~ft@shell.chaostreff-dortmund.de)
2021-12-20 12:17:09 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-20 12:17:09 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-20 12:17:09 +0100wroathe(~wroathe@user/wroathe)
2021-12-20 12:19:49 +0100dyeplexer(~dyeplexer@user/dyeplexer)
2021-12-20 12:20:23 +0100bollu(uid233390@id-233390.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2021-12-20 12:22:24 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2021-12-20 12:26:03 +0100danso(~danso@2001:1970:52e7:d000:96b8:6dff:feb3:c009) (Ping timeout: 268 seconds)
2021-12-20 12:26:27 +0100Guest57(~Guest57@82.47.22.49)
2021-12-20 12:27:05 +0100Guest57(~Guest57@82.47.22.49) (Client Quit)
2021-12-20 12:27:36 +0100danso(~danso@2001:1970:52e7:d000:96b8:6dff:feb3:c009)
2021-12-20 12:28:23 +0100mikoto-chan(~mikoto-ch@esm-84-240-99-143.netplaza.fi)
2021-12-20 12:32:10 +0100machinedgod(~machinedg@24.105.81.50)
2021-12-20 12:33:10 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2021-12-20 12:35:58 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:7cf1:85e9:3000:4f4d)
2021-12-20 12:36:07 +0100ksqsf(~user@134.209.106.31)
2021-12-20 12:40:17 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:7cf1:85e9:3000:4f4d) (Ping timeout: 240 seconds)
2021-12-20 12:41:02 +0100danso(~danso@2001:1970:52e7:d000:96b8:6dff:feb3:c009) (Ping timeout: 240 seconds)
2021-12-20 12:41:17 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 240 seconds)
2021-12-20 12:55:41 +0100polezaivsani(~polezaivs@orangeshoelaces.net)
2021-12-20 12:57:37 +0100deadmarshal(~deadmarsh@95.38.230.107) (Ping timeout: 240 seconds)
2021-12-20 13:00:37 +0100acidjnk(~acidjnk@p200300d0c7271e24a8fe310273dd6d48.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2021-12-20 13:04:23 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
2021-12-20 13:06:00 +0100 <dminuoso> Given a string `x` and another list of strings `zs`, for which I want to find the longest string in `zs`, that happens to be a suffix of x.
2021-12-20 13:06:54 +0100 <dminuoso> Now, I need to do this quite often, so Im thinking to build a (maybe patricia) trie from `zs`, and then do a lookup of `x` inside that trie
2021-12-20 13:07:24 +0100 <dminuoso> Well not quite lookup, but rather a lookup of the leaf-most suffix
2021-12-20 13:07:34 +0100kranius(~kranius@222.186.245.213.rev.sfr.net)
2021-12-20 13:07:36 +0100 <dminuoso> Is there something less convoluted Im missing?
2021-12-20 13:08:08 +0100 <dminuoso> uh, and we can pretend this to be prefix too, that's just a matter of calling `reverse`
2021-12-20 13:08:25 +0100danso(~danso@2001:1970:52e7:d000:96b8:6dff:feb3:c009)
2021-12-20 13:08:58 +0100 <dminuoso> in reality Im dealing with lists of texts (call them labels, if you want), so the longest matching tail is what I want
2021-12-20 13:11:43 +0100kupi(uid212005@id-212005.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-12-20 13:13:24 +0100kranius(~kranius@222.186.245.213.rev.sfr.net) (Ping timeout: 256 seconds)
2021-12-20 13:16:37 +0100Inst(~delicacie@c-98-208-218-119.hsd1.fl.comcast.net)
2021-12-20 13:17:18 +0100 <Unhammer> mjrosenb yeah same here :/
2021-12-20 13:20:02 +0100acidjnk(~acidjnk@p200300d0c7271e24a1571c369919364e.dip0.t-ipconnect.de)
2021-12-20 13:20:30 +0100jonathanx(~jonathan@c-5eea3642-74736162.cust.telenor.se)
2021-12-20 13:21:03 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-20 13:22:33 +0100lavaman(~lavaman@98.38.249.169)
2021-12-20 13:27:07 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 268 seconds)
2021-12-20 13:27:07 +0100jonathanx(~jonathan@c-5eea3642-74736162.cust.telenor.se) (Ping timeout: 268 seconds)
2021-12-20 13:32:23 +0100pfurla(~pfurla@2804:d41:4331:4800:11e0:2623:c59:6cb7) (Quit: gone to sleep. ZZZzzz…)
2021-12-20 13:34:35 +0100coot(~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot)
2021-12-20 13:38:15 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:7cf1:85e9:3000:4f4d)
2021-12-20 13:38:21 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net) (Remote host closed the connection)
2021-12-20 13:39:40 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net)
2021-12-20 13:42:17 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:7cf1:85e9:3000:4f4d) (Ping timeout: 240 seconds)
2021-12-20 13:44:17 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2021-12-20 13:51:50 +0100wolfshappen(~waff@irc.furworks.de) (Quit: later)
2021-12-20 13:55:20 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-12-20 13:56:23 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2021-12-20 13:57:30 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net)
2021-12-20 13:58:34 +0100shlomo(~shlomo@128.90.165.9)
2021-12-20 14:00:01 +0100shlomo(~shlomo@128.90.165.9) (Quit: Leaving)
2021-12-20 14:00:14 +0100benin(~benin@183.82.27.121) (Ping timeout: 260 seconds)
2021-12-20 14:01:18 +0100deadmarshal(~deadmarsh@95.38.230.107)
2021-12-20 14:01:37 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2021-12-20 14:02:52 +0100benin(~benin@183.82.27.121)
2021-12-20 14:03:11 +0100kranius(~kranius@222.186.245.213.rev.sfr.net)
2021-12-20 14:06:08 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-12-20 14:07:50 +0100kranius(~kranius@222.186.245.213.rev.sfr.net) (Ping timeout: 252 seconds)
2021-12-20 14:08:11 +0100cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.3)
2021-12-20 14:10:53 +0100ph88(~ph88@ip5f5af068.dynamic.kabel-deutschland.de)
2021-12-20 14:13:47 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-20 14:13:47 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-20 14:13:47 +0100wroathe(~wroathe@user/wroathe)
2021-12-20 14:16:02 +0100mikoto-chan(~mikoto-ch@esm-84-240-99-143.netplaza.fi) (Ping timeout: 240 seconds)
2021-12-20 14:17:21 +0100 <carbolymer> Damn, Haskell is too smart for me. It tells me that something is a stupid idea right away, and it takes me two days of working around ghc errors to figure this out myself.
2021-12-20 14:17:26 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 256 seconds)
2021-12-20 14:18:10 +0100 <yushyin> maybe next time ask here and we might be of help
2021-12-20 14:18:32 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2021-12-20 14:18:46 +0100 <carbolymer> Asking smarter folks for advice is always a good idea
2021-12-20 14:20:09 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:7cf1:85e9:3000:4f4d)
2021-12-20 14:22:54 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-12-20 14:24:17 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:7cf1:85e9:3000:4f4d) (Ping timeout: 240 seconds)
2021-12-20 14:26:37 +0100danso(~danso@2001:1970:52e7:d000:96b8:6dff:feb3:c009) (Ping timeout: 240 seconds)
2021-12-20 14:27:17 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2021-12-20 14:27:53 +0100kuribas(~user@ptr-25vy0i760m61zg72p7f.18120a2.ip6.access.telenet.be)
2021-12-20 14:28:31 +0100 <ksqsf> b
2021-12-20 14:28:37 +0100 <yushyin> then you should not ask me ;)
2021-12-20 14:28:56 +0100 <pragma-> ksqsf: that is a fine letter
2021-12-20 14:29:40 +0100pretty_dumm_guy(~trottel@eduroam-134-96-204-6.uni-saarland.de)
2021-12-20 14:30:39 +0100danso(~danso@d67-193-121-2.home3.cgocable.net)
2021-12-20 14:32:18 +0100jkaye(~jkaye@2601:281:8300:7530:6566:3224:cc66:3345)
2021-12-20 14:32:53 +0100pretty_dumm_guy(~trottel@eduroam-134-96-204-6.uni-saarland.de) (Client Quit)
2021-12-20 14:38:32 +0100bollu(uid233390@id-233390.helmsley.irccloud.com)
2021-12-20 14:42:57 +0100deadmarshal(~deadmarsh@95.38.230.107) (Ping timeout: 240 seconds)
2021-12-20 14:44:56 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-12-20 14:45:40 +0100Vajb(~Vajb@2001:999:62:f3d1:4390:fbed:1f9b:9d03)
2021-12-20 14:52:23 +0100max22-(~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr) (Ping timeout: 252 seconds)
2021-12-20 14:59:22 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 256 seconds)
2021-12-20 15:05:41 +0100wolfshappen(~waff@irc.furworks.de)
2021-12-20 15:06:08 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-12-20 15:06:58 +0100shriekingnoise(~shrieking@186.137.144.80)
2021-12-20 15:07:18 +0100deadmarshal(~deadmarsh@95.38.230.107)
2021-12-20 15:17:15 +0100ees(~user@pool-108-18-30-46.washdc.fios.verizon.net)
2021-12-20 15:23:13 +0100kuribas(~user@ptr-25vy0i760m61zg72p7f.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
2021-12-20 15:26:02 +0100shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net)
2021-12-20 15:28:32 +0100 <tomsmeding> dminuoso: sort the list `zs` and lookup x in that sorted list, potentially by binary search?
2021-12-20 15:28:44 +0100 <tomsmeding> you won't find a match, but you'll end up next to the best match
2021-12-20 15:29:15 +0100 <tomsmeding> (with lexicographical ordering and search)
2021-12-20 15:31:16 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-20 15:31:16 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-20 15:31:16 +0100wroathe(~wroathe@user/wroathe)
2021-12-20 15:32:16 +0100 <tomsmeding> (in reversed form -- naively this does prefix searching of course)
2021-12-20 15:32:36 +0100kranius(~kranius@146.133.22.93.rev.sfr.net)
2021-12-20 15:34:00 +0100pfurla(~pfurla@2804:d41:4331:4800:11e0:2623:c59:6cb7)
2021-12-20 15:37:37 +0100Inst(~delicacie@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 240 seconds)
2021-12-20 15:44:02 +0100kranius(~kranius@146.133.22.93.rev.sfr.net) (Ping timeout: 240 seconds)
2021-12-20 15:45:00 +0100kranius(~kranius@44.149.22.93.rev.sfr.net)
2021-12-20 15:45:55 +0100tristanC_tristanC
2021-12-20 15:48:17 +0100deadmarshal(~deadmarsh@95.38.230.107) (Ping timeout: 240 seconds)
2021-12-20 15:50:02 +0100SummerSonw(~The_viole@203.77.49.232) (Quit: Leaving)
2021-12-20 15:50:54 +0100doyougnu(~doyougnu@c-73-25-202-122.hsd1.or.comcast.net)
2021-12-20 15:51:43 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-20 15:57:14 +0100slaydr(~seriley@45.131.194.254)
2021-12-20 15:59:12 +0100wolfshappen(~waff@irc.furworks.de) (Quit: later)
2021-12-20 15:59:41 +0100wolfshappen(~waff@irc.furworks.de)
2021-12-20 16:02:17 +0100kranius(~kranius@44.149.22.93.rev.sfr.net) (Ping timeout: 240 seconds)
2021-12-20 16:03:37 +0100wolfshappen(~waff@irc.furworks.de) (Ping timeout: 240 seconds)
2021-12-20 16:04:18 +0100wolfshappen(~waff@irc.furworks.de)
2021-12-20 16:05:06 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net)
2021-12-20 16:06:57 +0100euandreh(~euandreh@2804:14c:33:9fe5:995c:e86e:470c:8a37) (Ping timeout: 240 seconds)
2021-12-20 16:09:17 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2021-12-20 16:10:12 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2021-12-20 16:11:14 +0100zebrag(~chris@user/zebrag)
2021-12-20 16:16:12 +0100pfurla(~pfurla@2804:d41:4331:4800:11e0:2623:c59:6cb7) (Quit: gone to sleep. ZZZzzz…)
2021-12-20 16:16:32 +0100euouae(~euouae@user/euouae)
2021-12-20 16:20:13 +0100hornetcluster(~textual@2601:5c0:c280:7e20:5502:4cf:f65e:fd6b)
2021-12-20 16:21:03 +0100hornetcluster(~textual@2601:5c0:c280:7e20:5502:4cf:f65e:fd6b) (Client Quit)
2021-12-20 16:21:33 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:7cf1:85e9:3000:4f4d)
2021-12-20 16:21:37 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 268 seconds)
2021-12-20 16:22:36 +0100zopsi(zopsi@2600:3c00::f03c:91ff:fe14:551f) (Quit: Oops)
2021-12-20 16:22:36 +0100Vajb(~Vajb@2001:999:62:f3d1:4390:fbed:1f9b:9d03) (Read error: Connection reset by peer)
2021-12-20 16:23:39 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-12-20 16:25:37 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:7cf1:85e9:3000:4f4d) (Ping timeout: 240 seconds)
2021-12-20 16:26:04 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-12-20 16:27:04 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-20 16:27:04 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-20 16:27:04 +0100wroathe(~wroathe@user/wroathe)
2021-12-20 16:27:43 +0100Sgeo(~Sgeo@user/sgeo)
2021-12-20 16:28:25 +0100pfurla(~pfurla@2804:d41:4331:4800:11e0:2623:c59:6cb7)
2021-12-20 16:28:52 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-20 16:31:44 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2021-12-20 16:38:55 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-12-20 16:40:47 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-20 16:42:37 +0100EvanR(~evan@user/evanr) (Ping timeout: 240 seconds)
2021-12-20 16:45:36 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-20 16:46:36 +0100ksqsf(~user@134.209.106.31)
2021-12-20 16:47:04 +0100bollu(uid233390@id-233390.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2021-12-20 16:48:35 +0100coot(~coot@2a02:a310:e03f:8500:7248:52ac:817b:7fb4)
2021-12-20 16:49:59 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:5002:c5c3:7481:de0c) (Quit: WeeChat 2.8)
2021-12-20 16:50:19 +0100mc47(~mc47@xmonad/TheMC47)
2021-12-20 16:51:14 +0100chomwitt(~chomwitt@2a02:587:dc19:a500:12c3:7bff:fe6d:d374)
2021-12-20 16:51:34 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 256 seconds)
2021-12-20 16:51:46 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2021-12-20 16:57:37 +0100timCF(~timCF@m91-129-100-224.cust.tele2.ee)
2021-12-20 16:57:51 +0100acidjnk(~acidjnk@p200300d0c7271e24a1571c369919364e.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
2021-12-20 16:58:35 +0100 <timCF> Hello! Is there something similar to ~ function constraint, but for type parametrer non-equality?
2021-12-20 16:58:45 +0100 <Arsen> can Data.Yaml (from yaml) load an object like {"a": "b", "c": "d"} into a simple hashmap?
2021-12-20 16:58:52 +0100 <Arsen> I am simply storing key-value pairs
2021-12-20 16:59:55 +0100deadmarshal(~deadmarsh@95.38.230.107)
2021-12-20 17:00:07 +0100 <geekosaur> timCF, no. equality can be done directly in the typechecker, but non-equality requires a type witness
2021-12-20 17:00:12 +0100the-coot[m](~the-cootm@2001:470:69fc:105::95f) (Quit: You have been kicked for being idle)
2021-12-20 17:02:15 +0100 <timCF> geekosaur: thanks!
2021-12-20 17:03:04 +0100ksqsf(~user@134.209.106.31)
2021-12-20 17:06:32 +0100deadmarshal(~deadmarsh@95.38.230.107) (Ping timeout: 240 seconds)
2021-12-20 17:06:40 +0100ProfSimm(~ProfSimm@87.227.196.109)
2021-12-20 17:07:44 +0100euandreh(~euandreh@2804:14c:33:9fe5:b7fd:fa95:80d6:f41)
2021-12-20 17:08:26 +0100mikoto-chan(~mikoto-ch@esm-84-240-99-143.netplaza.fi)
2021-12-20 17:10:37 +0100jkaye(~jkaye@2601:281:8300:7530:6566:3224:cc66:3345) (Ping timeout: 240 seconds)
2021-12-20 17:11:56 +0100neverfindme(~hayden@158.123.160.43)
2021-12-20 17:12:29 +0100timCF(~timCF@m91-129-100-224.cust.tele2.ee) (Quit: leaving)
2021-12-20 17:15:34 +0100max22-(~maxime@2a01cb0883359800306516e9c6b993f0.ipv6.abo.wanadoo.fr)
2021-12-20 17:17:42 +0100coot(~coot@2a02:a310:e03f:8500:7248:52ac:817b:7fb4) (Quit: coot)
2021-12-20 17:21:34 +0100zaquest(~notzaques@5.130.79.72) (Remote host closed the connection)
2021-12-20 17:22:32 +0100neverfindme(~hayden@158.123.160.43) (Remote host closed the connection)
2021-12-20 17:22:49 +0100neverfindme(~hayden@158.123.160.43)
2021-12-20 17:24:37 +0100lavaman(~lavaman@98.38.249.169)
2021-12-20 17:26:10 +0100deadmarshal(~deadmarsh@95.38.230.107)
2021-12-20 17:26:15 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net)
2021-12-20 17:26:40 +0100neverfindme(~hayden@158.123.160.43) (Client Quit)
2021-12-20 17:28:45 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-12-20 17:28:57 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2021-12-20 17:29:11 +0100kupi(uid212005@id-212005.hampstead.irccloud.com)
2021-12-20 17:30:17 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2021-12-20 17:30:26 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2021-12-20 17:31:34 +0100earendel(uid498179@user/earendel)
2021-12-20 17:34:15 +0100jakalx(~jakalx@base.jakalx.net) ()
2021-12-20 17:34:41 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4)
2021-12-20 17:35:12 +0100deadmarshal(~deadmarsh@95.38.230.107) (Ping timeout: 256 seconds)
2021-12-20 17:35:17 +0100jakalx(~jakalx@base.jakalx.net)
2021-12-20 17:37:45 +0100kaph(~kaph@net-2-47-236-216.cust.vodafonedsl.it)
2021-12-20 17:39:34 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-12-20 17:39:57 +0100doyougnu(~doyougnu@c-73-25-202-122.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
2021-12-20 17:40:11 +0100awpr(uid446117@id-446117.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2021-12-20 17:42:52 +0100zincy(~zincy@2a00:23c8:970c:4801:bdb9:8c5f:3085:2807)
2021-12-20 17:43:34 +0100earendeldisfrutar-conchi
2021-12-20 17:43:42 +0100emf(~emf@2603-6080-9403-11bf-1471-5d14-4db5-bab4.res6.spectrum.com)
2021-12-20 17:47:44 +0100 <monochrom> Very late to the 5D Chess with multiverse time travel conversation, but consider Tenet Chess, too. >:)
2021-12-20 17:47:57 +0100emf(~emf@2603-6080-9403-11bf-1471-5d14-4db5-bab4.res6.spectrum.com) (Ping timeout: 240 seconds)
2021-12-20 17:48:33 +0100emf_(~emf@2620:10d:c091:480::1:4a0)
2021-12-20 17:48:33 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-12-20 17:48:52 +0100 <Hecate> monochrom: NO
2021-12-20 17:48:54 +0100 <Hecate> :<
2021-12-20 17:48:58 +0100 <Hecate> it hurts my brain :(
2021-12-20 17:50:20 +0100 <janus> does it make sense to have 'seq x x' ? hlint has a warning about it
2021-12-20 17:50:27 +0100 <monochrom> It doesn't.
2021-12-20 17:51:13 +0100zincy(~zincy@2a00:23c8:970c:4801:bdb9:8c5f:3085:2807) (Remote host closed the connection)
2021-12-20 17:51:24 +0100 <janus> is it because the x would be exactly evaluated when the seq is reached, and that is also the case when the seq is there?
2021-12-20 17:51:25 +0100 <monochrom> "Yo dawg I heard you like forcing so I force x while you force x."
2021-12-20 17:51:49 +0100 <monochrom> Yeah, it's redundant, repetitive, idempotent.
2021-12-20 17:52:56 +0100 <monochrom> See also my http://www.vex.net/~trebla/humour/tautologies.html #6 :)
2021-12-20 17:57:27 +0100 <c_wraith> janus: seq isn't magic. laziness still applies. It ties the evaluation of two values together, but that only does anything when it's actually demanded
2021-12-20 17:58:52 +0100zincy(~zincy@2a00:23c8:970c:4801:bdb9:8c5f:3085:2807)
2021-12-20 17:59:23 +0100justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 252 seconds)
2021-12-20 17:59:56 +0100 <janus> right. i guess my confusion is of how it is often explained with 'evaluation' but i like the explanation on the haskell wiki more, which also talks about data dependency
2021-12-20 18:00:38 +0100 <janus> it even mentions this exact example https://wiki.haskell.org/Seq
2021-12-20 18:01:13 +0100Morrow(~quassel@bzq-110-168-31-106.red.bezeqint.net)
2021-12-20 18:04:29 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
2021-12-20 18:04:46 +0100zaquest(~notzaques@5.130.79.72)
2021-12-20 18:05:44 +0100thevishy(~Nishant@2405:201:f005:c007:48b2:97f1:a252:93a6) (Quit: Leaving)
2021-12-20 18:07:27 +0100slowButPresent(~slowButPr@user/slowbutpresent)
2021-12-20 18:07:49 +0100 <c_wraith> most notably, "seq x y" is mostly useful when x is some substructure of y that isn't evaluated when y is, but you want it to be.
2021-12-20 18:10:44 +0100 <c_wraith> for instance, there's an idiom "iterate f x !! n" for applying the function f to the value x, n times. But it works really suboptimally when n is large.
2021-12-20 18:12:29 +0100 <c_wraith> because (!!) forces evaluation of the (:) constructors in the list resulting from iterate, but nothing else. This means you get a huge nested series of applications of f in memory, each one as a thunk taking up memory in a manner that's useless for any strict function f
2021-12-20 18:14:50 +0100 <c_wraith> more recent version of base have added a new function, iterate', which resolves this issue for strict f. it uses seq to tie together evaluation of the (:) constructor with its first argument.
2021-12-20 18:15:35 +0100 <c_wraith> This means that when you just traverse the spine of the list with (!!), it's still evaluating the values stored in the list along the way, preventing a buildup of thunks
2021-12-20 18:15:43 +0100img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2021-12-20 18:17:24 +0100epolanski(uid312403@id-312403.helmsley.irccloud.com)
2021-12-20 18:18:36 +0100burnsidesLlama(~burnsides@dhcp168-011.wadham.ox.ac.uk)
2021-12-20 18:18:37 +0100 <c_wraith> Do note that this isn't the complete story, though. There are a lot of ways you could write the value for f such that it will always leak space. And if f makes use of productive laziness, neither iterate nor iterate' is a good way to apply it repeatedly.
2021-12-20 18:19:36 +0100mbuf(~Shakthi@223.178.83.73) (Quit: Leaving)
2021-12-20 18:20:27 +0100img(~img@user/img)
2021-12-20 18:23:24 +0100 <euouae> I don't understand why `iterate f x !! n` is bad for large n
2021-12-20 18:24:29 +0100jkaye(~jkaye@2601:281:8300:7530:bdb2:1444:46f4:adc7)
2021-12-20 18:24:39 +0100 <euouae> when the final cons cell is reached, it's a big series of thunks, each one application of f? is that why? As opposed to evaluating f and then caching the result when iterating the list?
2021-12-20 18:24:58 +0100deadmarshal(~deadmarsh@95.38.230.107)
2021-12-20 18:25:54 +0100 <c_wraith> yep. "iterate f x !! n" is always going to generate n nested applications of f before any of them is evaluated
2021-12-20 18:25:56 +0100 <geekosaur> right, rather than caching it just points to the previous thunk
2021-12-20 18:29:16 +0100 <euouae> okay, thanks
2021-12-20 18:29:32 +0100 <c_wraith> if n is small or f doesn't close over anything, that might not be a big deal
2021-12-20 18:30:41 +0100 <c_wraith> Hmm. f is shared. if it's a huge closure that's only constant extra space, I suppose. So really, it's just the size of n that matters.
2021-12-20 18:32:34 +0100zincy(~zincy@2a00:23c8:970c:4801:bdb9:8c5f:3085:2807) (Remote host closed the connection)
2021-12-20 18:32:36 +0100 <c_wraith> But it's notable that large chains of thunks can have surprising performance impacts. They can cause drag in the garbage collector which actually makes program performance asymptotically worse in certain cases.
2021-12-20 18:32:54 +0100zincy(~zincy@2a00:23c8:970c:4801:bdb9:8c5f:3085:2807)
2021-12-20 18:33:22 +0100dyeplexer(~dyeplexer@user/dyeplexer) (Remote host closed the connection)
2021-12-20 18:34:01 +0100pfurla(~pfurla@2804:d41:4331:4800:11e0:2623:c59:6cb7) (Quit: gone to sleep. ZZZzzz…)
2021-12-20 18:34:11 +0100qrpnxz(~qrpnxz@user/qrpnxz) (Quit: Gateway shutdown)
2021-12-20 18:37:39 +0100zincy(~zincy@2a00:23c8:970c:4801:bdb9:8c5f:3085:2807) (Remote host closed the connection)
2021-12-20 18:41:19 +0100max22-(~maxime@2a01cb0883359800306516e9c6b993f0.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
2021-12-20 18:42:13 +0100max22-(~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr)
2021-12-20 18:45:48 +0100jakalx(~jakalx@base.jakalx.net) ()
2021-12-20 18:46:38 +0100mvk(~mvk@2607:fea8:5cdd:f000::917a)
2021-12-20 18:47:57 +0100slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-12-20 18:47:57 +0100jakalx(~jakalx@base.jakalx.net)
2021-12-20 18:51:32 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Quit: Leaving)
2021-12-20 18:52:37 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2021-12-20 18:55:57 +0100neurocyte0132889(~neurocyte@user/neurocyte) (Ping timeout: 240 seconds)
2021-12-20 18:56:13 +0100 <dminuoso> tomsmeding: Yeah I thought about it as well
2021-12-20 18:56:31 +0100 <dminuoso> tomsmeding: I think Ill just go with a simple nested map as a non-patricia trie
2021-12-20 18:56:39 +0100 <dminuoso> the implementation is very straight forward
2021-12-20 18:57:12 +0100 <dminuoso> https://gist.github.com/dminuoso/41d18409f95b98963df7bdff681ecdbd
2021-12-20 18:57:33 +0100 <dminuoso> Construction is somewhat inefficient, but that's acceptable to me.
2021-12-20 18:58:24 +0100 <euouae> add some comments :P
2021-12-20 18:58:58 +0100 <dminuoso> With `newtype DomTable = DomTable (M.Map T.Text DomTable) deriving Show`
2021-12-20 18:59:00 +0100 <dminuoso> Of course
2021-12-20 18:59:18 +0100 <tomsmeding> oh right, just a nested tree of Maps
2021-12-20 18:59:53 +0100 <dminuoso> Thing though is, Id really like this to be a patricia trie
2021-12-20 19:00:23 +0100tomsmedingdoesn't know how patricia trees work
2021-12-20 19:00:36 +0100 <dminuoso> It's simply a trie in which single branches get coalesced/merged
2021-12-20 19:00:46 +0100 <tomsmeding> ah
2021-12-20 19:01:05 +0100 <tomsmeding> does that happen lots of times in your case?
2021-12-20 19:01:06 +0100 <dminuoso> i.e. when storing a string, you dont store characters separately, so when you have `foo` and `fob`, the root would start with `fo`
2021-12-20 19:03:23 +0100econo(uid147250@user/econo)
2021-12-20 19:03:53 +0100Morrow(~quassel@bzq-110-168-31-106.red.bezeqint.net) (Remote host closed the connection)
2021-12-20 19:04:10 +0100 <tomsmeding> https://hackage.haskell.org/package/list-tries exists, but not sure if you want a dependency for this
2021-12-20 19:04:35 +0100 <dminuoso> I dont think a generic trie implementation can realistically work
2021-12-20 19:04:39 +0100 <tomsmeding> probably best to go with the nested maps tree unless it becomes a performance liability
2021-12-20 19:04:42 +0100 <dminuoso> yeah
2021-12-20 19:04:52 +0100 <dminuoso> I mean this is not really out of performance concerns
2021-12-20 19:04:58 +0100 <dminuoso> This is just CS golfing, if you want.
2021-12-20 19:05:06 +0100 <tomsmeding> I like that term
2021-12-20 19:05:14 +0100Morrow(~quassel@bzq-110-168-31-106.red.bezeqint.net)
2021-12-20 19:05:35 +0100 <tomsmeding> though I still kind of like my original idea
2021-12-20 19:05:59 +0100 <dminuoso> It's still linear in lookup though
2021-12-20 19:06:12 +0100 <dminuoso> And realistically, the data will not be nicely averaged
2021-12-20 19:07:04 +0100 <tomsmeding> what if you take newtype DomTable = DomTable (Set [T.Text]), and for lookup, use Set.lookupLE to get the longest matching prefix
2021-12-20 19:07:09 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-20 19:07:16 +0100 <tomsmeding> I think that should work
2021-12-20 19:07:21 +0100 <tomsmeding> there's a lot of duplication in the keys though
2021-12-20 19:07:34 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
2021-12-20 19:07:34 +0100 <dminuoso> Uh how would that even work?
2021-12-20 19:07:59 +0100 <dminuoso> It certainly wouldnt work with the regular Ord instance
2021-12-20 19:08:03 +0100 <dminuoso> Note:
2021-12-20 19:08:06 +0100 <tomsmeding> table = DomTable (Set.fromList [["com", "google", "maps"], ["com", "tomsmeding", "paste"]])
2021-12-20 19:08:21 +0100 <dminuoso> Find largest key _smaller or equal_ to the given one
2021-12-20 19:08:29 +0100 <tomsmeding> yeah, lexicographically
2021-12-20 19:08:44 +0100 <tomsmeding> if it finds an equal key, then that's obviously the longest prefix
2021-12-20 19:09:07 +0100 <tomsmeding> it there isn't an equal key, then the longest matching prefix is certainly going to be <= your lookup domain
2021-12-20 19:09:26 +0100 <dminuoso> Im genuinely curious now
2021-12-20 19:09:27 +0100 <tomsmeding> and if there is another item in the set in between, then that can only be a longer prefix -- contradiction
2021-12-20 19:09:50 +0100Midjak(~Midjak@may53-1-78-226-116-92.fbx.proxad.net)
2021-12-20 19:09:56 +0100tomsmedingmight be rambling
2021-12-20 19:10:08 +0100 <dminuoso> % sort $ [["foo", "bar", "quux", "baz"], ["google", "maps"], ["com", "tomsmeding", "paste"]]
2021-12-20 19:10:08 +0100 <yahb> dminuoso: [["com","tomsmeding","paste"],["foo","bar","quux","baz"],["google","maps"]]
2021-12-20 19:10:19 +0100 <disfrutar-conchi> maybe some levensthein derivatation could help
2021-12-20 19:10:39 +0100 <tomsmeding> % sort $ [["foo", "bar", "quux", "baz"], ["google", "maps"], ["com", "tomsmeding", "paste"], ["google", "images"]]
2021-12-20 19:10:39 +0100 <yahb> tomsmeding: [["com","tomsmeding","paste"],["foo","bar","quux","baz"],["google","images"],["google","maps"]]
2021-12-20 19:10:41 +0100Akiva(~Akiva@user/Akiva)
2021-12-20 19:10:53 +0100 <dminuoso> tomsmeding: How would `["www", "google", "maps"]` ever be smaller or equal than only ["google", "maps"] here?
2021-12-20 19:11:09 +0100 <tomsmeding> I'm talking about _prefix_ matching here
2021-12-20 19:11:18 +0100 <tomsmeding> if you want suffix matching, you'll have to reverse everything :p
2021-12-20 19:11:35 +0100 <dminuoso> tomsmeding: Sure, lets just pretend we're on the same level with prefix/suffix here.
2021-12-20 19:11:43 +0100 <disfrutar-conchi> string matching.
2021-12-20 19:11:49 +0100 <dminuoso> oh hold on.
2021-12-20 19:11:51 +0100 <dminuoso> mmm
2021-12-20 19:12:17 +0100 <dminuoso> % s = Data.Set.fromList = [["foo", "bar", "quux", "baz"], ["google", "maps"], ["com", "tomsmeding", "paste"], ["google", "images"]]
2021-12-20 19:12:17 +0100 <yahb> dminuoso: ; <interactive>:205:23: error: parse error on input `='
2021-12-20 19:12:22 +0100 <dminuoso> % s = Data.Set.fromList [["foo", "bar", "quux", "baz"], ["google", "maps"], ["com", "tomsmeding", "paste"], ["google", "images"]]
2021-12-20 19:12:22 +0100 <yahb> dminuoso:
2021-12-20 19:12:30 +0100 <tomsmeding> % S.lookupLE ["com", "google", "images"] (S.fromList [["com", "google", "docs"], ["com", "google", "maps"]])
2021-12-20 19:12:30 +0100 <yahb> tomsmeding: Just ["com","google","docs"]
2021-12-20 19:12:41 +0100 <tomsmeding> oh I'm dumb
2021-12-20 19:12:44 +0100 <dminuoso> Yeah that looks borked.
2021-12-20 19:12:53 +0100 <tomsmeding> % S.lookupLE ["com", "google", "images"] (S.fromList [["com", "google", "docs"], ["com", "google", "maps"], ["com"]])
2021-12-20 19:12:54 +0100 <yahb> tomsmeding: Just ["com","google","docs"]
2021-12-20 19:12:58 +0100 <tomsmeding> here you want the ["com"]
2021-12-20 19:13:06 +0100 <dminuoso> But that's the thing
2021-12-20 19:13:07 +0100YoungFrog(~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be) (Quit: ZNC 1.7.x-git-3-96481995 - https://znc.in)
2021-12-20 19:13:17 +0100 <dminuoso> % S.lookupLE ["foo"] (S.fromList [["com", "google", "docs"], ["com", "google", "maps"], ["com"]])
2021-12-20 19:13:17 +0100 <yahb> dminuoso: Just ["com","google","maps"]
2021-12-20 19:13:25 +0100 <dminuoso> No this will not work for what I do
2021-12-20 19:13:28 +0100 <tomsmeding> my idea only works if there are no two items in the set that are prefixes of each other lol
2021-12-20 19:13:31 +0100 <tomsmeding> which is not helpful for you
2021-12-20 19:13:33 +0100 <dminuoso> Yeah
2021-12-20 19:13:53 +0100 <dminuoso> And it assumes that the queried domain has some matching suffix in there
2021-12-20 19:13:59 +0100 <tomsmeding> the idea was the whole time that you should double-check if the result of lookupLE is indeed a prefix
2021-12-20 19:14:01 +0100 <dminuoso> If it doesnt, it gives junk back
2021-12-20 19:14:04 +0100 <tomsmeding> yeah
2021-12-20 19:14:21 +0100 <dminuoso> I think I might do
2021-12-20 19:14:35 +0100 <tomsmeding> but can your map-tree distinguish between [["com", "google"]] and [["com", "google"], ["com"]] ?
2021-12-20 19:14:37 +0100YoungFrog(~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be)
2021-12-20 19:14:51 +0100 <dminuoso> My original one?
2021-12-20 19:14:54 +0100 <tomsmeding> yeah
2021-12-20 19:14:59 +0100 <tomsmeding> https://gist.github.com/dminuoso/41d18409f95b98963df7bdff681ecdbd
2021-12-20 19:15:00 +0100 <dminuoso> Yes
2021-12-20 19:15:06 +0100 <dminuoso> Try it out
2021-12-20 19:15:24 +0100 <dminuoso> tomsmeding: basically *because* its a trie.
2021-12-20 19:15:31 +0100 <dminuoso> tomsmeding: the former gets turned into the latter, so to speak
2021-12-20 19:15:52 +0100 <dminuoso> let chain = foldr (\x t -> DomTable (M.singleton x t)) (DomTable M.empty) xs in DomTable (M.insert x chain table)
2021-12-20 19:16:33 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net)
2021-12-20 19:16:37 +0100 <tomsmeding> 19:15 <dminuoso> tomsmeding: the former gets turned into the latter, so to speak
2021-12-20 19:16:43 +0100 <tomsmeding> okay so it _can't_ distinguish? :p
2021-12-20 19:17:13 +0100 <dminuoso> Oh sorry, no it cant
2021-12-20 19:17:18 +0100 <dminuoso> I see your point.
2021-12-20 19:17:26 +0100 <dminuoso> And that's actually a valid one.
2021-12-20 19:17:28 +0100 <dminuoso> Mmm.
2021-12-20 19:17:37 +0100 <euouae> and finally the peano encoding was useful for something
2021-12-20 19:17:47 +0100 <tomsmeding> in an actual Trie, there's a boolean tag on each node indicating whether this prefix is actually in the trie
2021-12-20 19:17:59 +0100 <tomsmeding> euouae: peano encoding?
2021-12-20 19:18:01 +0100 <dminuoso> dont degrade my trie now :(
2021-12-20 19:18:06 +0100 <tomsmeding> lol
2021-12-20 19:18:10 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-20 19:18:18 +0100 <euouae> tomsmeding in set theory the successor of a set n is {n, {n}}
2021-12-20 19:18:44 +0100 <euouae> I wouldn't say this is exactly the situation here but it looks like [[x], [x,y]]. Maybe just ignore me :P
2021-12-20 19:18:47 +0100 <dminuoso> tomsmeding: I guess in most tries you dont because you only care about finding leafs.
2021-12-20 19:19:02 +0100 <dminuoso> and then it doesnt matter
2021-12-20 19:19:07 +0100 <tomsmeding> euouae: but then the next step, here, would be [[x], [x,y], [x,y,z]] ;)
2021-12-20 19:19:29 +0100 <tomsmeding> dminuoso: do you? I learned a trie as a data structure for a set of strings, I think
2021-12-20 19:19:54 +0100 <tomsmeding> in which case, if you want to represent {"fo", "foo"}, you'll need to have a False tag on the f node and True tags on both o nodes
2021-12-20 19:20:19 +0100 <monochrom> I though {n, {n}} was von Neumann's.
2021-12-20 19:20:39 +0100 <tomsmeding> dminuoso: longestSuffix (Domain ["com", "tomsmeding"]) (insert (Domain ["com", "google"]) (insert (Domain ["com"]) emptyDomTable)) == Nothing
2021-12-20 19:20:41 +0100 <tomsmeding> is that expected?
2021-12-20 19:20:47 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net) (Ping timeout: 252 seconds)
2021-12-20 19:20:54 +0100 <tomsmeding> or is this precisely the thing we're taling about
2021-12-20 19:21:00 +0100 <euouae> monochrom oh yeah, thanks, I was trying to look up the actual name of the person who thought of it,
2021-12-20 19:21:40 +0100 <euouae> monochrom now my statement is even sillier "One of von Neumann's creations was _finally_ useful..."
2021-12-20 19:22:24 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.3)
2021-12-20 19:22:56 +0100neurocyte0132889(~neurocyte@IP-045136168122.dynamic.medianet-world.de)
2021-12-20 19:22:56 +0100neurocyte0132889(~neurocyte@IP-045136168122.dynamic.medianet-world.de) (Changing host)
2021-12-20 19:22:56 +0100neurocyte0132889(~neurocyte@user/neurocyte)
2021-12-20 19:25:06 +0100 <tomsmeding> dminuoso: oh I mixed up prefix and suffix again
2021-12-20 19:26:54 +0100tcard(~tcard@p2878075-ipngn18701hodogaya.kanagawa.ocn.ne.jp) (Remote host closed the connection)
2021-12-20 19:27:08 +0100tcard(~tcard@p2878075-ipngn18701hodogaya.kanagawa.ocn.ne.jp)
2021-12-20 19:27:38 +0100 <c_wraith> that's not complicated enough. let's say invent infix tries!
2021-12-20 19:28:22 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-20 19:28:37 +0100emf_(~emf@2620:10d:c091:480::1:4a0) (Ping timeout: 240 seconds)
2021-12-20 19:29:06 +0100neurocyte0132889(~neurocyte@user/neurocyte) (Ping timeout: 256 seconds)
2021-12-20 19:29:09 +0100emf(~emf@2620:10d:c091:480::1:4a0)
2021-12-20 19:29:26 +0100 <tomsmeding> dminuoso: https://paste.tomsmeding.com/8x6WH4dX I _think_ this implements the boolean tags I mentioned
2021-12-20 19:29:29 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-12-20 19:29:49 +0100 <tomsmeding> the <|> ensures that if the search fails later, then we still return this prefix (in go) that did match
2021-12-20 19:30:01 +0100 <tomsmeding> but only if the tag is True, which is when this prefix is indeed in the tree
2021-12-20 19:30:16 +0100kranius(~kranius@162.19.149.77.rev.sfr.net)
2021-12-20 19:31:56 +0100python476(~user@88.160.31.174)
2021-12-20 19:32:06 +0100benin(~benin@183.82.27.121) (Quit: The Lounge - https://thelounge.chat)
2021-12-20 19:32:17 +0100deadmarshal(~deadmarsh@95.38.230.107) (Ping timeout: 240 seconds)
2021-12-20 19:32:29 +0100xkuru(~xkuru@user/xkuru)
2021-12-20 19:33:30 +0100 <tomsmeding> (if you wish my contribution to the code is public domain :p )
2021-12-20 19:34:02 +0100 <tomsmeding> (but you probably want to rewrite it in a neater way anyway, heh)
2021-12-20 19:36:50 +0100neurocyte0132889(~neurocyte@IP-045136168122.dynamic.medianet-world.de)
2021-12-20 19:36:50 +0100neurocyte0132889(~neurocyte@IP-045136168122.dynamic.medianet-world.de) (Changing host)
2021-12-20 19:36:50 +0100neurocyte0132889(~neurocyte@user/neurocyte)
2021-12-20 19:38:44 +0100kranius(~kranius@162.19.149.77.rev.sfr.net) (Ping timeout: 256 seconds)
2021-12-20 19:38:50 +0100kupi(uid212005@id-212005.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-12-20 19:39:37 +0100emf(~emf@2620:10d:c091:480::1:4a0) (Ping timeout: 240 seconds)
2021-12-20 19:44:11 +0100deadmarshal(~deadmarsh@95.38.230.107)
2021-12-20 19:45:40 +0100EvanR(~EvanR@user/evanr)
2021-12-20 19:52:19 +0100doyougnu(~doyougnu@c-73-25-202-122.hsd1.or.comcast.net)
2021-12-20 20:00:47 +0100EvanR(~EvanR@user/evanr) (Quit: Leaving)
2021-12-20 20:00:55 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-20 20:00:56 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 252 seconds)
2021-12-20 20:01:21 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-20 20:01:42 +0100EvanR(~EvanR@user/evanr)
2021-12-20 20:03:02 +0100waleee(~waleee@h-98-128-229-110.NA.cust.bahnhof.se)
2021-12-20 20:03:38 +0100max22-(~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr) (Ping timeout: 268 seconds)
2021-12-20 20:08:45 +0100tcard_(~tcard@p2878075-ipngn18701hodogaya.kanagawa.ocn.ne.jp)
2021-12-20 20:08:57 +0100tcard(~tcard@p2878075-ipngn18701hodogaya.kanagawa.ocn.ne.jp) (Ping timeout: 240 seconds)
2021-12-20 20:09:20 +0100deadmarshal(~deadmarsh@95.38.230.107) (Ping timeout: 256 seconds)
2021-12-20 20:09:47 +0100kranius(~kranius@162.19.149.77.rev.sfr.net)
2021-12-20 20:11:19 +0100 <zero> say we have an infinite tree where each node is a calculation on the parent node. if we run an initial bfs to evaluate all nodes up to a depth of n, will running it a second time to n+1 benefit from the former evaluation?
2021-12-20 20:12:31 +0100coot(~coot@89-64-85-93.dynamic.chello.pl)
2021-12-20 20:12:43 +0100 <zero> in another words, is this a valid model for memoization?
2021-12-20 20:13:25 +0100ridcully_(~ridcully@pd951f824.dip0.t-ipconnect.de)
2021-12-20 20:14:31 +0100ridcully(~ridcully@p508ac9bf.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
2021-12-20 20:15:52 +0100 <dsal> It depends on how the calculations are stored.
2021-12-20 20:16:18 +0100 <dsal> If they're thunks and you're evaluating them, then it should help
2021-12-20 20:16:58 +0100 <dsal> It's not going to add new storage facilities for you, though.
2021-12-20 20:18:18 +0100whatsupdoc(uid509081@id-509081.hampstead.irccloud.com)
2021-12-20 20:18:40 +0100 <zero> i'm not sure what is meant by that
2021-12-20 20:19:41 +0100 <disfrutar-conchi> did u mean storage factories? :p
2021-12-20 20:20:21 +0100justsomeguy(~justsomeg@user/justsomeguy)
2021-12-20 20:23:01 +0100 <zero> data Tree a = Node a (Tree a) (Tree a) ; tree n = Node n (tree $ n+2) (tree $ n*2)
2021-12-20 20:23:17 +0100neurocyte0132889(~neurocyte@user/neurocyte) (Ping timeout: 240 seconds)
2021-12-20 20:23:35 +0100son0p(~ff@181.136.122.143)
2021-12-20 20:23:40 +0100 <euouae> zero: how is your tree example different than a list?
2021-12-20 20:23:59 +0100 <euouae> after all a path from root to node in your tree is like a list
2021-12-20 20:24:20 +0100 <euouae> so it seems that you can recast the question on a list (which is a simpler model) instead
2021-12-20 20:25:16 +0100 <tomsmeding> zero: if you construct an infinite tree which you then evaluate up to a certain depth, that evaluation will create that prefix of the tree in memory
2021-12-20 20:25:36 +0100 <tomsmeding> so if you keep hold of the data structure, the next evaluation will just read the results of the previous evaluation from memory
2021-12-20 20:26:05 +0100 <tomsmeding> but it won't memoise automatically -- you have to explicitly keep the same datastructure and not construct a new one (watch out for polymorphism)
2021-12-20 20:26:53 +0100 <EvanR> imagine the result of a breadth first traversal is a boring list of nodes, or list of list of nodes in a level. Then everything you know about lists now applies
2021-12-20 20:27:48 +0100 <disfrutar-conchi> every hash is binary tree .. and by thus quick to look up.
2021-12-20 20:27:59 +0100 <EvanR> :thonk:
2021-12-20 20:28:38 +0100 <tomsmeding> zero: note that if you evaluate up to depth n+1, then the _new_ stuff you're evaluating is 2^(n+1) nodes, but the whole tree up until now (levels 0 through n) contains 2^(n+1)-1 nodes. So you're only saving half the work. This factor (1/2) decreases if the branching factor of your tree increases
2021-12-20 20:28:53 +0100 <tomsmeding> so in case the branching factor is >2, re-evaluate whether it's worthwhile to cache results :)
2021-12-20 20:29:19 +0100 <zero> yes
2021-12-20 20:31:25 +0100 <euouae> in this case you can probably have a formula that translates a tree node to the immediate calculation
2021-12-20 20:32:04 +0100 <tomsmeding> (potentially related search keyword, but you're probably already aware of this: iterative-deepening depth-first search)
2021-12-20 20:34:46 +0100kranius(~kranius@162.19.149.77.rev.sfr.net) (Changing host)
2021-12-20 20:34:46 +0100kranius(~kranius@user/kranius)
2021-12-20 20:35:04 +0100kranius(~kranius@user/kranius) (Quit: leaving)
2021-12-20 20:35:24 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-12-20 20:43:38 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-12-20 20:45:49 +0100max22-(~maxime@2a01cb0883359800b82a50c14ca08cd9.ipv6.abo.wanadoo.fr)
2021-12-20 20:45:53 +0100lavaman(~lavaman@98.38.249.169)
2021-12-20 20:47:57 +0100Neuromancer(~Neuromanc@user/neuromancer) (Ping timeout: 240 seconds)
2021-12-20 20:49:07 +0100emf(~emf@2620:10d:c091:480::1:8fa6)
2021-12-20 20:49:28 +0100machinedgod(~machinedg@24.105.81.50)
2021-12-20 20:49:45 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-12-20 20:52:21 +0100dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.3)
2021-12-20 20:53:57 +0100emf(~emf@2620:10d:c091:480::1:8fa6) (Ping timeout: 240 seconds)
2021-12-20 20:57:13 +0100emf(~emf@2620:10d:c091:480::1:8fa6)
2021-12-20 20:58:06 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-12-20 20:58:51 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-12-20 20:59:46 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
2021-12-20 21:00:21 +0100notzmv(~zmv@user/notzmv) (Ping timeout: 268 seconds)
2021-12-20 21:02:02 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 240 seconds)
2021-12-20 21:02:02 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
2021-12-20 21:02:28 +0100son0p(~ff@181.136.122.143) (Remote host closed the connection)
2021-12-20 21:03:00 +0100kranius(~kranius@user/kranius)
2021-12-20 21:03:16 +0100iteratee_(~kyle@162.218.222.107) (Read error: Connection reset by peer)
2021-12-20 21:03:22 +0100samhh(7569f027cf@2604:bf00:561:2000::e4) (Read error: Connection reset by peer)
2021-12-20 21:03:26 +0100iteratee(~kyle@162.218.222.107)
2021-12-20 21:03:29 +0100samhh_(7569f027cf@2604:bf00:561:2000::e4)
2021-12-20 21:03:36 +0100 <gentauro> `GHC-9.0.1` -> `I don't know how to install GHC for (OSX,AArch64), please install manually` xD
2021-12-20 21:03:44 +0100samhh_samhh
2021-12-20 21:04:31 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-12-20 21:04:44 +0100lavaman(~lavaman@98.38.249.169)
2021-12-20 21:05:01 +0100juhp(~juhp@128.106.188.82) (Ping timeout: 240 seconds)
2021-12-20 21:05:28 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-12-20 21:05:54 +0100justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.3)
2021-12-20 21:07:40 +0100juhp(~juhp@128.106.188.82)
2021-12-20 21:08:22 +0100neurocyte0132889(~neurocyte@user/neurocyte)
2021-12-20 21:08:38 +0100machinedgod(~machinedg@24.105.81.50)
2021-12-20 21:10:07 +0100coot(~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot)
2021-12-20 21:10:40 +0100coot(~coot@89-64-85-93.dynamic.chello.pl)
2021-12-20 21:11:38 +0100 <geekosaur> I think 9.0.1 doesn't suupport that platform, only 8.10.7 and 9.2.1
2021-12-20 21:11:47 +0100 <geekosaur> the release schedule went kinda weird there
2021-12-20 21:12:24 +0100jeffz`(~user@lambda.xen.prgmr.com)
2021-12-20 21:12:26 +0100 <geekosaur> (in particular 8.10 should really have been considered closed to new features, but got extended specifically for mac aarch64)
2021-12-20 21:13:49 +0100jeffz(~user@lambda.xen.prgmr.com) (Ping timeout: 256 seconds)
2021-12-20 21:15:04 +0100polezaivsani(~polezaivs@orangeshoelaces.net) (Ping timeout: 256 seconds)
2021-12-20 21:15:55 +0100zincy(~zincy@2a00:23c8:970c:4801:bdb9:8c5f:3085:2807)
2021-12-20 21:16:07 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-20 21:16:08 +0100polezaivsani(~polezaivs@orangeshoelaces.net)
2021-12-20 21:16:46 +0100superbil(~superbil@1-34-176-171.hinet-ip.hinet.net) (Ping timeout: 256 seconds)
2021-12-20 21:17:34 +0100epolanski(uid312403@id-312403.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2021-12-20 21:18:54 +0100zincy(~zincy@2a00:23c8:970c:4801:bdb9:8c5f:3085:2807) (Remote host closed the connection)
2021-12-20 21:19:45 +0100ksqsf(~user@134.209.106.31)
2021-12-20 21:21:58 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-20 21:23:06 +0100polezaivsani(~polezaivs@orangeshoelaces.net) (Ping timeout: 260 seconds)
2021-12-20 21:24:37 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 240 seconds)
2021-12-20 21:26:41 +0100 <EvanR> i see java has a nextUp :: Double -> Double math utility which increases a float by 1 ULP. Can haskell do it? (lambdabot gimme something)
2021-12-20 21:28:38 +0100 <gentauro> geekosaur: nighly on `stack` points to `9.0.1`
2021-12-20 21:28:39 +0100 <gentauro> hmmmm
2021-12-20 21:28:54 +0100 <tomsmeding> % unsafeCoerce (unsafeCoerce (42.0 :: Double) + 1 :: Int) :: Double -- EvanR
2021-12-20 21:28:54 +0100 <yahb> tomsmeding: 42.00000000000001
2021-12-20 21:29:05 +0100 <EvanR> lol
2021-12-20 21:29:31 +0100superbil(~superbil@1-34-176-171.hinet-ip.hinet.net)
2021-12-20 21:29:33 +0100EvanRgives tomsmeding's beer back
2021-12-20 21:29:44 +0100 <tomsmeding> :D
2021-12-20 21:30:28 +0100 <euouae> is that adding 1 to the bit representation?
2021-12-20 21:30:32 +0100 <tomsmeding> yeah
2021-12-20 21:30:34 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-20 21:30:34 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-20 21:30:34 +0100wroathe(~wroathe@user/wroathe)
2021-12-20 21:31:09 +0100 <euouae> nice, is there an issue between Double and Int being incompatible in size?
2021-12-20 21:31:33 +0100 <tomsmeding> Int is a 64-bit int on 64-bit platforms, and Double is also 64-bit, so they happen to have equivalent representations
2021-12-20 21:33:45 +0100 <EvanR> and then somehow the adding 1 to an int does what you want 🤔
2021-12-20 21:34:14 +0100 <geekosaur> I bet it only does so if the modulus is correct
2021-12-20 21:34:18 +0100 <EvanR> yeah
2021-12-20 21:34:21 +0100wrengr(~wrengr@150.12.83.34.bc.googleusercontent.com)
2021-12-20 21:34:31 +0100 <tomsmeding> modulus?
2021-12-20 21:34:33 +0100 <euouae> I think https://hackage.haskell.org/package/floating-bits-0.3.0.0/docs/Data-Bits-Floating-Ulp.html may be a bit more careful
2021-12-20 21:34:59 +0100 <geekosaur> % unsafeCoerce (unsafeCoerce (1e120 :: Double) + 1 :: Int) :: Double
2021-12-20 21:34:59 +0100 <yahb> geekosaur: 1.0000000000000001e120
2021-12-20 21:35:02 +0100 <geekosaur> huh
2021-12-20 21:35:24 +0100 <EvanR> what does it do one the last value before exponent change
2021-12-20 21:35:24 +0100 <geekosaur> soorry, meant exponent
2021-12-20 21:35:39 +0100 <geekosaur> since floats and doubles are stored as modulus and exponent
2021-12-20 21:35:59 +0100lavaman(~lavaman@98.38.249.169)
2021-12-20 21:36:18 +0100 <euouae> https://en.wikipedia.org/wiki/IEEE_754-1985 This is how floats are stored I believe, that's the standard it follows
2021-12-20 21:36:26 +0100 <tomsmeding> % -1.0/0
2021-12-20 21:36:26 +0100 <yahb> tomsmeding: -Infinity
2021-12-20 21:36:29 +0100 <tomsmeding> % unsafeCoerce (unsafeCoerce (-1.0/0 :: Double) - 1 :: Int) :: Double
2021-12-20 21:36:30 +0100 <yahb> tomsmeding: -1.7976931348623157e308
2021-12-20 21:36:31 +0100 <tomsmeding> clearly
2021-12-20 21:36:44 +0100 <euouae> oh whoops, that's the /old/ one, the new one is https://en.wikipedia.org/wiki/IEEE_754
2021-12-20 21:36:49 +0100tomsmedinglearned "mantissa and exponent"
2021-12-20 21:36:55 +0100zincy(~zincy@host86-151-99-97.range86-151.btcentralplus.com)
2021-12-20 21:37:08 +0100 <geekosaur> and I misremembered mantissa, dammit
2021-12-20 21:37:13 +0100 <geekosaur> not my day I guess
2021-12-20 21:37:27 +0100 <EvanR> so to get out of -infinity, you have to go down lol
2021-12-20 21:37:50 +0100 <tomsmeding> IEEE-754 floats are designed in such a way that apart from the sign bit, < comparison is the same as interpreting them as integers
2021-12-20 21:37:58 +0100 <EvanR> should be in the hacker survival guide or something
2021-12-20 21:38:09 +0100 <tomsmeding> only flaw in that is that negative numbers sort above positive numbers due to the sign bit
2021-12-20 21:38:25 +0100 <tomsmeding> so adding one is indeed +1ULP, except that there are special cases surrounding infinity/NaN
2021-12-20 21:38:39 +0100 <tomsmeding> because they take up some of the code space
2021-12-20 21:38:40 +0100 <euouae> now I wish I had some na'an
2021-12-20 21:38:54 +0100 <tomsmeding> naan <3
2021-12-20 21:39:15 +0100 <gentauro> geekosaur: `8.10.7` seem to work. Thx for the tip
2021-12-20 21:39:16 +0100 <gentauro> :)
2021-12-20 21:39:32 +0100 <geekosaur> np
2021-12-20 21:39:50 +0100sprout(~quassel@2a02:a467:ccd6:1:1116:7911:5ad7:44c3) (Ping timeout: 268 seconds)
2021-12-20 21:40:17 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2021-12-20 21:40:18 +0100 <tomsmeding> 21:35 <EvanR> what does it do one the last value before exponent change
2021-12-20 21:40:29 +0100 <tomsmeding> it raises the exponent by one and resets the mantissa to zero
2021-12-20 21:40:33 +0100 <tomsmeding> which is exactly the right thing
2021-12-20 21:40:37 +0100 <EvanR> slick
2021-12-20 21:40:48 +0100 <tomsmeding> (except at the inf/nan boundaries and across zero)
2021-12-20 21:41:18 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net)
2021-12-20 21:41:25 +0100 <euouae> I think those checks are shown in the floating-bits link I had above
2021-12-20 21:41:55 +0100 <tomsmeding> yeah use a proper lib please instead of this hack lol
2021-12-20 21:42:11 +0100 <euouae> in undergrad I was grilled on floats by a professor
2021-12-20 21:42:40 +0100 <euouae> scary stuff, I managed to blurt out "maybe try double?"
2021-12-20 21:43:39 +0100 <euouae> "No. Won't work." he responded before moving on to a different set of questions, and to this day I have no idea what the issue wqas
2021-12-20 21:44:04 +0100CiaoSen(~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2021-12-20 21:44:08 +0100zincy(~zincy@host86-151-99-97.range86-151.btcentralplus.com) (Ping timeout: 268 seconds)
2021-12-20 21:44:20 +0100 <geekosaur> my opinion on floating point is if I need to know that stuff, I've landed in the wrong line of work :)
2021-12-20 21:44:33 +0100 <geekosaur> that's the compiler's job as far as I
2021-12-20 21:44:40 +0100 <EvanR> if you remember the question at least you could try again or ask it here
2021-12-20 21:44:40 +0100 <geekosaur> 'm concerned
2021-12-20 21:45:15 +0100 <geekosaur> that said I guess now I understand how that hack that came up the other day works
2021-12-20 21:45:16 +0100 <euouae> well, it /was/ a numerical analysis class...
2021-12-20 21:45:47 +0100 <geekosaur> (mm, did that come up here or in a different channel?)
2021-12-20 21:45:47 +0100 <monochrom> float and double have the same problems, just at different scales.
2021-12-20 21:45:49 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2021-12-20 21:45:57 +0100 <tomsmeding> euouae: perhaps it was some kind of log(1+x) style issue
2021-12-20 21:46:24 +0100Guest70(~Guest70@89.151.178.153)
2021-12-20 21:46:37 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2021-12-20 21:46:53 +0100Guest70(~Guest70@89.151.178.153) (Client Quit)
2021-12-20 21:47:35 +0100 <euouae> Who knows. I knew increasing to double would make it more accurate like monochrom says, but he must have been wanting me to analyze the underlying cause.
2021-12-20 21:47:58 +0100cjb(~cjb@user/cjb)
2021-12-20 21:49:05 +0100 <[itchyjunk]> Is there an easy enough example of this that I might understand?
2021-12-20 21:49:06 +0100 <[itchyjunk]> https://en.wikipedia.org/wiki/Uniqueness_type
2021-12-20 21:49:07 +0100 <EvanR> it gets more precise but not necessarily more accurate xD
2021-12-20 21:49:29 +0100 <[itchyjunk]> String is also list of char so it's not unique?
2021-12-20 21:49:53 +0100 <tomsmeding> [itchyjunk]: have you ever looked at the programming language Futhark
2021-12-20 21:49:59 +0100 <tomsmeding> or Clean
2021-12-20 21:50:06 +0100 <[itchyjunk]> never heard of them :O
2021-12-20 21:50:10 +0100 <EvanR> > let (m,e) = decodeFloat 99.0 in encodeFloat (m - 1) e -- I guess this is a passable way without having to install floating bits
2021-12-20 21:50:12 +0100 <lambdabot> 98.99999999999999
2021-12-20 21:50:20 +0100kupi(uid212005@id-212005.hampstead.irccloud.com)
2021-12-20 21:50:28 +0100 <EvanR> wait that won't work
2021-12-20 21:50:36 +0100 <EvanR> or will it
2021-12-20 21:50:54 +0100 <euouae> [itchyjunk] look into linear types, that should help you I think
2021-12-20 21:51:00 +0100 <tomsmeding> [itchyjunk]: https://futhark.readthedocs.io/en/stable/language-reference.html#in-place-updates
2021-12-20 21:51:14 +0100 <tomsmeding> not sure that will help you, but it _is_ a real-world example of usage of uniqueness types
2021-12-20 21:51:45 +0100 <monochrom> I thought of that. What I worried about was again "what does it do one the last value before exponent change", does encodeFloat do the desirable thing? Or does it just bottom out?
2021-12-20 21:51:55 +0100 <[itchyjunk]> ohh, you get to do non functional programming language thing but with the fp benifits of no side effect?
2021-12-20 21:51:58 +0100 <EvanR> encodeFloat is the wildcard
2021-12-20 21:52:01 +0100 <tomsmeding> linear types, depending on who you talk to, either refers to something subly different from uniqueness types, or otherwise to a more general class of type system( feature)s that include uniqueness types among other things
2021-12-20 21:52:32 +0100 <tomsmeding> [itchyjunk]: kind of, the idea is that if you have a value with a unique type, then you know that you have the only reference to that thing
2021-12-20 21:52:50 +0100 <tomsmeding> so it's safe to do all kinds of mutation on it, because you remain referentially transparent: nobody else can see what you're doing
2021-12-20 21:53:16 +0100 <[itchyjunk]> hmm cant i have some unique type but with two things pointing to it?
2021-12-20 21:53:18 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b)
2021-12-20 21:53:24 +0100 <[itchyjunk]> it's still one of a kind but 2 things point to it
2021-12-20 21:53:36 +0100 <tomsmeding> note that this is subly different from the LinearTypes thing that Haskell has since GHC 9.0: there we have function arrows %1-> that guarantee that a function uses its input exactly once (roughly)
2021-12-20 21:53:56 +0100 <monochrom> I think you are using the "unique" adjective on the wrong object.
2021-12-20 21:54:04 +0100 <monochrom> It is not "unique as in snowflake".
2021-12-20 21:54:09 +0100 <tomsmeding> doesn't mean that the function can assume that it has the only reference to its input value
2021-12-20 21:54:21 +0100 <monochrom> It is "unique as in can't have two users".
2021-12-20 21:54:46 +0100 <[itchyjunk]> ahh
2021-12-20 21:55:43 +0100 <dmj`> Has anyone attempted to parse the Haskell 2010 grammar with an Earley parser? Wondering if that can help in situations where ambiguity is present (e.g. aexp vs. apat).
2021-12-20 21:56:37 +0100 <tomsmeding> suppose that you have an imaginary haskell-like language where for any type T, *T denotes "a unique T". Suppose you have a function f :: *(Array Int) -> *(Array Float). Then the code `let a = newArray in zipWith (+) (f a) (f a)` is invalid because `a` is shared between the two calls to `f`, so the arguments to `f` are not unique
2021-12-20 21:57:07 +0100 <tomsmeding> however, `let a = newArray ; b = newArray in zipWith (+) (f a) (f b)` would be valid, since both calls to `f` get a value to which they have the only reference
2021-12-20 21:57:21 +0100 <tomsmeding> assuming that newArray produces a brand new value of type *(Array Int)
2021-12-20 21:58:29 +0100 <c_wraith> dmj`: Earley's algorithm can't handle context-sensitive grammars, which Haskell is. at best you could parse it to an intermediate point and then you'd have to do another pass to fix up the things it couldn't parse correctly on the first pass
2021-12-20 22:00:07 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net)
2021-12-20 22:00:32 +0100_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-12-20 22:04:56 +0100yauhsien(~yauhsien@61-231-38-209.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2021-12-20 22:05:03 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-20 22:07:55 +0100neurocyte0132889(~neurocyte@user/neurocyte) (Read error: Connection reset by peer)
2021-12-20 22:08:05 +0100 <dmj`> c_wraith: Haskell's grammar as defined in the report is not context sensitive (so it says). Things like white space / layout are handled by a post-lexing layout phase to convert the grammar into a CFG. So by the time you get to the LALR parser you're operating on a CFG. My understanding is that the issue is the CFG is not a deterministic CFG.
2021-12-20 22:09:57 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b) (Ping timeout: 240 seconds)
2021-12-20 22:09:58 +0100pfurla(~pfurla@2804:d41:4331:4800:5835:b5d3:9cc8:104b)
2021-12-20 22:11:51 +0100lavaman(~lavaman@98.38.249.169)
2021-12-20 22:13:59 +0100ksqsf(~user@134.209.106.31)
2021-12-20 22:14:19 +0100acidjnk(~acidjnk@p200300d0c7271e5430c1f3c646e9c4d1.dip0.t-ipconnect.de)
2021-12-20 22:14:35 +0100pfurla(~pfurla@2804:d41:4331:4800:5835:b5d3:9cc8:104b) (Ping timeout: 252 seconds)
2021-12-20 22:16:16 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2021-12-20 22:17:04 +0100pfurla(~pfurla@2804:d41:4331:4800:5835:b5d3:9cc8:104b)
2021-12-20 22:17:24 +0100zincy(~zincy@2a00:23c8:970c:4801:bdb9:8c5f:3085:2807)
2021-12-20 22:17:36 +0100 <dmj`> c_wraith: GHC (and JHC) "solve" this by treating all patterns as expressions https://github.com/ghc/ghc/blob/master/compiler/GHC/Parser.y#L3280-L3289
2021-12-20 22:18:59 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 252 seconds)
2021-12-20 22:19:52 +0100zincy(~zincy@2a00:23c8:970c:4801:bdb9:8c5f:3085:2807) (Remote host closed the connection)
2021-12-20 22:25:06 +0100jmtdJon
2021-12-20 22:31:43 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-20 22:34:58 +0100doyougnu(~doyougnu@c-73-25-202-122.hsd1.or.comcast.net) (Remote host closed the connection)
2021-12-20 22:35:34 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b)
2021-12-20 22:37:57 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-20 22:38:42 +0100sander(~sander@user/sander) (Read error: Connection reset by peer)
2021-12-20 22:39:27 +0100rond_(~rond_@100.42.200.146.dyn.plus.net)
2021-12-20 22:40:41 +0100sander(~sander@user/sander)
2021-12-20 22:43:33 +0100rond_(~rond_@100.42.200.146.dyn.plus.net) (Client Quit)
2021-12-20 22:43:45 +0100hueso(~root@user/hueso) (Ping timeout: 250 seconds)
2021-12-20 22:44:21 +0100hueso(~root@user/hueso)
2021-12-20 22:44:58 +0100 <Henson> what's a good IDE for doing Haskell development? I used to use Atom's haskell-ide package, but it looks like it hasn't been updated in some time, and ghc-mod apparently doesn't work with newer versions of Haskell.
2021-12-20 22:45:06 +0100 <disfrutar-conchi> there are no none deterministic operations for a machine.
2021-12-20 22:45:14 +0100 <disfrutar-conchi> especially not for a computer.
2021-12-20 22:45:24 +0100 <euouae> I like Emacs Henson, I use it with the doom-emacs package and it's batteries included
2021-12-20 22:45:43 +0100 <tomsmeding> Henson: vscode is generally the easiest to get working with haskell-language-server, but you can use haskell-language-server with other editors too if they support the language server protocol
2021-12-20 22:45:57 +0100 <tomsmeding> (HLS is "the thing" for IDE support now)
2021-12-20 22:45:58 +0100 <disfrutar-conchi> that is at the the heart of the erisian illusion (as opposed to the unerisian)
2021-12-20 22:46:31 +0100 <iqubic> HLS is excellent. I use HLS with Emacs and it works really really well.
2021-12-20 22:47:18 +0100 <euouae> disfrutar-conchi never heard of the erisian illusion
2021-12-20 22:47:39 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-12-20 22:48:21 +0100 <disfrutar-conchi> euouae: you certainly heard einstein popularily claiming god does no dice. well.. it turned out he spent the whole sunday on inventing them.
2021-12-20 22:48:34 +0100 <Henson> thanks for the info, everyone, I'll look into HLS. Maybe I need to switch from VI to Emacs!
2021-12-20 22:48:53 +0100 <disfrutar-conchi> and by that get rid of his almight. hardest part.
2021-12-20 22:49:10 +0100 <disfrutar-conchi> but much more exciting.
2021-12-20 22:49:30 +0100 <tomsmeding> Henson: I'm using HLS in neovim with the built-in LSP support and it works fine; I used it before in vim with ALE and it also worked fine. Though it doesn't support all the fancy stuff like code lenses and whatnot
2021-12-20 22:49:46 +0100 <disfrutar-conchi> euouae: https://principia-discordia.com
2021-12-20 22:50:07 +0100 <geekosaur> disfrutar-conchi, what has this to do with Haskell?
2021-12-20 22:50:35 +0100 <disfrutar-conchi> geekosaur: look up chain of events. if you care.
2021-12-20 22:50:55 +0100 <disfrutar-conchi> i would like to know what is meant with deterministic.
2021-12-20 22:51:09 +0100 <EvanR> haskell allows non-deterministic computations
2021-12-20 22:51:23 +0100 <EvanR> pretty easily
2021-12-20 22:52:19 +0100 <disfrutar-conchi> i will look it up. thank you. good night. bye.
2021-12-20 22:52:58 +0100disfrutar-conchithere is nothing that will stop me.
2021-12-20 22:52:58 +0100 <euouae> oh we're getting trolled
2021-12-20 22:53:19 +0100disfrutar-conchi(uid498179@user/earendel) ()
2021-12-20 22:53:34 +0100 <geekosaur> yeh, that was why I stepped in
2021-12-20 22:54:23 +0100sagax(~sagax_nb@user/sagax) (Ping timeout: 250 seconds)
2021-12-20 22:54:26 +0100 <geekosaur> don't see what part of "not a deterministic CFG" leads to "there are no none (sic) deterministic operations for a machine" followed by a bunch of pseudophilosophy
2021-12-20 22:54:45 +0100 <geekosaur> but I may be grumpy today
2021-12-20 22:58:59 +0100 <EvanR> trolling / philosophy is there a diff? xD
2021-12-20 23:00:14 +0100deadmarshal(~deadmarsh@95.38.230.107)
2021-12-20 23:01:13 +0100zincy(~zincy@2a00:23c8:970c:4801:bdb9:8c5f:3085:2807)
2021-12-20 23:02:32 +0100 <euouae> I enjoy Nietzsche
2021-12-20 23:03:23 +0100 <pfurla-matrix> Descartes
2021-12-20 23:03:42 +0100kjak(~kjak@pool-108-45-56-21.washdc.fios.verizon.net) (Ping timeout: 268 seconds)
2021-12-20 23:03:54 +0100 <euouae> curry-howard correspondence has a section on philosophical interpretation on wikipedia :P
2021-12-20 23:04:17 +0100deadmarshal(~deadmarsh@95.38.230.107) (Ping timeout: 240 seconds)
2021-12-20 23:04:21 +0100 <monochrom> "earendel is now known as disfrutar-conchi" some 5 hours ago.
2021-12-20 23:04:28 +0100 <Inst_> hi guys
2021-12-20 23:04:31 +0100 <Inst_> btw, i'm confused
2021-12-20 23:04:38 +0100 <Inst_> someone on Functional Programming Discord
2021-12-20 23:04:52 +0100 <Inst_> told me that join is only defined for 2 or more levels of structure on a given monad
2021-12-20 23:05:17 +0100zincy(~zincy@2a00:23c8:970c:4801:bdb9:8c5f:3085:2807) (Ping timeout: 240 seconds)
2021-12-20 23:05:21 +0100 <pfurla-matrix> euouae: all by the same author, a bit disheartening
2021-12-20 23:05:56 +0100 <pfurla-matrix> `join :: m (m a) -> m a`
2021-12-20 23:06:08 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-12-20 23:06:32 +0100 <Inst_> ah
2021-12-20 23:07:17 +0100 <Inst_> join :: Monad m => m (m a) -> m a
2021-12-20 23:07:29 +0100 <Inst_> yup so join should not be defined for stuff like join [3]
2021-12-20 23:07:41 +0100 <pfurla-matrix> euouae: the said author https://en.wikipedia.org/wiki/Ruy_de_Queiroz, he is actually an engineer
2021-12-20 23:07:51 +0100 <monochrom> IMO, as usual, the type signature is infinitely clearer than wordy descriptions like "two levels of structure".
2021-12-20 23:08:03 +0100 <Inst_> okay, world makes sense again
2021-12-20 23:08:07 +0100ksqsf(~user@134.209.106.31)
2021-12-20 23:08:32 +0100 <Inst_> bind = join.fmap
2021-12-20 23:08:47 +0100 <geekosaur> didn't we cover that one yesterday?
2021-12-20 23:08:51 +0100 <Inst_> i think we did
2021-12-20 23:08:57 +0100 <geekosaur> :t join . fmap -- doesn't work
2021-12-20 23:08:58 +0100 <lambdabot> error:
2021-12-20 23:08:58 +0100 <lambdabot> • Occurs check: cannot construct the infinite type: m ~ (->) (m a)
2021-12-20 23:08:58 +0100 <lambdabot> Expected type: (a -> a1) -> m (m a1)
2021-12-20 23:09:08 +0100 <geekosaur> :t (join .) . fmap
2021-12-20 23:09:09 +0100 <lambdabot> Monad m => (a1 -> m a2) -> m a1 -> m a2
2021-12-20 23:09:16 +0100 <Inst_> ????
2021-12-20 23:09:22 +0100 <Inst_> :t id.id
2021-12-20 23:09:23 +0100 <lambdabot> c -> c
2021-12-20 23:09:26 +0100 <euouae> pfurla-matrix rest assured there are probably more philosophical works out there discussing CHL iso...
2021-12-20 23:09:29 +0100 <Inst_> :t join.fmap
2021-12-20 23:09:30 +0100 <lambdabot> error:
2021-12-20 23:09:30 +0100 <lambdabot> • Occurs check: cannot construct the infinite type: m ~ (->) (m a)
2021-12-20 23:09:30 +0100 <lambdabot> Expected type: (a -> a1) -> m (m a1)
2021-12-20 23:09:36 +0100 <geekosaur> you can think of this meaning that (join . fmap) only handles one parameter, whereas fmap needs two
2021-12-20 23:09:38 +0100 <Inst_> iirc that's the definition of bind somewhere, no?
2021-12-20 23:09:47 +0100 <monochrom> NO
2021-12-20 23:09:51 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b) (Ping timeout: 268 seconds)
2021-12-20 23:09:54 +0100 <Inst_> oh christ
2021-12-20 23:10:22 +0100 <monochrom> IMO in this case the pointful formula is more helpful. m>>=k = join (fmap k m)
2021-12-20 23:10:39 +0100 <monochrom> join (fmap k m) is obviously not (join . fmap) k m
2021-12-20 23:11:02 +0100 <dmj`> geekosaur: thanks for trying to keep my question from getting derailed, "machines do not have deterministic operations" is arguing a separate point from Haskell2010 CFG.
2021-12-20 23:11:48 +0100 <Inst_> okay, fine, so let's use that definition of bind, etc etc etc
2021-12-20 23:12:48 +0100ees(~user@pool-108-18-30-46.washdc.fios.verizon.net) (ERC 5.4 (IRC client for GNU Emacs 28.0.90))
2021-12-20 23:13:01 +0100xff0x(~xff0x@2001:1a81:5214:2e00:39f0:aaaf:c001:5cae) (Ping timeout: 240 seconds)
2021-12-20 23:13:03 +0100 <pfurla-matrix> join . fmap k
2021-12-20 23:13:41 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 245 seconds)
2021-12-20 23:14:10 +0100 <monochrom> It is still pretty ugly. At best you have to invoke section syntax (which isn't enlightening) and go "(>>= k) = join . fmap k".
2021-12-20 23:14:14 +0100xff0x(~xff0x@2001:1a81:5214:2e00:3a40:685:1119:99d6)
2021-12-20 23:14:14 +0100 <pfurla-matrix> join = (>>= id)
2021-12-20 23:14:14 +0100gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-12-20 23:16:31 +0100 <EvanR> join .: fmap, :sunglasses:
2021-12-20 23:16:40 +0100 <monochrom> heh
2021-12-20 23:16:42 +0100 <Inst_> (>>= k) = join . fmap k
2021-12-20 23:17:11 +0100 <EvanR> there you go
2021-12-20 23:17:13 +0100 <Inst_> what is .: anyways?
2021-12-20 23:17:13 +0100 <Inst_> is that compose with cons?
2021-12-20 23:17:34 +0100 <EvanR> it composes but feeds two arguments into the first function
2021-12-20 23:17:47 +0100 <EvanR> your missing k in this case
2021-12-20 23:18:05 +0100 <pfurla-matrix> euouae: in the CHL wikipage, right after there is a section named "synthetic papers", do you know what is synthetic paper?
2021-12-20 23:18:32 +0100 <EvanR> it's a cheesy not really standard operator
2021-12-20 23:18:39 +0100 <Inst_> i see
2021-12-20 23:18:47 +0100 <pfurla-matrix> EvanR, where is it defined?
2021-12-20 23:18:51 +0100 <EvanR> right here
2021-12-20 23:18:54 +0100 <pfurla-matrix> :t (.:)
2021-12-20 23:18:55 +0100 <lambdabot> error:
2021-12-20 23:18:55 +0100 <lambdabot> • Variable not in scope: .:
2021-12-20 23:18:56 +0100 <lambdabot> • Perhaps you meant one of these:
2021-12-20 23:19:01 +0100 <EvanR> @def (.:) = (.) . (.)
2021-12-20 23:19:01 +0100 <lambdabot> <command line>: does not exist: .L.hs
2021-12-20 23:19:10 +0100 <monochrom> It's @let
2021-12-20 23:19:13 +0100 <euouae> pfurla-matrix I think it's a technical term in logic, "synthetic". I'm suspecting it from pages such as https://ncatlab.org/nlab/show/synthetic+topology
2021-12-20 23:19:27 +0100 <EvanR> @let (.:) = (.) . (.)
2021-12-20 23:19:27 +0100 <lambdabot> <command line>: does not exist: .L.hs
2021-12-20 23:19:49 +0100 <geekosaur> o.O
2021-12-20 23:19:52 +0100 <monochrom> But yeah lately lambdabot has a problem with that.
2021-12-20 23:20:28 +0100 <pfurla-matrix> euouae: I think this is the correct definition https://ncatlab.org/nlab/show/synthetic+mathematics, but thanks
2021-12-20 23:21:18 +0100 <Inst_> what is a function composition anyways?
2021-12-20 23:21:22 +0100 <Inst_> maybe I don't get the meaning of .
2021-12-20 23:21:27 +0100 <euouae> pfurla-matrix hmm yeah I think you got it
2021-12-20 23:21:48 +0100 <geekosaur> (f . g) x is just a short way of saying f (g x)
2021-12-20 23:21:51 +0100 <monochrom> f . g = \x -> f (g x)
2021-12-20 23:22:01 +0100 <pfurla-matrix> :t (.)
2021-12-20 23:22:02 +0100 <lambdabot> (b -> c) -> (a -> b) -> a -> c
2021-12-20 23:22:20 +0100 <euouae> pfurla-matrix I've read the P. Wadler paper "Propositions as Types" and I would not call it "synthetic", more of an exposition.
2021-12-20 23:22:22 +0100 <Inst_> wait, is the problem with . that (b -> c) -> (a -> B)?
2021-12-20 23:22:29 +0100 <Inst_> erm, (a -> b)?
2021-12-20 23:22:34 +0100 <monochrom> Soon, you will understand why I follow Dijkstra in saying "a formula is worth a thousand pictures" (so a million words).
2021-12-20 23:23:14 +0100 <Inst_> since fmap is (a->b) -> a -> b iirc
2021-12-20 23:23:21 +0100 <pfurla-matrix> euouae: I agree
2021-12-20 23:23:35 +0100kaph(~kaph@net-2-47-236-216.cust.vodafonedsl.it) (Read error: Connection reset by peer)
2021-12-20 23:23:41 +0100 <pfurla-matrix> fmap :: (a -> b) -> m a -> m b
2021-12-20 23:23:46 +0100 <monochrom> (a->b) -> M a -> M b, whichever monad you use for M.
2021-12-20 23:23:46 +0100yushyin(3RNeQpThcJ@karif.server-speed.net) (Quit: WeeChat 3.3)
2021-12-20 23:23:48 +0100 <Inst_> erm, f a f b
2021-12-20 23:23:55 +0100yushyin(C2iSDogdK9@karif.server-speed.net)
2021-12-20 23:24:35 +0100 <Inst_> so . fails in join . fmap because fmap doesn't match the type requirements of .?
2021-12-20 23:24:48 +0100 <pfurla-matrix> how many words is a type worth? :)
2021-12-20 23:25:07 +0100 <monochrom> Type signatures are formulas, too.
2021-12-20 23:25:52 +0100 <Inst_> :t .
2021-12-20 23:25:53 +0100 <lambdabot> error: parse error on input ‘.’
2021-12-20 23:25:54 +0100 <pfurla-matrix> yeah
2021-12-20 23:25:59 +0100 <Inst_> :t (.)
2021-12-20 23:26:00 +0100 <lambdabot> (b -> c) -> (a -> b) -> a -> c
2021-12-20 23:26:04 +0100 <Inst_> :t (.)(.)
2021-12-20 23:26:05 +0100 <lambdabot> (a1 -> b -> c) -> a1 -> (a2 -> b) -> a2 -> c
2021-12-20 23:26:20 +0100kaph(~kaph@net-2-47-236-216.cust.vodafonedsl.it)
2021-12-20 23:26:20 +0100 <pfurla-matrix> it needs a section
2021-12-20 23:26:23 +0100 <pfurla-matrix> :t (.)
2021-12-20 23:26:24 +0100 <lambdabot> (b -> c) -> (a -> b) -> a -> c
2021-12-20 23:26:25 +0100 <Inst_> :t (..)
2021-12-20 23:26:26 +0100 <lambdabot> error: parse error on input ‘..’
2021-12-20 23:26:42 +0100 <hpc> ".." is part of import syntax and list ranges
2021-12-20 23:26:57 +0100 <Inst_> (.)(.) join fmap
2021-12-20 23:27:15 +0100 <EvanR> :t ((.) . (.)) join fmap
2021-12-20 23:27:20 +0100cjb(~cjb@user/cjb) (Quit: rcirc on GNU Emacs 29.0.50)
2021-12-20 23:27:23 +0100 <pfurla-matrix> sections are when you don't give all the arguments to an operator and it the compiler needs to be aware it's missing arguments
2021-12-20 23:27:32 +0100hueso(~root@user/hueso) (Ping timeout: 240 seconds)
2021-12-20 23:27:35 +0100 <EvanR> surely all is clear now
2021-12-20 23:27:37 +0100 <pfurla-matrix> so we right (+) or (+1)
2021-12-20 23:27:50 +0100 <Inst_> :t (>>=)
2021-12-20 23:27:51 +0100 <lambdabot> Monad m => m a -> (a -> m b) -> m b
2021-12-20 23:28:09 +0100 <pfurla-matrix> *write (f phonetics)
2021-12-20 23:28:30 +0100 <hpc> fonetics
2021-12-20 23:28:35 +0100 <monochrom> I think "((.) . (.))" can be further "improved" to "((.) (.) (.))"
2021-12-20 23:28:47 +0100 <Inst_> you know this is a boobies joke, right?
2021-12-20 23:28:51 +0100 <pfurla-matrix> hpc: exactly
2021-12-20 23:28:52 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2021-12-20 23:29:02 +0100 <monochrom> In fact, using the covariant homset functor, "(fmap fmap fmap)"
2021-12-20 23:29:09 +0100 <EvanR> ((.) (.) (.)) would have to be the total recall boobies joke
2021-12-20 23:29:10 +0100cjb(~cjb@user/cjb)
2021-12-20 23:29:19 +0100 <monochrom> heh
2021-12-20 23:29:51 +0100 <Inst_> :t join (.).(.) fmap
2021-12-20 23:29:52 +0100 <pfurla-matrix> EvenR: I see you are familiar on the ways of 80s references
2021-12-20 23:29:52 +0100 <lambdabot> Functor f => ((f a -> f b) -> a -> b) -> (f a -> f b) -> f a -> f b
2021-12-20 23:30:02 +0100 <Inst_> heh
2021-12-20 23:30:13 +0100 <Inst_> in this channel, we are trying to turn monads into a mammary gland joke
2021-12-20 23:30:19 +0100 <EvanR> not usually
2021-12-20 23:30:26 +0100 <monochrom> @type fmap fmap fmap join fmap
2021-12-20 23:30:27 +0100 <lambdabot> Monad m => (a1 -> m a2) -> m a1 -> m a2
2021-12-20 23:30:31 +0100hueso(~root@user/hueso)
2021-12-20 23:30:32 +0100 <monochrom> \∩/
2021-12-20 23:30:47 +0100 <EvanR> my god it's full of fmaps
2021-12-20 23:30:58 +0100 <mrianbloom> What is the right way to enable LinearTypes in package.yaml?
2021-12-20 23:31:11 +0100 <Inst_> :t join (.)(.) fmap
2021-12-20 23:31:12 +0100 <lambdabot> error:
2021-12-20 23:31:12 +0100 <lambdabot> • Occurs check: cannot construct the infinite type: a ~ f a
2021-12-20 23:31:12 +0100 <lambdabot> Expected type: ((b -> f b) -> (f a -> b) -> f a -> f b)
2021-12-20 23:31:28 +0100 <Inst_> :t join . fmap
2021-12-20 23:31:29 +0100 <lambdabot> error:
2021-12-20 23:31:29 +0100 <lambdabot> • Occurs check: cannot construct the infinite type: m ~ (->) (m a)
2021-12-20 23:31:29 +0100 <lambdabot> Expected type: (a -> a1) -> m (m a1)
2021-12-20 23:31:41 +0100 <monochrom> OK I'm done.
2021-12-20 23:31:44 +0100 <Inst_> yeah, sorry
2021-12-20 23:31:50 +0100 <Inst_> i'll scoot, just need to repair my thinkpad again
2021-12-20 23:31:55 +0100notzmv(~zmv@user/notzmv)
2021-12-20 23:31:57 +0100 <Inst_> need to send it back to servicing, f- lolnovo
2021-12-20 23:33:34 +0100 <janus> mrianbloom: you put it in default-extensions?
2021-12-20 23:34:02 +0100 <mrianbloom> Ah, default-extensions? I'll try that.
2021-12-20 23:35:36 +0100 <dmj`> c_wraith: purescript has an interesting way of getting around this ambiguity using %partial in happy, https://github.com/natefaubion/purescript-cst/blob/master/src/Language/PureScript/CST/Parser.y#L44…
2021-12-20 23:36:12 +0100 <pfurla-matrix> :t join (+)
2021-12-20 23:36:14 +0100 <lambdabot> Num a => a -> a
2021-12-20 23:36:57 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 276 seconds)
2021-12-20 23:37:05 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b)
2021-12-20 23:38:22 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-12-20 23:38:40 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.3)
2021-12-20 23:42:35 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b) (Ping timeout: 252 seconds)
2021-12-20 23:43:53 +0100HurdyGurdyBurdy(~HurdyGurd@user/hurdygurdyburdy) (server died; rip)
2021-12-20 23:45:11 +0100mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2021-12-20 23:45:45 +0100 <janus> why can't i coerce Int32 -> Int ? does GHC support platforms where Int is smaller than 32 bits?
2021-12-20 23:46:22 +0100dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2021-12-20 23:47:04 +0100 <geekosaur> it can'tper the Report (minimum size of Int is 30 bits)
2021-12-20 23:47:28 +0100ddb(~ddb@ipv6two.tilde.club)
2021-12-20 23:47:45 +0100 <geekosaur> how are you trying to coerce it?
2021-12-20 23:48:07 +0100 <janus> with Data.Coerce.coerce. but i will just use fromIntegral then, i guess
2021-12-20 23:48:22 +0100 <geekosaur> oh. that does not work ith basic types, only with newtypes
2021-12-20 23:48:42 +0100 <geekosaur> it wraps and unwraps newtypes only
2021-12-20 23:49:16 +0100 <janus> but i thought Int32 and Int were actually newtypes that wrapped some type with a hash sign in it
2021-12-20 23:49:24 +0100 <monochrom> Ah right, "data Int32 = ..."
2021-12-20 23:49:30 +0100 <monochrom> similarly for Int
2021-12-20 23:49:38 +0100 <janus> @src Int
2021-12-20 23:49:38 +0100 <lambdabot> data Int = I# Int#
2021-12-20 23:49:59 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-12-20 23:50:04 +0100 <monochrom> Int and Int32 have to support laziness. Can't be Int# directly.
2021-12-20 23:50:19 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2021-12-20 23:54:04 +0100 <janus> it's interesting that there is coerce and fromIntegral. but what if i want to convert but without betraying the sign of the input? what is the function for that?
2021-12-20 23:54:11 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b)
2021-12-20 23:54:47 +0100 <geekosaur> I don't understand "betraying the sign", but I think there is a package for that
2021-12-20 23:55:48 +0100 <janus> geekosaur: i mean, if you convert 256 to an Int8, it becomes negative, right? that is what i mean about betraying the sign
2021-12-20 23:57:04 +0100 <janus> % :m +GHC.Int
2021-12-20 23:57:04 +0100 <yahb> janus:
2021-12-20 23:57:17 +0100 <janus> % 0xf0000000 :: Int32
2021-12-20 23:57:17 +0100 <yahb> janus: ; <interactive>:216:1: warning: [-Woverflowed-literals] Literal 4026531840 is out of the Int32 range -2147483648..2147483647; -268435456
2021-12-20 23:57:44 +0100 <janus> % fromIntegral 0xf0000000 :: Int32
2021-12-20 23:57:44 +0100 <yahb> janus: -268435456
2021-12-20 23:57:47 +0100 <EvanR> in quickcheck's Arbitrary instance for Float, it doesn't seem to ever generate very small values or very large, just "normal" and zero?
2021-12-20 23:58:24 +0100 <geekosaur> https://hackage.haskell.org/package/conversions-0.0.4/docs/Data-Conversions.html#v:checkedFromInte…
2021-12-20 23:58:32 +0100sprout(~quassel@2a02:a467:ccd6:1:d0f9:15ce:3995:401b) (Ping timeout: 240 seconds)
2021-12-20 23:59:01 +0100 <janus> oooh very cool
2021-12-20 23:59:09 +0100 <janus> suspicious how it has no docs
2021-12-20 23:59:13 +0100 <janus> but i guess it documents itself