2021-09-15 00:02:13 +0200 | System123 | (~System123@ec2-52-61-197-79.us-gov-west-1.compute.amazonaws.com) (Ping timeout: 268 seconds) |
2021-09-15 00:02:37 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
2021-09-15 00:02:40 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) |
2021-09-15 00:08:00 +0200 | keion | (~dk1xd@2001:12b4:290:901:3d40:bef3:a81e:c18a) |
2021-09-15 00:08:50 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2021-09-15 00:09:20 +0200 | favonia | (~favonia@user/favonia) |
2021-09-15 00:12:42 +0200 | newbie | (~newbie@80-196-109-198-dynamic.dk.customer.tdc.net) (Remote host closed the connection) |
2021-09-15 00:22:55 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 265 seconds) |
2021-09-15 00:25:27 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds) |
2021-09-15 00:25:29 +0200 | chomwitt | (~chomwitt@ppp-94-67-221-96.home.otenet.gr) (Remote host closed the connection) |
2021-09-15 00:27:00 +0200 | System123 | (~System123@84.16.238.77) |
2021-09-15 00:29:26 +0200 | keion | (~dk1xd@2001:12b4:290:901:3d40:bef3:a81e:c18a) () |
2021-09-15 00:32:28 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) |
2021-09-15 00:32:49 +0200 | System12_ | (~System123@203-134-35-213.sta.estpak.ee) |
2021-09-15 00:33:08 +0200 | System12_ | (~System123@203-134-35-213.sta.estpak.ee) (Remote host closed the connection) |
2021-09-15 00:33:45 +0200 | System12_ | (~System123@203-134-35-213.sta.estpak.ee) |
2021-09-15 00:36:01 +0200 | Pickchea | (~private@user/pickchea) (Quit: Leaving) |
2021-09-15 00:36:27 +0200 | System123 | (~System123@84.16.238.77) (Ping timeout: 265 seconds) |
2021-09-15 00:38:36 +0200 | wroathe | (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) |
2021-09-15 00:38:36 +0200 | wroathe | (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) (Changing host) |
2021-09-15 00:38:36 +0200 | wroathe | (~wroathe@user/wroathe) |
2021-09-15 00:38:42 +0200 | System12_ | (~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 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2021-09-15 00:42:56 +0200 | TranquilEcho | (~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 +0200 | acidjnk_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 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-15 00:54:43 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-15 00:55:07 +0200 | neo1 | (~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 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds) |
2021-09-15 00:57:28 +0200 | <geekosaur> | hm |
2021-09-15 01:00:52 +0200 | aegon | (~mike@174.127.249.180) |
2021-09-15 01:01:01 +0200 | ph88 | (~ph88@2a02:8109:9e00:7e5c:cd33:d2f5:4ed3:fbd1) |
2021-09-15 01:02:54 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2021-09-15 01:04:06 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) |
2021-09-15 01:04:30 +0200 | ph88^ | (~ph88@ip5f5af6fd.dynamic.kabel-deutschland.de) (Ping timeout: 268 seconds) |
2021-09-15 01:04:52 +0200 | amahl | (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 252 seconds) |
2021-09-15 01:04:54 +0200 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 268 seconds) |
2021-09-15 01:06:39 +0200 | tromp | (~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 +0200 | cheater | (~Username@user/cheater) (Ping timeout: 265 seconds) |
2021-09-15 01:10:40 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 268 seconds) |
2021-09-15 01:12:46 +0200 | wroathe | (~wroathe@user/wroathe) |
2021-09-15 01:14:09 +0200 | xsperry | (~as@user/xsperry) (Ping timeout: 268 seconds) |
2021-09-15 01:15:32 +0200 | hendursaga | (~weechat@user/hendursaga) (Remote host closed the connection) |
2021-09-15 01:15:58 +0200 | hendursaga | (~weechat@user/hendursaga) |
2021-09-15 01:18:04 +0200 | favonia | (~favonia@user/favonia) (Ping timeout: 268 seconds) |
2021-09-15 01:19:18 +0200 | Tuplanolla | (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.) |
2021-09-15 01:23:13 +0200 | ph88^ | (~ph88@ip5f5af6fd.dynamic.kabel-deutschland.de) |
2021-09-15 01:23:44 +0200 | cheater | (~Username@user/cheater) |
2021-09-15 01:26:24 +0200 | gioyik | (~gioyik@gateway/tor-sasl/gioyik) |
2021-09-15 01:26:33 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds) |
2021-09-15 01:27:19 +0200 | ph88 | (~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 +0200 | xff0x | (~xff0x@2001:1a81:53ed:e500:8294:b35:6b84:2798) (Ping timeout: 268 seconds) |
2021-09-15 01:28:50 +0200 | xff0x | (~xff0x@2001:1a81:53ed:e500:fed8:1f05:1144:969c) |
2021-09-15 01:33:33 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) |
2021-09-15 01:36:03 +0200 | pony | (~ed@101.100.135.26) |
2021-09-15 01:36:07 +0200 | Lycurgus | (~juan@98.4.112.204) (Quit: Exeunt) |
2021-09-15 01:39:39 +0200 | nicbk | (~nicbk@user/nicbk) (Quit: nicbk) |
2021-09-15 01:41:53 +0200 | xsperry | (~as@user/xsperry) |
2021-09-15 01:44:06 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds) |
2021-09-15 01:58:45 +0200 | xff0x | (~xff0x@2001:1a81:53ed:e500:fed8:1f05:1144:969c) (Remote host closed the connection) |
2021-09-15 01:59:02 +0200 | xff0x | (~xff0x@2001:1a81:53ed:e500:564f:86e7:d174:9c84) |
2021-09-15 01:59:18 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-15 02:14:50 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-15 02:15:03 +0200 | amitnjha | (~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 +0200 | aegon | (~mike@174.127.249.180) (Remote host closed the connection) |
2021-09-15 02:20:23 +0200 | chisui | (~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 +0200 | tremon | (~tremon@217-63-61-89.cable.dynamic.v4.ziggo.nl) (Quit: getting boxed in) |
2021-09-15 02:23:25 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) |
2021-09-15 02:25:26 +0200 | pony | (~ed@101.100.135.26) (Quit: WeeChat 2.8) |
2021-09-15 02:25:35 +0200 | <orzo> | thanks |
2021-09-15 02:27:37 +0200 | proofofkeags_ | (~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 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2021-09-15 02:33:14 +0200 | thyriaen | (~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 +0200 | System123 | (~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 +0200 | System123 | (~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 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-15 02:40:32 +0200 | amitnjha | (~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 +0200 | pbrisbin | (~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 +0200 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.2.1) |
2021-09-15 02:55:37 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-15 02:55:50 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-15 02:55:54 +0200 | waleee | (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 260 seconds) |
2021-09-15 02:56:22 +0200 | favonia | (~favonia@user/favonia) |
2021-09-15 03:00:12 +0200 | doyougnu | (~user@c-73-25-202-122.hsd1.or.comcast.net) (Remote host closed the connection) |
2021-09-15 03:00:25 +0200 | oats | (~thomas@user/oats) (Quit: until later, my friends) |
2021-09-15 03:01:07 +0200 | oats | (~thomas@user/oats) |
2021-09-15 03:01:27 +0200 | favonia | (~favonia@user/favonia) (Ping timeout: 265 seconds) |
2021-09-15 03:04:51 +0200 | asivitz | (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 +0200 | Guest372 | (~xxx@47.245.54.240) (Remote host closed the connection) |
2021-09-15 03:12:19 +0200 | Guest372 | (~xxx@47.245.54.240) |
2021-09-15 03:12:51 +0200 | favonia | (~favonia@user/favonia) |
2021-09-15 03:13:08 +0200 | wrengr | wrengr_away |
2021-09-15 03:13:08 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer) |
2021-09-15 03:13:21 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) |
2021-09-15 03:16:10 +0200 | xff0x | (~xff0x@2001:1a81:53ed:e500:564f:86e7:d174:9c84) (Ping timeout: 240 seconds) |
2021-09-15 03:16:31 +0200 | fjmorazan | (~quassel@user/fjmorazan) (Quit: fjmorazan) |
2021-09-15 03:16:44 +0200 | fjmorazan | (~quassel@user/fjmorazan) |
2021-09-15 03:18:13 +0200 | xff0x | (~xff0x@2001:1a81:522c:4300:7515:65a1:dfa5:eb8b) |
2021-09-15 03:21:06 +0200 | favonia | (~favonia@user/favonia) (Ping timeout: 260 seconds) |
2021-09-15 03:24:55 +0200 | fjmorazan | (~quassel@user/fjmorazan) (Quit: fjmorazan) |
2021-09-15 03:25:32 +0200 | fjmorazan | (~quassel@user/fjmorazan) |
2021-09-15 03:27:58 +0200 | cheater | (~Username@user/cheater) (Ping timeout: 268 seconds) |
2021-09-15 03:29:26 +0200 | moats | (~oats@user/oats) |
2021-09-15 03:29:44 +0200 | neurocyte4 | (~neurocyte@IP-185189140114.dynamic.medianet-world.de) |
2021-09-15 03:29:44 +0200 | neurocyte4 | (~neurocyte@IP-185189140114.dynamic.medianet-world.de) (Changing host) |
2021-09-15 03:29:44 +0200 | neurocyte4 | (~neurocyte@user/neurocyte) |
2021-09-15 03:30:59 +0200 | cheater | (~Username@user/cheater) |
2021-09-15 03:31:53 +0200 | neurocyte | (~neurocyte@user/neurocyte) (Ping timeout: 268 seconds) |
2021-09-15 03:31:53 +0200 | neurocyte4 | neurocyte |
2021-09-15 03:33:55 +0200 | favonia | (~favonia@user/favonia) |
2021-09-15 03:34:19 +0200 | zaquest | (~notzaques@5.128.210.178) (Quit: Leaving) |
2021-09-15 03:41:32 +0200 | favonia | (~favonia@user/favonia) (Ping timeout: 268 seconds) |
2021-09-15 03:42:26 +0200 | zaquest | (~notzaques@5.128.210.178) |
2021-09-15 03:44:11 +0200 | abhixec | (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) |
2021-09-15 03:44:19 +0200 | burnside_ | (~burnsides@client-8-86.eduroam.oxuni.org.uk) (Remote host closed the connection) |
2021-09-15 03:44:45 +0200 | oats | oats_ |
2021-09-15 03:45:46 +0200 | moats | oats |
2021-09-15 03:47:02 +0200 | sayola | (~vekto@dslb-088-064-186-138.088.064.pools.vodafone-ip.de) (Read error: Connection reset by peer) |
2021-09-15 03:50:57 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-15 03:51:04 +0200 | tomku | (~tomku@user/tomku) (Ping timeout: 252 seconds) |
2021-09-15 03:51:11 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-15 03:51:24 +0200 | vysn | (~vysn@user/vysn) (Ping timeout: 268 seconds) |
2021-09-15 03:53:23 +0200 | favonia | (~favonia@user/favonia) |
2021-09-15 03:53:40 +0200 | pony | (~ed@101.100.135.26) |
2021-09-15 03:54:13 +0200 | sim590 | (~simon@modemcable090.207-203-24.mc.videotron.ca) (Ping timeout: 252 seconds) |
2021-09-15 03:57:35 +0200 | tomku | (~tomku@user/tomku) |
2021-09-15 03:59:54 +0200 | lemonsnicks | (~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 +0200 | lemonsnicks | (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) |
2021-09-15 04:01:22 +0200 | favonia | (~favonia@user/favonia) (Ping timeout: 252 seconds) |
2021-09-15 04:01:23 +0200 | slep | (~slep@cpc150002-brnt4-2-0-cust437.4-2.cable.virginm.net) (Ping timeout: 265 seconds) |
2021-09-15 04:02:16 +0200 | slep | (~slep@cpc150002-brnt4-2-0-cust437.4-2.cable.virginm.net) |
2021-09-15 04:04:10 +0200 | shapr | (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 252 seconds) |
2021-09-15 04:04:18 +0200 | lbseale | (~lbseale@user/ep1ctetus) (Read error: Connection reset by peer) |
2021-09-15 04:05:03 +0200 | Toast52 | (~Toast52@151.192.167.120) |
2021-09-15 04:07:53 +0200 | sim590 | (~simon@modemcable090.207-203-24.mc.videotron.ca) |
2021-09-15 04:14:33 +0200 | favonia | (~favonia@user/favonia) |
2021-09-15 04:16:17 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-15 04:16:32 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-15 04:21:10 +0200 | favonia | (~favonia@user/favonia) (Ping timeout: 252 seconds) |
2021-09-15 04:23:28 +0200 | td_ | (~td@muedsl-82-207-238-177.citykom.de) (Ping timeout: 268 seconds) |
2021-09-15 04:25:02 +0200 | td_ | (~td@muedsl-82-207-238-063.citykom.de) |
2021-09-15 04:25:04 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds) |
2021-09-15 04:26:41 +0200 | alx741 | (~alx741@181.196.68.49) (Quit: alx741) |
2021-09-15 04:26:44 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-09-15 04:29:42 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-15 04:31:51 +0200 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) |
2021-09-15 04:34:05 +0200 | zebrag | (~chris@user/zebrag) (Quit: Konversation terminated!) |
2021-09-15 04:34:35 +0200 | favonia | (~favonia@user/favonia) |
2021-09-15 04:35:42 +0200 | gioyik | (~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 276 seconds) |
2021-09-15 04:35:50 +0200 | System123 | (~System123@203-134-35-213.sta.estpak.ee) |
2021-09-15 04:39:14 +0200 | betelgeuse | (~betelgeus@94-225-47-8.access.telenet.be) (Quit: Ping timeout (120 seconds)) |
2021-09-15 04:40:20 +0200 | System123 | (~System123@203-134-35-213.sta.estpak.ee) (Ping timeout: 268 seconds) |
2021-09-15 04:41:30 +0200 | favonia | (~favonia@user/favonia) (Ping timeout: 265 seconds) |
2021-09-15 04:41:42 +0200 | betelgeuse | (~betelgeus@94-225-47-8.access.telenet.be) |
2021-09-15 04:46:02 +0200 | myShoggoth | (~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 +0200 | favonia | (~favonia@user/favonia) |
2021-09-15 04:57:19 +0200 | meinside | (uid24933@id-24933.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
2021-09-15 04:58:04 +0200 | favonia | (~favonia@user/favonia) (Ping timeout: 252 seconds) |
2021-09-15 04:58:34 +0200 | FinnElija | (~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 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2021-09-15 05:04:04 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
2021-09-15 05:11:07 +0200 | favonia | (~favonia@user/favonia) |
2021-09-15 05:11:13 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds) |
2021-09-15 05:13:22 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-09-15 05:19:28 +0200 | sneedsfeed | (~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 +0200 | oats | moats |
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 +0200 | meinside | (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 +0200 | raehik | (~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 +0200 | oats_ | 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 +0200 | raehik | (~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 +0200 | lemonsnicks | (~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 +0200 | Toast52_ | (~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 +0200 | lemonsnicks | (~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 +0200 | raehik | (~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 +0200 | Toast52 | (~Toast52@151.192.167.120) (Ping timeout: 265 seconds) |
2021-09-15 05:34:57 +0200 | raehik | (~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 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2) |
2021-09-15 05:46:31 +0200 | myShoggoth | (~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 +0200 | xlei | (znc@pool-68-129-84-118.nycmny.fios.verizon.net) (Ping timeout: 240 seconds) |
2021-09-15 06:06:12 +0200 | Gurkenglas | (~Gurkengla@dslb-002-207-014-195.002.207.pools.vodafone-ip.de) |
2021-09-15 06:06:52 +0200 | Gurkenglas | (~Gurkengla@dslb-002-207-014-195.002.207.pools.vodafone-ip.de) (Read error: Connection reset by peer) |
2021-09-15 06:07:10 +0200 | Gurkenglas | (~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 +0200 | lemonsnicks | (~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 +0200 | lemonsnicks | (~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 +0200 | Toast52_ | (~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 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds) |
2021-09-15 06:39:13 +0200 | abhixec | (~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 +0200 | phma_ | (~phma@host-67-44-208-112.hnremote.net) |
2021-09-15 06:46:22 +0200 | phma | (~phma@host-67-44-208-112.hnremote.net) (Ping timeout: 252 seconds) |
2021-09-15 06:48:06 +0200 | sneedsfeed | (~sneedsfee@rrcs-173-95-122-169.midsouth.biz.rr.com) (Quit: Client closed) |
2021-09-15 06:48:45 +0200 | phma | (~phma@host-67-44-208-112.hnremote.net) |
2021-09-15 06:49:18 +0200 | lemonsnicks | (~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 +0200 | lemonsnicks | (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) |
2021-09-15 06:50:27 +0200 | myShoggoth | (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 268 seconds) |
2021-09-15 06:51:34 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Remote host closed the connection) |
2021-09-15 06:51:34 +0200 | phma_ | (~phma@host-67-44-208-112.hnremote.net) (Ping timeout: 260 seconds) |
2021-09-15 06:51:36 +0200 | xlei | (akans@pool-68-129-84-118.nycmny.fios.verizon.net) |
2021-09-15 06:51:47 +0200 | MQ-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 +0200 | hendursaga | (~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 +0200 | phma_ | (~phma@host-67-44-208-70.hnremote.net) |
2021-09-15 07:01:22 +0200 | phma | (~phma@host-67-44-208-112.hnremote.net) (Ping timeout: 260 seconds) |
2021-09-15 07:02:09 +0200 | fef | (~thedawn@user/thedawn) |
2021-09-15 07:02:12 +0200 | ksu | (~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 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-15 07:06:50 +0200 | ubert | (~Thunderbi@178.165.181.26.wireless.dyn.drei.com) |
2021-09-15 07:11:38 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-15 07:11:51 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-15 07:22:45 +0200 | abhixec | (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) |
2021-09-15 07:29:32 +0200 | dsrt^ | (~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 +0200 | merijn | (~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 +0200 | wroathe | (~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 +0200 | Toast52 | (~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 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 268 seconds) |
2021-09-15 07:42:07 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-09-15 07:42:24 +0200 | slowButPresent | (~slowButPr@user/slowbutpresent) (Quit: leaving) |
2021-09-15 07:42:40 +0200 | takuan | (~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 +0200 | Lycurgus | (~juan@98.4.112.204) |
2021-09-15 07:48:41 +0200 | gioyik | (~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 +0200 | dut | (~dut@user/dut) |
2021-09-15 07:50:50 +0200 | abhixec | (~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 +0200 | ubert1 | (~Thunderbi@178.165.181.26.wireless.dyn.drei.com) |
2021-09-15 07:54:50 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 265 seconds) |
2021-09-15 07:55:19 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-09-15 07:57:44 +0200 | ubert | (~Thunderbi@178.165.181.26.wireless.dyn.drei.com) (Ping timeout: 265 seconds) |
2021-09-15 07:57:45 +0200 | ubert1 | ubert |
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 +0200 | ldlework | scratches 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 +0200 | pony | (~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 +0200 | pony | (~ed@101.100.135.26) |
2021-09-15 08:07:13 +0200 | machinedgod | (~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 +0200 | pony | (~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 +0200 | fef | (~thedawn@user/thedawn) (Quit: Leaving) |
2021-09-15 08:10:18 +0200 | xlei | (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 +0200 | pony | (~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 +0200 | falafel | (~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 +0200 | kenran | (~kenran@b2b-37-24-119-190.unitymedia.biz) |
2021-09-15 08:25:06 +0200 | phma_ | (~phma@host-67-44-208-70.hnremote.net) (Read error: Connection reset by peer) |
2021-09-15 08:25:29 +0200 | phma_ | (~phma@host-67-44-208-70.hnremote.net) |
2021-09-15 08:28:37 +0200 | dut | (~dut@user/dut) (Quit: Leaving) |
2021-09-15 08:29:04 +0200 | michalz | (~michalz@185.246.204.57) |
2021-09-15 08:29:57 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
2021-09-15 08:31:34 +0200 | chele | (~chele@user/chele) |
2021-09-15 08:33:00 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2021-09-15 08:36:58 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-15 08:37:11 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-15 08:42:58 +0200 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 252 seconds) |
2021-09-15 08:43:01 +0200 | dhouthoo | (~dhouthoo@178-117-36-167.access.telenet.be) |
2021-09-15 08:47:18 +0200 | max22- | (~maxime@2a01cb088335980009e300fcb92e8769.ipv6.abo.wanadoo.fr) |
2021-09-15 08:50:18 +0200 | VoidNoir0 | (~VoidNoir0@72.80.203.52) (Quit: Connection closed) |
2021-09-15 08:52:18 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-15 08:52:38 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-15 08:53:54 +0200 | vysn | (~vysn@user/vysn) |
2021-09-15 08:56:27 +0200 | cfricke | (~cfricke@user/cfricke) |
2021-09-15 08:56:53 +0200 | tromp | (~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 +0200 | lep | (~lep@94.31.80.176) (Ping timeout: 252 seconds) |
2021-09-15 09:02:45 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-15 09:03:00 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-15 09:04:13 +0200 | phma_ | (~phma@host-67-44-208-70.hnremote.net) (Read error: No route to host) |
2021-09-15 09:05:24 +0200 | pony | (~ed@101.100.135.26) (Quit: WeeChat 2.8) |
2021-09-15 09:06:30 +0200 | Lycurgus | (~juan@98.4.112.204) (Quit: Exeunt) |
2021-09-15 09:07:01 +0200 | phma_ | (~phma@host-67-44-208-70.hnremote.net) |
2021-09-15 09:08:00 +0200 | pony | (~ed@101.100.135.26) |
2021-09-15 09:08:29 +0200 | fendor | (~fendor@91.141.60.54.wireless.dyn.drei.com) |
2021-09-15 09:10:29 +0200 | ub | (~Thunderbi@178.165.181.26.wireless.dyn.drei.com) |
2021-09-15 09:12:54 +0200 | ubert | (~Thunderbi@178.165.181.26.wireless.dyn.drei.com) (Ping timeout: 268 seconds) |
2021-09-15 09:12:54 +0200 | ub | ubert |
2021-09-15 09:14:50 +0200 | falafel | (~falafel@2603-8000-d800-688c-4852-3b82-73df-20ff.res6.spectrum.com) (Ping timeout: 260 seconds) |
2021-09-15 09:15:45 +0200 | Toast52 | (~Toast52@151.192.167.120) (Quit: Leaving) |
2021-09-15 09:16:26 +0200 | eggplant_ | (~Eggplanta@2600:1700:bef1:5e10:7d7c:377a:4e03:5107) |
2021-09-15 09:17:07 +0200 | gioyik | (~gioyik@gateway/tor-sasl/gioyik) (Quit: WeeChat 3.1) |
2021-09-15 09:18:13 +0200 | lep | (~lep@94.31.80.176) |
2021-09-15 09:20:05 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:d58c:2ecc:67d4:668) (Ping timeout: 268 seconds) |
2021-09-15 09:21:32 +0200 | acidjnk_new | (~acidjnk@p200300d0c7203004a4342413982b89a9.dip0.t-ipconnect.de) |
2021-09-15 09:24:33 +0200 | phma | (~phma@host-67-44-208-59.hnremote.net) |
2021-09-15 09:25:19 +0200 | phma_ | (~phma@host-67-44-208-70.hnremote.net) (Ping timeout: 252 seconds) |
2021-09-15 09:27:25 +0200 | ubert1 | (~Thunderbi@178.165.181.26.wireless.dyn.drei.com) |
2021-09-15 09:29:57 +0200 | ubert | (~Thunderbi@178.165.181.26.wireless.dyn.drei.com) (Ping timeout: 268 seconds) |
2021-09-15 09:29:57 +0200 | ubert1 | ubert |
2021-09-15 09:31:32 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-15 09:33:14 +0200 | jstolarek | (~jstolarek@ers4.neoplus.adsl.tpnet.pl) |
2021-09-15 09:34:31 +0200 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2021-09-15 09:38:21 +0200 | phma_ | (~phma@host-67-44-208-80.hnremote.net) |
2021-09-15 09:41:16 +0200 | phma | (~phma@host-67-44-208-59.hnremote.net) (Ping timeout: 252 seconds) |
2021-09-15 09:47:19 +0200 | phma_ | (~phma@host-67-44-208-80.hnremote.net) (Ping timeout: 252 seconds) |
2021-09-15 09:47:27 +0200 | phma | (~phma@host-67-44-208-20.hnremote.net) |
2021-09-15 09:48:11 +0200 | benin036932301 | (~benin@183.82.24.197) |
2021-09-15 09:49:29 +0200 | eggplant_ | (~Eggplanta@2600:1700:bef1:5e10:7d7c:377a:4e03:5107) (Remote host closed the connection) |
2021-09-15 09:57:54 +0200 | phma_ | (~phma@host-67-44-208-86.hnremote.net) |
2021-09-15 09:58:52 +0200 | phma | (~phma@host-67-44-208-20.hnremote.net) (Ping timeout: 252 seconds) |
2021-09-15 10:05:56 +0200 | acidjnk_new3 | (~acidjnk@p200300d0c7203004e1439791f2b63139.dip0.t-ipconnect.de) |
2021-09-15 10:07:06 +0200 | phma_ | (~phma@host-67-44-208-86.hnremote.net) (Ping timeout: 260 seconds) |
2021-09-15 10:07:26 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
2021-09-15 10:07:37 +0200 | phma_ | (~phma@host-67-44-208-13.hnremote.net) |
2021-09-15 10:07:40 +0200 | acidjnk | (~acidjnk@p200300d0c720300449bf8ace8b93cd9d.dip0.t-ipconnect.de) |
2021-09-15 10:08:19 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2021-09-15 10:09:38 +0200 | acidjnk_new | (~acidjnk@p200300d0c7203004a4342413982b89a9.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
2021-09-15 10:10:20 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
2021-09-15 10:10:34 +0200 | acidjnk_new3 | (~acidjnk@p200300d0c7203004e1439791f2b63139.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2021-09-15 10:13:06 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-15 10:13:19 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-15 10:13:23 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Client Quit) |
2021-09-15 10:13:53 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-15 10:14:41 +0200 | phma | (~phma@host-67-44-208-13.hnremote.net) |
2021-09-15 10:14:50 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:c8a8:7443:54e5:e9f7) |
2021-09-15 10:15:22 +0200 | phma_ | (~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 +0200 | allbery_b | (~geekosaur@xmonad/geekosaur) |
2021-09-15 10:17:44 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
2021-09-15 10:17:47 +0200 | allbery_b | geekosaur |
2021-09-15 10:19:10 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:c8a8:7443:54e5:e9f7) (Ping timeout: 240 seconds) |
2021-09-15 10:19:50 +0200 | notzmv | (~zmv@user/notzmv) (Ping timeout: 260 seconds) |
2021-09-15 10:22:27 +0200 | phma_ | (~phma@host-67-44-208-95.hnremote.net) |
2021-09-15 10:23:07 +0200 | arjun | (~Srain@user/arjun) |
2021-09-15 10:23:09 +0200 | <arjun> | hi |
2021-09-15 10:23:40 +0200 | phma | (~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 +0200 | phma | (~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 +0200 | phma_ | (~phma@host-67-44-208-95.hnremote.net) (Ping timeout: 252 seconds) |
2021-09-15 10:34:01 +0200 | azeem | (~azeem@2a00:801:3c1:c79f:2f67:8901:c99e:d77d) (Read error: Connection reset by peer) |
2021-09-15 10:34:20 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2021-09-15 10:34:44 +0200 | azeem | (~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 +0200 | Akronymus | (~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 +0200 | econo | (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 +0200 | eggplantade | (~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 +0200 | phma_ | (~phma@host-67-44-208-51.hnremote.net) |
2021-09-15 10:41:49 +0200 | phma | (~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 +0200 | eggplantade | (~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 +0200 | hnOsmium0001 | (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 +0200 | amitnjha | (~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 +0200 | amitnjha | (~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 +0200 | arjun | (~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 +0200 | pony | (~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 +0200 | max22- | (~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 +0200 | sedeki | (~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 +0200 | merijn | (~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 +0200 | shriekingnoise | (~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 +0200 | sedeki | (~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 +0200 | Guest66 | (~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 +0200 | Guest66 | (~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 +0200 | amitnjha | (~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 +0200 | amitnjha | (~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 +0200 | waleee | (~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 +0200 | tromp | (~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 +0200 | qbt | (~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 +0200 | max22- | (~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 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-15 11:34:52 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-15 11:35:40 +0200 | merijn | (~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 +0200 | gentauro | (~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 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2021-09-15 11:49:28 +0200 | gentauro | (~gentauro@user/gentauro) |
2021-09-15 11:50:09 +0200 | infinity0 | (~infinity0@occupy.ecodis.net) (Ping timeout: 268 seconds) |
2021-09-15 11:50:20 +0200 | Drezil | (~drezilkif@2001:470:69fc:105::7f8) |
2021-09-15 11:51:41 +0200 | Drezil | (~drezilkif@2001:470:69fc:105::7f8) (Client Quit) |
2021-09-15 11:51:53 +0200 | Drezil | (~drezilkif@2001:470:69fc:105::7f8) |
2021-09-15 11:54:03 +0200 | infinity0 | (~infinity0@occupy.ecodis.net) |
2021-09-15 11:55:09 +0200 | Drezil | (~drezilkif@2001:470:69fc:105::7f8) () |
2021-09-15 11:59:58 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-15 12:00:11 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-15 12:02:17 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2021-09-15 12:04:51 +0200 | mousey | (~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 +0200 | keltono | (~kelton@x-160-94-179-178.acm.umn.edu) (Ping timeout: 250 seconds) |
2021-09-15 12:10:58 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2021-09-15 12:12:28 +0200 | keltono | (~kelton@x-160-94-179-178.acm.umn.edu) |
2021-09-15 12:18:31 +0200 | azeem | (~azeem@emp-91-123.eduroam.uu.se) (Ping timeout: 268 seconds) |
2021-09-15 12:20:04 +0200 | azeem | (~azeem@emp-91-123.eduroam.uu.se) |
2021-09-15 12:23:55 +0200 | JeHugawa | (~jehugawa@2a01:4f9:c010:4649::1) (WeeChat 3.0) |
2021-09-15 12:28:34 +0200 | biberu | (~biberu@user/biberu) (Read error: Connection reset by peer) |
2021-09-15 12:29:03 +0200 | notzmv | (~zmv@user/notzmv) |
2021-09-15 12:37:06 +0200 | biberu | (~biberu@user/biberu) |
2021-09-15 12:39:15 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-09-15 12:44:25 +0200 | peutri | (~peutri@ns317027.ip-94-23-46.eu) (Ping timeout: 252 seconds) |
2021-09-15 12:45:13 +0200 | peutri | (~peutri@ns317027.ip-94-23-46.eu) |
2021-09-15 12:48:01 +0200 | gehmehgeh | (~user@user/gehmehgeh) |
2021-09-15 12:50:28 +0200 | dunj3 | (~dunj3@2001:16b8:305a:a200:87e0:bcb5:daf8:ae0a) |
2021-09-15 12:56:38 +0200 | vysn | (~vysn@user/vysn) (Quit: WeeChat 3.2) |
2021-09-15 12:56:56 +0200 | vysn | (~vysn@user/vysn) |
2021-09-15 13:00:57 +0200 | alx741 | (~alx741@181.196.68.49) |
2021-09-15 13:04:42 +0200 | hendursaga | (~weechat@user/hendursaga) |
2021-09-15 13:06:58 +0200 | azeem | (~azeem@emp-91-123.eduroam.uu.se) (Ping timeout: 252 seconds) |
2021-09-15 13:09:47 +0200 | phma_ | phma |
2021-09-15 13:09:52 +0200 | azeem | (~azeem@emp-91-123.eduroam.uu.se) |
2021-09-15 13:09:57 +0200 | Everything | (~Everythin@37.115.210.35) |
2021-09-15 13:23:17 +0200 | mc47 | (~mc47@xmonad/TheMC47) |
2021-09-15 13:33:28 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-15 13:33:28 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer) |
2021-09-15 13:35:36 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) |
2021-09-15 13:41:50 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:2c24:ccb8:c224:8028) |
2021-09-15 13:41:50 +0200 | Vajb | (~Vajb@n1fdw1j4uyo9saqj8-2.v6.elisa-mobile.fi) (Read error: Connection reset by peer) |
2021-09-15 13:42:11 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2021-09-15 13:46:04 +0200 | eggplantade | (~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 +0200 | xlei | (akans@pool-68-129-84-118.nycmny.fios.verizon.net) |
2021-09-15 13:54:40 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2021-09-15 13:58:37 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-09-15 14:02:38 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2021-09-15 14:05:16 +0200 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.2.1) |
2021-09-15 14:05:34 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
2021-09-15 14:06:13 +0200 | max22- | (~maxime@2a01cb088335980025f007adc3069cd5.ipv6.abo.wanadoo.fr) (Ping timeout: 268 seconds) |
2021-09-15 14:08:59 +0200 | burnsidesLlama | (~burnsides@dhcp168-024.wadham.ox.ac.uk) |
2021-09-15 14:10:45 +0200 | hyiltiz | (~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 +0200 | acidjnk_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 +0200 | acidjnk | (~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 +0200 | ub | (~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 +0200 | tromp | (~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 +0200 | ubert | (~Thunderbi@178.165.181.26.wireless.dyn.drei.com) (Ping timeout: 268 seconds) |
2021-09-15 14:20:00 +0200 | ub | ubert |
2021-09-15 14:23:51 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-09-15 14:25:43 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
2021-09-15 14:26:43 +0200 | TranquilEcho | (~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 +0200 | burnsidesLlama | (~burnsides@dhcp168-024.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-09-15 14:41:30 +0200 | acidjnk_new | (~acidjnk@p5487d0ba.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2021-09-15 14:41:41 +0200 | benin036932301 | (~benin@183.82.24.197) (Quit: The Lounge - https://thelounge.chat) |
2021-09-15 14:44:33 +0200 | jstolarek | (~jstolarek@ers4.neoplus.adsl.tpnet.pl) (Quit: leaving) |
2021-09-15 14:44:51 +0200 | jstolarek | (~jstolarek@ers4.neoplus.adsl.tpnet.pl) |
2021-09-15 14:45:00 +0200 | pbrisbin | (~patrick@pool-173-49-147-250.phlapa.fios.verizon.net) |
2021-09-15 14:45:18 +0200 | jstolarek | (~jstolarek@ers4.neoplus.adsl.tpnet.pl) (Client Quit) |
2021-09-15 14:45:34 +0200 | jstolarek | (~jstolarek@ers4.neoplus.adsl.tpnet.pl) |
2021-09-15 14:45:46 +0200 | jstolarek | (~jstolarek@ers4.neoplus.adsl.tpnet.pl) (Client Quit) |
2021-09-15 14:45:54 +0200 | jstolarek | (~jstolarek@ers4.neoplus.adsl.tpnet.pl) |
2021-09-15 14:45:59 +0200 | jstolarek | (~jstolarek@ers4.neoplus.adsl.tpnet.pl) (Client Quit) |
2021-09-15 14:46:14 +0200 | jstolarek | (~jstolarek@ers4.neoplus.adsl.tpnet.pl) |
2021-09-15 14:46:40 +0200 | jstolarek | (~jstolarek@ers4.neoplus.adsl.tpnet.pl) (Client Quit) |
2021-09-15 14:46:48 +0200 | jstolarek | (~jstolarek@ers4.neoplus.adsl.tpnet.pl) |
2021-09-15 14:46:52 +0200 | jstolarek | (~jstolarek@ers4.neoplus.adsl.tpnet.pl) (Client Quit) |
2021-09-15 14:47:00 +0200 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) |
2021-09-15 14:47:09 +0200 | jstolarek | (~jstolarek@ers4.neoplus.adsl.tpnet.pl) |
2021-09-15 14:47:27 +0200 | jstolarek | (~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 +0200 | jstolarek | (~jstolarek@ers4.neoplus.adsl.tpnet.pl) |
2021-09-15 14:48:11 +0200 | <yin[m]> | s/od/of/ |
2021-09-15 14:48:42 +0200 | pbrisbin | (~patrick@pool-173-49-147-250.phlapa.fios.verizon.net) (Client Quit) |
2021-09-15 14:49:57 +0200 | pbrisbin | (~patrick@pool-173-49-147-250.phlapa.fios.verizon.net) |
2021-09-15 14:50:18 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-15 14:50:31 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-15 14:52:39 +0200 | Guest|98 | (~Guest|98@91.226.35.204) |
2021-09-15 14:52:47 +0200 | Guest|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 +0200 | turlando | (~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 +0200 | MQ-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 +0200 | MQ-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 +0200 | turlando | (~turlando@93-42-250-112.ip89.fastwebnet.it) |
2021-09-15 14:56:46 +0200 | turlando | (~turlando@93-42-250-112.ip89.fastwebnet.it) (Changing host) |
2021-09-15 14:56:46 +0200 | turlando | (~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 +0200 | shapr | (~user@pool-100-36-247-68.washdc.fios.verizon.net) |
2021-09-15 14:59:42 +0200 | jokleinn | (~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 +0200 | hyiltiz | (~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 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-09-15 15:03:55 +0200 | lbseale | (~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 +0200 | akronymus[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 +0200 | eggplantade | (~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 +0200 | awpr | (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 +0200 | System123 | (~System123@x590feea0.dyn.telefonica.de) |
2021-09-15 15:09:58 +0200 | <zzz> | nope |
2021-09-15 15:09:58 +0200 | eggplantade | (~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 +0200 | MQ-17J | (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Ping timeout: 268 seconds) |
2021-09-15 15:15:16 +0200 | burnsidesLlama | (~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 +0200 | ubert | (~Thunderbi@178.165.181.26.wireless.dyn.drei.com) (Read error: Connection reset by peer) |
2021-09-15 15:17:55 +0200 | ubert | (~Thunderbi@178.165.181.26.wireless.dyn.drei.com) |
2021-09-15 15:18:04 +0200 | slowButPresent | (~slowButPr@user/slowbutpresent) |
2021-09-15 15:18:32 +0200 | ubert1 | (~Thunderbi@178.165.181.26.wireless.dyn.drei.com) |
2021-09-15 15:19:05 +0200 | <xsperry> | np! |
2021-09-15 15:19:08 +0200 | MQ-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 +0200 | burnsidesLlama | (~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 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:fcfd:5153:b61b:fe3d) |
2021-09-15 15:22:35 +0200 | ubert | (~Thunderbi@178.165.181.26.wireless.dyn.drei.com) (Ping timeout: 260 seconds) |
2021-09-15 15:22:36 +0200 | ubert1 | ubert |
2021-09-15 15:23:46 +0200 | jumper149 | (~jumper149@80.240.31.34) |
2021-09-15 15:25:38 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-15 15:25:51 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-15 15:26:09 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Client Quit) |
2021-09-15 15:26:22 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-15 15:27:16 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:fcfd:5153:b61b:fe3d) (Ping timeout: 252 seconds) |
2021-09-15 15:28:22 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2021-09-15 15:31:29 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-15 15:31:42 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-15 15:35:38 +0200 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 268 seconds) |
2021-09-15 15:38:56 +0200 | arkanoid | (~arkanoid@2-238-151-49.ip244.fastwebnet.it) (Ping timeout: 268 seconds) |
2021-09-15 15:41:31 +0200 | hyiltiz | (~quassel@31.220.5.250) |
2021-09-15 15:41:38 +0200 | arkanoid | (~arkanoid@2-238-151-49.ip244.fastwebnet.it) |
2021-09-15 15:49:39 +0200 | thyriaen | (~thyriaen@dynamic-078-054-146-050.78.54.pool.telefonica.de) |
2021-09-15 15:50:20 +0200 | burnsidesLlama | (~burnsides@dhcp168-024.wadham.ox.ac.uk) |
2021-09-15 15:51:49 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-15 15:52:02 +0200 | vaucouleur | (~vaucouleu@176.124.42.130) |
2021-09-15 15:52:06 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-15 15:52:10 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Client Quit) |
2021-09-15 15:52:31 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-15 15:52:34 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Client Quit) |
2021-09-15 15:52:47 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-15 15:54:43 +0200 | vaucouleur | (~vaucouleu@176.124.42.130) (Client Quit) |
2021-09-15 15:54:47 +0200 | vaucouleur_ | (~vaucouleu@176.124.42.130) |
2021-09-15 15:54:54 +0200 | vaucouleur_ | (~vaucouleu@176.124.42.130) (Remote host closed the connection) |
2021-09-15 15:55:08 +0200 | vaucouleur | (~vaucouleu@176.124.42.130) |
2021-09-15 15:55:12 +0200 | vaucouleur_ | (~vaucouleu@176.124.42.130) |
2021-09-15 15:55:23 +0200 | vaucouleur_ | (~vaucouleu@176.124.42.130) (Remote host closed the connection) |
2021-09-15 15:55:23 +0200 | vaucouleur | (~vaucouleu@176.124.42.130) (Remote host closed the connection) |
2021-09-15 15:55:37 +0200 | vaucouleur | (~vaucouleu@176.124.42.130) |
2021-09-15 15:55:40 +0200 | burnsidesLlama | (~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 +0200 | ubert1 | (~Thunderbi@178.165.161.81.wireless.dyn.drei.com) |
2021-09-15 16:02:40 +0200 | mikoto-chan | (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) |
2021-09-15 16:03:02 +0200 | max22- | (~maxime@2a01cb0883359800e3a3878268dcbc1e.ipv6.abo.wanadoo.fr) |
2021-09-15 16:03:31 +0200 | ubert | (~Thunderbi@178.165.181.26.wireless.dyn.drei.com) (Ping timeout: 252 seconds) |
2021-09-15 16:03:31 +0200 | ubert1 | ubert |
2021-09-15 16:04:12 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-15 16:04:22 +0200 | Sgeo | (~Sgeo@user/sgeo) |
2021-09-15 16:10:59 +0200 | ubert | (~Thunderbi@178.165.161.81.wireless.dyn.drei.com) (Remote host closed the connection) |
2021-09-15 16:11:37 +0200 | ubert | (~Thunderbi@178.165.161.81.wireless.dyn.drei.com) |
2021-09-15 16:12:15 +0200 | shriekingnoise | (~shrieking@186.137.144.80) |
2021-09-15 16:12:52 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-15 16:13:13 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-15 16:13:26 +0200 | hnOsmium0001 | (uid453710@id-453710.hampstead.irccloud.com) |
2021-09-15 16:13:49 +0200 | System123 | (~System123@x590feea0.dyn.telefonica.de) (Remote host closed the connection) |
2021-09-15 16:14:09 +0200 | Akronymus | (~Akronymus@85.31.8.180) (Quit: Client closed) |
2021-09-15 16:15:34 +0200 | doyougnu | (~user@c-73-25-202-122.hsd1.or.comcast.net) |
2021-09-15 16:17:36 +0200 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2021-09-15 16:19:38 +0200 | ub | (~Thunderbi@178.165.161.81.wireless.dyn.drei.com) |
2021-09-15 16:21:14 +0200 | dunj3 | (~dunj3@2001:16b8:305a:a200:87e0:bcb5:daf8:ae0a) (Remote host closed the connection) |
2021-09-15 16:21:40 +0200 | tdammers | (~tdammers@77.109.72.213.res.static.edpnet.net) (Ping timeout: 240 seconds) |
2021-09-15 16:24:46 +0200 | tdammers | (~tdammers@77.109.72.213.res.static.edpnet.net) |
2021-09-15 16:26:13 +0200 | ubert | (~Thunderbi@178.165.161.81.wireless.dyn.drei.com) (Read error: Connection reset by peer) |
2021-09-15 16:26:13 +0200 | ub | ubert |
2021-09-15 16:26:27 +0200 | ubert1 | (~Thunderbi@178.165.161.81.wireless.dyn.drei.com) |
2021-09-15 16:27:51 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-09-15 16:27:52 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-09-15 16:27:52 +0200 | wroathe | (~wroathe@user/wroathe) |
2021-09-15 16:30:28 +0200 | ubert | (~Thunderbi@178.165.161.81.wireless.dyn.drei.com) (Ping timeout: 252 seconds) |
2021-09-15 16:30:28 +0200 | ubert1 | ubert |
2021-09-15 16:33:19 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-15 16:33:33 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-15 16:35:25 +0200 | tdammers | (~tdammers@77.109.72.213.res.static.edpnet.net) (Ping timeout: 252 seconds) |
2021-09-15 16:36:41 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
2021-09-15 16:37:34 +0200 | cfricke | (~cfricke@user/cfricke) (Quit: WeeChat 3.2.1) |
2021-09-15 16:37:50 +0200 | Erutuon | (~Erutuon@user/erutuon) |
2021-09-15 16:38:05 +0200 | phma | (~phma@host-67-44-208-51.hnremote.net) (Read error: Connection reset by peer) |
2021-09-15 16:38:44 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-15 16:39:03 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-15 16:39:25 +0200 | phma | (~phma@host-67-44-208-97.hnremote.net) |
2021-09-15 16:39:38 +0200 | myShoggoth | (~myShoggot@97-120-70-214.ptld.qwest.net) |
2021-09-15 16:44:20 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Read error: Connection reset by peer) |
2021-09-15 16:46:20 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-15 16:46:39 +0200 | timCF | (~timCF@m91-129-108-244.cust.tele2.ee) |
2021-09-15 16:50:10 +0200 | kenran | (~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 +0200 | lbseale | (~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 +0200 | lbseale | (~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 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-15 16:59:15 +0200 | amitnjha | (~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 +0200 | amahl | (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) |
2021-09-15 17:03:36 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Client Quit) |
2021-09-15 17:09:21 +0200 | chexum | (~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 +0200 | jstolarek | (~jstolarek@ers4.neoplus.adsl.tpnet.pl) (Ping timeout: 265 seconds) |
2021-09-15 17:12:31 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2021-09-15 17:13:56 +0200 | amitnjha | (~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 +0200 | TranquilEcho | (~grom@user/tranquilecho) (Ping timeout: 240 seconds) |
2021-09-15 17:19:16 +0200 | tdammers | (~tdammers@77.109.72.213.res.static.edpnet.net) |
2021-09-15 17:19:35 +0200 | TranquilEcho | (~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 +0200 | mikoto-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 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:fcfd:5153:b61b:fe3d) |
2021-09-15 17:27:33 +0200 | juhp | (~juhp@128.106.188.220) (Quit: juhp) |
2021-09-15 17:27:47 +0200 | juhp | (~juhp@128.106.188.220) |
2021-09-15 17:29:37 +0200 | vaucouleur_ | (~vaucouleu@176.124.42.130) |
2021-09-15 17:33:25 +0200 | vaucouleur | (~vaucouleu@176.124.42.130) (Ping timeout: 268 seconds) |
2021-09-15 17:37:04 +0200 | Guest6824 | (~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 +0200 | eggplantade | (~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 +0200 | tromp | (~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 +0200 | timCF | (~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 +0200 | amitnjha | (~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 +0200 | amitnjha | (~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 +0200 | vaucouleur_ | (~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 +0200 | vaucouleur | (~vaucouleu@176.124.42.130) |
2021-09-15 17:46:59 +0200 | vaucouleur | (~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 +0200 | vaucouleur | (~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 +0200 | justache | (~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 +0200 | justache | (~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 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-15 17:54:36 +0200 | amitnjha | (~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 +0200 | MQ-17J | (~MQ-17J@2607:fb90:4c:3555:c992:1c4a:cf9e:7fd6) (Read error: Connection reset by peer) |
2021-09-15 17:55:48 +0200 | MQ-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 +0200 | proofofkeags_ | (~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 +0200 | jokleinn | (~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 +0200 | wroathe | (~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 +0200 | tromp | (~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 +0200 | abhixec | (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) |
2021-09-15 18:12:06 +0200 | sneedsfeed | (~sneedsfee@rrcs-173-95-122-169.midsouth.biz.rr.com) |
2021-09-15 18:13:53 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:fcfd:5153:b61b:fe3d) |
2021-09-15 18:16:18 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-09-15 18:16:19 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-09-15 18:16:19 +0200 | wroathe | (~wroathe@user/wroathe) |
2021-09-15 18:20:17 +0200 | azeem | (~azeem@emp-91-123.eduroam.uu.se) (Ping timeout: 268 seconds) |
2021-09-15 18:22:07 +0200 | favonia | (~favonia@user/favonia) (Ping timeout: 252 seconds) |
2021-09-15 18:24:28 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 252 seconds) |
2021-09-15 18:25:51 +0200 | azeem | (~azeem@2a00:801:23a:d5ca:5e0:54f5:67cf:d7dc) |
2021-09-15 18:31:43 +0200 | jumper149 | (~jumper149@80.240.31.34) (Quit: WeeChat 3.2) |
2021-09-15 18:31:54 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2021-09-15 18:32:14 +0200 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-09-15 18:33:41 +0200 | ub | (~Thunderbi@178.165.161.81.wireless.dyn.drei.com) |
2021-09-15 18:33:59 +0200 | azeem | (~azeem@2a00:801:23a:d5ca:5e0:54f5:67cf:d7dc) (Read error: Connection reset by peer) |
2021-09-15 18:34:29 +0200 | sneedsfeed | (~sneedsfee@rrcs-173-95-122-169.midsouth.biz.rr.com) (Ping timeout: 256 seconds) |
2021-09-15 18:36:11 +0200 | chele | (~chele@user/chele) (Remote host closed the connection) |
2021-09-15 18:36:25 +0200 | ub | (~Thunderbi@178.165.161.81.wireless.dyn.drei.com) (Client Quit) |
2021-09-15 18:36:43 +0200 | ub | (~Thunderbi@178.165.161.81.wireless.dyn.drei.com) |
2021-09-15 18:37:40 +0200 | azeem | (~azeem@2a00:801:23a:d5ca:5e0:54f5:67cf:d7dc) |
2021-09-15 18:37:51 +0200 | Guest6824 | (~Guest68@117.223.62.136) (Quit: Client closed) |
2021-09-15 18:39:06 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:fcfd:5153:b61b:fe3d) (Remote host closed the connection) |
2021-09-15 18:39:43 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-15 18:39:56 +0200 | amitnjha | (~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 +0200 | vaucouleur | (~vaucouleu@176.124.42.130) (Read error: Connection reset by peer) |
2021-09-15 18:43:47 +0200 | jokleinn | (~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 +0200 | pretty_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 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:fcfd:5153:b61b:fe3d) |
2021-09-15 18:48:49 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-15 18:49:32 +0200 | gehmehgeh | (~user@user/gehmehgeh) (Quit: Leaving) |
2021-09-15 18:51:07 +0200 | ub | (~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 +0200 | azeem | (~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 +0200 | azeem | (~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 +0200 | kilolympus | (~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 +0200 | azeem | (~azeem@emp-91-123.eduroam.uu.se) (Read error: Connection reset by peer) |
2021-09-15 18:59:49 +0200 | azeem | (~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 +0200 | slack1256 | (~slack1256@adsl-99-88-236-73.dsl.hstntx.sbcglobal.net) |
2021-09-15 19:03:26 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
2021-09-15 19:05:39 +0200 | econo | (uid147250@user/econo) |
2021-09-15 19:06:54 +0200 | Lycurgus | (~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 +0200 | favonia | (~favonia@user/favonia) |
2021-09-15 19:13:36 +0200 | kenran | (~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 +0200 | kimjetwav | (~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 +0200 | kimjetwav | (~user@2607:fea8:235f:9730:7652:9a19:d3a:6562) |
2021-09-15 19:16:16 +0200 | Vajb | (~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 +0200 | Vajb | (~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 +0200 | zebrag | (~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 +0200 | merijn | (~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 +0200 | lbseale | (~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 +0200 | arahael | (~arahael@203.221.121.242) (Ping timeout: 268 seconds) |
2021-09-15 19:27:52 +0200 | tromp | (~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 +0200 | mixfix41 | (~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 +0200 | mousey | (~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 +0200 | lbseale | (~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 +0200 | Guest3294 | (~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 +0200 | Guest3294 | (~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 +0200 | bitmapper | (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 +0200 | arahael | (~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 +0200 | chisui | (~chisui@200116b8640ff5001ded5de399d498df.dip.versatel-1u1.de) |
2021-09-15 19:53:25 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) |
2021-09-15 19:53:28 +0200 | sim590 | (~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 +0200 | Lycurgus | (~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 +0200 | nighteyes | (~user@ip-185-104-136-52.ptr.icomera.net) |
2021-09-15 20:06:37 +0200 | tubogram | (~tubogram@user/tubogram) (Quit: See ya later!) |
2021-09-15 20:09:46 +0200 | awpr | (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 +0200 | tubogram | (~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 +0200 | proofofkeags__ | (~proofofke@205.209.24.233) |
2021-09-15 20:15:01 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-09-15 20:15:03 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-15 20:15:21 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-15 20:15:36 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds) |
2021-09-15 20:17:40 +0200 | proofofkeags_ | (~proofofke@205.209.28.54) (Ping timeout: 268 seconds) |
2021-09-15 20:17:46 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-09-15 20:17:46 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-09-15 20:17:46 +0200 | wroathe | (~wroathe@user/wroathe) |
2021-09-15 20:18:01 +0200 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-09-15 20:22:20 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) |
2021-09-15 20:30:26 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-15 20:30:39 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-15 20:34:25 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2021-09-15 20:35:14 +0200 | jokleinn | (~jokleinn@user/jokleinn) (Ping timeout: 260 seconds) |
2021-09-15 20:36:25 +0200 | max22- | (~maxime@2a01cb0883359800e3a3878268dcbc1e.ipv6.abo.wanadoo.fr) (Ping timeout: 260 seconds) |
2021-09-15 20:43:51 +0200 | mikoto-chan | (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) |
2021-09-15 20:45:46 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-15 20:46:01 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-15 20:46:42 +0200 | nighteyes | (~user@ip-185-104-136-52.ptr.icomera.net) (Quit: leaving) |
2021-09-15 20:48:33 +0200 | lavaman | (~lavaman@98.38.249.169) |
2021-09-15 20:51:21 +0200 | mousey | (~sky@gateway/tor-sasl/mousey) (Ping timeout: 276 seconds) |
2021-09-15 20:53:26 +0200 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 268 seconds) |
2021-09-15 20:58:00 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2021-09-15 21:00:27 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds) |
2021-09-15 21:01:19 +0200 | nattiestnate | (~nate@2001:448a:20a0:4134:25e:715f:d637:5263) |
2021-09-15 21:03:14 +0200 | MQ-17J | (~MQ-17J@8.21.10.6) (Ping timeout: 260 seconds) |
2021-09-15 21:04:09 +0200 | max22- | (~maxime@2a01cb08833598007ebd7c63f02c86ef.ipv6.abo.wanadoo.fr) |
2021-09-15 21:06:46 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:fcfd:5153:b61b:fe3d) (Remote host closed the connection) |
2021-09-15 21:07:15 +0200 | dsf_ | dsf |
2021-09-15 21:07:30 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) |
2021-09-15 21:09:25 +0200 | asivitz | (uid178348@id-178348.tinside.irccloud.com) |
2021-09-15 21:09:38 +0200 | nattiestnate | (~nate@2001:448a:20a0:4134:25e:715f:d637:5263) (Quit: WeeChat 3.2) |
2021-09-15 21:09:51 +0200 | nattiestnate | (~nate@2001:448a:20a0:4134:25e:715f:d637:5263) |
2021-09-15 21:11:07 +0200 | qbt | (~edun@user/edun) (Ping timeout: 252 seconds) |
2021-09-15 21:11:24 +0200 | vaucouleur | (~vaucouleu@78.194.70.105) |
2021-09-15 21:12:27 +0200 | tromp | (~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 +0200 | Pickchea | (~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 +0200 | merijn | (~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 +0200 | lavaman | (~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 +0200 | lavaman | (~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 +0200 | chisui97 | (~chisui@200116b8640ff5008528468472c032d2.dip.versatel-1u1.de) |
2021-09-15 21:32:48 +0200 | chisui | (~chisui@200116b8640ff5001ded5de399d498df.dip.versatel-1u1.de) (Quit: Client closed) |
2021-09-15 21:33:12 +0200 | pavonia | (~user@user/siracusa) |
2021-09-15 21:41:47 +0200 | <ldlework> | monochrom: hehe |
2021-09-15 21:42:24 +0200 | Tuplanolla | (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) |
2021-09-15 21:46:07 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-15 21:46:23 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-15 21:46:36 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds) |
2021-09-15 21:47:46 +0200 | stites | (~stitescoc@130.44.141.131) (Ping timeout: 256 seconds) |
2021-09-15 21:48:01 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2021-09-15 21:49:12 +0200 | mc47 | (~mc47@xmonad/TheMC47) (Quit: Leaving) |
2021-09-15 21:50:52 +0200 | stites | (~stitescoc@130.44.141.131) |
2021-09-15 21:53:02 +0200 | dhouthoo | (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.2) |
2021-09-15 21:53:15 +0200 | mikoto-chan | (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Ping timeout: 268 seconds) |
2021-09-15 21:53:30 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) |
2021-09-15 21:54:16 +0200 | kenran | (~kenran@200116b82b607e001ad403c97222d218.dip.versatel-1u1.de) (Ping timeout: 268 seconds) |
2021-09-15 21:54:23 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2021-09-15 21:54:49 +0200 | kenran | (~kenran@200116b82b607e00d5bfa4634406875a.dip.versatel-1u1.de) |
2021-09-15 21:56:26 +0200 | vaucouleur | (~vaucouleu@78.194.70.105) (Ping timeout: 260 seconds) |
2021-09-15 21:59:19 +0200 | acowley | (~acowley@c-68-83-22-43.hsd1.nj.comcast.net) (Read error: Connection reset by peer) |
2021-09-15 22:01:27 +0200 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:fcfd:5153:b61b:fe3d) |
2021-09-15 22:05:30 +0200 | juhp | (~juhp@128.106.188.220) (Ping timeout: 265 seconds) |
2021-09-15 22:06:30 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-15 22:06:54 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-15 22:07:17 +0200 | juhp | (~juhp@128.106.188.220) |
2021-09-15 22:08:24 +0200 | slack1256 | (~slack1256@adsl-99-88-236-73.dsl.hstntx.sbcglobal.net) (Ping timeout: 265 seconds) |
2021-09-15 22:16:57 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-15 22:17:20 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-15 22:22:24 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-15 22:22:37 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-15 22:22:37 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Client Quit) |
2021-09-15 22:22:42 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2021-09-15 22:22:45 +0200 | amitnjha | (~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 +0200 | dizney | (~dizney@80-100-91-169.ip.xs4all.nl) |
2021-09-15 22:27:48 +0200 | mikoto-chan | (~mikoto-ch@83.137.2.248) |
2021-09-15 22:27:51 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-15 22:28:04 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-15 22:28:04 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Client Quit) |
2021-09-15 22:28:11 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |
2021-09-15 22:32:45 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds) |
2021-09-15 22:34:02 +0200 | lbseale | (~lbseale@user/ep1ctetus) (Remote host closed the connection) |
2021-09-15 22:34:27 +0200 | lbseale | (~lbseale@user/ep1ctetus) |
2021-09-15 22:39:42 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) |
2021-09-15 22:41:16 +0200 | tromp | (~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 +0200 | abhixec | (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 268 seconds) |
2021-09-15 22:45:47 +0200 | kenran | (~kenran@200116b82b607e00d5bfa4634406875a.dip.versatel-1u1.de) (Quit: WeeChat info:version) |
2021-09-15 22:46:08 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) |
2021-09-15 22:47:04 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2021-09-15 22:52:00 +0200 | dizney | (~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 +0200 | dizney | (~dizney@80-100-91-169.ip.xs4all.nl) |
2021-09-15 22:53:39 +0200 | dizney | (~dizney@80-100-91-169.ip.xs4all.nl) (Client Quit) |
2021-09-15 22:54:51 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Read error: Connection reset by peer) |
2021-09-15 22:58:11 +0200 | vysn | (~vysn@user/vysn) (Quit: WeeChat 3.2) |
2021-09-15 23:02:20 +0200 | aegon | (~mike@174.127.249.180) |
2021-09-15 23:04:36 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds) |
2021-09-15 23:05:09 +0200 | proofofkeags__ | (~proofofke@205.209.24.233) (Remote host closed the connection) |
2021-09-15 23:05:23 +0200 | proofofkeags__ | (~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 +0200 | vysn | (~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 +0200 | ec_ | (~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 +0200 | akronymus[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 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2021-09-15 23:18:09 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) |
2021-09-15 23:19:57 +0200 | roboguy_ | (~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 +0200 | sim590 | (~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 +0200 | ubert | (~Thunderbi@178.165.161.81.wireless.dyn.drei.com) (Ping timeout: 260 seconds) |
2021-09-15 23:28:28 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2021-09-15 23:31:53 +0200 | fendor | (~fendor@91.141.60.54.wireless.dyn.drei.com) (Remote host closed the connection) |
2021-09-15 23:33:12 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds) |
2021-09-15 23:33:46 +0200 | thyriaen | (~thyriaen@dynamic-078-054-146-050.78.54.pool.telefonica.de) (Quit: Leaving) |
2021-09-15 23:33:58 +0200 | thyriaen | (~thyriaen@dynamic-078-054-146-050.78.54.pool.telefonica.de) |
2021-09-15 23:34:54 +0200 | sim590 | (~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 +0200 | max22- | (~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 +0200 | ec_ | (~ec@gateway/tor-sasl/ec) |
2021-09-15 23:40:59 +0200 | tromp | (~textual@dhcp-077-249-230-040.chello.nl) |
2021-09-15 23:42:58 +0200 | michalz | (~michalz@185.246.204.57) (Remote host closed the connection) |
2021-09-15 23:43:56 +0200 | proofofkeags_ | (~proofofke@205.209.28.54) |
2021-09-15 23:45:50 +0200 | burnsidesLlama | (~burnsides@dhcp168-024.wadham.ox.ac.uk) |
2021-09-15 23:46:43 +0200 | proofofkeags__ | (~proofofke@205.209.24.233) (Ping timeout: 268 seconds) |
2021-09-15 23:47:46 +0200 | sim590 | (~simon@modemcable090.207-203-24.mc.videotron.ca) |
2021-09-15 23:49:22 +0200 | roboguy_ | (~roboguy_@2605:a601:afe7:9f00:5c06:451f:7b74:b079) () |
2021-09-15 23:49:55 +0200 | son0p | (~ff@181.136.122.143) |
2021-09-15 23:50:24 +0200 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-09-15 23:51:26 +0200 | burnsidesLlama | (~burnsides@dhcp168-024.wadham.ox.ac.uk) (Ping timeout: 268 seconds) |
2021-09-15 23:51:42 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 260 seconds) |
2021-09-15 23:52:15 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-09-15 23:52:15 +0200 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-09-15 23:52:15 +0200 | wroathe | (~wroathe@user/wroathe) |
2021-09-15 23:53:18 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) (Quit: amitnjha) |
2021-09-15 23:53:30 +0200 | mikoto-chan | (~mikoto-ch@83.137.2.248) (Ping timeout: 268 seconds) |
2021-09-15 23:53:32 +0200 | amitnjha | (~amit@024-216-124-116.res.spectrum.com) |