Logs on 2022-07-14 (liberachat/#haskell)
| 00:03:30 | × | Tuplanolla quits (~Tuplanoll@91-159-69-97.elisa-laajakaista.fi) (Quit: Leaving.) |
| 00:03:44 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 00:04:08 | × | img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
| 00:05:18 | <albet70> | this is a cabal conflict, I use allow-newer, but it still, https://paste.tomsmeding.com/lAFSZnqt |
| 00:06:02 | → | califax joins (~califax@user/califx) |
| 00:07:02 | → | img joins (~img@user/img) |
| 00:07:36 | × | tomgus1 quits (~tomgus1@2a02:c7e:4229:d900:dea6:32ff:fe3d:d1a3) (Quit: ZNC 1.8.2+deb2 - https://znc.in) |
| 00:08:24 | → | tomgus1 joins (~tomgus1@2a02:c7e:4229:d900:dea6:32ff:fe3d:d1a3) |
| 00:09:45 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 00:15:36 | × | mmhat quits (~mmh@p200300f1c7090754ee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.5) |
| 00:23:39 | × | gurkenglas quits (~gurkengla@dslb-002-203-144-112.002.203.pools.vodafone-ip.de) (Ping timeout: 272 seconds) |
| 00:23:57 | × | chomwitt quits (~chomwitt@2a02:587:dc0d:4a00:dd89:2ce:aa76:b885) (Ping timeout: 276 seconds) |
| 00:38:40 | → | dcoutts joins (~duncan@host86-167-206-10.range86-167.btcentralplus.com) |
| 00:40:45 | × | dcoutts_ quits (~duncan@host86-151-9-33.range86-151.btcentralplus.com) (Ping timeout: 272 seconds) |
| 00:40:45 | × | dcoutts__ quits (~duncan@host86-151-9-33.range86-151.btcentralplus.com) (Ping timeout: 272 seconds) |
| 00:41:10 | <jackdk> | albet70: don't think that's how allow-newer works. I think you've allowed it for one package and then asked it to build all the others |
| 00:41:16 | → | dcoutts_ joins (~duncan@host86-167-206-10.range86-167.btcentralplus.com) |
| 00:41:34 | → | slac79805 joins (~slack1256@186.11.42.111) |
| 00:43:19 | → | ryanbooker joins (uid4340@id-4340.hampstead.irccloud.com) |
| 00:43:28 | × | slack1256 quits (~slack1256@191.125.99.86) (Ping timeout: 244 seconds) |
| 00:45:27 | → | nate4 joins (~nate@98.45.169.16) |
| 00:47:37 | → | merijn joins (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) |
| 00:48:55 | <albet70> | "🟢 jackdk :albet70: don't think that's how allow-newer works. I think you've allowed it for one package and then asked it to build all the others", what's the right way to solve this? |
| 00:49:14 | <jackdk> | What does "green circle" mean? |
| 00:50:41 | <jackdk> | Also, the manual has the answers you seek: https://cabal.readthedocs.io/en/3.6/setup-commands.html#cmdoption-runhaskell-Setup.hs-configure-allow-newer |
| 00:51:55 | → | nki[m] joins (~nkimnkaga@2001:470:69fc:105::2:3a8d) |
| 00:55:55 | <albet70> | "jackdk :What does "green circle" mean?", what is green circle? |
| 00:57:33 | <geekosaur> | your message [14 00:48:55] <albet70> "🟢 jackdk :albet70: don't think that's how allow-newer works. I think you've allowed it for one package and then asked it to build all the others", what's the right way to solve this? |
| 00:57:38 | <jackdk> | You tell me, you're the one who sent it: https://usercontent.irccloud-cdn.com/file/DGVQcAfq/green_circle.png |
| 00:57:40 | <geekosaur> | why does it have a green circle in it? |
| 00:59:31 | <albet70> | oh this green circle is the highlight from my irc client, I should change it one day, sorry for the bother |
| 00:59:50 | <jackdk> | no worries, was confusing is all |
| 01:02:02 | <albet70> | why some package limit the upper and lower version? |
| 01:02:25 | <albet70> | like 1.2<x<2.0 |
| 01:02:38 | <geekosaur> | because they're known not to work with the other versions? |
| 01:02:59 | <jackdk> | https://pvp.haskell.org/ |
| 01:03:10 | <albet70> | why they don't keep compatible? |
| 01:03:52 | <jackdk> | because package maintainers are often volunteers with less than infinite free time? |
| 01:04:00 | × | xff0x quits (~xff0x@2405:6580:b080:900:226f:8243:60d1:9235) (Ping timeout: 272 seconds) |
| 01:04:50 | hpc | . o O ( because pvp is also short for "programmer versus programmer" ) |
| 01:04:56 | <jackdk> | Hackage trustees ask packagers to upload packages with upper bounds on their dependencies, so that newer versions with breaking changes don't make it into build plans and break other people's builds |
| 01:04:58 | <jackdk> | hpc: LOL |
| 01:05:21 | <albet70> | I saw that ghc also doesn't keep compatible... |
| 01:05:48 | <jackdk> | Once a new version is known to be working, then maintainers can (should) update their dependency bounds to admit the new version, or update and release a new version if code changes are required |
| 01:08:19 | → | NaturalNumber joins (~monadam@137.229.82.64) |
| 01:08:30 | <Axman6> | albet70: welcome to the world of software engineering for open source software, it is impossible for everything to always keep up to date with everything else. If you would like yo change that, you should volunteer to maintain packages |
| 01:10:40 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 01:14:04 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 01:14:41 | → | frost joins (~frost@user/frost) |
| 01:14:50 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection) |
| 01:16:48 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 01:20:47 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 255 seconds) |
| 01:22:33 | × | merijn quits (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds) |
| 01:22:52 | → | segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
| 01:24:48 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 01:27:16 | → | abhinav joins (~abhinav@c-67-169-139-16.hsd1.ca.comcast.net) |
| 01:28:57 | × | segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 276 seconds) |
| 01:30:07 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 01:30:36 | × | machinedgod quits (~machinedg@d172-219-86-154.abhsia.telus.net) (Ping timeout: 272 seconds) |
| 01:40:18 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 240 seconds) |
| 01:40:29 | × | img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
| 01:43:22 | → | img joins (~img@user/img) |
| 01:43:54 | → | xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
| 01:48:38 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds) |
| 01:49:18 | × | dcoutts_ quits (~duncan@host86-167-206-10.range86-167.btcentralplus.com) (Remote host closed the connection) |
| 01:49:36 | → | dcoutts_ joins (~duncan@host86-167-206-10.range86-167.btcentralplus.com) |
| 01:56:46 | × | img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
| 01:58:53 | → | segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
| 01:59:38 | → | img joins (~img@user/img) |
| 02:04:16 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 02:04:58 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Remote host closed the connection) |
| 02:06:15 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) |
| 02:10:31 | → | [Leary] joins (~Leary]@122-58-224-198-vdsl.sparkbb.co.nz) |
| 02:14:55 | × | abhinav quits (~abhinav@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 244 seconds) |
| 02:16:40 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Remote host closed the connection) |
| 02:18:55 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 272 seconds) |
| 02:20:53 | → | hasbae joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) |
| 02:21:36 | <hasbae> | how can I figure out where the definition of (:+:) is coming from when I load a module in ghci? |
| 02:23:32 | × | img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
| 02:23:39 | <hasbae> | specifically, it's this file I'm :loading https://github.com/DSLsofMath/DSLsofMath/blob/master/L/DSLsofMath/FunExp.lhs |
| 02:24:04 | → | zxx7529 joins (~Thunderbi@user/zxx7529) |
| 02:24:42 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 02:25:06 | <monochrom> | In ghci you can say ":info :+:", it tells you where the definition is (and a lot of other information) |
| 02:25:55 | × | mtjm quits (~mutantmel@2604:a880:2:d0::208b:d001) (Remote host closed the connection) |
| 02:26:25 | → | img joins (~img@user/img) |
| 02:27:02 | × | segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds) |
| 02:27:08 | → | mtjm joins (~mutantmel@2604:a880:2:d0::208b:d001) |
| 02:27:09 | <hasbae> | ah, ok, I think it's just a custom operator. doing :i (:+:) says it's defined on line 10 of that file i linked |
| 02:27:10 | × | td_ quits (~td@muedsl-82-207-238-241.citykom.de) (Ping timeout: 260 seconds) |
| 02:28:41 | → | td_ joins (~td@muedsl-82-207-238-204.citykom.de) |
| 02:29:28 | <monochrom> | :) |
| 02:30:17 | <monochrom> | It is common, but in this warped sense: Everyone likes to use it for a different purpose >:) |
| 02:32:42 | → | abhinav joins (~abhinav@c-67-169-139-16.hsd1.ca.comcast.net) |
| 02:33:55 | → | yauhsien joins (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) |
| 02:37:14 | → | nate4 joins (~nate@98.45.169.16) |
| 02:38:05 | <hasbae> | yeah it was staring right at me. I was expecting to be something fancy. I search hoogle and it landed me on Data.Generics and I thought 'oh no' |
| 02:39:25 | <monochrom> | Data.Complex also has it. x :+: y means x + i y |
| 02:40:29 | <monochrom> | Data.Generics's though is a simple "like Either but for functors". data (:+:) f g a = Case1 (f a) | Case2 (g a) |
| 02:41:06 | × | yauhsien quits (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Ping timeout: 276 seconds) |
| 02:42:03 | <hasbae> | I did a import Data.Complex and then :i (:+:) and ghci says 'not in scope' |
| 02:42:20 | <monochrom> | Hrm |
| 02:42:25 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 02:42:41 | × | dcoutts quits (~duncan@host86-167-206-10.range86-167.btcentralplus.com) (Remote host closed the connection) |
| 02:42:48 | × | dcoutts_ quits (~duncan@host86-167-206-10.range86-167.btcentralplus.com) (Remote host closed the connection) |
| 02:42:49 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) |
| 02:42:53 | <monochrom> | Ooops, I erred, Data.Complex goes with :+ , no colon after the + |
| 02:43:01 | → | dcoutts joins (~duncan@host86-167-206-10.range86-167.btcentralplus.com) |
| 02:43:13 | <hasbae> | yup, there it is :) |
| 02:43:25 | × | Sciencentistguy quits (~sciencent@hacksoc/ordinary-member) (Quit: Ping timeout (120 seconds)) |
| 02:43:44 | → | Sciencentistguy joins (~sciencent@hacksoc/ordinary-member) |
| 02:44:10 | → | dcoutts_ joins (~duncan@host86-167-206-10.range86-167.btcentralplus.com) |
| 02:46:10 | → | merijn joins (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) |
| 02:46:15 | <jackdk> | I wish the generics one was in Data.Functor.Sum =/ |
| 02:48:33 | → | LiChen joins (uid561437@id-561437.tinside.irccloud.com) |
| 02:48:39 | → | nightbreak joins (~nightbrea@2600:1700:70d1:d800:38ac:cd9e:758c:fd93) |
| 02:48:58 | nightbreak | is now known as nightbreak[Away] |
| 02:53:58 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Remote host closed the connection) |
| 02:57:38 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 02:59:45 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) |
| 03:00:01 | × | haasn quits (~nand@haasn.dev) (Quit: ZNC 1.7.5+deb4 - https://znc.in) |
| 03:00:22 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 244 seconds) |
| 03:01:18 | → | haasn joins (~nand@haasn.dev) |
| 03:07:46 | × | ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Remote host closed the connection) |
| 03:09:50 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
| 03:10:27 | → | ezzieyguywuf joins (~Unknown@user/ezzieyguywuf) |
| 03:13:54 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 264 seconds) |
| 03:14:07 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 03:15:59 | × | cosimone` quits (~user@93-44-186-171.ip98.fastwebnet.it) (Ping timeout: 255 seconds) |
| 03:16:53 | → | talismanick joins (~talismani@2601:200:c100:3850::dd64) |
| 03:17:17 | talismanick | is now known as Guest1921 |
| 03:20:30 | × | merijn quits (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) (Ping timeout: 264 seconds) |
| 03:21:49 | × | ryanbooker quits (uid4340@id-4340.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
| 03:23:51 | → | yauhsien joins (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) |
| 03:27:24 | → | nate4 joins (~nate@98.45.169.16) |
| 03:32:24 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 244 seconds) |
| 03:35:43 | → | Cajun joins (~Cajun@user/cajun) |
| 03:36:02 | × | rembo10 quits (~rembo10@main.remulis.com) (Quit: ZNC 1.8.2 - https://znc.in) |
| 03:37:02 | → | rembo10 joins (~rembo10@main.remulis.com) |
| 03:39:02 | × | slac79805 quits (~slack1256@186.11.42.111) (Remote host closed the connection) |
| 03:41:43 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Remote host closed the connection) |
| 03:44:34 | × | hasbae quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Quit: WeeChat 3.5) |
| 03:45:43 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) |
| 03:48:13 | × | ski quits (~ski@ext-1-468.eduroam.chalmers.se) (Ping timeout: 272 seconds) |
| 03:52:15 | → | seriously joins (~seriously@ool-18bd55d4.dyn.optonline.net) |
| 03:55:00 | × | bontaq quits (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 272 seconds) |
| 03:55:26 | <seriously> | Does someone mind giving me an extra hint to problem 2 here ? https://paste.tomsmeding.com/aMdyFv2c |
| 03:56:27 | <seriously> | composing functions on a list input was easy to grasp but im struggling to compose |
| 03:56:27 | × | mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Quit: WeeChat 3.5) |
| 03:57:04 | <seriously> | functions that work on a primitive input that ... given that the original function used recursion |
| 03:57:23 | → | mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475) |
| 03:59:55 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 03:59:56 | × | elvishjerricco quits (sid237756@id-237756.helmsley.irccloud.com) () |
| 04:00:21 | × | yauhsien quits (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Read error: Connection reset by peer) |
| 04:00:39 | → | nate4 joins (~nate@98.45.169.16) |
| 04:00:53 | → | yauhsien joins (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) |
| 04:03:52 | × | Cale quits (~cale@cpef48e38ee8583-cm30b7d4b3fc20.cpe.net.cable.rogers.com) (Ping timeout: 272 seconds) |
| 04:06:21 | triteraf1ops | is now known as triteraflops |
| 04:07:02 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 244 seconds) |
| 04:13:44 | × | califax quits (~califax@user/califx) (Ping timeout: 268 seconds) |
| 04:17:22 | → | elvishjerricco_ joins (sid237756@id-237756.helmsley.irccloud.com) |
| 04:17:37 | × | elvishjerricco_ quits (sid237756@id-237756.helmsley.irccloud.com) (Client Quit) |
| 04:17:42 | → | califax joins (~califax@user/califx) |
| 04:19:00 | × | seriously quits (~seriously@ool-18bd55d4.dyn.optonline.net) (Ping timeout: 252 seconds) |
| 04:20:18 | → | nate4 joins (~nate@98.45.169.16) |
| 04:23:08 | → | elvishjerricco joins (~elvishjer@2001:470:69fc:105::6172) |
| 04:24:13 | → | jinsun__ joins (~jinsun@user/jinsun) |
| 04:24:13 | jinsun | is now known as Guest3789 |
| 04:24:13 | jinsun__ | is now known as jinsun |
| 04:24:27 | × | Guest3789 quits (~jinsun@user/jinsun) () |
| 04:25:10 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds) |
| 04:30:10 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 04:31:17 | × | yauhsien quits (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 04:32:17 | → | yauhsien joins (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) |
| 04:33:53 | × | mvk quits (~mvk@2607:fea8:5ce3:8500::909a) (Ping timeout: 244 seconds) |
| 04:34:24 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 04:36:48 | → | notzmv joins (~zmv@user/notzmv) |
| 04:36:59 | × | yauhsien quits (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Ping timeout: 272 seconds) |
| 04:40:30 | → | mbuf joins (~Shakthi@122.165.55.71) |
| 04:41:17 | × | zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!) |
| 04:41:44 | → | seriously joins (~seriously@ool-18bd55d4.dyn.optonline.net) |
| 04:42:47 | <Axman6> | seriously: Hey, do you have any examples of things you've tried so far? |
| 04:42:54 | × | mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Quit: WeeChat 3.5) |
| 04:43:22 | <Axman6> | for the first one, some functions that might be useful are map, filter and product |
| 04:43:36 | → | mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475) |
| 04:45:34 | → | vst joins (~Thunderbi@w118010235.w118010.starhub.net.sg) |
| 04:46:30 | × | seriously quits (~seriously@ool-18bd55d4.dyn.optonline.net) (Ping timeout: 252 seconds) |
| 04:46:58 | × | vst quits (~Thunderbi@w118010235.w118010.starhub.net.sg) (Client Quit) |
| 04:47:09 | → | vst joins (~Thunderbi@w118010235.w118010.starhub.net.sg) |
| 04:47:25 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 04:50:43 | × | vst quits (~Thunderbi@w118010235.w118010.starhub.net.sg) (Client Quit) |
| 04:51:06 | → | vst joins (~Thunderbi@w118010235.w118010.starhub.net.sg) |
| 04:52:44 | → | merijn joins (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) |
| 04:54:33 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 244 seconds) |
| 04:57:25 | → | nate4 joins (~nate@98.45.169.16) |
| 05:00:16 | × | Batzy quits (~quassel@user/batzy) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
| 05:01:21 | → | Batzy joins (~quassel@user/batzy) |
| 05:03:41 | × | califax quits (~califax@user/califx) (Ping timeout: 268 seconds) |
| 05:05:29 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 272 seconds) |
| 05:05:40 | → | yauhsien joins (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) |
| 05:07:38 | → | califax joins (~califax@user/califx) |
| 05:08:47 | → | ytw joins (~ytw@c-67-160-116-19.hsd1.wa.comcast.net) |
| 05:12:33 | × | yauhsien quits (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Ping timeout: 276 seconds) |
| 05:14:38 | × | Kaiepi quits (~Kaiepi@156.34.47.253) (Read error: Connection reset by peer) |
| 05:21:28 | × | mixfix41 quits (~sdenynine@user/mixfix41) (Quit: g2g seeya) |
| 05:22:35 | × | merijn quits (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds) |
| 05:23:26 | → | zebrag joins (~chris@user/zebrag) |
| 05:32:17 | × | NaturalNumber quits (~monadam@137.229.82.64) (Quit: Have a nice day) |
| 05:36:29 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 05:38:24 | × | mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Quit: WeeChat 3.5) |
| 05:38:46 | → | mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475) |
| 05:41:16 | → | bilegeek joins (~bilegeek@2600:1008:b01a:fd78:eb30:da7d:1e1b:a7f7) |
| 05:44:57 | → | yauhsien joins (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) |
| 05:46:56 | × | zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!) |
| 05:48:03 | → | segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
| 05:48:11 | × | qwedfg quits (~qwedfg@user/qwedfg) (Read error: Connection reset by peer) |
| 05:49:55 | → | qwedfg joins (~qwedfg@user/qwedfg) |
| 05:50:27 | → | coot joins (~coot@213.134.190.95) |
| 05:50:29 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 05:55:53 | → | mmhat joins (~mmh@p200300f1c7090754ee086bfffe095315.dip0.t-ipconnect.de) |
| 05:56:06 | × | abhinav quits (~abhinav@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 276 seconds) |
| 05:57:02 | × | incertia quits (~incertia@d47-69-133-171.try.wideopenwest.com) (Ping timeout: 255 seconds) |
| 05:58:29 | → | incertia joins (~incertia@d47-69-133-171.try.wideopenwest.com) |
| 06:04:05 | → | zxx7530 joins (~Thunderbi@user/zxx7529) |
| 06:04:12 | × | zxx7529 quits (~Thunderbi@user/zxx7529) (Remote host closed the connection) |
| 06:04:12 | zxx7530 | is now known as zxx7529 |
| 06:07:38 | × | zaquest quits (~notzaques@5.130.79.72) (Remote host closed the connection) |
| 06:09:16 | → | zaquest joins (~notzaques@5.130.79.72) |
| 06:11:59 | → | acidjnk_new joins (~acidjnk@p200300d6e7058608806bdf82a214d350.dip0.t-ipconnect.de) |
| 06:13:33 | → | derelict_ joins (~derelict@user/derelict) |
| 06:13:40 | → | pgass joins (~pg@190.247.245.154) |
| 06:14:25 | × | incertia quits (~incertia@d47-69-133-171.try.wideopenwest.com) (*.net *.split) |
| 06:14:25 | × | ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (*.net *.split) |
| 06:14:25 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (*.net *.split) |
| 06:14:25 | × | vglfr quits (~vglfr@coupling.penchant.volia.net) (*.net *.split) |
| 06:14:25 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (*.net *.split) |
| 06:14:25 | × | pgas quits (~pg@190.247.245.154) (*.net *.split) |
| 06:14:25 | × | Igloo quits (~ian@matrix.chaos.earth.li) (*.net *.split) |
| 06:14:25 | × | wz1000 quits (~zubin@static.11.113.47.78.clients.your-server.de) (*.net *.split) |
| 06:14:25 | × | Midjak quits (~Midjak@82.66.147.146) (*.net *.split) |
| 06:14:25 | × | lemonsnicks quits (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (*.net *.split) |
| 06:14:25 | × | heath quits (~heath@user/heath) (*.net *.split) |
| 06:14:25 | × | cross quits (~cross@spitfire.i.gajendra.net) (*.net *.split) |
| 06:14:25 | × | wolfshappen quits (~waff@irc.furworks.de) (*.net *.split) |
| 06:14:25 | × | auri quits (~auri@fsf/member/auri) (*.net *.split) |
| 06:14:25 | × | jjhoo quits (~jahakala@user/jjhoo) (*.net *.split) |
| 06:14:25 | × | mstksg quits (~jle`@cpe-23-240-75-236.socal.res.rr.com) (*.net *.split) |
| 06:14:25 | × | kmein quits (~weechat@user/kmein) (*.net *.split) |
| 06:14:25 | × | _________ quits (~nobody@user/noodly) (*.net *.split) |
| 06:14:25 | × | Goodbye_Vincent quits (cyvahl@freakshells.net) (*.net *.split) |
| 06:14:25 | × | FragByte quits (~christian@user/fragbyte) (*.net *.split) |
| 06:14:25 | × | fryguybob quits (~fryguybob@cpe-74-67-169-145.rochester.res.rr.com) (*.net *.split) |
| 06:14:25 | × | Square quits (~a@user/square) (*.net *.split) |
| 06:14:25 | × | aforemny quits (~aforemny@static.248.158.34.188.clients.your-server.de) (*.net *.split) |
| 06:14:25 | × | kaol quits (~kaol@94-237-42-30.nl-ams1.upcloud.host) (*.net *.split) |
| 06:14:25 | × | joo-_ quits (~joo-_@fsf/member/joo--) (*.net *.split) |
| 06:14:25 | × | rodental quits (~rodental@38.146.5.222) (*.net *.split) |
| 06:14:25 | × | Guest1698 quits (~Guest1698@20.83.116.49) (*.net *.split) |
| 06:14:25 | × | APic quits (apic@apic.name) (*.net *.split) |
| 06:14:25 | × | Patternmaster quits (~georg@user/Patternmaster) (*.net *.split) |
| 06:14:25 | × | xstill_ quits (xstill@fimu/xstill) (*.net *.split) |
| 06:14:25 | × | shane_ quits (~shane@ana.rch.ist) (*.net *.split) |
| 06:14:25 | × | statusfailed quits (~statusfai@statusfailed.com) (*.net *.split) |
| 06:14:25 | × | djanatyn1 quits (~djanatyn@vps-7f49a6b0.vps.ovh.ca) (*.net *.split) |
| 06:14:25 | × | tomsmeding quits (~tomsmedin@static.21.109.88.23.clients.your-server.de) (*.net *.split) |
| 06:14:25 | × | glider quits (~glider@user/glider) (*.net *.split) |
| 06:14:25 | × | eldritch quits (~eldritch@user/eldritch) (*.net *.split) |
| 06:14:25 | × | orcus quits (~orcus@user/brprice) (*.net *.split) |
| 06:14:25 | × | kawen quits (~quassel@static.208.191.216.95.clients.your-server.de) (*.net *.split) |
| 06:14:26 | × | niko quits (niko@libera/staff/niko) (*.net *.split) |
| 06:14:26 | × | infinity0 quits (~infinity0@185.112.146.113) (*.net *.split) |
| 06:14:26 | × | sajith quits (~sajith@user/sajith) (*.net *.split) |
| 06:14:26 | × | tired quits (~tired@user/tired) (*.net *.split) |
| 06:14:26 | × | Hecate quits (~mariposa@user/hecate) (*.net *.split) |
| 06:14:26 | × | derelict quits (~derelict@user/derelict) (*.net *.split) |
| 06:14:26 | × | hltk quits (~hltk@hltk.fi) (*.net *.split) |
| 06:14:26 | × | Heffalump quits (~ganesh@urchin.earth.li) (*.net *.split) |
| 06:14:26 | × | Unode quits (~Unode@194.94.44.220) (*.net *.split) |
| 06:14:26 | × | CAT_S quits (apic@brezn3.muc.ccc.de) (*.net *.split) |
| 06:14:26 | × | eagleflo quits (~aku@163.172.137.34) (*.net *.split) |
| 06:14:26 | × | ouroboros quits (~ouroboros@user/ouroboros) (*.net *.split) |
| 06:14:26 | × | aweinstock quits (~aweinstoc@cpe-74-76-189-75.nycap.res.rr.com) (*.net *.split) |
| 06:14:39 | → | joo-_ joins (~joo-_@172-105-65-159.ip.linodeusercontent.com) |
| 06:14:39 | × | joo-_ quits (~joo-_@172-105-65-159.ip.linodeusercontent.com) (Changing host) |
| 06:14:39 | → | joo-_ joins (~joo-_@fsf/member/joo--) |
| 06:15:09 | → | wz1000 joins (~zubin@static.11.113.47.78.clients.your-server.de) |
| 06:15:23 | → | vglfr joins (~vglfr@coupling.penchant.volia.net) |
| 06:15:39 | → | qhong_ joins (~qhong@DN200ouo5.stanford.edu) |
| 06:16:18 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 06:16:26 | → | eldritch joins (~eldritch@user/eldritch) |
| 06:17:16 | derelict_ | is now known as derelict |
| 06:17:42 | → | incertia joins (~incertia@d47-69-133-171.try.wideopenwest.com) |
| 06:17:42 | → | ezzieyguywuf joins (~Unknown@user/ezzieyguywuf) |
| 06:17:42 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 06:17:42 | → | Igloo joins (~ian@matrix.chaos.earth.li) |
| 06:17:42 | → | Midjak joins (~Midjak@82.66.147.146) |
| 06:17:42 | → | lemonsnicks joins (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) |
| 06:17:42 | → | heath joins (~heath@user/heath) |
| 06:17:42 | → | cross joins (~cross@spitfire.i.gajendra.net) |
| 06:17:42 | → | wolfshappen joins (~waff@irc.furworks.de) |
| 06:17:42 | → | auri joins (~auri@fsf/member/auri) |
| 06:17:42 | → | jjhoo joins (~jahakala@user/jjhoo) |
| 06:17:42 | → | mstksg joins (~jle`@cpe-23-240-75-236.socal.res.rr.com) |
| 06:17:42 | → | kmein joins (~weechat@user/kmein) |
| 06:17:42 | → | _________ joins (~nobody@user/noodly) |
| 06:17:42 | → | Goodbye_Vincent joins (cyvahl@freakshells.net) |
| 06:17:42 | → | FragByte joins (~christian@user/fragbyte) |
| 06:17:42 | → | fryguybob joins (~fryguybob@cpe-74-67-169-145.rochester.res.rr.com) |
| 06:17:42 | → | Square joins (~a@user/square) |
| 06:17:42 | → | aforemny joins (~aforemny@static.248.158.34.188.clients.your-server.de) |
| 06:17:42 | → | kaol joins (~kaol@94-237-42-30.nl-ams1.upcloud.host) |
| 06:17:42 | → | rodental joins (~rodental@38.146.5.222) |
| 06:17:42 | → | Guest1698 joins (~Guest1698@20.83.116.49) |
| 06:17:42 | → | APic joins (apic@apic.name) |
| 06:17:42 | → | Patternmaster joins (~georg@user/Patternmaster) |
| 06:17:42 | → | xstill_ joins (xstill@fimu/xstill) |
| 06:17:42 | → | shane_ joins (~shane@ana.rch.ist) |
| 06:17:42 | → | statusfailed joins (~statusfai@statusfailed.com) |
| 06:17:42 | → | djanatyn1 joins (~djanatyn@vps-7f49a6b0.vps.ovh.ca) |
| 06:17:42 | → | tomsmeding joins (~tomsmedin@static.21.109.88.23.clients.your-server.de) |
| 06:17:42 | → | glider joins (~glider@user/glider) |
| 06:17:42 | → | orcus joins (~orcus@user/brprice) |
| 06:17:42 | → | kawen joins (~quassel@static.208.191.216.95.clients.your-server.de) |
| 06:17:42 | → | niko joins (niko@libera/staff/niko) |
| 06:17:42 | → | infinity0 joins (~infinity0@185.112.146.113) |
| 06:17:42 | → | Heffalump joins (~ganesh@urchin.earth.li) |
| 06:17:42 | → | sajith joins (~sajith@user/sajith) |
| 06:17:42 | → | tired joins (~tired@user/tired) |
| 06:17:42 | → | Hecate joins (~mariposa@user/hecate) |
| 06:17:42 | → | hltk joins (~hltk@hltk.fi) |
| 06:17:42 | → | Unode joins (~Unode@194.94.44.220) |
| 06:17:42 | → | CAT_S joins (apic@brezn3.muc.ccc.de) |
| 06:17:42 | → | eagleflo joins (~aku@163.172.137.34) |
| 06:17:42 | → | ouroboros joins (~ouroboros@user/ouroboros) |
| 06:17:42 | → | aweinstock joins (~aweinstoc@cpe-74-76-189-75.nycap.res.rr.com) |
| 06:18:19 | × | lemonsnicks quits (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Max SendQ exceeded) |
| 06:18:22 | × | CAT_S quits (apic@brezn3.muc.ccc.de) (Max SendQ exceeded) |
| 06:18:22 | × | auri quits (~auri@fsf/member/auri) (Max SendQ exceeded) |
| 06:18:22 | × | _________ quits (~nobody@user/noodly) (Max SendQ exceeded) |
| 06:18:22 | × | APic quits (apic@apic.name) (Max SendQ exceeded) |
| 06:18:22 | × | glider quits (~glider@user/glider) (Max SendQ exceeded) |
| 06:18:22 | × | wolfshappen quits (~waff@irc.furworks.de) (Max SendQ exceeded) |
| 06:18:29 | → | CAT_S joins (apic@brezn3.muc.ccc.de) |
| 06:18:32 | → | auri joins (~auri@fsf/member/auri) |
| 06:18:33 | → | APic joins (apic@apic.name) |
| 06:18:37 | × | mcglk quits (~mcglk@131.191.49.120) (Read error: Connection reset by peer) |
| 06:18:38 | → | wolfshappen joins (~waff@irc.furworks.de) |
| 06:18:41 | → | _________ joins (~nobody@user/noodly) |
| 06:18:41 | → | lemonsnicks joins (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) |
| 06:18:57 | × | qhong quits (~qhong@rescomp-21-400677.stanford.edu) (Ping timeout: 272 seconds) |
| 06:19:05 | → | mcglk joins (~mcglk@131.191.49.120) |
| 06:19:32 | → | gmg joins (~user@user/gehmehgeh) |
| 06:19:40 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 06:20:18 | → | glider joins (~glider@user/glider) |
| 06:21:38 | × | mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds) |
| 06:23:56 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 06:28:38 | × | DigitalKiwi quits (~kiwi@137.184.156.191) (Quit: quite.) |
| 06:29:19 | → | DigitalKiwi joins (~kiwi@137.184.156.191) |
| 06:30:23 | × | gentauro quits (~gentauro@user/gentauro) (Ping timeout: 255 seconds) |
| 06:31:56 | → | christiansen joins (~christian@83-95-137-75-dynamic.dk.customer.tdc.net) |
| 06:34:32 | → | gurkenglas joins (~gurkengla@dslb-002-203-144-112.002.203.pools.vodafone-ip.de) |
| 06:35:53 | → | seriously joins (~seriously@ool-18bd55d4.dyn.optonline.net) |
| 06:37:04 | → | gentauro joins (~gentauro@user/gentauro) |
| 06:38:39 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 06:44:16 | × | echoreply quits (~echoreply@45.32.163.16) (Quit: WeeChat 2.8) |
| 06:45:33 | → | echoreply joins (~echoreply@45.32.163.16) |
| 06:57:10 | → | cfricke joins (~cfricke@user/cfricke) |
| 07:02:01 | × | segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 272 seconds) |
| 07:03:44 | → | notzmv joins (~zmv@user/notzmv) |
| 07:08:52 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 268 seconds) |
| 07:16:26 | → | merijn joins (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) |
| 07:18:18 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 07:20:08 | × | seriously quits (~seriously@ool-18bd55d4.dyn.optonline.net) (Ping timeout: 252 seconds) |
| 07:21:12 | × | adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection) |
| 07:21:40 | → | adanwan joins (~adanwan@gateway/tor-sasl/adanwan) |
| 07:28:57 | × | Guest1921 quits (~talismani@2601:200:c100:3850::dd64) (Quit: Using Circe, the loveliest of all IRC clients) |
| 07:33:41 | × | zxx7529 quits (~Thunderbi@user/zxx7529) (Ping timeout: 244 seconds) |
| 07:34:38 | × | qwedfg quits (~qwedfg@user/qwedfg) (Ping timeout: 240 seconds) |
| 07:37:51 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 268 seconds) |
| 07:38:02 | → | alp joins (~alp@user/alp) |
| 07:39:07 | → | ccntrq joins (~Thunderbi@2a01:c22:91f0:c800:77dc:2eb1:fe47:5fbc) |
| 07:39:29 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 07:41:34 | → | MajorBiscuit joins (~MajorBisc@wlan-145-94-167-213.wlan.tudelft.nl) |
| 07:42:05 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 07:43:16 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 07:45:44 | → | chomwitt joins (~chomwitt@2a02:587:dc0d:4a00:5f16:ac72:f625:5e79) |
| 07:45:45 | × | Vajb quits (~Vajb@n1zigc3rgo9mpde2w-1.v6.elisa-mobile.fi) (Read error: Connection reset by peer) |
| 07:46:36 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3ad-40.dhcp.inet.fi) |
| 07:46:40 | × | MajorBiscuit quits (~MajorBisc@wlan-145-94-167-213.wlan.tudelft.nl) (Quit: WeeChat 3.5) |
| 07:50:52 | → | jgeerds joins (~jgeerds@55d437cf.access.ecotel.net) |
| 07:51:15 | → | zxx7529 joins (~Thunderbi@user/zxx7529) |
| 07:52:04 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 07:53:13 | → | MajorBiscuit joins (~MajorBisc@wlan-145-94-167-213.wlan.tudelft.nl) |
| 07:53:22 | → | chele joins (~chele@user/chele) |
| 07:55:36 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 07:55:58 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Remote host closed the connection) |
| 07:58:23 | → | machinedgod joins (~machinedg@d172-219-86-154.abhsia.telus.net) |
| 08:01:05 | → | mima joins (~mmh@aftr-62-216-210-53.dynamic.mnet-online.de) |
| 08:02:11 | × | jgeerds quits (~jgeerds@55d437cf.access.ecotel.net) (Ping timeout: 272 seconds) |
| 08:02:34 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
| 08:02:37 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 08:05:49 | → | NaturalNumber joins (~monadam@137.229.82.64) |
| 08:09:09 | × | zer0bitz quits (~zer0bitz@2001:2003:f748:2000:1a4:ed4b:5e9f:8674) (Read error: Connection reset by peer) |
| 08:09:53 | → | silph joins (~silph@67-208-31-162.ip.tor.radiant.net) |
| 08:10:11 | <silph> | I have a beginner question. I am reading hte Haskell wikibook. |
| 08:10:35 | <silph> | Question 1: the following is a line of code in the wikibook: |
| 08:11:05 | × | jmorris quits (uid537181@id-537181.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
| 08:11:32 | <silph> | sum (x:xs) = x + sum xs |
| 08:11:47 | <silph> | question 1: are the brackets in "(x:xs)" necessary? |
| 08:12:22 | <silph> | question 2: am i allowed to write "sum(xs)" instead of "sum xs", if i want to make my Java brain more comfortable? |
| 08:12:24 | <merijn> | silph: Yes, patterns that include operators or whitespace should be delimited with parenthesis |
| 08:12:42 | → | Tuplanolla joins (~Tuplanoll@91-159-69-97.elisa-laajakaista.fi) |
| 08:12:51 | <silph> | why should they be delimited? what happens if you don't put in the brackets? |
| 08:13:00 | <merijn> | silph: You can write "sum(xs)", but you really, REALLY shouldn't, because it's a crutch that will make it much harder for you to read other people's code |
| 08:13:25 | <merijn> | silph: It becomes ambiguous how many arguments a function has if you don't |
| 08:13:43 | <merijn> | silph: Consider "foo (Just x)" vs "foo Just x" <- looks like it has 2 arguments, instead of 1 |
| 08:13:45 | <int-e> | silph: sum x:xs would bve (sum x):xs, and that would result in a parse error |
| 08:14:10 | <silph> | (is Just a special thing in Haskell? i haven't learned about Just, yet) |
| 08:14:11 | <Axman6> | silph: sum x: xs means (sum x) : xs, not sum (x:xs) |
| 08:14:45 | <silph> | int-e: oh, i see about "(sum x):xs". i guess function names have higher precedence than (:) |
| 08:14:49 | <Axman6> | and if you write functions like sum(xs), then you'll start wanting to write foldr(f,z,xs) which isn't correct, the closest would be foldr(f)(z)(xs) |
| 08:14:55 | <int-e> | > let Just x ? y = x; Nothing ? y = y in (Just 42 ? 10, Nothing ? 10) |
| 08:14:57 | <lambdabot> | (42,10) |
| 08:15:40 | <silph> | (int-e : your Just example is too difficult for my slow brain to undersatnd, so i'll ignore it for now. but thanks anyways for tryign to explain it). |
| 08:15:56 | <silph> | i have a second question ( a harder to explain question) that is making my Java brain very uncomfortable. |
| 08:16:28 | <int-e> | (that's defining an infix operator called `?`, demonstrating that this idea that the left-hand sides of bindings are parsed similar to expressions carries further) |
| 08:17:29 | <int-e> | > let (?) (Just x) y = x; (?) Nothing y = y in (Just 42 ? 10, Nothing ? 10) -- equivalent version |
| 08:17:31 | <lambdabot> | (42,10) |
| 08:17:46 | int-e | shrugs |
| 08:17:57 | <int-e> | yeah maybe you haven't thought about infix operators much yet |
| 08:25:31 | <silph> | (oh darn! i wrote my question in pastebin, but pastebin added strange colour formatting to normal English words, haha) |
| 08:25:32 | <silph> | https://paste.tomsmeding.com/SU1HIhUD |
| 08:29:33 | <jackdk> | I can't think of a better answer than "experience", though it's rare for functions to have a squillion arguments without some of them being packaged up into a record |
| 08:30:46 | → | toluene3 joins (~toluene@user/toulene) |
| 08:31:26 | × | toluene quits (~toluene@user/toulene) (Ping timeout: 255 seconds) |
| 08:31:27 | toluene3 | is now known as toluene |
| 08:31:49 | <silph> | jackdk: (i don't know what a record is, but i'm inferring from your answer that it's something helps a person parse arguments when doing a function call) |
| 08:32:27 | <jackdk> | silph: think "struct", or "class, but without any kind of bundled behaviour attached to instances", or "POJO", maybe? |
| 08:32:30 | <silph> | if the first argument to foldl /could/ be the final result of the function "f", is it possible that my wrong parsing that i outlined in the pastebin question, could in fact be correct? |
| 08:32:47 | <silph> | (ugh, let me rephrase that) |
| 08:33:19 | <silph> | suppose foldl returns an Integer, and that the function f returns an Integer. then, i can call: |
| 08:33:31 | <silph> | foldl f x y |
| 08:33:36 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 08:33:37 | <silph> | which will evalute to |
| 08:33:42 | <silph> | foldl [some Integer] |
| 08:33:53 | <silph> | and which would be evaluated successfully. |
| 08:34:07 | <silph> | suppose it was indeed the case that foldl can accept an Integer as its only argument. |
| 08:34:22 | <silph> | then is it really the case that the following is ambiguous: |
| 08:34:31 | <jackdk> | let's stop using the word foldl for a second, so there's no semantic baggage |
| 08:34:32 | <silph> | foldl f (f acc x) xs |
| 08:34:35 | <int-e> | I'm afraid this whole tupling of arguments idea isn't too helpful. |
| 08:35:04 | <jackdk> | `foo bar baz quux` will parse as `((foo bar) baz) quux` because that's the rules of haskell syntax |
| 08:35:15 | <silph> | could this indeed be parsed as ""f (f acc x) xs" is a fucntion call. then pass the final result to foldl"? |
| 08:36:05 | <jackdk> | no, `foldl f (f acc x) xs` is parsed as `((foldl f) (f acc x)) xs` because that's the rules of haskell syntax |
| 08:36:18 | <int-e> | (((foldl f) ((f acc) x)) xs) |
| 08:36:21 | → | kuribas joins (~user@ptr-17d51enm6mimio3yhxb.18120a2.ip6.access.telenet.be) |
| 08:36:30 | <jackdk> | all functions in haskell take one argument, but we say things like "foldl takes three arguments" as a linguistic convenience |
| 08:36:50 | × | acidjnk_new quits (~acidjnk@p200300d6e7058608806bdf82a214d350.dip0.t-ipconnect.de) (Ping timeout: 255 seconds) |
| 08:37:03 | <kuribas> | well, both are correct. |
| 08:37:10 | <int-e> | This will come with practice, but when you have `foldl f ...`, the f is the first argument of foldl. You don't have to look at the ... part at all. |
| 08:38:08 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds) |
| 08:38:10 | <silph> | i'm looking at the responses and i think i'm missing some fundamental understnading that i need to understand the responses. |
| 08:38:33 | <silph> | maybe i'll ask a question which might clarify something for me. |
| 08:38:34 | <int-e> | Note also that `foldl f` is a valid expression by itself (keyword: partial application). So trying to reason in terms of arities (number of arguments) is kind of doomed. |
| 08:39:22 | <silph> | int-e: i did read the (first) section about currying in the haskell wikibook, so at least i understand what you're saying about partial application. the wikibook still talks abotu foldl as "taking three arguments", so that's not an idea i can throw away right now. |
| 08:39:24 | <int-e> | This part of the syntax is completely unlike Java. |
| 08:39:47 | <silph> | jackd said: |
| 08:39:48 | <silph> | no, `foldl f (f acc x) xs` is parsed as `((foldl f) (f acc x)) xs` because that's the rules of haskell syntax |
| 08:39:49 | <int-e> | :t fold (+) |
| 08:39:51 | <lambdabot> | (Foldable ((->) a), Monoid a, Num a) => a -> a |
| 08:40:01 | <int-e> | whoops |
| 08:40:13 | <silph> | can someone help me understand the "rules of haskell syntax" that makes jackd understand how Haskell parse that line of code? |
| 08:40:19 | <int-e> | :t foldl (+) :: Integer -> [Integer] -> Integer |
| 08:40:21 | <lambdabot> | Integer -> [Integer] -> Integer |
| 08:40:31 | <int-e> | oh do you realize how types connect to function application? |
| 08:40:42 | <silph> | int-e: i don't understnad yoru question? |
| 08:40:48 | <silph> | so i guess the answer is "no"? |
| 08:40:52 | <int-e> | Like, if you have f :: a -> b and x :: a, then you have f x :: b? |
| 08:41:16 | <kuribas> | silph: lookup "currying" |
| 08:41:20 | <silph> | int-e i do in fact understand what you just wrote |
| 08:41:26 | → | dschrempf joins (~dominik@mobiledyn-62-240-134-33.mrsn.at) |
| 08:41:29 | <kuribas> | silph: hint, it doesn't have anything to do with spicing food. |
| 08:41:37 | <silph> | but only at as a basic level, from what i read in the first sectoin that introduces currying in the HAskell wikibook |
| 08:42:39 | → | NaturalNumber123 joins (~monadam@137.229.82.64) |
| 08:43:26 | <kuribas> | silph: do you understand higher order functions? |
| 08:43:41 | <kuribas> | silph: functions that can take or return other functions? |
| 08:43:57 | <jackdk> | silph: https://www.haskell.org/onlinereport/haskell2010/haskellch3.html#x8-260003.3 the "chapter-and-verse" answer is that the report says so. function application is what is meant when you put two applications next to each other, and because applications associate to the left, we can say `((e1 e2) e3) e4` <=> `e1 e2 e3 e4` |
| 08:44:01 | <int-e> | "foldl takes three arguments" is a shorthand for something like "foldl is a function that when applied to an argument (the first) returns a function that when applied to an argument (the second) returns a function that when applied to an argument (the third) returns a value that's not necessarily a function." |
| 08:45:23 | × | NaturalNumber quits (~monadam@137.229.82.64) (Ping timeout: 255 seconds) |
| 08:45:32 | <silph> | int-e: yes. i understand what you're sayinig. but i'm asking you to enter into my poor beginner brain. when the haskell wikibook says "foldl takes three arguments", it really is asking me to think of foldl as a typical Java / mathematical function that takes three arguments. the haskell wikibook knows that my poor brain isn't thinking in terms of |
| 08:45:33 | <silph> | confidnet Haskellers' understanding of currying. |
| 08:45:57 | <jackdk> | silph: you asked about `foldl f (f acc x) xs`; I see four expressions next to each other: first `foldl`, then `f`, then `(f acc x)` (because parens), and then `xs`. Because function application associates to the left, I know that if I want to explicitly parenthesise, I must work left-to-right, hence `(foldl f) (f acc x) xs`, and then `((foldl f) (f acc x)) xs`. |
| 08:46:26 | <silph> | so, i am hoping there's an explanation on how Haskell parses "foldl f (f acc s) xs" that doesn't need currying understanding. |
| 08:46:53 | <silph> | jackdk: okay, maybe i can make sense of your last message. let me think about it more.. |
| 08:47:38 | <silph> | okay, i think i understand your explanation. it did require me to understand currying, but luckily my b asic understanding was sufficient! |
| 08:47:53 | <int-e> | > foldl (.) id [succ,succ] 40 -- `foldl` operates on functions of type Integer -> Integer here; we need a fourth argument to turn that into a number. arities are not clear-cut. |
| 08:47:55 | <silph> | so, if i had `function1 function2 (function2 x y) z`, and my intention was to have "function2 (function2 x y) z" to be evaluted first (ie, with "function2 x y" being one argument, and z being the second argument), then could i force this by putting in brackets: `function1 (function2 (function2 x y) z)` ? |
| 08:47:55 | <lambdabot> | 42 |
| 08:48:16 | <int-e> | yes, you need parentheses for that |
| 08:48:23 | <jackdk> | silph: sure, if the types line up |
| 08:48:29 | × | NaturalNumber123 quits (~monadam@137.229.82.64) (Quit: Have a nice day) |
| 08:48:35 | <silph> | jackdk: okay, thanks! my question has been answered now. |
| 08:49:04 | <silph> | it turns out that jackdk's explanation was simple engouh for my beginner brain. |
| 08:49:15 | <jackdk> | it's more a discussion of associativity rather than currying itself, made a little harder to follow because application is triggered by whitespace |
| 08:49:15 | <silph> | sometimes when reading the Haskell wikibook, i realize that i might be too stupid to learn HAskell. |
| 08:49:23 | <silph> | but i'm continuing to try to learn it, anyways. |
| 08:49:57 | <jackdk> | I tend to assume innocent failure on the authors' part rather than the student |
| 08:50:30 | × | yauhsien quits (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 08:50:58 | <silph> | when i was a Java tutor, i realized that things that seemed obvious to me, really aren't obvious to someone who's never programmed before. |
| 08:51:20 | <silph> | now i'm expeirencing what my studetns experienced in their Java classrooms, when trying to learn Haskell.. |
| 08:52:01 | <silph> | but i've found that "learn yourself a haskell" and the "haskell book" (i think it was called "HAskell from first principles"?) were too difficult for me. the haskell wikibook has been the easiest of the three to understand... |
| 08:52:10 | <silph> | ... but i still need extra help from this IRC channel. |
| 08:52:22 | <jackdk> | yeah, the paradigm shift is a doozy. when moving between Java and say Python and Ruby, the jump is a lot smaller |
| 08:53:10 | <silph> | i have this desire to re-write parts of the Haskell wikibook (or at least supplment it for people who are only as smart as i am), but it looks like contributions to the Haskell wikibook stopped a few years ago! |
| 08:53:31 | qhong_ | is now known as qhong |
| 08:54:01 | <silph> | i am finding that in order to understand (for example) a page of the wikibook, i really do have to take 20 or 30 minutes to work out examples of my own. only then do i understand a page of the wikibook. |
| 08:54:24 | → | jmorris joins (uid537181@id-537181.uxbridge.irccloud.com) |
| 08:54:37 | <jackdk> | I am working through a mathematics text at a similar pace |
| 08:54:40 | <silph> | i had never seen recursion that passed an accumulator as an argument, in any of my Java programming school exercises before, and so it took some time to understand that! |
| 08:54:54 | → | v0d1ch joins (~v0d1ch@cable-178-148-112-180.dynamic.sbb.rs) |
| 08:54:55 | <silph> | jackdk: are there IRC channels or other extra help for you, when you get stuck on that textbook? |
| 08:55:17 | × | coot quits (~coot@213.134.190.95) (Quit: coot) |
| 08:55:58 | <jackdk> | that's because you have mutable variables in java or whatever so you're not likely to discover that pattern, but accumulating parameters are "cleaner" in that the function remains pure |
| 08:56:14 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 08:56:22 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) |
| 08:56:25 | <jackdk> | silph: I have a weekly call with a friend to discuss and unstick myself |
| 08:56:52 | <silph> | knowing that you get stuck, too, and need help, makes me feel better for needing the support of #haskell to unstick myself! |
| 08:57:06 | <jackdk> | Nobody got here alone. |
| 08:57:22 | <silph> | thanks for your help :) . i'm going to log off of here now. |
| 08:57:25 | <silph> | i appreciate it a lot. |
| 08:57:30 | <jackdk> | adios! |
| 08:57:39 | <jackdk> | you're welcome. |
| 08:58:01 | → | nate4 joins (~nate@98.45.169.16) |
| 08:59:56 | × | silph quits (~silph@67-208-31-162.ip.tor.radiant.net) (Quit: Client closed) |
| 08:59:58 | × | gurkenglas quits (~gurkengla@dslb-002-203-144-112.002.203.pools.vodafone-ip.de) (Ping timeout: 244 seconds) |
| 09:00:30 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Ping timeout: 244 seconds) |
| 09:02:17 | × | gmg quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 09:02:30 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds) |
| 09:02:51 | × | ytw quits (~ytw@c-67-160-116-19.hsd1.wa.comcast.net) (Read error: Connection reset by peer) |
| 09:03:06 | × | zxx7529 quits (~Thunderbi@user/zxx7529) (Quit: zxx7529) |
| 09:06:28 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 09:07:36 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 09:10:49 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 09:14:42 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 09:21:42 | → | yauhsien joins (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) |
| 09:23:23 | × | bilegeek quits (~bilegeek@2600:1008:b01a:fd78:eb30:da7d:1e1b:a7f7) (Quit: Leaving) |
| 09:26:42 | × | yauhsien quits (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Ping timeout: 276 seconds) |
| 09:33:46 | → | lemonsni- joins (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) |
| 09:34:01 | × | lemonsnicks quits (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Ping timeout: 272 seconds) |
| 09:34:39 | × | mmhat quits (~mmh@p200300f1c7090754ee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 272 seconds) |
| 09:35:33 | → | yauhsien joins (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) |
| 09:36:13 | → | Pickchea joins (~private@user/pickchea) |
| 09:41:23 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 09:47:07 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 09:47:56 | → | mmhat joins (~mmh@p200300f1c70907fcee086bfffe095315.dip0.t-ipconnect.de) |
| 09:50:27 | → | gurkenglas joins (~gurkengla@dslb-002-203-144-112.002.203.pools.vodafone-ip.de) |
| 09:58:36 | × | perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.5) |
| 09:59:01 | → | perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
| 10:00:31 | → | benin0 joins (~benin@183.82.24.82) |
| 10:02:26 | <phma> | If a program does 4000 or so levels of recursion, is something bad likely to happen? |
| 10:02:52 | <[exa]> | no |
| 10:02:58 | <[exa]> | (in general) |
| 10:03:15 | <Rembane> | if it allocates 14Gb of memory in each recursion things might get exciting |
| 10:05:08 | <phma> | 14 gigabits? I don't think so. |
| 10:05:28 | × | juri_ quits (~juri@79.140.115.122) (Read error: Connection reset by peer) |
| 10:05:50 | <Rembane> | Good, then keep recursing. :) |
| 10:05:57 | → | juri_ joins (~juri@79.140.115.122) |
| 10:06:19 | <phma> | I think it'll allocate a 4000-bit number on each level, down to a 1-bit number. |
| 10:06:28 | <phma> | What if I want to rebless instead? |
| 10:07:11 | <Rembane> | That's cool too |
| 10:08:37 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 10:09:08 | × | juri_ quits (~juri@79.140.115.122) (Read error: Connection reset by peer) |
| 10:13:15 | → | juri_ joins (~juri@84-19-175-179.pool.ovpn.com) |
| 10:14:27 | <merijn> | phma: Note that GHC doesn't use a callstack for function calls, so the only real boundary is memory usage |
| 10:22:45 | × | Benzi-Junior quits (~BenziJuni@88-149-64-179.du.xdsl.is) (Quit: ZNC 1.8.2 - https://znc.in) |
| 10:25:57 | × | xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 272 seconds) |
| 10:29:45 | → | toluene0 joins (~toluene@user/toulene) |
| 10:30:24 | × | toluene quits (~toluene@user/toulene) (Ping timeout: 244 seconds) |
| 10:30:24 | toluene0 | is now known as toluene |
| 10:31:01 | × | alexhandy quits (~trace@user/trace) (Read error: Connection reset by peer) |
| 10:31:12 | → | alexhandy joins (~trace@user/trace) |
| 10:32:45 | × | shriekingnoise quits (~shrieking@201.212.175.181) (Quit: Quit) |
| 10:33:31 | → | jgeerds joins (~jgeerds@55d437cf.access.ecotel.net) |
| 10:34:00 | × | v0d1ch quits (~v0d1ch@cable-178-148-112-180.dynamic.sbb.rs) (Quit: Client closed) |
| 10:38:35 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 10:45:30 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 10:48:00 | × | yauhsien quits (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 10:48:41 | → | yauhsien joins (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) |
| 10:49:10 | × | gurkenglas quits (~gurkengla@dslb-002-203-144-112.002.203.pools.vodafone-ip.de) (Ping timeout: 240 seconds) |
| 10:58:09 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) |
| 10:58:39 | → | Benzi-Junior joins (~BenziJuni@dsl-149-64-179.hive.is) |
| 11:02:10 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Ping timeout: 240 seconds) |
| 11:02:47 | → | edrx joins (~Eduardo@2804:56c:d2c1:9700:5761:f063:d847:85bd) |
| 11:03:10 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 11:03:41 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 11:04:16 | → | somniad joins (~gigabitte@098-127-010-012.res.spectrum.com) |
| 11:04:23 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 11:05:33 | × | Cajun quits (~Cajun@user/cajun) (Quit: Client closed) |
| 11:05:57 | <somniad> | okay so I am officially confused |
| 11:06:07 | <somniad> | I might be able to track down the answer on my own eventually but it's gonna be way faster to just ask |
| 11:06:36 | → | acidjnk_new joins (~acidjnk@p200300d6e7058608806bdf82a214d350.dip0.t-ipconnect.de) |
| 11:07:06 | <somniad> | I used haskell very casually for a while when I was much worse at coding and it was great except that I always had dependency problems |
| 11:07:27 | <somniad> | and I think there must be something I'm missing, because I only want to install one package and I'm still having issues |
| 11:07:35 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 11:07:56 | <merijn> | somniad: what you're missing is that the entire notion of "install one package" is mostly obsoleted |
| 11:08:19 | <somniad> | well yes obviously the package has its own dependencies |
| 11:08:25 | <merijn> | somniad: Because "install one package" kinda assumes "there is one global scope to install into" |
| 11:08:35 | <merijn> | somniad: And we got rid of the "one global scope" |
| 11:08:44 | <somniad> | ah okay that explains half my problem |
| 11:09:05 | <somniad> | if I do "stack install <package>" it should still try to install it for use in the local project though right |
| 11:09:21 | <merijn> | ah, I dunno exactly how stack does things |
| 11:09:27 | <somniad> | fair enough |
| 11:09:30 | <somniad> | it's just that |
| 11:09:35 | <merijn> | Because I don't use it. But I do recall people saying "don't use stack install" :p |
| 11:09:44 | <somniad> | lol |
| 11:09:46 | <somniad> | okay |
| 11:10:19 | <somniad> | uh, okay so I wanted to just try getting my feet wet with haskell again with an idea I had for some image processing stuff |
| 11:10:41 | <somniad> | so I looked around and found hip which seems pretty easy to use |
| 11:11:04 | <edrx> | hi all! I draw most of my LaTeX diagrams using this - http://angg.twu.net/dednat6/tug-slides.pdf - that is written in Lua, and I realized that many diagrams that I need would be easier to draw by using Haskell to generate Lua code... anyway, my beginner question of the day is: how do I write a function in Haskell that runs an external program with some input? for example, myfunction "foo" would run something roughly |
| 11:11:04 | <edrx> | equivalent to "echo 'foo' | luaprogram.lua" and would return the output of that... |
| 11:11:10 | <somniad> | but `stack install hip` tells me to add some crazy thing to extra-deps and then trying again it just dies |
| 11:11:29 | <somniad> | what is the alternative method to `stack install` for getting stuff off stackage? hopefully something more reliable? |
| 11:11:47 | <somniad> | has cabal been improved since I was around last? |
| 11:12:37 | <Rembane> | It has changed |
| 11:13:10 | → | xff0x joins (~xff0x@b133147.ppp.asahi-net.or.jp) |
| 11:13:18 | <merijn> | somniad: Depends when "last around" was :p |
| 11:13:30 | <somniad> | hehe, fair |
| 11:14:15 | <somniad> | how long ago was it, maybe three years? not horribly long |
| 11:14:37 | <somniad> | but not horribly short |
| 11:14:45 | → | nate4 joins (~nate@98.45.169.16) |
| 11:15:25 | <somniad> | I was under the impression that stack was made to address serious shortcomings of cabal but also it's not like I'm currently getting back up to speed because I never was up in the first place |
| 11:15:28 | <tomsmeding> | somniad: did it have the new- or v2- commands? |
| 11:16:39 | <merijn> | somniad: I mean "serious shortcomings" is very debatable and depends on how much you buy into certain people/companies vision of how things should be :p |
| 11:17:18 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 11:17:39 | <somniad> | tomsmeding: definitely not v2 |
| 11:17:56 | <[exa]> | edrx: you probably need uniq package and some kind of spawn() or exec() equivalents. But honestly it's much easier (and more portable and maintainable) to have your haskell program to just write the output to stdout, and pipe it with a shell. |
| 11:18:12 | <[exa]> | edrx: managing processes _correctly_ is a mess |
| 11:18:22 | <merijn> | somniad: v2 has made the production of buildplans far more robust |
| 11:18:51 | <somniad> | alright, then, that's good |
| 11:18:54 | <merijn> | somniad: basically: there's the global store (i.e. disk space where dependencies are stored) which allows arbitrarily many conflicting versions/configurations of packages to be installed |
| 11:19:01 | <edrx> | [exa]: I am going to call that function mostly from the ghci repl |
| 11:19:10 | <[exa]> | ah so, so for convenience |
| 11:19:10 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds) |
| 11:19:14 | <edrx> | yes |
| 11:19:17 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 11:19:20 | <merijn> | somniad: Then the buildplan is produced per project/package and only brings one coherent set of dependencies into scope for that project |
| 11:19:33 | <merijn> | somniad: So you no longer have issues with conflicting dependencies between projects |
| 11:20:03 | <[exa]> | edrx: System.Process seems to have pretty well wrapped facilities |
| 11:20:09 | <[exa]> | edrx: here https://hackage.haskell.org/package/process-1.6.14.0/docs/System-Process.html |
| 11:20:19 | <somniad> | neat, that makes a lot of sense and I'm not totally sure why or how it wasn't that way before |
| 11:20:21 | <edrx> | [exa]: great! thanks a lot!!! |
| 11:20:36 | <merijn> | somniad: Same reason none of the other languages do that yet either :p |
| 11:21:04 | ← | edrx parts (~Eduardo@2804:56c:d2c1:9700:5761:f063:d847:85bd) (Killed buffer) |
| 11:21:08 | <merijn> | somniad: See all the various sandbox/pipenv/pyenv/rubyenv/whatever hacks in other languages |
| 11:21:45 | <somniad> | merijn: dependency management is strictly speaking a hard problem but it's always baffled me how it always seems to be even harder than it should be |
| 11:22:27 | <somniad> | I don't have extensive experience with large projects - any idea why it's like this? |
| 11:23:27 | × | frost quits (~frost@user/frost) (Quit: Client closed) |
| 11:27:16 | <hpc> | it's easier to make your own than to try and support all the distros' own packaging systems |
| 11:27:54 | <hpc> | and you can bake in a lot of language-specific logic |
| 11:32:54 | <somniad> | hpc: I suppose the fact that there's such advantages to baking your own is a significant contributing factor to those systems being rough around the edges |
| 11:33:26 | <somniad> | still, I would have thought that a simple, effective approach would have emerged by now and become the norm, or at least a simple approach with minimal severe issues |
| 11:37:47 | → | __monty__ joins (~toonn@user/toonn) |
| 11:40:23 | → | frost joins (~frost@user/frost) |
| 11:40:50 | → | {-d0t-} joins (~q_q@user/-d0t-/x-7915216) |
| 11:41:03 | × | {-d0t-} quits (~q_q@user/-d0t-/x-7915216) (Client Quit) |
| 11:45:25 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 11:45:28 | <sm> | it is somewhat specific to your programming language and its compiler |
| 11:46:55 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection) |
| 11:49:03 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 11:54:23 | × | Benzi-Junior quits (~BenziJuni@dsl-149-64-179.hive.is) (Ping timeout: 255 seconds) |
| 11:57:24 | × | yauhsien quits (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 11:58:10 | → | Benzi-Junior joins (~BenziJuni@88-149-64-179.du.xdsl.is) |
| 11:58:25 | × | Pickchea quits (~private@user/pickchea) (Ping timeout: 272 seconds) |
| 11:58:47 | → | CiaoSen joins (~Jura@p200300c9570ffb002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
| 11:59:56 | × | notzmv quits (~zmv@user/notzmv) (Remote host closed the connection) |
| 12:06:14 | × | frost quits (~frost@user/frost) (Quit: Client closed) |
| 12:12:59 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 12:13:16 | → | yax__ joins (~yax@user/yax/x-9576643) |
| 12:14:56 | → | Guest34 joins (~Guest34@2605:a601:a615:f600:b4b5:b98c:22db:6664) |
| 12:18:29 | → | yauhsien joins (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) |
| 12:22:17 | → | califax joins (~califax@user/califx) |
| 12:22:41 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds) |
| 12:22:44 | × | acidjnk_new quits (~acidjnk@p200300d6e7058608806bdf82a214d350.dip0.t-ipconnect.de) (Ping timeout: 255 seconds) |
| 12:23:45 | × | jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 272 seconds) |
| 12:23:51 | → | notzmv joins (~zmv@user/notzmv) |
| 12:27:11 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 12:30:29 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 12:30:30 | × | yauhsien quits (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Read error: Connection reset by peer) |
| 12:30:53 | → | yauhsien joins (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) |
| 12:32:02 | → | califax joins (~califax@user/califx) |
| 12:32:41 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 12:33:27 | → | frost joins (~frost@user/frost) |
| 12:34:12 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Quit: Leaving) |
| 12:35:13 | × | yauhsien quits (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 12:36:25 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 12:40:35 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 12:43:18 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 12:44:14 | → | rekahsoft joins (~rekahsoft@bras-base-wdston4533w-grc-02-142-113-160-8.dsl.bell.ca) |
| 12:44:44 | × | rekahsoft quits (~rekahsoft@bras-base-wdston4533w-grc-02-142-113-160-8.dsl.bell.ca) (Remote host closed the connection) |
| 12:45:23 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 12:45:24 | → | rekahsoft joins (~rekahsoft@bras-base-wdston4533w-grc-02-142-113-160-8.dsl.bell.ca) |
| 12:46:51 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 12:48:50 | × | xff0x quits (~xff0x@b133147.ppp.asahi-net.or.jp) (Ping timeout: 240 seconds) |
| 12:53:29 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 12:55:46 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 12:56:01 | × | yax__ quits (~yax@user/yax/x-9576643) (Remote host closed the connection) |
| 12:56:22 | → | xff0x joins (~xff0x@2405:6580:b080:900:d119:3d9a:eb96:d442) |
| 12:59:21 | → | acidjnk_new joins (~acidjnk@p200300d6e7058608806bdf82a214d350.dip0.t-ipconnect.de) |
| 12:59:24 | × | ccntrq quits (~Thunderbi@2a01:c22:91f0:c800:77dc:2eb1:fe47:5fbc) (Remote host closed the connection) |
| 12:59:44 | → | ccntrq joins (~Thunderbi@2a01:c22:91f0:c800:77dc:2eb1:fe47:5fbc) |
| 13:00:11 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) |
| 13:00:46 | × | frost quits (~frost@user/frost) (Ping timeout: 252 seconds) |
| 13:01:42 | <qrpnxz> | is there a way to tell GHC that a branch is absolutely unreachable for optimization |
| 13:04:21 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Ping timeout: 244 seconds) |
| 13:08:06 | → | Pickchea joins (~private@user/pickchea) |
| 13:09:36 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 13:10:35 | × | jgeerds quits (~jgeerds@55d437cf.access.ecotel.net) (Ping timeout: 260 seconds) |
| 13:13:03 | → | fserucas_ joins (~fserucas@89.214.126.41) |
| 13:15:30 | × | fserucas quits (~fserucas@1.75.114.89.rev.vodafone.pt) (Ping timeout: 240 seconds) |
| 13:15:52 | → | fserucas joins (~fserucas@89.214.126.41) |
| 13:16:08 | × | fserucas__ quits (~fserucas@1.75.114.89.rev.vodafone.pt) (Ping timeout: 272 seconds) |
| 13:18:52 | <tomsmeding> | Do an FFI call to __builtin_unreachable() |
| 13:19:07 | <tomsmeding> | (not a serious suggestion) |
| 13:20:14 | <qrpnxz> | lmao, too bad i don't think that'd work 🤣 |
| 13:20:43 | <geekosaur> | absurd? (also not a serious suggestion) |
| 13:22:52 | → | yauhsien joins (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) |
| 13:22:59 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 13:23:59 | × | ccntrq quits (~Thunderbi@2a01:c22:91f0:c800:77dc:2eb1:fe47:5fbc) (Ping timeout: 244 seconds) |
| 13:24:17 | → | ccntrq joins (~Thunderbi@dynamic-077-001-123-045.77.1.pool.telefonica.de) |
| 13:26:01 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3ad-40.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 13:26:01 | × | fserucas quits (~fserucas@89.214.126.41) (Read error: Connection reset by peer) |
| 13:26:01 | × | fserucas_ quits (~fserucas@89.214.126.41) (Read error: Connection reset by peer) |
| 13:26:17 | → | zxx7529 joins (~Thunderbi@user/zxx7529) |
| 13:26:32 | → | fserucas_ joins (~fserucas@1.75.114.89.rev.vodafone.pt) |
| 13:26:32 | → | fserucas joins (~fserucas@1.75.114.89.rev.vodafone.pt) |
| 13:27:43 | × | yauhsien quits (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Ping timeout: 272 seconds) |
| 13:27:48 | → | Vajb joins (~Vajb@n1zigc3rgo9mpde2w-1.v6.elisa-mobile.fi) |
| 13:29:21 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 268 seconds) |
| 13:30:03 | → | acidjnk_new3 joins (~acidjnk@p200300d6e7058608e98f24795f89a9fd.dip0.t-ipconnect.de) |
| 13:30:31 | × | causal quits (~user@50.35.83.177) (Quit: WeeChat 3.5) |
| 13:30:40 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 13:32:59 | → | ccntrq1 joins (~Thunderbi@2a01:c23:8dfc:4700:ab64:e678:4e37:1ce0) |
| 13:34:03 | × | acidjnk_new quits (~acidjnk@p200300d6e7058608806bdf82a214d350.dip0.t-ipconnect.de) (Ping timeout: 272 seconds) |
| 13:34:30 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds) |
| 13:35:00 | × | ccntrq quits (~Thunderbi@dynamic-077-001-123-045.77.1.pool.telefonica.de) (Ping timeout: 276 seconds) |
| 13:35:00 | ccntrq1 | is now known as ccntrq |
| 13:37:38 | × | ccntrq quits (~Thunderbi@2a01:c23:8dfc:4700:ab64:e678:4e37:1ce0) (Remote host closed the connection) |
| 13:41:13 | × | dschrempf quits (~dominik@mobiledyn-62-240-134-33.mrsn.at) (Quit: WeeChat 3.5) |
| 13:46:24 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
| 13:48:32 | → | pmarg joins (~pmarg@2a01:799:159f:9b00:73b5:8656:352c:a78e) |
| 13:50:21 | <qrpnxz> | kind of like that yeah, but GHC knows Void is empty |
| 13:51:00 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 13:51:14 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
| 13:51:37 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 13:54:29 | × | xff0x quits (~xff0x@2405:6580:b080:900:d119:3d9a:eb96:d442) (Ping timeout: 244 seconds) |
| 13:55:20 | <tomsmeding> | I don't think you can, apart from arranging your types in such a way that the branch is already known to be impossible in the type checker |
| 13:55:37 | <tomsmeding> | But iirc even then ghc sometimes needs to emit code for unreachable cases |
| 13:55:53 | × | acidjnk_new3 quits (~acidjnk@p200300d6e7058608e98f24795f89a9fd.dip0.t-ipconnect.de) (Ping timeout: 255 seconds) |
| 13:56:10 | → | hasbae joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) |
| 13:57:50 | → | qwedfg joins (~qwedfg@user/qwedfg) |
| 14:01:03 | → | gensyst joins (gensyst@user/gensyst) |
| 14:01:10 | × | radhika quits (uid560836@id-560836.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
| 14:01:56 | <gensyst> | I've got an IORef that I'm, from many places (many threads) doing this: atomicModifyIORef' followed by readIORef. |
| 14:02:05 | <gensyst> | Can anyone think of why this is causing a deadlock? |
| 14:02:05 | <qrpnxz> | Too bad. Well, I don't want to unnecessarily box anyway, so I'm gonna write a subclass without the Maybe in the function and then add a default definition for the one with a Maybe. At that point I'm strongly debating whether to just allow "error", but I don't like partial functions. |
| 14:03:30 | × | Pickchea quits (~private@user/pickchea) (Ping timeout: 240 seconds) |
| 14:03:49 | × | TonyStone quits (~TonyStone@cpe-74-76-51-197.nycap.res.rr.com) (Ping timeout: 272 seconds) |
| 14:04:29 | × | Benzi-Junior quits (~BenziJuni@88-149-64-179.du.xdsl.is) (Ping timeout: 268 seconds) |
| 14:07:19 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 14:07:55 | × | dcoutts quits (~duncan@host86-167-206-10.range86-167.btcentralplus.com) (Ping timeout: 244 seconds) |
| 14:08:06 | → | Benzi-Junior joins (~BenziJuni@88-149-67-162.du.xdsl.is) |
| 14:09:21 | → | segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
| 14:11:05 | × | jmorris quits (uid537181@id-537181.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
| 14:11:08 | <qrpnxz> | gensyst: sounds like the logic of your program is just bad. Hard to say anything specific. |
| 14:11:13 | × | Fischmiep quits (~Fischmiep@user/Fischmiep) (Quit: WeeChat 3.0) |
| 14:11:44 | <geekosaur> | I'm thinking this sounds more like it calls for STM, tbh |
| 14:12:46 | <qrpnxz> | i thought about suggesting that, but hard to say without knowing more. Though generally for concurrent programs with atomic ops on shared values stm is the first thing to come to mind indeed. |
| 14:13:43 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 14:14:34 | → | acidjnk_new3 joins (~acidjnk@p200300d6e7058608e98f24795f89a9fd.dip0.t-ipconnect.de) |
| 14:15:30 | → | pmarg_ joins (~pmarg@2a01:799:159f:9b00:73b5:8656:352c:a78e) |
| 14:15:42 | × | pmarg quits (~pmarg@2a01:799:159f:9b00:73b5:8656:352c:a78e) (Read error: Connection reset by peer) |
| 14:17:10 | × | pmarg_ quits (~pmarg@2a01:799:159f:9b00:73b5:8656:352c:a78e) (Remote host closed the connection) |
| 14:17:14 | → | TonyStone joins (~TonyStone@2603-7080-8607-c36a-c542-8032-a2eb-86d5.res6.spectrum.com) |
| 14:17:28 | → | xff0x joins (~xff0x@2405:6580:b080:900:85b3:13a9:d157:738a) |
| 14:18:35 | → | pmarg joins (~pmarg@2a01:799:159f:9b00:73b5:8656:352c:a78e) |
| 14:20:08 | <hasbae> | when I do :i [] in ghci, it says that it's defined in GHC.Types. How can I find GHC.Types on my hard drive to open up in a text editor? |
| 14:20:38 | × | zxx7529 quits (~Thunderbi@user/zxx7529) (Remote host closed the connection) |
| 14:20:54 | → | zxx7529 joins (~Thunderbi@user/zxx7529) |
| 14:21:01 | <Rembane> | hasbae: Is this good enough? https://hackage.haskell.org/package/ghc-prim-0.8.0/docs/GHC-Types.html |
| 14:22:44 | <geekosaur> | hasbae, the sources to the core packages usually aren't provided, since they're part of the ghc source tree. (what is provided are .o and .hi files, neither of which are text. but there is `ghc --show-iface` to dump .hi files as text) |
| 14:22:51 | <lyiriyah[m]> | hasbae: you can't do that |
| 14:22:51 | <lyiriyah[m]> | more to the point, why do you want to? |
| 14:23:45 | <geekosaur> | also, lists are actually wired into the compiler because they're syntactically odd, so you won't actually be able to see much from the source |
| 14:23:53 | <hasbae> | i want to because I want to see the definition for Monad [] becuase I'm trying to implement it myself and got stuck |
| 14:24:04 | <geekosaur> | iirc the source is only there to generate an "info table" which is how types are tracked |
| 14:24:43 | <qrpnxz> | it's magic :) https://hackage.haskell.org/package/base-4.16.2.0/docs/src/GHC.Base.html#line-1176 |
| 14:24:44 | <gensyst> | qrpnxz, geekosaur ok so here's the concrete goal: have a worker thread (bound OS thread) where I can do stuff from multiple threads. (this stuff on the bound OS thread takes little time compared to actual work on these other multiple threads). |
| 14:25:06 | <gensyst> | i've made a mess of this, i guess.. |
| 14:25:33 | <gensyst> | it's important that all this work happens on the *same* bound thread, so i gotta keep it alive |
| 14:25:57 | <qrpnxz> | by "do stuff from multiple threads" do you mean can receive work from multiple threads? |
| 14:26:35 | <hasbae> | qrpnxz: how did you manage to find that? Whenever I search hoogle or hackage I can never seem to manage to find what I want ... |
| 14:26:42 | <gensyst> | i mean, multiple threads will do work, including schedule things (quick things) onto the bound thread. |
| 14:27:14 | <gensyst> | and not just schedule, but wait for the result. |
| 14:27:22 | <qrpnxz> | hasbae: i went to Control.Monad on hackage.haskell.com/package/base, then I scrolled down to Monad type class, scroll into the instances, and where it says "Monad []" i click source |
| 14:29:02 | <hasbae> | thanks much! |
| 14:30:05 | <geekosaur> | gensyst, that sounds like a TChan for input and a TMVar for the result, maybe |
| 14:30:11 | <qrpnxz> | gensyst: well, you could have a TQueue where threads put a request and a TMVar, then the producer waits on the bound thread to populate the TMVar with the result. |
| 14:30:12 | <hasbae> | I'm surprised the definition of Monad [] uses do notation. That seems circular... wouldn't do notation require the definition of >>= |
| 14:30:26 | <Rembane> | hasbae: do-notation desugars to >>= etc. |
| 14:30:30 | <qrpnxz> | geekosaur: ok i feel more confident on my answer now that you say the same thing lol |
| 14:30:48 | <qrpnxz> | it does seem to be the most make sense way to do it |
| 14:30:58 | <hasbae> | ah, I see. so the whole definition can be written with just >>= |
| 14:31:03 | <qrpnxz> | hasbae: it's cause list is built in and magic :) |
| 14:31:18 | <hasbae> | what do you mean by "magic"? |
| 14:31:48 | <geekosaur> | well, the list monad isn't. also the definition I looked up actually uses a list comprehension, which does *not* desugar to monad notation unless MonadComprehensions is enabled |
| 14:31:51 | <qrpnxz> | well it's just builtin |
| 14:32:07 | <geekosaur> | that is, it isn't magic or built in, only the definition of a list itself is wired in |
| 14:32:27 | <qrpnxz> | and comprehension also built in no? |
| 14:32:36 | <qrpnxz> | because from where is that being pulled |
| 14:32:42 | <geekosaur> | comprehensions are built in but desugar to operations that aren't |
| 14:32:46 | <geekosaur> | map, filter, etc. |
| 14:33:39 | <qrpnxz> | oh right, hasbae remember that you can defined a monad from fmap and join, so for your type try to define join (concat) |
| 14:34:11 | <qrpnxz> | then a >>= k = join (fmap k a) |
| 14:34:54 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 264 seconds) |
| 14:34:55 | <hasbae> | are list comprehensions and do notation separate concepts? I had the understanding that they're the same thing |
| 14:35:33 | <qrpnxz> | well they are separate sugar, but idk that list comprehensions work for any monad other than list except apparently if you use MonadComprehensions |
| 14:35:33 | <geekosaur> | they're similar enough that MonadComprehensions exists, but distinct enough that they're implemented differently by default |
| 14:36:00 | × | zxx7529 quits (~Thunderbi@user/zxx7529) (Remote host closed the connection) |
| 14:36:10 | <hasbae> | ok ill put that caveat in my brain and let it make sense later. Thanks all for the help! |
| 14:36:16 | → | zxx7529 joins (~Thunderbi@user/zxx7529) |
| 14:36:33 | <qrpnxz> | 👍 |
| 14:37:11 | <gensyst> | geekosaur, qrpnxz, sure, i have something like it... and this TChan/TQueue thing puts things into a Map within IORef using atomicModifyIORef' (each identified with a unique key). Then I use readIORef to get it (using the same key). |
| 14:37:26 | <gensyst> | but for some reason i get this deadlock |
| 14:37:27 | <ncf> | has anyone ever tried encoding Girard's paradox in haskell? |
| 14:37:59 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 14:38:48 | <qrpnxz> | gensyst: so you rolled your own queue type? What is the type? |
| 14:39:15 | <geekosaur> | gensyst, tbh I would put into the TChan/TQueue a tuple of a thing to be done in the bound thread and a TMVar for the result. then the original thread blocks on the TMVar. the bound thread reads off the TChan/TQueue, does the operation, and does putTMVar |
| 14:39:27 | <geekosaur> | isn't TChan already a queue? |
| 14:39:39 | <qrpnxz> | yeah that's what i was suggesting geek :) |
| 14:39:41 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 14:39:52 | → | jgeerds joins (~jgeerds@55d437cf.access.ecotel.net) |
| 14:40:37 | <qrpnxz> | and TChan and TQueue are similar yes, but TQueue is faster if you don't need dup or clone |
| 14:41:13 | <qrpnxz> | (which i don't think are necessary in this scenario) |
| 14:41:16 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 14:45:48 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 14:46:33 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 14:46:51 | <gensyst> | is there a book that teaches you this stuff.... |
| 14:47:03 | <gensyst> | this is such pain :S |
| 14:48:57 | <raehik> | gensyst: there's a concurrency book written by one of the main authors of the system, Parallel and Concurrent Programming in Haskell |
| 14:49:23 | <geekosaur> | @where parconc |
| 14:49:23 | <lambdabot> | https://www.safaribooksonline.com/library/view/parallel-and-concurrent/9781449335939/ |
| 14:49:23 | <gensyst> | isn't that outdated now? |
| 14:49:25 | × | alp quits (~alp@user/alp) (Ping timeout: 272 seconds) |
| 14:49:35 | <raehik> | I used it a little bit when learning stm... though it felt like it was aimed at implementors, not users |
| 14:49:41 | <geekosaur> | nope, the things used in there haven't changed in a long time |
| 14:49:52 | × | mmhat quits (~mmh@p200300f1c70907fcee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.5) |
| 14:51:10 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 14:53:05 | <qrpnxz> | Go Proverbs relating to concurrency help :) In particular: "Don't communicate by sharing memory, share memory by communicating." |
| 14:53:47 | <qrpnxz> | communicating in Go you'd use channels. In Haskell it's TQueue et. al |
| 14:55:27 | <qrpnxz> | more here https://go-proverbs.github.io/ |
| 15:01:46 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) |
| 15:02:32 | → | shriekingnoise joins (~shrieking@201.212.175.181) |
| 15:03:04 | × | Typedfern quits (~Typedfern@202.red-83-37-35.dynamicip.rima-tde.net) (Ping timeout: 268 seconds) |
| 15:03:25 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Remote host closed the connection) |
| 15:03:34 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) |
| 15:04:27 | → | Typedfern joins (~Typedfern@202.red-83-37-35.dynamicip.rima-tde.net) |
| 15:08:47 | → | mvk joins (~mvk@2607:fea8:5ce3:8500::909a) |
| 15:12:23 | → | yax joins (~yax@user/yax/x-9576643) |
| 15:12:34 | yax | is now known as yax__ |
| 15:15:45 | → | Pickchea joins (~private@user/pickchea) |
| 15:16:13 | → | nate4 joins (~nate@98.45.169.16) |
| 15:18:42 | × | yax__ quits (~yax@user/yax/x-9576643) (Remote host closed the connection) |
| 15:20:38 | × | zxx7529 quits (~Thunderbi@user/zxx7529) (Remote host closed the connection) |
| 15:20:53 | → | zxx7529 joins (~Thunderbi@user/zxx7529) |
| 15:21:34 | × | bgamari quits (~bgamari@64.223.170.242) (Remote host closed the connection) |
| 15:21:43 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 272 seconds) |
| 15:24:20 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 15:24:24 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Remote host closed the connection) |
| 15:24:59 | × | segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 255 seconds) |
| 15:25:40 | → | bgamari joins (~bgamari@64.223.157.165) |
| 15:36:44 | × | MajorBiscuit quits (~MajorBisc@wlan-145-94-167-213.wlan.tudelft.nl) (Ping timeout: 272 seconds) |
| 15:36:56 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 15:40:18 | × | jgeerds quits (~jgeerds@55d437cf.access.ecotel.net) (Ping timeout: 240 seconds) |
| 15:42:28 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 15:43:21 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 15:44:40 | × | hasbae quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Quit: WeeChat 3.5) |
| 15:46:59 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
| 15:48:53 | → | Fischmiep joins (~Fischmiep@user/Fischmiep) |
| 15:49:15 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 15:50:01 | × | benin0 quits (~benin@183.82.24.82) (Quit: The Lounge - https://thelounge.chat) |
| 15:52:16 | → | segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
| 15:52:48 | × | dextaa quits (~DV@user/dextaa) (Ping timeout: 276 seconds) |
| 15:54:15 | × | CiaoSen quits (~Jura@p200300c9570ffb002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
| 15:56:06 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 15:57:24 | → | zebrag joins (~chris@user/zebrag) |
| 15:59:08 | → | Haskelytic joins (~Haskelyti@118.179.211.17) |
| 15:59:16 | <Haskelytic> | fellas, back with more stupid questions |
| 15:59:18 | × | jonathanx_ quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection) |
| 15:59:35 | → | jonathanx_ joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
| 16:00:09 | <Haskelytic> | I was acquainting myself with the Control.Applicative module contents and I keep seeing this term "action" used to refer to values from an Applicative |
| 16:00:13 | <Haskelytic> | why call it action? |
| 16:00:30 | <Rembane> | Haskelytic: It could be doing something, at least if it's in IO |
| 16:00:51 | <Haskelytic> | Hmm, I suppose if I take IO as an example, that makes sense |
| 16:01:13 | <Rembane> | Probably in ST and STM too, but in many others it's strange. |
| 16:01:17 | <Rembane> | For instance in Maybe. |
| 16:01:24 | <Haskelytic> | but I was just thinking that "action" would be needlessly evocative of a certain type of value |
| 16:01:32 | <Haskelytic> | Rembane: yeah, exactly like Maybe |
| 16:02:08 | <Haskelytic> | but maybe some wise guy here will come in and reframe Maybe as an action now :) |
| 16:02:18 | <Rembane> | Haskelytic: I agree, I think the module is a result of a paper where they do effectful programming: https://www.staff.city.ac.uk/~ross/papers/Applicative.html |
| 16:03:09 | <Haskelytic> | The McBride paper |
| 16:03:15 | <geekosaur> | most often what you're applying *is* an action. but you can think of Maybe's action as a possible computation (where Nothing disables that computation) |
| 16:03:21 | <Rembane> | Haskelytic: I suppose that if you squint enough you could see Maybe as an action that evaluates to either a Just result or Nothing if things didn't work out. |
| 16:03:58 | <Haskelytic> | I skimmed through parts of that paper before but it's honestly a little too advanced at places. It's like reading the work of a zen master :) |
| 16:04:31 | <Rembane> | Sounds like all papers by McBride. :) |
| 16:04:52 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 16:05:24 | <Haskelytic> | geekosaur: Hmm...I guess I never thought "hey all-or-nothing computations are actions" :) |
| 16:05:40 | <dmj`> | anyone aware of an order independent Eq for aeson Value |
| 16:05:42 | <Haskelytic> | RembaneXD |
| 16:06:03 | × | segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 272 seconds) |
| 16:06:10 | × | acidjnk_new3 quits (~acidjnk@p200300d6e7058608e98f24795f89a9fd.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 16:06:40 | × | Guest34 quits (~Guest34@2605:a601:a615:f600:b4b5:b98c:22db:6664) (Ping timeout: 252 seconds) |
| 16:09:27 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 16:10:18 | → | dextaa joins (~DV@user/dextaa) |
| 16:14:17 | × | fserucas quits (~fserucas@1.75.114.89.rev.vodafone.pt) (Quit: Leaving) |
| 16:14:17 | × | fserucas_ quits (~fserucas@1.75.114.89.rev.vodafone.pt) (Quit: Leaving) |
| 16:15:42 | × | mbuf quits (~Shakthi@122.165.55.71) (Quit: Leaving) |
| 16:22:29 | → | alp joins (~alp@user/alp) |
| 16:23:06 | → | Guest34 joins (~Guest34@2605:a601:a615:f600:2884:9a0b:9c02:6827) |
| 16:32:30 | × | califax quits (~califax@user/califx) (Ping timeout: 268 seconds) |
| 16:34:27 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Remote host closed the connection) |
| 16:37:32 | → | acidjnk_new3 joins (~acidjnk@p200300d6e7058608dd2acf5cdcaee246.dip0.t-ipconnect.de) |
| 16:37:58 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 16:41:16 | → | califax joins (~califax@user/califx) |
| 16:41:55 | → | quarkyalice joins (~alice@user/quarkyalice) |
| 16:43:58 | → | econo joins (uid147250@user/econo) |
| 16:45:43 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 16:45:56 | <gensyst> | geekosaur, why did you suggest TMVar instead of just MVar above? |
| 16:46:34 | <geekosaur> | because it works with STM |
| 16:47:14 | <geekosaur> | in particular it works with STM transactions, whereas MVars only care about themselves and don't support the notion of transactions |
| 16:47:47 | <geekosaur> | this will both help with deadlocks and make it clearer where a deadlock is happening |
| 16:48:02 | → | pmarg_ joins (~pmarg@138.199.6.217) |
| 16:48:24 | <gensyst> | ok i'll keep this in mind, thanks |
| 16:48:29 | <gensyst> | lots to learn.. |
| 16:49:32 | <APic> | Yup. |
| 16:51:18 | × | pmarg quits (~pmarg@2a01:799:159f:9b00:73b5:8656:352c:a78e) (Ping timeout: 276 seconds) |
| 16:51:18 | pmarg_ | is now known as pmarg |
| 16:56:16 | → | dcoutts joins (~duncan@host86-167-206-10.range86-167.btcentralplus.com) |
| 16:58:37 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) |
| 16:59:39 | → | pmarg_ joins (~pmarg@2a01:799:159f:9b00:73b5:8656:352c:a78e) |
| 16:59:58 | × | machinedgod quits (~machinedg@d172-219-86-154.abhsia.telus.net) (Ping timeout: 244 seconds) |
| 17:02:30 | × | pmarg quits (~pmarg@138.199.6.217) (Ping timeout: 264 seconds) |
| 17:02:30 | pmarg_ | is now known as pmarg |
| 17:03:51 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
| 17:05:02 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 17:05:30 | × | cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.5) |
| 17:09:36 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 17:23:47 | → | yauhsien joins (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) |
| 17:23:56 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Remote host closed the connection) |
| 17:25:16 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 17:27:58 | × | yauhsien quits (~yauhsien@61-231-21-122.dynamic-ip.hinet.net) (Ping timeout: 240 seconds) |
| 17:28:23 | × | TMA quits (tma@twin.jikos.cz) (Ping timeout: 272 seconds) |
| 17:29:01 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 17:34:21 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 17:35:19 | → | jeetelongname joins (~jeet@cpc96970-rdng25-2-0-cust390.15-3.cable.virginm.net) |
| 17:36:21 | → | alecs joins (~alecs@151.62.28.92) |
| 17:36:59 | × | phma quits (phma@2001:5b0:210d:adb8:1b94:33b4:266b:899a) (Read error: Connection reset by peer) |
| 17:38:15 | → | phma joins (phma@2001:5b0:211f:fc78:8858:65c6:c56c:d940) |
| 17:43:25 | → | jgeerds joins (~jgeerds@55d437cf.access.ecotel.net) |
| 17:44:01 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) |
| 17:45:56 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 17:46:02 | × | Guest34 quits (~Guest34@2605:a601:a615:f600:2884:9a0b:9c02:6827) (Quit: Client closed) |
| 17:48:05 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 17:48:44 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 17:50:47 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 255 seconds) |
| 17:53:05 | × | Pickchea quits (~private@user/pickchea) (Ping timeout: 272 seconds) |
| 17:55:50 | × | zxx7529 quits (~Thunderbi@user/zxx7529) (Remote host closed the connection) |
| 17:56:39 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 17:57:08 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Remote host closed the connection) |
| 17:59:32 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 18:00:28 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 18:02:31 | × | ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection) |
| 18:04:27 | → | _ht joins (~quassel@231-169-21-31.ftth.glasoperator.nl) |
| 18:05:21 | × | toluene quits (~toluene@user/toulene) (Quit: Ping timeout (120 seconds)) |
| 18:05:56 | → | Guest34 joins (~Guest34@2605:a601:a615:f600:2884:9a0b:9c02:6827) |
| 18:06:50 | → | toluene joins (~toluene@user/toulene) |
| 18:07:13 | → | k` joins (~user@2605:a601:a615:f600:2884:9a0b:9c02:6827) |
| 18:07:27 | × | Guest34 quits (~Guest34@2605:a601:a615:f600:2884:9a0b:9c02:6827) (Client Quit) |
| 18:10:02 | × | gensyst quits (gensyst@user/gensyst) (Quit: Leaving) |
| 18:11:28 | → | mixfix41 joins (~sdenynine@user/mixfix41) |
| 18:12:50 | × | merijn quits (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds) |
| 18:13:26 | × | kuribas quits (~user@ptr-17d51enm6mimio3yhxb.18120a2.ip6.access.telenet.be) (Remote host closed the connection) |
| 18:14:29 | → | Topsi joins (~Topsi@host-88-217-154-179.customer.m-online.net) |
| 18:15:50 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds) |
| 18:17:33 | × | alecs quits (~alecs@151.62.28.92) (Quit: WeeChat 3.5) |
| 18:20:35 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 18:21:04 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 244 seconds) |
| 18:22:33 | <qrpnxz> | Haskelytic: a good way to think about monads in general is if i have (m a) then I have "a computation that will result in 'a'". Bind (>>=) :: m a -> (a -> m b) -> m b simply takes a continuation for that value, right? So Maybe Int is a computation that returns an Int. You might think, well what about Nothing? Well in the Maybe monad world Nothing doesn't exist. I can always fmap and (<*>) and |
| 18:22:35 | <qrpnxz> | stuff to a (Maybe Int). In the Maybe world, I've got an Int. You only get Nothing once you try to pattern match into normal haskell. |
| 18:26:21 | <qrpnxz> | Though when you are just talking about an Applicative, with no implication whatsoever that it's a Monad, I can see it being a bit weird to call it an A |
| 18:26:25 | <qrpnxz> | an "action" |
| 18:26:40 | <qrpnxz> | in that context, i like the word "idiom" from the whitepaper |
| 18:40:59 | → | seriously joins (~seriously@ool-18bd55d4.dyn.optonline.net) |
| 18:44:43 | × | Haskelytic quits (~Haskelyti@118.179.211.17) (Quit: Client closed) |
| 18:44:58 | → | Haskelytic joins (~Haskelyti@118.179.211.17) |
| 18:45:37 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 18:46:14 | <Haskelytic> | qrpnxz: yes, I have found the "idiomatic function application" a good description for my own mental model of applicatives |
| 18:48:10 | × | christiansen quits (~christian@83-95-137-75-dynamic.dk.customer.tdc.net) (Ping timeout: 240 seconds) |
| 18:48:34 | <Rembane> | Haskelytic: What's idiomatic function application? |
| 18:51:59 | <Haskelytic> | Rembane: the way I understood it, your type `t` has its own peculiar notion of applying a function `f` to a value `a` to produce a `b` entirely within the context of `t` |
| 18:51:59 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 255 seconds) |
| 18:52:17 | × | quarkyalice quits (~alice@user/quarkyalice) (Remote host closed the connection) |
| 18:52:29 | <Haskelytic> | ZipList would be one example |
| 18:52:36 | → | quarkyalice joins (~alice@172.77.29.178) |
| 18:52:36 | × | quarkyalice quits (~alice@172.77.29.178) (Changing host) |
| 18:52:36 | → | quarkyalice joins (~alice@user/quarkyalice) |
| 18:52:38 | × | _ht quits (~quassel@231-169-21-31.ftth.glasoperator.nl) (Read error: Connection reset by peer) |
| 18:53:29 | <Haskelytic> | where the non-peculiar notion is just the usual haskell `f a` |
| 18:53:40 | <Rembane> | Haskelytic: That's cool. |
| 18:53:59 | <Haskelytic> | but idk man I need some more experience with applicatives tbh |
| 18:54:00 | <Rembane> | Haskelytic: It takes a while to make sense of it. Interesting. |
| 18:54:01 | → | kenaryn joins (~aurele@cre71-h03-89-88-44-27.dsl.sta.abo.bbox.fr) |
| 18:55:21 | <Haskelytic> | while we're on the topic of typeclasses |
| 18:55:30 | <Haskelytic> | these laws man, who comes up with them :) |
| 18:56:02 | <Rembane> | They usually come from category theory, or some other mathematic area. |
| 18:56:20 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) |
| 18:56:32 | <Haskelytic> | Hah, no wonder they are impenetrable :) |
| 18:56:37 | <Rembane> | I guess there are papers where they are formulated, so you could point to some specific authors of the laws. :) |
| 18:56:42 | <Rembane> | Do you have any examples? |
| 18:57:04 | <Haskelytic> | take the traversal law |
| 18:57:19 | <Haskelytic> | So `t . traverse f = traverse (t . f)` |
| 18:57:34 | → | lifter joins (~lifter@99-73-149-100.lightspeed.livnmi.sbcglobal.net) |
| 18:57:36 | <Haskelytic> | How the hell do you cook that up lol |
| 18:57:48 | <tomsmeding> | The Monad laws in particular have a much nicer presentation when expressed about >=> instead of >>=, they mostly become the monoid laws |
| 18:57:57 | <Rembane> | Haskelytic: Is it traversal that needs Functor? |
| 18:58:12 | <Haskelytic> | Rembane: yep, Foldable too |
| 18:58:15 | <tomsmeding> | Rembane: Functor is a superclass of Traverse |
| 18:58:23 | <tomsmeding> | *Traversable |
| 18:58:40 | <darkling> | Haskelytic: At the maths level, it's usually "it would be useful if *this* was true, because then we could assume *that* happens" |
| 18:58:43 | <Rembane> | Haskelytic, tomsmeding: Then I propose that's why traversal has a law that looks like a law from Functor. :D |
| 18:58:51 | <Haskelytic> | tomsmeding: Hmm never saw it presented with the fish |
| 18:59:01 | <Haskelytic> | maybe i'll try that on my own sometime |
| 18:59:03 | <Rembane> | The fish operator lets you write pointless code <3 |
| 18:59:03 | <tomsmeding> | Haskelytic: Foldable doesn't require Functor |
| 18:59:35 | <Haskelytic> | tomsmeding: oops meant to say that it's Traversable needs both foldable / functor |
| 19:00:02 | <tomsmeding> | Haskelytic: https://stackoverflow.com/a/69668319/1608468 |
| 19:00:28 | <tomsmeding> | (the second answer, in case the deep link fails) |
| 19:00:30 | <Haskelytic> | darkling: so is that all there is to it? some wizard man went, "here's a nice property P we should have" :) |
| 19:00:45 | <Haskelytic> | I guess for the functor laws it seems quite sane |
| 19:01:39 | <Haskelytic> | I imagine functors where `fmap (f . g) /= fmap f . fmap g` would be quite chaotic |
| 19:02:04 | <Haskelytic> | tomsmeding: oh nice, thanks for the link |
| 19:02:07 | <Rembane> | Haskelytic: I think they built a system where all the pieces fit together, and then the Haskell folks have implemented it in Haskell. |
| 19:02:10 | <darkling> | Pretty much. Most of them are "sane" in the sense that they either reflect a common use case or imply a particular kind of utility.. |
| 19:02:22 | <tomsmeding> | Haskelytic: in maths, a functor is something that preserves identity and function composition -- the haskell laws say precisely thag |
| 19:03:13 | <Rembane> | It's even on the Wikipedia page: https://en.wikipedia.org/wiki/Functor |
| 19:03:20 | × | kenaryn quits (~aurele@cre71-h03-89-88-44-27.dsl.sta.abo.bbox.fr) (Quit: leaving) |
| 19:03:46 | <qrpnxz> | laws in the base classes are usually really common sense in the sense that they usually basically say "nothing funny is going on" |
| 19:04:05 | <darkling> | You then get to the point of identifying similar things, or composability of things (Functor/Applicative/Monad in the first case; identity/associativity/invertibility in the case of algebraic structures) |
| 19:04:55 | <darkling> | https://en.wikipedia.org/wiki/Monoid#/media/File:Algebraic_structures_-_magma_to_group.svg is a really good picture for the latter. |
| 19:07:20 | <qrpnxz> | hey, there a way to negate a constraint? How to say "'a' is NOT Eq" |
| 19:07:29 | → | _ht joins (~quassel@231-169-21-31.ftth.glasoperator.nl) |
| 19:07:35 | × | aisa quits (~serum@2a02:8388:6bc1:1d00:6ddd:7a24:70:80) (Quit: WeeChat 3.4.1) |
| 19:07:46 | <geekosaur> | qrpnxz, no |
| 19:07:50 | → | aisa joins (~aisa@2a02:8388:6bc1:1d00:72a:7712:9acd:74b4) |
| 19:08:29 | <qrpnxz> | tragic |
| 19:08:34 | <geekosaur> | the witness for presence of a constraint is the constraint dictionary, absence requires some other way to witness it |
| 19:08:52 | × | aisa quits (~aisa@2a02:8388:6bc1:1d00:72a:7712:9acd:74b4) (Changing host) |
| 19:08:52 | → | aisa joins (~aisa@user/aisa) |
| 19:08:59 | <lifter> | Is GeneralizedNewtypeDeriving on by default? This appears to be the case in my code, unless I did something inadvertently to turn it on somehow. |
| 19:09:14 | <qrpnxz> | you might have it enabled in your cabal |
| 19:09:16 | <qrpnxz> | file |
| 19:09:18 | <Rembane> | lifter: You turned it on without knowing. Do you have an example? |
| 19:09:45 | <tomsmeding> | Haskelytic: the first traverse law I kind of read like this: https://tomsmeding.com/vang/SDwj5t/temp.jpg |
| 19:09:57 | <geekosaur> | no, it's off by default. but GHC2021 implies it |
| 19:10:00 | × | abrar_ quits (~abrar@static-108-2-152-54.phlapa.fios.verizon.net) (Quit: WeeChat 3.5) |
| 19:10:08 | <tomsmeding> | Both ways to go from a to G (T b) should result in the same thing |
| 19:10:20 | ← | aisa parts (~aisa@user/aisa) () |
| 19:10:24 | → | abrar joins (~abrar@static-108-2-152-54.phlapa.fios.verizon.net) |
| 19:10:50 | → | segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
| 19:11:05 | <lifter> | OK, maybe it's due to the version of GHC I'm using, which is 9.2.2 |
| 19:11:22 | <geekosaur> | that may default to -XGHC2021, yes |
| 19:11:26 | <tomsmeding> | Haskelytic: The ~ was intended to mean "natural transformation", which literally means that it has a type signature like the one written |
| 19:12:47 | <tomsmeding> | And then the other two traverse laws are _kind of_ that it preserves identity and "composition", for as far as that makes sense |
| 19:13:06 | <tomsmeding> | Composition of a -> f b functions in this case |
| 19:13:41 | <tomsmeding> | That is, composition of an a -> f b and a b -> g c into an a -> f (g c) |
| 19:14:26 | <lifter> | Rembane: https://paste.tomsmeding.com/5I8MbAaG#file-1 |
| 19:14:33 | <tomsmeding> | Where the Compose just turns f (g c) into (Compose f g) c, so that the function given to traverse is of the form a -> f' c, f' being Compose f g |
| 19:15:32 | <Rembane> | lifter: Sweet! I believe that geekosaur has the solution to this some minutes ago. Does anything happen if you add GeneralizedNewtypeDeriving again? |
| 19:15:47 | <lifter> | Rembane: Nope, nothing happens. |
| 19:16:04 | <tomsmeding> | lifter: outside of a cabal project that specifies otherwise using e.g. "default-language: Haskell2010", ghc chooses some default; for a long time that was Haskell2010, but as geekosaur said this recently changed to GHC2021 |
| 19:16:10 | <Rembane> | lifter: Good. |
| 19:16:33 | <geekosaur> | cabal uses the defaultof that ghc, and ghc 9.2.x defaults to GHC2021 which includes GND |
| 19:16:58 | <lifter> | Interesting, I didn't know that GHC2021 is a thing. Thanks all. |
| 19:17:27 | <tomsmeding> | Indeed since 9.2 https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0380-ghc2021.rst |
| 19:17:57 | × | segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 272 seconds) |
| 19:18:11 | <geekosaur> | https://downloads.haskell.org/ghc/9.2.1/docs/html/users_guide/exts/control.html |
| 19:18:28 | <geekosaur> | gives the full list of extensions in GHC2021 |
| 19:19:02 | <geekosaur> | if you prefer not to be surprised by this, specify language: Haskell2010 |
| 19:19:03 | <lifter> | Nice! |
| 19:19:42 | <geekosaur> | (or for users to be surprised when your package fails to compile on older ghc versions, remembering 8.10.7 is still widely used) |
| 19:19:51 | <Rembane> | \o/ We're in the future! \o/ |
| 19:19:56 | <lifter> | I actually do have "default-language: Haskell2010" in my cabal file, it must be overridev. |
| 19:20:57 | → | nate4 joins (~nate@98.45.169.16) |
| 19:23:05 | <Haskelytic> | tomsmeding: that explanation of Compose made things a bit clearer, thanks! |
| 19:26:11 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 272 seconds) |
| 19:26:18 | → | pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
| 19:26:20 | → | yauhsien joins (~Yau-Hsien@61-231-21-122.dynamic-ip.hinet.net) |
| 19:27:56 | <Philonous> | What's the cheapest way to block a thread until another thread wakes it up? MVar perhaps? |
| 19:28:43 | <geekosaur> | MVar or TMVar, yeh |
| 19:29:31 | <Philonous> | I don't think STM helps me here, so I'll just use an MVar. Thanks! |
| 19:30:35 | × | seriously quits (~seriously@ool-18bd55d4.dyn.optonline.net) (Quit: Client closed) |
| 19:35:30 | → | machinedgod joins (~machinedg@d172-219-86-154.abhsia.telus.net) |
| 19:37:15 | × | yauhsien quits (~Yau-Hsien@61-231-21-122.dynamic-ip.hinet.net) (Quit: Leaving) |
| 19:48:52 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 19:52:00 | <qrpnxz> | >GHC2021 |
| 19:52:05 | <qrpnxz> | hadn't heard of that cool |
| 19:53:33 | <qrpnxz> | extensions to not feel bad about in list form :) |
| 19:56:12 | → | abhinav joins (~abhinav@c-67-169-139-16.hsd1.ca.comcast.net) |
| 19:56:33 | × | machinedgod quits (~machinedg@d172-219-86-154.abhsia.telus.net) (Ping timeout: 276 seconds) |
| 19:57:02 | × | alp quits (~alp@user/alp) (Ping timeout: 272 seconds) |
| 19:58:34 | → | Pickchea joins (~private@user/pickchea) |
| 20:02:20 | → | seriously joins (~seriously@ool-18bd55d4.dyn.optonline.net) |
| 20:03:53 | × | _ht quits (~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection) |
| 20:05:21 | → | jinsun__ joins (~jinsun@user/jinsun) |
| 20:05:21 | jinsun | is now known as Guest6181 |
| 20:05:21 | jinsun__ | is now known as jinsun |
| 20:05:41 | → | coot joins (~coot@213.134.190.95) |
| 20:07:32 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds) |
| 20:09:09 | <lifter> | I have a question about terminology. The term "product" as related to algebraic data types seems specifically concerned with data constructors (that are arity 2+). However, I often see it used as "product type," which seems to be a more general sense. So is a "product type" any type with an arity 2+ data constructor? |
| 20:09:53 | × | Guest6181 quits (~jinsun@user/jinsun) (Ping timeout: 272 seconds) |
| 20:10:31 | → | dsrt^ joins (~dsrt@c-73-207-207-252.hsd1.ga.comcast.net) |
| 20:12:39 | <geekosaur> | it helps to think of it as doing math on numbers of possible values |
| 20:13:07 | <geekosaur> | Maybe is a sum type: it adds one possible value (Nothing) to the nnumber of possible values of the type it's applied to |
| 20:13:10 | → | alp joins (~alp@user/alp) |
| 20:13:52 | <geekosaur> | a product type multiplies the number of values: Foo Word8 Word8 has 256*256 possible values |
| 20:14:38 | <geekosaur> | (Haskell types can combine these, by having multiple constructors (addition) which may hold multiple values (multiplication) |
| 20:14:40 | <geekosaur> | ) |
| 20:15:41 | → | pavonia joins (~user@user/siracusa) |
| 20:15:47 | <geekosaur> | this is why we call them algebraic data types: you can do algebra in this way on the number of values a data constructor can have |
| 20:15:57 | <int-e> | we can add, multiply, exponentiate, and do something weird called a least fixed point... and then a bit on top of that. |
| 20:16:13 | <geekosaur> | which algebra operates on the type level instead of the value level |
| 20:16:30 | <lifter> | Yeah, I'm feeling pretty clear on that. I'm just wondering, if given "data A = A Int Int", "A Int Int" is a product (data constructor)... OK, then what is a "product type"? In contrast, the term "sum type" makes more sense to me because it describes not a given data constructor but a type with multiple data constructors. |
| 20:16:54 | <int-e> | (weird: `data Tree a = Leaf a | Nest (Tree (a,a))`. And GADTs too.) |
| 20:17:32 | <geekosaur> | lifter, that is a product type. the only weirdness is how Haskell can do both at the same time |
| 20:17:55 | <geekosaur> | the "weird" examoke int-e just showed being one example |
| 20:18:11 | <lifter> | OK... Then next question :) Given "data MyType = A | B Int Int", is MyType a sum or a product type? |
| 20:18:21 | <Rembane> | lifter: Yes! :D |
| 20:18:43 | <geekosaur> | it's both |
| 20:18:49 | <int-e> | "examoke" is cute, because it's pronouncible. ("example") |
| 20:18:58 | <geekosaur> | it has (2^64)*(2^64)+1 values |
| 20:19:03 | <lifter> | OK, that makes sense. |
| 20:19:15 | geekosaur | is good at typoes 🙂 |
| 20:19:19 | <Haskelytic> | Sum and Product are best friends because they collaborate well :) |
| 20:20:00 | <Haskelytic> | I appear to be good at terms, not so much at types (yet) :) |
| 20:20:08 | int-e | resists the temptation to mention bottoms... not. |
| 20:20:20 | <int-e> | (they mess up the algebra considerably) |
| 20:20:34 | <Rembane> | int-e: Don't they mess up absolutely everything? |
| 20:20:47 | <int-e> | Rembane: Ah but they're also essential for laziness. |
| 20:20:59 | <int-e> | So it's a price we pay gladly ;) |
| 20:21:08 | <Haskelytic> | I feel like there must be a hidden reason to call them "bottoms" if you catch my drift ;) |
| 20:21:10 | <geekosaur> | "fast and loose reasoning is morally correct"… if you're careful |
| 20:21:19 | <int-e> | (We also complain a lot.) |
| 20:21:21 | <Rembane> | int-e: I haven't understood why, but it seems reasonable. Is bottom necessary because there are some values that are never evaluated? |
| 20:21:23 | <geekosaur> | least defined value = bottom |
| 20:21:53 | <Rembane> | Haskelytic: They are the opposites to tops! In a lettuce... eh... |
| 20:22:13 | <Haskelytic> | geekosaur: what is a most defined value? |
| 20:22:18 | <Rembane> | Haskelytic: https://ncatlab.org/nlab/show/lattice |
| 20:22:34 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 20:22:43 | <geekosaur> | in a programming language most values are "most defined", there's no distinguishing at that level |
| 20:22:56 | <int-e> | Rembane: Well, in the face of arbitrary recursion, laziness allows f x = f x, and then that needs to have a value if you give it semantics... |
| 20:23:25 | <Haskelytic> | geekosaur: so is it just a dichotomy? you're either bottom or defined? |
| 20:23:26 | <int-e> | Rembane: So, it's a mix of arbitrary recursion and laziness really. Bottoms are also convenient for *modeling* laziness; they feature in Böhm trees. |
| 20:23:26 | <Rembane> | int-e: Is this the halting problem with a value? |
| 20:23:32 | <geekosaur> | but you do have intermediate states: consider A Int Int from earlier, where one is defined and the other is not/bottom. this is not most defined, whereas both defined would be most defined |
| 20:24:10 | <geekosaur> | note that this is still useful as long as the least defined part is never evaluated |
| 20:24:12 | <int-e> | Rembane: There's some wiggle space here. "necessary" is too strong. CPUs don't have bottoms :P |
| 20:24:29 | <Rembane> | int-e: No, they have interrupts and flags. :) |
| 20:24:30 | <geekosaur> | sure they do, they're called exceptions |
| 20:24:36 | <Haskelytic> | geekosaur: ahh nice example |
| 20:25:00 | <int-e> | That's just an elaborate change of control flow. |
| 20:25:14 | <geekosaur> | and then there's IEEE floating point, where NaNs constitute a group of least defined values |
| 20:25:18 | <int-e> | . o O ( triple fault ) |
| 20:25:38 | <geekosaur> | with well defined rules for how they interact |
| 20:25:51 | <Haskelytic> | int-e: I think you could consider a malfunctioning CPU to have hit bottom :) |
| 20:26:04 | <geekosaur> | F0 0F E8 E7 🙂 |
| 20:26:20 | <int-e> | Haskelytic: True, I do tend to think of CPUs as ideal ones that always perform according to specification. |
| 20:26:51 | <int-e> | https://en.wikipedia.org/wiki/Halt_and_Catch_Fire_(computing) |
| 20:26:51 | <Haskelytic> | geekosaur: I hate floating point math, even after studying it |
| 20:26:57 | <int-e> | None of that :P |
| 20:27:27 | <darkling> | Haskelytic: Odd. That phrase is usually "especially after", not "even after". :) |
| 20:27:45 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 20:27:59 | <Haskelytic> | i was saving keystrokes :) |
| 20:28:42 | <Haskelytic> | but now at work I need to deal with floating point daily |
| 20:28:56 | <Haskelytic> | the anxiety is real |
| 20:29:01 | <Haskelytic> | Haskell is my cope |
| 20:31:07 | <int-e> | > sort [0/0, 1, 0/0, -1] |
| 20:31:09 | <lambdabot> | [-1.0,NaN,1.0,NaN] |
| 20:31:34 | <int-e> | Hmm, can we get 1 before -1 doing that? |
| 20:32:13 | × | adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Write error: Connection reset by peer) |
| 20:32:13 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 20:32:13 | × | califax quits (~califax@user/califx) (Read error: Connection reset by peer) |
| 20:32:41 | → | califax joins (~califax@user/califx) |
| 20:32:47 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 20:32:52 | → | adanwan joins (~adanwan@gateway/tor-sasl/adanwan) |
| 20:32:57 | <int-e> | > sort [-1, 0/0, 1] |
| 20:32:59 | <lambdabot> | [1.0,NaN,-1.0] |
| 20:33:06 | <Rembane> | I wonder why the NaNs aren't next to each other |
| 20:33:32 | <int-e> | > (0/0 `compare` 1, 1 `compare` 0/0) |
| 20:33:34 | <lambdabot> | error: |
| 20:33:34 | <lambdabot> | • No instance for (Num Ordering) arising from the literal ‘0’ |
| 20:33:34 | <lambdabot> | • In the first argument of ‘(/)’, namely ‘0’ |
| 20:33:46 | <int-e> | > ((0/0) `compare` 1, 1 `compare` (0/0)) |
| 20:33:48 | <lambdabot> | (GT,GT) |
| 20:34:06 | <Rembane> | That is starting to look like NULL in SQL |
| 20:34:30 | <int-e> | Rembane: At the CPU level, all comparisons involving NaN are false. |
| 20:35:12 | <int-e> | This manifests as an illegal Ord instance, and that breaks sorting. |
| 20:35:35 | <geekosaur> | ^ |
| 20:35:47 | <Haskelytic> | basically NaNs are unordered, trichotomy is dead :) |
| 20:35:59 | <Rembane> | int-e: Cool, I was expecting that NaNs propagated through everything, and it doesn't seem so. |
| 20:36:00 | <geekosaur> | which means among other things that Maps with NaNs in them do odd things |
| 20:36:06 | <darkling> | There's always this: https://en.wikipedia.org/wiki/James_A._D._W._Anderson#Transreal_arithmetic |
| 20:36:12 | → | segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
| 20:36:16 | <darkling> | (That was sarcasm.) |
| 20:36:17 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Remote host closed the connection) |
| 20:36:17 | <Rembane> | Transreal arithmetic is the best name. |
| 20:36:24 | <geekosaur> | well, you can't have NaN :: Bool |
| 20:36:48 | <geekosaur> | so it has to have some value that fits a Bool, even in CPU level operations |
| 20:36:49 | <int-e> | A lot of code involving floating point numbers just pretends that NaNs aren't real. :P |
| 20:37:08 | <darkling> | Rembane: I worked in that department for a while. I have a... jaded opinion on the subject. |
| 20:37:12 | <Haskelytic> | I wish I could pretend floating point isn't real :) |
| 20:37:32 | <int-e> | But it's too useful to go away anytime soon. |
| 20:37:59 | <Rembane> | darkling: Interesting. If we're ever in the same place I'll buy you a beer and ask you to elucidate. |
| 20:38:22 | × | seriously quits (~seriously@ool-18bd55d4.dyn.optonline.net) (Ping timeout: 252 seconds) |
| 20:38:28 | <Rembane> | Haskelytic: You could work in a domain where floating point arithmetic doesn't exist. Like banking for instance. |
| 20:42:08 | × | dsrt^ quits (~dsrt@c-73-207-207-252.hsd1.ga.comcast.net) (Ping timeout: 244 seconds) |
| 20:44:19 | → | dsrt^ joins (~dsrt@c-73-207-207-252.hsd1.ga.comcast.net) |
| 20:46:15 | × | mvk quits (~mvk@2607:fea8:5ce3:8500::909a) (Ping timeout: 244 seconds) |
| 20:50:52 | × | k` quits (~user@2605:a601:a615:f600:2884:9a0b:9c02:6827) (Ping timeout: 272 seconds) |
| 20:53:04 | × | coot quits (~coot@213.134.190.95) (Quit: coot) |
| 20:58:44 | × | Topsi quits (~Topsi@host-88-217-154-179.customer.m-online.net) (Read error: Connection reset by peer) |
| 21:07:51 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 21:20:24 | → | Guest67 joins (~Guest67@39.41.127.107) |
| 21:21:42 | × | pmarg quits (~pmarg@2a01:799:159f:9b00:73b5:8656:352c:a78e) (Remote host closed the connection) |
| 21:23:04 | × | Guest67 quits (~Guest67@39.41.127.107) (Client Quit) |
| 21:24:32 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) |
| 21:28:45 | × | jeetelongname quits (~jeet@cpc96970-rdng25-2-0-cust390.15-3.cable.virginm.net) (Ping timeout: 260 seconds) |
| 21:31:43 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 21:33:30 | <EvanR> | >decides to work in a domain where floating point arithmetic doesn't exist |
| 21:34:00 | <EvanR> | >downloads "arbitrary precision" library for ruby, and it's decimal floating point |
| 21:36:40 | <tomsmeding> | Arbitrary != Infinite |
| 21:37:58 | × | Pickchea quits (~private@user/pickchea) (Ping timeout: 240 seconds) |
| 21:38:02 | <tomsmeding> | https://hackage.haskell.org/package/exact-real-0.12.5.1/docs/Data-CReal.html |
| 21:38:49 | <tomsmeding> | Oh wait those are arbitrary too |
| 21:39:49 | <monochrom> | CReal does infinite. Then it goes on to arbitrarily decides that == just needs 40 digis. >:) |
| 21:39:49 | × | rekahsoft quits (~rekahsoft@bras-base-wdston4533w-grc-02-142-113-160-8.dsl.bell.ca) (Ping timeout: 272 seconds) |
| 21:43:29 | × | adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection) |
| 21:43:44 | → | adanwan joins (~adanwan@gateway/tor-sasl/adanwan) |
| 21:44:04 | <tomsmeding> | Oh right, only the comparison functions care about the actual precision I guess |
| 21:44:47 | <tomsmeding> | Otherwise there is apparently99,99 this, in a weird package I've never heard of https://hackage.haskell.org/package/toysolver-0.0.5/docs/Data-AlgebraicNumber-Real.html |
| 21:45:06 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 21:45:31 | <EvanR> | drake meme cannot abide arbitrary precision real "comparison" |
| 21:45:43 | <EvanR> | drake meme prefers arbitrary precision real min and max xD |
| 21:46:32 | <monochrom> | heh |
| 21:46:47 | → | machinedgod joins (~machinedg@d172-219-86-154.abhsia.telus.net) |
| 21:47:52 | <tomsmeding> | That Data.AlgebraicNumber.Real looks really99,99 expensive :p |
| 21:47:58 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 21:48:03 | <tomsmeding> | Unsurprisingly |
| 21:48:29 | <dolio> | Actual real numbers are not very nice for calculation, generally. |
| 21:56:17 | × | lifter quits (~lifter@99-73-149-100.lightspeed.livnmi.sbcglobal.net) () |
| 21:58:12 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Remote host closed the connection) |
| 21:59:37 | → | king_gs joins (~Thunderbi@2806:103e:29:b4b2:136b:52c2:803e:56a9) |
| 22:04:50 | × | acidjnk_new3 quits (~acidjnk@p200300d6e7058608dd2acf5cdcaee246.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
| 22:07:41 | × | jgeerds quits (~jgeerds@55d437cf.access.ecotel.net) (Ping timeout: 272 seconds) |
| 22:09:00 | → | acidjnk_new3 joins (~acidjnk@p200300d6e7058608dd2acf5cdcaee246.dip0.t-ipconnect.de) |
| 22:11:49 | × | iteratee quits (~kyle@162.218.222.107) (Remote host closed the connection) |
| 22:15:00 | → | pmarg joins (~pmarg@2a01:799:159f:9b00:adb4:fb66:cf74:dbd4) |
| 22:16:52 | → | iteratee joins (~kyle@162.218.222.107) |
| 22:20:32 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) |
| 22:22:21 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 244 seconds) |
| 22:26:22 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 22:28:39 | × | segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 276 seconds) |
| 22:29:22 | → | notzmv joins (~zmv@user/notzmv) |
| 22:31:10 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) (Remote host closed the connection) |
| 22:38:49 | × | AlexNoo quits (~AlexNoo@178.34.160.206) (Read error: Connection reset by peer) |
| 22:39:33 | → | AlexNoo joins (~AlexNoo@178.34.160.206) |
| 22:42:35 | → | NaturalNumber joins (~monadam@137.229.82.64) |
| 22:47:32 | × | motherfsck quits (~motherfsc@user/motherfsck) (Quit: irslackd) |
| 22:47:51 | → | motherfsck joins (~motherfsc@user/motherfsck) |
| 22:48:05 | × | Haskelytic quits (~Haskelyti@118.179.211.17) (Quit: Client closed) |
| 22:48:40 | × | winny quits (~weechat@user/winny) (Ping timeout: 268 seconds) |
| 22:49:21 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 22:49:22 | → | segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
| 22:50:27 | → | winny joins (~weechat@user/winny) |
| 22:56:06 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 22:57:41 | → | jmorris joins (uid537181@id-537181.uxbridge.irccloud.com) |
| 22:58:16 | × | PiDelport quits (uid25146@id-25146.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 23:00:34 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 23:00:48 | × | king_gs quits (~Thunderbi@2806:103e:29:b4b2:136b:52c2:803e:56a9) (Quit: king_gs) |
| 23:06:30 | → | jmdaemon joins (~jmdaemon@user/jmdaemon) |
| 23:06:44 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a9e5:8234:e3a4:dc0e) |
| 23:06:53 | × | kitty3 quits (~kitty@096-039-147-043.res.spectrum.com) (Ping timeout: 256 seconds) |
| 23:13:19 | × | AlexNoo quits (~AlexNoo@178.34.160.206) (Read error: Connection reset by peer) |
| 23:14:03 | → | AlexNoo joins (~AlexNoo@178.34.160.206) |
| 23:14:30 | × | sayola quits (~sayola@dslb-088-078-152-210.088.078.pools.vodafone-ip.de) (Read error: Connection reset by peer) |
| 23:14:45 | → | NaturalNumber123 joins (~monadam@137.229.82.64) |
| 23:15:27 | × | Alex_test quits (~al_test@178.34.160.206) (Ping timeout: 272 seconds) |
| 23:17:10 | × | NaturalNumber quits (~monadam@137.229.82.64) (Ping timeout: 240 seconds) |
| 23:17:35 | → | Haskelytic joins (~Haskelyti@118.179.211.17) |
| 23:18:23 | → | NaturalNumber joins (~monadam@137.229.82.64) |
| 23:18:50 | → | causal joins (~user@50.35.83.177) |
| 23:18:58 | → | Alex_test joins (~al_test@178.34.160.206) |
| 23:19:07 | → | sayola joins (~sayola@dslb-088-078-152-210.088.078.pools.vodafone-ip.de) |
| 23:19:41 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
| 23:20:04 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 23:20:31 | × | NaturalNumber123 quits (~monadam@137.229.82.64) (Ping timeout: 272 seconds) |
| 23:21:33 | → | NaturalNumber123 joins (~monadam@137.229.82.64) |
| 23:22:28 | → | nate4 joins (~nate@98.45.169.16) |
| 23:23:41 | × | NaturalNumber quits (~monadam@137.229.82.64) (Ping timeout: 272 seconds) |
| 23:24:19 | × | dsrt^ quits (~dsrt@c-73-207-207-252.hsd1.ga.comcast.net) (Ping timeout: 272 seconds) |
| 23:26:57 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 244 seconds) |
| 23:27:55 | <Logio> | they are nice for calculus, specifically |
| 23:28:43 | → | quarkyalice_ joins (~alice@172.77.29.178) |
| 23:28:43 | × | quarkyalice_ quits (~alice@172.77.29.178) (Changing host) |
| 23:28:43 | → | quarkyalice_ joins (~alice@user/quarkyalice/x-8092822) |
| 23:28:51 | <dolio> | Yeah, they are sort of exactly what you'd come up with to make ε-δ work. |
| 23:29:31 | × | quarkyalice quits (~alice@user/quarkyalice) (Ping timeout: 244 seconds) |
| 23:30:03 | × | segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 244 seconds) |
| 23:30:24 | → | dsrt^ joins (~dsrt@c-73-207-207-252.hsd1.ga.comcast.net) |
| 23:32:37 | → | mimmy joins (~mimmy@2607:fea8:6c0:e30:987e:3:c091:178c) |
| 23:32:55 | → | segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
| 23:34:11 | × | mimmy quits (~mimmy@2607:fea8:6c0:e30:987e:3:c091:178c) (Client Quit) |
| 23:35:45 | → | gurkenglas joins (~gurkengla@dslb-002-203-144-112.002.203.pools.vodafone-ip.de) |
| 23:36:59 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 272 seconds) |
| 23:37:28 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 23:41:42 | × | winny quits (~weechat@user/winny) (Ping timeout: 268 seconds) |
| 23:47:54 | → | winny joins (~weechat@user/winny) |
| 23:50:10 | × | segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 240 seconds) |
| 23:59:17 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds) |
All times are in UTC on 2022-07-14.