2020-11-02 00:03:25 +0100 | wroathe | (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) |
2020-11-02 00:03:41 +0100 | totte | (~totte@chakra/totte) (Ping timeout: 256 seconds) |
2020-11-02 00:03:49 +0100 | LKoen | (~LKoen@127.251.88.92.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”) |
2020-11-02 00:03:49 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 264 seconds) |
2020-11-02 00:06:04 +0100 | howdoi | (uid224@gateway/web/irccloud.com/x-czxukgvxykkjyknw) (Quit: Connection closed for inactivity) |
2020-11-02 00:06:37 +0100 | sawebb_ | (~sawebb@75.115.195.184) (Ping timeout: 258 seconds) |
2020-11-02 00:07:53 +0100 | <hoppfull> | I have a Q MyType. Is there no way of getting MyType out? Am I missing something here? Am I supposed to coerce it or something? runQ only seems to evaluate the expression at runtime. |
2020-11-02 00:07:56 +0100 | totte | (~totte@chakra/totte) |
2020-11-02 00:08:23 +0100 | <dolio> | Q is a monad, right? |
2020-11-02 00:09:35 +0100 | <hoppfull> | Yeah |
2020-11-02 00:09:51 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2020-11-02 00:09:57 +0100 | <hoppfull> | So what's the point of template haskell? |
2020-11-02 00:10:17 +0100 | <dolio> | To generate Haskell code programatically at compile time. |
2020-11-02 00:10:17 +0100 | <hoppfull> | I got the impression I could read files and stuff on compile time with runIO |
2020-11-02 00:13:48 +0100 | Guest_70 | (0253f68a@bl22-246-138.dsl.telepac.pt) |
2020-11-02 00:14:01 +0100 | ski | (~ski@nc-2504-30.studat.chalmers.se) (Ping timeout: 264 seconds) |
2020-11-02 00:15:39 +0100 | elliott_ | (~elliott_@pool-108-51-141-12.washdc.fios.verizon.net) (Read error: Connection reset by peer) |
2020-11-02 00:16:04 +0100 | aarvar | (~foewfoiew@50.35.43.33) (Ping timeout: 240 seconds) |
2020-11-02 00:16:25 +0100 | Guest_70 | (0253f68a@bl22-246-138.dsl.telepac.pt) (Remote host closed the connection) |
2020-11-02 00:16:50 +0100 | shutdown_-h_now | (~arjan@2001:1c06:2d0b:2312:44d9:76d7:3eb0:9793) (Ping timeout: 264 seconds) |
2020-11-02 00:17:23 +0100 | <cheater> | that's not what runIO is for |
2020-11-02 00:17:25 +0100 | <cheater> | :t runIO |
2020-11-02 00:17:27 +0100 | <lambdabot> | error: Variable not in scope: runIO |
2020-11-02 00:17:27 +0100 | <dolio> | Well, in the error message you mentioned above, it wasn't even complaining about the Q part, it was complaining that the things inside the Q didn't match. |
2020-11-02 00:19:03 +0100 | hoppfull | (55e07432@c-3274e055.19-9-64736c10.bbcust.telenor.se) (Remote host closed the connection) |
2020-11-02 00:19:13 +0100 | bitmapper | (uid464869@gateway/web/irccloud.com/x-whgkwnxufenzozzn) (Quit: Connection closed for inactivity) |
2020-11-02 00:19:14 +0100 | ski | (~ski@nc-2504-30.studat.chalmers.se) |
2020-11-02 00:21:26 +0100 | <dolio> | Ergo, you don't need to 'get something out' of Q, you need to use it like any other monad. |
2020-11-02 00:22:24 +0100 | shutdown_-h_now | (~arjan@2001:1c06:2d0b:2312:955d:b3db:6b4c:c2ab) |
2020-11-02 00:22:30 +0100 | Sheilong | (uid293653@gateway/web/irccloud.com/x-arvrrpvtmfjsqvdb) (Quit: Connection closed for inactivity) |
2020-11-02 00:23:49 +0100 | britva | (~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep) |
2020-11-02 00:24:00 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
2020-11-02 00:24:19 +0100 | ski | (~ski@nc-2504-30.studat.chalmers.se) (Ping timeout: 260 seconds) |
2020-11-02 00:24:27 +0100 | p-core | (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Ping timeout: 268 seconds) |
2020-11-02 00:24:49 +0100 | jumper149 | (~jumper149@ip185225.wh.uni-hannover.de) (Quit: WeeChat 2.9) |
2020-11-02 00:24:55 +0100 | p-core | (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) |
2020-11-02 00:25:58 +0100 | Unhammer | (~Unhammer@gateway/tor-sasl/unhammer) (Remote host closed the connection) |
2020-11-02 00:26:15 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.) |
2020-11-02 00:26:39 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 00:26:40 +0100 | Unhammer | (~Unhammer@gateway/tor-sasl/unhammer) |
2020-11-02 00:28:24 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2020-11-02 00:28:42 +0100 | invaser | (~Thunderbi@31.148.23.125) |
2020-11-02 00:31:42 +0100 | Tops21 | (~Tobias@dyndsl-095-033-023-063.ewe-ip-backbone.de) (Read error: Connection reset by peer) |
2020-11-02 00:32:52 +0100 | son0p | (~son0p@181.136.122.143) (Remote host closed the connection) |
2020-11-02 00:34:03 +0100 | ski | (~ski@nc-2504-30.studat.chalmers.se) |
2020-11-02 00:35:45 +0100 | unihernandez22 | (~Unai@168.197.200.20) |
2020-11-02 00:36:54 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:419f:7551:94a4:41c1) |
2020-11-02 00:41:52 +0100 | argent0 | (~argent0@168.227.96.4) |
2020-11-02 00:42:10 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2020-11-02 00:43:09 +0100 | <unihernandez22> | Hi |
2020-11-02 00:44:00 +0100 | hackage | GPipe-GLFW 1.4.1.4 - GLFW OpenGL context creation for GPipe https://hackage.haskell.org/package/GPipe-GLFW-1.4.1.4 (plredmond) |
2020-11-02 00:44:01 +0100 | unihernandez22 | (~Unai@168.197.200.20) (Quit: Leaving) |
2020-11-02 00:44:44 +0100 | bitmapper | (uid464869@gateway/web/irccloud.com/x-kktozexnvkkmtbir) |
2020-11-02 00:47:06 +0100 | elliott__ | (~elliott@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 256 seconds) |
2020-11-02 00:48:01 +0100 | Gurkenglas | (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 258 seconds) |
2020-11-02 00:49:46 +0100 | thecoffemaker | (~thecoffem@unaffiliated/thecoffemaker) (Ping timeout: 265 seconds) |
2020-11-02 00:51:00 +0100 | ahmr88 | (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection) |
2020-11-02 00:51:17 +0100 | Gurkenglas | (~Gurkengla@unaffiliated/gurkenglas) |
2020-11-02 00:51:18 +0100 | ahmr88 | (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) |
2020-11-02 00:51:47 +0100 | ahmr88 | (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection) |
2020-11-02 00:52:06 +0100 | ahmr88 | (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) |
2020-11-02 00:52:35 +0100 | ahmr88 | (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection) |
2020-11-02 00:52:47 +0100 | thecoffemaker | (~thecoffem@unaffiliated/thecoffemaker) |
2020-11-02 00:54:44 +0100 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving) |
2020-11-02 00:58:56 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:419f:7551:94a4:41c1) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-11-02 00:59:51 +0100 | conal | (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
2020-11-02 01:00:02 +0100 | strattog | (~strattog@154.13.1.56) () |
2020-11-02 01:00:07 +0100 | atk | (~Arch-TK@ircpuzzles/staff/Arch-TK) (Quit: Well this is unexpected.) |
2020-11-02 01:00:32 +0100 | atk | (~Arch-TK@erebus.the-tk.com) |
2020-11-02 01:02:17 +0100 | conal | (~conal@64.71.133.70) |
2020-11-02 01:02:25 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-11-02 01:02:46 +0100 | conal | (~conal@64.71.133.70) (Client Quit) |
2020-11-02 01:04:05 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:419f:7551:94a4:41c1) |
2020-11-02 01:08:02 +0100 | sajith | (~sajith@fsf/member/nonzen) |
2020-11-02 01:08:37 +0100 | sajith_ | (~sajith@fsf/member/nonzen) |
2020-11-02 01:09:21 +0100 | Gurkenglas_ | (Gurkenglas@gateway/vpn/protonvpn/gurkenglas) |
2020-11-02 01:10:05 +0100 | mimi_vx | (~mimi@2a01:490:16:1026:8cbe:b3f3:f284:209c) (Ping timeout: 268 seconds) |
2020-11-02 01:12:52 +0100 | Gurkenglas | (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 246 seconds) |
2020-11-02 01:14:04 +0100 | invaser | (~Thunderbi@31.148.23.125) (Ping timeout: 240 seconds) |
2020-11-02 01:14:38 +0100 | kritzefitz | (~kritzefit@212.86.56.80) (Remote host closed the connection) |
2020-11-02 01:17:52 +0100 | Varis | (~Tadas@unaffiliated/varis) (Remote host closed the connection) |
2020-11-02 01:19:36 +0100 | nckx | (~nckx@tobias.gr) (Quit: Updating my Guix System — https://guix.gnu.org) |
2020-11-02 01:19:52 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2020-11-02 01:20:19 +0100 | conal | (~conal@198.8.81.68) |
2020-11-02 01:20:42 +0100 | sam___ | (~sam@75.116.205.77.rev.sfr.net) |
2020-11-02 01:23:13 +0100 | nckx | (~nckx@tobias.gr) |
2020-11-02 01:24:31 +0100 | invaser | (~Thunderbi@31.148.23.125) |
2020-11-02 01:24:52 +0100 | ahmr88 | (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) |
2020-11-02 01:28:29 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-11-02 01:28:47 +0100 | invaser | (~Thunderbi@31.148.23.125) (Ping timeout: 260 seconds) |
2020-11-02 01:31:38 +0100 | aarvar | (~foewfoiew@50.35.43.33) |
2020-11-02 01:32:14 +0100 | fendor_ | (~fendor@91.141.1.122.wireless.dyn.drei.com) |
2020-11-02 01:32:31 +0100 | Varis | (~Tadas@unaffiliated/varis) |
2020-11-02 01:34:08 +0100 | argent0 | (~argent0@168.227.96.4) (Ping timeout: 268 seconds) |
2020-11-02 01:35:16 +0100 | fendor | (~fendor@91.141.0.119.wireless.dyn.drei.com) (Ping timeout: 272 seconds) |
2020-11-02 01:36:13 +0100 | mimi_vx | (~mimi@2a01:490:16:1026:8cbe:b3f3:f284:209c) |
2020-11-02 01:37:03 +0100 | tmciver | (~tmciver@cpe-172-101-40-226.maine.res.rr.com) (Quit: leaving) |
2020-11-02 01:37:22 +0100 | tmciver | (~tmciver@cpe-172-101-40-226.maine.res.rr.com) |
2020-11-02 01:39:34 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:419f:7551:94a4:41c1) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-11-02 01:39:43 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-11-02 01:41:04 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:419f:7551:94a4:41c1) |
2020-11-02 01:41:06 +0100 | xerox_ | (~xerox@unaffiliated/xerox) |
2020-11-02 01:41:43 +0100 | bendo | (~bendo@130.61.122.121) (Ping timeout: 256 seconds) |
2020-11-02 01:42:28 +0100 | Tario | (~Tario@200.119.185.187) (Ping timeout: 260 seconds) |
2020-11-02 01:42:43 +0100 | bendo | (~bendo@130.61.122.121) |
2020-11-02 01:42:52 +0100 | Chi1thangoo | (~Chi1thang@87.112.60.168) (Ping timeout: 272 seconds) |
2020-11-02 01:43:10 +0100 | Tario | (~Tario@201.191.91.236) |
2020-11-02 01:44:14 +0100 | plutoniix | (~q@175.176.222.7) |
2020-11-02 01:44:26 +0100 | christo | (~chris@81.96.113.213) |
2020-11-02 01:44:43 +0100 | pera | (~pera@unaffiliated/pera) (Ping timeout: 246 seconds) |
2020-11-02 01:45:32 +0100 | machinedgod | (~machinedg@207.253.244.210) (Ping timeout: 256 seconds) |
2020-11-02 01:46:22 +0100 | pera | (~pera@unaffiliated/pera) |
2020-11-02 01:50:49 +0100 | Aquazi | (uid312403@gateway/web/irccloud.com/x-qmwibrdpzphrklso) (Quit: Connection closed for inactivity) |
2020-11-02 01:51:42 +0100 | <Raito_Bezarius> | can I unpack Maybe [a] into [a] using prelude? |
2020-11-02 01:51:50 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:419f:7551:94a4:41c1) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-11-02 01:51:50 +0100 | <Raito_Bezarius> | saying that None → [] and Some l → l |
2020-11-02 01:51:57 +0100 | Nachtgespenst | (~user@unaffiliated/siracusa) |
2020-11-02 01:52:08 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-02 01:52:17 +0100 | machinedgod | (~machinedg@207.253.244.210) |
2020-11-02 01:52:20 +0100 | <c_wraith> | why Prelude in particular? |
2020-11-02 01:52:32 +0100 | <Raito_Bezarius> | hm, rather base libraries then |
2020-11-02 01:53:01 +0100 | <c_wraith> | :t fromMaybe [] |
2020-11-02 01:53:03 +0100 | <lambdabot> | Maybe [a] -> [a] |
2020-11-02 01:53:07 +0100 | mbomba | (~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca) |
2020-11-02 01:53:09 +0100 | <Raito_Bezarius> | thanks, c_wraith ! |
2020-11-02 01:53:54 +0100 | elliott__ | (~elliott@pool-108-51-141-12.washdc.fios.verizon.net) |
2020-11-02 01:54:09 +0100 | christo | (~chris@81.96.113.213) |
2020-11-02 01:54:38 +0100 | argent0 | (~argent0@168.227.96.4) |
2020-11-02 01:55:14 +0100 | Axman6 | (~Axman6@pdpc/supporter/student/Axman6) |
2020-11-02 01:55:33 +0100 | Guest95559 | (~ccallahan@139.28.218.148) |
2020-11-02 01:55:57 +0100 | Deide | (~Deide@217.155.19.23) (Quit: Seeee yaaaa) |
2020-11-02 01:56:55 +0100 | olligobber | (olligobber@gateway/vpn/privateinternetaccess/olligobber) |
2020-11-02 01:58:35 +0100 | wroathe_ | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2020-11-02 01:59:06 +0100 | nerdypepper | (nerdypeppe@152.67.160.69) (Quit: bye) |
2020-11-02 01:59:18 +0100 | nerdypepper | (nerdypeppe@152.67.160.69) |
2020-11-02 01:59:25 +0100 | DavidEichmann | (~david@43.240.198.146.dyn.plus.net) (Ping timeout: 246 seconds) |
2020-11-02 01:59:59 +0100 | wroathe | (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) (Ping timeout: 260 seconds) |
2020-11-02 02:00:38 +0100 | sam___ | (~sam@75.116.205.77.rev.sfr.net) (Ping timeout: 264 seconds) |
2020-11-02 02:01:06 +0100 | Deide | (~Deide@217.155.19.23) |
2020-11-02 02:02:19 +0100 | conal | (~conal@198.8.81.68) (Quit: Computer has gone to sleep.) |
2020-11-02 02:02:37 +0100 | carlomagno | (~cararell@148.87.23.11) |
2020-11-02 02:03:14 +0100 | wroathe_ | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds) |
2020-11-02 02:05:01 +0100 | elliott__ | (~elliott@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 246 seconds) |
2020-11-02 02:06:31 +0100 | m0rphism | (~m0rphism@HSI-KBW-046-005-177-122.hsi8.kabel-badenwuerttemberg.de) (Ping timeout: 260 seconds) |
2020-11-02 02:08:08 +0100 | <koz_> | foldMap (: []) works too I think? |
2020-11-02 02:09:37 +0100 | DigitalKiWicked | DigitalKiwi |
2020-11-02 02:10:47 +0100 | aarvar | (~foewfoiew@50.35.43.33) (Ping timeout: 260 seconds) |
2020-11-02 02:10:50 +0100 | mimi_vx | (~mimi@2a01:490:16:1026:8cbe:b3f3:f284:209c) (Ping timeout: 264 seconds) |
2020-11-02 02:11:10 +0100 | <MarcelineVQ> | that'd be Maybe a -> [a] but foldMap id should be fine |
2020-11-02 02:13:28 +0100 | <MarcelineVQ> | > fold (Just [3]) -- I like to write fold instead of foldMap id tho |
2020-11-02 02:13:31 +0100 | <lambdabot> | [3] |
2020-11-02 02:13:53 +0100 | conal | (~conal@198.8.81.68) |
2020-11-02 02:14:01 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
2020-11-02 02:14:23 +0100 | <koz_> | MarcelineVQ: You could do 'foldMap pure' as well. |
2020-11-02 02:14:28 +0100 | <MarcelineVQ> | 'just prelude' would be maybe [] id tho |
2020-11-02 02:14:33 +0100 | <koz_> | But fold is the slickest. |
2020-11-02 02:14:42 +0100 | <koz_> | 'foldMap id' is Prelude-only-able. |
2020-11-02 02:15:16 +0100 | <MarcelineVQ> | watch this shit |
2020-11-02 02:15:22 +0100 | <MarcelineVQ> | > concat (Just [3]) |
2020-11-02 02:15:24 +0100 | <lambdabot> | [3] |
2020-11-02 02:16:04 +0100 | ahmr88 | (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Ping timeout: 240 seconds) |
2020-11-02 02:16:25 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2020-11-02 02:17:35 +0100 | <koz_> | MarcelineVQ: Ooooooo |
2020-11-02 02:17:39 +0100 | <koz_> | SpoooOOOky |
2020-11-02 02:17:50 +0100 | LambdaScientist | (~Android@24.42.199.176) |
2020-11-02 02:18:18 +0100 | <hololeap> | was concat always Foldable t => t [a] -> [a]? |
2020-11-02 02:19:50 +0100 | <davean> | no, foldable didn't always exist, why? |
2020-11-02 02:21:44 +0100 | aarvar | (~foewfoiew@50.35.43.33) |
2020-11-02 02:22:14 +0100 | ericsagn1 | (~ericsagne@2405:6580:0:5100:24ed:9b41:b671:d88b) (Ping timeout: 268 seconds) |
2020-11-02 02:22:38 +0100 | Lord_of_Life_ | (~Lord@46.217.223.45) |
2020-11-02 02:24:43 +0100 | Lord_of_Life | (~Lord@46.217.216.248) (Ping timeout: 260 seconds) |
2020-11-02 02:25:29 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
2020-11-02 02:29:44 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-02 02:30:15 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
2020-11-02 02:30:19 +0100 | christo | (~chris@81.96.113.213) |
2020-11-02 02:31:43 +0100 | danso | (~dan@69-165-210-185.cable.teksavvy.com) |
2020-11-02 02:31:59 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-02 02:32:13 +0100 | christo | (~chris@81.96.113.213) |
2020-11-02 02:33:49 +0100 | ericsagn1 | (~ericsagne@2405:6580:0:5100:3b3a:dfa6:d69e:5cd8) |
2020-11-02 02:34:04 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:419f:7551:94a4:41c1) |
2020-11-02 02:35:33 +0100 | DataComputist | (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) (Quit: Leaving...) |
2020-11-02 02:38:20 +0100 | urodna | (~urodna@unaffiliated/urodna) (Read error: Connection reset by peer) |
2020-11-02 02:42:06 +0100 | DataComputist | (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) |
2020-11-02 02:42:07 +0100 | hpc | (~juzz@ip98-169-35-13.dc.dc.cox.net) (Ping timeout: 246 seconds) |
2020-11-02 02:42:10 +0100 | <edwardk> | clearly it should be redefined to 'foldMap toList', as the toList definition for list is the identify function, and then it can be (Foldable f, Foldable g) => f (g a) -> [a] |
2020-11-02 02:42:40 +0100 | <edwardk> | missed opportunity |
2020-11-02 02:43:14 +0100 | jedws | (~jedws@101.184.150.81) |
2020-11-02 02:43:22 +0100 | <edwardk> | we could kill so many catMaybes with that |
2020-11-02 02:44:00 +0100 | hpc | (~juzz@ip98-169-35-13.dc.dc.cox.net) |
2020-11-02 02:46:12 +0100 | aarvar | (~foewfoiew@50.35.43.33) (Ping timeout: 272 seconds) |
2020-11-02 02:46:40 +0100 | <dolio> | In Haskell 1.4 it was `MonadPlus m => [m a] -> m a` |
2020-11-02 02:48:03 +0100 | dmwit | (~dmwit@pool-108-18-228-100.washdc.fios.verizon.net) (Ping timeout: 260 seconds) |
2020-11-02 02:49:45 +0100 | dmwit | (~dmwit@pool-108-28-166-212.washdc.fios.verizon.net) |
2020-11-02 02:53:40 +0100 | mbomba | (~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca) (Quit: WeeChat 2.9) |
2020-11-02 02:57:30 +0100 | hackage | gargoyle 0.1.1.0 - Automatically spin up and spin down local daemons https://hackage.haskell.org/package/gargoyle-0.1.1.0 (abrar) |
2020-11-02 02:58:31 +0100 | hackage | gargoyle-postgresql-nix 0.3.0.0, gargoyle-postgresql 0.2.0.0 (abrar): https://qbin.io/joint-mixer-6yez |
2020-11-02 02:59:12 +0100 | kjak | (~kjak@pool-173-73-38-16.washdc.fios.verizon.net) (Ping timeout: 256 seconds) |
2020-11-02 02:59:30 +0100 | hackage | gargoyle-postgresql-connect 0.1.0.0 - Connect to gargoyle-managed postgresql instances https://hackage.haskell.org/package/gargoyle-postgresql-connect-0.1.0.0 (abrar) |
2020-11-02 03:03:45 +0100 | <hololeap> | i just remembered it being [[a]] -> [a], but maybe this was a simplification presented to beginners |
2020-11-02 03:05:35 +0100 | <davean> | ew, ugly, who uses lists? :-p |
2020-11-02 03:06:09 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:419f:7551:94a4:41c1) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-11-02 03:08:01 +0100 | leah2 | (~leah@vuxu.org) (Ping timeout: 264 seconds) |
2020-11-02 03:08:49 +0100 | Deide | (~Deide@217.155.19.23) (Quit: Seeee yaaaa) |
2020-11-02 03:09:04 +0100 | alp | (~alp@2a01:e0a:58b:4920:e0bd:5b09:72db:411d) (Ping timeout: 240 seconds) |
2020-11-02 03:10:16 +0100 | <dsal> | Is this #lisp? |
2020-11-02 03:10:44 +0100 | <davean> | Apparently. |
2020-11-02 03:10:58 +0100 | <davean> | /part |
2020-11-02 03:10:59 +0100 | <nshepperd> | hee, foldMap toList is a nice trick (but wait, is it efficient? maybe it should be toList . foldMap toDiffList) |
2020-11-02 03:11:04 +0100 | <davean> | /join #haskell |
2020-11-02 03:14:58 +0100 | cole-h | (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) |
2020-11-02 03:17:44 +0100 | akad_ | (~akad@109107030050.radomsko.vectranet.pl) (Ping timeout: 240 seconds) |
2020-11-02 03:18:09 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:419f:7551:94a4:41c1) |
2020-11-02 03:18:22 +0100 | ronbrz | (~ronbrz@207.229.174.134) |
2020-11-02 03:19:53 +0100 | jbox | (~atlas@unaffiliated/jbox) |
2020-11-02 03:20:17 +0100 | ech | (~user@gateway/tor-sasl/ech) (Remote host closed the connection) |
2020-11-02 03:22:16 +0100 | bennofs1 | (~benno@dslb-094-222-054-143.094.222.pools.vodafone-ip.de) (Quit: WeeChat 2.9) |
2020-11-02 03:22:50 +0100 | Gurkenglas__ | (~Gurkengla@unaffiliated/gurkenglas) |
2020-11-02 03:23:08 +0100 | wei2912 | (~wei2912@unaffiliated/wei2912) |
2020-11-02 03:23:44 +0100 | <Raito_Bezarius> | Dis there a way to easily debug when megaparsec seems to do an infinite loop? |
2020-11-02 03:23:46 +0100 | <Raito_Bezarius> | -d |
2020-11-02 03:23:57 +0100 | <Raito_Bezarius> | I tried to put dbg but it's quite tedious as I have many parsers |
2020-11-02 03:26:05 +0100 | Gurkenglas_ | (Gurkenglas@gateway/vpn/protonvpn/gurkenglas) (Ping timeout: 240 seconds) |
2020-11-02 03:26:48 +0100 | <dolio> | It was [[a]] -> [a] in Haskell 98 and 2010, I think. |
2020-11-02 03:27:23 +0100 | mimi_vx | (~mimi@2a01:490:16:1026:8cbe:b3f3:f284:209c) |
2020-11-02 03:30:34 +0100 | <sm[m]> | Raito_Bezarius: add a bunch of dbg, trace, or just an error call. Reload in ghci to see changes faster |
2020-11-02 03:30:58 +0100 | <Raito_Bezarius> | sm[m]: unfortunately adding a bunch didn't give me anything |
2020-11-02 03:31:11 +0100 | <Raito_Bezarius> | I think it was in the internals of makeExprTable |
2020-11-02 03:31:14 +0100 | <Raito_Bezarius> | or something |
2020-11-02 03:31:21 +0100 | <sm[m]> | move them around until you narrow down where it gets stuck |
2020-11-02 03:31:28 +0100 | stree | (~stree@50-108-72-205.adr01.mskg.mi.frontiernet.net) (Quit: Caught exception) |
2020-11-02 03:31:32 +0100 | <sm[m]> | or, comment out code until it stops doing that |
2020-11-02 03:31:46 +0100 | stree | (~stree@50-108-72-205.adr01.mskg.mi.frontiernet.net) |
2020-11-02 03:31:47 +0100 | <Raito_Bezarius> | I was wondering of a method which can "enable" some verbose mode in megaparsec in general |
2020-11-02 03:32:04 +0100 | <Raito_Bezarius> | this method of moving out things does not seem to scale well with a lot of parsers alas |
2020-11-02 03:32:16 +0100 | <Raito_Bezarius> | but maybe this is a proficiency thing |
2020-11-02 03:32:29 +0100 | <Raito_Bezarius> | (and I'm already using ghci+parseTest+reload) |
2020-11-02 03:32:41 +0100 | <hololeap> | \ |
2020-11-02 03:33:01 +0100 | <hololeap> | dolio: good to know. i remember seeing that in a tutorial somewhere. |
2020-11-02 03:33:18 +0100 | jbox | (~atlas@unaffiliated/jbox) ("WeeChat 2.9") |
2020-11-02 03:34:03 +0100 | <sm[m]> | in hledger, I do it in two ways. 1, include debug/trace statements in most parsers, which activates only with --debug=N. 2, insert such statements temporarily where needed, for quick troubleshooting in GHCI |
2020-11-02 03:35:03 +0100 | <hololeap> | Raito_Bezarius: just found this https://hackage.haskell.org/package/megaparsec-9.0.1/docs/Text-Megaparsec-Debug.html |
2020-11-02 03:35:39 +0100 | <hololeap> | from here https://hoogle.haskell.org/?hoogle=debug%20package%3Amegaparsec |
2020-11-02 03:35:42 +0100 | <sm[m]> | Raito_Bezarius: 1 (permanent, optional tracing) is handy to see the big picture, and for troubleshooting user installations. 2 (temporary tracing) is good for targetted debugging |
2020-11-02 03:35:49 +0100 | inkbottle | (~inkbottle@aaubervilliers-654-1-1-110.w83-200.abo.wanadoo.fr) |
2020-11-02 03:36:13 +0100 | <Raito_Bezarius> | hololeap: this is the dbg I spoke about afaik |
2020-11-02 03:36:14 +0100 | jespada | (~jespada@90.254.243.98) (Ping timeout: 272 seconds) |
2020-11-02 03:36:46 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-111-120.w86-198.abo.wanadoo.fr) (Ping timeout: 256 seconds) |
2020-11-02 03:36:46 +0100 | <Raito_Bezarius> | if a dbgAll would exist and would recursively set dbg to all subparsers that'd be nice |
2020-11-02 03:36:51 +0100 | <Raito_Bezarius> | but I suppose it'd create too much verbose output |
2020-11-02 03:37:07 +0100 | <sm[m]> | yes that would be nice, and yes would need to be optional |
2020-11-02 03:37:22 +0100 | <Raito_Bezarius> | I agree that would have to be optional |
2020-11-02 03:38:09 +0100 | <sm[m]> | you might need a bit more practice, it shouldn't take too many traces & ghci reloads to narrow down the problem |
2020-11-02 03:38:20 +0100 | jespada | (~jespada@90.254.245.49) |
2020-11-02 03:38:23 +0100 | <Raito_Bezarius> | in fact, some minutes after I realized what was going on |
2020-11-02 03:38:32 +0100 | <sm[m]> | heh |
2020-11-02 03:38:32 +0100 | <Raito_Bezarius> | but I admit that with too much tiredness in the blood, it's quite hard |
2020-11-02 03:38:42 +0100 | <Raito_Bezarius> | so I was wondering of a better way :p |
2020-11-02 03:38:49 +0100 | <Raito_Bezarius> | thanks for the advice sm[m] though :) |
2020-11-02 03:39:17 +0100 | <sm[m]> | I think both ways have their uses.. and stepping in a debugger would also be a nice option, not so easy for us alas |
2020-11-02 03:40:33 +0100 | acidjnk_new | (~acidjnk@p200300d0c7226044298aa97eef668aef.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
2020-11-02 03:40:44 +0100 | toorevitimirp | (~tooreviti@117.182.183.132) |
2020-11-02 03:42:44 +0100 | machinedgod | (~machinedg@207.253.244.210) (Ping timeout: 240 seconds) |
2020-11-02 03:42:58 +0100 | texasmynsted | (~texasmyns@212.102.45.115) (Remote host closed the connection) |
2020-11-02 03:43:55 +0100 | texasmynsted | (~texasmyns@212.102.45.115) |
2020-11-02 03:44:01 +0100 | <Raito_Bezarius> | is there a way to create record using Applicative syntax? |
2020-11-02 03:45:26 +0100 | <gobbleguy> | Raito_Bezarius: this is doing that: https://github.com/glguy/irc-core/blob/v2/src/Client/Configuration/ServerSettings.hs#L421-L430 |
2020-11-02 03:45:49 +0100 | <gobbleguy> | with the ApplicativeDo and RecordWildCards extensions |
2020-11-02 03:46:16 +0100 | <Raito_Bezarius> | thanks gobbleguy ! |
2020-11-02 03:46:38 +0100 | <sm[m]> | and you know about doing it with function syntax I guess: Foo field1val field2val ... |
2020-11-02 03:46:48 +0100 | electricityZZZZ | (~electrici@108-216-157-17.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds) |
2020-11-02 03:47:00 +0100 | <Raito_Bezarius> | oh right, sm[m] |
2020-11-02 03:47:04 +0100 | <Raito_Bezarius> | nice :-) |
2020-11-02 03:47:28 +0100 | <sm[m]> | but RecordWildCards requires less maintenance as your record changes. Might also be more error-prone/less-readable for some |
2020-11-02 03:48:34 +0100 | texasmynsted | (~texasmyns@212.102.45.115) (Ping timeout: 258 seconds) |
2020-11-02 03:48:38 +0100 | lemmih | (~lemmih@2406:3003:2072:44:51b:ea3d:d135:394c) (Ping timeout: 264 seconds) |
2020-11-02 03:50:29 +0100 | ddellacosta | (~dd@86.106.121.168) (Ping timeout: 258 seconds) |
2020-11-02 03:51:01 +0100 | sm[m] | loves RecordWildCards |
2020-11-02 03:51:23 +0100 | lemmih | (~lemmih@2406:3003:2072:44:2c90:c5a8:23d6:f0a8) |
2020-11-02 03:53:24 +0100 | drbean | (~drbean@TC210-63-209-71.static.apol.com.tw) |
2020-11-02 03:57:44 +0100 | xff0x | (~fox@2001:1a81:5341:f200:c657:86c0:ac7a:d369) (Ping timeout: 240 seconds) |
2020-11-02 03:58:04 +0100 | <xsperry> | what would make it more error-prone? |
2020-11-02 03:58:17 +0100 | Stanley00 | (~stanley00@unaffiliated/stanley00) |
2020-11-02 03:59:12 +0100 | akad_ | (~akad@109107030050.radomsko.vectranet.pl) |
2020-11-02 03:59:44 +0100 | <dsal> | NamedFieldPuns |
2020-11-02 03:59:45 +0100 | xff0x | (~fox@2001:1a81:537c:3e00:a716:2819:5bdd:ec6f) |
2020-11-02 04:00:02 +0100 | Guest95559 | (~ccallahan@139.28.218.148) () |
2020-11-02 04:03:05 +0100 | <dsal> | Er, that'd make it less error prone. |
2020-11-02 04:03:57 +0100 | mimi_vx | (~mimi@2a01:490:16:1026:8cbe:b3f3:f284:209c) (Ping timeout: 260 seconds) |
2020-11-02 04:03:59 +0100 | darjeeling_ | (~darjeelin@122.245.121.118) (Ping timeout: 268 seconds) |
2020-11-02 04:04:50 +0100 | juri_ | (~juri@178.63.35.222) (Ping timeout: 264 seconds) |
2020-11-02 04:06:38 +0100 | meowphius | (~meowphius@pool-96-237-166-172.bstnma.fios.verizon.net) (Ping timeout: 272 seconds) |
2020-11-02 04:06:54 +0100 | machinedgod | (~machinedg@207.253.244.210) |
2020-11-02 04:07:08 +0100 | <dsal> | gobbleguy: You can reduce the redundancy of the `fromMaybe "" <$> optSection'` there |
2020-11-02 04:07:54 +0100 | Gurkenglas__ | (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 272 seconds) |
2020-11-02 04:07:55 +0100 | <dsal> | Actually, more than that. |
2020-11-02 04:08:51 +0100 | lagothrix | (~lagothrix@unaffiliated/lagothrix) (Killed (barjavel.freenode.net (Nickname regained by services))) |
2020-11-02 04:09:00 +0100 | lagothrix | (~lagothrix@unaffiliated/lagothrix) |
2020-11-02 04:10:20 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-11-02 04:12:03 +0100 | machinedgod | (~machinedg@207.253.244.210) (Ping timeout: 260 seconds) |
2020-11-02 04:15:54 +0100 | darjeeling_ | (~darjeelin@115.215.40.228) |
2020-11-02 04:20:10 +0100 | dmwit | (~dmwit@pool-108-28-166-212.washdc.fios.verizon.net) (Ping timeout: 256 seconds) |
2020-11-02 04:21:54 +0100 | dmwit | (~dmwit@pool-108-28-166-212.washdc.fios.verizon.net) |
2020-11-02 04:22:04 +0100 | guest112 | (~user@49.5.6.87) |
2020-11-02 04:23:50 +0100 | elliott__ | (~elliott@pool-108-51-141-12.washdc.fios.verizon.net) |
2020-11-02 04:24:56 +0100 | mbomba | (~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca) |
2020-11-02 04:25:12 +0100 | nerdypepper | (nerdypeppe@152.67.160.69) (Quit: bye) |
2020-11-02 04:26:30 +0100 | nerdypepper | (nerdypeppe@152.67.160.69) |
2020-11-02 04:26:45 +0100 | SqueakyBeaver | (4a823731@cpe-74-130-55-49.kya.res.rr.com) |
2020-11-02 04:28:25 +0100 | theDon | (~td@94.134.91.196) (Ping timeout: 240 seconds) |
2020-11-02 04:29:16 +0100 | p-core | (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Ping timeout: 268 seconds) |
2020-11-02 04:30:37 +0100 | theDon | (~td@muedsl-82-207-238-028.citykom.de) |
2020-11-02 04:32:29 +0100 | Stanley00 | (~stanley00@unaffiliated/stanley00) (Read error: Connection reset by peer) |
2020-11-02 04:33:12 +0100 | Stanley00 | (~stanley00@unaffiliated/stanley00) |
2020-11-02 04:33:13 +0100 | pera | (~pera@unaffiliated/pera) (Ping timeout: 264 seconds) |
2020-11-02 04:34:00 +0100 | mimi_vx | (~mimi@2a01:490:16:1026:8cbe:b3f3:f284:209c) |
2020-11-02 04:36:30 +0100 | hackage | macrm 1.0.0.5 - Alternative rm command for macOS that remove files/dirs to the system trash https://hackage.haskell.org/package/macrm-1.0.0.5 (satosystems) |
2020-11-02 04:44:26 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
2020-11-02 04:44:58 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-02 04:45:19 +0100 | christo | (~chris@81.96.113.213) |
2020-11-02 04:47:58 +0100 | <dsal> | Woah, that's a lot of code. |
2020-11-02 04:49:31 +0100 | <MarcelineVQ> | system $ printf "mv %s %s" file dest |
2020-11-02 04:49:57 +0100 | <dsal> | https://github.com/dustin/trash/blob/master/trash.m <-- I wrote this in objc using the native support for trashing. |
2020-11-02 04:50:16 +0100 | <MarcelineVQ> | kernel support for trashring? |
2020-11-02 04:51:47 +0100 | <dsal> | The ~/.Trash thing is kind of special and the behavior of dragging files in is a little magic. The second time you drop a file in with the same name, e.g., you get some anti-collision stuff and such. |
2020-11-02 05:03:52 +0100 | akad_ | (~akad@109107030050.radomsko.vectranet.pl) (Ping timeout: 256 seconds) |
2020-11-02 05:04:46 +0100 | falafel | (~falafel@24-223-105-148.static.cablene.com) |
2020-11-02 05:04:54 +0100 | petersen | (~petersen@redhat/juhp) |
2020-11-02 05:05:10 +0100 | jedws | (~jedws@101.184.150.81) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-11-02 05:08:26 +0100 | mimi_vx | (~mimi@2a01:490:16:1026:8cbe:b3f3:f284:209c) (Ping timeout: 264 seconds) |
2020-11-02 05:10:05 +0100 | rekahsoft | (~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com) (Ping timeout: 240 seconds) |
2020-11-02 05:17:00 +0100 | johnw | (~johnw@haskell/developer/johnw) (Quit: ZNC - http://znc.in) |
2020-11-02 05:23:24 +0100 | SqueakyBeaver | (4a823731@cpe-74-130-55-49.kya.res.rr.com) (Ping timeout: 245 seconds) |
2020-11-02 05:27:04 +0100 | jedws | (~jedws@101.184.150.81) |
2020-11-02 05:41:36 +0100 | johnw | (~johnw@haskell/developer/johnw) |
2020-11-02 05:42:35 +0100 | dyeplexer | (~lol@unaffiliated/terpin) |
2020-11-02 05:43:37 +0100 | Stanley00 | (~stanley00@unaffiliated/stanley00) (Read error: Connection reset by peer) |
2020-11-02 05:43:46 +0100 | Saukk | (~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4) |
2020-11-02 05:44:06 +0100 | Stanley00 | (~stanley00@unaffiliated/stanley00) |
2020-11-02 05:52:22 +0100 | wei2912 | (~wei2912@unaffiliated/wei2912) (Remote host closed the connection) |
2020-11-02 05:54:03 +0100 | Sgeo | (~Sgeo@ool-18b982ad.dyn.optonline.net) (Read error: Connection reset by peer) |
2020-11-02 05:54:58 +0100 | vicfred | (~vicfred@unaffiliated/vicfred) (Quit: Leaving) |
2020-11-02 05:55:17 +0100 | Sgeo | (~Sgeo@ool-18b982ad.dyn.optonline.net) |
2020-11-02 05:55:25 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 240 seconds) |
2020-11-02 05:56:04 +0100 | Axman6 | (~Axman6@pdpc/supporter/student/Axman6) (Remote host closed the connection) |
2020-11-02 06:04:26 +0100 | Tario | (~Tario@201.191.91.236) (Ping timeout: 272 seconds) |
2020-11-02 06:05:44 +0100 | sh9 | (~sh9@softbank060116136158.bbtec.net) (Quit: sh9) |
2020-11-02 06:08:26 +0100 | Amras | (~Amras@unaffiliated/amras0000) (Ping timeout: 264 seconds) |
2020-11-02 06:08:37 +0100 | justsomeguy | (~justsomeg@216.186.218.241) |
2020-11-02 06:08:37 +0100 | justsomeguy | (~justsomeg@216.186.218.241) (Changing host) |
2020-11-02 06:08:37 +0100 | justsomeguy | (~justsomeg@unaffiliated/--/x-3805311) |
2020-11-02 06:10:32 +0100 | Tario | (~Tario@200.119.185.133) |
2020-11-02 06:13:26 +0100 | yinfeng | (~yinfeng@2001:250:5002:8100::1:851e) (Quit: WeeChat 2.9) |
2020-11-02 06:14:05 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-02 06:17:44 +0100 | conal | (~conal@198.8.81.68) (Ping timeout: 272 seconds) |
2020-11-02 06:19:02 +0100 | <jackdk> | Where do the names `Star` and `Costar` come from? (The ones that appear in `profunctors`) |
2020-11-02 06:21:30 +0100 | xff0x | (~fox@2001:1a81:537c:3e00:a716:2819:5bdd:ec6f) (Ping timeout: 268 seconds) |
2020-11-02 06:21:57 +0100 | xff0x | (~fox@2001:1a81:537c:3e00:c8f2:34d9:3609:f336) |
2020-11-02 06:24:27 +0100 | conal | (~conal@198.8.81.68) |
2020-11-02 06:24:30 +0100 | christo | (~chris@81.96.113.213) |
2020-11-02 06:25:09 +0100 | mimi_vx | (~mimi@2a01:490:16:1026:8cbe:b3f3:f284:209c) |
2020-11-02 06:26:18 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 06:26:53 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
2020-11-02 06:31:04 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2020-11-02 06:31:14 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 264 seconds) |
2020-11-02 06:31:34 +0100 | yinfeng | (~yinfeng@2001:250:5002:8100::1:851e) |
2020-11-02 06:31:39 +0100 | <int-e> | jackdk: I guess a combination of notation, namely F^*, and an affinity for movie references. |
2020-11-02 06:32:59 +0100 | reset | (~reset@84.39.116.180) |
2020-11-02 06:33:29 +0100 | <int-e> | http://blog.sigfpe.com/2011/07/profunctors-in-haskell.html called them UpStar for F^* and DownStar for F_* |
2020-11-02 06:38:05 +0100 | LambdaScientist | (~Android@24.42.199.176) (Quit: -a- Connection Timed Out) |
2020-11-02 06:38:40 +0100 | mbomba | (~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca) (Quit: WeeChat 2.9) |
2020-11-02 06:39:24 +0100 | yinfeng | (~yinfeng@2001:250:5002:8100::1:851e) (Quit: WeeChat 2.9) |
2020-11-02 06:40:49 +0100 | is_null | (~jpic@pdpc/supporter/professional/is-null) (Ping timeout: 246 seconds) |
2020-11-02 06:40:56 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-11-02 06:41:15 +0100 | yinfeng | (~yinfeng@2001:250:5002:8100::1:851e) |
2020-11-02 06:41:38 +0100 | LambdaScientist | (~LambdaSci@24.42.199.176) |
2020-11-02 06:41:42 +0100 | LambdaScientist | (~LambdaSci@24.42.199.176) (Excess Flood) |
2020-11-02 06:42:06 +0100 | LambdaScientist | (~LambdaSci@24.42.199.176) |
2020-11-02 06:42:10 +0100 | LambdaScientist | (~LambdaSci@24.42.199.176) (Excess Flood) |
2020-11-02 06:42:23 +0100 | refried_ | (~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
2020-11-02 06:42:38 +0100 | LambdaScientist | (~LambdaSci@24.42.199.176) |
2020-11-02 06:42:42 +0100 | LambdaScientist | (~LambdaSci@24.42.199.176) (Excess Flood) |
2020-11-02 06:43:08 +0100 | LambdaScientist | (~LambdaSci@24.42.199.176) |
2020-11-02 06:43:13 +0100 | LambdaScientist | (~LambdaSci@24.42.199.176) (Excess Flood) |
2020-11-02 06:43:23 +0100 | argent0 | (~argent0@168.227.96.4) (Remote host closed the connection) |
2020-11-02 06:43:25 +0100 | day_ | (~Unknown@unaffiliated/day) |
2020-11-02 06:43:39 +0100 | LambdaScientist | (~LambdaSci@24.42.199.176) |
2020-11-02 06:43:44 +0100 | LambdaScientist | (~LambdaSci@24.42.199.176) (Excess Flood) |
2020-11-02 06:44:08 +0100 | Saukk | (~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4) (Remote host closed the connection) |
2020-11-02 06:46:24 +0100 | day | (~Unknown@unaffiliated/day) (Ping timeout: 240 seconds) |
2020-11-02 06:46:24 +0100 | day_ | day |
2020-11-02 06:47:20 +0100 | <jackdk> | so the Costar thing is a pun, like Biff/Tannen? |
2020-11-02 06:49:28 +0100 | refried_ | (~textual@pool-108-20-26-90.bstnma.fios.verizon.net) |
2020-11-02 06:49:31 +0100 | is_null | (~jpic@pdpc/supporter/professional/is-null) |
2020-11-02 06:51:24 +0100 | <int-e> | jackdk: well, maybe :) |
2020-11-02 06:51:38 +0100 | <int-e> | but there is also an actual duality |
2020-11-02 06:57:00 +0100 | knupfer | (~Thunderbi@87.123.206.240) |
2020-11-02 06:59:06 +0100 | mokulus_ | (~mat@176.111.230.96) (Read error: Connection reset by peer) |
2020-11-02 06:59:41 +0100 | mokulus_ | (~mat@176.111.230.96) |
2020-11-02 06:59:44 +0100 | mimi_vx | (~mimi@2a01:490:16:1026:8cbe:b3f3:f284:209c) (Ping timeout: 268 seconds) |
2020-11-02 07:00:01 +0100 | reset | (~reset@84.39.116.180) () |
2020-11-02 07:00:32 +0100 | refried_ | (~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
2020-11-02 07:01:46 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds) |
2020-11-02 07:06:02 +0100 | knupfer | (~Thunderbi@87.123.206.240) (Ping timeout: 264 seconds) |
2020-11-02 07:11:02 +0100 | coot | (~coot@37.30.60.135.nat.umts.dynamic.t-mobile.pl) |
2020-11-02 07:11:09 +0100 | <danso> | i see this pattern often in my code where i end up in many nested `case` expressions |
2020-11-02 07:11:13 +0100 | <danso> | https://github.com/ninedotnine/soucc/blob/main/src/TypeChecker/TypeChecker.hs#L61-L75 |
2020-11-02 07:11:43 +0100 | <danso> | usually `do` notation makes these go away, but here it only works for the outer monad (State) |
2020-11-02 07:11:51 +0100 | <danso> | and i would like it to work with Either as well |
2020-11-02 07:12:09 +0100 | <danso> | i'm sure i've read about the cure for this problem on a blog somewhere, but i don't know how to find it now. help? |
2020-11-02 07:12:37 +0100 | knupfer | (~Thunderbi@200116b82c45b30000b473fffe3f50e6.dip.versatel-1u1.de) |
2020-11-02 07:12:37 +0100 | knupfer | (~Thunderbi@200116b82c45b30000b473fffe3f50e6.dip.versatel-1u1.de) (Client Quit) |
2020-11-02 07:12:52 +0100 | knupfer | (~Thunderbi@87.123.206.240) |
2020-11-02 07:13:24 +0100 | <jackdk> | danso: sounds like a job for monad transformers, specifically ExceptT |
2020-11-02 07:13:58 +0100 | <jackdk> | if I understand you correctly, you can temporarily work with a transformer, you don't have to use it all over your program |
2020-11-02 07:14:35 +0100 | <jackdk> | `run_globals defns = runExceptT $ do ...` etc |
2020-11-02 07:15:31 +0100 | <danso> | thanks, i will start reading |
2020-11-02 07:15:48 +0100 | <danso> | this occurs in many places in my program; maybe it would be appropriate to use ExceptT throughout |
2020-11-02 07:16:25 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
2020-11-02 07:17:18 +0100 | knupfer | (~Thunderbi@87.123.206.240) (Ping timeout: 260 seconds) |
2020-11-02 07:19:39 +0100 | is_null | (~jpic@pdpc/supporter/professional/is-null) (Ping timeout: 260 seconds) |
2020-11-02 07:20:24 +0100 | dorkside9 | (~tdbgamer@208.190.197.222) |
2020-11-02 07:21:14 +0100 | juri_ | (~juri@178.63.35.222) |
2020-11-02 07:21:19 +0100 | dorkside | (~tdbgamer@208.190.197.222) (Ping timeout: 268 seconds) |
2020-11-02 07:21:19 +0100 | dorkside9 | dorkside |
2020-11-02 07:22:50 +0100 | falafel | (~falafel@24-223-105-148.static.cablene.com) (Ping timeout: 264 seconds) |
2020-11-02 07:24:45 +0100 | ski | (~ski@nc-2504-30.studat.chalmers.se) (Ping timeout: 240 seconds) |
2020-11-02 07:25:44 +0100 | ski | (~ski@nc-2504-30.studat.chalmers.se) |
2020-11-02 07:29:18 +0100 | drbean | (~drbean@TC210-63-209-71.static.apol.com.tw) (Ping timeout: 272 seconds) |
2020-11-02 07:36:48 +0100 | Jeanne-Kamikaze | (~Jeanne-Ka@68.235.43.86) (Ping timeout: 256 seconds) |
2020-11-02 07:38:02 +0100 | <danso> | does it make a difference whether i use `StateT s (Either e a)` or `ExceptT e (State s) a` ? |
2020-11-02 07:43:14 +0100 | xff0x | (~fox@2001:1a81:537c:3e00:c8f2:34d9:3609:f336) (Ping timeout: 264 seconds) |
2020-11-02 07:44:07 +0100 | xff0x | (~fox@2001:1a81:537c:3e00:f9de:e525:5d75:c389) |
2020-11-02 07:45:59 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
2020-11-02 07:46:15 +0100 | berberman | (~berberman@unaffiliated/berberman) (Quit: ZNC 1.7.5 - https://znc.in) |
2020-11-02 07:47:05 +0100 | berberman | (~berberman@unaffiliated/berberman) |
2020-11-02 07:52:14 +0100 | <int-e> | danso: They're isomorphic as types, but the latter has a handy Monad instance that propagates errors (approximately what your `case`s do) |
2020-11-02 07:52:36 +0100 | <int-e> | (or exceptions, whatever) |
2020-11-02 07:54:08 +0100 | <int-e> | danso: Err |
2020-11-02 07:54:52 +0100 | <int-e> | danso: Sorry, I misread because the former is wrong... you must have meant StateT s (Either e) a. |
2020-11-02 07:55:29 +0100 | <int-e> | danso: In which case, the main difference is that the former will forget the state on an exception/error. |
2020-11-02 07:55:50 +0100 | <danso> | ah i see i mistyped |
2020-11-02 07:55:56 +0100 | <danso> | oops |
2020-11-02 07:56:02 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:419f:7551:94a4:41c1) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-11-02 07:56:12 +0100 | <danso> | okay, i definitely want to keep the state |
2020-11-02 07:56:15 +0100 | <danso> | thanks int-e |
2020-11-02 07:56:52 +0100 | Axman6 | (~Axman6@pdpc/supporter/student/Axman6) |
2020-11-02 07:56:52 +0100 | <danso> | curious, why does that happen? |
2020-11-02 07:58:44 +0100 | elliott__ | (~elliott@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 240 seconds) |
2020-11-02 07:59:00 +0100 | drbean | (~drbean@TC210-63-209-59.static.apol.com.tw) |
2020-11-02 07:59:46 +0100 | <int-e> | @unmtl StateT s (Either e a) |
2020-11-02 07:59:46 +0100 | <lambdabot> | err: `StateT s (Either e a)' is not applied to enough arguments, giving `/\A. s -> Either e a (A, s)' |
2020-11-02 07:59:51 +0100 | <int-e> | @unmtl StateT s (Either e) a |
2020-11-02 07:59:51 +0100 | <lambdabot> | s -> Either e (a, s) |
2020-11-02 08:00:19 +0100 | mimi_vx | (~mimi@2a01:490:16:1026:8cbe:b3f3:f284:209c) |
2020-11-02 08:00:29 +0100 | <int-e> | Because StateT puts the resulting state into the monadic return value and Either's Left doesn't have one. |
2020-11-02 08:00:41 +0100 | <int-e> | @unmtl ErrorT e (State s) a |
2020-11-02 08:00:41 +0100 | <lambdabot> | s -> (Either e a, s) |
2020-11-02 08:01:05 +0100 | yinfeng | (~yinfeng@2001:250:5002:8100::1:851e) (Quit: WeeChat 2.9) |
2020-11-02 08:01:19 +0100 | toorevitimirp | (~tooreviti@117.182.183.132) (Quit: Konversation terminated!) |
2020-11-02 08:01:51 +0100 | <int-e> | Whereas this always has a state. (ErrorT is a bit weird and deprecated, but @unmtl doesn't know ExceptT) |
2020-11-02 08:02:45 +0100 | <danso> | ah thanks, the ErrorT left me confused |
2020-11-02 08:03:35 +0100 | florian_ | (~florian@85-170-214-92.rev.numericable.fr) |
2020-11-02 08:04:36 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 08:05:22 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Read error: Connection reset by peer) |
2020-11-02 08:08:25 +0100 | Neuromancer | (~Neuromanc@unaffiliated/neuromancer) (Ping timeout: 240 seconds) |
2020-11-02 08:08:31 +0100 | justsomeguy | (~justsomeg@unaffiliated/--/x-3805311) () |
2020-11-02 08:08:46 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2020-11-02 08:09:33 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Remote host closed the connection) |
2020-11-02 08:09:39 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
2020-11-02 08:10:31 +0100 | Sgeo | (~Sgeo@ool-18b982ad.dyn.optonline.net) (Read error: Connection reset by peer) |
2020-11-02 08:11:27 +0100 | cole-h | (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 260 seconds) |
2020-11-02 08:14:09 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 08:17:10 +0100 | berberman | (~berberman@unaffiliated/berberman) (Quit: ZNC 1.7.5 - https://znc.in) |
2020-11-02 08:17:34 +0100 | berberman | (~berberman@unaffiliated/berberman) |
2020-11-02 08:17:53 +0100 | chaosmasttter | (~chaosmast@p200300c4a72dee01a86cafb086ba766e.dip0.t-ipconnect.de) |
2020-11-02 08:19:27 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds) |
2020-11-02 08:21:13 +0100 | <energizer> | what is the name of the function that takes f : X -> Y and Either X Null, if a is Null returns Null otherwise `f a`? |
2020-11-02 08:22:31 +0100 | <energizer> | (forgive my word choice, i'm not experienced with this kind of stuff) |
2020-11-02 08:22:40 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-02 08:23:59 +0100 | <energizer> | for example, it takes addOne and either a number or null, and if it's null returns null, but otherwise increments the number |
2020-11-02 08:24:48 +0100 | <energizer> | f addOne null = null; f addOne 3 = 4 |
2020-11-02 08:25:17 +0100 | <danso> | what you're talking about is basically fmap |
2020-11-02 08:25:35 +0100 | <danso> | but you seem to be mixing a few different ideas here |
2020-11-02 08:25:41 +0100 | <energizer> | oh? |
2020-11-02 08:25:55 +0100 | ski | (~ski@nc-2504-30.studat.chalmers.se) (Ping timeout: 260 seconds) |
2020-11-02 08:25:58 +0100 | sfvm | (~sfvm@37.228.215.148) (Remote host closed the connection) |
2020-11-02 08:26:03 +0100 | <danso> | @t fmap |
2020-11-02 08:26:04 +0100 | <lambdabot> | Maybe you meant: tell thank you thanks thesaurus thx tic-tac-toe ticker time todo todo-add todo-delete type v @ ? . |
2020-11-02 08:26:13 +0100 | <danso> | @type fmap |
2020-11-02 08:26:14 +0100 | <lambdabot> | Functor f => (a -> b) -> f a -> f b |
2020-11-02 08:26:43 +0100 | <danso> | is your `Null` defined like `data Null = Null` ? |
2020-11-02 08:27:02 +0100 | <danso> | i think you most likely mean Maybe instead of Either |
2020-11-02 08:27:05 +0100 | frankie2 | (~frankie@185.104.184.43) |
2020-11-02 08:27:30 +0100 | <energizer> | Maybe sounds like like it's in the right direction |
2020-11-02 08:27:52 +0100 | <danso> | also fmap on Either maps a function over the right side, not the left one |
2020-11-02 08:28:15 +0100 | <danso> | fmap on maybe is |
2020-11-02 08:28:28 +0100 | <danso> | fmap f (Just a) = Just (f a) |
2020-11-02 08:28:35 +0100 | <danso> | fmap f Nothing = Nothing |
2020-11-02 08:28:44 +0100 | <energizer> | yeah that's what i mean ^ |
2020-11-02 08:29:19 +0100 | <danso> | if you want to get cute you could use <$> or <&> |
2020-11-02 08:29:36 +0100 | <dminuoso> | In fact, <$> is very typical |
2020-11-02 08:29:44 +0100 | <danso> | a <&> f is the same as `fmap f a` |
2020-11-02 08:30:10 +0100 | <dminuoso> | With a bit of squinting <$> behaves a bit like ($), which is possibly why they both have a dollar in their name. |
2020-11-02 08:32:16 +0100 | sQVe | (~sQVe@unaffiliated/sqve) |
2020-11-02 08:32:44 +0100 | <energizer> | how is <$> used here? |
2020-11-02 08:33:10 +0100 | <danso> | f <$> a |
2020-11-02 08:33:30 +0100 | <danso> | `<$>` is the same as `flip <&>` |
2020-11-02 08:33:34 +0100 | <danso> | @type <$> |
2020-11-02 08:33:36 +0100 | <lambdabot> | error: parse error on input ‘<$>’ |
2020-11-02 08:33:38 +0100 | christo | (~chris@81.96.113.213) |
2020-11-02 08:33:40 +0100 | <danso> | @type (<$>) |
2020-11-02 08:33:42 +0100 | <lambdabot> | Functor f => (a -> b) -> f a -> f b |
2020-11-02 08:35:12 +0100 | <energizer> | ok i get it |
2020-11-02 08:35:45 +0100 | <dminuoso> | c.f.: |
2020-11-02 08:35:48 +0100 | <dminuoso> | :t ($) |
2020-11-02 08:35:49 +0100 | <lambdabot> | (a -> b) -> a -> b |
2020-11-02 08:37:10 +0100 | dhouthoo | (~dhouthoo@ptr-eiv6509pb4ifhdr9lsd.18120a2.ip6.access.telenet.be) |
2020-11-02 08:37:17 +0100 | <energizer> | is <$> or <&> more used? |
2020-11-02 08:37:27 +0100 | <dminuoso> | <$> by far |
2020-11-02 08:37:45 +0100 | <dminuoso> | Depending on the project and situation you might either see fmap or <$> being used more |
2020-11-02 08:37:51 +0100 | <dminuoso> | Sometimes its handy to use both at the same time |
2020-11-02 08:37:59 +0100 | <dminuoso> | fmap f <$> g |
2020-11-02 08:38:00 +0100 | Tario | (~Tario@200.119.185.133) (Ping timeout: 256 seconds) |
2020-11-02 08:38:42 +0100 | Tario | (~Tario@201.191.91.236) |
2020-11-02 08:39:03 +0100 | <danso> | haskellers are pretty inconsistent on this point, you can see |
2020-11-02 08:39:29 +0100 | <danso> | <$> is preferred over <&> but >>= is preferred over =<< |
2020-11-02 08:39:39 +0100 | <dminuoso> | Dunno about that |
2020-11-02 08:39:43 +0100 | <dminuoso> | I prefer =<< by far :p |
2020-11-02 08:40:03 +0100 | <danso> | and i prefer <&> ! |
2020-11-02 08:40:04 +0100 | <dminuoso> | In fact, =<< often arises when I write code with <$> first, just to realize it should have been bind instead. |
2020-11-02 08:40:13 +0100 | <danso> | i don't think either of us are in the majority though :^) |
2020-11-02 08:40:15 +0100 | <dminuoso> | I found <&> to be useful in writing decoders :) |
2020-11-02 08:40:44 +0100 | <dminuoso> | f x 1 = getWord32 <&> Something |
2020-11-02 08:40:48 +0100 | <dminuoso> | f x 2 = getWord32 <&> AnotherThing |
2020-11-02 08:41:00 +0100 | <dminuoso> | For a sufficiently large f this aligns much more nicer |
2020-11-02 08:41:08 +0100 | <danso> | one of the haskell survey questions should have been >>= vs =<< |
2020-11-02 08:41:21 +0100 | <danso> | pity we just missed it |
2020-11-02 08:41:29 +0100 | <dminuoso> | Didn't get the memo |
2020-11-02 08:42:50 +0100 | toorevitimirp | (~tooreviti@117.182.183.132) |
2020-11-02 08:45:50 +0100 | <energizer> | why is it called <&> ? |
2020-11-02 08:46:28 +0100 | <dminuoso> | energizer: Presmuably because (&) is a flipped ($) |
2020-11-02 08:46:39 +0100 | <dminuoso> | % :t ($) |
2020-11-02 08:46:40 +0100 | <yahb> | dminuoso: (a -> b) -> a -> b |
2020-11-02 08:46:43 +0100 | <dminuoso> | % :t (<$>) |
2020-11-02 08:46:43 +0100 | <yahb> | dminuoso: Functor f => (a -> b) -> f a -> f b |
2020-11-02 08:46:46 +0100 | <dminuoso> | % :t ($) |
2020-11-02 08:46:46 +0100 | <yahb> | dminuoso: (a -> b) -> a -> b |
2020-11-02 08:46:49 +0100 | <dminuoso> | % :t (<$>) |
2020-11-02 08:46:49 +0100 | <yahb> | dminuoso: Functor f => (a -> b) -> f a -> f b |
2020-11-02 08:47:08 +0100 | <dminuoso> | % :t (<&>) |
2020-11-02 08:47:09 +0100 | <yahb> | dminuoso: Functor f => f a -> (a -> b) -> f b |
2020-11-02 08:47:10 +0100 | <dminuoso> | Sorry |
2020-11-02 08:47:12 +0100 | <dminuoso> | :) |
2020-11-02 08:47:17 +0100 | <dminuoso> | % :t (&) |
2020-11-02 08:47:17 +0100 | <yahb> | dminuoso: a -> (a -> b) -> b |
2020-11-02 08:47:27 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-02 08:48:26 +0100 | Sanchayan | (~Sanchayan@106.200.218.30) |
2020-11-02 08:48:48 +0100 | christo | (~chris@81.96.113.213) |
2020-11-02 08:48:51 +0100 | <energizer> | alright, so why are they called & and $ ? |
2020-11-02 08:49:05 +0100 | <danso> | dminuoso, the survey is definitely still open |
2020-11-02 08:49:08 +0100 | <danso> | i believe it was posted today |
2020-11-02 08:49:28 +0100 | <danso> | energizer, because they're common things to do, so they should be short |
2020-11-02 08:50:27 +0100 | <energizer> | $ kinda looks like flipping, yknow |
2020-11-02 08:50:57 +0100 | mimi1vx | (~mimi@tulipan.habr.nat.praha12.net) |
2020-11-02 08:51:11 +0100 | <energizer> | & is like 'and' but i'm not sure if fmap is related to 'and' |
2020-11-02 08:51:15 +0100 | <dminuoso> | Well you have to call them something.. |
2020-11-02 08:51:33 +0100 | <dminuoso> | There's very limited ASCII characters available |
2020-11-02 08:52:34 +0100 | <energizer> | yeah sometimes notation is just "gotta pick something" and sometimes there's a hidden connection to some concept |
2020-11-02 08:52:38 +0100 | <danso> | i think you have misunderstood |
2020-11-02 08:52:44 +0100 | <danso> | $ is apply |
2020-11-02 08:52:48 +0100 | <danso> | as in function application |
2020-11-02 08:52:53 +0100 | <danso> | f(x) is f $ x |
2020-11-02 08:52:54 +0100 | <dminuoso> | energizer: I dont think there's a particular reason for those choices on function application. |
2020-11-02 08:53:14 +0100 | <danso> | & is apply with its arguments flipped, so x & f is f(x) |
2020-11-02 08:53:36 +0100 | <energizer> | mhmm |
2020-11-02 08:53:47 +0100 | <danso> | the parallel is that <$> is fmap and <&> is fmap with its args flipped |
2020-11-02 08:54:00 +0100 | <dminuoso> | energizer: You could ask on haskell-cafe though, if you're curious. |
2020-11-02 08:54:02 +0100 | mimi_vx | (~mimi@2a01:490:16:1026:8cbe:b3f3:f284:209c) (Ping timeout: 264 seconds) |
2020-11-02 08:54:10 +0100 | <energizer> | ok that does make it clearer. thanks. |
2020-11-02 08:54:14 +0100 | <dminuoso> | It's possible someone there knows of a connection, perhaps they were burrowed from another language |
2020-11-02 08:54:30 +0100 | <dminuoso> | Or maybe from some field in mathematics |
2020-11-02 08:54:54 +0100 | <dminuoso> | Though I think the primary reason would be |
2020-11-02 08:55:18 +0100 | <dminuoso> | There aren't many other characters ASCII characters left that suggest different things |
2020-11-02 08:55:28 +0100 | cosimone | (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) |
2020-11-02 08:55:35 +0100 | gehmehgeh | (~ircuser1@gateway/tor-sasl/gehmehgeh) |
2020-11-02 08:55:44 +0100 | <dminuoso> | -+*^ are already used for arithmatic |
2020-11-02 08:55:51 +0100 | <danso> | i don't know of languages that predate haskell that use an operator for fn application |
2020-11-02 08:56:04 +0100 | <dminuoso> | @ cant be used as a standalone operator because its used for as-paterns |
2020-11-02 08:56:11 +0100 | <danso> | i suspect the same as you. what else would it be? @? #? ~? |
2020-11-02 08:56:17 +0100 | vicfred | (~vicfred@unaffiliated/vicfred) |
2020-11-02 08:56:32 +0100 | <dminuoso> | So what you're left with is #, $ and & |
2020-11-02 08:56:42 +0100 | <danso> | @-patterns were only added into ghc in the last few years, i think |
2020-11-02 08:56:42 +0100 | <lambdabot> | Unknown command, try @list |
2020-11-02 08:56:50 +0100 | <dminuoso> | Oh, then include @ in that list |
2020-11-02 08:57:02 +0100 | <danso> | $ definitely predates it by at least 15 years |
2020-11-02 08:57:04 +0100 | <dminuoso> | Out of those, perhaps $ renders less widely and reads better than the rest. |
2020-11-02 08:57:19 +0100 | <energizer> | coulda been `??` ? |
2020-11-02 08:57:25 +0100 | <dminuoso> | Sure, could have. |
2020-11-02 08:57:45 +0100 | <dminuoso> | But then you'd ask "why chose ?? and not $" :) |
2020-11-02 08:57:51 +0100 | <energizer> | heheh |
2020-11-02 08:58:09 +0100 | <danso> | is ? actually used for anything other than implicit params? |
2020-11-02 08:58:23 +0100 | <danso> | it might not be an allowed operator character |
2020-11-02 08:58:29 +0100 | <dminuoso> | % f ? g = f + g |
2020-11-02 08:58:29 +0100 | <yahb> | dminuoso: ; <interactive>:324:1: warning: [-Wname-shadowing] This binding for `f' shadows the existing binding defined at <interactive>:168:1 |
2020-11-02 08:58:31 +0100 | <dminuoso> | Seems fine |
2020-11-02 08:58:51 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-11-02 08:58:53 +0100 | <danso> | hm, i don't recall ever seeing it used |
2020-11-02 08:59:21 +0100 | idhugo | (~idhugo@80-62-116-101-mobile.dk.customer.tdc.net) |
2020-11-02 08:59:21 +0100 | <dminuoso> | ? is used a lot in lens operators |
2020-11-02 08:59:30 +0100 | <dminuoso> | Think it's usually for things that deal with Maybe |
2020-11-02 08:59:48 +0100 | <dminuoso> | % :t (?~) |
2020-11-02 08:59:48 +0100 | <yahb> | dminuoso: ASetter s t a (Maybe b) -> b -> s -> t |
2020-11-02 09:00:01 +0100 | <danso> | i could see it working as the function `Maybe a -> a -> a` |
2020-11-02 09:00:02 +0100 | <dminuoso> | % :t (^?) |
2020-11-02 09:00:02 +0100 | <yahb> | dminuoso: s -> Getting (First a) s a -> Maybe a |
2020-11-02 09:02:23 +0100 | sQVe | (~sQVe@unaffiliated/sqve) (Quit: Bye!) |
2020-11-02 09:05:35 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 09:06:07 +0100 | justanotheruser | (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 260 seconds) |
2020-11-02 09:06:40 +0100 | <energizer> | that's like regex |
2020-11-02 09:07:59 +0100 | Inoperable | (~PLAYER_1@fancydata.science) (Excess Flood) |
2020-11-02 09:09:07 +0100 | Varis | (~Tadas@unaffiliated/varis) (Remote host closed the connection) |
2020-11-02 09:09:54 +0100 | leah2 | (~leah@vuxu.org) |
2020-11-02 09:10:36 +0100 | chele | (~chele@ip5b416ea2.dynamic.kabel-deutschland.de) |
2020-11-02 09:11:01 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 264 seconds) |
2020-11-02 09:11:18 +0100 | kritzefitz | (~kritzefit@fw-front.credativ.com) |
2020-11-02 09:14:43 +0100 | Inoperable | (~PLAYER_1@fancydata.science) |
2020-11-02 09:15:32 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 09:16:52 +0100 | danso | (~dan@69-165-210-185.cable.teksavvy.com) (Quit: WeeChat 2.9) |
2020-11-02 09:20:43 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 256 seconds) |
2020-11-02 09:21:57 +0100 | manu1511 | (~manu@194-208-201-025.tele.net) |
2020-11-02 09:22:04 +0100 | manu1511 | (~manu@194-208-201-025.tele.net) () |
2020-11-02 09:23:36 +0100 | drbean | (~drbean@TC210-63-209-59.static.apol.com.tw) (Quit: ZNC 1.8.2+cygwin1 - https://znc.in) |
2020-11-02 09:27:02 +0100 | alp | (~alp@88.126.45.36) |
2020-11-02 09:27:31 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Remote host closed the connection) |
2020-11-02 09:28:02 +0100 | thir | (~thir@pd9e1bd8a.dip0.t-ipconnect.de) |
2020-11-02 09:28:14 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 09:28:22 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2020-11-02 09:30:44 +0100 | cosimone | (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection) |
2020-11-02 09:31:05 +0100 | cosimone | (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) |
2020-11-02 09:31:52 +0100 | <merijn> | Don't forget !? from containers |
2020-11-02 09:32:05 +0100 | thir | (~thir@pd9e1bd8a.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2020-11-02 09:32:44 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 240 seconds) |
2020-11-02 09:32:44 +0100 | Stanley00 | (~stanley00@unaffiliated/stanley00) () |
2020-11-02 09:34:53 +0100 | cosimone | (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection) |
2020-11-02 09:35:15 +0100 | cosimone | (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) |
2020-11-02 09:36:10 +0100 | danvet | (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) |
2020-11-02 09:36:16 +0100 | <tomsmeding> | Accelerate has (?) for the infix if-operator of the EDSL: https://hackage.haskell.org/package/accelerate-1.3.0.0/docs/Data-Array-Accelerate.html#v:-63- (warning, large page) |
2020-11-02 09:38:46 +0100 | cfricke | (~cfricke@unaffiliated/cfricke) |
2020-11-02 09:41:39 +0100 | alp | (~alp@88.126.45.36) (Remote host closed the connection) |
2020-11-02 09:41:49 +0100 | britva | (~britva@31-10-157-156.cgn.dynamic.upc.ch) |
2020-11-02 09:42:02 +0100 | hnOsmium0001 | (uid453710@gateway/web/irccloud.com/x-almrgtblciiegvzz) (Quit: Connection closed for inactivity) |
2020-11-02 09:43:19 +0100 | Inoperable | (~PLAYER_1@fancydata.science) (Excess Flood) |
2020-11-02 09:43:38 +0100 | borne | (~fritjof@200116b864ec3c00c8b76624f4b75a13.dip.versatel-1u1.de) |
2020-11-02 09:47:10 +0100 | <tomsmeding> | programming language documentation pages are the best browser benchmarks nowadays |
2020-11-02 09:47:28 +0100 | Franciman | (~francesco@host-79-36-167-172.retail.telecomitalia.it) |
2020-11-02 09:50:15 +0100 | Neo-- | (~neo@188-230-154-134.dynamic.t-2.net) |
2020-11-02 09:51:01 +0100 | Inoperable | (~PLAYER_1@fancydata.science) |
2020-11-02 09:51:22 +0100 | geowiesnot | (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) |
2020-11-02 09:51:26 +0100 | Varis | (~Tadas@unaffiliated/varis) |
2020-11-02 09:51:42 +0100 | Stanley00 | (~stanley00@unaffiliated/stanley00) |
2020-11-02 09:52:00 +0100 | hackage | cobot-io 0.1.3.9 - Biological data file formats and IO https://hackage.haskell.org/package/cobot-io-0.1.3.9 (ozzzzz) |
2020-11-02 09:56:08 +0100 | britva | (~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep) |
2020-11-02 09:56:18 +0100 | todda7 | (~torstein@2a02:587:d28:2900:bd30:f5ea:90f2:33aa) |
2020-11-02 09:58:34 +0100 | bliminse | (~bliminse@host109-156-197-211.range109-156.btcentralplus.com) (Ping timeout: 246 seconds) |
2020-11-02 09:58:36 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-02 09:58:42 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 09:59:28 +0100 | bliminse | (~bliminse@host109-156-197-211.range109-156.btcentralplus.com) |
2020-11-02 10:00:01 +0100 | frankie2 | (~frankie@185.104.184.43) () |
2020-11-02 10:03:03 +0100 | cosimone | (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection) |
2020-11-02 10:03:04 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 256 seconds) |
2020-11-02 10:03:32 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
2020-11-02 10:05:58 +0100 | jneira | (501e64fa@gateway/web/cgi-irc/kiwiirc.com/ip.80.30.100.250) (Ping timeout: 268 seconds) |
2020-11-02 10:07:19 +0100 | chkno | (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer) |
2020-11-02 10:07:29 +0100 | chkno | (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) |
2020-11-02 10:07:44 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2020-11-02 10:14:48 +0100 | thc202 | (~thc202@unaffiliated/thc202) |
2020-11-02 10:17:31 +0100 | britva | (~britva@2a02:aa13:7240:2980:fc63:822e:7d74:772d) |
2020-11-02 10:17:44 +0100 | flatmap | (~flatmap@p200300dd370a47007ce3847efe0685c7.dip0.t-ipconnect.de) |
2020-11-02 10:23:01 +0100 | day | (~Unknown@unaffiliated/day) (Ping timeout: 264 seconds) |
2020-11-02 10:23:12 +0100 | m0rphism | (~m0rphism@HSI-KBW-046-005-177-122.hsi8.kabel-badenwuerttemberg.de) |
2020-11-02 10:23:12 +0100 | day | (~Unknown@unaffiliated/day) |
2020-11-02 10:26:47 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 10:27:11 +0100 | sam___ | (~sam@228.175.185.81.rev.sfr.net) |
2020-11-02 10:28:54 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-11-02 10:30:14 +0100 | kuribas | (~user@ptr-25vy0i9b0d7gsf4mjtv.18120a2.ip6.access.telenet.be) |
2020-11-02 10:31:33 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 256 seconds) |
2020-11-02 10:33:06 +0100 | bliminse | (~bliminse@host109-156-197-211.range109-156.btcentralplus.com) (Ping timeout: 256 seconds) |
2020-11-02 10:33:25 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds) |
2020-11-02 10:33:45 +0100 | bliminse | (~bliminse@host109-156-197-211.range109-156.btcentralplus.com) |
2020-11-02 10:36:48 +0100 | xff0x | (~fox@2001:1a81:537c:3e00:f9de:e525:5d75:c389) (Ping timeout: 268 seconds) |
2020-11-02 10:37:18 +0100 | xff0x | (~fox@2001:1a81:537c:3e00:725d:2adb:f456:fdfe) |
2020-11-02 10:37:56 +0100 | yinfeng | (~yinfeng@2001:250:5002:8100::5e0b) |
2020-11-02 10:38:15 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
2020-11-02 10:39:32 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 10:40:13 +0100 | jonathanx | (~jonathan@dyn-8-sc.cdg.chalmers.se) |
2020-11-02 10:40:23 +0100 | DavidEichmann | (~david@43.240.198.146.dyn.plus.net) |
2020-11-02 10:44:12 +0100 | olligobber | (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 268 seconds) |
2020-11-02 10:44:23 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds) |
2020-11-02 10:44:32 +0100 | LambdaScientist | (~LambdaSci@24.42.199.176) |
2020-11-02 10:44:36 +0100 | LambdaScientist | (~LambdaSci@24.42.199.176) (Excess Flood) |
2020-11-02 10:44:42 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2020-11-02 10:45:00 +0100 | hackage | sdl2 2.5.3.0 - Both high- and low-level bindings to the SDL library (version 2.0.6+). https://hackage.haskell.org/package/sdl2-2.5.3.0 (OliverCharles) |
2020-11-02 10:45:01 +0100 | LambdaScientist | (~LambdaSci@24.42.199.176) |
2020-11-02 10:45:05 +0100 | LambdaScientist | (~LambdaSci@24.42.199.176) (Excess Flood) |
2020-11-02 10:45:30 +0100 | LambdaScientist | (~LambdaSci@24.42.199.176) |
2020-11-02 10:45:33 +0100 | LambdaScientist | (~LambdaSci@24.42.199.176) (Excess Flood) |
2020-11-02 10:45:57 +0100 | LambdaScientist | (~LambdaSci@24.42.199.176) |
2020-11-02 10:46:00 +0100 | LambdaScientist | (~LambdaSci@24.42.199.176) (Excess Flood) |
2020-11-02 10:46:26 +0100 | LambdaScientist | (~LambdaSci@24.42.199.176) |
2020-11-02 10:46:30 +0100 | LambdaScientist | (~LambdaSci@24.42.199.176) (Excess Flood) |
2020-11-02 10:47:58 +0100 | berberman_ | (~berberman@unaffiliated/berberman) |
2020-11-02 10:49:14 +0100 | berberman | (~berberman@unaffiliated/berberman) (Ping timeout: 264 seconds) |
2020-11-02 10:50:05 +0100 | britva | (~britva@2a02:aa13:7240:2980:fc63:822e:7d74:772d) (Quit: This computer has gone to sleep) |
2020-11-02 10:50:11 +0100 | flatmap | (~flatmap@p200300dd370a47007ce3847efe0685c7.dip0.t-ipconnect.de) (Quit: Textual IRC Client: www.textualapp.com) |
2020-11-02 10:55:34 +0100 | donri | (~donri@139.28.218.148) |
2020-11-02 10:56:22 +0100 | pera | (~pera@unaffiliated/pera) |
2020-11-02 10:58:29 +0100 | britva | (~britva@31.10.157.156) |
2020-11-02 10:59:12 +0100 | guest112 | (~user@49.5.6.87) (Remote host closed the connection) |
2020-11-02 10:59:43 +0100 | dustypacer | (~pi@2600:6c50:80:2f4a:e9d0:6569:1cea:d1d4) (Read error: Connection reset by peer) |
2020-11-02 11:01:03 +0100 | ski | (~ski@remote11.chalmers.se) |
2020-11-02 11:06:47 +0100 | olligobber | (olligobber@gateway/vpn/privateinternetaccess/olligobber) |
2020-11-02 11:09:31 +0100 | olligobber | (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Remote host closed the connection) |
2020-11-02 11:13:51 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
2020-11-02 11:14:15 +0100 | tuple | (~igloo@c-67-169-78-228.hsd1.ca.comcast.net) |
2020-11-02 11:14:42 +0100 | tuple | (~igloo@c-67-169-78-228.hsd1.ca.comcast.net) (Client Quit) |
2020-11-02 11:18:44 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
2020-11-02 11:20:28 +0100 | geowiesnot | (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 272 seconds) |
2020-11-02 11:22:01 +0100 | hackage | postgresql-libpq 0.9.4.3 - low-level binding to libpq https://hackage.haskell.org/package/postgresql-libpq-0.9.4.3 (phadej) |
2020-11-02 11:22:26 +0100 | acidjnk_new | (~acidjnk@p200300d0c72260501db9c4f6165b2eaf.dip0.t-ipconnect.de) |
2020-11-02 11:22:46 +0100 | tromp | (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection) |
2020-11-02 11:23:03 +0100 | tromp | (~tromp@dhcp-077-249-230-040.chello.nl) |
2020-11-02 11:27:10 +0100 | nshepperd26 | (~nshepperd@li364-218.members.linode.com) |
2020-11-02 11:27:13 +0100 | eedgit22 | (~chat.free@95.179.237.21) |
2020-11-02 11:27:46 +0100 | rotaerk | (~rotaerk@ender.afternet.org) (Ping timeout: 265 seconds) |
2020-11-02 11:27:50 +0100 | stree_ | (~stree@50-108-72-205.adr01.mskg.mi.frontiernet.net) |
2020-11-02 11:27:53 +0100 | pjb | (~t@2a01cb04063ec5002c0fc7d86fb8e728.ipv6.abo.wanadoo.fr) (Read error: Connection reset by peer) |
2020-11-02 11:27:53 +0100 | nshepperd2 | (~nshepperd@li364-218.members.linode.com) (Read error: Connection reset by peer) |
2020-11-02 11:27:54 +0100 | stree | (~stree@50-108-72-205.adr01.mskg.mi.frontiernet.net) (Excess Flood) |
2020-11-02 11:27:54 +0100 | eedgit2 | (~chat.free@95.179.237.21) (Read error: Connection reset by peer) |
2020-11-02 11:27:54 +0100 | p3n | (~p3n@217.198.124.246) (Ping timeout: 260 seconds) |
2020-11-02 11:27:54 +0100 | nshepperd26 | nshepperd2 |
2020-11-02 11:27:54 +0100 | eedgit22 | eedgit2 |
2020-11-02 11:27:56 +0100 | nekomune | (~nekomune@comfy.moe) (Quit: ZNC 1.7.2 - https://znc.in) |
2020-11-02 11:28:03 +0100 | p3n | (~p3n@2a00:19a0:3:7c:0:d9c6:7cf6:1) |
2020-11-02 11:28:14 +0100 | nekomune | (~nekomune@comfy.moe) |
2020-11-02 11:28:15 +0100 | DataComputist | (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) (Ping timeout: 265 seconds) |
2020-11-02 11:29:20 +0100 | alp | (~alp@2a01:e0a:58b:4920:34a0:e5bb:3231:c2c3) |
2020-11-02 11:29:57 +0100 | florian_ | (~florian@85-170-214-92.rev.numericable.fr) (Read error: Connection reset by peer) |
2020-11-02 11:30:24 +0100 | florian_ | (~florian@85-170-214-92.rev.numericable.fr) |
2020-11-02 11:32:44 +0100 | khaladrogo_lite | (~khaladrog@2405:204:5204:7e58:f1ab:1e40:6c9b:8f55) |
2020-11-02 11:34:46 +0100 | rprije | (~rprije@194-193-168-77.tpgi.com.au) (Ping timeout: 268 seconds) |
2020-11-02 11:35:01 +0100 | sam___ | (~sam@228.175.185.81.rev.sfr.net) (Ping timeout: 264 seconds) |
2020-11-02 11:39:33 +0100 | ubert | (~Thunderbi@p200300ecdf1e53d1e6b318fffe838f33.dip0.t-ipconnect.de) |
2020-11-02 11:45:33 +0100 | LKoen | (~LKoen@79.160.9.109.rev.sfr.net) |
2020-11-02 11:50:06 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 11:55:18 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 272 seconds) |
2020-11-02 11:55:27 +0100 | whatisRT | (~whatisRT@2002:5b41:6a33:0:dea6:32ff:fe5b:d45f) |
2020-11-02 11:56:54 +0100 | sam___ | (~sam@5.197.204.77.rev.sfr.net) |
2020-11-02 11:57:13 +0100 | sh9 | (~sh9@softbank060116136158.bbtec.net) |
2020-11-02 11:57:27 +0100 | pjb | (~t@2a01cb04063ec5002c0fc7d86fb8e728.ipv6.abo.wanadoo.fr) |
2020-11-02 12:01:25 +0100 | rotaerk | (rotaerk@2600:3c02::f03c:91ff:fe70:4a45) |
2020-11-02 12:01:27 +0100 | nkly | (~nkly@ip5b40d080.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer) |
2020-11-02 12:01:42 +0100 | domjancik | (~domj@77.139.218.14) |
2020-11-02 12:02:00 +0100 | domj | (~domj@77.139.218.14) (Ping timeout: 256 seconds) |
2020-11-02 12:02:26 +0100 | Codaraxis | (~Codaraxis@ip68-5-90-227.oc.oc.cox.net) (Ping timeout: 264 seconds) |
2020-11-02 12:02:31 +0100 | nkly | (~nkly@ip5b40d080.dynamic.kabel-deutschland.de) |
2020-11-02 12:03:15 +0100 | is_null | (~jpic@pdpc/supporter/professional/is-null) |
2020-11-02 12:05:30 +0100 | Codaraxis | (~Codaraxis@ip68-5-90-227.oc.oc.cox.net) |
2020-11-02 12:06:35 +0100 | rotaerk | (rotaerk@2600:3c02::f03c:91ff:fe70:4a45) (Ping timeout: 272 seconds) |
2020-11-02 12:06:52 +0100 | darjeeling_ | (~darjeelin@115.215.40.228) (Quit: WeeChat 2.9) |
2020-11-02 12:07:53 +0100 | darjeeling_ | (~darjeelin@115.215.40.228) |
2020-11-02 12:12:12 +0100 | <dminuoso> | Is using equality constraints as "type level let-bindings" a sane thing to do? |
2020-11-02 12:12:12 +0100 | Codaraxis | (~Codaraxis@ip68-5-90-227.oc.oc.cox.net) (Ping timeout: 256 seconds) |
2020-11-02 12:12:41 +0100 | <dminuoso> | in particular to sort of "bind the result of a tyfam" |
2020-11-02 12:13:03 +0100 | <dminuoso> | e.g. `forall m s. (m ~ MappedInto s, Foo s, Bar m, Quux m) => ...` |
2020-11-02 12:14:36 +0100 | Codaraxis | (~Codaraxis@ip68-5-90-227.oc.oc.cox.net) |
2020-11-02 12:15:26 +0100 | cfricke | (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 2.9) |
2020-11-02 12:15:45 +0100 | cfricke | (~cfricke@unaffiliated/cfricke) |
2020-11-02 12:16:34 +0100 | Eason0210 | (~user@101.85.10.81) |
2020-11-02 12:16:55 +0100 | sam___ | (~sam@5.197.204.77.rev.sfr.net) (Ping timeout: 260 seconds) |
2020-11-02 12:17:27 +0100 | sam___ | (~sam@5.197.204.77.rev.sfr.net) |
2020-11-02 12:21:52 +0100 | zincy__ | (~tom@host86-169-79-54.range86-169.btcentralplus.com) (Remote host closed the connection) |
2020-11-02 12:23:36 +0100 | Tario | (~Tario@201.191.91.236) (Ping timeout: 256 seconds) |
2020-11-02 12:25:42 +0100 | Codaraxis | (~Codaraxis@ip68-5-90-227.oc.oc.cox.net) (Remote host closed the connection) |
2020-11-02 12:26:16 +0100 | Tario | (~Tario@200.119.184.48) |
2020-11-02 12:27:38 +0100 | chaosmasttter | (~chaosmast@p200300c4a72dee01a86cafb086ba766e.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
2020-11-02 12:30:32 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-11-02 12:33:46 +0100 | LKoen | (~LKoen@79.160.9.109.rev.sfr.net) (Remote host closed the connection) |
2020-11-02 12:34:35 +0100 | ubert | (~Thunderbi@p200300ecdf1e53d1e6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
2020-11-02 12:35:16 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds) |
2020-11-02 12:36:50 +0100 | whatisRT | (~whatisRT@2002:5b41:6a33:0:dea6:32ff:fe5b:d45f) (Quit: ZNC 1.7.5 - https://znc.in) |
2020-11-02 12:37:26 +0100 | Eason0210 | (~user@101.85.10.81) (Quit: ERC (IRC client for Emacs 28.0.50)) |
2020-11-02 12:40:03 +0100 | xelxebar | (~xelxebar@gateway/tor-sasl/xelxebar) (Ping timeout: 240 seconds) |
2020-11-02 12:40:46 +0100 | xelxebar | (~xelxebar@gateway/tor-sasl/xelxebar) |
2020-11-02 12:41:33 +0100 | meowphius | (~meowphius@pool-96-237-166-172.bstnma.fios.verizon.net) |
2020-11-02 12:42:27 +0100 | Eason0210 | (~user@101.85.10.81) |
2020-11-02 12:44:26 +0100 | florian_ | (~florian@85-170-214-92.rev.numericable.fr) (Ping timeout: 264 seconds) |
2020-11-02 12:45:03 +0100 | SupaYoshi | (~supayoshi@213-10-140-13.fixed.kpn.net) (Quit: Goodbye!) |
2020-11-02 12:47:26 +0100 | _xor | (~xor@74.215.46.133) (Ping timeout: 264 seconds) |
2020-11-02 12:47:26 +0100 | refried_ | (~textual@pool-108-20-26-90.bstnma.fios.verizon.net) |
2020-11-02 12:49:57 +0100 | drbean | (~drbean@TC210-63-209-202.static.apol.com.tw) |
2020-11-02 12:51:19 +0100 | chaosmasttter | (~chaosmast@p200300c4a72dee01a86cafb086ba766e.dip0.t-ipconnect.de) |
2020-11-02 12:52:26 +0100 | donri | (~donri@139.28.218.148) (Remote host closed the connection) |
2020-11-02 12:52:51 +0100 | rotaerk | (rotaerk@2600:3c02::f03c:91ff:fe70:4a45) |
2020-11-02 12:53:27 +0100 | Aquazi | (uid312403@gateway/web/irccloud.com/x-onbapdmfluqaidcp) |
2020-11-02 12:56:34 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 12:57:07 +0100 | Tario | (~Tario@200.119.184.48) (Ping timeout: 258 seconds) |
2020-11-02 12:59:35 +0100 | Tario | (~Tario@200.119.184.48) |
2020-11-02 13:01:00 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 256 seconds) |
2020-11-02 13:01:56 +0100 | _xor | (~xor@74.215.46.133) |
2020-11-02 13:06:38 +0100 | britva | (~britva@31.10.157.156) (Quit: This computer has gone to sleep) |
2020-11-02 13:07:00 +0100 | wei2912 | (~wei2912@unaffiliated/wei2912) |
2020-11-02 13:07:11 +0100 | LKoen | (~LKoen@79.160.9.109.rev.sfr.net) |
2020-11-02 13:08:45 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 13:09:08 +0100 | <matthew-> | is there a ghc command or something that'll tell me how an expression is being bracketed? |
2020-11-02 13:10:13 +0100 | SupaYoshi | (~supayoshi@213-10-140-13.fixed.kpn.net) |
2020-11-02 13:10:14 +0100 | <matthew-> | in res = Subst $ Map.map (apply (Subst s1)) s2 `Map.union` s1, I'm assuming the s2 is an arg to Map.map, and not an arg to Map.union |
2020-11-02 13:10:17 +0100 | <merijn> | matthew-: No, but you can query the precedence of operators via ":i" |
2020-11-02 13:10:58 +0100 | <merijn> | matthew-: Easy answer, infix precedence is *always* lower than function application |
2020-11-02 13:11:47 +0100 | <merijn> | matthew-: infix precedence ranges from 0 to 9, function application has precedence 10 (and record syntax has 11, but that's a bit niche), so 's2' is indeed an argument to Map.map |
2020-11-02 13:11:57 +0100 | <matthew-> | ahh yes, I remember that rule. |
2020-11-02 13:12:00 +0100 | <matthew-> | cool, thank you very much. |
2020-11-02 13:12:12 +0100 | <merijn> | % :i `elem` |
2020-11-02 13:12:12 +0100 | <yahb> | merijn: type Foldable :: (* -> *) -> Constraint; class Foldable t where; ...; elem :: Eq a => a -> t a -> Bool; ...; -- Defined in `Data.Foldable'; infix 4 `elem` |
2020-11-02 13:12:25 +0100 | <Uniaika> | I feel like the bracketing is Subst $ (Map.map (apply (Subst s1)) s2) `Map.union` s1 |
2020-11-02 13:12:47 +0100 | <Uniaika> | that's my intuition |
2020-11-02 13:12:58 +0100 | plutoniix | (~q@175.176.222.7) (Quit: Leaving) |
2020-11-02 13:13:00 +0100 | <merijn> | matthew-: So ":i `Map.union`" in ghci should tell you its precedence |
2020-11-02 13:13:30 +0100 | hackage | haskoin-core 0.17.1 - Bitcoin & Bitcoin Cash library for Haskell https://hackage.haskell.org/package/haskoin-core-0.17.1 (jprupp) |
2020-11-02 13:13:37 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 256 seconds) |
2020-11-02 13:14:22 +0100 | invaser | (~Thunderbi@31.148.23.125) |
2020-11-02 13:15:44 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
2020-11-02 13:18:34 +0100 | <typetetris> | ... is there any benefit to learning arrows and this "arrow style" ? Looking into the niv source code it seems to be some kind of obfuscation technique to scare people away. |
2020-11-02 13:18:52 +0100 | <merijn> | typetetris: Not really |
2020-11-02 13:19:02 +0100 | <merijn> | typetetris: Arrow as an abstraction is mostly obsolete |
2020-11-02 13:19:26 +0100 | <typetetris> | If it is obsolete, what is its replacement? |
2020-11-02 13:19:57 +0100 | <merijn> | Category from Control.Category, Applicative, and Profunctor all replace different aspects of it |
2020-11-02 13:20:27 +0100 | Stanley00 | (~stanley00@unaffiliated/stanley00) () |
2020-11-02 13:20:49 +0100 | <merijn> | There's no real "this replaces all of Arrow" thing, it's mostly that Arrow had rather limited applicability and different aspects of it have been subsumed by more useful abstraction (like those 3) |
2020-11-02 13:20:58 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 13:21:35 +0100 | <typetetris> | merijn: Is there some introductory material for the combination of those three things? (Like the papers mentioned in https://downloads.haskell.org/ghc/latest/docs/html/users_guide/glasgow_exts.html#arrow-notation for arrows for example) |
2020-11-02 13:21:44 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2020-11-02 13:22:10 +0100 | <merijn> | No clue, I'm just parrotting people from here :p |
2020-11-02 13:23:47 +0100 | <matthew-> | merijn: yup, I would really like an editor mode where it does all those lookups for me and draws in the parens - would aid code comprehension imo |
2020-11-02 13:24:10 +0100 | sam___ | (~sam@5.197.204.77.rev.sfr.net) (Ping timeout: 256 seconds) |
2020-11-02 13:25:04 +0100 | acidjnk_new | (~acidjnk@p200300d0c72260501db9c4f6165b2eaf.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2020-11-02 13:25:42 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds) |
2020-11-02 13:25:44 +0100 | andreas303 | (~andreas@gateway/tor-sasl/andreas303) (Remote host closed the connection) |
2020-11-02 13:26:01 +0100 | sam___ | (~sam@48.16.23.93.rev.sfr.net) |
2020-11-02 13:27:01 +0100 | khaladrogo_lite | (~khaladrog@2405:204:5204:7e58:f1ab:1e40:6c9b:8f55) (Quit: Leaving) |
2020-11-02 13:29:00 +0100 | andreas303 | (~andreas@gateway/tor-sasl/andreas303) |
2020-11-02 13:29:06 +0100 | brisbin | (~patrick@pool-173-49-158-4.phlapa.fios.verizon.net) |
2020-11-02 13:30:04 +0100 | khaladrogo | (~khaladrog@2405:204:5204:7e58:f1ab:1e40:6c9b:8f55) |
2020-11-02 13:30:45 +0100 | refried_ | (~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
2020-11-02 13:33:14 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 13:35:04 +0100 | Kaiepi | (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Remote host closed the connection) |
2020-11-02 13:36:04 +0100 | brisbin | (~patrick@pool-173-49-158-4.phlapa.fios.verizon.net) (Ping timeout: 240 seconds) |
2020-11-02 13:36:55 +0100 | <matthew-> | when implementing a language - a mini-haskell if you like - is there any downside to treating every let as if it's a let-rec ? |
2020-11-02 13:37:10 +0100 | Ariakenom | (~Ariakenom@h-158-174-186-203.NA.cust.bahnhof.se) |
2020-11-02 13:37:45 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 258 seconds) |
2020-11-02 13:37:52 +0100 | <matthew-> | (from a DHM type-inference pov) |
2020-11-02 13:37:58 +0100 | <ski> | let x = foo 42 in let x = bar 3 x in let x = baz (frob x) in ..x.. |
2020-11-02 13:38:19 +0100 | <merijn> | matthew-: Have you heard of our Lord and Saviour TaPL? ;) |
2020-11-02 13:38:22 +0100 | <merijn> | @where tapl |
2020-11-02 13:38:22 +0100 | <lambdabot> | "Types and Programming Languages" by Benjamin C. Pierce in 2002-02-01 at <https://www.cis.upenn.edu/~bcpierce/tapl/> |
2020-11-02 13:38:35 +0100 | <matthew-> | yeah, I have it in front of me, along with Advanced... |
2020-11-02 13:38:48 +0100 | urodna | (~urodna@unaffiliated/urodna) |
2020-11-02 13:39:21 +0100 | <merijn> | matthew-: I recall there being a discussion of the difficulty with recursive bindings at some point in TaPL, but I don't quite recall where, tbh |
2020-11-02 13:40:49 +0100 | <matthew-> | I have working DHM based on constraint generation as in Advanced Topics in .... Inference for recursive functions is just fine, it's just the recursive call must be the same monotype. Only the let-binding gets generalised to the principle type |
2020-11-02 13:41:33 +0100 | <matthew-> | if you treat let rec x = foo as let x = fix (\x -> foo) then it seems to me like you don't need let on its own |
2020-11-02 13:42:13 +0100 | <jophish> | 'cabal.project.local file already exists. Now overwriting it' |
2020-11-02 13:42:27 +0100 | <jophish> | Wtf cabal, I spent ages writing that... |
2020-11-02 13:42:27 +0100 | <merijn> | You never *need* let, you can always achieve it via lambda binding |
2020-11-02 13:42:43 +0100 | <merijn> | jophish: It makes a backup |
2020-11-02 13:42:55 +0100 | <merijn> | Should be in cabal.project.local~ |
2020-11-02 13:43:08 +0100 | <jophish> | Ah I see |
2020-11-02 13:43:12 +0100 | <matthew-> | aye, true. So then my puzzlement is why does eg ML have both let and let rec? |
2020-11-02 13:43:16 +0100 | <merijn> | jophish: Also, it only does that if you run configure, whose explicit only purpose is to create cabal.project.local? |
2020-11-02 13:43:21 +0100 | lucasb | (uid333435@gateway/web/irccloud.com/x-pojwugqdpwttxqdq) |
2020-11-02 13:43:30 +0100 | <jophish> | Oh |
2020-11-02 13:43:53 +0100 | <jophish> | Configure generates an empty project.local, even though I'm setting a flag |
2020-11-02 13:43:56 +0100 | <merijn> | jophish: Also, if you cared about persisting whatever you wrote in .local it should probably be in cabal.project? :) |
2020-11-02 13:44:24 +0100 | Kaivo | (~Kaivo@104-200-86-99.mc.derytele.com) (Quit: WeeChat 2.9) |
2020-11-02 13:44:26 +0100 | <jophish> | merijn: I don't want it in version control |
2020-11-02 13:44:27 +0100 | <merijn> | jophish: Is that flag already set in cabal.project maybe? |
2020-11-02 13:44:37 +0100 | <jophish> | Nope |
2020-11-02 13:44:47 +0100 | <jophish> | I'm setting it to not the default too |
2020-11-02 13:44:47 +0100 | <ski> | matthew- : convenience. ability to do the example i had above, with that ordering of subexpressions |
2020-11-02 13:44:48 +0100 | <merijn> | hmm, what's the command? |
2020-11-02 13:44:55 +0100 | <jophish> | Sorry for my terseness, I'm on mobile |
2020-11-02 13:45:23 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 13:45:31 +0100 | FreeBirdLjj | (~freebirdl@101.228.42.108) |
2020-11-02 13:45:39 +0100 | <jophish> | Cabal configure -fgeneric-instances |
2020-11-02 13:46:16 +0100 | <jophish> | https://github.com/expipiplus1/vulkan/blob/68638aceeb5526b3bf53674f06dc24243d7fda32/.github/workfl… |
2020-11-02 13:46:19 +0100 | <merijn> | jophish: That is not a cabal flag? |
2020-11-02 13:46:57 +0100 | <matthew-> | ski: gotcha - that makes sense - it's about allowing control of the scope of the binder then. |
2020-11-02 13:47:01 +0100 | <jophish> | It's a flag for a package in this project |
2020-11-02 13:47:06 +0100 | <jophish> | Hahah, did I get it wrong! |
2020-11-02 13:47:27 +0100 | <ski> | matthew- : you can also imagine things like `let (m,n) = (n,m+n) in ..m..n..' .. or having a `case' or conditional as the body of the defining equation, in a more complicated case |
2020-11-02 13:48:00 +0100 | <merijn> | jophish: So you wanna set that flag for CI? |
2020-11-02 13:48:07 +0100 | ubert | (~Thunderbi@p200300ecdf1e53d1e6b318fffe838f33.dip0.t-ipconnect.de) |
2020-11-02 13:48:34 +0100 | <ski> | matthew- : if you combine two declarations into one, you can combine them sequentially, collaterally, or recursively |
2020-11-02 13:48:35 +0100 | <merijn> | jophish: Alternate simpler idea: Why not have a dedicated separate project file for the CI config and setting the flag in there? |
2020-11-02 13:50:12 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds) |
2020-11-02 13:50:25 +0100 | Kaivo | (~Kaivo@104-200-86-99.mc.derytele.com) |
2020-11-02 13:50:26 +0100 | FreeBirdLjj | (~freebirdl@101.228.42.108) (Ping timeout: 268 seconds) |
2020-11-02 13:51:10 +0100 | jumper149 | (~jumper149@ip185225.wh.uni-hannover.de) |
2020-11-02 13:51:42 +0100 | geekosaur | (ac3a8c5f@172.58.140.95) |
2020-11-02 13:52:50 +0100 | bqv | (~bqv@2a02:8010:674f:0:d65d:64ff:fe52:5efe) |
2020-11-02 13:52:57 +0100 | <bqv> | d.nnr |
2020-11-02 13:53:08 +0100 | <bqv> | *hello |
2020-11-02 13:53:14 +0100 | <ski> | hello |
2020-11-02 13:53:17 +0100 | <bqv> | oh, ski |
2020-11-02 13:53:21 +0100 | <bqv> | fancy seeing you here |
2020-11-02 13:53:44 +0100 | <bqv> | have you ever used Foreign.Marshal.Alloc? bizarrely, malloc causes ghc to error with undefined, but mallocBytes doesn't |
2020-11-02 13:54:15 +0100 | <merijn> | Malloc with what argument? |
2020-11-02 13:54:26 +0100 | <bqv> | malloc doesn't require an argument |
2020-11-02 13:54:36 +0100 | notmyname | (~notmyname@84.39.116.180) |
2020-11-02 13:54:36 +0100 | <bqv> | Storable a => IO (Ptr a) |
2020-11-02 13:54:41 +0100 | <bqv> | :t malloc |
2020-11-02 13:54:42 +0100 | <ski> | perhaps the `Storable' instance is incorrect ? |
2020-11-02 13:54:43 +0100 | <lambdabot> | error: Variable not in scope: malloc |
2020-11-02 13:54:45 +0100 | <merijn> | Well, what result type, I mean |
2020-11-02 13:54:46 +0100 | <bqv> | ack. |
2020-11-02 13:54:51 +0100 | <ski> | @type Foreign.Marshal.Alloc.malloc |
2020-11-02 13:54:52 +0100 | <lambdabot> | Foreign.Storable.Storable a => IO (GHC.Ptr.Ptr a) |
2020-11-02 13:55:04 +0100 | <bqv> | it's a custom storable |
2020-11-02 13:55:16 +0100 | <bqv> | i would be hardpressed to see how the instance is wrong |
2020-11-02 13:55:49 +0100 | texasmynsted | (~texasmyns@212.102.45.115) |
2020-11-02 13:55:52 +0100 | florian_ | (~florian@85-170-214-92.rev.numericable.fr) |
2020-11-02 13:55:54 +0100 | <bqv> | and like i said, if i just use mallocBytes (sizeof <type>) instead, it works fine |
2020-11-02 13:56:00 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) |
2020-11-02 13:56:10 +0100 | <ski> | not your instance then, i take it |
2020-11-02 13:56:33 +0100 | <bqv> | ah, it is my instance. I have it setup using hsc2hs |
2020-11-02 13:56:42 +0100 | <bqv> | i checked the value of sizeOf and alignment using trace, they're fine |
2020-11-02 13:56:46 +0100 | <bqv> | (best i can tell) |
2020-11-02 13:56:52 +0100 | <jophish> | Merijn, and then mv project.ci project.local during the build instead of configure? |
2020-11-02 13:57:11 +0100 | <matthew-> | ski: thank you, that all makes sense |
2020-11-02 13:57:22 +0100 | <merijn> | jophish: eh, or just use --project-file to point it at the right one? ;) |
2020-11-02 13:57:36 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 13:57:38 +0100 | <jophish> | Ah, even better |
2020-11-02 13:57:48 +0100 | <merijn> | jophish: Almost as if this was an anticipated usecae ;) |
2020-11-02 13:58:18 +0100 | <ski> | bqv : "error with undefined", as when forcing `undefined' ? |
2020-11-02 13:58:19 +0100 | Eason0210 | (~user@101.85.10.81) (Quit: ERC (IRC client for Emacs 28.0.50)) |
2020-11-02 13:58:38 +0100 | <bqv> | yes |
2020-11-02 13:58:48 +0100 | <bqv> | specifically shows me an undefined coming from Alloc.hs |
2020-11-02 13:58:57 +0100 | <bqv> | (in Foreign.Marshal) |
2020-11-02 13:59:42 +0100 | <merijn> | bqv: Can you pastebin your Storable instance somewhere? |
2020-11-02 14:00:39 +0100 | refried_ | (~textual@pool-108-20-26-90.bstnma.fios.verizon.net) |
2020-11-02 14:00:42 +0100 | texasmynsted | (~texasmyns@212.102.45.115) (Ping timeout: 272 seconds) |
2020-11-02 14:01:15 +0100 | refried_ | (~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Client Quit) |
2020-11-02 14:01:28 +0100 | <bqv> | https://termbin.com/7z9jm |
2020-11-02 14:01:33 +0100 | <bqv> | merijn: happy to oblige |
2020-11-02 14:01:50 +0100 | <merijn> | bqv: You fucked up sizeof :) |
2020-11-02 14:01:55 +0100 | <merijn> | You pattern match |
2020-11-02 14:01:56 +0100 | <bqv> | oh no |
2020-11-02 14:01:59 +0100 | <bqv> | why |
2020-11-02 14:02:13 +0100 | <merijn> | sizeOf shouldn't evaluate it's argument, it's only for type inference |
2020-11-02 14:02:26 +0100 | <merijn> | sizeOf is usually called with undefined as argument (which is what malloc does) |
2020-11-02 14:02:36 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 272 seconds) |
2020-11-02 14:02:38 +0100 | <bqv> | oh balls. hence i end up forcing that undefined |
2020-11-02 14:02:45 +0100 | <bqv> | gotcha. thanks |
2020-11-02 14:02:47 +0100 | <merijn> | bqv: So malloc calls "sizeOf undefined" and then crashed on the pattern match ;) |
2020-11-02 14:02:51 +0100 | refried_ | (~textual@pool-108-20-26-90.bstnma.fios.verizon.net) |
2020-11-02 14:03:11 +0100 | <merijn> | Nowadays people would use "Proxy" to control the type inference, but that didn't exist when Storable was defined |
2020-11-02 14:03:33 +0100 | florian_ | (~florian@85-170-214-92.rev.numericable.fr) (Read error: Connection reset by peer) |
2020-11-02 14:03:33 +0100 | <bqv> | i remember delving into that once |
2020-11-02 14:03:52 +0100 | florian_ | (~florian@85-170-214-92.rev.numericable.fr) |
2020-11-02 14:04:01 +0100 | refried_ | (~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Client Quit) |
2020-11-02 14:04:06 +0100 | domj | (~domj@77.139.218.14) |
2020-11-02 14:06:19 +0100 | domjancik | (~domj@77.139.218.14) (Ping timeout: 256 seconds) |
2020-11-02 14:06:57 +0100 | <kuribas> | :t asTypeOf |
2020-11-02 14:06:57 +0100 | __monty__ | (~toonn@unaffiliated/toonn) |
2020-11-02 14:06:58 +0100 | <lambdabot> | a -> a -> a |
2020-11-02 14:09:03 +0100 | florian_ | (~florian@85-170-214-92.rev.numericable.fr) (Remote host closed the connection) |
2020-11-02 14:09:49 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 14:10:05 +0100 | florian_ | (~florian@85-170-214-92.rev.numericable.fr) |
2020-11-02 14:10:33 +0100 | florian_ | (~florian@85-170-214-92.rev.numericable.fr) (Read error: Connection reset by peer) |
2020-11-02 14:11:06 +0100 | Rudd0 | (~Rudd0@185.189.115.108) (Ping timeout: 258 seconds) |
2020-11-02 14:11:29 +0100 | florian_ | (~florian@85-170-214-92.rev.numericable.fr) |
2020-11-02 14:11:59 +0100 | florian_ | (~florian@85-170-214-92.rev.numericable.fr) (Max SendQ exceeded) |
2020-11-02 14:12:05 +0100 | cfricke | (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 2.9) |
2020-11-02 14:12:36 +0100 | florian_ | (~florian@85-170-214-92.rev.numericable.fr) |
2020-11-02 14:13:33 +0100 | florian_ | (~florian@85-170-214-92.rev.numericable.fr) (Remote host closed the connection) |
2020-11-02 14:14:05 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 240 seconds) |
2020-11-02 14:15:10 +0100 | texasmynsted | (~texasmyns@212.102.45.115) |
2020-11-02 14:15:17 +0100 | khaladrogo | (~khaladrog@2405:204:5204:7e58:f1ab:1e40:6c9b:8f55) (Remote host closed the connection) |
2020-11-02 14:19:32 +0100 | akad_ | (~akad@109107030050.radomsko.vectranet.pl) |
2020-11-02 14:20:35 +0100 | texasmynsted | (~texasmyns@212.102.45.115) (Ping timeout: 260 seconds) |
2020-11-02 14:21:12 +0100 | jumper149 | (~jumper149@ip185225.wh.uni-hannover.de) (Quit: WeeChat 2.9) |
2020-11-02 14:23:44 +0100 | alp | (~alp@2a01:e0a:58b:4920:34a0:e5bb:3231:c2c3) (Ping timeout: 240 seconds) |
2020-11-02 14:26:16 +0100 | p-core | (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) |
2020-11-02 14:26:19 +0100 | p-core | (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Remote host closed the connection) |
2020-11-02 14:27:14 +0100 | cfricke | (~cfricke@unaffiliated/cfricke) |
2020-11-02 14:28:52 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 14:30:20 +0100 | britva | (~britva@31-10-157-156.cgn.dynamic.upc.ch) |
2020-11-02 14:31:37 +0100 | akad_ | (~akad@109107030050.radomsko.vectranet.pl) (Ping timeout: 260 seconds) |
2020-11-02 14:31:51 +0100 | ggole | (~ggole@2001:8003:8119:7200:c42a:651c:d46:c888) |
2020-11-02 14:33:36 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 268 seconds) |
2020-11-02 14:37:09 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:419f:7551:94a4:41c1) |
2020-11-02 14:41:03 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 14:41:12 +0100 | machinedgod | (~machinedg@207.253.244.210) |
2020-11-02 14:43:27 +0100 | Sanchayan | (~Sanchayan@106.200.218.30) (Quit: leaving) |
2020-11-02 14:44:18 +0100 | khaladrogo | (~khaladrog@2405:204:5217:6256:258b:d489:f19c:6ea7) |
2020-11-02 14:44:51 +0100 | xerox_ | (~xerox@unaffiliated/xerox) (Ping timeout: 260 seconds) |
2020-11-02 14:45:37 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds) |
2020-11-02 14:46:12 +0100 | drbean | (~drbean@TC210-63-209-202.static.apol.com.tw) (Ping timeout: 260 seconds) |
2020-11-02 14:47:36 +0100 | Chi1thangoo | (~Chi1thang@87.112.60.168) |
2020-11-02 14:49:30 +0100 | hackage | http-rfc7807 0.1.0.0 - RFC7807 style response messages https://hackage.haskell.org/package/http-rfc7807-0.1.0.0 (PeterTrsko) |
2020-11-02 14:50:00 +0100 | texasmynsted | (~texasmyns@212.102.45.115) |
2020-11-02 14:51:40 +0100 | <dminuoso> | merijn: Interestingly, sizeOf *should* not be fed with undefined. |
2020-11-02 14:51:46 +0100 | <dminuoso> | In most cases there are proper values around |
2020-11-02 14:52:43 +0100 | <dminuoso> | Storable is quite unusable for flexible length things, even if you implement sizeOf to use it, `with` will feed you an undefined rather than the argument. |
2020-11-02 14:53:02 +0100 | <dminuoso> | alloca = allocaBytesAligned (sizeOf (undefined :: a)) (alignment (undefined :: a)) |
2020-11-02 14:54:22 +0100 | texasmynsted | (~texasmyns@212.102.45.115) (Ping timeout: 260 seconds) |
2020-11-02 14:57:06 +0100 | Ariakenom | (~Ariakenom@h-158-174-186-203.NA.cust.bahnhof.se) (Ping timeout: 256 seconds) |
2020-11-02 14:57:43 +0100 | alp | (~alp@2a01:e0a:58b:4920:34a0:e5bb:3231:c2c3) |
2020-11-02 14:58:57 +0100 | cfricke | (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 2.9) |
2020-11-02 14:59:17 +0100 | <bqv> | lucky for me, i'm just interfacing a pretty basic C library |
2020-11-02 14:59:26 +0100 | <bqv> | either way, thanks friends, it works! |
2020-11-02 14:59:30 +0100 | todda7 | (~torstein@2a02:587:d28:2900:bd30:f5ea:90f2:33aa) (Ping timeout: 268 seconds) |
2020-11-02 15:00:52 +0100 | britva | (~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep) |
2020-11-02 15:01:44 +0100 | Ariakenom | (~Ariakenom@h-158-174-186-203.NA.cust.bahnhof.se) |
2020-11-02 15:02:43 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:419f:7551:94a4:41c1) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-11-02 15:04:39 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:419f:7551:94a4:41c1) |
2020-11-02 15:07:56 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 15:08:30 +0100 | zx__ | (~oracle@unaffiliated/oracle) |
2020-11-02 15:09:13 +0100 | kish` | (~oracle@unaffiliated/oracle) (Disconnected by services) |
2020-11-02 15:09:19 +0100 | zx__ | kish` |
2020-11-02 15:09:49 +0100 | sam___ | (~sam@48.16.23.93.rev.sfr.net) (Ping timeout: 264 seconds) |
2020-11-02 15:10:08 +0100 | hpc | (~juzz@ip98-169-35-13.dc.dc.cox.net) (Ping timeout: 256 seconds) |
2020-11-02 15:11:18 +0100 | sam___ | (~sam@187.164.185.81.rev.sfr.net) |
2020-11-02 15:11:26 +0100 | <idnar> | merijn: nowadays I use TypeApplications instead of Proxy :P |
2020-11-02 15:11:40 +0100 | hpc | (~juzz@ip98-169-35-13.dc.dc.cox.net) |
2020-11-02 15:11:48 +0100 | britva | (~britva@31-10-157-156.cgn.dynamic.upc.ch) |
2020-11-02 15:12:33 +0100 | machinedgod | (~machinedg@207.253.244.210) (Quit: leaving) |
2020-11-02 15:12:50 +0100 | DataComputist | (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) |
2020-11-02 15:12:54 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 272 seconds) |
2020-11-02 15:13:09 +0100 | eedgit | (~eedgit@95.179.237.21) (Quit: Ping timeout (120 seconds)) |
2020-11-02 15:13:18 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:419f:7551:94a4:41c1) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-11-02 15:13:29 +0100 | eedgit | (~eedgit@95.179.237.21) |
2020-11-02 15:14:49 +0100 | machinedgod | (~machinedg@207.253.244.210) |
2020-11-02 15:18:42 +0100 | Tario | (~Tario@200.119.184.48) (Ping timeout: 256 seconds) |
2020-11-02 15:18:48 +0100 | <dminuoso> | idnar: Congratulations, you now rely on an unstable API |
2020-11-02 15:19:17 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
2020-11-02 15:19:26 +0100 | <dminuoso> | Do you have polykinds? Then you better also explicitly quantify those, or you dont have compatibility with 8.8 |
2020-11-02 15:19:30 +0100 | <dminuoso> | (Or was it 8.10?) |
2020-11-02 15:19:45 +0100 | <dminuoso> | And you must constantly live with the fact that GHC can just change the order of type variables, |
2020-11-02 15:20:03 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 15:21:49 +0100 | Ariakenom_ | (~Ariakenom@h-158-174-186-203.NA.cust.bahnhof.se) |
2020-11-02 15:22:40 +0100 | <davean> | dminuoso: Yah the type variable order thing with TypeApplication is insane :( |
2020-11-02 15:23:04 +0100 | <davean> | I only use type application with explicite forall |
2020-11-02 15:23:04 +0100 | andi- | (~andi-@NixOS/user/andi-) (Remote host closed the connection) |
2020-11-02 15:23:20 +0100 | <dminuoso> | davean: Indeed. I tend to only use it for Proxy |
2020-11-02 15:23:22 +0100 | <idnar> | dminuoso: that certainly sounds like me! I think it won't reorder if you have explicit `forall`, and not working on a library means I care less about compat |
2020-11-02 15:23:45 +0100 | Tario | (~Tario@200.119.184.48) |
2020-11-02 15:23:48 +0100 | Ariakenom | (~Ariakenom@h-158-174-186-203.NA.cust.bahnhof.se) (Ping timeout: 260 seconds) |
2020-11-02 15:24:09 +0100 | <davean> | idnar: it won't reorder the type variables listed in the forall, correct. |
2020-11-02 15:24:10 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
2020-11-02 15:24:51 +0100 | <idnar> | but I basically have every extension on at this point :P |
2020-11-02 15:24:52 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 256 seconds) |
2020-11-02 15:24:58 +0100 | <dminuoso> | idnar: Next up, you can only apply visible type arguments |
2020-11-02 15:25:06 +0100 | <dminuoso> | In some situations that can be really annoying |
2020-11-02 15:25:10 +0100 | stree_ | (~stree@50-108-72-205.adr01.mskg.mi.frontiernet.net) (Quit: Caught exception) |
2020-11-02 15:25:27 +0100 | stree | (~stree@50-108-72-205.adr01.mskg.mi.frontiernet.net) |
2020-11-02 15:25:30 +0100 | <merijn> | idnar: Right, but almost no one has explicit forall in their code and most people don't consider "type variable order" part of their public API for PVP purposes |
2020-11-02 15:25:45 +0100 | Ariakenom_ | (~Ariakenom@h-158-174-186-203.NA.cust.bahnhof.se) (Ping timeout: 240 seconds) |
2020-11-02 15:26:32 +0100 | andi- | (~andi-@NixOS/user/andi-) |
2020-11-02 15:26:59 +0100 | <idnar> | merijn: yeah, my comment was firmly tongue-in-cheek :) |
2020-11-02 15:27:00 +0100 | <dminuoso> | I mean if you use it for Proxy, then TypeApplications is completely benign and great. If its internal, well you have enough weapons to hurt yourself anyway, but for public API its best to just use Proxy |
2020-11-02 15:27:02 +0100 | <dminuoso> | oh |
2020-11-02 15:27:32 +0100 | <dminuoso> | idnar: Its interesting how Haskell seems to be split into two kinds of people |
2020-11-02 15:27:54 +0100 | <dminuoso> | Those who progressively end up with nearly all extensions enabled, and those who fight against any extension. |
2020-11-02 15:28:00 +0100 | <dminuoso> | I seem to belong to the former group |
2020-11-02 15:28:09 +0100 | <dminuoso> | Rarey do I have a module with less than 8 extensions... |
2020-11-02 15:28:45 +0100 | <dminuoso> | TypeFamilies, ScopedTypeVariables, RankNTypes are currently my favourite ones.. |
2020-11-02 15:29:05 +0100 | <davean> | I'm kinda in the middle |
2020-11-02 15:29:15 +0100 | <idnar> | I ran into an awkward spot with GADTs and skolems where I had to use a proxy to make it work |
2020-11-02 15:30:01 +0100 | <dminuoso> | % let f = id in f @Int 1 |
2020-11-02 15:30:01 +0100 | <yahb> | dminuoso: ; <interactive>:329:15: error:; * Cannot apply expression of type `a0 -> a0'; to a visible type argument `Int'; * In the expression: f @Int 1; In the expression: let f = id in f @Int 1; In an equation for `it': it = let f = id in f @Int 1 |
2020-11-02 15:30:06 +0100 | <dminuoso> | It's easy to hit the limits of TA :) |
2020-11-02 15:30:58 +0100 | <dminuoso> | davean: Where do you draw the line? |
2020-11-02 15:31:26 +0100 | <dminuoso> | Are there particular extensions you dont like? Or is there a maximum number of extensions? |
2020-11-02 15:31:44 +0100 | <merijn> | I prefer non-infectious extensions |
2020-11-02 15:32:00 +0100 | <merijn> | i.e. where the consumer of the code doesn't need the extension |
2020-11-02 15:32:15 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 15:32:52 +0100 | yumh | (~yumh@mail.xglobe.in) (Ping timeout: 256 seconds) |
2020-11-02 15:33:18 +0100 | wei2912 | (~wei2912@unaffiliated/wei2912) (Remote host closed the connection) |
2020-11-02 15:33:26 +0100 | <dminuoso> | merijn: Question, do you ever use OverloadedStrings? |
2020-11-02 15:33:29 +0100 | <dminuoso> | say for text |
2020-11-02 15:33:41 +0100 | <dminuoso> | (I know you can use T.pack, but lets face it, who does it) |
2020-11-02 15:33:55 +0100 | <geekosaur> | OerloadedStrings is not something where use internally forces use externally |
2020-11-02 15:34:04 +0100 | <dminuoso> | Ah |
2020-11-02 15:34:06 +0100 | <merijn> | I don't really like it, but yes |
2020-11-02 15:34:07 +0100 | <geekosaur> | it's a convenience externally |
2020-11-02 15:35:30 +0100 | hackage | prolude 0.0.0.5 - ITProTV's custom prelude https://hackage.haskell.org/package/prolude-0.0.0.5 (saramuse) |
2020-11-02 15:35:43 +0100 | bliminse | (~bliminse@host109-156-197-211.range109-156.btcentralplus.com) (Ping timeout: 265 seconds) |
2020-11-02 15:36:27 +0100 | bliminse | (~bliminse@host109-156-197-211.range109-156.btcentralplus.com) |
2020-11-02 15:36:59 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 256 seconds) |
2020-11-02 15:39:11 +0100 | Kaiepi | (~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) |
2020-11-02 15:39:30 +0100 | hackage | primitive-unlifted 1.0.0.0 - Primitive GHC types with unlifted types inside https://hackage.haskell.org/package/primitive-unlifted-1.0.0.0 (andrewthad) |
2020-11-02 15:39:33 +0100 | sam___ | (~sam@187.164.185.81.rev.sfr.net) (Quit: Lost terminal) |
2020-11-02 15:41:30 +0100 | hackage | persistent 2.10.5.3 - Type-safe, multi-backend data serialization. https://hackage.haskell.org/package/persistent-2.10.5.3 (parsonsmatt) |
2020-11-02 15:43:14 +0100 | LKoen_ | (~LKoen@79.160.9.109.rev.sfr.net) |
2020-11-02 15:44:31 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 15:45:32 +0100 | LKoen | (~LKoen@79.160.9.109.rev.sfr.net) (Ping timeout: 260 seconds) |
2020-11-02 15:47:04 +0100 | <bqv> | dminuoso: I used to |
2020-11-02 15:47:14 +0100 | <bqv> | I used to avoid every and all extensions |
2020-11-02 15:47:24 +0100 | <bqv> | That meant a lot of pack |
2020-11-02 15:47:30 +0100 | geekosaur | (ac3a8c5f@172.58.140.95) (Remote host closed the connection) |
2020-11-02 15:47:31 +0100 | <bqv> | And a lot of unpack |
2020-11-02 15:48:02 +0100 | borne | (~fritjof@200116b864ec3c00c8b76624f4b75a13.dip.versatel-1u1.de) (Ping timeout: 260 seconds) |
2020-11-02 15:48:05 +0100 | <bqv> | Sometimes in that order... |
2020-11-02 15:48:41 +0100 | <dminuoso> | bqv: What about packages that impose FlexibleContexts/FlexibleInstances on you? |
2020-11-02 15:48:53 +0100 | <dminuoso> | Especially since 8.10 it's getting increasingly harder to avoid extensions |
2020-11-02 15:49:07 +0100 | <dminuoso> | (The change itself is welcome, but the impact could be undesirable) |
2020-11-02 15:49:11 +0100 | <bqv> | Never had the pleasure of one back then |
2020-11-02 15:49:15 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds) |
2020-11-02 15:49:54 +0100 | <bqv> | Nowadays of course, my haskell files come with lists of extensions like I'm ordering á la carte |
2020-11-02 15:50:11 +0100 | <bqv> | If I can't have none, not much point being skiddish |
2020-11-02 15:50:24 +0100 | chaosmasttter | (~chaosmast@p200300c4a72dee01a86cafb086ba766e.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2020-11-02 15:50:41 +0100 | alx741 | (~alx741@186.178.110.178) (Ping timeout: 268 seconds) |
2020-11-02 15:51:05 +0100 | <bqv> | I would care about portable haskell, but ghc has a pretty unholy monopoly thats really not going anywhere anyway |
2020-11-02 15:52:24 +0100 | Varis | (~Tadas@unaffiliated/varis) (Remote host closed the connection) |
2020-11-02 15:56:44 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 15:56:54 +0100 | idhugo | (~idhugo@80-62-116-101-mobile.dk.customer.tdc.net) (Ping timeout: 258 seconds) |
2020-11-02 15:58:48 +0100 | Gurkenglas__ | (~Gurkengla@unaffiliated/gurkenglas) |
2020-11-02 15:59:30 +0100 | hackage | wai-log 0.3.0.0 - A logging middleware for WAI applications https://hackage.haskell.org/package/wai-log-0.3.0.0 (jonathanjouty_scrive) |
2020-11-02 16:00:01 +0100 | notmyname | (~notmyname@84.39.116.180) () |
2020-11-02 16:00:34 +0100 | nkly | (~nkly@ip5b40d080.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds) |
2020-11-02 16:01:27 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds) |
2020-11-02 16:01:49 +0100 | toorevitimirp | (~tooreviti@117.182.183.132) (Remote host closed the connection) |
2020-11-02 16:02:28 +0100 | hyperisco | (~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Read error: Connection reset by peer) |
2020-11-02 16:04:11 +0100 | PacoV | (2d535a95@gateway/web/cgi-irc/kiwiirc.com/ip.45.83.90.149) |
2020-11-02 16:04:46 +0100 | <PacoV> | Hi there. |
2020-11-02 16:04:57 +0100 | alx741 | (~alx741@186.178.110.193) |
2020-11-02 16:05:20 +0100 | <yushyin> | Hi PacoV |
2020-11-02 16:05:42 +0100 | <PacoV> | I've multiple functions of type "a -> mb" and a list of "[a]". |
2020-11-02 16:06:06 +0100 | <PacoV> | At the moment I do "mapM_ function list" for each function. |
2020-11-02 16:06:34 +0100 | <PacoV> | Is there a way to call every function with the list as arguments (and discard the result)? |
2020-11-02 16:07:42 +0100 | <dminuoso> | PacoV: That's still traverse_/mapM_ |
2020-11-02 16:08:01 +0100 | <dminuoso> | traverse ($ xs) [f, g, h] |
2020-11-02 16:08:04 +0100 | <dminuoso> | traverse_ ($ xs) [f, g, h] |
2020-11-02 16:08:43 +0100 | <dminuoso> | % traverse_ ($ "foo") [putStr, putStr, putStr] |
2020-11-02 16:08:43 +0100 | <yahb> | dminuoso: foofoofoo |
2020-11-02 16:08:45 +0100 | sveit | (~sveit@2001:19f0:ac01:247:5400:ff:fe5c:689f) (Quit: Bye) |
2020-11-02 16:08:49 +0100 | <PacoV> | Ok, I'll have a look at traverse. |
2020-11-02 16:08:56 +0100 | <merijn> | dminuoso: That's just a single item, though, not a list of items |
2020-11-02 16:09:00 +0100 | <dminuoso> | PacoV: traverse/traverse_ are just mapM/mapM_ |
2020-11-02 16:09:13 +0100 | <PacoV> | Ho, so, not enough. |
2020-11-02 16:09:16 +0100 | Sgeo | (~Sgeo@ool-18b982ad.dyn.optonline.net) |
2020-11-02 16:09:17 +0100 | <merijn> | :t \fs as -> mapM_ (sequence fs) as |
2020-11-02 16:09:18 +0100 | <lambdabot> | (Monad m, Traversable m, Foldable t) => m (a -> b) -> t a -> m () |
2020-11-02 16:09:22 +0100 | <dminuoso> | merijn: huh? |
2020-11-02 16:09:22 +0100 | <merijn> | boom |
2020-11-02 16:09:29 +0100 | texasmynsted | (~texasmyns@212.102.45.115) |
2020-11-02 16:09:33 +0100 | <merijn> | dminuoso: He wants to apply a list of functions to a list of values |
2020-11-02 16:09:52 +0100 | <dminuoso> | Guess there's two ways to read this.. |
2020-11-02 16:10:21 +0100 | <merijn> | % mapM_ (sequence [print, print]) [1..5] |
2020-11-02 16:10:22 +0100 | <yahb> | merijn: ; <interactive>:331:1: error:; * Could not deduce: Item (m (a0 -> b0)) ~ (a1 -> IO ()); from the context: (Monad m, Traversable m, Show a, IsList (m (a2 -> b)), IsList (t a2), Num (Item (t a2)), Enum (Item (t a2)), Foldable t, Item (m (a2 -> b)) ~ (a -> IO ())); bound by the inferred type for `it':; forall (m :: * -> *) a a2 b (t :: * -> *). (Monad m, Traversable m, |
2020-11-02 16:10:58 +0100 | <merijn> | ugh, how do I reset yahb? |
2020-11-02 16:11:10 +0100 | <dminuoso> | It's ghci |
2020-11-02 16:11:11 +0100 | sveit | (~sveit@45.77.0.246) |
2020-11-02 16:11:12 +0100 | <dminuoso> | So :q |
2020-11-02 16:11:16 +0100 | <merijn> | % :q |
2020-11-02 16:11:16 +0100 | <yahb> | merijn: |
2020-11-02 16:11:18 +0100 | <merijn> | % mapM_ (sequence [print, print]) [1..5] |
2020-11-02 16:11:20 +0100 | <yahb> | merijn: [(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),()] |
2020-11-02 16:11:37 +0100 | <merijn> | that's not right.. |
2020-11-02 16:12:00 +0100 | <dminuoso> | well.. |
2020-11-02 16:12:05 +0100 | <merijn> | :t sequence [print, print] |
2020-11-02 16:12:07 +0100 | <lambdabot> | Show a => a -> [IO ()] |
2020-11-02 16:12:13 +0100 | borne | (~fritjof@200116b864ec3c00c8b76624f4b75a13.dip.versatel-1u1.de) |
2020-11-02 16:12:14 +0100 | <merijn> | ah |
2020-11-02 16:12:15 +0100 | <dminuoso> | this is just ap.. |
2020-11-02 16:12:35 +0100 | <merijn> | % mapM_ (sequence_ [print, print]) [1..5] |
2020-11-02 16:12:35 +0100 | <yahb> | merijn: ; <interactive>:2:8: error:; * Couldn't match type `()' with `m b0'; Expected type: a0 -> m b0; Actual type: a0 -> (); * In the first argument of `mapM_', namely `(sequence_ [print, print])'; In the expression: mapM_ (sequence_ [print, print]) [1 .. 5]; In an equation for `it': it = mapM_ (sequence_ [print, print]) [1 .. 5]; * Relevant bindings include it :: m () (bou |
2020-11-02 16:12:49 +0100 | <dminuoso> | % sequence ([print, print] <$> [1...5]) |
2020-11-02 16:12:49 +0100 | <yahb> | dminuoso: ; <interactive>:3:11: error:; * Couldn't match expected type `Over p0 f0 s0 t0 a1 b0 -> m a' with actual type `[a0 -> IO ()]'; * In the first argument of `(<$>)', namely `[print, print]'; In the first argument of `sequence', namely `([print, print] <$> [1 ... 5])'; In the expression: sequence ([print, print] <$> [1 ... 5]); * Relevant bindings include it :: m [a] (bound at <inter |
2020-11-02 16:12:50 +0100 | <PacoV> | It looks just about what I need. |
2020-11-02 16:12:50 +0100 | <merijn> | ok, I give up on making it work :p |
2020-11-02 16:13:06 +0100 | <dminuoso> | % sequence ([print, print] <*> [1...5]) |
2020-11-02 16:13:06 +0100 | <yahb> | dminuoso: ; <interactive>:4:12: error:; * No instance for (Show (Over p0 f0 s0 t0 a0 b0)) arising from a use of `print'; (maybe you haven't applied a function to enough arguments?); * In the expression: print; In the first argument of `(<*>)', namely `[print, print]'; In the first argument of `sequence', namely `([print, print] <*> [1 ... 5])'; <interactive>:4:31: error:; * No insta |
2020-11-02 16:13:13 +0100 | <PacoV> | Thanks! |
2020-11-02 16:13:15 +0100 | <dminuoso> | huh |
2020-11-02 16:13:21 +0100 | <dminuoso> | % sequence ([print, print] <*> [1...5] :: [Int]) |
2020-11-02 16:13:21 +0100 | <yahb> | dminuoso: ; <interactive>:5:11: error:; * Couldn't match type `IO ()' with `Int'; Expected type: [Int]; Actual type: [IO ()]; * In the first argument of `sequence', namely `([print, print] <*> [1 ... 5] :: [Int])'; In the expression: sequence ([print, print] <*> [1 ... 5] :: [Int]); In an equation for `it': it = sequence ([print, print] <*> [1 ... 5] :: [Int]); <interactive>:5:11: |
2020-11-02 16:13:26 +0100 | <dminuoso> | *shrugs* |
2020-11-02 16:13:37 +0100 | TheScoop | (~TheScoop@unaffiliated/tryte) (Quit: _) |
2020-11-02 16:13:39 +0100 | <dminuoso> | merijn: makes you wonder how we get anything done, if we cant even solve beginner problems |
2020-11-02 16:13:49 +0100 | <merijn> | I'd just use bindings :p |
2020-11-02 16:14:02 +0100 | <dminuoso> | and probably not structure your code to end up in that place |
2020-11-02 16:14:14 +0100 | texasmynsted | (~texasmyns@212.102.45.115) (Ping timeout: 256 seconds) |
2020-11-02 16:14:16 +0100 | <dminuoso> | I've never written sequence anywhere |
2020-11-02 16:14:44 +0100 | alp | (~alp@2a01:e0a:58b:4920:34a0:e5bb:3231:c2c3) (Ping timeout: 268 seconds) |
2020-11-02 16:14:45 +0100 | <dminuoso> | Indeed, none of my haskell projects have a single occurence of i |
2020-11-02 16:16:21 +0100 | <dminuoso> | % :t sequence_ $ [putStr, putStr] <*> ["foo","bar"] -- merijn |
2020-11-02 16:16:22 +0100 | <yahb> | dminuoso: IO () |
2020-11-02 16:16:23 +0100 | <dminuoso> | Did you mean that? |
2020-11-02 16:16:36 +0100 | <merijn> | no |
2020-11-02 16:16:50 +0100 | <merijn> | The problem is that I meant a double sequence or something weird |
2020-11-02 16:16:54 +0100 | <dminuoso> | Then I really dont understand what you're trying to write |
2020-11-02 16:17:02 +0100 | <merijn> | :t sequence_ . sequence [print, print] |
2020-11-02 16:17:04 +0100 | <lambdabot> | Show a => a -> IO () |
2020-11-02 16:17:08 +0100 | <merijn> | That |
2020-11-02 16:17:09 +0100 | <dminuoso> | huh |
2020-11-02 16:17:11 +0100 | <dminuoso> | % :t sequence_ [print, print] |
2020-11-02 16:17:11 +0100 | <yahb> | dminuoso: Show a => a -> () |
2020-11-02 16:17:19 +0100 | <dminuoso> | % :t sequence_ |
2020-11-02 16:17:19 +0100 | <yahb> | dminuoso: (Foldable t, Monad m) => t (m a) -> m () |
2020-11-02 16:17:30 +0100 | <dminuoso> | oh |
2020-11-02 16:17:36 +0100 | hpc | (~juzz@ip98-169-35-13.dc.dc.cox.net) (Ping timeout: 258 seconds) |
2020-11-02 16:17:50 +0100 | <merijn> | First one for the "a ->", second for the internal IO |
2020-11-02 16:17:51 +0100 | <dminuoso> | % :t sequence [print, print] |
2020-11-02 16:17:52 +0100 | <yahb> | dminuoso: Show a => a -> [IO ()] |
2020-11-02 16:17:53 +0100 | <dminuoso> | Right |
2020-11-02 16:18:33 +0100 | <dminuoso> | but how exactly is that different from |
2020-11-02 16:18:36 +0100 | <dminuoso> | % :t sequence_ $ [putStr, putStr] <*> ["foo","bar"] |
2020-11-02 16:18:37 +0100 | <yahb> | dminuoso: IO () |
2020-11-02 16:18:52 +0100 | <dminuoso> | In both cases you generate the cartesian product |
2020-11-02 16:19:00 +0100 | <dminuoso> | apply, and then sequence |
2020-11-02 16:19:15 +0100 | <dminuoso> | yours is just a bit more hidden |
2020-11-02 16:19:54 +0100 | daydaynatation | (~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
2020-11-02 16:20:29 +0100 | jokester | (~mono@unaffiliated/jokester) (Quit: WeeChat 2.8) |
2020-11-02 16:21:11 +0100 | twk- | (~thewormki@unaffiliated/twk-) (Ping timeout: 272 seconds) |
2020-11-02 16:21:49 +0100 | Tario | (~Tario@200.119.184.48) (Ping timeout: 246 seconds) |
2020-11-02 16:23:27 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 16:24:23 +0100 | Varis | (~Tadas@unaffiliated/varis) |
2020-11-02 16:24:38 +0100 | khaladrogo_786 | (~khaladrog@2405:204:5217:6256:258b:d489:f19c:6ea7) |
2020-11-02 16:24:42 +0100 | jakob_ | (~textual@p200300f49f162200f40f209088e2d2f9.dip0.t-ipconnect.de) |
2020-11-02 16:25:00 +0100 | <daydaynatation> | Are there any sort function on Data.Array? |
2020-11-02 16:25:10 +0100 | <bqv> | But its pointfree |
2020-11-02 16:25:39 +0100 | <PacoV> | Okay, I'll use dminuoso's version as the "m ()" has the right type in the end. |
2020-11-02 16:27:43 +0100 | DataComputist | (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) (Quit: Leaving...) |
2020-11-02 16:27:59 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds) |
2020-11-02 16:28:06 +0100 | PacoV | (2d535a95@gateway/web/cgi-irc/kiwiirc.com/ip.45.83.90.149) (Quit: thanks!) |
2020-11-02 16:28:25 +0100 | <daydaynatation> | Just found out that there is no sort function for Vector neither... |
2020-11-02 16:28:32 +0100 | christo | (~chris@81.96.113.213) |
2020-11-02 16:28:50 +0100 | <merijn> | daydaynatation: You want vector-algorithms :) |
2020-11-02 16:28:56 +0100 | <merijn> | @hackage vector-algorithms |
2020-11-02 16:28:57 +0100 | <lambdabot> | https://hackage.haskell.org/package/vector-algorithms |
2020-11-02 16:29:04 +0100 | <daydaynatation> | ah ha |
2020-11-02 16:29:09 +0100 | justanotheruser | (~justanoth@unaffiliated/justanotheruser) |
2020-11-02 16:29:23 +0100 | <daydaynatation> | merijn: how about array-algorithms? does it exist? |
2020-11-02 16:29:29 +0100 | <merijn> | No clue |
2020-11-02 16:29:58 +0100 | <merijn> | Unless you need generalised indexing via Ix vector is generally better |
2020-11-02 16:30:20 +0100 | jespada | (~jespada@90.254.245.49) (Ping timeout: 265 seconds) |
2020-11-02 16:30:33 +0100 | <daydaynatation> | I'm just doing some comparison between Haskell and C++, for learning's sake |
2020-11-02 16:31:01 +0100 | <daydaynatation> | I guess Haskell's array is way too different from C++ array |
2020-11-02 16:31:06 +0100 | <merijn> | daydaynatation: right, if you just want 1D arrays/vector like C/C++ then you probably want vector |
2020-11-02 16:31:28 +0100 | cohn | (~noone@unaffiliated/cohn) () |
2020-11-02 16:31:46 +0100 | LeanderK | (~textual@46.183.103.17) |
2020-11-02 16:32:04 +0100 | LeanderK | (~textual@46.183.103.17) (Client Quit) |
2020-11-02 16:32:34 +0100 | jespada | (~jespada@90.254.245.49) |
2020-11-02 16:33:36 +0100 | <daydaynatation> | btw, does cabal hell still exits? I use ghcup to install ghc and cabal and then cabal install everything in the global scope. Is this the usual way of installing packagings with cabal? or do people cabal install some kind of sandbox |
2020-11-02 16:34:07 +0100 | khaladrogo_786 | (~khaladrog@2405:204:5217:6256:258b:d489:f19c:6ea7) (Quit: Leaving) |
2020-11-02 16:34:17 +0100 | twk- | (~thewormki@unaffiliated/twk-) |
2020-11-02 16:35:00 +0100 | Amras | (~Amras@unaffiliated/amras0000) |
2020-11-02 16:35:01 +0100 | <merijn> | daydaynatation: Actual cabal hell has been gone for close to a decade. What people *now* call cabal hell is simply "I'm depending on ancient unmaintained packages and the dependency solver can't find a solution", which doesn't really have a solution |
2020-11-02 16:35:23 +0100 | <bqv> | With nix, you can jailbreak... |
2020-11-02 16:35:24 +0100 | xff0x | (~fox@2001:1a81:537c:3e00:725d:2adb:f456:fdfe) (Ping timeout: 240 seconds) |
2020-11-02 16:35:38 +0100 | <merijn> | daydaynatation: As for sandboxing individual projects, as of cabal-install 3.0 that is unncecessary |
2020-11-02 16:35:40 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 16:35:48 +0100 | andreas303 | (~andreas@gateway/tor-sasl/andreas303) (Remote host closed the connection) |
2020-11-02 16:36:21 +0100 | <maerwald> | you can use stack2cabal too |
2020-11-02 16:36:23 +0100 | <merijn> | daydaynatation: Basically, every installed package is tagged with a hash of its source, exact version and compile flags, and the hashes of it's transitive dependencies |
2020-11-02 16:36:23 +0100 | <daydaynatation> | Wow, great to know! So I just cabal install globally and it just works? Nix is too complicated |
2020-11-02 16:36:30 +0100 | xff0x | (~fox@2001:1a81:537c:3e00:d3d4:b70f:c4f2:86e2) |
2020-11-02 16:36:32 +0100 | <maerwald> | @hackage stack2cabal |
2020-11-02 16:36:32 +0100 | <lambdabot> | https://hackage.haskell.org/package/stack2cabal |
2020-11-02 16:36:44 +0100 | <merijn> | daydaynatation: So you can have infinitely many different configurations/versions of the same package installed |
2020-11-02 16:36:47 +0100 | <maerwald> | in case you can't build with cabal |
2020-11-02 16:37:43 +0100 | cantstanya | (~chatting@gateway/tor-sasl/cantstanya) (Ping timeout: 240 seconds) |
2020-11-02 16:37:56 +0100 | andreas31 | (~andreas@gateway/tor-sasl/andreas303) |
2020-11-02 16:40:05 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 240 seconds) |
2020-11-02 16:40:10 +0100 | <merijn> | daydaynatation: cabal-install will select the right/matching versions from the global store when building a project. So you end up with builds happening "as if" they're in a sandbox, except you don't need to manage sandboxes/virtualenvs, as they all share a single global store |
2020-11-02 16:40:46 +0100 | <merijn> | daydaynatation: See also https://cabal.readthedocs.io/en/latest/nix-local-build-overview.html (despite the nix url, doesn't actually have anything to with nix other than "the general idea") |
2020-11-02 16:41:16 +0100 | <merijn> | (note that the v2- prefix is optional in cabal 3.0 and later, as all the commands default to v2-) |
2020-11-02 16:41:29 +0100 | <yushyin> | yes, it's misleading |
2020-11-02 16:41:33 +0100 | <daydaynatation> | Thanks! |
2020-11-02 16:41:42 +0100 | borne | (~fritjof@200116b864ec3c00c8b76624f4b75a13.dip.versatel-1u1.de) (Ping timeout: 260 seconds) |
2020-11-02 16:42:04 +0100 | <merijn> | yushyin: Patches welcome ;) |
2020-11-02 16:42:12 +0100 | cantstanya | (~chatting@gateway/tor-sasl/cantstanya) |
2020-11-02 16:42:12 +0100 | <dolio> | What's misleading? |
2020-11-02 16:42:15 +0100 | alp | (~alp@2a01:e0a:58b:4920:60be:9d51:3099:266d) |
2020-11-02 16:42:16 +0100 | <yushyin> | the name |
2020-11-02 16:42:39 +0100 | <merijn> | dolio: "nix local builds" tends to mislead people into thinking it's about Nix |
2020-11-02 16:42:48 +0100 | khaladrogo | (~khaladrog@2405:204:5217:6256:258b:d489:f19c:6ea7) (Remote host closed the connection) |
2020-11-02 16:42:50 +0100 | <dolio> | It says "nix-style local builds". |
2020-11-02 16:42:58 +0100 | <merijn> | dolio: Not in the url |
2020-11-02 16:43:14 +0100 | <dolio> | Maybe read the actual page instead of just the url. |
2020-11-02 16:43:35 +0100 | <merijn> | dolio: And even nix-style has repeatedly led to confusion here |
2020-11-02 16:45:36 +0100 | TheScoop | (~TheScoop@unaffiliated/tryte) |
2020-11-02 16:45:39 +0100 | hnOsmium0001 | (uid453710@gateway/web/irccloud.com/x-jbpkroausxoplpus) |
2020-11-02 16:45:40 +0100 | MaoZeDong_ | (~yuri@2a00:1370:8135:4003:bd58:898c:9e9d:d049) |
2020-11-02 16:46:12 +0100 | <yushyin> | but is there a better and more descriptive name? I have no idea. |
2020-11-02 16:46:32 +0100 | <bqv> | Nix is popular in haskell anyway, no? |
2020-11-02 16:46:58 +0100 | <merijn> | bqv: eh... |
2020-11-02 16:47:11 +0100 | <merijn> | bqv: There's certainly a very vocal group of fans :) |
2020-11-02 16:47:24 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2020-11-02 16:47:29 +0100 | <merijn> | I wouldn't say they're remotely close to a majority, though |
2020-11-02 16:47:40 +0100 | sdrodge | (~sdrodge@unaffiliated/sdrodge) (Ping timeout: 256 seconds) |
2020-11-02 16:47:50 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 16:47:53 +0100 | <dolio> | I think a lot of people like the vague idea, and the implementation in cabal is likely to be preferable for most people. |
2020-11-02 16:47:55 +0100 | <bqv> | The nix folk make it seem like haskell's rife with nixerse.. |
2020-11-02 16:48:26 +0100 | <merijn> | dolio: I like the *idea* of Nix, they're making it very hard to like the *execution* of Nix, though ;) |
2020-11-02 16:48:46 +0100 | <dolio> | Right, that's what I was getting at. :) |
2020-11-02 16:49:10 +0100 | <merijn> | I wish someone would make Nix, but like, not sucking :p |
2020-11-02 16:49:12 +0100 | <bqv> | Believe me I agree... |
2020-11-02 16:49:58 +0100 | <yushyin> | cabal v2-* works well for me, I am quite happy with it |
2020-11-02 16:50:02 +0100 | <bqv> | But the way I normally phrase it, I like nix, I just hate nixpkgs and nixos |
2020-11-02 16:50:11 +0100 | son0p | (~son0p@181.136.122.143) |
2020-11-02 16:50:11 +0100 | <dolio> | Of course, the cabal one only really does anything for Haskell things. |
2020-11-02 16:50:18 +0100 | <bqv> | But sadly nothing compares and I have stockholm syndrome |
2020-11-02 16:52:29 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 258 seconds) |
2020-11-02 16:52:55 +0100 | ddellacosta | (~dd@86.106.121.168) |
2020-11-02 16:52:56 +0100 | <chreekat[m]> | It's the other way around maybe - lots of Haskellers active in Nix community as well |
2020-11-02 16:53:15 +0100 | <dolio> | bqv: I've heard some of the Haskell power users complaining about the language as well. |
2020-11-02 16:53:29 +0100 | <dolio> | Although I couldn't give specifics myself. |
2020-11-02 16:54:02 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-02 16:54:06 +0100 | <tdammers> | I think the most common complaint about nix-the-language is that it's thoroughly untyped |
2020-11-02 16:54:19 +0100 | christo | (~chris@81.96.113.213) |
2020-11-02 16:54:29 +0100 | <chreekat[m]> | E.g. The nixpkgs support for Haskell has had a lot of work put into it, and it's not even the only implementation available |
2020-11-02 16:54:53 +0100 | <tdammers> | and that that makes it really hard to make things discoverable |
2020-11-02 16:55:03 +0100 | <monochrom> | In an alternate universe, the nix language is thoroughly typed. In ##scheme, they complain that it's thoroughly typed. :) |
2020-11-02 16:55:15 +0100 | cohn | (~noone@unaffiliated/cohn) |
2020-11-02 16:55:22 +0100 | pixel_ | (~pixel_@84.39.116.180) |
2020-11-02 16:55:27 +0100 | idhugo | (~idhugo@80-62-116-101-mobile.dk.customer.tdc.net) |
2020-11-02 16:55:51 +0100 | <tdammers> | IME, lispers tend to have marginally higher tolerance for typed languages than haskellers have for untyped languages |
2020-11-02 16:56:09 +0100 | <dolio> | I don't think it was about types. It was about some inconsistencies with how things worked or something. Special cases that would confuse people. |
2020-11-02 16:56:34 +0100 | <tdammers> | some of that is linked to the unitypedness though |
2020-11-02 16:56:38 +0100 | refried_ | (~textual@pool-108-20-26-90.bstnma.fios.verizon.net) |
2020-11-02 16:56:40 +0100 | <dsal> | It's a weird language, for sure. |
2020-11-02 16:56:54 +0100 | <chreekat[m]> | My complaint is the thoroughgoing reliance on fix points for enabling extension. I mean, i don't really have a better idea, but i grokked monads well before i grokked fixpoints, and they still bend my head some. Error messages suffer, too |
2020-11-02 16:56:57 +0100 | <tdammers> | personally, I think making an entirely new language for this was a mistake |
2020-11-02 16:57:46 +0100 | <chreekat[m]> | I guess if it still bends my head, i don't actually grok them :) |
2020-11-02 16:58:03 +0100 | refried_ | (~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Client Quit) |
2020-11-02 16:58:05 +0100 | Unhammer | (~Unhammer@gateway/tor-sasl/unhammer) (Remote host closed the connection) |
2020-11-02 16:58:23 +0100 | <tdammers> | packaging things for, well, any platform really, is not something most developers love to do, it's something we want to get over with ASAP. having to learn an entire programming language, and a badly documented one at that, creates a harsh barrier |
2020-11-02 16:58:50 +0100 | MaoZeDong_ | (~yuri@2a00:1370:8135:4003:bd58:898c:9e9d:d049) (Quit: Leaving) |
2020-11-02 16:58:58 +0100 | <dolio> | Well, I can tell you that not inventing a new language doesn't avoid that part. :) |
2020-11-02 16:59:06 +0100 | Unhammer | (~Unhammer@gateway/tor-sasl/unhammer) |
2020-11-02 16:59:23 +0100 | <monochrom> | I haven't studied nix. But if enabling extensions is equivalent to OOP subclassing and virtual methods and late binding, then semantically a fix point (over open recursion, even) is necessary. What you can argue over is whether the syntax should expose or hide this fact. |
2020-11-02 16:59:37 +0100 | khaladrogo | (~khaladrog@2409:4071:228e:e077:f1ab:1e40:6c9b:8f55) |
2020-11-02 16:59:50 +0100 | refried_ | (~textual@pool-108-20-26-90.bstnma.fios.verizon.net) |
2020-11-02 16:59:55 +0100 | <tdammers> | an entirely new language *can* be the right choice, but it has to pull its weight and be completely non-frightening |
2020-11-02 17:00:26 +0100 | Rudd0 | (~Rudd0@185.189.115.103) |
2020-11-02 17:00:59 +0100 | aarvar | (~foewfoiew@50.35.43.33) |
2020-11-02 17:01:36 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 268 seconds) |
2020-11-02 17:01:49 +0100 | motherfsck | (~motherfsc@unaffiliated/motherfsck) |
2020-11-02 17:04:06 +0100 | <maerwald> | tdammers: packaging requires more discipline than the average programming imo. Having followed NixOS from its early beginnings, my opinion is that it never reached a critical mass of quality dedicated packagers |
2020-11-02 17:04:22 +0100 | <maerwald> | much more drive by contributions |
2020-11-02 17:04:49 +0100 | <dolio> | I'm mainly thinking of SBT in Scala, which was an embedded language in Scala, but it was pretty hard to figure out how to do anything that didn't happen automatically. |
2020-11-02 17:04:52 +0100 | cole-h | (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) |
2020-11-02 17:06:18 +0100 | <dolio> | Because the documentation didn't really tell you how. |
2020-11-02 17:07:31 +0100 | hackage | hakyll-typescript 0.0.2.0 - Typescript and javascript hakyll compilers. https://hackage.haskell.org/package/hakyll-typescript-0.0.2.0 (jhmcstanton) |
2020-11-02 17:07:50 +0100 | khaladrogo | (~khaladrog@2409:4071:228e:e077:f1ab:1e40:6c9b:8f55) (Ping timeout: 264 seconds) |
2020-11-02 17:09:36 +0100 | knupfer | (~Thunderbi@200116b82c45b300601996fffe927128.dip.versatel-1u1.de) |
2020-11-02 17:09:43 +0100 | dbmikus | (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) |
2020-11-02 17:10:01 +0100 | knupfer | (~Thunderbi@200116b82c45b300601996fffe927128.dip.versatel-1u1.de) (Remote host closed the connection) |
2020-11-02 17:10:15 +0100 | knupfer | (~Thunderbi@200116b82c45b300ad86251a82d2e82c.dip.versatel-1u1.de) |
2020-11-02 17:10:35 +0100 | wroathe | (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) |
2020-11-02 17:10:40 +0100 | bscarlet | (~benjamin@forest.greynode.net) |
2020-11-02 17:11:03 +0100 | _xor | (~xor@74.215.46.133) (Read error: Connection reset by peer) |
2020-11-02 17:11:49 +0100 | mastarija | (~mastarija@93-136-211-205.adsl.net.t-com.hr) |
2020-11-02 17:12:09 +0100 | _xor | (~xor@74.215.46.133) |
2020-11-02 17:13:37 +0100 | _xor | (~xor@74.215.46.133) (Read error: Connection reset by peer) |
2020-11-02 17:13:56 +0100 | Jesin | (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Ping timeout: 268 seconds) |
2020-11-02 17:14:22 +0100 | _xor | (~xor@74.215.46.133) |
2020-11-02 17:21:07 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-11-02 17:21:44 +0100 | jonathanx | (~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection) |
2020-11-02 17:22:11 +0100 | tauli | (~textual@185.213.155.161) |
2020-11-02 17:22:26 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-02 17:23:51 +0100 | mastarija | (~mastarija@93-136-211-205.adsl.net.t-com.hr) (Quit: Leaving) |
2020-11-02 17:24:00 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-02 17:24:00 +0100 | <tauli> | Does anyone know where cabal get's the authors name and email from when initialising a new package? doesn't seem to be in .cabal/config |
2020-11-02 17:24:28 +0100 | <monochrom> | .gitconfig |
2020-11-02 17:25:12 +0100 | bitmagie | (~Thunderbi@200116b806d43f002c1b74646a240ada.dip.versatel-1u1.de) |
2020-11-02 17:25:18 +0100 | whatisRT | (~whatisRT@2002:5b41:6a33:0:dea6:32ff:fe5b:d45f) |
2020-11-02 17:27:00 +0100 | <tauli> | do i have to refresh some cache? changed ~/.gitconfig but cabal still writes the old email adress |
2020-11-02 17:27:29 +0100 | <tauli> | am on macOS with cabal 3.2.0.0 |
2020-11-02 17:27:44 +0100 | alp | (~alp@2a01:e0a:58b:4920:60be:9d51:3099:266d) (Ping timeout: 240 seconds) |
2020-11-02 17:27:54 +0100 | <monochrom> | works for me |
2020-11-02 17:28:36 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection) |
2020-11-02 17:28:38 +0100 | enikar | (~enikar@chezlefab.net) (Quit: WeeChat 2.3) |
2020-11-02 17:28:38 +0100 | munsel | (~munsel@v22018094214772867.hotsrv.de) |
2020-11-02 17:28:41 +0100 | coot | (~coot@37.30.60.135.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
2020-11-02 17:28:54 +0100 | enikar | (~enikar@2001:41d0:2:8673::42) |
2020-11-02 17:29:04 +0100 | bitmagie | (~Thunderbi@200116b806d43f002c1b74646a240ada.dip.versatel-1u1.de) (Client Quit) |
2020-11-02 17:29:31 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) |
2020-11-02 17:29:31 +0100 | <c_wraith> | tauli: does `git config user.name` show the changed version? |
2020-11-02 17:30:11 +0100 | <tauli> | it's `git config user.email` but yes, that's changed |
2020-11-02 17:30:42 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection) |
2020-11-02 17:31:38 +0100 | <tauli> | ok, changing user works, but not with the email address |
2020-11-02 17:31:38 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) |
2020-11-02 17:31:53 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) |
2020-11-02 17:32:02 +0100 | <tauli> | maintainer in the .cabal is set to some old mail address |
2020-11-02 17:32:39 +0100 | <monochrom> | OK I didn't test maintainer. I tested cabal init. |
2020-11-02 17:33:10 +0100 | dbmikus | (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 265 seconds) |
2020-11-02 17:33:10 +0100 | <monochrom> | Oh, that's maintainer. |
2020-11-02 17:33:32 +0100 | <tauli> | yep, when i do `cabal init` the maintainer field of the generated .cabal file is set some old mail address i don't know where cabal get's that from |
2020-11-02 17:35:34 +0100 | u0_a298 | (~user@47.206.148.226) (Remote host closed the connection) |
2020-11-02 17:35:57 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-02 17:36:05 +0100 | chkno | (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds) |
2020-11-02 17:38:29 +0100 | christo | (~chris@81.96.113.213) |
2020-11-02 17:38:56 +0100 | raichoo | (~raichoo@dslb-092-073-210-010.092.073.pools.vodafone-ip.de) |
2020-11-02 17:39:08 +0100 | xerox_ | (~xerox@unaffiliated/xerox) |
2020-11-02 17:40:11 +0100 | <tomsmeding> | tauli: also `git config --global user.email`? |
2020-11-02 17:40:21 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-02 17:40:26 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2020-11-02 17:41:21 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 17:41:42 +0100 | christo | (~chris@81.96.113.213) |
2020-11-02 17:41:53 +0100 | dbmikus | (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) |
2020-11-02 17:42:06 +0100 | <tomsmeding> | you can also run `strace -f -o log.txt cabal init` and search the produced log.txt for "gitconfig" to see which file it's using |
2020-11-02 17:42:19 +0100 | <tomsmeding> | (assuming linux; dtruss on mac, no idea on windows) |
2020-11-02 17:42:42 +0100 | mrchampion | (~mrchampio@216-211-57-41.dynamic.tbaytel.net) (Ping timeout: 258 seconds) |
2020-11-02 17:42:47 +0100 | <tomsmeding> | (oh you said macOS; something something dtruss :p ) |
2020-11-02 17:44:01 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-02 17:44:26 +0100 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) |
2020-11-02 17:45:46 +0100 | mrchampion | (~mrchampio@216-211-57-41.dynamic.tbaytel.net) |
2020-11-02 17:45:55 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds) |
2020-11-02 17:47:00 +0100 | hackage | hakaru 0.7.0 - A probabilistic programming language https://hackage.haskell.org/package/hakaru-0.7.0 (z) |
2020-11-02 17:47:08 +0100 | sfvm | (~sfvm@37.228.215.148) |
2020-11-02 17:47:46 +0100 | christo | (~chris@81.96.113.213) |
2020-11-02 17:47:48 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-11-02 17:47:51 +0100 | akad_ | (~akad@109107030050.radomsko.vectranet.pl) |
2020-11-02 17:48:31 +0100 | LKoen_ | (~LKoen@79.160.9.109.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”) |
2020-11-02 17:49:45 +0100 | borne | (~fritjof@200116b864ec3c00c8b76624f4b75a13.dip.versatel-1u1.de) |
2020-11-02 17:49:51 +0100 | Neo-- | (~neo@188-230-154-134.dynamic.t-2.net) (Remote host closed the connection) |
2020-11-02 17:50:10 +0100 | <tauli> | the culprint was ~/.darcs/author |
2020-11-02 17:50:18 +0100 | <tauli> | thanks for all the pointers |
2020-11-02 17:50:19 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-02 17:50:39 +0100 | refried_ | (~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
2020-11-02 17:51:07 +0100 | whatisRT | (~whatisRT@2002:5b41:6a33:0:dea6:32ff:fe5b:d45f) (Ping timeout: 260 seconds) |
2020-11-02 17:51:13 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
2020-11-02 17:51:21 +0100 | <Uniaika> | /7 |
2020-11-02 17:53:32 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 17:54:42 +0100 | christo | (~chris@81.96.113.213) |
2020-11-02 17:55:25 +0100 | nkly | (~nkly@ip5b40d080.dynamic.kabel-deutschland.de) |
2020-11-02 17:55:27 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2020-11-02 17:56:04 +0100 | kritzefitz | (~kritzefit@fw-front.credativ.com) (Remote host closed the connection) |
2020-11-02 17:57:02 +0100 | flatmap | (~flatmap@p200300dd370a47007ce3847efe0685c7.dip0.t-ipconnect.de) |
2020-11-02 17:57:44 +0100 | Amras | (~Amras@unaffiliated/amras0000) (Ping timeout: 240 seconds) |
2020-11-02 17:57:45 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 240 seconds) |
2020-11-02 17:59:01 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-02 17:59:05 +0100 | khaladrogo | (~khaladrog@2405:204:5217:6256:f1ab:1e40:6c9b:8f55) |
2020-11-02 17:59:05 +0100 | geekosaur | (ac3a8c2c@172.58.140.44) |
2020-11-02 17:59:23 +0100 | refried_ | (~textual@pool-108-20-26-90.bstnma.fios.verizon.net) |
2020-11-02 17:59:46 +0100 | psygate | (~psygate@unaffiliated/psygate) |
2020-11-02 18:02:37 +0100 | u0_a298 | (~user@47.206.148.226) (Read error: Connection reset by peer) |
2020-11-02 18:03:05 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-02 18:04:31 +0100 | khaladrogo_lite | (~khaladrog@2405:204:5217:6256:f1ab:1e40:6c9b:8f55) |
2020-11-02 18:05:39 +0100 | christo | (~chris@81.96.113.213) |
2020-11-02 18:06:05 +0100 | andreas31 | (~andreas@gateway/tor-sasl/andreas303) (Remote host closed the connection) |
2020-11-02 18:06:19 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-02 18:07:51 +0100 | nekomune | (~nekomune@comfy.moe) (Quit: ZNC 1.7.2 - https://znc.in) |
2020-11-02 18:08:47 +0100 | kritzefitz | (~kritzefit@212.86.56.80) |
2020-11-02 18:09:14 +0100 | andreas31 | (~andreas@gateway/tor-sasl/andreas303) |
2020-11-02 18:09:19 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2020-11-02 18:10:11 +0100 | <tdammers> | maerwald: exactly. packaging is hard and thankless work - it needs to be made as painless as possible |
2020-11-02 18:10:57 +0100 | lucas | (49440e68@c-73-68-14-104.hsd1.ma.comcast.net) |
2020-11-02 18:11:12 +0100 | christo | (~chris@81.96.113.213) |
2020-11-02 18:11:14 +0100 | <maerwald> | yes, thats why most distros strictly separate configuration from packaging. In nix, its all the same |
2020-11-02 18:12:00 +0100 | lucas | (49440e68@c-73-68-14-104.hsd1.ma.comcast.net) (Remote host closed the connection) |
2020-11-02 18:12:01 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-02 18:12:11 +0100 | elfets | (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) |
2020-11-02 18:12:39 +0100 | christo | (~chris@81.96.113.213) |
2020-11-02 18:15:35 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-02 18:16:39 +0100 | conal | (~conal@198.8.81.68) (Quit: Computer has gone to sleep.) |
2020-11-02 18:17:12 +0100 | refried_ | (~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
2020-11-02 18:19:40 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 18:20:24 +0100 | christo | (~chris@81.96.113.213) |
2020-11-02 18:21:47 +0100 | todda7 | (~torstein@ppp-2-84-30-242.home.otenet.gr) |
2020-11-02 18:21:53 +0100 | alp | (~alp@2a01:e0a:58b:4920:ad5c:a549:2a77:a525) |
2020-11-02 18:22:01 +0100 | coot | (~coot@37.30.60.135.nat.umts.dynamic.t-mobile.pl) |
2020-11-02 18:22:17 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-11-02 18:22:37 +0100 | darjeeling_ | (~darjeelin@115.215.40.228) (Ping timeout: 260 seconds) |
2020-11-02 18:23:01 +0100 | darjeeling_ | (~darjeelin@115.215.40.228) |
2020-11-02 18:24:29 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 258 seconds) |
2020-11-02 18:24:52 +0100 | christo | (~chris@81.96.113.213) (Ping timeout: 258 seconds) |
2020-11-02 18:27:38 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
2020-11-02 18:28:13 +0100 | conal | (~conal@198.8.81.68) |
2020-11-02 18:28:42 +0100 | <dsal> | It's just that all other systems are so much worse. |
2020-11-02 18:29:01 +0100 | hackage | hnix 0.11.0 - Haskell implementation of the Nix language https://hackage.haskell.org/package/hnix-0.11.0 (AntonLatukha) |
2020-11-02 18:30:49 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
2020-11-02 18:31:44 +0100 | geekosaur | (ac3a8c2c@172.58.140.44) (Ping timeout: 245 seconds) |
2020-11-02 18:31:59 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 18:33:54 +0100 | christo | (~chris@81.96.113.213) |
2020-11-02 18:34:57 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-11-02 18:35:30 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-02 18:36:02 +0100 | <maerwald> | dsal: did you use another system? |
2020-11-02 18:36:19 +0100 | <maerwald> | (most of them are proprietary) |
2020-11-02 18:36:39 +0100 | LKoen | (~LKoen@79.160.9.109.rev.sfr.net) |
2020-11-02 18:36:47 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds) |
2020-11-02 18:37:21 +0100 | p-core | (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) |
2020-11-02 18:37:37 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-11-02 18:37:57 +0100 | bennofs1 | (~benno@dslb-188-106-234-230.188.106.pools.vodafone-ip.de) |
2020-11-02 18:38:44 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2020-11-02 18:39:02 +0100 | britva | (~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep) |
2020-11-02 18:41:19 +0100 | <dsal> | I've used tons of different unix systems since the 90s. |
2020-11-02 18:41:37 +0100 | ubert1 | (~Thunderbi@p200300ecdf1e530be6b318fffe838f33.dip0.t-ipconnect.de) |
2020-11-02 18:42:07 +0100 | <dsal> | nix is weird from a unix perspective, but it's super nice from a packaging perspective. docker is popular these days, but gross in many ways, including just not being great software. |
2020-11-02 18:42:29 +0100 | <monochrom> | I no longer ask for great software. |
2020-11-02 18:42:44 +0100 | ubert | (~Thunderbi@p200300ecdf1e53d1e6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
2020-11-02 18:42:44 +0100 | ubert1 | ubert |
2020-11-02 18:42:50 +0100 | <yushyin> | monochrom: you just write it yourself? ;) |
2020-11-02 18:42:53 +0100 | <dsal> | I end up just writing all my own software these days because everything is just so depressingly bad. |
2020-11-02 18:43:01 +0100 | <monochrom> | Nah, I don't write great software either. |
2020-11-02 18:44:02 +0100 | nbloomf | (~nbloomf@2600:1700:ad14:3020:c4b9:178f:4076:90ef) |
2020-11-02 18:44:02 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 18:44:19 +0100 | <dsal> | There are a few bits of software I use that actually seem pretty good. Even then, a little questionable. Given its complexity, Ableton Live does a pretty good job. I don't think I could write something similar. But there are so many of these javascript things like zigbee2mqtt that just barely work well enough that I can not think about them most of the time. |
2020-11-02 18:46:32 +0100 | u0_a298 | (~user@47.206.148.226) (Remote host closed the connection) |
2020-11-02 18:46:44 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
2020-11-02 18:46:59 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-02 18:48:49 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 264 seconds) |
2020-11-02 18:50:05 +0100 | ransom | (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) |
2020-11-02 18:50:53 +0100 | meowphius | (~meowphius@pool-96-237-166-172.bstnma.fios.verizon.net) (Ping timeout: 260 seconds) |
2020-11-02 18:51:39 +0100 | refried_ | (~textual@pool-108-20-26-90.bstnma.fios.verizon.net) |
2020-11-02 18:51:44 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2020-11-02 18:52:40 +0100 | todda7 | (~torstein@ppp-2-84-30-242.home.otenet.gr) (Ping timeout: 272 seconds) |
2020-11-02 18:54:47 +0100 | u0_a298 | (~user@47.206.148.226) (Read error: Connection reset by peer) |
2020-11-02 18:55:39 +0100 | jakob_ | (~textual@p200300f49f162200f40f209088e2d2f9.dip0.t-ipconnect.de) (Quit: My Laptop has gone to sleep. ZZZzzz…) |
2020-11-02 18:56:02 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-02 18:56:16 +0100 | atk | (~Arch-TK@erebus.the-tk.com) (Changing host) |
2020-11-02 18:56:16 +0100 | atk | (~Arch-TK@ircpuzzles/staff/Arch-TK) |
2020-11-02 18:56:19 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 18:56:52 +0100 | jneira | (501e64fa@gateway/web/cgi-irc/kiwiirc.com/ip.80.30.100.250) |
2020-11-02 18:57:22 +0100 | bennofs1 | (~benno@dslb-188-106-234-230.188.106.pools.vodafone-ip.de) (Quit: WeeChat 2.9) |
2020-11-02 18:57:32 +0100 | lxsameer | (lxsameer@gateway/vpn/protonvpn/lxsameer) (Ping timeout: 268 seconds) |
2020-11-02 18:58:50 +0100 | xff0x | (~fox@2001:1a81:537c:3e00:d3d4:b70f:c4f2:86e2) (Ping timeout: 264 seconds) |
2020-11-02 18:59:22 +0100 | justanotheruser | (~justanoth@unaffiliated/justanotheruser) (Quit: WeeChat 2.9) |
2020-11-02 18:59:42 +0100 | xff0x | (~fox@2001:1a81:537c:3e00:9b11:58b1:f4d:830a) |
2020-11-02 19:00:02 +0100 | pixel_ | (~pixel_@84.39.116.180) () |
2020-11-02 19:01:03 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds) |
2020-11-02 19:01:29 +0100 | rotty | (rotty@ghost.xx.vu) (Quit: WeeChat 3.0-dev) |
2020-11-02 19:02:06 +0100 | justanotheruser | (~justanoth@unaffiliated/justanotheruser) |
2020-11-02 19:04:20 +0100 | dyeplexer | (~lol@unaffiliated/terpin) (Remote host closed the connection) |
2020-11-02 19:04:20 +0100 | u0_a298 | (~user@47.206.148.226) (Read error: Connection reset by peer) |
2020-11-02 19:04:51 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-02 19:08:35 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 19:08:35 +0100 | u0_a298 | (~user@47.206.148.226) (Read error: Connection reset by peer) |
2020-11-02 19:08:53 +0100 | jakob_ | (~textual@p200300f49f162200f40f209088e2d2f9.dip0.t-ipconnect.de) |
2020-11-02 19:09:06 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-02 19:09:39 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2020-11-02 19:11:37 +0100 | knupfer | (~Thunderbi@200116b82c45b300ad86251a82d2e82c.dip.versatel-1u1.de) (Remote host closed the connection) |
2020-11-02 19:11:43 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
2020-11-02 19:11:45 +0100 | knupfer | (~Thunderbi@200116b82c45b300e8f677624452dee1.dip.versatel-1u1.de) |
2020-11-02 19:12:09 +0100 | lxsameer | (~lxsameer@unaffiliated/lxsameer) |
2020-11-02 19:12:27 +0100 | invaser | (~Thunderbi@31.148.23.125) () |
2020-11-02 19:12:32 +0100 | invaser | (~Thunderbi@31.148.23.125) |
2020-11-02 19:12:43 +0100 | chaosmasttter | (~chaosmast@p200300c4a72dee01a86cafb086ba766e.dip0.t-ipconnect.de) |
2020-11-02 19:12:45 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 240 seconds) |
2020-11-02 19:12:57 +0100 | <invaser> | Hi, can someone take a look at the problem I have in #haskell-beginners? |
2020-11-02 19:13:09 +0100 | <invaser> | Or I can copy it here |
2020-11-02 19:13:14 +0100 | sakirious | (~sakirious@c-71-197-191-137.hsd1.wa.comcast.net) (Quit: The Lounge - https://thelounge.chat) |
2020-11-02 19:14:10 +0100 | hpc | (~juzz@ip98-169-35-13.dc.dc.cox.net) |
2020-11-02 19:14:29 +0100 | sakirious | (~sakirious@c-71-197-191-137.hsd1.wa.comcast.net) |
2020-11-02 19:14:48 +0100 | Jesin | (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) |
2020-11-02 19:15:16 +0100 | <gobbleguy> | invaser: you can bring it here |
2020-11-02 19:15:42 +0100 | <gobbleguy> | This channel is fine for "beginner" questions, too. |
2020-11-02 19:16:45 +0100 | <invaser> | Ok, so I'm trying to make parser to do this: parse (string "z1" <|> pure "") "" "zet" should be Right "", and not Left ... |
2020-11-02 19:17:35 +0100 | <invaser> | I get why this code doesn't what I want it to, because it's already read "z" and exception arises only on second char |
2020-11-02 19:17:50 +0100 | <dminuoso> | invaser: parsec does not backtrack by default |
2020-11-02 19:18:01 +0100 | <dminuoso> | Wrap the left part in `try (...)` |
2020-11-02 19:18:33 +0100 | <invaser> | a-ha, it's `try`, tyty |
2020-11-02 19:20:04 +0100 | <dminuoso> | invaser: So while `l <|> r` encodes a choice for parser combinators, it itself does not guarantee `l` would backtrack on failure (that is "unconsume" already consumed tokens) |
2020-11-02 19:20:40 +0100 | britva | (~britva@2a02:aa13:7240:2980:292a:d07d:3ab9:26ba) |
2020-11-02 19:20:41 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 19:20:46 +0100 | andreas31 | (~andreas@gateway/tor-sasl/andreas303) (Remote host closed the connection) |
2020-11-02 19:21:04 +0100 | <dminuoso> | Some libraries always backtrack by default, others backtrack only certain primitives, and parsec *never* backtracks by default |
2020-11-02 19:21:35 +0100 | <invaser> | dminuoso: So, in layman's terms, it works only when it determines that left parser can't parse the string on the first char? |
2020-11-02 19:22:43 +0100 | <dminuoso> | invaser: Unless you denote the left side can backtrack, say `try l <|> r` |
2020-11-02 19:23:02 +0100 | <davean> | dminuoso: Mostly my stance is I'm entirely willing to turn on extensions but I look for ways not to and have a highish standard for if they improve things. So I'm not in the "limit them like crazy" camp and I'm not "just enable them", I've used almost all the extensions when I had a good reason, but I'm just careful about it and give it a lot of consideration if I'm missing a better way to |
2020-11-02 19:23:04 +0100 | <davean> | approach the problem and if the extension is acting as a crutch to a poor conceptualization of the problem and actually just enabling a more complicated system than is needed (which is often the case) |
2020-11-02 19:23:23 +0100 | cosimone | (~cosimone@2001:b07:ae5:db26:9217:95c7:973d:d0ad) |
2020-11-02 19:23:55 +0100 | <dminuoso> | invaser: The fundamental problem is that parser combinators cant do automatic lookahead |
2020-11-02 19:24:10 +0100 | andreas31 | (~andreas@gateway/tor-sasl/andreas303) |
2020-11-02 19:24:21 +0100 | davean | stares at that statement for a bit. |
2020-11-02 19:24:33 +0100 | <dminuoso> | *monadic! |
2020-11-02 19:24:34 +0100 | <davean> | They certainly don't. I'm not convinced they can't. |
2020-11-02 19:24:35 +0100 | <dminuoso> | ;) |
2020-11-02 19:24:47 +0100 | <dminuoso> | davean: They cant if they are monadic. |
2020-11-02 19:24:49 +0100 | <monochrom> | Oh, monadic, yeah. |
2020-11-02 19:24:57 +0100 | <dminuoso> | With selective or applicative parser combinators you can. |
2020-11-02 19:25:05 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 240 seconds) |
2020-11-02 19:25:15 +0100 | <davean> | dminuoso: You can't *in general* but many of the combinators are selective or applicative. |
2020-11-02 19:25:18 +0100 | <davean> | dminuoso: so sometimes you can. |
2020-11-02 19:25:18 +0100 | <monochrom> | BUT! I have realized that given anyChar, you can stay Applicative for CFG. |
2020-11-02 19:25:37 +0100 | alp | (~alp@2a01:e0a:58b:4920:ad5c:a549:2a77:a525) (Ping timeout: 260 seconds) |
2020-11-02 19:25:50 +0100 | <monochrom> | And academically we have found that anyChar needs Selective only, not full monadic. |
2020-11-02 19:26:06 +0100 | <monochrom> | Err sorry! s/anyChar/satisfy/ |
2020-11-02 19:26:14 +0100 | <davean> | dminuoso: so saying they can't isn't quite true |
2020-11-02 19:26:27 +0100 | <davean> | dminuoso: Saying there are grammers they can't for is true, but thats kinda always true in a way. |
2020-11-02 19:26:41 +0100 | <davean> | Also not really relivent to most parsers |
2020-11-02 19:26:51 +0100 | <daydaynatation> | in a type class method, if i write aMethod:: (Random a, V.Unbox a) => ... does it mean a needs to by both Random and V.Unbox ? Or a needs to be one Or the other |
2020-11-02 19:27:07 +0100 | <davean> | Both |
2020-11-02 19:27:10 +0100 | <monochrom> | Oh sorry again, haha, full CFG still needs unlimited lookahead. LL(k) are the restricted ones that can be done in fixed lookahead. |
2020-11-02 19:27:19 +0100 | <davean> | For all a such that a is in Random and in Unbox ... |
2020-11-02 19:27:29 +0100 | minus[m] | (minusblobc@gateway/shell/matrix.org/x-hhdwstlyzyfgkvud) |
2020-11-02 19:27:41 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-11-02 19:27:47 +0100 | <daydaynatation> | ok |
2020-11-02 19:27:48 +0100 | <monochrom> | But yeah we really design our grammars to be LL(k), even LL(1), don't we. |
2020-11-02 19:28:01 +0100 | <davean> | monochrom: VERY much so, and on purpose conciously. |
2020-11-02 19:28:07 +0100 | dbmikus | (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 260 seconds) |
2020-11-02 19:28:29 +0100 | <monochrom> | So yeah most parsers don't even need full-on Applicative. Also, I mean s/Applicative/Alternative/ |
2020-11-02 19:29:12 +0100 | <monochrom> | Gosh does IRC allow me to edit past messages? :) |
2020-11-02 19:29:29 +0100 | <davean> | monochrom: No, IRC makes you life with your decisions. |
2020-11-02 19:29:39 +0100 | ransom | (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-11-02 19:29:47 +0100 | conal | (~conal@198.8.81.68) (Quit: Computer has gone to sleep.) |
2020-11-02 19:29:53 +0100 | <davean> | IRC promotes honesty and transparency |
2020-11-02 19:29:57 +0100 | <davean> | not lies and deception. |
2020-11-02 19:30:54 +0100 | <dminuoso> | davean: fair enough |
2020-11-02 19:32:04 +0100 | justanotheruser | (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 268 seconds) |
2020-11-02 19:32:05 +0100 | conal | (~conal@198.8.81.68) |
2020-11-02 19:32:13 +0100 | geekosaur | (82659a09@host154-009.vpn.uakron.edu) |
2020-11-02 19:32:20 +0100 | <davean> | dminuoso: we have Applicative => Monad and Applicative Do |
2020-11-02 19:32:23 +0100 | <davean> | dminuoso: etc |
2020-11-02 19:32:25 +0100 | <dminuoso> | davean: I mean in principle you could do automatic lookahead inside combinators as far as possible, not quite sure what the runtime penalty is |
2020-11-02 19:32:44 +0100 | rzmt | (~rzmt@87-92-180-112.rev.dnainternet.fi) (Ping timeout: 240 seconds) |
2020-11-02 19:33:00 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 19:33:02 +0100 | <davean> | Honestly no one tries to write high performance parsers in Haskell because the basics are usually fast enough - look at aeson, its dog slow and no one seems to care. |
2020-11-02 19:33:30 +0100 | <dminuoso> | The package description says its "high performance"! |
2020-11-02 19:33:34 +0100 | <davean> | The only person maintaining a faster version just abandoned theirs |
2020-11-02 19:33:38 +0100 | <davean> | dminuoso: Many people lie. |
2020-11-02 19:33:43 +0100 | <dminuoso> | davean: Also, https://github.com/J-mie6/ParsleyHaskell |
2020-11-02 19:34:01 +0100 | <davean> | We have Haskell JSON parsers far faster than aeson. |
2020-11-02 19:34:02 +0100 | <dminuoso> | So someone is trying to write optimizing high performance parser combinators. |
2020-11-02 19:34:04 +0100 | <dminuoso> | :) |
2020-11-02 19:34:34 +0100 | brisbin | (~patrick@pool-173-49-158-4.phlapa.fios.verizon.net) |
2020-11-02 19:34:36 +0100 | mnrmnaugh | (~mnrmnaugh@unaffiliated/mnrmnaugh) (Quit: Leaving) |
2020-11-02 19:35:02 +0100 | rzmt | (~rzmt@87-92-180-112.rev.dnainternet.fi) |
2020-11-02 19:35:39 +0100 | mnrmnaugh | (~mnrmnaugh@unaffiliated/mnrmnaugh) |
2020-11-02 19:36:10 +0100 | <dminuoso> | davean: But yeah, the example of aeson is pretty good, I notice this in my day job time after time |
2020-11-02 19:36:16 +0100 | <dminuoso> | How performance if often not important. |
2020-11-02 19:36:32 +0100 | <tomsmeding> | the question is, do we have a json parser library that 1. parses more quickly, and 2. compiles more quickly? |
2020-11-02 19:36:41 +0100 | cosimone | (~cosimone@2001:b07:ae5:db26:9217:95c7:973d:d0ad) (Quit: cosimone) |
2020-11-02 19:36:46 +0100 | <dminuoso> | We have one project where latency is key, but generally we couldn't care less if aeson takes 5ms to parse some incoming request or not. |
2020-11-02 19:37:02 +0100 | idhugo | (~idhugo@80-62-116-101-mobile.dk.customer.tdc.net) (Ping timeout: 256 seconds) |
2020-11-02 19:37:03 +0100 | <dminuoso> | tomsmeding: haha, aeson is not good on either metric |
2020-11-02 19:37:13 +0100 | <davean> | Right. I know people who DID do high performance JSON stuff in Haskell, etc |
2020-11-02 19:37:13 +0100 | <tomsmeding> | my point :p |
2020-11-02 19:37:20 +0100 | <davean> | and like they have a ring buffer between cores, etc |
2020-11-02 19:37:25 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 240 seconds) |
2020-11-02 19:37:27 +0100 | <davean> | and you can do all this in Haskell. |
2020-11-02 19:37:37 +0100 | christo | (~chris@81.96.113.213) |
2020-11-02 19:37:39 +0100 | <davean> | No one even switches which JSON parsing package they use to get a reasonable one ususally though. |
2020-11-02 19:38:10 +0100 | <dminuoso> | Plus, if performance was so critical, I wouldn't touch JSON with a 3.048m pole to begin with |
2020-11-02 19:38:13 +0100 | <davean> | tomsmeding: Hum, I think we have ones that are faster in both actually, I'd have to double check, I don't pay attention to compile times because they're so not important but I THINK it does. |
2020-11-02 19:38:19 +0100 | <dminuoso> | CBOR would be a far better candidate |
2020-11-02 19:38:51 +0100 | kritzefitz | (~kritzefit@212.86.56.80) (Ping timeout: 268 seconds) |
2020-11-02 19:39:04 +0100 | <dminuoso> | My only annoyance with aeson is that its interface is bad and typeclass heavy |
2020-11-02 19:39:14 +0100 | hyperisco | (~hyperisco@d192-186-117-226.static.comm.cgocable.net) |
2020-11-02 19:39:15 +0100 | <davean> | Honestly I do mind the performance. |
2020-11-02 19:39:32 +0100 | <daydaynatation> | is IO action lazy by default? If so how can i force it to be strict? |
2020-11-02 19:39:38 +0100 | <dminuoso> | daydaynatation: yes and no |
2020-11-02 19:39:43 +0100 | <tomsmeding> | davean: compile times are in nigh-all cases less important than runtime performance, but damn they are annoying :p |
2020-11-02 19:39:47 +0100 | <davean> | But thats because the more requests per core per second I can handle the less scaling overhead I get |
2020-11-02 19:39:55 +0100 | <dminuoso> | daydaynatation: So Haskell is non-strict in *values*, that is the computatoin of `IO ()` itself can be lazy |
2020-11-02 19:40:02 +0100 | <dminuoso> | But the action itself is (in general) strict |
2020-11-02 19:40:08 +0100 | <dminuoso> | There are things like lazy IO, which are terrible |
2020-11-02 19:40:56 +0100 | <davean> | What the IO action *does* is generally not lazy, how the IO action *gets defined* is non-strict. |
2020-11-02 19:41:01 +0100 | conal | (~conal@198.8.81.68) (Quit: Computer has gone to sleep.) |
2020-11-02 19:41:09 +0100 | <daydaynatation> | i'm time an action with time :: IO a -> IO a which wraps an anction between CPUTimes |
2020-11-02 19:41:31 +0100 | <daydaynatation> | the reuslts doesn't look right, so i'm guessing it could be related to laziness |
2020-11-02 19:41:56 +0100 | <dminuoso> | daydaynatation: can you share the code and results? |
2020-11-02 19:42:06 +0100 | <dminuoso> | That might be easier than to work with some vague description |
2020-11-02 19:42:29 +0100 | <davean> | daydaynatation: Though thats most likely not related to laziness |
2020-11-02 19:42:41 +0100 | <davean> | daydaynatation: Why doesn't it look right? |
2020-11-02 19:42:45 +0100 | <daydaynatation> | dminuoso: which paste site should I use? |
2020-11-02 19:42:48 +0100 | jakob_ | (~textual@p200300f49f162200f40f209088e2d2f9.dip0.t-ipconnect.de) (Quit: My Laptop has gone to sleep. ZZZzzz…) |
2020-11-02 19:43:11 +0100 | jakob_ | (~textual@p200300f49f162200f40f209088e2d2f9.dip0.t-ipconnect.de) |
2020-11-02 19:43:21 +0100 | refried_ | (~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
2020-11-02 19:43:22 +0100 | <geekosaur> | @where paste |
2020-11-02 19:43:22 +0100 | <lambdabot> | Help us help you: please paste full code, input and/or output at eg https://paste.tomsmeding.com |
2020-11-02 19:43:34 +0100 | jakob_ | (~textual@p200300f49f162200f40f209088e2d2f9.dip0.t-ipconnect.de) (Client Quit) |
2020-11-02 19:43:58 +0100 | jakob_ | (~textual@p200300f49f162200f40f209088e2d2f9.dip0.t-ipconnect.de) |
2020-11-02 19:44:18 +0100 | conal | (~conal@198.8.81.68) |
2020-11-02 19:44:21 +0100 | jakob_ | (~textual@p200300f49f162200f40f209088e2d2f9.dip0.t-ipconnect.de) (Client Quit) |
2020-11-02 19:44:30 +0100 | conal | (~conal@198.8.81.68) (Client Quit) |
2020-11-02 19:44:44 +0100 | <daydaynatation> | https://paste.tomsmeding.com/qgA1JMgU |
2020-11-02 19:44:50 +0100 | jakob_ | (~textual@p200300f49f162200f40f209088e2d2f9.dip0.t-ipconnect.de) |
2020-11-02 19:45:07 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 19:45:08 +0100 | jakob_ | (~textual@p200300f49f162200f40f209088e2d2f9.dip0.t-ipconnect.de) (Client Quit) |
2020-11-02 19:45:22 +0100 | refried_ | (~textual@pool-108-20-26-90.bstnma.fios.verizon.net) |
2020-11-02 19:45:28 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-11-02 19:45:30 +0100 | jakob_ | (~textual@p200300f49f162200f40f209088e2d2f9.dip0.t-ipconnect.de) |
2020-11-02 19:45:39 +0100 | <daydaynatation> | result is here: https://paste.tomsmeding.com/hyrFyOzz |
2020-11-02 19:45:51 +0100 | justanotheruser | (~justanoth@unaffiliated/justanotheruser) |
2020-11-02 19:45:55 +0100 | jakob_ | (~textual@p200300f49f162200f40f209088e2d2f9.dip0.t-ipconnect.de) (Client Quit) |
2020-11-02 19:46:01 +0100 | <daydaynatation> | list operations are so much faster than vector |
2020-11-02 19:46:23 +0100 | <koz_> | Not something we hear often. |
2020-11-02 19:46:58 +0100 | UpstreamSalmon | (uid12077@gateway/web/irccloud.com/x-crbxrpluwxladazf) (Quit: Connection closed for inactivity) |
2020-11-02 19:47:39 +0100 | khaladrogo_lite | (~khaladrog@2405:204:5217:6256:f1ab:1e40:6c9b:8f55) (Quit: Leaving) |
2020-11-02 19:47:51 +0100 | khaladrogo | (~khaladrog@2405:204:5217:6256:f1ab:1e40:6c9b:8f55) (Remote host closed the connection) |
2020-11-02 19:48:12 +0100 | <daydaynatation> | I'm a beginner in Haskell, the code is very awkard |
2020-11-02 19:48:46 +0100 | <davean> | Oh, well |
2020-11-02 19:48:56 +0100 | <davean> | Thats not an IO action really that you're doign there? |
2020-11-02 19:49:19 +0100 | <davean> | What you were *trying* to time was a pure computation. |
2020-11-02 19:49:49 +0100 | <daydaynatation> | I did generate a random number in the action |
2020-11-02 19:49:59 +0100 | <davean> | Yah, and that part gets computed, but thats not where the time is taken |
2020-11-02 19:50:16 +0100 | <tomsmeding> | @hackage criterion-measurement |
2020-11-02 19:50:17 +0100 | <lambdabot> | https://hackage.haskell.org/package/criterion-measurement |
2020-11-02 19:50:18 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 272 seconds) |
2020-11-02 19:50:22 +0100 | <davean> | The IO part *does* get executed here, but the sorting is optional depending on if oyu use it or not because its not IO |
2020-11-02 19:50:25 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2020-11-02 19:50:37 +0100 | <tomsmeding> | (which depends on aeson.......) |
2020-11-02 19:50:48 +0100 | Saukk | (~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4) |
2020-11-02 19:51:04 +0100 | <davean> | I should see how long it would take me to convert the parts of hackage I sit on top of off of aeson. |
2020-11-02 19:51:24 +0100 | <davean> | I bet I could do that in ... 30 hours? Thats a lot of code and a fairly significant change really, but it seems quite doable. |
2020-11-02 19:51:25 +0100 | dbmikus | (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) |
2020-11-02 19:51:25 +0100 | <daydaynatation> | ok..let me digest. but do you understand why the list operations is quicker? |
2020-11-02 19:51:36 +0100 | <davean> | daydaynatation: yes, I do, because you never check that its sorted. |
2020-11-02 19:51:49 +0100 | <davean> | so *all* you're really testing is that it generates a random list |
2020-11-02 19:51:53 +0100 | <davean> | Which is the IO part |
2020-11-02 19:52:58 +0100 | <davean> | I have to go, or I'd comment on the code and ways to improve it :/ |
2020-11-02 19:53:16 +0100 | <daydaynatation> | thanks! |
2020-11-02 19:53:27 +0100 | <tomsmeding> | it's not accurate, but for this you can kind of see IO as being defined as 'data IO a = IO a' |
2020-11-02 19:53:35 +0100 | stef204 | (~stef204@unaffiliated/stef-204/x-384198) |
2020-11-02 19:53:39 +0100 | knupfer | (~Thunderbi@200116b82c45b300e8f677624452dee1.dip.versatel-1u1.de) (Ping timeout: 268 seconds) |
2020-11-02 19:53:51 +0100 | ransom | (~c4264035@undergraduate-jvossen-9690.mines.edu) |
2020-11-02 19:53:55 +0100 | <tomsmeding> | that 'r <- action' evaluates 'r' to WHNF (do you know that term?), which is the IO constructor, but not the 'a' inside |
2020-11-02 19:54:17 +0100 | <tomsmeding> | so if you force 'fmap f (some IO action)', then that f is never evaluated yet |
2020-11-02 19:54:38 +0100 | <tomsmeding> | since the head (as in WHNF) of the result is already evaluated to IO |
2020-11-02 19:54:40 +0100 | refried_ | (~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
2020-11-02 19:54:51 +0100 | <dminuoso> | Im not convinced that IO model is helpful in any way. |
2020-11-02 19:54:57 +0100 | <dminuoso> | It's very suggestive in the wrong ways |
2020-11-02 19:55:05 +0100 | Axma45768 | (~Axman6@pdpc/supporter/student/Axman6) |
2020-11-02 19:55:08 +0100 | <tomsmeding> | okay maybe it is |
2020-11-02 19:55:18 +0100 | <davean> | Also, I want to point out that the action tested here *does not use a reason to be IO* |
2020-11-02 19:55:26 +0100 | mmalecki | (~mmalecki@154.13.1.56) |
2020-11-02 19:55:34 +0100 | <davean> | Random number generation does not require IO |
2020-11-02 19:55:40 +0100 | <daydaynatation> | If i leave IO out of it, how do people time pure code? |
2020-11-02 19:55:49 +0100 | <davean> | daydaynatation: the timing needs to be in IO |
2020-11-02 19:55:50 +0100 | <dminuoso> | My referred analogy of `IO T` is `list of assembly instruction that, if executed, would produce a result of type T` |
2020-11-02 19:55:56 +0100 | <tomsmeding> | (fixing it is easy, by the way: either force 'r' using Control.DeepSeq.force, or use a primitive from criterion-measurement) |
2020-11-02 19:56:14 +0100 | <dminuoso> | Which seems to work rather well, and helps accept IO as being something opaque |
2020-11-02 19:56:25 +0100 | <davean> | tomsmeding: those will make the list variant look worse performance wise than they REALLY are. |
2020-11-02 19:56:30 +0100 | <davean> | erg, have to go. |
2020-11-02 19:56:40 +0100 | <geekosaur> | we generally use the criterion package, which knows how to work around laziness doing things like deferring all computation you thought had already taken place into the timed part |
2020-11-02 19:56:48 +0100 | <tomsmeding> | davean: not if you only force the final result :p |
2020-11-02 19:57:15 +0100 | <tomsmeding> | geekosaur: or if you want to only use the timing primitives and not the whole benchmarking+reporting suite around it, use the criterion-measurement package :p |
2020-11-02 19:57:27 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 19:57:46 +0100 | Axman6 | (~Axman6@pdpc/supporter/student/Axman6) (Ping timeout: 246 seconds) |
2020-11-02 19:58:22 +0100 | mupf | (~micha@v22017094964653601.ultrasrv.de) (Quit: WeeChat 2.9) |
2020-11-02 19:59:13 +0100 | mupf | (~micha@v22017094964653601.ultrasrv.de) |
2020-11-02 20:00:33 +0100 | <sm[m]> | Aha.. SPJ "The Launch of the Haskell Foundation", streaming on youtube in 40h - https://www.reddit.com/r/haskell/comments/jml10v/haskell_exchange_2020_opening_keynote_the_launch/ |
2020-11-02 20:00:35 +0100 | <tomsmeding> | daydaynatation: fix 1: https://paste.tomsmeding.com/165QyyNN |
2020-11-02 20:01:42 +0100 | <daydaynatation> | cool! thx let me check |
2020-11-02 20:01:58 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 256 seconds) |
2020-11-02 20:03:24 +0100 | berberman_ | (~berberman@unaffiliated/berberman) (Ping timeout: 240 seconds) |
2020-11-02 20:03:33 +0100 | berberman | (~berberman@unaffiliated/berberman) |
2020-11-02 20:03:36 +0100 | knupfer | (~Thunderbi@200116b82c45b300e014d1b214daaf45.dip.versatel-1u1.de) |
2020-11-02 20:05:23 +0100 | kuribas | (~user@ptr-25vy0i9b0d7gsf4mjtv.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3)) |
2020-11-02 20:05:49 +0100 | ransom | (~c4264035@undergraduate-jvossen-9690.mines.edu) (Quit: Textual IRC Client: www.textualapp.com) |
2020-11-02 20:05:51 +0100 | juuandyy | (~juuandyy@90.166.144.65) |
2020-11-02 20:06:30 +0100 | <daydaynatation> | it does look better! but the two tests take similar time |
2020-11-02 20:06:48 +0100 | <daydaynatation> | tomsmeding: let me dig deeper. thx! |
2020-11-02 20:07:02 +0100 | wroathe | (~wroathe@c-73-24-27-54.hsd1.mn.comcast.net) (Quit: leaving) |
2020-11-02 20:07:50 +0100 | <tomsmeding> | daydaynatation: or using criterion-measurement: https://paste.tomsmeding.com/uSMMDfGo |
2020-11-02 20:08:55 +0100 | <tomsmeding> | in the end it does basically the same thing in this case, but the advantage is that 1. you get more info than just the time (see the rest of the Measured data type), 2. the '1' can be increased to repeat the measurement, and 3. you're forced to choose how strictly you want to evaluate the result, here using nfIO |
2020-11-02 20:08:56 +0100 | mmohammadi9812 | (~mmohammad@188.210.118.100) (Quit: Quit) |
2020-11-02 20:08:58 +0100 | conal | (~conal@198.8.81.68) |
2020-11-02 20:09:07 +0100 | acidjnk_new | (~acidjnk@p200300d0c72260501db9c4f6165b2eaf.dip0.t-ipconnect.de) |
2020-11-02 20:09:29 +0100 | <tomsmeding> | and if you want nice reports and fancy stuff, use the full criterion library :p |
2020-11-02 20:09:34 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 20:10:34 +0100 | <daydaynatation> | Thanks tomsmeding |
2020-11-02 20:10:35 +0100 | <tomsmeding> | if you'd have a normal pure value, not an IO action, you could use 'nf' instead of 'nfIO' |
2020-11-02 20:10:58 +0100 | <tomsmeding> | good luck :) |
2020-11-02 20:11:47 +0100 | <daydaynatation> | tomsmeding: I don't see criterion code in your last paste |
2020-11-02 20:12:05 +0100 | <daydaynatation> | tomsmeding: Perhaps wrong diff? |
2020-11-02 20:12:08 +0100 | <tomsmeding> | oh crap yes :') |
2020-11-02 20:12:52 +0100 | <tomsmeding> | https://paste.tomsmeding.com/z3fyxybh |
2020-11-02 20:12:58 +0100 | <tomsmeding> | (ignore the Lib/Main test/main replacements) |
2020-11-02 20:13:19 +0100 | <tomsmeding> | (using 'measure' doesn't return the actual function value, hence I removed that) |
2020-11-02 20:13:44 +0100 | <daydaynatation> | tomsmeding: Always a pleasure to learn a new Lib! |
2020-11-02 20:14:26 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 264 seconds) |
2020-11-02 20:15:21 +0100 | berberman | (~berberman@unaffiliated/berberman) (Read error: Connection reset by peer) |
2020-11-02 20:15:34 +0100 | berberman_ | (~berberman@unaffiliated/berberman) |
2020-11-02 20:16:44 +0100 | geekosaur | (82659a09@host154-009.vpn.uakron.edu) (Ping timeout: 245 seconds) |
2020-11-02 20:17:01 +0100 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 264 seconds) |
2020-11-02 20:17:42 +0100 | Tario | (~Tario@201.192.165.173) |
2020-11-02 20:18:24 +0100 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) |
2020-11-02 20:21:44 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 20:22:56 +0100 | Rudd0 | (~Rudd0@185.189.115.103) (Ping timeout: 256 seconds) |
2020-11-02 20:23:25 +0100 | christo | (~chris@81.96.113.213) (Remote host closed the connection) |
2020-11-02 20:25:15 +0100 | tauli | (~textual@185.213.155.161) (Quit: Textual IRC Client: www.textualapp.com) |
2020-11-02 20:26:33 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds) |
2020-11-02 20:27:59 +0100 | Amras | (~Amras@unaffiliated/amras0000) |
2020-11-02 20:28:45 +0100 | christo | (~chris@81.96.113.213) |
2020-11-02 20:30:53 +0100 | u0_a298 | (~user@47.206.148.226) (Read error: Connection reset by peer) |
2020-11-02 20:31:09 +0100 | u0_a298 | (~user@47.206.148.226) |
2020-11-02 20:32:25 +0100 | Deide | (~Deide@217.155.19.23) |
2020-11-02 20:33:05 +0100 | dcoutts_ | (~duncan@33.14.75.194.dyn.plus.net) (Ping timeout: 240 seconds) |
2020-11-02 20:33:15 +0100 | refried_ | (~textual@pool-108-20-26-90.bstnma.fios.verizon.net) |
2020-11-02 20:33:21 +0100 | bliminse | (~bliminse@host109-156-197-211.range109-156.btcentralplus.com) (Ping timeout: 256 seconds) |
2020-11-02 20:33:55 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 20:33:58 +0100 | refried_ | (~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Client Quit) |
2020-11-02 20:34:04 +0100 | bliminse | (~bliminse@host109-156-197-211.range109-156.btcentralplus.com) |
2020-11-02 20:34:27 +0100 | geekosaur | (82659a09@host154-009.vpn.uakron.edu) |
2020-11-02 20:35:02 +0100 | dcoutts_ | (~duncan@33.14.75.194.dyn.plus.net) |
2020-11-02 20:36:32 +0100 | <bqv> | Friends how would you debug ffi-heavy haskell? |
2020-11-02 20:37:04 +0100 | <maerwald> | debug what |
2020-11-02 20:37:35 +0100 | <bqv> | Well see I have an issue. My program exits |
2020-11-02 20:37:45 +0100 | <bqv> | But not in failure, just exits |
2020-11-02 20:37:56 +0100 | <bqv> | No clue why, need to get interactive |
2020-11-02 20:38:01 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Read error: Connection reset by peer) |
2020-11-02 20:38:05 +0100 | <bqv> | But I reckon its in the C code |
2020-11-02 20:38:30 +0100 | <sm[m]> | reckon yer right, pardner |
2020-11-02 20:38:31 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2020-11-02 20:38:37 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 264 seconds) |
2020-11-02 20:38:41 +0100 | <geekosaur> | since FFI is typically in IO, I do a lot of logging around the FFI calls. that said, if something in C is calling exit(), you can't typically intervene and it won't return control to Haskell |
2020-11-02 20:39:10 +0100 | <geekosaur> | the best you might do is an atexit handler that prints something while it's on the way out |
2020-11-02 20:39:15 +0100 | Saukk | (~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4) (Remote host closed the connection) |
2020-11-02 20:39:16 +0100 | <bqv> | I've narrowed it down to the call, but now I wanna peek into that call |
2020-11-02 20:39:31 +0100 | <bqv> | But... gdb? Haskell? |
2020-11-02 20:39:42 +0100 | <bqv> | Is that even realistic? |
2020-11-02 20:39:43 +0100 | AlterEgo- | (~ladew@124-198-158-163.dynamic.caiway.nl) |
2020-11-02 20:39:49 +0100 | <monochrom> | Can you add fprint(stderr's to the C code? |
2020-11-02 20:39:55 +0100 | <geekosaur> | you'd be able to trace back to the start of the call, at least |
2020-11-02 20:39:58 +0100 | <bqv> | The c code isn't mine :D |
2020-11-02 20:40:04 +0100 | <bqv> | Its a library |
2020-11-02 20:40:22 +0100 | <bqv> | Eh, I suppose I could recompile it |
2020-11-02 20:40:28 +0100 | <sm[m]> | yes, people successfully use gdb for this kind of thing I believe |
2020-11-02 20:40:36 +0100 | <bqv> | Thats a nuclear option though |
2020-11-02 20:40:59 +0100 | <bqv> | sm[m]: is there a trick to it or will it work ootb? |
2020-11-02 20:41:34 +0100 | <pjb> | nowadays we have the sources almost all the time, so you can just edit and recompile the library to help debug. |
2020-11-02 20:41:35 +0100 | <sm[m]> | I don't know gdb unfortunately.. someone here will know, otherwise try #ghc |
2020-11-02 20:41:57 +0100 | <pjb> | Sometimes there are already various DEBUG defines you can set to add traces. |
2020-11-02 20:42:08 +0100 | <sm[m]> | sometimes it's easier to read code and think about what could be going wrong |
2020-11-02 20:42:15 +0100 | ubert | (~Thunderbi@p200300ecdf1e530be6b318fffe838f33.dip0.t-ipconnect.de) (Remote host closed the connection) |
2020-11-02 20:42:35 +0100 | <pjb> | Depends on the kind of bug. |
2020-11-02 20:42:45 +0100 | knupfer | (~Thunderbi@200116b82c45b300e014d1b214daaf45.dip.versatel-1u1.de) (Quit: knupfer) |
2020-11-02 20:42:57 +0100 | knupfer | (~Thunderbi@200116b82c45b3000805a93423d8669d.dip.versatel-1u1.de) |
2020-11-02 20:42:57 +0100 | raichoo | (~raichoo@dslb-092-073-210-010.092.073.pools.vodafone-ip.de) (Quit: Lost terminal) |
2020-11-02 20:42:59 +0100 | invaser | (~Thunderbi@31.148.23.125) (Ping timeout: 256 seconds) |
2020-11-02 20:43:10 +0100 | solonarv | (~solonarv@astrasbourg-653-1-117-122.w90-33.abo.wanadoo.fr) |
2020-11-02 20:43:14 +0100 | <bqv> | Ack, there's another complication |
2020-11-02 20:43:19 +0100 | <pjb> | But one problem with reading the code (when it's you who wrote it), is that if there's a bug, it's because you have bad expectation about what it does, so reading again only makes you think about the bad interpretation, not the actual real one. |
2020-11-02 20:43:32 +0100 | <pjb> | Hence running it with prints. Here the problems usually jump to the eyes. |
2020-11-02 20:43:50 +0100 | <bqv> | The program has to be executed by another certain launcher... |
2020-11-02 20:44:01 +0100 | <bqv> | That makes gdb a pain |
2020-11-02 20:44:35 +0100 | <pjb> | You can wrap your program in a shell script, to log the arguments and environment set up by the launcher. Then you can replicate them in gdb. |
2020-11-02 20:45:03 +0100 | <bqv> | Its IPC |
2020-11-02 20:45:06 +0100 | kritzefitz | (~kritzefit@212.86.56.80) |
2020-11-02 20:45:09 +0100 | <bqv> | And setuid |
2020-11-02 20:45:12 +0100 | <bqv> | Not environment |
2020-11-02 20:45:26 +0100 | <pjb> | gdb can also attach to a process that's already run, eg. if your launcher sets up pipes and communicate with your program. |
2020-11-02 20:45:34 +0100 | <pjb> | gdb attach command is great! |
2020-11-02 20:46:00 +0100 | <bqv> | yeah, that would be the plan, so it would just be a matter of getting it to break immediately on launch so I can catch it |
2020-11-02 20:46:09 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 20:46:37 +0100 | <tomsmeding> | can't you just put 'threadDelay 1000000' at the start of your haskell program |
2020-11-02 20:46:45 +0100 | <tomsmeding> | or well, perhaps add a zero |
2020-11-02 20:46:47 +0100 | mbomba | (~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca) |
2020-11-02 20:46:57 +0100 | <bqv> | Ahah, true |
2020-11-02 20:48:39 +0100 | <tomsmeding> | also if you want to postpone gdb for some reason (perhaps the library doesn't have debug symbols?), you can also run your program under 'strace -f -o log.txt' |
2020-11-02 20:48:49 +0100 | <tomsmeding> | and then grep the produced log.txt for the process ID if your program |
2020-11-02 20:49:11 +0100 | <tomsmeding> | (also -ff may be useful instead of -f, see the strace man page) |
2020-11-02 20:49:19 +0100 | mokulus_ | (~mat@176.111.230.96) (Quit: WeeChat 2.9) |
2020-11-02 20:49:33 +0100 | <tomsmeding> | also maybe ltrace? though that's a bit hit and miss sometimes |
2020-11-02 20:49:37 +0100 | mokulus | (~mat@176.111.230.96) |
2020-11-02 20:49:49 +0100 | <bqv> | Oh that's a good point, yeah ltrace sounds an extremely easy win if it works |
2020-11-02 20:51:02 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 264 seconds) |
2020-11-02 20:53:31 +0100 | aarvar | (~foewfoiew@50.35.43.33) (Quit: Leaving.) |
2020-11-02 20:53:34 +0100 | juuandyy | (~juuandyy@90.166.144.65) (Quit: Konversation terminated!) |
2020-11-02 20:54:24 +0100 | <bqv> | You're kidding. Adding ltrace made the bug vanish |
2020-11-02 20:54:52 +0100 | <maerwald> | lolo |
2020-11-02 20:55:07 +0100 | <maerwald> | the beauty of debugging |
2020-11-02 20:55:36 +0100 | <bqv> | Extraordinary and inconvenient |
2020-11-02 20:55:46 +0100 | <tomsmeding> | does the library you call spawn new processes/threads? |
2020-11-02 20:55:56 +0100 | <maerwald> | space leak gone as soon as you enable heap profiling :p |
2020-11-02 20:56:10 +0100 | <sm[m]> | how about strace |
2020-11-02 20:56:17 +0100 | <bqv> | No processes, but threads yes |
2020-11-02 20:56:29 +0100 | <tomsmeding> | I bet something in your system receives a signal, and thus quits, and there is a wrapper around that that swallows the non-zero exit code |
2020-11-02 20:56:45 +0100 | <tomsmeding> | where "system" is collection of processes that your launcher starts |
2020-11-02 20:57:18 +0100 | <bqv> | ha! Strace works too... |
2020-11-02 20:58:01 +0100 | <tomsmeding> | "works" as in prevents the exit? |
2020-11-02 20:58:05 +0100 | <bqv> | Yes |
2020-11-02 20:58:10 +0100 | <tomsmeding> | fascinating |
2020-11-02 20:58:13 +0100 | <tomsmeding> | try gdb and valgrind |
2020-11-02 20:58:22 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 20:58:38 +0100 | <bqv> | those are far more complicated, i don't think i can try them right now |
2020-11-02 20:58:54 +0100 | <tomsmeding> | "can" as in want to, or understand how to? |
2020-11-02 20:59:10 +0100 | <sm[m]> | presumably it's not being killed by the OOM killer |
2020-11-02 20:59:14 +0100 | <bqv> | it's just problematic because this is a display compositor, so it being STOPped means my pc is unusable |
2020-11-02 20:59:21 +0100 | <bqv> | i need a second machine to gdb it |
2020-11-02 20:59:25 +0100 | <bqv> | as i discovered a few minutes ago |
2020-11-02 20:59:25 +0100 | <tomsmeding> | oof |
2020-11-02 20:59:34 +0100 | <tomsmeding> | well, you can switch to a different tty :p |
2020-11-02 20:59:42 +0100 | <bqv> | you'd think... |
2020-11-02 20:59:44 +0100 | <bqv> | but no :p |
2020-11-02 20:59:49 +0100 | <tomsmeding> | assuming the ctrl-alt-FN thing still goes through |
2020-11-02 21:00:01 +0100 | <bqv> | had to ssh in via phone to kill gdb |
2020-11-02 21:00:38 +0100 | justsomeguy | (~justsomeg@2603:9000:960a:fc00:c4d2:5b73:c7b7:3a2b) |
2020-11-02 21:00:38 +0100 | justsomeguy | (~justsomeg@2603:9000:960a:fc00:c4d2:5b73:c7b7:3a2b) (Changing host) |
2020-11-02 21:00:38 +0100 | justsomeguy | (~justsomeg@unaffiliated/--/x-3805311) |
2020-11-02 21:01:08 +0100 | <bqv> | is the class of bugs that vanish under strace/ltrace known? |
2020-11-02 21:01:13 +0100 | vacm | (~vacwm@70.23.92.191) |
2020-11-02 21:01:23 +0100 | <bqv> | or will i just have to wait to see what gdb does |
2020-11-02 21:01:30 +0100 | alx741 | (~alx741@186.178.110.193) (Quit: alx741) |
2020-11-02 21:01:44 +0100 | bqv | ! |
2020-11-02 21:01:48 +0100 | <bqv> | i can qemu this |
2020-11-02 21:01:51 +0100 | <sm[m]> | space leaks often vanish when you add haskell tracing. Not sure about your situation there |
2020-11-02 21:02:27 +0100 | Gurkenglas__ | Gurkenglas |
2020-11-02 21:02:38 +0100 | <sm[m]> | but that's why I asked about memory usage |
2020-11-02 21:02:38 +0100 | <bqv> | sm[m]: i've compiled with and without executable profiling enabled |
2020-11-02 21:02:43 +0100 | <bqv> | i don't think it affected anything |
2020-11-02 21:02:44 +0100 | meowphius | (~meowphius@pool-173-76-247-88.bstnma.fios.verizon.net) |
2020-11-02 21:02:46 +0100 | britva | (~britva@2a02:aa13:7240:2980:292a:d07d:3ab9:26ba) (Quit: This computer has gone to sleep) |
2020-11-02 21:02:55 +0100 | <bqv> | is that what you had in mind, or a specific kind? |
2020-11-02 21:03:09 +0100 | <tomsmeding> | FWIW, you can simulate ctrl-alt-FN over ssh by running 'sudo chvt N' |
2020-11-02 21:03:18 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds) |
2020-11-02 21:03:22 +0100 | <bqv> | ah, yes |
2020-11-02 21:03:22 +0100 | <sm[m]> | bqv: no I haven't suggested haskell profiling (since it sounded like a FFI/c-related issue) |
2020-11-02 21:03:40 +0100 | <tomsmeding> | run gdb in a tmux, start the thing, observe screen freeze, chvt over ssh, tmux a, and continue? |
2020-11-02 21:04:16 +0100 | <bqv> | hmm |
2020-11-02 21:04:24 +0100 | <bqv> | maybe worth a try |
2020-11-02 21:04:33 +0100 | refried_ | (~textual@pool-108-20-26-90.bstnma.fios.verizon.net) |
2020-11-02 21:04:43 +0100 | <tomsmeding> | (I was honestly surprised that chvt over ssh works) |
2020-11-02 21:05:21 +0100 | <sm[m]> | bqv: I don't think this is your issue but I was hinting to watch it in top once to make sure it's not being killed for using all memory - since this is pretty common with haskell apps |
2020-11-02 21:06:00 +0100 | <bqv> | i imagine that would be logged in dmesg too, anyway, right? |
2020-11-02 21:06:09 +0100 | <tomsmeding> | (and because I use an external display with the laptop lid shut, switching to a different tty over ssh made the systemd-inhibit process I have running nonfunctional, thus immediately sending my laptop to sleep...) |
2020-11-02 21:06:26 +0100 | <sm[m]> | perhaps, probably so |
2020-11-02 21:07:34 +0100 | nullheroes | (~danielvu@168.235.66.22) |
2020-11-02 21:08:40 +0100 | <bqv> | tomsmeding: nice! it worked |
2020-11-02 21:08:45 +0100 | <tomsmeding> | :D |
2020-11-02 21:08:45 +0100 | miklcct | (quasselcor@2001:19f0:7001:5ad:5400:2ff:feb6:50d7) (Remote host closed the connection) |
2020-11-02 21:08:48 +0100 | <tomsmeding> | and? |
2020-11-02 21:09:01 +0100 | <bqv> | not helpful, because it works in gdb too :D |
2020-11-02 21:09:01 +0100 | <tomsmeding> | convoluted hacks are best hacks |
2020-11-02 21:09:09 +0100 | <tomsmeding> | 🎉 |
2020-11-02 21:09:15 +0100 | <tomsmeding> | #fixed |
2020-11-02 21:09:30 +0100 | <bqv> | this is bizarre. am i just consigned to always run this with a debugger attached |
2020-11-02 21:09:32 +0100 | <tomsmeding> | is it reproducible outside tracing tools? |
2020-11-02 21:09:37 +0100 | <bqv> | to collapse the bug's wavefunction or something |
2020-11-02 21:09:38 +0100 | geekosaur67 | (82659a09@host154-009.vpn.uakron.edu) |
2020-11-02 21:09:44 +0100 | <tomsmeding> | does it happen always or just sometimes |
2020-11-02 21:09:48 +0100 | <bqv> | it is, yes, it's perfectly reproducible |
2020-11-02 21:09:53 +0100 | coot | (~coot@37.30.60.135.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection) |
2020-11-02 21:09:57 +0100 | miklcct | (quasselcor@2001:19f0:7001:5ad:5400:2ff:feb6:50d7) |
2020-11-02 21:10:03 +0100 | <bqv> | without strace/ltrace/gdb, the program always exits within a second |
2020-11-02 21:10:21 +0100 | <bqv> | exitcode 0, no relevant error logged |
2020-11-02 21:10:35 +0100 | <tomsmeding> | exitcode 0 also of your haskell process, or only of the launcher around it? |
2020-11-02 21:10:37 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 21:10:47 +0100 | <bqv> | oh, that's a good point! i hadn't checked. |
2020-11-02 21:11:01 +0100 | justsomeguy | (~justsomeg@unaffiliated/--/x-3805311) () |
2020-11-02 21:11:09 +0100 | <tomsmeding> | c.f. my remark above that I bet something is getting a signal and the exit code is getting swallowed :p |
2020-11-02 21:11:13 +0100 | elliott_ | (~elliott_@pool-108-51-141-12.washdc.fios.verizon.net) |
2020-11-02 21:11:16 +0100 | <tomsmeding> | I've seen this before |
2020-11-02 21:11:27 +0100 | mmohammadi9812 | (~mmohammad@188.210.118.100) |
2020-11-02 21:11:29 +0100 | <tomsmeding> | (I think) |
2020-11-02 21:11:47 +0100 | <geekosaur67> | +RTS -v0 ? |
2020-11-02 21:12:03 +0100 | <geekosaur67> | (C call interrupted by RTS itimer) |
2020-11-02 21:12:09 +0100 | geekosaur | (82659a09@host154-009.vpn.uakron.edu) (Ping timeout: 245 seconds) |
2020-11-02 21:12:17 +0100 | <bqv> | ha |
2020-11-02 21:12:19 +0100 | <bqv> | you were right |
2020-11-02 21:12:23 +0100 | <bqv> | it's getting USR1 |
2020-11-02 21:12:27 +0100 | <bqv> | but it is exiting with 0 |
2020-11-02 21:12:54 +0100 | aarvar | (~foewfoiew@50.35.43.33) |
2020-11-02 21:12:56 +0100 | <bqv> | does haskell die on SIGUSR1? |
2020-11-02 21:13:37 +0100 | <geekosaur67> | anything that doesn't specifically handle it will die |
2020-11-02 21:13:56 +0100 | <tomsmeding> | $ man 7 signal |
2020-11-02 21:14:01 +0100 | <tomsmeding> | SIGUSR1 has 'Term' as the default action |
2020-11-02 21:14:13 +0100 | <bqv> | that seems extreme |
2020-11-02 21:14:17 +0100 | <tomsmeding> | USR1 is a really weird one to get though |
2020-11-02 21:14:25 +0100 | <tomsmeding> | most signals have Term as default, only a few don't |
2020-11-02 21:14:57 +0100 | <bqv> | i feel like it's the launcher sending it |
2020-11-02 21:15:02 +0100 | <tomsmeding> | SIGHUP, or SIGBUS/SIGSEGV, SIGPIPE, I would've expected |
2020-11-02 21:15:17 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds) |
2020-11-02 21:15:50 +0100 | <bqv> | i'll try adding a System.Posix.Signals handler |
2020-11-02 21:16:49 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-11-02 21:17:53 +0100 | <tomsmeding> | if the process doesn't actively catch USR1 somehow, it shouldn't exit with code 0 due to it, but rather code 138 |
2020-11-02 21:17:53 +0100 | Tario | (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
2020-11-02 21:18:00 +0100 | <tomsmeding> | (128 + (10 == SIGUSR1)) |
2020-11-02 21:18:21 +0100 | <bqv> | i checked by using bash -c "prog; echo $?" |
2020-11-02 21:18:30 +0100 | <bqv> | it echoed 0, but maybe that's a bash quirk |
2020-11-02 21:18:37 +0100 | Tario | (~Tario@201.192.165.173) |
2020-11-02 21:19:06 +0100 | <bqv> | hang on, maybe it wasn't recieving it, maybe it was sending it |
2020-11-02 21:19:13 +0100 | rprije | (~rprije@194-193-168-77.tpgi.com.au) |
2020-11-02 21:19:15 +0100 | <monochrom> | I don't know whether it's relevant. It may be safer to use the threaded runtime system (give -threaded to GHC at link time). This eliminates a SIGVTALRM that may interfere with some syscalls. |
2020-11-02 21:19:36 +0100 | <bqv> | i'm already using -threaded by necessity |
2020-11-02 21:19:45 +0100 | <merijn> | oh, oh, oh |
2020-11-02 21:19:52 +0100 | <tomsmeding> | bqv: is your program starting X? maybe https://www.x.org/archive/X11R6.8.1/doc/Xserver.1.html#sect11 ? |
2020-11-02 21:19:52 +0100 | <monochrom> | Ah OK. |
2020-11-02 21:19:56 +0100 | <merijn> | People are talking posix signals! My time to shine! |
2020-11-02 21:19:59 +0100 | flatmap | (~flatmap@p200300dd370a47007ce3847efe0685c7.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
2020-11-02 21:19:59 +0100 | <merijn> | You're all wrong |
2020-11-02 21:20:06 +0100 | <bqv> | tomsmeding: wayland, unfortunately |
2020-11-02 21:20:10 +0100 | coot | (~coot@37.30.52.148.nat.umts.dynamic.t-mobile.pl) |
2020-11-02 21:20:17 +0100 | <monochrom> | That sounds like s/shine/roast/, merijn. :) |
2020-11-02 21:20:20 +0100 | <merijn> | No clue what was being discussed, but per my usual heuristic it's a safe bet |
2020-11-02 21:20:26 +0100 | <bqv> | lmao |
2020-11-02 21:20:37 +0100 | tms_ | (thomaav@cassarossa.samfundet.no) (Ping timeout: 264 seconds) |
2020-11-02 21:20:45 +0100 | <merijn> | 'cause no one ever gets signals right |
2020-11-02 21:20:53 +0100 | tomsmeding | dies from apprehension |
2020-11-02 21:20:57 +0100 | <monochrom> | To be fair, on certain other topics, I'm the one to say "as usual, all of you were wrong" |
2020-11-02 21:21:00 +0100 | hackage | foldl 1.4.10 - Composable, streaming, and efficient left folds https://hackage.haskell.org/package/foldl-1.4.10 (GabrielGonzalez) |
2020-11-02 21:21:12 +0100 | <merijn> | as for the safety of -threaded and signals the answer is pretty simple. |
2020-11-02 21:21:50 +0100 | <merijn> | While I haven't actually audited the signal handling code in GHC's RTS yet, I've concluded from discussions in #ghc that it's impossible to predictably and correctly handle posix signals in any runtime |
2020-11-02 21:22:24 +0100 | <monochrom> | Is that just the worst case? Or is that also the average case. |
2020-11-02 21:22:45 +0100 | <tomsmeding> | for that statement to be correct you'll have to define "any runtime" more precisely |
2020-11-02 21:22:49 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 21:22:51 +0100 | <merijn> | monochrom: The average case it "it'll probably approximate what you intended" |
2020-11-02 21:22:52 +0100 | <bqv> | oh |
2020-11-02 21:22:55 +0100 | <bqv> | tomsmeding: wait, yes it is |
2020-11-02 21:22:56 +0100 | <tomsmeding> | not saying that posix signals are a great design, but they _can_ work |
2020-11-02 21:23:00 +0100 | <bqv> | because xwayland |
2020-11-02 21:23:01 +0100 | <merijn> | tomsmeding: Either of the existing threaded/unthreaded runtimes |
2020-11-02 21:23:13 +0100 | <monochrom> | I have accepted approximations. |
2020-11-02 21:23:16 +0100 | <tomsmeding> | bqv: yes xwayland seems to inherit the same sigusr1 shenanigans from a quick web search |
2020-11-02 21:23:24 +0100 | <bqv> | (also i checked source, as i suspected, my program is sending USR1, not recieving it |
2020-11-02 21:23:27 +0100 | <monochrom> | (E.g., when I said "I no longer ask for great software") |
2020-11-02 21:23:43 +0100 | ggole | (~ggole@2001:8003:8119:7200:c42a:651c:d46:c888) (Quit: Leaving) |
2020-11-02 21:23:45 +0100 | <merijn> | Basically, the threaded RTS *and* the "unthreaded" (confusingly) use multiple threads |
2020-11-02 21:24:10 +0100 | <monochrom> | But there is also the angle that I am not using POSIX per se, I am using specifically Linux. |
2020-11-02 21:24:13 +0100 | <merijn> | But do absolutely nothing to control which threads get signals, which means you have zero predictability of what gets interrupted when and what you can safely do in your handler |
2020-11-02 21:25:05 +0100 | <merijn> | monochrom: linux has never made anything from posix *more* robust :p |
2020-11-02 21:25:12 +0100 | <bqv> | ooh you bastard |
2020-11-02 21:25:13 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2020-11-02 21:25:15 +0100 | <tomsmeding> | so the runtime needs to handle the signal internally, then raise an asynchronous haskell exception or something at the earliest opportunity _outside_ the actual signal handler, at which point the haskell-level signal handler can run |
2020-11-02 21:25:19 +0100 | <bqv> | installing the USR1 handler fixed it |
2020-11-02 21:25:22 +0100 | <tomsmeding> | I assume the ghc runtimes do that? |
2020-11-02 21:25:27 +0100 | <tomsmeding> | bqv: yay! |
2020-11-02 21:25:36 +0100 | olligobber | (olligobber@gateway/vpn/privateinternetaccess/olligobber) |
2020-11-02 21:25:46 +0100 | <bqv> | that's kinda frustrating because now i'm not entirely sure what's even happening here |
2020-11-02 21:25:50 +0100 | <bqv> | but oh well, it's solved at least |
2020-11-02 21:25:56 +0100 | <merijn> | tomsmeding: Essentially, what I've concluded from work a few years ago on signal handling in a multi-threaded runtime is that there's only one possible way you can get any kind of predictable behaviour |
2020-11-02 21:26:46 +0100 | <merijn> | You mask all signals in every thread, then have a single dedicated thread blocking on sigwait() (or it's pthread equivalent) and then have that thread set up the relevant flags/whatever to run user code |
2020-11-02 21:26:51 +0100 | <merijn> | Anything else is insanity |
2020-11-02 21:27:02 +0100 | tms_ | (thomaav@cassarossa.samfundet.no) |
2020-11-02 21:27:10 +0100 | <bqv> | but wait, even in haskell? |
2020-11-02 21:27:22 +0100 | <merijn> | bqv: In all languages |
2020-11-02 21:27:31 +0100 | <geekosaur67> | signals happen at a level below haskell |
2020-11-02 21:27:33 +0100 | <bqv> | won't the runtime behave vaguely predictably due to lightweight threads |
2020-11-02 21:27:34 +0100 | <tomsmeding> | bqv: some process in your tree, say P, assigns a SIG_IGN handler for SIGUSR1, and has another child process that still has the terminating SIG_DFL on SIGUSR1; then P starts xwayland, which detects SIG_IGN, sends SIGUSR1 to its parent which flows down to the other child, which terminates, which wreaks havoc |
2020-11-02 21:27:37 +0100 | <tomsmeding> | hypothesis |
2020-11-02 21:27:43 +0100 | <tomsmeding> | completely unproven :D |
2020-11-02 21:27:50 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 272 seconds) |
2020-11-02 21:27:57 +0100 | <merijn> | bqv: Yes, but those haskell threads are stilling running on pthreads at some point |
2020-11-02 21:28:06 +0100 | <merijn> | s/stilling/still |
2020-11-02 21:28:08 +0100 | <christo> | in haskell you can have 2 threads running simmultaneously right? |
2020-11-02 21:28:09 +0100 | <bqv> | hmm |
2020-11-02 21:28:16 +0100 | <christo> | or n threads |
2020-11-02 21:28:16 +0100 | <merijn> | christo: Sure |
2020-11-02 21:28:29 +0100 | <christo> | i might be make a version of tetris in haskell |
2020-11-02 21:28:34 +0100 | <bqv> | i mean moot point because i am using forkOS |
2020-11-02 21:28:37 +0100 | <merijn> | christo: GHC does N:M multi-threading, so your multiplex N haskell threads on top of M OS threads |
2020-11-02 21:28:38 +0100 | <bqv> | and -threaded |
2020-11-02 21:28:39 +0100 | <christo> | and do all the music running at the same time with euterpea |
2020-11-02 21:28:43 +0100 | <tomsmeding> | so merijn while you have a point about unpredictability of signals, it was _not_ actually the problem here ;) |
2020-11-02 21:28:44 +0100 | <monochrom> | merijn: I think every expert agrees on that strategy, yes. |
2020-11-02 21:28:46 +0100 | <merijn> | bqv: forkOS doesn't spawn OS threads |
2020-11-02 21:29:04 +0100 | <merijn> | bqv: forkOS just prevents your Haskell thread from migrating between OS threads |
2020-11-02 21:29:13 +0100 | <bqv> | right, bound thread |
2020-11-02 21:29:36 +0100 | <bqv> | but then given i have the bound thread running exclusively ffi code, i have at least 2 threads |
2020-11-02 21:29:38 +0100 | <christo> | in js i use canvas to draw, in haskell is there an equivalant? thx merijn |
2020-11-02 21:29:38 +0100 | <bqv> | right? |
2020-11-02 21:29:49 +0100 | <merijn> | christo: gloss, maybe? |
2020-11-02 21:30:17 +0100 | <christo> | and in terms of networking, are there api's for that in haskell? |
2020-11-02 21:30:18 +0100 | <monochrom> | No, forkOS has to spawn a fresh OS thread. What you want to not-guarantee is that this doesn't mean Haskell code will run on that OS thread. |
2020-11-02 21:30:21 +0100 | <christo> | gloss? i'll look into it |
2020-11-02 21:30:22 +0100 | <merijn> | bqv: That depends, for example are the safe foreign imports or unsafe foreign imports |
2020-11-02 21:30:34 +0100 | <merijn> | christo: the "network" package? :p |
2020-11-02 21:30:42 +0100 | <bqv> | er, hard to say |
2020-11-02 21:30:44 +0100 | <merijn> | christo: It's basically a thin wrapper over posix sockets |
2020-11-02 21:30:46 +0100 | <bqv> | i'm using inline-c |
2020-11-02 21:30:46 +0100 | <monochrom> | Still, in practice, Haskell code will run on that OS thread, even though this fact is not future-proof. |
2020-11-02 21:31:02 +0100 | <christo> | so in theory i can make an online tetris in haskell ? |
2020-11-02 21:31:09 +0100 | <merijn> | monochrom: No, forkOS explicitly does not spawn a fresh OS thread |
2020-11-02 21:31:16 +0100 | <christo> | or tetris client |
2020-11-02 21:31:22 +0100 | <monochrom> | Therefore, I find "forkOS doesn't spawn an OS thread" is at best academic scaremongering, at worst a downright lie. |
2020-11-02 21:31:58 +0100 | <merijn> | monochrom: forkOS spawns a bound thread, it doesn't affect the number of OS threads in existence |
2020-11-02 21:32:56 +0100 | <monochrom> | Then you wouldn't have enough number of OS threads for sufficiently many independent C calls. |
2020-11-02 21:33:32 +0100 | Katarushisu | (~Katarushi@cpc149712-finc20-2-0-cust535.4-2.cable.virginm.net) (Ping timeout: 272 seconds) |
2020-11-02 21:33:47 +0100 | <merijn> | monochrom: What? How are those two things remotely related to each other? |
2020-11-02 21:34:22 +0100 | dbmikus_ | (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) |
2020-11-02 21:35:00 +0100 | <monochrom> | Do you mind taking a look at my answer already written up at http://www.vex.net/~trebla/haskell/ghc-conc-ffi.xhtml ? You can scroll down to the section "thread-local FFI calls" |
2020-11-02 21:35:03 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 21:35:31 +0100 | <geekosaur67> | those are I/O manager threads, and it'll block waiting for one to become available if needed |
2020-11-02 21:36:02 +0100 | dbmikus | (~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 264 seconds) |
2020-11-02 21:36:07 +0100 | <geekosaur67> | separate pool from forkIO / forkOS threads |
2020-11-02 21:36:39 +0100 | <bqv> | strange. the signal handler definitely solves the issue, but when i change the handler to do "something", it doesn't do that thing (but still solves the issue) |
2020-11-02 21:36:46 +0100 | ^[_ | ^[ |
2020-11-02 21:37:09 +0100 | <c_wraith> | as I understand it, the only guarantee forkOS makes is that all safe FFI calls it makes will be on the same OS thread. Nothing about having exclusive access to that OS thread. |
2020-11-02 21:37:12 +0100 | ^[ | (sid43445@gateway/web/irccloud.com/x-iztepeaguyumtzta) (Changing host) |
2020-11-02 21:37:12 +0100 | ^[ | (sid43445@ircpuzzles/2015/april-fools/sixth/zgrep) |
2020-11-02 21:37:26 +0100 | <merijn> | c_wraith: That's what the GHC docs say, yes |
2020-11-02 21:37:59 +0100 | <c_wraith> | does the RTS actually give a stronger guarantee at this time? |
2020-11-02 21:38:17 +0100 | <merijn> | Possibly, according to monochrom |
2020-11-02 21:39:33 +0100 | <bqv> | surely forkOS twice then has to spawn at least one thread (or reuse one), because the resultant bound threads can't be the same or you'd run into concurrency problems |
2020-11-02 21:40:00 +0100 | ahmr88 | (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) |
2020-11-02 21:40:01 +0100 | <tomsmeding> | unless there's already one laying around |
2020-11-02 21:40:03 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds) |
2020-11-02 21:40:32 +0100 | <bqv> | exactly, yeah |
2020-11-02 21:40:38 +0100 | domj | (~domj@77.139.218.14) (Ping timeout: 260 seconds) |
2020-11-02 21:40:45 +0100 | <merijn> | bqv: Why would you run into concurrency problems? |
2020-11-02 21:41:11 +0100 | <merijn> | bqv: I don't see any conflict in having two bound threads on the same OS thread |
2020-11-02 21:41:12 +0100 | <geekosaur67> | I don't think anything guarantees there won't be a block waiting for an available thread to run your FFI call on |
2020-11-02 21:41:14 +0100 | <bqv> | merijn: envision a situation where both FFI threads block indefinitely |
2020-11-02 21:41:19 +0100 | <tomsmeding> | bqv: the only reason I can think of that that happens (handler solves issue but doesn't run itself), is that some process between you and the SIGUSR1-sender detects that the SIGUSR1 handler is not SIG_DFL and therefore installs its own handler |
2020-11-02 21:41:25 +0100 | <merijn> | bqv: Well, "don't do that, then" :) |
2020-11-02 21:41:28 +0100 | <bqv> | lmao |
2020-11-02 21:41:29 +0100 | <tomsmeding> | but that would be obscure |
2020-11-02 21:41:30 +0100 | hackage | HDBC-postgresql 2.4.0.0 - PostgreSQL driver for HDBC https://hackage.haskell.org/package/HDBC-postgresql-2.4.0.0 (ErikHesselink) |
2020-11-02 21:41:35 +0100 | AlterEgo- | (~ladew@124-198-158-163.dynamic.caiway.nl) (Quit: Leaving) |
2020-11-02 21:42:03 +0100 | <merijn> | bqv: Actually, that's already a problem if only one of them blocks indefinitely |
2020-11-02 21:42:06 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) (Quit: sord937) |
2020-11-02 21:42:13 +0100 | <bqv> | tomsmeding: that sounds bizarre |
2020-11-02 21:42:17 +0100 | <monochrom> | Huh? I thought the whole point of "safe FFI call" is it can block all it wants and no one else is held waiting. |
2020-11-02 21:42:21 +0100 | <merijn> | bqv: If monochrom is right (which at casual glance of the code is probably true) |
2020-11-02 21:42:24 +0100 | <tomsmeding> | bqv: I'm kind of hoping it's not true |
2020-11-02 21:42:29 +0100 | <merijn> | bqv: Then that can't happen |
2020-11-02 21:42:53 +0100 | <merijn> | monochrom: It looks like you are probably correct per the code, but that's not what GHC guarantees per the docs |
2020-11-02 21:43:05 +0100 | <monochrom> | The docs are outdated. |
2020-11-02 21:43:16 +0100 | <merijn> | Now, maybe the docs are wrong and don't provide strong enough guarantees |
2020-11-02 21:43:44 +0100 | <monochrom> | There is even an old version of the doc that positive guaranteed you would have only one capability, ever. |
2020-11-02 21:43:52 +0100 | <monochrom> | Now look at -N100. |
2020-11-02 21:44:02 +0100 | refried_ | (~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
2020-11-02 21:44:10 +0100 | <merijn> | monochrom: once you do a safe foreign call the capability is unlocked |
2020-11-02 21:44:11 +0100 | <bqv> | signal() is a syscall, i can strace this... |
2020-11-02 21:44:22 +0100 | <merijn> | So if you have another thread then safe foreign calls can never block Haskell code, sure |
2020-11-02 21:44:25 +0100 | <tomsmeding> | bqv: watch for sigaction() instead I think |
2020-11-02 21:44:47 +0100 | <merijn> | But I'm pretty sure that you can run out of safe call threads if you keep spamming enough blocking safe calls |
2020-11-02 21:44:47 +0100 | <tomsmeding> | though things might detect being ptrace'd >:D |
2020-11-02 21:45:21 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-11-02 21:45:29 +0100 | <merijn> | bqv: I hope to god that signal() isn't called |
2020-11-02 21:45:52 +0100 | <merijn> | signal is broken and deprecated for two decades, it should be sigaction() as tomsmeding points out |
2020-11-02 21:46:29 +0100 | u0_a298` | (~user@47.206.148.226) |
2020-11-02 21:46:43 +0100 | Katarushisu | (~Katarushi@cpc149712-finc20-2-0-cust535.4-2.cable.virginm.net) |
2020-11-02 21:46:51 +0100 | refried_ | (~textual@pool-108-20-26-90.bstnma.fios.verizon.net) |
2020-11-02 21:47:03 +0100 | <bqv> | i see a lot of rt_sigaction |
2020-11-02 21:47:11 +0100 | <bqv> | none refer to usr1 |
2020-11-02 21:47:12 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 21:47:28 +0100 | <tomsmeding> | welcome to the world of strace, where you suddenly see the loads of crap that everything executes |
2020-11-02 21:47:38 +0100 | <bqv> | in fact there's no reference to usr1 at all |
2020-11-02 21:47:43 +0100 | <bqv> | unless it's numeric |
2020-11-02 21:47:47 +0100 | <monochrom> | I like signal() when I'm just tell it to SIG_IGN or SIG_DFL. It's dreadful to have to fill out a form for just those. And I always have trouble deciding whether the other fields really matter or not for those cases. |
2020-11-02 21:47:53 +0100 | <bqv> | 128? |
2020-11-02 21:48:16 +0100 | <tomsmeding> | bqv: 10 |
2020-11-02 21:48:42 +0100 | <tomsmeding> | monochrom: glibc's surface signal(3) probably calls sigaction(2) under the hood |
2020-11-02 21:48:42 +0100 | <bqv> | nothing for that either |
2020-11-02 21:48:46 +0100 | <bqv> | bizarre |
2020-11-02 21:48:53 +0100 | <merijn> | monochrom: Those two are defensible, but as soon as you install an actual handler it's unusably broken |
2020-11-02 21:49:11 +0100 | <monochrom> | Right, I know that. |
2020-11-02 21:49:43 +0100 | <monochrom> | I'm a good kid, I use sigaction and make careful decisions about the options, when it's my handler. |
2020-11-02 21:50:01 +0100 | u0_a298 | (~user@47.206.148.226) (Ping timeout: 264 seconds) |
2020-11-02 21:50:06 +0100 | alp | (~alp@2a01:e0a:58b:4920:ecfe:1146:fdb5:4e48) |
2020-11-02 21:50:13 +0100 | <bqv> | ah wait |
2020-11-02 21:50:24 +0100 | <monochrom> | And those fields are actually useful for handlers. |
2020-11-02 21:50:49 +0100 | <bqv> | no, even with strace i should at least see the handler installed, right? |
2020-11-02 21:50:58 +0100 | <bqv> | what is going on... |
2020-11-02 21:51:04 +0100 | <tomsmeding> | with 'strace -f' yes |
2020-11-02 21:51:09 +0100 | <bqv> | why -f? |
2020-11-02 21:51:13 +0100 | <bqv> | i don't fork |
2020-11-02 21:51:15 +0100 | <geekosaur67> | follow forks |
2020-11-02 21:51:20 +0100 | <tomsmeding> | your children do |
2020-11-02 21:51:24 +0100 | <geekosaur67> | but the parent does, you said? |
2020-11-02 21:51:30 +0100 | <tomsmeding> | that |
2020-11-02 21:51:33 +0100 | <tomsmeding> | sorry |
2020-11-02 21:51:41 +0100 | <bqv> | i'm running `launcher -- strace program` |
2020-11-02 21:51:50 +0100 | <bqv> | so strace's immediate child should be traced |
2020-11-02 21:51:50 +0100 | <tomsmeding> | use -f anyway to be sure :p |
2020-11-02 21:52:00 +0100 | <bqv> | but then i end up tracing x11 ;_; |
2020-11-02 21:52:02 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds) |
2020-11-02 21:52:06 +0100 | <bqv> | that's ..not pretty |
2020-11-02 21:52:10 +0100 | <tomsmeding> | which might very well be the culprit |
2020-11-02 21:52:16 +0100 | <tomsmeding> | use -ff perhaps |
2020-11-02 21:52:26 +0100 | <bqv> | see you in a minute or two... |
2020-11-02 21:52:28 +0100 | <tomsmeding> | splits out the log for separate processes |
2020-11-02 21:52:49 +0100 | <monochrom> | -fff and -ppp... |
2020-11-02 21:53:49 +0100 | <bqv> | oh good god that's too many processes |
2020-11-02 21:54:05 +0100 | <bqv> | but at least now i have some hits for USR1 |
2020-11-02 21:54:31 +0100 | <bqv> | 149, to be exact |
2020-11-02 21:54:32 +0100 | <monochrom> | P.S. I am a robot and I always tried to train myself to have 10 levels of consistent strength for the range from ppp to fff. |
2020-11-02 21:54:43 +0100 | <tomsmeding> | you may also like --trace for strace, or just rely on good-old grepping (better) |
2020-11-02 21:55:06 +0100 | <bqv> | yeah, it's ok, i'm in emacs, so i can just smartly grep through this |
2020-11-02 21:55:34 +0100 | <tomsmeding> | monochrom: I have the fortune of not being classically trained so I just take those dynamics markings as a general guideline :D |
2020-11-02 21:55:37 +0100 | <bqv> | but i have truly no idea how to interpret any of it |
2020-11-02 21:55:46 +0100 | <monochrom> | Yeah data scientists recommend saving all data and worrying about mining later. |
2020-11-02 21:56:09 +0100 | <tomsmeding> | how many lines is 'grep USR1 *' |
2020-11-02 21:56:17 +0100 | <tomsmeding> | $ grep USR1 * | wc -l |
2020-11-02 21:56:22 +0100 | <bqv> | 149 |
2020-11-02 21:56:23 +0100 | <monochrom> | Oh, I think classical music people also take liberty. They too are against my robotic way. |
2020-11-02 21:56:34 +0100 | <tomsmeding> | bqv: pastebin plz |
2020-11-02 21:56:53 +0100 | <monochrom> | Or at least, fff for one piece don't have to be the same as fff for another piece. |
2020-11-02 21:57:03 +0100 | <tomsmeding> | makes sense |
2020-11-02 21:57:14 +0100 | Aquazi | (uid312403@gateway/web/irccloud.com/x-onbapdmfluqaidcp) (Quit: Connection closed for inactivity) |
2020-11-02 21:57:24 +0100 | <tomsmeding> | some composers are less liberal with their fff's I'd think, rather calling that f or ff |
2020-11-02 21:57:34 +0100 | <monochrom> | This is why I'm better off as a computer scientist or programmer or the like. |
2020-11-02 21:57:50 +0100 | <tomsmeding> | apparently unicode has symbols for them 𝆑 𝆏 |
2020-11-02 21:58:10 +0100 | <monochrom> | If the code says "x = 1" then it is 1, what do you mean musicality allows you to change it to 2. |
2020-11-02 21:58:37 +0100 | <tomsmeding> | something with physicists and pi? |
2020-11-02 21:58:46 +0100 | <bqv> | termbin.com doesn't like recieving this many lines... |
2020-11-02 21:58:51 +0100 | <tomsmeding> | 149? |
2020-11-02 21:58:58 +0100 | <bqv> | oh no i was gonna send the full thing |
2020-11-02 21:58:59 +0100 | <tomsmeding> | sounds like a crappy pastebin, try mine |
2020-11-02 21:59:05 +0100 | <dsal> | bqv: I think you're just supposed to dump them into irc if you have too many lines. |
2020-11-02 21:59:05 +0100 | <tomsmeding> | oh lol |
2020-11-02 21:59:13 +0100 | <bqv> | it's only 1.9mb |
2020-11-02 21:59:27 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 21:59:40 +0100 | <tomsmeding> | tar cz * | curl --data-binary @/dev/stdin https://tomsmeding.com/gooi/things.tar.gz |
2020-11-02 22:00:02 +0100 | mmalecki | (~mmalecki@154.13.1.56) () |
2020-11-02 22:00:21 +0100 | geowiesnot | (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) |
2020-11-02 22:00:28 +0100 | <bqv> | i can't tell if that succeeded or not |
2020-11-02 22:00:33 +0100 | <tomsmeding> | did it print a URL |
2020-11-02 22:00:44 +0100 | <bqv> | oh, yes |
2020-11-02 22:00:52 +0100 | <bqv> | https://tomsmeding.com/vang/IZn8dA/things.tar.gz |
2020-11-02 22:00:58 +0100 | <bqv> | also https://tomsmeding.com/vang/9OW8PN/things.tar.gz |
2020-11-02 22:01:59 +0100 | <tomsmeding> | identical? |
2020-11-02 22:02:06 +0100 | <bqv> | yeah lol |
2020-11-02 22:02:11 +0100 | <bqv> | i did it twice by mistake |
2020-11-02 22:02:35 +0100 | <tomsmeding> | (link is valid for 24 hours btw) |
2020-11-02 22:02:54 +0100 | <tomsmeding> | cabal > stack I approve |
2020-11-02 22:03:01 +0100 | <bqv> | :D |
2020-11-02 22:04:25 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 264 seconds) |
2020-11-02 22:04:29 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2020-11-02 22:04:36 +0100 | ahmr88 | (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) (Remote host closed the connection) |
2020-11-02 22:05:37 +0100 | <tomsmeding> | why does process 1691973 write out "wl_display_create() = 0x00007f4770000c80" c h a r a c t e r b y c h a r a c t e r |
2020-11-02 22:05:49 +0100 | <bqv> | that's coming from haskell, tbf |
2020-11-02 22:06:12 +0100 | <bqv> | i think it might be because i build that string using a monoid |
2020-11-02 22:06:14 +0100 | p-core | (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Ping timeout: 268 seconds) |
2020-11-02 22:06:21 +0100 | <bqv> | (execWriter) |
2020-11-02 22:06:30 +0100 | <tomsmeding> | ah no it's just String being String I think |
2020-11-02 22:06:36 +0100 | <bqv> | heh |
2020-11-02 22:06:43 +0100 | <tomsmeding> | but that's your haskell, apparently? |
2020-11-02 22:07:02 +0100 | <bqv> | yes |
2020-11-02 22:07:13 +0100 | <bqv> | (that's a hilarious sideeffect, btw) |
2020-11-02 22:07:31 +0100 | <tomsmeding> | (line 1427 in your log) |
2020-11-02 22:07:40 +0100 | <bqv> | yeah i found it |
2020-11-02 22:09:02 +0100 | Kaivo | (~Kaivo@104-200-86-99.mc.derytele.com) (Ping timeout: 264 seconds) |
2020-11-02 22:09:14 +0100 | bitmapper | (uid464869@gateway/web/irccloud.com/x-kktozexnvkkmtbir) (Quit: Connection closed for inactivity) |
2020-11-02 22:09:25 +0100 | britva | (~britva@31-10-157-156.cgn.dynamic.upc.ch) |
2020-11-02 22:11:22 +0100 | Kaivo | (~Kaivo@ec2-15-222-231-32.ca-central-1.compute.amazonaws.com) |
2020-11-02 22:11:36 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 22:11:56 +0100 | <bqv> | so the launcher sets handlers using sigaction on USR1 |
2020-11-02 22:11:57 +0100 | <tomsmeding> | merijn: apparently the haskell runtime uses signalfd4(2) and immediately after masks the signal |
2020-11-02 22:12:03 +0100 | <bqv> | it's using that x11 mechanism |
2020-11-02 22:12:06 +0100 | <tomsmeding> | (TIL sigalfd4) |
2020-11-02 22:12:18 +0100 | <bqv> | perhaps the haskell runtime is clearing something it shouldn't? |
2020-11-02 22:13:01 +0100 | <tomsmeding> | what process are you starting directly after you attach a handler to SIGUSR1 in haskell code? |
2020-11-02 22:13:14 +0100 | chaosmasttter | (~chaosmast@p200300c4a72dee01a86cafb086ba766e.dip0.t-ipconnect.de) (Quit: WeeChat 2.9) |
2020-11-02 22:13:14 +0100 | <tomsmeding> | (process 1692017) |
2020-11-02 22:13:57 +0100 | <bqv> | i don't see anything fork-like happening around there |
2020-11-02 22:14:15 +0100 | <bqv> | the immediate next line is basically a call to wl_display_create() |
2020-11-02 22:14:24 +0100 | <bqv> | then a load of c marshalling |
2020-11-02 22:14:53 +0100 | <bqv> | (actually, none of my code specifically creates any processes, but the launcher does, and the library might) |
2020-11-02 22:15:11 +0100 | <tomsmeding> | ah |
2020-11-02 22:15:35 +0100 | refried_ | (~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
2020-11-02 22:15:54 +0100 | <bqv> | oh |
2020-11-02 22:16:05 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 240 seconds) |
2020-11-02 22:16:15 +0100 | <bqv> | would it matter if the handler was within a forkOS bound thread that's blocked indefinitely? |
2020-11-02 22:16:23 +0100 | <bqv> | i thought because it's haskell code, it wouldn't be bound |
2020-11-02 22:16:29 +0100 | <bqv> | but maybe it's blocked for that reason? |
2020-11-02 22:16:42 +0100 | <tomsmeding> | ¯\_(ツ)_/¯ |
2020-11-02 22:17:07 +0100 | <tomsmeding> | I'm actually not all that familiar with the intricacies of forkOS, defer to the other people that contributed earlier :p |
2020-11-02 22:17:22 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2020-11-02 22:17:45 +0100 | refried_ | (~textual@pool-108-20-26-90.bstnma.fios.verizon.net) |
2020-11-02 22:17:49 +0100 | <tomsmeding> | AH |
2020-11-02 22:18:17 +0100 | cole-h | (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Quit: Goodbye) |
2020-11-02 22:18:30 +0100 | <tomsmeding> | okay I was wrong, that signalfd4 is not the haskell rts, that's whatever library you're using |
2020-11-02 22:18:41 +0100 | <bqv> | oh, that's interesting |
2020-11-02 22:18:52 +0100 | loprakoa[m] | (loprakoama@gateway/shell/matrix.org/x-xavaolgsmkbljkqt) |
2020-11-02 22:19:01 +0100 | <tomsmeding> | early on there is an rt_sigaction that binds a handler to USR1; that'll be your code, because quickly after there is that c h a r a c t e r call to wl_display_create() |
2020-11-02 22:19:49 +0100 | <tomsmeding> | later, though, at :13587-13588, your own haskell process (but I think the library, really) makes a signal FD and then SIG_BLOCK's USR1 in your process |
2020-11-02 22:20:00 +0100 | <tomsmeding> | hence your handler doesn't fire |
2020-11-02 22:20:28 +0100 | <bqv> | what on earth |
2020-11-02 22:20:37 +0100 | <geekosaur67> | that's documented |
2020-11-02 22:20:44 +0100 | <geekosaur67> | go read the signalfd4 manpage |
2020-11-02 22:21:10 +0100 | <tomsmeding> | geekosaur67: I think bqv is not reacting to the syscalls' behaviour, but the behaviour of the library he's using |
2020-11-02 22:21:18 +0100 | <bqv> | yeah |
2020-11-02 22:21:38 +0100 | <bqv> | oh interesting, i think i know what call's doing that |
2020-11-02 22:21:41 +0100 | p-core | (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) |
2020-11-02 22:21:46 +0100 | <bqv> | maybe if i put the handler after that then |
2020-11-02 22:21:49 +0100 | tms_ | (thomaav@cassarossa.samfundet.no) (Ping timeout: 264 seconds) |
2020-11-02 22:22:01 +0100 | <geekosaur67> | I expect it just lists out all the non-SIG_DFL signals and does the signalfd4() thing on them |
2020-11-02 22:22:08 +0100 | <geekosaur67> | so it's just not expecting your handler |
2020-11-02 22:22:25 +0100 | <bqv> | well actually, to be honest that's perfectly reasonable behaviour, i was just confused as to how it was occuring |
2020-11-02 22:22:37 +0100 | <bqv> | but as long as nothing's broken, i can live with just setting an ignore handler |
2020-11-02 22:22:38 +0100 | <tomsmeding> | geekosaur67: it specifically only does it for CHLD and USR1 |
2020-11-02 22:23:08 +0100 | u0_a298` | (~user@47.206.148.226) (Ping timeout: 256 seconds) |
2020-11-02 22:23:15 +0100 | <tomsmeding> | probably that's the best approach bqv |
2020-11-02 22:23:53 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 22:24:05 +0100 | <tomsmeding> | note that process 1691972 also puts a SIG_BLOCK on USR1 at line 3922, but that's for a different process (not sure which) |
2020-11-02 22:24:26 +0100 | cole-h | (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) |
2020-11-02 22:24:29 +0100 | <bqv> | yes, by my guess, one is for my process, one is for Xwayland |
2020-11-02 22:25:39 +0100 | <tomsmeding> | ah at some point your haskell process (but really the library probably) forks to 1692017, puts a SIG_IGN handler on USR1, and then exec's Xwayland |
2020-11-02 22:25:56 +0100 | <tomsmeding> | so it's not the block that's the culprit, it's that overwrite |
2020-11-02 22:25:59 +0100 | <tomsmeding> | I think |
2020-11-02 22:26:08 +0100 | <tomsmeding> | (line 13615) |
2020-11-02 22:26:28 +0100 | Franciman | (~francesco@host-79-36-167-172.retail.telecomitalia.it) (Quit: Leaving) |
2020-11-02 22:26:37 +0100 | <bqv> | I actually estimate i might be able to still hook into the signal, because it looks like it's fed into the wayland event loop |
2020-11-02 22:27:02 +0100 | <bqv> | it'll just look bizarre that i set the signal to ignore on one line and then hook into it using a completely different mechanism a few lines below |
2020-11-02 22:27:10 +0100 | refried_ | (~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
2020-11-02 22:27:13 +0100 | <bqv> | thanks, wayland |
2020-11-02 22:27:20 +0100 | bliminse | (~bliminse@host109-156-197-211.range109-156.btcentralplus.com) (Remote host closed the connection) |
2020-11-02 22:27:35 +0100 | <tomsmeding> | that's what a code comment is for :) |
2020-11-02 22:27:39 +0100 | bliminse | (~bliminse@host109-156-197-211.range109-156.btcentralplus.com) |
2020-11-02 22:28:02 +0100 | <tomsmeding> | nice search, thanks for the evening entertainment bqv |
2020-11-02 22:28:10 +0100 | <bqv> | bah, nah, didn't work |
2020-11-02 22:28:15 +0100 | <bqv> | hehe, no problem |
2020-11-02 22:28:27 +0100 | tms_ | (thomaav@cassarossa.samfundet.no) |
2020-11-02 22:28:38 +0100 | z0 | (~z0@188.250.0.59) |
2020-11-02 22:28:43 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds) |
2020-11-02 22:29:13 +0100 | refried_ | (~textual@pool-108-20-26-90.bstnma.fios.verizon.net) |
2020-11-02 22:29:50 +0100 | <tomsmeding> | so in hindsight, strace/ltrace/gdb probably "fixed" the problem by handling signals or something? |
2020-11-02 22:32:47 +0100 | acidjnk_new2 | (~acidjnk@p200300d0c718f623ecaa4caf6803be45.dip0.t-ipconnect.de) |
2020-11-02 22:32:55 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) |
2020-11-02 22:32:58 +0100 | <bqv> | yeah, exactly |
2020-11-02 22:34:24 +0100 | acidjnk_new | (~acidjnk@p200300d0c72260501db9c4f6165b2eaf.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2020-11-02 22:36:02 +0100 | solonarv | (~solonarv@astrasbourg-653-1-117-122.w90-33.abo.wanadoo.fr) (Ping timeout: 264 seconds) |
2020-11-02 22:36:06 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 22:37:41 +0100 | thir | (~thir@p200300f27f0b7e00f4e9381c2bf90854.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
2020-11-02 22:37:44 +0100 | geekosaur67 | (82659a09@host154-009.vpn.uakron.edu) (Remote host closed the connection) |
2020-11-02 22:38:35 +0100 | refried_ | (~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
2020-11-02 22:39:15 +0100 | refried_ | (~textual@pool-108-20-26-90.bstnma.fios.verizon.net) |
2020-11-02 22:39:47 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
2020-11-02 22:41:18 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 272 seconds) |
2020-11-02 22:41:36 +0100 | xwvvvvwx- | (~xwvvvvwx@45.129.56.198) |
2020-11-02 22:44:28 +0100 | xwvvvvwx | (~xwvvvvwx@185.213.155.160) (Ping timeout: 272 seconds) |
2020-11-02 22:44:28 +0100 | xwvvvvwx- | xwvvvvwx |
2020-11-02 22:47:53 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-104-94.w86-212.abo.wanadoo.fr) |
2020-11-02 22:48:15 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 22:49:12 +0100 | inkbottle | (~inkbottle@aaubervilliers-654-1-1-110.w83-200.abo.wanadoo.fr) (Ping timeout: 260 seconds) |
2020-11-02 22:49:37 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2020-11-02 22:52:58 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 260 seconds) |
2020-11-02 22:54:49 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
2020-11-02 22:57:25 +0100 | p-core | (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Ping timeout: 268 seconds) |
2020-11-02 22:59:22 +0100 | obihann | (~jhann@156.34.160.69) |
2020-11-02 22:59:54 +0100 | p-core | (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) |
2020-11-02 23:00:22 +0100 | Rudd0 | (~Rudd0@185.189.115.98) |
2020-11-02 23:00:28 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 23:00:30 +0100 | knupfer | (~Thunderbi@200116b82c45b3000805a93423d8669d.dip.versatel-1u1.de) (Ping timeout: 268 seconds) |
2020-11-02 23:01:23 +0100 | vacm | (~vacwm@70.23.92.191) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-11-02 23:02:46 +0100 | mmohammadi9812 | (~mmohammad@188.210.118.100) (Quit: Quit) |
2020-11-02 23:03:11 +0100 | mmohammadi9812 | (~mmohammad@188.210.118.100) |
2020-11-02 23:04:24 +0100 | danvet | (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 240 seconds) |
2020-11-02 23:05:26 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 264 seconds) |
2020-11-02 23:07:05 +0100 | prozion | (b29b04cd@gateway/web/cgi-irc/kiwiirc.com/ip.178.155.4.205) |
2020-11-02 23:07:15 +0100 | heatsink | (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2020-11-02 23:09:10 +0100 | invaser | (~Thunderbi@31.148.23.125) |
2020-11-02 23:10:03 +0100 | vacm | (~vacwm@70.23.92.191) |
2020-11-02 23:11:33 +0100 | kupi | (uid212005@gateway/web/irccloud.com/x-izotevyprbcyotcz) |
2020-11-02 23:12:07 +0100 | <Cheery> | Is there any libraries written for text layouting/typesetting in haskell? |
2020-11-02 23:12:10 +0100 | refried_ | (~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
2020-11-02 23:13:11 +0100 | <Uniaika> | hmm, not that I know of |
2020-11-02 23:13:41 +0100 | <dsal> | HaTeX |
2020-11-02 23:13:51 +0100 | <Cheery> | I am curious because I wnoder what structure of something like XML/HTML is necessary. |
2020-11-02 23:14:02 +0100 | whatisRT | (~whatisRT@2002:5b41:6a33:0:dea6:32ff:fe5b:d45f) |
2020-11-02 23:14:06 +0100 | <dsal> | If it doesn't exist... that's probably fine. |
2020-11-02 23:14:23 +0100 | <Cheery> | HaX |
2020-11-02 23:14:34 +0100 | refried_ | (~textual@pool-108-20-26-90.bstnma.fios.verizon.net) |
2020-11-02 23:14:48 +0100 | <Cheery> | there's luispedro's hex |
2020-11-02 23:15:03 +0100 | hyperisco | (~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Ping timeout: 258 seconds) |
2020-11-02 23:15:13 +0100 | <Cheery> | it says not complete |
2020-11-02 23:15:50 +0100 | daydaynatation | (~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 256 seconds) |
2020-11-02 23:18:05 +0100 | flatmap | (~flatmap@p200300dd370a4700ac5fe25fa28a3bcb.dip0.t-ipconnect.de) |
2020-11-02 23:18:21 +0100 | gehmehgeh | (~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving) |
2020-11-02 23:18:24 +0100 | flatmap | (~flatmap@p200300dd370a4700ac5fe25fa28a3bcb.dip0.t-ipconnect.de) (Client Quit) |
2020-11-02 23:19:42 +0100 | coot_ | (~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl) |
2020-11-02 23:20:06 +0100 | <Cheery> | Hm. I could port my reimplementation |
2020-11-02 23:21:02 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 23:21:27 +0100 | coot | (~coot@37.30.52.148.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 260 seconds) |
2020-11-02 23:21:28 +0100 | coot_ | coot |
2020-11-02 23:22:23 +0100 | <Cheery> | hatred, haskell typesetting |
2020-11-02 23:22:56 +0100 | <jackdk> | is there a canonical two-type-arg version of `Proxy`? |
2020-11-02 23:23:32 +0100 | prozion | (b29b04cd@gateway/web/cgi-irc/kiwiirc.com/ip.178.155.4.205) (Quit: Connection closed) |
2020-11-02 23:23:33 +0100 | obihann | (~jhann@156.34.160.69) (Quit: Lost terminal) |
2020-11-02 23:23:34 +0100 | <gobbleguy> | Proxy (x,y)? :) |
2020-11-02 23:23:56 +0100 | Sheilong | (uid293653@gateway/web/irccloud.com/x-faekvzqkhmohaswr) |
2020-11-02 23:25:10 +0100 | <kupi> | hi |
2020-11-02 23:25:23 +0100 | obihann | (~jhann@156.34.160.69) |
2020-11-02 23:25:24 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 240 seconds) |
2020-11-02 23:25:29 +0100 | <jackdk> | gobbleguy: ha. I'm considering a type like `data P p q f g a b = P (p a (f b)) (q b (g a))`, with the idea that generally you have `p ~ q ~ (->)` but if you need to give up roundtripping, you can kill one side or the other by putting a `data Proxy2 a b = Proxy2` in for `p` or `q` |
2020-11-02 23:25:33 +0100 | <kupi> | here https://hackage.haskell.org/package/base-4.14.0.0/docs/src/Data.Foldable.html#foldlM how foldr is called with 4 parameters? when I click the definition it only shows 3 |
2020-11-02 23:26:21 +0100 | <jackdk> | kupi: note the function `return` is passed in, so the result of the fold is itself a function |
2020-11-02 23:26:30 +0100 | N3RGY | (~N3RGY@65.141.87.122) |
2020-11-02 23:26:41 +0100 | <jackdk> | Cheery: consider looking at pretty-printer libraries and/or pandoc? |
2020-11-02 23:26:54 +0100 | invaser | (~Thunderbi@31.148.23.125) (Ping timeout: 272 seconds) |
2020-11-02 23:27:37 +0100 | vacm | (~vacwm@70.23.92.191) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2020-11-02 23:27:50 +0100 | ffej | (~ffej@195.206.169.184) |
2020-11-02 23:28:02 +0100 | <kupi> | so f a b is the same as (f a) b? |
2020-11-02 23:28:10 +0100 | obihann | (~jhann@156.34.160.69) (Client Quit) |
2020-11-02 23:28:29 +0100 | PerseusPlease | (~{mikey}@212.86.35.157) |
2020-11-02 23:28:35 +0100 | <PerseusPlease> | hi. |
2020-11-02 23:29:15 +0100 | <jackdk> | kupi: if you're talking about function application, yes. It associates to the left |
2020-11-02 23:29:58 +0100 | <PerseusPlease> | Super basic question. For a given module (in this case Data.Binary.Get) how do I know what name needs to go in build-depends? I haven't been able to assign rhyme or reason to it so far |
2020-11-02 23:30:07 +0100 | <PerseusPlease> | ? |
2020-11-02 23:30:19 +0100 | coot | (~coot@37.30.49.253.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
2020-11-02 23:30:43 +0100 | thc202 | (~thc202@unaffiliated/thc202) (Ping timeout: 268 seconds) |
2020-11-02 23:31:06 +0100 | <jackdk> | PerseusPlease: this one? https://hackage.haskell.org/package/binary-0.10.0.0/docs/Data-Binary-Get.html |
2020-11-02 23:31:58 +0100 | <PerseusPlease> | yep. but could just as well apply as a question to any of the modules I've included so far, I've been able to guess on the others but they often don't make sense |
2020-11-02 23:34:27 +0100 | <jackdk> | The package name is `binary`. If you click "Contents" in the top-right, it takes you to the top-level page for that package. The name also appears in the top-left of a module's documentation (`binary-0.10.0.0: Binary serialization for Haskell values using lazy ByteStrings`) and in the URL on hackage haddocks |
2020-11-02 23:34:59 +0100 | <PerseusPlease> | thank you! |
2020-11-02 23:35:10 +0100 | <PerseusPlease> | that will make life much easier. |
2020-11-02 23:35:52 +0100 | <jackdk> | welcome |
2020-11-02 23:37:06 +0100 | dustypacer | (~pi@137-025-112-171.res.spectrum.com) |
2020-11-02 23:38:20 +0100 | <monochrom> | The URL already contains the package name. |
2020-11-02 23:38:48 +0100 | Varis | (~Tadas@unaffiliated/varis) (Remote host closed the connection) |
2020-11-02 23:39:10 +0100 | vacm | (~vacwm@70.23.92.191) |
2020-11-02 23:39:25 +0100 | kritzefitz | (~kritzefit@212.86.56.80) (Remote host closed the connection) |
2020-11-02 23:40:47 +0100 | hekkaidekapus{ | (~tchouri@gateway/tor-sasl/hekkaidekapus) |
2020-11-02 23:42:02 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) |
2020-11-02 23:42:59 +0100 | __monty__ | (~toonn@unaffiliated/toonn) (Quit: leaving) |
2020-11-02 23:43:03 +0100 | hekkaidekapus_ | (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds) |
2020-11-02 23:43:48 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2020-11-02 23:44:38 +0100 | son0p | (~son0p@181.136.122.143) (Quit: leaving) |
2020-11-02 23:45:59 +0100 | refried_ | (~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
2020-11-02 23:47:00 +0100 | ensyde | (~ensyde@99-185-235-117.lightspeed.chrlnc.sbcglobal.net) (Ping timeout: 256 seconds) |
2020-11-02 23:47:27 +0100 | alx741 | (~alx741@186.178.110.193) |
2020-11-02 23:47:59 +0100 | ahmr88 | (~ahmr88@cpc85006-haye22-2-0-cust131.17-4.cable.virginm.net) |
2020-11-02 23:48:34 +0100 | refried_ | (~textual@pool-108-20-26-90.bstnma.fios.verizon.net) |
2020-11-02 23:49:08 +0100 | <dibblego> | foldr takes 1 parameter |
2020-11-02 23:50:20 +0100 | <PerseusPlease> | monochrom, ah yes so it does, now that I know what I'm looking for. |
2020-11-02 23:50:27 +0100 | mokulus | (~mat@176.111.230.96) (Ping timeout: 268 seconds) |
2020-11-02 23:52:07 +0100 | berberman | (~berberman@unaffiliated/berberman) |
2020-11-02 23:52:13 +0100 | <koz_> | Is there a way to get all transitive deps of a Hackage package? |
2020-11-02 23:52:57 +0100 | <N3RGY> | koz_: maybe cabal-dependency-licenses ? |
2020-11-02 23:53:02 +0100 | N3RGY | (~N3RGY@65.141.87.122) () |
2020-11-02 23:53:12 +0100 | <monochrom> | Yikes haha |
2020-11-02 23:53:53 +0100 | <monochrom> | But I use "cabal freeze" (but I have to first write a foo.cabal that has a build-depends line for the starting point) |
2020-11-02 23:54:43 +0100 | <monochrom> | So yeah, basically hacks and hammers that solve a much bigger problem and get you the transitive closure as a side effect. |
2020-11-02 23:54:54 +0100 | <koz_> | OK, a different question: I have a .prof that says a particular function is eating a lot of time. However, I assume it's being called _by_ something. Is there an easy way to tell what's calling said function? I can't quite make sense of the .prof layout. |
2020-11-02 23:56:00 +0100 | berberman_ | (~berberman@unaffiliated/berberman) (Ping timeout: 268 seconds) |
2020-11-02 23:57:59 +0100 | Varis | (~Tadas@unaffiliated/varis) |
2020-11-02 23:58:12 +0100 | refried_ | (~textual@pool-108-20-26-90.bstnma.fios.verizon.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |