Logs on 2023-05-19 (liberachat/#haskell)
| 00:00:58 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 00:02:13 | × | abrar quits (~abrar@pool-72-78-199-186.phlapa.fios.verizon.net) (Quit: WeeChat 3.7.1) |
| 00:02:23 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
| 00:03:04 | → | abrar joins (~abrar@pool-72-78-199-186.phlapa.fios.verizon.net) |
| 00:04:13 | × | jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 256 seconds) |
| 00:07:05 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 00:09:36 | <xameer> | Hi , could anyone here share a good reference to yahb2 ? |
| 00:09:54 | <xameer> | It's commands |
| 00:11:34 | <ski> | GHCi |
| 00:12:08 | <ski> | (prefix `% ' in front of the GHCi commands) |
| 00:12:40 | <probie> | % :? |
| 00:12:40 | <yahb2> | Commands available from the prompt: ; ; <statement> evaluate/run <statement> ; : repeat last command ; :{\n ..lines.. \n:}\n multiline comm... |
| 00:13:09 | <int-e> | https://downloads.haskell.org/~ghc/9.2.5/docs/html/users_guide/ghci.html |
| 00:13:35 | <int-e> | % GHC.Version.cProjectVersion |
| 00:13:35 | <yahb2> | "9.2.5" |
| 00:18:06 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 00:19:12 | <probie> | Is there a canonical name for something like `class F t where fun :: (forall a b . f a b -> g a b) -> t f -> t g`. Functor2 I suppose? |
| 00:22:25 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
| 00:28:38 | → | jmdaemon joins (~jmdaemon@user/jmdaemon) |
| 00:29:43 | × | shapr quits (~user@76.29.230.19) (Ping timeout: 256 seconds) |
| 00:35:18 | → | rf joins (~rf@2605:59c8:179c:f610:aa75:7d92:845a:e973) |
| 00:39:35 | × | jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 240 seconds) |
| 00:39:49 | → | xameer` joins (~user@144.48.224.179) |
| 00:42:40 | <xameer`> | bwrap-files/make-chroot.sh |
| 00:42:47 | <xameer`> | 2+2 |
| 00:44:12 | × | xameer` quits (~user@144.48.224.179) (Remote host closed the connection) |
| 00:46:08 | × | vandita quits (~vandit@92-249-150-219.static.digikabel.hu) (Ping timeout: 240 seconds) |
| 00:48:18 | → | vandita joins (~vandit@92-249-150-197.static.digikabel.hu) |
| 00:53:07 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 00:54:12 | → | califax joins (~califax@user/califx) |
| 01:10:58 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 01:16:58 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 250 seconds) |
| 01:17:07 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 01:21:51 | × | esph quits (~weechat@104.207.141.174) (Ping timeout: 256 seconds) |
| 01:30:20 | → | juano joins (~juano@189.172.239.161) |
| 01:34:05 | <juano> | Reese from Malcolm in the Middle gets seduced by Mrs. Edna Skilton from Regina, Saskatchewan! He fills her love canal full of his turds and then screws the shit out of her! Dewey listens through the walls and asks Malcolm, who is shellshocked, if he can heat up some hot pockets for that crazy lady! Season 8 Episode 1 https://justpaste.it/Reese_Fucks_Edna_Skilton_Malcolm |
| 01:36:13 | × | juano quits (~juano@189.172.239.161) (K-Lined) |
| 01:36:53 | × | evincar quits (~evincar@user/evincar) (Ping timeout: 250 seconds) |
| 01:44:01 | × | waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 240 seconds) |
| 01:47:30 | <DigitalKiwi> | https://i.imgur.com/pO6eZ8b.png |
| 01:48:08 | <DigitalKiwi> | haskell on dos > haskell on windows |
| 01:50:48 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 01:55:01 | <pavonia> | Oh, good old memories |
| 01:55:05 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
| 01:55:35 | → | cheater_ joins (~Username@user/cheater) |
| 01:57:57 | → | evincar joins (~evincar@user/evincar) |
| 01:57:59 | × | cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds) |
| 01:58:01 | cheater_ | is now known as cheater |
| 02:03:14 | → | bilegeek joins (~bilegeek@2600:1008:b067:ea26:84a2:b278:96d5:fcf7) |
| 02:08:54 | × | img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
| 02:09:36 | × | td_ quits (~td@i5387093A.versanet.de) (Read error: Connection reset by peer) |
| 02:09:48 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer) |
| 02:10:44 | × | xff0x quits (~xff0x@2405:6580:b080:900:7953:b19f:2f45:6449) (Ping timeout: 246 seconds) |
| 02:11:01 | × | machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 240 seconds) |
| 02:13:04 | → | td_ joins (~td@i53870931.versanet.de) |
| 02:13:31 | × | xameer quits (~xameer@144.48.224.179) (Ping timeout: 240 seconds) |
| 02:27:21 | → | img joins (~img@user/img) |
| 02:31:23 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:4c1f:3b38:25a9:d6c3) |
| 02:32:54 | → | cheater_ joins (~Username@user/cheater) |
| 02:35:08 | × | img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
| 02:35:16 | → | cheater__ joins (~Username@user/cheater) |
| 02:35:25 | → | img joins (~img@user/img) |
| 02:35:59 | × | cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds) |
| 02:36:02 | cheater__ | is now known as cheater |
| 02:36:03 | → | emmanuelux_ joins (~emmanuelu@user/emmanuelux) |
| 02:37:11 | × | cheater_ quits (~Username@user/cheater) (Ping timeout: 240 seconds) |
| 02:38:47 | × | emmanuelux quits (~emmanuelu@user/emmanuelux) (Ping timeout: 240 seconds) |
| 02:41:34 | → | _leo___ joins (~emmanuelu@user/emmanuelux) |
| 02:41:49 | <albet70> | filter g $ filter f alist ==? |
| 02:42:07 | × | terrorjack quits (~terrorjac@2a01:4f8:c17:87f8::) (Quit: The Lounge - https://thelounge.chat) |
| 02:43:04 | → | cheater_ joins (~Username@user/cheater) |
| 02:43:32 | → | terrorjack joins (~terrorjac@2a01:4f8:c17:87f8::) |
| 02:44:47 | × | emmanuelux_ quits (~emmanuelu@user/emmanuelux) (Ping timeout: 265 seconds) |
| 02:45:11 | × | cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds) |
| 02:45:16 | → | cheater__ joins (~Username@user/cheater) |
| 02:45:16 | cheater__ | is now known as cheater |
| 02:46:33 | → | nate2 joins (~nate@98.45.169.16) |
| 02:47:59 | × | cheater_ quits (~Username@user/cheater) (Ping timeout: 240 seconds) |
| 02:51:29 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 02:53:49 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 02:53:49 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
| 02:53:49 | finn_elija | is now known as FinnElija |
| 02:55:58 | <ski> | albet70 : `filter (\x -> f x && g x) alist' |
| 02:56:41 | × | comarrrrrrrrrrrr quits (~comarrrrr@73.237.206.60) (Remote host closed the connection) |
| 02:57:07 | → | xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
| 02:58:06 | × | _leo___ quits (~emmanuelu@user/emmanuelux) (Quit: au revoir) |
| 02:59:26 | → | xameer joins (~xameer@144.48.224.179) |
| 03:08:09 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 03:12:40 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 250 seconds) |
| 03:19:35 | × | vglfr quits (~vglfr@2a0d:3344:1b4f:9e10:d08e:309f:8c89:9b36) (Ping timeout: 265 seconds) |
| 03:25:57 | × | rf quits (~rf@2605:59c8:179c:f610:aa75:7d92:845a:e973) (Remote host closed the connection) |
| 03:34:16 | → | tessier joins (~treed@ec2-184-72-149-67.compute-1.amazonaws.com) |
| 03:34:30 | → | machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net) |
| 03:41:15 | <Inst__> | any idea how to speed this up any further? |
| 03:41:16 | <Inst__> | https://paste.tomsmeding.com/UvhAZk9q |
| 03:41:20 | <Inst__> | i mean, without resorting to matrices |
| 03:41:25 | <Inst__> | here, we're about, ummm |
| 03:41:40 | <Inst__> | 30-40% slower than Julia |
| 03:42:31 | <Inst__> | you actually get the opposite result when working with the Integer type, but w/e, can't be helped |
| 03:48:47 | × | nate2 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds) |
| 03:51:04 | <probie> | How are you timing it? |
| 03:51:39 | → | wiosna joins (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) |
| 03:52:06 | <probie> | and can you output the assembly that Julia is generating? |
| 03:52:26 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 03:54:11 | <Inst__> | tasty-bench |
| 03:55:51 | <Inst__> | julian; |
| 03:55:53 | <Inst__> | https://godbolt.org/z/E1e8co76T |
| 03:57:19 | → | freeside_ joins (~mengwong@122.11.212.99) |
| 03:57:19 | <Inst__> | ours |
| 03:57:22 | <Inst__> | https://godbolt.org/z/djxo7bfGq |
| 03:59:20 | <Inst__> | https://godbolt.org/z/Pfa9jaeTG |
| 03:59:23 | <Inst__> | slightly revised, ours |
| 04:01:40 | <Inst__> | ehhh, is there some way to pull ahead? I guess I briefly got deluded by the fact that if you rig it to work on integer return type, the Haskell is more efficient, probably because our bigNum type is better |
| 04:06:07 | → | vglfr joins (~vglfr@209.198.137.192) |
| 04:07:08 | × | tessier quits (~treed@ec2-184-72-149-67.compute-1.amazonaws.com) (Ping timeout: 240 seconds) |
| 04:07:23 | <DigitalKiwi> | Inst__: buy a faster computer |
| 04:07:38 | <Inst__> | doesn't change the relative performance of julia vs haskell |
| 04:07:47 | <Inst__> | anyways, the C assembly is so beautiful |
| 04:07:48 | <Inst__> | https://godbolt.org/z/ozzzb1Wz6 |
| 04:08:01 | <DigitalKiwi> | oh i hadn't reaed that far lol |
| 04:08:05 | → | oo_miguel joins (~Thunderbi@77.252.47.84) |
| 04:08:09 | → | _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) |
| 04:08:34 | <probie> | I don't think you can easily make GHC faster here. GHC isn't producing particularly slow code, but it's saving `rightAcc` via the stack, whilst Julia has just put aside an extra register for that. |
| 04:08:55 | <DigitalKiwi> | buy a slower computer and use julia don't waste time making the haskell faster and go spend time with your friends |
| 04:09:54 | <DigitalKiwi> | ...buy a reallllly expensive computer and use haskell anyway even though julia is faster lol |
| 04:10:39 | <probie> | You might be able to beat Julia by manually unrolling the loop, but that's probably cheating (since I'm pretty sure the only reason Julia hasn't unrolled the loop is because it's not sure how big/small `n` is going to be) :p |
| 04:12:29 | <Inst__> | the more stunning observation from benchmarking this |
| 04:12:32 | × | vglfr quits (~vglfr@209.198.137.192) (Ping timeout: 246 seconds) |
| 04:12:37 | <Inst__> | is how much faster the accparam version is if you strict it |
| 04:12:40 | <Inst__> | otherwise the thunks pile up |
| 04:12:49 | <Inst__> | the benchmark is 35 ns per run under strict |
| 04:13:00 | <Inst__> | 35 ms per run without the bangs? |
| 04:13:52 | <Inst__> | well, actually closer to 778 us |
| 04:14:05 | × | xameer quits (~xameer@144.48.224.179) (Ping timeout: 240 seconds) |
| 04:14:21 | × | freeside_ quits (~mengwong@122.11.212.99) (Read error: Connection reset by peer) |
| 04:14:40 | <Inst__> | 462 ns vs 35 ns with and without stricting |
| 04:14:55 | <Inst__> | iirc the bangs add an overhead, right? |
| 04:16:46 | → | vglfr joins (~vglfr@2a0d:3344:1b4f:9e10:9c37:7744:24df:2b60) |
| 04:18:11 | <probie> | Inst__: sort of? The bangs in your `go` for `fibTab` are effectively "free" here. You pay the cost once for `n` when you call `fibTab` (and you'd have had to pay it anyway to pattern match against it). |
| 04:18:46 | <Inst__> | i guess, but `seq` gets expensive quickly, no? |
| 04:18:56 | <Inst__> | the let foo = ... in seq foo foo |
| 04:21:39 | <probie> | `seq` (and bang patterns) aren't free, but if something is already known to be in whnf, the compiler can erase the call to `seq` |
| 04:26:07 | <davean> | They're not free but they're a prepayment that can come at a discount. |
| 04:27:43 | <Inst__> | this is just interesting to know because i use accumulating parameter idiom a lot |
| 04:28:09 | <Inst__> | i was just really shocked that we managed to somehow mildly outperform julia on bigint |
| 04:28:16 | <Inst__> | or rather Integer vs Big |
| 04:29:00 | <davean> | oh have you used the LLVM backend yet? |
| 04:29:08 | <davean> | that can help this specific sort of code. |
| 04:30:08 | <davean> | Its been a while since I optimized Haskell on this level sadly. |
| 04:30:09 | <probie> | Inst__: By default, GHC uses gmp for `Integer`, which is known to be pretty fast. I'm not sure if Julia uses gmp or rolls their own, but it's unlikely to be faster |
| 04:30:10 | <davean> | I'm rusty |
| 04:30:29 | <Inst__> | i'm on windows :( |
| 04:31:05 | <Inst__> | and not going to go al lthe way to LLVM / do my dual boot, once I saw the gcc C version, I sort of lost interest |
| 04:31:59 | <davean> | -fregs-graph ? |
| 04:32:10 | <davean> | -fregs-graph ? |
| 04:32:37 | <Inst__> | -fregs-graph? |
| 04:33:10 | <davean> | I'm too rusty to be sure what ticklets what ATM but thats an option that changes the register allocation pass. |
| 04:33:38 | <davean> | I forget whats default, what catches what, etc. I've been doing much higher level optimizations. |
| 04:34:27 | <davean> | It wasn't in -O2 for a while at least |
| 04:34:51 | <Inst__> | added freqs-graph |
| 04:35:03 | × | captnemo quits (~captnemo@193.32.127.232) (Quit: WeeChat 3.8) |
| 04:35:54 | <Inst__> | stabilized around 33 seconds, vs previous 35 seconds, but could have been affected by what else was running on the machine |
| 04:36:11 | <davean> | yah ok, that didn't do the thing I hoped it might |
| 04:37:23 | × | evincar quits (~evincar@user/evincar) (Ping timeout: 264 seconds) |
| 04:38:38 | → | evincar joins (~evincar@user/evincar) |
| 04:40:32 | × | vglfr quits (~vglfr@2a0d:3344:1b4f:9e10:9c37:7744:24df:2b60) (Ping timeout: 248 seconds) |
| 04:43:57 | → | tessier joins (~treed@ec2-184-72-149-67.compute-1.amazonaws.com) |
| 04:45:23 | → | freeside_ joins (~mengwong@122.11.135.1) |
| 04:45:37 | → | vglfr joins (~vglfr@2a0d:3344:1b4f:9e10:9c37:7744:24df:2b60) |
| 04:48:09 | <probie> | davean: `-fregs-graph` did the right thing (at least on godbolt). It no longer uses the stack when it doesn't need to |
| 04:52:58 | <probie> | unfortunately GHC still generates an additional `testq` op, which Julia doesn't, and I don't think there's a way to get rid of that (although I think the llvm backend might?) |
| 04:54:49 | <probie> | (it's extra, because you've actually set the flags you want to test against as part of the `n - 1`, but even with the args reordered to make sure that op is at the end, it generates `decq %r14 testq %r14,%r14` |
| 04:57:38 | <davean> | probie: oh! Ok, so I'm rusty but not THAT rusty |
| 04:58:07 | <davean> | I expect llvm would elide that |
| 05:06:01 | × | tessier quits (~treed@ec2-184-72-149-67.compute-1.amazonaws.com) (Ping timeout: 240 seconds) |
| 05:06:26 | → | kimjetwav joins (~user@2607:fea8:235e:b600:7132:be12:79fb:18e8) |
| 05:11:59 | × | wiosna quits (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
| 05:13:10 | → | tessier joins (~treed@ec2-184-72-149-67.compute-1.amazonaws.com) |
| 05:27:47 | × | freeside_ quits (~mengwong@122.11.135.1) (Ping timeout: 264 seconds) |
| 05:38:58 | → | wiosna joins (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) |
| 05:40:57 | × | _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht) |
| 05:45:43 | → | nate2 joins (~nate@98.45.169.16) |
| 05:47:26 | → | xameer joins (~xameer@144.48.224.179) |
| 05:50:01 | × | nate2 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds) |
| 05:53:07 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 05:55:49 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Read error: Connection reset by peer) |
| 05:57:34 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 06:00:26 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 06:04:47 | × | shriekingnoise quits (~shrieking@186.137.175.87) (Ping timeout: 240 seconds) |
| 06:05:36 | → | michalz joins (~michalz@185.246.204.73) |
| 06:06:16 | × | tessier quits (~treed@ec2-184-72-149-67.compute-1.amazonaws.com) (Ping timeout: 268 seconds) |
| 06:08:02 | → | harveypwca joins (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) |
| 06:10:09 | × | bilegeek quits (~bilegeek@2600:1008:b067:ea26:84a2:b278:96d5:fcf7) (Quit: Leaving) |
| 06:12:47 | → | mncheck joins (~mncheck@193.224.205.254) |
| 06:12:54 | → | tessier joins (~treed@ec2-184-72-149-67.compute-1.amazonaws.com) |
| 06:14:35 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 264 seconds) |
| 06:15:59 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 240 seconds) |
| 06:18:02 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 06:25:45 | × | viwor quits (~Thunderbi@IGLD-83-130-212-68.inter.net.il) (Quit: viwor) |
| 06:26:39 | × | iteratee quits (~kyle@162.218.222.207) (Read error: Connection reset by peer) |
| 06:26:50 | → | iteratee joins (~kyle@162.218.222.207) |
| 06:29:28 | × | vandita quits (~vandit@92-249-150-197.static.digikabel.hu) (Ping timeout: 240 seconds) |
| 06:30:39 | → | lottaquestions joins (~nick@2607:fa49:503f:6d00:5204:d8f3:4fdf:6a82) |
| 06:31:20 | → | vandita joins (~vandit@91-83-3-38.pool.digikabel.hu) |
| 06:31:41 | → | bontaq joins (~user@ool-45779b84.dyn.optonline.net) |
| 06:32:23 | × | lottaquestions_ quits (~nick@2607:fa49:503f:6d00:e12c:3339:1e68:4fd9) (Ping timeout: 256 seconds) |
| 06:34:51 | × | hrberg quits (~quassel@171.79-160-161.customer.lyse.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
| 06:35:10 | → | hrberg joins (~quassel@171.79-160-161.customer.lyse.net) |
| 06:35:30 | → | acidjnk joins (~acidjnk@p200300d6e7072f02cd847e0b0d4a295b.dip0.t-ipconnect.de) |
| 06:37:05 | × | motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 240 seconds) |
| 06:39:50 | → | vpan joins (~0@mail.elitnet.lt) |
| 06:50:24 | → | motherfsck joins (~motherfsc@user/motherfsck) |
| 06:52:52 | → | coot joins (~coot@89-69-206-216.dynamic.chello.pl) |
| 06:54:30 | → | trev joins (~trev@user/trev) |
| 06:54:58 | → | coot_ joins (~coot@89-69-206-216.dynamic.chello.pl) |
| 06:56:23 | × | motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 240 seconds) |
| 06:57:03 | → | CiaoSen joins (~Jura@dynamic-046-114-218-076.46.114.pool.telefonica.de) |
| 06:57:35 | × | coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Ping timeout: 240 seconds) |
| 06:57:35 | coot_ | is now known as coot |
| 07:06:25 | → | gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
| 07:10:59 | → | dhil joins (~dhil@78.45.150.83.ewm.ftth.as8758.net) |
| 07:12:03 | → | zeenk joins (~zeenk@2a02:2f04:a105:f00::7fe) |
| 07:12:08 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds) |
| 07:16:01 | × | mauke quits (~mauke@user/mauke) (Ping timeout: 256 seconds) |
| 07:20:08 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 07:20:30 | × | Inst__ quits (~Inst@2601:6c4:4081:2fc0:4f54:13aa:bf33:bb41) (Read error: Connection reset by peer) |
| 07:22:29 | → | freeside_ joins (~mengwong@122.11.248.245) |
| 07:23:28 | × | hsw quits (~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net) (Ping timeout: 240 seconds) |
| 07:28:44 | × | coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot) |
| 07:30:32 | → | hsw joins (~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net) |
| 07:33:37 | → | mmhat joins (~mmh@p200300f1c7066878ee086bfffe095315.dip0.t-ipconnect.de) |
| 07:33:46 | × | mmhat quits (~mmh@p200300f1c7066878ee086bfffe095315.dip0.t-ipconnect.de) (Client Quit) |
| 07:37:42 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:4c1f:3b38:25a9:d6c3) (Remote host closed the connection) |
| 07:39:01 | × | evincar quits (~evincar@user/evincar) (Ping timeout: 240 seconds) |
| 07:42:17 | × | potato44 quits (uid421314@2a03:5180:f:2::6:6dc2) (Quit: Connection closed for inactivity) |
| 07:42:19 | → | alternateved joins (~user@77-253-195-69.adsl.inetia.pl) |
| 07:42:42 | → | gmg joins (~user@user/gehmehgeh) |
| 07:45:42 | → | Guest|77 joins (~Guest|77@92.255.240.18) |
| 07:46:21 | × | Guest|77 quits (~Guest|77@92.255.240.18) (Client Quit) |
| 07:49:32 | × | harveypwca quits (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving) |
| 08:01:05 | × | CiaoSen quits (~Jura@dynamic-046-114-218-076.46.114.pool.telefonica.de) (Ping timeout: 240 seconds) |
| 08:01:28 | → | phma_ joins (~phma@2001:5b0:211f:ac38:3175:c9e:af7a:b437) |
| 08:03:18 | × | vglfr quits (~vglfr@2a0d:3344:1b4f:9e10:9c37:7744:24df:2b60) (Ping timeout: 265 seconds) |
| 08:03:34 | → | vglfr joins (~vglfr@209.198.137.192) |
| 08:03:37 | × | phma quits (phma@2001:5b0:211f:7e48:7766:33a8:8fd1:3dba) (Ping timeout: 256 seconds) |
| 08:05:18 | → | ubert joins (~Thunderbi@2001:871:263:e49d:d09b:76e5:9a99:b8ab) |
| 08:07:29 | → | bgs joins (~bgs@212-85-160-171.dynamic.telemach.net) |
| 08:09:51 | → | evincar joins (~evincar@user/evincar) |
| 08:10:08 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 08:10:25 | × | vglfr quits (~vglfr@209.198.137.192) (Ping timeout: 256 seconds) |
| 08:11:35 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Ping timeout: 240 seconds) |
| 08:12:36 | → | chele joins (~chele@user/chele) |
| 08:13:09 | → | vglfr joins (~vglfr@209.198.137.192) |
| 08:13:16 | → | coot joins (~coot@89-69-206-216.dynamic.chello.pl) |
| 08:14:24 | × | evincar quits (~evincar@user/evincar) (Ping timeout: 248 seconds) |
| 08:26:10 | → | titibandit joins (~titibandi@user/titibandit) |
| 08:26:47 | × | vglfr quits (~vglfr@209.198.137.192) (Ping timeout: 240 seconds) |
| 08:27:01 | → | evincar joins (~evincar@user/evincar) |
| 08:28:57 | → | user____3 joins (~user@dynamic-046-114-177-008.46.114.pool.telefonica.de) |
| 08:30:15 | → | vglfr joins (~vglfr@209.198.137.192) |
| 08:31:35 | × | evincar quits (~evincar@user/evincar) (Ping timeout: 240 seconds) |
| 08:38:08 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:510d:16a:b9b3:3b4) |
| 08:42:26 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:510d:16a:b9b3:3b4) (Ping timeout: 250 seconds) |
| 08:42:26 | × | vglfr quits (~vglfr@209.198.137.192) (Read error: Connection reset by peer) |
| 08:42:49 | → | vglfr joins (~vglfr@209.198.137.192) |
| 08:43:37 | → | mechap joins (~mechap@user/mechap) |
| 08:43:57 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
| 08:43:59 | <absence> | is there a way to get around the ambiguousness of the update functions? the get functions are not ambiguous... https://play.haskell.org/saved/sqDxEZxD |
| 08:47:51 | → | Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915) |
| 08:48:45 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 240 seconds) |
| 08:49:09 | Lord_of_Life_ | is now known as Lord_of_Life |
| 08:50:13 | → | CiaoSen joins (~Jura@dynamic-046-114-218-076.46.114.pool.telefonica.de) |
| 08:51:39 | <Profpatsch> | Something that’s been preoccupying me |
| 08:53:05 | <Profpatsch> | nvm, I think it’s too hard to describe |
| 08:53:29 | <sm> | heh |
| 08:53:50 | × | phma_ quits (~phma@2001:5b0:211f:ac38:3175:c9e:af7a:b437) (Read error: Connection reset by peer) |
| 08:54:24 | → | phma_ joins (~phma@host-67-44-208-41.hnremote.net) |
| 08:57:11 | × | gmg quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 09:00:52 | <jackdk> | absence: See https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0366-no-ambiguous-field-access.rst#migration-strategy ; there's an open proposal that's relevant: https://github.com/ghc-proposals/ghc-proposals/pull/537 |
| 09:03:27 | → | titiband1t joins (~titibandi@user/titibandit) |
| 09:04:01 | × | inversed quits (~inversed@bcdcac82.skybroadband.com) (Ping timeout: 240 seconds) |
| 09:13:43 | → | __monty__ joins (~toonn@user/toonn) |
| 09:13:51 | <absence> | jackdk: thanks, i'll have a look! |
| 09:15:26 | → | Inst joins (~Inst@2601:6c4:4081:2fc0:29d6:ec38:cf28:128e) |
| 09:15:36 | <Inst> | hmmm,m i'm wondering, what the hell is wrong with my accumulating parameter? |
| 09:16:04 | <Inst> | basically, if I'm looking at the Julian version, they seem to have a (O)log n time complexity on the arithmetic |
| 09:16:08 | <Inst> | the Haskell version is roughly linear |
| 09:16:25 | <Rembane> | Inst: Maybe it's having a bad day? Can you share the code with us? |
| 09:16:50 | <Inst> | i'm just using Julia as an analogue for a traditional for loop |
| 09:16:59 | <Inst> | I'm not WSLed onto OCaml so I can't use OCaml |
| 09:17:05 | <Inst> | for interpreter |
| 09:18:02 | <Inst> | julian: |
| 09:18:03 | <Inst> | https://godbolt.org/z/brY3sbKE1 |
| 09:18:41 | <Inst> | ours |
| 09:18:42 | <Inst> | https://godbolt.org/z/xj13e156r |
| 09:19:15 | <probie> | Inst: you want to pass -O2 |
| 09:19:45 | <probie> | also, one of those is fib, the other is fac |
| 09:20:57 | <Inst> | weird |
| 09:20:57 | <Inst> | https://godbolt.org/z/ovG4KfGn9 |
| 09:21:01 | <Inst> | julian version |
| 09:22:48 | × | tessier quits (~treed@ec2-184-72-149-67.compute-1.amazonaws.com) (Ping timeout: 240 seconds) |
| 09:24:32 | → | Pickchea joins (~private@user/pickchea) |
| 09:24:48 | <Inst> | so it's probably that they have a log n optimization firing, which creates a high initial time, but my algorithm is O n |
| 09:28:47 | <probie> | So, when n < 16, haskell and Julia are running pretty much the same code |
| 09:31:18 | <probie> | when n >= 16 Julia has unrolled the loop and is doing some crazy stuff something with vector ops. I'm moderately sure it's not O(log n) though |
| 09:32:53 | <probie> | The llvm backend for GHC might be able to generate something similar, but I don't think it will |
| 09:34:42 | × | freeside_ quits (~mengwong@122.11.248.245) (Ping timeout: 268 seconds) |
| 09:35:07 | × | zeenk quits (~zeenk@2a02:2f04:a105:f00::7fe) (Remote host closed the connection) |
| 09:35:29 | → | zeenk joins (~zeenk@2a02:2f04:a105:f00::fba) |
| 09:39:16 | × | ubert quits (~Thunderbi@2001:871:263:e49d:d09b:76e5:9a99:b8ab) (Quit: ubert) |
| 09:39:36 | → | ubert joins (~Thunderbi@2001:871:263:e49d:9f32:772e:1ec6:8be6) |
| 09:40:13 | <stefan-_> | I have an issue with some typeclass instances in pandoc |
| 09:40:26 | <stefan-_> | previously there was: instance (Walkable [a] Pandoc, MonadIO m) => ToJSONFilter m (a -> [a]) where ... |
| 09:40:34 | <stefan-_> | now there is: instance (Walkable [a] Pandoc, MonadIO m) => ToJSONFilter m (a -> m [a]) where |
| 09:40:50 | <stefan-_> | the application code is here: https://gist.github.com/dozed/41c4c6b74d5fc1c06c306d6e1783e762 |
| 09:41:09 | phma_ | is now known as phma |
| 09:41:32 | <stefan-_> | is there a simpler solution to turn an `Block -> [Block]` into `Block -> IO [Block]` than the two last snippets? |
| 09:41:45 | <stefan-_> | -n |
| 09:42:10 | <ncf> | :t (pure .) |
| 09:42:11 | <lambdabot> | Applicative f => (a1 -> a2) -> a1 -> f a2 |
| 09:43:31 | × | ubert quits (~Thunderbi@2001:871:263:e49d:9f32:772e:1ec6:8be6) (Ping timeout: 240 seconds) |
| 09:43:38 | <ncf> | toJSONFilter (pure . toList . convertBlock) -- doesn't that do it? |
| 09:43:56 | <ncf> | oh, ambiguous |
| 09:44:19 | <ncf> | you could turn on TypeApplications and do pure @IO |
| 09:45:28 | <stefan-_> | nice, this works: `toJSONFilter $ (pure @IO .) $ toList . convertBlock` |
| 09:45:41 | <ncf> | pure @IO . toList . convertBlock |
| 09:45:50 | <ncf> | not sure why this is necessary though, since the type of main is known... |
| 09:46:24 | → | ubert joins (~Thunderbi@188-23-67-228.adsl.highway.telekom.at) |
| 09:46:55 | → | nate2 joins (~nate@98.45.169.16) |
| 09:48:41 | <stefan-_> | ncf, ToJSONFilter has instances given `MonadIO`: https://github.com/jgm/pandoc-types/blob/master/src/Text/Pandoc/JSON.hs |
| 09:48:51 | <stefan-_> | could be related to this indirection |
| 09:49:46 | → | hamzahaskell1 joins (~hamzahask@2a01:e0a:1ee:8c60:c112:84e5:1df:32b0) |
| 09:50:44 | × | euandreh quits (~Thunderbi@189.6.18.7) (Remote host closed the connection) |
| 09:51:41 | × | nate2 quits (~nate@98.45.169.16) (Ping timeout: 246 seconds) |
| 09:51:51 | → | puque joins (~puke@user/puke) |
| 09:51:51 | × | pyook quits (~puke@user/puke) (Killed (zirconium.libera.chat (Nickname regained by services))) |
| 09:51:51 | puque | is now known as pyook |
| 09:53:46 | → | gensyst joins (~gensyst@user/gensyst) |
| 09:54:38 | <gensyst> | Is there no way to keep the current thread alive in the background somehow, and schedule something to run on that thread later? (long after the "main thing" i'm currently doing on my thread is over) |
| 09:54:56 | <gensyst> | s/that thread/that SAME thread |
| 09:55:27 | <gensyst> | it'd be cool if i could do this without channels (and run EVERYTHING through the channel) because running things on a channel has overhead |
| 09:55:46 | <gensyst> | it'd be cool if i could at least do the "main thing" without that overhead |
| 09:56:17 | × | user____3 quits (~user@dynamic-046-114-177-008.46.114.pool.telefonica.de) (Ping timeout: 268 seconds) |
| 09:57:26 | × | pyook quits (~puke@user/puke) (Quit: Quit) |
| 09:58:41 | × | tcard_ quits (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Quit: Leaving) |
| 10:00:26 | → | tcard joins (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) |
| 10:01:01 | × | acidjnk quits (~acidjnk@p200300d6e7072f02cd847e0b0d4a295b.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
| 10:05:12 | × | xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 250 seconds) |
| 10:05:54 | <ncf> | stefan-_: wait, why aren't you just using the `ToJSONFilter IO (a -> a)` instance? |
| 10:06:21 | <stefan-_> | ncf, the composed function is `Block -> [Block]` |
| 10:06:53 | <ncf> | oh |
| 10:07:05 | <absence> | jackdk: hm, the migration guide suggests that my code should work as is, so i guess it's outdated. the only other option seems to be to rewrite the code to not use record update syntax, which is a bit unfortunate |
| 10:09:52 | <absence> | is there really no way to disambiguate record updates? https://play.haskell.org/saved/sqDxEZxD |
| 10:12:19 | <stefan-_> | ncf, the `a -> [a]` instance has been removed some weeks ago: https://github.com/jgm/pandoc-types/commit/183af9d9f1066be974ac55fd23a4c985999d3ce8 |
| 10:12:46 | <carbolymer> | how can I find out what cabal knows about my custom package repository? I'm trying to debug famous 'Could not resolve dependencies'... |
| 10:15:26 | <sm> | carbolymer: cabal exec -- ghc-pkg list maybe ? |
| 10:17:00 | <carbolymer> | sm: wow, that just fails with the same error |
| 10:17:49 | <sm> | cabal exec does ? |
| 10:18:09 | <sm> | not ghc-pkg list, I assume |
| 10:18:11 | × | titiband1t quits (~titibandi@user/titibandit) (Remote host closed the connection) |
| 10:19:24 | <carbolymer> | yes, that's from cabal exec |
| 10:19:37 | <sm> | what error I wonder |
| 10:19:50 | <carbolymer> | weird,if I enforced the newer index-state from command line it worked |
| 10:20:04 | <carbolymer> | somehow it ignored index-state from cabal.project |
| 10:20:53 | <carbolymer> | sm: https://bpa.st/HKX5O |
| 10:21:43 | <sm> | I see.. yes I guess exec has to satisfy deps too, just like build |
| 10:23:23 | → | waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) |
| 10:25:44 | <sm> | carbolymer: I don't know where to see the deps of these packages.. but it looks like cardano-api requires cardano-cli >=8.1.0.1, and you are are asking it to install 8.1.0 |
| 10:26:18 | <sm> | if you're not specifying 8.1.0 on the command line, maybe you need to cabal update ? |
| 10:27:20 | ← | L29Ah parts (~L29Ah@wikipedia/L29Ah) () |
| 10:28:18 | <carbolymer> | sm: I did cabal update, I updated index-states in cabal.project |
| 10:28:39 | <carbolymer> | sm: I think I had an old cabal.project.freeze |
| 10:28:45 | <sm> | ah, right |
| 10:28:47 | <carbolymer> | and that could the the culprit |
| 10:29:49 | → | ardell joins (~ardell@user/ardell) |
| 10:30:51 | <absence> | the ghc documentation seems to suggest that updates to records with duplicate record fields can be disambiguated using an explicit type signature: https://downloads.haskell.org/ghc/9.2.7/docs/html/users_guide/exts/duplicate_record_fields.html#record-updates |
| 10:31:00 | <absence> | however, it doesn't seem to work: https://play.haskell.org/saved/awVx87GB |
| 10:31:08 | <absence> | am i misunderstanding something, or is it a possible bug? |
| 10:33:45 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 10:37:49 | × | titibandit quits (~titibandi@user/titibandit) (Remote host closed the connection) |
| 10:38:29 | → | inversed joins (~inversed@bcdcac82.skybroadband.com) |
| 10:42:49 | → | user____3 joins (~user@dynamic-046-114-177-008.46.114.pool.telefonica.de) |
| 10:44:19 | × | inversed quits (~inversed@bcdcac82.skybroadband.com) (Quit: Connection error?!) |
| 10:44:56 | → | reverse joins (~inversed@bcdcac82.skybroadband.com) |
| 10:57:00 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 11:05:29 | <dminuoso> | anderson: No, its documented quite clearly |
| 11:05:57 | <probie> | absence: "As of GHC 9.4.1, selector names have to be entirely unambiguous (under the usual name resolution rules), while for record updates, there must be at most one datatype that has all the field names being updated." |
| 11:06:04 | <probie> | those docs are for 9.2.7 |
| 11:06:19 | <dminuoso> | Though, their play.haskell.org pad uses GHC 9.2.7 |
| 11:06:27 | <dminuoso> | But it may be, that the manual is not up to date. |
| 11:06:59 | <dminuoso> | The whole business of record fields and updates is one gigantic mistake. :( |
| 11:07:56 | <absence> | probie: i'm using ghc 9.2.7 |
| 11:08:05 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 11:08:57 | × | use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Remote host closed the connection) |
| 11:09:15 | <probie> | absence: it seems to be working to me, apart from the warning that it's not going to be supported in future releases |
| 11:09:16 | → | use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) |
| 11:09:44 | <absence> | dminuoso: the documentation isn't clear enough that i can figure out how to change the code to not produce the warning :/ |
| 11:10:38 | <probie> | absence: short of sticking those data types in a different module to the one you're using them in, or not using record update syntax, you can't get rid of the warning. |
| 11:11:20 | <dminuoso> | absence: Give https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0366-no-ambiguous-field-access.rst#effect-and-interactions a brief read |
| 11:11:31 | <dminuoso> | absence: Consider RecordDotSyntax and/or HasField |
| 11:12:06 | <dminuoso> | The GHC does mention this proposal right in the same sentence where it says that these rules are being removed. |
| 11:12:31 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
| 11:13:10 | × | img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
| 11:16:04 | → | img joins (~img@user/img) |
| 11:18:29 | × | kimiamania quits (~65804703@user/kimiamania) (Quit: PegeLinux) |
| 11:19:35 | → | kimiamania joins (~65804703@user/kimiamania) |
| 11:26:36 | × | YoungFrog quits (~youngfrog@2a02:a03f:ca07:f900:89a5:6020:579e:71c0) (Quit: ZNC 1.7.x-git-3-96481995 - https://znc.in) |
| 11:26:56 | → | YoungFrog joins (~youngfrog@2a02:a03f:ca07:f900:2511:dd1a:efe6:cefd) |
| 11:30:23 | × | ubert quits (~Thunderbi@188-23-67-228.adsl.highway.telekom.at) (Ping timeout: 246 seconds) |
| 11:35:07 | → | gemmaro joins (~user@240f:74:d1f0:1:ba1:e787:c9e:b1dc) |
| 11:48:52 | → | acidjnk joins (~acidjnk@p200300d6e7072f02cde83c9df9d46ae6.dip0.t-ipconnect.de) |
| 11:49:37 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 11:51:40 | → | euandreh joins (~Thunderbi@189.6.18.7) |
| 11:53:08 | <absence> | dminuoso: i don't think OverloadedRecordDot helps, and OverloadedRecordUpdate is flagged as experimental and requires RebindableSyntax. am i understanding correctly that the warning means "things will change", but there's not alternative syntax that will avoid the warning until then? that seems to be what probie suggests as well, so i should just disable the warning and wait for OverloadedRecordUpdate to |
| 11:53:14 | <absence> | stabilise? |
| 12:00:31 | × | Pickchea quits (~private@user/pickchea) (Quit: Leaving) |
| 12:02:45 | × | ddellacosta quits (~ddellacos@146.70.168.196) (Ping timeout: 256 seconds) |
| 12:05:48 | × | Vajb quits (~Vajb@2001:999:585:423d:44d3:48b0:adae:2d85) (Ping timeout: 240 seconds) |
| 12:06:53 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 12:09:41 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Quit: Leaving) |
| 12:09:55 | → | elain4 joins (~textual@2601:5c1:4402:cd30:79c9:ede3:4f08:7c96) |
| 12:09:59 | → | chomwitt joins (~chomwitt@2a02:587:7a09:2000:1ac0:4dff:fedb:a3f1) |
| 12:10:34 | × | euandreh quits (~Thunderbi@189.6.18.7) (Remote host closed the connection) |
| 12:10:41 | × | jero98772 quits (~jero98772@2800:484:1d84:9000::2) (Ping timeout: 256 seconds) |
| 12:14:23 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
| 12:15:25 | × | gensyst quits (~gensyst@user/gensyst) (Ping timeout: 240 seconds) |
| 12:21:45 | → | jero98772 joins (~jero98772@2800:484:1d84:9000::2) |
| 12:27:34 | × | gemmaro quits (~user@240f:74:d1f0:1:ba1:e787:c9e:b1dc) (Remote host closed the connection) |
| 12:31:38 | × | TMA quits (tma@twin.jikos.cz) (Ping timeout: 246 seconds) |
| 12:31:53 | → | TMA joins (tma@twin.jikos.cz) |
| 12:31:59 | × | cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds) |
| 12:34:06 | × | elain4 quits (~textual@2601:5c1:4402:cd30:79c9:ede3:4f08:7c96) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 12:34:24 | → | xff0x joins (~xff0x@ai098135.d.east.v6connect.net) |
| 12:34:42 | × | vandita quits (~vandit@91-83-3-38.pool.digikabel.hu) (Ping timeout: 250 seconds) |
| 12:36:41 | → | vandita joins (~vandit@178-164-171-248.pool.digikabel.hu) |
| 12:41:52 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:510d:16a:b9b3:3b4) |
| 12:42:05 | × | user____3 quits (~user@dynamic-046-114-177-008.46.114.pool.telefonica.de) (Ping timeout: 240 seconds) |
| 12:42:55 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 12:46:24 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:510d:16a:b9b3:3b4) (Ping timeout: 248 seconds) |
| 12:51:38 | → | user____3 joins (~user@dynamic-046-114-177-008.46.114.pool.telefonica.de) |
| 13:00:50 | → | euandreh joins (~Thunderbi@189.6.18.7) |
| 13:00:57 | × | Katarushisu quits (~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net) (Quit: The Lounge - https://thelounge.chat) |
| 13:01:47 | → | Katarushisu joins (~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net) |
| 13:05:11 | × | euandreh quits (~Thunderbi@189.6.18.7) (Ping timeout: 240 seconds) |
| 13:07:25 | × | wiosna quits (~karangura@c-73-93-95-154.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
| 13:10:34 | → | euandreh joins (~Thunderbi@189.6.18.7) |
| 13:14:10 | × | ardell quits (~ardell@user/ardell) (Quit: Konversation terminated!) |
| 13:15:59 | × | jle` quits (~jle`@cpe-23-240-75-236.socal.res.rr.com) (Ping timeout: 240 seconds) |
| 13:17:15 | × | euandreh quits (~Thunderbi@189.6.18.7) (Remote host closed the connection) |
| 13:18:18 | → | jle` joins (~jle`@cpe-23-240-75-236.socal.res.rr.com) |
| 13:19:48 | × | alternateved quits (~user@77-253-195-69.adsl.inetia.pl) (Remote host closed the connection) |
| 13:20:22 | × | jero98772 quits (~jero98772@2800:484:1d84:9000::2) (Ping timeout: 265 seconds) |
| 13:20:23 | → | euandreh joins (~Thunderbi@189.6.18.7) |
| 13:20:26 | → | alternateved joins (~user@77-253-195-69.adsl.inetia.pl) |
| 13:23:51 | <jackdk> | absence: The deprecation warning appears overly aggressive and I don't think that feature is getting fully removed until the open proposal I linked you is implemented. |
| 13:24:14 | × | mei quits (~mei@user/mei) (Ping timeout: 265 seconds) |
| 13:25:46 | × | troydm quits (~troydm@user/troydm) (Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset) |
| 13:28:51 | → | troydm joins (~troydm@user/troydm) |
| 13:29:54 | × | YoungFrog quits (~youngfrog@2a02:a03f:ca07:f900:2511:dd1a:efe6:cefd) (Quit: ZNC 1.7.x-git-3-96481995 - https://znc.in) |
| 13:30:14 | → | YoungFrog joins (~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be) |
| 13:33:40 | → | jero98772 joins (~jero98772@2800:484:1d84:9000::2) |
| 13:34:21 | → | gemmaro joins (~user@240f:74:d1f0:1:ba1:e787:c9e:b1dc) |
| 13:35:08 | × | CiaoSen quits (~Jura@dynamic-046-114-218-076.46.114.pool.telefonica.de) (Ping timeout: 240 seconds) |
| 13:39:18 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 13:39:18 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 13:39:18 | → | wroathe joins (~wroathe@user/wroathe) |
| 13:40:49 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 13:44:32 | × | wroathe quits (~wroathe@user/wroathe) (Quit: Lost terminal) |
| 13:45:11 | × | chomwitt quits (~chomwitt@2a02:587:7a09:2000:1ac0:4dff:fedb:a3f1) (Ping timeout: 264 seconds) |
| 13:45:59 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
| 13:47:04 | × | waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 250 seconds) |
| 13:48:25 | → | nate2 joins (~nate@98.45.169.16) |
| 13:51:50 | × | Inst quits (~Inst@2601:6c4:4081:2fc0:29d6:ec38:cf28:128e) (Ping timeout: 250 seconds) |
| 13:53:11 | × | nate2 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds) |
| 13:55:33 | × | machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Remote host closed the connection) |
| 14:00:00 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 14:04:25 | × | bontaq quits (~user@ool-45779b84.dyn.optonline.net) (Ping timeout: 240 seconds) |
| 14:04:31 | → | cheater joins (~Username@user/cheater) |
| 14:05:45 | × | xff0x quits (~xff0x@ai098135.d.east.v6connect.net) (Quit: xff0x) |
| 14:06:07 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 14:08:52 | → | xff0x joins (~xff0x@ai098135.d.east.v6connect.net) |
| 14:10:20 | × | vglfr quits (~vglfr@209.198.137.192) (Ping timeout: 246 seconds) |
| 14:11:16 | → | vglfr joins (~vglfr@209.198.137.192) |
| 14:14:28 | → | gensyst joins (~gensyst@user/gensyst) |
| 14:16:16 | → | elain4 joins (~textual@static-71-251-226-194.rcmdva.fios.verizon.net) |
| 14:17:02 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 14:17:44 | <gensyst> | hi guys, if your irc client shows the ip address of a user who just joined.. what was my ip when i joined just now? |
| 14:17:56 | <gensyst> | was it the ..44.22 one? |
| 14:18:39 | <TMA> | you are cloaked: 16:14 -!- gensyst [~gensyst@user/gensyst] has joined #haskell |
| 14:18:54 | <gensyst> | ah ok, cool |
| 14:18:55 | <gensyst> | thanks! |
| 14:20:23 | → | shriekingnoise joins (~shrieking@186.137.175.87) |
| 14:21:11 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
| 14:25:33 | <ski> | (iirc `/whois' on yourself shows your host/ip, but not to others, if you have a cloak/vhost) |
| 14:25:58 | <gensyst> | thanks guys |
| 14:29:30 | → | ddellacosta joins (~ddellacos@146.70.185.10) |
| 14:30:27 | × | jero98772 quits (~jero98772@2800:484:1d84:9000::2) (Ping timeout: 265 seconds) |
| 14:37:11 | → | chomwitt joins (~chomwitt@athedsl-351665.home.otenet.gr) |
| 14:37:57 | <gensyst> | How are foreign pointers implemented under the hood? |
| 14:38:02 | <gensyst> | esp. the finalization |
| 14:40:23 | × | euandreh quits (~Thunderbi@189.6.18.7) (Ping timeout: 264 seconds) |
| 14:42:08 | × | vandita quits (~vandit@178-164-171-248.pool.digikabel.hu) (Ping timeout: 248 seconds) |
| 14:43:44 | → | jero98772 joins (~jero98772@2800:484:1d84:9000::2) |
| 14:44:08 | → | vandita joins (~vandit@94-21-233-127.pool.digikabel.hu) |
| 14:47:02 | <geekosaur> | the comments in https://downloads.haskell.org/ghc/9.2.5/docs/html/libraries/base-4.16.4.0/src/GHC.ForeignPtr.html are probably the best you will do with that |
| 14:55:39 | <gensyst> | geekosaur, can you search there for "The storage manager will start the finalizer"? |
| 14:55:57 | <gensyst> | "The storage manager will start the finalizer, in a separate thread, some time after the last reference to the @ForeignPtr@ is dropped." |
| 14:56:13 | <gensyst> | How is this acceptable? Many C libraries require the close/abort to be called on same thread :S |
| 14:57:00 | <gensyst> | oh, this "conc" thing is different from normal foreign ptrs? |
| 14:57:22 | <gensyst> | Do you see anything anywhere about the normal ForeignPtr finalizer beign called on same thread? |
| 14:57:49 | <xilo> | hi, what is the convention about error handling functions in haskell, should I put them in separate module? |
| 14:58:22 | <Rembane> | xilo: What's an error handling function to you? |
| 14:58:59 | → | j4th joins (~Thunderbi@node-1w7jra29eyptmu39fxgzo44wt.ipv6.telus.net) |
| 14:59:11 | <geekosaur> | gensyst, looks to me like "Conc" there means "conmcurrent" and the ForeignPtr in question is explicitly shared between multiple threads |
| 14:59:12 | × | j4th quits (~Thunderbi@node-1w7jra29eyptmu39fxgzo44wt.ipv6.telus.net) (Remote host closed the connection) |
| 14:59:44 | <geekosaur> | as opposed to, say, `withForeignPtr` which is explicitly in a single thread |
| 15:00:48 | <xilo> | like separate data constructor and Either Monad |
| 15:01:36 | <geekosaur> | gensyst, otherwise I would assume in the lack of other documentation that it obeys the usual thread rules: if it's a `forkOS` thread then it's guaranteed to use the same OS thread, otherwise there isn't any such guarnatee even for normal thread scheduling much less GC |
| 15:01:40 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 15:01:57 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 15:02:47 | × | elain4 quits (~textual@static-71-251-226-194.rcmdva.fios.verizon.net) (Remote host closed the connection) |
| 15:03:19 | → | paulpaul1076 joins (~textual@95-29-4-192.broadband.corbina.ru) |
| 15:03:34 | <gensyst> | geekosaur, by what mechanism do you think it can keep the original OS thread alive (in the forkOS case) and call the finalizer onto it later? |
| 15:03:48 | <gensyst> | that mechanism doesn't seem to be available in general, for other uses. (i.e. keep a thread alive like that, for later use) |
| 15:04:00 | <geekosaur> | that's the whole point of `forkOS` threads |
| 15:04:42 | <geekosaur> | and, ell, the I/O manager keeps the main thread pool, iirc. you'll need someone better versed in RTS internals to find out details though |
| 15:04:50 | <gensyst> | geekosaur, but the point of foreignptrs is that the fianlizer will get called after the code *I as the programmer wrote* is over. |
| 15:04:59 | <gensyst> | so somehow it manages to call back into it |
| 15:06:08 | <geekosaur> | you might note there is no way to destroy an OS thread |
| 15:06:29 | <geekosaur> | or even create one explicitly although IIRC in practice `forkOS` does create a dedicated OS thread |
| 15:06:49 | <hololeap> | this profiling report shows that 43.1% of time is used by IDLE and 41.9% is used by GC: http://sprunge.us/078r3P |
| 15:06:59 | <geekosaur> | anyway you need to ask about this in #ghc and hope an RTS concurrency expert is around |
| 15:07:29 | <hololeap> | it doesn't seem like it should be using the GC so much. here is the code. I can clarify anything if needed: https://github.com/hololeap/hackport/commit/e56050246476949f255cee9596d2c865471e5be8 |
| 15:07:43 | → | hamzam3 joins (~hamzam3@2a01:e0a:1ee:8c60:c112:84e5:1df:32b0) |
| 15:08:16 | <hamzam3> | Hey guys, I am creating a browser in Haskell if anyone wants to participate: https://github.com/HamzaM3/yes-browser |
| 15:08:23 | × | hamzam3 quits (~hamzam3@2a01:e0a:1ee:8c60:c112:84e5:1df:32b0) (Client Quit) |
| 15:09:05 | → | hamzam3 joins (~hamzam3@2a01:e0a:1ee:8c60:c112:84e5:1df:32b0) |
| 15:10:18 | <hololeap> | I _think_ I made the Trie datatype as strict as possible, or maybe that's not the issue here? I'm new to profiling so I'm not exactly sure what to glean from the report, but it does seem excessively slow |
| 15:11:08 | <hololeap> | also, this report is using the Trie cached in a file (deserialized using the binary package) |
| 15:16:34 | <gensyst> | geekosaur, thanks i'm going to ask on #ghc |
| 15:19:59 | × | hamzam3 quits (~hamzam3@2a01:e0a:1ee:8c60:c112:84e5:1df:32b0) (Ping timeout: 264 seconds) |
| 15:19:59 | × | hamzahaskell1 quits (~hamzahask@2a01:e0a:1ee:8c60:c112:84e5:1df:32b0) (Ping timeout: 264 seconds) |
| 15:20:55 | → | euandreh joins (~Thunderbi@189.6.18.7) |
| 15:22:06 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 15:22:26 | → | ubert joins (~Thunderbi@188-23-67-228.adsl.highway.telekom.at) |
| 15:30:43 | × | user____3 quits (~user@dynamic-046-114-177-008.46.114.pool.telefonica.de) (Ping timeout: 256 seconds) |
| 15:33:00 | × | vglfr quits (~vglfr@209.198.137.192) (Read error: Connection reset by peer) |
| 15:33:14 | → | vglfr joins (~vglfr@209.198.137.192) |
| 15:33:36 | × | dhil quits (~dhil@78.45.150.83.ewm.ftth.as8758.net) (Ping timeout: 268 seconds) |
| 15:34:35 | × | vglfr quits (~vglfr@209.198.137.192) (Read error: Connection reset by peer) |
| 15:34:43 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:510d:16a:b9b3:3b4) |
| 15:38:07 | → | AlexNoo_ joins (~AlexNoo@178.34.163.104) |
| 15:39:09 | → | ub joins (~Thunderbi@188-23-67-228.adsl.highway.telekom.at) |
| 15:39:12 | → | vglfr joins (~vglfr@209.198.137.192) |
| 15:40:08 | × | jero98772 quits (~jero98772@2800:484:1d84:9000::2) (Ping timeout: 240 seconds) |
| 15:41:08 | × | AlexNoo quits (~AlexNoo@178.34.151.85) (Ping timeout: 240 seconds) |
| 15:41:11 | × | ubert quits (~Thunderbi@188-23-67-228.adsl.highway.telekom.at) (Ping timeout: 240 seconds) |
| 15:41:11 | ub | is now known as ubert |
| 15:41:37 | × | Alex_test quits (~al_test@178.34.151.85) (Ping timeout: 268 seconds) |
| 15:42:14 | × | AlexZenon quits (~alzenon@178.34.151.85) (Ping timeout: 268 seconds) |
| 15:42:40 | → | user____3 joins (~user@dynamic-046-114-177-008.46.114.pool.telefonica.de) |
| 15:46:08 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 248 seconds) |
| 15:48:09 | → | titibandit joins (~titibandi@user/titibandit) |
| 15:49:23 | → | Alex_test joins (~al_test@178.34.163.104) |
| 15:50:33 | × | vglfr quits (~vglfr@209.198.137.192) (Ping timeout: 256 seconds) |
| 15:51:46 | → | waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) |
| 15:53:08 | → | jero98772 joins (~jero98772@2800:484:1d84:9000::2) |
| 15:53:12 | → | vglfr joins (~vglfr@209.198.137.192) |
| 15:55:34 | → | AlexZenon joins (~alzenon@178.34.163.104) |
| 15:55:57 | <texasmynsted> | Could somebody please recommend some resources for data modeling (in Haskell). I have found a little here an there... Do you know of anything that takes a deep dive into this subject? |
| 15:59:52 | → | cheater_ joins (~Username@user/cheater) |
| 16:02:17 | × | cheater quits (~Username@user/cheater) (Ping timeout: 265 seconds) |
| 16:02:18 | cheater_ | is now known as cheater |
| 16:03:15 | × | TheMatten[m] quits (~thematten@2001:470:69fc:105::1:5ba1) (Remote host closed the connection) |
| 16:05:47 | <[exa]> | texasmynsted: that's a pretty wide topic tbh |
| 16:06:28 | × | alternateved quits (~user@77-253-195-69.adsl.inetia.pl) (Remote host closed the connection) |
| 16:06:31 | <[exa]> | texasmynsted: I assume you mean something like "how to represent stuff X best with algebraic data types" ? |
| 16:06:43 | → | econo joins (uid147250@user/econo) |
| 16:07:47 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:510d:16a:b9b3:3b4) (Remote host closed the connection) |
| 16:08:20 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 16:10:26 | AlexNoo_ | is now known as AlexNoo |
| 16:11:49 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 16:12:25 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
| 16:13:59 | × | vglfr quits (~vglfr@209.198.137.192) (Ping timeout: 240 seconds) |
| 16:16:07 | → | mauke joins (~mauke@user/mauke) |
| 16:16:42 | × | titibandit quits (~titibandi@user/titibandit) (Remote host closed the connection) |
| 16:17:04 | → | vglfr joins (~vglfr@2a0d:3344:1b4f:9e10:ec99:a92:e82a:fcbf) |
| 16:18:14 | <texasmynsted> | It is a wide topic area. It feels big enough to devote an entire book to the subject. |
| 16:21:01 | × | vglfr quits (~vglfr@2a0d:3344:1b4f:9e10:ec99:a92:e82a:fcbf) (Ping timeout: 240 seconds) |
| 16:21:31 | <texasmynsted> | Something like: Model basic types like this... Model sum types like this, product types like this. Here is how and when we need explicit Universal/ existential quantification... |
| 16:21:54 | <texasmynsted> | When to use record types, when better alternatives should be considered... |
| 16:22:42 | → | vglfr joins (~vglfr@209.198.137.192) |
| 16:23:29 | <texasmynsted> | Something that takes the theory/ideas and shows how to apply them as practical solutions to common problems. |
| 16:27:00 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 16:28:45 | × | cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds) |
| 16:37:52 | × | gemmaro quits (~user@240f:74:d1f0:1:ba1:e787:c9e:b1dc) (Remote host closed the connection) |
| 16:40:24 | → | motherfsck joins (~motherfsc@user/motherfsck) |
| 16:42:16 | → | _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) |
| 16:42:19 | × | vglfr quits (~vglfr@209.198.137.192) (Read error: Connection reset by peer) |
| 16:42:42 | → | vglfr joins (~vglfr@209.198.137.192) |
| 16:43:00 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 16:44:09 | × | vglfr quits (~vglfr@209.198.137.192) (Read error: Connection reset by peer) |
| 16:45:57 | → | joeyh_ joins (~joeyh@kitenet.net) |
| 16:46:14 | × | joeyh quits (~joeyh@kitenet.net) (Ping timeout: 265 seconds) |
| 16:46:48 | × | tureba quits (~tureba@tureba.org) (Ping timeout: 240 seconds) |
| 16:46:59 | × | dumptruckman quits (~dumptruck@143-42-239-71.ip.linodeusercontent.com) (Ping timeout: 268 seconds) |
| 16:47:28 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 16:47:57 | → | dumptruckman joins (~dumptruck@143-42-239-71.ip.linodeusercontent.com) |
| 16:49:55 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
| 16:50:35 | → | hamzam3 joins (~hamzam3@2a01:e0a:1ee:8c60:6793:fba0:f7a2:38d2) |
| 16:50:37 | → | hamzahaskell1 joins (~hamzahask@2a01:e0a:1ee:8c60:6793:fba0:f7a2:38d2) |
| 16:51:21 | → | vglfr joins (~vglfr@209.198.137.192) |
| 16:52:24 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:510d:16a:b9b3:3b4) |
| 16:53:45 | × | ubert quits (~Thunderbi@188-23-67-228.adsl.highway.telekom.at) (Remote host closed the connection) |
| 16:54:13 | × | vpan quits (~0@mail.elitnet.lt) (Quit: Leaving.) |
| 16:54:19 | × | gensyst quits (~gensyst@user/gensyst) (Quit: Leaving) |
| 16:54:50 | × | oo_miguel quits (~Thunderbi@77.252.47.84) (Ping timeout: 246 seconds) |
| 16:55:47 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 16:57:23 | × | hamzahaskell1 quits (~hamzahask@2a01:e0a:1ee:8c60:6793:fba0:f7a2:38d2) (Ping timeout: 265 seconds) |
| 16:57:23 | × | hamzam3 quits (~hamzam3@2a01:e0a:1ee:8c60:6793:fba0:f7a2:38d2) (Ping timeout: 265 seconds) |
| 16:59:30 | → | tureba joins (~tureba@tureba.org) |
| 17:03:38 | → | emmanuelux joins (~emmanuelu@user/emmanuelux) |
| 17:04:52 | → | m1-s[m] joins (~m1-smatri@2001:470:69fc:105::2:39da) |
| 17:06:02 | × | vandita quits (~vandit@94-21-233-127.pool.digikabel.hu) (Ping timeout: 246 seconds) |
| 17:07:54 | → | vandita joins (~vandit@85-238-77-50.pool.digikabel.hu) |
| 17:15:38 | → | oo_miguel joins (~Thunderbi@77.252.47.84) |
| 17:19:01 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds) |
| 17:21:32 | × | vglfr quits (~vglfr@209.198.137.192) (Read error: Connection reset by peer) |
| 17:21:40 | → | vglfr joins (~vglfr@209.198.137.192) |
| 17:23:20 | × | vglfr quits (~vglfr@209.198.137.192) (Read error: Connection reset by peer) |
| 17:23:32 | → | vglfr joins (~vglfr@209.198.137.192) |
| 17:24:45 | × | vglfr quits (~vglfr@209.198.137.192) (Read error: Connection reset by peer) |
| 17:25:51 | → | vglfr joins (~vglfr@209.198.137.192) |
| 17:25:53 | × | vglfr quits (~vglfr@209.198.137.192) (Read error: Connection reset by peer) |
| 17:26:14 | → | vglfr joins (~vglfr@209.198.137.192) |
| 17:26:20 | × | vglfr quits (~vglfr@209.198.137.192) (Read error: Connection reset by peer) |
| 17:26:32 | → | vglfr joins (~vglfr@209.198.137.192) |
| 17:28:28 | × | vglfr quits (~vglfr@209.198.137.192) (Read error: Connection reset by peer) |
| 17:30:14 | → | vglfr joins (~vglfr@209.198.137.192) |
| 17:34:45 | → | Inst joins (~Inst@2601:6c4:4081:2fc0:ddcc:91ce:26fa:a2d4) |
| 17:34:45 | × | vglfr quits (~vglfr@209.198.137.192) (Read error: Connection reset by peer) |
| 17:34:57 | → | vglfr joins (~vglfr@209.198.137.192) |
| 17:35:00 | × | vglfr quits (~vglfr@209.198.137.192) (Read error: Connection reset by peer) |
| 17:35:14 | → | vglfr joins (~vglfr@209.198.137.192) |
| 17:36:21 | ski | . o O ( "Modelling Large Datasets Using Algebraic Datatypes: A Case Study of the CONFMAN Database" in 2002-05-15 at <https://ofai.at/papers/oefai-tr-2002-27.pdf>,"Using Algebraic Datatypes as Uniform Representation for Structured Data" in 2003 at <https://ofai.at/papers/oefai-tr-2003-07.pdf>, both by Markus Mottl ) |
| 17:42:23 | → | Guest|41 joins (~Guest|41@177.51.6.70) |
| 17:43:27 | × | Guest|41 quits (~Guest|41@177.51.6.70) (Client Quit) |
| 17:49:55 | → | nate2 joins (~nate@98.45.169.16) |
| 17:54:00 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:510d:16a:b9b3:3b4) (Remote host closed the connection) |
| 17:54:28 | × | nate2 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds) |
| 17:56:05 | → | cheater joins (~Username@user/cheater) |
| 17:56:26 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:510d:16a:b9b3:3b4) |
| 17:57:04 | → | titibandit joins (~titibandi@user/titibandit) |
| 18:01:41 | → | spatchkaa joins (~spatchkaa@S010600fc8da47b63.gv.shawcable.net) |
| 18:08:20 | <Inst> | welp, finally got Fumiaki Kinoshita's Objective working |
| 18:09:25 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 240 seconds) |
| 18:09:46 | → | nick_ joins (~nick@2600:8807:9103:b700:4573:4de0:330c:f2fa) |
| 18:15:31 | × | cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds) |
| 18:23:59 | <Inst> | tbh, can I ask about strictness annotations on accum params? |
| 18:24:02 | → | cheater joins (~Username@user/cheater) |
| 18:24:03 | <Inst> | This is REALLY disappointing |
| 18:24:26 | <Inst> | like, I dislike XStrict because I think laziness is the point of Haskell |
| 18:24:52 | <Inst> | but the two seem rather related |
| 18:25:23 | <Inst> | accum param recursion (aka iteration) seems to require strictness all the time |
| 18:25:46 | <Inst> | bleh, maybe one day i'll finally get good enough to contribute to GHC and just render accum param recursion strict via strictness analyzer by default |
| 18:29:38 | → | Vajb joins (~Vajb@2001:999:489:89c8:241a:21c3:9f8f:9a9a) |
| 18:32:38 | <Inst> | ironically, the effect of finally learning objective, learning some OOP via Python and Ruby |
| 18:32:57 | <Inst> | is that I appreciate Haskell's purity more; i.e, Haskell is a fount of innovation and novel research |
| 18:33:19 | <Inst> | ad-hoc solutions result in band-aiding everything and result in, well, just Algol with new features |
| 18:33:32 | <jade[m]> | mhm, for me it was the other way around with the same effect |
| 18:33:49 | <jade[m]> | finally learning haskell after oop was such an enlightenment |
| 18:33:51 | × | spatchkaa quits (~spatchkaa@S010600fc8da47b63.gv.shawcable.net) (Quit: Client closed) |
| 18:34:31 | <Inst> | i mean I consider Haskell my first language, although I played around with BASIC, Visual Basic, C++ when I was a kid |
| 18:34:44 | → | spatchkaa joins (~spatchkaa@S010600fc8da47b63.gv.shawcable.net) |
| 18:34:55 | <jade[m]> | interesting |
| 18:34:57 | <Inst> | same effect of monomer, i.e, monomer, when I look through the codebase |
| 18:34:58 | <texasmynsted> | ski: thank you for the pdf link |
| 18:35:04 | <Inst> | {-# LANGUAGE Strict #-} everywhere |
| 18:35:18 | <Inst> | the widget model is very OOP-ish |
| 18:36:00 | <Inst> | I ask around about FRP, I'm told it's okay / good for games, bad for GUI, but that does make me think, i.e, there are quite a few unsolved problems in Haskell |
| 18:36:04 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 18:36:27 | <Inst> | just band-aiding them with conventional solutions means that the research sucks, we just stick to the old paradigms and old ways of doing things, without aggressive blue-sky research on how to do it better |
| 18:36:37 | <Inst> | so I guess I'm less of a pragmatist now |
| 18:36:49 | <[exa]> | texasmynsted: btw there's this principle "single point of self-evident truth", most of the data structure design is about making this one work w.r.t. 1] hardware and 2] the operations you want to run quickly |
| 18:36:51 | <texasmynsted> | Inst: I am unclear how these are Haskell problems. |
| 18:37:07 | <jade[m]> | what unsolved problems in particular? |
| 18:37:12 | <Inst> | texasmynsted: what Haskell problems are you referring to? |
| 18:37:45 | <texasmynsted> | I refer to > Inst: I ask around about FRP, I'm told it's okay / good for games, bad for GUI, but that does make me think, i.e, there are quite a few unsolved problems in Haskell |
| 18:38:03 | <[exa]> | Inst: well it's kinda hard to grasp a unique point you're making in the last ~15 messages |
| 18:38:35 | <[exa]> | except for the "random band-aid is bad", that's clear :D |
| 18:38:59 | <Inst> | I believe that FP does not have a good solution for GUI; there's no "major" Haskell GUI app |
| 18:39:11 | <Inst> | That, FRP is still a work in progress |
| 18:39:26 | <Inst> | and problems are good, because they demand novel solutions |
| 18:39:41 | <jade[m]> | Inst: is that a FP or tooling/library issue in your opinion? |
| 18:39:50 | <texasmynsted> | [exa]: My coal is to abstract away from the hardware as much as possible. I want to be declarative and model data in such a way as it makes the most sense. (Like math). I can worry about the hardware if or when needed. |
| 18:39:56 | <texasmynsted> | s/coal/goal/ |
| 18:40:15 | <sm> | not having a state of the art native GUI system is always more a matter of economics, not technology |
| 18:41:21 | <sm> | Haskell is technically perfectly capable of it |
| 18:42:36 | <jade[m]> | but what's the actual issue - is the way of programming the gui too <insert bad thing here> or does it just not look good, no matter what you try? |
| 18:42:42 | <jade[m]> | or is it something else entirely |
| 18:42:54 | <Inst> | oh, it just feels too imperative / OOP-ish |
| 18:43:02 | <Inst> | I was told that GUI is intrinsically stateful |
| 18:43:04 | <[exa]> | texasmynsted: at that point you're basically just following the SPOT rule and "mathematically easy" transformations, such as not having to do too much mental operation to have something changed... Did you see how zipper structures work? that's IMO a good demo of the tradeoffs |
| 18:43:12 | → | rf joins (~rf@142.99.241.246) |
| 18:43:26 | <jade[m]> | Inst: even with like gui combinators and state transition functions? |
| 18:43:30 | <[exa]> | Inst: I'd like to expand on that, I didn't see a good GUI solution yet, ever. Except maybe for imgui and brick, these are magique. |
| 18:43:49 | <Inst> | I need to go learn Linux for brick because of the vty / windows problem |
| 18:44:08 | <[exa]> | learning a unix is always a good investment tbh |
| 18:44:28 | <jade[m]> | [exa]: I wanted to bring up brick which seems very idiomatic in terms of functional ~~gui~~ tui desigm |
| 18:44:46 | <[exa]> | same for Elm probably |
| 18:44:50 | <[exa]> | Inst: ^ |
| 18:45:15 | <jade[m]> | s/desigm/design |
| 18:46:09 | <ski> | texasmynsted : i think probably not quite what you were looking for. i was just reminded of it |
| 18:46:48 | <sm> | argh, when will a windows hacker make brick/vty work there |
| 18:47:48 | <geekosaur> | iirc that will require massive changes because while unix uses escape sequences windows uses the equivalent of ioctl() |
| 18:47:54 | <sm> | so many years now, it's odd. Windows hackers + free time + haskell + interested in terminal = 0 ? |
| 18:48:05 | <geekosaur> | so every single I/O operation has to be conditionalized on platform |
| 18:48:08 | <texasmynsted> | No I have not looked at how zipper structures work... So far that is pretty interesting. |
| 18:48:46 | <sm> | geekosaur: ouch |
| 18:49:11 | <jade[m]> | sm: I feel like most haskell users are on linux - and haskell also plays into that with ghcup for example being linux only |
| 18:49:19 | <ski> | @where zipper |
| 18:49:19 | <lambdabot> | http://www.haskell.org/haskellwiki/Zipper |
| 18:49:21 | <jade[m]> | it might have gotten windows support just recently |
| 18:49:36 | <ski> | [exa] : "SPOT" ? |
| 18:49:44 | <geekosaur> | huh? ghcup supports windows for everything but tui, which requires brick |
| 18:49:58 | <geekosaur> | there's been a powershell recipe to install it for over a year |
| 18:50:02 | <texasmynsted> | I am just surprised nobody has written "Data modeling in Haskell" or "Data Driven Design in Haskell" or "Haskell type tetris" . . . etc . . . |
| 18:50:44 | <sm> | ghcyup |
| 18:50:49 | <jade[m]> | geekosaur: yes? I might have thought of something else |
| 18:51:07 | <sm> | texasmynsted: there are a few things along that line.. maybe in |
| 18:51:07 | <sm> | @where books |
| 18:51:07 | <lambdabot> | https://www.extrema.is/articles/haskell-books is the best list of Haskell books. See also: LYAH, HTAC, RWH, PH, YAHT, SOE, HR, PIH, TFwH, wikibook, PCPH, HPFFP, FSAF, HftVB, TwT, FoP, PFAD, WYAH, |
| 18:51:07 | <lambdabot> | non-haskell-books |
| 18:53:40 | <sm> | dang that's a lot of books |
| 18:53:50 | × | cheater quits (~Username@user/cheater) (Ping timeout: 246 seconds) |
| 18:55:53 | → | evincar joins (~evincar@user/evincar) |
| 18:56:07 | <sm> | https://leanpub.com/thinking-with-types looks to be more "thinking about types" |
| 18:56:18 | → | cheater joins (~Username@user/cheater) |
| 18:57:00 | <sm> | https://www.packtpub.com/product/haskell-cookbook/9781786461353 is a practical cookbook, as is |
| 18:57:00 | <sm> | @where HTAC |
| 18:57:00 | <lambdabot> | "Haskell Tutorial and Cookbook" by Mark Watson in 2017-09-04 at <https://leanpub.com/haskell-cookbook> |
| 18:58:24 | <Inst> | sm |
| 18:58:38 | <Inst> | Haskell Windows support is atrocious, it's there, and that's great, but I think it was primarily because of Hugs and so on |
| 18:58:41 | <sm> | https://www.packtpub.com/product/haskell-design-patterns/9781783988723 looks good but still not seeing much talk of concrete modelling/design. I'm not totally sure what your book would look like, but I feel it might be out there |
| 18:59:23 | <Inst> | The sad thing is, I don't think any cheers will go up when Phyx and bgamari[m] finally get getChar and getLine working properly on Windows |
| 18:59:27 | ski | idly remembers `WinHugs' |
| 18:59:56 | <geekosaur> | there's still (or used to be) WinGhci although it may have bitrotted |
| 19:00:03 | <ski> | yea. ndm |
| 19:00:29 | <sm> | (last one: don't miss https://leanpub.com/production-haskell ) |
| 19:00:32 | <texasmynsted> | Wow, I found another Sandy Maguire book I need^^^^want! |
| 19:00:37 | <Inst> | is it supposed to work that way? |
| 19:00:38 | <Inst> | https://media.discordapp.net/attachments/968989726633779215/1109193869242929193/image.png?width=442&height=402 |
| 19:00:56 | <texasmynsted> | https://www.extrema.is/articles/haskell-books/algebra-driven-design |
| 19:01:05 | <geekosaur> | Inst, yes |
| 19:01:09 | <Inst> | wait, really? |
| 19:01:13 | <geekosaur> | by default input is line buffered |
| 19:01:20 | <geekosaur> | as with any other program |
| 19:01:36 | <geekosaur> | use `hSetBuffering stdin NoBuffering` to change this |
| 19:01:42 | → | cheater_ joins (~Username@user/cheater) |
| 19:01:47 | <texasmynsted> | I have been sooo close to buying "Production Haskell" a number of times. |
| 19:02:17 | <sm> | I think I actually did (and promptly forgot it existed) |
| 19:02:28 | <hololeap> | in case anyone was interested, my program's speed increased significantly by putting the Trie in a compact region |
| 19:02:38 | <mauke> | induction haskell? |
| 19:02:38 | <texasmynsted> | I have far more books than I could read |
| 19:02:43 | <sm> | that's the power of a good TOC! All you need! :) |
| 19:03:01 | <Inst> | bleh, damnit, I'm going to reboot into my Deb partition |
| 19:03:07 | <Inst> | I swear it's not supposed to be this way |
| 19:03:13 | × | Inst quits (~Inst@2601:6c4:4081:2fc0:ddcc:91ce:26fa:a2d4) (Read error: Connection reset by peer) |
| 19:03:15 | <tomsmeding> | Inst: what's not supposed to be this way |
| 19:03:16 | <tomsmeding> | oh |
| 19:03:33 | <tomsmeding> | ah, on linux stdin seems to be in NoBuffering mode by default |
| 19:03:52 | <tomsmeding> | perhaps on windows, ghci reads from the terminal directly whereas getChar reads from stdin? Or something? |
| 19:04:01 | <geekosaur> | it varies, in ghci it's NoBuffering because of readline/haskeline, in a program it's line buffered |
| 19:04:16 | <geekosaur> | and yes, emulation of this on windows is weird |
| 19:04:25 | × | cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds) |
| 19:04:29 | cheater_ | is now known as cheater |
| 19:04:30 | <tomsmeding> | geekosaur: on linux I'm not reproducing Inst's screenshot |
| 19:04:39 | <geekosaur> | interesting |
| 19:04:48 | <tomsmeding> | https://tomsmeding.com/ss/get/tomsmeding/cmN89k |
| 19:05:00 | <tomsmeding> | different behaviour all around |
| 19:05:24 | <tomsmeding> | here ghci is clearly reading command input from the same stream as getChar is reading from |
| 19:05:25 | <geekosaur> | yeh, that would make sense on linux, there's only one terminal I/O stream |
| 19:05:30 | <tomsmeding> | showing that on windows that's not the case |
| 19:05:34 | <geekosaur> | windows is different, as I said |
| 19:05:37 | <tomsmeding> | geekosaur: no, there's also /dev/tty |
| 19:05:43 | <geekosaur> | try it sometime |
| 19:05:48 | <tomsmeding> | ghci doesn't use it, and it shouldn't, so all is well |
| 19:05:52 | <geekosaur> | /dev/tty is an alias |
| 19:06:50 | → | Inst joins (~Inst@2601:6c4:4081:2fc0:e418:a15:6c7d:2dee) |
| 19:07:01 | <Inst> | tried it on Linux, getChar's behavior is not preferred, but adequate, under 9.6.1 |
| 19:07:09 | <tomsmeding> | Inst: https://tomsmeding.com/ss/get/tomsmeding/cmN89k my linux experience |
| 19:07:10 | <Inst> | will take a char, then immediately return on GHCI |
| 19:07:17 | <geekosaur> | there's still only one input stream, which can be accessed as stdin when it's attached to the terminal, or /dev/tty, or in somewhat freakish other ways (for example session setup `dup()`s stdin onto stdout and stderr so it's possible to read from stdout when it's a terminal |
| 19:07:19 | <geekosaur> | ) |
| 19:07:26 | <Inst> | possible this is a GHCI issue, not a GHC issue |
| 19:07:27 | <tomsmeding> | Inst: https://ircbrowse.tomsmeding.com/browse/lchaskell?id=965035#trid965035 |
| 19:07:53 | × | vandita quits (~vandit@85-238-77-50.pool.digikabel.hu) (Ping timeout: 265 seconds) |
| 19:08:02 | <tomsmeding> | geekosaur: hm, you're probably right, somehow I thought this worked differently |
| 19:09:16 | → | vandita joins (~vandit@80-95-69-243.pool.digikabel.hu) |
| 19:09:36 | <tomsmeding> | geekosaur: ah I was confusing reading from /dev/tty with writing to /dev/tty |
| 19:09:42 | <tomsmeding> | writing to /dev/tty is not the same as writing to stdout |
| 19:09:47 | <geekosaur> | right |
| 19:10:20 | <tomsmeding> | iirc sudo writes the prompt to /dev/tty so that it works even if its output is piped to a pager or something |
| 19:10:23 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 240 seconds) |
| 19:10:50 | <tomsmeding> | Inst: what's your preferred behaviour |
| 19:10:59 | <geekosaur> | yeh, all I/O to /dev/tty so you can pipe to/from it |
| 19:11:24 | <Inst> | https://media.discordapp.net/attachments/968989726633779215/1109196545523458149/image.png?width=1232&height=300 |
| 19:11:58 | <Inst> | https://paste.tomsmeding.com/Y69PQ49f |
| 19:12:31 | <tomsmeding> | you're not outputting anything, so seems right? |
| 19:13:11 | <Inst> | is this some unsafeInterleaveIO thing with getChar? |
| 19:13:16 | <tomsmeding> | what? |
| 19:13:20 | <tomsmeding> | what did you expect to happen |
| 19:13:35 | <tomsmeding> | in a program, stdin is line-buffered by default |
| 19:13:36 | <Inst> | ah, okay, I guess this is intended behavior |
| 19:13:43 | <Inst> | I was expecting it to set up two different input prompts |
| 19:13:55 | <tomsmeding> | ghci on linux sets it to unbuffered to be able to read your commands as they come |
| 19:13:57 | <Inst> | and I turned off the line-buffering via hSetBuffering stdin NoBuffering? |
| 19:14:02 | <tomsmeding> | oh right |
| 19:14:30 | <Inst> | as to your question of preferred behavior, i.e, read two separate keypresses |
| 19:14:42 | → | mapniv joins (~mapniv@user/Mapniv) |
| 19:14:42 | <tomsmeding> | interesting, on linux that does work |
| 19:15:22 | <tomsmeding> | Inst: what happens on windows if you do 'c <- getChar; c' <- getChar; print (c, c')' |
| 19:15:24 | <Inst> | iirc there was a discussion of issues with haskelline |
| 19:15:44 | <tomsmeding> | with your man program, no haskeline is involved |
| 19:15:53 | <Inst> | the Winio RTSopts are even more of a mess |
| 19:16:58 | <tomsmeding> | if printing the read characters only prints them after you press enter, it indeed seems as geekosaur said that NoBuffering doesn't work well on windows |
| 19:17:04 | <tomsmeding> | s/well/at all/? |
| 19:17:28 | <geekosaur> | windows is technically always in NoBuffering mode |
| 19:17:34 | <Inst> | re phyx, iirc, there was discussion that ghc / ghci was running haskelline under the hood |
| 19:17:38 | <Inst> | and it was blowing up |
| 19:17:50 | <Inst> | also, the GHC compile on Linux (Deb) was far faster than the Windows compile |
| 19:17:50 | <tomsmeding> | ghci uses haskeline, right? |
| 19:17:54 | <geekosaur> | yes |
| 19:17:57 | <Inst> | i think |
| 19:18:04 | <tomsmeding> | any ghc-compiled program is not going to use haskeline without you explicitly using it |
| 19:18:13 | <Inst> | https://media.discordapp.net/attachments/968989726633779215/1109198308037107802/image.png?width=1290&height=534 |
| 19:18:23 | <geekosaur> | but more to the point, BCO uses haskeline so anything run under ghci or runghc gets it |
| 19:18:37 | <tomsmeding> | BCO? |
| 19:18:48 | <geekosaur> | but compiled programs don't unless you explicitly use it |
| 19:18:53 | <geekosaur> | the bytecode backend |
| 19:18:55 | <tomsmeding> | Inst: what step is slow on windows, Compiling or Linking? |
| 19:19:03 | × | mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 19:19:09 | <tomsmeding> | geekosaur: ah |
| 19:19:26 | <tomsmeding> | only on windows I guess? |
| 19:19:35 | <tomsmeding> | or is the input of any runghc program really passed through haskeline |
| 19:19:40 | <tomsmeding> | that sounds dumb and redundant |
| 19:19:41 | <geekosaur> | it really is |
| 19:19:48 | × | coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot) |
| 19:19:49 | <tomsmeding> | what's haskeline doing |
| 19:20:04 | <geekosaur> | nothing much, it's just how things are implemented |
| 19:20:09 | <tomsmeding> | its functionality is completely useless |
| 19:20:26 | <sm> | wow, this is some serious terminal I/O lore that deserves its own.. page or something |
| 19:20:44 | <tomsmeding> | except if you need to manually implement backspace on windows, but then that hardly warrants haskeline |
| 19:20:50 | sm | . o O ( ..podcast.. ) |
| 19:21:11 | <Inst> | possibly linking, could just be clang's fault |
| 19:21:19 | tomsmeding | . o O ( Everything You Did and Did Not Want to Know About Terminal IO in Haskell ) |
| 19:21:45 | <geekosaur> | basically it's much easier and saner to do things this way because constantly switching between haskeline and line oriented mode in ghci would be slow and produce unexpected behavior at times |
| 19:21:47 | <tomsmeding> | Inst: linking haskell programs is indeed excessively slow on windows |
| 19:22:00 | <geekosaur> | and runghc inherits it because it's secretly ghci in the background |
| 19:22:00 | <tomsmeding> | interesting |
| 19:23:11 | tomsmeding | would expect ghci to do said switching |
| 19:23:18 | <geekosaur> | the shell can also have these weirdnesses happen because it does switch between line and character/readline mode, and zsh actually has some hacks to warn you when it thinks it's happened (reverse video percent sign) |
| 19:23:22 | <Inst> | ehhh, but i'd say getting GHCI / compiled Haskell terminal programs to work properly on getLine / getChar on Windows is higher priority than getting vty working |
| 19:23:38 | <Inst> | https://www.reddit.com/r/haskell/comments/ht4ehe/comment/fyeo644/?utm_source=share&utm_medium=web2x&context=3 |
| 19:23:41 | <tomsmeding> | and do the work to pass retain the leftover input buffer from line-buffered mode to pass that to haskeline |
| 19:24:56 | <geekosaur> | tomsmeding, the reason ghci doesn't is that you can have threads running while the ghci prompt is up and there's no way to stop them from doing I/O |
| 19:25:05 | <Inst> | do windows hackers have a cladic allergic to Haskell? ;_; |
| 19:25:07 | <geekosaur> | (shells *can* stop them, they get SIGTTIN) |
| 19:25:09 | <mauke> | the zsh reverse percent sign is for incomplete output (unterminated line), not input, though |
| 19:25:15 | <tomsmeding> | geekosaur: lol that's true |
| 19:25:41 | tomsmeding | thought the same as mauke, fish also does that with a neat ⏎ sign |
| 19:26:57 | × | rf quits (~rf@142.99.241.246) (Remote host closed the connection) |
| 19:27:20 | → | rf joins (~rf@142.99.241.246) |
| 19:29:08 | <tomsmeding> | Inst: I suspect that Haskell programmers typically find programming fun (otherwise they'd stay with languages that pay), and such people also typically find tinkering with software fun, and such people typically want a unixy system and not a windows system |
| 19:29:16 | <Inst> | btw, one thing, thanks for putting up with me, at least, the folks who've been willing to do so, you guys are a great introduction to CS / programming and I wish everyone could have a similar experience, except without the cost involved on your side |
| 19:30:53 | <Inst> | it's more a newbie thing, I think starting with Haskell is a great way to get into proper CS / programming as a science / art beyond copy pasting button labels |
| 19:31:20 | <jade[m]> | I like the programming as art concept |
| 19:31:23 | <tomsmeding> | that's also a path to haskell, but it's one that few people take |
| 19:31:56 | <Inst> | i.e, tons of beginnesr are on haskell, starting with haskell and leraning full CS that way is better than the alternatives |
| 19:32:10 | <Inst> | erm, beginners are on Windows |
| 19:32:18 | <tomsmeding> | I think the number of people that had haskell as their first programming language, where this was not because their uni was radical enough to start with haskell, and that continued learning long enough to get decent at haskell, is very very small |
| 19:32:50 | <tomsmeding> | that uni side-condition can be removed because I know of only 1 uni that does this, which is Oxford iirc |
| 19:33:04 | <sm> | Inst 👍️ |
| 19:33:08 | <tomsmeding> | most haskellers already knew programming |
| 19:33:15 | <[exa]> | nice thing about haskells today is that it makes the learning kinda constructive and rewarding (as opposed to learning which library monkeypatched half of your core libraries to oblivion again, as in one certain other language) |
| 19:33:17 | <tomsmeding> | but you're right, most of these very small group are on windows |
| 19:34:33 | <sm> | uh.. maybe. <cough>tools, dependency hell, ghc bugs..</cough> |
| 19:37:30 | <EvanR> | most haskellers already knew programming and many of them then had to unlearn it and relearn it in the process xD |
| 19:37:43 | <__monty__> | [exa]: Is this a language that starts with E or R? (Yes, one extra level of indirection to obfuscate a tiny bit more.) |
| 19:40:08 | → | AkechiShiro joins (~licht@user/akechishiro) |
| 19:41:31 | <[exa]> | __monty__: ...but why would you omit the one that starts with P? |
| 19:42:17 | → | pavonia joins (~user@user/siracusa) |
| 19:44:09 | <Inst> | on the ruby Discord, besides whinging about their classes with 1000+ methods |
| 19:44:12 | <__monty__> | Because there are too many of those. And if it's the one I'm thinking of I never ran into such extensive monkeypatching there. I've also only heard things about the others though. |
| 19:44:20 | <Inst> | there are apparently quite a few devs who started with Haskell |
| 19:44:52 | <hololeap> | I'm a bit confused on the nuances of compact regions. if I have (s :: Compact Seq) and I use (toList (getCompact s)), will the resulting list be in the compact region? |
| 19:44:58 | → | tessier joins (~treed@ec2-184-72-149-67.compute-1.amazonaws.com) |
| 19:45:18 | <hololeap> | or do I have to run compactAdd on every intermediate value? |
| 19:45:45 | × | rf quits (~rf@142.99.241.246) (Ping timeout: 240 seconds) |
| 19:46:26 | → | rf joins (~rf@142.99.241.246) |
| 19:46:33 | <Inst> | https://media.discordapp.net/attachments/280033776820813825/1108983771404959786/image.png?width=2878&height=566 |
| 19:47:21 | → | comarrrrrrrrrrrr joins (~comarrrrr@73.237.206.60) |
| 19:54:13 | × | oo_miguel quits (~Thunderbi@77.252.47.84) (Ping timeout: 256 seconds) |
| 19:55:48 | <[exa]> | Inst: a fun observation is that e.g. for me there was no way to start with haskell because there was no haskell |
| 19:56:23 | → | shapr joins (~user@76.29.230.19) |
| 19:58:05 | <geekosaur> | same |
| 19:58:40 | <int-e> | you could've waited |
| 19:59:44 | <geekosaur> | lol, try to get a kid to wait a decade… |
| 20:00:32 | <int-e> | :) |
| 20:02:08 | <geekosaur> | actually more like a decade and a half, I recall playing in a study room with a TRS-80 in middle school |
| 20:02:29 | ← | mapniv parts (~mapniv@user/Mapniv) (Sleepy) |
| 20:04:11 | <hololeap> | this seems like it would work to take the guessing out and make sure everything is part of the same compacted region: http://sprunge.us/y3yrem |
| 20:11:54 | × | phma quits (~phma@host-67-44-208-41.hnremote.net) (Read error: Connection reset by peer) |
| 20:12:31 | × | use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Remote host closed the connection) |
| 20:12:35 | × | chomwitt quits (~chomwitt@athedsl-351665.home.otenet.gr) (Remote host closed the connection) |
| 20:12:49 | → | use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) |
| 20:12:57 | → | phma joins (~phma@host-67-44-208-177.hnremote.net) |
| 20:14:45 | → | gmg joins (~user@user/gehmehgeh) |
| 20:14:58 | × | titibandit quits (~titibandi@user/titibandit) (Remote host closed the connection) |
| 20:15:15 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 20:18:53 | × | tessier quits (~treed@ec2-184-72-149-67.compute-1.amazonaws.com) (Ping timeout: 246 seconds) |
| 20:21:02 | → | tessier joins (~treed@ec2-184-72-149-67.compute-1.amazonaws.com) |
| 20:21:29 | → | merijn joins (~merijn@86.86.29.250) |
| 20:22:30 | × | Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz) |
| 20:26:44 | → | Tuplanolla joins (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) |
| 20:27:39 | × | mncheck quits (~mncheck@193.224.205.254) (Ping timeout: 256 seconds) |
| 20:32:47 | × | user____3 quits (~user@dynamic-046-114-177-008.46.114.pool.telefonica.de) (Ping timeout: 240 seconds) |
| 20:33:36 | × | spatchkaa quits (~spatchkaa@S010600fc8da47b63.gv.shawcable.net) (Quit: Client closed) |
| 20:36:52 | × | trev quits (~trev@user/trev) (Quit: trev) |
| 20:41:18 | → | szkl joins (uid110435@id-110435.uxbridge.irccloud.com) |
| 20:48:31 | <probie> | hololeap: the list itself won't be part of the compact region, but all the elements in this will be |
| 20:48:44 | <probie> | s/in this/in this list/ |
| 20:49:05 | <probie> | (assuming that they were already in the compact region) |
| 20:51:01 | → | Inst[m] joins (~instrmatr@2001:470:69fc:105::1:903e) |
| 20:51:58 | <hololeap> | probie, what I'm trying to do is very quickly spin up using a binary-encoded trie from a file, use the trie to search and return the resulting strings, then spin down |
| 20:52:20 | <hololeap> | (it's for bash completion) |
| 20:52:36 | <hololeap> | the GC keeps being the biggest bottleneck |
| 20:52:51 | <hololeap> | I wonder if there's a way to just disable the GC altogether |
| 20:54:04 | <hololeap> | decoding the trie into a compact region was a 6x speedup compared to just doing it normally |
| 20:55:00 | <hololeap> | but my .prof file still shows GC being 34.2% time |
| 20:56:09 | × | merijn quits (~merijn@86.86.29.250) (Ping timeout: 265 seconds) |
| 20:58:01 | <probie> | hololeap: if you want to "disable GC", you can add the RTS options to disable idle time garbage collection and make the nursery very big and (if needed) manually call performGC in your code |
| 20:58:45 | <EvanR> | not doing GC at all is probably ineffective for haskell |
| 21:00:26 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 21:03:06 | × | _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht) |
| 21:04:03 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:510d:16a:b9b3:3b4) (Remote host closed the connection) |
| 21:04:23 | × | bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection) |
| 21:05:06 | → | spatchkaa joins (~spatchkaa@S010600fc8da47b63.gv.shawcable.net) |
| 21:09:08 | <Inst> | okay, why is it doing that? |
| 21:09:13 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:510d:16a:b9b3:3b4) |
| 21:09:46 | <Inst> | u <- newMVar id on ghci gives me MVar (GHC.Types.Any -> GHC.Types.Any) |
| 21:10:10 | <geekosaur> | it has to assign a type but can't |
| 21:10:30 | <geekosaur> | `Any` is a magical type that is used when ghc can't settle on a type any other way |
| 21:10:34 | <Inst> | in GHC, does it work? |
| 21:10:54 | <Inst> | I'm now thinking about porting Objective to STM, but I'd need to learn STM first |
| 21:10:56 | <geekosaur> | normally you have to use `AllowAmbiguousTypes` to see it |
| 21:11:24 | <EvanR> | STM is great and not that hard |
| 21:11:27 | <geekosaur> | but there's a few places where internals let it leak out, like you're seeing with `newMVar` |
| 21:12:16 | × | euandreh quits (~Thunderbi@189.6.18.7) (Remote host closed the connection) |
| 21:12:37 | × | zmt00 quits (~zmt00@user/zmt00) (Read error: Connection reset by peer) |
| 21:12:53 | <Inst> | I need to study FRP more, to figure out what Haskell GUI looks like "the right way", but I'm thinking that with this library, if you're using objects, you should be honest you're using objects |
| 21:13:02 | → | euandreh joins (~Thunderbi@189.6.18.7) |
| 21:13:10 | <Inst> | an ADT that's a record of functions... |
| 21:13:18 | <Inst> | well, it might not be an object |
| 21:15:59 | × | vandita quits (~vandit@80-95-69-243.pool.digikabel.hu) (Ping timeout: 240 seconds) |
| 21:17:30 | → | Pickchea joins (~private@user/pickchea) |
| 21:17:31 | × | rf quits (~rf@142.99.241.246) (Ping timeout: 256 seconds) |
| 21:17:45 | → | vandita joins (~vandit@80-95-69-254.pool.digikabel.hu) |
| 21:19:23 | <EvanR> | record of functions (or other data) which operate on its own self is the theory-of-objects version of objects |
| 21:19:41 | <hololeap> | hm, maybe other changes to my program are what accounted for the 6x speedup, because removing the compact region code didn't change anything. also, +RTS -n999999999999 -I0 -RTS seems to slow it down if anything |
| 21:22:24 | <EvanR> | that's over 9000 cores |
| 21:22:30 | → | rf joins (~rf@142.99.241.246) |
| 21:22:59 | <hololeap> | wouldn't that be -N9999999999999999 |
| 21:23:49 | × | comarrrrrrrrrrrr quits (~comarrrrr@73.237.206.60) (Remote host closed the connection) |
| 21:23:51 | <geekosaur> | cores is -N not -n (number of allocation areas; you probably don't want zillions of those) |
| 21:24:41 | <geekosaur> | you're probably making a lot of tiny areas so ghc has to do a lot of work |
| 21:25:36 | <geekosaur> | maybe -A64G would help? |
| 21:26:00 | <geekosaur> | s/ghc has/the RTS has/ |
| 21:28:43 | <hololeap> | yeah lots of tiny branches to encode ~100000 strings into my Trie |
| 21:28:53 | <hololeap> | data Trie = Bool :< Map Char Trie |
| 21:29:08 | <hololeap> | the GC is going out of control |
| 21:29:54 | × | michalz quits (~michalz@185.246.204.73) (Remote host closed the connection) |
| 21:30:31 | <hololeap> | -A64G blew the stack |
| 21:31:47 | <hololeap> | it triggered earlyoom |
| 21:32:33 | <geekosaur> | so you're actually generating a lot of garbage. that sounds like maybe you need some strictness annotations and maybe to clean up how you do your trie construction a bit |
| 21:33:06 | → | zmt00 joins (~zmt00@user/zmt00) |
| 21:33:21 | <hololeap> | I have the Strict language extension enabled in my Data.Trie module |
| 21:34:06 | <geekosaur> | that can actually make things worse if used indiscriminately |
| 21:34:31 | × | rf quits (~rf@142.99.241.246) (Ping timeout: 240 seconds) |
| 21:34:31 | <geekosaur> | `Strict` does not magically solve problems, it is a tradeoff |
| 21:36:45 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 21:38:59 | <hololeap> | geekosaur: if you have any suggestions here, I'd love to hear them: https://github.com/hololeap/hackport/commit/bff9112 |
| 21:39:17 | <hololeap> | this is the area of haskell that I find the most difficult |
| 21:39:34 | <hololeap> | I would love to get a solid understanding of how to solve this kind of problem |
| 21:39:56 | <geekosaur> | I'm not real great at it myself |
| 21:40:37 | <geekosaur> | I just know that people tend to try to bang everything or -XStrict / -XStrictData but you need to use profiling to guide putting them in appropriate spots or you can make things worse instead of better |
| 21:41:46 | <hololeap> | I have +RTS -hc -pa -RTS on my command line, but knowing how to use the generated files is another story |
| 21:44:22 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 21:45:19 | <hololeap> | isn't there some *oscope webapp that you can put the json profiler output into? would that be useful here? |
| 21:46:23 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 246 seconds) |
| 21:46:52 | <geekosaur> | probably but I don't know enough about that 😞 |
| 21:47:39 | → | ctearrrrrrrrrrrr joins (~ctearrrrr@73.237.206.60) |
| 21:48:47 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
| 21:49:59 | × | shapr quits (~user@76.29.230.19) (Ping timeout: 240 seconds) |
| 21:51:25 | → | nate2 joins (~nate@98.45.169.16) |
| 21:53:37 | → | foul_owl joins (~kerry@71.212.137.212) |
| 21:54:25 | → | user____3 joins (~user@dynamic-046-114-177-008.46.114.pool.telefonica.de) |
| 21:55:59 | × | motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 264 seconds) |
| 21:56:05 | × | nate2 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds) |
| 21:56:25 | → | motherfsck joins (~motherfsc@user/motherfsck) |
| 21:57:32 | × | tessier quits (~treed@ec2-184-72-149-67.compute-1.amazonaws.com) (Ping timeout: 265 seconds) |
| 22:00:06 | <EvanR> | hololeap, have you looked at bytestring-trie |
| 22:01:54 | <hololeap> | no, not yet |
| 22:02:25 | × | motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 240 seconds) |
| 22:04:25 | <geekosaur> | but he's feeding it from cabal data that all uses String |
| 22:06:40 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 22:12:18 | × | gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8) |
| 22:12:47 | × | user____3 quits (~user@dynamic-046-114-177-008.46.114.pool.telefonica.de) (Ping timeout: 240 seconds) |
| 22:17:26 | → | falafel joins (~falafel@2603-8000-d700-115c-e4af-b9a0-55a4-148f.res6.spectrum.com) |
| 22:17:39 | → | motherfsck joins (~motherfsc@user/motherfsck) |
| 22:26:46 | × | evincar quits (~evincar@user/evincar) (Ping timeout: 268 seconds) |
| 22:31:05 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 22:32:50 | → | zer0bitz joins (~zer0bitz@user/zer0bitz) |
| 22:34:08 | × | zer0bitz_ quits (~zer0bitz@user/zer0bitz) (Ping timeout: 248 seconds) |
| 22:34:37 | × | gmg quits (~user@user/gehmehgeh) (Remote host closed the connection) |
| 22:35:43 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 256 seconds) |
| 22:37:55 | → | evincar joins (~evincar@user/evincar) |
| 22:39:14 | × | acidjnk quits (~acidjnk@p200300d6e7072f02cde83c9df9d46ae6.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
| 22:39:46 | × | Pickchea quits (~private@user/pickchea) (Quit: Leaving) |
| 22:40:02 | × | zeenk quits (~zeenk@2a02:2f04:a105:f00::fba) (Quit: Konversation terminated!) |
| 22:40:08 | → | gptke joins (~gptke@138.84.54.255) |
| 22:41:23 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 256 seconds) |
| 22:42:38 | × | use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Remote host closed the connection) |
| 22:42:57 | → | use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) |
| 22:43:15 | × | zmt00 quits (~zmt00@user/zmt00) (Read error: Connection reset by peer) |
| 22:43:42 | <gptke> | Malcolm in the Middle Season 8 Episodes 1 and 2: 2. Reese Wilkerson Teams with Canadian Mountie Secret Agents to Trap and Torture Pedophile Tom Cruise https://justpaste.it/Tom_Cruise_BDSM_Tortured_Reese 1. Reese meets Edna Skilton, Fills Her Pussy with Shit, and Fucks that poopy cooter! https://justpaste.it/Reese_Fucks_Edna_Skilton_Malcolm |
| 22:43:56 | ChanServ | sets mode +o geekosaur |
| 22:44:05 | geekosaur | sets mode +b *!*@138.84.54.255 |
| 22:44:05 | gptke | is kicked by geekosaur (gptke) |
| 22:44:21 | geekosaur | sets mode -o geekosaur |
| 22:44:36 | → | zmt00 joins (~zmt00@user/zmt00) |
| 22:46:54 | ← | spatchkaa parts (~spatchkaa@S010600fc8da47b63.gv.shawcable.net) () |
| 22:47:03 | <jade[m]> | what the actual fuck |
| 22:47:39 | <geekosaur> | the latest style of IRC spam, the links probably are to recent chrome and firefox exploits |
| 22:49:10 | × | szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
| 22:58:13 | <probie> | Two links this time |
| 23:08:42 | × | vandita quits (~vandit@80-95-69-254.pool.digikabel.hu) (Ping timeout: 268 seconds) |
| 23:08:46 | <geekosaur> | yeh. seems to always be to justpaste.it too |
| 23:09:58 | → | vandita joins (~vandit@84-236-10-12.pool.digikabel.hu) |
| 23:11:23 | <DigitalKiwi> | "fun" fact one of my favorite paste sites is dpaste.com and dpaste.org and dpaste.com is blocked by malwarebytes plugin for trojan and justpaste.in is not lol |
| 23:12:09 | × | xameer quits (~xameer@144.48.224.179) (Remote host closed the connection) |
| 23:13:04 | → | xameer joins (~xameer@144.48.224.179) |
| 23:13:28 | <jade[m]> | it's gonna get really fun now because google introduced a .zip TLD |
| 23:13:49 | <jade[m]> | surely noone is gonna maliciously use that for malware |
| 23:14:22 | → | theesm joins (2cbdf4b38a@2604:bf00:561:2000::11c8) |
| 23:14:34 | <jade[m]> | (that sentence barely made any sense - malware is malicious by definition - but I suppose you understand what I mean |
| 23:14:41 | → | freeside_ joins (~mengwong@103.252.202.151) |
| 23:15:31 | <DigitalKiwi> | i got an email the other day that had a bank statement "pdf" that had an .exe extension if tried to download lol |
| 23:17:55 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
| 23:19:57 | → | spatchkaa joins (~spatchkaa@S010600fc8da47b63.gv.shawcable.net) |
| 23:20:05 | × | freeside_ quits (~mengwong@103.252.202.151) (Ping timeout: 240 seconds) |
| 23:20:57 | <DigitalKiwi> | https://www.dropbox.com/s/g66q0akd2sdcfzo/Screenshot%202023-05-19%2018.20.11.png?dl=0 |
| 23:21:25 | <DigitalKiwi> | nice try but my store never left demo mode and got deleted anyway |
| 23:24:42 | × | Tuplanolla quits (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Quit: Leaving.) |
| 23:27:04 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 23:31:52 | → | mauke_ joins (~mauke@user/mauke) |
| 23:32:23 | × | euandreh quits (~Thunderbi@189.6.18.7) (Ping timeout: 240 seconds) |
| 23:33:01 | × | motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 240 seconds) |
| 23:33:31 | × | mauke quits (~mauke@user/mauke) (Ping timeout: 240 seconds) |
| 23:33:31 | mauke_ | is now known as mauke |
| 23:37:32 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 23:43:27 | → | euandreh joins (~Thunderbi@189.6.18.7) |
| 23:55:28 | → | freeside_ joins (~mengwong@103.252.202.151) |
All times are in UTC on 2023-05-19.