Logs on 2021-04-21 (freenode/#haskell)
| 00:00:53 | × | m0rphism quits (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 260 seconds) |
| 00:01:16 | × | nineonine quits (~nineonine@50.216.62.2) (Ping timeout: 252 seconds) |
| 00:02:12 | × | Codaraxis_ quits (~Codaraxis@ip68-5-90-227.oc.oc.cox.net) (Ping timeout: 240 seconds) |
| 00:02:15 | × | ph88 quits (~ph88@2a02:8109:9e00:7e5c:d5ef:86b3:afc4:9258) (Ping timeout: 260 seconds) |
| 00:05:04 | × | Deide quits (~Deide@217.155.19.23) (Quit: Seeee yaaaa) |
| 00:05:12 | × | geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 240 seconds) |
| 00:07:08 | × | gitgood quits (~gitgood@80-44-9-246.dynamic.dsl.as9105.com) (Ping timeout: 246 seconds) |
| 00:07:47 | × | Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.) |
| 00:07:55 | × | jesystani quits (~thorn@2404:4404:17f1:4900:1be9:7d25:ab7d:6509) (Ping timeout: 250 seconds) |
| 00:08:54 | → | gzj joins (~gzj@unaffiliated/gzj) |
| 00:08:55 | → | GZJ0X_ joins (~gzj@unaffiliated/gzj) |
| 00:08:55 | × | GZJ0X_ quits (~gzj@unaffiliated/gzj) (Remote host closed the connection) |
| 00:09:00 | → | jesystani joins (~thorn@2404:4404:17f1:4900:8932:e59c:bc73:f200) |
| 00:09:15 | × | hendursa1 quits (~weechat@gateway/tor-sasl/hendursaga) (Quit: hendursa1) |
| 00:10:24 | → | Codaraxis_ joins (Codaraxis@gateway/vpn/mullvad/codaraxis) |
| 00:10:37 | → | hendursaga joins (~weechat@gateway/tor-sasl/hendursaga) |
| 00:12:23 | × | Tario quits (~Tario@201.192.165.173) (Ping timeout: 246 seconds) |
| 00:13:38 | → | Tario joins (~Tario@200.119.185.128) |
| 00:13:46 | × | Codaraxis__ quits (~Codaraxis@141.98.255.149) (Ping timeout: 240 seconds) |
| 00:13:55 | <Axman6> | newhoggy: I was talking to jackdk yesterday about just that - he had proposed making a hackage update to relax them |
| 00:14:11 | <newhoggy> | Thanks! |
| 00:19:52 | × | DavidEichmann quits (~david@147.136.46.217.dyn.plus.net) (Ping timeout: 240 seconds) |
| 00:20:46 | × | star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 245 seconds) |
| 00:21:46 | × | ludi49 quits (~hryhorij@156.17.231.95) (Ping timeout: 252 seconds) |
| 00:24:01 | → | xsperry joins (~as@unaffiliated/xsperry) |
| 00:25:34 | → | aVikingTrex joins (2be74510@43.231.69.16) |
| 00:26:00 | → | Guest78317 joins (~laudiacay@67.176.215.84) |
| 00:26:06 | × | gzj quits (~gzj@unaffiliated/gzj) (Remote host closed the connection) |
| 00:26:25 | → | gzj joins (~gzj@unaffiliated/gzj) |
| 00:30:11 | × | myShoggoth quits (~myShoggot@75.164.11.109) (Ping timeout: 240 seconds) |
| 00:30:13 | × | Tario quits (~Tario@200.119.185.128) (Read error: Connection reset by peer) |
| 00:30:21 | × | Guest78317 quits (~laudiacay@67.176.215.84) (Ping timeout: 245 seconds) |
| 00:30:23 | → | Tario joins (~Tario@201.192.165.173) |
| 00:30:28 | × | Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
| 00:30:41 | → | Tario joins (~Tario@201.192.165.173) |
| 00:31:58 | → | star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) |
| 00:31:58 | → | Jd007 joins (~Jd007@162.156.11.151) |
| 00:32:37 | × | nineonin_ quits (~nineonine@50.216.62.2) (Ping timeout: 252 seconds) |
| 00:41:35 | <aVikingTrex> | Hi everyone, I am a couple months into learning haskell. I have read "Get Programming With Haskell", currently reading "Real world haskell" (updated version on github) and have started reading Bartosz's "Category Theory for Programmers". I am looking to progress in haskell with the goal of developing in haskell professionally. What other books |
| 00:41:35 | <aVikingTrex> | should I read or tips you all have for reaching a higher level of ability with the language? |
| 00:43:19 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 00:43:19 | <aVikingTrex> | My current professional languages are on dotnet - C# and F# |
| 00:44:18 | <c_wraith> | I think the best thing you can do at the intermediate level is write Haskell programs and use libraries. That latter part is important for learning the sorts of things people actually use |
| 00:46:03 | <wroathe> | I just keep an audio recording of SPJ playing 24/7 in my apartment as white noise in the background. |
| 00:47:04 | <DigitalKiwi> | c_wraith: i'm not sure how using things people actually use helps with learning haskell ;p |
| 00:47:44 | → | loller_ joins (uid358106@gateway/web/irccloud.com/x-knsjtabxhwvomwzb) |
| 00:48:52 | × | sm2n quits (~sm2n@bras-base-hmtnon143hw-grc-13-70-54-76-62.dsl.bell.ca) (Quit: Leaving) |
| 00:50:21 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 245 seconds) |
| 00:50:35 | → | sm2n joins (~sm2n@bras-base-hmtnon143hw-grc-13-70-54-76-62.dsl.bell.ca) |
| 00:51:33 | × | s00pcan quits (~chris@075-133-056-178.res.spectrum.com) (Ping timeout: 265 seconds) |
| 00:52:17 | → | ddellaco_ joins (~ddellacos@ool-44c73afa.dyn.optonline.net) |
| 00:52:24 | → | Guest78317 joins (~laudiacay@67.176.215.84) |
| 00:53:06 | → | s00pcan joins (~chris@107.181.165.217) |
| 00:53:39 | <Axman6> | wroathe: that sounds very soothing |
| 00:58:07 | <jackdk> | newhoggy: file a bug in the trustees repo requesting a bound raise? If you can do a PR with the bound relaxations that would be helpful too. https://github.com/bgamari/monoidal-containers/issues/77 also |
| 00:58:17 | × | ddellaco_ quits (~ddellacos@ool-44c73afa.dyn.optonline.net) (Ping timeout: 260 seconds) |
| 00:58:23 | × | philderbeast quits (~textual@bras-base-vldvpq5901w-grc-06-184-144-244-252.dsl.bell.ca) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 00:58:56 | <bgamari> | newhoggy, done |
| 00:59:11 | × | s00pcan quits (~chris@107.181.165.217) (Ping timeout: 252 seconds) |
| 00:59:22 | <newhoggy> | Thanks! <3 |
| 00:59:34 | <Axman6> | bgamari: <3 (ping jackdk) |
| 00:59:42 | × | geekosaur quits (930099da@rrcs-147-0-153-218.central.biz.rr.com) (Ping timeout: 240 seconds) |
| 01:00:03 | <bgamari> | yushyin, I don't think there is a Rust IRC channel at this point |
| 01:00:15 | → | s00pcan joins (~chris@075-133-056-178.res.spectrum.com) |
| 01:00:23 | <bgamari> | yushyin, but why learn Rust when you can rather master the beauty of Haskell? |
| 01:00:48 | <Axman6> | Good luck to them when the apocolypse hits! |
| 01:01:03 | <bgamari> | whoops |
| 01:01:10 | <bgamari> | rather, ortz |
| 01:01:13 | <bgamari> | who is now gone |
| 01:01:14 | <bgamari> | oh well |
| 01:01:48 | <wroathe> | Axman6: Yeah, but I still haven't learned anything. I'm starting to question my methods. |
| 01:02:33 | × | Jd007 quits (~Jd007@162.156.11.151) (Quit: Jd007) |
| 01:02:40 | × | geiger_ quits (~geiger@90.212.77.86) (Ping timeout: 265 seconds) |
| 01:03:00 | <Axman6> | wroathe: have you tried changing your editor font to Comic Sans? |
| 01:03:03 | <jackdk> | bgamari: thanks, can you look at issue 77 also? (aeson upper bound) |
| 01:03:48 | <bgamari> | jackdk, I'm afraid I'm not a maintainer of aeson |
| 01:03:55 | <bgamari> | ahh |
| 01:03:58 | <bgamari> | never mind, misread |
| 01:03:59 | <bgamari> | sure |
| 01:04:04 | <wroathe> | Axman6: No, but that's a really solid idea. I'll give it a shot. |
| 01:04:46 | <Axman6> | And you're, of course, wearing a knitted woolen jumper which would normally only be appropriate around chrristmas, right? |
| 01:05:02 | <Axman6> | This is the only path to true HAskell mastery |
| 01:06:08 | <bgamari> | jackdk, done |
| 01:06:20 | <jackdk> | bgamari: <3 (ping Axman6) |
| 01:06:30 | <Axman6> | :tada: |
| 01:07:39 | <DigitalKiwi> | nobody going to suggest ATS? :( |
| 01:08:21 | <wroathe> | Axman6: So far so good: https://www.dropbox.com/s/glmuva79hdcf8zq/Screen%20Shot%202021-04-20%20at%208.07.53%20PM.png?dl=0 |
| 01:08:30 | <wroathe> | Axman6: I can feel the mastery of all things starting to build |
| 01:08:44 | <Axman6> | This is the way |
| 01:09:08 | <Axman6> | apart from... that is SQL and not Haskell, that might also be your problem |
| 01:09:31 | <wroathe> | Oh, I was under the impression that Comic Sans would lead to mastery in all things |
| 01:13:44 | × | Nahra quits (~user@unaffiliated/nahra) (Remote host closed the connection) |
| 01:13:58 | <DigitalKiwi> | i'm sick of comic sans i want tragic sans |
| 01:14:09 | <jackdk> | DigitalKiwi: look up tom7's comic sands |
| 01:14:34 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 01:15:05 | <DigitalKiwi> | is it satire |
| 01:16:46 | × | Guest78317 quits (~laudiacay@67.176.215.84) (Ping timeout: 252 seconds) |
| 01:17:23 | × | aVikingTrex quits (2be74510@43.231.69.16) (Quit: Connection closed) |
| 01:18:11 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds) |
| 01:19:28 | <jackdk> | DigitalKiwi: it's a tom7 project. |
| 01:20:37 | × | nicholasbulka quits (~nicholasb@2601:900:4301:da0:c46c:29eb:6d58:88ee) (Remote host closed the connection) |
| 01:20:59 | × | tomboy64 quits (~tomboy64@unaffiliated/tomboy64) (Ping timeout: 246 seconds) |
| 01:21:05 | <DigitalKiwi> | http://mp3.tom7.org/t7es/ |
| 01:21:20 | <DigitalKiwi> | i'm not sure this is what you want me to find but this is what i find |
| 01:21:28 | → | aVikingTrex joins (~aVikingTr@2001:8003:340d:d00:b2de:b98:7a93:b0ea) |
| 01:21:38 | → | nicholasbulka joins (~nicholasb@c-73-21-82-200.hsd1.ga.comcast.net) |
| 01:23:58 | → | ddellacosta joins (~ddellacos@ool-44c73afa.dyn.optonline.net) |
| 01:24:23 | → | drbean_ joins (~drbean@TC210-63-209-51.static.apol.com.tw) |
| 01:26:28 | → | gnumonic joins (~gnumonic@c-73-170-91-210.hsd1.ca.comcast.net) |
| 01:26:37 | × | nicholasbulka quits (~nicholasb@c-73-21-82-200.hsd1.ga.comcast.net) (Ping timeout: 268 seconds) |
| 01:27:01 | × | jesystani quits (~thorn@2404:4404:17f1:4900:8932:e59c:bc73:f200) (Ping timeout: 245 seconds) |
| 01:27:20 | → | trucker joins (~trucklife@5.122.26.32) |
| 01:27:56 | <jackdk> | DigitalKiwi: http://tom7.org/lowercase/ |
| 01:28:07 | × | xff0x quits (~xff0x@2001:1a81:5214:2600:51f9:992c:5a15:4907) (Ping timeout: 260 seconds) |
| 01:28:20 | → | jesystani joins (~thorn@2404:4404:17f1:4900:6cdb:4797:2af1:7f65) |
| 01:28:30 | <DigitalKiwi> | oh i saw that url in the searchs but didn't visit it yet |
| 01:28:55 | ← | trucker parts (~trucklife@5.122.26.32) ("Leaving") |
| 01:29:25 | <DigitalKiwi> | thankz |
| 01:29:41 | → | xff0x joins (~xff0x@2001:1a81:5253:e800:1dc:184f:3c23:9adc) |
| 01:29:49 | × | ddellacosta quits (~ddellacos@ool-44c73afa.dyn.optonline.net) (Ping timeout: 252 seconds) |
| 01:34:33 | <DigitalKiwi> | omg why is this calling me out like this "why do easy things by hand ...when you can spend weeks (automatic solution that doesn't work that well)" |
| 01:38:36 | × | dpl_ quits (~dpl@77-121-78-163.chn.volia.net) (Ping timeout: 260 seconds) |
| 01:38:50 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:2926:4844:fa1f:b849) |
| 01:42:45 | → | nineonin_ joins (~nineonine@50.216.62.2) |
| 01:43:07 | → | olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber) |
| 01:43:15 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:2926:4844:fa1f:b849) (Ping timeout: 250 seconds) |
| 01:49:06 | × | gzj quits (~gzj@unaffiliated/gzj) (Remote host closed the connection) |
| 01:49:25 | → | gzj joins (~gzj@unaffiliated/gzj) |
| 01:57:23 | → | falafel_ joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
| 01:57:39 | × | pfurla_ quits (~pfurla@ool-182ed2e2.dyn.optonline.net) (Quit: Textual IRC Client: www.textualapp.com) |
| 02:00:00 | → | Alleria joins (~textual@2603-7000-3040-0000-e52b-abc5-9db9-302a.res6.spectrum.com) |
| 02:00:23 | Alleria | is now known as Guest15679 |
| 02:01:35 | × | olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 246 seconds) |
| 02:02:07 | × | urodna_ quits (~urodna@unaffiliated/urodna) (Quit: urodna_) |
| 02:02:16 | × | Sgeo quits (~Sgeo@ool-18b98aa4.dyn.optonline.net) (Ping timeout: 252 seconds) |
| 02:03:43 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 02:04:29 | × | Guest15679 quits (~textual@2603-7000-3040-0000-e52b-abc5-9db9-302a.res6.spectrum.com) (Ping timeout: 250 seconds) |
| 02:05:27 | → | Sgeo joins (~Sgeo@ool-18b98aa4.dyn.optonline.net) |
| 02:10:11 | × | Rudd0 quits (~Rudd0@185.189.115.108) (Ping timeout: 240 seconds) |
| 02:10:24 | → | pfurla joins (~pfurla@ool-182ed2e2.dyn.optonline.net) |
| 02:11:25 | × | jesystani quits (~thorn@2404:4404:17f1:4900:6cdb:4797:2af1:7f65) (Ping timeout: 250 seconds) |
| 02:12:37 | → | jesystani joins (~thorn@2404:4404:17f1:4900:8e1:ccf6:9706:cd19) |
| 02:18:17 | × | Sgeo quits (~Sgeo@ool-18b98aa4.dyn.optonline.net) (Quit: Leaving) |
| 02:20:50 | → | _4n0nymou2_ joins (4642bb68@unaffiliated/d4v1d) |
| 02:21:07 | × | cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving) |
| 02:21:14 | <glguy> | hi _4n0nymou2_ |
| 02:21:22 | <_4n0nymou2_> | Hello |
| 02:21:30 | <_4n0nymou2_> | Just came from GitHub |
| 02:21:49 | <glguy> | Yup. Linker errors are a normal part of the Arch Linux experience. I know people have guided others through it here |
| 02:22:42 | <_4n0nymou2_> | I am absolutely sure I installed `cabal` from `ghcup` instead of arch linux repository |
| 02:22:58 | <glguy> | yeah, I believe you |
| 02:22:59 | → | berberman_ joins (~berberman@unaffiliated/berberman) |
| 02:23:48 | <glguy> | Do you have a ~/.cabal/config ? |
| 02:24:07 | × | berberman quits (~berberman@unaffiliated/berberman) (Ping timeout: 260 seconds) |
| 02:24:20 | <glguy> | You can see how that diverges from the default with: cabal user-config diff |
| 02:24:49 | × | gzj quits (~gzj@unaffiliated/gzj) (Ping timeout: 252 seconds) |
| 02:25:30 | <_4n0nymou2_> | Oh! I think I found the culprit: |
| 02:25:31 | <_4n0nymou2_> | + executable-dynamic: True |
| 02:25:31 | <_4n0nymou2_> | + library-vanilla: True |
| 02:25:32 | <_4n0nymou2_> | - remote-build-reporting: none |
| 02:25:32 | <_4n0nymou2_> | + remote-build-reporting: anonymous |
| 02:25:33 | <_4n0nymou2_> | + shared: True |
| 02:25:33 | <_4n0nymou2_> | + verbose: 1 |
| 02:25:34 | <_4n0nymou2_> | Arch wiki fooled me |
| 02:27:30 | → | nicholasbulka joins (~nicholasb@2601:900:4301:da0:c46c:29eb:6d58:88ee) |
| 02:27:34 | × | falafel_ quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 252 seconds) |
| 02:28:14 | <_4n0nymou2_> | They tell me to enable 'dynamic linking' , which, unfortunately does more harm than good |
| 02:28:57 | <glguy> | I think part of making Haskell work on Arch is not only ignoring their packages but also their wiki |
| 02:29:02 | → | Sgeo joins (~Sgeo@ool-18b98aa4.dyn.optonline.net) |
| 02:29:08 | <glguy> | dunno, it's the main OS people have trouble with |
| 02:31:02 | × | Sgeo quits (~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer) |
| 02:31:11 | <_4n0nymou2_> | Now I reset the config to default by deleting it and rerun `cabal update` hope this time it will work :-) |
| 02:31:36 | × | nicholasbulka quits (~nicholasb@2601:900:4301:da0:c46c:29eb:6d58:88ee) (Ping timeout: 245 seconds) |
| 02:32:36 | → | Sgeo joins (~Sgeo@ool-18b98aa4.dyn.optonline.net) |
| 02:34:36 | → | frozenErebus joins (~frozenEre@37.231.244.249) |
| 02:37:51 | → | wavemode joins (~wavemode@097-070-075-143.res.spectrum.com) |
| 02:39:41 | × | theDon quits (~td@muedsl-82-207-238-085.citykom.de) (Ping timeout: 240 seconds) |
| 02:40:46 | <_4n0nymou2_> | glguy: Yeah! It works now. |
| 02:41:12 | <glguy> | Oh, cool |
| 02:41:19 | × | drbean_ quits (~drbean@TC210-63-209-51.static.apol.com.tw) (Ping timeout: 252 seconds) |
| 02:41:30 | → | theDon joins (~td@94.134.91.185) |
| 02:41:57 | <_4n0nymou2_> | Even Arch Wiki is wrong sometimes :( |
| 02:42:53 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds) |
| 02:44:17 | <_4n0nymou2_> | glguy: Maybe it's time to add in the GitHub readme: **DO NOT USE ARCH PACKAGES** and **DO NOT USE DYNAMIC LINKING** |
| 02:44:38 | → | FinnElija joins (~finn_elij@gateway/tor-sasl/finnelija/x-67402716) |
| 02:44:38 | finn_elija | is now known as Guest74489 |
| 02:44:38 | FinnElija | is now known as finn_elija |
| 02:44:40 | <glguy> | That would go in the Arch Linux wiki |
| 02:44:47 | <justsomeguy> | In general OS communities have a hard time following the best practices of programming languages build systems and packaging schemes. They move at different cadences. |
| 02:45:34 | <glguy> | glirc is find with dynamic linking if you set up your build environment correctly |
| 02:45:46 | <glguy> | trying to build a dynamic executable without building dynamic libraries first just isn't that |
| 02:47:05 | × | nineonin_ quits (~nineonine@50.216.62.2) (Remote host closed the connection) |
| 02:47:35 | → | nineonine joins (~nineonine@50.216.62.2) |
| 02:47:36 | <_4n0nymou2_> | Thanks, bye |
| 02:47:52 | × | _4n0nymou2_ quits (4642bb68@unaffiliated/d4v1d) (Quit: _4n0nymou2_) |
| 02:47:57 | × | Guest74489 quits (~finn_elij@gateway/tor-sasl/finnelija/x-67402716) (Ping timeout: 240 seconds) |
| 02:48:52 | × | tekacs quits (~tekacs@178.79.131.8) (Quit: Disappearing... *poof*) |
| 02:49:59 | × | siraben quits (sirabenmat@gateway/shell/matrix.org/x-lajcuenivninlvjc) (Ping timeout: 245 seconds) |
| 02:50:44 | → | siraben joins (sirabenmat@gateway/shell/matrix.org/x-cfikpjmyftuncdpf) |
| 02:51:06 | × | machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 240 seconds) |
| 02:52:51 | → | tekacs joins (tekacs@2a01:7e00::f03c:91ff:fe93:43aa) |
| 02:55:37 | × | aVikingTrex quits (~aVikingTr@2001:8003:340d:d00:b2de:b98:7a93:b0ea) (Ping timeout: 250 seconds) |
| 02:58:16 | × | davros_ quits (~davros@host86-185-126-190.range86-185.btcentralplus.com) (Remote host closed the connection) |
| 02:59:23 | <gnumonic> | There's no way to put a class constraint on the return type of a closed (non associated) type family, right? |
| 03:00:30 | → | olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber) |
| 03:03:28 | <glguy> | gnumonic, not that I'm aware of |
| 03:10:19 | → | Jd007 joins (~Jd007@162.156.11.151) |
| 03:10:45 | → | falafel_ joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
| 03:11:15 | × | jesystani quits (~thorn@2404:4404:17f1:4900:8e1:ccf6:9706:cd19) (Ping timeout: 260 seconds) |
| 03:12:06 | → | jesystani joins (~thorn@2404:4404:17f1:4900:8c4:9d6:6bf0:ca3a) |
| 03:12:50 | → | Guest78317 joins (~laudiacay@67.176.215.84) |
| 03:12:59 | × | fresheyeball quits (~isaac@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.9) |
| 03:13:20 | → | fresheyeball joins (~isaac@c-71-237-105-37.hsd1.co.comcast.net) |
| 03:13:58 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 03:14:24 | × | pfurla quits (~pfurla@ool-182ed2e2.dyn.optonline.net) (Quit: Textual IRC Client: www.textualapp.com) |
| 03:16:23 | × | ericsagnes quits (~ericsagne@2405:6580:0:5100:7cd:23d4:b32c:5140) (Ping timeout: 260 seconds) |
| 03:17:01 | × | Guest78317 quits (~laudiacay@67.176.215.84) (Ping timeout: 245 seconds) |
| 03:20:32 | → | pfurla joins (~pfurla@ool-182ed2e2.dyn.optonline.net) |
| 03:20:40 | × | pfurla quits (~pfurla@ool-182ed2e2.dyn.optonline.net) (Client Quit) |
| 03:20:53 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 03:23:15 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 03:23:56 | → | davros joins (~davros@host86-185-126-190.range86-185.btcentralplus.com) |
| 03:26:01 | → | ddellaco_ joins (~ddellacos@ool-44c73afa.dyn.optonline.net) |
| 03:26:12 | × | waleee-cl quits (uid373333@gateway/web/irccloud.com/x-duhphiqafdupvlzv) (Quit: Connection closed for inactivity) |
| 03:27:06 | × | minoru_shiraeesh quits (~shiraeesh@109.166.59.151) (Ping timeout: 260 seconds) |
| 03:27:36 | → | ericsagnes joins (~ericsagne@2405:6580:0:5100:ee94:8f2c:d91b:ec) |
| 03:28:06 | × | falafel_ quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 268 seconds) |
| 03:31:55 | × | ddellaco_ quits (~ddellacos@ool-44c73afa.dyn.optonline.net) (Ping timeout: 252 seconds) |
| 03:38:45 | → | Gurkenglas joins (~Gurkengla@unaffiliated/gurkenglas) |
| 03:40:36 | → | myShoggoth joins (~myShoggot@75.164.11.109) |
| 03:40:43 | × | mrchampion quits (~mrchampio@38.18.109.23) (Ping timeout: 265 seconds) |
| 03:42:49 | → | mrchampion joins (~mrchampio@38.18.109.23) |
| 03:47:51 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds) |
| 03:51:52 | × | olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 252 seconds) |
| 03:56:13 | × | Jd007 quits (~Jd007@162.156.11.151) (Quit: Jd007) |
| 03:57:08 | → | benkolera joins (uid285671@gateway/web/irccloud.com/x-wgysqrkvbdmzjzqk) |
| 04:00:25 | → | Alleria joins (~textual@2603-7000-3040-0000-e52b-abc5-9db9-302a.res6.spectrum.com) |
| 04:00:48 | Alleria | is now known as Guest59865 |
| 04:02:37 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: leaving) |
| 04:02:54 | → | triposorbust joins (~ahc2149@097-094-102-232.biz.spectrum.com) |
| 04:04:57 | × | Guest59865 quits (~textual@2603-7000-3040-0000-e52b-abc5-9db9-302a.res6.spectrum.com) (Ping timeout: 250 seconds) |
| 04:05:35 | ← | triposorbust parts (~ahc2149@097-094-102-232.biz.spectrum.com) () |
| 04:05:49 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 04:07:43 | × | jesystani quits (~thorn@2404:4404:17f1:4900:8c4:9d6:6bf0:ca3a) (Ping timeout: 260 seconds) |
| 04:08:27 | → | jesystani joins (~thorn@2404:4404:17f1:4900:321c:1a26:59b4:eb2d) |
| 04:11:55 | → | lazy_j joins (~lazy_J@193.27.12.44) |
| 04:13:53 | × | lazy_j quits (~lazy_J@193.27.12.44) (Client Quit) |
| 04:13:59 | → | guest421 joins (~user@49.5.6.87) |
| 04:14:31 | <guest421> | what is `traverse`? what does this mean "It's kind of like fmap, except that you can run effects inside the mapper function, which also changes the result type."? |
| 04:14:46 | → | lazy_j joins (~lazy_J@193.27.12.44) |
| 04:14:53 | → | vdukhovni joins (64022765@100.2.39.101) |
| 04:14:56 | × | nineonine quits (~nineonine@50.216.62.2) (Ping timeout: 245 seconds) |
| 04:16:43 | <Axman6> | :t traverse |
| 04:16:45 | <lambdabot> | (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b) |
| 04:16:57 | <Axman6> | % :traverse @Tree @IO |
| 04:16:58 | <yahb> | Axman6: unknown command ':traverse'; use :? for help. |
| 04:17:03 | <Axman6> | % :t traverse @Tree @IO |
| 04:17:03 | <yahb> | Axman6: (a -> IO b) -> Tree a -> IO (Tree b) |
| 04:18:28 | <guest421> | > traverse print [1,2,3] |
| 04:18:30 | <lambdabot> | <IO [()]> |
| 04:20:17 | → | Rudd0 joins (~Rudd0@185.189.115.108) |
| 04:23:41 | → | ania123 joins (5e89ad7c@94.137.173.124) |
| 04:24:24 | → | j_lazy joins (~lazy_J@64.44.80.252) |
| 04:25:58 | <guest421> | like sequenceA_ (fmap print [1,2,3])? |
| 04:26:04 | → | nineonine joins (~nineonine@50.216.62.2) |
| 04:26:14 | <guest421> | :t sequenceA_ |
| 04:26:16 | <lambdabot> | (Foldable t, Applicative f) => t (f a) -> f () |
| 04:26:26 | × | fresheyeball quits (~isaac@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.9) |
| 04:26:36 | × | lazy_j quits (~lazy_J@193.27.12.44) (Ping timeout: 245 seconds) |
| 04:26:39 | <guest421> | but this t is Foldable not Traversable |
| 04:28:02 | → | falafel_ joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
| 04:28:08 | × | ortz quits (~egigs@108-89-5-25.lightspeed.dybhfl.sbcglobal.net) (Quit: leaving) |
| 04:28:32 | × | horatiohb quits (~horatiohb@104.131.33.15) (Ping timeout: 240 seconds) |
| 04:28:46 | × | j_lazy quits (~lazy_J@64.44.80.252) (Ping timeout: 240 seconds) |
| 04:31:35 | → | aVikingTrex joins (~aVikingTr@2001:8003:340d:d00:b2de:b98:7a93:b0ea) |
| 04:32:49 | → | pfurla joins (~pfurla@ool-182ed2e2.dyn.optonline.net) |
| 04:33:03 | <guest421> | I forget how to put IO actions inside a list? |
| 04:33:07 | × | pfurla quits (~pfurla@ool-182ed2e2.dyn.optonline.net) (Client Quit) |
| 04:34:00 | × | jesystani quits (~thorn@2404:4404:17f1:4900:321c:1a26:59b4:eb2d) (Quit: WeeChat 3.1) |
| 04:34:49 | → | pfurla joins (~pfurla@ool-182ed2e2.dyn.optonline.net) |
| 04:36:04 | <glguy> | :t [ print "IO", print "actions" ] |
| 04:36:05 | <lambdabot> | [IO ()] |
| 04:36:16 | × | hypercube quits (hypercube@gateway/vpn/protonvpn/hypercube) (Ping timeout: 252 seconds) |
| 04:39:12 | × | RusAlex quits (~Chel@unaffiliated/rusalex) (Ping timeout: 265 seconds) |
| 04:40:41 | <Axman6> | g`so the mental model you should use for traverse is, if I have a function which can accept a's and produce f b's (let's say, fetchUrl :: Url -> IO ByteString), and we have some traversable structure of containing a's (let's say urlTree :: Tree Url), then you can use traverse fetchUrl urlTree to get back an IO (Tree ByteString) |
| 04:40:55 | → | u0_a203 joins (~u0_a203@93.119.221.33) |
| 04:41:50 | × | u0_a203 quits (~u0_a203@93.119.221.33) (Client Quit) |
| 04:42:37 | <Axman6> | guest421: ^ that was for you, but apparently I'm terrible at typing |
| 04:42:46 | × | MVQq quits (~anja@198.254.208.159) (Quit: q) |
| 04:43:24 | → | MarcelineVQ joins (~anja@198.254.208.159) |
| 04:43:35 | → | waleee-cl joins (uid373333@gateway/web/irccloud.com/x-bpfgsdmlrafbmgyu) |
| 04:43:55 | <guest421> | sequence $ fmap print [1,2,3] |
| 04:44:01 | <guest421> | mapM print [1,2,3] |
| 04:44:07 | <Axman6> | traverse f = sequence . fmap f |
| 04:44:18 | <Axman6> | mapM is also the same as traverse |
| 04:44:27 | <c_wraith> | Though really, you're probably better off with mapM_ or traverse_ |
| 04:44:34 | <guest421> | traverse print [1,2,3] |
| 04:45:07 | <guest421> | sequenceA_ (fmap print [1,2,3]) |
| 04:45:30 | <Axman6> | :t traverse_ |
| 04:45:32 | <lambdabot> | (Foldable t, Applicative f) => (a -> f b) -> t a -> f () |
| 04:46:46 | <gnumonic> | :t mapM |
| 04:46:47 | <lambdabot> | (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b) |
| 04:46:53 | <Axman6> | % sequenceA_ (fmap print [1,2,3]) |
| 04:46:53 | <yahb> | Axman6: 1; 2; 3 |
| 04:47:06 | <gnumonic> | huh i always thought mapM was specialized to lists |
| 04:47:07 | <Axman6> | % traverse_ print [1,2,3] |
| 04:47:07 | <yahb> | Axman6: 1; 2; 3 |
| 04:47:08 | <gnumonic> | oops |
| 04:47:46 | <Axman6> | it used to be, but these days mapM etc are basically just old names for other function |
| 04:47:49 | → | abhixec joins (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) |
| 04:48:28 | <lechner> | Hi, is there a consistent link to Haddock documentation on Hackage pages, please? https://hackage.haskell.org/package/zeromq4-haskell |
| 04:48:41 | <guest421> | those functions related to IO? |
| 04:48:42 | <Axman6> | consistent how? |
| 04:49:09 | <Axman6> | IO is an Applicative, so you can choose for the f to be IO |
| 04:49:20 | <Axman6> | (or m in the case of mapM etc) |
| 04:49:45 | <guest421> | fmap print [1,2,3] is not wrong, right? |
| 04:50:20 | <c_wraith> | it's not a type error. whether it's "wrong" or not depends on what you want to do. It won't create an IO action that prints each value. |
| 04:50:29 | <guest421> | but sequence or mapM or traverse will get the IO effects |
| 04:50:35 | <guest421> | which fmap print [1,2,3] won't |
| 04:50:46 | <c_wraith> | It will create a list of IO actions, rather than one IO action that prints everything in the list |
| 04:50:55 | <c_wraith> | sometimes you want a list of IO actions! |
| 04:51:33 | <Axman6> | :t fmap print |
| 04:51:35 | <lambdabot> | (Functor f, Show a) => f a -> f (IO ()) |
| 04:51:36 | <guest421> | fmap print [1,2,3] would create a list of IO actions |
| 04:51:44 | <Axman6> | % :t fmap @[] print |
| 04:51:44 | <yahb> | Axman6: Show a => [a] -> [IO ()] |
| 04:51:50 | <Axman6> | yes |
| 04:52:11 | <guest421> | and what traverse or sequence or mapM do? |
| 04:52:22 | <lechner> | Axman6: i only see links sometimes. is there any documentation for the module above? |
| 04:52:22 | <guest421> | why there're so many names... |
| 04:52:40 | <c_wraith> | there are so many names because of historical mistakes |
| 04:52:51 | × | carlomagno quits (~cararell@148.87.23.7) (Remote host closed the connection) |
| 04:53:08 | <Axman6> | lechner: probably because it failed to build when uploaded to hackage so the documentation was never generated |
| 04:53:20 | <lechner> | Axman6: thanks! |
| 04:53:34 | <c_wraith> | Haskell is a pretty old language, and people have been trying to improve it for a long time. But sometimes that means when a clear improvement is made, old names stick around to not break old code |
| 04:53:41 | <Axman6> | lechner: look at the "build log" link at the bottom right of the page |
| 04:54:07 | <lechner> | Axman6: now i see it. thanks! |
| 04:55:24 | <lechner> | Axman6: maybe hackage could build the docs first... https://hackage.haskell.org/package/zeromq4-haskell-0.8.0/reports/2 |
| 04:55:58 | <Axman6> | guest421: it's definitely more common to want to apply a function to every element of a list and then execute the resultin IO actions than it is to keep around a list of IO actions |
| 04:56:14 | <Axman6> | lechner: the docs building depend on the code being able to compile IIRC |
| 04:56:25 | → | malumore_ joins (~malumore@151.62.122.70) |
| 04:57:15 | <lechner> | Axman6: yeah it looks like a broader cabal v1 problem, too https://hackage.haskell.org/package/zeromq4-simple-0.0.0.2/reports/3 |
| 04:58:11 | × | jao quits (~jao@pdpc/supporter/professional/jao) (Ping timeout: 240 seconds) |
| 04:58:22 | <Axman6> | lechner: looks to me like the server hackage is running on doesn't have libzmq installed: (conflict: |
| 04:58:25 | <Axman6> | pkg-config package libzmq>=4.0 && <5.0, not found in the pkg-config database) |
| 04:58:49 | <Axman6> | which makes sense. Libraries which depend on external C libraries often fail to build on hackage |
| 04:59:26 | <lechner> | i see. that would explain why i could not find any ZeroMQ packages with documentation at all there |
| 04:59:38 | × | ania123 quits (5e89ad7c@94.137.173.124) (Quit: Connection closed) |
| 04:59:50 | → | Jd007 joins (~Jd007@162.156.11.151) |
| 05:05:44 | → | RusAlex joins (~Chel@unaffiliated/rusalex) |
| 05:09:02 | → | _ht joins (~quassel@82-169-194-8.biz.kpn.net) |
| 05:16:19 | → | Guest78317 joins (~laudiacay@67.176.215.84) |
| 05:19:56 | × | Tario quits (~Tario@201.192.165.173) (Ping timeout: 245 seconds) |
| 05:22:40 | × | maroloccio quits (~marolocci@pousada3ja.mma.com.br) (Quit: WeeChat 2.3) |
| 05:25:03 | → | HannaM joins (~quassel@p54849510.dip0.t-ipconnect.de) |
| 05:25:09 | → | rdivyanshu joins (uid322626@gateway/web/irccloud.com/x-fcexcnqymecxutqt) |
| 05:25:13 | × | malumore_ quits (~malumore@151.62.122.70) (Remote host closed the connection) |
| 05:25:31 | → | malumore_ joins (~malumore@151.62.122.70) |
| 05:26:27 | → | hypercube joins (~hypercube@2603-6011-f901-9e5b-0000-0000-0000-08cf.res6.spectrum.com) |
| 05:28:06 | → | ddellacosta joins (~ddellacos@ool-44c73afa.dyn.optonline.net) |
| 05:32:51 | × | ddellacosta quits (~ddellacos@ool-44c73afa.dyn.optonline.net) (Ping timeout: 245 seconds) |
| 05:36:29 | × | falafel_ quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 246 seconds) |
| 05:37:36 | × | myShoggoth quits (~myShoggot@75.164.11.109) (Ping timeout: 268 seconds) |
| 05:40:37 | × | Guest78317 quits (~laudiacay@67.176.215.84) (Ping timeout: 252 seconds) |
| 05:41:26 | → | bitmagie joins (~Thunderbi@200116b8063572001499edd4f9d505b9.dip.versatel-1u1.de) |
| 05:44:08 | × | Jd007 quits (~Jd007@162.156.11.151) (Quit: Jd007) |
| 05:44:35 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 05:47:00 | <wroathe> | Is there a way to specify a monoid constraint for a * -> * type variable in a function type? |
| 05:47:27 | <c_wraith> | are you looking for QuantifiedConstraints? |
| 05:47:37 | <wroathe> | c_wraith: Probably. |
| 05:47:38 | <c_wraith> | For what it's worth, I hear it's a bit buggy |
| 05:48:54 | <wroathe> | Specifically I've got (IsString a, Monoid t) => t (Attribute a) -> Html t a, and it's telling me Expected kind ‘* -> *’, but ‘t’ has kind ‘*’ |
| 05:49:19 | <wroathe> | So the Monoid constraint seemingly can only be applied to type variables of kind * by default |
| 05:50:39 | → | gaiger joins (~geiger@0543f40b.skybroadband.com) |
| 05:53:29 | → | sord937 joins (~sord937@gateway/tor-sasl/sord937) |
| 05:54:17 | → | edwardk_ joins (sid47016@haskell/developer/edwardk) |
| 05:54:54 | <gnumonic> | f :: forall a b (m :: Type -> Type) y. (b ~ Maybe a, Monoid (m b), Monoid (m a)) => m (Maybe a) -> Identity (m a) seems to typecheck but i dunno if that's what you want? |
| 05:54:56 | → | Codaraxis__ joins (Codaraxis@gateway/vpn/mullvad/codaraxis) |
| 05:55:13 | <gnumonic> | i have basically every type voodoo compiler extension on in that file tho |
| 05:55:29 | <wroathe> | Ha, there HAS to be a simpler way than that :P |
| 05:55:44 | × | edwardk quits (sid47016@haskell/developer/edwardk) (Ping timeout: 245 seconds) |
| 05:55:44 | × | stylewarning quits (stylewarni@gateway/web/irccloud.com/x-llgsamgivilxjltg) (Ping timeout: 245 seconds) |
| 05:55:44 | × | Codaraxis_ quits (Codaraxis@gateway/vpn/mullvad/codaraxis) (Remote host closed the connection) |
| 05:55:44 | edwardk_ | is now known as edwardk |
| 05:55:44 | × | tapas quits (sid467876@gateway/web/irccloud.com/x-dpxzueexrqylgrju) (Ping timeout: 245 seconds) |
| 05:55:45 | × | parisienne quits (sid383587@gateway/web/irccloud.com/x-aiygzsqhowxpopox) (Ping timeout: 245 seconds) |
| 05:55:45 | → | stylewarning joins (stylewarni@gateway/web/irccloud.com/session) |
| 05:55:45 | × | stylewarning quits (stylewarni@gateway/web/irccloud.com/session) (Changing host) |
| 05:55:45 | → | stylewarning joins (stylewarni@gateway/web/irccloud.com/x-gsvymsjokvoizmft) |
| 05:55:52 | × | ephemera_ quits (~E@122.34.1.187) (Ping timeout: 245 seconds) |
| 05:55:59 | → | parisienne joins (sid383587@gateway/web/irccloud.com/x-vydbxjnkijiazrlk) |
| 05:55:59 | → | chele joins (~chele@5.53.222.202) |
| 05:56:05 | → | ephemera_ joins (~E@122.34.1.187) |
| 05:56:21 | → | ashesham` joins (~user@d8D87D1B0.access.telenet.be) |
| 05:56:25 | → | tapas joins (sid467876@gateway/web/irccloud.com/x-bsjadohtpruxmywx) |
| 05:56:36 | × | sclv quits (sid39734@haskell/developer/sclv) (Ping timeout: 245 seconds) |
| 05:56:37 | × | cyberlard quits (~cyberlard@unaffiliated/jludwig) (Ping timeout: 245 seconds) |
| 05:56:51 | <gnumonic> | i've been doing dependently typed experiments for a few days so that actually does strike me as simple-ish :p |
| 05:56:57 | → | cyberlard joins (~cyberlard@unaffiliated/jludwig) |
| 05:57:23 | → | exarkun_ joins (~exarkun@14.79.69.34.bc.googleusercontent.com) |
| 05:57:49 | × | exarkun quits (~exarkun@14.79.69.34.bc.googleusercontent.com) (Ping timeout: 245 seconds) |
| 05:57:49 | × | nh2 quits (sid309956@gateway/web/irccloud.com/x-vqylohvjgsiigvkd) (Ping timeout: 245 seconds) |
| 05:57:49 | × | alanz quits (sid110616@gateway/web/irccloud.com/x-ephuaztzuzimomxa) (Ping timeout: 245 seconds) |
| 05:57:51 | × | jackhill quits (~jackhill@marsh.hcoop.net) (Ping timeout: 245 seconds) |
| 05:58:01 | → | sclv joins (sid39734@haskell/developer/sclv) |
| 05:58:07 | → | jackhill joins (~jackhill@marsh.hcoop.net) |
| 05:58:29 | × | loller_ quits (uid358106@gateway/web/irccloud.com/x-knsjtabxhwvomwzb) (Ping timeout: 245 seconds) |
| 05:58:29 | × | pepeiborra quits (sid443799@gateway/web/irccloud.com/x-nirrncfqraegkpgk) (Ping timeout: 245 seconds) |
| 05:58:42 | × | aizen_s quits (sid462968@gateway/web/irccloud.com/x-gzlgfjzfpthijryy) (Ping timeout: 245 seconds) |
| 05:58:42 | × | nshepperd quits (nshepperd@2600:3c03::f03c:92ff:fe28:92c9) (Ping timeout: 245 seconds) |
| 05:58:42 | × | davean quits (~davean@davean.sciesnet.net) (Ping timeout: 245 seconds) |
| 05:58:58 | → | davean joins (~davean@davean.sciesnet.net) |
| 05:58:59 | → | nshepperd joins (nshepperd@2600:3c03::f03c:92ff:fe28:92c9) |
| 05:59:14 | → | nh2 joins (sid309956@gateway/web/irccloud.com/x-sfwmjcpeywrfgggs) |
| 05:59:31 | × | ptrcmd quits (~ptrcmd@unaffiliated/petercommand) (Ping timeout: 245 seconds) |
| 05:59:32 | → | alanz joins (sid110616@gateway/web/irccloud.com/x-qjhghsxjfupjbdeb) |
| 05:59:32 | → | loller_ joins (uid358106@gateway/web/irccloud.com/x-jiaqaybiuqrwtvzc) |
| 05:59:38 | → | ptrcmd joins (~ptrcmd@unaffiliated/petercommand) |
| 05:59:49 | → | pepeiborra joins (sid443799@gateway/web/irccloud.com/x-sswqhnrrevrotjio) |
| 05:59:50 | <wavemode> | afaik a type which is a Monoid would necessarily have kind *. That is why instances are declared like (for example) Monoid [a], not Monoid [] |
| 05:59:56 | × | stylewarning quits (stylewarni@gateway/web/irccloud.com/x-gsvymsjokvoizmft) (Ping timeout: 245 seconds) |
| 06:00:06 | → | Alleria joins (~textual@2603-7000-3040-0000-e52b-abc5-9db9-302a.res6.spectrum.com) |
| 06:00:29 | Alleria | is now known as Guest57813 |
| 06:00:43 | → | aizen_s joins (sid462968@gateway/web/irccloud.com/x-pjdnfdcsawunazxf) |
| 06:01:02 | → | stylewarning joins (stylewarni@gateway/web/irccloud.com/x-zhwbhuctetrnaybq) |
| 06:02:40 | <joel135> | A monoid of kind * -> * would be a monad :) |
| 06:02:56 | → | thc202 joins (~thc202@unaffiliated/thc202) |
| 06:03:50 | <wroathe> | joel135: So where's my Monad equivalent of mempty ;P |
| 06:04:22 | <joel135> | return |
| 06:04:31 | × | Guest57813 quits (~textual@2603-7000-3040-0000-e52b-abc5-9db9-302a.res6.spectrum.com) (Ping timeout: 245 seconds) |
| 06:04:38 | <wroathe> | joel135: That would require putting at least one thing in the container, would it not? |
| 06:05:11 | × | frozenErebus quits (~frozenEre@37.231.244.249) (Ping timeout: 240 seconds) |
| 06:05:14 | × | hexfive quits (~hexfive@50.35.83.177) (Quit: i must go. my people need me.) |
| 06:05:23 | → | danvet joins (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) |
| 06:05:34 | → | coot joins (~coot@37.30.50.130.nat.umts.dynamic.t-mobile.pl) |
| 06:05:40 | <gnumonic> | wonder if you could do something like this: class (KindOf b ~ Type, Monoid b) => ToMonoid (f :: Type -> b) where (...) |
| 06:05:42 | <wroathe> | % pure 3 :: [Int] |
| 06:05:42 | <yahb> | wroathe: [3] |
| 06:06:36 | <wroathe> | % mempty :: [Int] |
| 06:06:36 | <yahb> | wroathe: [] |
| 06:07:33 | <joel135> | :t mempty |
| 06:07:34 | <lambdabot> | Monoid a => a |
| 06:07:39 | <joel135> | :t return |
| 06:07:40 | <lambdabot> | Monad m => a -> m a |
| 06:07:57 | × | dave_uy quits (~david@108.61.193.26) (Quit: The Lounge - https://thelounge.chat) |
| 06:08:03 | <joel135> | Monad m => 1 -> m |
| 06:08:11 | <joel135> | Monad m => m |
| 06:09:03 | <wroathe> | joel135: I'm not following... Is there a function for this Monad m => m? |
| 06:09:35 | <joel135> | I'd perhaps say that return gives you an empty container of structure, which may in turn house more than zero data. |
| 06:09:55 | <joel135> | No, I'm just doing pseudo-haskell math. |
| 06:10:27 | <wroathe> | The use case is that I've got a datatype that's a tree-like structure where I want the user to be able to choose the type of the container that contains each nodes child nodes, and I'm defining a function where I want to initialize that field to an "empty" container |
| 06:11:05 | → | dave_uy joins (~david@108.61.193.26) |
| 06:11:21 | <joel135> | So you want forall a. Monoid (t a) ? |
| 06:11:35 | <wroathe> | Yeah, maybe that's it... |
| 06:12:44 | <wroathe> | joel135: I'm still not very familiar with explicit quantification, but I think I understand what you're suggesting there |
| 06:12:52 | <joel135> | Or maybe forall a. Monoid (t (Attribute a)). Or just Monoid (t (Attribute a)) without quantification. |
| 06:13:06 | → | wonko7 joins (~wonko7@62.115.229.50) |
| 06:13:06 | <joel135> | I don't know what haskell will accept. |
| 06:13:27 | <wroathe> | joel135: The a in this case doesn't really matter. It's just an empty container. |
| 06:13:42 | <wroathe> | But yeah, I'll see what GHC accepts |
| 06:13:45 | <wroathe> | joel135: Thank you for the ideas! |
| 06:13:52 | → | ReinH_ joins (sid179972@gateway/web/irccloud.com/x-yfquzpeultndckwv) |
| 06:14:04 | × | ReinH quits (sid179972@gateway/web/irccloud.com/x-nocjtzmybziqzfuj) (Ping timeout: 245 seconds) |
| 06:14:04 | ReinH_ | is now known as ReinH |
| 06:14:06 | × | pent quits (sid313808@gateway/web/irccloud.com/x-mamwukyavontcbfs) (Ping timeout: 245 seconds) |
| 06:14:06 | × | b20n quits (sid115913@gateway/web/irccloud.com/x-lrxmhixuzcmcfdhe) (Ping timeout: 245 seconds) |
| 06:14:56 | → | b20n joins (sid115913@gateway/web/irccloud.com/x-qwfuumnekwjdmynk) |
| 06:15:16 | → | pent joins (sid313808@gateway/web/irccloud.com/x-oyldewujgosrhjtp) |
| 06:15:34 | → | michalz joins (~user@185.246.204.47) |
| 06:15:49 | × | leothrix quits (~leothrix@elastic/staff/leothrix) (Ping timeout: 252 seconds) |
| 06:16:14 | <wroathe> | ...and that requires QuantifiedConstraints |
| 06:16:20 | <wroathe> | So c_wraith was right all along. |
| 06:16:24 | <wroathe> | :) |
| 06:16:50 | × | wpcarro quits (sid397589@gateway/web/irccloud.com/x-xnngigwekxregdfs) (Ping timeout: 245 seconds) |
| 06:16:50 | × | PotatoGim quits (sid99505@gateway/web/irccloud.com/x-tcgdsfioetpoitie) (Ping timeout: 245 seconds) |
| 06:16:51 | → | wpcarro_ joins (sid397589@gateway/web/irccloud.com/x-sldapopyxsudveqd) |
| 06:17:35 | × | stylewarning quits (stylewarni@gateway/web/irccloud.com/x-zhwbhuctetrnaybq) (Ping timeout: 245 seconds) |
| 06:18:08 | <wroathe> | joel135: c_wraith: That worked like a charm. Thanks! |
| 06:18:39 | → | stylewarning joins (stylewarni@gateway/web/irccloud.com/x-hfenrszoagpafasl) |
| 06:18:51 | → | PotatoGim joins (sid99505@gateway/web/irccloud.com/x-qrihjhvmnnmtnggm) |
| 06:18:55 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds) |
| 06:19:07 | × | caasih quits (sid13241@gateway/web/irccloud.com/x-uqzvpjpcsslwgwfl) (Ping timeout: 245 seconds) |
| 06:19:07 | × | alunduil quits (alunduil@gateway/web/irccloud.com/x-dylmpfrvghvfrpjf) (Ping timeout: 245 seconds) |
| 06:19:07 | × | glamas quits (~glamas@107.182.17.237) (Ping timeout: 245 seconds) |
| 06:20:15 | × | Logio quits (em@kapsi.fi) (Ping timeout: 245 seconds) |
| 06:20:15 | × | b20n quits (sid115913@gateway/web/irccloud.com/x-qwfuumnekwjdmynk) (Ping timeout: 245 seconds) |
| 06:20:16 | → | glamas joins (~glamas@107.182.17.237) |
| 06:20:28 | → | Logio joins (em@kapsi.fi) |
| 06:20:30 | × | aizen_s quits (sid462968@gateway/web/irccloud.com/x-pjdnfdcsawunazxf) (Ping timeout: 245 seconds) |
| 06:20:30 | × | miklcct quits (quasselcor@2001:19f0:7001:5ad:5400:2ff:feb6:50d7) (Ping timeout: 245 seconds) |
| 06:20:37 | → | miklcct_ joins (quasselcor@2001:19f0:7001:5ad:5400:2ff:feb6:50d7) |
| 06:21:15 | × | pepeiborra quits (sid443799@gateway/web/irccloud.com/x-sswqhnrrevrotjio) (Ping timeout: 245 seconds) |
| 06:21:19 | → | b20n joins (sid115913@gateway/web/irccloud.com/x-fxwwqjclpbrawyzj) |
| 06:21:39 | × | thi quits (sid97277@gateway/web/irccloud.com/x-mwvssirlkplfqvqk) (Ping timeout: 245 seconds) |
| 06:21:39 | → | aizen_s joins (sid462968@gateway/web/irccloud.com/x-cimltabwsuoipsqn) |
| 06:21:48 | → | alunduil joins (alunduil@gateway/web/irccloud.com/x-lfjncrqckqiqjrhx) |
| 06:21:57 | → | caasih joins (sid13241@gateway/web/irccloud.com/x-ywhvuyflycmojjfa) |
| 06:22:26 | × | dgpratt quits (sid193493@gateway/web/irccloud.com/x-vbszyjrhlyidsuhn) (Ping timeout: 245 seconds) |
| 06:22:29 | → | thi joins (sid97277@gateway/web/irccloud.com/x-qecopghcofyuqahp) |
| 06:23:03 | → | pepeiborra joins (sid443799@gateway/web/irccloud.com/x-wwhumdjiavtzqvnj) |
| 06:23:22 | → | dgpratt joins (sid193493@gateway/web/irccloud.com/x-yujexlmxhvpapqdm) |
| 06:23:52 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
| 06:25:53 | <gnumonic> | So I made this class: "class BuildSing (f :: k -> Type) where buildSing :: forall (a :: k). f a -> Sing a" and I'm wondering if it is something that already exists? I don't think it's identical to SingI but I'm tired and not sure |
| 06:29:47 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 06:30:13 | <juri_> | good: i woke up in the middle of the night, thinking about a way to simplify my program using types. bad: i WOKE UP IN THE MIDDLE OF THE NIGHT, thinking about a way to simplify my program using types. |
| 06:32:59 | → | nicholasbulka joins (~nicholasb@2601:900:4301:da0:bdc9:711a:32b8:207e) |
| 06:33:44 | → | tomboy64 joins (~tomboy64@unaffiliated/tomboy64) |
| 06:34:41 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 252 seconds) |
| 06:35:40 | → | elfets joins (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) |
| 06:37:29 | × | nicholasbulka quits (~nicholasb@2601:900:4301:da0:bdc9:711a:32b8:207e) (Ping timeout: 245 seconds) |
| 06:38:55 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
| 06:39:49 | → | dpl_ joins (~dpl@77-121-78-163.chn.volia.net) |
| 06:44:51 | → | frozenErebus joins (~frozenEre@37.231.244.249) |
| 06:46:52 | → | nut joins (~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
| 06:47:46 | × | michalz quits (~user@185.246.204.47) (Ping timeout: 265 seconds) |
| 06:48:36 | × | bitmagie quits (~Thunderbi@200116b8063572001499edd4f9d505b9.dip.versatel-1u1.de) (Quit: bitmagie) |
| 06:52:53 | <Axman6> | juri_: you sday this like it's a bad thing. this sounds like ecstacy |
| 06:53:06 | → | Varis joins (~Tadas@unaffiliated/varis) |
| 06:57:11 | <juri_> | Axman6: I'd like to sleep. :P |
| 06:58:14 | <Axman6> | how will you code when you sleep? |
| 06:58:30 | → | bitmagie joins (~Thunderbi@200116b8063572001499edd4f9d505b9.dip.versatel-1u1.de) |
| 06:58:50 | <pjb> | Axman6: good question. And here's a possible answer: neuralink, or other mind reading device, so you may record your nocturnal programming activity. |
| 06:59:08 | <Axman6> | soon... |
| 07:00:17 | × | kiweun quits (~kiweun@2607:fea8:2a62:9600:908a:4a01:c91b:ed2f) (Remote host closed the connection) |
| 07:02:04 | → | leothrix joins (~leothrix@elastic/staff/leothrix) |
| 07:05:45 | <guest421> | half x = if even x then Just (x `div` 2) else Nothing |
| 07:05:55 | <guest421> | traverse half [1..10] == Nothing |
| 07:06:05 | <guest421> | this time traverse /= sequence . fmap? |
| 07:06:31 | <guest421> | I saw "The reason is that the <*> function is used to build the result, and when one of the arguments is Nothing, we get Nothing back." |
| 07:06:40 | <Axman6> | what does sequence . fmap half do? |
| 07:06:45 | × | benkolera quits (uid285671@gateway/web/irccloud.com/x-wgysqrkvbdmzjzqk) (Quit: Connection closed for inactivity) |
| 07:07:07 | <Axman6> | because if they weren't _identical_ then the implementation of traverse breaks its own laws |
| 07:07:35 | × | hypercube quits (~hypercube@2603-6011-f901-9e5b-0000-0000-0000-08cf.res6.spectrum.com) (Quit: WeeChat 3.1) |
| 07:07:39 | <guest421> | fmap half [1..10] will create a list [Nothing 1, Just 1...] |
| 07:07:44 | <Axman6> | yes |
| 07:07:49 | <guest421> | sequence [Nothing, Just 1...] |
| 07:07:51 | <Axman6> | but then sequence will return Nothing |
| 07:08:45 | <Axman6> | > sequence [Nothing, Just a, Nothing, Just 2] |
| 07:08:48 | <lambdabot> | Nothing |
| 07:09:03 | <guest421> | :t sequence |
| 07:09:05 | <lambdabot> | (Traversable t, Monad m) => t (m a) -> m (t a) |
| 07:09:15 | <guest421> | Evaluate each monadic action in the structure from left to right, and collect the results. |
| 07:09:29 | <Axman6> | % :t sequence @[] @Maybe |
| 07:09:29 | <yahb> | Axman6: [Maybe a] -> Maybe [a] |
| 07:10:07 | <Axman6> | what do you think sequence should do when given [Nothing, Just a, Nothing, Just 2]? |
| 07:10:11 | <wavemode> | better question - what is your expected behavior? |
| 07:10:50 | × | leothrix quits (~leothrix@elastic/staff/leothrix) (Remote host closed the connection) |
| 07:11:32 | <guest421> | > (Just 3) <*> (Just 2) |
| 07:11:34 | <lambdabot> | error: |
| 07:11:34 | <lambdabot> | • Could not deduce (Num a0) |
| 07:11:34 | <lambdabot> | from the context: (Num a, Num (a -> b)) |
| 07:12:00 | <Axman6> | > (,) <$> Just 1 <*> Just 2 |
| 07:12:02 | <lambdabot> | Just (1,2) |
| 07:12:07 | <Axman6> | > (,) <$> Just 1 <*> Nothing |
| 07:12:09 | <lambdabot> | Nothing |
| 07:12:24 | <Axman6> | > (:) <$> Just 1 <*> Just [] |
| 07:12:26 | <lambdabot> | Just [1] |
| 07:12:35 | <Axman6> | > (:) <$> Nothing <*> Just [] |
| 07:12:37 | <lambdabot> | Nothing |
| 07:12:39 | → | leothrix joins (~leothrix@elastic/staff/leothrix) |
| 07:12:46 | <Axman6> | > (:) <$> Just 1 <*> Nithing |
| 07:12:48 | <lambdabot> | error: |
| 07:12:48 | <lambdabot> | • Data constructor not in scope: Nithing :: Maybe [a] |
| 07:12:48 | <lambdabot> | • Perhaps you meant one of these: |
| 07:12:54 | <Axman6> | > (:) <$> Just 1 <*> Nothing |
| 07:12:56 | <lambdabot> | Nothing |
| 07:13:45 | <guest421> | Axman6: how "collect the results" ? |
| 07:14:16 | <Axman6> | it collects all the successful results |
| 07:14:19 | <guest421> | [] is an instance of Traversable? |
| 07:14:21 | <Axman6> | I think you want catMaybes |
| 07:14:25 | × | dpl_ quits (~dpl@77-121-78-163.chn.volia.net) (Ping timeout: 268 seconds) |
| 07:14:27 | <Axman6> | :t catMaybes |
| 07:14:29 | <lambdabot> | [Maybe a] -> [a] |
| 07:14:33 | × | howdoi quits (uid224@gateway/web/irccloud.com/x-bcrpbrlexhkfsmvn) (Quit: Connection closed for inactivity) |
| 07:14:48 | <Axman6> | > catMaybes [Nothing, Just a, Nothing, Just 2] |
| 07:14:50 | <lambdabot> | [a,2] |
| 07:14:57 | <Axman6> | > catMaybes [Nothing, Just 1, Nothing, Just 2] |
| 07:15:00 | <lambdabot> | [1,2] |
| 07:15:01 | → | dyeplexer joins (~lol@unaffiliated/terpin) |
| 07:15:40 | → | dpl_ joins (~dpl@77-121-78-163.chn.volia.net) |
| 07:16:30 | × | vdukhovni quits (64022765@100.2.39.101) (Quit: Connection closed) |
| 07:17:41 | <guest421> | Axman6: fetchUrl :: Url -> MaybeT IO a, traverse (runMaybeT . fetchUrl) [Url1, Url2] -- this will return a list contain [Just a, Nothing...] or Just [a]? |
| 07:18:12 | <Axman6> | what does ghci tell you? what's the type of runMaybeT . fetchUrl? |
| 07:18:20 | × | Sgeo quits (~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer) |
| 07:18:29 | <Axman6> | should be Url -> IO (Maybe a) right? |
| 07:18:44 | <guest421> | Axman6: yeah, that's simple |
| 07:18:45 | → | idhugo__ joins (~idhugo@87-49-147-45-mobile.dk.customer.tdc.net) |
| 07:18:49 | <Axman6> | so the result will be IO [Maybe a] |
| 07:19:01 | <Axman6> | do you want to fail if any fetch fails? |
| 07:19:08 | <guest421> | yes |
| 07:20:41 | <Axman6> | then you probably want runMaybeT $ traverse fetchUrl [Url1, Url2], which will give you back an IO (Maybe [a]) |
| 07:21:14 | → | idhugo_ joins (~idhugo@87-49-45-4-mobile.dk.customer.tdc.net) |
| 07:21:49 | × | bitmagie quits (~Thunderbi@200116b8063572001499edd4f9d505b9.dip.versatel-1u1.de) (Quit: bitmagie) |
| 07:22:12 | × | sleblanc quits (~sleblanc@unaffiliated/sebleblanc) (Ping timeout: 240 seconds) |
| 07:23:32 | × | idhugo__ quits (~idhugo@87-49-147-45-mobile.dk.customer.tdc.net) (Ping timeout: 240 seconds) |
| 07:24:29 | <guest421> | fetchUrl :: Url -> IO (Maybe a) |
| 07:24:32 | × | nineonine quits (~nineonine@50.216.62.2) (Ping timeout: 240 seconds) |
| 07:25:03 | <Axman6> | well that's different to MaybeT IO a |
| 07:25:11 | <guest421> | fmap fetchUrl [Url] :: [IO (Maybe a)] |
| 07:25:16 | × | loller_ quits (uid358106@gateway/web/irccloud.com/x-jiaqaybiuqrwtvzc) (Quit: Connection closed for inactivity) |
| 07:25:34 | <guest421> | sequence . fmap $ fetchUrl [Url] :: ? |
| 07:25:42 | → | knupfer joins (~Thunderbi@i59F67B5A.versanet.de) |
| 07:26:04 | <Axman6> | that doesn't make sense |
| 07:26:25 | <guest421> | Axman6: which part? |
| 07:27:22 | <guest421> | sequence (a :: [IO (Maybe a)]) :: ? |
| 07:27:57 | <guest421> | :t sequence |
| 07:27:58 | <lambdabot> | (Traversable t, Monad m) => t (m a) -> m (t a) |
| 07:28:00 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 07:28:39 | <Axman6> | :t sequence `asAppledTo` (undefined :: [IO (Maybe a]) |
| 07:28:41 | <lambdabot> | error: parse error on input ‘]’ |
| 07:28:47 | <Axman6> | :t sequence `asAppledTo` (undefined :: [IO (Maybe a)]) |
| 07:28:49 | <lambdabot> | error: |
| 07:28:49 | <lambdabot> | • Variable not in scope: |
| 07:28:49 | <lambdabot> | asAppledTo :: (t0 (m0 a0) -> m0 (t0 a0)) -> [IO (Maybe a1)] -> t |
| 07:28:50 | × | Codaraxis__ quits (Codaraxis@gateway/vpn/mullvad/codaraxis) (Ping timeout: 246 seconds) |
| 07:29:01 | <c_wraith> | try asAppliedTo :P |
| 07:29:06 | <Axman6> | :t sequence `asAppliedTo` (undefined :: [IO (Maybe a)]) |
| 07:29:08 | <lambdabot> | [IO (Maybe a)] -> IO [Maybe a] |
| 07:29:44 | <guest421> | sequence . fmap $ fetchUrl [Url] :: IO [Maybe a] ? |
| 07:29:45 | <Axman6> | guest421: so you could so fmap sequence . sequence if you want an IO (Maybe [a]) |
| 07:30:03 | <Axman6> | :t fmap sequence . sequence `asAppliedTo` (undefined :: [IO (Maybe a)]) |
| 07:30:05 | <lambdabot> | [IO (Maybe a)] -> IO (Maybe [a]) |
| 07:30:07 | → | ddellaco_ joins (~ddellacos@ool-44c73afa.dyn.optonline.net) |
| 07:31:28 | <guest421> | why sequence . sequence... |
| 07:32:38 | <Axman6> | it's (fmap sequence) . sequence, it's applying sequence to the [Maybe a] returned by the IO, it's doing: fmap sequence :: IO [Maybe a] -> IO (Maybe [a]) |
| 07:36:07 | × | ddellaco_ quits (~ddellacos@ool-44c73afa.dyn.optonline.net) (Ping timeout: 252 seconds) |
| 07:38:27 | → | nut_ joins (~gtk@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
| 07:40:45 | <Axman6> | so fmap sequence . sequence first turns a [IO (Maybe a)] into an IO [Maybe a], and then into an IO (Maybe [a]) |
| 07:40:55 | → | hypercube joins (~hypercube@2603-6011-f901-9e5b-0000-0000-0000-08cf.res6.spectrum.com) |
| 07:41:03 | × | hypercube quits (~hypercube@2603-6011-f901-9e5b-0000-0000-0000-08cf.res6.spectrum.com) (Client Quit) |
| 07:43:28 | → | hypercube joins (hypercube@gateway/vpn/protonvpn/hypercube) |
| 07:43:35 | × | hypercube quits (hypercube@gateway/vpn/protonvpn/hypercube) (Client Quit) |
| 07:44:18 | → | Sornaensis joins (~Sornaensi@077213200034.dynamic.telenor.dk) |
| 07:46:52 | → | Sorna joins (~Sornaensi@79.142.232.102) |
| 07:48:23 | → | benkolera joins (uid285671@gateway/web/irccloud.com/x-uqnaygwihchxqkys) |
| 07:48:55 | <maerwald> | now I want an `IO (Maybe a)` ;) |
| 07:49:04 | <maerwald> | and then an IO a |
| 07:49:32 | × | Sornaensis quits (~Sornaensi@077213200034.dynamic.telenor.dk) (Ping timeout: 240 seconds) |
| 07:50:11 | × | nut_ quits (~gtk@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Read error: Connection reset by peer) |
| 07:50:35 | <Axman6> | best I can do fer ya as a Monoid a constraint |
| 07:50:37 | → | nut_ joins (~gtk@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
| 07:53:37 | <maralorn> | (>>= \case {Just (x:_) -> pure x; _ -> throwIO "Nothing to return") :: IO (Maybe [a]) -> IO a |
| 07:53:46 | <maralorn> | * (>>= \case {Just (x:_) -> pure x; _ -> throwIO "Nothing to return"}) :: IO (Maybe [a]) -> IO a |
| 07:54:15 | <Axman6> | um could you not? :P |
| 07:54:32 | × | nut quits (~user@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Remote host closed the connection) |
| 07:54:56 | → | guest421` joins (~user@47.245.54.240) |
| 07:55:26 | → | m0rphism joins (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) |
| 07:56:11 | → | paddymahoney joins (~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com) |
| 07:56:20 | → | Lowl3v3l joins (~Lowl3v3l@dslb-002-207-103-026.002.207.pools.vodafone-ip.de) |
| 07:59:13 | × | guest421 quits (~user@49.5.6.87) (Ping timeout: 252 seconds) |
| 08:01:31 | × | evanjs quits (~evanjs@075-129-098-007.res.spectrum.com) (Read error: Connection reset by peer) |
| 08:03:10 | → | cfricke joins (~cfricke@unaffiliated/cfricke) |
| 08:03:18 | → | evanjs joins (~evanjs@075-129-098-007.res.spectrum.com) |
| 08:03:51 | → | geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) |
| 08:04:23 | → | MVQq joins (~anja@198.254.208.159) |
| 08:07:23 | → | hendursa1 joins (~weechat@gateway/tor-sasl/hendursaga) |
| 08:07:37 | × | MarcelineVQ quits (~anja@198.254.208.159) (Ping timeout: 260 seconds) |
| 08:09:57 | × | hendursaga quits (~weechat@gateway/tor-sasl/hendursaga) (Ping timeout: 240 seconds) |
| 08:11:48 | → | Nahra joins (~user@unaffiliated/nahra) |
| 08:12:27 | → | hypercube joins (hypercube@gateway/vpn/protonvpn/hypercube) |
| 08:14:53 | → | Lycurgus joins (~niemand@98.4.118.65) |
| 08:15:09 | → | fendor joins (~fendor@91.141.3.112.wireless.dyn.drei.com) |
| 08:18:01 | × | aVikingTrex quits (~aVikingTr@2001:8003:340d:d00:b2de:b98:7a93:b0ea) (Ping timeout: 250 seconds) |
| 08:19:31 | → | kristijonas_ joins (~kristijon@78-56-32-39.static.zebra.lt) |
| 08:19:42 | × | kristijonas_ quits (~kristijon@78-56-32-39.static.zebra.lt) (Max SendQ exceeded) |
| 08:19:49 | × | kristijonas quits (~kristijon@78-56-32-39.static.zebra.lt) (Read error: Connection reset by peer) |
| 08:31:25 | → | erred joins (~kvirc@84.120.196.129.dyn.user.ono.com) |
| 08:31:29 | <erred> | fwiptables: firewall in script bash very large |
| 08:32:16 | → | kuribas joins (~user@ptr-25vy0i8p1spa6dozdqg.18120a2.ip6.access.telenet.be) |
| 08:35:35 | → | aveltras joins (uid364989@gateway/web/irccloud.com/x-nbetplnhypazvidp) |
| 08:36:17 | → | idhugo__ joins (~idhugo@87-49-147-45-mobile.dk.customer.tdc.net) |
| 08:36:50 | <aveltras> | i have a multi package stack project, what would be the best way to watch the whole project for type checking errors using the less cpu & ram possible ? |
| 08:37:39 | × | erred quits (~kvirc@84.120.196.129.dyn.user.ono.com) (Quit: KVIrc 5.0.0 Aria http://www.kvirc.net/) |
| 08:38:17 | × | geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 268 seconds) |
| 08:38:41 | × | idhugo_ quits (~idhugo@87-49-45-4-mobile.dk.customer.tdc.net) (Ping timeout: 245 seconds) |
| 08:41:39 | × | vicfred quits (~vicfred@unaffiliated/vicfred) (Quit: Leaving) |
| 08:42:31 | → | Synthetica joins (uid199651@gateway/web/irccloud.com/x-mucvjdtabxcscdzz) |
| 08:48:13 | × | Lycurgus quits (~niemand@98.4.118.65) (Quit: Exeunt) |
| 08:52:22 | × | heatsink quits (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 08:55:14 | → | mikoto-chan joins (~anass@gateway/tor-sasl/mikoto-chan) |
| 08:56:25 | × | cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 252 seconds) |
| 09:01:23 | × | gentauro quits (~gentauro@unaffiliated/gentauro) (Read error: Connection reset by peer) |
| 09:02:22 | → | gentauro joins (~gentauro@unaffiliated/gentauro) |
| 09:02:37 | × | knupfer quits (~Thunderbi@i59F67B5A.versanet.de) (Read error: Connection reset by peer) |
| 09:03:00 | → | knupfer joins (~Thunderbi@200116b82b5e7400e96d6e54df5761a8.dip.versatel-1u1.de) |
| 09:06:31 | → | ClaudiusMaximus joins (~claude@cpc98210-croy26-2-0-cust137.19-2.cable.virginm.net) |
| 09:06:31 | × | ClaudiusMaximus quits (~claude@cpc98210-croy26-2-0-cust137.19-2.cable.virginm.net) (Changing host) |
| 09:06:31 | → | ClaudiusMaximus joins (~claude@unaffiliated/claudiusmaximus) |
| 09:07:52 | → | nicholasbulka joins (~nicholasb@2601:900:4301:da0:bdc9:711a:32b8:207e) |
| 09:13:19 | → | DavidEichmann joins (~david@147.136.46.217.dyn.plus.net) |
| 09:13:31 | → | sagax joins (~sagax_nb@213.138.71.146) |
| 09:17:41 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 09:18:08 | → | geowiesnot joins (~user@87-89-181-157.abo.bbox.fr) |
| 09:18:25 | → | LKoen joins (~LKoen@92.163.9.109.rev.sfr.net) |
| 09:23:16 | × | nicholasbulka quits (~nicholasb@2601:900:4301:da0:bdc9:711a:32b8:207e) (Ping timeout: 245 seconds) |
| 09:23:19 | hc_ | is now known as hc |
| 09:31:32 | → | heatsink joins (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 09:32:16 | × | geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 260 seconds) |
| 09:32:17 | → | ddellaco_ joins (~ddellacos@ool-44c73afa.dyn.optonline.net) |
| 09:35:11 | → | olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber) |
| 09:35:26 | × | PtxDK quits (~quassel@2a01:7c8:aac3:591:5054:ff:fe3d:cac6) (Read error: Connection reset by peer) |
| 09:35:48 | × | heatsink quits (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds) |
| 09:36:32 | → | PtxDK joins (~quassel@2a01:7c8:aac3:591:5054:ff:fe3d:cac6) |
| 09:37:01 | × | ddellaco_ quits (~ddellacos@ool-44c73afa.dyn.optonline.net) (Ping timeout: 245 seconds) |
| 09:37:23 | → | geiger_ joins (~geiger@0543f40b.skybroadband.com) |
| 09:40:34 | × | gaiger quits (~geiger@0543f40b.skybroadband.com) (Ping timeout: 268 seconds) |
| 09:42:01 | × | nut_ quits (~gtk@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 245 seconds) |
| 09:42:14 | <gnumonic> | Is there any way around the "No type families in class instance declarations" thing? |
| 09:43:16 | → | marinelli joins (~marinelli@gateway/tor-sasl/marinelli) |
| 09:44:14 | × | sagax quits (~sagax_nb@213.138.71.146) (Ping timeout: 252 seconds) |
| 09:44:39 | <c_wraith> | no, that's basically necessary to deal with potential non-injectivity |
| 09:46:25 | × | NinjaTrappeur quits (~ninja@unaffiliated/ninjatrappeur) (Ping timeout: 250 seconds) |
| 09:51:55 | → | heatsink joins (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 09:51:57 | <gnumonic> | Hm. That's annoying. Was hoping there was some trick. I don't think it would cause problems in the particular case I was trying to work around. Oh well. |
| 09:53:44 | × | ephemera_ quits (~E@122.34.1.187) (Ping timeout: 246 seconds) |
| 09:54:41 | → | ephemera_ joins (~E@122.34.1.187) |
| 09:55:49 | × | kmein quits (~weechat@static.173.83.99.88.clients.your-server.de) (Quit: ciao kakao) |
| 09:56:07 | → | kmein joins (~weechat@static.173.83.99.88.clients.your-server.de) |
| 09:56:45 | × | heatsink quits (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 265 seconds) |
| 09:56:53 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds) |
| 09:56:59 | → | Forlorn_ joins (~Forlorn@unaffiliated/forlorn) |
| 09:57:47 | → | kritzefitz joins (~kritzefit@212.86.56.80) |
| 09:58:18 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:00:37 | → | NinjaTrappeur joins (~ninja@unaffiliated/ninjatrappeur) |
| 10:02:19 | → | geowiesnot joins (~user@87-89-181-157.abo.bbox.fr) |
| 10:03:08 | → | CiaoSen joins (~Jura@p200300c9572bc100dd00e68a577d428e.dip0.t-ipconnect.de) |
| 10:03:32 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds) |
| 10:03:54 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:07:23 | × | geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 246 seconds) |
| 10:08:02 | × | benkolera quits (uid285671@gateway/web/irccloud.com/x-uqnaygwihchxqkys) (Quit: Connection closed for inactivity) |
| 10:10:47 | × | cfricke quits (~cfricke@unaffiliated/cfricke) (Ping timeout: 268 seconds) |
| 10:12:36 | <hc> | btw, I mentioned haskell arcade games here the other day; I just remembered the name of the game: it's venzone |
| 10:13:20 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds) |
| 10:14:38 | × | s00pcan quits (~chris@075-133-056-178.res.spectrum.com) (Ping timeout: 265 seconds) |
| 10:15:06 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:16:31 | × | mikoto-chan quits (~anass@gateway/tor-sasl/mikoto-chan) (Remote host closed the connection) |
| 10:17:12 | → | bitmagie joins (~Thunderbi@200116b8063572001499edd4f9d505b9.dip.versatel-1u1.de) |
| 10:19:13 | → | mikoto-chan joins (~anass@gateway/tor-sasl/mikoto-chan) |
| 10:20:26 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
| 10:20:42 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:21:49 | → | justan0theruser joins (~justanoth@unaffiliated/justanotheruser) |
| 10:24:14 | → | idhugo_ joins (~idhugo@87-49-45-4-mobile.dk.customer.tdc.net) |
| 10:24:23 | × | justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 258 seconds) |
| 10:26:32 | × | idhugo__ quits (~idhugo@87-49-147-45-mobile.dk.customer.tdc.net) (Ping timeout: 240 seconds) |
| 10:27:52 | × | elfets quits (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Ping timeout: 252 seconds) |
| 10:28:05 | → | gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh) |
| 10:29:14 | → | heatsink joins (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 10:29:40 | → | Guest78317 joins (~laudiacay@67.176.215.84) |
| 10:29:55 | × | ericsagnes quits (~ericsagne@2405:6580:0:5100:ee94:8f2c:d91b:ec) (Ping timeout: 260 seconds) |
| 10:33:41 | × | heatsink quits (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 245 seconds) |
| 10:34:20 | × | Guest78317 quits (~laudiacay@67.176.215.84) (Ping timeout: 246 seconds) |
| 10:37:25 | × | kritzefitz quits (~kritzefit@212.86.56.80) (Ping timeout: 260 seconds) |
| 10:37:40 | × | Kaiepi quits (~Kaiepi@47.54.252.148) (Remote host closed the connection) |
| 10:37:52 | → | kritzefitz joins (~kritzefit@2003:5b:203b:200::10:49) |
| 10:37:58 | → | Kaiepi joins (~Kaiepi@47.54.252.148) |
| 10:38:00 | → | Alleria joins (~textual@mskresolve-a.mskcc.org) |
| 10:38:01 | → | minoru_shiraeesh joins (~shiraeesh@109.166.59.151) |
| 10:38:23 | Alleria | is now known as Guest92203 |
| 10:39:33 | → | heatsink joins (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 10:42:31 | × | CiaoSen quits (~Jura@p200300c9572bc100dd00e68a577d428e.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 10:42:38 | → | ericsagnes joins (~ericsagne@2405:6580:0:5100:dde9:bfa7:6f37:dd87) |
| 10:42:47 | × | bitmagie quits (~Thunderbi@200116b8063572001499edd4f9d505b9.dip.versatel-1u1.de) (Quit: bitmagie) |
| 10:43:04 | → | Kaeipi joins (~Kaiepi@47.54.252.148) |
| 10:43:41 | × | heatsink quits (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds) |
| 10:44:19 | × | Kaiepi quits (~Kaiepi@47.54.252.148) (Remote host closed the connection) |
| 10:46:44 | × | quinn quits (~quinn@c-73-223-224-163.hsd1.ca.comcast.net) (Quit: ZNC 1.8.1 - https://znc.in) |
| 10:48:40 | → | tatsumaru joins (~tatsumaru@85.196.189.103) |
| 10:49:21 | <tatsumaru> | hey guys, the book I am reading claims the keyword 'let' is necessary for defining variables, but in ghci it seems that variables work without 'let' either. is let optional at this point or maybe I am not understanding the point? |
| 10:49:35 | <merijn> | tatsumaru: ghci is a hack |
| 10:49:38 | → | aVikingTrex joins (~aVikingTr@2001:8003:340d:d00:b2de:b98:7a93:b0ea) |
| 10:50:05 | <merijn> | tatsumaru: Also, the book might be wrong/misleading, depending on context |
| 10:50:21 | <tatsumaru> | merjin, what did you mean by ghci being a hack |
| 10:50:26 | <merijn> | tatsumaru: You only need let-in to define variables *in an expression* context |
| 10:50:53 | <merijn> | tatsumaru: ghci's commandline is halfway in between "acts like top level of a file" and "acts like an expression context" |
| 10:51:28 | <tatsumaru> | so it doesn't evaluate code the same way the compiler would? |
| 10:52:07 | <merijn> | tatsumaru: Lets rewind a whole bit |
| 10:52:30 | <merijn> | tatsumaru: In a module context, you can define bindings (variables, if you will) by simply defining "x = ..." |
| 10:53:14 | <merijn> | tatsumaru: But that only (I'm handwaving here) works at the module or some specific contexts where you are allowed to define bindings |
| 10:53:45 | <merijn> | tatsumaru: "let-in" is a way to create a context to define bindings within an expression |
| 10:53:58 | <merijn> | > (let x = 5 in 2 * x) + 10 |
| 10:54:00 | <lambdabot> | 20 |
| 10:54:57 | <merijn> | tatsumaru: So let isn't necessary for defining variables at all. Let is just a way to define variables in places where you normally can't |
| 10:55:16 | → | sagax joins (~sagax_nb@213.138.71.146) |
| 10:55:16 | <merijn> | i.e. you can't normally write "(x = 5) + 10" because what does that even mean? |
| 10:55:34 | <tatsumaru> | so basically it's for reassuring the compiler that you want to define a binding? |
| 10:55:52 | → | philderbeast joins (~textual@bras-base-vldvpq5901w-grc-06-184-144-244-252.dsl.bell.ca) |
| 10:59:26 | → | heatsink joins (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 11:00:05 | <merijn> | Not really? |
| 11:00:22 | <merijn> | tatsumaru: Any programming languages you're already familiar with? |
| 11:00:26 | → | cfricke joins (~cfricke@unaffiliated/cfricke) |
| 11:00:51 | <tatsumaru> | not really, I am just starting out in programming with haskell |
| 11:01:12 | × | guest421` quits (~user@47.245.54.240) (Ping timeout: 240 seconds) |
| 11:01:25 | <Logio> | I think there used to be a time when ghci did not accept variable definitions without a preceding let (i.e. it just operated with things valid in a IO do-block) |
| 11:02:19 | <merijn> | Correct |
| 11:02:25 | × | gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Remote host closed the connection) |
| 11:02:36 | <merijn> | But it is unclear whether the book in question was referring to "defining variables in ghci" or "in general" |
| 11:02:54 | <merijn> | In other words: Insufficient context to understand where the confusion is coming from |
| 11:03:44 | × | shailangsa quits (~shailangs@host86-185-102-48.range86-185.btcentralplus.com) (Ping timeout: 246 seconds) |
| 11:03:48 | → | gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh) |
| 11:04:02 | <tatsumaru> | merjin this is what it says: "Note: We can use the let keyword to define a name right in GHCI. Doing let a = 1 inside GHCI is the equivalent of writing a = 1 in a script and then loading it." |
| 11:04:11 | × | heatsink quits (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds) |
| 11:04:34 | <tatsumaru> | but then I noticed that I could do a = 1 in GHCI as well so I wondered if let was obsolete |
| 11:05:05 | <merijn> | Ah |
| 11:05:52 | <merijn> | Yeah, you used to need to use let for variables (and commands for loading modules) in gchi, because ghci behaved like a "weird interactive IO monad do-block" |
| 11:06:15 | <merijn> | tatsumaru: But at some point around GHC 8 it got changed to support import statements and direct bindings too |
| 11:06:24 | <tatsumaru> | is it fair to say that ghci is like repl? |
| 11:06:45 | <merijn> | tatsumaru: Which is what I meant with ghci being a hack, it behaves sorta like a weird mix between "proper module syntax" and "dynamic do block" |
| 11:06:59 | <merijn> | tatsumaru: ghci *is* a repl :p |
| 11:07:08 | <merijn> | it reads, it evaluates, it prints and loops back ;) |
| 11:07:17 | <tatsumaru> | got it, thanks a lot :) |
| 11:08:02 | <merijn> | tatsumaru: It's just weird in that it *also* accepts expressions (like "2 + 5") which is a syntax error in source files |
| 11:09:36 | → | boogsbunny joins (17520e19@23.82.14.25) |
| 11:13:16 | × | xff0x quits (~xff0x@2001:1a81:5253:e800:1dc:184f:3c23:9adc) (Ping timeout: 245 seconds) |
| 11:14:05 | → | xff0x joins (~xff0x@2001:1a81:5253:e800:55a6:95d0:743f:3c74) |
| 11:15:12 | × | olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 240 seconds) |
| 11:15:34 | → | jumper149 joins (~jumper149@80.240.31.34) |
| 11:16:18 | <kuribas> | it distinguishes between IO expressions, other expressions, and declarations. |
| 11:16:37 | <kuribas> | declarations used to be not even supported. |
| 11:16:51 | <merijn> | That's what we just said? |
| 11:17:09 | <merijn> | tbh, I still think adding support for top level bindings/imports just makes ghci *more* confusing |
| 11:17:15 | <kuribas> | right, it was supported using let |
| 11:17:47 | <kuribas> | merijn: maybe, but it's very convenient |
| 11:17:59 | <kuribas> | you can quickly define and test data types |
| 11:18:01 | <tomsmeding> | ^ |
| 11:18:15 | <merijn> | Death by minor conveniences is a common problem in tech |
| 11:18:28 | <tomsmeding> | ghci exists for convenience |
| 11:18:32 | <tomsmeding> | hot take |
| 11:18:41 | <kuribas> | I remember when there was a lot of demand for it :) |
| 11:18:43 | <merijn> | If you just keep post hoc piling on more "minor convenience features" eventually things become unusable piles of mess |
| 11:18:48 | → | __monty__ joins (~toonn@unaffiliated/toonn) |
| 11:19:10 | <kuribas> | merijn: really, the REPL IS for quick and dirty testing. |
| 11:19:27 | <merijn> | So? |
| 11:19:33 | <tomsmeding> | and for IDE-like functionality, which falls under the same category |
| 11:19:34 | <merijn> | Doesn't mean it can't have a consistent design |
| 11:19:37 | <kuribas> | so it can be quick and dirty :) |
| 11:19:41 | <merijn> | Disagree |
| 11:20:03 | <merijn> | Dirty hacks attract dirty hacks |
| 11:20:42 | <tomsmeding> | I guess it would be nice if ghci had a consistent interface on top of which the convenience syntax is implemented |
| 11:21:26 | <tomsmeding> | would that be better? |
| 11:22:46 | → | rekahsoft joins (~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com) |
| 11:22:53 | <tatsumaru> | maybe there should be different repls for different people who have different goals/intentions |
| 11:24:42 | → | stef204 joins (~stef204@unaffiliated/stef-204/x-384198) |
| 11:25:08 | <tomsmeding> | indeed if ghci had a consistent interface on top of which the "convenience" syntaxes were defined, then making such different repls wouldn't be too hard :) |
| 11:25:22 | <tomsmeding> | and it's also nice from a software engineering standpoint |
| 11:26:01 | <[exa]> | still, somehow, after many years we've only got the one ghci frontend :] |
| 11:27:23 | exarkun_ | is now known as exarkun |
| 11:28:23 | → | shailangsa joins (~shailangs@host217-42-54-186.range217-42.btcentralplus.com) |
| 11:28:34 | <tomsmeding> | it seems to work for most people |
| 11:29:07 | <tatsumaru> | is there a new haskell 2020 spec coming soon or is this a myth? |
| 11:29:15 | <tomsmeding> | myth |
| 11:29:21 | <merijn> | lol |
| 11:29:25 | <merijn> | Myth :p |
| 11:29:37 | <tatsumaru> | why is the official wiki claiming there's a 2020 preview release |
| 11:29:38 | <tomsmeding> | ghc has a "GHC2021" language that is equivalent to a number of commonly-used GHC language extensions |
| 11:29:43 | <tomsmeding> | is it? |
| 11:30:07 | <merijn> | tatsumaru: There have been repeated attempts to create a new report |
| 11:30:07 | <tatsumaru> | https://mail.haskell.org/pipermail/haskell-prime/2016-April/004050.html |
| 11:30:19 | <merijn> | That's a mailing list message from 2016 :p |
| 11:30:40 | <tatsumaru> | so the effort flopped? |
| 11:30:42 | <merijn> | That attempt, like 4 or so others, has fizzled out |
| 11:30:56 | <tatsumaru> | is it due to lack of interest in the language? |
| 11:30:59 | <merijn> | No |
| 11:31:28 | <merijn> | The problem is that there is a mismatch between "stuff people want in the new report" and "stuff that needs to be done" |
| 11:31:51 | <merijn> | tatsumaru: Like, people want to include a bunch of GHC extensions into the report and make them "not extensions" |
| 11:31:58 | → | kiweun joins (~kiweun@2607:fea8:2a62:9600:8080:6b3d:32d3:b207) |
| 11:32:03 | <tatsumaru> | i hope they don't turn it into the next pyhton-like monstrocity that's okay for everything and the best for nothing |
| 11:32:10 | <merijn> | The problem is that, *properly* standardising stuff is hard and boring work |
| 11:32:16 | <tatsumaru> | python* |
| 11:32:25 | <merijn> | tatsumaru: Like, just saying "whatever GHC is doing right now" isn't really a standard |
| 11:32:29 | → | urodna joins (~urodna@unaffiliated/urodna) |
| 11:32:57 | <merijn> | tatsumaru: So someone has to sit down, figure out how GHC implements the extension, write out a specification of what it means, and figure out how it interacts with everything else |
| 11:33:14 | <tatsumaru> | accountant's work |
| 11:33:18 | <merijn> | tatsumaru: But most people just want stuff to "not be an extension" without doing the hard/boring work |
| 11:33:18 | <__monty__> | Part of the problem is also GHC's dominance. The reason to have a report is so multiple implementations can coexist. If there's not really any serious alternative implementations there's a lot less motivation for a report. |
| 11:33:42 | <merijn> | tatsumaru: Combined with the fact that GHC is basically the only *real* implementation, interest in standardising is low |
| 11:34:01 | <merijn> | If everyone keeps working on GHC, what's the point of an independent standard that no one else implements? |
| 11:34:12 | → | ddellacosta joins (~ddellacos@ool-44c73afa.dyn.optonline.net) |
| 11:34:19 | <tatsumaru> | isnt GHC an implementation of haskell? |
| 11:34:23 | <merijn> | Yes |
| 11:34:48 | <merijn> | But GHC has much *much* more stuff than just Haskell2010 :p |
| 11:35:10 | <kuribas> | merijn: funny thing, Python doesn't have a report, but it has multiple implementations. |
| 11:35:19 | <merijn> | kuribas: Well, kinda, sorta |
| 11:35:20 | <kuribas> | which are also incompatible |
| 11:35:24 | × | rekahsoft quits (~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com) (Remote host closed the connection) |
| 11:35:40 | <merijn> | Python's spec is just "Whatever CPython does" |
| 11:35:43 | <__monty__> | That's what you get when you say "Implementation X *is* the reference." |
| 11:35:46 | → | rekahsoft joins (~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com) |
| 11:35:50 | <tatsumaru> | scheme has a ton of implementations with new ones coming even recently, even though the userbase of the language is miniscule compared to haskell |
| 11:36:05 | <tomsmeding> | the language is far smaller |
| 11:36:15 | <merijn> | tatsumaru: That's because making a Scheme compiler is *much* simpler :p |
| 11:36:18 | <__monty__> | I think scheme's userbase is a lot bigger than you assume. |
| 11:36:29 | × | kiweun quits (~kiweun@2607:fea8:2a62:9600:8080:6b3d:32d3:b207) (Ping timeout: 250 seconds) |
| 11:37:18 | <merijn> | tatsumaru: GHC, for example, has a *ton* of optimisation stuff for Haskell code. If you have a cool new idea you *could* spend 5 years reimplementing that for your cool idea...or you could build it into a fork of GHC and save 5 years |
| 11:37:21 | <yushyin> | writing yet another scheme compiler is my weekend exercise |
| 11:37:37 | <yushyin> | :P |
| 11:38:41 | <kuribas> | yushyin: in haskell or GTFO :) |
| 11:38:49 | <merijn> | tatsumaru: So the compiler and language are alive and well. Efforts to standardise Haskell...not so much :p |
| 11:39:05 | <tatsumaru> | what's the benefit of standardizing haskell |
| 11:39:27 | <kuribas> | standardizing haskell == which extension to keep, and which to deprecate :) |
| 11:39:42 | <merijn> | tatsumaru: THat's unclear, which is why it isn't happening :p |
| 11:39:43 | <yushyin> | kuribas: various languages, it depends on my mood on that weekend ;D |
| 11:39:49 | → | machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca) |
| 11:39:56 | × | ddellacosta quits (~ddellacos@ool-44c73afa.dyn.optonline.net) (Ping timeout: 245 seconds) |
| 11:39:59 | <kuribas> | yushyin: so "write a scheme compiler" is your hello world? |
| 11:40:06 | <merijn> | tatsumaru: Standardisation is good for keeping multiple implementations compatible, but there's only one implementation in mainstream use (GHC) |
| 11:40:25 | <tatsumaru> | should multiple implementations be compatible |
| 11:40:41 | <merijn> | Well, if they're not, they're not really the same language, no? |
| 11:40:51 | <yushyin> | kuribas: possible! |
| 11:40:52 | <juri_> | yeah, this is a painful situation. i'm feeling the pain, at least. |
| 11:41:02 | <tomsmeding> | it's at least nice to have a reference point, to be able to consistently say "here is where we comply, here is where we differ" |
| 11:41:03 | <merijn> | tatsumaru: Consider the C11 spec. It exists so that I know my C11 code is gonna do the same thing on each C11 compatible compiler |
| 11:41:16 | <tatsumaru> | well as far as I know python 3 and 2 aren't compatible, are they considered different languages |
| 11:41:24 | <merijn> | tatsumaru: I'd say do |
| 11:41:26 | <merijn> | *so* |
| 11:42:19 | <tatsumaru> | is this like the equivalent of FDA in programming? |
| 11:42:25 | <tomsmeding> | I guess you could say that C and Python are language families, whereas C89, C11, Python 2 and Python 3 are languages, if you want to get pedantic |
| 11:42:41 | <tomsmeding> | food and drug administration? |
| 11:42:44 | <tatsumaru> | yes |
| 11:43:05 | <tatsumaru> | by "this" I meant standardization |
| 11:43:26 | <__monty__> | Even the PSF considers them different languages. There's a reason there's a PEP that says python3 should never masquerade as a "python" binary. |
| 11:43:40 | <tomsmeding> | without a standard of what "Python 2" means, it's hard to talk about what exactly that language supports or not |
| 11:43:54 | <tomsmeding> | you can talk about what CPython 2 supports -- but that's something else than Python 2 |
| 11:43:55 | × | knupfer quits (~Thunderbi@200116b82b5e7400e96d6e54df5761a8.dip.versatel-1u1.de) (Remote host closed the connection) |
| 11:44:02 | → | knupfer joins (~Thunderbi@200116b82b5e7400a819040ab136d554.dip.versatel-1u1.de) |
| 11:44:41 | <tatsumaru> | so complicated... |
| 11:44:59 | <tatsumaru> | it seems futile to try to restrain all these decision trees to a singular specification |
| 11:45:39 | <tomsmeding> | a specification doesn't constrain, it standardises :p |
| 11:45:45 | <tomsmeding> | so that you can unambiguously talk about stuff |
| 11:46:12 | <tomsmeding> | a standard for C11 doesn't mean that your own home-brew compiler for a C-like language cannot exist |
| 11:46:23 | <tomsmeding> | it just means that you can say "here is how it differs from C11" |
| 11:46:49 | <tomsmeding> | without a standard of C11, you can only say "here is how it differs from what gcc 9.2.1 accepts" |
| 11:46:56 | <tatsumaru> | ah i see |
| 11:47:00 | <tomsmeding> | which is fine for some purposes |
| 11:47:35 | → | Aquazi joins (uid312403@gateway/web/irccloud.com/x-fvdnxupudqhwtjny) |
| 11:47:40 | <tomsmeding> | but sometimes it's nice to have a central standard :) |
| 11:48:09 | → | geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) |
| 11:48:23 | <tatsumaru> | is specification and standardization the same thing? |
| 11:49:58 | <tomsmeding> | when referring to programming language specifications, I guess yes |
| 11:50:14 | tomsmeding | wouldn't know the difference |
| 11:50:15 | → | rodriga joins (~quassel@134.204.25.66) |
| 11:51:06 | <tomsmeding> | standard, oxford def. 2.2: "A form of language that is widely accepted as the usual form." |
| 11:51:21 | <tomsmeding> | specification, oxford def. 2: "A detailed description of the design and materials used to make something." |
| 11:51:24 | <tomsmeding> | ¯\_(ツ)_/¯ |
| 11:51:43 | <tomsmeding> | I guess it includes less CS-specific jargon in the second case |
| 11:51:48 | codedmart_ | is now known as codedmart |
| 11:52:03 | <tomsmeding> | ah specification 2.1 is nicer: "A standard of workmanship or materials required to be met in a piece of work" |
| 11:52:12 | <tomsmeding> | what's a specification? a standard, among other things |
| 11:52:19 | <merijn> | See: "an ISO standard cup of tea" :p |
| 11:52:47 | <tatsumaru> | so one implies some level of quality control while the other one is just instruction? |
| 11:54:22 | × | nopf quits (~frosch@static.179.17.76.144.clients.your-server.de) (Quit: Lost terminal) |
| 11:54:24 | <tomsmeding> | dictionary definition != usage as technical jargon |
| 11:54:30 | <tomsmeding> | but maybe |
| 11:54:41 | <tomsmeding> | there's also "report" :p |
| 11:54:52 | <tatsumaru> | what tends to happen in the long term with languages when there's no standardization is it detrimental? |
| 11:55:37 | <tomsmeding> | depends on the people |
| 11:55:56 | <tomsmeding> | I'm not pretending to know anything about history or sociology :p |
| 11:56:40 | <tomsmeding> | python has no real standardisation; is it detrimental? doesn't seem so |
| 11:56:58 | <tomsmeding> | BASIC also has no real standardisation; is it detrimental? not sure, but it doesn't really flourish anyway :p |
| 11:58:49 | → | nut_ joins (~gtk@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
| 11:58:54 | × | frozenErebus quits (~frozenEre@37.231.244.249) (Remote host closed the connection) |
| 11:58:57 | × | sh9 quits (~sh9@softbank060116136158.bbtec.net) (Quit: WeeChat 2.8) |
| 12:05:18 | ← | tatsumaru parts (~tatsumaru@85.196.189.103) () |
| 12:07:44 | → | geekosaur joins (930099da@rrcs-147-0-153-218.central.biz.rr.com) |
| 12:08:23 | × | NinjaTrappeur quits (~ninja@unaffiliated/ninjatrappeur) (Quit: WeeChat 3.1) |
| 12:09:04 | → | NinjaTrappeur joins (~ninja@unaffiliated/ninjatrappeur) |
| 12:13:16 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds) |
| 12:15:05 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 12:15:31 | × | curiousgay quits (~gay@178.217.208.8) (Read error: Connection reset by peer) |
| 12:15:58 | × | codedmart quits (~codedmart@149.28.9.205) (Ping timeout: 268 seconds) |
| 12:16:27 | → | mmfood_1 joins (~mmfood@45.91.21.58) |
| 12:17:55 | → | sayola1 joins (~vekto@dslb-002-201-085-157.002.201.pools.vodafone-ip.de) |
| 12:18:58 | × | sayola quits (~vekto@dslb-002-201-085-157.002.201.pools.vodafone-ip.de) (Ping timeout: 252 seconds) |
| 12:19:03 | × | mmfood quits (~mmfood@185.176.246.69) (Ping timeout: 268 seconds) |
| 12:22:52 | × | geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 240 seconds) |
| 12:23:11 | × | star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 240 seconds) |
| 12:27:58 | → | loller_ joins (uid358106@gateway/web/irccloud.com/x-gvifcnmgsfzryozd) |
| 12:30:51 | → | jonathanx_ joins (~jonathan@h-176-109.A357.priv.bahnhof.se) |
| 12:31:29 | → | seven_th` joins (~user@pool-96-233-64-53.bstnma.fios.verizon.net) |
| 12:32:37 | × | jonathanx quits (~jonathan@h-176-109.A357.priv.bahnhof.se) (Ping timeout: 268 seconds) |
| 12:32:38 | × | jonathanx_ quits (~jonathan@h-176-109.A357.priv.bahnhof.se) (Remote host closed the connection) |
| 12:33:41 | × | knupfer quits (~Thunderbi@200116b82b5e7400a819040ab136d554.dip.versatel-1u1.de) (Ping timeout: 245 seconds) |
| 12:34:03 | → | jonathanx joins (~jonathan@h-176-109.A357.priv.bahnhof.se) |
| 12:35:23 | → | geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) |
| 12:35:26 | × | seven_three quits (~user@pool-96-233-64-53.bstnma.fios.verizon.net) (Ping timeout: 240 seconds) |
| 12:39:44 | → | CiaoSen joins (~Jura@p200300c9572bc100dd00e68a577d428e.dip0.t-ipconnect.de) |
| 12:40:08 | → | v01d4lph4 joins (~v01d4lph4@27.57.103.213) |
| 12:41:12 | → | nicholasbulka joins (~nicholasb@2601:900:4301:da0:bdc9:711a:32b8:207e) |
| 12:48:54 | → | sleblanc joins (~sleblanc@unaffiliated/sebleblanc) |
| 12:51:18 | → | heatsink joins (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 12:51:37 | <nut_> | test |
| 12:51:47 | × | nut_ quits (~gtk@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Quit: WeeChat 2.8) |
| 12:52:02 | → | nut joins (~gtk@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
| 12:55:26 | × | heatsink quits (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds) |
| 12:55:41 | × | mrchampion quits (~mrchampio@38.18.109.23) (Ping timeout: 240 seconds) |
| 12:56:11 | × | nut quits (~gtk@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 240 seconds) |
| 12:58:33 | → | mrchampion joins (~mrchampio@38.18.109.23) |
| 13:01:04 | → | Tario joins (~Tario@201.192.165.173) |
| 13:01:06 | → | nut joins (~gtk@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
| 13:01:37 | → | dmytrish joins (~mitra@2a02:8084:a82:d900:fdd2:ac3d:3471:66d9) |
| 13:01:39 | → | heatsink joins (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 13:01:53 | × | dpl_ quits (~dpl@77-121-78-163.chn.volia.net) (Quit: dpl_) |
| 13:04:17 | <pjb> | tomsmeding: is it still true? It's documented, https://docs.python.org/3/reference/ and they have the PEPs process to standardize things. https://www.python.org/dev/peps/ But granted, they don't seem to have an "official" standard such as ANSI or ISO. |
| 13:04:54 | <tomsmeding> | I honestly don't really know, perhaps I spoke too soon :p |
| 13:05:20 | <tomsmeding> | that's true, the reference tries to be implementation-agnostic |
| 13:05:46 | × | heatsink quits (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 245 seconds) |
| 13:07:41 | <whataday> | what's the difference of MaybeT IO a and IO (Maybe a) to use? MaybeT IO is monad so we can use fmap apply f on a directly, but IO (Maybe a) we need to use fmap . fmap $ f? |
| 13:08:03 | <Taneb> | whataday: that's pretty much it |
| 13:08:07 | × | dmytrish quits (~mitra@2a02:8084:a82:d900:fdd2:ac3d:3471:66d9) (Ping timeout: 260 seconds) |
| 13:10:07 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 13:10:07 | → | dmytrish joins (~mitra@2a02:8084:a82:d900:fdd2:ac3d:3471:66d9) |
| 13:11:35 | → | heatsink joins (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 13:12:39 | <whataday> | fetchUrl :: Url -> MaybeT IO a; traverse fetchUrl [Url1, Url2] :: ? |
| 13:13:32 | <tomsmeding> | :t traverse |
| 13:13:34 | <lambdabot> | (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b) |
| 13:14:04 | <tomsmeding> | f = MaybeT IO; t = []; so MaybeT IO [a] |
| 13:14:46 | <tomsmeding> | and a = Url and b = your a |
| 13:14:50 | <whataday> | does it need runMaybeT to extract IO actions from list? |
| 13:15:00 | <tomsmeding> | which "it"? |
| 13:15:03 | × | dsrt^ quits (dsrt@ip98-184-89-2.mc.at.cox.net) () |
| 13:15:42 | → | ddellaco_ joins (~ddellacos@ool-44c73afa.dyn.optonline.net) |
| 13:15:48 | <whataday> | traverse (runMaybeT . fetchUrl) [Url] |
| 13:15:55 | → | knupfer joins (~Thunderbi@200116b82b5e7400d544a78922962f4e.dip.versatel-1u1.de) |
| 13:15:55 | <tomsmeding> | if you're talking about "traverse": no traverse is implemented using just the methods from Traversable and Applicative |
| 13:16:22 | × | heatsink quits (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 265 seconds) |
| 13:16:26 | <tomsmeding> | runMaybeT :: MaybeT IO a -> IO (Maybe a); runMaybeT . fetchUrl :: Url -> IO (Maybe a) |
| 13:16:40 | <whataday> | yes, I mean Data.Traversable |
| 13:16:41 | <tomsmeding> | IO (Maybe a) is not of the form 'f b' for some f |
| 13:16:46 | <tomsmeding> | so you can't use traverse like that |
| 13:17:03 | <tomsmeding> | @src traverse |
| 13:17:03 | <lambdabot> | Source not found. |
| 13:17:05 | <tomsmeding> | aw |
| 13:17:20 | <whataday> | and MaybeT IO is an instance of Traverable? |
| 13:17:41 | <tomsmeding> | https://hackage.haskell.org/package/transformers-0.5.6.2/docs/src/Control.Monad.Trans.Maybe.html#line-129 |
| 13:18:03 | <tomsmeding> | I guess pattern-matching on the MaybeT like that is equivalent to using runMaybeT |
| 13:18:31 | <tomsmeding> | given the definition of MaybeT, which is: https://hackage.haskell.org/package/transformers-0.5.6.2/docs/src/Control.Monad.Trans.Maybe.html#MaybeT |
| 13:18:37 | × | cfricke quits (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 3.1) |
| 13:19:57 | → | ddellacosta joins (~ddellacos@ool-44c73afa.dyn.optonline.net) |
| 13:19:58 | × | ddellaco_ quits (~ddellacos@ool-44c73afa.dyn.optonline.net) (Read error: Connection reset by peer) |
| 13:21:18 | → | hyperisco joins (~hyperisco@d192-186-117-226.static.comm.cgocable.net) |
| 13:26:07 | → | v01d4lph_ joins (~v01d4lph4@27.57.103.213) |
| 13:26:07 | × | v01d4lph4 quits (~v01d4lph4@27.57.103.213) (Read error: Connection reset by peer) |
| 13:27:08 | ← | seven_th` parts (~user@pool-96-233-64-53.bstnma.fios.verizon.net) ("ERC (IRC client for Emacs 27.2)") |
| 13:27:10 | → | ep1ctetus joins (~epictetus@ip72-194-54-201.sb.sd.cox.net) |
| 13:28:21 | → | safinaskar joins (6dfc5a88@109.252.90.136) |
| 13:29:47 | → | carlomagno joins (~cararell@148.87.23.7) |
| 13:31:23 | × | ep1ctetus quits (~epictetus@ip72-194-54-201.sb.sd.cox.net) (Read error: Connection reset by peer) |
| 13:32:44 | → | kiweun joins (~kiweun@2607:fea8:2a62:9600:30fd:c878:bb31:174a) |
| 13:35:31 | <safinaskar> | hi. i continue to write my lexer. i got this problem: to write function "f" with type [(a, Maybe b)] -> [(a, b)]. This function should return pairs which have "Just" at their second element. how to do this? i can write such solution: "f list = map (\(x, Just y) -> (x, y)) $ filter (isJust . snd) list". Unfortunately, this solution contains lambda |
| 13:35:32 | <safinaskar> | "\(x, Just y) -> (x, y)" with potentially failing pattern. Of course, in this particular case this pattern will never fail, but in general such patterns can fail, so i think this code is ugly. Is there better way? |
| 13:37:01 | × | kiweun quits (~kiweun@2607:fea8:2a62:9600:30fd:c878:bb31:174a) (Ping timeout: 245 seconds) |
| 13:37:11 | <merijn> | You can (ab)use list comprehension syntax |
| 13:37:55 | <merijn> | > [(x, y) | (x, Just y) <- [(True, Nothing), (False, Just 1), (True, Just 2), (True, Nothing), (False, Nothing)] |
| 13:37:56 | <lambdabot> | <hint>:1:111: error: |
| 13:37:57 | <lambdabot> | <hint>:1:111: error: |
| 13:37:57 | <lambdabot> | parse error (possibly incorrect indentation or mismatched brackets) |
| 13:38:02 | <merijn> | eh, whoops |
| 13:38:05 | <merijn> | > [(x, y) | (x, Just y) <- [(True, Nothing), (False, Just 1), (True, Just 2), (True, Nothing), (False, Nothing)]] |
| 13:38:07 | <lambdabot> | [(False,1),(True,2)] |
| 13:38:09 | → | timCF joins (~i.tkachuk@200-149-20-81.sta.estpak.ee) |
| 13:38:13 | → | bitmagie joins (~Thunderbi@200116b8063572001499edd4f9d505b9.dip.versatel-1u1.de) |
| 13:38:42 | <safinaskar> | merijn: thanks a lot |
| 13:40:23 | <kuribas> | safinaskar: "Unfortunately, this solution contains lambda", what's unfortunate about that? |
| 13:40:44 | <merijn> | kuribas: "a lambda with a potential failing pattern" |
| 13:40:54 | <safinaskar> | kuribas: function (\(x, Just y) -> (x, y)) is partial |
| 13:41:00 | <kuribas> | ah right |
| 13:41:14 | <merijn> | tbh, I think this is one of the few cases where I actually prefer list comprehensions over anything else |
| 13:41:33 | <merijn> | The "pattern match failure is filtered out" semantics is very nice |
| 13:41:35 | <timCF> | Hello! Is there any good way to represent side-effect rich computation in a compact way with some sort of Alternative applications? If I simplify, my case might look like multiple `IO Bool` expressions, whcih I want to sequentially evaluate until one of them will return `IO True`. Basically I'm looking for something like `a <|> b <|> c` where parameters are these expressions (pseudo-code) |
| 13:42:05 | <kuribas> | safinaskar: you could use mapMaybe in that case. |
| 13:42:22 | <kuribas> | safinaskar: a comprehension is nicer, but more magical. |
| 13:42:23 | <merijn> | kuribas: Sure...or you can use the trivial list comprehension :p |
| 13:42:38 | → | jao joins (~jao@pdpc/supporter/professional/jao) |
| 13:42:58 | <hyperisco> | timCF, at the least you can just define your own operator, if that is a syntax you like |
| 13:43:29 | <kuribas> | timCF: what is IO True? |
| 13:43:57 | <hyperisco> | timCF, you may also want to look at definitions like allM |
| 13:44:00 | <timCF> | hyperisco: maybe there is some standard thing for that? I just don't want nested bind + if then else |
| 13:44:06 | <kuribas> | timCF: I think what you ask is, an expression that performance side-effects until one returns True? |
| 13:44:18 | <timCF> | kuribas: yes |
| 13:45:53 | <timCF> | kuribas: in my example `a <|> b <|> c` I want all expression to return True and don't evaluate `c` in case where `b` is True |
| 13:46:32 | <kuribas> | timCF: there isn't something standard like that AFAIK. |
| 13:46:37 | <timCF> | kuribas: But expressions are not just Bool, they are `m Bool` |
| 13:48:15 | × | aVikingTrex quits (~aVikingTr@2001:8003:340d:d00:b2de:b98:7a93:b0ea) (Ping timeout: 260 seconds) |
| 13:48:25 | × | pfurla quits (~pfurla@ool-182ed2e2.dyn.optonline.net) (Quit: Textual IRC Client: www.textualapp.com) |
| 13:48:53 | <wz1000> | timCF: extra has orM and variations |
| 13:49:31 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.1) |
| 13:49:39 | × | dmytrish quits (~mitra@2a02:8084:a82:d900:fdd2:ac3d:3471:66d9) (Ping timeout: 260 seconds) |
| 13:49:40 | <kuribas> | :t liftA2 (&&) . unsafeInterleaveIO |
| 13:49:42 | <lambdabot> | error: |
| 13:49:42 | <lambdabot> | Variable not in scope: unsafeInterleaveIO :: a -> f Bool |
| 13:50:12 | × | sleblanc quits (~sleblanc@unaffiliated/sebleblanc) (Ping timeout: 240 seconds) |
| 13:50:45 | → | dmytrish joins (~mitra@2a02:8084:a82:d900:fdd2:ac3d:3471:66d9) |
| 13:51:17 | <timCF> | kuribas: thanks, I think I did found what I want |
| 13:51:36 | <timCF> | :t (||^) |
| 13:51:38 | <lambdabot> | error: |
| 13:51:38 | <lambdabot> | • Variable not in scope: ||^ |
| 13:51:38 | <lambdabot> | • Perhaps you meant one of these: |
| 13:53:01 | × | Tario quits (~Tario@201.192.165.173) (Ping timeout: 260 seconds) |
| 13:53:27 | → | Tario joins (~Tario@200.119.185.49) |
| 13:53:40 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 13:55:46 | × | mrchampion quits (~mrchampio@38.18.109.23) (Ping timeout: 245 seconds) |
| 13:57:27 | <wz1000> | asymmetric operators for "commutative" operations are so frustruating |
| 13:57:28 | × | Tario quits (~Tario@200.119.185.49) (Read error: Connection reset by peer) |
| 13:57:59 | <wz1000> | (yes, I know this is not exactly commutative, but it is morally) |
| 13:58:28 | <wz1000> | even then that is so ugly. ||> might have been better (|| + >>) |
| 13:58:33 | → | pfurla joins (~pfurla@ool-182ed2e2.dyn.optonline.net) |
| 13:59:00 | → | Tario joins (~Tario@201.192.165.173) |
| 14:00:27 | → | aVikingTrex joins (~aVikingTr@2001:8003:340d:d00:b2de:b98:7a93:b0ea) |
| 14:01:19 | × | dmytrish quits (~mitra@2a02:8084:a82:d900:fdd2:ac3d:3471:66d9) (Ping timeout: 260 seconds) |
| 14:01:40 | → | tatsumaru joins (~tatsumaru@85.196.189.103) |
| 14:02:59 | → | vs^ joins (vs@ip98-184-89-2.mc.at.cox.net) |
| 14:04:13 | × | hypercube quits (hypercube@gateway/vpn/protonvpn/hypercube) (Quit: WeeChat 3.1) |
| 14:04:42 | × | CiaoSen quits (~Jura@p200300c9572bc100dd00e68a577d428e.dip0.t-ipconnect.de) (Quit: CiaoSen) |
| 14:04:58 | <tatsumaru> | what does x xs xxs etc. mean in haskell notation? |
| 14:05:13 | <tatsumaru> | actually I know what x is, I just don't understand xs xxs |
| 14:05:39 | <hpc> | xs is the plural of x |
| 14:05:41 | × | zaquest quits (~notzaques@5.128.210.178) (Quit: Leaving) |
| 14:05:44 | × | pfurla quits (~pfurla@ool-182ed2e2.dyn.optonline.net) (Quit: Textual IRC Client: www.textualapp.com) |
| 14:06:01 | <hpc> | like how you might write "for item in items" in other languages |
| 14:06:04 | <kuribas> | doesn't that come from prolog? |
| 14:06:14 | <merijn> | tatsumaru: one pig, multiple pigS, one bike, multiple bikeS, one x, multiple xS :) |
| 14:06:22 | → | pfurla joins (~pfurla@ool-182ed2e2.dyn.optonline.net) |
| 14:06:25 | × | berberman_ quits (~berberman@unaffiliated/berberman) (Ping timeout: 250 seconds) |
| 14:06:38 | <tatsumaru> | so s is just plural? |
| 14:06:41 | <merijn> | yeah |
| 14:06:52 | <tatsumaru> | ah that was simpler that I thought, thanks |
| 14:06:56 | <tatsumaru> | than* |
| 14:07:16 | → | berberman joins (~berberman@unaffiliated/berberman) |
| 14:07:52 | <merijn> | tatsumaru: You could write "(item:items)" instead of "(x:xs)", but that's more typing and not really any clearer/more meaningful :) |
| 14:08:03 | <timCF> | tatsumaru: but what do you mean by `xxs` then? |
| 14:08:24 | <merijn> | timCF: That's sometimes a name for lists of lists |
| 14:08:50 | <timCF> | merijn: hmm, I'll write `xss` in this case :) |
| 14:10:43 | → | mrchampion joins (~mrchampio@38.18.109.23) |
| 14:10:46 | <tatsumaru> | this is where I saw xxs: ghci> [ [ x | x <- xs, even x ] | xs <- xxs] |
| 14:11:16 | <tatsumaru> | where in that particular case xxs was [[1,3,5,2,3,1,2,4,5], [1,2,3,4,5,6,7,8,9], |
| 14:11:16 | <tatsumaru> | [1,2,4,2,1,6,3,1,3,2,3,6]] |
| 14:11:27 | <tatsumaru> | sorry for the new line it was unintentional |
| 14:11:57 | <tatsumaru> | but indeed xss seems more logical |
| 14:13:05 | <tatsumaru> | although one could argue that xxs means x of xs and makes sense that way |
| 14:13:19 | → | blankhart joins (~blankhart@pool-72-88-174-206.nwrknj.fios.verizon.net) |
| 14:13:51 | <blankhart> | when template haskell is run at compile-time, is the metaprogram compiled and run the same as any other program, maybe skipping certain optimizations for speed? |
| 14:14:38 | <merijn> | blankhart: After TH is run, the resulting AST is spliced into the code and then the whole thing is compiled as normal, yes |
| 14:15:00 | → | Sgeo joins (~Sgeo@ool-18b98aa4.dyn.optonline.net) |
| 14:19:01 | × | LKoen quits (~LKoen@92.163.9.109.rev.sfr.net) (Remote host closed the connection) |
| 14:19:03 | <blankhart> | sorry to clarify i am asking about how TH is run |
| 14:21:30 | × | bitmagie quits (~Thunderbi@200116b8063572001499edd4f9d505b9.dip.versatel-1u1.de) (Quit: bitmagie) |
| 14:21:30 | <blankhart> | for example, if i tell the compiler to use -O3 optimizations, i wouldn't think that means it compiles template haskell with -O3 and executes the optimized version at compile-time |
| 14:21:44 | <geekosaur> | TH code lives in the Q monad and is compiled and run in a ghci-like environment / interpreted |
| 14:22:58 | <geekosaur> | it can call imported compiled code but won't compile any code itself aside from to ghci bytecode (unless the splice itself does so) |
| 14:23:07 | → | rj joins (~x@gateway/tor-sasl/rj) |
| 14:24:45 | × | rdivyanshu quits (uid322626@gateway/web/irccloud.com/x-fcexcnqymecxutqt) (Quit: Connection closed for inactivity) |
| 14:27:17 | → | vdukhovni joins (64022765@100.2.39.101) |
| 14:27:22 | → | barakkl1993 joins (~barakkley@2.55.180.173) |
| 14:29:02 | → | zaquest joins (~notzaques@5.128.210.178) |
| 14:30:32 | → | Jd007 joins (~Jd007@162.156.11.151) |
| 14:30:53 | → | Guest78317 joins (~laudiacay@67.176.215.84) |
| 14:31:50 | → | Sheilong joins (uid293653@gateway/web/irccloud.com/x-dwdeqarjvkrgtrrf) |
| 14:31:54 | × | miklcct_ quits (quasselcor@2001:19f0:7001:5ad:5400:2ff:feb6:50d7) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.) |
| 14:32:08 | → | miklcct joins (quasselcor@2001:19f0:7001:5ad:5400:2ff:feb6:50d7) |
| 14:32:29 | ← | tatsumaru parts (~tatsumaru@85.196.189.103) () |
| 14:32:58 | → | LKoen joins (~LKoen@92.163.9.109.rev.sfr.net) |
| 14:35:08 | × | Guest78317 quits (~laudiacay@67.176.215.84) (Ping timeout: 246 seconds) |
| 14:35:46 | <merijn> | How can I increase the granularity of stack traces in profiling code? |
| 14:35:46 | → | star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) |
| 14:35:54 | → | frozenErebus joins (~frozenEre@37.231.244.249) |
| 14:36:05 | <merijn> | I'm getting an arithmetic overflow exception, but no clue from where |
| 14:36:09 | <blankhart> | got it, thanks geekosaur |
| 14:36:18 | <merijn> | And the -xc stack trace turns up nothing useful |
| 14:36:52 | × | barakkl1993 quits (~barakkley@2.55.180.173) (Ping timeout: 252 seconds) |
| 14:38:37 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:5c9e:8d21:d745:3944) |
| 14:39:25 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:5c9e:8d21:d745:3944) (Remote host closed the connection) |
| 14:40:27 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:2926:4844:fa1f:b849) |
| 14:42:08 | × | nut quits (~gtk@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 246 seconds) |
| 14:42:11 | <merijn> | Anyone? |
| 14:42:41 | → | Spanktar joins (~Spanktar@195.140.213.38) |
| 14:43:24 | <glguy> | % minBound `quot` (-1) :: Int |
| 14:43:24 | <yahb> | glguy: *** Exception: arithmetic overflow |
| 14:43:40 | <glguy> | Is that the main way to get that exception? |
| 14:44:21 | × | wavemode quits (~wavemode@097-070-075-143.res.spectrum.com) (Read error: Connection reset by peer) |
| 14:44:52 | <hc> | merijn: unusual that you're asking questions in here ;-) |
| 14:44:59 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:2926:4844:fa1f:b849) (Ping timeout: 250 seconds) |
| 14:45:45 | → | plakband joins (~plakband@softbank126227040096.bbtec.net) |
| 14:45:45 | → | wavemode joins (~wavemode@097-070-075-143.res.spectrum.com) |
| 14:46:37 | <merijn> | glguy: No clue? |
| 14:47:21 | → | cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net) |
| 14:47:39 | <glguy> | merijn: is something catching the exception and printing it without much info? Or is it making it up to the top level? |
| 14:48:30 | → | Deide joins (~Deide@217.155.19.23) |
| 14:49:24 | → | ep1ctetus joins (~epictetus@ip72-194-54-201.sb.sd.cox.net) |
| 14:49:55 | <merijn> | glguy: I'm running with -xc on profiled code, which gives a stack trace, but the stack trace is rather useless |
| 14:50:02 | <merijn> | It seems to only have two levels |
| 14:50:11 | <merijn> | So I still dunno where the exception is originating |
| 14:50:21 | × | rj quits (~x@gateway/tor-sasl/rj) (Ping timeout: 240 seconds) |
| 14:52:37 | → | rj joins (~x@gateway/tor-sasl/rj) |
| 14:54:52 | × | rekahsoft quits (~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com) (Ping timeout: 240 seconds) |
| 14:55:05 | <cjay> | What is currently the best way to make internals of a lib I'm writing accessible by tests and by `cabal repl`? I found a old reddit post that suggests moving everything to .Internal modules that expose everything, is this still the way to go? |
| 14:55:41 | × | rodriga quits (~quassel@134.204.25.66) (Ping timeout: 240 seconds) |
| 14:55:52 | × | rj quits (~x@gateway/tor-sasl/rj) (Remote host closed the connection) |
| 14:56:05 | <merijn> | cjay: Cabal now supports multiple (internal) libraries |
| 14:56:13 | → | rj joins (~x@gateway/tor-sasl/rj) |
| 14:56:31 | <merijn> | cjay: One thing you can do is have an internal implementation library that exports everything, then have your tests and the public library depend on that |
| 14:56:39 | <carbolymer> | merijn: stack support when |
| 14:56:48 | <cjay> | ah, that sounds a bit more elegant. thx. |
| 14:56:52 | <merijn> | cjay: And then the public library re-exports a subset of the internal lib |
| 14:57:00 | <merijn> | carbolymer: Ask the stack people? |
| 14:57:08 | <carbolymer> | merijn: yeah I should ;-] |
| 14:57:19 | <merijn> | Probably somewhere around "heat death of the universe"? |
| 14:57:26 | <cjay> | omg |
| 14:57:51 | <cjay> | I recently checked if stack supports backpack now. Of course it does not.. |
| 14:58:09 | <carbolymer> | merijn: that was funny one year ago ;-] I have rewritten internal libraries into separate packages since then |
| 14:58:09 | × | idhugo_ quits (~idhugo@87-49-45-4-mobile.dk.customer.tdc.net) (Ping timeout: 268 seconds) |
| 14:58:41 | <wz1000> | merijn: -fprof-auto? |
| 14:58:49 | <merijn> | cjay: Almost no one is using/pushing backpack atm, so I don't think the stack people are enthusiastic about implementing |
| 14:58:59 | <merijn> | wz1000: Cabal is supposed to add that, though |
| 14:59:19 | × | vdukhovni quits (64022765@100.2.39.101) (Quit: Connection closed) |
| 14:59:21 | <cjay> | and nobody wants to use backpack, because they don't want to be incompatible with stack, right? |
| 14:59:24 | <merijn> | wz1000: When you write -fprof-auto in your cabal file it complains that --enable-profiling adds that |
| 14:59:34 | → | rodriga joins (~quassel@134.204.25.66) |
| 14:59:38 | <merijn> | cjay: I dunno, personally I don't spend anytime worrying about supporting stack |
| 14:59:43 | × | aVikingTrex quits (~aVikingTr@2001:8003:340d:d00:b2de:b98:7a93:b0ea) (Ping timeout: 250 seconds) |
| 15:01:23 | <merijn> | cjay: I can highly recommend not giving a shit about people who don't pay you :) |
| 15:01:37 | <cjay> | :) |
| 15:01:47 | <merijn> | That applies to any open source project, language, and ecosystem, tbh |
| 15:02:59 | × | plakband quits (~plakband@softbank126227040096.bbtec.net) (Quit: WeeChat 2.9) |
| 15:03:28 | → | bitmagie joins (~Thunderbi@200116b8063572001499edd4f9d505b9.dip.versatel-1u1.de) |
| 15:07:04 | → | kiweun joins (~kiweun@2607:fea8:2a62:9600:68a0:cf01:7577:43eb) |
| 15:08:15 | <carbolymer> | merijn: what you're using instead of stack? |
| 15:11:22 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:5c9e:8d21:d745:3944) |
| 15:12:24 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:5c9e:8d21:d745:3944) (Remote host closed the connection) |
| 15:12:58 | <tomsmeding> | cabal |
| 15:13:14 | → | Wuzzy joins (~Wuzzy@p5790e74f.dip0.t-ipconnect.de) |
| 15:13:27 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:5c9e:8d21:d745:3944) |
| 15:13:48 | → | idhugo_ joins (~idhugo@87-49-147-45-mobile.dk.customer.tdc.net) |
| 15:14:10 | <merijn> | ^^ |
| 15:15:32 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:5c9e:8d21:d745:3944) (Remote host closed the connection) |
| 15:15:47 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:5c9e:8d21:d745:3944) |
| 15:17:20 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:5c9e:8d21:d745:3944) (Remote host closed the connection) |
| 15:17:33 | × | idhugo_ quits (~idhugo@87-49-147-45-mobile.dk.customer.tdc.net) (Remote host closed the connection) |
| 15:17:58 | → | idhugo_ joins (~idhugo@87-49-147-45-mobile.dk.customer.tdc.net) |
| 15:18:23 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:5c9e:8d21:d745:3944) |
| 15:21:32 | <carbolymer> | ok, when I've started using haskell I've read about 'cabal hell' and jumped right ahead to using stack |
| 15:21:42 | <carbolymer> | is that still an issue? |
| 15:22:11 | <geekosaur> | not since cabal v1, which didn't do a goo9d enough job of forcing ghc to see only what it should see for a given project] |
| 15:22:17 | → | myShoggoth joins (~myShoggot@75.164.11.109) |
| 15:22:20 | × | Sorna quits (~Sornaensi@79.142.232.102) (Read error: Connection reset by peer) |
| 15:22:41 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:5c9e:8d21:d745:3944) (Ping timeout: 250 seconds) |
| 15:22:48 | → | Sorny joins (~Sornaensi@077213200034.dynamic.telenor.dk) |
| 15:23:08 | <carbolymer> | so basically, is there any advantage of stack over pure cabal, except that stack installs GHC for me |
| 15:23:17 | <carbolymer> | ? |
| 15:23:46 | <hpc> | stack has a currated package set |
| 15:23:51 | <hpc> | although the value of that is dubious |
| 15:24:20 | <sclv> | right -- if you stick to it that set, its nice, but if you end up using stuff outside that set its possible, but much more of a pain than letting cabal solve things for you |
| 15:24:36 | × | v01d4lph_ quits (~v01d4lph4@27.57.103.213) (Remote host closed the connection) |
| 15:24:40 | × | ep1ctetus quits (~epictetus@ip72-194-54-201.sb.sd.cox.net) (Remote host closed the connection) |
| 15:25:01 | → | ep1ctetus joins (~epictetus@ip72-194-54-201.sb.sd.cox.net) |
| 15:25:10 | → | v01d4lph4 joins (~v01d4lph4@27.57.103.213) |
| 15:25:35 | <hpc> | it's like a less extreme version of using distro packages |
| 15:26:15 | × | bitmagie quits (~Thunderbi@200116b8063572001499edd4f9d505b9.dip.versatel-1u1.de) (Quit: bitmagie) |
| 15:27:04 | <cjay> | I recently learned that you can just download a cabal.project from stackage that freezes all package versions to the stackage snapshot |
| 15:27:13 | <cjay> | so you can use stackage without using stack |
| 15:27:25 | <carbolymer> | ^ yeah I was just wondering about that |
| 15:27:31 | <timCF> | cjay: wow, that's cool! |
| 15:27:37 | × | justsomeguy quits (~justsomeg@unaffiliated/--/x-3805311) (Quit: WeeChat 3.0.1) |
| 15:27:39 | <carbolymer> | if it would be possible to pin the versions without causing breakage |
| 15:27:43 | <carbolymer> | in cabal |
| 15:27:57 | <timCF> | cjay: do you have any example/links how to do so? |
| 15:28:30 | <cjay> | you go to the stackage snapshot, and add cabal.config to the url, like with https://www.stackage.org/lts-17.9/cabal.config |
| 15:28:40 | <geekosaur> | cabal has freeze files that can pin versions, stackage would just be providing one that covered a particular stackage release |
| 15:29:19 | → | Sornaensis joins (~Sornaensi@79.142.232.102.static.router4.bolignet.dk) |
| 15:29:26 | <timCF> | cjay: that's simple! Thanks! |
| 15:29:48 | → | falafel_ joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
| 15:29:51 | × | v01d4lph4 quits (~v01d4lph4@27.57.103.213) (Ping timeout: 260 seconds) |
| 15:30:09 | <cjay> | :) |
| 15:31:09 | <timCF> | also I was thinking that nix-shell with some pinned version of nixpkgs might be nice replacement for stackage. I'm using nix for builds, and stackage for local development. But maybe stack just become irrelevant if I'll switch completely to nixpkgs |
| 15:32:11 | × | Sorny quits (~Sornaensi@077213200034.dynamic.telenor.dk) (Ping timeout: 265 seconds) |
| 15:32:23 | → | horatiohb joins (~horatiohb@138.197.103.32) |
| 15:32:24 | → | timCF_ joins (~i.tkachuk@254-149-20-81.sta.estpak.ee) |
| 15:34:19 | → | ubert joins (~Thunderbi@62-47-7-125.adsl.highway.telekom.at) |
| 15:34:21 | × | rj quits (~x@gateway/tor-sasl/rj) (Ping timeout: 240 seconds) |
| 15:36:03 | × | ericsagnes quits (~ericsagne@2405:6580:0:5100:dde9:bfa7:6f37:dd87) (Ping timeout: 260 seconds) |
| 15:36:11 | × | geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 240 seconds) |
| 15:37:38 | <whataday> | since IO isn't a data constructor, how to express IO in value level? |
| 15:37:46 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 15:38:06 | → | Lycurgus joins (~niemand@98.4.118.65) |
| 15:38:28 | <whataday> | except 'return 3' , which value would have type MaybeT IO Int? |
| 15:38:32 | → | Deide1 joins (~Deide@217.155.19.23) |
| 15:39:29 | → | rj joins (~x@gateway/tor-sasl/rj) |
| 15:39:38 | → | malumore joins (~malumore@151.62.122.70) |
| 15:39:56 | <Taneb> | :t liftIO readLn :: MaybeT IO Int |
| 15:39:58 | <lambdabot> | MaybeT IO Int |
| 15:40:36 | <timCF_> | whataday: what's wrong with `return`? It's valid constructor for IO |
| 15:41:01 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
| 15:41:32 | × | Deide quits (~Deide@217.155.19.23) (Ping timeout: 240 seconds) |
| 15:41:53 | <whataday> | how I can return Nothing? |
| 15:42:15 | <Taneb> | :t mzero :: MaybeT IO Int |
| 15:42:17 | <lambdabot> | MaybeT IO Int |
| 15:42:21 | <Taneb> | :t MaybeT Nothing :: MaybeT IO Int |
| 15:42:23 | <lambdabot> | error: |
| 15:42:23 | <lambdabot> | • Couldn't match type ‘Maybe’ with ‘IO’ |
| 15:42:23 | <lambdabot> | Expected type: MaybeT IO Int |
| 15:42:29 | <Taneb> | :t MaybeT (return Nothing) :: MaybeT IO Int |
| 15:42:31 | <lambdabot> | MaybeT IO Int |
| 15:42:32 | × | malumore_ quits (~malumore@151.62.122.70) (Ping timeout: 240 seconds) |
| 15:42:39 | <Taneb> | :t empty :: MaybeT IO Int |
| 15:42:41 | <lambdabot> | MaybeT IO Int |
| 15:42:41 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds) |
| 15:42:45 | <Taneb> | whataday: pick your favourite |
| 15:44:20 | <whataday> | I see |
| 15:47:34 | → | Sorna joins (~Sornaensi@077213200034.dynamic.telenor.dk) |
| 15:48:34 | → | ericsagnes joins (~ericsagne@2405:6580:0:5100:d0df:45b4:dde8:f059) |
| 15:48:46 | × | tmciver quits (~tmciver@cpe-172-101-40-226.maine.res.rr.com) (Ping timeout: 240 seconds) |
| 15:50:54 | → | tmciver joins (~tmciver@cpe-172-101-40-226.maine.res.rr.com) |
| 15:52:01 | × | Sornaensis quits (~Sornaensi@79.142.232.102.static.router4.bolignet.dk) (Ping timeout: 260 seconds) |
| 15:53:43 | × | timCF_ quits (~i.tkachuk@254-149-20-81.sta.estpak.ee) (Quit: leaving) |
| 15:54:59 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 15:57:21 | × | chele quits (~chele@5.53.222.202) (Remote host closed the connection) |
| 15:58:42 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:5c9e:8d21:d745:3944) |
| 16:04:56 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:5c9e:8d21:d745:3944) (Ping timeout: 245 seconds) |
| 16:06:19 | × | falafel_ quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 252 seconds) |
| 16:07:20 | → | cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) |
| 16:07:33 | → | falafel_ joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
| 16:09:05 | → | heatsink joins (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 16:12:15 | → | justsomeguy joins (~justsomeg@unaffiliated/--/x-3805311) |
| 16:13:53 | × | myShoggoth quits (~myShoggot@75.164.11.109) (Remote host closed the connection) |
| 16:14:12 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 16:14:17 | → | myShoggoth joins (~myShoggot@75.164.11.109) |
| 16:15:35 | × | xsperry quits (~as@unaffiliated/xsperry) () |
| 16:18:11 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
| 16:19:11 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 16:19:40 | → | Ccasesvilla joins (4a4fd19e@cpe-74-79-209-158.twcny.res.rr.com) |
| 16:21:18 | <safinaskar> | merijn: cjay: carbolymer: tomsmeding: geekosaur: shortly after haskell foundation (hf) announcement someone wrote to hf mailing list asking to "Do something about Cabal". i. e. the poster asked hf to spend money for fixing long standing cabal problems. https://mail.haskell.org/pipermail/hf-discuss/2020-December/thread.html |
| 16:21:28 | × | justsomeguy quits (~justsomeg@unaffiliated/--/x-3805311) (Quit: WeeChat 3.0.1) |
| 16:22:26 | <carbolymer> | I think I saw that, I don't remember the outcome from this discussion though |
| 16:22:29 | <sclv> | well development stalled a bit as some active maintainers became inactive, but lately there's been a lot more activity again |
| 16:22:41 | <sclv> | with a whole new wave of people becoming involved |
| 16:22:53 | <sclv> | that's just the lifecycle of long running software projects |
| 16:22:54 | × | ram19890 quits (~ram@183.83.155.58) (Read error: No route to host) |
| 16:23:11 | → | ram19890 joins (~ram@183.83.155.58) |
| 16:23:27 | <geekosaur> | I'm finding modern cabal fairly congenial, aside from lots of extra files (cabal.project cabal.project.local cabal.freeze etc.) |
| 16:23:43 | × | pavonia quits (~user@unaffiliated/siracusa) (Quit: Bye!) |
| 16:24:06 | <sclv> | yeah i mean the work that's stalled is like experience improvements 90% (better docs, easier command discoverability, convenience flags) |
| 16:24:23 | <sclv> | the other 10% is "power features" where there are rough edges, like hpc support being dodgy, etc |
| 16:24:37 | × | falafel_ quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Remote host closed the connection) |
| 16:24:43 | × | kritzefitz quits (~kritzefit@2003:5b:203b:200::10:49) (Remote host closed the connection) |
| 16:25:08 | ← | safinaskar parts (6dfc5a88@109.252.90.136) () |
| 16:25:16 | → | falafel_ joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
| 16:26:12 | × | falafel_ quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Remote host closed the connection) |
| 16:26:31 | → | falafel_ joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) |
| 16:26:51 | → | geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) |
| 16:27:38 | <tomsmeding> | they left :p |
| 16:27:43 | → | michalz joins (~user@185.246.204.47) |
| 16:28:05 | <dolio> | That original mail doesn't seem like it's based on a realistic picture of why there are two build systems in teh first place. |
| 16:28:42 | → | Ariakenom joins (~Ariakenom@2001:9b1:efb:fc00:4cdc:6166:590b:6cfe) |
| 16:31:33 | × | rj quits (~x@gateway/tor-sasl/rj) (Ping timeout: 240 seconds) |
| 16:32:14 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:5c9e:8d21:d745:3944) |
| 16:32:51 | × | geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 245 seconds) |
| 16:33:45 | → | kritzefitz joins (~kritzefit@212.86.56.80) |
| 16:35:16 | → | rj joins (~x@gateway/tor-sasl/rj) |
| 16:35:55 | → | howdoi joins (uid224@gateway/web/irccloud.com/x-bfpmhrutqdycibjm) |
| 16:36:00 | → | slack1256 joins (~slack1256@200-112-79-98.baf.movistar.cl) |
| 16:36:45 | × | abhixec quits (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Quit: leaving) |
| 16:39:22 | × | falafel_ quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 265 seconds) |
| 16:39:43 | <slack1256> | I have been enjoying the `extensible` package for records/variants. Apart from the ordering constrains imposed by the HList, what am I missing from a true structural type system as in purescript? |
| 16:40:37 | × | gnumonic quits (~gnumonic@c-73-170-91-210.hsd1.ca.comcast.net) (Ping timeout: 252 seconds) |
| 16:42:37 | → | son0p joins (~ff@181.136.122.143) |
| 16:43:07 | → | xsperry joins (~as@unaffiliated/xsperry) |
| 16:46:30 | × | kuribas quits (~user@ptr-25vy0i8p1spa6dozdqg.18120a2.ip6.access.telenet.be) (Remote host closed the connection) |
| 16:47:41 | × | ram19890 quits (~ram@183.83.155.58) (Ping timeout: 240 seconds) |
| 16:49:05 | → | Sorny joins (~Sornaensi@79.142.232.102.static.router4.bolignet.dk) |
| 16:51:36 | × | Sorna quits (~Sornaensi@077213200034.dynamic.telenor.dk) (Ping timeout: 245 seconds) |
| 16:52:26 | × | ashesham` quits (~user@d8D87D1B0.access.telenet.be) (Ping timeout: 240 seconds) |
| 16:56:38 | × | Lycurgus quits (~niemand@98.4.118.65) (Quit: Exeunt) |
| 17:01:57 | × | LKoen quits (~LKoen@92.163.9.109.rev.sfr.net) (Remote host closed the connection) |
| 17:05:15 | → | geowiesnot joins (~user@87-89-181-157.abo.bbox.fr) |
| 17:06:22 | × | Ccasesvilla quits (4a4fd19e@cpe-74-79-209-158.twcny.res.rr.com) (Ping timeout: 240 seconds) |
| 17:10:46 | × | idhugo_ quits (~idhugo@87-49-147-45-mobile.dk.customer.tdc.net) (Ping timeout: 245 seconds) |
| 17:11:28 | → | hypercube joins (hypercube@gateway/vpn/protonvpn/hypercube) |
| 17:11:37 | × | coot quits (~coot@37.30.50.130.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
| 17:14:15 | × | carldd quits (~carldd@90-224-49-113-no56.tbcn.telia.com) (Read error: Connection reset by peer) |
| 17:14:57 | → | carldd joins (~carldd@90-224-49-113-no56.tbcn.telia.com) |
| 17:15:09 | × | rj quits (~x@gateway/tor-sasl/rj) (Ping timeout: 240 seconds) |
| 17:15:45 | → | LKoen joins (~LKoen@92.163.9.109.rev.sfr.net) |
| 17:20:07 | → | rj joins (~x@gateway/tor-sasl/rj) |
| 17:21:00 | × | nicholasbulka quits (~nicholasb@2601:900:4301:da0:bdc9:711a:32b8:207e) (Remote host closed the connection) |
| 17:21:19 | <hyperisco> | slack1256, I'd like to know too. I use PS but I don't use extensible |
| 17:21:32 | → | justsomeguy joins (~justsomeg@unaffiliated/--/x-3805311) |
| 17:21:36 | → | nicholasbulka joins (~nicholasb@2601:900:4301:da0:bdc9:711a:32b8:207e) |
| 17:22:16 | <hyperisco> | if HList does not recognise records with the same fields are equivalent then I'd consider that a major difference |
| 17:26:11 | × | nicholasbulka quits (~nicholasb@2601:900:4301:da0:bdc9:711a:32b8:207e) (Ping timeout: 250 seconds) |
| 17:29:18 | → | ddellaco_ joins (~ddellacos@ool-44c73afa.dyn.optonline.net) |
| 17:31:12 | × | ddellacosta quits (~ddellacos@ool-44c73afa.dyn.optonline.net) (Ping timeout: 240 seconds) |
| 17:32:19 | → | nyd joins (~nyd@unaffiliated/elysian) |
| 17:32:21 | × | malumore quits (~malumore@151.62.122.70) (Ping timeout: 260 seconds) |
| 17:35:57 | <justsomeguy> | Is there any way to suppress the "-- Defined at ${some_insanely_long_path}" messages in the output of GHCi's ":info" command? |
| 17:36:01 | → | Pickchea joins (~private@unaffiliated/pickchea) |
| 17:36:19 | <monochrom> | I think no. |
| 17:36:55 | <monochrom> | But I have found the message very valuable. |
| 17:38:06 | → | ashesham` joins (~user@d8D87D1B0.access.telenet.be) |
| 17:38:09 | → | Guest78317 joins (~laudiacay@67.176.215.84) |
| 17:38:32 | <monochrom> | "Do an :info X.ByteString and an :info Y.ByteString to see that they are the same re-exports" is my favourite way of telling off the wrong presumption "X.ByteString and Y.ByteString are different types". No, both say "Define at $(same long path)" therefore they are the same. |
| 17:39:21 | × | ubert quits (~Thunderbi@62-47-7-125.adsl.highway.telekom.at) (Ping timeout: 260 seconds) |
| 17:40:30 | → | vdukhovni joins (64022765@100.2.39.101) |
| 17:42:12 | × | Guest78317 quits (~laudiacay@67.176.215.84) (Ping timeout: 240 seconds) |
| 17:42:35 | → | ddellacosta joins (~ddellacos@ool-44c73afa.dyn.optonline.net) |
| 17:44:08 | × | frozenErebus quits (~frozenEre@37.231.244.249) (Ping timeout: 246 seconds) |
| 17:44:26 | × | ddellaco_ quits (~ddellacos@ool-44c73afa.dyn.optonline.net) (Ping timeout: 240 seconds) |
| 17:48:12 | → | nicholasbulka joins (~nicholasb@2601:900:4301:da0:bdc9:711a:32b8:207e) |
| 17:48:57 | × | DTZUZU quits (~DTZUZO@205.ip-149-56-132.net) (Read error: Connection reset by peer) |
| 17:49:55 | × | ddellacosta quits (~ddellacos@ool-44c73afa.dyn.optonline.net) (Ping timeout: 252 seconds) |
| 17:49:59 | → | ddellaco_ joins (~ddellacos@ool-44c73afa.dyn.optonline.net) |
| 17:50:32 | → | DTZUZU joins (~DTZUZO@205.ip-149-56-132.net) |
| 17:50:57 | <justsomeguy> | It's definitely useful, just verbose. When exploring new type classes interactively sometimes I get overwhelemed by the amount of output. For now, I guess I'll use a shell function to filter the output: gi() { echo ":info $1" | stack ghci | sed 's/--.*$//g'; } |
| 17:51:03 | <monochrom> | Nice life hack. |
| 17:51:19 | <justsomeguy> | It somehow worked out ^_^ |
| 17:53:29 | × | evanjs quits (~evanjs@075-129-098-007.res.spectrum.com) (Read error: Connection reset by peer) |
| 17:54:58 | → | evanjs joins (~evanjs@075-129-098-007.res.spectrum.com) |
| 17:55:20 | × | kritzefitz quits (~kritzefit@212.86.56.80) (Ping timeout: 246 seconds) |
| 17:55:46 | × | nicholasbulka quits (~nicholasb@2601:900:4301:da0:bdc9:711a:32b8:207e) (Ping timeout: 245 seconds) |
| 17:55:49 | → | Sornaensis joins (~Sornaensi@077213200034.dynamic.telenor.dk) |
| 17:57:04 | × | evanjs quits (~evanjs@075-129-098-007.res.spectrum.com) (Read error: Connection reset by peer) |
| 17:58:18 | → | evanjs joins (~evanjs@075-129-098-007.res.spectrum.com) |
| 17:58:32 | → | malumore joins (~malumore@151.62.122.70) |
| 17:59:01 | × | rajivr quits (uid269651@gateway/web/irccloud.com/x-xhstqsvcchluvrrc) (Quit: Connection closed for inactivity) |
| 17:59:11 | × | Sorny quits (~Sornaensi@79.142.232.102.static.router4.bolignet.dk) (Ping timeout: 240 seconds) |
| 17:59:57 | × | rj quits (~x@gateway/tor-sasl/rj) (Ping timeout: 240 seconds) |
| 18:00:51 | → | vicfred joins (~vicfred@unaffiliated/vicfred) |
| 18:03:06 | × | malumore quits (~malumore@151.62.122.70) (Ping timeout: 240 seconds) |
| 18:03:16 | → | rj joins (~x@gateway/tor-sasl/rj) |
| 18:06:19 | × | NinjaTrappeur quits (~ninja@unaffiliated/ninjatrappeur) (Ping timeout: 260 seconds) |
| 18:07:36 | <zzz> | hi. can someone walk me through why (join (.) f) === (f . f) when f :: (a -> a) ? |
| 18:08:43 | <ski> | @src join |
| 18:08:43 | <lambdabot> | join x = x >>= id |
| 18:08:48 | <ski> | @src (->) (>>=) |
| 18:08:48 | <lambdabot> | f >>= k = \ r -> k (f r) r |
| 18:09:22 | <ski> | join f |
| 18:09:35 | <ski> | = f >>= id |
| 18:09:46 | → | Ccasesvilla joins (4a4fd19e@cpe-74-79-209-158.twcny.res.rr.com) |
| 18:09:51 | <ski> | = \r -> id (f r) r |
| 18:09:57 | <ski> | = \r -> f r r |
| 18:10:03 | <ski> | so |
| 18:10:12 | <ski> | join (.) f |
| 18:10:21 | <ski> | = (.) f f |
| 18:10:26 | <ski> | = f . f |
| 18:10:59 | <tomsmeding> | neat |
| 18:14:12 | × | DavidEichmann quits (~david@147.136.46.217.dyn.plus.net) (Ping timeout: 240 seconds) |
| 18:15:05 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 18:15:15 | × | aveltras quits (uid364989@gateway/web/irccloud.com/x-nbetplnhypazvidp) (Quit: Connection closed for inactivity) |
| 18:16:48 | → | NinjaTrappeur joins (~ninja@unaffiliated/ninjatrappeur) |
| 18:19:49 | → | Ferdirand2 joins (~Ferdirand@2001:4c78:2012:5000::2) |
| 18:20:01 | × | Ferdirand2 quits (~Ferdirand@2001:4c78:2012:5000::2) (Client Quit) |
| 18:21:40 | <zzz> | when you ask lambdabot for @src (->) (>>=) you're asking it for the definition of (>>=) for the ((->) r) Monad, right? |
| 18:22:26 | <monochrom> | yeah |
| 18:22:30 | → | nicholasbulka joins (~nicholasb@2601:900:4301:da0:bdc9:711a:32b8:207e) |
| 18:22:48 | <zzz> | great. didn't know you could do that |
| 18:22:56 | <zzz> | @src Maybe (>>=) |
| 18:22:56 | <lambdabot> | (Just x) >>= k = k x |
| 18:22:56 | <lambdabot> | Nothing >>= _ = Nothing |
| 18:23:22 | <wroathe> | When using QuantifiedConstraints like (Show a, forall a. Show (t a)) => (Foo t a) I'm getting a warning saying that "a" shadows an existing binding. Are the a's distinct between the first constraint and the second constraint? It still seems to compile, even with the warning, and results in the behavior that I want. |
| 18:24:21 | <ski> | yes, they are |
| 18:24:55 | × | dyeplexer quits (~lol@unaffiliated/terpin) (Remote host closed the connection) |
| 18:25:23 | <ski> | saying `(Show a,forall b. Show (t b)) => Foo t a' might be less confusing for a reader |
| 18:25:54 | <wroathe> | ski: That's actually what I've already gone with, but I was just verifying my understanding |
| 18:26:01 | × | ashesham` quits (~user@d8D87D1B0.access.telenet.be) (Ping timeout: 252 seconds) |
| 18:26:50 | ski | nods |
| 18:27:33 | → | kritzefitz joins (~kritzefit@212.86.56.80) |
| 18:27:45 | <ski> | (i suppose you've confirmed you don't actually want `(Show a,forall b. Show b => Show (t b)) => Foo t a') |
| 18:28:54 | → | cfricke joins (~cfricke@unaffiliated/cfricke) |
| 18:29:07 | → | mmfood_2 joins (~mmfood@45.91.21.59) |
| 18:29:19 | × | mmfood_1 quits (~mmfood@45.91.21.58) (Ping timeout: 252 seconds) |
| 18:30:46 | × | justan0theruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 245 seconds) |
| 18:31:43 | × | notzmv quits (~zmv@unaffiliated/zmv) (Ping timeout: 252 seconds) |
| 18:31:53 | × | horatiohb quits (~horatiohb@138.197.103.32) (Ping timeout: 252 seconds) |
| 18:32:45 | × | vchlup quits (~vchlup@nat.brnet.cz) (Ping timeout: 268 seconds) |
| 18:36:47 | × | vdukhovni quits (64022765@100.2.39.101) (Quit: Connection closed) |
| 18:36:54 | → | pthariensflame joins (~pthariens@2600:6c52:727f:4200:edf5:29b5:ee6b:7a0f) |
| 18:37:04 | <wroathe> | ski: Nope, and I was just about to ask about that. |
| 18:37:16 | × | pthariensflame quits (~pthariens@2600:6c52:727f:4200:edf5:29b5:ee6b:7a0f) (Client Quit) |
| 18:38:38 | <wroathe> | Nice. That works like a charm. |
| 18:38:58 | → | Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) |
| 18:38:59 | <wroathe> | I always forget that you can apply constraints to variables in constraints |
| 18:44:21 | × | rj quits (~x@gateway/tor-sasl/rj) (Ping timeout: 240 seconds) |
| 18:45:12 | <wroathe> | ski: Thanks btw |
| 18:46:35 | → | coot joins (~coot@37.30.50.130.nat.umts.dynamic.t-mobile.pl) |
| 18:47:18 | × | HannaM quits (~quassel@p54849510.dip0.t-ipconnect.de) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.) |
| 18:48:59 | → | Guest_68 joins (4b1ac0c4@75-26-192-196.lightspeed.bcvloh.sbcglobal.net) |
| 18:49:02 | × | Guest_68 quits (4b1ac0c4@75-26-192-196.lightspeed.bcvloh.sbcglobal.net) (Client Quit) |
| 18:49:36 | → | invaser joins (~Thunderbi@31.148.23.125) |
| 18:49:36 | → | rj joins (~x@gateway/tor-sasl/rj) |
| 18:49:52 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 18:49:56 | → | safinaskar joins (~user@109.252.90.136) |
| 18:51:18 | × | wavemode quits (~wavemode@097-070-075-143.res.spectrum.com) (Remote host closed the connection) |
| 18:52:34 | → | usr25 joins (~usr25@unaffiliated/usr25) |
| 18:53:27 | → | wavemode joins (~wavemode@097-070-075-143.res.spectrum.com) |
| 18:56:01 | → | malumore joins (~malumore@151.62.122.70) |
| 18:58:37 | → | vdukhovni joins (64022765@100.2.39.101) |
| 18:59:09 | → | ludi49 joins (~hryhorij@ip595.t15.ds.pwr.wroc.pl) |
| 19:00:08 | ← | ludi49 parts (~hryhorij@ip595.t15.ds.pwr.wroc.pl) () |
| 19:00:41 | → | psygate joins (~psygate@unaffiliated/psygate) |
| 19:03:56 | × | NinjaTrappeur quits (~ninja@unaffiliated/ninjatrappeur) (Quit: WeeChat 3.1) |
| 19:04:02 | × | boogsbunny quits (17520e19@23.82.14.25) (Ping timeout: 240 seconds) |
| 19:04:47 | → | NinjaTrappeur joins (~ninja@unaffiliated/ninjatrappeur) |
| 19:09:53 | × | NinjaTrappeur quits (~ninja@unaffiliated/ninjatrappeur) (Ping timeout: 246 seconds) |
| 19:13:10 | → | NinjaTrappeur joins (~ninja@unaffiliated/ninjatrappeur) |
| 19:13:17 | mmfood_2 | is now known as mmfood |
| 19:13:21 | → | nut joins (~gtk@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
| 19:14:53 | <ski> | np |
| 19:17:07 | × | vdukhovni quits (64022765@100.2.39.101) (Quit: Connection closed) |
| 19:17:36 | × | vs^ quits (vs@ip98-184-89-2.mc.at.cox.net) () |
| 19:18:58 | → | pavonia joins (~user@unaffiliated/siracusa) |
| 19:19:17 | <infinisil> | Can cabal show a graph of how the modules depend on each other? |
| 19:19:21 | × | mikoto-chan quits (~anass@gateway/tor-sasl/mikoto-chan) (Quit: mikoto-chan) |
| 19:19:33 | → | mikoto-chan joins (~anass@gateway/tor-sasl/mikoto-chan) |
| 19:19:47 | × | LKoen quits (~LKoen@92.163.9.109.rev.sfr.net) (Remote host closed the connection) |
| 19:20:08 | <davean> | infinisil: not cabal, thats not what cabal does - it doesn't know hwat modules depend on what even - but there are tools |
| 19:20:22 | <davean> | infinisil: I think you've missunderstood what cabal does though if you think it understands Haskell source code at all. |
| 19:20:37 | <davean> | It does not. |
| 19:20:45 | <davean> | Thats GHC's job |
| 19:21:19 | <infinisil> | Oh, does cabal not call GHC multiple times then for each module? |
| 19:21:52 | × | geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 240 seconds) |
| 19:22:27 | <monochrom> | No. |
| 19:22:44 | <monochrom> | Ever did a "cabal build -v" to see how it calls GHC? |
| 19:23:10 | <monochrom> | It throws the complete module list at GHC in one go. |
| 19:23:17 | → | LKoen joins (~LKoen@92.163.9.109.rev.sfr.net) |
| 19:23:36 | <monochrom> | Admire the thousands-of-characters-long command line. |
| 19:24:19 | <monochrom> | I wouldn't want to be GHC. |
| 19:24:42 | <monochrom> | cabal : ghc :: me : my TAs |
| 19:24:46 | <monochrom> | my poor TAs |
| 19:24:52 | × | minoru_shiraeesh quits (~shiraeesh@109.166.59.151) (Ping timeout: 240 seconds) |
| 19:25:39 | → | minoru_shiraeesh joins (~shiraeesh@46.34.207.53) |
| 19:25:43 | <monochrom> | But it's alright, someone already wrote the heroic topological sort code in GHC decades ago, may as well actually use it. |
| 19:26:29 | <monochrom> | Too late to say "separation of concerns, this belongs to a makefile" now. :) |
| 19:26:58 | <davean> | Well, makefiles are more limited, and also not automatic. Makefiles get it wrong all the time |
| 19:27:09 | <sclv> | infinisil: there's a ghc command to generate a makefile, which in turn will encode the graph of dependencies |
| 19:27:09 | × | rj quits (~x@gateway/tor-sasl/rj) (Ping timeout: 240 seconds) |
| 19:27:10 | × | mmfood quits (~mmfood@45.91.21.59) (Quit: Leaving) |
| 19:27:16 | <davean> | I've seen a pile of makefiles that have to be run 3 or 4 times because they get it wrong |
| 19:27:34 | × | invaser quits (~Thunderbi@31.148.23.125) (Ping timeout: 265 seconds) |
| 19:27:47 | <infinisil> | monochrom: I see, thanks for the info |
| 19:27:48 | <monochrom> | Use "ghc -M" to output a correct makefile :) |
| 19:27:48 | → | notzmv joins (~zmv@unaffiliated/zmv) |
| 19:28:10 | <davean> | I mean theres things like SOurceGraph |
| 19:28:14 | <infinisil> | So, how can I get the graph of modules though? Any tool recommendations? |
| 19:28:34 | <monochrom> | Does "ghc -M"'s makefile count? :) |
| 19:28:44 | <monochrom> | It's an adjacency list... |
| 19:28:46 | <sclv> | you can run makefile2graph or a similar tool on it |
| 19:28:49 | <davean> | infinisil: and graphmod |
| 19:28:52 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
| 19:28:53 | × | d34df00d quits (~d34df00d@104-14-27-213.lightspeed.austtx.sbcglobal.net) (Read error: Connection reset by peer) |
| 19:29:11 | <infinisil> | Hm I see |
| 19:29:14 | <davean> | I haven't used any of the source representation tools in a few years |
| 19:29:15 | <infinisil> | Lemme try.. |
| 19:29:19 | <davean> | SourceGraph use to work great |
| 19:29:33 | <davean> | I don't actually find the graph useful though I found |
| 19:29:40 | <sclv> | its extremely bitrotted but shouldn't be hard to fix up: https://matrix.hackage.haskell.org/#/package/SourceGraph |
| 19:29:51 | <davean> | graphmod is probably less bitrotted |
| 19:29:53 | <monochrom> | Yeah a graph of packages is the useful one. |
| 19:30:06 | <infinisil> | In my case I want to see why a file is being recompiled so often |
| 19:30:07 | <davean> | monochrom: yah, that I've used once or twice recently |
| 19:30:16 | <davean> | infinisil: you might be looking in the wrong place? |
| 19:30:25 | <sclv> | oh graphmod looks like its in good shape: https://matrix.hackage.haskell.org/#/package/graphmod |
| 19:30:33 | <infinisil> | I mean I kinda know why, but it would be nice to have something visual |
| 19:30:46 | → | rj joins (~x@gateway/tor-sasl/rj) |
| 19:30:57 | × | nicholasbulka quits (~nicholasb@2601:900:4301:da0:bdc9:711a:32b8:207e) (Remote host closed the connection) |
| 19:31:04 | <infinisil> | davean: No I already know the problem, the file transitively depends on other frequently updated files |
| 19:32:12 | → | vchlup joins (~vchlup@nat.brnet.cz) |
| 19:32:19 | → | sdrodge_ joins (~sdrodge@unaffiliated/sdrodge) |
| 19:32:27 | <monochrom> | Yeah maybe try graphmod. (But I haven't.) |
| 19:32:41 | × | sdrodge quits (~sdrodge@unaffiliated/sdrodge) (Ping timeout: 240 seconds) |
| 19:32:50 | <infinisil> | Oh nice |
| 19:33:20 | <monochrom> | Does it just output the text file that graphviz wants to read? |
| 19:33:31 | <infinisil> | I'd expect so |
| 19:33:48 | infinisil | is installing graphmod |
| 19:34:35 | → | DavidEichmann joins (~david@147.136.46.217.dyn.plus.net) |
| 19:34:47 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 19:35:18 | infinisil | installs graphviz |
| 19:35:57 | <infinisil> | (or rather, adding it to the shell.nix) |
| 19:36:54 | infinisil | installs xdotool |
| 19:37:21 | × | wonko7 quits (~wonko7@62.115.229.50) (Ping timeout: 260 seconds) |
| 19:38:48 | <davean> | infinisil: why do you want xdotool for *this* task? |
| 19:39:10 | <infinisil> | Reading through https://github.com/yav/graphmod/wiki |
| 19:39:20 | <infinisil> | First example command is `find Data -name '*.hs' | xargs graphmod -q | xdot -` |
| 19:39:31 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 245 seconds) |
| 19:39:32 | <infinisil> | And I checked where the `xdot` binary comes from, apparently xdotool |
| 19:39:47 | <davean> | Uh |
| 19:39:49 | <infinisil> | But, as I just discovered, maybe not so after all, because I don't have xdot after installing xdotool |
| 19:39:56 | davean | looks at infinisil askew |
| 19:40:04 | <davean> | Yah I think you're off your rocker |
| 19:40:05 | <pjb> | Yes, me too… |
| 19:40:11 | <geekosaur> | that looks like a failed grep to me :) |
| 19:40:21 | <infinisil> | Huh? |
| 19:40:23 | <davean> | xdotool is a tool for simulating X events |
| 19:40:23 | infinisil | is confused |
| 19:40:29 | <geekosaur> | same prefix |
| 19:40:30 | <davean> | not a graph display tool like xdot is |
| 19:40:32 | <pjb> | infinisil: xdot has nothing in common with xdotool! |
| 19:40:33 | <infinisil> | Oh! |
| 19:41:05 | <davean> | Your addition does not pass a sanity check |
| 19:41:13 | <infinisil> | Ugh yeah, I see my mistake. I searched for the xdot binary, but not for `xdot$`, meaning I also got the result for xdotool |
| 19:41:15 | <geekosaur> | and apt-cache search shows them right next to each other |
| 19:41:51 | ← | sveit parts (~sveit@2001:19f0:ac01:247:5400:ff:fe5c:689f) ("ERC Version 5.3 (IRC client for Emacs)") |
| 19:42:00 | <davean> | infinisil: now, if you want to fake a mouse click in X11, you want xdotool |
| 19:42:21 | infinisil | installs xdot, this time |
| 19:43:55 | <monochrom> | I always search for, e.g., ^graphviz$ |
| 19:44:46 | <infinisil> | There are nix setups to get command-not-found to work, but I don't have that configured. When a command cannot be found that would tell you where the binary can be found |
| 19:45:07 | <monochrom> | and there is enough reason to do so because otherwise you would be spammed by the horde of eg "golang-python-graphviz-dev-lib-profiling" already. |
| 19:45:42 | <infinisil> | I am confused by that sentence |
| 19:46:34 | × | unyu quits (~pyon@unaffiliated/pyon) (Quit: brb) |
| 19:46:56 | → | unyu joins (~pyon@unaffiliated/pyon) |
| 19:47:23 | <monochrom> | If you ask aptitude or apt-cache search etc to look for "graphviz", you don't get graphviz itself. Never. You get all those things like python-graphviz-binding, golang-graphviz-lib, everything peripheral except the centre you actually need. |
| 19:47:42 | <infinisil> | Ohh I see |
| 19:47:50 | <monochrom> | And there a a million of those peripheral tag-along free loaders. |
| 19:47:56 | <infinisil> | Yeah the binary reverse search is nice |
| 19:48:39 | <infinisil> | It works! |
| 19:48:40 | × | heatsink quits (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 19:48:44 | <monochrom> | :) |
| 19:49:25 | <infinisil> | So, in conclusion, install graphmod, graphvis and xdot, then run find src -name '*.hs' | xargs graphmod -q | xdot - |
| 19:50:10 | <monochrom> | Hrm, graphmod parses source code directly? |
| 19:50:35 | <monochrom> | err nevermind, nothing says it can't call ghc with the same filename arguments. |
| 19:50:47 | <monochrom> | Nice either way. |
| 19:50:49 | <infinisil> | https://hackage.haskell.org/package/graphmod |
| 19:50:56 | <infinisil> | Seems to use the haskell-lexer package |
| 19:51:14 | <infinisil> | So, seemingly not even though ghc! |
| 19:51:24 | geekosaur | wonders if it groks addDependentFile |
| 19:51:27 | <monochrom> | Haha the module graph of lens. |
| 19:51:40 | × | Cale quits (~cale@cpef48e38ee8583-cm0c473de9d680.cpe.net.cable.rogers.com) (Remote host closed the connection) |
| 19:52:24 | → | Cale joins (~cale@cpef48e38ee8583-cm0c473de9d680.cpe.net.cable.rogers.com) |
| 19:52:25 | <infinisil> | Oh no, some new black magic I don't know about |
| 19:53:07 | × | nyd quits (~nyd@unaffiliated/elysian) (Ping timeout: 252 seconds) |
| 19:53:21 | → | dsrt^ joins (dsrt@ip98-184-89-2.mc.at.cox.net) |
| 19:53:33 | <infinisil> | Interesting |
| 19:57:06 | <tomsmeding> | templatehaskell breaks everything that's not normal compilation |
| 19:57:07 | → | Lord_of_Life_ joins (~Lord@unaffiliated/lord-of-life/x-0885362) |
| 19:58:41 | × | Pickchea quits (~private@unaffiliated/pickchea) (Quit: Leaving) |
| 19:59:39 | × | _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
| 20:00:06 | × | Lord_of_Life quits (~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 240 seconds) |
| 20:00:14 | Lord_of_Life_ | is now known as Lord_of_Life |
| 20:00:38 | × | DavidEichmann quits (~david@147.136.46.217.dyn.plus.net) (Ping timeout: 246 seconds) |
| 20:05:15 | × | petersen quits (~petersen@redhat/juhp) (Ping timeout: 268 seconds) |
| 20:07:41 | × | conal quits (~conal@64.71.133.70) (Ping timeout: 240 seconds) |
| 20:08:14 | → | petersen joins (~petersen@redhat/juhp) |
| 20:08:14 | → | vgtw_ joins (~vgtw@gateway/tor-sasl/vgtw) |
| 20:08:21 | × | vgtw quits (~vgtw@gateway/tor-sasl/vgtw) (Ping timeout: 240 seconds) |
| 20:08:33 | vgtw_ | is now known as vgtw |
| 20:10:07 | × | Rudd0 quits (~Rudd0@185.189.115.108) (Read error: Connection reset by peer) |
| 20:10:11 | × | malumore quits (~malumore@151.62.122.70) (Ping timeout: 240 seconds) |
| 20:11:33 | × | rj quits (~x@gateway/tor-sasl/rj) (Ping timeout: 240 seconds) |
| 20:12:27 | × | kritzefitz quits (~kritzefit@212.86.56.80) (Remote host closed the connection) |
| 20:13:50 | × | coot quits (~coot@37.30.50.130.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
| 20:14:32 | × | bitmapper quits (uid464869@gateway/web/irccloud.com/x-tuzcokklkvrgravg) (Quit: Connection closed for inactivity) |
| 20:15:33 | × | PragCypher quits (~cypher@li1507-98.members.linode.com) (Read error: Connection reset by peer) |
| 20:16:45 | → | rj joins (~x@gateway/tor-sasl/rj) |
| 20:22:01 | × | Nahra quits (~user@unaffiliated/nahra) (Ping timeout: 245 seconds) |
| 20:22:10 | × | myShoggoth quits (~myShoggot@75.164.11.109) (Ping timeout: 260 seconds) |
| 20:23:08 | × | nut quits (~gtk@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 268 seconds) |
| 20:29:13 | → | nineonin_ joins (~nineonine@50.216.62.2) |
| 20:29:43 | → | nut joins (~gtk@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
| 20:30:21 | × | psygate quits (~psygate@unaffiliated/psygate) (Quit: Leaving) |
| 20:30:32 | → | hexfive joins (~hexfive@50.35.83.177) |
| 20:31:57 | × | ClaudiusMaximus quits (~claude@unaffiliated/claudiusmaximus) (Quit: ->) |
| 20:32:05 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:5c9e:8d21:d745:3944) (Ping timeout: 250 seconds) |
| 20:32:38 | → | myShoggoth joins (~myShoggot@75.164.11.109) |
| 20:36:20 | × | alx741 quits (~alx741@181.196.68.199) (Ping timeout: 246 seconds) |
| 20:39:38 | × | Aquazi quits (uid312403@gateway/web/irccloud.com/x-fvdnxupudqhwtjny) (Quit: Connection closed for inactivity) |
| 20:43:03 | × | fendor quits (~fendor@91.141.3.112.wireless.dyn.drei.com) (Remote host closed the connection) |
| 20:43:22 | → | sammyh joins (~sammyh@vps-15813cea.vps.ovh.net) |
| 20:44:49 | × | rodriga quits (~quassel@134.204.25.66) (Ping timeout: 252 seconds) |
| 20:45:29 | → | heatsink joins (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 20:45:47 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 20:45:54 | → | bitmapper joins (uid464869@gateway/web/irccloud.com/x-zaklydynoasermoj) |
| 20:47:38 | × | sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937) |
| 20:49:14 | → | alx741 joins (~alx741@186.178.109.231) |
| 20:49:46 | × | hypercube quits (hypercube@gateway/vpn/protonvpn/hypercube) (Quit: WeeChat 3.1) |
| 20:51:05 | × | LKoen quits (~LKoen@92.163.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.”) |
| 20:51:11 | × | stef204 quits (~stef204@unaffiliated/stef-204/x-384198) (Quit: WeeChat 3.1) |
| 20:51:19 | ← | safinaskar parts (~user@109.252.90.136) () |
| 20:51:21 | → | safinaskar joins (~user@109.252.90.136) |
| 20:52:03 | → | dmytrish joins (~mitra@2a02:8084:a82:d900:fdd2:ac3d:3471:66d9) |
| 20:52:19 | → | stef204 joins (~stef204@unaffiliated/stef-204/x-384198) |
| 20:52:25 | <safinaskar> | is there a way to dynamically evaluate some haskell code, ideally in the form of ast? i know about "hint" package, but its description says "requires ghc installed", i don't want such requirement |
| 20:53:40 | × | cfricke quits (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 3.1) |
| 20:54:26 | <infinisil> | safinaskar: Are you sure it needs to be Haskell? |
| 20:54:31 | × | jao quits (~jao@pdpc/supporter/professional/jao) (Ping timeout: 245 seconds) |
| 20:55:28 | <infinisil> | Because to evaluate haskell you need to compile it, which requires a GHC compiler, therefore the requirement |
| 20:57:49 | <safinaskar> | infinisil: i mean i don't want requirement to have ghc binary on system. but i am ok with dependency on some kind of library |
| 20:58:08 | <geekosaur> | ghc exists as a library but that more or less means ghc installed |
| 20:58:15 | <infinisil> | Yeah that won't really work |
| 20:58:17 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds) |
| 20:58:21 | <Uniaika> | yep' |
| 20:58:21 | × | rj quits (~x@gateway/tor-sasl/rj) (Ping timeout: 240 seconds) |
| 20:58:30 | <infinisil> | safinaskar: What's your use case? |
| 20:59:37 | <geekosaur> | conceivably it would be possible to make hugs work, provided you stick to its subset of ghc's functionality; it's a smaller footprint than ghc but I think doesn't come as a library as it is |
| 21:00:55 | <safinaskar> | infinisil: i. e. i want to be able to copy my program to another machine with all its shared libraries and i want it to work. it is okey if one of this libraries will be ghc library. but this is not okey if ghc executable is required, too. is this possible? |
| 21:01:51 | → | rj joins (~x@gateway/tor-sasl/rj) |
| 21:02:00 | <infinisil> | Oh yeah that's not the right approach for this |
| 21:02:10 | <c_wraith> | the big issue with using ghc as a library is really that you depend on the package databases still |
| 21:02:33 | <safinaskar> | so is this possible? |
| 21:02:58 | <infinisil> | Well, I know how to do it with Nix. No idea how GHC programs usually get distributed |
| 21:02:59 | × | slack1256 quits (~slack1256@200-112-79-98.baf.movistar.cl) (Remote host closed the connection) |
| 21:03:02 | <c_wraith> | It's basically impossible to have installed libraries with having GHC |
| 21:04:40 | → | elfets joins (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) |
| 21:04:51 | <c_wraith> | If you want to run haskell code and allow it to have access to definitions in base, you need base to be installed. That's not the same as compiled into your program |
| 21:05:30 | <infinisil> | I think they just want a distribution mechanism for a compiled binary |
| 21:05:48 | <geekosaur> | which brings up another good point: with or without ghc, the things you compile can't access your program's internals |
| 21:05:56 | <geekosaur> | it would be a separate program |
| 21:06:08 | → | DavidEichmann joins (~david@147.136.46.217.dyn.plus.net) |
| 21:06:32 | × | hyperisco quits (~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Ping timeout: 240 seconds) |
| 21:08:16 | <safinaskar> | c_wraith: ok, thanks |
| 21:08:31 | <safinaskar> | well, okey, thanks everybody, so, this is impossible |
| 21:08:33 | <c_wraith> | GHC is just not well suited for embedding except in cases where it's running on the machine that compiled it. |
| 21:11:06 | <c_wraith> | This is mostly the result of how it handles libraries with separate compilation and using the system linker |
| 21:11:22 | <infinisil> | safinaskar: https://www.reddit.com/r/haskell/comments/a0stgf/how_to_package_and_distribute_software/eals7zn/ |
| 21:11:25 | <infinisil> | How about this ^ |
| 21:11:39 | <infinisil> | Compiling the program with `-static -optc-static -optl-static` |
| 21:14:25 | ← | safinaskar parts (~user@109.252.90.136) () |
| 21:15:15 | → | ddellacosta joins (~ddellacos@ool-44c73afa.dyn.optonline.net) |
| 21:15:57 | → | mastarija joins (~mastarija@31.217.16.219) |
| 21:16:32 | × | jumper149 quits (~jumper149@80.240.31.34) (Quit: WeeChat 3.1) |
| 21:17:12 | × | ddellaco_ quits (~ddellacos@ool-44c73afa.dyn.optonline.net) (Ping timeout: 240 seconds) |
| 21:17:24 | → | conal joins (~conal@64.71.133.70) |
| 21:18:01 | × | knupfer quits (~Thunderbi@200116b82b5e7400d544a78922962f4e.dip.versatel-1u1.de) (Ping timeout: 250 seconds) |
| 21:19:43 | <c_wraith> | this sort of sounds like something that could be integrated into cabal. Though it'd be a lot of work. Still, you could tell cabal to package up all the interface and library files and store them as data in a distributable package, and while it's at it add stubs for using the ghc api configured with exactly the same flags it uses for your project. |
| 21:19:49 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
| 21:21:07 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 21:22:14 | × | heatsink quits (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 21:25:24 | → | horatiohb joins (~horatiohb@104.236.234.13) |
| 21:28:45 | × | mikoto-chan quits (~anass@gateway/tor-sasl/mikoto-chan) (Ping timeout: 240 seconds) |
| 21:30:14 | × | Tario quits (~Tario@201.192.165.173) (Ping timeout: 246 seconds) |
| 21:30:38 | → | nicholasbulka joins (~nicholasb@2601:900:4301:da0:bdc9:711a:32b8:207e) |
| 21:30:49 | <monochrom> | Static linking will not help you with deploying GHC-API-using exes to a no-GHC machine at all. |
| 21:30:57 | → | Tario joins (~Tario@200.119.185.36) |
| 21:31:01 | × | nut quits (~gtk@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 252 seconds) |
| 21:31:18 | <monochrom> | This is because the statically-linked GHC-API will still dynamically open GHC's *.so files during run time. |
| 21:31:30 | <monochrom> | That's right, no typo there. |
| 21:31:52 | <monochrom> | In fact it gets worse^W better. |
| 21:32:23 | <monochrom> | The dlopen uses an absolute path, the very same absolute path as where GHC's *.so files are during build time. |
| 21:32:27 | → | nut joins (~gtk@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
| 21:34:42 | × | Tario quits (~Tario@200.119.185.36) (Read error: Connection reset by peer) |
| 21:34:55 | × | nicholasbulka quits (~nicholasb@2601:900:4301:da0:bdc9:711a:32b8:207e) (Ping timeout: 250 seconds) |
| 21:35:32 | → | Tario joins (~Tario@201.192.165.173) |
| 21:35:45 | <monochrom> | You will probably find that a docker approach is more viable. And use pretty much the same docker image for both building your exe and deploying. OK the deploy image can skip gcc and make, sure. |
| 21:36:37 | → | elliott_ joins (~elliott@pool-108-18-30-46.washdc.fios.verizon.net) |
| 21:36:54 | → | rj_ joins (~x@gateway/tor-sasl/rj) |
| 21:37:59 | × | michalz quits (~user@185.246.204.47) (Remote host closed the connection) |
| 21:39:13 | → | boogsbunny joins (2d23821c@45.35.130.28) |
| 21:39:33 | × | rj quits (~x@gateway/tor-sasl/rj) (Ping timeout: 240 seconds) |
| 21:40:47 | × | Varis quits (~Tadas@unaffiliated/varis) (Remote host closed the connection) |
| 21:41:15 | × | gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving) |
| 21:41:38 | → | cagrioz64 joins (4ea70324@78.167.3.36) |
| 21:43:08 | × | cagrioz64 quits (4ea70324@78.167.3.36) (Client Quit) |
| 21:43:09 | × | rj_ quits (~x@gateway/tor-sasl/rj) (Ping timeout: 240 seconds) |
| 21:43:35 | <monochrom> | It is becoming more and more naïve to believe that you can solve all deployment problems by shouting "static linking!" at the build tool a huge number of times. |
| 21:43:46 | → | sleblanc joins (~sleblanc@unaffiliated/sebleblanc) |
| 21:44:11 | × | elfets quits (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Ping timeout: 240 seconds) |
| 21:44:14 | → | cagrioz83 joins (4ea70324@78.167.3.36) |
| 21:44:22 | <monochrom> | It was true of most C ecosystems a long time ago, in a much simpler time, in a previous life. |
| 21:44:45 | <monochrom> | Today even glibc makes that false. |
| 21:45:04 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 21:45:17 | <monochrom> | So never mind a whole new generation of high-level language implementations. Haskell is not alone here. |
| 21:46:29 | × | stef204 quits (~stef204@unaffiliated/stef-204/x-384198) (Quit: WeeChat 3.1) |
| 21:46:51 | <hpc> | nowadays you shout "docker!" at the build tool a huge number of times |
| 21:47:10 | <hpc> | oh, already mentioned |
| 21:47:12 | <monochrom> | Yeah. Let's hope this lasts for the next 10 years. |
| 21:47:25 | <infinisil> | monochrom: I don't think they're using the ghc api? |
| 21:47:39 | geekosaur | will be surprised if docker's still the hotness in 10 years |
| 21:47:42 | <monochrom> | If you use hint you're using the ghc api. |
| 21:47:45 | <geekosaur> | things move far too fast |
| 21:47:51 | <monochrom> | If you use ghc-mod you're using the ghc api. |
| 21:48:14 | <geekosaur> | ghc as a library is the ghc api |
| 21:48:36 | <monochrom> | If you use anything remotely close to "honour dynamically received Haskell code" you're using the ghc api. |
| 21:48:38 | <geekosaur> | other options for dynamically compiling haskell code basically don't exist |
| 21:49:08 | <infinisil> | monochrom: I don't think they're doing that though |
| 21:49:34 | <infinisil> | Oh |
| 21:49:39 | <infinisil> | Wait maybe I misunderstood |
| 21:49:45 | <infinisil> | Yeah I probably did, never mind |
| 21:49:50 | <geekosaur> | >> is there a way to dynamically evaluate some haskell code, ideally in the form of ast? i know about "hint" package, but its description says "requires ghc installed", i don't want such requirement |
| 21:50:21 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds) |
| 21:50:41 | × | nut quits (~gtk@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 240 seconds) |
| 21:50:49 | <monochrom> | Actually, may I recommend system("hugs")? >:) |
| 21:51:04 | <monochrom> | At least hugs is much much smaller. |
| 21:51:28 | <geekosaur> | I did suggest that early on |
| 21:51:42 | <monochrom> | Darn. |
| 21:54:22 | × | usr25 quits (~usr25@unaffiliated/usr25) (Quit: Leaving) |
| 21:55:19 | → | heatsink joins (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 21:56:47 | → | nicholasbulka joins (~nicholasb@2601:900:4301:da0:bdc9:711a:32b8:207e) |
| 21:59:20 | → | hypercube joins (hypercube@gateway/vpn/protonvpn/hypercube) |
| 22:00:06 | × | DavidEichmann quits (~david@147.136.46.217.dyn.plus.net) (Ping timeout: 260 seconds) |
| 22:00:27 | → | Rudd0 joins (~Rudd0@185.189.115.103) |
| 22:00:34 | → | rj_ joins (~x@gateway/tor-sasl/rj) |
| 22:01:07 | → | DavidEichmann joins (~david@147.136.46.217.dyn.plus.net) |
| 22:01:11 | × | nicholasbulka quits (~nicholasb@2601:900:4301:da0:bdc9:711a:32b8:207e) (Ping timeout: 245 seconds) |
| 22:01:41 | × | mastarija quits (~mastarija@31.217.16.219) (Quit: Leaving) |
| 22:02:42 | × | cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving) |
| 22:02:45 | × | Ccasesvilla quits (4a4fd19e@cpe-74-79-209-158.twcny.res.rr.com) (Quit: Connection closed) |
| 22:03:10 | → | jao joins (~jao@pdpc/supporter/professional/jao) |
| 22:04:11 | × | juri_ quits (~juri@178.63.35.222) (Ping timeout: 240 seconds) |
| 22:05:40 | × | hypercube quits (hypercube@gateway/vpn/protonvpn/hypercube) (Quit: WeeChat 3.1) |
| 22:05:53 | × | nisstyre quits (wes@python-zero/conduct-committee/nisstyre) (Ping timeout: 258 seconds) |
| 22:06:38 | × | Ariakenom quits (~Ariakenom@2001:9b1:efb:fc00:4cdc:6166:590b:6cfe) (Quit: Leaving) |
| 22:07:40 | <int-e> | geekosaur: `hint` is a convenience wrapper around the ghc library |
| 22:07:57 | → | justanotheruser joins (~justanoth@unaffiliated/justanotheruser) |
| 22:08:01 | <geekosaur> | didn't I suggest hugs, not hint? |
| 22:08:08 | <geekosaur> | they came up with hint themselves and rejected it |
| 22:08:30 | <int-e> | geekosaur: just elaborating the "requires ghc installed" part |
| 22:08:43 | <geekosaur> | because it requires ghc and they're trying to get out of requiring ghc (which as monochrom showed is hopeless) |
| 22:09:19 | × | Lowl3v3l quits (~Lowl3v3l@dslb-002-207-103-026.002.207.pools.vodafone-ip.de) (Ping timeout: 252 seconds) |
| 22:09:39 | <int-e> | but yes, I disregarded some context |
| 22:10:39 | → | juri_ joins (~juri@79.140.123.62) |
| 22:14:07 | × | heatsink quits (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 22:14:52 | × | juri_ quits (~juri@79.140.123.62) (Ping timeout: 240 seconds) |
| 22:14:56 | × | Sornaensis quits (~Sornaensi@077213200034.dynamic.telenor.dk) (Ping timeout: 245 seconds) |
| 22:15:37 | → | juri_ joins (~juri@178.63.35.222) |
| 22:17:18 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 22:17:50 | → | hiroaki_ joins (~hiroaki@2a02:8108:8c40:2bb8:b5a5:898d:202b:258b) |
| 22:20:14 | → | heatsink joins (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 22:20:39 | × | dmytrish quits (~mitra@2a02:8084:a82:d900:fdd2:ac3d:3471:66d9) (Ping timeout: 260 seconds) |
| 22:21:02 | × | Guest92203 quits (~textual@mskresolve-a.mskcc.org) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 22:22:22 | → | nisstyre joins (~wes@python-zero/conduct-committee/nisstyre) |
| 22:22:32 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
| 22:23:38 | → | codedmart joins (codedmart@2600:3c01::f03c:92ff:fefe:8511) |
| 22:23:42 | × | boogsbunny quits (2d23821c@45.35.130.28) (Ping timeout: 240 seconds) |
| 22:25:57 | × | rj_ quits (~x@gateway/tor-sasl/rj) (Ping timeout: 240 seconds) |
| 22:28:09 | × | marinelli quits (~marinelli@gateway/tor-sasl/marinelli) (Remote host closed the connection) |
| 22:28:45 | → | marinelli joins (~marinelli@gateway/tor-sasl/marinelli) |
| 22:29:38 | → | faustind joins (0e0843e1@gateway/web/cgi-irc/kiwiirc.com/ip.14.8.67.225) |
| 22:30:12 | × | Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.) |
| 22:31:07 | → | rj_ joins (~x@gateway/tor-sasl/rj) |
| 22:33:10 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds) |
| 22:35:28 | → | Alleria joins (~textual@2603-7000-3040-0000-3d14-5885-3d03-0546.res6.spectrum.com) |
| 22:35:51 | Alleria | is now known as Guest5350 |
| 22:38:55 | → | nicholasbulka joins (~nicholasb@2601:900:4301:da0:bdc9:711a:32b8:207e) |
| 22:40:59 | × | tabemann quits (~travisb@2600:1700:7990:24e0:1f29:251c:9834:33) (Remote host closed the connection) |
| 22:41:15 | → | tabemann joins (~travisb@2600:1700:7990:24e0:1797:6b66:735:4572) |
| 22:43:09 | × | ddellacosta quits (~ddellacos@ool-44c73afa.dyn.optonline.net) (Remote host closed the connection) |
| 22:43:23 | × | nicholasbulka quits (~nicholasb@2601:900:4301:da0:bdc9:711a:32b8:207e) (Ping timeout: 250 seconds) |
| 22:44:12 | → | ddellaco_ joins (~ddellacos@ool-44c73afa.dyn.optonline.net) |
| 22:44:48 | × | heatsink quits (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 22:46:52 | × | m0rphism quits (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 240 seconds) |
| 22:48:31 | × | ddellaco_ quits (~ddellacos@ool-44c73afa.dyn.optonline.net) (Ping timeout: 260 seconds) |
| 22:55:25 | × | Deide1 quits (~Deide@217.155.19.23) (Quit: Seeee yaaaa) |
| 22:59:31 | × | elliott_ quits (~elliott@pool-108-18-30-46.washdc.fios.verizon.net) (Ping timeout: 245 seconds) |
| 23:00:14 | → | heatsink joins (~heatsink@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 23:01:27 | × | cagrioz83 quits (4ea70324@78.167.3.36) (Quit: Connection closed) |
| 23:06:12 | → | nicholasbulka joins (~nicholasb@2601:900:4301:da0:bdc9:711a:32b8:207e) |
| 23:06:29 | × | son0p quits (~ff@181.136.122.143) (Remote host closed the connection) |
| 23:10:21 | × | nicholasbulka quits (~nicholasb@2601:900:4301:da0:bdc9:711a:32b8:207e) (Ping timeout: 245 seconds) |
| 23:10:45 | × | rj_ quits (~x@gateway/tor-sasl/rj) (Ping timeout: 240 seconds) |
| 23:14:18 | → | rj_ joins (~x@gateway/tor-sasl/rj) |
| 23:14:43 | → | ddellaco_ joins (~ddellacos@ool-44c73afa.dyn.optonline.net) |
| 23:19:11 | × | ddellaco_ quits (~ddellacos@ool-44c73afa.dyn.optonline.net) (Ping timeout: 240 seconds) |
| 23:30:42 | → | nicholasbulka joins (~nicholasb@2601:900:4301:da0:bdc9:711a:32b8:207e) |
| 23:32:03 | × | danvet quits (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 260 seconds) |
| 23:32:15 | → | ddellacosta joins (~ddellacos@ool-44c73afa.dyn.optonline.net) |
| 23:35:28 | × | Gurkenglas quits (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 252 seconds) |
| 23:35:37 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 23:36:11 | × | nicholasbulka quits (~nicholasb@2601:900:4301:da0:bdc9:711a:32b8:207e) (Ping timeout: 245 seconds) |
| 23:37:59 | × | ddellacosta quits (~ddellacos@ool-44c73afa.dyn.optonline.net) (Ping timeout: 246 seconds) |
| 23:38:01 | → | nicholasbulka joins (~nicholasb@2601:900:4301:da0:bdc9:711a:32b8:207e) |
| 23:39:35 | × | Matthias1 quits (~matthias@li890-22.members.linode.com) (Quit: The Lounge - https://thelounge.chat) |
| 23:42:45 | → | Matthias1 joins (~matthias@li890-22.members.linode.com) |
| 23:44:12 | × | Matthias1 quits (~matthias@li890-22.members.linode.com) (Remote host closed the connection) |
| 23:46:51 | × | vv8 quits (~egp_@2.95.117.163) (Ping timeout: 260 seconds) |
| 23:48:42 | × | Jd007 quits (~Jd007@162.156.11.151) (Quit: Jd007) |
| 23:49:37 | × | horatiohb quits (~horatiohb@104.236.234.13) (Ping timeout: 252 seconds) |
| 23:52:39 | × | thc202 quits (~thc202@unaffiliated/thc202) (Ping timeout: 258 seconds) |
| 23:55:12 | × | philderbeast quits (~textual@bras-base-vldvpq5901w-grc-06-184-144-244-252.dsl.bell.ca) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 23:56:19 | × | __monty__ quits (~toonn@unaffiliated/toonn) (Quit: leaving) |
| 23:56:45 | × | xsperry quits (~as@unaffiliated/xsperry) (Remote host closed the connection) |
All times are in UTC on 2021-04-21.