Logs on 2022-07-16 (liberachat/#haskell)
| 00:12:39 | × | raym quits (~raym@user/raym) (Ping timeout: 272 seconds) |
| 00:13:30 | × | mimmy quits (~mimmy@bras-base-toroon63x9w-grc-22-174-88-20-30.dsl.bell.ca) (Ping timeout: 240 seconds) |
| 00:22:10 | × | mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds) |
| 00:22:47 | → | gleostocha joins (~runic@104-182-236-205.lightspeed.sntcca.sbcglobal.net) |
| 00:24:35 | → | mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475) |
| 00:27:04 | × | adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection) |
| 00:27:27 | → | adanwan joins (~adanwan@gateway/tor-sasl/adanwan) |
| 00:30:26 | → | nate4 joins (~nate@98.45.169.16) |
| 00:36:36 | → | mimmy joins (~mimmy@bras-base-toroon63x9w-grc-22-174-88-20-30.dsl.bell.ca) |
| 00:38:11 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 00:38:27 | <SrPx> | https://stackoverflow.com/questions/73000755/is-there-a-general-algorithm-to-flatten-nested-lhs-cases-in-functional-programmi |
| 00:45:30 | × | segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 240 seconds) |
| 00:46:41 | → | frost joins (~frost@user/frost) |
| 00:48:48 | × | alp quits (~alp@user/alp) (Ping timeout: 276 seconds) |
| 00:50:45 | × | gurkenglas quits (~gurkengla@dslb-002-203-144-112.002.203.pools.vodafone-ip.de) (Ping timeout: 276 seconds) |
| 00:56:59 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 272 seconds) |
| 00:59:04 | × | dextaa quits (~DV@user/dextaa) (Read error: Connection reset by peer) |
| 01:00:40 | × | miv quits (~lkiraTrue@2804:6660:ff12:ef70:29cd:ef54:d2b1:731e) (Quit: Client closed) |
| 01:01:12 | → | dextaa joins (~DV@user/dextaa) |
| 01:02:26 | → | segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
| 01:03:25 | → | zaquest joins (~notzaques@5.130.79.72) |
| 01:04:28 | → | merijn joins (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) |
| 01:06:24 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 01:06:27 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 01:10:40 | × | chomwitt quits (~chomwitt@2a02:587:dc0d:4a00:5774:9752:fb9b:46d2) (Ping timeout: 260 seconds) |
| 01:10:44 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 01:10:50 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds) |
| 01:16:52 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 01:24:00 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 01:25:01 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:181f:21e0:9b42:e654) (Remote host closed the connection) |
| 01:26:21 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:181f:21e0:9b42:e654) |
| 01:33:05 | × | merijn quits (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds) |
| 01:33:39 | × | mimmy quits (~mimmy@bras-base-toroon63x9w-grc-22-174-88-20-30.dsl.bell.ca) (Ping timeout: 276 seconds) |
| 01:34:18 | × | zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!) |
| 01:34:30 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds) |
| 01:36:15 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Read error: Connection reset by peer) |
| 01:36:34 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 01:39:19 | → | hasbae joins (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) |
| 01:40:43 | <hasbae> | I'm reading a Haskell book and it says "any type f (g a) can be written as Compose f g a"... I searched Hackage for Compose and can't find anything that fits that description. Is Compose part of Base, Prelude, something else? |
| 01:51:10 | × | gleostocha quits (~runic@104-182-236-205.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds) |
| 01:59:35 | → | mimmy joins (~mimmy@bras-base-toroon63x9w-grc-22-174-88-20-30.dsl.bell.ca) |
| 02:00:10 | → | lkiraTrue joins (~lkiraTrue@2804:6660:ff12:ef70:29cd:ef54:d2b1:731e) |
| 02:02:10 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 240 seconds) |
| 02:05:23 | × | mimmy quits (~mimmy@bras-base-toroon63x9w-grc-22-174-88-20-30.dsl.bell.ca) (Ping timeout: 272 seconds) |
| 02:06:25 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 02:07:25 | → | lkiraTrue44 joins (~lkiraTrue@2804:6660:ff12:ef70:29cd:ef54:d2b1:731e) |
| 02:08:13 | lkiraTrue44 | is now known as lkira |
| 02:10:06 | × | lkiraTrue quits (~lkiraTrue@2804:6660:ff12:ef70:29cd:ef54:d2b1:731e) (Ping timeout: 252 seconds) |
| 02:10:19 | × | Dutchgriffon quits (~Laurens@70.36.53.134) (Read error: Connection reset by peer) |
| 02:10:34 | lkira | is now known as miv |
| 02:10:37 | → | Dutchgriffon joins (~Laurens@70.36.53.134) |
| 02:19:07 | → | raym joins (~raym@user/raym) |
| 02:19:38 | × | miv quits (~lkiraTrue@2804:6660:ff12:ef70:29cd:ef54:d2b1:731e) (Ping timeout: 252 seconds) |
| 02:23:23 | <[Leary]> | @hoogle Compose |
| 02:23:23 | <lambdabot> | module Data.Functor.Compose |
| 02:23:23 | <lambdabot> | Data.Functor.Compose newtype Compose f g a |
| 02:23:23 | <lambdabot> | Data.Functor.Compose Compose :: f (g a) -> Compose f g a |
| 02:23:38 | <[Leary]> | hasbae: You want to be searching hoogle, not hackage. |
| 02:24:10 | × | td_ quits (~td@muedsl-82-207-238-202.citykom.de) (Ping timeout: 240 seconds) |
| 02:26:06 | → | td_ joins (~td@muedsl-82-207-238-162.citykom.de) |
| 02:27:12 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 02:28:05 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 02:31:06 | → | khumba joins (~khumba@user/khumba) |
| 02:36:51 | <hasbae> | ah ok, thanks! |
| 02:38:48 | → | mimmy joins (~mimmy@bras-base-toroon63x9w-grc-22-174-88-20-30.dsl.bell.ca) |
| 02:41:33 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
| 02:41:33 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 02:41:33 | finn_elija | is now known as FinnElija |
| 02:44:46 | → | yauhsien joins (~yauhsien@61-231-46-226.dynamic-ip.hinet.net) |
| 02:47:59 | × | dartleader1 quits (~dartleade@host-198-90-90-182.public.eastlink.ca) (Quit: WeeChat 3.4.1) |
| 02:48:26 | × | hasbae quits (~hippoid@c-98-220-13-8.hsd1.il.comcast.net) (Quit: WeeChat 3.5) |
| 02:51:10 | × | yauhsien quits (~yauhsien@61-231-46-226.dynamic-ip.hinet.net) (Ping timeout: 240 seconds) |
| 02:53:10 | × | machinedgod quits (~machinedg@d172-219-86-154.abhsia.telus.net) (Ping timeout: 240 seconds) |
| 02:56:10 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 240 seconds) |
| 02:57:50 | × | mimmy quits (~mimmy@bras-base-toroon63x9w-grc-22-174-88-20-30.dsl.bell.ca) (Ping timeout: 240 seconds) |
| 02:59:08 | → | Infinite joins (~Infinite@2405:201:6014:10d3:c50:d0f6:c664:371b) |
| 03:01:09 | → | mimmy joins (~mimmy@bras-base-toroon63x9w-grc-22-174-88-20-30.dsl.bell.ca) |
| 03:09:19 | × | Infinite quits (~Infinite@2405:201:6014:10d3:c50:d0f6:c664:371b) (Quit: Client closed) |
| 03:19:02 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 03:19:32 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 03:21:10 | × | segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 240 seconds) |
| 03:21:52 | → | segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
| 03:24:22 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 272 seconds) |
| 03:27:22 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
| 03:31:31 | × | mvk quits (~mvk@2607:fea8:5ce3:8500::909a) (Ping timeout: 272 seconds) |
| 03:31:48 | × | dsrt^ quits (~dsrt@c-73-207-207-252.hsd1.ga.comcast.net) (Ping timeout: 244 seconds) |
| 03:32:00 | × | pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5) |
| 03:32:35 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds) |
| 03:34:54 | → | merijn joins (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) |
| 03:44:50 | × | segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 240 seconds) |
| 03:57:20 | → | segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
| 03:58:12 | → | zxx7529 joins (~Thunderbi@user/zxx7529) |
| 03:59:33 | × | zxx7529 quits (~Thunderbi@user/zxx7529) (Read error: Connection reset by peer) |
| 04:00:26 | → | zxx7529 joins (~Thunderbi@user/zxx7529) |
| 04:01:30 | × | segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 240 seconds) |
| 04:02:50 | × | merijn quits (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds) |
| 04:03:01 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 04:03:50 | → | gdown joins (~gavin@h69-11-149-231.kndrid.broadband.dynamic.tds.net) |
| 04:04:44 | → | nate4 joins (~nate@98.45.169.16) |
| 04:06:03 | × | alinab quits (sid468903@helmsley.irccloud.com) (Ping timeout: 276 seconds) |
| 04:06:11 | → | alinab joins (sid468903@id-468903.helmsley.irccloud.com) |
| 04:10:10 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds) |
| 04:14:11 | × | pmarg quits (~pmarg@2a01:799:159f:9b00:ccdd:708c:653c:729c) (Remote host closed the connection) |
| 04:15:22 | → | segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
| 04:25:28 | × | zxx7529 quits (~Thunderbi@user/zxx7529) (Read error: Connection reset by peer) |
| 04:25:34 | → | zxx7530 joins (~Thunderbi@user/zxx7529) |
| 04:27:53 | zxx7530 | is now known as zxx7529 |
| 04:32:15 | × | jespada_ quits (~jespada@45.162.228.190) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 04:34:36 | × | zxx7529 quits (~Thunderbi@user/zxx7529) (Read error: Connection reset by peer) |
| 04:35:28 | → | zxx7529 joins (~Thunderbi@user/zxx7529) |
| 04:37:03 | → | nate4 joins (~nate@98.45.169.16) |
| 04:38:57 | × | motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 244 seconds) |
| 04:38:58 | → | yauhsien joins (~yauhsien@61-231-46-226.dynamic-ip.hinet.net) |
| 04:41:50 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds) |
| 04:51:57 | × | yauhsien quits (~yauhsien@61-231-46-226.dynamic-ip.hinet.net) (Ping timeout: 272 seconds) |
| 04:56:30 | × | segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 240 seconds) |
| 04:56:39 | × | mimmy quits (~mimmy@bras-base-toroon63x9w-grc-22-174-88-20-30.dsl.bell.ca) (Quit: WeeChat 3.4.1) |
| 05:07:30 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 05:08:14 | → | Kaiepi joins (~Kaiepi@156.34.47.253) |
| 05:10:27 | → | nate4 joins (~nate@98.45.169.16) |
| 05:17:30 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds) |
| 05:19:36 | → | christiansen joins (~christian@83-95-137-75-dynamic.dk.customer.tdc.net) |
| 05:22:38 | → | codaraxis___ joins (~codaraxis@user/codaraxis) |
| 05:26:47 | × | codaraxis__ quits (~codaraxis@user/codaraxis) (Ping timeout: 272 seconds) |
| 05:35:34 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 05:35:44 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 05:41:52 | × | gdown quits (~gavin@h69-11-149-231.kndrid.broadband.dynamic.tds.net) (Remote host closed the connection) |
| 05:45:22 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 05:55:17 | → | mima joins (~mmh@aftr-62-216-210-241.dynamic.mnet-online.de) |
| 06:00:59 | × | zxx7529 quits (~Thunderbi@user/zxx7529) (Read error: Connection reset by peer) |
| 06:01:43 | → | zxx7529 joins (~Thunderbi@user/zxx7529) |
| 06:05:01 | <Axman6> | Anyone know of any libraris which let you unroll loops using type level shenanigans? like forM @16 $ \n -> do ... would end up in 16 copies of the function applied to 0-15 to avoid recursive code |
| 06:05:17 | → | merijn joins (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) |
| 06:05:23 | <Axman6> | libraries* |
| 06:05:54 | → | kenran joins (~kenran@200116b82babe900a379f0be3b018f05.dip.versatel-1u1.de) |
| 06:05:55 | × | kenran quits (~kenran@200116b82babe900a379f0be3b018f05.dip.versatel-1u1.de) (Client Quit) |
| 06:07:46 | × | zxx7529 quits (~Thunderbi@user/zxx7529) (Read error: Connection reset by peer) |
| 06:08:49 | → | zxx7529 joins (~Thunderbi@user/zxx7529) |
| 06:09:30 | × | azimut_ quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 268 seconds) |
| 06:10:54 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 06:11:57 | × | khumba quits (~khumba@user/khumba) () |
| 06:13:36 | → | motherfsck joins (~motherfsc@user/motherfsck) |
| 06:13:55 | → | segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
| 06:14:25 | <mon_aaraj> | hey! i've been trying to get ghcup working on android termux and i am getting a very bizzare error: something like ``"_eghcup config set downloader Curl" failed!"``, has anyone got it working for android in termux by now? |
| 06:16:36 | → | mmhat joins (~mmh@p200300f1c70559b5ee086bfffe095315.dip0.t-ipconnect.de) |
| 06:18:09 | × | segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 244 seconds) |
| 06:19:48 | <tomsmeding> | mon_aaraj: I've tried it in the past and ghc itself didn't build, so not sure you'll have much luck |
| 06:20:10 | <tomsmeding> | Ghc supports arm, it's just that termux misses some libraries, apparently |
| 06:21:02 | <tomsmeding> | It's probably possible (I recall someone loaded a whole debian environment in proot in termux, and ran ghc in there; apparently that works, but I didn't try it :p) |
| 06:23:51 | × | zxx7529 quits (~Thunderbi@user/zxx7529) (Read error: Connection reset by peer) |
| 06:24:43 | → | zxx7529 joins (~Thunderbi@user/zxx7529) |
| 06:25:50 | → | acidjnk joins (~acidjnk@p200300d6e705867410ff6a9084641920.dip0.t-ipconnect.de) |
| 06:28:07 | <mon_aaraj> | yep, i know proot is possible, but i can't be annoyed to do that, as it's a bit painful |
| 06:28:17 | <mon_aaraj> | it would be nice to know which libraries termux is missing though |
| 06:30:23 | <mon_aaraj> | the error i sent doesn't mention much, because it seems to suggest that curl failed which is a very weird issue |
| 06:31:10 | → | alexhandy2 joins (~trace@user/trace) |
| 06:33:57 | × | merijn quits (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) (Ping timeout: 276 seconds) |
| 06:34:10 | × | alexhandy quits (~trace@user/trace) (Ping timeout: 244 seconds) |
| 06:34:19 | → | alexhandy joins (~trace@user/trace) |
| 06:37:50 | × | alexhandy2 quits (~trace@user/trace) (Ping timeout: 240 seconds) |
| 06:39:51 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 06:44:29 | × | zxx7529 quits (~Thunderbi@user/zxx7529) (Read error: Connection reset by peer) |
| 06:45:25 | → | zxx7529 joins (~Thunderbi@user/zxx7529) |
| 06:48:57 | → | alp joins (~alp@user/alp) |
| 06:50:08 | → | yauhsien joins (~yauhsien@61-231-46-226.dynamic-ip.hinet.net) |
| 06:53:49 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 06:55:45 | × | zxx7529 quits (~Thunderbi@user/zxx7529) (Read error: Connection reset by peer) |
| 06:56:43 | → | zxx7529 joins (~Thunderbi@user/zxx7529) |
| 06:58:20 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 07:02:45 | → | segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
| 07:03:51 | × | alp quits (~alp@user/alp) (Ping timeout: 276 seconds) |
| 07:04:10 | × | yauhsien quits (~yauhsien@61-231-46-226.dynamic-ip.hinet.net) (Ping timeout: 240 seconds) |
| 07:04:35 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 07:06:50 | × | segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 240 seconds) |
| 07:08:59 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 07:13:34 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 07:16:45 | <DigitalKiwi> | i have ghc/ghci on my phone |
| 07:16:57 | <DigitalKiwi> | https://github.com/t184256/nix-on-droid |
| 07:19:05 | × | zxx7529 quits (~Thunderbi@user/zxx7529) (Read error: Connection reset by peer) |
| 07:19:10 | × | acidjnk quits (~acidjnk@p200300d6e705867410ff6a9084641920.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
| 07:19:38 | → | coot joins (~coot@213.134.190.95) |
| 07:20:03 | → | zxx7529 joins (~Thunderbi@user/zxx7529) |
| 07:22:08 | × | zxx7529 quits (~Thunderbi@user/zxx7529) (Read error: Connection reset by peer) |
| 07:22:20 | → | zxx7530 joins (~Thunderbi@user/zxx7529) |
| 07:24:29 | <Maxdamantus> | I run a normal Debian installation alongside Android, so ghc works as usual there, but I wouldn't recommend my setup to anyone who isn't able to do it themselves. |
| 07:24:39 | zxx7530 | is now known as zxx7529 |
| 07:25:46 | <Maxdamantus> | (without proot or disabling SELinux, though the Debian processes run in an unconfined security context) |
| 07:32:53 | → | segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
| 07:33:11 | → | _ht joins (~quassel@231-169-21-31.ftth.glasoperator.nl) |
| 07:35:59 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
| 07:36:50 | × | segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 240 seconds) |
| 07:39:22 | × | adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection) |
| 07:39:41 | → | adanwan joins (~adanwan@gateway/tor-sasl/adanwan) |
| 07:43:29 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 07:48:11 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds) |
| 07:55:18 | → | gmg joins (~user@user/gehmehgeh) |
| 07:56:58 | → | chomwitt joins (~chomwitt@2a02:587:dc0d:4a00:4077:c916:581a:b291) |
| 07:58:14 | → | jgeerds joins (~jgeerds@55d437cf.access.ecotel.net) |
| 08:01:53 | → | merijn joins (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) |
| 08:04:18 | × | xff0x quits (~xff0x@2405:6580:b080:900:df60:d63b:15e3:9245) (Ping timeout: 276 seconds) |
| 08:05:41 | → | nate4 joins (~nate@98.45.169.16) |
| 08:08:50 | × | motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 240 seconds) |
| 08:08:58 | × | phma quits (phma@2001:5b0:211f:fc78:8858:65c6:c56c:d940) (Read error: Connection reset by peer) |
| 08:09:31 | → | phma joins (~phma@host-67-44-208-200.hnremote.net) |
| 08:09:43 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:181f:21e0:9b42:e654) (Remote host closed the connection) |
| 08:10:13 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 08:10:54 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 264 seconds) |
| 08:11:39 | → | acidjnk joins (~acidjnk@p200300d6e705867410ff6a9084641920.dip0.t-ipconnect.de) |
| 08:17:50 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 08:17:58 | × | coot quits (~coot@213.134.190.95) (Quit: coot) |
| 08:20:30 | × | acidjnk quits (~acidjnk@p200300d6e705867410ff6a9084641920.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
| 08:23:09 | → | segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
| 08:23:50 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 08:27:55 | × | segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 272 seconds) |
| 08:34:42 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 08:35:47 | → | xff0x joins (~xff0x@2405:6580:b080:900:df60:d63b:15e3:9245) |
| 08:36:47 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:181f:21e0:9b42:e654) |
| 08:37:48 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 08:38:05 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 08:40:21 | → | gurkenglas joins (~gurkengla@dslb-002-203-144-112.002.203.pools.vodafone-ip.de) |
| 08:41:16 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:181f:21e0:9b42:e654) (Ping timeout: 244 seconds) |
| 08:46:02 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 08:48:08 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 08:48:17 | <tomsmeding> | mon_aaraj: in my experience the worst problem with getting ghc to work in termux is simply that you don't have any debugging facilities |
| 08:48:25 | <tomsmeding> | ldd is not a thing, strace is not a thing |
| 08:57:09 | <Maxdamantus> | strace and ldd seem to work for me in termux, though the ldd (apparently from the "binutils" package) seems to be a wrapper around `objdump`. |
| 08:58:11 | <tomsmeding> | `ldd -h` -- `objdump: '-h': No such file` |
| 08:58:51 | <tomsmeding> | Oh it's just objdump -p |
| 08:59:01 | → | NaturalNumber joins (~monadam@137.229.82.64) |
| 08:59:50 | → | yauhsien joins (~yauhsien@61-231-46-226.dynamic-ip.hinet.net) |
| 09:00:41 | × | merijn quits (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) (Ping timeout: 255 seconds) |
| 09:01:24 | <tomsmeding> | ghcup itself doesn't even start here, it's missing libraries too |
| 09:04:15 | <Maxdamantus> | the termux binaries seem to point to the Android linker, `/system/bin/linker64`, which seems to work like the normal ld-linux linker (including `--list`) |
| 09:05:32 | <Maxdamantus> | but yeah, I wouldn't normally expect software to work OOTB in termux, unless it was specifically designed/patched to work in termux. |
| 09:05:41 | → | NaturalNumber123 joins (~monadam@137.229.82.64) |
| 09:07:11 | <Maxdamantus> | partly because it doesn't use the standard filesystem layout (everything has to be within `/data/data/com.termux`), and I think they had to patch some things to avoid system calls that are disallowed by seccomp. |
| 09:07:43 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 268 seconds) |
| 09:07:55 | × | Katarushisu quits (~Katarushi@cpc147334-finc20-2-0-cust27.4-2.cable.virginm.net) (Quit: The Lounge - https://thelounge.chat) |
| 09:07:58 | × | NaturalNumber quits (~monadam@137.229.82.64) (Ping timeout: 240 seconds) |
| 09:08:13 | <tomsmeding> | Maxdamantus: ooh, TIL about linker64 --list, however... |
| 09:08:19 | <tomsmeding> | /system/bin/linker64 --list $PWD/bin/ghcup |
| 09:08:19 | <tomsmeding> | error: "/data/data/com.termux/files/home/bin/ghcup" has unexpected e_type: 2 |
| 09:09:03 | <Maxdamantus> | Haven't used ghcup, but I would guess it's a shell script, so not something the linker handles directly. |
| 09:09:21 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 09:10:27 | → | segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
| 09:11:10 | <tomsmeding> | Maxdamantus: in ancient times it was a shell script, nowadays it's a haskell executable |
| 09:11:41 | <Maxdamantus> | Ah, okay. |
| 09:11:56 | → | Tuplanolla joins (~Tuplanoll@91-159-69-97.elisa-laajakaista.fi) |
| 09:12:13 | <JensPetersen[m]> | Is there a simple cli prompt input library, which clear stdin before taking input? |
| 09:14:07 | <tomsmeding> | Ah I remember, it was libnuma that I couldn't find |
| 09:14:09 | Maxdamantus | recalls the horrors of `npm adduser` ignoring input from stdin. |
| 09:15:18 | × | yauhsien quits (~yauhsien@61-231-46-226.dynamic-ip.hinet.net) (Ping timeout: 240 seconds) |
| 09:15:25 | × | segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 272 seconds) |
| 09:16:25 | <JensPetersen[m]> | Maxdamantus: (I mostly use a chroot, but) surprising lot of software packaged for termux including ghc (maybe not the version you want...?) |
| 09:17:31 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 09:17:56 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 09:18:10 | → | NaturalNumber joins (~monadam@137.229.82.64) |
| 09:18:47 | <JensPetersen[m]> | DigitalKiwi: sick ;o) |
| 09:20:19 | <Maxdamantus> | JensPetersen[m]: dunno, tomsmeding was talking about using ghcup. Personally I run a normal Debian installation outside of the normal Android environment (requiring root), which avoids most of the Android restrictions. |
| 09:20:20 | × | Vajb quits (~Vajb@n1zigc3rgo9mpde2w-1.v6.elisa-mobile.fi) (Read error: Connection reset by peer) |
| 09:20:35 | <Maxdamantus> | So I mostly use termux as a terminal emulator and a way to ssh into that. |
| 09:20:39 | × | NaturalNumber123 quits (~monadam@137.229.82.64) (Ping timeout: 268 seconds) |
| 09:20:43 | <JensPetersen[m]> | Maxdamantus: okay sorry, just jumped into the conversion |
| 09:20:50 | <JensPetersen[m]> | conversation |
| 09:20:53 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3ad-40.dhcp.inet.fi) |
| 09:21:20 | → | nasosev joins (~nasosev@193-116-244-197.tpgi.com.au) |
| 09:23:02 | <nasosev> | hello, i am getting the following error trying to build an empty project with either cabal or stack using ghc 9.2.2, reproduced on two different mac computers on different OS : ld64.lld: error: unknown argument '--gc-sections' |
| 09:23:03 | <nasosev> | clang: error: linker command failed with exit code 1 (use -v to see invocation) |
| 09:23:03 | <nasosev> | `gcc' failed in phase `Linker'. (Exit code: 1) |
| 09:24:19 | <nasosev> | i couldn't find any help for this by web search. any ideas? |
| 09:24:45 | × | shriekingnoise quits (~shrieking@201.212.175.181) (Quit: Quit) |
| 09:25:50 | <JensPetersen[m]> | nasosev: I am not a mac user, so probably others can better help: you could try 9.2.3 instead perhaps? |
| 09:26:28 | <JensPetersen[m]> | But might be some toolchain issue? |
| 09:27:40 | <nasosev> | i get the same error with 9.2.3 |
| 09:28:20 | <tomsmeding> | JensPetersen[m]: I swear that ghc package wasn't there when I checked a while ago |
| 09:29:25 | <JensPetersen[m]> | tomsmeding: might be newish? - I just happened to notice it the other day :-) Pretty cool that is available anyway |
| 09:29:27 | <c_wraith> | JensPetersen[m]: I think I heard something recently about linkers on Mac OS... |
| 09:29:33 | → | coot joins (~coot@213.134.190.95) |
| 09:30:28 | <JensPetersen[m]> | tomsmeding: seems cabal-install there too 👍️ |
| 09:30:50 | × | mmhat quits (~mmh@p200300f1c70559b5ee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
| 09:30:58 | × | alexhandy quits (~trace@user/trace) (Read error: Connection reset by peer) |
| 09:31:12 | <nasosev> | this seems related, although both my computers are Intel CPU not M1 : https://gitlab.haskell.org/ghc/ghc/-/issues/21570 |
| 09:31:23 | → | alexhandy joins (~trace@user/trace) |
| 09:32:40 | <tomsmeding> | c_wraith: think that was this, the fix for which is to use ld64 apparently https://ircbrowse.tomsmeding.com/day/lchaskell/2022/07/11?id=618823#trid618823 |
| 09:32:45 | <tomsmeding> | Hence not a fix here |
| 09:33:01 | <tomsmeding> | nasosev: how old is your macos |
| 09:34:16 | <nasosev> | one on 12.4 the other 11.6.7 |
| 09:34:57 | <c_wraith> | nasosev: that ticket looks like exactly what you found. I don't think the architecture matters. I think the biggest factor is having installed a second linker via something like homebrew |
| 09:35:09 | <nasosev> | at the end of that thread there is a suggestion workaround: |
| 09:35:10 | <nasosev> | "As a temporary workaround, one can pass --disable-ld-override to the binary distribution configure script. This will disable the linker discovery logic and use the system's default linker." |
| 09:35:10 | <nasosev> | not sure what to pass that flag to? |
| 09:35:36 | <nasosev> | i think both computers have llvm installed by homebrew, and also agda |
| 09:35:56 | <nasosev> | could that be the cause? |
| 09:36:26 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 09:36:39 | <c_wraith> | well. the cause is a bug in how GHC calls the linker on mac os. But it's likely getting confused by that extra llvm install, yes |
| 09:37:20 | <nasosev> | ok, removing it now.. |
| 09:39:11 | <c_wraith> | it looks like the configure they're talking about is during ghc installation |
| 09:39:14 | <nasosev> | Ok, now I have a different error: |
| 09:39:14 | <nasosev> | clang: error: invalid linker name in argument '-fuse-ld=lld' |
| 09:39:15 | <nasosev> | `gcc' failed in phase `Linker'. (Exit code: 1) |
| 09:39:34 | <c_wraith> | yeah, I think you'll need to reinstall ghc now |
| 09:39:59 | <nasosev> | ok thanks I'll try it |
| 09:40:10 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 09:41:06 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 09:44:18 | × | gurkenglas quits (~gurkengla@dslb-002-203-144-112.002.203.pools.vodafone-ip.de) (Ping timeout: 244 seconds) |
| 09:44:23 | → | mmhat joins (~mmh@p200300f1c70559fbee086bfffe095315.dip0.t-ipconnect.de) |
| 09:45:34 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 09:52:59 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 09:54:23 | × | NaturalNumber quits (~monadam@137.229.82.64) (Remote host closed the connection) |
| 09:54:42 | × | finsternis quits (~X@23.226.237.192) (Read error: Connection reset by peer) |
| 09:55:16 | → | finsternis joins (~X@23.226.237.192) |
| 09:57:20 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds) |
| 09:57:52 | → | segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
| 10:01:35 | <nasosev> | working! thanks everyone |
| 10:01:43 | <c_wraith> | glad to hear it |
| 10:01:51 | → | merijn joins (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) |
| 10:02:35 | × | segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 268 seconds) |
| 10:12:12 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 10:12:22 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 10:19:20 | × | coot quits (~coot@213.134.190.95) (Quit: coot) |
| 10:21:31 | → | yauhsien joins (~yauhsien@61-231-46-226.dynamic-ip.hinet.net) |
| 10:26:26 | × | yauhsien quits (~yauhsien@61-231-46-226.dynamic-ip.hinet.net) (Read error: Connection reset by peer) |
| 10:27:42 | → | yauhsien joins (~yauhsien@61-231-46-226.dynamic-ip.hinet.net) |
| 10:30:30 | → | alternateved joins (~user@staticline-31-183-144-54.toya.net.pl) |
| 10:31:17 | × | nasosev quits (~nasosev@193-116-244-197.tpgi.com.au) (Quit: Client closed) |
| 10:31:51 | × | merijn quits (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) (Ping timeout: 276 seconds) |
| 10:36:30 | × | yauhsien quits (~yauhsien@61-231-46-226.dynamic-ip.hinet.net) (Ping timeout: 260 seconds) |
| 10:41:12 | × | zxx7529 quits (~Thunderbi@user/zxx7529) (Read error: Connection reset by peer) |
| 10:41:49 | → | zxx7529 joins (~Thunderbi@user/zxx7529) |
| 10:46:38 | → | segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
| 10:50:04 | × | mima quits (~mmh@aftr-62-216-210-241.dynamic.mnet-online.de) (Remote host closed the connection) |
| 10:50:38 | × | segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 240 seconds) |
| 10:52:39 | × | mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 276 seconds) |
| 10:54:12 | → | aveltras[m] joins (~aveltrasm@2001:470:69fc:105::3ef9) |
| 10:57:21 | → | mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475) |
| 11:00:03 | × | adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection) |
| 11:00:03 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 11:00:22 | → | adanwan joins (~adanwan@gateway/tor-sasl/adanwan) |
| 11:00:52 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 11:05:26 | → | MajorBiscuit joins (~MajorBisc@2a02-a461-129d-1-6d4c-38a4-18b7-4b48.fixed6.kpn.net) |
| 11:12:50 | × | christiansen quits (~christian@83-95-137-75-dynamic.dk.customer.tdc.net) (Ping timeout: 240 seconds) |
| 11:13:18 | × | cosimone quits (~user@93-44-186-171.ip98.fastwebnet.it) (Remote host closed the connection) |
| 11:14:35 | → | dsp_ joins (~dsp@cpc152107-haye27-2-0-cust227.17-4.cable.virginm.net) |
| 11:14:51 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 11:18:00 | ← | dsp_ parts (~dsp@cpc152107-haye27-2-0-cust227.17-4.cable.virginm.net) () |
| 11:18:10 | → | dsp joins (~dsp@cpc152107-haye27-2-0-cust227.17-4.cable.virginm.net) |
| 11:18:31 | × | adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection) |
| 11:18:45 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 11:18:46 | → | adanwan joins (~adanwan@gateway/tor-sasl/adanwan) |
| 11:19:06 | × | dsp quits (~dsp@cpc152107-haye27-2-0-cust227.17-4.cable.virginm.net) (Client Quit) |
| 11:19:25 | → | dsp joins (~dsp@cpc152107-haye27-2-0-cust227.17-4.cable.virginm.net) |
| 11:19:43 | × | dsp quits (~dsp@cpc152107-haye27-2-0-cust227.17-4.cable.virginm.net) (Client Quit) |
| 11:20:04 | × | nek0 quits (~nek0@2a01:4f8:222:2b41::12) (Quit: The Lounge - https://thelounge.chat) |
| 11:20:39 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 11:21:57 | → | cosimone joins (~user@93-44-186-171.ip98.fastwebnet.it) |
| 11:26:36 | → | nek0 joins (~nek0@2a01:4f8:222:2b41::12) |
| 11:27:14 | → | ph88 joins (~ph88@2a02:8109:9e00:71d0::347a) |
| 11:27:21 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 11:28:30 | × | alexhandy quits (~trace@user/trace) (Read error: Connection reset by peer) |
| 11:28:36 | → | merijn joins (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) |
| 11:29:45 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3ad-40.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 11:31:50 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds) |
| 11:33:51 | → | nasosev joins (~nasosev@193-116-244-197.tpgi.com.au) |
| 11:34:41 | <nasosev> | are the GHC2021 extensions (https://gitlab.haskell.org/ghc/ghc/-/issues/19234) enabled by efault in ghc 9.2? I started a new cabal project with 9.2.2 and I have a warning about "'qualified' in postpositive position" even though ImportQualifiedPost is on of the GHC2021 extensions |
| 11:35:18 | → | segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
| 11:36:13 | <geekosaur> | they should be enabled by default, but check for default-language in the cabal file |
| 11:36:28 | <geekosaur> | if it's Haskell2010 then they will be disabled |
| 11:37:23 | <nasosev> | yes it's Haskell2010. what should it be? |
| 11:38:01 | <geekosaur> | GHC2021 |
| 11:38:26 | <geekosaur> | you may need to check your cabal version, I think you need at least 3.6 for that to be recognized |
| 11:38:32 | → | Vajb joins (~Vajb@n1zigc3rgo9mpde2w-1.v6.elisa-mobile.fi) |
| 11:39:30 | × | segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 240 seconds) |
| 11:39:50 | <nasosev> | thank you! |
| 11:43:27 | × | nek0 quits (~nek0@2a01:4f8:222:2b41::12) (Quit: The Lounge - https://thelounge.chat) |
| 11:44:00 | × | mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 276 seconds) |
| 11:45:41 | → | mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475) |
| 11:47:30 | × | MajorBiscuit quits (~MajorBisc@2a02-a461-129d-1-6d4c-38a4-18b7-4b48.fixed6.kpn.net) (Ping timeout: 240 seconds) |
| 11:51:30 | × | nasosev quits (~nasosev@193-116-244-197.tpgi.com.au) (Quit: Client closed) |
| 11:52:44 | → | pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
| 11:53:50 | × | mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds) |
| 11:56:02 | × | frost quits (~frost@user/frost) (Ping timeout: 252 seconds) |
| 11:57:03 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 11:59:28 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 12:00:46 | → | christiansen joins (~christian@83-95-137-75-dynamic.dk.customer.tdc.net) |
| 12:01:07 | → | dsrt^ joins (~dsrt@c-73-207-207-252.hsd1.ga.comcast.net) |
| 12:01:21 | × | merijn quits (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds) |
| 12:06:02 | → | MajorBiscuit joins (~MajorBisc@86-88-79-148.fixed.kpn.net) |
| 12:06:26 | → | nate4 joins (~nate@98.45.169.16) |
| 12:07:00 | → | boxscape_ joins (~boxscape_@46.183.103.17) |
| 12:07:30 | → | Major_Biscuit joins (~MajorBisc@2a02-a461-129d-1-6d4c-38a4-18b7-4b48.fixed6.kpn.net) |
| 12:08:26 | <boxscape_> | why can I write `:set -XNoGADTs` followed by `data a :~: b where Refl :: a :~: a` in ghci without it throwing an error? |
| 12:08:35 | <boxscape_> | (ghc 9.2.3) |
| 12:09:20 | <boxscape_> | GADTSyntax is on by default but that doesn't seem like it should be enough? |
| 12:09:57 | <boxscape_> | oh or is it only the pattern matching for which you need the extension? |
| 12:10:08 | <boxscape_> | I suppose that's it |
| 12:11:10 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds) |
| 12:12:20 | × | GoldsteinQ quits (~goldstein@goldstein.rs) (Quit: ZNC 1.8.2 - https://znc.in) |
| 12:14:40 | × | gmg quits (~user@user/gehmehgeh) (Remote host closed the connection) |
| 12:15:32 | → | gmg joins (~user@user/gehmehgeh) |
| 12:20:56 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 12:22:25 | <tomsmeding> | It's the pattern matching where you can really make use of gadt-ness, the production of new evidence from a value-level match |
| 12:23:37 | → | segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
| 12:23:42 | <boxscape_> | right, that's true |
| 12:25:12 | <geekosaur> | boxscape_, :seti ? |
| 12:25:30 | <boxscape_> | geekosaur shouldn't matter, since I'm not loading a file |
| 12:25:34 | <boxscape_> | :set affects both |
| 12:25:38 | <boxscape_> | ghci and loaded files |
| 12:27:50 | × | segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 240 seconds) |
| 12:30:39 | → | zer0bitz joins (~zer0bitz@2001:2003:f748:2000:816c:2bf2:33a9:87c2) |
| 12:31:12 | × | MajorBiscuit quits (~MajorBisc@86-88-79-148.fixed.kpn.net) (Ping timeout: 244 seconds) |
| 12:39:24 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:181f:21e0:9b42:e654) |
| 12:42:27 | → | GoldsteinQ joins (~goldstein@goldstein.rs) |
| 12:42:39 | → | Guest3 joins (~Guest3@183.82.24.82) |
| 12:43:32 | × | Guest3 quits (~Guest3@183.82.24.82) (Client Quit) |
| 12:44:14 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:181f:21e0:9b42:e654) (Ping timeout: 272 seconds) |
| 12:45:08 | jackhill | is now known as KM4MBG |
| 12:45:46 | KM4MBG | is now known as jackhill |
| 12:46:30 | → | Haskelytic joins (~Haskelyti@118.179.211.17) |
| 12:50:00 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 12:52:54 | × | boxscape_ quits (~boxscape_@46.183.103.17) (Ping timeout: 244 seconds) |
| 12:53:30 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 12:56:54 | × | arahael quits (~arahael@114.198.31.146) (Ping timeout: 272 seconds) |
| 13:01:14 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
| 13:03:17 | → | merijn joins (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) |
| 13:03:44 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 13:06:22 | → | acidjnk joins (~acidjnk@p200300d6e705867410ff6a9084641920.dip0.t-ipconnect.de) |
| 13:07:25 | × | kaskal quits (~kaskal@089144220061.atnat0029.highway.webapn.at) (Quit: ZNC - https://znc.in) |
| 13:11:19 | → | arahael joins (~arahael@121-44-2-189.tpgi.com.au) |
| 13:13:00 | → | kaskal joins (~kaskal@089144220061.atnat0029.highway.webapn.at) |
| 13:13:58 | × | kaskal quits (~kaskal@089144220061.atnat0029.highway.webapn.at) (Remote host closed the connection) |
| 13:14:38 | → | segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
| 13:17:21 | × | Major_Biscuit quits (~MajorBisc@2a02-a461-129d-1-6d4c-38a4-18b7-4b48.fixed6.kpn.net) (Ping timeout: 272 seconds) |
| 13:19:04 | → | Major_Biscuit joins (~MajorBisc@2a02-a461-129d-1-6d4c-38a4-18b7-4b48.fixed6.kpn.net) |
| 13:19:15 | × | segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 260 seconds) |
| 13:21:29 | → | kaskal joins (~kaskal@089144220061.atnat0029.highway.webapn.at) |
| 13:23:15 | × | img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
| 13:23:15 | → | alp joins (~alp@user/alp) |
| 13:24:57 | → | alp_ joins (~alp@user/alp) |
| 13:26:07 | → | img joins (~img@user/img) |
| 13:26:23 | × | alp_ quits (~alp@user/alp) (Remote host closed the connection) |
| 13:26:42 | → | alp_ joins (~alp@user/alp) |
| 13:28:27 | → | alp__ joins (~alp@user/alp) |
| 13:28:45 | × | alp quits (~alp@user/alp) (Ping timeout: 272 seconds) |
| 13:29:10 | × | Major_Biscuit quits (~MajorBisc@2a02-a461-129d-1-6d4c-38a4-18b7-4b48.fixed6.kpn.net) (Ping timeout: 240 seconds) |
| 13:29:43 | × | kaskal quits (~kaskal@089144220061.atnat0029.highway.webapn.at) (Quit: ZNC - https://znc.in) |
| 13:29:52 | × | alp__ quits (~alp@user/alp) (Remote host closed the connection) |
| 13:30:00 | × | img quits (~img@user/img) (Client Quit) |
| 13:30:11 | → | alp__ joins (~alp@user/alp) |
| 13:30:32 | → | kaskal joins (~kaskal@089144220061.atnat0029.highway.webapn.at) |
| 13:31:30 | × | merijn quits (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds) |
| 13:32:31 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 13:32:33 | × | alp_ quits (~alp@user/alp) (Ping timeout: 276 seconds) |
| 13:32:53 | → | img joins (~img@user/img) |
| 13:33:01 | × | tabemann quits (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (Quit: Leaving) |
| 13:33:01 | → | alp joins (~alp@user/alp) |
| 13:34:05 | <Haskelytic> | the applicative for `(->) a` is borking my brain still |
| 13:34:34 | <geekosaur> | applicative and monad for that break everyone's brains 🙂 |
| 13:35:21 | <Haskelytic> | do u eventually just reach enlightenment |
| 13:35:28 | <Haskelytic> | or learn to accept the bork |
| 13:35:36 | <geekosaur> | mostly the latter, I think |
| 13:35:43 | <Haskelytic> | XD |
| 13:35:47 | <geekosaur> | there are some patterns you learn to recognize |
| 13:35:48 | × | alp__ quits (~alp@user/alp) (Ping timeout: 276 seconds) |
| 13:35:51 | <Haskelytic> | i was hoping the former |
| 13:36:06 | <geekosaur> | but you still tend to get tripped up by anything not fitting those patterns |
| 13:36:18 | <Haskelytic> | hmm I suppose you're right there |
| 13:36:27 | <Haskelytic> | the brain is a weird thing :) |
| 13:36:39 | <tomsmeding> | The brain works very well with patterns |
| 13:36:56 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 13:37:11 | <tomsmeding> | Which is also why learning by example is so effective |
| 13:37:22 | <Haskelytic> | is that why haskell uses pattern matching :) |
| 13:37:47 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 13:38:58 | <tomsmeding> | Your brain pattern matches the pattern matches |
| 13:40:21 | <tomsmeding> | More seriously: like fst/snd are the eliminators of product types, pattern matching is (a generalisation of) the eliminator of sum types |
| 13:40:48 | × | zxx7529 quits (~Thunderbi@user/zxx7529) (Quit: zxx7529) |
| 13:40:50 | <tomsmeding> | So the effectiveness of pattern matching in haskell comes for a large part from the effectiveness of sum types in functional programming |
| 13:41:24 | × | img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
| 13:42:05 | → | merijn joins (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) |
| 13:43:18 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 13:44:16 | → | img joins (~img@user/img) |
| 13:44:36 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 268 seconds) |
| 13:45:09 | × | img quits (~img@user/img) (Client Quit) |
| 13:47:01 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 13:49:18 | → | Guest39 joins (~Guest39@183.82.24.82) |
| 13:49:48 | → | img joins (~img@user/img) |
| 13:50:33 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 13:51:08 | × | Guest39 quits (~Guest39@183.82.24.82) (Client Quit) |
| 13:53:30 | × | jgeerds quits (~jgeerds@55d437cf.access.ecotel.net) (Ping timeout: 240 seconds) |
| 13:55:10 | × | acidjnk quits (~acidjnk@p200300d6e705867410ff6a9084641920.dip0.t-ipconnect.de) (Ping timeout: 272 seconds) |
| 13:55:35 | → | machinedgod joins (~machinedg@d172-219-86-154.abhsia.telus.net) |
| 13:55:45 | <tomsmeding> | Public service announcement: if someone complains that "there are files missing in the `...' package", it's not always dynamic linking on arch linux |
| 13:55:55 | <tomsmeding> | Because termux does the same (dynamic linking) |
| 13:56:32 | <tomsmeding> | Luckily that'll be a vanishingly small amount of people, so arch is still a good first guess :) |
| 13:57:01 | <tomsmeding> | Currently trying to build a statically linked cabal using a dynamically-linked one |
| 13:57:09 | <geekosaur> | was gonna say, that seems really unlikely. first you have to deal with the amount of memory needed to compile anything… |
| 13:58:02 | <geekosaur> | (termux at least has a good reason to prefer dynamic linking) |
| 13:59:44 | <qrpnxz> | Haskelytic: even more blowing is that pure and <*> for (->) r are the K and S combinators, with which you can write any computable function |
| 14:01:31 | → | yauhsien joins (~yauhsien@61-231-46-226.dynamic-ip.hinet.net) |
| 14:01:44 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 255 seconds) |
| 14:01:53 | → | Infinite joins (~Infinite@2405:201:6014:10d3:fb7b:36f:7eba:e87d) |
| 14:04:37 | <tomsmeding> | geekosaur: my phone has 8gb ram + 2gb swap :p |
| 14:04:47 | <tomsmeding> | Though quite a bunch of that is taken by the system |
| 14:05:34 | → | segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
| 14:06:14 | <tomsmeding> | Can I create a new ghc-pkg db that contains just the boot packages from the global system db and ignores the rest, and then tell cabal to use that instead of the global db? |
| 14:06:51 | <tomsmeding> | Reason being that the package-manager-installed cabal had some dependencies, now registered in the global store, that have no static library files >.> |
| 14:07:04 | <tomsmeding> | Hence cabal build fails for anything |
| 14:07:15 | <geekosaur> | you can copy the package registration files to a new directory and then run ghc-pkg recache in it |
| 14:08:24 | <geekosaur> | I don't know about the other one, sadly. I presume it's doable but requires some horkery |
| 14:08:42 | <tomsmeding> | `cabal install` has a --package-db flag |
| 14:08:52 | <tomsmeding> | https://github.com/haskell/cabal/pull/7676 |
| 14:09:31 | <merijn> | tomsmeding: In principle that's already what v2 does :p |
| 14:09:52 | × | segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 244 seconds) |
| 14:09:55 | <merijn> | tomsmeding: It creates an on-demand package db for each project |
| 14:10:07 | <geekosaur> | but it still trusts the global package db |
| 14:10:07 | <tomsmeding> | merijn: `cabal install cabal-install` fails because it says that there are files missing in Cabal etc. |
| 14:10:13 | <tomsmeding> | Because those only have dyn files |
| 14:10:14 | × | Haskelytic quits (~Haskelyti@118.179.211.17) (Ping timeout: 252 seconds) |
| 14:10:25 | <merijn> | ah |
| 14:10:27 | <geekosaur> | problem there being Cabal is a boot package used by ghc |
| 14:10:42 | <tomsmeding> | The boot packages have static archives in the global db, because the system package manager has those |
| 14:10:44 | <tomsmeding> | But only those |
| 14:11:08 | <merijn> | good luck :p |
| 14:11:20 | × | Infinite quits (~Infinite@2405:201:6014:10d3:fb7b:36f:7eba:e87d) (Ping timeout: 252 seconds) |
| 14:11:30 | <merijn> | I wanna procrasinate, but not badly enough to fight "Random Ass Linux Distroy #3" :p |
| 14:11:31 | <tomsmeding> | Hence my question |
| 14:11:55 | <tomsmeding> | merijn: use it as motivation to do what you wanted to procrastinate on |
| 14:12:04 | <merijn> | My advice would be "don't use the system package manager, but that's not super helpful" :p |
| 14:12:22 | <geekosaur> | I think termux has to be a bit of a special case |
| 14:12:27 | <tomsmeding> | That's super unhelpful in this case because I have no clue how to get a working ghc on this system otherwise :p |
| 14:12:36 | <merijn> | tomsmeding: The last edits before my thesis can go to the printer...honestly rather stab myself at this point ;_; |
| 14:13:10 | <tomsmeding> | merijn: the end is in sight |
| 14:13:16 | <tomsmeding> | The force be with you |
| 14:13:41 | <merijn> | It's a fight between "I really don't wanna do this" and "aaaaaaaaaah it needs to be printed" |
| 14:16:17 | × | img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
| 14:17:03 | → | acidjnk joins (~acidjnk@p200300d6e705867410ff6a9084641920.dip0.t-ipconnect.de) |
| 14:19:10 | → | img joins (~img@user/img) |
| 14:20:25 | × | yauhsien quits (~yauhsien@61-231-46-226.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 14:21:08 | × | chomwitt quits (~chomwitt@2a02:587:dc0d:4a00:4077:c916:581a:b291) (Ping timeout: 272 seconds) |
| 14:21:56 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:181f:21e0:9b42:e654) |
| 14:24:24 | × | img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
| 14:26:10 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:181f:21e0:9b42:e654) (Ping timeout: 240 seconds) |
| 14:26:38 | → | yauhsien joins (~yauhsien@61-231-46-226.dynamic-ip.hinet.net) |
| 14:26:45 | → | zebrag joins (~chris@user/zebrag) |
| 14:26:50 | <tomsmeding> | Meeeh cabal unconditionally calls `ghc --print-global-package-db` |
| 14:27:17 | → | img joins (~img@user/img) |
| 14:27:42 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 14:27:50 | → | epolanski joins (uid312403@id-312403.helmsley.irccloud.com) |
| 14:30:08 | → | nasosev joins (~nasosev@193-116-244-197.tpgi.com.au) |
| 14:30:33 | <nasosev> | how can i pass a flag to a package in cabal? I want to use the flag: |
| 14:30:33 | <nasosev> | hmatrix: |
| 14:30:34 | <nasosev> | openblas: true |
| 14:30:56 | <dcoutts_> | package hmatrix |
| 14:31:00 | <dcoutts_> | flags: +openblas |
| 14:31:10 | × | yauhsien quits (~yauhsien@61-231-46-226.dynamic-ip.hinet.net) (Ping timeout: 240 seconds) |
| 14:31:11 | <dcoutts_> | in your cabal.project or cabal.project.local file |
| 14:34:36 | <nasosev> | I only have a project.cabal file. I tried putting that in there but it did not seem to work |
| 14:35:03 | <nasosev> | I created this project with 'cabal init' . (This is my first time using cabal, I previously used stack) |
| 14:35:15 | <dcoutts_> | Then make a simple cabal.project file, listing "packages: ." as the only other entry. |
| 14:35:26 | <merijn> | I wish the use of cabal flags for "feature flags" was quashed harder 10 years ago :\ |
| 14:36:00 | × | img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
| 14:36:47 | → | segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
| 14:38:18 | <nasosev> | sorry, do I literally name the file cabal.project , or is it cabal.[PROJECTNAME] ? I tried both, the first way gave me the following error and the second had no effect: |
| 14:38:18 | <nasosev> | Warning: There are no packages or optional-packages in the project |
| 14:38:19 | <nasosev> | cabal-3.6.2.0.exe: There is no <pkgname>.cabal package file or cabal.project |
| 14:38:19 | <nasosev> | file. To build packages locally you need at minimum a <pkgname>.cabal file. |
| 14:38:20 | <nasosev> | You can use 'cabal init' to create one. |
| 14:38:53 | → | img joins (~img@user/img) |
| 14:38:58 | <dcoutts_> | Yes, cabal.project containing |
| 14:39:00 | <dcoutts_> | packages: . |
| 14:39:16 | <dcoutts_> | and then the bit I mentioned above to set +openblas |
| 14:40:01 | <nasosev> | the following errors occurred: |
| 14:40:02 | <nasosev> | The package location 'package' does not exist. |
| 14:40:02 | <nasosev> | The package location 'hmatrix' does not exist. |
| 14:40:03 | <nasosev> | The package location 'flags:' does not exist. |
| 14:40:03 | <nasosev> | The package location '+openblas' does not exist. |
| 14:40:15 | <nasosev> | my cabal.project contains the following: |
| 14:40:16 | <nasosev> | packages: . |
| 14:40:16 | <nasosev> | package hmatrix |
| 14:40:17 | <nasosev> | flags: +openblas |
| 14:40:40 | <dcoutts_> | the syntax is like .cabal files, so top level sections need to start at the left, no indentation |
| 14:40:54 | <dcoutts_> | packages: . |
| 14:40:56 | <dcoutts_> | package hmatrix |
| 14:41:01 | <dcoutts_> | oops |
| 14:41:02 | <dcoutts_> | package hmatrix |
| 14:41:07 | <dcoutts_> | flags: +openblas |
| 14:41:21 | × | img quits (~img@user/img) (Client Quit) |
| 14:41:53 | <dcoutts_> | Make sense? The package <foo> is a new section, so top level, not indented within the packages field. |
| 14:42:26 | <dcoutts_> | the packages field just lists the directories of local packages within the project (hence "." for the simplest possible projects) |
| 14:43:20 | <tomsmeding> | (looks like something is working: https://tomsmeding.com/vang/yjG3AH/Screenshot_20220716-164254.jpg ) |
| 14:44:13 | → | img joins (~img@user/img) |
| 14:47:12 | <nasosev> | thanks a lot for the instructions and explanations. it looks like the flag was accepted now so that is great, however i now have an error "Missing (or bad) C library: openblas", even though this project compiles properly with stack on GHC 9.0.2 |
| 14:47:27 | <nasosev> | (the reason I'm trying to use cabal is so I can use GHC 9.2.2) |
| 14:49:00 | × | segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 272 seconds) |
| 14:49:20 | <dcoutts_> | nasosev: are you quite sure you've got the development package for openblas installed via your system package manager? It's not doing anything fancy here, just trying to link against the C library. It assumes the C linker (and hence ghc) can find it. |
| 14:49:49 | × | christiansen quits (~christian@83-95-137-75-dynamic.dk.customer.tdc.net) (Ping timeout: 272 seconds) |
| 14:53:44 | <nasosev> | dcoutts_yeah but it was a bit tricky to get it working, I followed these instructions https://github.com/haskell-numerics/hmatrix/blob/master/INSTALL.md which say that Stack is preferred, actually there are some Cabal instructions there too I should try, I had forgotten. although it also says the instructions are out of date and probably won't |
| 14:53:44 | <nasosev> | work... |
| 14:53:48 | × | alp quits (~alp@user/alp) (Ping timeout: 276 seconds) |
| 14:53:53 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds) |
| 14:56:28 | → | califax_ joins (~califax@user/califx) |
| 14:56:45 | × | adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Ping timeout: 268 seconds) |
| 14:56:45 | × | califax quits (~califax@user/califx) (Ping timeout: 268 seconds) |
| 14:56:46 | → | adanwan_ joins (~adanwan@gateway/tor-sasl/adanwan) |
| 14:57:22 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 268 seconds) |
| 14:57:22 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 268 seconds) |
| 14:57:40 | califax_ | is now known as califax |
| 14:57:59 | × | gmg quits (~user@user/gehmehgeh) (Ping timeout: 268 seconds) |
| 14:57:59 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 268 seconds) |
| 14:57:59 | × | stiell quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 268 seconds) |
| 14:58:17 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 14:59:04 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 14:59:32 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 14:59:55 | → | gmg joins (~user@user/gehmehgeh) |
| 15:00:10 | × | acidjnk quits (~acidjnk@p200300d6e705867410ff6a9084641920.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
| 15:07:05 | <nasosev> | i think i'll give up trying to get this working on windows -- it's working on my mac |
| 15:09:19 | → | gurkenglas joins (~gurkengla@dslb-002-203-144-112.002.203.pools.vodafone-ip.de) |
| 15:10:31 | <nasosev> | unrelated question: how can i get a bunch of qualified names to automatically be in scope in 'cabal repl' -- E.g. 'import Data.Set qualified as Set' |
| 15:10:35 | <hololeap> | can I use CPP to add extra lines to cabal files depending on the version of cabal? |
| 15:10:36 | → | segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
| 15:11:21 | <hololeap> | the version of GHC, rather |
| 15:11:24 | <hololeap> | ghc-8.8 doesn't like some -W flags that I have turned on |
| 15:11:47 | → | stiell joins (~stiell@gateway/tor-sasl/stiell) |
| 15:11:54 | <hololeap> | so my github workflow is failing on that particular ghc version |
| 15:13:30 | <merijn> | nasosev: You can have a .ghci file |
| 15:13:52 | <merijn> | nasosev: https://github.com/merijn/dotfiles/blob/master/dotfiles/ghci |
| 15:14:17 | <merijn> | hololeap: Eh, that's natively supported by cabal without CPP :p |
| 15:14:24 | <merijn> | unlike CPP, which isn't supported at all |
| 15:14:42 | <hololeap> | oh, I think I've seen that before |
| 15:16:06 | <merijn> | hololeap: https://github.com/merijn/broadcast-chan/blob/73f8e7a7263ebd0b97193f16416f3ffb5193f787/broadcast-chan/broadcast-chan.cabal#L155-L156 |
| 15:16:20 | <nasosev> | merijn: thanks, actually i did try that but when I do 'import qualified My.Module as Module' and run 'cabal repl' it complains 'could not find module 'My.Module'' |
| 15:16:26 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
| 15:16:42 | <nasosev> | 'when i do'* i meant, when i put that line in the .ghci file |
| 15:16:46 | <merijn> | hololeap: fields like ghc-flags are monoidal, so multiple ghc-flags get concatenated |
| 15:16:59 | <merijn> | hololeap: And if lets you have conditional fields |
| 15:17:14 | <hololeap> | makes sense, thanks for the example |
| 15:17:46 | → | Infinite joins (~Infinite@2405:201:6014:10d3:d0ca:78e0:9524:7a2a) |
| 15:18:09 | <merijn> | nasosev: ah, of some non-standard package? |
| 15:18:25 | <merijn> | You'd need to tell ghci that that package should be in scope |
| 15:18:33 | <nasosev> | it's a module in my project |
| 15:18:34 | → | nasosev_ joins (~nasosev@193-116-244-197.tpgi.com.au) |
| 15:18:54 | <nasosev> | it seems that in 'cabal repl', none of my modules are loaded automatically as they were in stack |
| 15:18:59 | <nasosev> | stack ghci |
| 15:19:18 | → | acidjnk joins (~acidjnk@p200300d6e705867410ff6a9084641920.dip0.t-ipconnect.de) |
| 15:20:24 | → | kilolympus joins (~kilolympu@4e69e623.skybroadband.com) |
| 15:24:19 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 15:27:06 | → | shriekingnoise joins (~shrieking@201.212.175.181) |
| 15:28:32 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 15:33:28 | × | Infinite quits (~Infinite@2405:201:6014:10d3:d0ca:78e0:9524:7a2a) (Ping timeout: 252 seconds) |
| 15:34:04 | × | _xor quits (~xor@74.215.182.83) (Quit: brb) |
| 15:35:39 | <nasosev_> | i've tried putting the following in my .ghci but it is not working: |
| 15:35:43 | <nasosev_> | :load My.Module |
| 15:35:44 | <nasosev_> | import qualified My.Module as Module |
| 15:35:50 | → | Infinite joins (~Infinite@2405:201:6014:10d3:f594:75fd:97e5:bc1f) |
| 15:37:40 | → | econo joins (uid147250@user/econo) |
| 15:38:03 | × | tomgus1 quits (~tomgus1@2a02:c7e:4229:d900:dea6:32ff:fe3d:d1a3) (Ping timeout: 268 seconds) |
| 15:39:53 | × | alternateved quits (~user@staticline-31-183-144-54.toya.net.pl) (Remote host closed the connection) |
| 15:40:10 | → | alternateved joins (~user@staticline-31-183-144-54.toya.net.pl) |
| 15:41:42 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 15:43:25 | × | alternateved quits (~user@staticline-31-183-144-54.toya.net.pl) (Remote host closed the connection) |
| 15:43:42 | → | alternateved joins (~user@staticline-31-183-144-54.toya.net.pl) |
| 15:46:45 | × | nasosev_ quits (~nasosev@193-116-244-197.tpgi.com.au) (Remote host closed the connection) |
| 15:48:55 | → | nasosev_ joins (~nasosev@193-116-244-197.tpgi.com.au) |
| 15:49:05 | → | chomwitt joins (~chomwitt@2a02:587:dc0d:4a00:d0d9:e962:c777:f89b) |
| 15:53:27 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:181f:21e0:9b42:e654) |
| 15:55:17 | → | zxx7529 joins (~Thunderbi@user/zxx7529) |
| 15:55:46 | × | gmg quits (~user@user/gehmehgeh) (Remote host closed the connection) |
| 15:56:34 | × | nasosev quits (~nasosev@193-116-244-197.tpgi.com.au) (Ping timeout: 252 seconds) |
| 15:56:44 | → | gmg joins (~user@user/gehmehgeh) |
| 15:58:02 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:181f:21e0:9b42:e654) (Ping timeout: 272 seconds) |
| 15:59:32 | × | zxx7529 quits (~Thunderbi@user/zxx7529) (Read error: Connection reset by peer) |
| 16:00:16 | → | zxx7529 joins (~Thunderbi@user/zxx7529) |
| 16:04:13 | × | zxx7529 quits (~Thunderbi@user/zxx7529) (Read error: Connection reset by peer) |
| 16:04:56 | → | zxx7529 joins (~Thunderbi@user/zxx7529) |
| 16:07:57 | → | nate4 joins (~nate@98.45.169.16) |
| 16:09:37 | × | dsrt^ quits (~dsrt@c-73-207-207-252.hsd1.ga.comcast.net) (Ping timeout: 272 seconds) |
| 16:09:38 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 16:12:51 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 244 seconds) |
| 16:16:35 | × | segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 272 seconds) |
| 16:20:56 | → | coot joins (~coot@213.134.190.95) |
| 16:25:15 | × | Infinite quits (~Infinite@2405:201:6014:10d3:f594:75fd:97e5:bc1f) (Quit: Client closed) |
| 16:26:34 | → | dsrt^ joins (~dsrt@c-73-207-207-252.hsd1.ga.comcast.net) |
| 16:30:45 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 16:31:07 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 16:31:19 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 16:32:44 | × | zxx7529 quits (~Thunderbi@user/zxx7529) (Quit: zxx7529) |
| 16:35:30 | × | acidjnk quits (~acidjnk@p200300d6e705867410ff6a9084641920.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
| 16:36:05 | → | Major_Biscuit joins (~MajorBisc@2a02-a461-129d-1-6d4c-38a4-18b7-4b48.fixed6.kpn.net) |
| 16:39:44 | <nasosev_> | How can I use Relude's hlint.yaml file (https://github.com/kowainik/relude) ? I'm using VSCode, and there is an option to add flags for hlint, but looking at the Hlint manual it doesn't seem to mention anything about yaml files https://hackage.haskell.org/package/hlint-1.7/src/hlint.htm |
| 16:39:52 | → | polyphem joins (~rod@2a02:810d:840:8754:224e:f6ff:fe5e:bc17) |
| 16:41:08 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 16:41:36 | → | zxx7529 joins (~Thunderbi@user/zxx7529) |
| 16:41:41 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 16:44:11 | × | chomwitt quits (~chomwitt@2a02:587:dc0d:4a00:d0d9:e962:c777:f89b) (Ping timeout: 255 seconds) |
| 16:44:52 | → | nasosev joins (~nasosev@193-116-244-197.tpgi.com.au) |
| 16:46:25 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 16:52:31 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 16:53:05 | → | acidjnk joins (~acidjnk@p200300d6e705867410ff6a9084641920.dip0.t-ipconnect.de) |
| 16:55:10 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 16:58:49 | × | coot quits (~coot@213.134.190.95) (Quit: coot) |
| 17:00:23 | × | zxx7529 quits (~Thunderbi@user/zxx7529) (Read error: Connection reset by peer) |
| 17:01:03 | → | zxx7529 joins (~Thunderbi@user/zxx7529) |
| 17:03:15 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 17:05:42 | × | zxx7529 quits (~Thunderbi@user/zxx7529) (Client Quit) |
| 17:07:16 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Client Quit) |
| 17:08:29 | × | Major_Biscuit quits (~MajorBisc@2a02-a461-129d-1-6d4c-38a4-18b7-4b48.fixed6.kpn.net) (Quit: WeeChat 3.5) |
| 17:08:54 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 17:08:54 | → | o-90 joins (~o-90@gateway/tor-sasl/o-90) |
| 17:11:02 | × | nasosev_ quits (~nasosev@193-116-244-197.tpgi.com.au) () |
| 17:11:55 | × | nasosev quits (~nasosev@193-116-244-197.tpgi.com.au) (Quit: Client closed) |
| 17:13:00 | × | o-90 quits (~o-90@gateway/tor-sasl/o-90) (Remote host closed the connection) |
| 17:16:02 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 17:16:41 | × | adanwan_ quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection) |
| 17:17:10 | → | adanwan joins (~adanwan@gateway/tor-sasl/adanwan) |
| 17:22:14 | → | segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
| 17:31:33 | → | __monty__ joins (~toonn@user/toonn) |
| 17:34:42 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 17:37:36 | × | segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 276 seconds) |
| 17:43:32 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 17:43:37 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 17:44:06 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 17:47:27 | → | chomwitt joins (~chomwitt@athedsl-369793.home.otenet.gr) |
| 17:47:51 | <geekosaur> | .hlint.yaml in the project |
| 17:51:25 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:181f:21e0:9b42:e654) |
| 17:51:35 | × | acidjnk quits (~acidjnk@p200300d6e705867410ff6a9084641920.dip0.t-ipconnect.de) (Ping timeout: 272 seconds) |
| 17:52:30 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 17:52:34 | × | polyphem quits (~rod@2a02:810d:840:8754:224e:f6ff:fe5e:bc17) (Quit: WeeChat 3.5) |
| 17:53:10 | → | mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475) |
| 17:56:30 | × | chomwitt quits (~chomwitt@athedsl-369793.home.otenet.gr) (Ping timeout: 264 seconds) |
| 18:02:37 | → | christiansen joins (~christian@83-95-137-75-dynamic.dk.customer.tdc.net) |
| 18:06:20 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 18:07:25 | × | epolanski quits (uid312403@id-312403.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
| 18:08:09 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 18:13:07 | × | vglfr quits (~vglfr@coupling.penchant.volia.net) (Ping timeout: 272 seconds) |
| 18:15:20 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
| 18:15:20 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 18:15:20 | × | gmg quits (~user@user/gehmehgeh) (Remote host closed the connection) |
| 18:15:20 | × | stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
| 18:15:48 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 18:15:51 | → | stiell joins (~stiell@gateway/tor-sasl/stiell) |
| 18:16:23 | → | gmg joins (~user@user/gehmehgeh) |
| 18:16:29 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 18:20:26 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds) |
| 18:23:10 | × | gurkenglas quits (~gurkengla@dslb-002-203-144-112.002.203.pools.vodafone-ip.de) (Ping timeout: 240 seconds) |
| 18:23:39 | → | Haskelytic joins (~Haskelyti@118.179.211.17) |
| 18:25:11 | × | phma quits (~phma@host-67-44-208-200.hnremote.net) (Read error: Connection reset by peer) |
| 18:26:06 | → | phma joins (phma@2001:5b0:212a:ccf8:28d4:d0ee:6a25:5e66) |
| 18:28:34 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 18:29:00 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 18:32:10 | <Midjak> | Hi I am wondering if it's possible to use dynamic lib written in Haskell from a program written in another language. If yes, is it easy ? Is it common ? Are there open source projects which do that ? |
| 18:33:23 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 18:33:40 | → | nek0 joins (~nek0@2a01:4f8:222:2b41::12) |
| 18:34:02 | <merijn> | Midjak: Yes. Fairly easy if you know what you're doing. Not very common |
| 18:34:30 | <hpc> | https://wiki.haskell.org/Foreign_Function_Interface#Exported_functions |
| 18:34:31 | <merijn> | I think cabal even has a specific library type for this |
| 18:35:01 | <merijn> | hpc: There's a couple of "tricky" bits, but if you are comfortable with dynamic libraries in C/C++ they should be completely minor speedbumps |
| 18:35:05 | <merijn> | eh |
| 18:35:07 | <merijn> | s/hpc/Midjak |
| 18:35:10 | × | td_ quits (~td@muedsl-82-207-238-162.citykom.de) (Ping timeout: 240 seconds) |
| 18:35:30 | → | benin0 joins (~benin@183.82.24.82) |
| 18:35:32 | <merijn> | Midjak: Specifically you need to remember to link the runtime too and you need to call some setup functions before you can call haskell code |
| 18:35:43 | <hpc> | on the non-haskell side there's some extra stuff you have to do too - https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/exts/ffi.html#using-your-own-main |
| 18:36:33 | <merijn> | Midjak: I wrote a minimal example for using a C main function calling Haskell code years ago (so it might be a bit out of date): https://gist.github.com/merijn/4a0fee2b3a5ef3476aa4 |
| 18:37:08 | → | td_ joins (~td@94.134.91.147) |
| 18:37:57 | <merijn> | Midjak: cabal even has some support for building your Haskell into a shared lib: https://cabal.readthedocs.io/en/3.6/cabal-package.html#foreign-libraries |
| 18:37:58 | <Midjak> | seems very cool. I am not very used with dynamic libraries. But I am learning about that for long. |
| 18:38:31 | <merijn> | getting every bit "right" the first way will probably be a bit of fiddling and scrambling through documentation, but it shouldn't be particularly hard |
| 18:40:16 | <Midjak> | thank you both. merijn a big thanks for example. Cabal guide seems exhaustive on the subject. |
| 18:40:39 | <merijn> | Midjak: The GHC user's guide should have some stuff too |
| 18:40:44 | <merijn> | @where userguide |
| 18:40:44 | <lambdabot> | I know nothing about userguide. |
| 18:40:46 | <merijn> | hmm |
| 18:40:48 | <merijn> | @where user-guide |
| 18:40:48 | <lambdabot> | I know nothing about user-guide. |
| 18:40:50 | <merijn> | pfft |
| 18:40:54 | <merijn> | useless bot >.> |
| 18:41:09 | <Midjak> | oh yes sorry I was talking about GHC guide |
| 18:41:56 | <hpc> | scroll most of the way down https://www.haskell.org/documentation/ |
| 18:42:25 | <Midjak> | this one merijn ;-) https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/exts/ffi.html# |
| 18:42:30 | × | gmg quits (~user@user/gehmehgeh) (Remote host closed the connection) |
| 18:43:11 | → | gmg joins (~user@user/gehmehgeh) |
| 18:43:30 | <geekosaur> | @where+ users-guide https://downloads.haskell.org/~ghc/latest/docs/html/users_guide |
| 18:43:30 | <lambdabot> | Nice! |
| 18:43:58 | <Midjak> | @where user-guide |
| 18:43:58 | <lambdabot> | I know nothing about user-guide. |
| 18:44:14 | <Rembane> | @where users-guide |
| 18:44:14 | <lambdabot> | https://downloads.haskell.org/~ghc/latest/docs/html/users_guide |
| 18:44:17 | <hpc> | @where ghc |
| 18:44:17 | <lambdabot> | http://haskell.org/ghc |
| 18:44:23 | <hpc> | @where ghc-guide |
| 18:44:23 | <lambdabot> | https://downloads.haskell.org/~ghc/latest/docs/html/users_guide |
| 18:44:27 | <Midjak> | it works! |
| 18:44:59 | <hpc> | @where- users-guide |
| 18:44:59 | <lambdabot> | Maybe you meant: where+ where |
| 18:45:00 | <Midjak> | I think ghc-guide is a better name no ? |
| 18:45:18 | → | Jeanne-Kamikaze joins (~Jeanne-Ka@142.147.89.239) |
| 18:45:22 | <hpc> | @where+ users-guide see @where ghc-guide or @where cabal-guide |
| 18:45:22 | <lambdabot> | Okay. |
| 18:45:23 | <geekosaur> | I think the database has to be manually edited, sadly |
| 18:45:42 | <hpc> | @where+ user-guide see @where ghc-guide or @where cabal-guide |
| 18:45:42 | <lambdabot> | Done. |
| 18:45:45 | <geekosaur> | (for removal) |
| 18:45:50 | <hpc> | @where guide |
| 18:45:50 | <lambdabot> | https://github.com/bitemyapp/learnhaskell |
| 18:46:10 | <hpc> | heh, that one can stay |
| 18:46:40 | <Midjak> | Humm I don't know this one I think |
| 18:47:24 | <Midjak> | with many translations... interesting |
| 18:48:18 | <hpc> | some of that page could use updating, like the platform/stack section can just say to use ghcup |
| 18:49:26 | <Midjak> | ah it's just a learning path |
| 18:50:29 | × | img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
| 18:50:54 | → | img joins (~img@user/img) |
| 18:52:55 | × | dsrt^ quits (~dsrt@c-73-207-207-252.hsd1.ga.comcast.net) (Ping timeout: 268 seconds) |
| 18:53:01 | × | machinedgod quits (~machinedg@d172-219-86-154.abhsia.telus.net) (Ping timeout: 272 seconds) |
| 18:53:33 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 18:56:51 | × | alternateved quits (~user@staticline-31-183-144-54.toya.net.pl) (Remote host closed the connection) |
| 18:57:50 | × | euandreh quits (~euandreh@189.6.33.250) (Ping timeout: 240 seconds) |
| 18:59:50 | × | Jeanne-Kamikaze quits (~Jeanne-Ka@142.147.89.239) (Ping timeout: 240 seconds) |
| 19:00:04 | → | euandreh joins (~euandreh@189.6.33.250) |
| 19:03:02 | <hololeap> | so, this parser is really slow, and I don't know where to begin figuring out why: https://github.com/hololeap/cabal-portage/blob/main/portage-hs/src/Internal/Distribution/Portage/Emerge/Parser.hs |
| 19:05:17 | <hololeap> | the individual Package parser seems quite fast, but for some reason this parser is taking over a minute on my system to parse this input: http://sprunge.us/o3FFv3 |
| 19:07:07 | <Rembane> | hololeap: How fast is packageLine if you run it 10 000 times on a single line? |
| 19:08:06 | <hololeap> | it's about as fast as running it on a single line * 10,000 |
| 19:09:05 | <Rembane> | Okay, then it is something else that takes time. |
| 19:11:00 | <Rembane> | Creating many singleton sets shouldn't take that much time. |
| 19:11:15 | <merijn> | hololeap: Probably wanna make sure you force some strict fold on those sets |
| 19:11:28 | <merijn> | ah, yeah |
| 19:12:02 | <merijn> | Why is this parser recursive at all? |
| 19:12:29 | <hololeap> | merijn: it was just the most intuitive way for me to write it |
| 19:12:33 | <merijn> | Don't you just want many (or some variation) applying the same one line parser all at once and folding |
| 19:12:54 | <merijn> | hololeap: I'd write a parser for 1 line and then just apply that many times |
| 19:13:06 | <hololeap> | I can try that |
| 19:13:10 | <merijn> | I can see the recursion messing with backtracking or whatever |
| 19:13:31 | <merijn> | Overall the "shorter" and more delimited your parsers, the smaller the chance of giant backtracking nonsense ruining performance |
| 19:13:32 | <hololeap> | yeah something is definitely quadratic. when I have 100 lines it takes 3s, when I have all ~450 it takes 65s |
| 19:14:25 | <merijn> | hololeap: If you have 10k lines or more (since I see mention of 10k) you might wanna go the "write one line parser" and use one of the streaming libraries to stream parse (and handle folding of the set in that streaming library) |
| 19:14:47 | <merijn> | then you *know* the speed of 1 line is all you have to worry about |
| 19:14:57 | <merijn> | And that's easier to benchmark and debug too |
| 19:15:28 | <hololeap> | hm, that's an idea too |
| 19:15:51 | <merijn> | Not sure if someone made a stream parser for megaparsec yet, but I know conduit has attoparsec wrappers, for example |
| 19:16:18 | <merijn> | (because I use it for literally this kinda parsing of loads of individual lines kinda workload :p) |
| 19:18:00 | → | vglfr joins (~vglfr@88.155.51.199) |
| 19:18:32 | <hpc> | could emergeParser be rewritten as something along the lines of many (packageLine <$ many skipLine)? |
| 19:21:16 | → | chomwitt joins (~chomwitt@2a02:587:dc00:5a00:f45c:29e7:726f:443d) |
| 19:21:42 | → | acidjnk joins (~acidjnk@p200300d6e705867410ff6a9084641920.dip0.t-ipconnect.de) |
| 19:21:56 | → | tomgus1 joins (~tomgus1@2a02:c7e:4229:d900:dea6:32ff:fe3d:d1a3) |
| 19:28:30 | × | mmhat quits (~mmh@p200300f1c70559fbee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.6) |
| 19:31:13 | × | adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection) |
| 19:31:13 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Read error: Connection reset by peer) |
| 19:31:13 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 19:31:13 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 19:31:33 | → | adanwan joins (~adanwan@gateway/tor-sasl/adanwan) |
| 19:31:35 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 19:31:39 | → | califax joins (~califax@user/califx) |
| 19:32:09 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 19:32:16 | <hololeap> | I rewrote it a bit, hoping to weed out any unexpected behavior: |
| 19:32:17 | → | segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
| 19:32:19 | <hololeap> | https://github.com/hololeap/cabal-portage/blob/faster-parse/portage-hs/src/Internal/Distribution/Portage/Emerge/Parser.hs |
| 19:32:29 | <hololeap> | but it's still taking over a minute to parse that same input |
| 19:34:52 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 244 seconds) |
| 19:36:32 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 19:38:24 | × | Haskelytic quits (~Haskelyti@118.179.211.17) (Quit: Client closed) |
| 19:46:58 | <hololeap> | ok, the latest version (same link, needs to be refreshed) only takes 0.3s, but it completely kills any nice error messages pointing to the line number |
| 19:47:58 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 19:47:58 | → | seriously joins (~seriously@ool-18bd55d4.dyn.optonline.net) |
| 19:48:33 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 19:49:42 | <seriously> | "length = fold 0 (\_ s -> 1 + s)" What is the "s" |
| 19:49:53 | <seriously> | pattern matching to ? |
| 19:50:30 | <darkling> | I'm guessing it's the second parameter of the lambda? |
| 19:51:16 | <darkling> | So it's the accumulator of the fold. |
| 19:51:46 | <c_wraith> | that definition is using a non-standard fold, fwiw. the only thing named "fold" in the base library has an entirely different type. |
| 19:52:31 | <c_wraith> | by the type, that looks like foldr, but foldr is inappropriate for that job. |
| 19:52:43 | <c_wraith> | (it'll work for a while, until it blows the stack...) |
| 19:54:44 | <seriously> | Sorry im aware of that; just using it as an example... I dont understand how the anon function would have access to the accumulator value i suppose. |
| 19:56:21 | <c_wraith> | Well, can you write the same loop with direct recursion? |
| 19:56:51 | <darkling> | The accumulator is passed into it as a parameter. It then returns the updated value, which is passed to the lambda for the next item in the fold. |
| 19:57:46 | <c_wraith> | all a fold does is abstract out the direct recursion, so you can focus on the unique parts |
| 19:58:10 | <monochrom> | If you understand "\x s -> 1 + s" then "\_ s -> 1 + s" is the same. |
| 19:58:26 | <monochrom> | If you don't understand "\x s -> 1 + s" then you need to take many steps back. |
| 19:59:36 | <seriously> | I think ive generalized the other list functions like map and filter, onto fold |
| 19:59:57 | <seriously> | since the function argument in those works on one value at a time |
| 20:01:17 | <monochrom> | Are you saying you thought up this "fold" function? |
| 20:02:04 | → | gdown joins (~gavin@h69-11-149-231.kndrid.broadband.dynamic.tds.net) |
| 20:02:21 | <seriously> | no haha Im just trying to understand fold in general... I have a function that Ive written in recursive fashion and im trying to convert it into a foldr |
| 20:03:10 | <hololeap> | I don't get it. megaparsec is supposed to have a nice balance between speed and readable error messages, but this change makes my benchmark go from 0.3s to 65s: https://github.com/hololeap/cabal-portage/commit/1eadc1c7c896d671c05bc0ffe4dd112013015a05 |
| 20:03:19 | <monochrom> | IMO there is no "fold in general". |
| 20:03:51 | <monochrom> | foldr, foldl, and foldMap are all very different from each other in so many important aspects. |
| 20:03:57 | <seriously> | As im trying to do that, i got confused when writing the anon function to pass to foldr |
| 20:04:11 | <monochrom> | "fold in general" is something you would lie to a management type. |
| 20:04:18 | → | dsrt^ joins (~dsrt@c-73-207-207-252.hsd1.ga.comcast.net) |
| 20:04:34 | <hololeap> | there's something I'm not understanding about how to get megaparsec to parse a multi-line file efficiently. when I split the input up with T.lines, it is much much faster, but then I don't have nice error messages. parsing the entire input is unacceptably slow. |
| 20:04:59 | <seriously> | fold in general is the only way i can think about it for now if I want to make any tangible progress |
| 20:05:17 | <seriously> | but i uunderstand your concern |
| 20:05:24 | <c_wraith> | that's like thinking about "food in general" and then asking "is food nutritious?" |
| 20:05:28 | × | adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection) |
| 20:05:55 | → | machinedgod joins (~machinedg@d172-219-86-154.abhsia.telus.net) |
| 20:05:59 | → | adanwan joins (~adanwan@gateway/tor-sasl/adanwan) |
| 20:07:16 | → | MajorBiscuit joins (~MajorBisc@86-88-79-148.fixed.kpn.net) |
| 20:08:18 | <monochrom> | IMO http://data.tmorris.net/talks/list-folds/feb8749ff8447c9558f733f9493292a824b414ad/list-folds.pdf is one of the few explanations that do justice to foldr. |
| 20:08:58 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 20:09:06 | <monochrom> | And I particularly like that one because it roasts all the other inferiror models. (I have always wanted to do that, too.) |
| 20:09:27 | → | nate4 joins (~nate@98.45.169.16) |
| 20:09:29 | <seriously> | ok reading through it now |
| 20:09:58 | <c_wraith> | huh. I don't really have a model for what foldr "means". I just think of it in terms of what code it replaces. |
| 20:10:19 | × | _ht quits (~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection) |
| 20:10:29 | <monochrom> | Then you're in good company! It says that too. |
| 20:10:32 | × | adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection) |
| 20:10:51 | <monochrom> | (I also say that to students.) |
| 20:10:51 | → | adanwan joins (~adanwan@gateway/tor-sasl/adanwan) |
| 20:11:32 | → | gurkenglas joins (~gurkengla@dslb-002-203-144-112.002.203.pools.vodafone-ip.de) |
| 20:13:10 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds) |
| 20:13:55 | tapas | is now known as wafflepirate |
| 20:14:08 | × | nate4 quits (~nate@98.45.169.16) (Ping timeout: 244 seconds) |
| 20:15:15 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 20:16:11 | × | kilolympus quits (~kilolympu@4e69e623.skybroadband.com) (Ping timeout: 244 seconds) |
| 20:24:46 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 20:25:33 | <hololeap> | this is pretty maddening. I distilled the change as far as I can, and now I just want to know why this change is killing performance _so_ bad: https://github.com/hololeap/cabal-portage/commit/1931cdbf6ae100c453abee8b35ca6fe74009c597 |
| 20:27:19 | → | epolanski joins (uid312403@id-312403.helmsley.irccloud.com) |
| 20:30:36 | → | wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com) |
| 20:30:36 | × | wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
| 20:30:36 | → | wroathe joins (~wroathe@user/wroathe) |
| 20:33:29 | <hololeap> | this should be pretty standard: write a parser that handles a single line, ensure it ends with (takeWhileP Nothing (/= '\n')) so it doesn't start looking through the entire file, plug it into (sepEndBy _ newLine) |
| 20:35:02 | <hololeap> | oh, wait... does 'space' match on newlines? |
| 20:35:07 | <merijn> | hololeap: Yes |
| 20:35:10 | <merijn> | iirc |
| 20:35:44 | <merijn> | hololeap: https://hackage.haskell.org/package/megaparsec-9.2.1/docs/Text-Megaparsec-Char.html#v:hspace |
| 20:35:58 | <hololeap> | that's... good to know XD |
| 20:36:02 | <merijn> | space matches any whitespace including newlines |
| 20:37:22 | <merijn> | also |
| 20:37:26 | <merijn> | what is runParseResult doing? |
| 20:39:21 | <hololeap> | ParseResult is basically a wrapper around (WriterT (Maybe ParseCoverage) (ParsecT e s m) a) |
| 20:39:43 | <merijn> | hmm |
| 20:41:20 | <hololeap> | yeah that very well could be part of the problem. it looks ahead to see if there is any input left and copies it into ParseCoverage, just for better error messages. I was hoping laziness would prevent this from happening unnecessarily |
| 20:44:18 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer) |
| 20:45:31 | <monochrom> | There is not much laziness in parsing, by definition. |
| 20:46:24 | → | pavonia joins (~user@user/siracusa) |
| 20:46:29 | <monochrom> | You have to give up validation to increase laziness. |
| 20:46:40 | → | elkcl joins (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) |
| 20:51:19 | × | machinedgod quits (~machinedg@d172-219-86-154.abhsia.telus.net) (Ping timeout: 244 seconds) |
| 20:51:50 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 20:53:10 | → | OscarZ joins (~oscarz@37-136-11-10.rev.dnainternet.fi) |
| 20:53:30 | × | OscarZ quits (~oscarz@37-136-11-10.rev.dnainternet.fi) (Quit: Leaving) |
| 20:55:04 | → | coot joins (~coot@213.134.190.95) |
| 20:57:36 | → | machinedgod joins (~machinedg@d172-219-86-154.abhsia.telus.net) |
| 20:58:17 | × | wroathe quits (~wroathe@user/wroathe) (Quit: leaving) |
| 21:00:16 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:181f:21e0:9b42:e654) (Remote host closed the connection) |
| 21:01:39 | → | jgeerds joins (~jgeerds@55d437cf.access.ecotel.net) |
| 21:03:11 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 21:04:52 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 21:05:16 | × | machinedgod quits (~machinedg@d172-219-86-154.abhsia.telus.net) (Ping timeout: 244 seconds) |
| 21:05:23 | × | christiansen quits (~christian@83-95-137-75-dynamic.dk.customer.tdc.net) (Ping timeout: 272 seconds) |
| 21:06:41 | → | machinedgod joins (~machinedg@d172-219-86-154.abhsia.telus.net) |
| 21:06:43 | → | OscarZ_ joins (~oscarz@188.126.80.50) |
| 21:07:41 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:5546:a014:fe40:2124) |
| 21:09:19 | × | johnw quits (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Quit: ZNC - http://znc.in) |
| 21:09:27 | × | OscarZ_ quits (~oscarz@188.126.80.50) (Client Quit) |
| 21:12:10 | × | merijn quits (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds) |
| 21:16:08 | → | OscarZ joins (~oscarz@188.126.80.50) |
| 21:18:09 | <OscarZ> | Helluva thing to live in the age of functional programming. What do you ask more? |
| 21:18:40 | → | causal joins (~user@50.35.83.177) |
| 21:20:36 | <hololeap> | ok, I made ParseResult a special case instead of being required by my Parsable class, and the parse time is down to 0.1s. thanks for the feedback everyone |
| 21:21:35 | <hololeap> | it was really only required for testing, anyway |
| 21:21:44 | × | machinedgod quits (~machinedg@d172-219-86-154.abhsia.telus.net) (Quit: Lost terminal) |
| 21:22:05 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 21:22:15 | → | machinedgod joins (~machinedg@d172-219-86-154.abhsia.telus.net) |
| 21:22:20 | <hpc> | that's my secret, i never test my code :D |
| 21:22:40 | <c_wraith> | I wrote types, that's good enough |
| 21:24:33 | <hpc> | but yeah, that's some kind of generalization of "profile production-like builds, not debug builds" |
| 21:24:55 | × | machinedgod quits (~machinedg@d172-219-86-154.abhsia.telus.net) (Client Quit) |
| 21:25:19 | → | machinedgod joins (~machinedg@d172-219-86-154.abhsia.telus.net) |
| 21:25:33 | × | machinedgod quits (~machinedg@d172-219-86-154.abhsia.telus.net) (Client Quit) |
| 21:26:05 | → | machinedgod joins (~machinedg@d172-219-86-154.abhsia.telus.net) |
| 21:26:34 | × | machinedgod quits (~machinedg@d172-219-86-154.abhsia.telus.net) (Client Quit) |
| 21:26:35 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
| 21:26:53 | <OscarZ> | What data types are known in pure mathematics that have parallels in Haskell? |
| 21:27:35 | <Rembane> | OscarZ: Look into category theory. |
| 21:27:36 | → | Pickchea joins (~private@user/pickchea) |
| 21:27:40 | → | machinedgod joins (~machinedg@d172-219-86-154.abhsia.telus.net) |
| 21:28:09 | <geekosaur> | in many ways it's less the data types themselves than the categorizations of them (not in the category theory sense) |
| 21:28:09 | × | machinedgod quits (~machinedg@d172-219-86-154.abhsia.telus.net) (Client Quit) |
| 21:28:28 | <geekosaur> | functor, semigroup/monoid, etc. |
| 21:28:29 | → | machinedgod joins (~machinedg@d172-219-86-154.abhsia.telus.net) |
| 21:28:43 | <geekosaur> | not so much what a data type is, as what you can do with it |
| 21:29:00 | <hpc> | also algebraic structures |
| 21:29:02 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
| 21:29:05 | <hpc> | semigroup, monoid, etc |
| 21:29:37 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 21:30:30 | × | machinedgod quits (~machinedg@d172-219-86-154.abhsia.telus.net) (Client Quit) |
| 21:30:53 | → | machinedgod joins (~machinedg@d172-219-86-154.abhsia.telus.net) |
| 21:31:03 | → | marcusxavier joins (~marcusxav@2804:6660:ff12:ef70:5973:6a7e:c03d:efea) |
| 21:31:45 | × | machinedgod quits (~machinedg@d172-219-86-154.abhsia.telus.net) (Client Quit) |
| 21:32:30 | × | acidjnk quits (~acidjnk@p200300d6e705867410ff6a9084641920.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
| 21:32:46 | × | mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 21:32:49 | → | machinedgod joins (~machinedg@d172-219-86-154.abhsia.telus.net) |
| 21:33:31 | <marcusxavier> | Hi, I'm studying haskell on college and wanna get better at it. |
| 21:33:46 | <marcusxavier> | I saw many people recommending the CIS 194 course. I looked at the site and found it had very little content (it seems that the site only has class notes, right?). In my case, would it be useful to do only the exercises of the course? |
| 21:33:52 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 21:35:04 | <geekosaur> | some people do the cis194 exercises along with one of the free haskell books such as lyah (which really needs those exercises to be useful) |
| 21:35:06 | × | coot quits (~coot@213.134.190.95) (Ping timeout: 268 seconds) |
| 21:35:31 | <hpc> | there's other courses on https://www.haskell.org/documentation/ you might like better, although i haven't looked through any of them |
| 21:36:25 | <monochrom> | Yeah I think the value of CIS 194 is in the exercises. |
| 21:36:38 | <geekosaur> | sadly I can't give you any personal recommendations; I knew SML/NJ already so I did the Gentle Introduction, which is somewhat less gentle without an ML background |
| 21:36:56 | <qrpnxz> | wtf, so I just noticed GHC is optimizing the non-tail recusive version of factorial to be just as fast as the tail-recursive one. What is this black magic?! GHC that good? Lazy magic? What gives? |
| 21:37:05 | <monochrom> | OTOH I am not a fan of "w00t this is a lengthy book I can treat it as spectator sport" either. |
| 21:37:41 | <monochrom> | or "w00t this is 1000 hours of lecture videos!" |
| 21:37:47 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 21:37:51 | <geekosaur> | tail recursion means little in the ghc world |
| 21:38:05 | × | gmg quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 21:38:12 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 268 seconds) |
| 21:38:16 | <geekosaur> | depending on how you think of it, either everything or nothing is tail recursive 🙂 |
| 21:38:42 | <monochrom> | Very little needs to be said about getting you started in Haskell (or any programming at all). 90%+ of the time you should be trying out coding not reading/watching "more" "explanations". |
| 21:38:46 | <geekosaur> | and yes, ghc's optimization is quite good these days |
| 21:39:06 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 21:39:24 | × | segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 276 seconds) |
| 21:39:34 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 21:39:42 | <monochrom> | To be sure, the exception is when you read someone else's solution and go "wait you can do that?!". |
| 21:41:51 | <monochrom> | For optimizing factorial you should read http://www.luschny.de/math/factorial/FastFactorialFunctions.htm and confess that even your previous C code was too slow. |
| 21:42:02 | <qrpnxz> | lol, even foldr is only a few sec slower wow. I wonder if GHC treats (*) especially, but either, I'm impressed. |
| 21:42:32 | <qrpnxz> | monochrom: lol thanks |
| 21:42:45 | × | marcusxavier quits (~marcusxav@2804:6660:ff12:ef70:5973:6a7e:c03d:efea) (Ping timeout: 272 seconds) |
| 21:42:52 | <geekosaur> | unlikely. aside form optimizing strict math down to machine code |
| 21:42:56 | <qrpnxz> | another good page is https://wiki.haskell.org/Prime_numbers |
| 21:43:08 | <qrpnxz> | my favourite is the ord-list solution |
| 21:43:11 | <qrpnxz> | absolutely beautiful |
| 21:43:16 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 21:44:13 | → | merijn joins (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) |
| 21:44:31 | <hpc> | a lot of the stuff for [] is not magic at all, but a bunch of carefully chosen rewrite rules that are just part of the source code |
| 21:46:06 | → | marcusxavier joins (~marcusxav@2804:6660:ff12:ef70:5973:6a7e:c03d:efea) |
| 21:46:17 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 21:46:41 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
| 21:47:05 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 21:48:50 | × | MajorBiscuit quits (~MajorBisc@86-88-79-148.fixed.kpn.net) (Ping timeout: 240 seconds) |
| 21:49:29 | <qrpnxz> | this one: primes = 2 : 3 : minus [5,7..] (unionAll [[p*p, p*p+2*p..] | p <- tail primes]) |
| 21:52:46 | × | sndr quits (~sander@user/sander) (Quit: So long! :)) |
| 21:55:33 | → | sander joins (~sander@user/sander) |
| 21:56:41 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 21:56:52 | <hpc> | does wheredb still have all the prime golf definitions? |
| 21:56:56 | <hpc> | @where prime_33 |
| 21:56:56 | <lambdabot> | I know nothing about prime_33. |
| 21:56:59 | <hpc> | @where prime33 |
| 21:56:59 | <lambdabot> | I know nothing about prime33. |
| 21:57:08 | <hpc> | hmm |
| 21:57:56 | <pavonia> | :t unionAll |
| 21:57:57 | <lambdabot> | error: Variable not in scope: unionAll |
| 21:58:17 | <qrpnxz> | it's from ord-list package |
| 21:58:44 | <qrpnxz> | sorry, it's data-ordlist |
| 21:58:52 | <qrpnxz> | https://hackage.haskell.org/package/data-ordlist-0.4.7.0/docs/Data-List-Ordered.html |
| 22:07:31 | → | _xor joins (~xor@74.215.182.83) |
| 22:10:45 | <[itchyjunk]> | Codewars has haskell challanges. I thought I would give one a try. It felt pretty easy :D |
| 22:10:45 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 22:10:46 | <[itchyjunk]> | https://bpa.st/CQWA |
| 22:11:13 | × | machinedgod quits (~machinedg@d172-219-86-154.abhsia.telus.net) (Remote host closed the connection) |
| 22:11:22 | <mrianbloom> | Can you improve compile times by being specific about module imports and outputs? |
| 22:11:33 | <mrianbloom> | exports |
| 22:11:36 | → | machinedgod joins (~machinedg@d172-219-86-154.abhsia.telus.net) |
| 22:11:48 | <c_wraith> | I doubt that's going to have a significant impact unless you have a *lot* of modules |
| 22:12:26 | × | merijn quits (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) (Ping timeout: 244 seconds) |
| 22:12:50 | <c_wraith> | however, good module structure can have a huge impact. If you can set things up so that common changes don't require recompiling most modules, that is a big win |
| 22:14:16 | <mrianbloom> | I see. I have hundreds of modules :) |
| 22:15:02 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 22:15:36 | <c_wraith> | I'd expect explicit exports to matter more than explicit imports. an import list still needs to be checked against the exports. But the export list shrinking means every import has fewer things to check against. |
| 22:16:32 | <c_wraith> | [itchyjunk]: dnaToRna could just be written as "map go" |
| 22:16:54 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 22:17:24 | <qrpnxz> | "your language feature is my library" https://hackage.haskell.org/package/named-0.3.0.1/docs/Named.html |
| 22:17:26 | <qrpnxz> | unbelievable |
| 22:18:01 | <c_wraith> | I mean, that *is* using extra language features |
| 22:18:07 | × | marcusxavier quits (~marcusxav@2804:6660:ff12:ef70:5973:6a7e:c03d:efea) (Ping timeout: 244 seconds) |
| 22:20:10 | <qrpnxz> | it's not exposing an underlying named parameter feature, it's constructing one |
| 22:20:52 | <c_wraith> | true, but it's making use of the OverloadedLabels language extension to get syntax to do it |
| 22:21:07 | <[itchyjunk]> | c_wraith, yes someone suggested i can fmap go |
| 22:21:12 | <qrpnxz> | yes |
| 22:21:17 | <[itchyjunk]> | but idk if that's more efficient/better or not hmmm |
| 22:21:28 | <c_wraith> | it's not going to matter in that case. |
| 22:21:29 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 22:21:35 | <c_wraith> | But sometimes it can |
| 22:21:43 | <[itchyjunk]> | hmmmm |
| 22:23:11 | <qrpnxz> | it saves the time of writing that function XD |
| 22:27:11 | → | segfaultfizzbuzz joins (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) |
| 22:30:36 | → | marcusxavier joins (~marcusxav@2804:6660:ff12:ef70:5973:6a7e:c03d:efea) |
| 22:34:44 | × | adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection) |
| 22:35:09 | → | adanwan joins (~adanwan@gateway/tor-sasl/adanwan) |
| 22:36:44 | × | dsrt^ quits (~dsrt@c-73-207-207-252.hsd1.ga.comcast.net) (Ping timeout: 244 seconds) |
| 22:36:58 | × | seriously quits (~seriously@ool-18bd55d4.dyn.optonline.net) (Ping timeout: 252 seconds) |
| 22:37:26 | <[itchyjunk]> | :t map |
| 22:37:27 | <lambdabot> | (a -> b) -> [a] -> [b] |
| 22:37:42 | <[itchyjunk]> | :t fmap |
| 22:37:43 | <lambdabot> | Functor f => (a -> b) -> f a -> f b |
| 22:38:21 | <geekosaur> | % :t fmap @[] |
| 22:38:21 | <yahb2> | <interactive>:1:1: error: ; Pattern syntax in expression context: fmap@[] ; Did you mean to enable TypeApplications? |
| 22:38:39 | <geekosaur> | % :set -XTypeApplications |
| 22:38:39 | <yahb2> | <no output> |
| 22:38:41 | <geekosaur> | % :t fmap @[] |
| 22:38:41 | <yahb2> | fmap @[] :: (a -> b) -> [a] -> [b] |
| 22:38:50 | × | jgeerds quits (~jgeerds@55d437cf.access.ecotel.net) (Remote host closed the connection) |
| 22:39:10 | <[itchyjunk]> | so map is easy to read, take a function that maps a to b and a list full of a and return a list full of b |
| 22:39:30 | × | inversed quits (~inversed@05412f44.skybroadband.com) (Ping timeout: 240 seconds) |
| 22:39:40 | <[itchyjunk]> | in second case, its taking a function that maps a to b |
| 22:39:52 | <[itchyjunk]> | then i am lost :x |
| 22:40:18 | <geekosaur> | :t fmap @Maybe |
| 22:40:19 | <lambdabot> | error: |
| 22:40:19 | <lambdabot> | Pattern syntax in expression context: fmap@Maybe |
| 22:40:19 | <lambdabot> | Did you mean to enable TypeApplications? |
| 22:40:23 | <geekosaur> | whoops |
| 22:40:27 | <geekosaur> | % :t fmap @Maybe |
| 22:40:27 | <yahb2> | fmap @Maybe :: (a -> b) -> Maybe a -> Maybe b |
| 22:41:00 | → | inversed joins (~inversed@05412f44.skybroadband.com) |
| 22:41:34 | <geekosaur> | it takes a value "contained in" a type that has a Functor instance. 9"contained in" being a bit of a lie, as IO is a Functor) |
| 22:41:35 | × | segfaultfizzbuzz quits (~segfaultf@157-131-253-58.fiber.dynamic.sonic.net) (Ping timeout: 260 seconds) |
| 22:41:49 | <geekosaur> | so it maps over the Functor |
| 22:41:54 | <yin> | think of `[a]` as `[] a` |
| 22:42:13 | → | pgass joins (~pg@190.247.245.154) |
| 22:42:34 | <yin> | which you can actually write, foe the same effect |
| 22:42:36 | <geekosaur> | this in fact defines a Functor; it's a type constructor which can retain its shape |
| 22:43:00 | <[itchyjunk]> | hmmm |
| 22:43:06 | <geekosaur> | so [a] becomes [b], Just a becomes Just b, IO a becomes IO b, etc. |
| 22:43:50 | <yin> | f a becomes f b |
| 22:43:51 | <geekosaur> | but Set a can't become Set b because its shape would change (thus Set doesn't have a Functor instance) |
| 22:44:49 | <[itchyjunk]> | Hmm, i vaguely get it. But I don't think i understand shape |
| 22:45:00 | <geekosaur> | it's kinda fuzzy |
| 22:45:27 | <geekosaur> | for things like Maybe and [] it's easy: a Just a can't become a Nothing, it has to become a Just b |
| 22:46:05 | <geekosaur> | for Set it'[s harder, because there's an Ord constraint and that constraint's shape ("ordering") can't be captured by a Functor |
| 22:47:08 | <[itchyjunk]> | hm |
| 22:47:09 | <geekosaur> | there is a more formal definition of what I called "shape", but at some level it becomes fuzzy again 🙂 |
| 22:47:44 | × | matthewmosior quits (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds) |
| 22:48:34 | <geekosaur> | (for a list, you know the resulting list has the same relative ordering and the same number of elements) |
| 22:48:49 | <geekosaur> | (which describes the shape of a list) |
| 22:50:15 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 276 seconds) |
| 22:51:23 | × | shapr quits (~user@2600:4040:2d31:7100:a4a4:5e03:eeb6:d024) (Remote host closed the connection) |
| 22:56:33 | → | dsrt^ joins (~dsrt@c-73-207-207-252.hsd1.ga.comcast.net) |
| 22:57:02 | → | Shires joins (~Shires@user/shires) |
| 22:57:23 | × | [Leary] quits (~Leary]@122-58-224-198-vdsl.sparkbb.co.nz) (Ping timeout: 244 seconds) |
| 22:57:52 | ← | Shires parts (~Shires@user/shires) () |
| 22:59:23 | × | marcusxavier quits (~marcusxav@2804:6660:ff12:ef70:5973:6a7e:c03d:efea) (Ping timeout: 272 seconds) |
| 23:00:45 | → | Lumia joins (~Lumia@c-24-34-172-110.hsd1.ma.comcast.net) |
| 23:00:46 | → | moonsheep joins (~user@user/moonsheep) |
| 23:02:46 | <c_wraith> | thanks to parametricity, "same shape" ends up being formally expressed as "for all x :: T a, (fmap id x) is equivalent to x" |
| 23:03:41 | <monochrom> | fmap f . fmap g = fmap (f . g) also helps. |
| 23:05:14 | <c_wraith> | I'm pretty sure that one doesn't even need to be checked in Haskell, thanks to parametricity. |
| 23:05:24 | <c_wraith> | that just follows from fmap id = id |
| 23:05:43 | <monochrom> | But if you understand "(a->b) -> [] a -> [] b" then fmap is just generalizing from [] to f. |
| 23:05:50 | × | Pickchea quits (~private@user/pickchea) (Quit: Leaving) |
| 23:05:59 | <monochrom> | Yes that's right, [a] is syntax sugar for [] a |
| 23:06:08 | <geekosaur> | which is why I started out by demonstrating that fmap on [] is map |
| 23:06:45 | × | adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection) |
| 23:07:25 | <yin> | any reason why we can't just generalize map already? |
| 23:07:58 | <monochrom> | I don't know. We did generalize length. |
| 23:08:05 | <c_wraith> | the only reason I think is any good is that it'd break a lot of Functor definitions in the wild |
| 23:08:34 | <monochrom> | Or rather, I know. |
| 23:09:05 | <monochrom> | Standard library decisions are social, cultural, and human; not technical or logically consistent. |
| 23:09:16 | <yin> | c_wraith: how would it break? |
| 23:09:51 | <yin> | we could keep fmap like we kept return |
| 23:10:03 | <geekosaur> | people expect map to force lists |
| 23:10:22 | <monochrom> | Well, I thought people expected length to force lists, too. |
| 23:11:06 | <geekosaur> | sadly that's where generalizing map will bite hardest: the number of people who rely on map to ensure Foldable/Traversable is on a list |
| 23:11:16 | <yin> | people who don't force it in signatures deserve to have their code break >=) |
| 23:11:18 | <monochrom> | On top of that, people hated how length forces Int and asked why it is not synonym of genericLength already. |
| 23:11:22 | <geekosaur> | and to raise a type error if it isn't |
| 23:12:07 | <yin> | slippery slope then, i get it |
| 23:12:08 | → | adanwan joins (~adanwan@gateway/tor-sasl/adanwan) |
| 23:12:36 | <monochrom> | Haskell was not designed by AI. |
| 23:12:49 | <yin> | then we would complain about everywhere Int is used innapropriedly |
| 23:12:54 | → | matthewmosior joins (~matthewmo@173.170.253.91) |
| 23:12:59 | <Bulby[m]> | i want to see a language that was designed by an ai |
| 23:14:28 | → | marcusxavier joins (~marcusxav@2804:6660:ff12:ef70:5973:6a7e:c03d:efea) |
| 23:15:25 | → | nate4 joins (~nate@98.45.169.16) |
| 23:17:19 | <[itchyjunk]> | hmm |
| 23:28:18 | × | marcusxavier quits (~marcusxav@2804:6660:ff12:ef70:5973:6a7e:c03d:efea) (Quit: WeeChat 3.6) |
| 23:29:07 | <qrpnxz> | type application is standard now in GHC no? so you could do map @[] or "where lmap = map @[]" or "where lmap :: ...; lmap = map" etc. etc. i mean it's such a niche use case to force list so really take your pick and let us have map! (though tbh fmap is just fine though it is just a bit sad that it isn't simply and beautifully "map") |
| 23:34:12 | <yushyin> | map was polymorphic in the past :) |
| 23:34:21 | <qrpnxz> | i'm dead |
| 23:37:30 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 240 seconds) |
| 23:38:17 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 23:39:28 | <yushyin> | afaik, it was made monophoric for didactic reasons and fmap was introduced for it. it was probably thought that difficult type errors because of polymorphism could confuse newcomers too much? |
| 23:41:20 | <geekosaur> | …and then we made all the rest of Data.List be Foldable anyway |
| 23:41:22 | <monochrom> | Type application is not standard in GHC. |
| 23:41:49 | × | chomwitt quits (~chomwitt@2a02:587:dc00:5a00:f45c:29e7:726f:443d) (Ping timeout: 272 seconds) |
| 23:42:06 | <monochrom> | If you want to do fmap@[] you have to turn on the extension. |
| 23:42:35 | <monochrom> | Most of us turn off that extension. That's how de facto non-standard it is. |
| 23:42:39 | <qrpnxz> | it's a stable extension that is part of the GHC2021 set |
| 23:42:59 | <qrpnxz> | why would you turn it off |
| 23:44:39 | <geekosaur> | because you only know how to use it safely if you know the oirder in which type variables were defined |
| 23:44:54 | <monochrom> | I don't need it, and KISS. |
| 23:45:09 | → | mvk joins (~mvk@2607:fea8:5ce3:8500::909a) |
| 23:45:25 | <monochrom> | I don't even teach do-notation to my students >:) |
| 23:45:38 | <geekosaur> | they even had to add special syntax so people can define their type variables' visibility in a specific order for TypeApplications |
| 23:46:05 | <qrpnxz> | monochrom: lol oof |
| 23:46:37 | <qrpnxz> | geekosaur: you make explicit forall sound more complicated than it really is lol |
| 23:46:46 | <geekosaur> | it's more than explicit forall |
| 23:47:11 | <qrpnxz> | how |
| 23:47:33 | <geekosaur> | the order in which you write type variables matters. they added extra braces so you can still write type variables in the order they need to be for your type signature, but still declare them for TypeApplications |
| 23:48:14 | <qrpnxz> | mmm could you give an example |
| 23:49:03 | <geekosaur> | https://downloads.haskell.org/ghc/9.2.1/docs/html/users_guide/exts/type_applications.html#ordering-of-specified-variables |
| 23:49:41 | <geekosaur> | and the next section talks about the brace syntax |
| 23:49:46 | × | Tuplanolla quits (~Tuplanoll@91-159-69-97.elisa-laajakaista.fi) (Quit: Leaving.) |
| 23:50:08 | <monochrom> | I reckon that one day GHC2021 could be pretty standard, but not today. |
| 23:50:19 | <geekosaur> | the result of this is that many people consider TypeApplications fundamentally unstable and unsafe |
| 23:50:40 | <geekosaur> | and are Not Happy that it made GHC2021 |
| 23:50:41 | <qrpnxz> | oh i see that's nice |
| 23:50:54 | <qrpnxz> | (talking about the brace syntax) |
| 23:51:11 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:5546:a014:fe40:2124) (Remote host closed the connection) |
| 23:52:01 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 268 seconds) |
| 23:52:17 | <qrpnxz> | i don't see how any of what you mentioned either implies unstable or unsafe. |
| 23:52:52 | <qrpnxz> | is it likely that typeapplications will change a lot of fundamentally from how it currently works? |
| 23:53:00 | <qrpnxz> | does it allow unsound things to happen? |
| 23:53:03 | <geekosaur> | change your type signature in a way that should be equivalent, and suddenly TypeApplications breaks |
| 23:53:07 | <monochrom> | I don't go as far as the wordings "unstable" or "unsafe". My wording is the milder "fragile", "the devil is in the details". I mean, it can't be worse than TeX, but TeX has not been described as unstable or unsafe. Just fragile. :) |
| 23:53:22 | <qrpnxz> | geekosaur: well you changed your API, it's like changing the order of your variables |
| 23:53:30 | → | merijn joins (~merijn@c-001-001-023.client.esciencecenter.eduvpn.nl) |
| 23:53:35 | <geekosaur> | but that has never been part of the API |
| 23:53:42 | <maerwald> | didn't SPJ talk about... what was it "big lambda" for types that would make type applications obsolete? |
| 23:53:47 | <geekosaur> | except suddenly it is and there's nothing to help you deal with it |
| 23:54:02 | <geekosaur> | the types would be the same, but TypeApplications suddenly breaks |
| 23:54:04 | <qrpnxz> | didn't you just show how to deal with it tho with the braces? |
| 23:54:10 | <qrpnxz> | and the explicit forall |
| 23:54:22 | <geekosaur> | which you have to know about and opt in to |
| 23:54:33 | <monochrom> | Hrm big lambda would obsolete many many things. Including a large chunk of type inference too :) |
| 23:54:48 | <qrpnxz> | if you haven't opted in then user knows that they cannot relay on your type variables |
| 23:54:49 | <geekosaur> | because someone you don't know a year later decided to use TypeApplications with your library |
| 23:54:55 | <monochrom> | (Unless I'm thinking of a different big lambda.) |
| 23:55:19 | <qrpnxz> | honestly by default you should probably not rely on type variable order unless explicitly documented probably |
| 23:55:20 | <geekosaur> | and the user doesn't know that you didn't declare them |
| 23:55:52 | <geekosaur> | it is, in short, not part of the contract implied by a type signature |
| 23:57:13 | <qrpnxz> | does haddock show explict forall if you put explicit forall in your code |
| 23:57:42 | <geekosaur> | haddock shows forall. it does not show the braces if you need to use them |
| 23:58:08 | <qrpnxz> | eh, too bad. One day :) |
| 23:59:18 | × | moonsheep quits (~user@user/moonsheep) (Remote host closed the connection) |
| 23:59:26 | × | epolanski quits (uid312403@id-312403.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
All times are in UTC on 2022-07-16.