Home liberachat/#haskell: Logs Calendar

Logs: liberachat/#haskell

←Prev  Next→ 1,803,212 events total
2025-10-25 06:56:31 <Unicorn_Princes> oh dear
2025-10-25 06:59:28 CiaoSen joins (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db)
2025-10-25 06:59:39 wootehfoot joins (~wootehfoo@user/wootehfoot)
2025-10-25 07:06:55 peterbecich joins (~Thunderbi@172.222.148.214)
2025-10-25 07:15:48 Googulator17 joins (~Googulato@2a01-036d-0106-03fa-d161-d36f-e0e5-1b0a.pool6.digikabel.hu)
2025-10-25 07:15:48 × Googulator25 quits (~Googulato@2a01-036d-0106-03fa-d161-d36f-e0e5-1b0a.pool6.digikabel.hu) (Quit: Client closed)
2025-10-25 07:16:14 ljdarj joins (~Thunderbi@user/ljdarj)
2025-10-25 07:19:52 <[exa]> Unicorn_Princes: any actual usecase for that? (mostly curious)
2025-10-25 07:27:40 <Unicorn_Princes> yep - making kind of a custom prelude (for a specific usecase). imagine i have System.Directory.setCurrentDirectory, and Conversion.Audio.toMp3, and i want to make a single MyPrelude module, where with just import qualified MyPrelude, I can do MyPrelude.setCurrentDirectory (since it's a commonly used function it's top-level) and MyPrelude.Audio.toMp3 (less commonly used, so more nesting)
2025-10-25 07:29:01 <Unicorn_Princes> basically this: https://doc.rust-lang.org/book/ch14-02-publishing-to-crates-io.html#exporting-a-convenient-public-api-with-pub-use
2025-10-25 07:29:39 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-10-25 07:35:31 zeenk joins (~zeenk@82.78.233.217)
2025-10-25 07:38:11 × jmcantrell quits (~weechat@user/jmcantrell) (Ping timeout: 256 seconds)
2025-10-25 07:39:49 × ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 255 seconds)
2025-10-25 07:40:01 × peterbecich quits (~Thunderbi@172.222.148.214) (Ping timeout: 244 seconds)
2025-10-25 07:40:56 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
2025-10-25 07:45:42 × CiaoSen quits (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 240 seconds)
2025-10-25 07:45:48 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
2025-10-25 07:46:28 gmg joins (~user@user/gehmehgeh)
2025-10-25 07:50:46 × olivial quits (~benjaminl@user/benjaminl) (Read error: Connection reset by peer)
2025-10-25 07:51:02 olivial joins (~benjaminl@user/benjaminl)
2025-10-25 07:58:29 × trickard quits (~trickard@cpe-55-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2025-10-25 07:58:42 trickard joins (~trickard@cpe-55-98-47-163.wireline.com.au)
2025-10-25 07:58:43 Frostillicus joins (~Frostilli@pool-71-174-119-69.bstnma.fios.verizon.net)
2025-10-25 08:01:56 ljdarj joins (~Thunderbi@user/ljdarj)
2025-10-25 08:03:42 × Frostillicus quits (~Frostilli@pool-71-174-119-69.bstnma.fios.verizon.net) (Ping timeout: 256 seconds)
2025-10-25 08:08:39 <[exa]> Unicorn_Princes: so essentially "import qualified MyPrelude.Audio" would be almost there, except you don't want to write the qualified import yourself?
2025-10-25 08:10:24 <Unicorn_Princes> yes, and "import qualified MyPrelude.Audio as Audio" is all the way there
2025-10-25 08:10:57 <Unicorn_Princes> only right now that's in an init file that is ran at runtime so doesn't get any compile-time checking. which honestly isn't a big deal since it's super small
2025-10-25 08:11:42 <[exa]> yeah I'd vote for init file approach too
2025-10-25 08:13:31 Tuplanolla joins (~Tuplanoll@91-159-187-167.elisa-laajakaista.fi)
2025-10-25 08:13:39 <[exa]> doing autoimports in any other way gets a bit hairy, in rust it might be OK but here you also have small module-related things that change on the import (mainly instances) which could probably mess up stuff if done too automagically
2025-10-25 08:14:34 <[exa]> btw why have audio in prelude?
2025-10-25 08:15:04 <Unicorn_Princes> just so i can do Audio.stuff instead of MyProject.Audio.stuff
2025-10-25 08:16:13 <Unicorn_Princes> i dunno, maybe i shouldn't nest everything under MyProject...
2025-10-25 08:17:28 <Unicorn_Princes> (to be clear this is not meant as a general purpose prelude)
2025-10-25 08:22:01 LainIwakura joins (~LainIwaku@user/LainIwakura)
2025-10-25 08:22:51 <haskellbridge> <doc> ...if you just want the experience of typing Audio.stuff maybe you could fake it with OverloadedRecordDot + NoFieldSelectors and a top-level record value named "audio" containing all the "exported functions".. the only difference now is that audio is lowercase
2025-10-25 08:24:26 <haskellbridge> <doc> (this would be extremely funny, to be clear, and uncertain whether advisable)
2025-10-25 08:24:43 <Unicorn_Princes> ye no sounds too dirty for me :S
2025-10-25 08:33:10 tromp joins (~textual@2001:1c00:3487:1b00:d88f:2255:14bf:ec80)
2025-10-25 08:46:03 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-10-25 08:56:31 notzmv joins (~umar@user/notzmv)
2025-10-25 08:56:49 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
2025-10-25 08:58:23 <[exa]> +1 for not over-nesting
2025-10-25 08:59:48 <[exa]> Unicorn_Princes: to be super safe you might call your Audio with some project-specific prefix (MPAudio). Gives a safe default and people can import it nicely (as A)
2025-10-25 09:01:10 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2025-10-25 09:01:42 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2025-10-25 09:02:36 <Unicorn_Princes> but then isn't MyProject.Audio just that project-specific prefix?
2025-10-25 09:08:36 acidjnk joins (~acidjnk@p200300d6e71719145522d7c0b030ad0e.dip0.t-ipconnect.de)
2025-10-25 09:10:31 × trickard quits (~trickard@cpe-55-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2025-10-25 09:10:44 trickard_ joins (~trickard@cpe-55-98-47-163.wireline.com.au)
2025-10-25 09:12:52 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
2025-10-25 09:17:40 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2025-10-25 09:22:25 califax_ joins (~califax@user/califx)
2025-10-25 09:23:02 × califax quits (~califax@user/califx) (Ping timeout: 272 seconds)
2025-10-25 09:23:40 califax_ is now known as califax
2025-10-25 09:28:40 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
2025-10-25 09:34:25 × trickard_ quits (~trickard@cpe-55-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2025-10-25 09:34:40 trickard_ joins (~trickard@cpe-55-98-47-163.wireline.com.au)
2025-10-25 09:42:08 × Jackneill_ quits (~Jackneill@94-21-95-10.pool.digikabel.hu) (Remote host closed the connection)
2025-10-25 09:45:38 × Googulator17 quits (~Googulato@2a01-036d-0106-03fa-d161-d36f-e0e5-1b0a.pool6.digikabel.hu) (Quit: Client closed)
2025-10-25 09:45:40 Googulator71 joins (~Googulato@2a01-036d-0106-03fa-d161-d36f-e0e5-1b0a.pool6.digikabel.hu)
2025-10-25 09:53:18 × trickard_ quits (~trickard@cpe-55-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2025-10-25 09:53:31 trickard_ joins (~trickard@cpe-55-98-47-163.wireline.com.au)
2025-10-25 10:05:06 × tzh quits (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
2025-10-25 10:08:42 __monty__ joins (~toonn@user/toonn)
2025-10-25 10:12:04 trickard_ is now known as trickard
2025-10-25 10:24:12 tcard joins (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
2025-10-25 10:28:27 paul_j joins (~user@8.190.187.81.in-addr.arpa)
2025-10-25 10:35:32 × Googulator71 quits (~Googulato@2a01-036d-0106-03fa-d161-d36f-e0e5-1b0a.pool6.digikabel.hu) (Quit: Client closed)
2025-10-25 10:35:45 Googulator71 joins (~Googulato@2a01-036d-0106-03fa-d161-d36f-e0e5-1b0a.pool6.digikabel.hu)
2025-10-25 10:37:32 target_i joins (~target_i@user/target-i/x-6023099)
2025-10-25 10:42:34 <tomsmeding> yes but it's longer
2025-10-25 10:46:13 × simplystuart quits (~simplystu@c-75-75-152-164.hsd1.pa.comcast.net) (Ping timeout: 264 seconds)
2025-10-25 10:46:23 simplystuart joins (~simplystu@c-75-75-152-164.hsd1.pa.comcast.net)
2025-10-25 10:48:18 <[exa]> well, probably
2025-10-25 10:51:22 × humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection)
2025-10-25 11:02:30 <Unicorn_Princes> well in principle only longer by one '.' - i could rename MyProject to MP :)
2025-10-25 11:10:23 L29Ah joins (~L29Ah@wikipedia/L29Ah)
2025-10-25 11:20:40 <[exa]> Unicorn_Princes: like, the only thing that can go wrong there is naming conflict with some other library, but since this is some kinda usecase-specific Prelude I guess that isn't a huge issue, right?
2025-10-25 11:23:39 × Leary quits (~Leary@user/Leary/x-0910699) (Remote host closed the connection)
2025-10-25 11:24:33 <Unicorn_Princes> you may be right. hm
2025-10-25 11:28:01 <Unicorn_Princes> so say i have a top-lvl module named CommonName (so not nested as MyProject.CommonName), and i find the name is already taken by some (possibly standard) library i want to also use (or someone else wants to use both).. what are one's options in that case?
2025-10-25 11:28:44 <Unicorn_Princes> or what is the idiomatic way to avoid/deal with this
2025-10-25 11:30:32 × Square2 quits (~Square@user/square) (Ping timeout: 256 seconds)
2025-10-25 11:34:07 Leary joins (~Leary@user/Leary/x-0910699)
2025-10-25 11:38:43 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 244 seconds)
2025-10-25 11:39:08 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
2025-10-25 11:46:33 gustrb joins (~gustrb@191.243.134.87)
2025-10-25 11:47:40 × gustrb quits (~gustrb@191.243.134.87) (Client Quit)
2025-10-25 11:47:54 gustrb joins (~gustrb@191.243.134.87)
2025-10-25 11:54:56 ft joins (~ft@mue-88-130-106-235.dsl.tropolys.de)
2025-10-25 11:55:54 L29Ah parts (~L29Ah@wikipedia/L29Ah) ()
2025-10-25 11:56:02 × gustrb quits (~gustrb@191.243.134.87) (Quit: gustrb)
2025-10-25 11:56:42 gustrb joins (~gustrb@191.243.134.87)
2025-10-25 12:12:10 × trickard quits (~trickard@cpe-55-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2025-10-25 12:12:23 trickard joins (~trickard@cpe-55-98-47-163.wireline.com.au)
2025-10-25 12:18:55 Square2 joins (~Square@user/square)
2025-10-25 12:20:38 × Googulator71 quits (~Googulato@2a01-036d-0106-03fa-d161-d36f-e0e5-1b0a.pool6.digikabel.hu) (Quit: Client closed)

All times are in UTC.