Logs on 2022-04-13 (liberachat/#haskell)
| 00:01:14 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 00:02:14 | → | califax joins (~califax@user/califx) |
| 00:02:22 | × | asthasr quits (~asthasr@208.80.78.154) (Quit: asthasr) |
| 00:02:23 | <sm> | g'day dons |
| 00:02:42 | → | wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com) |
| 00:02:42 | × | wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
| 00:02:42 | → | wroathe joins (~wroathe@user/wroathe) |
| 00:03:16 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 00:05:34 | <dons> | I'm writing Angle all day today. It's typed datalog, with sums and products. It's like talking to a database via an SMT solver, where the performance model is based on table indexes. |
| 00:05:41 | <dons> | really fun programming model |
| 00:05:56 | <dons> | reminds me a bit of NDP. |
| 00:06:02 | <dons> | all the bulk operations |
| 00:07:22 | <dons> | worked out how to do fmap over a Maybe type :) https://github.com/donsbot/Glean/commit/edb1fe60a164373608daf74735686be109e0737b#diff-dd773c64bb12b7a88f860d0208e56415b0abc16858496c7ef193ccb8eeb11762R292 in case you're curious what it looks like |
| 00:07:56 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 250 seconds) |
| 00:12:40 | × | mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 248 seconds) |
| 00:14:39 | <Axman6> | can you write a higher order fmap for maybe? |
| 00:19:24 | <dons> | not enough of a type system i think. no type parameters. |
| 00:20:45 | <dons> | its basically a glue language for talking to rocksdb, so closer to some sort of SSD-optimized SQL model, but with this weird feature that you can lookup things by using structured types as keys (records, tuples etc) |
| 00:20:59 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 00:21:44 | × | vicfred quits (~vicfred@user/vicfred) (Quit: Leaving) |
| 00:26:07 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 240 seconds) |
| 00:26:45 | → | vysn joins (~vysn@user/vysn) |
| 00:28:02 | × | xff0x quits (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp) (Ping timeout: 272 seconds) |
| 00:30:15 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 00:30:47 | <Axman6> | fair enough - is Angel a Glean specific thing? |
| 00:31:44 | <dons> | its the "SQL" of Glean, yeah. programming language for query / table layout in glean over rocksdb. |
| 00:32:10 | <dons> | datalog-style queries for facts, DAG traversals |
| 00:32:32 | <Axman6> | shapr: is there some more background to this article? You haven't really stated what problem you're trying to solve in the first couple of sections |
| 00:35:35 | → | merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
| 00:35:36 | → | notzmv joins (~zmv@user/notzmv) |
| 00:38:08 | → | abhixec joins (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) |
| 00:40:20 | × | kimjetwav quits (~user@2607:fea8:2363:8f00:db41:6ba5:4d54:8708) (Quit: ERC 5.4.1 (IRC client for GNU Emacs 29.0.50)) |
| 00:45:51 | × | gurkenglas quits (~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de) (Ping timeout: 256 seconds) |
| 00:50:23 | × | zeenk quits (~zeenk@2a02:2f04:a313:d600:8d26:ec9f:3ff6:fc94) (Quit: Konversation terminated!) |
| 00:50:34 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 00:50:52 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 00:50:58 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 00:52:08 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 250 seconds) |
| 00:56:17 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 01:06:20 | → | xff0x joins (~xff0x@125x102x200x106.ap125.ftth.ucom.ne.jp) |
| 01:10:28 | × | merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds) |
| 01:10:54 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 01:17:01 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 01:17:17 | × | pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5) |
| 01:28:57 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 248 seconds) |
| 01:33:55 | → | andrey__ joins (~andrey@p200300dbcf07c100b04d34d7ed81db16.dip0.t-ipconnect.de) |
| 01:35:49 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 01:36:24 | × | andrey_ quits (~andrey@p200300dbcf112f00ea6a6fd122b4be68.dip0.t-ipconnect.de) (Ping timeout: 248 seconds) |
| 01:36:35 | → | deadmarshal_ joins (~deadmarsh@95.38.117.55) |
| 01:38:20 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 272 seconds) |
| 01:38:29 | → | abastro joins (~abab9579@143.248.229.192) |
| 01:40:27 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds) |
| 01:41:06 | × | deadmarshal_ quits (~deadmarsh@95.38.117.55) (Ping timeout: 250 seconds) |
| 01:44:22 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 01:44:33 | → | yauhsien joins (~yauhsien@61-231-36-20.dynamic-ip.hinet.net) |
| 01:45:36 | × | Akiva quits (~Akiva@user/Akiva) (Quit: WeeChat 3.5) |
| 01:47:12 | × | raehik1 quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 272 seconds) |
| 01:49:11 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds) |
| 01:52:12 | → | kanin_ joins (~kanin_@2001:da8:d800:196:888d:5adb:9959:8fba) |
| 01:52:55 | × | szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
| 01:53:09 | × | kanin_ quits (~kanin_@2001:da8:d800:196:888d:5adb:9959:8fba) (Read error: Connection reset by peer) |
| 01:53:38 | → | redb joins (~nmh@136.49.49.211) |
| 01:53:53 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 01:54:43 | × | sammelweis_ quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Remote host closed the connection) |
| 01:55:32 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 01:55:38 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 01:58:11 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 260 seconds) |
| 01:58:39 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 260 seconds) |
| 01:59:06 | → | hsw joins (~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net) |
| 02:01:46 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 02:04:14 | × | mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 02:09:15 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 246 seconds) |
| 02:10:29 | → | redb joins (~nmh@136.49.49.211) |
| 02:10:30 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 02:11:22 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 02:15:15 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 256 seconds) |
| 02:15:44 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 02:19:18 | → | frost joins (~frost@user/frost) |
| 02:20:34 | → | kaph joins (~kaph@dynamic-adsl-78-12-162-98.clienti.tiscali.it) |
| 02:27:16 | → | redb joins (~nmh@136.49.49.211) |
| 02:27:54 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 250 seconds) |
| 02:29:41 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 02:30:02 | <Axman6> | I'm currently learning about Rust modules, and they seem ... complex isn't the right word, but it feels like a lot of hoops to jump through. The only time I've really wanted as much control as (in Haskell) it gives you is when I want to export things so that tests can use them, but others can't, and usually that just means using a .Internal module |
| 02:31:20 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 248 seconds) |
| 02:31:42 | <zero> | , |
| 02:32:03 | <Axman6> | oh no, zero has fallen into a comma! |
| 02:34:30 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 02:36:52 | <zero> | a -> b -> (a,b) |
| 02:39:24 | <abastro> | Well, one of the gripes of haskell is the namespace things |
| 02:39:46 | <abastro> | What does rust module system allow? |
| 02:39:58 | <abastro> | allow control? |
| 02:42:09 | <Axman6> | you can read the chapter in the book if you like: https://doc.rust-lang.org/book/ch07-00-managing-growing-projects-with-packages-crates-and-modules.html |
| 02:43:11 | × | terrorjack quits (~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat) |
| 02:43:26 | <Axman6> | I find it odd that you can define a module as not public, and then a module inside it as public. also specifying whether individual struct fiends can be public feels weird to me, though languages with mutability often do/need to do things like that I guess |
| 02:44:19 | <Axman6> | It is interesting seeing how many features of Rust appear to have come directly from Haskell, occasionally you read something and realise you already understand it |
| 02:44:25 | → | terrorjack joins (~terrorjac@2a01:4f8:1c1e:509a::1) |
| 02:45:24 | <Axman6> | Something I've wanted in Haskell for a while is the ability to rename things on import, like module Data.HashMap (HashMap as Map) or something |
| 02:48:39 | → | Henson joins (~kvirc@107-179-133-201.cpe.teksavvy.com) |
| 02:50:01 | <abastro> | Directly from haskell? |
| 02:50:22 | <abastro> | Well yea I also want the ability to rename, but I heard that it would require breaking change :/ |
| 02:50:25 | × | yauhsien quits (~yauhsien@61-231-36-20.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 02:50:46 | <abastro> | Accessibility control is for encapsulation I think, rather than for mutation |
| 02:51:01 | <abastro> | Fine-grained encapsulation |
| 02:52:26 | → | redb joins (~nmh@136.49.49.211) |
| 02:53:04 | → | yauhsien joins (~yauhsien@61-231-36-20.dynamic-ip.hinet.net) |
| 02:53:31 | <abastro> | I guess in corporate settings, you don't want to grant usage access of code portion for those who are not counted responsible for that code section |
| 02:55:26 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 02:56:33 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
| 02:56:33 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 02:56:33 | finn_elija | is now known as FinnElija |
| 02:56:56 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 250 seconds) |
| 02:58:14 | × | yauhsien quits (~yauhsien@61-231-36-20.dynamic-ip.hinet.net) (Ping timeout: 250 seconds) |
| 03:04:03 | → | russruss joins (~russruss@my.russellmcc.com) |
| 03:07:04 | × | mikoto-chan quits (~mikoto-ch@213.177.151.239) (Ping timeout: 248 seconds) |
| 03:09:20 | × | lbseale quits (~ep1ctetus@user/ep1ctetus) (Read error: Connection reset by peer) |
| 03:11:12 | → | merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
| 03:18:48 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Read error: Connection reset by peer) |
| 03:18:55 | × | euandreh quits (~euandreh@2804:14c:33:9fe5:f1f:1f2:988a:6dea) (Ping timeout: 260 seconds) |
| 03:19:49 | → | euandreh joins (~euandreh@2804:14c:33:9fe5:2b05:e929:4a1b:5380) |
| 03:20:58 | → | cdman joins (~dcm@user/dmc/x-4369397) |
| 03:23:47 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 240 seconds) |
| 03:25:09 | → | z0k joins (~z0k@39.40.5.37) |
| 03:25:53 | → | redb joins (~nmh@136.49.49.211) |
| 03:27:16 | × | abastro quits (~abab9579@143.248.229.192) (Ping timeout: 250 seconds) |
| 03:28:26 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 03:31:09 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 246 seconds) |
| 03:32:08 | → | redb joins (~nmh@136.49.49.211) |
| 03:32:54 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 246 seconds) |
| 03:34:21 | × | cdman quits (~dcm@user/dmc/x-4369397) (Quit: Leaving) |
| 03:34:35 | × | z0k quits (~z0k@39.40.5.37) (Ping timeout: 256 seconds) |
| 03:36:24 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 246 seconds) |
| 03:38:15 | → | redb joins (~nmh@136.49.49.211) |
| 03:40:07 | × | merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds) |
| 03:40:56 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
| 03:41:28 | → | z0k joins (~z0k@39.40.97.184) |
| 03:42:21 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 246 seconds) |
| 03:48:07 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 240 seconds) |
| 03:48:28 | → | cdman joins (~dcm@27.2.216.167) |
| 03:48:29 | × | cdman quits (~dcm@27.2.216.167) (Changing host) |
| 03:48:29 | → | cdman joins (~dcm@user/dmc/x-4369397) |
| 03:51:41 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 03:54:03 | → | axeman joins (~quassel@2a02:8109:a380:78:e9e7:400a:2ff3:71f1) |
| 03:55:26 | → | yauhsien joins (~yauhsien@61-231-36-20.dynamic-ip.hinet.net) |
| 03:56:41 | × | BlackboardN quits (~Blackboar@user/BlackboardN) (Ping timeout: 248 seconds) |
| 03:59:46 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 250 seconds) |
| 04:00:07 | × | yauhsien quits (~yauhsien@61-231-36-20.dynamic-ip.hinet.net) (Ping timeout: 240 seconds) |
| 04:07:35 | × | Henson quits (~kvirc@107-179-133-201.cpe.teksavvy.com) (Quit: KVIrc 5.0.0 Aria http://www.kvirc.net/) |
| 04:08:33 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 04:09:13 | × | cdman quits (~dcm@user/dmc/x-4369397) (Quit: Leaving) |
| 04:10:27 | → | redb joins (~nmh@136.49.49.211) |
| 04:11:52 | → | vicfred joins (~vicfred@user/vicfred) |
| 04:13:12 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 250 seconds) |
| 04:14:28 | × | goepsilongo quits (~chacho@2603-7000-ab00-62ed-0000-0000-0000-0bd0.res6.spectrum.com) (Quit: Konversation terminated!) |
| 04:14:35 | → | mbuf joins (~Shakthi@223.184.55.97) |
| 04:14:56 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 250 seconds) |
| 04:16:07 | × | z0k quits (~z0k@39.40.97.184) (Ping timeout: 240 seconds) |
| 04:19:48 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 246 seconds) |
| 04:26:23 | → | yauhsien joins (~yauhsien@61-231-36-20.dynamic-ip.hinet.net) |
| 04:29:11 | → | bahamas joins (~lucian@84.232.140.158) |
| 04:35:07 | → | redb joins (~nmh@136.49.49.211) |
| 04:36:11 | → | bgt32 joins (~keutoi@223.182.17.205) |
| 04:37:49 | → | deadmarshal_ joins (~deadmarsh@95.38.117.55) |
| 04:38:31 | → | z0k joins (~z0k@39.40.127.26) |
| 04:39:20 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 248 seconds) |
| 04:43:30 | × | zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!) |
| 04:44:12 | <bgt32> | In Data.Ix we have index :: (a, a) -> a -> Int; is there an inverse for it? f :: (a, a) -> Int -> a , that gives nth element of that range. I could use range (a, b) !! n, but that seems in efficient. |
| 04:44:26 | × | vicfred quits (~vicfred@user/vicfred) (Quit: Leaving) |
| 04:46:43 | → | redb joins (~nmh@136.49.49.211) |
| 04:49:29 | × | axeman quits (~quassel@2a02:8109:a380:78:e9e7:400a:2ff3:71f1) (Ping timeout: 248 seconds) |
| 05:02:46 | → | king_gs joins (~Thunderbi@2806:103e:29:1de5:8bc8:f08f:4d70:424) |
| 05:03:33 | × | bahamas quits (~lucian@84.232.140.158) (Ping timeout: 256 seconds) |
| 05:07:35 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 05:10:41 | → | axeman joins (~quassel@2a02:8109:a380:78:87db:6d2e:f3e4:fc07) |
| 05:11:11 | → | cdman joins (~dcm@user/dmc/x-4369397) |
| 05:11:52 | × | deadmarshal_ quits (~deadmarsh@95.38.117.55) (Ping timeout: 248 seconds) |
| 05:17:41 | × | cdman quits (~dcm@user/dmc/x-4369397) (Remote host closed the connection) |
| 05:19:44 | → | cdman joins (~dcm@27.2.216.167) |
| 05:19:44 | × | cdman quits (~dcm@27.2.216.167) (Changing host) |
| 05:19:44 | → | cdman joins (~dcm@user/dmc/x-4369397) |
| 05:21:14 | × | axeman quits (~quassel@2a02:8109:a380:78:87db:6d2e:f3e4:fc07) (Ping timeout: 250 seconds) |
| 05:23:06 | × | xkuru quits (~xkuru@user/xkuru) (Read error: Connection reset by peer) |
| 05:30:53 | → | bahamas joins (~lucian@84.232.140.158) |
| 05:31:05 | × | zyklotomic quits (~ethan@res380d-128-61-83-53.res.gatech.edu) (Ping timeout: 248 seconds) |
| 05:32:14 | → | kenran joins (~kenran@200116b82b0a340003754354c85ff367.dip.versatel-1u1.de) |
| 05:33:20 | → | zyklotomic joins (~ethan@res388d-128-61-89-14.res.gatech.edu) |
| 05:35:17 | × | bahamas quits (~lucian@84.232.140.158) (Ping timeout: 256 seconds) |
| 05:35:55 | → | axeman joins (~quassel@2a02:8109:a380:78:de22:d343:c0cd:4b29) |
| 05:37:07 | × | son0p quits (~ff@181.136.122.143) (Ping timeout: 256 seconds) |
| 05:37:51 | → | michalz joins (~michalz@185.246.204.125) |
| 05:39:02 | × | tomku quits (~tomku@user/tomku) (Remote host closed the connection) |
| 05:39:08 | → | tomku|two joins (~tomku@user/tomku) |
| 05:40:26 | <Axman6> | iIlI1| |
| 05:40:38 | <Axman6> | uh, didn't mean to send that. Enjoy your free font test |
| 05:40:49 | → | benin joins (~benin@183.82.204.110) |
| 05:41:07 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 240 seconds) |
| 05:41:51 | → | ss- joins (~ss-@187.83.249.216.dyn.smithville.net) |
| 05:41:52 | → | merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
| 05:43:33 | <jackdk> | you're not the boss of me Axman6 |
| 05:43:47 | × | tomku|two quits (~tomku@user/tomku) (Ping timeout: 240 seconds) |
| 05:44:44 | → | tomku joins (~tomku@user/tomku) |
| 05:44:47 | × | axeman quits (~quassel@2a02:8109:a380:78:de22:d343:c0cd:4b29) (Ping timeout: 240 seconds) |
| 05:44:53 | → | deadmarshal_ joins (~deadmarsh@95.38.117.55) |
| 05:47:07 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 05:47:52 | × | JimL quits (~quassel@89-162-2-132.fiber.signal.no) (Ping timeout: 272 seconds) |
| 05:50:01 | × | bgt32 quits (~keutoi@223.182.17.205) (Ping timeout: 256 seconds) |
| 05:51:24 | <zero> | Axman6: are those not 2 Is ? |
| 05:51:27 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 240 seconds) |
| 05:52:02 | <Axman6> | yeah was supposed to be iIlL1| |
| 05:54:05 | → | JimL joins (~quassel@89-162-2-132.fiber.signal.no) |
| 05:57:23 | × | tomku quits (~tomku@user/tomku) (Ping timeout: 256 seconds) |
| 05:57:49 | → | tomku joins (~tomku@user/tomku) |
| 05:57:55 | × | stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 240 seconds) |
| 05:58:31 | × | kmein quits (~weechat@user/kmein) (Quit: ciao kakao) |
| 05:58:50 | → | kmein joins (~weechat@user/kmein) |
| 06:00:17 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 06:00:44 | × | yauhsien quits (~yauhsien@61-231-36-20.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 06:01:18 | → | yauhsien joins (~yauhsien@61-231-36-20.dynamic-ip.hinet.net) |
| 06:03:37 | × | tomku quits (~tomku@user/tomku) (Ping timeout: 256 seconds) |
| 06:04:00 | → | tomku joins (~tomku@user/tomku) |
| 06:04:12 | <tdammers> | weird, it renders as 27 snowmen and a vomit face for me |
| 06:06:11 | → | coot joins (~coot@213.134.190.95) |
| 06:06:12 | × | yauhsien quits (~yauhsien@61-231-36-20.dynamic-ip.hinet.net) (Ping timeout: 246 seconds) |
| 06:06:26 | <Axman6> | I think you might need to take your font into the shop and get that checked out |
| 06:07:27 | → | bahamas joins (~lucian@84.232.140.158) |
| 06:07:35 | × | z0k quits (~z0k@39.40.127.26) (Ping timeout: 256 seconds) |
| 06:09:10 | → | z0k joins (~z0k@39.40.107.216) |
| 06:09:31 | × | shriekingnoise quits (~shrieking@201.231.16.156) (Quit: Quit) |
| 06:11:04 | × | merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 248 seconds) |
| 06:11:52 | → | stiell_ joins (~stiell@gateway/tor-sasl/stiell) |
| 06:15:42 | → | yauhsien joins (~yauhsien@61-231-36-20.dynamic-ip.hinet.net) |
| 06:15:50 | × | bahamas quits (~lucian@84.232.140.158) (Ping timeout: 250 seconds) |
| 06:17:30 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 06:19:46 | × | zmt00 quits (~zmt00@user/zmt00) (Quit: Leaving) |
| 06:20:37 | × | benin quits (~benin@183.82.204.110) (Ping timeout: 256 seconds) |
| 06:20:51 | × | yauhsien quits (~yauhsien@61-231-36-20.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 06:21:29 | → | yauhsien joins (~yauhsien@61-231-36-20.dynamic-ip.hinet.net) |
| 06:23:07 | → | gaff joins (~gaff@49.207.227.93) |
| 06:23:08 | → | benin joins (~benin@183.82.204.110) |
| 06:23:12 | × | gaff quits (~gaff@49.207.227.93) (Client Quit) |
| 06:23:53 | → | zmt00 joins (~zmt00@user/zmt00) |
| 06:26:51 | × | yauhsien quits (~yauhsien@61-231-36-20.dynamic-ip.hinet.net) (Ping timeout: 256 seconds) |
| 06:29:03 | → | _ht joins (~quassel@231-169-21-31.ftth.glasoperator.nl) |
| 06:29:35 | → | axeman joins (~quassel@2a02:8109:a380:78:b030:2e2d:7f87:c8e6) |
| 06:30:22 | → | acidjnk_new joins (~acidjnk@p200300d0c722df650d0cc85cc0f432cb.dip0.t-ipconnect.de) |
| 06:30:23 | → | odnes joins (~odnes@5-203-221-3.pat.nym.cosmote.net) |
| 06:36:09 | × | coot quits (~coot@213.134.190.95) (Quit: coot) |
| 06:39:09 | → | bgt32 joins (~keutoi@223.182.17.205) |
| 06:39:11 | → | anomal joins (~anomal@87.227.196.109) |
| 06:39:26 | × | ss- quits (~ss-@187.83.249.216.dyn.smithville.net) (Quit: Client closed) |
| 06:40:13 | → | alp__ joins (~alp@user/alp) |
| 06:43:31 | → | fendor joins (~fendor@91.141.45.157.wireless.dyn.drei.com) |
| 06:46:16 | × | axeman quits (~quassel@2a02:8109:a380:78:b030:2e2d:7f87:c8e6) (Ping timeout: 248 seconds) |
| 06:46:54 | <jackdk> | bgt32: Not to my knowledge, which seems like maybe an oversight? |
| 06:47:27 | × | deadmarshal_ quits (~deadmarsh@95.38.117.55) (Ping timeout: 240 seconds) |
| 06:48:22 | → | cfricke joins (~cfricke@user/cfricke) |
| 06:50:44 | × | biberu quits (~biberu@user/biberu) (Read error: Connection reset by peer) |
| 06:52:29 | → | neurocyte8614492 joins (~neurocyte@IP-185117068183.dynamic.medianet-world.de) |
| 06:52:29 | × | neurocyte8614492 quits (~neurocyte@IP-185117068183.dynamic.medianet-world.de) (Changing host) |
| 06:52:29 | → | neurocyte8614492 joins (~neurocyte@user/neurocyte) |
| 06:56:47 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 240 seconds) |
| 07:00:13 | → | mattil joins (~mattil@helsinki.portalify.com) |
| 07:03:07 | × | jonathanx_ quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 240 seconds) |
| 07:03:26 | × | tcard quits (~tcard@p2878075-ipngn18701hodogaya.kanagawa.ocn.ne.jp) (Quit: Leaving) |
| 07:06:26 | → | abastro joins (~abab9579@143.248.229.195) |
| 07:06:32 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:1bbe:d06f:b37f:2998) |
| 07:07:04 | → | dschrempf joins (~dominik@92-249-159-213.pool.digikabel.hu) |
| 07:07:39 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 256 seconds) |
| 07:07:47 | × | chenqisu1 quits (~chenqisu1@183.217.200.38) (Remote host closed the connection) |
| 07:08:07 | → | chenqisu1 joins (~chenqisu1@183.217.200.38) |
| 07:11:38 | → | biberu joins (~biberu@user/biberu) |
| 07:12:55 | → | CiaoSen joins (~Jura@p200300c9572d40002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
| 07:13:22 | × | anomal quits (~anomal@87.227.196.109) (Remote host closed the connection) |
| 07:14:46 | × | _ht quits (~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection) |
| 07:16:43 | × | dschrempf quits (~dominik@92-249-159-213.pool.digikabel.hu) (Ping timeout: 256 seconds) |
| 07:16:57 | → | bahamas joins (~lucian@84.232.140.158) |
| 07:17:01 | → | merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
| 07:22:30 | × | bahamas quits (~lucian@84.232.140.158) (Ping timeout: 246 seconds) |
| 07:23:38 | → | InstX1 joins (~Liam@2601:6c4:4080:3f80:e90d:eced:aa0c:bcb3) |
| 07:23:48 | × | InstX1_ quits (~Liam@2601:6c4:4080:3f80:1d4a:af44:f702:f9c0) (Ping timeout: 240 seconds) |
| 07:26:50 | → | redb joins (~nmh@136.49.49.211) |
| 07:26:55 | × | littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds) |
| 07:28:35 | → | InstX1_ joins (~Liam@2601:6c4:4080:3f80:5940:980:e666:cc89) |
| 07:29:29 | × | CiaoSen quits (~Jura@p200300c9572d40002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 248 seconds) |
| 07:30:02 | → | dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be) |
| 07:30:22 | × | InstX1 quits (~Liam@2601:6c4:4080:3f80:e90d:eced:aa0c:bcb3) (Ping timeout: 250 seconds) |
| 07:32:07 | × | alp__ quits (~alp@user/alp) (Remote host closed the connection) |
| 07:32:23 | → | alp_ joins (~alp@user/alp) |
| 07:41:07 | → | Midjak joins (~Midjak@82.66.147.146) |
| 07:46:22 | × | king_gs quits (~Thunderbi@2806:103e:29:1de5:8bc8:f08f:4d70:424) (Quit: king_gs) |
| 07:46:54 | → | akegalj joins (~akegalj@93-138-88-178.adsl.net.t-com.hr) |
| 07:47:23 | → | king_gs joins (~Thunderbi@2806:103e:29:1de5:8bc8:f08f:4d70:424) |
| 07:48:07 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 07:48:17 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 07:49:26 | → | son0p joins (~ff@181.136.122.143) |
| 07:49:35 | × | odnes quits (~odnes@5-203-221-3.pat.nym.cosmote.net) (Remote host closed the connection) |
| 07:49:52 | → | odnes joins (~odnes@5-203-221-3.pat.nym.cosmote.net) |
| 07:51:31 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
| 07:55:30 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 250 seconds) |
| 08:01:06 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 08:03:06 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 08:03:54 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 08:04:07 | → | jackson99 joins (~bc8147f2@cerf.good1.com) |
| 08:05:35 | → | chele joins (~chele@user/chele) |
| 08:06:01 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds) |
| 08:06:32 | × | abastro quits (~abab9579@143.248.229.195) (Remote host closed the connection) |
| 08:07:39 | → | Pickchea joins (~private@user/pickchea) |
| 08:15:07 | × | elkcl quits (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) (Ping timeout: 240 seconds) |
| 08:16:01 | → | thiross joins (~igloo@173.242.113.143.16clouds.com) |
| 08:16:49 | → | abastro joins (~abab9579@143.248.229.195) |
| 08:17:21 | × | thiross quits (~igloo@173.242.113.143.16clouds.com) (Remote host closed the connection) |
| 08:19:47 | × | bgt32 quits (~keutoi@223.182.17.205) (Ping timeout: 240 seconds) |
| 08:20:24 | × | cosimone quits (~user@93-47-228-79.ip115.fastwebnet.it) (Quit: ERC 5.4 (IRC client for GNU Emacs 28.1)) |
| 08:20:45 | → | CiaoSen joins (~Jura@p200300c9572d40002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
| 08:22:11 | → | bgt32 joins (~keutoi@223.182.21.148) |
| 08:25:53 | → | ccntrq joins (~Thunderbi@2a01:e34:eccb:b060:bc3e:467d:7ac2:fff6) |
| 08:37:12 | × | Pickchea quits (~private@user/pickchea) (Ping timeout: 248 seconds) |
| 08:37:58 | × | InstX1_ quits (~Liam@2601:6c4:4080:3f80:5940:980:e666:cc89) (Ping timeout: 250 seconds) |
| 08:38:44 | → | jackson100 joins (~bc8147f2@cerf.good1.com) |
| 08:38:51 | → | fef joins (~thedawn@user/thedawn) |
| 08:38:57 | → | InstX1_ joins (~Liam@2601:6c4:4080:3f80:19e5:15a0:708a:70c0) |
| 08:38:58 | → | anomal joins (~anomal@87.227.196.109) |
| 08:41:28 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 248 seconds) |
| 08:43:05 | × | chenqisu1 quits (~chenqisu1@183.217.200.38) (Remote host closed the connection) |
| 08:43:13 | × | jackson99 quits (~bc8147f2@cerf.good1.com) (Quit: CGI:IRC (Ping timeout)) |
| 08:43:37 | × | _________ quits (~nobody@user/noodly) (Ping timeout: 248 seconds) |
| 08:44:13 | → | gurkenglas joins (~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de) |
| 08:45:43 | × | Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
| 08:46:02 | → | Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
| 08:46:37 | × | mattil quits (~mattil@helsinki.portalify.com) (Read error: Connection reset by peer) |
| 08:47:39 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Quit: Laa shay'a waqi'un moutlaq bale kouloun moumkine) |
| 08:47:59 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 08:50:28 | jackson100 | is now known as jackson99 |
| 08:53:09 | → | ubert joins (~Thunderbi@p200300ecdf1588a3ccf7a828925c2eab.dip0.t-ipconnect.de) |
| 08:53:32 | → | dschrempf joins (~dominik@92-249-159-213.pool.digikabel.hu) |
| 08:55:25 | × | abastro quits (~abab9579@143.248.229.195) (Remote host closed the connection) |
| 08:57:04 | → | ubert1 joins (~Thunderbi@p200300ecdf1588a34b361c912f36e7d5.dip0.t-ipconnect.de) |
| 08:58:05 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 09:02:40 | → | Pickchea joins (~private@user/pickchea) |
| 09:04:23 | × | fockerized quits (~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Quit: WeeChat 3.3) |
| 09:05:20 | × | awpr quits (uid446117@id-446117.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 09:21:00 | → | yauhsien joins (~yauhsien@61-231-36-20.dynamic-ip.hinet.net) |
| 09:24:28 | → | littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo) |
| 09:25:20 | × | dschrempf quits (~dominik@92-249-159-213.pool.digikabel.hu) (Quit: WeeChat 3.4.1) |
| 09:27:46 | → | jonathanx joins (~jonathan@dyn-5-sc.cdg.chalmers.se) |
| 09:32:39 | → | jstolarek joins (~jstolarek@staticline-31-183-186-36.toya.net.pl) |
| 09:32:45 | × | anomal quits (~anomal@87.227.196.109) (Remote host closed the connection) |
| 09:33:05 | → | anomal joins (~anomal@87.227.196.109) |
| 09:33:47 | → | deadmarshal_ joins (~deadmarsh@95.38.117.55) |
| 09:34:43 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 09:35:06 | <jstolarek> | how do I force recompilation of a project without rebuilding dependencies using cabal? |
| 09:38:12 | × | king_gs quits (~Thunderbi@2806:103e:29:1de5:8bc8:f08f:4d70:424) (Ping timeout: 250 seconds) |
| 09:40:30 | × | frost quits (~frost@user/frost) (Quit: Client closed) |
| 09:41:11 | → | robosexual1 joins (~robosexua@77.223.90.202) |
| 09:43:31 | × | jgeerds quits (~jgeerds@d5364b87.access.ecotel.net) (Remote host closed the connection) |
| 09:43:48 | → | jgeerds joins (~jgeerds@d5364b87.access.ecotel.net) |
| 09:44:58 | × | anomal quits (~anomal@87.227.196.109) (Remote host closed the connection) |
| 09:45:17 | → | frost joins (~frost@user/frost) |
| 09:45:33 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 09:45:51 | → | coot joins (~coot@213.134.190.95) |
| 09:51:25 | → | ub joins (~Thunderbi@p548c8d44.dip0.t-ipconnect.de) |
| 09:51:51 | × | ubert quits (~Thunderbi@p200300ecdf1588a3ccf7a828925c2eab.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 09:51:52 | ub | is now known as ubert |
| 09:51:52 | ubert | is now known as 080AAA3P4 |
| 09:51:52 | ubert1 | is now known as ubert |
| 09:57:27 | × | xff0x quits (~xff0x@125x102x200x106.ap125.ftth.ucom.ne.jp) (Ping timeout: 260 seconds) |
| 09:58:14 | → | mattil joins (~mattil@helsinki.portalify.com) |
| 09:58:48 | × | gurkenglas quits (~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de) (Ping timeout: 248 seconds) |
| 09:58:48 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 09:59:13 | × | akegalj quits (~akegalj@93-138-88-178.adsl.net.t-com.hr) (Quit: leaving) |
| 09:59:34 | → | abastro joins (~abab9579@143.248.229.195) |
| 10:01:03 | × | deadmarshal_ quits (~deadmarsh@95.38.117.55) (Ping timeout: 246 seconds) |
| 10:02:15 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 10:03:19 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds) |
| 10:03:35 | × | Natch quits (~natch@c-67bae255.014-297-73746f25.bbcust.telenor.se) (Remote host closed the connection) |
| 10:06:31 | <tomsmeding> | jstolarek: `cabal clean` first, or `rm -r dist-newstyle`? |
| 10:07:10 | <tomsmeding> | that shouldn't rebuild dependencies, unless you mean git repo dependencies in a cabal.project |
| 10:07:41 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 10:07:48 | <tomsmeding> | (source-repository-package that is, forgot the keyword) |
| 10:08:58 | → | Natch joins (~natch@c-67bae255.014-297-73746f25.bbcust.telenor.se) |
| 10:09:26 | <jstolarek> | yes, I mean git-repo dependencies that take like 30-40 minutes to rebui;d |
| 10:10:07 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds) |
| 10:10:18 | <jstolarek> | for now I'm just using `find src -name "*.hs" | xargs touch` but I thought there's probably a better way |
| 10:10:36 | × | CiaoSen quits (~Jura@p200300c9572d40002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
| 10:10:41 | × | merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
| 10:10:42 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 250 seconds) |
| 10:10:57 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
| 10:10:57 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 10:10:57 | finn_elija | is now known as FinnElija |
| 10:13:51 | → | epolanski joins (uid312403@id-312403.helmsley.irccloud.com) |
| 10:14:16 | × | acidjnk_new quits (~acidjnk@p200300d0c722df650d0cc85cc0f432cb.dip0.t-ipconnect.de) (Ping timeout: 248 seconds) |
| 10:15:34 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 10:16:24 | × | odnes quits (~odnes@5-203-221-3.pat.nym.cosmote.net) (Ping timeout: 248 seconds) |
| 10:16:27 | × | Pickchea quits (~private@user/pickchea) (Ping timeout: 240 seconds) |
| 10:20:14 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 250 seconds) |
| 10:20:31 | × | coot quits (~coot@213.134.190.95) (Quit: coot) |
| 10:22:04 | → | zmt01 joins (~zmt00@user/zmt00) |
| 10:22:50 | × | zmt00 quits (~zmt00@user/zmt00) (Ping timeout: 250 seconds) |
| 10:23:13 | → | odnes joins (~odnes@5-203-221-3.pat.nym.cosmote.net) |
| 10:25:44 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 10:26:34 | × | yauhsien quits (~yauhsien@61-231-36-20.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 10:27:35 | → | yauhsien joins (~yauhsien@61-231-36-20.dynamic-ip.hinet.net) |
| 10:27:44 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
| 10:27:45 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 10:27:45 | finn_elija | is now known as FinnElija |
| 10:29:08 | → | xff0x joins (~xff0x@i121-117-52-147.s41.a013.ap.plala.or.jp) |
| 10:30:16 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 248 seconds) |
| 10:31:47 | × | yauhsien quits (~yauhsien@61-231-36-20.dynamic-ip.hinet.net) (Ping timeout: 240 seconds) |
| 10:33:26 | → | coot joins (~coot@213.134.190.95) |
| 10:35:53 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 10:37:00 | → | gehmehgeh_ joins (~user@user/gehmehgeh) |
| 10:38:15 | × | gehmehgeh quits (~user@user/gehmehgeh) (Ping timeout: 240 seconds) |
| 10:39:10 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 10:40:32 | → | redb joins (~nmh@136.49.49.211) |
| 10:40:43 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 256 seconds) |
| 10:42:15 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds) |
| 10:43:38 | × | Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 272 seconds) |
| 10:43:55 | → | Maxdamantus joins (~Maxdamant@user/maxdamantus) |
| 10:44:22 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 10:44:40 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 248 seconds) |
| 10:45:05 | → | Pickchea joins (~private@user/pickchea) |
| 10:45:17 | → | Guest|66 joins (~Guest|66@87.247.98.234) |
| 10:46:03 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 10:46:44 | × | Guest|66 quits (~Guest|66@87.247.98.234) (Client Quit) |
| 10:49:17 | × | mattil quits (~mattil@helsinki.portalify.com) (Remote host closed the connection) |
| 10:50:07 | × | abastro quits (~abab9579@143.248.229.195) (Ping timeout: 240 seconds) |
| 10:50:32 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Ping timeout: 248 seconds) |
| 10:53:02 | → | elkcl joins (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) |
| 10:53:05 | × | jstolarek quits (~jstolarek@staticline-31-183-186-36.toya.net.pl) (Quit: leaving) |
| 10:54:00 | → | abastro joins (~abab9579@192.249.26.196) |
| 10:55:52 | × | InstX1_ quits (~Liam@2601:6c4:4080:3f80:19e5:15a0:708a:70c0) (Ping timeout: 248 seconds) |
| 10:59:40 | → | redb joins (~nmh@136.49.49.211) |
| 10:59:47 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 11:01:38 | → | mattil joins (~mattil@helsinki.portalify.com) |
| 11:04:00 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 250 seconds) |
| 11:04:00 | × | Pickchea quits (~private@user/pickchea) (Ping timeout: 250 seconds) |
| 11:04:35 | <shapr> | Axman6: that's a good point, I thought the writing might be a bit thin |
| 11:05:05 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 256 seconds) |
| 11:05:11 | <shapr> | I'll expand on the intro paragraph |
| 11:05:13 | → | jabra joins (~jabra11@p200300f76f02d600e2d55efffe270715.dip0.t-ipconnect.de) |
| 11:10:50 | → | Inst joins (~Liam@c-98-208-218-119.hsd1.fl.comcast.net) |
| 11:11:02 | → | redb joins (~nmh@136.49.49.211) |
| 11:11:19 | × | elkcl quits (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) (Ping timeout: 256 seconds) |
| 11:11:57 | × | swistak quits (~swistak@185.21.216.141) (Ping timeout: 252 seconds) |
| 11:14:49 | → | gurkenglas joins (~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de) |
| 11:16:10 | → | CiaoSen joins (~Jura@p200300c9572d40002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
| 11:16:34 | × | z0k quits (~z0k@39.40.107.216) (Ping timeout: 250 seconds) |
| 11:17:12 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 272 seconds) |
| 11:19:40 | → | cosimone joins (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) |
| 11:22:07 | × | Inst quits (~Liam@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 240 seconds) |
| 11:22:38 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 250 seconds) |
| 11:25:15 | → | merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
| 11:25:38 | × | jabra quits (~jabra11@p200300f76f02d600e2d55efffe270715.dip0.t-ipconnect.de) (Quit: WeeChat 3.5) |
| 11:26:34 | × | cosimone quits (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Quit: ERC 5.4 (IRC client for GNU Emacs 28.1)) |
| 11:29:44 | → | thiross joins (~thiross@173.242.113.143.16clouds.com) |
| 11:30:21 | × | joo-_ quits (~joo-_@fsf/member/joo--) (Quit: Lost terminal) |
| 11:32:56 | → | Pickchea joins (~private@user/pickchea) |
| 11:35:38 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 11:37:01 | → | redb joins (~nmh@136.49.49.211) |
| 11:38:25 | × | fef quits (~thedawn@user/thedawn) (Quit: Leaving) |
| 11:39:42 | × | odnes quits (~odnes@5-203-221-3.pat.nym.cosmote.net) (Quit: Leaving) |
| 11:41:09 | → | swistak joins (~swistak@185.21.216.141) |
| 11:41:12 | → | joo-_ joins (~joo-_@80-62-116-147-mobile.dk.customer.tdc.net) |
| 11:41:12 | × | joo-_ quits (~joo-_@80-62-116-147-mobile.dk.customer.tdc.net) (Changing host) |
| 11:41:12 | → | joo-_ joins (~joo-_@fsf/member/joo--) |
| 11:42:07 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 240 seconds) |
| 11:43:04 | → | redb joins (~nmh@136.49.49.211) |
| 11:44:21 | × | joo-_ quits (~joo-_@fsf/member/joo--) (Client Quit) |
| 11:44:44 | → | joo-_ joins (~joo-_@80-62-116-147-mobile.dk.customer.tdc.net) |
| 11:44:44 | × | joo-_ quits (~joo-_@80-62-116-147-mobile.dk.customer.tdc.net) (Changing host) |
| 11:44:44 | → | joo-_ joins (~joo-_@fsf/member/joo--) |
| 11:48:56 | → | raehik1 joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 11:48:56 | × | mattil quits (~mattil@helsinki.portalify.com) (Read error: Connection reset by peer) |
| 11:49:30 | × | bgt32 quits (~keutoi@223.182.21.148) (Ping timeout: 272 seconds) |
| 11:51:19 | × | thiross quits (~thiross@173.242.113.143.16clouds.com) (Quit: Client closed) |
| 11:51:47 | → | thiross joins (~thiross@183.156.113.134) |
| 11:51:55 | → | akegalj joins (~akegalj@95.168.118.21) |
| 11:53:19 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 11:53:19 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Client Quit) |
| 11:53:29 | → | yauhsien joins (~yauhsien@61-231-36-20.dynamic-ip.hinet.net) |
| 11:54:23 | × | merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
| 11:59:34 | → | anomal joins (~anomal@87.227.196.109) |
| 12:00:28 | × | anomal quits (~anomal@87.227.196.109) (Remote host closed the connection) |
| 12:01:44 | <thiross> | @type map |
| 12:01:46 | <lambdabot> | (a -> b) -> [a] -> [b] |
| 12:04:49 | × | akegalj quits (~akegalj@95.168.118.21) (Quit: leaving) |
| 12:04:53 | × | thiross quits (~thiross@183.156.113.134) (Quit: Client closed) |
| 12:06:00 | × | frost quits (~frost@user/frost) (Quit: Client closed) |
| 12:06:20 | <cdman> | is there anyone use gedit? |
| 12:07:24 | × | Pickchea quits (~private@user/pickchea) (Quit: Leaving) |
| 12:12:34 | <geekosaur> | I used to, but it's too heavy for little things and too underpowered for serious editing IMO |
| 12:15:03 | → | z0k joins (~z0k@39.40.107.216) |
| 12:15:49 | × | yauhsien quits (~yauhsien@61-231-36-20.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 12:18:02 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 12:18:58 | gehmehgeh_ | is now known as gehmehgeh |
| 12:22:09 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 256 seconds) |
| 12:24:12 | → | thiross joins (~user@183.156.113.134) |
| 12:33:58 | <albet70> | except zipWith, is there other "fmap" can apply a binary function on two list? |
| 12:34:19 | ← | thiross parts (~user@183.156.113.134) (ERC (IRC client for Emacs 27.1)) |
| 12:34:22 | <albet70> | ap? |
| 12:35:26 | × | z0k quits (~z0k@39.40.107.216) (Ping timeout: 250 seconds) |
| 12:39:29 | <abastro> | <del>zipWithM</del> |
| 12:43:14 | <Zemyla> | zipWith and ap encompass the two ways of combining two lists of different types. |
| 12:43:30 | → | elkcl joins (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) |
| 12:43:37 | → | wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com) |
| 12:43:37 | × | wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
| 12:43:37 | → | wroathe joins (~wroathe@user/wroathe) |
| 12:44:24 | <geekosaur> | what are you actually trying to do? there might be a better way to approach it |
| 12:44:41 | → | deadmarshal_ joins (~deadmarsh@95.38.117.55) |
| 12:46:04 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 12:46:29 | × | mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 12:46:49 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 12:47:02 | × | mc47 quits (~mc47@xmonad/TheMC47) (Client Quit) |
| 12:49:03 | × | deadmarshal_ quits (~deadmarsh@95.38.117.55) (Ping timeout: 246 seconds) |
| 12:50:49 | × | robosexual1 quits (~robosexua@77.223.90.202) (Quit: WeeChat 3.4) |
| 12:51:17 | → | redb joins (~nmh@136.49.49.211) |
| 12:53:26 | <albet70> | get a new list from a list, with the next element minus the previous one |
| 12:53:59 | <albet70> | zipWith (-) (tail a) $ a |
| 12:56:00 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 272 seconds) |
| 12:57:31 | <abastro> | Looks fine to me |
| 12:57:38 | → | z0k joins (~z0k@39.40.62.192) |
| 12:59:02 | <geekosaur> | aside from the $ being unnecessary and what happens if the list doesn't have at least two elements |
| 12:59:26 | <geekosaur> | hm |
| 12:59:30 | <geekosaur> | > tail [] |
| 12:59:31 | <lambdabot> | *Exception: Prelude.tail: empty list |
| 12:59:54 | <geekosaur> | one element is probably okay, the zipWith will just produce [] |
| 13:00:17 | → | deadmarshal_ joins (~deadmarsh@95.38.117.55) |
| 13:00:18 | <albet70> | I just wonder if this can be done with ap? |
| 13:00:58 | <geekosaur> | ap aka <*> is something different |
| 13:01:06 | × | zaquest quits (~notzaques@5.130.79.72) (Remote host closed the connection) |
| 13:01:51 | <abastro> | Yea, empty case would be different |
| 13:01:56 | <abastro> | :t ap |
| 13:01:57 | <lambdabot> | Monad m => m (a -> b) -> m a -> m b |
| 13:02:13 | <abastro> | Oh, so ap is what you call <*> |
| 13:02:24 | <albet70> | > ap zip tail $ [0..90] |
| 13:02:25 | <lambdabot> | [(0,1),(1,2),(2,3),(3,4),(4,5),(5,6),(6,7),(7,8),(8,9),(9,10),(10,11),(11,12... |
| 13:03:18 | <albet70> | :t zip |
| 13:03:19 | <geekosaur> | well, it's a historical thing |
| 13:03:19 | <lambdabot> | [a] -> [b] -> [(a, b)] |
| 13:03:30 | <geekosaur> | Applicative is still fairly "new" as Haskell goes |
| 13:03:45 | <geekosaur> | so we spelled <$> `liftM` and <*> `ap` |
| 13:04:30 | → | Flow joins (~none@gentoo/developer/flow) |
| 13:04:37 | <geekosaur> | and there are still a lot of programs that retrofitted Applicative instances by doing `instance Applicative Foo where <*> = ap` because every Monad is an Applicative |
| 13:05:05 | <geekosaur> | so `ap` has to remain as it is |
| 13:05:29 | <albet70> | a little confused here, tail [0..90] will get [1..90] and what ap zip [1..90] do? zip need two list |
| 13:06:02 | <geekosaur> | :t ap zip tail |
| 13:06:04 | <lambdabot> | [a] -> [(a, a)] |
| 13:06:10 | <geekosaur> | :t ap zip |
| 13:06:11 | <lambdabot> | ([a] -> [b]) -> [a] -> [(a, b)] |
| 13:06:47 | <geekosaur> | bleh, that was less than helpful |
| 13:06:50 | <geekosaur> | :t ap |
| 13:06:51 | <lambdabot> | Monad m => m (a -> b) -> m a -> m b |
| 13:08:26 | × | jgeerds quits (~jgeerds@d5364b87.access.ecotel.net) (Remote host closed the connection) |
| 13:09:04 | → | yauhsien joins (~yauhsien@61-231-36-20.dynamic-ip.hinet.net) |
| 13:10:09 | <geekosaur> | % :t ap @[] |
| 13:10:09 | <yahb> | geekosaur: [a -> b] -> [a] -> [b] |
| 13:10:11 | → | jgeerds joins (~jgeerds@d5364b87.access.ecotel.net) |
| 13:10:18 | <abastro> | I wonder.. |
| 13:10:19 | <geekosaur> | wrong one, sorry |
| 13:10:28 | <abastro> | % :t ap @((->) _) |
| 13:10:28 | <yahb> | abastro: (w -> (a -> b)) -> (w -> a) -> w -> b |
| 13:10:39 | <abastro> | % :t ap zip |
| 13:10:39 | <yahb> | abastro: ([a] -> [b]) -> [a] -> [(a, b)] |
| 13:10:45 | <abastro> | Oh Interesting |
| 13:11:09 | <abastro> | % :t ap zip tail |
| 13:11:09 | <yahb> | abastro: [a] -> [(a, a)] |
| 13:11:23 | <abastro> | Now this is point-free style right |
| 13:12:10 | → | zaquest joins (~notzaques@5.130.79.72) |
| 13:12:17 | → | frost joins (~frost@user/frost) |
| 13:12:55 | → | acidjnk_new joins (~acidjnk@p200300d0c722df65bc11ed8127f1571b.dip0.t-ipconnect.de) |
| 13:13:07 | <geekosaur> | @quote ap.zip |
| 13:13:07 | <lambdabot> | No quotes match. You untyped fool! |
| 13:13:12 | <geekosaur> | oh |
| 13:13:18 | <geekosaur> | @quote zip.ap |
| 13:13:18 | <lambdabot> | quicksilver says: zip`ap`tail - the Aztec god of consecutive numbers |
| 13:13:37 | <geekosaur> | not that that helps either :) |
| 13:14:06 | <geekosaur> | anyway I get lost around here, I still haven't quite figured all of Applicative. need to sit down at some point and work out what's going on |
| 13:14:18 | <albet70> | more confused |
| 13:14:18 | <geekosaur> | but ap / <*> is not quite fmap |
| 13:14:51 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
| 13:14:58 | <albet70> | :t ap zip tail |
| 13:14:59 | <lambdabot> | [a] -> [(a, a)] |
| 13:15:27 | <abastro> | geekosaur well if you say that you are lost.. what about us :/ |
| 13:17:31 | <geekosaur> | I told you I'm far fromexpert |
| 13:17:56 | <geekosaur> | doesn't help that Applicative came in while I was all but offline |
| 13:18:17 | <albet70> | f xs = zip xs (tail xs) |
| 13:18:33 | <albet70> | f = ap zip tail |
| 13:19:57 | <geekosaur> | that is more or less the ap "pattern" |
| 13:20:02 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 13:20:04 | × | deadmarshal_ quits (~deadmarsh@95.38.117.55) (Ping timeout: 272 seconds) |
| 13:21:39 | × | gurkenglas quits (~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de) (Ping timeout: 256 seconds) |
| 13:23:19 | → | redb joins (~nmh@136.49.49.211) |
| 13:24:46 | <albet70> | when m~ (->) e is always weird |
| 13:25:19 | × | jgeerds quits (~jgeerds@d5364b87.access.ecotel.net) (Remote host closed the connection) |
| 13:26:57 | <albet70> | : t zip (>>=) tail |
| 13:27:27 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 240 seconds) |
| 13:27:31 | <albet70> | :t zip (>>=) tail |
| 13:27:32 | <lambdabot> | error: |
| 13:27:32 | <lambdabot> | • Couldn't match expected type ‘[a]’ |
| 13:27:32 | <lambdabot> | with actual type ‘m0 a0 -> (a0 -> m0 b0) -> m0 b0’ |
| 13:28:26 | → | jgeerds joins (~jgeerds@d5364b87.access.ecotel.net) |
| 13:29:11 | → | zeenk joins (~zeenk@2a02:2f04:a313:d600:8d26:ec9f:3ff6:fc94) |
| 13:31:29 | <abastro> | You mean this? |
| 13:31:32 | <abastro> | :t zip >>= tail |
| 13:31:33 | <lambdabot> | error: |
| 13:31:33 | <lambdabot> | • Couldn't match expected type ‘[[b]]’ |
| 13:31:33 | <lambdabot> | with actual type ‘[a0] -> [b0] -> [(a0, b0)]’ |
| 13:31:59 | <abastro> | Still not working hm |
| 13:32:59 | × | kaph quits (~kaph@dynamic-adsl-78-12-162-98.clienti.tiscali.it) (Ping timeout: 256 seconds) |
| 13:35:44 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 13:37:07 | × | coot quits (~coot@213.134.190.95) (Quit: coot) |
| 13:40:23 | × | bliminse quits (~bliminse@host86-185-253-73.range86-185.btcentralplus.com) (Quit: leaving) |
| 13:43:26 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
| 13:45:06 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 13:47:24 | → | Inst joins (~Liam@c-98-208-218-119.hsd1.fl.comcast.net) |
| 13:47:32 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 13:50:09 | <Zemyla> | @let import Data.Profunctor.Mapping -- int-e |
| 13:50:11 | <lambdabot> | <no location info>: error: |
| 13:50:11 | <lambdabot> | The package (distributive-0.6.2) is required to be trusted but it isn't! |
| 13:51:21 | × | cfricke quits (~cfricke@user/cfricke) (Read error: Connection reset by peer) |
| 13:53:08 | → | merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
| 13:54:10 | → | redb joins (~nmh@136.49.49.211) |
| 13:54:13 | → | Everything joins (~Everythin@37.115.210.35) |
| 13:54:13 | → | slack1256 joins (~slack1256@191.126.227.204) |
| 13:58:21 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 246 seconds) |
| 14:02:48 | × | frost quits (~frost@user/frost) (Quit: Client closed) |
| 14:03:46 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 14:04:22 | → | bliminse joins (~bliminse@host86-185-253-73.range86-185.btcentralplus.com) |
| 14:06:03 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 14:07:33 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 256 seconds) |
| 14:08:08 | → | cfricke joins (~cfricke@user/cfricke) |
| 14:11:12 | → | redb joins (~nmh@136.49.49.211) |
| 14:11:20 | × | d34df00d quits (~d34df00d@2600:1700:8c60:3a10::46) (Remote host closed the connection) |
| 14:13:13 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 248 seconds) |
| 14:13:43 | → | deadmarshal_ joins (~deadmarsh@95.38.117.55) |
| 14:15:48 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 272 seconds) |
| 14:16:28 | <abastro> | When doing haskell is quite fun, so I cannot be hired doing haskell :P |
| 14:18:08 | × | deadmarshal_ quits (~deadmarsh@95.38.117.55) (Ping timeout: 250 seconds) |
| 14:19:26 | × | lambdabot quits (~lambdabot@haskell/bot/lambdabot) (Quit: meh) |
| 14:19:34 | → | lambdabot joins (~lambdabot@silicon.int-e.eu) |
| 14:19:35 | × | lambdabot quits (~lambdabot@silicon.int-e.eu) (Changing host) |
| 14:19:35 | → | lambdabot joins (~lambdabot@haskell/bot/lambdabot) |
| 14:20:01 | × | m1dnight quits (~christoph@78-22-9-5.access.telenet.be) (Quit: WeeChat 3.5) |
| 14:20:03 | <int-e> | @let import Data.Profunctor.Mapping |
| 14:20:10 | <lambdabot> | Defined. |
| 14:21:08 | <int-e> | (all this because import Data.Coerce <-- this module isn't trusted) |
| 14:21:24 | → | m1dnight joins (~christoph@78-22-9-5.access.telenet.be) |
| 14:22:42 | × | hpc quits (~juzz@ip98-169-35-13.dc.dc.cox.net) (Ping timeout: 260 seconds) |
| 14:23:38 | <abastro> | Not trusted for a reason right? |
| 14:24:23 | → | hpc joins (~juzz@ip98-169-35-13.dc.dc.cox.net) |
| 14:25:09 | <geekosaur> | actually Data.Coerce should be fine |
| 14:25:18 | × | merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 246 seconds) |
| 14:25:20 | <int-e> | geekosaur: I know. |
| 14:25:28 | <geekosaur> | it uses unsafeCoerce under the hood, but the typechecker ensures it's always safe |
| 14:25:39 | <geekosaur> | right, I meant abastro |
| 14:26:43 | × | hololeap quits (~hololeap@user/hololeap) (Remote host closed the connection) |
| 14:26:59 | → | ph88 joins (~ph88@ip5f5af71f.dynamic.kabel-deutschland.de) |
| 14:27:34 | <abastro> | I heard that newtype could still be problematic |
| 14:27:43 | <int-e> | Well it's baked into the Core language, and then gets erased (just like unsafeCoerce) when going to Stg, I think. |
| 14:27:49 | <abastro> | Somewhere I heard that GeneralizedNewtypeDeriving was deemed unsafe at least |
| 14:27:59 | <geekosaur> | that was why Coercible exists |
| 14:28:00 | <abastro> | I guess `coerce` would have similar reason |
| 14:28:02 | <int-e> | GND is *much* safer these days |
| 14:28:03 | → | hololeap joins (~hololeap@user/hololeap) |
| 14:28:04 | <geekosaur> | go look at type roles |
| 14:28:42 | <abastro> | Oh, I guess it deemed unsafe was legacy then |
| 14:28:57 | <geekosaur> | yes. type roles fixed GND |
| 14:29:00 | <albet70> | why tail >>= tail is wrong? |
| 14:29:06 | × | cfricke quits (~cfricke@user/cfricke) (Ping timeout: 272 seconds) |
| 14:29:13 | <abastro> | Ohh, I see |
| 14:29:28 | <int-e> | Yes, it used to be totally unsafe because it blindly applied unsafeCoerce under the hood. Now it blindly applies coerce under the hood and benefits from the safety guarantees that comes with. |
| 14:29:30 | <abastro> | What do you expect `tail >>= tail` to do? |
| 14:29:35 | <albet70> | >>= g f = \x -> f (g x) |
| 14:29:41 | <abastro> | Unless you mean `tail >=> tail` |
| 14:29:59 | <int-e> | :t tail >>= tail |
| 14:30:01 | <lambdabot> | error: |
| 14:30:01 | <lambdabot> | • Couldn't match expected type ‘[[b]]’ |
| 14:30:01 | <lambdabot> | with actual type ‘[a0] -> [a0]’ |
| 14:30:26 | × | abastro quits (~abab9579@192.249.26.196) (Remote host closed the connection) |
| 14:30:29 | <albet70> | g is an unary function, f is a binary function |
| 14:30:33 | <int-e> | :t tail >=> tail |
| 14:30:35 | <lambdabot> | [[c]] -> [c] |
| 14:30:38 | <int-e> | :t tail . tail |
| 14:30:40 | <lambdabot> | [a] -> [a] |
| 14:31:08 | <int-e> | (the last one seems most likely, really) |
| 14:32:21 | × | Everything quits (~Everythin@37.115.210.35) (Quit: leaving) |
| 14:32:31 | × | lagash quits (lagash@lagash.shelltalk.net) (Remote host closed the connection) |
| 14:32:44 | <albet70> | tail >=> tail that limit m to [] |
| 14:33:43 | <abastro[m]> | Hm but why tho |
| 14:34:31 | <albet70> | what about tail >>= zip? |
| 14:34:45 | <albet70> | :t tail (>>=) zip |
| 14:34:46 | <lambdabot> | error: |
| 14:34:46 | <lambdabot> | • Couldn't match expected type ‘([a2] -> [b1] -> [(a2, b1)]) -> t’ |
| 14:34:46 | <lambdabot> | with actual type ‘[a1]’ |
| 14:35:05 | <albet70> | :t tail |
| 14:35:07 | <lambdabot> | [a] -> [a] |
| 14:35:09 | <albet70> | :t zip |
| 14:35:11 | <lambdabot> | [a] -> [b] -> [(a, b)] |
| 14:35:15 | → | lagash joins (lagash@lagash.shelltalk.net) |
| 14:35:21 | <albet70> | :t (>>=) |
| 14:35:22 | <lambdabot> | Monad m => m a -> (a -> m b) -> m b |
| 14:35:48 | → | dextaa joins (~dextaa@user/dextaa) |
| 14:35:51 | × | dextaa quits (~dextaa@user/dextaa) (Remote host closed the connection) |
| 14:36:01 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.4) |
| 14:36:20 | → | bontaq joins (~user@ool-45779fe5.dyn.optonline.net) |
| 14:36:52 | <abastro[m]> | `tail (>>=)` does not make sense |
| 14:37:27 | <abastro[m]> | >>= is not a list |
| 14:37:51 | <albet70> | :t zip <*> tail |
| 14:37:52 | <lambdabot> | [a] -> [(a, a)] |
| 14:38:08 | → | mikoto-chan joins (~mikoto-ch@213.177.151.239) |
| 14:38:38 | <albet70> | tail (>>=) m is (->)_? |
| 14:40:17 | → | gurkenglas joins (~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de) |
| 14:42:02 | <abastro[m]> | I don't see a way where `tail (>>=)` would make sense |
| 14:43:17 | → | redb joins (~nmh@136.49.49.211) |
| 14:43:51 | → | maroloccio joins (~marolocci@213.99.23.106) |
| 14:44:14 | → | mmhat joins (~mmh@55d42e6b.access.ecotel.net) |
| 14:44:23 | × | mikoto-chan quits (~mikoto-ch@213.177.151.239) (Ping timeout: 256 seconds) |
| 14:45:01 | <geekosaur> | albet70, `tail (>>=)` is tail applied to the operator (>>=). this can't make sense. what are you really trying to say? or do? |
| 14:46:29 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 14:47:52 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 248 seconds) |
| 14:48:08 | <abastro[m]> | % :t tail |
| 14:48:08 | <yahb> | abastro[m]: [a] -> [a] |
| 14:48:10 | <albet70> | nothing to do, just wonder why it can not? |
| 14:48:28 | → | shriekingnoise joins (~shrieking@201.231.16.156) |
| 14:49:12 | × | jackson99 quits (~bc8147f2@cerf.good1.com) (Quit: CGI:IRC (Session timeout)) |
| 14:49:28 | → | notzmv joins (~zmv@user/notzmv) |
| 14:50:20 | <geekosaur> | because tail operates on lists, not functions |
| 14:50:34 | <geekosaur> | and `tail >>=` is something different from `tail (>>=)` |
| 14:50:53 | <albet70> | "geekosaur :and `tail >>=` is something different from `tail (>>=)`", how so? |
| 14:51:18 | <abastro[m]> | Operator section is hard |
| 14:51:22 | <geekosaur> | you wrap an operator in parentheses to turn it into a (prefix) function |
| 14:51:34 | <geekosaur> | :t + --this is an error |
| 14:51:35 | <lambdabot> | error: parse error on input ‘+’ |
| 14:51:38 | <abastro[m]> | Ye haskell has too much sugar |
| 14:51:48 | <geekosaur> | :t (+) -- this is operator `+` turned into a function |
| 14:51:49 | <lambdabot> | Num a => a -> a -> a |
| 14:52:41 | × | CiaoSen quits (~Jura@p200300c9572d40002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 248 seconds) |
| 14:52:50 | <albet70> | what about tail >=> tail? |
| 14:53:02 | <abastro[m]> | > ([] `tail`) |
| 14:53:04 | <lambdabot> | *Exception: Prelude.tail: empty list |
| 14:53:13 | <abastro[m]> | Hehe |
| 14:53:24 | <abastro[m]> | :t (>=>) |
| 14:53:25 | <lambdabot> | Monad m => (a -> m b) -> (b -> m c) -> a -> m c |
| 14:53:37 | <geekosaur> | that composes two monads, the monad in question being the list monad |
| 14:53:48 | <geekosaur> | it's like function composition but for monads |
| 14:53:50 | <abastro[m]> | It is monadic composition |
| 14:53:56 | <geekosaur> | :t (>=>) |
| 14:53:57 | <lambdabot> | Monad m => (a -> m b) -> (b -> m c) -> a -> m c |
| 14:54:06 | <geekosaur> | :t (>>>) -- flipped (.) |
| 14:54:08 | <lambdabot> | forall k (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k). Category cat => cat a b -> cat b c -> cat a c |
| 14:54:13 | <geekosaur> | oh crap |
| 14:54:18 | <geekosaur> | thanks lambdabot :/ |
| 14:54:31 | <albet70> | wait a sec, what the m is? e-> or []? |
| 14:54:45 | <abastro[m]> | Haha |
| 14:55:17 | <abastro[m]> | % :k Category |
| 14:55:17 | <yahb> | abastro[m]: (k -> k -> *) -> Constraint |
| 14:55:28 | <geekosaur> | the monad here is [] because that's what tail produces |
| 14:56:08 | → | jgeerds_ joins (~jgeerds@d5364b87.access.ecotel.net) |
| 14:56:41 | <albet70> | how to express it? >>= or >=> limit or concrete the m by its value? |
| 14:57:03 | <geekosaur> | neither of those limit m, they have to operate on any Monad m |
| 14:57:18 | <geekosaur> | the type of `tail` picks m to be [] |
| 14:58:31 | → | coot joins (~coot@213.134.190.95) |
| 14:58:56 | <albet70> | but its value limit m? |
| 14:59:12 | <albet70> | its parameter |
| 14:59:30 | × | jgeerds quits (~jgeerds@d5364b87.access.ecotel.net) (Ping timeout: 272 seconds) |
| 14:59:53 | <abastro[m]> | Type parameter |
| 15:00:05 | <albet70> | f >>= g, if f is [a] then m is limited to [] |
| 15:00:23 | <albet70> | if f is e-> a then m is limited to e-> |
| 15:00:56 | → | bahamas joins (~lucian@84.232.140.158) |
| 15:01:45 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:1bbe:d06f:b37f:2998) (Quit: WeeChat 2.8) |
| 15:02:12 | <albet70> | :t fmap |
| 15:02:13 | <lambdabot> | Functor f => (a -> b) -> f a -> f b |
| 15:02:22 | × | jgeerds_ quits (~jgeerds@d5364b87.access.ecotel.net) (Ping timeout: 260 seconds) |
| 15:03:08 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 15:03:54 | <albet70> | mapFuc f g = \x -> f (g x) |
| 15:06:03 | <albet70> | mapList f (x:xs) = (f x):xs |
| 15:07:27 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds) |
| 15:08:34 | <geekosaur> | % :t fmap @((->) _) |
| 15:08:34 | <yahb> | geekosaur: (a -> b) -> (w -> a) -> w -> b |
| 15:08:45 | <geekosaur> | % :t fmap @[] |
| 15:08:45 | <yahb> | geekosaur: (a -> b) -> [a] -> [b] |
| 15:08:48 | × | acidjnk_new quits (~acidjnk@p200300d0c722df65bc11ed8127f1571b.dip0.t-ipconnect.de) (Read error: Connection reset by peer) |
| 15:09:19 | <geekosaur> | something unclear here is that first one is really (a -> b) -> (w -> a) -> (w -> b) |
| 15:09:39 | <geekosaur> | but :t strips "unnecessary" parentheses |
| 15:11:01 | → | _________ joins (~nobody@user/noodly) |
| 15:11:02 | × | cdman quits (~dcm@user/dmc/x-4369397) (Quit: Leaving) |
| 15:11:57 | → | awpr joins (uid446117@id-446117.lymington.irccloud.com) |
| 15:12:03 | <albet70> | :t tail >=> |
| 15:12:04 | <lambdabot> | error: |
| 15:12:04 | <lambdabot> | parse error (possibly incorrect indentation or mismatched brackets) |
| 15:12:29 | <albet70> | :t (>=>) tail |
| 15:12:30 | <lambdabot> | (b -> [c]) -> [b] -> [c] |
| 15:12:32 | <abastro[m]> | Well, you could: |
| 15:12:33 | <abastro[m]> | :t (tail >=>) |
| 15:12:35 | <lambdabot> | (b -> [c]) -> [b] -> [c] |
| 15:13:08 | <abastro[m]> | When parens change meaning..wait |
| 15:14:31 | → | redb joins (~nmh@136.49.49.211) |
| 15:14:36 | <albet70> | so could I say tail limited the m to [] in (>=>) tail? |
| 15:14:55 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 15:15:24 | <albet70> | but could [a]-> as m? |
| 15:16:01 | <albet70> | [] could be m, e-> could be m, [e]-> could be m? |
| 15:16:25 | <geekosaur> | yes. the third is just a special case of the second |
| 15:16:53 | <albet70> | if a unary function f, (>=>) f would limited m to e->, right? |
| 15:17:03 | <geekosaur> | it's e-> where e is [e'] for some e' |
| 15:17:27 | <abastro[m]> | Fun thing: |
| 15:17:36 | <geekosaur> | and yuou're still trying to treat (op) and op as the same thing |
| 15:17:37 | <abastro[m]> | :t (tai >=>) |
| 15:17:38 | <lambdabot> | error: |
| 15:17:39 | <lambdabot> | • Variable not in scope: tai :: a -> m b |
| 15:17:39 | <lambdabot> | • Perhaps you meant one of these: |
| 15:17:42 | <abastro[m]> | :t (tail >=>) |
| 15:17:43 | <geekosaur> | consider this: |
| 15:17:44 | <lambdabot> | (b -> [c]) -> [b] -> [c] |
| 15:17:53 | <abastro[m]> | :t (>=> tail) |
| 15:17:54 | <lambdabot> | (a -> [[c]]) -> a -> [c] |
| 15:17:57 | <geekosaur> | > fmap (+) z [a,b,c] |
| 15:17:59 | <lambdabot> | error: |
| 15:17:59 | <lambdabot> | • Couldn't match expected type ‘[Expr] -> a’ |
| 15:17:59 | <lambdabot> | with actual type ‘Expr’ |
| 15:18:00 | <abastro[m]> | Oops.. matrix bridge pls |
| 15:18:04 | <geekosaur> | whoops |
| 15:18:23 | <albet70> | then again why (>>=) tail make no sense |
| 15:18:32 | <geekosaur> | > fmap (+) z [a,b,c] :: FromExpr f => [f] |
| 15:18:34 | <lambdabot> | error: |
| 15:18:34 | <lambdabot> | • Couldn't match type ‘a0 -> a0’ with ‘[f1]’ |
| 15:18:34 | <lambdabot> | Expected type: [Expr] -> [f1] |
| 15:18:35 | <albet70> | when m is [e]-> |
| 15:18:50 | <geekosaur> | again, yyou are treating (>>=) and >>=mas the same. they are not |
| 15:18:52 | <abastro[m]> | `(>>=) tail` makes sense. |
| 15:18:52 | <abastro[m]> | `tail (>>=)` doesn't. |
| 15:18:57 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 256 seconds) |
| 15:19:19 | <albet70> | :t (>>=) tail |
| 15:19:21 | <lambdabot> | ([a] -> [a] -> b) -> [a] -> b |
| 15:19:54 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 15:20:18 | <geekosaur> | can I have the channel for a second? |
| 15:20:28 | <geekosaur> | albet70, compare these |
| 15:20:32 | <geekosaur> | > 2 + 3 |
| 15:20:34 | <lambdabot> | 5 |
| 15:20:38 | <geekosaur> | > (+) 2 3 |
| 15:20:40 | <lambdabot> | 5 |
| 15:20:57 | → | CiaoSen joins (~Jura@p200300c9572d40002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
| 15:21:01 | <geekosaur> | the first is + as an operator, the second is + as a (prefix) function |
| 15:21:19 | <geekosaur> | you can't simply treat (+) as the same as +, it is different |
| 15:21:29 | <geekosaur> | likewise >>=and (>>=) are different |
| 15:21:50 | <geekosaur> | ok, back to your regularly scheduled confusion :) |
| 15:22:01 | <albet70> | (>>=) tail is a normal prefix expression, and tail (>>=) is a suffix expression |
| 15:24:05 | <[exa]> | unfortunately not |
| 15:24:21 | <albet70> | :t (tail >>=) |
| 15:24:22 | <lambdabot> | ([a] -> [a] -> b) -> [a] -> b |
| 15:24:43 | <albet70> | tail >>= is a suffix expression |
| 15:25:33 | <[exa]> | without the parentheses in place it is a parse error |
| 15:25:38 | <abastro[m]> | Yea parens are supposed to be only for operator precedence |
| 15:25:44 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 250 seconds) |
| 15:25:53 | <abastro[m]> | But haskell uses it for special treatment for operators as well |
| 15:25:59 | <albet70> | add parentheses to >>= would make it a prefix expression |
| 15:26:22 | <tdammers> | "supposed to" according to whom? |
| 15:26:30 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 15:26:54 | <tdammers> | I would argue that any language is free to define the meaning of its tokens as its designers see fit |
| 15:27:07 | × | hsw quits (~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net) (Ping timeout: 240 seconds) |
| 15:27:09 | → | redb joins (~nmh@136.49.49.211) |
| 15:27:15 | <albet70> | then again what's the m in tail >>=? |
| 15:27:37 | → | _ht joins (~quassel@231-169-21-31.ftth.glasoperator.nl) |
| 15:27:57 | <tdammers> | you mean in the type of (tail >>=) ? |
| 15:27:58 | <c_wraith> | albet70: just follow the types. It's purely mechanical |
| 15:28:00 | <albet70> | [a]->? |
| 15:28:04 | <[exa]> | albet70: the (>>=) gets instantiated for `Monad []` there |
| 15:28:15 | <abastro[m]> | According to math class I guess tdammers |
| 15:28:24 | → | merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
| 15:28:29 | <tdammers> | abastro[m]: programming isn't math |
| 15:28:46 | <[exa]> | albet70: ah no sorry, there's really (->) in place :] |
| 15:28:47 | <abastro[m]> | <del>Oh noo</del> |
| 15:28:53 | <tdammers> | and guess what, parentheses are also used differently in natural language, in music notation, etc. |
| 15:29:08 | <abastro[m]> | Welp so much for me to expect programming to be extension of basic math |
| 15:29:34 | <abastro[m]> | Well then haskell's problem is just having too many syntaxes |
| 15:29:35 | <tdammers> | math and programming are related, but neither is an "extension" of the other |
| 15:30:03 | <tdammers> | "haskell's problem" is that you aren't familiar with its syntax |
| 15:30:53 | <abastro[m]> | Yep, basic math/calc and math are related, but neither is an extension of the other |
| 15:31:08 | × | dolio quits (~dolio@130.44.130.54) (Quit: ZNC 1.8.2 - https://znc.in) |
| 15:33:41 | → | dolio joins (~dolio@130.44.130.54) |
| 15:33:42 | × | merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds) |
| 15:36:32 | <abastro[m]> | Sorry albet that I interfered your question |
| 15:37:06 | × | maroloccio quits (~marolocci@213.99.23.106) (Quit: WeeChat 3.0) |
| 15:37:09 | × | joo-_ quits (~joo-_@fsf/member/joo--) (Quit: leaving) |
| 15:38:15 | → | Macbethwin joins (~chargen@D964062A.static.ziggozakelijk.nl) |
| 15:39:00 | → | Pickchea joins (~private@user/pickchea) |
| 15:39:09 | × | jonathanx quits (~jonathan@dyn-5-sc.cdg.chalmers.se) (Remote host closed the connection) |
| 15:39:23 | → | jgeerds joins (~jgeerds@d5364b87.access.ecotel.net) |
| 15:40:24 | <albet70> | no need, I love haskell, but I can't comprehend |
| 15:42:31 | × | Macbethwin quits (~chargen@D964062A.static.ziggozakelijk.nl) (Remote host closed the connection) |
| 15:42:39 | <geekosaur> | you need to work with it more and become familiar with its syntax |
| 15:42:50 | → | Macbethwin joins (~chargen@D964062A.static.ziggozakelijk.nl) |
| 15:42:55 | <shapr> | yeah, write a bunch of code! |
| 15:42:55 | <geekosaur> | have you worked your way through a haskell course or book yet? |
| 15:44:12 | <albet70> | lyah I have read, but it lacks lots of concepts |
| 15:45:33 | × | stevenxl quits (~stevenxl@c-73-72-2-81.hsd1.il.comcast.net) (Quit: leaving) |
| 15:45:56 | <geekosaur> | it also lacks exercises for the most part |
| 15:47:16 | <geekosaur> | @where cis194 |
| 15:47:16 | <lambdabot> | https://www.seas.upenn.edu/~cis194/spring13/lectures.html |
| 15:47:46 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
| 15:48:48 | <geekosaur> | that course is well recommended |
| 15:49:48 | <geekosaur> | unfortunately I'm not the best reference for learning haskell: not only am I a lousy teacher :) but I learned from the original Gentle Introduction — which works best if you have an SML/NJ background (which I do, plus a bunch of other languages) |
| 15:50:29 | × | jgeerds quits (~jgeerds@d5364b87.access.ecotel.net) (Remote host closed the connection) |
| 15:50:30 | <Zemyla> | A New Jersey background? |
| 15:50:34 | × | kenran quits (~kenran@200116b82b0a340003754354c85ff367.dip.versatel-1u1.de) (Quit: WeeChat info:version) |
| 15:51:11 | <abastro[m]> | I just loled |
| 15:51:17 | <dolio> | Hey, yo, just learn Haskell. |
| 15:51:18 | <geekosaur> | https://www.smlnj.org/ |
| 15:51:43 | <geekosaur> | I worked at Carnegie Mellon for a decade and a half, that's smlnj territory |
| 15:51:44 | → | jgeerds joins (~jgeerds@d5364b87.access.ecotel.net) |
| 15:53:10 | → | jackson99 joins (~bc8147f2@cerf.good1.com) |
| 15:53:14 | <abastro[m]> | Wait SML of New Jersey exists? |
| 15:53:32 | <abastro[m]> | Wow. |
| 15:53:42 | <c_wraith> | You're gonna maker Robert Harper cry |
| 15:54:05 | <monochrom> | I learned from the gentle introduction, and I am a great teacher. :) |
| 15:54:11 | <geekosaur> | SCS gave zerofucks what crazy people in ECE did :) |
| 15:54:28 | × | Macbethwin quits (~chargen@D964062A.static.ziggozakelijk.nl) (Remote host closed the connection) |
| 15:54:47 | → | Macbethwin joins (~chargen@D964062A.static.ziggozakelijk.nl) |
| 15:54:55 | × | FragByte quits (~christian@user/fragbyte) (Ping timeout: 260 seconds) |
| 15:55:27 | → | FragByte joins (~christian@user/fragbyte) |
| 15:55:49 | <monochrom> | Previous SML or Scheme exposure may or may not help depending on how much you relied on mutable variables in them, in which case you were just as stuck in Algol as everyone else. |
| 15:56:06 | <telser> | It isn't free but I've had some success in helping onboard people to the language with https://haskellbook.com/ as the primary resource. Also had success with some of the other things already mentioned, lyah, cis194, etc. |
| 15:56:56 | × | littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Remote host closed the connection) |
| 15:56:56 | <dolio> | It'll still help with some stuff, like using recursion for everything. |
| 15:57:12 | × | bahamas quits (~lucian@84.232.140.158) (Ping timeout: 248 seconds) |
| 15:57:19 | → | littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo) |
| 15:58:12 | <geekosaur> | most of my exposure was hoobnobbing with SCS grad students and staff — the latter of whom used a bot speaking smlnj to do system and network queries |
| 15:58:23 | → | vicfred joins (~vicfred@user/vicfred) |
| 15:58:30 | <monochrom> | That silver lining has tarnish too because tail recursion is overemphasized there... |
| 15:58:52 | <abastro[m]> | Coming from C background, I personally had great success by writing haskell from get go to solve algorithmic problems |
| 15:59:00 | <geekosaur> | all declarative (in fact the syntax for declaring variables/functions caught me by surprise later) so a good prep for haskell |
| 15:59:15 | <monochrom> | Only Larry Paulson has the gut to say in an SML textbook "you spend linear space for linear-sized output, that's fair game". |
| 15:59:25 | <c_wraith> | monochrom: unfortunately, tail recursion actually is important when your implementation blows up with non-tail recursion |
| 15:59:32 | <monochrom> | (of "map f (x::xs) = f x :: map f xs") |
| 15:59:41 | → | merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
| 15:59:42 | <dolio> | A lot of cases of needing mutation in simple examples revolve around not being able to move to proceed to a case where variables have different values without mutable assignment. |
| 16:00:00 | <dolio> | Because of loops. |
| 16:00:14 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 16:00:34 | <abastro[m]> | One can use good deal of recursion in C, so C -> Haskell transition could be easy I think |
| 16:00:55 | <monochrom> | It is true that previous SML exposure conquers the hurdle of accepting sum types. |
| 16:01:06 | → | lbseale joins (~ep1ctetus@user/ep1ctetus) |
| 16:01:08 | <dolio> | You can, but people aren't taught that way. |
| 16:01:20 | <telser> | For my learning, my earliest experience was as an undergrad requesting a functional programming course and a professor craming as much of Real World Haskell and SICP as we could handle into a semester. Then I ran with Haskell and tried to use it as much as I could. |
| 16:01:28 | <abastro[m]> | Oh and C has untagged unions |
| 16:01:29 | <dolio> | And often don't work that way. |
| 16:01:53 | <abastro[m]> | Can tag untagged unions to make tagged unions, so I guess that help too |
| 16:01:59 | → | Henson joins (~kvirc@107-179-133-201.cpe.teksavvy.com) |
| 16:02:17 | × | qwedfg_ quits (~qwedfg@user/qwedfg) (Read error: Connection reset by peer) |
| 16:02:40 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 16:02:53 | <c_wraith> | When I was doing the main CS sequence in my university, one of the students there took "you can do anything with recursion or iteration (and some extra bookkeeping)" as a challenge and did every single assignment both ways. |
| 16:02:54 | <monochrom> | Mutable variables and loops are great temptations. People will not avoid them. |
| 16:03:52 | <abastro[m]> | Wow, dedicated student |
| 16:04:01 | <monochrom> | Even in Haskell, there are beginners who would rather learn IO early so they can use IORef. |
| 16:04:04 | <dolio> | It doesn't help because, "I could implement some Haskell things in C," is not what is required. What is required is experience actually using those things in the same way as Haskell, which isn't what people do in C, typically. |
| 16:04:18 | × | merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds) |
| 16:04:19 | <c_wraith> | On the other hand, I just figured out how to convert between them mechanically and went "ok, yep". |
| 16:05:16 | <monochrom> | They may even rejoice when they discover the monad-loop package so they can go back to loops again. |
| 16:05:50 | <abastro[m]> | Hm perhaps I was weird then. |
| 16:05:53 | <c_wraith> | instead of just writing those loops themselves? Nothing in that package is more than about 3 lines long |
| 16:06:01 | <monochrom> | The reality is that since it is possible to emulate idiomatic C in Haskell, beginners will do exactly that. |
| 16:06:08 | → | qwedfg joins (~qwedfg@user/qwedfg) |
| 16:06:31 | <[exa]> | technically, is there any example of algorithm that would be inherently loopy and really better with cycles? I always thought that dynamic programming would be the case, until I implemented levenshtein in haskell :D |
| 16:06:39 | <monochrom> | As opposed to "since it is possible to emulate idiomatic Haskell in C"... well why would anyone do that?! |
| 16:06:41 | <abastro[m]> | I recall doing loops as recursion in C |
| 16:07:16 | <[exa]> | monochrom: but you can do monads with macros!!!11 :D |
| 16:07:22 | × | yauhsien quits (~yauhsien@61-231-36-20.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 16:07:46 | <abastro[m]> | My memory might be wrong but I wondered in C if recursion could be optimized to a loop |
| 16:08:00 | <monochrom> | Haha yeah Racket is looking at this conversation and think we are all dumb, it emulates all of us... |
| 16:08:03 | <c_wraith> | It's really painful to write haskell-style code in C. all those void* everywhere. |
| 16:08:03 | <abastro[m]> | So that I could always use easier and more consistent recursion |
| 16:08:04 | <geekosaur> | depends on the compiler |
| 16:08:18 | <abastro[m]> | Also since somehow loop is harder for me than recursion |
| 16:08:41 | → | yauhsien joins (~yauhsien@61-231-36-20.dynamic-ip.hinet.net) |
| 16:08:51 | <abastro[m]> | Yea void* is the hurdle |
| 16:08:56 | → | slac79763 joins (~slack1256@186.11.43.180) |
| 16:09:07 | <abastro[m]> | But well.. void* and unconstrained casts are unavoidable in C anyway |
| 16:09:11 | <monochrom> | c_wraith: I once did an exercise on using libffi to write a closure in C --- a function that captures some free variables >:) |
| 16:09:44 | <monochrom> | void* is really not too bad in comparison. Manual type checking is not that hard. |
| 16:10:02 | <abastro[m]> | Really? |
| 16:10:03 | <c_wraith> | I've never used libffi. I just get scared when I see the name. |
| 16:10:47 | <monochrom> | "f x = let { g y = x + y } in g" though... |
| 16:11:15 | × | slack1256 quits (~slack1256@191.126.227.204) (Ping timeout: 260 seconds) |
| 16:11:24 | <monochrom> | Don't worry I did that exercise for the LOL. |
| 16:11:31 | <dolio> | Most people definitely complain that recursion is much harder than loops, in my experience. |
| 16:11:43 | <dolio> | I think it's often not taught well, though. |
| 16:12:21 | <monochrom> | Absolutely. |
| 16:12:57 | <abastro[m]> | Yeah, I feel that is strange |
| 16:12:57 | <abastro[m]> | Recursion is often very powerful |
| 16:13:10 | <monochrom> | I think my https://groups.google.com/g/comp.lang.functional/c/UFLNf1eI95A/m/WXA78_sk31EJ nails it. |
| 16:13:13 | <dolio> | People try to teach the exact operational semantics, and students get lost thinking about all the 'copies' of a variable on the stack and stuff. |
| 16:13:14 | <abastro[m]> | I guess this is an artifact of me being more math-based |
| 16:13:15 | <abastro[m]> | Where recursive definitions are quite normal |
| 16:13:33 | <abastro[m]> | Yea, that |
| 16:13:58 | <c_wraith> | A friend of mine made a comment not too long ago that has stuck with me. She started programming really young, and learned a lot about how things work at a low level. She said that she had no trouble learning recursion because it was obvious to her how it was implemented. Knowing the operational semantics made it completely sensible to her. |
| 16:14:00 | <abastro[m]> | Really, ppl try to teach recursion by stepping and simulating what will happen |
| 16:14:04 | <abastro[m]> | And then stack comes in |
| 16:14:05 | <monochrom> | I teach recursion by saying "think of the induction proof". |
| 16:14:23 | <abastro[m]> | Call-by-value and call-by-reference on top. Eeeh |
| 16:14:40 | <abastro[m]> | Well but yeah, I understand that math is hard. |
| 16:14:44 | <monochrom> | http://www.cs.utoronto.ca/~trebla/CSCC24-2021-Summer/01-haskell-basic.html#synev |
| 16:14:55 | <abastro[m]> | Induction is hard for typical programming beginners |
| 16:15:38 | <abastro[m]> | Learning by its operational semantics??? Wh |
| 16:15:39 | <monochrom> | For those who are not in a CS curriculum? Sure. |
| 16:16:05 | <monochrom> | For those who are in a CS cirriculum? We can exploit a survivor bias there. |
| 16:16:11 | <c_wraith> | honestly, I made sense of induction by going "oh, this is just recursion made hard". :P |
| 16:16:12 | <geekosaur> | hm, guess that's another reason I had no trouble picking up basic Haskell. I already knew about proofs with a base case and an inductive case, and seeing functions defined the same way was natural |
| 16:16:33 | <monochrom> | However, I know of a data point regarding blank-slate kids. |
| 16:16:34 | <abastro[m]> | Well, CS majors nowadays just begin with python |
| 16:16:48 | <abastro[m]> | And I see them sticking with python and writing simplest codes |
| 16:17:05 | <abastro[m]> | I think they won't bother with induction |
| 16:17:16 | <monochrom> | Some MIT people tried teaching Logo with recursion to kids. The kids loved it. Loved the recursion too. Thought it was so natural. |
| 16:18:08 | <monochrom> | CS has a 1st-year course that does induction proofs (among other things). |
| 16:18:16 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 16:18:53 | → | cosimone joins (~user@93-47-228-79.ip115.fastwebnet.it) |
| 16:18:57 | <abastro[m]> | Ok, perhaps this is another regional thing? |
| 16:19:48 | <abastro[m]> | Discrete math in my uni does not teach proper induction iirc, it just teaches sets, relations, functions, I guess it also teaches trees/graphs |
| 16:19:48 | × | coot quits (~coot@213.134.190.95) (Read error: Connection reset by peer) |
| 16:20:00 | → | coot joins (~coot@213.134.190.95) |
| 16:20:12 | <telser> | Definitely, I've seen programs without it or with so little the students didn't really come out with an understanding. |
| 16:20:14 | <dolio> | Doesn't Python restrict your ability to use recursion by always using stack? |
| 16:20:31 | <monochrom> | geekosaur: Though, very technically (so don't worry about it, I was just curious), I found that using the principle of induction to prove that recursive definitions are OK seems to require a pretty strong version of choice. I hope I'm missing something. |
| 16:20:32 | <abastro[m]> | Hmm, Interesting that Logo recursion pedagogy works. |
| 16:20:54 | <abastro[m]> | Indeed, you can easily get stackoverflow in python by using recursion |
| 16:21:13 | <geekosaur> | monochrom, I'm not really a mathematician, I never really worried about it |
| 16:21:16 | <monochrom> | (Well, in the context of set theory and total functions. Of course it's easier in CPOs...) |
| 16:21:23 | <abastro[m]> | So avoiding recursion is recommended for performance as well |
| 16:21:30 | × | Macbethwin quits (~chargen@D964062A.static.ziggozakelijk.nl) (Ping timeout: 246 seconds) |
| 16:21:43 | <geekosaur> | I'mkinda trying to catch up on the actual mathematics now |
| 16:21:46 | <dolio> | That's more a defect of set theory, if anything. |
| 16:22:20 | <abastro[m]> | Well checking recursion termination depends on recursion |
| 16:23:10 | <abastro[m]> | I cannot think of a case where recursion is related with AC though, since everything is at most countable and likely finite |
| 16:23:28 | <monochrom> | And then calculus of constructions just say "every recursive data type comes with a recursive elimination axiom, what's the problem?" :) |
| 16:24:03 | <abastro[m]> | Thing is, general recursion needs more than just the recursive elimination |
| 16:24:26 | <abastro[m]> | I think primitive recursion is related with that one |
| 16:25:02 | <abastro[m]> | AFAIK when one of the parameters are guaranteed to be decreasing is one of the most trivial cases |
| 16:29:07 | × | CiaoSen quits (~Jura@p200300c9572d40002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
| 16:29:21 | → | slack1256 joins (~slack1256@191.125.227.204) |
| 16:30:44 | × | slac79763 quits (~slack1256@186.11.43.180) (Ping timeout: 250 seconds) |
| 16:33:15 | × | jackson99 quits (~bc8147f2@cerf.good1.com) (Quit: CGI:IRC) |
| 16:34:21 | <exarkun> | this conversation gave me flashbacks to using extensions gcc had in the 90s for having closures in C, thanks |
| 16:34:24 | × | raehik1 quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.5) |
| 16:36:28 | <Henson> | is there a way I can use filter with a functor? Something like filterFunctor :: Functor f => (a -> Bool) -> [f a] -> [f a] ? I've got some newtypes that wrap around data, and I'd like to filter that wrapped data using a function that operates on the data. |
| 16:37:08 | <Henson> | or some other type of class that "wraps" around data. I don't need the complexity of Monad, and Applicative doesn't seem right in this case. |
| 16:37:58 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 16:38:24 | → | Codaraxis joins (~Codaraxis@user/codaraxis) |
| 16:39:34 | × | Inst quits (~Liam@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 272 seconds) |
| 16:39:56 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 16:40:14 | <[exa]> | Henson: you'd need to be able to extract the Bool from the functor, which I don't think is possible in the generic case |
| 16:40:32 | <Henson> | [exa]: ok |
| 16:41:03 | <[exa]> | but there are similar things, check out filterM or filterA |
| 16:42:43 | <[exa]> | in your case, you'd basically need the parameter that does `f a -> Bool`, i.e., being able to "unwrap" the functor on itself |
| 16:49:57 | × | mmhat quits (~mmh@55d42e6b.access.ecotel.net) (Quit: WeeChat 3.5) |
| 16:50:11 | × | Pickchea quits (~private@user/pickchea) (Ping timeout: 256 seconds) |
| 16:51:11 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 16:53:30 | × | ccntrq quits (~Thunderbi@2a01:e34:eccb:b060:bc3e:467d:7ac2:fff6) (Remote host closed the connection) |
| 16:53:33 | → | ccntrq1 joins (~Thunderbi@imx92-1-78-204-187-6.fbx.proxad.net) |
| 16:55:52 | ccntrq1 | is now known as ccntrq |
| 16:56:03 | → | bahamas joins (~lucian@84.232.140.158) |
| 16:56:06 | <monochrom> | "Functor f => (a -> Bool) -> [f a] -> [f a]" is probably way more general and undoable than your actual problem. |
| 16:56:06 | → | mmhat joins (~mmh@55d42e6b.access.ecotel.net) |
| 16:58:25 | → | razetime joins (~quassel@117.193.4.40) |
| 17:03:45 | → | mikoto-chan joins (~mikoto-ch@213.177.151.239) |
| 17:04:44 | → | deadmarshal_ joins (~deadmarsh@95.38.117.55) |
| 17:07:42 | → | kenran joins (~kenran@200116b82b0a3400d6f6663d91422485.dip.versatel-1u1.de) |
| 17:09:44 | → | Macbethwin joins (~chargen@D964062A.static.ziggozakelijk.nl) |
| 17:12:17 | × | razetime quits (~quassel@117.193.4.40) (Remote host closed the connection) |
| 17:12:38 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.4) |
| 17:15:06 | × | vicfred quits (~vicfred@user/vicfred) (Quit: Leaving) |
| 17:15:26 | → | kaph joins (~kaph@dynamic-adsl-78-12-162-98.clienti.tiscali.it) |
| 17:19:05 | × | Macbethwin quits (~chargen@D964062A.static.ziggozakelijk.nl) (Ping timeout: 256 seconds) |
| 17:22:01 | → | slac88559 joins (~slack1256@191.125.99.75) |
| 17:23:09 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 17:23:47 | × | slack1256 quits (~slack1256@191.125.227.204) (Ping timeout: 240 seconds) |
| 17:25:27 | × | kenran quits (~kenran@200116b82b0a3400d6f6663d91422485.dip.versatel-1u1.de) (Quit: WeeChat info:version) |
| 17:25:39 | → | kenran joins (~kenran@200116b82b0a3400d6f6663d91422485.dip.versatel-1u1.de) |
| 17:29:45 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 17:31:33 | × | alp_ quits (~alp@user/alp) (Ping timeout: 256 seconds) |
| 17:33:59 | → | califax joins (~califax@user/califx) |
| 17:35:58 | <Henson> | [exa], monochrom: ok, thanks for the suggestions. I just manually unwrapped, filtered, then rewrapped the data. |
| 17:36:16 | <Henson> | not as clean, but conceptually what a generic filter would have to do anyway |
| 17:36:54 | → | xkuru joins (~xkuru@user/xkuru) |
| 17:37:35 | <[exa]> | Henson: btw if you manually unwrapped and rewrapped, you know in advance what functor is there, right? |
| 17:38:08 | <Henson> | [exa]: yes |
| 17:38:21 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
| 17:38:39 | <Henson> | [exa]: I just have a couple different kinds of functors with which my data can be wrapped, and hoping for a generic solution. If there was a lens that could do the filtering I could use that as well. |
| 17:38:45 | <Henson> | but I don't know if lens does filtering |
| 17:39:00 | <geekosaur> | :t filtered |
| 17:39:02 | <lambdabot> | (Choice p, Applicative f) => (a -> Bool) -> Optic' p f a a |
| 17:39:13 | <geekosaur> | lookslike it :þ |
| 17:39:29 | geekosaur | just took a guess based on lens naming conventions |
| 17:40:47 | × | vysn quits (~vysn@user/vysn) (Ping timeout: 240 seconds) |
| 17:41:59 | <Henson> | geekosaur: awesome, thanks for the helpful guess! |
| 17:43:41 | <geekosaur> | note that it wants an Applicative instead of just a Functor though |
| 17:44:19 | <geekosaur> | @hoogle Choice |
| 17:44:19 | <lambdabot> | Control.Lens.Combinators class Profunctor p => Choice (p :: Type -> Type -> Type) |
| 17:44:19 | <lambdabot> | Control.Lens.Prism class Profunctor p => Choice (p :: Type -> Type -> Type) |
| 17:44:19 | <lambdabot> | Network.AWS.Lens class Profunctor p => Choice (p :: Type -> Type -> Type) |
| 17:44:35 | → | zebrag joins (~chris@user/zebrag) |
| 17:45:46 | × | ccntrq quits (~Thunderbi@imx92-1-78-204-187-6.fbx.proxad.net) (Remote host closed the connection) |
| 17:47:17 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 17:50:48 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 17:51:30 | × | ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Remote host closed the connection) |
| 17:52:27 | → | ezzieyguywuf joins (~Unknown@user/ezzieyguywuf) |
| 17:54:42 | → | fendor_ joins (~fendor@91.141.51.137.wireless.dyn.drei.com) |
| 17:56:08 | × | deadmarshal_ quits (~deadmarsh@95.38.117.55) (Ping timeout: 248 seconds) |
| 17:56:41 | × | unyu quits (~pyon@user/pyon) (Quit: brb) |
| 17:56:57 | → | unyu joins (~pyon@user/pyon) |
| 17:57:03 | × | fendor quits (~fendor@91.141.45.157.wireless.dyn.drei.com) (Ping timeout: 256 seconds) |
| 17:57:06 | → | vicfred joins (~vicfred@user/vicfred) |
| 17:58:40 | → | econo joins (uid147250@user/econo) |
| 18:01:26 | → | merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
| 18:01:38 | × | yauhsien quits (~yauhsien@61-231-36-20.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 18:03:31 | → | hodan joins (~hodan@gw-ste.aim-net.cz) |
| 18:08:57 | × | elkcl quits (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) (Ping timeout: 246 seconds) |
| 18:08:59 | × | hodan quits (~hodan@gw-ste.aim-net.cz) (Quit: Leaving) |
| 18:10:55 | → | elkcl joins (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) |
| 18:12:28 | → | yauhsien joins (~yauhsien@61-231-36-20.dynamic-ip.hinet.net) |
| 18:12:40 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 248 seconds) |
| 18:15:20 | × | mmhat quits (~mmh@55d42e6b.access.ecotel.net) (Ping timeout: 248 seconds) |
| 18:17:20 | × | yauhsien quits (~yauhsien@61-231-36-20.dynamic-ip.hinet.net) (Ping timeout: 250 seconds) |
| 18:19:00 | → | axeman joins (~quassel@ip5f5aecfe.dynamic.kabel-deutschland.de) |
| 18:22:09 | → | anomal joins (~anomal@87.227.196.109) |
| 18:25:40 | → | lcminer joins (~l@net244-38-245-109.mbb.telenor.rs) |
| 18:29:02 | → | deadmarshal_ joins (~deadmarsh@95.38.117.55) |
| 18:29:23 | → | mmhat joins (~mmh@55d42e6b.access.ecotel.net) |
| 18:29:40 | ← | lcminer parts (~l@net244-38-245-109.mbb.telenor.rs) (Leaving) |
| 18:31:24 | × | immae quits (~immae@2a01:4f8:141:53e7::) (Ping timeout: 240 seconds) |
| 18:33:22 | × | deadmarshal_ quits (~deadmarsh@95.38.117.55) (Ping timeout: 250 seconds) |
| 18:34:27 | × | merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
| 18:35:38 | → | Inst joins (~Liam@c-98-208-218-119.hsd1.fl.comcast.net) |
| 18:37:22 | → | yauhsien joins (~yauhsien@61-231-36-20.dynamic-ip.hinet.net) |
| 18:38:17 | → | zincy joins (~zincy@2a00:23c8:970c:4801:2944:efb3:93ff:a753) |
| 18:41:27 | × | zyklotomic quits (~ethan@res388d-128-61-89-14.res.gatech.edu) (Ping timeout: 240 seconds) |
| 18:41:43 | → | slack1256 joins (~slack1256@186.11.40.52) |
| 18:43:46 | × | slac88559 quits (~slack1256@191.125.99.75) (Ping timeout: 250 seconds) |
| 18:43:48 | → | zyklotomic joins (~ethan@r4-128-61-92-120.res.gatech.edu) |
| 18:44:41 | × | anomal quits (~anomal@87.227.196.109) (Remote host closed the connection) |
| 18:45:38 | → | odnes joins (~odnes@5-203-221-3.pat.nym.cosmote.net) |
| 18:48:56 | → | Macbethwin joins (~chargen@D964062A.static.ziggozakelijk.nl) |
| 18:56:56 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
| 18:58:45 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 18:59:21 | × | yauhsien quits (~yauhsien@61-231-36-20.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 19:00:31 | × | xkuru quits (~xkuru@user/xkuru) (Ping timeout: 256 seconds) |
| 19:01:17 | × | kenran quits (~kenran@200116b82b0a3400d6f6663d91422485.dip.versatel-1u1.de) (Quit: WeeChat info:version) |
| 19:04:26 | → | alp_ joins (~alp@user/alp) |
| 19:05:30 | × | kaph quits (~kaph@dynamic-adsl-78-12-162-98.clienti.tiscali.it) (Read error: Connection reset by peer) |
| 19:05:47 | → | kaph joins (~kaph@dynamic-adsl-78-12-162-98.clienti.tiscali.it) |
| 19:06:23 | → | anomal joins (~anomal@87.227.196.109) |
| 19:06:52 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:eeed:158a:fd38:dd13) |
| 19:08:45 | → | immae joins (~immae@2a01:4f8:141:53e7::) |
| 19:08:49 | → | yauhsien joins (~yauhsien@61-231-36-20.dynamic-ip.hinet.net) |
| 19:12:58 | → | nort joins (~textual@c-73-176-198-132.hsd1.in.comcast.net) |
| 19:13:21 | × | yauhsien quits (~yauhsien@61-231-36-20.dynamic-ip.hinet.net) (Ping timeout: 246 seconds) |
| 19:18:55 | → | kaph_ joins (~kaph@dynamic-adsl-78-12-162-98.clienti.tiscali.it) |
| 19:19:06 | × | kaph quits (~kaph@dynamic-adsl-78-12-162-98.clienti.tiscali.it) (Read error: Connection reset by peer) |
| 19:22:00 | × | bahamas quits (~lucian@84.232.140.158) (Ping timeout: 248 seconds) |
| 19:25:40 | → | bahamas joins (~lucian@84.232.140.158) |
| 19:27:33 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
| 19:28:18 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 19:28:51 | × | Unicorn_Princess quits (~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Remote host closed the connection) |
| 19:29:47 | × | bahamas quits (~lucian@84.232.140.158) (Ping timeout: 240 seconds) |
| 19:33:41 | → | mastarija joins (~mastarija@2a05:4f46:e04:6000:68d9:b076:ca11:8c6e) |
| 19:33:57 | → | bahamas joins (~lucian@84.232.140.158) |
| 19:36:16 | → | pavonia joins (~user@user/siracusa) |
| 19:36:22 | <mastarija> | Remind me, how do I connect top level type variables to the ones defined in the `where` part? |
| 19:36:48 | <geekosaur> | "connect"? |
| 19:36:52 | <mastarija> | Besides not specifying type |
| 19:37:18 | <mastarija> | myfunc :: Blah a -> Blah b; where helper :: Blah a |
| 19:37:31 | <mastarija> | Types not matching cause it can't connect a to a1 |
| 19:37:49 | <geekosaur> | oh. ScopedTypeVariables and specify the type as forall a b. Blah a -> Blah b |
| 19:38:07 | × | bahamas quits (~lucian@84.232.140.158) (Ping timeout: 240 seconds) |
| 19:38:15 | <mastarija> | I think I've tried this |
| 19:38:20 | <mastarija> | But I'll try again :D |
| 19:38:30 | <geekosaur> | \it doesn't work without the forall |
| 19:38:44 | <geekosaur> | and youhave to include the b in the forall even if you're not using it |
| 19:38:44 | → | acidjnk joins (~acidjnk@p200300d0c722df657ceecd71e591a56b.dip0.t-ipconnect.de) |
| 19:39:56 | <mastarija> | geekosaur, thanks |
| 19:43:22 | → | jackson99 joins (~bc8147f2@cerf.good1.com) |
| 19:44:24 | → | slac56075 joins (~slack1256@191.126.99.75) |
| 19:44:25 | → | bahamas joins (~lucian@84.232.140.158) |
| 19:45:42 | × | dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.5) |
| 19:46:32 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 248 seconds) |
| 19:46:59 | × | slack1256 quits (~slack1256@186.11.40.52) (Ping timeout: 256 seconds) |
| 19:49:06 | → | RevoGen joins (~RevoGen@136.167.108.23) |
| 19:49:12 | × | bahamas quits (~lucian@84.232.140.158) (Ping timeout: 248 seconds) |
| 19:50:44 | → | yauhsien joins (~yauhsien@61-231-36-20.dynamic-ip.hinet.net) |
| 19:50:54 | <RevoGen> | Quick question, why does "foldr (\x y-> x||y) False (repeat True)" evaluate but not "foldr (\x acc -> acc || (x<100)) False [1..]"? |
| 19:51:06 | × | zincy quits (~zincy@2a00:23c8:970c:4801:2944:efb3:93ff:a753) (Remote host closed the connection) |
| 19:51:50 | → | Pickchea joins (~private@user/pickchea) |
| 19:53:59 | → | bahamas joins (~lucian@84.232.140.158) |
| 19:54:47 | × | zyklotomic quits (~ethan@r4-128-61-92-120.res.gatech.edu) (Ping timeout: 240 seconds) |
| 19:54:59 | × | kranius quits (~pi@user/kranius) (Remote host closed the connection) |
| 19:55:29 | × | yauhsien quits (~yauhsien@61-231-36-20.dynamic-ip.hinet.net) (Ping timeout: 256 seconds) |
| 19:57:07 | → | zyklotomic joins (~ethan@res380d-128-61-81-14.res.gatech.edu) |
| 19:58:07 | × | bahamas quits (~lucian@84.232.140.158) (Ping timeout: 240 seconds) |
| 19:58:34 | <mastarija> | RevoGen, because the second one is not "tail recursive"? |
| 19:59:31 | <mastarija> | Or rather, because || shortcircuits on the first one |
| 20:00:15 | <RevoGen> | why does it not short circuit in the second one? |
| 20:00:31 | × | mbuf quits (~Shakthi@223.184.55.97) (Quit: Leaving) |
| 20:00:42 | <mastarija> | foldr is right associative e.g. (1 `f_x_acc` ( 2 `f_x_acc` ( 3 `f_x_acc` ... ) ) ) |
| 20:00:49 | <dolio> | Because (||) looks at its first argument first. |
| 20:00:52 | <mastarija> | so in the first case he sees x first |
| 20:00:53 | × | odnes quits (~odnes@5-203-221-3.pat.nym.cosmote.net) (Quit: Leaving) |
| 20:01:02 | <mastarija> | and returns true because x is true |
| 20:01:08 | <mastarija> | or in my example x would be one |
| 20:01:21 | <mastarija> | However, in the second case, it first tries to evaluate `acc` |
| 20:01:40 | <mastarija> | and if you look at the parentheses, acc is `( 2 `f_x_acc` ( 3 `f_x_acc` ... ) )` |
| 20:01:41 | × | _ht quits (~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection) |
| 20:01:46 | <mastarija> | which is infinite and never evaluates |
| 20:02:12 | <sshine> | > foldr (\x acc -> (x<100) || acc) False [1..] |
| 20:02:14 | <lambdabot> | True |
| 20:03:11 | <RevoGen> | ah that's genius! thank you |
| 20:04:26 | → | Guest785 joins (~Guest7@2a00:23c6:2925:8801:a970:2fed:8ee0:243a) |
| 20:04:35 | <mastarija> | Am I right about it not being tail recursive, I always forget what tail recursion is. It's when we can "produce" stuff while recursion is still running instead of waiting for the whole process to finish, right? |
| 20:04:59 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:eeed:158a:fd38:dd13) (Quit: WeeChat 2.8) |
| 20:05:30 | → | bahamas joins (~lucian@84.232.140.158) |
| 20:05:37 | <sshine> | > foldr ((||) . (< 100)) False [1..] |
| 20:05:39 | <lambdabot> | True |
| 20:05:45 | <sclv> | we had a discussion the other day about this -- tail recursion isn't a useful way of thinking about things in haskel |
| 20:06:09 | <sclv> | haskell has an equational theory for reasoning that doesn't require you to think about things like "call stack" |
| 20:06:16 | <sshine> | > any (< 100) [1..] |
| 20:06:18 | <lambdabot> | True |
| 20:06:19 | <jackson99> | > any (<100) [1..] |
| 20:06:20 | <lambdabot> | True |
| 20:06:48 | → | rawley joins (~rawley@142.99.241.242) |
| 20:07:44 | × | Macbethwin quits (~chargen@D964062A.static.ziggozakelijk.nl) (Read error: Connection reset by peer) |
| 20:08:43 | <exarkun> | mastarija: in a language like C, you might have a function and the last thing that function says to do is to recurse. that's tail recursion - recursion happens at the "tail" of the function. |
| 20:08:56 | × | Guest785 quits (~Guest7@2a00:23c6:2925:8801:a970:2fed:8ee0:243a) (Ping timeout: 250 seconds) |
| 20:09:19 | <exarkun> | mastarija: then, you might have a runtime with the tail call elimination optimization. that optimization notices that the function that is making the call has nothing more to do after the call returns. |
| 20:09:31 | <mastarija> | Yes, so it does some work first, and then it recurses. It doesn't first recurse and do work. |
| 20:09:49 | <exarkun> | mastarija: so it can clean up the function (eg reclaim its stack space) on its way into that call, even though strictly speaking the function isn't done yet |
| 20:10:09 | <Franciman> | > haskell has an equational theory for reasoning that doesn't require you to think about things like "call stack" |
| 20:10:11 | <Franciman> | WUT? |
| 20:10:11 | <lambdabot> | error: |
| 20:10:12 | <lambdabot> | Variable not in scope: |
| 20:10:12 | <lambdabot> | haskell |
| 20:10:23 | → | zincy joins (~zincy@host86-160-236-152.range86-160.btcentralplus.com) |
| 20:10:26 | <Franciman> | it only works if equational reasoning is what you need |
| 20:10:28 | <geekosaur> | Franciman, haskell uses graph reduction |
| 20:10:28 | × | bahamas quits (~lucian@84.232.140.158) (Ping timeout: 272 seconds) |
| 20:10:36 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 20:10:36 | <sshine> | Franciman, you need to import haskell. |
| 20:10:37 | <exarkun> | mastarija: right. you can't have more work to do after the recursion or the recursion isn't in the tail position and it's not tail recursion. |
| 20:10:42 | × | RevoGen quits (~RevoGen@136.167.108.23) (Quit: Client closed) |
| 20:10:47 | <Franciman> | sshine: :D |
| 20:11:07 | → | RevoGen joins (~RevoGen@136.167.108.23) |
| 20:11:20 | <Franciman> | geekosaur: i see |
| 20:11:24 | <Franciman> | thanks |
| 20:11:25 | <mastarija> | so then, right fold is tail recursive, but left fold isn't, right? |
| 20:11:46 | <sshine> | so to understand Haskell's evaluation in terms of understanding what tail-recursion is, you need to put on 3D glasses. |
| 20:12:09 | <mastarija> | *puts 3D glasses on |
| 20:13:28 | × | mmhat quits (~mmh@55d42e6b.access.ecotel.net) (Ping timeout: 250 seconds) |
| 20:13:37 | × | slac56075 quits (~slack1256@191.126.99.75) (Ping timeout: 256 seconds) |
| 20:14:01 | <dolio> | I don't see what tail recursion has to do with whether this example terminates. |
| 20:14:18 | <sshine> | https://stackoverflow.com/a/6889335/235908 |
| 20:14:26 | <geekosaur> | looks to me like trying to understand it procedurally, which doesn't quite work |
| 20:14:41 | <geekosaur> | you can sort of fake it for this simple example but it falls apart for more complex ones |
| 20:15:45 | <dolio> | It terminates or not due to the evaluation order, not because of whether memory is being consumed. |
| 20:16:07 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 240 seconds) |
| 20:16:27 | × | coot quits (~coot@213.134.190.95) (Quit: coot) |
| 20:22:41 | × | axeman quits (~quassel@ip5f5aecfe.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds) |
| 20:23:48 | → | Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915) |
| 20:23:59 | → | bahamas joins (~lucian@84.232.140.158) |
| 20:24:57 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds) |
| 20:25:07 | Lord_of_Life_ | is now known as Lord_of_Life |
| 20:26:13 | <Henson> | does anybody here use vscode on Linux for Haskell development? I've got the problem where the haskell extension for vscode isn't properly recognizing when I'm working on files that are in the test build area of my cabal file. Anything within the main library gets compiled interactively with helpful immediate feedback on errors, but nothing in the test suite does. |
| 20:26:48 | × | RevoGen quits (~RevoGen@136.167.108.23) (Remote host closed the connection) |
| 20:26:54 | → | Major_Biscuit joins (~MajorBisc@83.22.225.84.ipv4.supernova.orange.pl) |
| 20:27:29 | → | mmhat joins (~mmh@55d42e6b.access.ecotel.net) |
| 20:28:27 | × | bahamas quits (~lucian@84.232.140.158) (Ping timeout: 240 seconds) |
| 20:28:33 | <sclv> | tail recursion is unrelated to the example. you can reason purely equationally, as long as you understand (||) is strict in its first argument and nonstrict in its second. |
| 20:30:04 | → | jonathanx joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
| 20:30:11 | × | zincy quits (~zincy@host86-160-236-152.range86-160.btcentralplus.com) (Remote host closed the connection) |
| 20:31:26 | → | merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
| 20:37:37 | × | mastarija quits (~mastarija@2a05:4f46:e04:6000:68d9:b076:ca11:8c6e) (Quit: Leaving) |
| 20:41:28 | × | Major_Biscuit quits (~MajorBisc@83.22.225.84.ipv4.supernova.orange.pl) (Ping timeout: 248 seconds) |
| 20:44:05 | → | redb joins (~nmh@136.49.49.211) |
| 20:48:07 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 240 seconds) |
| 20:48:32 | × | immae quits (~immae@2a01:4f8:141:53e7::) (Quit: WeeChat 3.3) |
| 20:48:33 | → | [_________] joins (~oos95GWG@user/oos95GWG) |
| 20:52:16 | × | ph88 quits (~ph88@ip5f5af71f.dynamic.kabel-deutschland.de) (Quit: Leaving) |
| 20:55:07 | × | Inst quits (~Liam@c-98-208-218-119.hsd1.fl.comcast.net) (Ping timeout: 240 seconds) |
| 20:55:57 | → | immae joins (~immae@2a01:4f8:141:53e7::) |
| 20:58:57 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 256 seconds) |
| 20:59:55 | → | redb joins (~nmh@136.49.49.211) |
| 21:04:37 | × | redb quits (~nmh@136.49.49.211) (Ping timeout: 256 seconds) |
| 21:05:02 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 21:05:28 | × | merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 248 seconds) |
| 21:06:11 | <lechner> | Hi, is there a difference between running ghc-pkg --global and simply ghc-pkg without --package-db ? |
| 21:12:10 | × | vicfred quits (~vicfred@user/vicfred) (Quit: Leaving) |
| 21:13:35 | <geekosaur> | ghc-pkg by default shows both global and user dbs |
| 21:13:47 | <geekosaur> | --global constrains it to only the global db |
| 21:15:29 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 21:16:23 | × | Pickchea quits (~private@user/pickchea) (Quit: Leaving) |
| 21:16:25 | <lechner> | geekosaur: thank you! |
| 21:17:48 | → | Major_Biscuit joins (~MajorBisc@83.22.225.84.ipv4.supernova.orange.pl) |
| 21:18:07 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds) |
| 21:18:22 | <lechner> | Can I run ghc-pkg in a way that so it looks in both --global and --package-db ? |
| 21:18:35 | × | oats quits (~thomas@user/oats) (Quit: until later, my friends) |
| 21:19:02 | <geekosaur> | no, if you specify --package-db it looks only there |
| 21:19:14 | <lechner> | geekosaur: okay, thanks! |
| 21:19:21 | → | redb joins (~nmh@136.49.49.211) |
| 21:24:36 | → | oats joins (~thomas@user/oats) |
| 21:26:30 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 21:26:47 | × | rawley quits (~rawley@142.99.241.242) (Remote host closed the connection) |
| 21:32:07 | × | jonathanx quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 240 seconds) |
| 21:36:24 | × | fendor_ quits (~fendor@91.141.51.137.wireless.dyn.drei.com) (Remote host closed the connection) |
| 21:47:40 | × | anomal quits (~anomal@87.227.196.109) (Remote host closed the connection) |
| 21:47:59 | → | anomal joins (~anomal@87.227.196.109) |
| 21:50:12 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Quit: Leaving) |
| 21:51:55 | × | littlebobeep quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds) |
| 21:51:57 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 21:57:12 | → | notzmv joins (~zmv@user/notzmv) |
| 21:58:46 | → | littlebobeep joins (~alMalsamo@gateway/tor-sasl/almalsamo) |
| 21:59:47 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 240 seconds) |
| 22:01:18 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 272 seconds) |
| 22:02:59 | × | Major_Biscuit quits (~MajorBisc@83.22.225.84.ipv4.supernova.orange.pl) (Ping timeout: 256 seconds) |
| 22:06:10 | × | michalz quits (~michalz@185.246.204.125) (Remote host closed the connection) |
| 22:18:56 | <koz> | Does anyone know if 'subsequence' here: https://hackage.haskell.org/package/hedgehog-1.1.1/docs/Hedgehog-Gen.html#v:subsequence produces _strict_ subsequences? |
| 22:19:11 | <koz> | (meaning that whatever I get back will be _strictly_ shorter than what I put in) |
| 22:19:16 | <koz> | I _assume_ yes, but I want to be sure. |
| 22:23:25 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 22:24:40 | → | Guest27 joins (~Guest27@2601:281:d47f:1590:768c:7129:aa80:96d9) |
| 22:24:44 | × | z0k quits (~z0k@39.40.62.192) (Ping timeout: 272 seconds) |
| 22:28:03 | <dolio> | My guess would be no. |
| 22:28:19 | → | bahamas joins (~lucian@84.232.140.158) |
| 22:28:24 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 22:29:04 | <dolio> | > subsequences [1,2] |
| 22:29:06 | <lambdabot> | [[],[1],[2],[1,2]] |
| 22:32:07 | × | acidjnk quits (~acidjnk@p200300d0c722df657ceecd71e591a56b.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 22:32:41 | <sshine> | https://hackage.haskell.org/package/hedgehog-1.1.1/docs/src/Hedgehog.Internal.Gen.html#subsequence |
| 22:32:51 | × | bahamas quits (~lucian@84.232.140.158) (Ping timeout: 246 seconds) |
| 22:33:27 | <sshine> | https://hackage.haskell.org/package/hedgehog-1.1.1/docs/src/Hedgehog.Internal.Shrink.html#list |
| 22:33:33 | × | 080AAA3P4 quits (~Thunderbi@p548c8d44.dip0.t-ipconnect.de) (Quit: 080AAA3P4) |
| 22:33:41 | <sshine> | it actually does. the docs could clarify that. |
| 22:33:51 | → | ub joins (~Thunderbi@p200300ecdf1588a3ccf7a828925c2eab.dip0.t-ipconnect.de) |
| 22:35:37 | × | alp_ quits (~alp@user/alp) (Ping timeout: 248 seconds) |
| 22:38:02 | → | RevoGen joins (~RevoGen@136.167.108.23) |
| 22:39:08 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 22:42:17 | × | gurkenglas quits (~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de) (Read error: Connection reset by peer) |
| 22:42:45 | → | gurkenglas joins (~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de) |
| 22:46:07 | <shapr> | sshine: put up a PR? |
| 22:50:12 | × | RevoGen quits (~RevoGen@136.167.108.23) (Remote host closed the connection) |
| 22:50:27 | <shapr> | hm, I don't have a contribution to hedgehog, *I* could put up a PR |
| 22:50:29 | → | RevoGen joins (~RevoGen@136.167.108.23) |
| 22:51:10 | <sshine> | shapr, oops, sorry :) |
| 22:56:33 | × | RevoGen quits (~RevoGen@136.167.108.23) (Remote host closed the connection) |
| 22:57:04 | × | Guest27 quits (~Guest27@2601:281:d47f:1590:768c:7129:aa80:96d9) (Ping timeout: 250 seconds) |
| 22:58:01 | → | RevoGen joins (~RevoGen@136.167.108.23) |
| 23:01:50 | → | merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
| 23:02:58 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 23:03:03 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 256 seconds) |
| 23:04:35 | × | ec quits (~ec@gateway/tor-sasl/ec) (Quit: ec) |
| 23:04:39 | → | Guest27 joins (~Guest27@2601:281:d47f:1590:768c:7129:aa80:96d9) |
| 23:07:05 | × | jackson99 quits (~bc8147f2@cerf.good1.com) (Quit: CGI:IRC (Ping timeout)) |
| 23:11:28 | → | Artus joins (~Artus@190.192.80.102) |
| 23:12:37 | × | perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Ping timeout: 240 seconds) |
| 23:13:38 | × | epolanski quits (uid312403@id-312403.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
| 23:15:03 | <lechner> | Hi, is base 4.13 supposed to ship base-4.13.0.0/Data-Semigroup-Internal.html ? |
| 23:15:34 | <lechner> | or base-4.13.0.0/Control-Monad-ST-Lazy-Imp.html ? |
| 23:16:06 | <davean> | lechner: I'm confused by the question |
| 23:16:13 | <lechner> | the docs in base-compat-0.11.1 refer to them, but i cannot find them |
| 23:16:37 | <lechner> | davean: generate, i suppose |
| 23:16:44 | <abastro[m]> | Oh, I guess those are internal modules |
| 23:16:49 | <davean> | They're in the package, but they're not supposed to be exported - I mean they're .Internal |
| 23:16:55 | <abastro[m]> | So, not supposed to ship |
| 23:17:00 | × | RevoGen quits (~RevoGen@136.167.108.23) (Ping timeout: 250 seconds) |
| 23:17:06 | <davean> | No, "ship" isn't a sensible way to think about this |
| 23:17:08 | <davean> | they exist |
| 23:17:12 | <davean> | They're not *exported* |
| 23:17:20 | <davean> | They're right there. |
| 23:17:31 | → | nightbreak joins (~nightbrea@nat-168-7-239-90.rice.edu) |
| 23:18:17 | <lechner> | the debian build system looks for those documents when establishing installation prerequisites |
| 23:18:21 | → | jackson99 joins (~bc8147f2@cerf.good1.com) |
| 23:18:23 | <davean> | And whats "should", things import them - if they weren't there base wouldn't compile. |
| 23:18:40 | <davean> | lechner: what documents? |
| 23:18:45 | <davean> | Files? |
| 23:18:53 | <jackson99> | is there a way to make this shorter or more elegant? I tried using map/filter instead of list comprehensions but it ended up being longer and uglier |
| 23:19:53 | × | Guest27 quits (~Guest27@2601:281:d47f:1590:768c:7129:aa80:96d9) (Quit: Client closed) |
| 23:19:54 | <jackson99> | (moment) |
| 23:20:07 | <abastro[m]> | I thought "ship" was synonym for "exported". Meh |
| 23:20:09 | <geekosaur> | @where paste |
| 23:20:09 | <lambdabot> | Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com |
| 23:20:16 | <davean> | abastro[m]: Absolutely not |
| 23:20:28 | <davean> | abastro[m]: Ship means "to send", and they're certainly sent in the package. |
| 23:20:56 | <abastro[m]> | Yep, indeed |
| 23:21:16 | <lechner> | davean: My new Haskell build system for Debian fails for base-compat http://qa-logs.debian.net/2022/04/12/haskell-base-compat_0.11.1-1_unstable.log |
| 23:21:17 | <davean> | Which is why this question of lechner's is so confusion. I have no idea what they actually want. |
| 23:21:24 | <abastro[m]> | I guess I also somehow thought internal modules are inlined in some other modules.. :p |
| 23:21:51 | <lechner> | i'm trying to figure out if they should be shipped |
| 23:21:57 | <jackson99> | > let duplicates xs = [x | (x:_:_) <- group (sort xs)] in duplicates [1,2,3,2] |
| 23:21:59 | <lambdabot> | [2] |
| 23:22:00 | <lechner> | or ignored |
| 23:22:01 | <davean> | *WHAT DO YOU MEAN BY SHIPPED!!!* |
| 23:22:07 | <jackson99> | vs map/filter |
| 23:22:19 | <jackson99> | > let duplicates = map head . filter ((>1) . length) . group . sort in duplicates [1,2,3,2] |
| 23:22:21 | <lambdabot> | [2] |
| 23:22:29 | <abastro[m]> | lechner: What is this debian build system thing? |
| 23:22:48 | <abastro[m]> | I know of 3 build systems, cabal, stack, nix. But what is debian |
| 23:22:51 | <davean> | Ok, in that log it looks like you're *trying to generate docs for them* |
| 23:22:52 | <jackson99> | maybe there's some other function that I am missing that does both things mp and filter do but in one go |
| 23:23:02 | <davean> | and uh, no, they don't have docs. This build system is broken. |
| 23:23:34 | <lechner> | davean: shipped here https://packages.debian.org/bullseye/amd64/ghc/filelist |
| 23:24:04 | <sclv> | de bien is what you say after de tres |
| 23:24:06 | <davean> | /usr/lib/ghc/base-4.13.0.0/Data/Semigroup/Internal.dyn_hi |
| 23:24:08 | <davean> | /usr/lib/ghc/base-4.13.0.0/Data/Semigroup/Internal.ih |
| 23:24:10 | <davean> | Right there? |
| 23:24:17 | <davean> | Note thats NOT what your log fails on. |
| 23:24:24 | <lechner> | abastro[m]: this and friends https://tracker.debian.org/pkg/haskell-devscripts |
| 23:24:25 | <abastro[m]> | jackson99: perhaps instead of checking length, you can use if it is not null. Also.. iirc elements of `group` is neverempty list |
| 23:24:27 | <davean> | Those are build products from the files. |
| 23:24:45 | <geekosaur> | abastro[m], length has to be >1 not >0 |
| 23:24:55 | <jackson99> | yes |
| 23:24:57 | <abastro[m]> | Oh wait |
| 23:24:59 | <lechner> | the log is looking for the path dpkg-query: no path found matching pattern /usr/share/doc/ghc-doc/html/libraries/base-4.13.0.0/Data-Semigroup-Internal.html |
| 23:25:01 | <geekosaur> | they want the values which have more than one entry |
| 23:25:16 | <davean> | lechner: right, and I talked about that |
| 23:25:17 | <abastro[m]> | I misread :P |
| 23:25:30 | <davean> | I specificly talked about that |
| 23:26:00 | <abastro[m]> | In that case, I think mapMaybe might be good to use |
| 23:26:15 | <jackson99> | :t mapMaybe |
| 23:26:17 | <lambdabot> | (a -> Maybe b) -> [a] -> [b] |
| 23:26:35 | → | Guest27 joins (~Guest27@2601:281:d47f:1590:768c:7129:aa80:96d9) |
| 23:26:46 | × | mmhat quits (~mmh@55d42e6b.access.ecotel.net) (Quit: WeeChat 3.5) |
| 23:27:24 | abastro[m] | sent a hs code block: https://libera.ems.host/_matrix/media/r0/download/libera.chat/930e3f9e027cb92d92d8cca14c67173b902efb06 |
| 23:27:45 | <lechner> | davean: i think i found it. the path has an extra /src/ segment https://packages.debian.org/bullseye/all/ghc-doc/filelist |
| 23:28:04 | <lechner> | davean: sorry i thought it was related to the module being internal |
| 23:28:06 | <abastro[m]> | Then it would be |
| 23:28:06 | <abastro[m]> | (mapMaybe mapper . group . sort) |
| 23:28:23 | <jackson99> | > let duplicates = mapMaybe (\xs -> case xs of (x:_:_) -> Just x; _ -> Nothing) . group . sort in duplicates [1,2,3,2] |
| 23:28:25 | <lambdabot> | [2] |
| 23:28:37 | <davean> | lechner: I mean sorta - thats why it doesn't generate docs. Because docs have nothing to do with code. |
| 23:28:49 | <sshine> | > let duplicates = Data.Set.toList . Data.Set.fromList in duplicates [1,2,3,1,3,2,4,5,1] |
| 23:28:50 | <lambdabot> | [1,2,3,4,5] |
| 23:28:56 | × | gurkenglas quits (~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de) (Ping timeout: 248 seconds) |
| 23:29:26 | <abastro[m]> | Well that one also returns those not duplicated :p |
| 23:29:28 | <jackson99> | sshine, doesn't that do the opposite? |
| 23:29:33 | <geekosaur> | sshine, 4 and 5 don't belong there |
| 23:29:47 | × | gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 23:29:49 | <sshine> | oh, sorry, I triggered on the word "duplicates" :) |
| 23:29:51 | <davean> | lechner: The real question is why this build system would ever think haddocs would be generated for those files. |
| 23:30:05 | <jackson99> | oh right, that is nub |
| 23:30:08 | <abastro[m]> | I was there too |
| 23:30:26 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 23:30:48 | <abastro[m]> | I wonder why nub exists tbh |
| 23:31:07 | <sshine> | historical reasons |
| 23:31:08 | <abastro[m]> | > nub [1..100000] |
| 23:31:10 | <lambdabot> | [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,... |
| 23:31:19 | <abastro[m]> | Oh it computes fast |
| 23:31:19 | <sshine> | containers has Data.Containers.nubOrd |
| 23:31:21 | <geekosaur> | and it's simple when you know the list is short |
| 23:31:21 | <lechner> | davean: because haddock creates HTML anchor referring to local files:/ |
| 23:31:45 | <abastro[m]> | nubOrd needs to be in base imho |
| 23:31:59 | <geekosaur> | if you have 200 monitors, come to me and we'll change xmonad to use nubOrd :þ |
| 23:32:01 | <jackson99> | @pl (\xs -> case xs of (x:_:_) -> Just x; _ -> Nothing) |
| 23:32:01 | <lambdabot> | (line 1, column 24): |
| 23:32:01 | <lambdabot> | unexpected '_' |
| 23:32:02 | <lambdabot> | expecting simple term |
| 23:32:09 | <abastro[m]> | Wait I reached out to can of worms :/ |
| 23:32:28 | <geekosaur> | abastro[m], it can't be in base unless you move part of containers to base as well |
| 23:32:31 | <dibblego> | haha, main = xmonad config nubOrd |
| 23:32:36 | <davean> | lechner: https://hackage.haskell.org/package/base-4.13.0.0/docs/src/Data.Semigroup.Internal.html <-- as far as I can tell it creates all the anchors that actually exist if you do it in the right mode. |
| 23:32:38 | <abastro[m]> | geekosaur: lmao |
| 23:32:50 | <abastro[m]> | Oh, what does nubOrd use? |
| 23:32:58 | <jackson99> | I still like list comprehension version. kind of neat that it ignores unmatched patterns |
| 23:32:59 | <davean> | lechner: You've got the wrong name for the file |
| 23:33:09 | <geekosaur> | Set, iirc |
| 23:33:17 | <abastro[m]> | Does it use `Set`????? Duh |
| 23:33:20 | × | mud quits (~mud@user/kadoban) (Quit: quit) |
| 23:33:25 | <abastro[m]> | Could you show list comprehension version jackson99 |
| 23:33:28 | <geekosaur> | Set.toList . Set.fromList |
| 23:33:31 | <lechner> | davean: or Haddock does? |
| 23:33:33 | <jackson99> | duplicates xs = [x | (x:_:_) <- group (sort xs)] |
| 23:33:50 | <davean> | lechner: no, haddock everywhere I know of *does* link to the correct file. |
| 23:33:54 | <abastro[m]> | Ya that's as nice as it could get |
| 23:34:03 | <davean> | https://hackage.haskell.org/package/base-4.13.0.0/docs/src/Data.Semigroup.html <-- see, its link is right |
| 23:34:30 | <geekosaur> | that said, if you're nubbing a list then perhaps you should have been using Set to begin with |
| 23:35:29 | <abastro[m]> | > duplicates [1,2,3,3,2,4,4,5] where duplicates xs = do |
| 23:35:29 | <abastro[m]> | x : _ : _ <- group (sort xs) |
| 23:35:29 | <abastro[m]> | pure x |
| 23:35:31 | <lambdabot> | <hint>:1:30: error: parse error on input ‘where’ |
| 23:35:42 | <abastro[m]> | Wh |
| 23:35:51 | <geekosaur> | lambdabot doesn't do multiline |
| 23:35:55 | × | merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
| 23:35:57 | <abastro[m]> | Oh noh |
| 23:36:11 | <geekosaur> | also you can't attach where to a computation, only a declaration |
| 23:36:44 | <abastro[m]> | Ouch, right |
| 23:37:07 | <geekosaur> | let duplicates xs = do { x:_:_ <- group (sort xs); pure x } in duplicates [1,2,3,3,2,4,4,5] |
| 23:37:11 | <geekosaur> | > let duplicates xs = do { x:_:_ <- group (sort xs); pure x } in duplicates [1,2,3,3,2,4,4,5] |
| 23:37:13 | <lambdabot> | [2,3,4] |
| 23:37:39 | <davean> | lechner: Thats the name for the doc file, which doesn't exist - not the source annotation which does. |
| 23:37:52 | <davean> | lechner: You should only get that if you mark a name for reference that doesn't exist. |
| 23:38:16 | <davean> | Not from anything Haddock does. |
| 23:38:29 | <abastro[m]> | Do notation and List comprehension has duplicate niche |
| 23:40:24 | × | Guest27 quits (~Guest27@2601:281:d47f:1590:768c:7129:aa80:96d9) (Ping timeout: 250 seconds) |
| 23:40:31 | <abastro[m]> | So nowadays I learned taste towards do notation >:) |
| 23:40:35 | → | perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
| 23:42:16 | <sshine> | > let duplicates xs = [ x | x:_:_ <- group (sort xs) ] in duplicates [1,2,3,3,2,4,4,5] |
| 23:42:18 | <lambdabot> | [2,3,4] |
| 23:42:27 | × | nightbreak quits (~nightbrea@nat-168-7-239-90.rice.edu) (Quit: Signing off for now...) |
| 23:42:41 | → | vicfred joins (~vicfred@user/vicfred) |
| 23:44:16 | <abastro[m]> | List comprehension exists also for historical reason right |
| 23:44:39 | <abastro[m]> | Since they could have extended do notation to cover that case if do notation existed beforehand |
| 23:44:39 | <jackson99> | they used to be monad comprehensions |
| 23:45:47 | ← | nort parts (~textual@c-73-176-198-132.hsd1.in.comcast.net) (I Quit!) |
| 23:46:13 | <abastro[m]> | Monad comprehension? |
| 23:46:39 | <jackson99> | https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/monad_comprehensions.html |
| 23:48:38 | <abastro[m]> | Well that one is recent addition though |
| 23:48:39 | <jackson99> | IIRC they used to be more general monad comprehensions, then they were relegated to list comprehensions only, and after a while we got extensions for monad comprehensions again. but I could be remembering it wrong |
| 23:50:13 | <geekosaur> | you remember correctly |
| 23:50:21 | <geekosaur> | haskell98 added a bunch of such restrictions |
| 23:50:47 | <dolio> | They were list comprehensions first. Then monad comprehensions, then list comprehensions, now optionally monad comprehensions. |
| 23:51:03 | <geekosaur> | huh |
| 23:51:52 | → | coot joins (~coot@213.134.190.95) |
| 23:52:27 | <abastro[m]> | Right? List comprehension first |
| 23:52:34 | <abastro[m]> | It also comes before do notation right |
| 23:52:52 | <abastro[m]> | (Personally I cannot care for monad comprehension) |
| 23:53:44 | <dons> | morning all |
| 23:54:03 | <sshine> | 早 o/ |
| 23:54:05 | × | jackson99 quits (~bc8147f2@cerf.good1.com) (Quit: CGI:IRC (Ping timeout)) |
| 23:54:19 | <geekosaur> | o/ |
| 23:54:35 | <abastro[m]> | o/ |
| 23:56:24 | → | wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com) |
| 23:56:24 | × | wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
| 23:56:24 | → | wroathe joins (~wroathe@user/wroathe) |
| 23:57:35 | × | zeenk quits (~zeenk@2a02:2f04:a313:d600:8d26:ec9f:3ff6:fc94) (Quit: Konversation terminated!) |
| 23:58:28 | → | bgs joins (~bgs@cpe-212-85-160-171.cable.telemach.net) |
| 23:58:38 | → | Codaraxis_ joins (~Codaraxis@user/codaraxis) |
| 23:58:57 | → | ub1 joins (~Thunderbi@p548c8d44.dip0.t-ipconnect.de) |
| 23:58:58 | × | coot quits (~coot@213.134.190.95) (Quit: coot) |
| 23:59:25 | → | jackson99 joins (~bc8147f2@cerf.good1.com) |
| 23:59:47 | × | ub quits (~Thunderbi@p200300ecdf1588a3ccf7a828925c2eab.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
All times are in UTC on 2022-04-13.