Logs on 2022-10-24 (liberachat/#haskell)
| 00:00:03 | <jle`> | np! yup it's the power of stream combinators, and it should only take O(1) space in most circumstances bc you're never allocating the actual zipped list |
| 00:00:16 | <Guest62> | interesting |
| 00:00:48 | <Guest62> | it must be better than my pattern matching recursion |
| 00:01:13 | <jle`> | readability-wise, probably. but in the end it basically simplifies down to pattern matching recursion in the source code |
| 00:01:24 | <jle`> | if we're talking performance- or space-wise |
| 00:03:32 | <Guest62> | ok |
| 00:03:43 | <Guest62> | tyvm |
| 00:04:00 | × | wonko quits (~wjc@2a0e:1c80:2:0:45:15:19:130) (Ping timeout: 250 seconds) |
| 00:07:14 | → | LukeHoersten joins (~LukeHoers@user/lukehoersten) |
| 00:13:29 | × | beteigeuze quits (~Thunderbi@2001:8a0:61b5:6101:9233:19e9:6537:6e73) (Ping timeout: 276 seconds) |
| 00:13:46 | × | birdgoose quits (~birdgoose@151.210.175.160) (Quit: Iridium IRC Client) |
| 00:13:47 | → | Kaipei joins (~Kaiepi@108.175.84.104) |
| 00:13:56 | → | birdgoose joins (~birdgoose@151.210.175.160) |
| 00:14:19 | × | Guest62 quits (~Guest62@43.21.135.77.rev.sfr.net) (Quit: Client closed) |
| 00:15:21 | × | Kaipei quits (~Kaiepi@108.175.84.104) (Remote host closed the connection) |
| 00:15:45 | → | Kaipei joins (~Kaiepi@108.175.84.104) |
| 00:17:02 | × | LukeHoersten quits (~LukeHoers@user/lukehoersten) (Ping timeout: 260 seconds) |
| 00:22:19 | × | bilegeek quits (~bilegeek@2600:1008:b06e:7748:1ed2:154:a290:4ce6) (Remote host closed the connection) |
| 00:22:39 | → | bilegeek joins (~bilegeek@2600:1008:b06e:7748:1ed2:154:a290:4ce6) |
| 00:24:44 | × | hgolden quits (~hgolden@cpe-172-251-233-141.socal.res.rr.com) (Remote host closed the connection) |
| 00:25:41 | → | LukeHoersten joins (~LukeHoers@user/lukehoersten) |
| 00:28:45 | → | hgolden joins (~hgolden@cpe-172-251-233-141.socal.res.rr.com) |
| 00:29:08 | × | birdgoose quits (~birdgoose@151.210.175.160) (Ping timeout: 250 seconds) |
| 00:31:53 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 00:31:53 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 00:31:53 | → | wroathe joins (~wroathe@user/wroathe) |
| 00:33:22 | × | LukeHoersten quits (~LukeHoers@user/lukehoersten) (Ping timeout: 260 seconds) |
| 00:36:51 | × | paulpaul1076 quits (~paulpaul1@95-29-5-52.broadband.corbina.ru) (Remote host closed the connection) |
| 00:36:53 | × | axeman quits (~quassel@2a02:8109:a380:78:75a8:c262:9acb:200a) (Ping timeout: 276 seconds) |
| 00:37:09 | → | LukeHoersten joins (~LukeHoers@user/lukehoersten) |
| 00:41:05 | → | redmp joins (~redmp@mobile-166-137-178-099.mycingular.net) |
| 00:58:59 | × | LukeHoersten quits (~LukeHoers@user/lukehoersten) (Read error: Connection timed out) |
| 01:02:24 | × | ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Remote host closed the connection) |
| 01:05:47 | × | redmp quits (~redmp@mobile-166-137-178-099.mycingular.net) (Ping timeout: 272 seconds) |
| 01:07:08 | → | redmp joins (~redmp@mobile-166-137-178-099.mycingular.net) |
| 01:08:22 | × | eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 01:10:25 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 01:13:46 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 250 seconds) |
| 01:14:11 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 01:15:31 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:3df4:aa3e:43b0:5de8) |
| 01:16:11 | → | rockystone joins (~rocky@user/rockymarine) |
| 01:16:32 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 01:21:12 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 260 seconds) |
| 01:28:50 | × | xff0x quits (~xff0x@2405:6580:b080:900:5aef:465a:6bf7:395b) (Ping timeout: 272 seconds) |
| 01:29:32 | × | Kaipei quits (~Kaiepi@108.175.84.104) (Ping timeout: 276 seconds) |
| 01:30:45 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 272 seconds) |
| 01:36:31 | → | birdgoose joins (~birdgoose@151.210.175.160) |
| 01:37:17 | → | BananaKing694 joins (~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net) |
| 01:37:28 | → | BananaKing69441 joins (~BananaKin@pool-74-105-2-138.nwrknj.fios.verizon.net) |
| 01:37:52 | BananaKing69441 | is now known as j4cc3b |
| 01:38:13 | → | LukeHoersten joins (~LukeHoers@user/lukehoersten) |
| 01:42:38 | × | jbayardo quits (~jbayardo@20.83.116.49) (Remote host closed the connection) |
| 01:43:26 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection) |
| 01:43:57 | × | LukeHoersten quits (~LukeHoers@user/lukehoersten) (Ping timeout: 260 seconds) |
| 01:48:25 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 01:54:49 | → | ezzieyguywuf joins (~Unknown@user/ezzieyguywuf) |
| 01:57:07 | × | ski quits (~ski@remote11.chalmers.se) (Remote host closed the connection) |
| 01:58:10 | <j4cc3b> | can you create a data type that has a subset of integers? For example, something like this - data Id = 100 | ... | 999 |
| 01:58:57 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 01:59:14 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 02:02:46 | × | Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection) |
| 02:03:21 | → | LukeHoersten joins (~LukeHoers@user/lukehoersten) |
| 02:03:21 | <dsal> | j4cc3b: You can create a data type with a constructor that isn't exported and only allow whatever you want. |
| 02:04:06 | <dsal> | But there's also this: |
| 02:04:10 | <dsal> | @hoogle Data.Finite |
| 02:04:10 | <lambdabot> | Database.PostgreSQL.Simple.Time Finite :: a -> Unbounded a |
| 02:04:10 | <lambdabot> | Data.Universe.Class class Universe a => Finite a |
| 02:04:10 | <lambdabot> | Data.Monoid.Inf Finite :: a -> Inf p a |
| 02:04:22 | <dsal> | @hackage finite-typelits |
| 02:04:22 | <lambdabot> | https://hackage.haskell.org/package/finite-typelits |
| 02:04:22 | → | Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542) |
| 02:04:40 | × | Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection) |
| 02:05:12 | <j4cc3b> | Thank you so much |
| 02:06:01 | → | Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542) |
| 02:07:14 | × | Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection) |
| 02:08:11 | → | Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542) |
| 02:10:57 | → | jargon joins (~jargon@184.101.208.112) |
| 02:13:00 | → | xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
| 02:13:34 | × | td_ quits (~td@83.135.9.27) (Ping timeout: 250 seconds) |
| 02:14:03 | × | Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection) |
| 02:14:44 | × | birdgoose quits (~birdgoose@151.210.175.160) (Quit: Iridium IRC Client) |
| 02:14:57 | → | birdgoose joins (~birdgoose@151.210.175.160) |
| 02:15:33 | → | td_ joins (~td@83.135.9.20) |
| 02:18:27 | × | jmorris quits (uid537181@id-537181.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
| 02:22:08 | → | finsternis joins (~X@23.226.237.192) |
| 02:23:10 | → | bilegeek_ joins (~bilegeek@43.sub-174-209-36.myvzw.com) |
| 02:25:26 | × | redmp quits (~redmp@mobile-166-137-178-099.mycingular.net) (Ping timeout: 276 seconds) |
| 02:25:47 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 02:25:47 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
| 02:25:47 | finn_elija | is now known as FinnElija |
| 02:25:48 | × | birdgoose quits (~birdgoose@151.210.175.160) (Remote host closed the connection) |
| 02:25:51 | × | bilegeek quits (~bilegeek@2600:1008:b06e:7748:1ed2:154:a290:4ce6) (Ping timeout: 272 seconds) |
| 02:27:47 | → | zaquest joins (~notzaques@5.130.79.72) |
| 02:28:37 | → | Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542) |
| 02:29:39 | × | LukeHoersten quits (~LukeHoers@user/lukehoersten) (Read error: Connection timed out) |
| 02:32:43 | × | Guest51 quits (~Guest51@50.47.90.28) (Quit: Client closed) |
| 02:38:16 | × | machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 250 seconds) |
| 02:40:32 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 260 seconds) |
| 02:47:10 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 02:49:23 | × | terrorjack quits (~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat) |
| 02:50:44 | → | terrorjack joins (~terrorjac@2a01:4f8:1c1e:509a::1) |
| 02:51:42 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 250 seconds) |
| 02:54:26 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection) |
| 02:55:11 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 02:55:52 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Max SendQ exceeded) |
| 02:56:33 | × | BananaKing694 quits (~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net) (Remote host closed the connection) |
| 02:56:44 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 03:00:52 | × | j4cc3b quits (~BananaKin@pool-74-105-2-138.nwrknj.fios.verizon.net) (Ping timeout: 244 seconds) |
| 03:01:14 | × | xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 250 seconds) |
| 03:02:22 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 03:04:52 | → | king_gs joins (~Thunderbi@2806:103e:29:c5:4fb1:a8c9:906f:c6e0) |
| 03:05:09 | → | xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
| 03:08:13 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 03:08:33 | → | LukeHoersten joins (~LukeHoers@user/lukehoersten) |
| 03:09:49 | × | bilegeek_ quits (~bilegeek@43.sub-174-209-36.myvzw.com) (Remote host closed the connection) |
| 03:10:10 | → | bilegeek_ joins (~bilegeek@43.sub-174-209-36.myvzw.com) |
| 03:13:22 | × | boxscape_ quits (~boxscape_@81.191.27.107) (Remote host closed the connection) |
| 03:17:35 | → | BananaKing694 joins (~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net) |
| 03:18:09 | → | boxscape_ joins (~boxscape_@81.191.27.107) |
| 03:19:00 | × | nate2 quits (~nate@98.45.169.16) (Ping timeout: 250 seconds) |
| 03:28:37 | → | nate2 joins (~nate@98.45.169.16) |
| 03:32:52 | × | nate2 quits (~nate@98.45.169.16) (Ping timeout: 250 seconds) |
| 03:33:59 | × | rockystone quits (~rocky@user/rockymarine) (Ping timeout: 272 seconds) |
| 03:37:02 | × | boxscape_ quits (~boxscape_@81.191.27.107) (Ping timeout: 244 seconds) |
| 03:38:04 | × | LukeHoersten quits (~LukeHoers@user/lukehoersten) (Ping timeout: 250 seconds) |
| 03:42:13 | → | Guest51 joins (~Guest51@50.47.90.28) |
| 03:43:36 | × | danza quits (~francesco@151.43.239.176) (Read error: Connection reset by peer) |
| 03:43:58 | → | rockystone joins (~rocky@user/rockymarine) |
| 03:45:08 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer) |
| 03:49:56 | × | rockystone quits (~rocky@user/rockymarine) (Ping timeout: 276 seconds) |
| 03:59:03 | → | redmp joins (~redmp@mobile-166-137-178-116.mycingular.net) |
| 03:59:30 | → | danza joins (~francesco@ca-18-216-127.service.infuturo.it) |
| 04:00:32 | → | nate2 joins (~nate@98.45.169.16) |
| 04:04:35 | × | biberu quits (~biberu@user/biberu) (Read error: Connection reset by peer) |
| 04:05:56 | → | rockystone joins (~rocky@user/rockymarine) |
| 04:06:02 | <Unicorn_Princess> | hoogle generate "Found 7569 warnings when processing items", and also gave me a list of packages that are missing documentation. are these errors caused by something on my system, or is it simply a report on the packages themselves? |
| 04:06:17 | × | nate2 quits (~nate@98.45.169.16) (Ping timeout: 260 seconds) |
| 04:06:55 | <Unicorn_Princess> | (i installed hoogle by first installing ghcup, then `cabal install hoogle`, and finally `hoogle generate`) |
| 04:07:29 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 276 seconds) |
| 04:08:27 | → | biberu joins (~biberu@user/biberu) |
| 04:08:41 | <Unicorn_Princess> | it reports in total 30 packages missing docs. stuff like 'lzma-clib' and 'rocksdb-haskell' |
| 04:09:49 | × | adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection) |
| 04:09:50 | <Unicorn_Princess> | ah, https://hackage.haskell.org/package/lzma-clib says "docs not available", so maybe it's the pacakges |
| 04:10:52 | → | adanwan joins (~adanwan@gateway/tor-sasl/adanwan) |
| 04:11:26 | × | rockystone quits (~rocky@user/rockymarine) (Ping timeout: 250 seconds) |
| 04:11:32 | <Unicorn_Princess> | ah, but https://hackage.haskell.org/package/minisat-solver has "docs uploaded by user", so who knows. but it's another abandoned package it seems |
| 04:12:02 | <Unicorn_Princess> | (minisat-solver being another of the packages that hoogle generate reports are missing docs) |
| 04:12:46 | <jackdk> | When you installed your packages locally, they were probably built without documentation. I don't remember how to coerce cabal to rebuild installed packages with documentation. |
| 04:13:12 | → | freeside joins (~mengwong@bb115-66-48-84.singnet.com.sg) |
| 04:17:56 | × | adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection) |
| 04:17:58 | <Unicorn_Princess> | oh i never installed any of them really. installing ghcup, `cabal install hoogle` and `hoogle generate` are the only haskell-related commands i ran on this system. just installed ubuntu 22.04 from scratch, so it's quite fresh |
| 04:18:18 | → | adanwan joins (~adanwan@gateway/tor-sasl/adanwan) |
| 04:18:27 | <jackdk> | Those packages are probably the dependencies of hoogle |
| 04:19:53 | → | rockystone joins (~rocky@user/rockymarine) |
| 04:20:36 | × | king_gs quits (~Thunderbi@2806:103e:29:c5:4fb1:a8c9:906f:c6e0) (Quit: king_gs) |
| 04:20:54 | → | nate2 joins (~nate@98.45.169.16) |
| 04:23:40 | → | Kaipei joins (~Kaiepi@108.175.84.104) |
| 04:24:46 | → | LukeHoersten joins (~LukeHoers@user/lukehoersten) |
| 04:25:12 | × | Guest51 quits (~Guest51@50.47.90.28) (Quit: Client closed) |
| 04:27:44 | × | bilegeek_ quits (~bilegeek@43.sub-174-209-36.myvzw.com) (Quit: Leaving) |
| 04:29:05 | × | BananaKing694 quits (~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net) (Ping timeout: 272 seconds) |
| 04:29:51 | → | Guest7606 joins (~aaa@49.207.231.197) |
| 04:31:37 | × | nate2 quits (~nate@98.45.169.16) (Ping timeout: 272 seconds) |
| 04:32:00 | <Unicorn_Princess> | hmmm, thanks |
| 04:34:50 | × | LukeHoersten quits (~LukeHoers@user/lukehoersten) (Ping timeout: 250 seconds) |
| 04:35:05 | × | Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection) |
| 04:43:11 | → | BananaKing694 joins (~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net) |
| 04:43:46 | → | Lumia joins (~Lumia@user/Lumia) |
| 04:51:53 | × | rockystone quits (~rocky@user/rockymarine) (Ping timeout: 272 seconds) |
| 04:57:54 | → | rockystone joins (~rocky@user/rockymarine) |
| 04:59:37 | × | zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!) |
| 05:06:16 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 258 seconds) |
| 05:13:41 | → | bgs joins (~bgs@212-85-160-171.dynamic.telemach.net) |
| 05:13:58 | → | birdgoose joins (~jesse@2406:e003:1d87:6601:e725:b6b4:ace8:4ebe) |
| 05:26:06 | → | chomwitt joins (~chomwitt@2a02:587:dc10:8200:1ac0:4dff:fedb:a3f1) |
| 05:38:59 | × | Maeda quits (~Maeda@91-161-10-149.subs.proxad.net) (Quit: BRB) |
| 05:40:43 | → | Maeda joins (~Maeda@91-161-10-149.subs.proxad.net) |
| 05:45:28 | × | BananaKing694 quits (~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net) (Ping timeout: 250 seconds) |
| 05:50:07 | → | michalz joins (~michalz@185.246.207.193) |
| 05:50:45 | × | Neuromancer quits (~Neuromanc@user/neuromancer) (Quit: Going offline, see ya! (www.adiirc.com)) |
| 05:53:37 | × | rockystone quits (~rocky@user/rockymarine) (Ping timeout: 260 seconds) |
| 05:54:01 | × | Midjak quits (~Midjak@82.66.147.146) (Quit: This computer has gone to sleep) |
| 05:55:19 | × | emmanuelux quits (~emmanuelu@user/emmanuelux) (Quit: au revoir) |
| 05:58:39 | → | BananaKing694 joins (~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net) |
| 05:59:48 | × | bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection) |
| 06:03:11 | × | BananaKing694 quits (~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net) (Ping timeout: 276 seconds) |
| 06:04:40 | → | rockystone joins (~rocky@user/rockymarine) |
| 06:06:14 | → | nate2 joins (~nate@98.45.169.16) |
| 06:10:52 | × | chomwitt quits (~chomwitt@2a02:587:dc10:8200:1ac0:4dff:fedb:a3f1) (Remote host closed the connection) |
| 06:11:16 | → | chomwitt joins (~chomwitt@2a02:587:dc10:8200:1ac0:4dff:fedb:a3f1) |
| 06:11:38 | × | nate2 quits (~nate@98.45.169.16) (Ping timeout: 276 seconds) |
| 06:12:07 | × | Lumia quits (~Lumia@user/Lumia) (Quit: ,-) |
| 06:19:28 | × | rembo10 quits (~rembo10@main.remulis.com) (Quit: ZNC 1.8.2 - https://znc.in) |
| 06:20:33 | × | redmp quits (~redmp@mobile-166-137-178-116.mycingular.net) (Ping timeout: 272 seconds) |
| 06:20:47 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 06:21:37 | → | rembo10 joins (~rembo10@main.remulis.com) |
| 06:26:40 | × | causal quits (~user@50.35.83.177) (Quit: WeeChat 3.6) |
| 06:29:11 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 276 seconds) |
| 06:33:17 | → | BananaKing694 joins (~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net) |
| 06:37:10 | → | mmhat joins (~mmh@p200300f1c7307610ee086bfffe095315.dip0.t-ipconnect.de) |
| 06:38:33 | → | gurkenglas joins (~gurkengla@p548ac72e.dip0.t-ipconnect.de) |
| 06:41:51 | × | shriekingnoise quits (~shrieking@186.137.167.202) (Quit: Quit) |
| 06:46:05 | → | mncheck joins (~mncheck@193.224.205.254) |
| 06:47:39 | → | acidjnk joins (~acidjnk@p200300d6e7137a39185a556c4ffa1a9f.dip0.t-ipconnect.de) |
| 06:47:51 | <Clinton[m]> | just checking is there an extension that allows me to have record field names of the same name but different types in the same module? |
| 06:48:24 | <Clinton[m]> | like... (full message at <https://libera.ems.host/_matrix/media/r0/download/libera.chat/018c991b074f6aa3afe4ec1ab06076fa435256e8>) |
| 06:48:46 | <Clinton[m]> | Or is that just very naughty. |
| 06:52:32 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:ad98:9d00:b84f:455) |
| 06:53:04 | × | birdgoose quits (~jesse@2406:e003:1d87:6601:e725:b6b4:ace8:4ebe) (Read error: Connection reset by peer) |
| 06:53:19 | → | birdgoose joins (~jesse@2406:e003:1d87:6601:e725:b6b4:ace8:4ebe) |
| 06:54:53 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
| 06:55:47 | <c_wraith> | DuplicateRecordFields should do that |
| 07:06:25 | <Clinton[m]> | c_wraith: yep, that did the job. Although I've got another issue more like this:... (full message at <https://libera.ems.host/_matrix/media/r0/download/libera.chat/b2de1ff05816fa066d62b0d6181a0a0c9b7e17cc>) |
| 07:06:57 | <c_wraith> | Oh. I don't think that's gonna work. |
| 07:12:55 | → | random-jellyfish joins (~random-je@user/random-jellyfish) |
| 07:19:01 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 07:19:56 | × | gurkenglas quits (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 250 seconds) |
| 07:19:57 | × | rockystone quits (~rocky@user/rockymarine) (Ping timeout: 260 seconds) |
| 07:24:19 | → | titibandit joins (~titibandi@xdsl-87-78-36-34.nc.de) |
| 07:30:56 | <dminuoso> | How would one write a rewrite rule for say `pure a` |
| 07:31:12 | <dminuoso> | Specifically, I cant figure out how to specify a type annmotation for it. |
| 07:31:15 | <Clinton[m]> | c_wraith: all good I've just put them subtypes now |
| 07:31:39 | <dminuoso> | `"foo" forall a. pure a = XXX` is not good enough, I want to constrain it to a particualr type of `a` |
| 07:31:47 | <dminuoso> | Or rather, that example is not good enough |
| 07:31:57 | <dminuoso> | Say rewriting `a >> b` |
| 07:33:48 | <dminuoso> | https://play-haskell.tomsmeding.com/saved/3Nts9F5o |
| 07:37:32 | <dminuoso> | Or do I have to define a top level binding, say choice, define <+> = choice, specify INLINE[0] on the instance, and specify the rewrite rule in terms of `choice`? |
| 07:38:07 | <nshepperd2> | jle`: hey! you're right, that solution is O(l^2) space. I do have a O(l) version though, that does it as a fold |
| 07:38:25 | <dminuoso> | Mmm, no. Inlining on (<+>) prevents the rule from firing. |
| 07:40:27 | <dminuoso> | This also causes weird type errors: "flatparse/reassoc-alt" forall l m r. (l :: Maybe a) <+> m <+> r = Nothing :: Maybe a |
| 07:40:41 | <dminuoso> | Or dropping that final `:: Maybe a` too. |
| 07:42:38 | <nshepperd2> | jle`: https://paste.zlkj.in/uploads/e4d73710d9d7e786/fourteen.txt |
| 07:42:47 | × | danza quits (~francesco@ca-18-216-127.service.infuturo.it) (Read error: Connection reset by peer) |
| 07:44:32 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 07:45:10 | × | Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt juan@acm.org) |
| 07:49:43 | → | LukeHoersten joins (~LukeHoers@user/lukehoersten) |
| 07:50:52 | → | rockystone joins (~rocky@user/rockymarine) |
| 07:51:25 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:3df4:aa3e:43b0:5de8) (Remote host closed the connection) |
| 07:51:44 | → | machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net) |
| 07:54:37 | → | kuribas joins (~user@ptr-17d51emnxyldefiap63.18120a2.ip6.access.telenet.be) |
| 07:56:42 | × | LukeHoersten quits (~LukeHoers@user/lukehoersten) (Ping timeout: 260 seconds) |
| 07:57:12 | × | rockystone quits (~rocky@user/rockymarine) (Ping timeout: 250 seconds) |
| 07:59:14 | → | danza joins (~francesco@151.34.187.38) |
| 08:05:20 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 08:09:46 | ← | jakalx parts (~jakalx@base.jakalx.net) (Disconnected: Replaced by new connection) |
| 08:09:47 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 08:13:14 | → | rockystone joins (~rocky@user/rockymarine) |
| 08:15:50 | × | troydm quits (~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 250 seconds) |
| 08:17:55 | × | titibandit quits (~titibandi@xdsl-87-78-36-34.nc.de) (Remote host closed the connection) |
| 08:24:54 | → | fserucas joins (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) |
| 08:25:04 | × | fserucas quits (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Client Quit) |
| 08:25:18 | → | fserucas_eod joins (~fserucas_@2001:818:e376:a400:fb92:70c1:dd88:c7d7) |
| 08:25:25 | × | fserucas_eod quits (~fserucas_@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Client Quit) |
| 08:25:40 | → | fserucas_eod joins (~fserucas_@2001:818:e376:a400:fb92:70c1:dd88:c7d7) |
| 08:25:51 | × | fserucas_eod quits (~fserucas_@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Client Quit) |
| 08:26:06 | → | fserucas|eod joins (~fserucas|@2001:818:e376:a400:fb92:70c1:dd88:c7d7) |
| 08:29:37 | × | birdgoose quits (~jesse@2406:e003:1d87:6601:e725:b6b4:ace8:4ebe) (Quit: Konversation terminated!) |
| 08:29:49 | → | birdgoose joins (~jesse@2406:e003:1d87:6601:e725:b6b4:ace8:4ebe) |
| 08:30:15 | → | akegalj joins (~akegalj@93-138-77-86.adsl.net.t-com.hr) |
| 08:32:28 | → | nschoe joins (~q@141.101.51.197) |
| 08:34:42 | → | gmg joins (~user@user/gehmehgeh) |
| 08:37:19 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 08:37:32 | × | rockystone quits (~rocky@user/rockymarine) (Ping timeout: 260 seconds) |
| 08:41:28 | → | shapr joins (~user@net-5-88-239-29.cust.vodafonedsl.it) |
| 08:46:37 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 08:51:28 | → | rockystone joins (~rocky@user/rockymarine) |
| 08:51:42 | → | thyriaen joins (~thyriaen@2a01:aea0:dd4:470d:6245:cbff:fe9f:48b1) |
| 08:51:53 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:8908:183b:c2f1:b2ec) |
| 08:56:05 | → | Guest65 joins (~Guest65@206.119.125.191) |
| 08:56:08 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:8908:183b:c2f1:b2ec) (Ping timeout: 250 seconds) |
| 08:57:19 | × | random-jellyfish quits (~random-je@user/random-jellyfish) (Quit: Client closed) |
| 09:00:01 | <dminuoso> | RULES are officially magical. |
| 09:00:06 | × | polykernel[m] quits (~polykerne@user/polykernel) (Quit: You have been kicked for being idle) |
| 09:09:09 | <lyxia> | dminuoso: How about "forall (a :: Int)" ? |
| 09:10:02 | <lyxia> | or using TypeApplications |
| 09:10:14 | <dminuoso> | Well so Ive came up with: https://play-haskell.tomsmeding.com/saved/KqLymSwL |
| 09:10:28 | <dminuoso> | Which I think is the right specification, but it may be that the diagnostic is just a false positive |
| 09:11:02 | × | rockystone quits (~rocky@user/rockymarine) (Ping timeout: 276 seconds) |
| 09:11:10 | → | arahael joins (~arahael@14-202-55-135.tpgi.com.au) |
| 09:11:12 | <dminuoso> | I guess the mere type annotation does not cause GHC to look for whether a NOINLINE exists at the specific instance for (<+>), that would be selected after type unification |
| 09:13:12 | × | Guest65 quits (~Guest65@206.119.125.191) (Quit: Client closed) |
| 09:14:04 | <dminuoso> | I cant also make heads or tails of this: https://play-haskell.tomsmeding.com/saved/vsW3F1R8 |
| 09:14:18 | <dminuoso> | Im beginning to suspect the diagnostic is a very sketchy heuristic |
| 09:14:35 | → | ubert1 joins (~Thunderbi@91.141.49.34.wireless.dyn.drei.com) |
| 09:15:21 | × | ubert quits (~Thunderbi@178.115.71.141.wireless.dyn.drei.com) (Ping timeout: 272 seconds) |
| 09:15:21 | ubert1 | is now known as ubert |
| 09:17:56 | <dminuoso> | What I really want is something like: |
| 09:19:42 | <dminuoso> | {-# RULES "flatparse/reassoc-alt" [1] forall a. forall l m r. l (<|> @Maybe) m (<|> @Maybe) r = Nothing #-} |
| 09:21:34 | → | rockystone joins (~rocky@user/rockymarine) |
| 09:26:34 | → | zer0bitz joins (~zer0bitz@2001:2003:f748:2000:d960:d98a:f624:8ef) |
| 09:26:45 | × | rockystone quits (~rocky@user/rockymarine) (Ping timeout: 272 seconds) |
| 09:30:04 | → | Guest51 joins (~Guest51@50.47.90.28) |
| 09:33:06 | → | wonko joins (~wjc@2a0e:1c80:2:0:45:15:19:130) |
| 09:36:15 | → | __monty__ joins (~toonn@user/toonn) |
| 09:37:24 | × | ft quits (~ft@p3e9bc845.dip0.t-ipconnect.de) (Quit: leaving) |
| 09:39:29 | × | Guest7606 quits (~aaa@49.207.231.197) (Quit: Leaving) |
| 09:39:38 | × | acidjnk quits (~acidjnk@p200300d6e7137a39185a556c4ffa1a9f.dip0.t-ipconnect.de) (Ping timeout: 276 seconds) |
| 09:40:08 | → | rockystone joins (~rocky@user/rockymarine) |
| 09:47:59 | <lyxia> | What's confusing about the diagnostic? if choice gets inlined first, the rule won't apply since there is no choice to match. |
| 09:51:19 | <dminuoso> | Ah, I must specify INLINE[~0] on the instance method |
| 09:51:27 | <dminuoso> | That makes sense, lyxia. |
| 09:52:24 | × | Guest16 quits (~Guest16@p200300ef971835b5517f7031904fbb79.dip0.t-ipconnect.de) (Quit: Client closed) |
| 09:54:38 | → | acidjnk joins (~acidjnk@p200300d6e7137a390804478ada777c16.dip0.t-ipconnect.de) |
| 09:55:17 | <dminuoso> | Or ~1 rather I suppose |
| 09:56:52 | × | rockystone quits (~rocky@user/rockymarine) (Ping timeout: 260 seconds) |
| 10:05:21 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 10:07:30 | → | nate2 joins (~nate@98.45.169.16) |
| 10:10:20 | → | rockystone joins (~rocky@user/rockymarine) |
| 10:12:47 | × | nate2 quits (~nate@98.45.169.16) (Ping timeout: 276 seconds) |
| 10:15:05 | <dminuoso> | lyxia: Ah but hold on, the rewrite rule starts from phase 1, but choice cant get inlined until phase 2. |
| 10:19:20 | <dminuoso> | I mean yeah, I can set the `choice` inline phase to 2, and the rewrite rule to ~1 |
| 10:19:55 | <dminuoso> | But whats slightly absurd, is that not specifying a phase for the rule makes the diagnostic go away too. |
| 10:20:47 | <dminuoso> | That is, why does the diagnostic fire for one but not the other https://play-haskell.tomsmeding.com/saved/sBjYWK7T |
| 10:20:54 | <dminuoso> | In either case choice might get inlined first. |
| 10:26:58 | → | axeman joins (~quassel@2a02:8109:a380:78:e069:1455:8f12:523c) |
| 10:30:20 | × | xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 276 seconds) |
| 10:31:40 | → | shapr` joins (~user@net-5-88-239-29.cust.vodafonedsl.it) |
| 10:33:12 | × | shapr quits (~user@net-5-88-239-29.cust.vodafonedsl.it) (Ping timeout: 250 seconds) |
| 10:33:20 | shapr` | is now known as shapr |
| 10:36:03 | × | jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 272 seconds) |
| 10:38:24 | × | Maeda quits (~Maeda@91-161-10-149.subs.proxad.net) (Ping timeout: 250 seconds) |
| 10:41:29 | × | axeman quits (~quassel@2a02:8109:a380:78:e069:1455:8f12:523c) (Quit: No Ping reply in 180 seconds.) |
| 10:42:25 | × | gmg quits (~user@user/gehmehgeh) (Remote host closed the connection) |
| 10:42:39 | × | biberu quits (~biberu@user/biberu) (Read error: Connection reset by peer) |
| 10:42:45 | → | axeman joins (~quassel@2a02:8109:a380:78:47a:28c0:4f2:c5d2) |
| 10:44:01 | → | biberu joins (~biberu@user/biberu) |
| 10:44:30 | → | Maeda joins (~Maeda@91-161-10-149.subs.proxad.net) |
| 10:48:13 | → | gmg joins (~user@user/gehmehgeh) |
| 10:49:13 | × | yaroot quits (~yaroot@2400:4052:ac0:d900:1cf4:2aff:fe51:c04c) (Remote host closed the connection) |
| 10:50:18 | → | beteigeuze joins (~Thunderbi@bl14-81-220.dsl.telepac.pt) |
| 10:50:57 | → | yaroot joins (~yaroot@2400:4052:ac0:d900:1cf4:2aff:fe51:c04c) |
| 10:54:48 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:9df4:2304:ddb0:d61a) |
| 10:55:43 | → | freeside_ joins (~mengwong@103.252.202.193) |
| 10:56:41 | × | freeside quits (~mengwong@bb115-66-48-84.singnet.com.sg) (Ping timeout: 272 seconds) |
| 10:57:02 | × | birdgoose quits (~jesse@2406:e003:1d87:6601:e725:b6b4:ace8:4ebe) (Ping timeout: 250 seconds) |
| 10:57:35 | × | Kaipei quits (~Kaiepi@108.175.84.104) (Remote host closed the connection) |
| 10:57:58 | → | Kaipei joins (~Kaiepi@108.175.84.104) |
| 10:59:21 | × | shapr quits (~user@net-5-88-239-29.cust.vodafonedsl.it) (Remote host closed the connection) |
| 10:59:29 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:9df4:2304:ddb0:d61a) (Ping timeout: 272 seconds) |
| 11:00:53 | × | acidjnk quits (~acidjnk@p200300d6e7137a390804478ada777c16.dip0.t-ipconnect.de) (Ping timeout: 276 seconds) |
| 11:06:42 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.) |
| 11:07:59 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 11:12:48 | → | lisbeths joins (uid135845@id-135845.lymington.irccloud.com) |
| 11:19:07 | <Profpatsch> | partitionEithers returns ([left], [right]), and then is usually matched like ([], rights) -> … ; (errs, _) -> errs |
| 11:19:10 | → | xff0x joins (~xff0x@2405:6580:b080:900:274f:8858:84b:2f95) |
| 11:19:36 | → | LukeHoersten joins (~LukeHoers@user/lukehoersten) |
| 11:19:57 | <Profpatsch> | I usually like to go via Validation instead, traversing the [Either left right] with a (Either left right -> Validation (NonEmpty left) right) |
| 11:20:16 | → | shriekingnoise joins (~shrieking@186.137.167.202) |
| 11:20:18 | <Profpatsch> | So I get back a `Validation (NonEmpty left) right` and can just match on it |
| 11:21:00 | <Profpatsch> | But I always wonder how efficient using the Semigroup instance of NonEmpty is in this case, first wrapping every error in a NonEmpty.singleton and then (<>) those |
| 11:22:09 | → | acidjnk joins (~acidjnk@p200300d6e7137a399c67b611784f46e2.dip0.t-ipconnect.de) |
| 11:22:32 | <Profpatsch> | Intuitively, do I have to worry about performance here? |
| 11:23:24 | <Profpatsch> | I always have to traverse the list afaik, be it via partitionEithers or Validation, because otherwise I can’t figure out if the list of errors is empty |
| 11:24:22 | × | rockystone quits (~rocky@user/rockymarine) (Ping timeout: 260 seconds) |
| 11:27:19 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 11:28:11 | × | LukeHoersten quits (~LukeHoers@user/lukehoersten) (Ping timeout: 276 seconds) |
| 11:28:46 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 11:35:35 | × | axeman quits (~quassel@2a02:8109:a380:78:47a:28c0:4f2:c5d2) (Ping timeout: 272 seconds) |
| 11:39:00 | → | rockystone joins (~rocky@user/rockymarine) |
| 11:40:49 | → | random-jellyfish joins (~random-je@user/random-jellyfish) |
| 11:45:09 | × | danza quits (~francesco@151.34.187.38) (Read error: Connection reset by peer) |
| 11:49:37 | <dminuoso> | f the non-empty list of error is empty? |
| 11:51:05 | <dminuoso> | Profpatsch: I think you meant `Validation [left]` rather than `Validation (NonEmpty left)`, right? |
| 11:51:28 | → | Midjak joins (~Midjak@82.66.147.146) |
| 11:57:01 | → | LukeHoersten joins (~LukeHoers@user/lukehoersten) |
| 11:58:43 | <Profpatsch> | dminuoso: NonEmpty |
| 11:59:04 | → | danza joins (~francesco@151.43.124.110) |
| 11:59:36 | <dminuoso> | That NonEmpty will never be empty. |
| 11:59:59 | <Profpatsch> | because Semigroup e => instance Applicative (Validation e a) |
| 12:00:05 | × | frost1 quits (~frost@user/frost) (Quit: Client closed) |
| 12:00:07 | <dminuoso> | Yes, but that NonEmpty will never be empty. |
| 12:00:11 | <Profpatsch> | dminuoso: exactly |
| 12:00:15 | <Profpatsch> | that’s the idea |
| 12:00:17 | <dminuoso> | What exactly? |
| 12:00:21 | <dminuoso> | Profpatsch | I always have to traverse the list afaik, be it via partitionEithers or Validation, because otherwise I can’t figure out if the list of errors is empty |
| 12:00:36 | <dminuoso> | Im just telling you, on `Validation (NonEmpty T)` there is no need to figure out iof the list of errors is empty |
| 12:00:44 | <Profpatsch> | dminuoso: Ah, I was referring to the pattern match after partitionEithers |
| 12:01:02 | <Profpatsch> | which is ([], vals) -> … ; (errs, _) -> …; |
| 12:01:10 | <dminuoso> | `(Either left right -> Validation (NonEmpty left) right)` is partial. |
| 12:01:24 | <dminuoso> | Ah hold on! |
| 12:01:26 | <dminuoso> | I see what you mean |
| 12:01:40 | <Profpatsch> | basically it’s “collect all errors \/ success” |
| 12:01:43 | <dminuoso> | Yeah |
| 12:01:55 | <dminuoso> | So I wouldnt worry about performance unless this was measurably in a hotspot. |
| 12:02:02 | <Profpatsch> | but partitionEither’s codomain is “too big” |
| 12:02:10 | <Profpatsch> | it could in theory also have both errors and successes |
| 12:02:32 | <Profpatsch> | the only real difference is one gives you a nonEmpty error list |
| 12:02:32 | <dminuoso> | If constant memory usage and short cut fusion was highly desirable, I would just write a CPS'ed state monad on the spot |
| 12:02:37 | <dminuoso> | And use it instead of Either |
| 12:02:53 | <dminuoso> | (with either a difference list, or a reveresed list of errors as state) |
| 12:02:59 | <Profpatsch> | err, sorry, *neither* errors nor successes |
| 12:03:03 | <Profpatsch> | so ([], []) |
| 12:03:35 | <Profpatsch> | dminuoso: yeah, I guess it’s at most constant overhead |
| 12:03:41 | → | constxd joins (~brad@47.55.121.233) |
| 12:04:13 | <Profpatsch> | cause [a] <> ([b] <> [c]) is relatively efficient |
| 12:04:30 | <Profpatsch> | as compared to ([a] <> [b]) <> [c] |
| 12:04:39 | <dminuoso> | THe latter is fine with DList though |
| 12:04:43 | <Profpatsch> | yep |
| 12:05:01 | <dminuoso> | Lately Ive become quite comfortable with continuations, so I would just use that instead |
| 12:05:51 | <Profpatsch> | dminuoso: I mean, there’s a non-empty Seq as well |
| 12:05:59 | × | wonko quits (~wjc@2a0e:1c80:2:0:45:15:19:130) (Ping timeout: 272 seconds) |
| 12:06:33 | <Profpatsch> | which has O(1) on both ends, so you don’t have to worry whether all your stuff is bracketed the right way |
| 12:06:46 | <Profpatsch> | tho even more constant overhead |
| 12:07:10 | <Profpatsch> | I default to non-empty lists right now, might have to benchmark once that becomes an actual problem |
| 12:09:22 | <Profpatsch> | but in general, non-empty lists are a very good pragmatic datastructure, more Haskell code should use them. |
| 12:09:32 | <dminuoso> | Profpatsch: https://gist.github.com/dminuoso/3452157cebdbb2397b914e02f3a17cb4 |
| 12:09:36 | <Profpatsch> | removes a bunch of unnecessary branches from most code |
| 12:09:50 | <dminuoso> | Here, gives you a CPS state monad in which you can just collect errors as you go. |
| 12:10:52 | <Profpatsch> | dminuoso: hm, Validation is not in Monad cause there is no mempty in NonEmpty |
| 12:11:21 | <Profpatsch> | the missing mempty for the error list really removes a bunch of non-branches from the state-space |
| 12:11:22 | <dminuoso> | Profpatsch: Yes, but you are producing [Either a b], which means the error-free case exists. |
| 12:12:01 | <dminuoso> | This is just a CPSed `State [s]` with a newtype wrapper (such that you cant accidentally modify the state) |
| 12:12:12 | <Profpatsch> | it’s nice yep |
| 12:12:13 | <dminuoso> | (Or StateT [s] even) |
| 12:12:29 | <Profpatsch> | Is there no CPSed State in base? |
| 12:12:34 | <Profpatsch> | or transformers? |
| 12:12:48 | <dminuoso> | There is not |
| 12:13:16 | <dminuoso> | Ill have to do actual analysis whether it actually matters |
| 12:13:35 | <Profpatsch> | there’s one for WriterT at least https://hackage.haskell.org/package/transformers-0.6.0.4/docs/Control-Monad-Trans-Writer-CPS.html#t:WriterT |
| 12:13:41 | <dminuoso> | Yeah but thats not really CPSed |
| 12:13:46 | → | Guest1875 joins (~a@49.207.231.197) |
| 12:13:48 | <dminuoso> | Or not fully anyway |
| 12:13:49 | <Profpatsch> | which is—incidentally—the only one that does not always leak memory :P |
| 12:13:50 | <dminuoso> | newtype WriterT w m a = WriterT { unWriterT :: w -> m (a, w) } |
| 12:14:01 | <Profpatsch> | ah, it’s just StateT |
| 12:14:06 | <dminuoso> | Yup |
| 12:14:35 | × | freeside_ quits (~mengwong@103.252.202.193) (Ping timeout: 272 seconds) |
| 12:14:42 | <dminuoso> | I mean in most cases either is fine |
| 12:14:55 | <Profpatsch> | dminuoso: do you always pro-actively apply INLINE(ABLE) pragmas to things? |
| 12:15:02 | <dminuoso> | Its just that with the CPS variant you can easily just introduce an error case |
| 12:15:15 | <dminuoso> | Profpatsch: Only for things I *expect* to be inlined, such that I dont have to rely on the mood of the simplifier. |
| 12:15:17 | <Profpatsch> | I’ve been not keen on doing that as long as it’s not performance-crical |
| 12:16:12 | <Profpatsch> | e.g. most of the stuff in https://hackage.haskell.org/package/error-1.0.0.0/docs/src/Data.Error.html should probably have an INLINEABLE |
| 12:16:20 | <dminuoso> | Profpatsch: so continuations allow for introduction of error cases (or multiple modes) which can assist stream fusion in some cases. |
| 12:16:37 | <dminuoso> | if you dont ever care for that, might as well use State/StateT (possibly newtyped) |
| 12:16:52 | × | LukeHoersten quits (~LukeHoers@user/lukehoersten) (Ping timeout: 260 seconds) |
| 12:16:53 | → | biberu\ joins (~biberu@user/biberu) |
| 12:16:55 | <dminuoso> | Profpatsch: INLINEABLE is definitely good for such things, yes. |
| 12:17:27 | × | bitmapper quits (uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 12:18:56 | <dminuoso> | Profpatsch: Another option by the way, to maintain fatal/non-fatal errors, if you have ST or IO available, is to keep `data Env = Env { fatal :: IORef [FatalError]; nonFatal :: IORef [Error]; warnings :: IORef [Warning]` |
| 12:19:09 | <dminuoso> | This is more imperative, and perhaps sometimes an overlooked option |
| 12:19:26 | <Profpatsch> | dminuoso: Ah, that’s probably the most performant one? |
| 12:19:32 | <Profpatsch> | depends on how many errors happen |
| 12:19:33 | <dminuoso> | Not necessarily |
| 12:19:49 | <Profpatsch> | Also the errors will be in reverse order :P |
| 12:20:04 | <dminuoso> | You can fix that with a DList or Seq |
| 12:20:11 | <dminuoso> | Or just accept to reverse them at the end ocne |
| 12:20:16 | <dminuoso> | (I just accept to reverse them) |
| 12:20:37 | <dminuoso> | Profpatsch: the beauty of this, is that you get write IO heavy code, but not use StateT. |
| 12:20:41 | <dminuoso> | So MonadUnliftIO is available |
| 12:20:42 | <Profpatsch> | I’d probably newtype to ErrorList |
| 12:20:46 | <dminuoso> | (And dont need to rely on MonadBaseControl) |
| 12:20:47 | <Profpatsch> | then I can’t forget |
| 12:20:55 | × | biberu quits (~biberu@user/biberu) (Ping timeout: 272 seconds) |
| 12:20:55 | biberu\ | is now known as biberu |
| 12:20:59 | <Profpatsch> | dminuoso: ah, yeah |
| 12:21:21 | <dminuoso> | We use this in our SDN compiler precisely for that reason. |
| 12:21:29 | <Profpatsch> | what’s a SDN? |
| 12:21:33 | <dminuoso> | Networking stuff |
| 12:21:44 | <Profpatsch> | Ah |
| 12:22:09 | <Profpatsch> | yeah my use-case here is mostly parsing, which is as pure as it gets |
| 12:22:20 | <dminuoso> | We even have combinators like >|> that sequence only if there are no errors set |
| 12:22:31 | <dminuoso> | Or combinators that degrade fatal errors into non-fatal errors temporarily |
| 12:22:38 | <dminuoso> | Bunch of tools to get fine flow control |
| 12:22:40 | <Profpatsch> | wow so cool |
| 12:22:43 | <Profpatsch> | I love Haskell |
| 12:22:47 | × | rockystone quits (~rocky@user/rockymarine) (Ping timeout: 276 seconds) |
| 12:22:55 | <dminuoso> | Well I mean you can do this in any language, honestly |
| 12:23:40 | <Profpatsch> | the “combinators” part is where most other static languages fail with the type inference though |
| 12:23:42 | × | jonathanx__ quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 250 seconds) |
| 12:23:56 | <dminuoso> | Profpatsch: https://gist.github.com/dminuoso/a29d323eb25c8a6d48bdbf982c0892e2 |
| 12:24:05 | <dminuoso> | Well *this* does not need type infereence |
| 12:24:06 | → | jonathanx joins (~jonathan@c-5eea678b-74736162.cust.telenor.se) |
| 12:24:18 | <dminuoso> | The only cute part is that we can define arbitrary combinators? |
| 12:24:48 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 12:25:02 | <dminuoso> | And condemn just inspects the errors, and throws a BailOut exception by the way. :) |
| 12:25:24 | <Profpatsch> | I tend not to go heavy on the operators but yeah |
| 12:25:34 | → | freeside joins (~mengwong@103.252.202.193) |
| 12:26:27 | <Profpatsch> | My fav thing currently is newtype FieldParser err from to = FieldParser (from -> Either err to) instance Profunctor, Category, Semigroupoid |
| 12:26:41 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 12:28:06 | <Profpatsch> | Might submit it to hackage at one point |
| 12:28:12 | → | rockystone joins (~rocky@user/rockymarine) |
| 12:28:38 | <dminuoso> | Meaning I have to depend on semigroupoids to use it? :S |
| 12:28:50 | <Profpatsch> | utf8 >>> unsignedDecimal >>> clamp 1 10 :: FieldParser ByteString Natural |
| 12:28:54 | <Profpatsch> | it’s really not much more than that |
| 12:29:06 | <Profpatsch> | But I think the concept & UX is pretty good |
| 12:29:15 | dminuoso | shrugs |
| 12:29:31 | <dminuoso> | Im not sure I like Category as a user interface much |
| 12:29:54 | <dminuoso> | Is it really better than >>= here? |
| 12:30:10 | <Profpatsch> | dminuoso: that’s what I’m trying to figure out yeah |
| 12:30:12 | × | shriekingnoise quits (~shrieking@186.137.167.202) (Ping timeout: 250 seconds) |
| 12:30:32 | <Profpatsch> | which is why I’ve not pushed it to hackage yeg |
| 12:30:34 | <Profpatsch> | *yet |
| 12:30:46 | → | shriekingnoise joins (~shrieking@186.137.167.202) |
| 12:32:14 | <Profpatsch> | it just composes nicely with other things, e.g. jsonString :: FieldParser Json.Value Text or attoparsecText :: Atto.Parser a -> FieldParser Text a |
| 12:33:37 | × | jonathanx quits (~jonathan@c-5eea678b-74736162.cust.telenor.se) (Remote host closed the connection) |
| 12:34:00 | → | axeman joins (~quassel@2a02:8109:a380:78:bc30:5eb7:62c9:6689) |
| 12:38:04 | → | vglfr joins (~vglfr@145.224.100.190) |
| 12:40:36 | × | rockystone quits (~rocky@user/rockymarine) (Ping timeout: 250 seconds) |
| 12:43:22 | <dminuoso> | And it will make inlining *much* harder |
| 12:44:17 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 260 seconds) |
| 12:45:39 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 12:45:39 | <Profpatsch> | dminuoso: newtypes influence inlining? |
| 12:45:47 | × | Guest1875 quits (~a@49.207.231.197) (Remote host closed the connection) |
| 12:45:48 | <Profpatsch> | that’s a first |
| 12:46:34 | <dminuoso> | Well no, but each such combinator better be inlineable or inline'd |
| 12:46:46 | <dminuoso> | Though.. for attoparsec I dont think it matters much |
| 12:47:29 | <Profpatsch> | dminuoso: Ah, well, but they all specify an error message in the Left case, so idk if inlining is a good idea |
| 12:47:47 | <dminuoso> | Oh right, there's that Either |
| 12:47:59 | <dminuoso> | *that* will definitely ruin performance in a lot of examples |
| 12:48:12 | <dminuoso> | It will prevent short cut fusion, it will make inlining hard |
| 12:48:15 | <Profpatsch> | yes, the price to pay for good error messages :P |
| 12:48:21 | → | LukeHoersten joins (~LukeHoers@user/lukehoersten) |
| 12:49:28 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
| 12:49:54 | <[Leary]> | I don't think it needs to go on hackage; we have `Kleisli` in base. |
| 12:49:56 | <Profpatsch> | dminuoso: I’m guessing CPSsing would help here as well? |
| 12:50:11 | → | stackdroid18 joins (14094@user/stackdroid) |
| 12:50:16 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 12:50:28 | <dminuoso> | Oh right, FieldParser ~ Kleisli Either |
| 12:50:32 | <dminuoso> | Profpatsch: Perhaps. |
| 12:50:55 | <dminuoso> | It will still make inlining more difficult for some types of parsers. |
| 12:51:04 | <Profpatsch> | [Leary]: yes, it’s a specialised thing which solidifies a good practice |
| 12:51:21 | <Profpatsch> | I personally think that’s a useful thing to have |
| 12:52:26 | <Profpatsch> | [Leary]: also Kleisli has a lot of Arrow a => operators for legacy reasons |
| 12:52:52 | <Profpatsch> | well, it’s from Control.Arrow |
| 12:53:15 | <Profpatsch> | Personally, I’m more fond of Bifunctor, Profunctor etc |
| 12:53:32 | <Profpatsch> | But I can understand that some people might prefer Arrows |
| 12:53:35 | → | rockystone joins (~rocky@user/rockymarine) |
| 12:55:19 | <[Leary]> | It may be in Control.Arrow, but that doesn't mean you need to use Arrow. It has all the other instances you want, Profunctor etc. |
| 12:56:14 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:9df4:2304:ddb0:d61a) |
| 12:56:15 | <dminuoso> | Nobody prefers arrows. :> |
| 12:56:16 | <[Leary]> | I would at least derive all that via Kleisli. |
| 12:56:33 | <Profpatsch> | [Leary]: why though? It makes it harder to understand |
| 12:56:54 | → | freeside joins (~mengwong@103.252.202.193) |
| 12:57:09 | <[Leary]> | I don't see how. Most people understand Kleisli, so they'll know what you're doing at a glance. |
| 12:57:22 | <[Leary]> | A new type requires inspection. |
| 12:57:22 | <dminuoso> | "most" depends on your target audience. |
| 12:57:22 | <Profpatsch> | Part of a production codebase is reducing the mental overhead of how things work |
| 12:57:46 | <Profpatsch> | I wouldn’t want to explain to a new hire what Kleisli is if they want to understand FieldParser |
| 12:57:56 | × | axeman quits (~quassel@2a02:8109:a380:78:bc30:5eb7:62c9:6689) (Ping timeout: 250 seconds) |
| 12:58:05 | <dminuoso> | Yes, but now you have to explain FieldParser to them |
| 12:58:14 | <Profpatsch> | It’s the classic “Having problem understanding 4 dimensions? Just imagine n dimensions and set n=4!” |
| 12:58:16 | <dminuoso> | And why you have a separate type from Parser (from say attoparseec) |
| 12:58:32 | × | rockystone quits (~rocky@user/rockymarine) (Ping timeout: 276 seconds) |
| 12:59:53 | <Profpatsch> | dminuoso: one parses horizontally (i.e. from a stream of tokens to a structure), the other vertically (from a bounded value to a smaller bounded value) |
| 13:00:18 | <Profpatsch> | both are mostly orthogonal concepts |
| 13:00:27 | → | alternateved joins (~user@staticline-31-183-175-205.toya.net.pl) |
| 13:00:40 | <dminuoso> | My flatparse parser does this by keeping combinators in separate modules. *shrugs* |
| 13:00:40 | → | Guest16 joins (~Guest16@p200300ef971835175dc5e8e509d3babc.dip0.t-ipconnect.de) |
| 13:00:53 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 13:01:05 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:9df4:2304:ddb0:d61a) (Ping timeout: 272 seconds) |
| 13:01:10 | <dminuoso> | That is, I have a Foo.Lexer module which exposes `Get T` type of things that parse tokens, and Foo.Parser that uses Foo.Lexer combinators to produce high level things |
| 13:01:18 | <dminuoso> | It's all just `Get a` |
| 13:01:27 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 272 seconds) |
| 13:01:50 | <Profpatsch> | dminuoso: is flatparse a Haskell version of nom? |
| 13:01:55 | <dminuoso> | Yes |
| 13:02:02 | <Profpatsch> | dminuoso: pretty cool, I might want to use that |
| 13:02:48 | × | alternateved quits (~user@staticline-31-183-175-205.toya.net.pl) (Remote host closed the connection) |
| 13:03:00 | <Profpatsch> | dminuoso: Ah, I had never mapped your IRC nick to your github handle before |
| 13:03:18 | <Profpatsch> | dminuoso: were you at Zurihac and/or Munihac? |
| 13:03:42 | <dminuoso> | We met at Zurihac |
| 13:04:05 | <Profpatsch> | Me and my brain are best frens |
| 13:04:47 | <Profpatsch> | dminuoso: the good thing, this way my brain can meet you next Zurihac, for the first time, all over again! |
| 13:06:09 | → | alternateved joins (~user@staticline-31-183-175-205.toya.net.pl) |
| 13:06:13 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 13:06:30 | → | rockystone joins (~rocky@user/rockymarine) |
| 13:12:11 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 276 seconds) |
| 13:12:47 | × | Guest51 quits (~Guest51@50.47.90.28) (Quit: Client closed) |
| 13:13:22 | × | LukeHoersten quits (~LukeHoers@user/lukehoersten) (Read error: Connection timed out) |
| 13:15:36 | → | freeside joins (~mengwong@103.252.202.193) |
| 13:16:01 | × | zer0bitz quits (~zer0bitz@2001:2003:f748:2000:d960:d98a:f624:8ef) (Read error: Connection reset by peer) |
| 13:16:11 | → | sameer joins (~sameer@2409:4070:2d3d:53f6::c049:8101) |
| 13:18:19 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 13:23:51 | × | Guest16 quits (~Guest16@p200300ef971835175dc5e8e509d3babc.dip0.t-ipconnect.de) (Quit: Client closed) |
| 13:24:03 | <tdammers> | heh... I, for one, am not always on speaking terms with my brain :D |
| 13:24:22 | <merijn> | tdammers: facts |
| 13:24:30 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 272 seconds) |
| 13:24:45 | <merijn> | Hell, most of my body tends to occasionally not be on speaking terms :p |
| 13:25:19 | geekosaur | resembles that one |
| 13:26:35 | → | Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542) |
| 13:28:09 | → | beteigeuze1 joins (~Thunderbi@2001:8a0:61b5:6101:9233:19e9:6537:6e73) |
| 13:29:44 | × | beteigeuze quits (~Thunderbi@bl14-81-220.dsl.telepac.pt) (Ping timeout: 276 seconds) |
| 13:29:44 | beteigeuze1 | is now known as beteigeuze |
| 13:31:06 | × | chomwitt quits (~chomwitt@2a02:587:dc10:8200:1ac0:4dff:fedb:a3f1) (Remote host closed the connection) |
| 13:31:30 | → | chomwitt joins (~chomwitt@2a02:587:dc10:8200:1ac0:4dff:fedb:a3f1) |
| 13:32:17 | × | lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 13:32:42 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 260 seconds) |
| 13:32:45 | → | ystael joins (~ystael@user/ystael) |
| 13:33:38 | × | acidjnk quits (~acidjnk@p200300d6e7137a399c67b611784f46e2.dip0.t-ipconnect.de) (Ping timeout: 276 seconds) |
| 13:34:39 | → | freeside joins (~mengwong@103.252.202.193) |
| 13:34:43 | × | mrvdb quits (~mrvdb@2001:19f0:5000:8582:5400:ff:fe07:3df5) (Quit: ZNC 1.8.2 - https://znc.in) |
| 13:35:30 | → | mrvdb joins (~mrvdb@185.92.221.186) |
| 13:35:57 | <Profpatsch> | Okay, weird error: I changed some -> IO a to Applicative m => … -> m a |
| 13:36:09 | <Profpatsch> | And suddenly a TypeApplication does not type check anymore |
| 13:36:59 | <Profpatsch> | foo @Bar a b <- “Cannot apply expression of type a0 -> b -> a0 to visible type argument Bar” |
| 13:37:22 | <Profpatsch> | Is this some weird interaction between the ApplicativeDo desugaring and TypeApplications? |
| 13:37:36 | <Profpatsch> | the definition of `foo` is in a let-block above the code that fails |
| 13:37:45 | <Profpatsch> | I will try moving it into a where clause, maybe this helps |
| 13:38:15 | <Profpatsch> | Removing the type application seems to work, but that’s bad for code readability |
| 13:39:06 | <lortabac> | are there other type variables in the signature before 'm'? |
| 13:39:15 | <Profpatsch> | oh huh moving it to the where seems to work |
| 13:39:28 | <Profpatsch> | lortabac: no, just the m |
| 13:39:46 | <Profpatsch> | I’m a bit too lazy to produce a minimal example right now |
| 13:40:13 | <Profpatsch> | It might interact with the enabled extensions in a weird way |
| 13:40:20 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 13:41:06 | <Profpatsch> | I guess GHC removes the `a` from the definition of `foo` before it actually does the TypeApplication, so it’s gone at that point |
| 13:43:07 | → | LukeHoersten joins (~LukeHoers@user/lukehoersten) |
| 13:45:35 | <Profpatsch> | funny, interspersing a `let` between the last _ <- ma and the final `pure $ …` will also switch from Applicative to Monad |
| 13:45:40 | × | random-jellyfish quits (~random-je@user/random-jellyfish) (Ping timeout: 244 seconds) |
| 13:45:43 | <Profpatsch> | ApplicativeDo is really unstable holy crap |
| 13:47:22 | × | BananaKing694 quits (~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net) (Remote host closed the connection) |
| 13:47:34 | → | BananaKing694 joins (~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net) |
| 13:48:17 | <Profpatsch> | Ah, the algorithm is O(n^2) well |
| 13:51:57 | × | LukeHoersten quits (~LukeHoers@user/lukehoersten) (Ping timeout: 260 seconds) |
| 13:52:32 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 13:52:32 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 13:52:32 | → | wroathe joins (~wroathe@user/wroathe) |
| 13:56:21 | → | BananaKing69441 joins (~BananaKin@pool-74-105-2-138.nwrknj.fios.verizon.net) |
| 13:56:38 | × | BananaKing69441 quits (~BananaKin@pool-74-105-2-138.nwrknj.fios.verizon.net) (Client Quit) |
| 13:57:04 | × | BananaKing694 quits (~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net) () |
| 13:57:20 | → | BananaKing694 joins (~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net) |
| 13:57:40 | → | LukeHoersten joins (~LukeHoers@user/lukehoersten) |
| 13:58:16 | → | j4cc3b joins (~j4cc3b@pool-74-105-2-138.nwrknj.fios.verizon.net) |
| 13:58:56 | BananaKing694 | is now known as j4cc3b_ |
| 13:59:29 | × | j4cc3b_ quits (~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net) (Client Quit) |
| 14:01:08 | → | BananaKing694 joins (~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net) |
| 14:02:29 | <kuribas> | Profpatsch: maybe the `m` is not the first type argument of foo? |
| 14:02:32 | <kuribas> | now |
| 14:03:57 | × | akegalj quits (~akegalj@93-138-77-86.adsl.net.t-com.hr) (Quit: leaving) |
| 14:04:33 | <Profpatsch> | kuribas: I had foo defined as let foo :: Read a -> a -> Maybe Text -> a |
| 14:04:39 | <Profpatsch> | So m did not even appear in foo’s signature |
| 14:04:48 | <Profpatsch> | I wanted to instantiate the `a` |
| 14:05:30 | × | BananaKing694 quits (~bananakin@pool-74-105-2-138.nwrknj.fios.verizon.net) (Remote host closed the connection) |
| 14:05:31 | <Profpatsch> | Which is why I’m confused why the `a` suddenly disappears when you switch the m of the do-block outside from IO to Applicative m |
| 14:05:43 | <Profpatsch> | and switch on ApplicativeDo |
| 14:05:54 | <geekosaur> | is one of those ->s supposed to be a =>? |
| 14:05:59 | <Profpatsch> | geekosaur: yes |
| 14:06:02 | <Profpatsch> | the first |
| 14:06:29 | <Profpatsch> | I thought maybe ScopedTypeVariables might fix it, but it doesn’t look like it does |
| 14:06:32 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 260 seconds) |
| 14:06:40 | <Profpatsch> | moving the definition of foo from let to a where fixes it |
| 14:06:48 | <Profpatsch> | I guess I can live with that |
| 14:07:19 | <geekosaur> | istr that applicativedo has issues whth lets |
| 14:07:33 | <Profpatsch> | geekosaur: is that a well-known fact? |
| 14:07:58 | <geekosaur> | it's well known that it has lots of oddities and failure modes that "ought to" work |
| 14:08:02 | <Profpatsch> | I’d prefer a separate `ado` tbh |
| 14:08:07 | <geekosaur> | it's really fragile |
| 14:08:09 | <Profpatsch> | or something along those lines |
| 14:08:42 | <tdammers> | I'm still pretty convinced that there's no fundamental reason why applicative do couldn't work, but the problem seems to be that it's an afterthought |
| 14:08:48 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 14:09:00 | → | nate2 joins (~nate@98.45.169.16) |
| 14:09:29 | <kuribas> | Profpatsch: ApplicativeDo is quit buggy. |
| 14:09:39 | <Profpatsch> | Hrm, maybe I’m gonna do Overloaded-Do and have a module for Applicative |
| 14:09:42 | <Profpatsch> | Applicative.do |
| 14:09:45 | <Profpatsch> | should work, no? |
| 14:10:19 | <kuribas> | it also doesn't handle some obvious stuff, like let bindings. |
| 14:10:36 | <kuribas> | Still, it's pretty handy with records. |
| 14:11:07 | <Profpatsch> | Ah no, QualifiedDo just converts <- to >>= |
| 14:12:31 | <Profpatsch> | You can always “prove” that it’s not Monad by returning `Applicative m => … -> m` and passing all required functions in `m` as arguments |
| 14:12:42 | <Profpatsch> | I think that’s okay-ish |
| 14:13:57 | <Profpatsch> | although … hm … that might not work with mtl-style class functions since they always depend on Monad |
| 14:14:14 | <Profpatsch> | nvm it does |
| 14:14:26 | × | j4cc3b quits (~j4cc3b@pool-74-105-2-138.nwrknj.fios.verizon.net) (Quit: Client closed) |
| 14:14:35 | × | nate2 quits (~nate@98.45.169.16) (Ping timeout: 276 seconds) |
| 14:14:37 | → | j4cc3b joins (~j4cc3b@pool-74-105-2-138.nwrknj.fios.verizon.net) |
| 14:18:04 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 14:19:35 | → | LukeHoersten_ joins (~LukeHoers@user/lukehoersten) |
| 14:20:47 | → | LukeHoersten__ joins (~LukeHoers@user/lukehoersten) |
| 14:21:06 | × | glguy quits (~glguy@libera/staff-emeritus/glguy) (Ping timeout: 260 seconds) |
| 14:23:47 | × | LukeHoersten quits (~LukeHoers@user/lukehoersten) (Ping timeout: 272 seconds) |
| 14:24:10 | × | LukeHoersten_ quits (~LukeHoers@user/lukehoersten) (Ping timeout: 250 seconds) |
| 14:27:19 | → | Guest51 joins (~Guest51@50.47.90.28) |
| 14:28:33 | → | LukeHoersten joins (~LukeHoers@user/lukehoersten) |
| 14:30:31 | <kuribas> | :t ask |
| 14:30:32 | <lambdabot> | MonadReader r m => m r |
| 14:31:32 | × | LukeHoersten__ quits (~LukeHoers@user/lukehoersten) (Ping timeout: 250 seconds) |
| 14:31:52 | <kuribas> | Profpatsch: why do you need to prove it's not a Monad? A Monad is an Applicative too :) |
| 14:32:46 | × | Guest51 quits (~Guest51@50.47.90.28) (Quit: Client closed) |
| 14:37:56 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 14:40:08 | × | rembo10 quits (~rembo10@main.remulis.com) (Quit: ZNC 1.8.2 - https://znc.in) |
| 14:40:56 | → | jonathanx joins (~jonathan@94.234.103.139) |
| 14:42:21 | → | rembo10 joins (~rembo10@main.remulis.com) |
| 14:43:27 | → | gurkenglas joins (~gurkengla@p548ac72e.dip0.t-ipconnect.de) |
| 14:43:29 | → | glguy joins (~glguy@libera/staff-emeritus/glguy) |
| 14:44:18 | × | alternateved quits (~user@staticline-31-183-175-205.toya.net.pl) (Remote host closed the connection) |
| 14:46:50 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 272 seconds) |
| 14:47:05 | → | jonathanx_ joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
| 14:48:33 | → | troydm joins (~troydm@host-176-37-124-197.b025.la.net.ua) |
| 14:49:03 | → | edrx joins (~Eduardo@2804:56c:d2d8:400:7ffb:83a1:5d67:a122) |
| 14:49:44 | × | jonathanx quits (~jonathan@94.234.103.139) (Ping timeout: 250 seconds) |
| 14:50:43 | × | LukeHoersten quits (~LukeHoers@user/lukehoersten) (Quit: Textual IRC Client: www.textualapp.com) |
| 14:51:55 | × | sameer quits (~sameer@2409:4070:2d3d:53f6::c049:8101) (Ping timeout: 272 seconds) |
| 14:52:50 | → | sameer joins (~sameer@2409:4070:6e10:74c0::81c8:d301) |
| 15:03:43 | <edrx> | hi all... this is slightly off-topic, but right now this channel is the only in which I think I can an answer in less than one hour... =/ I'm trying to learn Tikz - mostly to draw string diagrams - and I'm mostly trying to translate its high-level constructs into lower-level ones... |
| 15:04:52 | × | rockystone quits (~rocky@user/rockymarine) (Ping timeout: 260 seconds) |
| 15:05:24 | → | freeside joins (~mengwong@103.252.202.193) |
| 15:06:19 | <edrx> | but 1) I don't know if the two notions of "rectangle" below can be integrated, and how... and 2) I don't know any chats in which I can ask those questions. Any ideas? |
| 15:07:03 | <edrx> | http://mirrors.ctan.org/graphics/pgf/base/doc/pgfmanual.pdf#page=34 |
| 15:07:11 | <edrx> | http://mirrors.ctan.org/graphics/pgf/base/doc/pgfmanual.pdf#page=785 |
| 15:08:50 | → | Guest51 joins (~Guest51@50.47.90.28) |
| 15:11:38 | → | axeman joins (~quassel@2a02:8109:a380:78:7810:2127:b425:57c7) |
| 15:13:05 | × | motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 276 seconds) |
| 15:15:38 | → | Guest2956 joins (~Guest29@pool-108-54-69-191.nycmny.fios.verizon.net) |
| 15:15:55 | <Guest2956> | why is this outputting an error? |
| 15:16:00 | <Guest2956> | *Main> mapMaybe (+2) [Just 10, Nothing] |
| 15:16:01 | <Guest2956> | <interactive>:15:1: error: |
| 15:16:01 | <Guest2956> | • Non type-variable argument in the constraint: Num (Maybe b) |
| 15:16:02 | <Guest2956> | (Use FlexibleContexts to permit this) |
| 15:16:02 | <Guest2956> | • When checking the inferred type |
| 15:16:03 | <Guest2956> | it :: forall b. (Num b, Num (Maybe b)) => [b] |
| 15:16:50 | <merijn> | :t mapMaybe |
| 15:16:51 | <lambdabot> | (a -> Maybe b) -> [a] -> [b] |
| 15:17:08 | <merijn> | (+2) does not return a Maybe |
| 15:17:30 | <merijn> | Or rather |
| 15:17:37 | <geekosaur> | I think you have the sense of mapMaybe reversed |
| 15:17:38 | <merijn> | :t (+2) |
| 15:17:39 | <lambdabot> | Num a => a -> a |
| 15:18:09 | <merijn> | It's interpreting "(+2)" as having type "Num (Maybe b) => Maybe b -> Maybe b" |
| 15:18:46 | × | Guest51 quits (~Guest51@50.47.90.28) (Quit: Client closed) |
| 15:19:03 | → | Everything joins (~Everythin@static.208.206.21.65.clients.your-server.de) |
| 15:22:53 | <Guest2956> | can you give an example of a correct function using mapMaybe? |
| 15:22:56 | → | mvk joins (~mvk@2607:fea8:5ce3:8500::a80f) |
| 15:26:32 | <ridcully> | Data.Maybe.mapMaybe Data.Maybe.listToMaybe [[], [1]] |
| 15:26:33 | → | rockystone joins (~rocky@user/rockymarine) |
| 15:28:47 | × | juri_ quits (~juri@84-19-175-179.pool.ovpn.com) (Ping timeout: 260 seconds) |
| 15:29:00 | × | j4cc3b quits (~j4cc3b@pool-74-105-2-138.nwrknj.fios.verizon.net) (Ping timeout: 244 seconds) |
| 15:30:03 | → | motherfsck joins (~motherfsc@user/motherfsck) |
| 15:30:04 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:ad98:9d00:b84f:455) (Quit: WeeChat 2.8) |
| 15:32:11 | → | Tuplanolla joins (~Tuplanoll@91-159-69-240.elisa-laajakaista.fi) |
| 15:33:02 | → | eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) |
| 15:33:30 | × | axeman quits (~quassel@2a02:8109:a380:78:7810:2127:b425:57c7) (Ping timeout: 250 seconds) |
| 15:37:46 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 15:40:27 | <merijn> | > let x `divBy` y | y == 0 = Nothing; | otherwise = Just (x `div` y) in 5 `divBy` 2 |
| 15:40:37 | <lambdabot> | <hint>:1:37: error: parse error on input ‘|’ |
| 15:40:43 | <merijn> | bah |
| 15:40:45 | <merijn> | ok, I don't know how to do guards to an easy example :p |
| 15:44:02 | → | boxscape_ joins (~boxscape_@81.191.27.107) |
| 15:44:21 | × | jespada quits (~jespada@nmal-24-b2-v4wan-166357-cust1764.vm24.cable.virginm.net) (Quit: Textual IRC Client: www.textualapp.com) |
| 15:46:04 | × | danza quits (~francesco@151.43.124.110) (Ping timeout: 250 seconds) |
| 15:46:46 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 15:48:11 | × | eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 15:49:15 | × | perrierjouet quits (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7) |
| 15:49:36 | → | perrierjouet joins (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) |
| 15:49:40 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:9df4:2304:ddb0:d61a) |
| 15:50:26 | → | nate2 joins (~nate@98.45.169.16) |
| 15:51:58 | → | wonko joins (~wjc@2a0e:1c80:2:0:45:15:19:130) |
| 15:52:02 | <geekosaur> | drop the semicolon |
| 15:52:15 | <geekosaur> | > let x `divBy` y | y == 0 = Nothing | otherwise = Just (x `div` y) in 5 `divBy` 2 |
| 15:52:17 | <lambdabot> | Just 2 |
| 15:53:23 | <Profpatsch> | kuribas: because I can do more with an Applicative than what I can do with a Monad |
| 15:56:28 | × | darkstardevx quits (~darkstard@50.126.124.156) (Ping timeout: 250 seconds) |
| 15:57:20 | × | merijn quits (~merijn@c-001-001-011.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds) |
| 15:58:53 | → | danza joins (~francesco@rm-19-18-125.service.infuturo.it) |
| 15:59:30 | → | juri_ joins (~juri@79.140.114.58) |
| 16:06:11 | ← | edrx parts (~Eduardo@2804:56c:d2d8:400:7ffb:83a1:5d67:a122) (Killed buffer) |
| 16:07:00 | → | merijn joins (~merijn@c-001-001-011.client.esciencecenter.eduvpn.nl) |
| 16:07:18 | → | bgs joins (~bgs@212-85-160-171.dynamic.telemach.net) |
| 16:10:11 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 272 seconds) |
| 16:10:17 | × | rockystone quits (~rocky@user/rockymarine) (Ping timeout: 276 seconds) |
| 16:11:09 | → | erisco_ joins (~erisco@d24-141-66-165.home.cgocable.net) |
| 16:11:42 | → | econo joins (uid147250@user/econo) |
| 16:13:28 | × | erisco quits (~erisco@d24-57-249-233.home.cgocable.net) (Ping timeout: 268 seconds) |
| 16:13:28 | erisco_ | is now known as erisco |
| 16:14:56 | → | j4cc3b joins (~j4cc3b@pool-74-105-2-138.nwrknj.fios.verizon.net) |
| 16:18:41 | → | rockystone joins (~rocky@user/rockymarine) |
| 16:23:28 | → | freeside joins (~mengwong@103.252.202.193) |
| 16:23:37 | × | rockystone quits (~rocky@user/rockymarine) (Ping timeout: 260 seconds) |
| 16:24:46 | → | rockystone joins (~rocky@user/rockymarine) |
| 16:31:47 | × | rockystone quits (~rocky@user/rockymarine) (Ping timeout: 260 seconds) |
| 16:34:27 | → | rockystone joins (~rocky@user/rockymarine) |
| 16:36:56 | × | wonko quits (~wjc@2a0e:1c80:2:0:45:15:19:130) (Ping timeout: 276 seconds) |
| 16:38:23 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:9df4:2304:ddb0:d61a) (Remote host closed the connection) |
| 16:39:31 | → | acidjnk joins (~acidjnk@p54ad5adb.dip0.t-ipconnect.de) |
| 16:40:06 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:9df4:2304:ddb0:d61a) |
| 16:41:04 | → | cytokine_storm joins (~cytokine_@user/cytokine-storm/x-1083107) |
| 16:41:07 | × | rockystone quits (~rocky@user/rockymarine) (Ping timeout: 260 seconds) |
| 16:43:37 | × | j4cc3b quits (~j4cc3b@pool-74-105-2-138.nwrknj.fios.verizon.net) (Quit: Client closed) |
| 16:44:01 | × | siraben quits (~siraben@user/siraben) (Quit: Bridge terminating on SIGTERM) |
| 16:44:01 | × | ormaaj quits (~ormaaj@user/ormaaj) (Quit: Bridge terminating on SIGTERM) |
| 16:44:01 | × | fgaz quits (~fgaz@2001:470:69fc:105::842) (Quit: Bridge terminating on SIGTERM) |
| 16:44:01 | × | RosarioPulella[m quits (~rosariopu@2001:470:69fc:105::a57) (Quit: Bridge terminating on SIGTERM) |
| 16:44:01 | × | ongy[m] quits (~ongymatri@2001:470:69fc:105::5018) (Quit: Bridge terminating on SIGTERM) |
| 16:44:01 | × | ericson2314 quits (~ericson23@2001:470:69fc:105::70c) (Quit: Bridge terminating on SIGTERM) |
| 16:44:01 | × | mekeor[m] quits (~mekeormat@2001:470:69fc:105::17e4) (Quit: Bridge terminating on SIGTERM) |
| 16:44:01 | × | peddie quits (~peddie@2001:470:69fc:105::25d) (Quit: Bridge terminating on SIGTERM) |
| 16:44:02 | × | famubu[m] quits (~famubumat@2001:470:69fc:105::1081) (Quit: Bridge terminating on SIGTERM) |
| 16:44:02 | × | sm quits (~sm@plaintextaccounting/sm) (Quit: Bridge terminating on SIGTERM) |
| 16:44:02 | × | Tisoxin quits (~ikosit@user/ikosit) (Quit: Bridge terminating on SIGTERM) |
| 16:44:02 | × | vladan[m] quits (~vladanmat@2001:470:69fc:105::2:24df) (Quit: Bridge terminating on SIGTERM) |
| 16:44:02 | × | jinsun_ quits (~jinsun@user/jinsun) (Quit: Bridge terminating on SIGTERM) |
| 16:44:02 | × | nicmollel[m] quits (~nicmollel@2001:470:69fc:105::1:feeb) (Quit: Bridge terminating on SIGTERM) |
| 16:44:02 | × | maralorn quits (~maralorn@2001:470:69fc:105::251) (Quit: Bridge terminating on SIGTERM) |
| 16:44:02 | × | aviladev[m] quits (~aviladevm@2001:470:69fc:105::1:cbc7) (Quit: Bridge terminating on SIGTERM) |
| 16:44:02 | × | cp1313[m] quits (~cp1313mat@2001:470:69fc:105::2:9293) (Quit: Bridge terminating on SIGTERM) |
| 16:44:02 | × | loosh[m] quits (~looshchat@2001:470:69fc:105::2:5ddd) (Quit: Bridge terminating on SIGTERM) |
| 16:44:02 | × | VarikValefor[m] quits (~varikvale@2001:470:69fc:105::a5d) (Quit: Bridge terminating on SIGTERM) |
| 16:44:02 | × | fendor[m] quits (~fendormat@2001:470:69fc:105::fcbd) (Quit: Bridge terminating on SIGTERM) |
| 16:44:02 | × | vaibhavsagar[m] quits (~vaibhavsa@2001:470:69fc:105::ffe) (Quit: Bridge terminating on SIGTERM) |
| 16:44:02 | × | SeanKing[m] quits (~seankingm@2001:470:69fc:105::cf9c) (Quit: Bridge terminating on SIGTERM) |
| 16:44:02 | × | Deide quits (~deide@user/deide) (Quit: Bridge terminating on SIGTERM) |
| 16:44:02 | × | unclechu quits (~unclechu@2001:470:69fc:105::354) (Quit: Bridge terminating on SIGTERM) |
| 16:44:02 | × | chreekat quits (~chreekat@2001:470:69fc:105::16b5) (Quit: Bridge terminating on SIGTERM) |
| 16:44:02 | × | geekosaur[m] quits (~geekosaur@xmonad/geekosaur) (Quit: Bridge terminating on SIGTERM) |
| 16:44:02 | × | sektor[m] quits (~sektor@2001:470:69fc:105::2:3f60) (Quit: Bridge terminating on SIGTERM) |
| 16:44:02 | × | fr33domlover[m] quits (~fr33domlo@2001:470:69fc:105::1:3bb6) (Quit: Bridge terminating on SIGTERM) |
| 16:44:02 | × | lawt quits (~lawtonmat@2001:470:69fc:105::2:97b8) (Quit: Bridge terminating on SIGTERM) |
| 16:44:02 | × | alexfmpe[m] quits (~alexfmpem@2001:470:69fc:105::38ba) (Quit: Bridge terminating on SIGTERM) |
| 16:44:02 | × | Christoph[m] quits (~hpotsirhc@2001:470:69fc:105::2ff8) (Quit: Bridge terminating on SIGTERM) |
| 16:44:02 | × | oak- quits (~oakuniver@2001:470:69fc:105::fcd) (Quit: Bridge terminating on SIGTERM) |
| 16:44:02 | × | BB[m] quits (~cashmagem@2001:470:69fc:105::f6dc) (Quit: Bridge terminating on SIGTERM) |
| 16:44:02 | × | jmcantrell quits (~jmcantrel@user/jmcantrell) (Quit: Bridge terminating on SIGTERM) |
| 16:44:02 | × | schuelermine[m] quits (~schuelerm@user/schuelermine) (Quit: Bridge terminating on SIGTERM) |
| 16:44:02 | × | olivermead[m] quits (~olivermea@2001:470:69fc:105::2:4289) (Quit: Bridge terminating on SIGTERM) |
| 16:44:03 | × | SridharRatnakuma quits (~sridmatri@2001:470:69fc:105::1c2) (Quit: Bridge terminating on SIGTERM) |
| 16:44:03 | × | Morrow[m] quits (~morrowmma@2001:470:69fc:105::1d0) (Quit: Bridge terminating on SIGTERM) |
| 16:44:03 | × | romes[m] quits (~romesmatr@2001:470:69fc:105::2:1660) (Quit: Bridge terminating on SIGTERM) |
| 16:44:03 | × | Artem[m] quits (~artemtype@2001:470:69fc:105::75b) (Quit: Bridge terminating on SIGTERM) |
| 16:44:03 | × | aaronv quits (~aaronv@user/aaronv) (Quit: Bridge terminating on SIGTERM) |
| 16:44:03 | × | Orbstheorem quits (~orbstheor@2001:470:69fc:105::a56) (Quit: Bridge terminating on SIGTERM) |
| 16:44:03 | × | Guillaum[m] quits (~guiboumat@2001:470:69fc:105::1:72ac) (Quit: Bridge terminating on SIGTERM) |
| 16:44:03 | × | ManofLetters[m] quits (~manoflett@2001:470:69fc:105::3be) (Quit: Bridge terminating on SIGTERM) |
| 16:44:03 | × | baaash[m] quits (~baaashmat@2001:470:69fc:105::2:1e90) (Quit: Bridge terminating on SIGTERM) |
| 16:44:03 | × | jz99[m] quits (~jz99matri@2001:470:69fc:105::1:d5f1) (Quit: Bridge terminating on SIGTERM) |
| 16:44:03 | × | elvishjerricco quits (~elvishjer@2001:470:69fc:105::6172) (Quit: Bridge terminating on SIGTERM) |
| 16:44:03 | × | foghorn quits (~foghorn@user/foghorn) (Quit: Bridge terminating on SIGTERM) |
| 16:44:03 | × | VanceIsM7[m] quits (~vanceism7@2001:470:69fc:105::3ad) (Quit: Bridge terminating on SIGTERM) |
| 16:44:03 | × | ozkutuk[m] quits (~ozkutuk@2001:470:69fc:105::2:9af8) (Quit: Bridge terminating on SIGTERM) |
| 16:44:03 | × | drsooch[m] quits (~drsoochma@2001:470:69fc:105::1:c8a1) (Quit: Bridge terminating on SIGTERM) |
| 16:44:03 | × | jean-paul[m] quits (~jean-paul@2001:470:69fc:105::d1ab) (Quit: Bridge terminating on SIGTERM) |
| 16:44:03 | × | july541[m] quits (~july541ma@2001:470:69fc:105::1:e416) (Quit: Bridge terminating on SIGTERM) |
| 16:44:03 | × | expipiplus1 quits (~expipiplu@2001:470:69fc:105::d713) (Quit: Bridge terminating on SIGTERM) |
| 16:44:03 | × | maerwald[m] quits (~maerwaldm@2001:470:69fc:105::1ee) (Quit: Bridge terminating on SIGTERM) |
| 16:44:03 | × | sibnull[m] quits (~sibnullma@2001:470:69fc:105::1:1291) (Quit: Bridge terminating on SIGTERM) |
| 16:44:03 | × | silky[m] quits (~noonvande@2001:470:69fc:105::2:943c) (Quit: Bridge terminating on SIGTERM) |
| 16:44:03 | × | rockymarine[m] quits (~rockymari@2001:470:69fc:105::2:9a0c) (Quit: Bridge terminating on SIGTERM) |
| 16:44:03 | × | CeNiEi[m] quits (~cenieimat@2001:470:69fc:105::1:894c) (Quit: Bridge terminating on SIGTERM) |
| 16:44:03 | × | pareto-optimal-d quits (~pareto-op@2001:470:69fc:105::1:b61f) (Quit: Bridge terminating on SIGTERM) |
| 16:44:03 | × | cafkafk[m] quits (~cafkafkma@2001:470:69fc:105::1:cea8) (Quit: Bridge terminating on SIGTERM) |
| 16:44:03 | × | bb010g quits (~bb010g@2001:470:69fc:105::9a5) (Quit: Bridge terminating on SIGTERM) |
| 16:44:03 | × | jbggs[m] quits (~jbggsmatr@2001:470:69fc:105::2:995f) (Quit: Bridge terminating on SIGTERM) |
| 16:44:03 | × | M3g-mentok[m] quits (~M3g-mento@2001:470:69fc:105::2:9a49) (Quit: Bridge terminating on SIGTERM) |
| 16:44:03 | × | weeezes[m] quits (~weeezesma@2001:470:69fc:105::1:da65) (Quit: Bridge terminating on SIGTERM) |
| 16:44:04 | × | Neosake[m] quits (~neosakema@2001:470:69fc:105::2:989e) (Quit: Bridge terminating on SIGTERM) |
| 16:44:04 | × | afotgkmnzj7asv3r quits (~afotgkmnz@2001:470:69fc:105::c24b) (Quit: Bridge terminating on SIGTERM) |
| 16:44:04 | × | Clinton[m] quits (~clintonme@2001:470:69fc:105::2:31d4) (Quit: Bridge terminating on SIGTERM) |
| 16:44:05 | × | disco-dave[m] quits (~disco-dav@2001:470:69fc:105::2:1892) (Quit: Bridge terminating on SIGTERM) |
| 16:44:05 | × | JensPetersen[m] quits (~juhp@2001:470:69fc:105::6e9) (Quit: Bridge terminating on SIGTERM) |
| 16:44:05 | × | kiri1606[m] quits (~kiri1606m@2001:470:69fc:105::2:8ec9) (Quit: Bridge terminating on SIGTERM) |
| 16:44:05 | × | aidy quits (~aidy@2001:470:69fc:105::c7b4) (Quit: Bridge terminating on SIGTERM) |
| 16:44:05 | × | JonathanWatson[m quits (~jjwmatrix@2001:470:69fc:105::2:a544) (Quit: Bridge terminating on SIGTERM) |
| 16:44:13 | × | mimi1vx[m] quits (~osukupmat@2001:470:69fc:105::2:418d) (Quit: Bridge terminating on SIGTERM) |
| 16:44:13 | × | psydroid quits (~psydroid@user/psydroid) (Quit: Bridge terminating on SIGTERM) |
| 16:44:13 | × | nomagno quits (~nomagno@2001:470:69fc:105::c1f0) (Quit: Bridge terminating on SIGTERM) |
| 16:44:14 | × | Matthew|m quits (~arathorn@2001:470:69fc:105::1f) (Quit: Bridge terminating on SIGTERM) |
| 16:44:14 | × | smichel17[m] quits (~smichel17@2001:470:69fc:105::2d32) (Quit: Bridge terminating on SIGTERM) |
| 16:44:14 | × | jneira[m] quits (~jneiramat@2001:470:69fc:105::d729) (Quit: Bridge terminating on SIGTERM) |
| 16:44:14 | × | MangoIV[m] quits (~mangoivma@2001:470:69fc:105::2:8417) (Quit: Bridge terminating on SIGTERM) |
| 16:44:14 | × | mesaoptimizer2 quits (~mesaoptim@user/PapuaHardyNet) (Quit: Bridge terminating on SIGTERM) |
| 16:44:14 | × | kadoban quits (~kadoban@user/kadoban) (Quit: Bridge terminating on SIGTERM) |
| 16:44:18 | × | RowanG[m] quits (~rowang077@2001:470:69fc:105::1:ca9f) (Quit: Bridge terminating on SIGTERM) |
| 16:44:22 | <cheater> | what's your favourite clean way to do this without writing your own recursion? myLoop acc = do { ended <- ioIsEnded; if ended { putStrLn "ended" } else { x <- myIO; let acc = pureFun acc x; myLoop acc; } |
| 16:45:17 | × | danza quits (~francesco@rm-19-18-125.service.infuturo.it) (Read error: Connection reset by peer) |
| 16:45:29 | → | rockystone joins (~rocky@user/rockymarine) |
| 16:45:41 | → | danza joins (~francesco@rm-19-18-125.service.infuturo.it) |
| 16:45:41 | × | perrierjouet quits (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7.1) |
| 16:46:52 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 16:48:16 | <Rembane> | cheater: Perhaps using whileM? https://hackage.haskell.org/package/monad-loops-0.4.3/docs/Control-Monad-Loops.html |
| 16:48:24 | → | fgaz joins (~fgaz@2001:470:69fc:105::842) |
| 16:48:36 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 16:48:42 | × | nate2 quits (~nate@98.45.169.16) (Ping timeout: 260 seconds) |
| 16:49:28 | <cheater> | i'm just wondering what everyone uses since it's a good idea to ask about simple stuff like that |
| 16:49:30 | → | peddie joins (~peddie@2001:470:69fc:105::25d) |
| 16:49:30 | → | ericson2314 joins (~ericson23@2001:470:69fc:105::70c) |
| 16:49:30 | → | famubu[m] joins (~famubumat@2001:470:69fc:105::1081) |
| 16:49:30 | → | maralorn joins (~maralorn@2001:470:69fc:105::251) |
| 16:49:30 | → | sm joins (~sm@plaintextaccounting/sm) |
| 16:49:42 | → | Christoph[m] joins (~hpotsirhc@2001:470:69fc:105::2ff8) |
| 16:49:42 | → | ongy[m] joins (~ongymatri@2001:470:69fc:105::5018) |
| 16:49:56 | → | kiri1606[m] joins (~kiri1606m@2001:470:69fc:105::2:8ec9) |
| 16:49:56 | → | siraben joins (~siraben@user/siraben) |
| 16:50:08 | → | july541[m] joins (~july541ma@2001:470:69fc:105::1:e416) |
| 16:50:09 | → | smichel17[m] joins (~smichel17@2001:470:69fc:105::2d32) |
| 16:50:21 | → | SridharRatnakuma joins (~sridmatri@2001:470:69fc:105::1c2) |
| 16:50:22 | → | chreekat joins (~chreekat@2001:470:69fc:105::16b5) |
| 16:50:23 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:9df4:2304:ddb0:d61a) (Remote host closed the connection) |
| 16:50:28 | <cheater> | whileM keeps a partial list around |
| 16:50:43 | × | rockystone quits (~rocky@user/rockymarine) (Ping timeout: 272 seconds) |
| 16:50:49 | <cheater> | but i guess i actually do need to keep one hmm |
| 16:50:56 | → | sibnull[m] joins (~sibnullma@2001:470:69fc:105::1:1291) |
| 16:51:10 | → | expipiplus1 joins (~expipiplu@2001:470:69fc:105::d713) |
| 16:51:22 | → | ManofLetters[m] joins (~manoflett@2001:470:69fc:105::3be) |
| 16:51:22 | → | fendor[m] joins (~fendormat@2001:470:69fc:105::fcbd) |
| 16:51:37 | → | bb010g joins (~bb010g@2001:470:69fc:105::9a5) |
| 16:51:37 | → | oak- joins (~oakuniver@2001:470:69fc:105::fcd) |
| 16:51:37 | → | jmcantrell joins (~jmcantrel@user/jmcantrell) |
| 16:51:38 | → | maerwald[m] joins (~maerwaldm@2001:470:69fc:105::1ee) |
| 16:51:38 | → | jinsun_ joins (~jinsun@user/jinsun) |
| 16:51:38 | → | romes[m] joins (~romesmatr@2001:470:69fc:105::2:1660) |
| 16:51:38 | → | JensPetersen[m] joins (~juhp@2001:470:69fc:105::6e9) |
| 16:51:38 | → | ormaaj joins (~ormaaj@user/ormaaj) |
| 16:51:38 | → | cp1313[m] joins (~cp1313mat@2001:470:69fc:105::2:9293) |
| 16:51:38 | → | kadoban joins (~kadoban@user/kadoban) |
| 16:51:38 | → | BB[m] joins (~cashmagem@2001:470:69fc:105::f6dc) |
| 16:51:39 | → | Guillaum[m] joins (~guiboumat@2001:470:69fc:105::1:72ac) |
| 16:51:53 | → | silky[m] joins (~noonvande@2001:470:69fc:105::2:943c) |
| 16:51:54 | → | nicmollel[m] joins (~nicmollel@2001:470:69fc:105::1:feeb) |
| 16:51:54 | → | RosarioPulella[m joins (~rosariopu@2001:470:69fc:105::a57) |
| 16:51:54 | → | alexfmpe[m] joins (~alexfmpem@2001:470:69fc:105::38ba) |
| 16:51:54 | → | jneira[m] joins (~jneiramat@2001:470:69fc:105::d729) |
| 16:51:54 | → | Matthew|m joins (~arathorn@2001:470:69fc:105::1f) |
| 16:51:54 | → | lawt joins (~lawtonmat@2001:470:69fc:105::2:97b8) |
| 16:51:54 | → | RowanG[m] joins (~rowang077@2001:470:69fc:105::1:ca9f) |
| 16:51:54 | → | Morrow[m] joins (~morrowmma@2001:470:69fc:105::1d0) |
| 16:51:54 | → | vaibhavsagar[m] joins (~vaibhavsa@2001:470:69fc:105::ffe) |
| 16:52:06 | → | CeNiEi[m] joins (~cenieimat@2001:470:69fc:105::1:894c) |
| 16:52:08 | → | drsooch[m] joins (~drsoochma@2001:470:69fc:105::1:c8a1) |
| 16:52:08 | → | olivermead[m] joins (~olivermea@2001:470:69fc:105::2:4289) |
| 16:52:21 | → | Neosake[m] joins (~neosakema@2001:470:69fc:105::2:989e) |
| 16:52:34 | → | aidy joins (~aidy@2001:470:69fc:105::c7b4) |
| 16:52:46 | → | jbggs[m] joins (~jbggsmatr@2001:470:69fc:105::2:995f) |
| 16:52:58 | → | rockymarine[m] joins (~rockymari@2001:470:69fc:105::2:9a0c) |
| 16:52:58 | → | loosh[m] joins (~looshchat@2001:470:69fc:105::2:5ddd) |
| 16:53:10 | → | M3g-mentok[m] joins (~M3g-mento@2001:470:69fc:105::2:9a49) |
| 16:53:24 | → | disco-dave[m] joins (~disco-dav@2001:470:69fc:105::2:1892) |
| 16:53:25 | → | Orbstheorem joins (~orbstheor@2001:470:69fc:105::a56) |
| 16:53:25 | → | Tisoxin joins (~ikosit@user/ikosit) |
| 16:53:25 | → | ozkutuk[m] joins (~ozkutuk@2001:470:69fc:105::2:9af8) |
| 16:53:25 | → | Artem[m] joins (~artemtype@2001:470:69fc:105::75b) |
| 16:53:26 | → | foghorn joins (~foghorn@user/foghorn) |
| 16:53:26 | → | unclechu joins (~unclechu@2001:470:69fc:105::354) |
| 16:53:26 | → | baaash[m] joins (~baaashmat@2001:470:69fc:105::2:1e90) |
| 16:53:26 | → | mimi1vx[m] joins (~osukupmat@2001:470:69fc:105::2:418d) |
| 16:53:26 | → | sektor[m] joins (~sektor@2001:470:69fc:105::2:3f60) |
| 16:53:38 | → | Clinton[m] joins (~clintonme@2001:470:69fc:105::2:31d4) |
| 16:53:38 | → | mekeor[m] joins (~mekeormat@2001:470:69fc:105::17e4) |
| 16:53:38 | → | vladan[m] joins (~vladanmat@2001:470:69fc:105::2:24df) |
| 16:53:38 | → | elvishjerricco joins (~elvishjer@2001:470:69fc:105::6172) |
| 16:53:39 | → | geekosaur[m] joins (~geekosaur@xmonad/geekosaur) |
| 16:53:39 | → | VarikValefor[m] joins (~varikvale@2001:470:69fc:105::a5d) |
| 16:53:39 | → | jz99[m] joins (~jz99matri@2001:470:69fc:105::1:d5f1) |
| 16:53:39 | → | nomagno joins (~nomagno@2001:470:69fc:105::c1f0) |
| 16:53:39 | → | jean-paul[m] joins (~jean-paul@2001:470:69fc:105::d1ab) |
| 16:53:39 | → | aviladev[m] joins (~aviladevm@2001:470:69fc:105::1:cbc7) |
| 16:53:39 | → | Deide joins (~deide@user/deide) |
| 16:53:39 | → | fr33domlover[m] joins (~fr33domlo@2001:470:69fc:105::1:3bb6) |
| 16:53:54 | → | afotgkmnzj7asv3r joins (~afotgkmnz@2001:470:69fc:105::c24b) |
| 16:53:55 | → | cafkafk[m] joins (~cafkafkma@2001:470:69fc:105::1:cea8) |
| 16:53:56 | → | VanceIsM7[m] joins (~vanceism7@2001:470:69fc:105::3ad) |
| 16:54:10 | × | juri_ quits (~juri@79.140.114.58) (Read error: Connection reset by peer) |
| 16:54:31 | → | pareto-optimal-d joins (~pareto-op@2001:470:69fc:105::1:b61f) |
| 16:54:34 | → | SeanKing[m] joins (~seankingm@2001:470:69fc:105::cf9c) |
| 16:54:35 | → | aaronv joins (~aaronv@user/aaronv) |
| 16:54:35 | → | MangoIV[m] joins (~mangoivma@2001:470:69fc:105::2:8417) |
| 16:54:35 | → | psydroid joins (~psydroid@user/psydroid) |
| 16:54:35 | → | schuelermine[m] joins (~schuelerm@user/schuelermine) |
| 16:54:35 | → | mesaoptimizer2 joins (~mesaoptim@user/PapuaHardyNet) |
| 16:54:47 | → | JonathanWatson[m joins (~jjwmatrix@2001:470:69fc:105::2:a544) |
| 16:54:59 | → | weeezes[m] joins (~weeezesma@2001:470:69fc:105::1:da65) |
| 16:57:57 | → | juri_ joins (~juri@79.140.114.58) |
| 17:00:08 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 17:01:01 | → | perrierjouet joins (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) |
| 17:01:52 | × | Guest2956 quits (~Guest29@pool-108-54-69-191.nycmny.fios.verizon.net) (Quit: Client closed) |
| 17:02:36 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:9df4:2304:ddb0:d61a) |
| 17:03:10 | × | juri_ quits (~juri@79.140.114.58) (Ping timeout: 252 seconds) |
| 17:03:12 | → | zer0bitz joins (~zer0bitz@2001:2003:f748:2000:f433:1323:4e67:752d) |
| 17:04:04 | → | j4cc3b joins (~j4cc3b@pool-74-105-2-138.nwrknj.fios.verizon.net) |
| 17:04:21 | → | rockystone joins (~rocky@user/rockymarine) |
| 17:04:52 | → | juri_ joins (~juri@84-19-175-179.pool.ovpn.com) |
| 17:06:50 | × | rockystone quits (~rocky@user/rockymarine) (Read error: Connection reset by peer) |
| 17:07:32 | × | nschoe quits (~q@141.101.51.197) (Ping timeout: 250 seconds) |
| 17:08:14 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 17:09:27 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 17:10:08 | × | boxscape_ quits (~boxscape_@81.191.27.107) (Remote host closed the connection) |
| 17:10:11 | → | zer0bitz_ joins (~zer0bitz@2001:2003:f748:2000:48a6:74bf:500d:5c90) |
| 17:10:24 | → | boxscape_ joins (~boxscape_@81.191.27.107) |
| 17:11:37 | → | littlefinger joins (~littlefin@pool-100-15-237-121.washdc.fios.verizon.net) |
| 17:12:19 | × | zer0bitz quits (~zer0bitz@2001:2003:f748:2000:f433:1323:4e67:752d) (Ping timeout: 255 seconds) |
| 17:12:45 | × | kuribas quits (~user@ptr-17d51emnxyldefiap63.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 27.1)) |
| 17:13:15 | → | coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
| 17:15:00 | × | oak- quits (~oakuniver@2001:470:69fc:105::fcd) (Quit: Reconnecting) |
| 17:15:16 | → | oak- joins (~oak-@2001:470:69fc:105::fcd) |
| 17:17:05 | → | darkstardevx joins (~darkstard@50.126.124.156) |
| 17:17:36 | → | kimjetwav joins (~user@2607:fea8:235e:b600:b115:f56:940e:2252) |
| 17:22:45 | × | ghoulpine quits (xfnw@tilde.team) (Quit: Connection reset by purr) |
| 17:24:14 | × | boxscape_ quits (~boxscape_@81.191.27.107) (Remote host closed the connection) |
| 17:24:31 | → | boxscape_ joins (~boxscape_@81.191.27.107) |
| 17:25:44 | × | merijn quits (~merijn@c-001-001-011.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds) |
| 17:26:20 | × | beteigeuze quits (~Thunderbi@2001:8a0:61b5:6101:9233:19e9:6537:6e73) (Ping timeout: 276 seconds) |
| 17:30:07 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 260 seconds) |
| 17:30:29 | → | axeman joins (~quassel@2a02:8109:a380:78:dcd3:d662:889b:778e) |
| 17:34:04 | → | zebrag joins (~chris@user/zebrag) |
| 17:35:36 | × | gentauro quits (~gentauro@user/gentauro) (Read error: Connection reset by peer) |
| 17:35:37 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 17:36:42 | → | beteigeuze joins (~Thunderbi@bl14-81-220.dsl.telepac.pt) |
| 17:36:55 | × | boxscape_ quits (~boxscape_@81.191.27.107) (Remote host closed the connection) |
| 17:37:12 | → | boxscape_ joins (~boxscape_@81.191.27.107) |
| 17:37:29 | → | slack1256 joins (~slack1256@186.11.46.162) |
| 17:37:59 | × | zer0bitz_ quits (~zer0bitz@2001:2003:f748:2000:48a6:74bf:500d:5c90) (Read error: Connection reset by peer) |
| 17:40:54 | × | beteigeuze quits (~Thunderbi@bl14-81-220.dsl.telepac.pt) (Ping timeout: 250 seconds) |
| 17:41:01 | → | gentauro joins (~gentauro@user/gentauro) |
| 17:43:25 | <slack1256> | Nixos by default compiles libraries dynamically for haskell projects. IIRC this made monomorphization difficult, is that right? |
| 17:43:56 | × | cytokine_storm quits (~cytokine_@user/cytokine-storm/x-1083107) (Ping timeout: 250 seconds) |
| 17:45:45 | → | zeenk joins (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) |
| 17:47:17 | <dminuoso> | lyxia: Oh gosh! All my mistakes were in assuming the phases went from 0 to 2, but they go backwards. clearly. |
| 17:47:34 | <[exa]> | slack1256: by "monomorphization" you mean "making optimized non-polymorphic variants of functions" right? if so, information for inlining is actually present in .hi files and so the dynamic status of the library doesn't really make much difference |
| 17:47:39 | → | zer0bitz joins (~zer0bitz@2001:2003:f748:2000:99dc:7f1f:c53d:641d) |
| 17:49:45 | <dolio> | Dynamic linking doesn't prevent any optimizations, I think. |
| 17:50:48 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:9df4:2304:ddb0:d61a) (Remote host closed the connection) |
| 17:50:48 | <monochrom> | The optimizer stage and the code generator stage are not told about linking options. |
| 17:51:02 | <monochrom> | IOW orthogonal and independent etc. |
| 17:51:13 | <jle`> | nshepperd2: ah, thanks! was curious how it'd look in haskell :) it's a pretty interesting/neat dynamic programming problem |
| 17:51:27 | <dolio> | Which could mean that 'dynamic linking' is meaningless, because all the code from the library has been inlined already. |
| 17:51:56 | <dolio> | Although that's somewhat unlikely in most cases. |
| 17:51:57 | → | merijn joins (~merijn@c-001-001-011.client.esciencecenter.eduvpn.nl) |
| 17:52:29 | <monochrom> | Oh, in practice inlining happens more often than pessimists think and less often than optimists think. :) |
| 17:53:36 | <dminuoso> | In other words, everybody is wrong? |
| 17:53:45 | <Rembane> | The best kind of wrong! |
| 17:53:46 | <monochrom> | The RTS is never inlined. This is how exe size can be much smaller under dynamic linking. |
| 17:53:47 | <[exa]> | safe assumption. |
| 17:55:16 | <monochrom> | Or rather, this puts an upper bound. |
| 17:57:37 | × | zeenk quits (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) (Ping timeout: 246 seconds) |
| 17:58:17 | → | freeside joins (~mengwong@103.252.202.193) |
| 17:58:50 | × | fserucas|eod quits (~fserucas|@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Ping timeout: 276 seconds) |
| 18:00:46 | <[exa]> | are there any vital alternatives to haskeline? |
| 18:01:38 | <dminuoso> | There's wizards |
| 18:01:52 | <dminuoso> | Which I guess is just a higher level wrapper around haskeline, but its there. |
| 18:03:57 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 260 seconds) |
| 18:06:36 | → | zeenk joins (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) |
| 18:07:52 | × | boxscape_ quits (~boxscape_@81.191.27.107) (Remote host closed the connection) |
| 18:08:09 | → | boxscape_ joins (~boxscape_@81.191.27.107) |
| 18:08:52 | × | perrierjouet quits (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7.1) |
| 18:09:21 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:9df4:2304:ddb0:d61a) |
| 18:14:57 | × | Kaipei quits (~Kaiepi@108.175.84.104) (Ping timeout: 272 seconds) |
| 18:16:13 | → | freeside joins (~mengwong@103.252.202.193) |
| 18:17:03 | <[exa]> | ah ok, let's go haskeline then, thanks :] |
| 18:24:06 | × | ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection) |
| 18:24:33 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 18:26:21 | × | merijn quits (~merijn@c-001-001-011.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds) |
| 18:29:32 | × | ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection) |
| 18:32:01 | → | perrierjouet joins (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) |
| 18:39:13 | → | barak joins (~barak@2a0d:6fc2:68c0:ce00:ef5e:afee:320:8603) |
| 18:40:20 | × | Everything quits (~Everythin@static.208.206.21.65.clients.your-server.de) (Quit: leaving) |
| 18:45:44 | → | nate2 joins (~nate@98.45.169.16) |
| 18:50:14 | × | nate2 quits (~nate@98.45.169.16) (Ping timeout: 250 seconds) |
| 18:50:55 | × | barak quits (~barak@2a0d:6fc2:68c0:ce00:ef5e:afee:320:8603) (Quit: WeeChat 3.7.1) |
| 18:52:25 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
| 18:58:45 | → | Kaipei joins (~Kaiepi@108.175.84.104) |
| 19:04:29 | → | gqplox joins (~textual@147.188.245.207) |
| 19:04:51 | <gqplox> | hi ive made a funcitno recursiveConcat :: [[a]] -> [a] |
| 19:04:57 | <gqplox> | recursiveconcat [] = [] |
| 19:05:20 | <gqplox> | reucsriveconcat xxs = head xxs ++ recursiveconcat (tail xxs) |
| 19:05:34 | <gqplox> | it works fine but i don't understand why |
| 19:05:52 | <gqplox> | recursiveconcat xxs = head xxs ++ recursiveconcat $ tail xxs |
| 19:05:54 | <gqplox> | is wrong |
| 19:10:58 | <monochrom> | Oh probably because "foo ++ bar $ x" means "(foo ++ bar) x" not "foo ++ (bar x)" |
| 19:11:35 | <monochrom> | This is why "$ replaces ()" is a naïve model. |
| 19:12:05 | <gqplox> | Wait what |
| 19:12:23 | <gqplox> | i didn't expect that |
| 19:12:52 | <gqplox> | thanks for the reply |
| 19:12:57 | <gqplox> | where should I look to find the 'correct' way of looking at $ then? |
| 19:13:22 | → | P1RATEZ joins (piratez@user/p1ratez) |
| 19:13:47 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:8c46:781f:98f3:6c99) |
| 19:13:51 | × | danza quits (~francesco@rm-19-18-125.service.infuturo.it) (Ping timeout: 272 seconds) |
| 19:14:07 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 19:14:17 | <monochrom> | A combination of operator precedence ($ is lower than all other operators) and the equation (f) $ (x) = (f) (x). |
| 19:15:06 | <monochrom> | If that is too complicated, a simple rule of thumb is "just don't use $". :) |
| 19:15:29 | → | ft joins (~ft@p3e9bc845.dip0.t-ipconnect.de) |
| 19:15:43 | <monochrom> | $ is extremely optional, you can ignore it until you're ready. |
| 19:16:40 | <monochrom> | Explicit parentheses is more explicit and requires less memorizing operator precedence levels. |
| 19:17:36 | <gqplox> | Oh cool I wrote it out and understand how it gets there, thanks |
| 19:17:52 | <gqplox> | Although i think ill only use it for when its completely obvious for now |
| 19:19:13 | → | vulpine joins (xfnw@tilde.team) |
| 19:20:38 | × | zeenk quits (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) (Quit: Konversation terminated!) |
| 19:22:06 | → | redmp joins (~redmp@airbears2-136-152-143-223.airbears2.berkeley.edu) |
| 19:22:27 | vulpine | is now known as ghoulpine |
| 19:22:57 | × | ralu1 quits (~ralu@static.211.245.203.116.clients.your-server.de) (Quit: The Lounge - https://thelounge.chat) |
| 19:22:58 | × | mvk quits (~mvk@2607:fea8:5ce3:8500::a80f) (Ping timeout: 272 seconds) |
| 19:32:02 | × | redmp quits (~redmp@airbears2-136-152-143-223.airbears2.berkeley.edu) (Ping timeout: 260 seconds) |
| 19:33:44 | → | pavonia joins (~user@user/siracusa) |
| 19:33:46 | <dminuoso> | monochrom: Mmm, that statement `"foo ++ bar $ x" means "(foo ++ bar) x" not "foo ++ (bar x)"` by itself can be confusing too. |
| 19:34:42 | <monochrom> | How? |
| 19:35:03 | <dminuoso> | I would, for clarity sake, add parens around `x` as well. |
| 19:36:38 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 19:37:58 | → | merijn joins (~merijn@c-001-001-011.client.esciencecenter.eduvpn.nl) |
| 19:40:14 | → | MajorBiscuit joins (~MajorBisc@mob-109-118-119-253.net.vodafone.it) |
| 19:44:01 | <davean> | monochrom: uh, didn't you just describe the "$ replaces ()" model and then said that was why it was naive? |
| 19:44:33 | <monochrom> | How? |
| 19:44:51 | <davean> | Because "foo ++ bar $ x" => "(foo ++ bar) (x)" |
| 19:45:23 | <davean> | which you then simplified and said "means \"(foo ++ bar) x\"" |
| 19:45:52 | <monochrom> | "$ replaces ()" includes both that and "foo ++ (bar x)". |
| 19:46:20 | <monochrom> | Err no. |
| 19:46:23 | <davean> | I was told "put parents around the full expression on both sides of the $" |
| 19:46:31 | <monochrom> | Err yes. |
| 19:48:15 | <monochrom> | That's never how people use "$ replaces ()". |
| 19:48:26 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:9df4:2304:ddb0:d61a) (Remote host closed the connection) |
| 19:48:42 | <davean> | It isn't? Thats what this channel gave me when I first learned haskell |
| 19:48:49 | <dminuoso> | davean: That leaves us just to talk about right and left associativity, and how ($) should be infixl and not infixr! |
| 19:48:59 | <monochrom> | How people use it: Start with an expression that has some () but no $, then replace all () by $. That direction doesn't work. |
| 19:49:16 | <davean> | oh huh, ok, thats NOT what I ever heard |
| 19:50:26 | <monochrom> | This is a special case of how people never proofread their own writing. |
| 19:50:34 | <dminuoso> | What do you folks think. Is the fixity of ($) wrong? |
| 19:50:46 | <dolio> | Yes. |
| 19:50:56 | <dolio> | But it's too late to fix it. |
| 19:51:42 | <monochrom> | I.e., people never work this backward crosscheck direction: "Now that I have code that uses $, let me replace $ by (), impartially, and see if it really means what I want". |
| 19:52:09 | × | ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 258 seconds) |
| 19:52:39 | <monochrom> | In general people never check what their wording actually comes across to other people/computer. |
| 19:52:58 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 19:53:06 | → | dextaa joins (~DV@user/dextaa) |
| 19:53:38 | → | jmdaemon joins (~jmdaemon@user/jmdaemon) |
| 19:54:01 | × | mokee quits (~mokee@37.228.215.235) (Quit: off) |
| 19:57:40 | × | littlefinger quits (~littlefin@pool-100-15-237-121.washdc.fios.verizon.net) (Ping timeout: 244 seconds) |
| 19:59:08 | × | axeman quits (~quassel@2a02:8109:a380:78:dcd3:d662:889b:778e) (Ping timeout: 250 seconds) |
| 19:59:29 | → | Guest51 joins (~Guest51@205.175.106.104) |
| 19:59:50 | × | gqplox quits (~textual@147.188.245.207) (Quit: Textual IRC Client: www.textualapp.com) |
| 20:02:59 | × | caryhartline quits (~caryhartl@2600:1700:2d0:8d30:d4cb:6221:97a6:c0bc) (Quit: caryhartline) |
| 20:03:02 | × | Guest51 quits (~Guest51@205.175.106.104) (Client Quit) |
| 20:04:16 | → | lisbeths joins (uid135845@id-135845.lymington.irccloud.com) |
| 20:04:41 | → | Guest51 joins (~Guest51@205.175.106.104) |
| 20:05:39 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:8c46:781f:98f3:6c99) (Quit: WeeChat 2.8) |
| 20:05:56 | × | j4cc3b quits (~j4cc3b@pool-74-105-2-138.nwrknj.fios.verizon.net) (Ping timeout: 244 seconds) |
| 20:07:02 | × | merijn quits (~merijn@c-001-001-011.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds) |
| 20:09:45 | → | cytokine_storm joins (~cytokine_@user/cytokine-storm/x-1083107) |
| 20:12:20 | × | coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
| 20:15:18 | → | birdgoose joins (~birdgoose@2406:e003:1d87:6601:ad3a:1d2e:9fb1:dfac) |
| 20:15:55 | × | birdgoose quits (~birdgoose@2406:e003:1d87:6601:ad3a:1d2e:9fb1:dfac) (Client Quit) |
| 20:16:03 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 20:16:13 | → | birdgoose joins (~birdgoose@2406:e003:1d87:6601:ad3a:1d2e:9fb1:dfac) |
| 20:19:30 | × | m5zs7k quits (aquares@web10.mydevil.net) (*.net *.split) |
| 20:19:30 | × | Sciencentistguy quits (~sciencent@hacksoc/ordinary-member) (*.net *.split) |
| 20:19:30 | × | Ranhir quits (~Ranhir@157.97.53.139) (*.net *.split) |
| 20:19:30 | × | taeaad quits (~taeaad@user/taeaad) (*.net *.split) |
| 20:19:30 | × | stefan-_ quits (~cri@42dots.de) (*.net *.split) |
| 20:19:30 | × | Inoperable quits (~PLAYER_1@fancydata.science) (*.net *.split) |
| 20:19:30 | × | asm quits (~alexander@user/asm) (*.net *.split) |
| 20:19:30 | × | zachel quits (~zachel@user/zachel) (*.net *.split) |
| 20:19:30 | × | codedmart quits (codedmart@2600:3c01::f03c:92ff:fefe:8511) (*.net *.split) |
| 20:19:30 | × | cods quits (~fred@82-65-232-44.subs.proxad.net) (*.net *.split) |
| 20:19:30 | × | eL_Bart0 quits (eL_Bart0@dietunichtguten.org) (*.net *.split) |
| 20:19:30 | × | Igloo quits (~ian@matrix.chaos.earth.li) (*.net *.split) |
| 20:19:30 | × | dcoutts__ quits (~duncan@host86-163-164-210.range86-163.btcentralplus.com) (*.net *.split) |
| 20:19:30 | × | AkechiShiro quits (~licht@user/akechishiro) (*.net *.split) |
| 20:19:30 | × | gnyeki quits (~gnyeki@user/gnyeki) (*.net *.split) |
| 20:19:31 | × | spaced quits (uid572193@user/spaced) (*.net *.split) |
| 20:19:31 | × | stilgart quits (~Christoph@chezlefab.net) (*.net *.split) |
| 20:19:31 | × | GoldsteinQ quits (~goldstein@goldstein.rs) (*.net *.split) |
| 20:19:31 | × | phileasfogg quits (~phileasfo@user/phileasfogg) (*.net *.split) |
| 20:19:31 | × | nshepperd quits (nshepperd@2600:3c03::f03c:92ff:fe28:92c9) (*.net *.split) |
| 20:19:31 | × | Ram-Z quits (~Ram-Z@li1814-254.members.linode.com) (*.net *.split) |
| 20:19:31 | × | spider_ quits (~spider@vps-951ce37a.vps.ovh.ca) (*.net *.split) |
| 20:19:31 | × | DigitalKiwi quits (~kiwi@2604:a880:400:d0::1ca0:e001) (*.net *.split) |
| 20:19:31 | × | ddb quits (~ddb@tilde.club) (*.net *.split) |
| 20:19:31 | × | lieven quits (~mal@ns2.wyrd.be) (*.net *.split) |
| 20:19:31 | × | kaskal quits (~kaskal@2001:4bb8:2dc:7b0e:55ee:692c:e44d:a4b0) (*.net *.split) |
| 20:19:31 | × | meinside quits (uid24933@id-24933.helmsley.irccloud.com) (*.net *.split) |
| 20:19:31 | × | earthy quits (~arthurvl@2a02-a469-f5e2-1-ba27-ebff-fea0-40b0.fixed6.kpn.net) (*.net *.split) |
| 20:19:31 | × | kristjansson quits (sid126207@id-126207.tinside.irccloud.com) (*.net *.split) |
| 20:19:31 | × | APic quits (apic@apic.name) (*.net *.split) |
| 20:19:31 | × | siers quits (~ij@user/ij) (*.net *.split) |
| 20:19:31 | × | hugo quits (znc@verdigris.lysator.liu.se) (*.net *.split) |
| 20:19:31 | × | mimmy quits (~mimmy@2604:a880:cad:d0::3e:1001) (*.net *.split) |
| 20:19:39 | → | Igloo joins (~ian@matrix.chaos.earth.li) |
| 20:19:41 | → | eL_Bart0 joins (eL_Bart0@dietunichtguten.org) |
| 20:19:44 | → | APic joins (apic@apic.name) |
| 20:19:44 | → | cods joins (~fred@82-65-232-44.subs.proxad.net) |
| 20:19:44 | → | meinside joins (uid24933@id-24933.helmsley.irccloud.com) |
| 20:19:47 | → | codedmart joins (codedmart@2600:3c01::f03c:92ff:fefe:8511) |
| 20:19:48 | → | kaskal joins (~kaskal@2001:4bb8:2dc:7b0e:55ee:692c:e44d:a4b0) |
| 20:19:52 | → | dcoutts__ joins (~duncan@host86-163-164-210.range86-163.btcentralplus.com) |
| 20:19:53 | → | asm joins (~alexander@burner.asm89.io) |
| 20:19:53 | → | spider_ joins (~spider@vps-951ce37a.vps.ovh.ca) |
| 20:19:56 | <Profpatsch> | Is there a way to see which HasField instances are defined? |
| 20:19:58 | → | Ranhir joins (~Ranhir@157.97.53.139) |
| 20:19:59 | → | kristjansson joins (sid126207@id-126207.tinside.irccloud.com) |
| 20:19:59 | → | spaced joins (uid572193@user/spaced) |
| 20:20:01 | → | nshepperd joins (nshepperd@2600:3c03::f03c:92ff:fe28:92c9) |
| 20:20:02 | → | lieven joins (~mal@ns2.wyrd.be) |
| 20:20:05 | → | earthy joins (~arthurvl@2a02-a469-f5e2-1-ba27-ebff-fea0-40b0.fixed6.kpn.net) |
| 20:20:05 | → | stilgart joins (~Christoph@chezlefab.net) |
| 20:20:08 | → | ddb joins (~ddb@tilde.club) |
| 20:20:08 | <Profpatsch> | I have a type newtype AtLeast (min :: Natural) num = AtLeast {unAtLeast :: num} |
| 20:20:19 | → | zachel joins (~zachel@user/zachel) |
| 20:20:21 | <Profpatsch> | and `unAtLeast` seems to not have a HasField instance for some reason |
| 20:20:23 | → | markasoftware joins (~quassel@107.161.26.124) |
| 20:20:51 | → | hugo joins (znc@verdigris.lysator.liu.se) |
| 20:20:59 | → | Ram-Z joins (~Ram-Z@li1814-254.members.linode.com) |
| 20:21:01 | → | stefan-_ joins (~cri@42dots.de) |
| 20:21:05 | → | mimmy joins (~mimmy@2604:a880:cad:d0::3e:1001) |
| 20:21:05 | → | siers joins (~ij@user/ij) |
| 20:21:09 | → | phileasfogg joins (~phileasfo@user/phileasfogg) |
| 20:21:10 | → | beteigeuze joins (~Thunderbi@89.187.168.47) |
| 20:21:17 | → | m5zs7k joins (aquares@web10.mydevil.net) |
| 20:21:21 | → | taeaad joins (~taeaad@user/taeaad) |
| 20:21:33 | → | DigitalKiwi joins (~kiwi@2604:a880:400:d0::1ca0:e001) |
| 20:23:01 | × | Guest51 quits (~Guest51@205.175.106.104) (Quit: Client closed) |
| 20:23:42 | → | GoldsteinQ joins (~goldstein@goldstein.rs) |
| 20:24:40 | → | gnyeki joins (~gnyeki@li578-216.members.linode.com) |
| 20:24:41 | × | gnyeki quits (~gnyeki@li578-216.members.linode.com) (Changing host) |
| 20:24:41 | → | gnyeki joins (~gnyeki@user/gnyeki) |
| 20:24:46 | <Profpatsch> | I guess the phantom type make the instance not obvious? |
| 20:25:39 | → | Inoperable joins (~PLAYER_1@fancydata.science) |
| 20:26:34 | <Profpatsch> | Ah, the trick is to remove the destructor and to manuall implement HasField |
| 20:26:41 | <Profpatsch> | instance HasField "unAtLeast" (AtLeast min num) num where |
| 20:26:43 | <Profpatsch> | getField (AtLeast num) = num |
| 20:26:48 | <Profpatsch> | makes sens |
| 20:26:49 | <Profpatsch> | e |
| 20:27:02 | <Profpatsch> | thank you for rubber-ducking, #haskell :P |
| 20:27:14 | → | slac13256 joins (~slack1256@191.125.99.71) |
| 20:29:51 | × | slack1256 quits (~slack1256@186.11.46.162) (Ping timeout: 272 seconds) |
| 20:37:58 | <sm> | 🦆 |
| 20:38:27 | <geekosaur> | about all I could do was quack along, sadly |
| 20:38:56 | → | wonko joins (~wjc@2a0e:1c80:2:0:45:15:19:130) |
| 20:39:08 | <Hecate> | Profpatsch: heya :) |
| 20:48:56 | → | eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) |
| 20:49:08 | × | mmhat quits (~mmh@p200300f1c7307610ee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 276 seconds) |
| 20:53:55 | × | eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds) |
| 20:54:11 | × | bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection) |
| 20:57:54 | <Profpatsch> | Hecate: :) |
| 20:59:35 | → | danza joins (~francesco@151.82.219.40) |
| 21:00:39 | <[exa]> | Megaparsec question: I'm parsing a stream of tokens that can be reconstructed into a line for pretty error printing via TraversableStream |
| 21:00:52 | <[exa]> | ... how do I tell it the error position in a line? |
| 21:01:31 | × | MajorBiscuit quits (~MajorBisc@mob-109-118-119-253.net.vodafone.it) (Ping timeout: 272 seconds) |
| 21:02:00 | <[exa]> | in `reachOffset` I can only report 1] the line contents 2] a new PosState, which can't be "rewinded" to the error position because that could break potential next attempts for getting the contents of the line (I'd be missing the beginning) |
| 21:02:11 | → | mmhat joins (~mmh@2003:f1:c730:762d:ee08:6bff:fe09:5315) |
| 21:03:37 | × | perrierjouet quits (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Ping timeout: 260 seconds) |
| 21:06:41 | → | axeman joins (~quassel@2a02:8109:a380:78:967e:8a87:718a:1361) |
| 21:06:43 | <[exa]> | (as in, the only way that displays to me right is that i keep the pstateOffset at the beginning of the line (to be able to reconstruct it) but move the sourcePos to a column that is not at that offset (possibly breaking sourcePos information for other stuff at that line) |
| 21:07:43 | slac13256 | is now known as slack1256 |
| 21:07:52 | × | stackdroid18 quits (14094@user/stackdroid) (Quit: hasta la vista... tchau!) |
| 21:11:01 | × | mixfix41 quits (~sdenynine@user/mixfix41) (Ping timeout: 272 seconds) |
| 21:11:32 | × | yahb2 quits (~yahb2@2a01:4f8:c0c:5c7b::2) (Remote host closed the connection) |
| 21:11:44 | → | yahb2 joins (~yahb2@2a01:4f8:c0c:5c7b::2) |
| 21:15:34 | × | yahb2 quits (~yahb2@2a01:4f8:c0c:5c7b::2) (Remote host closed the connection) |
| 21:15:46 | → | yahb2 joins (~yahb2@2a01:4f8:c0c:5c7b::2) |
| 21:17:11 | → | perrierjouet joins (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) |
| 21:18:09 | → | mvk joins (~mvk@2607:fea8:5ce3:8500::a80f) |
| 21:18:27 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 21:18:48 | × | mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 21:23:55 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 21:24:34 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 21:24:42 | × | gmg quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 21:30:01 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 272 seconds) |
| 21:30:17 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 258 seconds) |
| 21:33:07 | × | wonko quits (~wjc@2a0e:1c80:2:0:45:15:19:130) (Read error: Connection reset by peer) |
| 21:33:30 | → | wonko joins (~wjc@user/wonko) |
| 21:34:18 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 21:42:09 | → | freeside joins (~mengwong@103.252.202.193) |
| 21:43:26 | → | gqplox joins (~textual@147.188.245.207) |
| 21:48:15 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 21:56:11 | × | zmt00 quits (~zmt00@user/zmt00) (Read error: Connection reset by peer) |
| 21:57:25 | → | zmt00 joins (~zmt00@user/zmt00) |
| 21:57:58 | × | thyriaen quits (~thyriaen@2a01:aea0:dd4:470d:6245:cbff:fe9f:48b1) (Remote host closed the connection) |
| 22:00:37 | × | freeside quits (~mengwong@103.252.202.193) (Ping timeout: 240 seconds) |
| 22:02:27 | × | zmt00 quits (~zmt00@user/zmt00) (Read error: Connection reset by peer) |
| 22:02:55 | <gqplox> | hello again |
| 22:03:21 | <gqplox> | I'm struggling to write my previous function with foldr |
| 22:03:35 | <gqplox> | recursiveConcat :: [[a]] -> [a] |
| 22:03:36 | <gqplox> | recursiveConcat [] = [] |
| 22:03:36 | <gqplox> | recursiveConcat xxs = head xxs ++ recursiveConcat (tail xxs) |
| 22:03:43 | → | zmt00 joins (~zmt00@user/zmt00) |
| 22:04:06 | → | merijn joins (~merijn@c-001-001-011.client.esciencecenter.eduvpn.nl) |
| 22:05:58 | <Rembane> | gqplox: How far do you get before you get stuck? |
| 22:06:57 | <gqplox> | recursiveConcat' xs = foldr (\x xs' -> head xs' ++ tail xs') [] xs |
| 22:06:58 | <gqplox> | i did something like this so far ik its stupid |
| 22:07:08 | × | acidjnk quits (~acidjnk@p54ad5adb.dip0.t-ipconnect.de) (Ping timeout: 276 seconds) |
| 22:07:20 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 22:07:26 | <Hecate> | Hey Haskellers, I need people opinion on this: https://twitter.com/flora_haskell/status/1584665095627362305 |
| 22:09:27 | <Rembane> | gqplox: What happens to x? |
| 22:09:32 | × | axeman quits (~quassel@2a02:8109:a380:78:967e:8a87:718a:1361) (Ping timeout: 272 seconds) |
| 22:10:51 | <monochrom> | gqplox: My course notes http://www.cs.utoronto.ca/~trebla/CSCC24-2022-Summer/05-haskell-fold.html#foldr shows the general pattern. |
| 22:11:42 | <gqplox> | thank you |
| 22:11:54 | <gqplox> | oh oops |
| 22:12:10 | <gqplox> | man Im so tired i think i should try again tomorrow :( |
| 22:12:16 | <gqplox> | not going well |
| 22:13:40 | → | freeside joins (~mengwong@103.252.202.193) |
| 22:13:51 | <monochrom> | Or in words, foldr (\x r -> x is already the head of the list, r is already the result of the recursive call) |
| 22:14:17 | × | chomwitt quits (~chomwitt@2a02:587:dc10:8200:1ac0:4dff:fedb:a3f1) (Ping timeout: 276 seconds) |
| 22:14:19 | <monochrom> | So it's illogical to try to use head or tail yourself on x or r. |
| 22:15:01 | <gqplox> | So for recursiveConcat [[1,2,3], [4,5]] first x would be [1,2,3] and r is []? |
| 22:15:38 | <monochrom> | first x is [1,2,3], "first" r is [4,5]. |
| 22:15:45 | → | ckiorrrrrrrrrrrs joins (~ckiorrrrr@c-76-17-6-165.hsd1.ga.comcast.net) |
| 22:16:27 | <monochrom> | r is [4,5] because the recursive call results in recursiveConcat [[4,5]] = [4,5]. |
| 22:16:40 | <gqplox> | so it would be something like |
| 22:16:40 | <gqplox> | recursiveConcat' xs = foldr (\x r -> x ++ r) [] xs |
| 22:16:49 | <monochrom> | Yes, that simple. |
| 22:18:56 | × | mmhat quits (~mmh@2003:f1:c730:762d:ee08:6bff:fe09:5315) (Quit: WeeChat 3.7.1) |
| 22:19:05 | → | comerijn joins (~merijn@c-001-002-002.client.esciencecenter.eduvpn.nl) |
| 22:20:06 | <Rembane> | darkside.se |
| 22:20:14 | <gqplox> | great thank you :) |
| 22:20:32 | <Rembane> | Sorry mischat |
| 22:21:07 | <monochrom> | Yes I was wondering why you were advertising for darkside :) |
| 22:21:33 | <monochrom> | I mean, let darkside advertise for themselves next time they come into the channel! |
| 22:22:35 | × | merijn quits (~merijn@c-001-001-011.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds) |
| 22:23:34 | × | lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 22:23:44 | <gqplox> | hmm for this function |
| 22:24:05 | <gqplox> | recursiveReplicate :: Int -> a -> [a] |
| 22:24:05 | <gqplox> | recursiveReplicate 0 _ = [] |
| 22:24:05 | <gqplox> | recursiveReplicate n x = x : recursiveReplicate (n - 1) x |
| 22:24:42 | <gqplox> | it's taking an integer right so you can't make express with foldr? |
| 22:25:09 | <monochrom> | It doesn't take an input list either, so foldr is completely irrelevant. |
| 22:25:19 | <gqplox> | yes thats whay i mean |
| 22:25:21 | <gqplox> | ok thank you |
| 22:25:42 | <monochrom> | Instead, you could look into unfoldr. That's when you output a list. |
| 22:25:54 | <gqplox> | wow wtf |
| 22:25:56 | <gqplox> | mind blown |
| 22:26:13 | × | Tuplanolla quits (~Tuplanoll@91-159-69-240.elisa-laajakaista.fi) (Quit: Leaving.) |
| 22:26:30 | <gqplox> | wait is it actually in the prelude? |
| 22:26:33 | <gqplox> | i cant see it |
| 22:26:41 | <monochrom> | It is. |
| 22:27:31 | <gqplox> | oh right i just ran ghci i needed to import Data.List |
| 22:28:01 | <geekosaur> | @index unfoldr |
| 22:28:01 | <lambdabot> | GHC.OldList, Data.List, Data.ByteString.Lazy.Char8, Data.ByteString.Lazy, Data.ByteString.Char8, Data.ByteString, Data.Sequence |
| 22:28:06 | <monochrom> | Oh, it is not in Prelude. Sorry! |
| 22:30:42 | <gqplox> | no worries |
| 22:31:15 | <gqplox> | (!!!) :: [a] -> Int -> a |
| 22:31:15 | <gqplox> | (!!!) (x : xs) 0 = x |
| 22:31:15 | <gqplox> | (!!!) (x : xs) n = (!!!) xs (n - 1) |
| 22:31:15 | <gqplox> | so can this be done with foldr? |
| 22:31:27 | × | gurkenglas quits (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 272 seconds) |
| 22:32:48 | <monochrom> | The base case is not "recfun [] = ???", and the recursive case is not simply "recfun (x:xs) = foo x (recfun xs)". So no. |
| 22:33:13 | <gqplox> | Alright cool |
| 22:33:32 | <gqplox> | well thank you for the help im tired now so ill head off but really thx for the help and the notes ill look into it tomorrow |
| 22:36:33 | → | Axman6 joins (~Axman6@user/axman6) |
| 22:37:14 | polo | is now known as Guest5366 |
| 22:37:57 | × | comerijn quits (~merijn@c-001-002-002.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds) |
| 22:37:57 | × | finsternis quits (~X@23.226.237.192) (Read error: Connection reset by peer) |
| 22:38:33 | × | gqplox quits (~textual@147.188.245.207) (Quit: Textual IRC Client: www.textualapp.com) |
| 22:41:26 | × | darkstardevx quits (~darkstard@50.126.124.156) (Read error: Connection reset by peer) |
| 22:46:56 | → | nate2 joins (~nate@98.45.169.16) |
| 22:50:14 | → | zeenk joins (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) |
| 22:50:41 | → | merijn joins (~merijn@c-001-002-002.client.esciencecenter.eduvpn.nl) |
| 22:51:37 | × | nate2 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds) |
| 22:52:06 | → | talismanick joins (~talismani@76.133.152.122) |
| 22:52:22 | × | zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!) |
| 22:53:50 | <talismanick> | Are there options for <project>.cabal so I can declare an executable which automatically executes as if it had been called with +RTS -N? |
| 22:54:31 | <Axman6> | you can add that to ghc-options |
| 22:54:33 | <Axman6> | IIRC |
| 22:54:34 | <talismanick> | `ghc-options: -threaded -rtsopts -w` didn't seem to enable multithreading - I still had to `cabal run foo -- +RTS -N` |
| 22:54:41 | <Axman6> | check the cabal docs |
| 22:54:46 | <geekosaur> | -with-rtsopts -N |
| 22:54:46 | <Axman6> | and the4 ghc docs |
| 22:54:51 | <talismanick> | I didn't see anything else in the Cabal docs, that I could see... |
| 22:55:05 | <talismanick> | geekosaur: ah, that looks closer to what I'd expect |
| 22:55:15 | <talismanick> | I looked up rtsopts in the cabal docs and didn't see much |
| 22:55:17 | × | merijn quits (~merijn@c-001-002-002.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds) |
| 22:55:42 | <talismanick> | Or, not, what I searched was +RTS |
| 22:55:44 | <geekosaur> | yeh, not's not a caba; option, it's a ghc link option so yo would use it with ghc-options in cabal |
| 22:55:47 | → | darkstardevx joins (~darkstard@50.126.124.156) |
| 22:56:17 | <talismanick> | Nice, it works |
| 22:56:47 | × | darkstardevx quits (~darkstard@50.126.124.156) (Remote host closed the connection) |
| 22:57:12 | → | darkstardevx joins (~darkstard@50.126.124.156) |
| 22:58:06 | → | zebrag joins (~chris@user/zebrag) |
| 23:03:45 | × | mncheck quits (~mncheck@193.224.205.254) (Ping timeout: 272 seconds) |
| 23:06:17 | × | ubert quits (~Thunderbi@91.141.49.34.wireless.dyn.drei.com) (Ping timeout: 272 seconds) |
| 23:06:46 | → | ubert joins (~Thunderbi@178.165.171.4.wireless.dyn.drei.com) |
| 23:09:58 | → | lisbeths joins (uid135845@id-135845.lymington.irccloud.com) |
| 23:10:40 | × | Kaipei quits (~Kaiepi@108.175.84.104) (Ping timeout: 250 seconds) |
| 23:11:07 | × | son0p quits (~ff@181.136.122.143) (Killed (NickServ (GHOST command used by son0p-))) |
| 23:13:20 | → | son0p joins (~ff@181.136.122.143) |
| 23:13:31 | × | michalz quits (~michalz@185.246.207.193) (Remote host closed the connection) |
| 23:18:38 | → | Kaipei joins (~Kaiepi@108.175.84.104) |
| 23:27:47 | × | zeenk quits (~zeenk@2a02:2f04:a105:5d00:c862:f190:2ea:d494) (Quit: Konversation terminated!) |
| 23:38:35 | → | j4cc3b joins (~j4cc3b@pool-74-105-2-138.nwrknj.fios.verizon.net) |
| 23:42:59 | × | danza quits (~francesco@151.82.219.40) (Read error: Connection reset by peer) |
| 23:59:58 | → | danza joins (~francesco@ge-19-125-62.service.infuturo.it) |
All times are in UTC on 2022-10-24.