Logs on 2023-10-25 (liberachat/#haskell)
| 00:00:07 | <monochrom> | in which case "selectable" would be what I called "Selective". |
| 00:00:43 | × | Square3 quits (~Square4@user/square) (Ping timeout: 260 seconds) |
| 00:01:38 | → | sansk joins (~sansk@072-238-128-073.res.spectrum.com) |
| 00:06:17 | <davean> | EvanR: Absolutely |
| 00:06:32 | <EvanR> | how do you make a custom selectable |
| 00:06:36 | <davean> | monochrom: Oh I meant POSIX "select" callable |
| 00:06:47 | <davean> | EvanR: pipe/socket or any filehandle |
| 00:07:04 | <davean> | This is how the RTS even talks to its self |
| 00:07:11 | <EvanR> | so make a custom pipe, socket, filehandle, like hack the kernel? |
| 00:07:22 | <davean> | No? There is no hacking here? |
| 00:07:28 | <davean> | This is basic POSIX |
| 00:07:36 | <EvanR> | make a custom fd... and do what with it |
| 00:08:00 | <Inst> | there, finally figured it out |
| 00:08:06 | <geekosaur> | give it to the IO manager. C writes to it, the IO manager wakes up the associated thread |
| 00:08:29 | <EvanR> | what is the true name of this IO manager so I may access it |
| 00:08:33 | <geekosaur> | look at `threadWaitRead` |
| 00:08:51 | <monochrom> | It is just called "the IO manager" :) |
| 00:09:10 | <EvanR> | > \fd -> (the IO manager) fd |
| 00:09:11 | <lambdabot> | error: |
| 00:09:11 | <lambdabot> | Variable not in scope: the :: t0 -> t1 -> t -> t2error: Data constructor... |
| 00:09:15 | <Inst> | after backporting the Haskell into Python, the answer, it seems, for this problem, is just use a lambda that injects values into a list |
| 00:09:22 | <monochrom> | But you can find it in https://github.com/takenobu-hs/haskell-ghc-illustrated |
| 00:09:27 | <Inst> | then use applicative functions to apply it to the random generator |
| 00:09:31 | <Inst> | so the lambda is essentially pure |
| 00:10:02 | <geekosaur> | https://downloads.haskell.org/ghc/9.2.5/docs/html/libraries/base-4.16.4.0/GHC-Event.html is the lowest level implementation, but threadWaitRead and threadWaitWrite are the lowest levels you would find in a normal Haskell program |
| 00:10:10 | <monochrom> | But yeah the high-level thing to do is threadWaitRead. |
| 00:10:39 | <EvanR> | GHC.Conc.IO.threadWaitRead |
| 00:10:41 | <jackdk> | EvanR: https://hackage.haskell.org/package/gdp-0.0.3.0/docs/Data-The.html#v:the |
| 00:11:28 | <EvanR> | hahaha |
| 00:17:47 | × | sansk quits (~sansk@072-238-128-073.res.spectrum.com) (Quit: WeeChat 4.0.4) |
| 00:18:05 | × | Square quits (~Square@user/square) (Ping timeout: 240 seconds) |
| 00:18:05 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:484c:e1ac:4235:81cd) (Ping timeout: 240 seconds) |
| 00:19:53 | <jackdk> | Ghosts of departed proofs is such a cool paper |
| 00:22:32 | → | Umeaboy joins (~Umeaboy@94-255-145-133.cust.bredband2.com) |
| 00:24:27 | <Umeaboy> | Hi! This might sound very stupid, but row/line 146 in this spec file clearly says to place the resulting files in /opt/, but when I reach to the end of the build it fails to create the package due to finding installed but unpackaged files which is NOT in /opt/ |
| 00:24:42 | <Umeaboy> | Am I stupid or is this spec file wrongly written? |
| 00:24:52 | <Umeaboy> | https://build.opensuse.org/package/view_file/openSUSE:Factory/ghc-bootstrap/ghc-bootstrap.spec?expand=1 |
| 00:25:26 | <Umeaboy> | I have compared to other spec files and they say the same under the %files part which is /opt/ |
| 00:25:43 | <Umeaboy> | I could use some help correcting this. |
| 00:26:14 | × | emmanuelux_ quits (~emmanuelu@user/emmanuelux) (Quit: au revoir) |
| 00:27:17 | <geekosaur> | shouldn't that be asked of SuSE package developers, rather than Haskellers? |
| 00:27:50 | <geekosaur> | I mean, I'm probably the only one here who knows about SuSE's version of spec files, and that knowledge is 15 years out of date |
| 00:28:21 | <Umeaboy> | geekosaur: I just asked in #opensuse as well. |
| 00:28:24 | <Umeaboy> | :) |
| 00:28:33 | <Umeaboy> | So already a step ahead of you there. |
| 00:29:15 | <Inst> | EvanR: the solution you were expecting was a lambda to list, then applicative methods to imbue state, right? I got it fixed that way |
| 00:30:05 | <Inst> | no IsString, no pures everywhere, just lambda that generates a list being fmapped and <*>-ed into State StdGen |
| 00:35:00 | × | qqq quits (~qqq@92.43.167.61) (Read error: Connection reset by peer) |
| 00:35:38 | <monochrom> | jackdk: That is interesting. Thanks. |
| 00:35:43 | → | qqq joins (~qqq@92.43.167.61) |
| 00:38:06 | <jackdk> | monochrom: I wish ocharles had written more about GDP-for-authz, because https://blog.ocharles.org.uk/blog/posts/2019-08-09-who-authorized-these-ghosts.html was really promising |
| 00:42:26 | → | sansk joins (~sansk@072-238-128-073.res.spectrum.com) |
| 00:42:56 | × | sansk quits (~sansk@072-238-128-073.res.spectrum.com) (Quit: WeeChat 4.0.4) |
| 00:48:46 | → | sansk joins (~sansk@user/sansk) |
| 01:00:10 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 255 seconds) |
| 01:01:27 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 01:05:48 | × | otto_s quits (~user@p4ff279af.dip0.t-ipconnect.de) (Ping timeout: 248 seconds) |
| 01:07:49 | → | otto_s joins (~user@p5b044b0d.dip0.t-ipconnect.de) |
| 01:17:26 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:484c:e1ac:4235:81cd) |
| 01:17:54 | → | nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net) |
| 01:22:59 | × | nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds) |
| 01:26:39 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:484c:e1ac:4235:81cd) (Ping timeout: 240 seconds) |
| 01:29:38 | → | o-90 joins (~o-90@gateway/tor-sasl/o-90) |
| 01:32:04 | ← | sansk parts (~sansk@user/sansk) (WeeChat 4.0.4) |
| 01:44:07 | × | leah2 quits (~leah@vuxu.org) (Ping timeout: 264 seconds) |
| 01:50:50 | × | o-90 quits (~o-90@gateway/tor-sasl/o-90) (Remote host closed the connection) |
| 01:59:07 | × | xff0x quits (~xff0x@ai101218.d.east.v6connect.net) (Ping timeout: 255 seconds) |
| 02:03:05 | × | waleee quits (~waleee@h-176-10-137-138.NA.cust.bahnhof.se) (Ping timeout: 240 seconds) |
| 02:09:13 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
| 02:09:13 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 02:09:13 | finn_elija | is now known as FinnElija |
| 02:14:24 | → | [_] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 02:15:55 | → | danza_ joins (~francesco@151.37.134.36) |
| 02:18:16 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 260 seconds) |
| 02:19:42 | → | danse-nr3 joins (~francesco@151.37.134.36) |
| 02:19:49 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:484c:e1ac:4235:81cd) |
| 02:22:19 | × | danse-nr3 quits (~francesco@151.37.134.36) (Remote host closed the connection) |
| 02:22:42 | → | danse-nr3 joins (~francesco@151.37.134.36) |
| 02:23:06 | → | lisbeths joins (uid135845@id-135845.lymington.irccloud.com) |
| 02:30:19 | × | machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 264 seconds) |
| 02:30:56 | <lockywolf> | Can someone point me toward vendored builds with Cabal? |
| 02:31:03 | <lockywolf> | without network |
| 02:35:03 | <sclv> | you can use project files to point to local repos |
| 02:35:29 | <sclv> | either source repos or local file system repos that collect tarballs |
| 02:36:05 | <sclv> | cf https://cabal.readthedocs.io/en/3.6/installing-packages.html#local-no-index-repositories |
| 02:42:00 | × | danza_ quits (~francesco@151.37.134.36) (Ping timeout: 258 seconds) |
| 02:44:05 | × | Inst quits (~Inst@120.244.192.250) (Read error: Connection reset by peer) |
| 02:44:36 | × | td_ quits (~td@i53870938.versanet.de) (Ping timeout: 240 seconds) |
| 02:44:42 | → | xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
| 02:46:50 | → | td_ joins (~td@i5387090F.versanet.de) |
| 02:54:20 | → | Inst joins (~Inst@120.244.192.250) |
| 02:55:39 | × | [_] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
| 02:58:56 | ← | L29Ah parts (~L29Ah@wikipedia/L29Ah) () |
| 02:58:59 | → | sunflower joins (~sunflower@2603-9001-620a-2e31-cc67-ccf1-c1a1-4821.inf6.spectrum.com) |
| 02:59:19 | ← | sunflower parts (~sunflower@2603-9001-620a-2e31-cc67-ccf1-c1a1-4821.inf6.spectrum.com) () |
| 02:59:30 | → | sm joins (~sm@plaintextaccounting/sm) |
| 03:00:03 | × | sm quits (~sm@plaintextaccounting/sm) (Client Quit) |
| 03:00:07 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 03:00:58 | × | vglfr quits (~vglfr@88.155.140.136) (Read error: Connection reset by peer) |
| 03:12:29 | → | aforemny_ joins (~aforemny@2001:9e8:6ce8:9900:f5fb:12e8:3754:e64f) |
| 03:13:49 | × | aforemny quits (~aforemny@2001:9e8:6cc2:e900:a0d4:78f3:5fb4:bb3c) (Ping timeout: 258 seconds) |
| 03:14:41 | → | billchenchina joins (~billchenc@113.57.152.160) |
| 03:16:27 | → | billchenchina- joins (~billchenc@2a0c:b641:7a2:230::10) |
| 03:19:14 | × | billchenchina quits (~billchenc@113.57.152.160) (Ping timeout: 245 seconds) |
| 03:24:04 | × | dnb^ quits (~cd@76.145.193.217) (Remote host closed the connection) |
| 03:28:18 | <lockywolf> | sclv: but how do I find out which tarballs I need do download? |
| 03:28:51 | <sclv> | while you’re online you can inspect the cabal.plan |
| 03:29:24 | <sclv> | also note that once you have a working env, you can go offline and it still works as long as you don’t add new deps |
| 03:32:51 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 03:39:12 | → | Jackneill_ joins (~Jackneill@20014C4E1E03DB0044BF7609ADF864E0.dsl.pool.telekom.hu) |
| 03:41:56 | × | Jackneill quits (~Jackneill@20014C4E1E0E6F00C66CC838C6CE2C28.dsl.pool.telekom.hu) (Ping timeout: 255 seconds) |
| 03:44:22 | → | leah2 joins (~leah@vuxu.org) |
| 03:44:35 | × | m5zs7k quits (aquares@web10.mydevil.net) (Quit: m5zs7k) |
| 03:46:48 | × | danse-nr3 quits (~francesco@151.37.134.36) (Read error: Connection reset by peer) |
| 03:47:00 | → | m5zs7k joins (aquares@web10.mydevil.net) |
| 03:47:12 | → | danse-nr3 joins (~francesco@151.37.177.170) |
| 03:51:20 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 256 seconds) |
| 03:58:15 | × | Umeaboy quits (~Umeaboy@94-255-145-133.cust.bredband2.com) (Quit: Leaving) |
| 04:00:53 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
| 04:01:35 | → | FinnElija joins (~finn_elij@user/finn-elija/x-0085643) |
| 04:02:29 | → | narutoman joins (~narutoman@189.172.116.173) |
| 04:03:02 | <narutoman> | Naruto Has Ninja Sex with Nuevo Leon Governor Samuel Garcia Naruto Uzumaki visits Monterrey and meets Governor Samuel Garcia and starts a romantic escapade with him. https://tinyurl.com/Narutosass |
| 04:04:19 | × | narutoman quits (~narutoman@189.172.116.173) (K-Lined) |
| 04:06:14 | → | _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) |
| 04:08:39 | → | phma_ joins (~phma@host-67-44-208-107.hnremote.net) |
| 04:10:18 | × | phma quits (phma@2001:5b0:210f:1b08:8de9:836f:9645:4508) (Read error: Connection reset by peer) |
| 04:11:24 | × | phma_ quits (~phma@host-67-44-208-107.hnremote.net) (Read error: Connection reset by peer) |
| 04:11:50 | → | phma_ joins (phma@2001:5b0:211c:95b8:542a:48a6:f6ef:c911) |
| 04:17:54 | × | jbalint_ quits (~jbalint@071-090-119-177.res.spectrum.com) (Read error: Connection reset by peer) |
| 04:20:11 | → | jbalint joins (~jbalint@071-090-119-177.res.spectrum.com) |
| 04:31:05 | phma_ | is now known as phma |
| 04:33:56 | × | danse-nr3 quits (~francesco@151.37.177.170) (Ping timeout: 258 seconds) |
| 04:45:54 | <haskellbridge> | <Inst> Matrix mods, cleanup? |
| 04:46:07 | <haskellbridge> | <Inst> I guess someone is using my script |
| 04:46:26 | <haskellbridge> | <Inst> with different initial parameters |
| 04:55:33 | → | danse-nr3 joins (~francesco@151.37.177.170) |
| 05:12:04 | → | michalz joins (~michalz@185.246.207.215) |
| 05:15:15 | × | g quits (g@libera/staff/glguy) (Remote host closed the connection) |
| 05:15:18 | → | g joins (g@libera/staff/glguy) |
| 05:17:44 | → | random-jellyfish joins (~tiber@2a02:2f04:11e:c600:3081:413f:53c6:da60) |
| 05:17:44 | × | random-jellyfish quits (~tiber@2a02:2f04:11e:c600:3081:413f:53c6:da60) (Changing host) |
| 05:17:44 | → | random-jellyfish joins (~tiber@user/random-jellyfish) |
| 05:19:25 | → | nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net) |
| 05:21:25 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 05:23:43 | × | rgw quits (~R@2605:a601:a0df:5600:15e8:6c08:c6f6:7379) (Read error: Connection reset by peer) |
| 05:23:51 | × | nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
| 05:29:19 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 05:33:24 | × | dsrt^ quits (~cd@76.145.193.217) (Ping timeout: 245 seconds) |
| 05:36:32 | → | dsrt^ joins (~cd@76.145.193.217) |
| 05:39:40 | × | _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht) |
| 05:55:27 | <dminuoso> | lockywolf: davean did some work working with cabal-install in an offline fashion as well. |
| 05:55:39 | <dminuoso> | It would be really nice if `cabal-install` had some `vendor-deps` command. |
| 06:02:13 | <danse-nr3> | by "vendor" you mean "offline", or does it entail anything more? |
| 06:04:52 | <danse-nr3> | i will interpret it as "local" |
| 06:13:56 | → | chele joins (~chele@user/chele) |
| 06:18:12 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 258 seconds) |
| 06:27:44 | → | idgaen joins (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
| 06:43:14 | <danse-nr3> | .oO( maybe in haskell the practice of having a private managing a fork of the dependencies for you is so common that haskellers like "vendor" more ) |
| 06:44:59 | → | ubert joins (~Thunderbi@91.141.40.172.wireless.dyn.drei.com) |
| 06:45:07 | → | CO2 joins (CO2@gateway/vpn/protonvpn/co2) |
| 06:46:38 | <lockywolf> | dminuoso: so far this is my best attempt: https://paste.debian.net/1296115/ |
| 06:47:05 | × | monochrom quits (trebla@216.138.220.146) (Ping timeout: 240 seconds) |
| 06:49:32 | → | coot joins (~coot@89-69-206-216.dynamic.chello.pl) |
| 06:54:22 | → | sord937 joins (~sord937@gateway/tor-sasl/sord937) |
| 06:57:34 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 06:58:00 | → | notzmv joins (~zmv@user/notzmv) |
| 07:05:36 | → | monochrom joins (trebla@216.138.220.146) |
| 07:07:16 | × | lottaquestions quits (~nick@2607:fa49:503d:b200:641c:fc5a:8196:c097) (Remote host closed the connection) |
| 07:07:41 | → | lottaquestions joins (~nick@2607:fa49:503d:b200:1016:8a55:beca:b71d) |
| 07:10:58 | × | Inst quits (~Inst@120.244.192.250) (Ping timeout: 255 seconds) |
| 07:18:54 | × | phma quits (phma@2001:5b0:211c:95b8:542a:48a6:f6ef:c911) (Read error: Connection reset by peer) |
| 07:19:53 | → | phma joins (~phma@2001:5b0:211f:8338:4e4a:1088:5969:f228) |
| 07:21:34 | → | sm joins (~sm@plaintextaccounting/sm) |
| 07:26:32 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:1f7:634d:7013:a344) |
| 07:35:35 | × | danse-nr3 quits (~francesco@151.37.177.170) (Remote host closed the connection) |
| 07:35:58 | → | danse-nr3 joins (~francesco@151.37.177.170) |
| 07:38:23 | × | sm quits (~sm@plaintextaccounting/sm) (Quit: sm) |
| 07:39:22 | × | billchenchina- quits (~billchenc@2a0c:b641:7a2:230::10) (Ping timeout: 272 seconds) |
| 07:43:33 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:484c:e1ac:4235:81cd) (Remote host closed the connection) |
| 07:47:00 | → | danse-nr3_ joins (~francesco@151.35.191.48) |
| 07:47:27 | × | danse-nr3 quits (~francesco@151.37.177.170) (Read error: Connection reset by peer) |
| 07:52:26 | → | fendor joins (~fendor@2a02:8388:1640:be00:aab:1226:f274:5021) |
| 07:54:53 | → | machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net) |
| 08:05:01 | → | mmhat joins (~mmh@p200300f1c7190756ee086bfffe095315.dip0.t-ipconnect.de) |
| 08:05:22 | × | mmhat quits (~mmh@p200300f1c7190756ee086bfffe095315.dip0.t-ipconnect.de) (Client Quit) |
| 08:09:45 | → | pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
| 08:16:51 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:7058:6d5c:2ab:360f) |
| 08:20:45 | → | vglfr joins (~vglfr@88.155.140.136) |
| 08:23:07 | × | tzh quits (~tzh@c-71-193-181-0.hsd1.or.comcast.net) (Quit: zzz) |
| 08:26:12 | × | pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5) |
| 08:28:04 | <lockywolf> | Is there some straightforward way to trim the giant 01-index.tar file and its pals to the packages already downloaded? |
| 08:33:33 | <dminuoso> | lockywolf: Like I said, dig into what davean built. |
| 08:34:05 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 08:34:40 | <dminuoso> | Dont have my old IRC logs anymore, so I cant figure out the project name |
| 08:34:57 | → | rosco joins (~rosco@yp-150-69.tm.net.my) |
| 08:35:06 | × | dhruvasagar1 quits (~dhruvasag@37.19.205.196) (Ping timeout: 260 seconds) |
| 08:38:48 | × | econo_ quits (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity) |
| 08:40:10 | × | danse-nr3_ quits (~francesco@151.35.191.48) (Ping timeout: 272 seconds) |
| 08:40:35 | → | dhruvasagar joins (~dhruvasag@37.19.205.196) |
| 08:42:36 | × | vglfr quits (~vglfr@88.155.140.136) (Remote host closed the connection) |
| 08:43:11 | → | vglfr joins (~vglfr@88.155.140.136) |
| 08:43:35 | × | migas4 quits (~migas@astra4961.startdedicated.net) (Quit: Ping timeout (120 seconds)) |
| 08:44:31 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 08:44:47 | → | migas4 joins (~migas@astra4961.startdedicated.net) |
| 08:45:16 | <mauke> | uh oh. I think I just discovered string gaps in Perl |
| 08:46:03 | × | vglfr quits (~vglfr@88.155.140.136) (Remote host closed the connection) |
| 08:46:16 | → | __monty__ joins (~toonn@user/toonn) |
| 08:46:39 | → | vglfr joins (~vglfr@88.155.140.136) |
| 08:49:47 | × | fendor quits (~fendor@2a02:8388:1640:be00:aab:1226:f274:5021) (Remote host closed the connection) |
| 08:50:06 | → | fendor joins (~fendor@2a02:8388:1640:be00:dc89:8d8:5d44:854b) |
| 08:51:02 | → | danse-nr3 joins (~francesco@151.35.191.48) |
| 08:53:20 | × | migas4 quits (~migas@astra4961.startdedicated.net) (Quit: Ping timeout (120 seconds)) |
| 08:53:42 | <mauke> | https://paste.tomsmeding.com/trEpgZqb - gaps.pl.lhs |
| 08:54:24 | → | Square3 joins (~Square4@user/square) |
| 08:55:38 | × | vglfr quits (~vglfr@88.155.140.136) (Remote host closed the connection) |
| 08:57:07 | → | migas4 joins (~migas@astra4961.startdedicated.net) |
| 08:57:48 | → | vglfr joins (~vglfr@88.155.140.136) |
| 09:00:35 | × | rosco quits (~rosco@yp-150-69.tm.net.my) (Quit: Lost terminal) |
| 09:04:38 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 09:04:58 | → | pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
| 09:07:11 | × | ubert quits (~Thunderbi@91.141.40.172.wireless.dyn.drei.com) (Ping timeout: 260 seconds) |
| 09:10:20 | → | Pickchea joins (~private@user/pickchea) |
| 09:11:36 | → | ubert joins (~Thunderbi@91.141.40.172.wireless.dyn.drei.com) |
| 09:20:57 | → | nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net) |
| 09:25:48 | → | ubert1 joins (~Thunderbi@178.165.198.50.wireless.dyn.drei.com) |
| 09:26:02 | × | nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 258 seconds) |
| 09:27:19 | × | ubert quits (~Thunderbi@91.141.40.172.wireless.dyn.drei.com) (Ping timeout: 255 seconds) |
| 09:27:19 | ubert1 | is now known as ubert |
| 09:27:21 | × | vglfr quits (~vglfr@88.155.140.136) (Read error: Connection reset by peer) |
| 09:27:36 | × | incertia quits (~incertia@209.122.71.127) (Quit: ZNC 1.8.2 - https://znc.in) |
| 09:27:42 | → | vglfr joins (~vglfr@185-177-124-194.hosted-by-worldstream.net) |
| 09:28:27 | → | incertia joins (~incertia@209.122.71.127) |
| 09:29:21 | × | dhruvasagar quits (~dhruvasag@37.19.205.196) (Ping timeout: 260 seconds) |
| 09:29:36 | → | acidjnk joins (~acidjnk@p200300d6e72b930390f6e959e0858704.dip0.t-ipconnect.de) |
| 09:31:48 | → | dhruvasagar joins (~dhruvasag@37.19.205.196) |
| 09:37:01 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 09:47:13 | <lockywolf> | seemingly, cracked it |
| 09:48:16 | × | vglfr quits (~vglfr@185-177-124-194.hosted-by-worldstream.net) (Ping timeout: 258 seconds) |
| 09:48:39 | × | hippoid quits (~hippoid@c-98-213-162-40.hsd1.il.comcast.net) (Ping timeout: 240 seconds) |
| 09:50:46 | → | hippoid joins (~hippoid@c-98-213-162-40.hsd1.il.comcast.net) |
| 09:54:39 | → | vglfr joins (~vglfr@88.155.140.136) |
| 09:55:43 | × | random-jellyfish quits (~tiber@user/random-jellyfish) (Ping timeout: 260 seconds) |
| 09:58:58 | → | random-jellyfish joins (~tiber@2a02:2f04:11e:c600:3081:413f:53c6:da60) |
| 09:58:58 | × | random-jellyfish quits (~tiber@2a02:2f04:11e:c600:3081:413f:53c6:da60) (Changing host) |
| 09:58:58 | → | random-jellyfish joins (~tiber@user/random-jellyfish) |
| 10:08:02 | × | xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 255 seconds) |
| 10:11:19 | → | arahael joins (~arahael@119-18-2-212.771202.syd.nbn.aussiebb.net) |
| 10:12:38 | × | elkcl quits (~elkcl@broadband-95-84-226-240.ip.moscow.rt.ru) (Ping timeout: 272 seconds) |
| 10:16:57 | × | ft quits (~ft@p4fc2a529.dip0.t-ipconnect.de) (Quit: leaving) |
| 10:18:34 | → | elkcl joins (~elkcl@broadband-95-84-226-240.ip.moscow.rt.ru) |
| 10:30:01 | → | Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542) |
| 10:46:36 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 240 seconds) |
| 10:47:03 | × | coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Ping timeout: 240 seconds) |
| 10:49:16 | × | puke quits (~puke@user/puke) (Quit: puke) |
| 10:53:27 | → | puke joins (~puke@user/puke) |
| 11:03:01 | → | kwii joins (~kwii@193.19.203.71) |
| 11:03:47 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:7058:6d5c:2ab:360f) (Ping timeout: 258 seconds) |
| 11:06:12 | → | snowsauce joins (~snowsauce@pa9-84-91-207-96.netvisao.pt) |
| 11:06:38 | → | chomwitt joins (~chomwitt@2a02:587:7a01:8f00:1ac0:4dff:fedb:a3f1) |
| 11:08:43 | → | sansk joins (~sansk@user/sansk) |
| 11:10:39 | → | xff0x joins (~xff0x@2405:6580:b080:900:b408:5b9a:5100:323d) |
| 11:12:33 | → | hpc joins (~juzz@ip98-169-35-163.dc.dc.cox.net) |
| 11:13:20 | → | CiaoSen joins (~Jura@2a05:5800:2bd:d400:664b:f0ff:fe37:9ef) |
| 11:15:18 | ← | kwii parts (~kwii@193.19.203.71) () |
| 11:17:52 | → | Guest|60 joins (~Guest|60@91.187.138.52) |
| 11:17:58 | <Guest|60> | hi |
| 11:18:10 | <Guest|60> | is there anyonoe |
| 11:18:18 | <Guest|60> | i cant installiram mrtvi huskel |
| 11:18:28 | × | Guest|60 quits (~Guest|60@91.187.138.52) (Client Quit) |
| 11:28:04 | → | sm joins (~sm@plaintextaccounting/sm) |
| 11:31:47 | → | accord joins (uid568320@id-568320.hampstead.irccloud.com) |
| 11:36:37 | × | danse-nr3 quits (~francesco@151.35.191.48) (Ping timeout: 255 seconds) |
| 11:37:41 | × | Pickchea quits (~private@user/pickchea) (Ping timeout: 255 seconds) |
| 11:40:18 | ← | sansk parts (~sansk@user/sansk) () |
| 11:40:31 | × | xff0x quits (~xff0x@2405:6580:b080:900:b408:5b9a:5100:323d) (Ping timeout: 264 seconds) |
| 11:41:59 | → | xff0x joins (~xff0x@ai101218.d.east.v6connect.net) |
| 11:58:19 | → | rosco joins (~rosco@yp-150-69.tm.net.my) |
| 12:04:14 | × | pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 255 seconds) |
| 12:05:31 | → | naruto69 joins (~naruto69@189.172.34.154) |
| 12:09:19 | × | dhruvasagar quits (~dhruvasag@37.19.205.196) (Ping timeout: 264 seconds) |
| 12:12:09 | × | vglfr quits (~vglfr@88.155.140.136) (Read error: Connection reset by peer) |
| 12:24:54 | → | kwii joins (~kwii@193.19.203.71) |
| 12:25:09 | <naruto69> | Read about it! Naruto Has Ninja Sex with Nuevo Leon Governor Samuel Garcia ------ Naruto grinned and formed the seals for a new jutsu he had been working on. "It's called the Ketsuryugan," he explained, "It's like a rasengan, but instead of spinning chakra, it's a concentrated blast of pleasure that stimulates the rectum and prostate." Samuel Garcia's eyebrows shot up in surprise, but he was clearly intrigued. "Sounds interesting. Can you show me |
| 12:25:10 | <naruto69> | how it works?" https://justpaste.it/Naruto_Makes_Love_Samuel_Garcia |
| 12:25:16 | → | pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
| 12:25:24 | ← | kwii parts (~kwii@193.19.203.71) () |
| 12:27:02 | <mauke> | @where ops |
| 12:27:02 | <lambdabot> | byorgey Cale conal copumpkin dcoutts dibblego dolio edwardk geekosaur glguy jmcarthur johnw mniip monochrom quicksilver shachaf shapr ski |
| 12:28:47 | → | danse-nr3 joins (~francesco@151.35.150.119) |
| 12:31:57 | ChanServ | sets mode +o dibblego |
| 12:32:19 | dibblego | sets mode +b *!*@189.172.34.154 |
| 12:32:26 | naruto69 | is kicked by dibblego (naruto69) |
| 12:32:40 | × | lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 12:38:07 | × | hpc quits (~juzz@ip98-169-35-163.dc.dc.cox.net) (Ping timeout: 264 seconds) |
| 12:42:47 | → | billchenchina- joins (~billchenc@2a0c:b641:7a2:230::10) |
| 12:45:27 | × | billchenchina- quits (~billchenc@2a0c:b641:7a2:230::10) (Remote host closed the connection) |
| 12:45:42 | → | billchenchina- joins (~billchenc@2a0d:2580:ff0c:1:e3c9:c52b:a429:5bfe) |
| 12:46:41 | → | stuu22 joins (~stuuu@2a01:c22:8cfe:e300:a9aa:ead8:c4c6:1a2f) |
| 12:50:10 | <stuu22> | hi, i have the ominous error ld.lld undefined symbol when trying to compile with cabal on windows (i know, but it has to..). i tried ghc 9.6.2, 9.4.7 and 9.8.1. it works on mac and linux tho. anybody knows about this? the web does not give too much info about this |
| 12:52:26 | <stuu22> | happens as soon as i try to use aeson in the code. on mac it helped to update to ghc 9.6.2. looks like a linking clang error, but i am not really firm with C/gcc and/or whatever. |
| 12:53:17 | → | Inst joins (~Inst@120.244.192.250) |
| 12:53:39 | → | fendor_ joins (~fendor@2a02:8388:1640:be00:dc89:8d8:5d44:854b) |
| 12:54:13 | × | fendor quits (~fendor@2a02:8388:1640:be00:dc89:8d8:5d44:854b) (Ping timeout: 260 seconds) |
| 12:56:39 | → | dhruvasagar joins (~dhruvasag@37.19.205.196) |
| 12:59:06 | <danse-nr3> | stuu22, i am using WSL on windows. It sucks but i would not change it for "no linux at all" |
| 12:59:38 | <danse-nr3> | i think the linker is missing? So some dependency that is not tracked by haskell. Did you install with ghcup? |
| 13:00:36 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 13:00:50 | <[exa]> | stuu22: which symbol is undefined? (maybe pastebin the whole log) |
| 13:00:59 | <mauke> | if you're getting an "undefined symbol" error from the linker, then the linker is not missing |
| 13:01:02 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:7058:6d5c:2ab:360f) |
| 13:03:16 | × | stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 256 seconds) |
| 13:03:27 | <danse-nr3> | true sorry |
| 13:03:45 | → | stiell_ joins (~stiell@gateway/tor-sasl/stiell) |
| 13:05:41 | <danse-nr3> | start of the sprint = skimming through stuff faster! :P |
| 13:08:37 | → | waleee joins (~waleee@2001:9b0:21c:e600:f2f3:f744:435d:137c) |
| 13:10:26 | × | sm quits (~sm@plaintextaccounting/sm) (Quit: sm) |
| 13:10:58 | <stuu22> | yes, i installed with ghcup. i like the WSL idea (which i use most of the time on my personal machine), but this one has to run native. |
| 13:11:01 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:7058:6d5c:2ab:360f) (Ping timeout: 260 seconds) |
| 13:11:02 | → | sm joins (~sm@plaintextaccounting/sm) |
| 13:11:15 | × | stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
| 13:11:19 | <stuu22> | here is the full log: https://privatebin.net/?1d95cc51613ef84e#Fj4Rpie9nKfZuLkxAk9bQChSZZftiiz9uj4jEM9Fiyor |
| 13:11:57 | → | stiell_ joins (~stiell@gateway/tor-sasl/stiell) |
| 13:13:44 | × | waleee quits (~waleee@2001:9b0:21c:e600:f2f3:f744:435d:137c) (Ping timeout: 258 seconds) |
| 13:18:39 | <lockywolf> | Is there a way to request an improvement to hackage? |
| 13:19:27 | <lockywolf> | I want to have a link like https://hackage.haskell.org/package/semigroupoids-6.0.0.1/revision/semigroupoids-6.0.0.1-1.cabal |
| 13:20:17 | <lockywolf> | instead of https://hackage.haskell.org/package/semigroupoids-6.0.0.1/revision/1.cabal |
| 13:22:27 | → | nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net) |
| 13:25:48 | × | stuu22 quits (~stuuu@2a01:c22:8cfe:e300:a9aa:ead8:c4c6:1a2f) (Ping timeout: 240 seconds) |
| 13:26:15 | → | stuu22 joins (~stuuu@2a01:c22:8cfe:e300:1d0c:2eb2:7792:5e47) |
| 13:27:17 | → | vglfr joins (~vglfr@88.155.140.136) |
| 13:27:29 | × | nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds) |
| 13:28:12 | × | koz quits (~koz@121.99.240.58) (Ping timeout: 248 seconds) |
| 13:30:05 | × | danse-nr3 quits (~francesco@151.35.150.119) (Remote host closed the connection) |
| 13:30:29 | → | danse-nr3 joins (~francesco@151.35.150.119) |
| 13:30:45 | → | koz joins (~koz@121.99.240.58) |
| 13:32:12 | × | arahael quits (~arahael@119-18-2-212.771202.syd.nbn.aussiebb.net) (Ping timeout: 240 seconds) |
| 13:32:51 | ChanServ | sets mode +o litharge |
| 13:32:52 | litharge | sets mode -bo *!*@189.172.34.154 litharge |
| 13:35:18 | → | waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) |
| 13:35:57 | × | sm quits (~sm@plaintextaccounting/sm) (Quit: sm) |
| 13:40:42 | × | vglfr quits (~vglfr@88.155.140.136) (Read error: Connection reset by peer) |
| 13:43:30 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 13:45:33 | × | koz quits (~koz@121.99.240.58) (Ping timeout: 258 seconds) |
| 13:46:34 | × | accord quits (uid568320@id-568320.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
| 13:49:31 | × | stuu22 quits (~stuuu@2a01:c22:8cfe:e300:1d0c:2eb2:7792:5e47) (Ping timeout: 264 seconds) |
| 13:50:25 | → | koz joins (~koz@121.99.240.58) |
| 13:50:32 | × | mcfrdy quits (~mcfrdy@user/mcfrdy) (Quit: quit) |
| 13:50:52 | → | mcfrdy joins (~mcfrdy@user/mcfrdy) |
| 13:51:55 | × | waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 264 seconds) |
| 13:53:33 | × | qqq quits (~qqq@92.43.167.61) (Remote host closed the connection) |
| 13:53:53 | → | qqq joins (~qqq@92.43.167.61) |
| 13:57:43 | × | Square3 quits (~Square4@user/square) (Remote host closed the connection) |
| 13:57:44 | <Unicorn_Princess> | how is cabal repl --repl-options supposed to be used? --ghc-options '-ghci-script "/path/to/script.ghci"' works, but the same with repl-options instead of ghc-options doesn't (no error, just doesn't load the script) |
| 13:58:13 | → | ddb joins (ddb@tilde.club) |
| 13:58:23 | → | Square3 joins (~Square4@user/square) |
| 13:59:18 | <Unicorn_Princess> | i could be doing path quoting wrong - i'm pretty bad at it |
| 14:00:14 | × | CO2 quits (CO2@gateway/vpn/protonvpn/co2) (Quit: WeeChat 4.1.0) |
| 14:05:43 | × | lambdap2371 quits (~lambdap@static.167.190.119.168.clients.your-server.de) (Quit: Ping timeout (120 seconds)) |
| 14:06:04 | → | lambdap2371 joins (~lambdap@static.167.190.119.168.clients.your-server.de) |
| 14:12:58 | × | califax quits (~califax@user/califx) (Ping timeout: 256 seconds) |
| 14:13:38 | → | califax joins (~califax@user/califx) |
| 14:16:35 | → | sm joins (~sm@plaintextaccounting/sm) |
| 14:21:34 | <danse-nr3> | not familiar with those sorry |
| 14:24:23 | → | waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) |
| 14:24:53 | <Inst> | in record syntax, I can't apply a function to specify the source, right? |
| 14:25:21 | → | CO2 joins (CO2@gateway/vpn/protonvpn/co2) |
| 14:27:45 | <Unicorn_Princess> | i don't understand - elaborate |
| 14:27:56 | × | nyc quits (~nyc@user/nyc) (Ping timeout: 248 seconds) |
| 14:28:43 | <lortabac> | Inst: what is the source? |
| 14:29:13 | <Inst> | say, data Foo = MkFoo {hello :: Int, goodbye :: Int} |
| 14:29:24 | <Inst> | u :: Foo |
| 14:29:38 | <Inst> | synonynm = hello |
| 14:29:50 | <geekosaur> | lockywolf, probably file an issue against hackage-server, it's on cabal and on github |
| 14:29:56 | <Inst> | synonym = hello |
| 14:30:02 | <geekosaur> | Inst, no |
| 14:30:04 | <Inst> | u {hello = 3} |
| 14:30:06 | <Inst> | derp |
| 14:30:07 | <Inst> | erm |
| 14:30:13 | <Inst> | u {synonym = 3} |
| 14:31:06 | <geekosaur> | field selectors can't be used that way. # syntax or RecordDotSyntax can, by defining the appropriate constraint |
| 14:31:17 | → | sm_ joins (~sm@plaintextaccounting/sm) |
| 14:31:38 | <Inst> | # syntax? ?:( |
| 14:31:50 | × | sm quits (~sm@plaintextaccounting/sm) (Ping timeout: 246 seconds) |
| 14:31:51 | <geekosaur> | foo #"xxx" or foo #xxx |
| 14:32:02 | <Inst> | wait, when was this added? |
| 14:32:26 | → | nyc joins (~nyc@2603-7000-a106-2fb5-0000-0000-0000-1f21.res6.spectrum.com) |
| 14:32:44 | <dminuoso> | Inst: Do you mean you want to dynamically resolve the record accessor? |
| 14:32:50 | <Inst> | yeah |
| 14:33:04 | <geekosaur> | it's been around a while but I don';t recall when it was added |
| 14:33:05 | <dminuoso> | TemplateHaskell, or `lens/optics` are your friends then. |
| 14:33:23 | <dminuoso> | fsvo "friends" |
| 14:33:52 | <Inst> | "makeLenses" ugh |
| 14:34:18 | <dminuoso> | Inst: You can also just write out a tag based writer `writeProperty :: FooTag -> Foo -> Int -> Foo` with `data FooTag = TagHello | TagGoodbye` |
| 14:34:27 | <dminuoso> | Well, you can also write out the lenses manually if you like |
| 14:34:48 | → | vglfr joins (~vglfr@88.155.140.136) |
| 14:35:09 | <dminuoso> | `lens/optics` is the far more elaborate and generalized approach to aboves `writeProperty` |
| 14:36:56 | <Inst> | i guess i'll miss this silliness |
| 14:37:09 | <Inst> | remember why ; was put into C syntax? |
| 14:37:39 | <geekosaur> | https://downloads.haskell.org/ghc/9.8.1/docs/users_guide/exts/hasfield.html#virtual-record-fields |
| 14:38:14 | <dminuoso> | Inst: B had it, ALGOL had it, PL/I had it. |
| 14:38:14 | <geekosaur> | seems to be the only place where # syntaxc is mentioned any more, they're trying really hard to push OverloadedRecordDot instead |
| 14:38:24 | <dminuoso> | So the semicolon predates C. |
| 14:38:49 | <Inst> | iirc the point was to avoid copy errors during network transmission in, what, I forget what came even before 14.4kbps modems? |
| 14:39:11 | <geekosaur> | 110 baud modems with BAUDOT, if you go back far enough |
| 14:39:30 | <dminuoso> | Im going out on a limb to say that ALGOL 60 is probably the earliest widely adopted language that used the semicolon as statement separation. |
| 14:39:31 | <geekosaur> | but the avoiding copy errors was done with parity bits, not extra syntax |
| 14:39:59 | <geekosaur> | sorry, there were 75 baud modems early on too |
| 14:40:08 | <dminuoso> | Ah, or whatever ALGOL came before that. |
| 14:40:37 | <geekosaur> | there wasn't an earlier one? |
| 14:40:57 | <geekosaur> | it's distinguished from ALGOL 68 |
| 14:41:16 | <dminuoso> | There was ALGOL 58 as well. |
| 14:41:25 | <geekosaur> | oh |
| 14:42:30 | <dminuoso> | Found one earlier than that. |
| 14:42:30 | × | vglfr quits (~vglfr@88.155.140.136) (Read error: Connection reset by peer) |
| 14:42:32 | <dminuoso> | https://en.wikipedia.org/wiki/FLOW-MATIC |
| 14:42:54 | <dminuoso> | Though Im fairly certain whatever language this was burrowed from was forgotten in time. |
| 14:43:06 | <Unicorn_Princess> | like tears |
| 14:43:09 | <Unicorn_Princess> | in |
| 14:43:11 | <Unicorn_Princess> | rain |
| 14:43:14 | <Inst> | i mean the code reduplication to an extent is relaxing :( |
| 14:50:46 | → | vglfr joins (~vglfr@88.155.140.136) |
| 14:57:42 | × | aljazmc quits (~aljazmc@user/aljazmc) (Quit: Leaving) |
| 15:08:33 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:1f7:634d:7013:a344) (Quit: WeeChat 2.8) |
| 15:10:22 | → | Lycurgus joins (~georg@user/Lycurgus) |
| 15:14:41 | <EvanR> | "repeat your code" not the kind of unpythonic style I was thinking of xD |
| 15:16:12 | <Inst> | i'm just happy it works, i'm annoyed that even with a lot of time, i'm only dumping 200 lines of trivial (and probably badly written) code per day |
| 15:19:13 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:7058:6d5c:2ab:360f) |
| 15:19:47 | → | Inst_ joins (~Inst@120.244.192.250) |
| 15:20:07 | × | danse-nr3 quits (~francesco@151.35.150.119) (Ping timeout: 255 seconds) |
| 15:20:14 | → | ski joins (~ski@88.131.7.247) |
| 15:21:50 | → | dhruvasagar1 joins (~dhruvasag@49.207.194.211) |
| 15:22:18 | <EvanR> | lens gets all the attention now, but at one point there was this https://github.com/haskellcats/semantic-editor-combinators |
| 15:22:20 | × | Inst quits (~Inst@120.244.192.250) (Ping timeout: 248 seconds) |
| 15:22:21 | × | dhruvasagar1 quits (~dhruvasag@49.207.194.211) (Client Quit) |
| 15:22:33 | <EvanR> | that was for Inst |
| 15:22:39 | <EvanR> | R.I.P. |
| 15:22:45 | <yushyin> | :D |
| 15:23:08 | <geekosaur> | fclabels predated them all, I think? |
| 15:23:36 | <geekosaur> | although they quickly migrated to van Laarhoven after lens came out |
| 15:23:56 | × | dhruvasagar quits (~dhruvasag@37.19.205.196) (Ping timeout: 248 seconds) |
| 15:25:30 | → | sabino joins (~sabino@user/sabino) |
| 15:26:52 | × | acidjnk quits (~acidjnk@p200300d6e72b930390f6e959e0858704.dip0.t-ipconnect.de) (Read error: Connection reset by peer) |
| 15:28:19 | → | econo_ joins (uid147250@id-147250.tinside.irccloud.com) |
| 15:28:23 | <Inst_> | is it possible to test games? |
| 15:28:30 | <exarkun> | of course |
| 15:28:31 | <Inst_> | i mean, of course it is, but it's significantly more difficult |
| 15:28:39 | <Inst_> | to test games, since there's so many valid and obtainable states, no? |
| 15:28:40 | <exarkun> | more difficult than what |
| 15:28:51 | <Inst_> | other applications |
| 15:28:58 | <Inst_> | i'm testing a tower of hanoi i built |
| 15:29:15 | <exarkun> | what's hard about testing that |
| 15:29:28 | <Inst_> | I'm trying to test the exit screen when I set N = 9 as default. |
| 15:29:33 | → | acidjnk joins (~acidjnk@p200300d6e72b93039c291881441b2222.dip0.t-ipconnect.de) |
| 15:30:18 | × | Lycurgus quits (~georg@user/Lycurgus) (Quit: leaving) |
| 15:30:19 | <haskellbridge> | <sm> sometimes you need to build in testability features. Eg a mode where it logs each screen to a readable log file, which you can compare with past runs |
| 15:31:01 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:7058:6d5c:2ab:360f) (Remote host closed the connection) |
| 15:31:04 | <haskellbridge> | <sm> there's also tools like `expect` for automating interactive terminal I/O (usually not worth the trouble I feel) |
| 15:31:05 | <Inst_> | I'm more asking about the state of the art in formally verifying games |
| 15:31:10 | <EvanR> | many games have a debug tool, debug room, cheats, and if you defined a "save" properly you can easily restore the circumstances you're trying to test |
| 15:31:18 | → | eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) |
| 15:31:21 | <Inst_> | because when you're looking at a complex state machine like this, ummm |
| 15:31:24 | <exarkun> | "games" as a category are barely more specified than "programs", or maybe not any more specified |
| 15:31:30 | <exarkun> | so the question is as hard as "how do you test programs" |
| 15:31:35 | <EvanR> | and of course the more pieces of your game that are purely functional, the easier is it to test that |
| 15:31:50 | haskellbridge | <sm> ponders formally verify the exit screen... |
| 15:31:53 | <EvanR> | putting it all in IO will exclude that |
| 15:33:09 | <haskellbridge> | <sm> quickcheck & co might help |
| 15:33:32 | <EvanR> | if your game involves floating point maths and physical models, you might need to use more brain to "verify" whatever it's supposed to do. But many games don't attempt it, leading to glitches |
| 15:34:19 | <Inst_> | that's an interesting point, i.e, i probably should make this hanoi more purely functional, use a smaller loop and pass execution purely, instead of closure abuse |
| 15:34:34 | <EvanR> | yes simple games can usually be functionalized |
| 15:34:39 | <Inst_> | i'm not sure if you'd call this bad advice, but I told someone who, for some bizarre reason, liked Haskell's laziness but not its purity |
| 15:34:48 | <Inst_> | just to abuse closures |
| 15:35:04 | × | waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Quit: WeeChat 4.0.2) |
| 15:35:15 | <Inst_> | everything in IO, only FP is in where clauses |
| 15:36:05 | <EvanR> | that person is free to insert unsafePerformIOs everywhere and see how they like it |
| 15:36:18 | → | danse-nr3 joins (~francesco@151.35.150.119) |
| 15:36:24 | <Inst_> | i think they're trolling because it's such a bizarre response |
| 15:37:21 | → | stuu22 joins (~stuuu@2a01:c22:8cfe:e300:1d0c:2eb2:7792:5e47) |
| 15:38:03 | → | waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) |
| 15:38:05 | <Inst_> | i think in the future, for reasonably complex games, it'd be better to feature a more complex record type |
| 15:38:44 | <Inst_> | IO layer only gets data, outputs data, then passes state enclosing data to a pure function instead |
| 15:38:49 | <Inst_> | this is just way too tightly coupled |
| 15:38:54 | <Inst_> | i mean, the way i'm doing it now |
| 15:39:58 | <EvanR> | :t interact |
| 15:39:59 | <lambdabot> | (String -> String) -> IO () |
| 15:40:08 | <EvanR> | ok that one doesn't allow state. |
| 15:40:42 | <EvanR> | (String -> s -> (String, s)) -> String -> s -> IO () |
| 15:40:55 | <EvanR> | now zork can be purely functional |
| 15:41:11 | <EvanR> | that's the only IO action |
| 15:41:21 | stuu22 | is now known as ash3en |
| 15:42:12 | <Inst_> | brb, smoke, but would be interested in the record signature |
| 15:44:43 | × | machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 264 seconds) |
| 15:46:26 | × | hrberg quits (~quassel@171.79-160-161.customer.lyse.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
| 15:46:46 | → | hrberg joins (~quassel@171.79-160-161.customer.lyse.net) |
| 15:47:42 | → | danse-nr3_ joins (~francesco@151.35.202.181) |
| 15:49:32 | × | danse-nr3 quits (~francesco@151.35.150.119) (Read error: Connection reset by peer) |
| 15:49:41 | × | Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 255 seconds) |
| 15:51:04 | <EvanR> | play :: Display -> Color -> Int -> s -> (s -> Picture) -> (Event -> s -> s) -> (Float -> s -> s) -> IO () -- now you have a purely graphical game (with no sound), this is from the gloss package |
| 15:51:16 | <EvanR> | purely functional graphical game |
| 15:51:22 | → | Maxdamantus joins (~Maxdamant@user/maxdamantus) |
| 15:52:03 | × | ubert quits (~Thunderbi@178.165.198.50.wireless.dyn.drei.com) (Ping timeout: 258 seconds) |
| 15:55:22 | → | tzh joins (~tzh@c-71-193-181-0.hsd1.or.comcast.net) |
| 15:55:56 | <ski> | EvanR : is that supposed to be something `unfoldr'y ? |
| 15:56:12 | <ski> | (your penultimate signature) |
| 15:57:45 | <ski> | let loop state0 input = ..(loop state remainingInput).. in interact (loop initState) -- this does state, btw |
| 16:01:12 | <ski> | also, you could refactor `play' into |
| 16:01:17 | × | Inst_ quits (~Inst@120.244.192.250) (Ping timeout: 255 seconds) |
| 16:01:19 | <ski> | play :: Display -> Color -> Int -> Stuff -> IO () |
| 16:01:20 | <EvanR> | penultimate f msg state0 = do { putStrLn msg; input <- getLine; (response, state1) <- f input state0; penultimate f response state1 } |
| 16:01:21 | <ski> | data Stuff = MkStuff Picture (Event -> Foo) (Float -> Foo) |
| 16:01:40 | <ski> | (er, s/Foo/Stuff/) |
| 16:01:48 | × | Buliarous quits (~gypsydang@46.232.210.139) (Ping timeout: 248 seconds) |
| 16:02:35 | × | CiaoSen quits (~Jura@2a05:5800:2bd:d400:664b:f0ff:fe37:9ef) (Ping timeout: 240 seconds) |
| 16:03:39 | <EvanR> | @src interact |
| 16:03:40 | <lambdabot> | interact f = do s <- getContents; putStr (f s) |
| 16:05:46 | <EvanR> | I see, lazy list I/O |
| 16:07:27 | <ski> | penultimate f msg = interact . loop where loop state0 instream = msg ++ '\n' : case break ('\n' ==) instream of (input,rest) -> let (response,state1) = f input state0 in loop response state1 |
| 16:08:03 | <ski> | (changing `f' back to non-`IO', as in your original signature) |
| 16:09:42 | <Unicorn_Princess> | (correct me if i'm wrong) library source code goes in myproject/src/, executable source goes in app/MyExe.hs, non-code data files a project needs goes in data/ - but where do random development convenience/install scripts go? dev/? scripts/? tools/? |
| 16:10:16 | <Unicorn_Princess> | (i know it's all subjective, asking for how it's usually done. guidelines) |
| 16:10:46 | → | aljazmc joins (~aljazmc@user/aljazmc) |
| 16:10:48 | <ski> | EvanR : anyway, i just wanted to offer a riposte to "ok that one doesn't allow state." |
| 16:11:13 | <EvanR> | yeah I got that. Now I'm internalizing the consequences for the style you suggested xD |
| 16:11:13 | × | waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 258 seconds) |
| 16:11:31 | ski | smiles |
| 16:13:10 | <ski> | (should i expand on my refactoring of `play', or is it obvious how i arrived at it ?) |
| 16:14:01 | <EvanR> | if you implement play with just lambda calculus I'll be impressed |
| 16:14:28 | <ski> | well, `IO's in the type, presumably it's going to use some `IO' primitives |
| 16:14:30 | <int-e> | . o O ( main :: [Reply] -> [Request] ) |
| 16:15:03 | ski | offers a dialogue as final answer |
| 16:15:54 | <EvanR> | [Reply] -> [Request] makes my brain explode |
| 16:16:06 | <yin> | is there a cabal command to add a package as a dependency automatically with version constraints? |
| 16:16:13 | <ski> | it's related to TyingTheKnot |
| 16:16:46 | <int-e> | EvanR: I mean it's really the same idea as `interact` except there you have Reply = Request = Char so it's easier to miss the flow when glancing at the type. |
| 16:16:48 | × | danse-nr3_ quits (~francesco@151.35.202.181) (Remote host closed the connection) |
| 16:17:09 | × | shapr quits (~user@2600:1700:c640:3100:70ed:821a:ab80:9f0d) (Remote host closed the connection) |
| 16:17:10 | → | _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) |
| 16:17:11 | → | danse-nr3_ joins (~francesco@151.35.202.181) |
| 16:17:15 | <Unicorn_Princess> | yin, don't know, but cabal can automatically give you the version bounds: https://cabal.readthedocs.io/en/3.4/cabal-package.html#generating-dependency-version-bounds |
| 16:17:22 | → | shapr joins (~user@2600:1700:c640:3100:5fc7:fa6:a4a8:54f1) |
| 16:17:26 | <ski> | @wiki Tying the Knot |
| 16:17:26 | <lambdabot> | https://wiki.haskell.org/Tying_the_Knot |
| 16:17:30 | <EvanR> | interact seems to have a more causal behavior |
| 16:18:10 | <ski> | EvanR : `type Dialogue = [Reply] -> [Request]' is how Haskell originally did I/O |
| 16:18:16 | <EvanR> | yeah |
| 16:18:33 | <EvanR> | 1 reply per request |
| 16:18:44 | → | Inst_ joins (~Inst@120.244.192.250) |
| 16:18:45 | <ski> | that tends to make things simpler, yea |
| 16:19:23 | <yin> | Unicorn_Princess: ty. it seems like a very small step from this to having it update the cabal file automatically |
| 16:20:07 | <ski> | the original design for pre-Mercury (Ptah), used a similar idea : `main([Response|Reponses],[Request|Requests]) :- ...', where you'd instantiate `Request' to the action you wanted to perform, and the run-time system would then perform the I/O and instantiation `Response' back with the result |
| 16:20:32 | <monochrom> | I don't know what "auto add dependency" means. How does it know that I want random-fu? |
| 16:20:34 | <ski> | Zoltan Somogyi has some paper which talks about this .. i forgot which exact one |
| 16:20:56 | <yin> | monochrom: cabal add random-fu |
| 16:21:12 | <yin> | would be a command |
| 16:21:37 | <monochrom> | OK I think people on the haskell discourse are still talking about that. |
| 16:21:55 | <EvanR> | is that a command that basically edits your cabal file |
| 16:22:03 | <monochrom> | I think I have never wanted it. |
| 16:22:10 | <yin> | EvanR: yes |
| 16:22:14 | <EvanR> | these kind of commands creep me out |
| 16:22:25 | <EvanR> | I would run the command then check the file to make sure it worked |
| 16:22:33 | × | qqq quits (~qqq@92.43.167.61) (Remote host closed the connection) |
| 16:22:52 | <EvanR> | or see what it did |
| 16:22:57 | <EvanR> | so I'm in the file already |
| 16:23:14 | <monochrom> | At the time I am want to add random-fu, I am not at a shell prompt, I am already at an editor. It is actually more trivial to go change the *.cabal file directly. |
| 16:24:08 | <monochrom> | Switching context to a terminal just to use a "convenience" command is actually a path of higher resistance. |
| 16:24:40 | × | sord937 quits (~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection) |
| 16:25:01 | <monochrom> | Indeed already the newest version of "cabal init" adds things I need to delete. |
| 16:25:04 | <Inst_> | EvanR: or you could go all the way to ponies, which is intended to provide a GUI for editing cabal files :) |
| 16:25:14 | → | sord937 joins (~sord937@gateway/tor-sasl/sord937) |
| 16:26:14 | <EvanR> | Inst_, did you get any inspiration from these canned IO functions which takes non-IO "callbacks" |
| 16:26:23 | <EvanR> | like interact or play |
| 16:26:32 | <Inst_> | wait, play is in Gloss or System.IO? |
| 16:26:44 | <EvanR> | gloss, it's more involved because graphics and timing |
| 16:27:04 | <Inst_> | https://hoogle.haskell.org/?hoogle=play |
| 16:27:17 | ← | L29Ah parts (~L29Ah@wikipedia/L29Ah) () |
| 16:27:21 | <Inst_> | see, that's more my complaint about Haskell libs being confusing :( |
| 16:27:39 | <monochrom> | Would "cabal add random-fu" have a million options and knobs that let me customize how it's indented? >:) |
| 16:27:40 | <EvanR> | um gloss is the first result on hoogle for what it's worth |
| 16:27:46 | <Inst_> | interact I get, your (String -> s -> (String, s)) -> (String -> s -> IO () ) I get |
| 16:27:48 | <EvanR> | what are you confused about |
| 16:28:10 | <Inst_> | the type of play, ummm, how am I supposed to use it? :( |
| 16:28:13 | <EvanR> | what I typed was stripped of its documentation https://hackage.haskell.org/package/gloss-1.13.2.2/docs/Graphics-Gloss.html#v:play |
| 16:28:16 | <Inst_> | I mean I can look it up, it just takes time to get |
| 16:28:18 | <int-e> | I don't know, aren't all libraries confusing, regardless of the language? |
| 16:28:26 | <EvanR> | you can also click the link that hoogle gives you |
| 16:28:42 | <Inst_> | yeah i know |
| 16:28:53 | <int-e> | There's also https://hackage.haskell.org/package/gloss-1.13.2.2/docs/doc-index-P.html |
| 16:28:57 | <monochrom> | Um, libraries that I wrote are not confusing. :) |
| 16:29:01 | <Inst_> | If I can successfully work on Cabal (and have a good shot at doing the exact parser) |
| 16:29:11 | <Inst_> | I'd probably be qualified to work Haddock |
| 16:29:14 | <EvanR> | libraries I recommend are not confusing, tautology? xD |
| 16:29:19 | <Inst_> | then I'd try to figure out how to improve Haddock |
| 16:29:27 | <int-e> | monochrom: Even those that you wrote 10 years ago? |
| 16:29:41 | <sclv> | a good use case for add-like functionality would be an IDE that knew to add containers if I imported Data.Map for example |
| 16:30:24 | <Inst_> | groan, I can't even get ponies to the maturity level where it gives GUI hud for all of the cabal commands |
| 16:30:42 | <int-e> | monochrom: (Assuming you've stopped using them of course. I'm trying to make a point about familiarity here.) |
| 16:30:56 | <Inst_> | wait, that's IDE... |
| 16:31:37 | <monochrom> | I think since 10-15 years ago I developed the habit of writing good docs. |
| 16:32:32 | <ski> | monochrom : heh, was about to say that libraries that oneself has written are (sometimes) not confusing ;) |
| 16:32:47 | <Rembane> | monochrom: How do you write good docs? |
| 16:32:57 | <Rembane> | monochrom: Or, how does one write good docs? <- in case of math |
| 16:33:18 | <monochrom> | I had developed good teaching experience, so I write like I'm teaching it. |
| 16:34:23 | <monochrom> | And in the special case of teaching my future forgetful self, I kind of already know what I will easily figure out and what I will find non-obvious. |
| 16:34:44 | × | shapr quits (~user@2600:1700:c640:3100:5fc7:fa6:a4a8:54f1) (Read error: Connection reset by peer) |
| 16:35:13 | <Rembane> | monochrom: That sounds like a very good way to write docs |
| 16:35:33 | <Rembane> | monochrom: The catch is that teaching experience is required to copy your doc writing style. |
| 16:36:13 | <Rembane> | I was hoping for shortcuts. :) |
| 16:37:03 | <monochrom> | For example, in my own study notes on measure theory. let u be the unit Dirac delta measure, i.e., u(x)(A) = 1 if x in A, 0 o/w. There is a cute theorem "for a measurable predicate P, P holds almost everywhere iff P holds at x" |
| 16:37:35 | <monochrom> | Now, I know that I am proud of an insider joke I made about "but it has measure zero so it doesn't matter". |
| 16:37:41 | × | oo_miguel quits (~Thunderbi@78-11-179-96.static.ip.netia.com.pl) (Quit: oo_miguel) |
| 16:37:53 | <monochrom> | So in my notes, my proof just says that. :) |
| 16:37:59 | <Rembane> | Good stuff! :D |
| 16:38:28 | <EvanR> | "NB: you are proud of an insider joke you made about 'but it has measure zero so it doesn't matter'" |
| 16:38:39 | <monochrom> | Here is the insider joke. |
| 16:39:08 | <monochrom> | My real analysis prof announced "midterm test: next Wednesday 12am". |
| 16:39:32 | <int-e> | midnight euphoria |
| 16:39:38 | <monochrom> | So we were all like "don't you mean 12pm? noon?". He said oh yeah. |
| 16:40:00 | <monochrom> | Then he explained why. In his opinion, noon should be called 12am, midnight should be called 12pm. |
| 16:40:27 | <int-e> | . o O ( 12m ) |
| 16:40:34 | ski | always confuses those |
| 16:40:38 | <int-e> | since it's nether before nor after |
| 16:41:00 | <int-e> | But then I'm not sure what to use for midnight :-P |
| 16:41:07 | <monochrom> | Now, this being in the context of a measure theory course, (and I also thought about it previously), one must not pass up the pun opportunity to say, "but it ({noon, midnight}) is a set of measure zero, so it doesn't matter". :) |
| 16:41:18 | <monochrom> | The whole class ROFL. |
| 16:41:41 | ski | grinns |
| 16:41:49 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 16:42:10 | <int-e> | y'all should switch to a 24 hour clock |
| 16:42:32 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 16:43:07 | <Inst_> | is there a possible pun between Hanuman and Haskell? |
| 16:43:36 | <Inst_> | An acquaintance agreed to start a github org for me to dump stuff like porting The Big Book of Small Python Projects to Haskell |
| 16:44:37 | → | rgw joins (~R@2605:a601:a0df:5600:e03b:6bd1:41db:b9ff) |
| 16:46:44 | × | danse-nr3_ quits (~francesco@151.35.202.181) (Ping timeout: 245 seconds) |
| 16:48:36 | × | random-jellyfish quits (~tiber@user/random-jellyfish) (Ping timeout: 260 seconds) |
| 16:50:47 | × | dcoutts_ quits (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 246 seconds) |
| 16:53:37 | → | kwii30 joins (~kwii@193.19.203.71) |
| 16:54:59 | × | kwii30 quits (~kwii@193.19.203.71) (Client Quit) |
| 16:56:17 | → | danse-nr3_ joins (~francesco@151.35.202.181) |
| 16:56:21 | <dminuoso> | "Scheduled delivery 11:00-12:00pm" |
| 16:56:38 | <dminuoso> | Resolve into a timerange of UTC timepoints. How's that for a riddle? |
| 16:57:16 | → | danse-nr3 joins (~francesco@151.79.204.38) |
| 16:59:24 | <EvanR> | use swatch internet time dotbeats |
| 16:59:39 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 17:01:26 | × | danse-nr3_ quits (~francesco@151.35.202.181) (Ping timeout: 258 seconds) |
| 17:03:24 | × | Square3 quits (~Square4@user/square) (Ping timeout: 245 seconds) |
| 17:05:54 | × | sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937) |
| 17:14:55 | × | tv quits (~tv@user/tv) (Read error: Connection reset by peer) |
| 17:15:29 | → | random-jellyfish joins (~tiber@2a02:2f04:11e:c600:3081:413f:53c6:da60) |
| 17:15:29 | × | random-jellyfish quits (~tiber@2a02:2f04:11e:c600:3081:413f:53c6:da60) (Changing host) |
| 17:15:29 | → | random-jellyfish joins (~tiber@user/random-jellyfish) |
| 17:16:56 | × | ridcully quits (~ridcully@p57b5294c.dip0.t-ipconnect.de) (Quit: WeeChat 4.0.5) |
| 17:17:14 | → | ridcully joins (~ridcully@p57b5294c.dip0.t-ipconnect.de) |
| 17:23:58 | → | nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net) |
| 17:28:35 | × | nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
| 17:29:23 | → | akyv13 joins (~akyv13@2409:4060:39a:b61c:9c09:9c6f:b032:9005) |
| 17:31:08 | × | rosco quits (~rosco@yp-150-69.tm.net.my) (Quit: Lost terminal) |
| 17:31:42 | <yin> | why am i getting ` Module ‘Network.WebSockets’ does not export ‘Connection’. `? |
| 17:31:55 | <yin> | when it clearly does? |
| 17:31:58 | → | tv joins (~tv@user/tv) |
| 17:32:29 | × | ash3en quits (~stuuu@2a01:c22:8cfe:e300:1d0c:2eb2:7792:5e47) (Ping timeout: 258 seconds) |
| 17:35:51 | × | random-jellyfish quits (~tiber@user/random-jellyfish) (Ping timeout: 260 seconds) |
| 17:36:17 | <int-e> | how did you import it? |
| 17:37:43 | <yin> | import Network.WebSockets |
| 17:38:00 | <yin> | import Network.WebSockets ( Connection ) -- this gives an error |
| 17:38:57 | <EvanR> | it actually doesn't export the constructors |
| 17:39:07 | <int-e> | It used to though. |
| 17:39:35 | <EvanR> | did it? |
| 17:39:49 | <EvanR> | import Network.WebSockets.Connection |
| 17:39:56 | <int-e> | 0.9.x did, I have not checked between 0.9 and 0.12. |
| 17:40:26 | <EvanR> | in 0.9.0.0 it didn't (from Network.WebSockets) |
| 17:40:56 | <int-e> | Oh. |
| 17:41:09 | <int-e> | You're right, I was looking at Network.WebSockets.Connection |
| 17:41:47 | <int-e> | (Which still exports the constructor. But that's not the issue here.) |
| 17:42:27 | <int-e> | Or maybe it is? That import shouldn't give an error... I imagine it's somewhere else in the code? |
| 17:43:08 | <yin> | something's funky |
| 17:43:23 | <yin> | Could not find module ‘Network.WebSockets.Connection’. |
| 17:43:59 | <int-e> | Okay, maybe you have to check which package you're getting Network.WebSockets from |
| 17:44:17 | <yin> | and i can't seem to get the correct version which should be 0.12 |
| 17:45:06 | <yin> | how do i check that? |
| 17:45:22 | <int-e> | It looks like ancient versions didn't have a Connection type. |
| 17:45:34 | × | sm_ quits (~sm@plaintextaccounting/sm) (Quit: sm_) |
| 17:46:37 | <int-e> | But I mean ancient... it was added in websockets-0.8.0.0 as far as I can see, which is from 2013 |
| 17:46:38 | → | dcoutts_ joins (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) |
| 17:47:00 | <int-e> | On October 22nd, so pretty much exactly 10 years old. |
| 17:48:51 | <int-e> | "how do I check that"... uh. I tend to check install plans (cabal install --dry-run). You could also add `--constraint 'websockets >= 0.12'` and see whether that fails and if so, how. |
| 17:52:21 | <yin> | this is my .freeze https://paste.jrvieira.com/1698256307711 |
| 17:54:18 | <int-e> | Well that lists websockets as 0.3.0.0, which is indeed way too old. |
| 17:54:30 | <int-e> | don't ask me why though |
| 17:54:31 | <yin> | https://paste.jrvieira.com/1698256455577 |
| 17:54:57 | <yin> | oh wait |
| 17:55:00 | <int-e> | rename the .freeze file and try again? |
| 17:55:04 | <yin> | yeah |
| 17:55:12 | <int-e> | (or remove it... since whatever is in there will never work anyway) |
| 17:56:24 | <yin> | https://paste.jrvieira.com/1698256568625 |
| 17:56:30 | <yin> | something to do with text i think |
| 17:57:39 | <yin> | nope |
| 17:57:46 | <int-e> | But ultimately it's base, so your ghc is too new. You can *try* `--allow-newer=base` |
| 17:58:56 | <yin> | ah |
| 17:59:28 | <yin> | ty |
| 17:59:52 | <yin> | i guess i should keep with ghcup's recommended versions |
| 18:01:56 | × | akyv13 quits (~akyv13@2409:4060:39a:b61c:9c09:9c6f:b032:9005) (Ping timeout: 272 seconds) |
| 18:03:17 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 18:06:18 | × | danse-nr3 quits (~francesco@151.79.204.38) (Ping timeout: 260 seconds) |
| 18:06:26 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 256 seconds) |
| 18:07:51 | → | ubert joins (~Thunderbi@178.165.198.50.wireless.dyn.drei.com) |
| 18:12:33 | <yin> | well that was a good half hour list |
| 18:12:35 | <yin> | *lost |
| 18:14:47 | → | simendsjo joins (~user@84.211.91.241) |
| 18:27:55 | × | dcoutts_ quits (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 264 seconds) |
| 18:32:24 | → | pavonia joins (~user@user/siracusa) |
| 18:33:15 | × | eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 18:36:16 | <Inst_> | what is wrong with forever? |
| 18:36:27 | <Inst_> | if I use it to infinite loop, but have button presses accessed by a different thread |
| 18:36:35 | <Inst_> | erm, forkIO |
| 18:36:39 | <int-e> | ?! |
| 18:36:39 | <lambdabot> | Maybe you meant: v @ ? . |
| 18:36:41 | <Inst_> | the exception calling doesn't kick in |
| 18:36:50 | <Inst_> | okay, my program goes |
| 18:37:02 | <Inst_> | thread <- forkIO . forever $ putStrLn "Hello" |
| 18:37:06 | <Inst_> | getChar |
| 18:37:10 | <Inst_> | killThread thread |
| 18:37:32 | <Inst_> | only way I get the expected behavior is to run on prog -threaded +RTS -N |
| 18:37:34 | <EvanR> | if an exception is not caught in a non-main thread, it just kills the thread |
| 18:37:56 | <EvanR> | unless you set something up to connect threads together, which async does |
| 18:38:49 | <Inst_> | iirc forkIO is considered smelly |
| 18:38:53 | <EvanR> | ... |
| 18:39:32 | <geekosaur> | you need -threaded or for the thread to allocate (or maybe -fno-omit-yields) for that to work with the non-threaded runtime |
| 18:39:33 | <EvanR> | any supporting arguments for that |
| 18:40:07 | <mauke> | I'd be surprised if putStrLn doesn't allocate |
| 18:40:30 | <EvanR> | putStrLn also interacts with the IO manager, so should cooperate |
| 18:40:36 | <Inst_> | i can get it working with ghci -threaded +RTS -N |
| 18:40:51 | <mauke> | do you need that +RTS option? |
| 18:41:20 | <geekosaur> | ghci is always -threaded |
| 18:41:32 | <Inst_> | hmmm, it's a stdin behavior i think |
| 18:41:58 | <mauke> | ... actually, what is the expected behavior and what do you see instead? |
| 18:42:17 | <Inst_> | if i set hSetBuffering stdin NoBuffering the detect will work |
| 18:42:56 | <Inst_> | no threaded necessary |
| 18:43:21 | <EvanR> | what are you even trying. |
| 18:43:28 | <John_Ivan_> | What does the "m" constructor in the monad >>= stand for? I know it's "Monad" but what exactly is it? "m a -> (a -> m b) -> m b" |
| 18:43:33 | <EvanR> | e.g. if you press backspace, you won't see a char with buffering |
| 18:43:38 | <geekosaur> | EvanR, see https://downloads.haskell.org/ghc/9.2.5/docs/html/libraries/base-4.16.4.0/Control-Concurrent.html#v:throwTo at "safe point" |
| 18:43:47 | <John_Ivan_> | farshot guess, is it "IO" ? |
| 18:44:03 | <geekosaur> | (`killThread` is `\tid -> throwTo tid ThreadKilled`) |
| 18:44:15 | <Inst_> | I'm trying to pimp this program right now |
| 18:44:17 | <Inst_> | https://inventwithpython.com/bigbookpython/project15.html |
| 18:44:21 | <geekosaur> | John_Ivan_, it's any monad |
| 18:44:30 | <geekosaur> | every monad has its own definition of (>>=) |
| 18:44:42 | <geekosaur> | @src Maybe (>>=) |
| 18:44:42 | <lambdabot> | (Just x) >>= k = k x |
| 18:44:42 | <lambdabot> | Nothing >>= _ = Nothing |
| 18:44:49 | <Inst_> | i'm trying to implement exit on any keyrpress behavior, whereas the py original requires ctrl c |
| 18:44:50 | <geekosaur> | @src IO (>>=) |
| 18:44:51 | <lambdabot> | m >>= k = bindIO m k |
| 18:44:55 | <John_Ivan_> | geekosaur, any monad being... any instance of class Monad? |
| 18:44:59 | <geekosaur> | yes |
| 18:45:02 | <John_Ivan_> | gotcha. |
| 18:45:04 | <John_Ivan_> | thanks |
| 18:45:30 | → | santiagopim joins (~user@90.167.66.131) |
| 18:45:42 | <Inst_> | the behaviors I'm trying to add is probably via ansi-terminal, i.e, build a buffer to display, then display the buffer between calls |
| 18:46:10 | <geekosaur> | inst_, if you want any keys to be passed back before a newline you must use hSetBuffering |
| 18:47:13 | × | santiagopim quits (~user@90.167.66.131) (Remote host closed the connection) |
| 18:48:02 | <Inst_> | yeah I switched to hSetBuffering stdin NoBuffering |
| 18:48:37 | <EvanR> | and then you still might not see anything if you press half of a unicode character? xD |
| 18:48:38 | → | waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) |
| 18:49:08 | × | ski quits (~ski@88.131.7.247) (Ping timeout: 255 seconds) |
| 18:49:10 | <EvanR> | ok that's probably getting too far into the weeds |
| 18:52:17 | → | euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) |
| 18:55:51 | <Inst_> | how would you press half of a unicode character? ?:( |
| 18:55:55 | <Inst_> | oh |
| 18:56:23 | <Inst_> | I think, maybe Japanese keyboards migth have this mode |
| 18:56:33 | <Inst_> | wherein they input Japanese directly via mode switch |
| 18:56:56 | <Inst_> | Chinese is IDE-based, iirc, there might be direct wubi inputs |
| 18:57:02 | → | Pickchea joins (~private@user/pickchea) |
| 18:57:08 | <Inst_> | not sure about Arabic keyboards |
| 18:58:08 | <Inst_> | arabic and hebrew keyboards exist, I'd think Indian keyboards would be more circumspect and just abuse the fact that English is a national language |
| 18:58:31 | → | danza_ joins (~francesco@151.35.202.181) |
| 18:59:26 | <EvanR> | ISCII |
| 18:59:52 | <Inst_> | devanagari keyboards exist, nad I assume for the wide variety of scripts |
| 19:00:02 | <Inst_> | end of the day, Haskell's direct console story is mediocre |
| 19:00:36 | <EvanR> | yeah haskell should come with powershell built-in |
| 19:00:45 | <Inst_> | well, it's okay, but the default show insstance sucks |
| 19:01:38 | <Inst_> | putStrLn "世界,你好!“ |
| 19:01:52 | <Inst_> | works, direct string literal ends up being gibberish (unicode points) |
| 19:02:28 | <Inst_> | print also returns unicode points |
| 19:02:39 | × | johnw quits (~johnw@69.62.242.138) (Quit: ZNC - http://znc.in) |
| 19:02:43 | <EvanR> | no this is gibberish: £ |
| 19:03:21 | <c_wraith> | print calls show. show encodes strings as very conservative ascii literals |
| 19:03:25 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 19:04:01 | <c_wraith> | importantly, as Haskell source literals. |
| 19:04:47 | <Inst_> | damnit, I'm guessing there's a long story as to why Vitaly Bragilevsky's unicode show doesn't work :( |
| 19:05:21 | <EvanR> | show is basically for debugging and not pretty printing |
| 19:05:29 | <Unicorn_Princess> | is it ok/appropriate to put my local noindex repository into ~/.cabal/packages/myrepo? |
| 19:05:49 | <Inst_> | now this is interesting! |
| 19:06:03 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:7473:6047:87f6:c0b2) |
| 19:06:34 | <Inst_> | if I build a data constructor in unicode, then derive show, it'll show respecting unicode |
| 19:06:44 | <Inst_> | string literal, fuggedabutit |
| 19:08:32 | <int-e> | > length "!" |
| 19:08:33 | <lambdabot> | 1 |
| 19:12:47 | × | billchenchina- quits (~billchenc@2a0d:2580:ff0c:1:e3c9:c52b:a429:5bfe) (Remote host closed the connection) |
| 19:13:01 | → | Square joins (~Square@user/square) |
| 19:13:03 | <Inst_> | is there an arbitrary symbol that is counted as uppercase for Haskell's purposes? |
| 19:13:10 | <EvanR> | A |
| 19:13:16 | <EvanR> | oh, symbol |
| 19:19:51 | <EvanR> | > find (\c -> isSymbol c && isUpper c) ['\0'..] |
| 19:19:53 | <lambdabot> | Nothing |
| 19:20:28 | <Unicorn_Princess> | but is '\0' really the first one? |
| 19:20:38 | <EvanR> | > toEnum 0 :: Char |
| 19:20:40 | <lambdabot> | '\NUL' |
| 19:20:58 | <Unicorn_Princess> | is there a more principled way to get every char? |
| 19:21:14 | × | danza_ quits (~francesco@151.35.202.181) (Remote host closed the connection) |
| 19:21:31 | <[exa]> | kinda wondering how to get more principled than ['\0'..] |
| 19:21:33 | <EvanR> | > [minBound .. maxBound] :: String |
| 19:21:35 | <lambdabot> | "\NUL\SOH\STX\ETX\EOT\ENQ\ACK\a\b\t\n\v\f\r\SO\SI\DLE\DC1\DC2\DC3\DC4\NAK\SY... |
| 19:21:36 | → | danza_ joins (~francesco@151.35.202.181) |
| 19:21:59 | <Unicorn_Princess> | beautiful |
| 19:22:04 | → | dcoutts_ joins (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) |
| 19:22:35 | <EvanR> | relying on the principles of the per who defines the Enum instance |
| 19:22:38 | <EvanR> | person |
| 19:22:57 | → | ash3en joins (~stuuu@2a01:c22:8cfe:e300:1d0c:2eb2:7792:5e47) |
| 19:23:00 | <EvanR> | and Bounded |
| 19:23:45 | → | falafel joins (~falafel@62.175.113.194.dyn.user.ono.com) |
| 19:23:49 | <ash3en> | me again.. sorry, but any chance someone dealt with ld.lld errors on windows? full log here: https://privatebin.net/?1d95cc51613ef84e#Fj4Rpie9nKfZuLkxAk9bQChSZZftiiz9uj4jEM9Fiyor |
| 19:23:58 | <EvanR> | is there a way principled or not to get every Float |
| 19:24:59 | <Inst_> | > minBound :: Char |
| 19:25:01 | <lambdabot> | '\NUL' |
| 19:25:31 | <Unicorn_Princess> | bitwise hackery? afaik every bit pattern is a valid float (valid includes Nan).. but i'm not 100% |
| 19:26:37 | <EvanR> | > map unsafeCoerce ([minBound .. maxBound] :: [Word32]) :: [Float] |
| 19:26:39 | <lambdabot> | error: |
| 19:26:39 | <lambdabot> | Variable not in scope: unsafeCoerce :: Word32 -> Float |
| 19:26:49 | <EvanR> | % map unsafeCoerce ([minBound .. maxBound] :: [Word32]) :: [Float] |
| 19:26:49 | <yahb2> | <interactive>:25:46: error: ; Not in scope: type constructor or class ‘Word32’ ; Perhaps you meant ‘Word’ (imported from Prelude) |
| 19:27:09 | <Unicorn_Princess> | I think default haskell float is 64 bits? |
| 19:27:16 | <EvanR> | Double is |
| 19:27:20 | <Unicorn_Princess> | ah |
| 19:27:24 | × | danza_ quits (~francesco@151.35.202.181) (Ping timeout: 240 seconds) |
| 19:27:30 | <Unicorn_Princess> | must be thinking of python |
| 19:28:34 | <int-e> | % import Data.Word |
| 19:28:34 | <yahb2> | <no output> |
| 19:28:54 | <EvanR> | % map unsafeCoerce ([minBound .. maxBound] :: [Word32]) :: [Float] |
| 19:28:55 | <yahb2> | <interactive>:29:5: error: ; Variable not in scope: unsafeCoerce :: Word32 -> Float |
| 19:29:11 | <int-e> | % import Unsafe.Coerce |
| 19:29:11 | <yahb2> | <no output> |
| 19:29:13 | <EvanR> | it's not meant to be done |
| 19:32:42 | → | jmdaemon joins (~jmdaemon@user/jmdaemon) |
| 19:33:41 | <EvanR> | ash3en, cabal file? |
| 19:39:02 | <ash3en> | https://privatebin.net/?a0805c6c7cb6313d#8DuPDNrQ6RrWjt4B8B2SpAB9ryTL53Nv5GH831GTEskk :) here |
| 19:39:19 | × | dcoutts_ quits (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 264 seconds) |
| 19:42:13 | → | machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net) |
| 19:44:20 | → | shapr joins (~user@2600:1700:c640:3100:5fc7:fa6:a4a8:54f1) |
| 19:52:36 | × | idgaen quits (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.5) |
| 19:54:40 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 256 seconds) |
| 19:56:04 | → | johnw joins (~johnw@69.62.242.138) |
| 19:56:53 | → | sansk_ joins (~sansk@072-238-128-073.res.spectrum.com) |
| 19:58:23 | × | whatsupdoc quits (uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
| 19:58:35 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 19:59:10 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
| 20:00:29 | × | ubert quits (~Thunderbi@178.165.198.50.wireless.dyn.drei.com) (Ping timeout: 245 seconds) |
| 20:02:13 | × | vglfr quits (~vglfr@88.155.140.136) (Read error: Connection reset by peer) |
| 20:10:09 | → | sansk joins (~sansk@user/sansk) |
| 20:12:42 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 20:15:06 | × | falafel quits (~falafel@62.175.113.194.dyn.user.ono.com) (Ping timeout: 260 seconds) |
| 20:15:11 | → | Tuplanolla joins (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) |
| 20:16:05 | × | jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 255 seconds) |
| 20:16:35 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 20:22:14 | → | phma_ joins (phma@2001:5b0:211b:d548:ffd5:bf9a:b80f:c063) |
| 20:22:57 | × | _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht) |
| 20:23:01 | × | phma quits (~phma@2001:5b0:211f:8338:4e4a:1088:5969:f228) (Read error: Connection reset by peer) |
| 20:31:25 | × | sabino quits (~sabino@user/sabino) (Quit: Lambda _ -> x) |
| 20:33:08 | × | ash3en quits (~stuuu@2a01:c22:8cfe:e300:1d0c:2eb2:7792:5e47) (Quit: Leaving) |
| 20:38:26 | → | sabino joins (~sabino@user/sabino) |
| 20:44:53 | × | simendsjo quits (~user@84.211.91.241) (Ping timeout: 255 seconds) |
| 20:47:17 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 20:48:24 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 20:48:51 | → | dcoutts_ joins (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) |
| 20:49:29 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 20:50:46 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 256 seconds) |
| 20:51:20 | → | jmdaemon joins (~jmdaemon@user/jmdaemon) |
| 20:53:44 | × | sympt quits (~sympt@user/sympt) (Quit: Ping timeout (120 seconds)) |
| 20:54:23 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 20:54:37 | → | sympt joins (~sympt@user/sympt) |
| 20:55:38 | × | fendor_ quits (~fendor@2a02:8388:1640:be00:dc89:8d8:5d44:854b) (Remote host closed the connection) |
| 20:57:10 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 21:00:45 | × | johnw quits (~johnw@69.62.242.138) (Quit: ZNC - http://znc.in) |
| 21:23:50 | → | johnw joins (~johnw@69.62.242.138) |
| 21:24:22 | phma_ | is now known as phma |
| 21:24:31 | × | jjhoo quits (~jahakala@user/jjhoo) (Ping timeout: 252 seconds) |
| 21:24:42 | → | emmanuelux joins (~emmanuelu@user/emmanuelux) |
| 21:25:28 | → | nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net) |
| 21:26:43 | × | jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 264 seconds) |
| 21:27:33 | → | hpc joins (~juzz@ip98-169-35-163.dc.dc.cox.net) |
| 21:28:44 | × | michalz quits (~michalz@185.246.207.215) (Remote host closed the connection) |
| 21:30:28 | × | nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds) |
| 21:31:08 | → | jmdaemon joins (~jmdaemon@user/jmdaemon) |
| 21:35:58 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 21:36:16 | × | yoyofreeman quits (~yoyofreem@176.97.76.178) (Read error: Connection reset by peer) |
| 21:36:23 | → | jjhoo joins (~jahakala@user/jjhoo) |
| 21:36:58 | → | yoyofreeman joins (~yoyofreem@176.97.76.178) |
| 21:41:12 | → | Lycurgus joins (~georg@user/Lycurgus) |
| 21:46:31 | <Inst_> | question: is this outdated? |
| 21:46:33 | <Inst_> | https://chrisdone.com/posts/whats-wrong-with-implicitparams/ |
| 21:48:38 | <c_wraith> | Nah, that's all correct. |
| 21:48:47 | <c_wraith> | Also, they just don't solve the problems that I'd like them to |
| 21:51:51 | <Inst_> | okay, reproduced it |
| 21:52:23 | <Inst_> | not my problem short-term, was thinking about -XBraceArguments which desugars to implicit params and gives defaulting ability |
| 21:52:53 | <Inst_> | as well as varargs |
| 21:53:19 | <Inst_> | varargs are just great when you're designing an API, since you can hide everything behind a single function |
| 21:53:45 | <geekosaur> | we like types though, and varargs plays havoc with typing |
| 21:55:34 | <Inst_> | could not reproduce behavior described in ChrisDone's post |
| 21:55:40 | <Inst_> | on GHCI, could with a cabal script |
| 21:57:13 | <Inst_> | geekosaur: well, tbh, mid-term, it's a question of what a potential haddock overhaul might look like |
| 21:57:57 | <geekosaur> | ghci's scoping rules differ enough that things might well not reproduce |
| 21:59:25 | <Inst_> | and maybe it's just a lib design issue, i.e, people seem much less oriented on writing, say, a "how to write a lib api" vs a "how to use type families" tutorial |
| 21:59:59 | <Inst_> | btw, lucid can supersede https://hackage.haskell.org/package/html-parse this except for speed, right? |
| 22:00:46 | <Inst_> | welp, looks like lucid doesn't provide parsing |
| 22:00:49 | × | sansk_ quits (~sansk@072-238-128-073.res.spectrum.com) (Ping timeout: 258 seconds) |
| 22:00:51 | <Inst_> | and html-parse is dead for 9.6, afaik |
| 22:01:45 | <c_wraith> | that doesn't look like a dependency set that would break on higher GHC versions |
| 22:01:51 | × | sansk quits (~sansk@user/sansk) (Ping timeout: 260 seconds) |
| 22:02:06 | <c_wraith> | It just looks like the base constraint is unnecessarily tight |
| 22:02:40 | <Inst_> | attempting build with --allow-newer |
| 22:03:19 | <EvanR> | implicit params is great, except for the implicit part |
| 22:03:22 | <Inst_> | tagsoup also installs |
| 22:03:28 | <probie> | Inst_: If you want varargs, you can always use a list. You lose currying though, and there's a potential performance hit |
| 22:03:28 | → | sansk joins (~sansk@user/sansk) |
| 22:03:42 | <Inst_> | i know there's old libraries that do it via varargs |
| 22:03:43 | <EvanR> | great idea number 17 which is easier to pull off by just passing a parameter |
| 22:04:45 | × | aljazmc quits (~aljazmc@user/aljazmc) (Quit: Leaving) |
| 22:06:23 | <c_wraith> | yeah... html-parse tries to use older versions of libraries that aren't compatible with the newest ghc. But compiling it with --allow-newer will build with only a warning about the import of Data.Monoid being redundant |
| 22:06:46 | <c_wraith> | It could use an update fixing some bounds, but the code is fine. |
| 22:08:29 | × | Jackneill_ quits (~Jackneill@20014C4E1E03DB0044BF7609ADF864E0.dsl.pool.telekom.hu) (Ping timeout: 258 seconds) |
| 22:13:33 | <Inst_> | no reason to bug ben gamari about it |
| 22:13:56 | <Inst_> | > import Network.HTTP.Conduit |
| 22:13:58 | <lambdabot> | <hint>:1:1: error: parse error on input ‘import’ |
| 22:14:09 | <Inst_> | @import Network.HTTP.Conduit |
| 22:14:09 | <lambdabot> | Unknown command, try @list |
| 22:14:34 | <Inst_> | % import Network.HTTP.Conduit |
| 22:14:35 | <yahb2> | <no location info>: error: ; Could not find module ‘Network.HTTP.Conduit’ ; It is not a module in the current program, or in any known package. |
| 22:14:43 | <Inst_> | % :set -package http-conduit |
| 22:14:43 | <yahb2> | cannot satisfy -package http-conduit ; (use -v for more information) |
| 22:14:49 | <Inst_> | smart move :) |
| 22:21:04 | <Inst_> | I'm probably a reprobate for using global env |
| 22:21:16 | × | Lycurgus quits (~georg@user/Lycurgus) (Quit: leaving) |
| 22:21:23 | <Inst_> | but still love being able to call any package i want on ghci via ghci -package foo |
| 22:27:37 | <nyc> | Is there something better than a Data.Set from containers for moderate-sized fixed-width/size data structures e.g. 256-bit multiple precision integers? I've got a vague idea that things should exist for this. |
| 22:29:19 | × | Pickchea quits (~private@user/pickchea) (Quit: Leaving) |
| 22:42:31 | × | gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 22:42:37 | × | sabino quits (~sabino@user/sabino) (Quit: Lambda _ -> x) |
| 22:42:42 | <sansk> | What's the difference between Data.Map and Data.HashMap? |
| 22:43:21 | <Inst_> | map is a treemap, hashmap is a hashmap |
| 22:44:34 | <sansk> | So hashmap is more performant? |
| 22:45:39 | <Inst_> | depends on usecase, no? |
| 22:46:28 | <sansk> | For mainly insertion and lookup, which is better then? |
| 22:46:40 | <EvanR> | Word256 is a thing in some crypto packages |
| 22:47:08 | <EvanR> | I don't know what a 256-bit multiple precision integer is |
| 22:47:40 | <EvanR> | sansk, HashMap requires keys to be Hashable, Map requires keys to be Ord |
| 22:48:04 | <EvanR> | if hashing is cheaper than comparing, maybe HashMap is better |
| 22:48:33 | <EvanR> | if the key is Int, then IntMap is probably better |
| 22:48:36 | <sansk> | To be honest, I am not quite sure what hashing means exactly EvanR |
| 22:48:54 | <sansk> | I've only ever dealt with Map |
| 22:48:57 | <EvanR> | a hash function maps your key to a number |
| 22:49:32 | <EvanR> | a good hash function maps different keys to different numbers with high probability |
| 22:49:35 | <sansk> | so it's an abstraction over an array? |
| 22:49:48 | <EvanR> | HashMap and Map have the same API |
| 22:50:14 | <EvanR> | you can think of an array as a map from 0..N to values |
| 22:50:28 | <EvanR> | but in Map the keys don't need to be continguous |
| 22:50:35 | <EvanR> | contiguous |
| 22:51:41 | <sansk> | What do you mean by contiguous? |
| 22:52:05 | <EvanR> | no holes between the min and max key |
| 22:52:38 | <EvanR> | you could have (0,'a') (1,'b') (7,'c') in your map and that's it, unlike an array |
| 22:53:09 | <sansk> | would a hashmap hash it as 0, 1, 2? |
| 22:53:14 | <EvanR> | no |
| 22:53:37 | <EvanR> | since Int is an instance of Hashable you can just use Int keys if you want |
| 22:53:42 | <EvanR> | it works |
| 22:54:09 | <sansk> | so basically HashMap just converts your map to IntMap? |
| 22:54:30 | <EvanR> | I don't think so, no, but you can think of it like that if you want |
| 22:54:42 | <EvanR> | it uses hash array-mapped tries |
| 22:55:56 | <sansk> | what are the practical performance differences though between hashmap and map? ie what usecase would you use each for? |
| 22:56:25 | × | jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 255 seconds) |
| 22:56:50 | <EvanR> | I've never used a HashMap for anything. aeson used to? use it for the string-like keys of json objects |
| 22:57:33 | <EvanR> | you can find benchmarks of the various container structures around if you search, but they are benchmarks so have many grains of salt to eat while looking at |
| 22:58:06 | <EvanR> | because of the Ord container on Map you can treat the contents as being ordered by key which is nice. Not so with HashMap |
| 22:58:10 | <EvanR> | Ord constraint* |
| 22:58:45 | <sansk> | well im using a Map to store variables in an interpreter i am writing |
| 22:59:10 | <EvanR> | what type of key |
| 22:59:15 | <sansk> | Text |
| 22:59:51 | <EvanR> | Map is a good default container, if you wanted more performance you might want to not use Text as variable keys |
| 23:00:20 | <EvanR> | just because I know it's possible to use Int keys for that |
| 23:01:34 | <sansk> | i guess performance doesn't matter too much, i will probably continue using Map since its convenient |
| 23:01:44 | <EvanR> | it's pretty great |
| 23:04:11 | <sansk> | yeah, and very intuitive |
| 23:06:12 | → | emmanuelux_ joins (~emmanuelu@user/emmanuelux) |
| 23:06:30 | × | Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection) |
| 23:07:08 | × | emmanuelux quits (~emmanuelu@user/emmanuelux) (Ping timeout: 258 seconds) |
| 23:09:26 | → | Square3 joins (~Square4@user/square) |
| 23:11:05 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 23:12:05 | × | Square quits (~Square@user/square) (Ping timeout: 240 seconds) |
| 23:13:04 | × | connrs quits (~connrs@user/connrs) (Ping timeout: 255 seconds) |
| 23:16:32 | × | emmanuelux_ quits (~emmanuelu@user/emmanuelux) (Read error: Connection reset by peer) |
| 23:17:21 | → | emmanuelux_ joins (~emmanuelu@user/emmanuelux) |
| 23:17:27 | × | pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5) |
| 23:17:55 | × | emmanuelux_ quits (~emmanuelu@user/emmanuelux) (Read error: Connection reset by peer) |
| 23:18:05 | × | Noinia quits (~Frank@77-162-168-71.fixed.kpn.net) (Ping timeout: 240 seconds) |
| 23:18:42 | → | emmanuelux_ joins (~emmanuelu@user/emmanuelux) |
| 23:19:59 | × | emmanuelux_ quits (~emmanuelu@user/emmanuelux) (Read error: Connection reset by peer) |
| 23:20:34 | → | emmanuelux_ joins (~emmanuelu@user/emmanuelux) |
| 23:23:22 | × | emmanuelux_ quits (~emmanuelu@user/emmanuelux) (Read error: Connection reset by peer) |
| 23:24:13 | → | emmanuelux_ joins (~emmanuelu@user/emmanuelux) |
| 23:26:24 | × | emmanuelux_ quits (~emmanuelu@user/emmanuelux) (Read error: Connection reset by peer) |
| 23:27:12 | → | nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net) |
| 23:27:12 | → | emmanuelux_ joins (~emmanuelu@user/emmanuelux) |
| 23:27:16 | sansk | is now known as filipe |
| 23:27:45 | filipe | is now known as Guest4104 |
| 23:28:06 | Guest4104 | is now known as sansk |
| 23:31:34 | × | nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 252 seconds) |
| 23:31:52 | × | Tuplanolla quits (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Quit: Leaving.) |
| 23:32:07 | → | connrs joins (~connrs@user/connrs) |
| 23:32:07 | × | emmanuelux_ quits (~emmanuelu@user/emmanuelux) (Read error: Connection reset by peer) |
| 23:32:43 | → | emmanuelux_ joins (~emmanuelu@user/emmanuelux) |
| 23:34:39 | × | ddellacosta quits (~ddellacos@ool-44c738de.dyn.optonline.net) (Ping timeout: 240 seconds) |
| 23:35:42 | → | ddellacosta joins (~ddellacos@ool-44c738de.dyn.optonline.net) |
| 23:35:58 | → | ft joins (~ft@p4fc2a529.dip0.t-ipconnect.de) |
| 23:46:21 | × | ystael quits (~ystael@user/ystael) (Quit: Lost terminal) |
| 23:49:08 | → | _leo___ joins (~emmanuelu@user/emmanuelux) |
| 23:49:22 | × | emmanuelux_ quits (~emmanuelu@user/emmanuelux) (Read error: Connection reset by peer) |
| 23:50:15 | <yin> | is there a reason to prefer shared mutable state explicitly with MVar etc to passing state around in true functional style? |
| 23:50:25 | × | _leo___ quits (~emmanuelu@user/emmanuelux) (Read error: Connection reset by peer) |
| 23:51:00 | → | _leo___ joins (~emmanuelu@user/emmanuelux) |
| 23:51:15 | <jackdk> | You might want multiple concurrent threads sharing the state |
| 23:52:41 | <geekosaur> | or shared with callbacks, which can't receive the current value (only the value when the callback was registered) in pure functional style, and certainly can't update it |
| 23:53:23 | × | _leo___ quits (~emmanuelu@user/emmanuelux) (Read error: Connection reset by peer) |
| 23:54:13 | → | _leo___ joins (~emmanuelu@user/emmanuelux) |
| 23:54:24 | × | _leo___ quits (~emmanuelu@user/emmanuelux) (Read error: Connection reset by peer) |
| 23:55:12 | → | _leo___ joins (~emmanuelu@user/emmanuelux) |
| 23:57:04 | × | sansk quits (~sansk@user/sansk) (Quit: WeeChat 4.0.4) |
All times are in UTC on 2023-10-25.