2021/09/15

2021-09-15 00:02:13 +0200System123(~System123@ec2-52-61-197-79.us-gov-west-1.compute.amazonaws.com) (Ping timeout: 268 seconds)
2021-09-15 00:02:37 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-09-15 00:02:40 +0200ec_(~ec@gateway/tor-sasl/ec)
2021-09-15 00:08:00 +0200keion(~dk1xd@2001:12b4:290:901:3d40:bef3:a81e:c18a)
2021-09-15 00:08:50 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-15 00:09:20 +0200favonia(~favonia@user/favonia)
2021-09-15 00:12:42 +0200newbie(~newbie@80-196-109-198-dynamic.dk.customer.tdc.net) (Remote host closed the connection)
2021-09-15 00:22:55 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 265 seconds)
2021-09-15 00:25:27 +0200ec_(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-09-15 00:25:29 +0200chomwitt(~chomwitt@ppp-94-67-221-96.home.otenet.gr) (Remote host closed the connection)
2021-09-15 00:27:00 +0200System123(~System123@84.16.238.77)
2021-09-15 00:29:26 +0200keion(~dk1xd@2001:12b4:290:901:3d40:bef3:a81e:c18a) ()
2021-09-15 00:32:28 +0200ec_(~ec@gateway/tor-sasl/ec)
2021-09-15 00:32:49 +0200System12_(~System123@203-134-35-213.sta.estpak.ee)
2021-09-15 00:33:08 +0200System12_(~System123@203-134-35-213.sta.estpak.ee) (Remote host closed the connection)
2021-09-15 00:33:45 +0200System12_(~System123@203-134-35-213.sta.estpak.ee)
2021-09-15 00:36:01 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2021-09-15 00:36:27 +0200System123(~System123@84.16.238.77) (Ping timeout: 265 seconds)
2021-09-15 00:38:36 +0200wroathe(~wroathe@c-73-24-27-54.hsd1.mn.comcast.net)
2021-09-15 00:38:36 +0200wroathe(~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) (Changing host)
2021-09-15 00:38:36 +0200wroathe(~wroathe@user/wroathe)
2021-09-15 00:38:42 +0200System12_(~System123@203-134-35-213.sta.estpak.ee) (Ping timeout: 260 seconds)
2021-09-15 00:41:52 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2021-09-15 00:42:10 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-15 00:42:56 +0200TranquilEcho(~grom@user/tranquilecho) (Quit: WeeChat 2.8)
2021-09-15 00:43:14 +0200 <maerwald[m]> sm: hooray
2021-09-15 00:46:09 +0200 <maerwald[m]> What I find confusing about opencollective is: where do you tell contdibutors how the money is used?
2021-09-15 00:47:51 +0200acidjnk_new(~acidjnk@p200300d0c720300489d1e02b13283af1.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2021-09-15 00:49:54 +0200 <alanz> maerwald[m], what about https://opencollective.com/haskell-language-server/expenses>
2021-09-15 00:49:56 +0200 <alanz> ?
2021-09-15 00:50:31 +0200 <maerwald[m]> I mean like a heads up?
2021-09-15 00:50:42 +0200 <alanz> Perhaps populate https://opencollective.com/haskell-language-server/updates
2021-09-15 00:50:54 +0200 <NemesisD> is there such a thing as a type level text literal?
2021-09-15 00:50:55 +0200 <alanz> Pretty sure it would trigger an email
2021-09-15 00:51:31 +0200 <geekosaur> NemesisD, if you mean analogous to term level Text, no
2021-09-15 00:53:13 +0200 <geekosaur> (as distinct from String / Symbol)
2021-09-15 00:54:30 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha)
2021-09-15 00:54:43 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 00:55:07 +0200neo1(~neo3@cpe-292712.ip.primehome.com) (Read error: Connection reset by peer)
2021-09-15 00:55:21 +0200 <geekosaur> NemesisD, what problem are you trying to solve?
2021-09-15 00:55:39 +0200 <NemesisD> geekosaur: i've got a GADT `data G (a :: A) where G :: G 'A_A` and `data A = A_A` from another library, but now that library has switched to `newtype A = A Text`, `pattern A_A = A "A"`. so now i can't write that GADT because `'A_A` is now a pattern synonym
2021-09-15 00:57:18 +0200ec_(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-09-15 00:57:28 +0200 <geekosaur> hm
2021-09-15 01:00:52 +0200aegon(~mike@174.127.249.180)
2021-09-15 01:01:01 +0200ph88(~ph88@2a02:8109:9e00:7e5c:cd33:d2f5:4ed3:fbd1)
2021-09-15 01:02:54 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-09-15 01:04:06 +0200ec_(~ec@gateway/tor-sasl/ec)
2021-09-15 01:04:30 +0200ph88^(~ph88@ip5f5af6fd.dynamic.kabel-deutschland.de) (Ping timeout: 268 seconds)
2021-09-15 01:04:52 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 252 seconds)
2021-09-15 01:04:54 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 268 seconds)
2021-09-15 01:06:39 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-15 01:07:41 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-09-15 01:08:21 +0200cheater(~Username@user/cheater) (Ping timeout: 265 seconds)
2021-09-15 01:10:40 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2021-09-15 01:12:46 +0200wroathe(~wroathe@user/wroathe)
2021-09-15 01:14:09 +0200xsperry(~as@user/xsperry) (Ping timeout: 268 seconds)
2021-09-15 01:15:32 +0200hendursaga(~weechat@user/hendursaga) (Remote host closed the connection)
2021-09-15 01:15:58 +0200hendursaga(~weechat@user/hendursaga)
2021-09-15 01:18:04 +0200favonia(~favonia@user/favonia) (Ping timeout: 268 seconds)
2021-09-15 01:19:18 +0200Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.)
2021-09-15 01:23:13 +0200ph88^(~ph88@ip5f5af6fd.dynamic.kabel-deutschland.de)
2021-09-15 01:23:44 +0200cheater(~Username@user/cheater)
2021-09-15 01:26:24 +0200gioyik(~gioyik@gateway/tor-sasl/gioyik)
2021-09-15 01:26:33 +0200ec_(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-09-15 01:27:19 +0200ph88(~ph88@2a02:8109:9e00:7e5c:cd33:d2f5:4ed3:fbd1) (Ping timeout: 268 seconds)
2021-09-15 01:28:01 +0200 <NemesisD> if there's no way around this i might just define my own sum type `A` and use that.
2021-09-15 01:28:33 +0200xff0x(~xff0x@2001:1a81:53ed:e500:8294:b35:6b84:2798) (Ping timeout: 268 seconds)
2021-09-15 01:28:50 +0200xff0x(~xff0x@2001:1a81:53ed:e500:fed8:1f05:1144:969c)
2021-09-15 01:33:33 +0200ec_(~ec@gateway/tor-sasl/ec)
2021-09-15 01:36:03 +0200pony(~ed@101.100.135.26)
2021-09-15 01:36:07 +0200Lycurgus(~juan@98.4.112.204) (Quit: Exeunt)
2021-09-15 01:39:39 +0200nicbk(~nicbk@user/nicbk) (Quit: nicbk)
2021-09-15 01:41:53 +0200xsperry(~as@user/xsperry)
2021-09-15 01:44:06 +0200ec_(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-09-15 01:58:45 +0200xff0x(~xff0x@2001:1a81:53ed:e500:fed8:1f05:1144:969c) (Remote host closed the connection)
2021-09-15 01:59:02 +0200xff0x(~xff0x@2001:1a81:53ed:e500:564f:86e7:d174:9c84)
2021-09-15 01:59:18 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-15 02:14:50 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha)
2021-09-15 02:15:03 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 02:15:49 +0200 <orzo> A coworker put nearly duplicate versions of all the types in our code for the purposes of having show instances for debugging
2021-09-15 02:16:14 +0200 <orzo> this is to work around the lack of a show for thinks like (TVar Int) or (IO String)
2021-09-15 02:16:48 +0200 <orzo> But it's annoying in obvious ways
2021-09-15 02:17:01 +0200 <monochrom> What would be duplicate versions of those? newtype T = MkT (TVar Int) ?
2021-09-15 02:17:03 +0200 <orzo> Is there some more elegant way to display -anything- for debugging?
2021-09-15 02:17:09 +0200 <awpr> `newtype Hide a = Hide a; instance Show (Hide a) where showsPrec _ _ = <hidden>`
2021-09-15 02:17:41 +0200 <orzo> awpr, that's the idea
2021-09-15 02:17:56 +0200 <orzo> but I don't want to replace fields in records with Hide
2021-09-15 02:17:59 +0200 <orzo> just for debugging
2021-09-15 02:18:25 +0200 <awpr> that's the best I've seen. that or manually write show instances that don't include the unshowable fields
2021-09-15 02:18:30 +0200 <orzo> we left the field types alone and made duplicates with types that have "hiddien" style show instances
2021-09-15 02:19:33 +0200 <orzo> hm
2021-09-15 02:20:23 +0200aegon(~mike@174.127.249.180) (Remote host closed the connection)
2021-09-15 02:20:23 +0200chisui(~chisui@200116b86890460075c9988d490fe8d7.dip.versatel-1u1.de) (Ping timeout: 256 seconds)
2021-09-15 02:21:15 +0200 <monochrom> I would create "class NoShow a where noshow :: a -> String", "instance NoShow (TVar a) where noshow _ = "TVar"", similarly for IO a.
2021-09-15 02:21:54 +0200 <monochrom> Optionally, instance Typeable a => NoShow (TVar a) where noshow x = "TVar " ++ show (typeOf x)
2021-09-15 02:22:44 +0200 <monochrom> And then for your "data MyType = Make (TVar Int) (IO String)", I would handwrite a Show instance that uses noshow for the no-show fields.
2021-09-15 02:23:16 +0200tremon(~tremon@217-63-61-89.cable.dynamic.v4.ziggo.nl) (Quit: getting boxed in)
2021-09-15 02:23:25 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-09-15 02:25:26 +0200pony(~ed@101.100.135.26) (Quit: WeeChat 2.8)
2021-09-15 02:25:35 +0200 <orzo> thanks
2021-09-15 02:27:37 +0200proofofkeags_(~proofofke@205.209.28.54) (Ping timeout: 265 seconds)
2021-09-15 02:30:58 +0200 <monochrom> Actually, TVar a is probably already Typeable whenever a is, so noshow can be simply "noshow x = show (typeOf x)"
2021-09-15 02:31:41 +0200 <monochrom> But I would still need to say "instance ... => NoShow (TVar a)" because I cannot say "instance ... => NoShow a".
2021-09-15 02:33:10 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-09-15 02:33:14 +0200thyriaen(~thyriaen@dynamic-078-055-255-174.78.55.pool.telefonica.de) (Remote host closed the connection)
2021-09-15 02:33:16 +0200 <orzo> we could just put a Typeable constraint on awpr's Show instance to Hide
2021-09-15 02:33:58 +0200 <orzo> maybe rename it as ShowType or something
2021-09-15 02:34:17 +0200System123(~System123@203-134-35-213.sta.estpak.ee)
2021-09-15 02:35:08 +0200 <orzo> i don't like the idea of changing the field types, but maybe its beter than the alternatives
2021-09-15 02:37:54 +0200 <monochrom> There is still the quirky solution of making your orphaned instances of "instance Typeable a => Show (TVar a)"
2021-09-15 02:38:16 +0200 <monochrom> Whether it's saner or crazier depends on the rest of your code base and your team consensus.
2021-09-15 02:38:46 +0200 <awpr> seems like there should be a way to tell GHC to use `via ShowType (TVar a)` for a single field when deriving `Show`
2021-09-15 02:38:51 +0200System123(~System123@203-134-35-213.sta.estpak.ee) (Ping timeout: 268 seconds)
2021-09-15 02:39:51 +0200 <awpr> although that might be going too far into "deriving is secretly a tactics language" territory
2021-09-15 02:40:10 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha)
2021-09-15 02:40:32 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 02:40:56 +0200 <monochrom> Perhaps it should openly be a tactics language :)
2021-09-15 02:41:25 +0200 <Cajun> when i think of trying to define instances of types specifically for debugging, i immediately think of some compilation flag that would selectively choose some instance, but idk if thats possible in the first place
2021-09-15 02:41:26 +0200 <awpr> yeah I just had that thought bouncing around the back of my head. that could be really cool
2021-09-15 02:41:54 +0200pbrisbin(~patrick@pool-173-49-147-250.phlapa.fios.verizon.net) (Ping timeout: 260 seconds)
2021-09-15 02:42:18 +0200 <awpr> I mean what is GND and deriving Show and DeriveGeneric if not builtin tactics?
2021-09-15 02:43:18 +0200 <orzo> I'm thinking to use awpr's solution combined with a field-accessor operator that automatically peels the Hide constructor. What'd make a good operator for that?
2021-09-15 02:44:17 +0200 <awpr> if you're using lens, `, _myField_ :: Hide X` and then `myField = myField_.hide`
2021-09-15 02:44:50 +0200 <awpr> i.e. bake it into the exported lenses for those fields
2021-09-15 02:44:51 +0200 <orzo> i've not been using lens
2021-09-15 02:45:05 +0200 <awpr> could also bake it into accessor functions and pattern synonyms
2021-09-15 02:47:03 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.2.1)
2021-09-15 02:55:37 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha)
2021-09-15 02:55:50 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 02:55:54 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 260 seconds)
2021-09-15 02:56:22 +0200favonia(~favonia@user/favonia)
2021-09-15 03:00:12 +0200doyougnu(~user@c-73-25-202-122.hsd1.or.comcast.net) (Remote host closed the connection)
2021-09-15 03:00:25 +0200oats(~thomas@user/oats) (Quit: until later, my friends)
2021-09-15 03:01:07 +0200oats(~thomas@user/oats)
2021-09-15 03:01:27 +0200favonia(~favonia@user/favonia) (Ping timeout: 265 seconds)
2021-09-15 03:04:51 +0200asivitz(uid178348@id-178348.tinside.irccloud.com) (Quit: Connection closed for inactivity)
2021-09-15 03:08:02 +0200_bin(~bin@user/bin/x-1583188) (Ping timeout: 260 seconds)
2021-09-15 03:11:12 +0200Guest372(~xxx@47.245.54.240) (Remote host closed the connection)
2021-09-15 03:12:19 +0200Guest372(~xxx@47.245.54.240)
2021-09-15 03:12:51 +0200favonia(~favonia@user/favonia)
2021-09-15 03:13:08 +0200wrengrwrengr_away
2021-09-15 03:13:08 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-09-15 03:13:21 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-09-15 03:16:10 +0200xff0x(~xff0x@2001:1a81:53ed:e500:564f:86e7:d174:9c84) (Ping timeout: 240 seconds)
2021-09-15 03:16:31 +0200fjmorazan(~quassel@user/fjmorazan) (Quit: fjmorazan)
2021-09-15 03:16:44 +0200fjmorazan(~quassel@user/fjmorazan)
2021-09-15 03:18:13 +0200xff0x(~xff0x@2001:1a81:522c:4300:7515:65a1:dfa5:eb8b)
2021-09-15 03:21:06 +0200favonia(~favonia@user/favonia) (Ping timeout: 260 seconds)
2021-09-15 03:24:55 +0200fjmorazan(~quassel@user/fjmorazan) (Quit: fjmorazan)
2021-09-15 03:25:32 +0200fjmorazan(~quassel@user/fjmorazan)
2021-09-15 03:27:58 +0200cheater(~Username@user/cheater) (Ping timeout: 268 seconds)
2021-09-15 03:29:26 +0200moats(~oats@user/oats)
2021-09-15 03:29:44 +0200neurocyte4(~neurocyte@IP-185189140114.dynamic.medianet-world.de)
2021-09-15 03:29:44 +0200neurocyte4(~neurocyte@IP-185189140114.dynamic.medianet-world.de) (Changing host)
2021-09-15 03:29:44 +0200neurocyte4(~neurocyte@user/neurocyte)
2021-09-15 03:30:59 +0200cheater(~Username@user/cheater)
2021-09-15 03:31:53 +0200neurocyte(~neurocyte@user/neurocyte) (Ping timeout: 268 seconds)
2021-09-15 03:31:53 +0200neurocyte4neurocyte
2021-09-15 03:33:55 +0200favonia(~favonia@user/favonia)
2021-09-15 03:34:19 +0200zaquest(~notzaques@5.128.210.178) (Quit: Leaving)
2021-09-15 03:41:32 +0200favonia(~favonia@user/favonia) (Ping timeout: 268 seconds)
2021-09-15 03:42:26 +0200zaquest(~notzaques@5.128.210.178)
2021-09-15 03:44:11 +0200abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
2021-09-15 03:44:19 +0200burnside_(~burnsides@client-8-86.eduroam.oxuni.org.uk) (Remote host closed the connection)
2021-09-15 03:44:45 +0200oatsoats_
2021-09-15 03:45:46 +0200moatsoats
2021-09-15 03:47:02 +0200sayola(~vekto@dslb-088-064-186-138.088.064.pools.vodafone-ip.de) (Read error: Connection reset by peer)
2021-09-15 03:50:57 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha)
2021-09-15 03:51:04 +0200tomku(~tomku@user/tomku) (Ping timeout: 252 seconds)
2021-09-15 03:51:11 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 03:51:24 +0200vysn(~vysn@user/vysn) (Ping timeout: 268 seconds)
2021-09-15 03:53:23 +0200favonia(~favonia@user/favonia)
2021-09-15 03:53:40 +0200pony(~ed@101.100.135.26)
2021-09-15 03:54:13 +0200sim590(~simon@modemcable090.207-203-24.mc.videotron.ca) (Ping timeout: 252 seconds)
2021-09-15 03:57:35 +0200tomku(~tomku@user/tomku)
2021-09-15 03:59:54 +0200lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Quit: ZNC 1.8.2 - https://znc.in)
2021-09-15 04:00:24 +0200lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net)
2021-09-15 04:01:22 +0200favonia(~favonia@user/favonia) (Ping timeout: 252 seconds)
2021-09-15 04:01:23 +0200slep(~slep@cpc150002-brnt4-2-0-cust437.4-2.cable.virginm.net) (Ping timeout: 265 seconds)
2021-09-15 04:02:16 +0200slep(~slep@cpc150002-brnt4-2-0-cust437.4-2.cable.virginm.net)
2021-09-15 04:04:10 +0200shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 252 seconds)
2021-09-15 04:04:18 +0200lbseale(~lbseale@user/ep1ctetus) (Read error: Connection reset by peer)
2021-09-15 04:05:03 +0200Toast52(~Toast52@151.192.167.120)
2021-09-15 04:07:53 +0200sim590(~simon@modemcable090.207-203-24.mc.videotron.ca)
2021-09-15 04:14:33 +0200favonia(~favonia@user/favonia)
2021-09-15 04:16:17 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha)
2021-09-15 04:16:32 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 04:21:10 +0200favonia(~favonia@user/favonia) (Ping timeout: 252 seconds)
2021-09-15 04:23:28 +0200td_(~td@muedsl-82-207-238-177.citykom.de) (Ping timeout: 268 seconds)
2021-09-15 04:25:02 +0200td_(~td@muedsl-82-207-238-063.citykom.de)
2021-09-15 04:25:04 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds)
2021-09-15 04:26:41 +0200alx741(~alx741@181.196.68.49) (Quit: alx741)
2021-09-15 04:26:44 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-09-15 04:29:42 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-15 04:31:51 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-09-15 04:34:05 +0200zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2021-09-15 04:34:35 +0200favonia(~favonia@user/favonia)
2021-09-15 04:35:42 +0200gioyik(~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 276 seconds)
2021-09-15 04:35:50 +0200System123(~System123@203-134-35-213.sta.estpak.ee)
2021-09-15 04:39:14 +0200betelgeuse(~betelgeus@94-225-47-8.access.telenet.be) (Quit: Ping timeout (120 seconds))
2021-09-15 04:40:20 +0200System123(~System123@203-134-35-213.sta.estpak.ee) (Ping timeout: 268 seconds)
2021-09-15 04:41:30 +0200favonia(~favonia@user/favonia) (Ping timeout: 265 seconds)
2021-09-15 04:41:42 +0200betelgeuse(~betelgeus@94-225-47-8.access.telenet.be)
2021-09-15 04:46:02 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 260 seconds)
2021-09-15 04:51:48 +0200_bin(~bin@user/bin/x-1583188)
2021-09-15 04:53:16 +0200favonia(~favonia@user/favonia)
2021-09-15 04:57:19 +0200meinside(uid24933@id-24933.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2021-09-15 04:58:04 +0200favonia(~favonia@user/favonia) (Ping timeout: 252 seconds)
2021-09-15 04:58:34 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 252 seconds)
2021-09-15 04:59:21 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2021-09-15 05:00:40 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2021-09-15 05:04:04 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-09-15 05:11:07 +0200favonia(~favonia@user/favonia)
2021-09-15 05:11:13 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds)
2021-09-15 05:13:22 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-09-15 05:19:28 +0200sneedsfeed(~sneedsfee@rrcs-173-95-122-169.midsouth.biz.rr.com)
2021-09-15 05:20:42 +0200 <sneedsfeed> test
2021-09-15 05:21:41 +0200oatsmoats
2021-09-15 05:22:25 +0200 <sneedsfeed> I know this is a dumb question... by why is this function https://hastebin.com/kesayufuje.hs a list? Is it just that the compiler assumes that with any infinitely recursive series the programmer must want a list?
2021-09-15 05:22:51 +0200 <awpr> `:` is an operator that prepends an item onto a list specifically
2021-09-15 05:22:59 +0200 <sneedsfeed> but I tried that in ghci
2021-09-15 05:23:00 +0200 <sneedsfeed> 1 : 1
2021-09-15 05:23:01 +0200meinside(uid24933@id-24933.helmsley.irccloud.com)
2021-09-15 05:23:18 +0200 <sneedsfeed> Non type-variable argument in the constraint: Num [a]
2021-09-15 05:23:18 +0200 <sneedsfeed> (Use FlexibleContexts to permit this)
2021-09-15 05:23:39 +0200 <awpr> 1 isn't a list, it's a number; the RHS has to be a list, e.g. `1 : []` or `1 : [2, 4]`
2021-09-15 05:23:57 +0200 <sneedsfeed> but the function i linked has no bracket anywhere
2021-09-15 05:24:19 +0200 <sneedsfeed> thats the essence of my confusion
2021-09-15 05:24:31 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 265 seconds)
2021-09-15 05:24:43 +0200 <awpr> ah, the infinite recursion is potentially confusing; there's no brackets because no suffix of the list it generates is finite
2021-09-15 05:25:04 +0200oats_oats
2021-09-15 05:25:41 +0200 <sneedsfeed> is that not just a different way of saying "Is it just that the compiler assumes that with any infinitely recursive series the programmer must want a list?"?
2021-09-15 05:26:00 +0200 <awpr> no, it figured out a list was wanted because of the `:` operator
2021-09-15 05:26:58 +0200 <sneedsfeed> so : followed by infinite recursion works sort of like : followed by []
2021-09-15 05:27:07 +0200 <sneedsfeed> the infinite recursion fills in for the []
2021-09-15 05:27:10 +0200 <awpr> I guess you could say that, yeah
2021-09-15 05:27:17 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-09-15 05:27:22 +0200 <sneedsfeed> (y)
2021-09-15 05:27:43 +0200 <Axman6> this would be a l;ot easier if you added types. f has this type: f :: Integer -> Integer -> [Integer]. we can see that in its definition we use (:) to create a list, where the head of the list is a, and the tail of the list is the result of calling f b (a+b), which, according to its type, is a list, becausde we have applied two Integers to something of type Integer -> Integer -> [Integer] giving us [Integer]
2021-09-15 05:27:44 +0200 <awpr> specifically a recursive call of the appropriate list type, though
2021-09-15 05:28:33 +0200 <sneedsfeed> ah so its making a type assumption and then using that assumption to deduce the intention
2021-09-15 05:28:36 +0200 <Axman6> the compiler isn't assuming anything, it is just following the typeing rules
2021-09-15 05:28:42 +0200 <Axman6> typing*
2021-09-15 05:29:01 +0200_\_(~o@user/ding) (Quit: ___)
2021-09-15 05:29:44 +0200_\_(~o@user/ding)
2021-09-15 05:30:15 +0200_\_(~o@user/ding) (Remote host closed the connection)
2021-09-15 05:30:50 +0200_\_(~o@user/ding)
2021-09-15 05:31:00 +0200lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Quit: ZNC 1.8.2 - https://znc.in)
2021-09-15 05:31:25 +0200Toast52_(~Toast52@151.192.167.120)
2021-09-15 05:31:34 +0200 <Axman6> sneedsfeed: have a look at https://hastebin.com/awuvuhiveg.php
2021-09-15 05:31:50 +0200lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net)
2021-09-15 05:32:17 +0200 <Axman6> it's the same code, but with some types added - these can all be inferred by the compiler (it might infer something more general then Integer, but let's keep it simple)
2021-09-15 05:32:42 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
2021-09-15 05:34:31 +0200 <sneedsfeed> but then... if the type is whats sorting all of this out for us... how come this doesnt work? https://hastebin.com/uyarofolet.hs
2021-09-15 05:34:40 +0200Toast52(~Toast52@151.192.167.120) (Ping timeout: 265 seconds)
2021-09-15 05:34:57 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-09-15 05:35:12 +0200 <Axman6> what is the type of (:)?
2021-09-15 05:35:39 +0200 <Axman6> I put it in that file in the comments
2021-09-15 05:35:51 +0200 <sneedsfeed> yea I mean I get that
2021-09-15 05:36:04 +0200 <Axman6> I want you to tell me a) the type in Haskell syntax, and what it means in english
2021-09-15 05:36:11 +0200 <Axman6> and b)
2021-09-15 05:36:23 +0200 <sneedsfeed> but (:) is working fine here https://hastebin.com/kesayufuje.hs witout any [a]
2021-09-15 05:36:36 +0200_\_(~o@user/ding) (Quit: ___)
2021-09-15 05:36:49 +0200 <Axman6> because if you did get that, you wouldn't be asking why that code doesn't work, because looking at the types, it's obvious why it can't work
2021-09-15 05:37:11 +0200_\_(~o@user/ding)
2021-09-15 05:37:11 +0200 <Axman6> there doesn't have to be any []'s for you to be using lists, there just has to be things which have the type of lists
2021-09-15 05:37:13 +0200 <sneedsfeed> oh sure (:) :: a -> [a] -> [a] so : take a type a and a list of type as and returns a list of type a
2021-09-15 05:37:38 +0200 <Axman6> ok, so why can't f :: Int -> Int -> [Int]; f a b = a : b work?
2021-09-15 05:37:44 +0200 <sneedsfeed> infinite recursion like that is "a thing that has the type of lists"?
2021-09-15 05:37:47 +0200 <Axman6> what is the type of b?
2021-09-15 05:38:05 +0200 <Axman6> stop thinking about recursion, you're missing some much more basic things here
2021-09-15 05:38:21 +0200 <Axman6> tell me why f above can't possibly work
2021-09-15 05:38:50 +0200 <sneedsfeed> oh its a type mismatch, I perfectly understand why f doesnt work
2021-09-15 05:38:56 +0200 <Axman6> good
2021-09-15 05:38:59 +0200 <sneedsfeed> i mean at least I think I do
2021-09-15 05:39:30 +0200 <Axman6> you're applying (:) to a and b, where a :: Int and b :: Int, and b definitely does not match [a], an Int is definitely not a list
2021-09-15 05:40:02 +0200 <sneedsfeed> can I ask you if this statement is accurate: infinite recursion plus the aproprite type signature is ""a thing that has the type of lists""
2021-09-15 05:40:06 +0200 <Axman6> what _would_ have worked though is: f a b = a : [b] -- we haveput b into a list
2021-09-15 05:40:14 +0200 <Axman6> no, that is not true
2021-09-15 05:40:20 +0200 <sneedsfeed> dang
2021-09-15 05:40:33 +0200 <Axman6> you have lists because you have used (:), that's it
2021-09-15 05:41:11 +0200 <Axman6> the list you are making happens to be infinite but that is an orthogonal thing to the fact that you do have lists, at least to me
2021-09-15 05:41:49 +0200 <Axman6> it is infinite because we only ever create cons', we never produce a [] constructor to give us somewhere to stop
2021-09-15 05:42:14 +0200 <sneedsfeed> okay I think I can grok that and accept it
2021-09-15 05:42:46 +0200 <sneedsfeed> a bit abstract but not too far out there
2021-09-15 05:43:08 +0200 <Axman6> it's kind og like: let a = 1 : a -- this is an infinite list where, when we try to pattern match on the head: case a of (x:xs) we get x = 1, and xs is, according to that definition, a again
2021-09-15 05:43:57 +0200 <sneedsfeed> [1,1,1...]
2021-09-15 05:44:47 +0200 <Axman6> so, it's worth remembering that the syntax which uses [ and ] is syntax sugar. your pseudo syntax for [1,1,1,...] really means 1:1:1:...
2021-09-15 05:46:01 +0200 <sneedsfeed> could you say that 1:1:1.... is just syntax sugar on a = 1 : a?
2021-09-15 05:46:14 +0200justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2)
2021-09-15 05:46:31 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net)
2021-09-15 05:47:04 +0200 <sneedsfeed> sorry that really doesnt have anything to do with the point
2021-09-15 05:47:23 +0200 <sneedsfeed> I appreciate the insights.
2021-09-15 05:47:50 +0200 <Axman6> yeah I guess you could, but it's human syntax sugar, not Haskell syntax sugar :)
2021-09-15 05:49:20 +0200 <Axman6> so is the definition of fibs making any more sense?
2021-09-15 05:49:22 +0200 <sneedsfeed> this is going to help a lot with writing recursive functions, up till now i've never even tried to write one that didnt have a bracket in it
2021-09-15 05:49:33 +0200 <sneedsfeed> a lot (y)
2021-09-15 05:49:58 +0200 <Axman6> great - an useful exercise might be for you to explain to us how fibs works, based on what you now know
2021-09-15 05:50:35 +0200 <Axman6> this is also a great example of where writing things out on a piece of paper is useful
2021-09-15 05:53:50 +0200 <sneedsfeed> its not really the recursion itself that I was hung up on.. I really do get that part. I was essentially confused by the type of (:) saying it needed a [a] while the fib function didnt even have a bracket in it
2021-09-15 05:54:22 +0200 <Axman6> https://hastebin.com/ujuzumaquj.yaml
2021-09-15 05:55:03 +0200 <Axman6> yeah it's a very common beginner misunderstanding that lists need []'s in the code, but a list is really either the [] constructor or the (:) constructor, everything else is syntax sugar
2021-09-15 05:55:41 +0200 <sneedsfeed> thanks again friend, think im going to turn in
2021-09-15 05:56:12 +0200 <Axman6> good luck , try not to fully evaluate any infinitely recursive definitions in your dreams
2021-09-15 06:04:10 +0200xlei(znc@pool-68-129-84-118.nycmny.fios.verizon.net) (Ping timeout: 240 seconds)
2021-09-15 06:06:12 +0200Gurkenglas(~Gurkengla@dslb-002-207-014-195.002.207.pools.vodafone-ip.de)
2021-09-15 06:06:52 +0200Gurkenglas(~Gurkengla@dslb-002-207-014-195.002.207.pools.vodafone-ip.de) (Read error: Connection reset by peer)
2021-09-15 06:07:10 +0200Gurkenglas(~Gurkengla@dslb-002-207-014-195.002.207.pools.vodafone-ip.de)
2021-09-15 06:09:16 +0200 <ldlework> With regards to bind chaining like `foo v >>= bar >>= baz`, what if foo, bar and baz are coming from a list function parameter?
2021-09-15 06:09:27 +0200 <ldlework> oh recursion maybe
2021-09-15 06:12:32 +0200lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Quit: ZNC 1.8.2 - https://znc.in)
2021-09-15 06:13:23 +0200lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net)
2021-09-15 06:20:12 +0200 <ldlework> I am trying to figure out how I can make a nice input validation pipeline where values of a validation type can check and map a value to a new value type
2021-09-15 06:20:27 +0200 <ldlework> in order to get that in a nice composable pipeline, do I need to look into "transformers"?
2021-09-15 06:20:38 +0200 <ldlework> I see it is a chapter in HFFP a bit ahead from where I'm at
2021-09-15 06:23:08 +0200 <ldlework> like I wonder how you compose IO actions with functions that can transform strings into ints, for example
2021-09-15 06:25:54 +0200Toast52_(~Toast52@151.192.167.120) (Ping timeout: 265 seconds)
2021-09-15 06:27:48 +0200 <ldlework> oh, fmap
2021-09-15 06:27:55 +0200 <ldlework> thanks hlint
2021-09-15 06:29:10 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
2021-09-15 06:39:13 +0200abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 252 seconds)
2021-09-15 06:39:45 +0200 <ldlework> Can anyone help me figure out how to get something like this working?
2021-09-15 06:39:47 +0200 <ldlework> https://gist.github.com/dustinlacewell/f61df03ffeb41976ea16193281978f09
2021-09-15 06:45:03 +0200phma_(~phma@host-67-44-208-112.hnremote.net)
2021-09-15 06:46:22 +0200phma(~phma@host-67-44-208-112.hnremote.net) (Ping timeout: 252 seconds)
2021-09-15 06:48:06 +0200sneedsfeed(~sneedsfee@rrcs-173-95-122-169.midsouth.biz.rr.com) (Quit: Client closed)
2021-09-15 06:48:45 +0200phma(~phma@host-67-44-208-112.hnremote.net)
2021-09-15 06:49:18 +0200lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Quit: ZNC 1.8.2 - https://znc.in)
2021-09-15 06:49:37 +0200lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net)
2021-09-15 06:50:27 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 268 seconds)
2021-09-15 06:51:34 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Remote host closed the connection)
2021-09-15 06:51:34 +0200phma_(~phma@host-67-44-208-112.hnremote.net) (Ping timeout: 260 seconds)
2021-09-15 06:51:36 +0200xlei(akans@pool-68-129-84-118.nycmny.fios.verizon.net)
2021-09-15 06:51:47 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-09-15 06:54:06 +0200 <dsal> ldlework: Really would recommend types on every toplevel definition. Half the time, that clears up much of the confusion for me.
2021-09-15 06:54:28 +0200 <ldlework> dsal: the editor tells me what it thinks they inferred as
2021-09-15 06:55:00 +0200 <awpr> the most difficult issue with something like that is that the validators in a list would want to have different types: the first one from `String` to `Int`, and the second from `Int` to `Int`. it is possible to make a list-like structure that supports that, but it's moderately advanced. it might be easier to have `getInput` take one composite validator, and call it like `getInput "n: " (asInt >=> atLeast2)`
2021-09-15 06:56:06 +0200hendursaga(~weechat@user/hendursaga) (Ping timeout: 276 seconds)
2021-09-15 06:56:30 +0200 <dsal> ldlework: Sure, but the types are the intent. You can write down what was inferred and then decide whether it's what you meant, or you can realize that it's hard to combine some things the way you planned to.
2021-09-15 06:57:17 +0200 <ldlework> awpr: that was the answer i was looking for thank you!
2021-09-15 06:57:22 +0200 <ldlework> dsal: yeah i need to work on the habit
2021-09-15 07:00:26 +0200phma_(~phma@host-67-44-208-70.hnremote.net)
2021-09-15 07:01:22 +0200phma(~phma@host-67-44-208-112.hnremote.net) (Ping timeout: 260 seconds)
2021-09-15 07:02:09 +0200fef(~thedawn@user/thedawn)
2021-09-15 07:02:12 +0200ksu(~ksu@user/prtr)
2021-09-15 07:02:25 +0200_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-09-15 07:04:01 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-15 07:06:50 +0200ubert(~Thunderbi@178.165.181.26.wireless.dyn.drei.com)
2021-09-15 07:11:38 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha)
2021-09-15 07:11:51 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 07:22:45 +0200abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
2021-09-15 07:29:32 +0200dsrt^(~dsrt@68.101.54.227)
2021-09-15 07:35:09 +0200 <ldlework> awpr: i'm really close
2021-09-15 07:35:11 +0200 <ldlework> https://gist.github.com/dustinlacewell/49f4f682f91465e055c691c2778c9501
2021-09-15 07:35:15 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-09-15 07:35:26 +0200 <ldlework> what's the egronomic way here to pull the values out of the Rights?
2021-09-15 07:36:00 +0200 <ldlework> oh
2021-09-15 07:36:02 +0200 <ldlework> i solved it
2021-09-15 07:36:31 +0200 <ldlework> changing `getInput` from returning `IO (Either String a)` to `IO a` fixed it
2021-09-15 07:37:31 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 252 seconds)
2021-09-15 07:37:41 +0200 <awpr> `readEither` probably also doesn't do quite what it's expected to there; its string parameter is the thing to parse, not an error message
2021-09-15 07:38:12 +0200Toast52(~Toast52@151.192.167.120)
2021-09-15 07:38:22 +0200 <ldlework> oh
2021-09-15 07:38:28 +0200 <ldlework> that explains the error i'm getting
2021-09-15 07:38:30 +0200 <ldlework> haha
2021-09-15 07:38:33 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 268 seconds)
2021-09-15 07:42:07 +0200hyiltiz(~quassel@31.220.5.250)
2021-09-15 07:42:24 +0200slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-09-15 07:42:40 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2021-09-15 07:42:56 +0200 <ldlework> it works!
2021-09-15 07:42:58 +0200 <ldlework> \o/
2021-09-15 07:45:15 +0200 <ldlework> https://gist.github.com/dustinlacewell/49f4f682f91465e055c691c2778c9501
2021-09-15 07:47:17 +0200Lycurgus(~juan@98.4.112.204)
2021-09-15 07:48:41 +0200gioyik(~gioyik@gateway/tor-sasl/gioyik)
2021-09-15 07:49:21 +0200_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-09-15 07:49:46 +0200dut(~dut@user/dut)
2021-09-15 07:50:50 +0200abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
2021-09-15 07:51:40 +0200 <awpr> great! for a random bonus topic you could check out, there's a function `either` that could be used to replace the error message in fewer lines
2021-09-15 07:54:45 +0200ubert1(~Thunderbi@178.165.181.26.wireless.dyn.drei.com)
2021-09-15 07:54:50 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 265 seconds)
2021-09-15 07:55:19 +0200hyiltiz(~quassel@31.220.5.250)
2021-09-15 07:57:44 +0200ubert(~Thunderbi@178.165.181.26.wireless.dyn.drei.com) (Ping timeout: 265 seconds)
2021-09-15 07:57:45 +0200ubert1ubert
2021-09-15 07:58:06 +0200 <ldlework> awpr: do you mean for `getInput` or for the validation functions like `atLeast2`
2021-09-15 07:59:42 +0200 <awpr> I meant for `readEither'`, where there's already an `Either` that needs a different thing in `Left`
2021-09-15 08:02:26 +0200 <ldlework> awpr: this?
2021-09-15 08:02:28 +0200 <ldlework> readEither' e i = either (\x -> Left e) Right
2021-09-15 08:02:40 +0200 <ldlework> hmm no
2021-09-15 08:03:16 +0200ldleworkscratches his head
2021-09-15 08:03:25 +0200 <awpr> that's the core idea, it just lost the initial call to `readEither`
2021-09-15 08:03:43 +0200 <ldlework> maybe
2021-09-15 08:03:45 +0200 <ldlework> readEither' e i = either (\x -> Left e) Right (readEither i)
2021-09-15 08:04:01 +0200 <awpr> yep!
2021-09-15 08:04:23 +0200 <ldlework> OK that actually makes sense
2021-09-15 08:05:05 +0200 <Axman6> ldlework: regarding puttiong types on top level definitions, I would say this is a habbit all god Haskell developers develop - you will find that you start thinking in typed before you think in program code soon enough, and writing down the types helps you design the code you want to write
2021-09-15 08:05:11 +0200pony(~ed@101.100.135.26) (Quit: WeeChat 2.8)
2021-09-15 08:05:30 +0200 <ldlework> Axman6: certainly it will help copilot write the code I want to write :D
2021-09-15 08:05:53 +0200 <ldlework> i'm just kidding, i hear that
2021-09-15 08:06:05 +0200 <Lycurgus> what my srsly?
2021-09-15 08:06:20 +0200 <Axman6> most haskell I write these days starts with writing the types and making the definitions = undefined
2021-09-15 08:06:48 +0200pony(~ed@101.100.135.26)
2021-09-15 08:07:13 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 252 seconds)
2021-09-15 08:08:04 +0200 <Lycurgus> there's a wait list (for copilot)
2021-09-15 08:09:35 +0200pony(~ed@101.100.135.26) (Client Quit)
2021-09-15 08:09:47 +0200 <ldlework> Lycurgus: i've had access for months
2021-09-15 08:09:58 +0200 <ldlework> awpr: nice I used `either` to refactor getInput too
2021-09-15 08:10:03 +0200fef(~thedawn@user/thedawn) (Quit: Leaving)
2021-09-15 08:10:18 +0200xlei(akans@pool-68-129-84-118.nycmny.fios.verizon.net) (Ping timeout: 265 seconds)
2021-09-15 08:10:26 +0200 <ldlework> not sure if it's better
2021-09-15 08:10:28 +0200 <ldlework> lol
2021-09-15 08:10:35 +0200 <Lycurgus> ldlework, and you do in fact use it with haskell?
2021-09-15 08:10:47 +0200 <ldlework> Lycurgus: oh yeah, it's been super helpful
2021-09-15 08:11:12 +0200 <awpr> yeah, that one would be a bit noisier than the case in `readEither'`
2021-09-15 08:11:14 +0200 <Lycurgus> could be the works
2021-09-15 08:14:04 +0200 <ldlework> awpr: is there a >=> that drops the value like >>
2021-09-15 08:14:38 +0200 <Axman6> const foo >=> bar?
2021-09-15 08:15:35 +0200 <ldlework> Axman6: that will pass foo to bar, right?
2021-09-15 08:15:51 +0200 <awpr> hmm, like `Monad m => (a -> m b) -> m c -> m c`? don't know of one, but `foo >=> const bar` might be what you're looking fdor
2021-09-15 08:16:00 +0200 <Axman6> :t \foo bar -> const foo >=> bar
2021-09-15 08:16:01 +0200 <lambdabot> Monad m => m b1 -> (b1 -> m c) -> b2 -> m c
2021-09-15 08:16:18 +0200 <ldlework> oh
2021-09-15 08:16:24 +0200 <awpr> er, I missed an `a` in my type signature
2021-09-15 08:16:31 +0200 <Axman6> I don't understand your question though
2021-09-15 08:16:37 +0200 <ldlework> print >=> const (getInput prompt check
2021-09-15 08:16:39 +0200 <ldlework> this worked
2021-09-15 08:16:52 +0200 <ldlework> does const eval `a` though
2021-09-15 08:16:58 +0200 <ldlework> oh
2021-09-15 08:17:06 +0200 <ldlework> also I need to return the return value of getInput
2021-09-15 08:17:18 +0200pony(~ed@101.100.135.26)
2021-09-15 08:17:47 +0200 <ldlework> Left msg -> do
2021-09-15 08:17:49 +0200 <ldlework> print msg
2021-09-15 08:17:51 +0200 <ldlework> getInput prompt check
2021-09-15 08:18:08 +0200 <ldlework> Trying to refactor this into a composed function I can pass to `either`
2021-09-15 08:18:54 +0200 <Axman6> (\msg -> print msg >> getInput ...)
2021-09-15 08:20:18 +0200 <ldlework> right i had it working with a lambda
2021-09-15 08:20:29 +0200 <ldlework> was wondering if there was a way to compose it so the msg just naturally hits the print
2021-09-15 08:21:01 +0200 <Axman6> print >=> const (getInput prompt check) seems fine to me then
2021-09-15 08:21:04 +0200 <Axman6> @src const
2021-09-15 08:21:04 +0200 <lambdabot> const x _ = x
2021-09-15 08:21:33 +0200 <ldlework> oh right, it will evaluate and return the first arg
2021-09-15 08:21:44 +0200 <Axman6> no, it will return its first arg
2021-09-15 08:21:54 +0200 <Axman6> there is no evaluation there
2021-09-15 08:22:28 +0200 <Lycurgus> it will be interesting to see if copilot can actually clear the licensing issues and enter GA
2021-09-15 08:22:43 +0200falafel(~falafel@2603-8000-d800-688c-4852-3b82-73df-20ff.res6.spectrum.com)
2021-09-15 08:22:45 +0200 <Lycurgus> and how it does that
2021-09-15 08:23:32 +0200 <Lycurgus> obviously with its default use of github as repo, hs is a likely target
2021-09-15 08:24:26 +0200kenran(~kenran@b2b-37-24-119-190.unitymedia.biz)
2021-09-15 08:25:06 +0200phma_(~phma@host-67-44-208-70.hnremote.net) (Read error: Connection reset by peer)
2021-09-15 08:25:29 +0200phma_(~phma@host-67-44-208-70.hnremote.net)
2021-09-15 08:28:37 +0200dut(~dut@user/dut) (Quit: Leaving)
2021-09-15 08:29:04 +0200michalz(~michalz@185.246.204.57)
2021-09-15 08:29:57 +0200chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2021-09-15 08:31:34 +0200chele(~chele@user/chele)
2021-09-15 08:33:00 +0200chexum(~quassel@gateway/tor-sasl/chexum)
2021-09-15 08:36:58 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha)
2021-09-15 08:37:11 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 08:42:58 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 252 seconds)
2021-09-15 08:43:01 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2021-09-15 08:47:18 +0200max22-(~maxime@2a01cb088335980009e300fcb92e8769.ipv6.abo.wanadoo.fr)
2021-09-15 08:50:18 +0200VoidNoir0(~VoidNoir0@72.80.203.52) (Quit: Connection closed)
2021-09-15 08:52:18 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha)
2021-09-15 08:52:38 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 08:53:54 +0200vysn(~vysn@user/vysn)
2021-09-15 08:56:27 +0200cfricke(~cfricke@user/cfricke)
2021-09-15 08:56:53 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-15 09:00:12 +0200 <AWizzArd> How (i.e. syntax) can I do record projection in a Dhall function? let myFn = \(val : {x, y, z}) -> x <== doesn't work, `x` is unbound.
2021-09-15 09:01:16 +0200lep(~lep@94.31.80.176) (Ping timeout: 252 seconds)
2021-09-15 09:02:45 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha)
2021-09-15 09:03:00 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 09:04:13 +0200phma_(~phma@host-67-44-208-70.hnremote.net) (Read error: No route to host)
2021-09-15 09:05:24 +0200pony(~ed@101.100.135.26) (Quit: WeeChat 2.8)
2021-09-15 09:06:30 +0200Lycurgus(~juan@98.4.112.204) (Quit: Exeunt)
2021-09-15 09:07:01 +0200phma_(~phma@host-67-44-208-70.hnremote.net)
2021-09-15 09:08:00 +0200pony(~ed@101.100.135.26)
2021-09-15 09:08:29 +0200fendor(~fendor@91.141.60.54.wireless.dyn.drei.com)
2021-09-15 09:10:29 +0200ub(~Thunderbi@178.165.181.26.wireless.dyn.drei.com)
2021-09-15 09:12:54 +0200ubert(~Thunderbi@178.165.181.26.wireless.dyn.drei.com) (Ping timeout: 268 seconds)
2021-09-15 09:12:54 +0200ububert
2021-09-15 09:14:50 +0200falafel(~falafel@2603-8000-d800-688c-4852-3b82-73df-20ff.res6.spectrum.com) (Ping timeout: 260 seconds)
2021-09-15 09:15:45 +0200Toast52(~Toast52@151.192.167.120) (Quit: Leaving)
2021-09-15 09:16:26 +0200eggplant_(~Eggplanta@2600:1700:bef1:5e10:7d7c:377a:4e03:5107)
2021-09-15 09:17:07 +0200gioyik(~gioyik@gateway/tor-sasl/gioyik) (Quit: WeeChat 3.1)
2021-09-15 09:18:13 +0200lep(~lep@94.31.80.176)
2021-09-15 09:20:05 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:d58c:2ecc:67d4:668) (Ping timeout: 268 seconds)
2021-09-15 09:21:32 +0200acidjnk_new(~acidjnk@p200300d0c7203004a4342413982b89a9.dip0.t-ipconnect.de)
2021-09-15 09:24:33 +0200phma(~phma@host-67-44-208-59.hnremote.net)
2021-09-15 09:25:19 +0200phma_(~phma@host-67-44-208-70.hnremote.net) (Ping timeout: 252 seconds)
2021-09-15 09:27:25 +0200ubert1(~Thunderbi@178.165.181.26.wireless.dyn.drei.com)
2021-09-15 09:29:57 +0200ubert(~Thunderbi@178.165.181.26.wireless.dyn.drei.com) (Ping timeout: 268 seconds)
2021-09-15 09:29:57 +0200ubert1ubert
2021-09-15 09:31:32 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-15 09:33:14 +0200jstolarek(~jstolarek@ers4.neoplus.adsl.tpnet.pl)
2021-09-15 09:34:31 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-09-15 09:38:21 +0200phma_(~phma@host-67-44-208-80.hnremote.net)
2021-09-15 09:41:16 +0200phma(~phma@host-67-44-208-59.hnremote.net) (Ping timeout: 252 seconds)
2021-09-15 09:47:19 +0200phma_(~phma@host-67-44-208-80.hnremote.net) (Ping timeout: 252 seconds)
2021-09-15 09:47:27 +0200phma(~phma@host-67-44-208-20.hnremote.net)
2021-09-15 09:48:11 +0200benin036932301(~benin@183.82.24.197)
2021-09-15 09:49:29 +0200eggplant_(~Eggplanta@2600:1700:bef1:5e10:7d7c:377a:4e03:5107) (Remote host closed the connection)
2021-09-15 09:57:54 +0200phma_(~phma@host-67-44-208-86.hnremote.net)
2021-09-15 09:58:52 +0200phma(~phma@host-67-44-208-20.hnremote.net) (Ping timeout: 252 seconds)
2021-09-15 10:05:56 +0200acidjnk_new3(~acidjnk@p200300d0c7203004e1439791f2b63139.dip0.t-ipconnect.de)
2021-09-15 10:07:06 +0200phma_(~phma@host-67-44-208-86.hnremote.net) (Ping timeout: 260 seconds)
2021-09-15 10:07:26 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2021-09-15 10:07:37 +0200phma_(~phma@host-67-44-208-13.hnremote.net)
2021-09-15 10:07:40 +0200acidjnk(~acidjnk@p200300d0c720300449bf8ace8b93cd9d.dip0.t-ipconnect.de)
2021-09-15 10:08:19 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-09-15 10:09:38 +0200acidjnk_new(~acidjnk@p200300d0c7203004a4342413982b89a9.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2021-09-15 10:10:20 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2021-09-15 10:10:34 +0200acidjnk_new3(~acidjnk@p200300d0c7203004e1439791f2b63139.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2021-09-15 10:13:06 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha)
2021-09-15 10:13:19 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 10:13:23 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Client Quit)
2021-09-15 10:13:53 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 10:14:41 +0200phma(~phma@host-67-44-208-13.hnremote.net)
2021-09-15 10:14:50 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:c8a8:7443:54e5:e9f7)
2021-09-15 10:15:22 +0200phma_(~phma@host-67-44-208-13.hnremote.net) (Ping timeout: 252 seconds)
2021-09-15 10:16:42 +0200__celeste(~celeste@ip98-162-196-252.ok.ok.cox.net)
2021-09-15 10:17:44 +0200allbery_b(~geekosaur@xmonad/geekosaur)
2021-09-15 10:17:44 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2021-09-15 10:17:47 +0200allbery_bgeekosaur
2021-09-15 10:19:10 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:c8a8:7443:54e5:e9f7) (Ping timeout: 240 seconds)
2021-09-15 10:19:50 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 260 seconds)
2021-09-15 10:22:27 +0200phma_(~phma@host-67-44-208-95.hnremote.net)
2021-09-15 10:23:07 +0200arjun(~Srain@user/arjun)
2021-09-15 10:23:09 +0200 <arjun> hi
2021-09-15 10:23:40 +0200phma(~phma@host-67-44-208-13.hnremote.net) (Ping timeout: 252 seconds)
2021-09-15 10:23:41 +0200 <arjun> can anyone explain me what's the deal with the `run` functions pattern in record types?
2021-09-15 10:23:58 +0200 <maerwald> arjun: like?
2021-09-15 10:24:24 +0200 <opqdonut> :t runState
2021-09-15 10:24:25 +0200 <lambdabot> State s a -> s -> (a, s)
2021-09-15 10:24:36 +0200 <arjun> eg:- type Parser a = { runParser :: String -> (String, Either someError a) }
2021-09-15 10:24:47 +0200 <opqdonut> if you look at the type, that's a very reasonable name for it
2021-09-15 10:24:59 +0200 <opqdonut> just like `runParser :: Parser a -> String -> (String, Either SomeError a)`
2021-09-15 10:25:03 +0200 <opqdonut> run this parser on that string
2021-09-15 10:25:34 +0200 <arjun> i get that, i am more inclined on the side of knowing is there a reason we do it this way ?
2021-09-15 10:26:07 +0200 <opqdonut> it saves a definition compared to defining `data Parser a = Parser (String -> (String, Either someError a)); runParser (Parser f) s = f s`
2021-09-15 10:26:27 +0200 <arjun> opqdonut, that's it right?
2021-09-15 10:26:39 +0200 <opqdonut> yeah that's all there is to this idiom
2021-09-15 10:26:44 +0200 <arjun> smh
2021-09-15 10:26:57 +0200 <maerwald> It's more interesting to understand why you put a function into a data type
2021-09-15 10:27:02 +0200 <opqdonut> yeah
2021-09-15 10:27:09 +0200 <arjun> maerwald: yea, that too
2021-09-15 10:27:33 +0200 <opqdonut> reasons can include: making a nicer api (a Parser is a black box), being able to define an instance (say Monad Parser)
2021-09-15 10:27:43 +0200 <arjun> i understand "a parser is a function that takes a string and gives us error or parsed thing"
2021-09-15 10:28:00 +0200 <arjun> and my first instinct was to write a function, and not define it as a type
2021-09-15 10:31:43 +0200__monty__(~toonn@user/toonn)
2021-09-15 10:32:18 +0200phma(~phma@host-67-44-208-80.hnremote.net)
2021-09-15 10:32:27 +0200 <arjun> opqdonut: ah, i see
2021-09-15 10:32:36 +0200 <arjun> is that it maerwald ?
2021-09-15 10:33:01 +0200phma_(~phma@host-67-44-208-95.hnremote.net) (Ping timeout: 252 seconds)
2021-09-15 10:34:01 +0200azeem(~azeem@2a00:801:3c1:c79f:2f67:8901:c99e:d77d) (Read error: Connection reset by peer)
2021-09-15 10:34:20 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-09-15 10:34:44 +0200azeem(~azeem@emp-91-123.eduroam.uu.se)
2021-09-15 10:35:17 +0200 <maerwald> the point is that you're passing the input implicitly to the next "instance" of the parser through the monadic bind function
2021-09-15 10:35:23 +0200 <maerwald> similar with state
2021-09-15 10:35:47 +0200 <maerwald> otherwise there's not much point in having a type like that
2021-09-15 10:36:21 +0200 <arjun> its for ergonomics then ?
2021-09-15 10:36:37 +0200 <maerwald> yes, nothing more
2021-09-15 10:36:44 +0200 <maerwald> you don't need monads
2021-09-15 10:36:58 +0200 <arjun> i've been banging my head at it for so long. -_-
2021-09-15 10:37:09 +0200 <maerwald> write a Reader monad
2021-09-15 10:37:13 +0200Akronymus(~Akronymus@85.31.8.180)
2021-09-15 10:37:18 +0200 <maerwald> functor, applicative and monad instance
2021-09-15 10:37:36 +0200 <arjun> one that passes the environment arround implicitly right?
2021-09-15 10:38:00 +0200 <arjun> i vaguely remember doing that in the past
2021-09-15 10:38:19 +0200 <Akronymus> https://wiki.haskell.org/Zygohistomorphic_prepromorphisms some day I'll understand this one.
2021-09-15 10:38:35 +0200 <maerwald> newtype Reader env a = Reader { runReader :: env -> a }
2021-09-15 10:38:42 +0200 <maerwald> now write the instances
2021-09-15 10:38:56 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-09-15 10:39:17 +0200 <maerwald> or probably rather the transformer version
2021-09-15 10:39:23 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2c24:ccb8:c224:8028)
2021-09-15 10:39:52 +0200 <maerwald> newtype ReaderT env m a = ReaderT { runReaderT :: env -> m a }
2021-09-15 10:40:13 +0200 <arjun> @.@
2021-09-15 10:40:13 +0200 <lambdabot> Maybe you meant: @ .
2021-09-15 10:40:18 +0200 <arjun> bad bot
2021-09-15 10:40:45 +0200 <arjun> maerwald: noted! will do.
2021-09-15 10:40:52 +0200 <arjun> gotta runs for now
2021-09-15 10:40:59 +0200phma_(~phma@host-67-44-208-51.hnremote.net)
2021-09-15 10:41:49 +0200phma(~phma@host-67-44-208-80.hnremote.net) (Ping timeout: 252 seconds)
2021-09-15 10:43:23 +0200 <maerwald> monads are boring
2021-09-15 10:43:32 +0200 <maerwald> but the best features usually are
2021-09-15 10:43:39 +0200 <maerwald> like sum types
2021-09-15 10:43:57 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2c24:ccb8:c224:8028) (Ping timeout: 268 seconds)
2021-09-15 10:44:50 +0200 <tdammers> a lot of things in Haskell are perfectly simple, almost offensively so, they're just difficult to explain, because they're so abstract
2021-09-15 10:45:06 +0200 <maerwald> unless you get into all the type level extensions like DataKinds
2021-09-15 10:45:57 +0200 <Akronymus> tdammers or because people have been poisoned by oop/procedural already
2021-09-15 10:46:09 +0200 <maerwald> they don't have a proper abstract intuition, imo, unless you know why they're so easy to implement in GHC
2021-09-15 10:46:25 +0200hnOsmium0001(uid453710@id-453710.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-09-15 10:46:29 +0200 <maerwald> and at that point, you have a leaky abstraction, no?
2021-09-15 10:47:15 +0200 <arjun> yea, that's kind of what i've been struggling with lately, wait, why is done like this? it should just be function but it's a (fancy type, monad, weird extension stuff)
2021-09-15 10:47:25 +0200 <tdammers> Akronymus: I don't think of procedural as poison; procedural / structured programming is actually a pretty solid basis for practical FP. OOP, and particularly the mainstream incarnations (class-based and "dynamically typed"), however, are pretty bad for the brain, especially when presented as the universal foundation of program design.
2021-09-15 10:47:36 +0200 <Akronymus> Are you talking about "hiding complexity" or about "different way to think about it" abstractions? maerwald
2021-09-15 10:47:47 +0200 <arjun> dang, why do i have to leave when this is just getting good : P
2021-09-15 10:48:04 +0200 <maerwald> Ak
2021-09-15 10:48:16 +0200 <maerwald> Akronymus: I believe that "hiding complexity" has nothing to do with abstraction
2021-09-15 10:48:23 +0200 <maerwald> you can hide complexity with large amounts of CPP
2021-09-15 10:48:32 +0200 <Akronymus> tdammers I have had the experience that when starting from 0, as in no prior knowledge of programming at all, it is easier for them to learn FP than procedural
2021-09-15 10:48:55 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha)
2021-09-15 10:48:58 +0200 <Akronymus> maerwald in school I've been taught that abstractions are exactly for hiding complexity.
2021-09-15 10:49:08 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 10:49:09 +0200 <Akronymus> I did butt heads with that teacher frequently.
2021-09-15 10:49:19 +0200 <tdammers> Akronymus: that might very well be true. The popularity of Excel seems to support this notion.
2021-09-15 10:49:23 +0200arjun(~Srain@user/arjun) ()
2021-09-15 10:49:28 +0200 <maerwald> I'd say it's a possible side effect of abstractions
2021-09-15 10:49:46 +0200 <Akronymus> Yeah that is definitely the case.
2021-09-15 10:50:09 +0200 <Akronymus> Instead of thinking in some unnatural way about certain things, you can abstract it to a different one that makes more sense.
2021-09-15 10:50:11 +0200 <maerwald> But they can introduce complexity as well (e.g. intellectual complexity)
2021-09-15 10:50:18 +0200 <Akronymus> And in the process it becomes easier to reason about.
2021-09-15 10:50:51 +0200 <Akronymus> for example, thinking of a csv as rows of columns is quite natural in the sense of reading data in.
2021-09-15 10:51:19 +0200 <Akronymus> Labelling the data though and converting it to a different format is a abstraction that enables you to think about it in a different way.
2021-09-15 10:51:39 +0200 <maerwald> E.g. the react model is an abstraction, but I believe it's a high-complexity abstraction and most react developers don't fully understand the semantics
2021-09-15 10:51:41 +0200 <Akronymus> So, that instead of accessing row x column y, you access the value of this record.
2021-09-15 10:51:52 +0200 <tdammers> abstraction is about capturing and naming common patterns in complex code, so that we can reason about those patterns in a smaller representation
2021-09-15 10:52:18 +0200 <Akronymus> And such a representation can be as complex, if not more than just the pure csv
2021-09-15 10:52:32 +0200 <Akronymus> Except that it is more natural and thus easier to reason about.
2021-09-15 10:52:42 +0200 <maerwald> I don't even think that the react model is leaky
2021-09-15 10:52:45 +0200pony(~ed@101.100.135.26) (Quit: WeeChat 2.8)
2021-09-15 10:52:55 +0200 <maerwald> Semantics is just complicated
2021-09-15 10:53:13 +0200 <tdammers> I'm inclined to say that when the abstraction is bigger than the things it abstracts over, it no longer qualifies as a proper abstraction
2021-09-15 10:53:27 +0200max22-(~maxime@2a01cb088335980009e300fcb92e8769.ipv6.abo.wanadoo.fr) (Quit: Leaving)
2021-09-15 10:53:32 +0200 <maerwald> "bigger"?
2021-09-15 10:54:01 +0200 <tdammers> yes, bigger. As in, requiring more "space" (in source code, or in the programmer's brain) to represent the same thing
2021-09-15 10:54:13 +0200 <Akronymus> tdammers I'd say a model that relates data to each other is "bigger" than a straight up 2 dimensional array for a csv.
2021-09-15 10:54:30 +0200 <Akronymus> But the model is usually much easier to reason about.
2021-09-15 10:54:30 +0200 <maerwald> tdammers: then you seem to agree with my "intellectual complexity" assessment
2021-09-15 10:54:38 +0200 <maerwald> but that means a lot of abstractions in haskell are non-abstractions
2021-09-15 10:54:51 +0200 <tdammers> like which ones?
2021-09-15 10:55:00 +0200 <maerwald> Transformers
2021-09-15 10:55:13 +0200 <Akronymus> https://www.cs.cornell.edu/courses/cs211/2006sp/Lectures/L08-Abstraction/08_abstraction.html
2021-09-15 10:55:23 +0200 <Akronymus> > The solution to complexity is abstraction, also known as information hiding.
2021-09-15 10:55:24 +0200 <lambdabot> <hint>:1:42: error: parse error on input ‘,’
2021-09-15 10:55:29 +0200 <Akronymus> That is IMO outright wrong
2021-09-15 10:55:30 +0200 <tdammers> Transformers are smaller than spelling out the entire thing
2021-09-15 10:55:32 +0200 <tdammers> usually
2021-09-15 10:55:54 +0200 <maerwald> You have to keep a lot of info in your brain to understand a transformer stack. Usually people follow their intuition on it, which is correct 90% of the time
2021-09-15 10:55:54 +0200 <Akronymus> " Abstraction is simply the removal of unnecessary detail. "
2021-09-15 10:56:00 +0200 <maerwald> the other 10% is "oops"
2021-09-15 10:56:05 +0200__celeste(~celeste@ip98-162-196-252.ok.ok.cox.net) (Ping timeout: 265 seconds)
2021-09-15 10:56:10 +0200 <Akronymus> I fucking hate how programming is taught.
2021-09-15 10:56:17 +0200 <tdammers> teaching programming is hard
2021-09-15 10:56:42 +0200 <jneira[m]> maerwald: And carefully honour the necessary ones ;-)
2021-09-15 10:57:11 +0200 <Akronymus> tdammers part of the reason I am working through HtDP
2021-09-15 10:57:15 +0200 <maerwald> tdammers: or conduit :>
2021-09-15 10:57:18 +0200 <Akronymus> And in the future, sicp
2021-09-15 10:57:25 +0200 <maerwald> I think conduit is really not an abstraction
2021-09-15 10:57:46 +0200 <maerwald> if you keep using it, it'll probably be useful, because you got used to it
2021-09-15 10:57:47 +0200 <tdammers> conduit *contains* some abstractions, but it is more than just that
2021-09-15 10:58:07 +0200 <maerwald> but "useful" is a different concept
2021-09-15 10:58:14 +0200 <maerwald> abstractions aren't always useful
2021-09-15 10:59:01 +0200sedeki(~textual@user/sedeki)
2021-09-15 10:59:26 +0200 <tdammers> true. an abstraction that is itself so complicated that it adds to overall complexity, or introduces too many other problems, isn't worth it
2021-09-15 11:01:03 +0200 <maerwald> this might be a good example of effects systems
2021-09-15 11:01:16 +0200 <maerwald> It's an amazing abstraction
2021-09-15 11:01:20 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-15 11:01:24 +0200 <maerwald> but I think no one yet has been able to make it really useful
2021-09-15 11:01:50 +0200 <maerwald> (all haskell discussions eventually end with "effects systems") :D
2021-09-15 11:03:51 +0200 <earthy> Akronymus: 'we' (as in all devs) do not actually know how to teach programming well. We have some ideas as to what works, and a reasonable set of goals, but the path towards those goals is unclear at best. But see also the work by S. Papert, on Scratch, Hedy, Alice
2021-09-15 11:04:13 +0200 <Akronymus> earthy practice, practice, practice
2021-09-15 11:04:21 +0200 <tdammers> fun fact: 'we' (as in most humans) do not actually know how to teach *anything* well.
2021-09-15 11:04:23 +0200 <Akronymus> Preferably in the real world
2021-09-15 11:04:25 +0200 <maerwald> I think we should learn programming instead of teaching it.
2021-09-15 11:04:30 +0200 <tdammers> ^ ths
2021-09-15 11:04:34 +0200shriekingnoise(~shrieking@186.137.144.80) (Quit: Quit)
2021-09-15 11:04:36 +0200 <Akronymus> Teaching is a really young concept in the first place
2021-09-15 11:04:46 +0200 <tdammers> it's also a bit of a flawed concept
2021-09-15 11:05:02 +0200 <Akronymus> School system is quite flawed.
2021-09-15 11:05:07 +0200 <tdammers> so much
2021-09-15 11:05:08 +0200 <Akronymus> but teaching itself, I find hard.
2021-09-15 11:05:14 +0200 <Akronymus> to believe.
2021-09-15 11:05:58 +0200 <earthy> tdammers: well, there is quite a bit of knowledge as to more helpful and less helpful ways of teaching, and many primary school children do get to a reasonable level of reading and basic calculation
2021-09-15 11:06:05 +0200 <dminuoso> A good teacher is just an autodictacticism assistant.
2021-09-15 11:06:14 +0200 <tdammers> "Teaching" has it backwards - it suggests that the teacher is the driver, the party that determines the pace, the goals, the form, etc., while the student is the subject of the teaching activity. If you think about it for more than a minute, that should seem completely ridiculous.
2021-09-15 11:06:14 +0200 <earthy> dminuoso: yeah. no.
2021-09-15 11:06:39 +0200 <dminuoso> Yeah yes. In the end knowledge can only be learned by yourself, teachers can - at best - guide you on that path.
2021-09-15 11:06:58 +0200 <sedeki> "Learning Haskell is not a spectator sport"
2021-09-15 11:06:58 +0200 <tdammers> That's not to say that teachers can't be incredibly valuable. It's just that the model "I put knowledge into your head" is not how that works
2021-09-15 11:06:59 +0200 <Akronymus> I had it quite easy for a long time in school, so I never learned to learn.
2021-09-15 11:07:15 +0200 <dminuoso> tdammers: Or perhaps you just have a biased interpretation of the word "teacher"
2021-09-15 11:07:17 +0200 <Akronymus> Which caused me to trip and fall flat later on, when I didn't just /get/ it
2021-09-15 11:07:22 +0200 <earthy> dminuoso: that is the 'montessori' method, which actually does have teachers as a required ingredient.
2021-09-15 11:07:28 +0200 <maerwald> 1. you need to figure out how your brains works, so you can 2. apply your brains natural thought process to problems and new ideas
2021-09-15 11:07:34 +0200 <tdammers> Akronymus: same here, though by now, I have realized that I can learn just fine, what I actually have trouble with is conforming to arbitrary external norms and expectations
2021-09-15 11:07:37 +0200 <maerwald> you don't learn that in school
2021-09-15 11:07:45 +0200 <ldlework> I'm worried that after studying and picking up Haskell the last few weeks, that when I start my new TypeScript job in a few days my brain is just going to be completely broken
2021-09-15 11:08:01 +0200 <earthy> ofcourse, we need to distinguish 'teaching' from 'instruction'.
2021-09-15 11:08:07 +0200 <Akronymus> tdammers if I have the why it isn't that hard for me to learn something.
2021-09-15 11:08:09 +0200 <dminuoso> earthy: It's just an observation that the only person that can put new information into my brain is myself.
2021-09-15 11:08:12 +0200 <tdammers> dminuoso: I'm criticizing the word "teaching". "Learning" captures the process much better.
2021-09-15 11:08:17 +0200 <Akronymus> (Why it is useful, why it is like that and such)
2021-09-15 11:08:19 +0200 <maerwald> E.g. I remember monochrom saying he looks at problems/ideas in a "gamification" way... I envy that, because I can't do it.
2021-09-15 11:08:22 +0200 <Akronymus> But rote memorization...
2021-09-15 11:08:22 +0200 <dminuoso> tdammers: I see. Yes, I agree.
2021-09-15 11:08:35 +0200 <Akronymus> I just can't keep such information in my head.
2021-09-15 11:08:38 +0200 <dminuoso> And Im proposing the ideal teacher is just somebody who assists in your learning process.
2021-09-15 11:08:45 +0200 <Akronymus> I personally quite like the method of asking questions to teach.
2021-09-15 11:08:45 +0200 <earthy> dminuoso: but you *won't* if you're not exposed to new information
2021-09-15 11:08:51 +0200 <dminuoso> Music teachers have been doing this for centuries.
2021-09-15 11:08:53 +0200 <ldlework> Akronymus: socratic method
2021-09-15 11:08:56 +0200 <earthy> and you won't be able to if you're exposed to too much new information
2021-09-15 11:08:57 +0200 <Akronymus> Yeah that one
2021-09-15 11:09:01 +0200 <tdammers> Akronymus: rote memorization is something I have had huge problems with for a long time. Two things helped me with that: running and drumming.
2021-09-15 11:09:15 +0200 <Akronymus> tdammers do you have a "minds eye"
2021-09-15 11:09:21 +0200 <tdammers> a what?
2021-09-15 11:09:30 +0200 <Akronymus> Able to visualize images in your head
2021-09-15 11:09:38 +0200sedeki(~textual@user/sedeki) (Quit: Textual IRC Client: www.textualapp.com)
2021-09-15 11:09:44 +0200 <dminuoso> earthy: Sure, but the actual learning process still happens in the students head and practice.
2021-09-15 11:09:54 +0200Guest66(~Guest66@2a02:26f7:c351:8000:0:41c7:95c6:c12d)
2021-09-15 11:09:58 +0200 <earthy> so the role of a good teacher is to expose you to the right amount of information at the appropriate time for you to learn it.
2021-09-15 11:10:11 +0200 <maerwald> To me, learning is all about "navigation". I start to understand something when I figure out how to navigate through the topic. So I need a lot of context.
2021-09-15 11:10:12 +0200 <tdammers> No better than the average person I'd say. My usual mode of thinking isn't very visual though, it's mostly abstract concepts somehow.
2021-09-15 11:10:14 +0200 <dminuoso> For school, the actual learning - if any - happens if the student repeatedly exposes himself to the same knowledge and goes indepth. Something that can only realistically occur at home.
2021-09-15 11:10:15 +0200 <Akronymus> earthy and foster an interest
2021-09-15 11:10:16 +0200 <earthy> and to expose you to those bits that haven't stuck when you need it
2021-09-15 11:10:32 +0200 <Akronymus> tdammers https://en.wikipedia.org/wiki/Aphantasia
2021-09-15 11:10:52 +0200Guest66(~Guest66@2a02:26f7:c351:8000:0:41c7:95c6:c12d) (Client Quit)
2021-09-15 11:11:01 +0200 <Akronymus> Is "counting sheeps" figurative or literal? tdammers
2021-09-15 11:11:08 +0200 <maerwald> It's amazing, learning types def. need more research.
2021-09-15 11:12:18 +0200 <tdammers> maerwald: "learning types" has been largely debunked, and has never been based on experimental evidence. what actually works is multi-modal learning, the key is not to match the student's "learning type", but to maximize their engagement with the material across as many senses as possible, and as actively as possible
2021-09-15 11:13:01 +0200 <tdammers> Akronymus: no, Aphantasia is not it. I *can* visualize things just fine, I'm actually fairly good at spatial insight and such. It's just not my default mode of thinking.
2021-09-15 11:13:13 +0200 <Akronymus> Gotcha.
2021-09-15 11:13:14 +0200 <tdammers> I don't *have* to visualize things in order to think them.
2021-09-15 11:13:24 +0200 <Akronymus> I have pretty decent spatial thinking too.
2021-09-15 11:13:29 +0200 <Akronymus> But I literally can't visualize
2021-09-15 11:13:38 +0200 <earthy> one thing my kids' school does is 'writing dance' which helps the kids translate big movements into shapes and shape into movement. that's definitely multimodal. :)
2021-09-15 11:14:28 +0200 <tdammers> earthy: it is. only downside of that is that it lacks connection to actual uses. apart from artistic expression, there's little practical reason why you would dance a letter
2021-09-15 11:14:42 +0200 <tdammers> but on a more fundamental level, it's great
2021-09-15 11:14:54 +0200 <maerwald> tdammers: IMO, learning types aren't for teaching purposes, but solely for yourself to figure out how to attack a problem and what your shortcomings are
2021-09-15 11:15:03 +0200 <tdammers> in fact, I think the arts are grossly under- and misrepresented in education
2021-09-15 11:15:25 +0200 <maerwald> e.g. when I worked in blockchain, due to my "figure out navigation" approache, I almost burned out very early on
2021-09-15 11:15:36 +0200 <maerwald> because navigating in the topic of blockchain is insanely hard
2021-09-15 11:15:45 +0200 <tdammers> maerwald: ah, OK. "learning types" is generally taken to refer to the theory of learning types, which states that best learning results are achieved by matching the mode of presentation to the learner's preferred mode
2021-09-15 11:16:04 +0200 <Akronymus> tdammers maths should be taught like an art, to a certain extent.
2021-09-15 11:16:10 +0200 <earthy> you mean 'styles', tdammers?
2021-09-15 11:16:40 +0200 <tdammers> ah yes, 'learning styles' is the word
2021-09-15 11:16:52 +0200 <earthy> (visual, kinesthetic, auditory). yeah. that's been quite well debunked.
2021-09-15 11:17:04 +0200 <tdammers> wikipedia roasts them rather savagely
2021-09-15 11:18:03 +0200 <tdammers> "a range of competing and debunked theories", "Studies further show that teachers cannot assess the learning style of their students accurately."
2021-09-15 11:18:26 +0200 <maerwald> for me it's more about "thinking style"
2021-09-15 11:18:45 +0200 <maerwald> and having worked with other coders, I'm aware there are substantial differences
2021-09-15 11:18:59 +0200 <maerwald> and these lead to substantially different code
2021-09-15 11:19:15 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha)
2021-09-15 11:19:18 +0200 <Akronymus> tdammers wikipedia is quite shit for anything that heavily relies on opinions IME
2021-09-15 11:19:28 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 11:19:49 +0200 <tdammers> it is, but 'learning styles' aren't subject to opinion, the topic has been well researched
2021-09-15 11:19:57 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-09-15 11:20:07 +0200 <Akronymus> Yeah I can give you that
2021-09-15 11:23:56 +0200 <maerwald[m]> Too bad monochrom isn't awake :p
2021-09-15 11:24:01 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-15 11:24:09 +0200 <maerwald[m]> Surely he'd roast us now
2021-09-15 11:25:06 +0200 <tdammers> back on the topic of rote memorization, though: once you realize that, just like physical exercise and neuromotoric training, it is an almost mechanical process, it becomes easier
2021-09-15 11:26:25 +0200 <tdammers> simply because that impulse that says if only you understand this better you will remember it automatically does not work here, and realizing this makes that impulse go away, and just doing the bloody thing becomes less daunting
2021-09-15 11:26:40 +0200 <maerwald[m]> I found the only way to extend my thinking style was to work very closely with other coders (pair programming, review sessions, debates )
2021-09-15 11:26:57 +0200 <Akronymus> Some topics simply don't stick despite trying my best, when rote learning
2021-09-15 11:27:06 +0200 <Akronymus> As in daily repetitions.
2021-09-15 11:27:27 +0200 <Akronymus> For example, geography or history.
2021-09-15 11:28:02 +0200 <Akronymus> Literally every single day from when it was introduced in class and until the test where it was relevant.
2021-09-15 11:28:16 +0200 <Akronymus> Still forgot it during the test or soon after.
2021-09-15 11:28:20 +0200 <tdammers> fwiw, the way these subjects are traditionally taught is absolute shit
2021-09-15 11:28:41 +0200 <Akronymus> Yeah, why is it important to know the exact date of it?
2021-09-15 11:28:50 +0200 <Akronymus> Instead of knowing WHY it happened.
2021-09-15 11:28:58 +0200 <Akronymus> What was the motivation for x doing y
2021-09-15 11:28:58 +0200qbt(~edun@user/edun)
2021-09-15 11:29:03 +0200 <tdammers> indeed. and the stuff that *actually* matters is conveniently left out, because it is, frankly, a bit awkward
2021-09-15 11:29:06 +0200 <Akronymus> How was the culture at the time and location
2021-09-15 11:29:19 +0200max22-(~maxime@2a01cb088335980025f007adc3069cd5.ipv6.abo.wanadoo.fr)
2021-09-15 11:29:30 +0200 <Akronymus> For example, why is it important to know when hitler was elected?
2021-09-15 11:29:30 +0200 <tdammers> I also find it quite strange how commonplace Great Man Theory thinking still is
2021-09-15 11:29:50 +0200 <Akronymus> Where it is much more important to know why he was.
2021-09-15 11:30:43 +0200 <tdammers> I mean, yeah, Hitler certainly was an important figure, but I daresay Europe would have caused a worldwide carnage one way or another, with Hitler or without. He was a spark that ignited things, but the gunpowder had been in place for a long time.
2021-09-15 11:31:01 +0200 <Akronymus> Hitler was a product of the times.
2021-09-15 11:31:13 +0200 <Akronymus> If it wasn't him it'd have been someone else
2021-09-15 11:31:33 +0200 <tdammers> Yes. Maybe not in this exact form, but shit would have hit the fan big time either way.
2021-09-15 11:31:34 +0200 <Akronymus> Hitler partially got elected because of promising to fix the economy
2021-09-15 11:31:59 +0200 <Akronymus> The economy was broken in a large part because of the extreme reparations from ww1.
2021-09-15 11:32:12 +0200 <Akronymus> Along with having to give a LOT of industry over to france
2021-09-15 11:33:08 +0200 <Akronymus> Also: Fascism was quite attractive because the communists were literally on the street beating people up
2021-09-15 11:33:14 +0200 <Akronymus> Or well, fascists.
2021-09-15 11:33:24 +0200 <Akronymus> There are MANY causes.
2021-09-15 11:33:29 +0200 <Akronymus> All interwoven.
2021-09-15 11:34:12 +0200 <Akronymus> But what do we learn: on the 19th august 1934 got elected president
2021-09-15 11:34:24 +0200 <tdammers> There's even more; German culture at the time already had a long history of being caught between rationality and romanticism, between radical futurism and radical conservatism. It's a cultural theme that can be traced back into the Middle Ages.
2021-09-15 11:34:35 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha)
2021-09-15 11:34:52 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 11:35:40 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-09-15 11:36:09 +0200 <tdammers> And that, in turn, is a consequence of how the Roman Empire and the Germanic peoples interacted throughout antiquity, and *that* in turn is a product of the collapse of the mediterranean Bronze Age economy leaving a gap that the Romans jumped into, and all that, in turn, is part of the bigger picture of humans discovering agriculture and starting to improve it.
2021-09-15 11:36:55 +0200 <tdammers> But they don't tell you about those big pictures, they don't tell you about the interesting transitions; they zoom in on the boring stable periods in between, and on the events for which plenty of sources exist, because that's so easy.
2021-09-15 11:37:01 +0200 <Akronymus> While you don't have to go that deep into why's, it is certainly easier to learn than just having dates and such
2021-09-15 11:37:27 +0200 <tdammers> It also makes a lot more sense
2021-09-15 11:37:39 +0200gentauro(~gentauro@user/gentauro) (Ping timeout: 265 seconds)
2021-09-15 11:37:40 +0200 <Akronymus> But it takes a LOT more effort.
2021-09-15 11:39:31 +0200 <tdammers> Like, why did WWI happen at the time it did? Well, because at the time, industrialization had been going on for a while, and the old feudal system, which had worked so well throughout the agricultural age, was showing its inadequacy, and that caused all sorts of friction - aristocrats trying to maintain the status quo despite no longer being as necessary as they were, workers becoming an important
2021-09-15 11:39:33 +0200 <tdammers> demographic, industrial capitalists and merchants holding economic power, etc.
2021-09-15 11:39:49 +0200 <tdammers> All this happened not because someone somewhere said something or declared war on someone
2021-09-15 11:40:09 +0200 <tdammers> it happened because the world had changed due to new technology being invented
2021-09-15 11:40:16 +0200 <Akronymus> Also there was a quite intricate web of alliances and defensive pacts.
2021-09-15 11:40:24 +0200 <Akronymus> That caused a domino effect.
2021-09-15 11:40:53 +0200 <Akronymus> So, instead of many local conflicts, it snowballed into the great war, or as we know it, ww1
2021-09-15 11:41:01 +0200 <tdammers> sure, yes. but that's details on the larger backdrop of the old system falling apart, creating a power vacuum, and various forces struggling to chomp up a part of it
2021-09-15 11:41:49 +0200 <Akronymus> I meant it more in the sense, that the alliances are what makes us refer to it as ww1 rather than as many smaller things now.
2021-09-15 11:41:51 +0200 <tdammers> there's also the part where WWI coincides with a peculiar moment in military tech: a massive increase in firepower and range, but no comparable increase in mobility
2021-09-15 11:42:50 +0200 <Akronymus> And tactics lagged behind quite badly.
2021-09-15 11:42:58 +0200 <Akronymus> Or strategy.
2021-09-15 11:43:07 +0200 <Akronymus> Keep confusing the two
2021-09-15 11:43:29 +0200 <tdammers> so now you have belligerents who, unlike in earlier conflicts, have no problem defending their positions, but advancing is near impossible because the other side also has strong defenses, and so what happens is you have two armies rushing towards each other, and the moment they meet, the front line solidifies and everyone just keeps shelling each other until one side runs out of men or ammunition
2021-09-15 11:44:09 +0200 <Akronymus> Or they literally are too sick to continue on
2021-09-15 11:44:24 +0200 <Akronymus> Because hygiene wasn't very good.
2021-09-15 11:45:04 +0200 <tdammers> yeah, same thing - it doesn't matter whether you kill or cripple the opponent, or just make them too sick to fight. In fact, sick is better, because a sick man needs to be nursed, which binds additional personnel long-term, whereas a dead man can be buried in an hour
2021-09-15 11:45:21 +0200 <tdammers> hmm, also I just realized this isn't #-offtopic, lol
2021-09-15 11:45:26 +0200 <Akronymus> Oh.
2021-09-15 11:45:36 +0200 <Akronymus> #haskell-offtopic ,right?
2021-09-15 11:48:57 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-15 11:49:28 +0200gentauro(~gentauro@user/gentauro)
2021-09-15 11:50:09 +0200infinity0(~infinity0@occupy.ecodis.net) (Ping timeout: 268 seconds)
2021-09-15 11:50:20 +0200Drezil(~drezilkif@2001:470:69fc:105::7f8)
2021-09-15 11:51:41 +0200Drezil(~drezilkif@2001:470:69fc:105::7f8) (Client Quit)
2021-09-15 11:51:53 +0200Drezil(~drezilkif@2001:470:69fc:105::7f8)
2021-09-15 11:54:03 +0200infinity0(~infinity0@occupy.ecodis.net)
2021-09-15 11:55:09 +0200Drezil(~drezilkif@2001:470:69fc:105::7f8) ()
2021-09-15 11:59:58 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha)
2021-09-15 12:00:11 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 12:02:17 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-15 12:04:51 +0200mousey(~sky@gateway/tor-sasl/mousey) (Ping timeout: 276 seconds)
2021-09-15 12:09:21 +0200__celeste(~celeste@2600:8803:9403:b600::b6f)
2021-09-15 12:09:51 +0200keltono(~kelton@x-160-94-179-178.acm.umn.edu) (Ping timeout: 250 seconds)
2021-09-15 12:10:58 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-15 12:12:28 +0200keltono(~kelton@x-160-94-179-178.acm.umn.edu)
2021-09-15 12:18:31 +0200azeem(~azeem@emp-91-123.eduroam.uu.se) (Ping timeout: 268 seconds)
2021-09-15 12:20:04 +0200azeem(~azeem@emp-91-123.eduroam.uu.se)
2021-09-15 12:23:55 +0200JeHugawa(~jehugawa@2a01:4f9:c010:4649::1) (WeeChat 3.0)
2021-09-15 12:28:34 +0200biberu(~biberu@user/biberu) (Read error: Connection reset by peer)
2021-09-15 12:29:03 +0200notzmv(~zmv@user/notzmv)
2021-09-15 12:37:06 +0200biberu(~biberu@user/biberu)
2021-09-15 12:39:15 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-09-15 12:44:25 +0200peutri(~peutri@ns317027.ip-94-23-46.eu) (Ping timeout: 252 seconds)
2021-09-15 12:45:13 +0200peutri(~peutri@ns317027.ip-94-23-46.eu)
2021-09-15 12:48:01 +0200gehmehgeh(~user@user/gehmehgeh)
2021-09-15 12:50:28 +0200dunj3(~dunj3@2001:16b8:305a:a200:87e0:bcb5:daf8:ae0a)
2021-09-15 12:56:38 +0200vysn(~vysn@user/vysn) (Quit: WeeChat 3.2)
2021-09-15 12:56:56 +0200vysn(~vysn@user/vysn)
2021-09-15 13:00:57 +0200alx741(~alx741@181.196.68.49)
2021-09-15 13:04:42 +0200hendursaga(~weechat@user/hendursaga)
2021-09-15 13:06:58 +0200azeem(~azeem@emp-91-123.eduroam.uu.se) (Ping timeout: 252 seconds)
2021-09-15 13:09:47 +0200phma_phma
2021-09-15 13:09:52 +0200azeem(~azeem@emp-91-123.eduroam.uu.se)
2021-09-15 13:09:57 +0200Everything(~Everythin@37.115.210.35)
2021-09-15 13:23:17 +0200mc47(~mc47@xmonad/TheMC47)
2021-09-15 13:33:28 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-15 13:33:28 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-09-15 13:35:36 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-09-15 13:41:50 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2c24:ccb8:c224:8028)
2021-09-15 13:41:50 +0200Vajb(~Vajb@n1fdw1j4uyo9saqj8-2.v6.elisa-mobile.fi) (Read error: Connection reset by peer)
2021-09-15 13:42:11 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-09-15 13:46:04 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:2c24:ccb8:c224:8028) (Ping timeout: 252 seconds)
2021-09-15 13:46:52 +0200__celeste(~celeste@2600:8803:9403:b600::b6f) (Quit: farewell)
2021-09-15 13:49:15 +0200xlei(akans@pool-68-129-84-118.nycmny.fios.verizon.net)
2021-09-15 13:54:40 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-09-15 13:58:37 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2021-09-15 14:02:38 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-09-15 14:05:16 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.2.1)
2021-09-15 14:05:34 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-09-15 14:06:13 +0200max22-(~maxime@2a01cb088335980025f007adc3069cd5.ipv6.abo.wanadoo.fr) (Ping timeout: 268 seconds)
2021-09-15 14:08:59 +0200burnsidesLlama(~burnsides@dhcp168-024.wadham.ox.ac.uk)
2021-09-15 14:10:45 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 268 seconds)
2021-09-15 14:12:53 +0200 <Gurkenglas> Is it dependent types when you can have an if condition that depends on the dependent type variable or when you can't or both?
2021-09-15 14:13:21 +0200acidjnk_new(~acidjnk@p5487d0ba.dip0.t-ipconnect.de)
2021-09-15 14:15:47 +0200 <hpc> with dependent types you can write things like
2021-09-15 14:16:00 +0200 <hpc> f :: (b :: Bool) -> if b then String else Int
2021-09-15 14:16:05 +0200 <hpc> f False = "false"
2021-09-15 14:16:06 +0200 <hpc> f True = 1
2021-09-15 14:16:25 +0200acidjnk(~acidjnk@p200300d0c720300449bf8ace8b93cd9d.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2021-09-15 14:16:42 +0200 <Gurkenglas> can that be done without carrying them around at runtime?
2021-09-15 14:16:52 +0200ub(~Thunderbi@178.165.181.26.wireless.dyn.drei.com)
2021-09-15 14:17:13 +0200 <Gurkenglas> oh wait i misread
2021-09-15 14:17:16 +0200 <dminuoso> In this limited form, sure. It's a type checking problem.
2021-09-15 14:17:39 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-15 14:18:00 +0200 <Gurkenglas> okay so dependent types is just what i took for granted, that * is more than just what's generated by (->) and (,) and (|).
2021-09-15 14:18:33 +0200 <dminuoso> One description I liked is the lambda cube.
2021-09-15 14:19:27 +0200 <dminuoso> Types binding types gives type functions, terms binding types gives polymorphism, types binding terms gives dependent types.
2021-09-15 14:20:00 +0200ubert(~Thunderbi@178.165.181.26.wireless.dyn.drei.com) (Ping timeout: 268 seconds)
2021-09-15 14:20:00 +0200ububert
2021-09-15 14:23:51 +0200hyiltiz(~quassel@31.220.5.250)
2021-09-15 14:25:43 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2021-09-15 14:26:43 +0200TranquilEcho(~grom@user/tranquilecho)
2021-09-15 14:35:08 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-09-15 14:35:36 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2021-09-15 14:35:59 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-09-15 14:40:56 +0200burnsidesLlama(~burnsides@dhcp168-024.wadham.ox.ac.uk) (Remote host closed the connection)
2021-09-15 14:41:30 +0200acidjnk_new(~acidjnk@p5487d0ba.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2021-09-15 14:41:41 +0200benin036932301(~benin@183.82.24.197) (Quit: The Lounge - https://thelounge.chat)
2021-09-15 14:44:33 +0200jstolarek(~jstolarek@ers4.neoplus.adsl.tpnet.pl) (Quit: leaving)
2021-09-15 14:44:51 +0200jstolarek(~jstolarek@ers4.neoplus.adsl.tpnet.pl)
2021-09-15 14:45:00 +0200pbrisbin(~patrick@pool-173-49-147-250.phlapa.fios.verizon.net)
2021-09-15 14:45:18 +0200jstolarek(~jstolarek@ers4.neoplus.adsl.tpnet.pl) (Client Quit)
2021-09-15 14:45:34 +0200jstolarek(~jstolarek@ers4.neoplus.adsl.tpnet.pl)
2021-09-15 14:45:46 +0200jstolarek(~jstolarek@ers4.neoplus.adsl.tpnet.pl) (Client Quit)
2021-09-15 14:45:54 +0200jstolarek(~jstolarek@ers4.neoplus.adsl.tpnet.pl)
2021-09-15 14:45:59 +0200jstolarek(~jstolarek@ers4.neoplus.adsl.tpnet.pl) (Client Quit)
2021-09-15 14:46:14 +0200jstolarek(~jstolarek@ers4.neoplus.adsl.tpnet.pl)
2021-09-15 14:46:40 +0200jstolarek(~jstolarek@ers4.neoplus.adsl.tpnet.pl) (Client Quit)
2021-09-15 14:46:48 +0200jstolarek(~jstolarek@ers4.neoplus.adsl.tpnet.pl)
2021-09-15 14:46:52 +0200jstolarek(~jstolarek@ers4.neoplus.adsl.tpnet.pl) (Client Quit)
2021-09-15 14:47:00 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-09-15 14:47:09 +0200jstolarek(~jstolarek@ers4.neoplus.adsl.tpnet.pl)
2021-09-15 14:47:27 +0200jstolarek(~jstolarek@ers4.neoplus.adsl.tpnet.pl) (Client Quit)
2021-09-15 14:47:37 +0200 <yin[m]> what is tha state od dependent types in haskell at the noment?
2021-09-15 14:47:37 +0200jstolarek(~jstolarek@ers4.neoplus.adsl.tpnet.pl)
2021-09-15 14:48:11 +0200 <yin[m]> s/od/of/
2021-09-15 14:48:42 +0200pbrisbin(~patrick@pool-173-49-147-250.phlapa.fios.verizon.net) (Client Quit)
2021-09-15 14:49:57 +0200pbrisbin(~patrick@pool-173-49-147-250.phlapa.fios.verizon.net)
2021-09-15 14:50:18 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha)
2021-09-15 14:50:31 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 14:52:39 +0200Guest|98(~Guest|98@91.226.35.204)
2021-09-15 14:52:47 +0200Guest|98(~Guest|98@91.226.35.204) (Client Quit)
2021-09-15 14:53:19 +0200 <yin[m]> oh cool. editing a comment in matrix translates to substitutions. cool cool
2021-09-15 14:53:41 +0200 <yin[m]> s/cool/so/
2021-09-15 14:53:58 +0200 <sshine> ha, nice
2021-09-15 14:54:12 +0200 <yin[m]> s/oh cool. editing a comment in matrix translates to substitutions. cool cool/oh cool. editing a comment in matrix translates to substitutions/
2021-09-15 14:54:16 +0200turlando(~turlando@user/turlando) (Ping timeout: 252 seconds)
2021-09-15 14:54:22 +0200 <sshine> I'm tempted to like Matrix. sadly, I really like irssi.
2021-09-15 14:54:27 +0200 <yin[m]> imperfect, but works
2021-09-15 14:54:31 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
2021-09-15 14:54:50 +0200 <sshine> well... I think being able to copy-paste pictures and have them convert to a URL for those who use IRC is *neat*.
2021-09-15 14:55:10 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com)
2021-09-15 14:55:28 +0200 <sshine> I also don't really experience Matrix users garble out by accident (I've heard that it can sometimes accidentally send markup language to IRC.)
2021-09-15 14:55:38 +0200 <sshine> sorry, this was offtopic.
2021-09-15 14:55:55 +0200 <sshine> https://www.tweag.io/blog/2021-02-05-refinement-types/ is a somewhat recent status update on the progress of dependent types, but not an actual one.
2021-09-15 14:56:24 +0200 <yin[m]> thanks!
2021-09-15 14:56:46 +0200turlando(~turlando@93-42-250-112.ip89.fastwebnet.it)
2021-09-15 14:56:46 +0200turlando(~turlando@93-42-250-112.ip89.fastwebnet.it) (Changing host)
2021-09-15 14:56:46 +0200turlando(~turlando@user/turlando)
2021-09-15 14:56:47 +0200 <sshine> yin[m], I'd look for a blog post by tweag, richard eisenberg og vladislav zavialov (int-index).
2021-09-15 14:56:53 +0200 <sshine> s/og/or/
2021-09-15 14:57:08 +0200 <sshine> oops, I'm guessing it corrected the wrong 'og' :)
2021-09-15 14:57:50 +0200 <sshine> yin[m], https://www.reddit.com/r/haskell/comments/pabk7o/dependent_haskell_with_vladislav_zavialov/ is 23 days old
2021-09-15 14:58:08 +0200 <sshine> yin[m], it's a Haskell Weekly interview.
2021-09-15 14:58:22 +0200 <sshine> yin[m], https://haskellweekly.news/episode/51.html
2021-09-15 14:58:29 +0200shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net)
2021-09-15 14:59:42 +0200jokleinn(~jokleinn@user/jokleinn)
2021-09-15 14:59:56 +0200 <raehik> How can I get the size of a pointer in C, in Haskell?
2021-09-15 15:00:10 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 265 seconds)
2021-09-15 15:00:34 +0200 <raehik> I'm currently doing #{size TYPE *} and using hsc2hs, but I wonder if I don't need that
2021-09-15 15:02:00 +0200 <Akronymus> matrix is pretty cool.
2021-09-15 15:02:53 +0200hyiltiz(~quassel@31.220.5.250)
2021-09-15 15:03:55 +0200lbseale(~lbseale@user/ep1ctetus)
2021-09-15 15:04:29 +0200 <Akronymus> Joining a room takes a while to show up on the matrix side though.
2021-09-15 15:04:52 +0200akronymus[m](~akronymus@2001:470:69fc:105::f7be)
2021-09-15 15:05:01 +0200 <sshine> Akronymus, takes a while for whom?
2021-09-15 15:05:13 +0200 <Akronymus> For me
2021-09-15 15:05:20 +0200 <sshine> Akronymus, there's a delay on joining, as in they queue those operations?
2021-09-15 15:05:27 +0200 <Akronymus> Probably because I am not on the matrix.org homeserver
2021-09-15 15:05:35 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:c883:fb5e:dc95:e39d)
2021-09-15 15:05:38 +0200 <Akronymus> But rather a private one.
2021-09-15 15:05:49 +0200awpr(uid446117@id-446117.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2021-09-15 15:05:55 +0200 <sshine> and it syncs with matrix.org and that comes in waves?
2021-09-15 15:06:09 +0200 <Akronymus> Naw, just takes a while.
2021-09-15 15:06:20 +0200 <Akronymus> Probably syncinc state.
2021-09-15 15:06:58 +0200 <Akronymus> And technically, joining IRC rooms on libera doesn't even need to talk to matrix.org itself
2021-09-15 15:08:35 +0200 <zzz> i wonder if this works
2021-09-15 15:08:41 +0200 <zzz> s/wonder/test
2021-09-15 15:08:55 +0200 <zzz> it does not
2021-09-15 15:09:10 +0200 <zzz> s/wonder/test/
2021-09-15 15:09:25 +0200 <zzz> i wonder if this works
2021-09-15 15:09:27 +0200 <zzz> s/wonder/test/
2021-09-15 15:09:39 +0200System123(~System123@x590feea0.dyn.telefonica.de)
2021-09-15 15:09:58 +0200 <zzz> nope
2021-09-15 15:09:58 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:c883:fb5e:dc95:e39d) (Ping timeout: 260 seconds)
2021-09-15 15:10:14 +0200 <Akronymus> No sedbot here. :(
2021-09-15 15:10:31 +0200 <xsperry> raehik: sizeOf nullPtr
2021-09-15 15:11:09 +0200 <zzz> i was testing to see if matrix would turn substitutiona into edits
2021-09-15 15:11:38 +0200 <zzz> s/substitutiona/substitutions
2021-09-15 15:11:45 +0200 <zzz> and it doesnt
2021-09-15 15:12:02 +0200 <geekosaur> IRC generally doesn't
2021-09-15 15:12:33 +0200 <zzz> it just turns edits into (imperfect) subs
2021-09-15 15:14:19 +0200 <[exa]> is there some good authoritative guide on how to setup cabal tests in some reasonable way for new projects? something I could show to students and hope they don't mess it up too much
2021-09-15 15:14:40 +0200MQ-17J(~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Ping timeout: 268 seconds)
2021-09-15 15:15:16 +0200burnsidesLlama(~burnsides@dhcp168-024.wadham.ox.ac.uk)
2021-09-15 15:16:36 +0200 <raehik> xsperry: perfect that's what I was looking for, many thanks!
2021-09-15 15:17:36 +0200ubert(~Thunderbi@178.165.181.26.wireless.dyn.drei.com) (Read error: Connection reset by peer)
2021-09-15 15:17:55 +0200ubert(~Thunderbi@178.165.181.26.wireless.dyn.drei.com)
2021-09-15 15:18:04 +0200slowButPresent(~slowButPr@user/slowbutpresent)
2021-09-15 15:18:32 +0200ubert1(~Thunderbi@178.165.181.26.wireless.dyn.drei.com)
2021-09-15 15:19:05 +0200 <xsperry> np!
2021-09-15 15:19:08 +0200MQ-17J(~MQ-17J@2607:fb90:4c:3555:c992:1c4a:cf9e:7fd6)
2021-09-15 15:19:15 +0200 <dminuoso> raehik: Fun fact, on some exotic architectures the pointer size might depend on the pointed-at type.
2021-09-15 15:19:32 +0200 <dminuoso> Specifically I recall a TI DSP that did this
2021-09-15 15:19:48 +0200 <dminuoso> It was some weird 17 bits for function pointers I think
2021-09-15 15:19:50 +0200 <raehik> dminuoso: hahaha oh lord. I was reading a bit about func ptrs being potentially troublesome, but figured it was better than hardcoding 8
2021-09-15 15:19:59 +0200burnsidesLlama(~burnsides@dhcp168-024.wadham.ox.ac.uk) (Ping timeout: 265 seconds)
2021-09-15 15:21:27 +0200 <raehik> there's a `nullFunPtr :: FunPtr a` too in Foreign.Ptr, wonder if GHC's internals support it
2021-09-15 15:22:34 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:fcfd:5153:b61b:fe3d)
2021-09-15 15:22:35 +0200ubert(~Thunderbi@178.165.181.26.wireless.dyn.drei.com) (Ping timeout: 260 seconds)
2021-09-15 15:22:36 +0200ubert1ubert
2021-09-15 15:23:46 +0200jumper149(~jumper149@80.240.31.34)
2021-09-15 15:25:38 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha)
2021-09-15 15:25:51 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 15:26:09 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Client Quit)
2021-09-15 15:26:22 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 15:27:16 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:fcfd:5153:b61b:fe3d) (Ping timeout: 252 seconds)
2021-09-15 15:28:22 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-15 15:31:29 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha)
2021-09-15 15:31:42 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 15:35:38 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 268 seconds)
2021-09-15 15:38:56 +0200arkanoid(~arkanoid@2-238-151-49.ip244.fastwebnet.it) (Ping timeout: 268 seconds)
2021-09-15 15:41:31 +0200hyiltiz(~quassel@31.220.5.250)
2021-09-15 15:41:38 +0200arkanoid(~arkanoid@2-238-151-49.ip244.fastwebnet.it)
2021-09-15 15:49:39 +0200thyriaen(~thyriaen@dynamic-078-054-146-050.78.54.pool.telefonica.de)
2021-09-15 15:50:20 +0200burnsidesLlama(~burnsides@dhcp168-024.wadham.ox.ac.uk)
2021-09-15 15:51:49 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha)
2021-09-15 15:52:02 +0200vaucouleur(~vaucouleu@176.124.42.130)
2021-09-15 15:52:06 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 15:52:10 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Client Quit)
2021-09-15 15:52:31 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 15:52:34 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Client Quit)
2021-09-15 15:52:47 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 15:54:43 +0200vaucouleur(~vaucouleu@176.124.42.130) (Client Quit)
2021-09-15 15:54:47 +0200vaucouleur_(~vaucouleu@176.124.42.130)
2021-09-15 15:54:54 +0200vaucouleur_(~vaucouleu@176.124.42.130) (Remote host closed the connection)
2021-09-15 15:55:08 +0200vaucouleur(~vaucouleu@176.124.42.130)
2021-09-15 15:55:12 +0200vaucouleur_(~vaucouleu@176.124.42.130)
2021-09-15 15:55:23 +0200vaucouleur_(~vaucouleu@176.124.42.130) (Remote host closed the connection)
2021-09-15 15:55:23 +0200vaucouleur(~vaucouleu@176.124.42.130) (Remote host closed the connection)
2021-09-15 15:55:37 +0200vaucouleur(~vaucouleu@176.124.42.130)
2021-09-15 15:55:40 +0200burnsidesLlama(~burnsides@dhcp168-024.wadham.ox.ac.uk) (Ping timeout: 240 seconds)
2021-09-15 16:01:16 +0200 <jumper149> Hi, is there something like `traverse` for `Divisible f` (instead of `Applicative f`)?
2021-09-15 16:01:37 +0200 <jumper149> I just stumbled over `Divisible`, so I'm not even sure if the question makes sense though^^
2021-09-15 16:01:56 +0200ubert1(~Thunderbi@178.165.161.81.wireless.dyn.drei.com)
2021-09-15 16:02:40 +0200mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
2021-09-15 16:03:02 +0200max22-(~maxime@2a01cb0883359800e3a3878268dcbc1e.ipv6.abo.wanadoo.fr)
2021-09-15 16:03:31 +0200ubert(~Thunderbi@178.165.181.26.wireless.dyn.drei.com) (Ping timeout: 252 seconds)
2021-09-15 16:03:31 +0200ubert1ubert
2021-09-15 16:04:12 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-15 16:04:22 +0200Sgeo(~Sgeo@user/sgeo)
2021-09-15 16:10:59 +0200ubert(~Thunderbi@178.165.161.81.wireless.dyn.drei.com) (Remote host closed the connection)
2021-09-15 16:11:37 +0200ubert(~Thunderbi@178.165.161.81.wireless.dyn.drei.com)
2021-09-15 16:12:15 +0200shriekingnoise(~shrieking@186.137.144.80)
2021-09-15 16:12:52 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha)
2021-09-15 16:13:13 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 16:13:26 +0200hnOsmium0001(uid453710@id-453710.hampstead.irccloud.com)
2021-09-15 16:13:49 +0200System123(~System123@x590feea0.dyn.telefonica.de) (Remote host closed the connection)
2021-09-15 16:14:09 +0200Akronymus(~Akronymus@85.31.8.180) (Quit: Client closed)
2021-09-15 16:15:34 +0200doyougnu(~user@c-73-25-202-122.hsd1.or.comcast.net)
2021-09-15 16:17:36 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2021-09-15 16:19:38 +0200ub(~Thunderbi@178.165.161.81.wireless.dyn.drei.com)
2021-09-15 16:21:14 +0200dunj3(~dunj3@2001:16b8:305a:a200:87e0:bcb5:daf8:ae0a) (Remote host closed the connection)
2021-09-15 16:21:40 +0200tdammers(~tdammers@77.109.72.213.res.static.edpnet.net) (Ping timeout: 240 seconds)
2021-09-15 16:24:46 +0200tdammers(~tdammers@77.109.72.213.res.static.edpnet.net)
2021-09-15 16:26:13 +0200ubert(~Thunderbi@178.165.161.81.wireless.dyn.drei.com) (Read error: Connection reset by peer)
2021-09-15 16:26:13 +0200ububert
2021-09-15 16:26:27 +0200ubert1(~Thunderbi@178.165.161.81.wireless.dyn.drei.com)
2021-09-15 16:27:51 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-09-15 16:27:52 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-09-15 16:27:52 +0200wroathe(~wroathe@user/wroathe)
2021-09-15 16:30:28 +0200ubert(~Thunderbi@178.165.161.81.wireless.dyn.drei.com) (Ping timeout: 252 seconds)
2021-09-15 16:30:28 +0200ubert1ubert
2021-09-15 16:33:19 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha)
2021-09-15 16:33:33 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 16:35:25 +0200tdammers(~tdammers@77.109.72.213.res.static.edpnet.net) (Ping timeout: 252 seconds)
2021-09-15 16:36:41 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-09-15 16:37:34 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.2.1)
2021-09-15 16:37:50 +0200Erutuon(~Erutuon@user/erutuon)
2021-09-15 16:38:05 +0200phma(~phma@host-67-44-208-51.hnremote.net) (Read error: Connection reset by peer)
2021-09-15 16:38:44 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha)
2021-09-15 16:39:03 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 16:39:25 +0200phma(~phma@host-67-44-208-97.hnremote.net)
2021-09-15 16:39:38 +0200myShoggoth(~myShoggot@97-120-70-214.ptld.qwest.net)
2021-09-15 16:44:20 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Read error: Connection reset by peer)
2021-09-15 16:46:20 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 16:46:39 +0200timCF(~timCF@m91-129-108-244.cust.tele2.ee)
2021-09-15 16:50:10 +0200kenran(~kenran@b2b-37-24-119-190.unitymedia.biz) (Quit: WeeChat info:version)
2021-09-15 16:53:30 +0200 <timCF> Hi! I have a stange issue with GHC-8.6.5. Maybe it's related only to stack build tool, I don't know. For some reason `stack build` ignores redundant `data` and `newtype` definitions in some file, for example this definition is clearly redundant
2021-09-15 16:53:34 +0200 <timCF> https://github.com/tkachuk-labs/bitfinex-client/blob/442ce95ca17ae35c4e64224f737945f40d8aaf29/src/…
2021-09-15 16:54:10 +0200lbseale(~lbseale@user/ep1ctetus) (Remote host closed the connection)
2021-09-15 16:54:34 +0200 <timCF> I have couple of default ghc options and extensions in my project, but I can't see how they can force stack to ignore these warnings
2021-09-15 16:54:36 +0200lbseale(~lbseale@user/ep1ctetus)
2021-09-15 16:55:11 +0200 <timCF> https://github.com/tkachuk-labs/bitfinex-client/blob/442ce95ca17ae35c4e64224f737945f40d8aaf29/pack…
2021-09-15 16:59:07 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha)
2021-09-15 16:59:15 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 17:00:48 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2021-09-15 17:02:51 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-09-15 17:03:36 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Client Quit)
2021-09-15 17:09:21 +0200chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2021-09-15 17:12:04 +0200 <timCF> Did anybody had similar issues? Seems like `deriving` expression supresses `-Wunused-top-binds` GHC warnings. For example with `data Foo = Foo` GHC produces warning, but `data Foo = Foo deriving (Eq)` compiles without any warnings even in case where `Foo` is not used or exported from the module.
2021-09-15 17:12:07 +0200jstolarek(~jstolarek@ers4.neoplus.adsl.tpnet.pl) (Ping timeout: 265 seconds)
2021-09-15 17:12:31 +0200chexum(~quassel@gateway/tor-sasl/chexum)
2021-09-15 17:13:56 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 17:17:03 +0200 <geekosaur> that's because the deriving expression means it is used
2021-09-15 17:18:14 +0200 <geekosaur> and it can't tell for certain that it's not because it would have to check every use of (==) or (/=) — some of which might involve dictionary passing, meaning it doesn't know for certain until runtime
2021-09-15 17:18:40 +0200TranquilEcho(~grom@user/tranquilecho) (Ping timeout: 240 seconds)
2021-09-15 17:19:16 +0200tdammers(~tdammers@77.109.72.213.res.static.edpnet.net)
2021-09-15 17:19:35 +0200TranquilEcho(~grom@user/tranquilecho)
2021-09-15 17:20:20 +0200 <timCF> geekosaur: hmm I'm not sure I understand, because none of Foo type or constructor is exported. Probably GHC consider it's used because instances are always implicitly exported?
2021-09-15 17:20:35 +0200 <geekosaur> yes
2021-09-15 17:20:50 +0200mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Quit: mikoto-chan)
2021-09-15 17:21:40 +0200 <geekosaur> and there are ways it might handle this better but they'd make compilation even slower than it currently is
2021-09-15 17:22:39 +0200 <timCF> geekosaur: ah, I see, thanks! So there is no any simple way to "fix" this, I guess all sorts of standalone deriving will not help either. Maybe orphan-style deriving in different module might help, but it's not the best practice anyway
2021-09-15 17:25:20 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:fcfd:5153:b61b:fe3d)
2021-09-15 17:27:33 +0200juhp(~juhp@128.106.188.220) (Quit: juhp)
2021-09-15 17:27:47 +0200juhp(~juhp@128.106.188.220)
2021-09-15 17:29:37 +0200vaucouleur_(~vaucouleu@176.124.42.130)
2021-09-15 17:33:25 +0200vaucouleur(~vaucouleu@176.124.42.130) (Ping timeout: 268 seconds)
2021-09-15 17:37:04 +0200Guest6824(~Guest68@117.223.62.136)
2021-09-15 17:38:26 +0200 <Guest6824> I have question about how haskell parses an expression. Function application has precedence 10 while . has precedence 9. Then how is f . g is parsed as a composition rather than applying . to f?
2021-09-15 17:38:52 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:fcfd:5153:b61b:fe3d) (Remote host closed the connection)
2021-09-15 17:38:55 +0200 <dminuoso> Guest6824: (.) is applied to f.
2021-09-15 17:39:09 +0200 <dminuoso> the composition is not in the syntax or semantics, but merely in the definition of (.)
2021-09-15 17:39:13 +0200 <dminuoso> @src (.)
2021-09-15 17:39:13 +0200 <lambdabot> (f . g) x = f (g x)
2021-09-15 17:39:38 +0200 <dminuoso> Somewhere in base you can find that definition. So it's merely the semantics of that definition that let us call (.) compositoin
2021-09-15 17:40:05 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-15 17:40:38 +0200 <Guest6824> yes, but (.) has less precedence than applying . to f (which has precedence 10
2021-09-15 17:41:07 +0200 <dminuoso> Ah, but this is an infix operator
2021-09-15 17:41:19 +0200timCF(~timCF@m91-129-108-244.cust.tele2.ee) (Quit: leaving)
2021-09-15 17:41:29 +0200 <Guest6824> yes
2021-09-15 17:41:36 +0200 <dminuoso> So there's no "whitespace function application" anymore
2021-09-15 17:41:44 +0200 <dminuoso> And indeed, if there was it would take precedence
2021-09-15 17:41:46 +0200 <dminuoso> consider:
2021-09-15 17:41:48 +0200 <dminuoso> f . g x
2021-09-15 17:41:56 +0200 <dminuoso> This parses as: f . (g x)
2021-09-15 17:42:54 +0200_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-09-15 17:43:00 +0200 <Guest6824> yes
2021-09-15 17:43:00 +0200 <dminuoso> So it's in the grammar to consider `f . g` as an infix operator rather than `f` applied to (.)
2021-09-15 17:44:03 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha)
2021-09-15 17:44:13 +0200 <Guest6824> So if there is an infix operation it takes precedence over function application?
2021-09-15 17:44:13 +0200 <geekosaur> this is not specific to (.), any group of symbols (with some exceptions like |) is an infix operator
2021-09-15 17:44:17 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 17:44:40 +0200 <monochrom> Ugh, there is no function application in "f . g", is what dminuoso is saying.
2021-09-15 17:44:56 +0200 <monochrom> At least not the syntactic kind of function application.
2021-09-15 17:45:20 +0200 <monochrom> And yeah I was wondering why you didn't frame the question with "x + y".
2021-09-15 17:45:20 +0200vaucouleur_(~vaucouleu@176.124.42.130) (Read error: Connection reset by peer)
2021-09-15 17:46:10 +0200 <tdammers> it's simply a syntactic rule that says "a token composed out of operator characters is an operator", so it is parsed at expression, operator, expression, rather than expression, function application, expression, function application, expression
2021-09-15 17:46:10 +0200 <Guest6824> I was confused. There is an error when we do inc -1
2021-09-15 17:46:26 +0200 <tdammers> that's because "-" is ambiguous
2021-09-15 17:46:43 +0200vaucouleur(~vaucouleu@176.124.42.130)
2021-09-15 17:46:59 +0200vaucouleur(~vaucouleu@176.124.42.130) (Remote host closed the connection)
2021-09-15 17:47:00 +0200 <monochrom> Once again the lesson is: ask the real question.
2021-09-15 17:47:05 +0200 <tdammers> there's both a binary subtraction operator "-", and a unary negation quasi-operator "-"
2021-09-15 17:47:17 +0200vaucouleur(~vaucouleu@176.124.42.130)
2021-09-15 17:48:07 +0200 <tdammers> https://wiki.haskell.org/Unary_operator
2021-09-15 17:48:36 +0200 <geekosaur> the error you got is that "inc -1" is parsed as "inc - 1" which is a type error
2021-09-15 17:48:50 +0200 <geekosaur> so you have to say "inc (-1)"
2021-09-15 17:49:08 +0200 <geekosaur> this is something of a wart in Haskell syntax
2021-09-15 17:49:25 +0200 <geekosaur> the price we pay for what is otherwise a simple and straightforward system
2021-09-15 17:49:47 +0200 <c_wraith> I'd be happy to get rid of unary negation, but that would upset people even more
2021-09-15 17:50:28 +0200 <tdammers> I'd be happy to have the - be part of the number literal, with no space allowed after it, and whitespace after binary operators mandatory, but that would probably upset quite a few people too
2021-09-15 17:50:38 +0200 <monochrom> Unpopular opinion: It is already a simple and straightforward system. The complication is from human desire for DWIM telepathy.
2021-09-15 17:50:43 +0200 <geekosaur> isn't there an extension for that?
2021-09-15 17:50:54 +0200 <c_wraith> the extension doesn't force whitespace around operators
2021-09-15 17:50:58 +0200 <geekosaur> (not DWIM telepathy…)
2021-09-15 17:51:00 +0200 <c_wraith> and it only works for literals
2021-09-15 17:51:01 +0200 <tdammers> it is a simple and straightforward system, it's just not intuitive
2021-09-15 17:51:30 +0200 <tdammers> I'd be fine with having to use negate instead of unary - for anything that's not a literal
2021-09-15 17:51:45 +0200justache(~justache@user/justache) (Read error: Connection reset by peer)
2021-09-15 17:52:49 +0200 <Guest6824> so if there is an expression f x + g x (+) is it the case that the section will be considered as an argument and + will be considered as a operator and parsed accordingl
2021-09-15 17:52:49 +0200justache(~justache@user/justache)
2021-09-15 17:52:55 +0200 <c_wraith> the biggest problem with the extension is that it creates two different syntaxes without enabling any new ideas.
2021-09-15 17:53:28 +0200 <c_wraith> different *incompatible* syntaxes
2021-09-15 17:53:36 +0200 <monochrom> I don't think that's called a section, but yes.
2021-09-15 17:54:23 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha)
2021-09-15 17:54:36 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 17:54:37 +0200 <tdammers> in general: you can convert an operator into a plain function by putting it between parentheses, and you can use a plain function as an operator by putting it between backquotes (though the precedence may not be what you expect)
2021-09-15 17:54:56 +0200 <tdammers> > (+) 1 2
2021-09-15 17:54:57 +0200 <lambdabot> 3
2021-09-15 17:55:07 +0200 <tdammers> > inc `map` [1,2,3]
2021-09-15 17:55:09 +0200 <lambdabot> error:
2021-09-15 17:55:09 +0200 <lambdabot> • Variable not in scope: inc :: a0 -> b
2021-09-15 17:55:09 +0200 <lambdabot> • Perhaps you meant ‘int’ (imported from Text.PrettyPrint.HughesPJ)
2021-09-15 17:55:15 +0200 <tdammers> > succ `map` [1,2,3]
2021-09-15 17:55:17 +0200 <lambdabot> [2,3,4]
2021-09-15 17:55:27 +0200 <c_wraith> Eh. Precedence is the same as any other infix operator - defaults to infixl 9 but can be changed with an explicit fixity declaration
2021-09-15 17:55:31 +0200MQ-17J(~MQ-17J@2607:fb90:4c:3555:c992:1c4a:cf9e:7fd6) (Read error: Connection reset by peer)
2021-09-15 17:55:48 +0200MQ-17J(~MQ-17J@8.21.10.6)
2021-09-15 17:56:00 +0200 <tdammers> c_wraith: well yes, it's just that for most functions out there, there is no fixity declaration, so they'll be infixl 9, which may or may not lead to unexpected results
2021-09-15 17:56:29 +0200 <monochrom> Given that humans expect telepathy...
2021-09-15 17:56:57 +0200 <monochrom> infixl 9 has like Bayesian probability of 1/27 for doing what the human expects.
2021-09-15 17:57:23 +0200 <c_wraith> eh. very few people really expect infix behavior over infixl or infixr
2021-09-15 17:58:26 +0200 <tdammers> > 3 * 5 `subtract` 1
2021-09-15 17:58:27 +0200 <lambdabot> -12
2021-09-15 17:58:32 +0200 <tdammers> I rest my case
2021-09-15 17:58:41 +0200proofofkeags_(~proofofke@205.209.28.54)
2021-09-15 17:59:01 +0200 <monochrom> Yeah 1/27 is just my very crude prior :)
2021-09-15 17:59:22 +0200jokleinn(~jokleinn@user/jokleinn) (Ping timeout: 260 seconds)
2021-09-15 17:59:23 +0200 <Guest6824> So with inc - 2 the type error happens not because - is taken as an argument to inc, but because the arguments to - has unmatched types
2021-09-15 17:59:53 +0200 <c_wraith> I'm not sure I've ever seen a case where infix was the best choice. When I thought I did, I quickly discovered I was wrong when I tried to use it.
2021-09-15 17:59:58 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 265 seconds)
2021-09-15 18:00:09 +0200 <tdammers> I guess what I'm trying to say is that "be more specific, human!" would be the appropriate response, rather than making a wild guess at the intended precedence and guessing wrong
2021-09-15 18:00:44 +0200 <c_wraith> Guest6824: correct. Though it's reported a bit weirdly because numeric literals are polymorphic, and GHC tries really hard to make what you provided correct by searching for a Num instance for functions
2021-09-15 18:01:02 +0200 <monochrom> (==) is one of those cases you really want to force people to write explicitly "(x == y) == z" or "x == (y == z)".
2021-09-15 18:01:26 +0200 <Franciman> haskell masterrace
2021-09-15 18:01:49 +0200 <monochrom> Then again it is the minority.
2021-09-15 18:08:51 +0200 <Guest6824> So in the expression f x y z ... + g i j k ... compiler understands that + is not part of the application and parses it as (f x y z ...) + (g i j k ...)
2021-09-15 18:08:52 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-15 18:09:32 +0200 <c_wraith> yes. infix operators always have lower precedence during parsing than function application
2021-09-15 18:09:41 +0200 <c_wraith> and that's detected purely syntactically
2021-09-15 18:09:54 +0200 <c_wraith> operator characters vs... anything else, really
2021-09-15 18:10:54 +0200 <Guest6824> ok, thanks it was the error on inc -1 that confused me
2021-09-15 18:11:12 +0200abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
2021-09-15 18:12:06 +0200sneedsfeed(~sneedsfee@rrcs-173-95-122-169.midsouth.biz.rr.com)
2021-09-15 18:13:53 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:fcfd:5153:b61b:fe3d)
2021-09-15 18:16:18 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-09-15 18:16:19 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-09-15 18:16:19 +0200wroathe(~wroathe@user/wroathe)
2021-09-15 18:20:17 +0200azeem(~azeem@emp-91-123.eduroam.uu.se) (Ping timeout: 268 seconds)
2021-09-15 18:22:07 +0200favonia(~favonia@user/favonia) (Ping timeout: 252 seconds)
2021-09-15 18:24:28 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 252 seconds)
2021-09-15 18:25:51 +0200azeem(~azeem@2a00:801:23a:d5ca:5e0:54f5:67cf:d7dc)
2021-09-15 18:31:43 +0200jumper149(~jumper149@80.240.31.34) (Quit: WeeChat 3.2)
2021-09-15 18:31:54 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-09-15 18:32:14 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-09-15 18:33:41 +0200ub(~Thunderbi@178.165.161.81.wireless.dyn.drei.com)
2021-09-15 18:33:59 +0200azeem(~azeem@2a00:801:23a:d5ca:5e0:54f5:67cf:d7dc) (Read error: Connection reset by peer)
2021-09-15 18:34:29 +0200sneedsfeed(~sneedsfee@rrcs-173-95-122-169.midsouth.biz.rr.com) (Ping timeout: 256 seconds)
2021-09-15 18:36:11 +0200chele(~chele@user/chele) (Remote host closed the connection)
2021-09-15 18:36:25 +0200ub(~Thunderbi@178.165.161.81.wireless.dyn.drei.com) (Client Quit)
2021-09-15 18:36:43 +0200ub(~Thunderbi@178.165.161.81.wireless.dyn.drei.com)
2021-09-15 18:37:40 +0200azeem(~azeem@2a00:801:23a:d5ca:5e0:54f5:67cf:d7dc)
2021-09-15 18:37:51 +0200Guest6824(~Guest68@117.223.62.136) (Quit: Client closed)
2021-09-15 18:39:06 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:fcfd:5153:b61b:fe3d) (Remote host closed the connection)
2021-09-15 18:39:43 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha)
2021-09-15 18:39:56 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 18:40:05 +0200 <cdsmith> When using `ghc -pgmF`, is there a command line option to change the PATH used to find the program? I didn't see one in the GHC user guide.
2021-09-15 18:41:18 +0200vaucouleur(~vaucouleu@176.124.42.130) (Read error: Connection reset by peer)
2021-09-15 18:43:47 +0200jokleinn(~jokleinn@user/jokleinn)
2021-09-15 18:43:53 +0200 <geekosaur> no, you have to specify a full path in that case
2021-09-15 18:44:03 +0200 <geekosaur> or change $PATH before running ghc
2021-09-15 18:44:41 +0200 <cdsmith> Hmm. Yeah, unfortunately, hie-bios doesn't provide a way change the ghc PATH, only the command line options. :(
2021-09-15 18:45:09 +0200 <cdsmith> So without patching either GHC or hie-bios, it seems I am stuck.
2021-09-15 18:46:07 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-09-15 18:46:10 +0200 <c_wraith> that seems like the sort of feature request that would make sense for hie-bios to handle. But they probably won't get to it today.
2021-09-15 18:47:25 +0200 <cdsmith> Yes, it does seem like a good change, and I'd be happy to make the change. But it does mean some delay even if I do it. Either that, or changes to my setup to run a patched HLS, I guess.
2021-09-15 18:47:52 +0200 <cdsmith> In any case, I'll file an issue describing the need, and hopefully can get to it soon.
2021-09-15 18:48:06 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:fcfd:5153:b61b:fe3d)
2021-09-15 18:48:49 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-15 18:49:32 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-09-15 18:51:07 +0200ub(~Thunderbi@178.165.161.81.wireless.dyn.drei.com) (Ping timeout: 268 seconds)
2021-09-15 18:53:24 +0200 <ldlework> Is there a good haskell->js thing?
2021-09-15 18:53:33 +0200azeem(~azeem@2a00:801:23a:d5ca:5e0:54f5:67cf:d7dc) (Read error: Connection reset by peer)
2021-09-15 18:53:52 +0200 <geekosaur> ghcjs?
2021-09-15 18:54:17 +0200 <geekosaur> most others only speak a subset of Haskell and often take it in different directions (e.g. Elm)
2021-09-15 18:54:32 +0200 <dsal> PureScript isn't too bad.
2021-09-15 18:54:44 +0200azeem(~azeem@emp-91-123.eduroam.uu.se)
2021-09-15 18:55:02 +0200 <geekosaur> that said, ghcjs's runtime is pretty heavyweight because there are large differences between the way ghc does things and the way JS does
2021-09-15 18:55:08 +0200 <dsal> It's got a couple of the warts removed, but there are a few things which aren't quite good enough. e.g., the QuickCheck library is kind of unfortunate.
2021-09-15 18:55:15 +0200kilolympus(~kilolympu@31.205.200.235) (Quit: Quitting IRC :()
2021-09-15 18:55:50 +0200 <ldlework> thanks
2021-09-15 18:56:21 +0200 <sm> there's some way to generate wasm too eh
2021-09-15 18:56:46 +0200 <ldlework> i mostly just wanna make canvas games
2021-09-15 18:58:06 +0200 <geekosaur> I thought the wasm backend was stalled?
2021-09-15 18:59:21 +0200azeem(~azeem@emp-91-123.eduroam.uu.se) (Read error: Connection reset by peer)
2021-09-15 18:59:49 +0200azeem(~azeem@2a00:801:23a:d5ca:5e0:54f5:67cf:d7dc)
2021-09-15 19:00:46 +0200 <sm> oh well yes I'm sure it's stalled.. but exists somehow :)
2021-09-15 19:01:23 +0200 <sm> ldlework: canvas games eh
2021-09-15 19:01:57 +0200 <sm> maybe threepenny-gui or the some other one like it can help
2021-09-15 19:03:03 +0200 <sm> https://hackage.haskell.org/package/threepenny-gui
2021-09-15 19:03:22 +0200slack1256(~slack1256@adsl-99-88-236-73.dsl.hstntx.sbcglobal.net)
2021-09-15 19:03:26 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2021-09-15 19:05:39 +0200econo(uid147250@user/econo)
2021-09-15 19:06:54 +0200Lycurgus(~juan@98.4.112.204)
2021-09-15 19:07:57 +0200 <cdsmith> <c_wraith> "that seems like the sort of..." <- Actually, turns out there was already an hie-bios issue for it: https://github.com/haskell/hie-bios/issues/160
2021-09-15 19:08:32 +0200favonia(~favonia@user/favonia)
2021-09-15 19:13:36 +0200kenran(~kenran@200116b82b607e001ad403c97222d218.dip.versatel-1u1.de)
2021-09-15 19:13:44 +0200 <ldlework> sm: ah well the aim of targetting the web would be being able to share things with people via link
2021-09-15 19:14:01 +0200kimjetwav(~user@2607:fea8:235f:9730:8357:c73b:f3ec:cc1b) (Remote host closed the connection)
2021-09-15 19:14:03 +0200 <ldlework> "check out this thing I made in haskell! http://...."
2021-09-15 19:14:19 +0200kimjetwav(~user@2607:fea8:235f:9730:7652:9a19:d3a:6562)
2021-09-15 19:16:16 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-09-15 19:16:27 +0200 <cdsmith> ldlework: You can use http://code.world/haskell for that!
2021-09-15 19:17:04 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2021-09-15 19:19:32 +0200 <monochrom> I thought people were more thrilled about https than http.
2021-09-15 19:21:03 +0200 <cdsmith> ldlework: For example: "check out this thing I made in haskell! https://code.world/haskell#P5j0qnxAaF90qX7d4TFhe2w"
2021-09-15 19:21:13 +0200zebrag(~chris@user/zebrag)
2021-09-15 19:21:31 +0200 <monochrom> Hey that's really cool.
2021-09-15 19:22:38 +0200 <monochrom> Speaking of which, this looks like very suitable to re-do what's in https://www.youtube.com/watch?v=vU-g6mC1F0g
2021-09-15 19:23:06 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-09-15 19:23:27 +0200 <vaibhavsagar[m]> ldlework: I want something like this too! client-side GHC running in a browser is my dream
2021-09-15 19:23:39 +0200 <yushyin> cdsmith: i'm getting dizzy
2021-09-15 19:23:39 +0200lbseale(~lbseale@user/ep1ctetus) (Remote host closed the connection)
2021-09-15 19:24:22 +0200 <vaibhavsagar[m]> my uninformed opinion is that all of the pieces are there (ghcjs, asterius, etc.) but it would be a lot of work to pull everything together into a coherent whole
2021-09-15 19:24:41 +0200 <cdsmith> Client side GHC in a browser sounds like... well, you have to do some dreaming between the time you start the compile and when it finishes!
2021-09-15 19:25:02 +0200 <vaibhavsagar[m]> client side GHCi then
2021-09-15 19:25:07 +0200 <geekosaur> clinet side hugs might be more doable
2021-09-15 19:25:13 +0200 <vaibhavsagar[m]> it has to be possible
2021-09-15 19:25:15 +0200 <vaibhavsagar[m]> that already exists
2021-09-15 19:25:28 +0200 <vaibhavsagar[m]> https://tryhaskell.org/
2021-09-15 19:25:57 +0200 <cdsmith> Oh, tryhaskell is based on hugs? Cool, I never knew that
2021-09-15 19:26:51 +0200 <cdsmith> CodeWorld is an editor on the client, GHCJS running on the server, and then the resulting program running on the client again. It works pretty well.
2021-09-15 19:27:06 +0200arahael(~arahael@203.221.121.242) (Ping timeout: 268 seconds)
2021-09-15 19:27:52 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-15 19:28:01 +0200 <sm> Chris Smith++! codeworld is awesome. is there a url that shows the app in full-window ?
2021-09-15 19:28:01 +0200 <vaibhavsagar[m]> Chris Smith: CodeWorld is a triumph
2021-09-15 19:28:55 +0200 <cdsmith> sm: Yes. Run the program, click "Share", then "Share Without Code", and copy that URL. It will be full screen
2021-09-15 19:28:57 +0200 <vaibhavsagar[m]> but the reason I want full GHC in the browser is so that we can get https://jupyterlite.readthedocs.io/en/latest/ but with IHaskell as the backend, without any servers
2021-09-15 19:29:00 +0200mixfix41(~homefame@user/mixfix41)
2021-09-15 19:29:41 +0200 <vaibhavsagar[m]> managing servers is a bunch of effort
2021-09-15 19:30:22 +0200mousey(~sky@gateway/tor-sasl/mousey)
2021-09-15 19:30:32 +0200 <vaibhavsagar[m]> is it less effort than cross-compiling GHC to JS/WASM somehow? yes, which is why the status quo is what it is
2021-09-15 19:32:27 +0200lbseale(~lbseale@user/ep1ctetus)
2021-09-15 19:33:55 +0200 <cdsmith> It's not just cross-compiling GHC. It's that GHC relies on having a filesystem set up with package databases and such.
2021-09-15 19:34:42 +0200 <vaibhavsagar[m]> alright, that doesn't seem insurmountable
2021-09-15 19:35:11 +0200Guest3294(~Guest32@165.91.13.162)
2021-09-15 19:35:12 +0200 <geekosaur> no, but add more complications and it rapidly becomes more effort than it's worth
2021-09-15 19:35:17 +0200Guest3294(~Guest32@165.91.13.162) (Client Quit)
2021-09-15 19:35:47 +0200 <sm> just a simple matter of programming !
2021-09-15 19:36:07 +0200bitmapper(uid464869@id-464869.lymington.irccloud.com)
2021-09-15 19:36:23 +0200 <vaibhavsagar[m]> I saw this earlier today: https://ra-wasm.netlify.app/
2021-09-15 19:36:44 +0200 <vaibhavsagar[m]> I'd like to have cool things like that too
2021-09-15 19:39:46 +0200arahael(~arahael@118.211.178.62)
2021-09-15 19:44:05 +0200 <slack1256> I understand that type classes instances are selected via matching the "instance head". Is this motivated for a theorical reason or is just something that was easy to implement in early GHC development? Are there known alternatives to this?
2021-09-15 19:47:07 +0200chisui(~chisui@200116b8640ff5001ded5de399d498df.dip.versatel-1u1.de)
2021-09-15 19:53:25 +0200ec_(~ec@gateway/tor-sasl/ec)
2021-09-15 19:53:28 +0200sim590(~simon@modemcable090.207-203-24.mc.videotron.ca) (Ping timeout: 252 seconds)
2021-09-15 19:54:21 +0200 <sclv> slack1256: there's been a lot of research into different type class matching possibilities, and there are flags to change them
2021-09-15 19:54:38 +0200 <sclv> but basically what you need is something that is able to be confluent, and terminate
2021-09-15 19:54:48 +0200 <sclv> and structural induction is the straightforward way to do that
2021-09-15 19:55:17 +0200Lycurgus(~juan@98.4.112.204) (Quit: Exeunt)
2021-09-15 19:56:12 +0200 <sclv> you might want to look at the closed type families paper for some relatively more recent stuff plus the references (https://repository.brynmawr.edu/cgi/viewcontent.cgi?article=1006&context=compsci_pubs)
2021-09-15 19:56:29 +0200 <slack1256> Oh so they were thinking on those properties since the beginning.
2021-09-15 19:59:35 +0200 <sclv> there's an immense amount of literature on all this stuff, not sure where to direct you
2021-09-15 20:00:10 +0200 <sclv> this 2004 paper on functional dependencies probably has both good cites of prior work and also following the things that cite it (via google scholar) could lead to a fair amount https://www.microsoft.com/en-us/research/wp-content/uploads/2004/01/esop04.pdf
2021-09-15 20:00:21 +0200 <sclv> but a whole bunch of questions arise for MPTCs even without fundeps, etc
2021-09-15 20:02:25 +0200 <slack1256> You already answered my question :-) . The original motivation is clear now.
2021-09-15 20:03:06 +0200 <sclv> ok, just for the record i think even the original type class paper (1988) had some discussion of these issues :-) (search "overlap") http://users.csc.calpoly.edu/~akeen/courses/csc530/references/wadler.pdf
2021-09-15 20:03:13 +0200 <slack1256> Yeah I am already "going down the rabbit hole" reading how `Data types a la carte` uses type classes for injecting values. Those classes don't match any heads.
2021-09-15 20:05:40 +0200 <monochrom> I haven't done research in this, but here is my understanding of one of the most-wished-for features that is perpetually denied:
2021-09-15 20:06:33 +0200nighteyes(~user@ip-185-104-136-52.ptr.icomera.net)
2021-09-15 20:06:37 +0200tubogram(~tubogram@user/tubogram) (Quit: See ya later!)
2021-09-15 20:09:46 +0200awpr(uid446117@id-446117.lymington.irccloud.com)
2021-09-15 20:10:57 +0200 <monochrom> For example "instance Eq a => Eq [a]", and suppose my type X is not an instance of Eq. Haskell says "therefore I commit to Eq [X] and then call it an error when I can't find Eq X". People sometimes wish for "so don't commit to Eq [X]", in fact sometimes they further wish for "is there a way to express: if X is not an instance of Eq, then Eq [X] can still be done by a different route?"
2021-09-15 20:11:45 +0200 <monochrom> Now, Prolog totally does that, so it can be done.
2021-09-15 20:12:48 +0200 <monochrom> But Prolog is happy with that because of a closed-world assumption. Haskell has to support separate compilation, it's an open world.
2021-09-15 20:12:53 +0200tubogram(~tubogram@user/tubogram)
2021-09-15 20:13:17 +0200 <geekosaur> and typeclasses are always global
2021-09-15 20:13:21 +0200 <monochrom> "if X is/isn't an instance of Eq" cannot be answered until link time.
2021-09-15 20:14:43 +0200proofofkeags__(~proofofke@205.209.24.233)
2021-09-15 20:15:01 +0200lavaman(~lavaman@98.38.249.169)
2021-09-15 20:15:03 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha)
2021-09-15 20:15:21 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 20:15:36 +0200ec_(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-09-15 20:17:40 +0200proofofkeags_(~proofofke@205.209.28.54) (Ping timeout: 268 seconds)
2021-09-15 20:17:46 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-09-15 20:17:46 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-09-15 20:17:46 +0200wroathe(~wroathe@user/wroathe)
2021-09-15 20:18:01 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-09-15 20:22:20 +0200ec_(~ec@gateway/tor-sasl/ec)
2021-09-15 20:30:26 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha)
2021-09-15 20:30:39 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 20:34:25 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-15 20:35:14 +0200jokleinn(~jokleinn@user/jokleinn) (Ping timeout: 260 seconds)
2021-09-15 20:36:25 +0200max22-(~maxime@2a01cb0883359800e3a3878268dcbc1e.ipv6.abo.wanadoo.fr) (Ping timeout: 260 seconds)
2021-09-15 20:43:51 +0200mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
2021-09-15 20:45:46 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha)
2021-09-15 20:46:01 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 20:46:42 +0200nighteyes(~user@ip-185-104-136-52.ptr.icomera.net) (Quit: leaving)
2021-09-15 20:48:33 +0200lavaman(~lavaman@98.38.249.169)
2021-09-15 20:51:21 +0200mousey(~sky@gateway/tor-sasl/mousey) (Ping timeout: 276 seconds)
2021-09-15 20:53:26 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 268 seconds)
2021-09-15 20:58:00 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-15 21:00:27 +0200ec_(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-09-15 21:01:19 +0200nattiestnate(~nate@2001:448a:20a0:4134:25e:715f:d637:5263)
2021-09-15 21:03:14 +0200MQ-17J(~MQ-17J@8.21.10.6) (Ping timeout: 260 seconds)
2021-09-15 21:04:09 +0200max22-(~maxime@2a01cb08833598007ebd7c63f02c86ef.ipv6.abo.wanadoo.fr)
2021-09-15 21:06:46 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:fcfd:5153:b61b:fe3d) (Remote host closed the connection)
2021-09-15 21:07:15 +0200dsf_dsf
2021-09-15 21:07:30 +0200ec_(~ec@gateway/tor-sasl/ec)
2021-09-15 21:09:25 +0200asivitz(uid178348@id-178348.tinside.irccloud.com)
2021-09-15 21:09:38 +0200nattiestnate(~nate@2001:448a:20a0:4134:25e:715f:d637:5263) (Quit: WeeChat 3.2)
2021-09-15 21:09:51 +0200nattiestnate(~nate@2001:448a:20a0:4134:25e:715f:d637:5263)
2021-09-15 21:11:07 +0200qbt(~edun@user/edun) (Ping timeout: 252 seconds)
2021-09-15 21:11:24 +0200vaucouleur(~vaucouleu@78.194.70.105)
2021-09-15 21:12:27 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-15 21:13:00 +0200 <dolio> How does it work in Teyjus?
2021-09-15 21:13:15 +0200Pickchea(~private@user/pickchea)
2021-09-15 21:14:44 +0200 <dolio> I guess another part of the answer is that in prolog it's happening at runtime.
2021-09-15 21:15:04 +0200 <dolio> That's why you're a closed world.
2021-09-15 21:20:05 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-15 21:20:31 +0200 <monochrom> I don't know Teyjus. But yeah, Prolog gets to do its job at run time.
2021-09-15 21:20:56 +0200 <dolio> Teyjus is a lambda prolog compiler that (if I recall correctly) supports separate compilation.
2021-09-15 21:21:15 +0200 <monochrom> Wait, that should not make a difference. We are talking about the run time of a type checker!
2021-09-15 21:21:25 +0200 <dolio> But obviously the separate compilation is going on way before the backtracking stuff.
2021-09-15 21:22:27 +0200 <dolio> In Haskell, the separate compilation means you need to do runtime separately.
2021-09-15 21:22:31 +0200 <monochrom> OK, so I think a good way to describe the correspondence is: imagine Prolog but you're told you aren't given the complete database.
2021-09-15 21:22:48 +0200 <geekosaur> I think you can still do it if every call has a dictionary (no optimizing them out) but you again end u[p deferring it to runtime?
2021-09-15 21:23:06 +0200 <davean> Does anyone have any snippets of Haskell code like 5-15 lines thats particularly revolutionary or cool or something?
2021-09-15 21:23:15 +0200 <maerwald> uhm
2021-09-15 21:23:19 +0200 <awpr> > fix error
2021-09-15 21:23:20 +0200 <lambdabot> "*Exception: *Exception: *Exception: *Exception: *Exception: *Exception: *Ex...
2021-09-15 21:23:40 +0200 <maerwald> davean: I'd clone an arbitrary edward repo :)
2021-09-15 21:24:13 +0200 <davean> maerwald: He's verbose, he won't stop carring about performance, no matter how much I encurage him to have more performance.
2021-09-15 21:24:19 +0200 <davean> wait, I might be part of the problem here ...
2021-09-15 21:24:25 +0200 <davean> :)
2021-09-15 21:24:49 +0200lavaman(~lavaman@98.38.249.169)
2021-09-15 21:24:50 +0200 <dolio> You must be encouraging him the wrong way.
2021-09-15 21:25:06 +0200 <monochrom> I asked my students to implement iterative deepening. A student found a way 10x faster than mine.
2021-09-15 21:25:09 +0200 <dolio> He should achieve performance by making GHC emit code that is as good as well-programmed C++.
2021-09-15 21:25:15 +0200 <dolio> From naive Haskell.
2021-09-15 21:25:24 +0200 <davean> dolio: well programmed C++ is slow though!
2021-09-15 21:25:27 +0200 <davean> dolio: have some standards
2021-09-15 21:25:33 +0200 <monochrom> Hrm, now it will take forever to find it...
2021-09-15 21:25:56 +0200 <dolio> Oh, because all the fast stuff is evil hackery?
2021-09-15 21:26:22 +0200 <maerwald> fast in haskell is verbose or evil
2021-09-15 21:26:35 +0200 <dolio> I mean C++.
2021-09-15 21:26:52 +0200 <davean> Yah, the overhead of standard C++ stuff is unreasonable, if you aren't jumping into the middle of a function to shave a few instructions you're really phoning it in
2021-09-15 21:26:53 +0200 <monochrom> I think "Turbo Haskell" is stil on his to-do list.
2021-09-15 21:28:45 +0200 <ldlework> Is there a generic way (besides destructuring) to convert a list of a known size to a tuple (so that the tuple can be applied to an uncurried function taking the same number of args)?
2021-09-15 21:29:11 +0200 <ldlework> (besides just writing a function that does it via destructuring)
2021-09-15 21:29:26 +0200 <ldlework> tuplify4 something like that
2021-09-15 21:29:36 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 268 seconds)
2021-09-15 21:30:26 +0200 <monochrom> Go with destructuring.
2021-09-15 21:30:44 +0200 <davean> monochrom: well I'd be very interested in if you find that code - just really looking for an inset to show off Haskell code or something in a doc
2021-09-15 21:30:46 +0200 <monochrom> And I lost track of what "generic" means. It's such a generic word.
2021-09-15 21:32:39 +0200chisui97(~chisui@200116b8640ff5008528468472c032d2.dip.versatel-1u1.de)
2021-09-15 21:32:48 +0200chisui(~chisui@200116b8640ff5001ded5de399d498df.dip.versatel-1u1.de) (Quit: Client closed)
2021-09-15 21:33:12 +0200pavonia(~user@user/siracusa)
2021-09-15 21:41:47 +0200 <ldlework> monochrom: hehe
2021-09-15 21:42:24 +0200Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi)
2021-09-15 21:46:07 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha)
2021-09-15 21:46:23 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 21:46:36 +0200ec_(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-09-15 21:47:46 +0200stites(~stitescoc@130.44.141.131) (Ping timeout: 256 seconds)
2021-09-15 21:48:01 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-15 21:49:12 +0200mc47(~mc47@xmonad/TheMC47) (Quit: Leaving)
2021-09-15 21:50:52 +0200stites(~stitescoc@130.44.141.131)
2021-09-15 21:53:02 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.2)
2021-09-15 21:53:15 +0200mikoto-chan(~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Ping timeout: 268 seconds)
2021-09-15 21:53:30 +0200ec_(~ec@gateway/tor-sasl/ec)
2021-09-15 21:54:16 +0200kenran(~kenran@200116b82b607e001ad403c97222d218.dip.versatel-1u1.de) (Ping timeout: 268 seconds)
2021-09-15 21:54:23 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-09-15 21:54:49 +0200kenran(~kenran@200116b82b607e00d5bfa4634406875a.dip.versatel-1u1.de)
2021-09-15 21:56:26 +0200vaucouleur(~vaucouleu@78.194.70.105) (Ping timeout: 260 seconds)
2021-09-15 21:59:19 +0200acowley(~acowley@c-68-83-22-43.hsd1.nj.comcast.net) (Read error: Connection reset by peer)
2021-09-15 22:01:27 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:fcfd:5153:b61b:fe3d)
2021-09-15 22:05:30 +0200juhp(~juhp@128.106.188.220) (Ping timeout: 265 seconds)
2021-09-15 22:06:30 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha)
2021-09-15 22:06:54 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 22:07:17 +0200juhp(~juhp@128.106.188.220)
2021-09-15 22:08:24 +0200slack1256(~slack1256@adsl-99-88-236-73.dsl.hstntx.sbcglobal.net) (Ping timeout: 265 seconds)
2021-09-15 22:16:57 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha)
2021-09-15 22:17:20 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 22:22:24 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha)
2021-09-15 22:22:37 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 22:22:37 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Client Quit)
2021-09-15 22:22:42 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-15 22:22:45 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 22:24:13 +0200 <dsal> This idea of applying a list to a function of wanting list-many arguments sounds kind of like a fold if I didn't have to tell you what the type was.
2021-09-15 22:26:52 +0200dizney(~dizney@80-100-91-169.ip.xs4all.nl)
2021-09-15 22:27:48 +0200mikoto-chan(~mikoto-ch@83.137.2.248)
2021-09-15 22:27:51 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha)
2021-09-15 22:28:04 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 22:28:04 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Client Quit)
2021-09-15 22:28:11 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)
2021-09-15 22:32:45 +0200ec_(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-09-15 22:34:02 +0200lbseale(~lbseale@user/ep1ctetus) (Remote host closed the connection)
2021-09-15 22:34:27 +0200lbseale(~lbseale@user/ep1ctetus)
2021-09-15 22:39:42 +0200ec_(~ec@gateway/tor-sasl/ec)
2021-09-15 22:41:16 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-15 22:43:19 +0200 <zzz> what isn't a fold anyway?
2021-09-15 22:44:13 +0200abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 268 seconds)
2021-09-15 22:45:47 +0200kenran(~kenran@200116b82b607e00d5bfa4634406875a.dip.versatel-1u1.de) (Quit: WeeChat info:version)
2021-09-15 22:46:08 +0200justsomeguy(~justsomeg@user/justsomeguy)
2021-09-15 22:47:04 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-15 22:52:00 +0200dizney(~dizney@80-100-91-169.ip.xs4all.nl) (Quit: Ping timeout (120 seconds))
2021-09-15 22:53:16 +0200_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-09-15 22:53:22 +0200dizney(~dizney@80-100-91-169.ip.xs4all.nl)
2021-09-15 22:53:39 +0200dizney(~dizney@80-100-91-169.ip.xs4all.nl) (Client Quit)
2021-09-15 22:54:51 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Read error: Connection reset by peer)
2021-09-15 22:58:11 +0200vysn(~vysn@user/vysn) (Quit: WeeChat 3.2)
2021-09-15 23:02:20 +0200aegon(~mike@174.127.249.180)
2021-09-15 23:04:36 +0200ec_(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-09-15 23:05:09 +0200proofofkeags__(~proofofke@205.209.24.233) (Remote host closed the connection)
2021-09-15 23:05:23 +0200proofofkeags__(~proofofke@205.209.24.233)
2021-09-15 23:05:49 +0200 <ldlework> I'm trying to write a fundamental cellular automata thing with Gloss, but when I run it, it locks up
2021-09-15 23:05:51 +0200 <ldlework> https://gist.github.com/dustinlacewell/1411fc6feefde9b73a8ad2a0d9db7c55
2021-09-15 23:05:56 +0200 <ldlework> Anyone have any hunches?
2021-09-15 23:06:27 +0200vysn(~vysn@user/vysn)
2021-09-15 23:06:56 +0200 <ldlework> pretty sure it has to do with the update path, rather than the draw path
2021-09-15 23:07:20 +0200 <ldlework> oh
2021-09-15 23:07:23 +0200 <ldlework> no base case :D
2021-09-15 23:11:22 +0200ec_(~ec@gateway/tor-sasl/ec)
2021-09-15 23:11:43 +0200 <monochrom> davean: https://paste.tomsmeding.com/VlIdTCsp
2021-09-15 23:14:27 +0200 <akronymus[m]> Which channel is this? Seems like the matrix integration broke for this one
2021-09-15 23:14:39 +0200 <monochrom> #haskell
2021-09-15 23:14:42 +0200akronymus[m]uploaded an image: (3KiB) < https://libera.ems.host/_matrix/media/r0/download/arkmuse.org/xKznrnbTydXRVsdiuVooCCJd/image.png >
2021-09-15 23:14:43 +0200 <akronymus[m]> Only shows me this
2021-09-15 23:14:49 +0200 <akronymus[m]> Thanks.
2021-09-15 23:16:25 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-09-15 23:18:09 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2021-09-15 23:19:57 +0200roboguy_(~roboguy_@2605:a601:afe7:9f00:5c06:451f:7b74:b079)
2021-09-15 23:22:57 +0200 <tomsmeding> akronymus[m]: https://github.com/vector-im/element-web/issues/8246 ?
2021-09-15 23:23:25 +0200 <akronymus[m]> thanks
2021-09-15 23:23:35 +0200sim590(~simon@modemcable090.207-203-24.mc.videotron.ca)
2021-09-15 23:23:39 +0200 <akronymus[m]> Clearing cache is never a wrong move
2021-09-15 23:26:02 +0200ubert(~Thunderbi@178.165.161.81.wireless.dyn.drei.com) (Ping timeout: 260 seconds)
2021-09-15 23:28:28 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-09-15 23:31:53 +0200fendor(~fendor@91.141.60.54.wireless.dyn.drei.com) (Remote host closed the connection)
2021-09-15 23:33:12 +0200ec_(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2021-09-15 23:33:46 +0200thyriaen(~thyriaen@dynamic-078-054-146-050.78.54.pool.telefonica.de) (Quit: Leaving)
2021-09-15 23:33:58 +0200thyriaen(~thyriaen@dynamic-078-054-146-050.78.54.pool.telefonica.de)
2021-09-15 23:34:54 +0200sim590(~simon@modemcable090.207-203-24.mc.videotron.ca) (Ping timeout: 260 seconds)
2021-09-15 23:37:14 +0200 <monochrom> @tell
2021-09-15 23:37:14 +0200 <lambdabot> Who should I tell?
2021-09-15 23:37:15 +0200max22-(~maxime@2a01cb08833598007ebd7c63f02c86ef.ipv6.abo.wanadoo.fr) (Quit: Leaving)
2021-09-15 23:38:11 +0200 <monochrom> @tell davean The 5-line very cool snippet from my student's iterative deepening: https://paste.tomsmeding.com/VlIdTCsp
2021-09-15 23:38:12 +0200 <lambdabot> Consider it noted.
2021-09-15 23:40:11 +0200ec_(~ec@gateway/tor-sasl/ec)
2021-09-15 23:40:59 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-09-15 23:42:58 +0200michalz(~michalz@185.246.204.57) (Remote host closed the connection)
2021-09-15 23:43:56 +0200proofofkeags_(~proofofke@205.209.28.54)
2021-09-15 23:45:50 +0200burnsidesLlama(~burnsides@dhcp168-024.wadham.ox.ac.uk)
2021-09-15 23:46:43 +0200proofofkeags__(~proofofke@205.209.24.233) (Ping timeout: 268 seconds)
2021-09-15 23:47:46 +0200sim590(~simon@modemcable090.207-203-24.mc.videotron.ca)
2021-09-15 23:49:22 +0200roboguy_(~roboguy_@2605:a601:afe7:9f00:5c06:451f:7b74:b079) ()
2021-09-15 23:49:55 +0200son0p(~ff@181.136.122.143)
2021-09-15 23:50:24 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-09-15 23:51:26 +0200burnsidesLlama(~burnsides@dhcp168-024.wadham.ox.ac.uk) (Ping timeout: 268 seconds)
2021-09-15 23:51:42 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 260 seconds)
2021-09-15 23:52:15 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-09-15 23:52:15 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-09-15 23:52:15 +0200wroathe(~wroathe@user/wroathe)
2021-09-15 23:53:18 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha)
2021-09-15 23:53:30 +0200mikoto-chan(~mikoto-ch@83.137.2.248) (Ping timeout: 268 seconds)
2021-09-15 23:53:32 +0200amitnjha(~amit@024-216-124-116.res.spectrum.com)